KR102519245B1 - 강화된 다중 변환을 위한 룩-업 테이블 - Google Patents

강화된 다중 변환을 위한 룩-업 테이블 Download PDF

Info

Publication number
KR102519245B1
KR102519245B1 KR1020197000774A KR20197000774A KR102519245B1 KR 102519245 B1 KR102519245 B1 KR 102519245B1 KR 1020197000774 A KR1020197000774 A KR 1020197000774A KR 20197000774 A KR20197000774 A KR 20197000774A KR 102519245 B1 KR102519245 B1 KR 102519245B1
Authority
KR
South Korea
Prior art keywords
transform
dst
horizontal
vertical
block
Prior art date
Application number
KR1020197000774A
Other languages
English (en)
Other versions
KR20190027815A (ko
Inventor
신 자오
바딤 세레긴
마르타 카르체비츠
지안레 천
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20190027815A publication Critical patent/KR20190027815A/ko
Application granted granted Critical
Publication of KR102519245B1 publication Critical patent/KR102519245B1/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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 a set of transform coefficients
    • 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/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

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)

Abstract

인트라 예측 잔차에 대해 적용되는 다중 변환을 예시하기 위한 예시적인 기법들이 기술된다. 그것은 HEVC 의 확장판들 또는 차세대 비디오 코딩 표준들과 같은 고급 비디오 코덱들의 맥락에서 사용될 수도 있다. 비디오 인코더 및 비디오 디코더는 하나 이상의 후보 변환들을 각각 식별하는 변환 서브셋트들을 선택할 수도 있다. 비디오 인코더 및 비디오 디코더는 선택된 변환 서브셋트들로부터 변환들을 결정할 수도 있다.

Description

강화된 다중 변환을 위한 룩-업 테이블
이 출원은 2016년 7월 15일자로 출원된 미국 가 출원 제 62/363,188 호의 이익을 주장하고, 그것의 전체 내용은 참조에 의해 통합된다.
기술 분야
본 개시물은 비디오 인코딩 및 디코딩에 관한 것이다.
배경
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 정보 단말기들 (personal digital assistants; PDA들), 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 이른바 "스마트 폰들", 비디오 원격회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한 넓은 범위의 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (Advanced Video Coding; AVC), ITU- H.265, 고 효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 에 의해 정의된 표준들, 및 이러한 표준들의 확장판들에 기재된 것들과 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이러한 비디오 압축 기법들을 구현하는 것에 의해 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 공간적 (픽처 내) 예측 및/또는 시간적 (픽처 간) 예측을 수행하여 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 또는 제거한다. 블록 기반 비디오 코딩의 경우, 비디오 슬라이스 (즉, 비디오 프레임 또는 비디오 프레임의 부분) 가 비디오 블록들로 파티셔닝될 수도 있다. 픽처 (picture) 의 인트라 코딩식 (intra-coded) (I) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃 블록들에서의 참조 샘플들에 관한 공간적 예측을 사용하여 인코딩된다. 픽처의 인터 코딩식 (inter-coded) (P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃 블록들에서의 참조 샘플들에 관한 공간적 예측 또는 다른 참조 픽처들에서의 참조 샘플들에 관한 시간적 예측을 사용할 수도 있다. 공간적 또는 시간적 예측은 코딩될 블록에 대한 예측 블록으로 나타나게 된다. 잔차 데이터는 코딩될 원래의 블록과 예측 블록 사이의 화소 차이들을 나타낸다. 인터 코딩식 블록이 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터에 따라 인코딩되고, 잔차 데이터는 코딩된 블록 및 예측 블록 사이의 차이를 나타낸다. 인트라 코딩식 블록이 인트라 코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔차 데이터는 화소 도메인으로부터 변환 도메인으로 변환될 수도 있으며, 결과적으로 잔차 계수들이 생기게 하며, 그 계수들은 그 다음에 양자화될 수도 있다.
요약
본 개시물은 비디오 인코딩의 일부로서 변환 블록으로부터 계수 블록을 생성하기 위해 사용하는 변환들과 비디오 디코딩의 일부로서 계수 블록으로부터 변환 블록을 생성하기 위해 사용하는 변환들을 결정하는 기법들을 설명한다. 일부 예들에서, 비디오 인코더가 복수의 변환 서브셋트들을 결정할 수도 있다. 비슷하게, 비디오 디코더가 복수의 변환 서브셋트들을 결정할 수도 있다. 비디오 인코더와 비디오 디코더는 추가적인 시그널링을 반드시 요구하지는 않는 암시적 기법들 (implicit techniques) 을 사용하여 복수의 변환 서브셋트들에 대해 변환 서브셋트를 선택하고 선택된 변환 서브셋트들로부터 변환들을 결정할 수도 있다. 이런 식으로, 비디오 인코더와 비디오 디코더는 시그널링될 것이 필요한 정보의 양에서의 최소 증가로 상대적으로 큰 변환들의 셋트로부터 선택할 수도 있다.
하나의 예에서, 본 개시물은 비디오 데이터를 디코딩하는 방법을 기술한다. 그 방법은: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 단계로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 단계; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하는 단계; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하는 단계; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 역 변환 (inverse transform) 을 적용하는 단계; 및, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하는 단계를 포함한다.
다른 예에서, 본 개시물은 비디오 데이터를 디코딩하기 위한 디바이스를 기술한다. 그 디바이스는: 비디오 데이터를 저장하도록 구성된 메모리; 및, 하나 이상의 프로세서들을 포함하고, 이 하나 이상의 프로세서들은: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 데이터의 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것을 행하고; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하며; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하고; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 역 변환을 적용하고; 그리고, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성 (reconstruct) 하도록 구성된다.
또 다른 예에서, 본 개시물은 비디오 데이터의 블록을 디코딩하기 위한 디바이스를 기술하고, 이 디바이스는: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 데이터의 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 수단으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 수단; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하는 수단; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하는 수단; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 역 변환을 적용하는 수단; 및, 현재 변환 블록 및 예측 블록에 기초하여 디오 블록을 재구성하는 수단을 포함한다.
또 다른 예에서, 본 개시물은 명령들을 저장하는 컴퓨터 판독가능 매체를 기술하고, 이 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 그 하나 이상의 프로세서들로 하여금: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것을 행하게 하고; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하게 하며; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하게 하고; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 역 변환을 적용하게 하며; 그리고, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하게 한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 방법을 기술한다. 그 방법은: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 단계로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 단계; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하는 단계; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하는 단계; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 순방향 변환 (forward transform) 을 적용하는 단계; 및, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하는 단계를 포함한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 인코딩하기 위한 디바이스를 기술한다. 그 디바이스는: 비디오 데이터를 저장하도록 구성된 메모리; 및 하나 이상의 프로세서들을 포함하고, 이 하나 이상의 프로세서들은: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 데이터의 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것을 행하고; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하며; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하고; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 순방향 변환을 적용하며; 그리고, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하도록 구성된다.
또 다른 예에서, 본 개시물은 비디오 데이터의 비디오 블록을 인코딩하기 위한 디바이스를 기술하고, 이 디바이스는: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 데이터의 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 수단으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 수단; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하는 수단; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하는 수단; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 순방향 변환을 적용하는 수단; 및, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하는 수단을 포함한다.
또 다른 예에서, 본 개시물은 명령들을 저장하는 컴퓨터 판독가능 매체를 기술하고, 이 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 그 하나 이상의 프로세서들로 하여금: 복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대한 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 셋트들로부터 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것으로서, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함하는, 상기 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 것을 행하게 하고; 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 수평 및 수직 변환 쌍 조합을 선택하게 하고; 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택하게 하며; 현재 변환 블록을 결정하기 위해 현재 계수 블록에, 선택된 수평 변환 및 선택된 수직 변환을 이용하여 순방향 변환을 적용하게 하고; 그리고, 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성하게 한다.
하나 이상의 예들의 세부사항들은 첨부 도면들 및 이하의 설명에서 언급된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1a 내지 도 1e 는 변환 유형들의 예들을 도시하는 표들이다.
도 2는 본 개시물에서 설명되는 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템을 도시하는 블록도이다.
도 3은 고 효율 비디오 코딩 (HEVC) 에서 잔차 쿼드트리 (residual quadtree) 에 기초한 변환 스킴 (scheme) 의 일 예를 도시하는 개념도이다.
도 4는 HEVC에서 코딩 그룹에 기초한 계수 스캔의 일 예를 도시하는 개념도이다.
도 5a 및 도 5b 는 복수의 블록 사이즈들 및 복수의 인트라 예측 모드들에 대해 수평/수직 변환 쌍을 규정하는 예시적인 룩 업 테이블이다.
도 6 은 블록 높이, 폭 및 인트라 모드로부터 변환 쌍 셋트 인덱스로의 예시적인 룩-업 테이블 맵핑이다.
도 7은 본 개시물에서 설명되는 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 도시하는 블록도이다.
도 8은 본 개시물에서 설명되는 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 도시하는 블록도이다.
도 9는 비디오 데이터를 코딩하는 예시적인 방법을 도시하는 흐름도이다.
본 개시물은 인트라 또는 인터 예측 잔차에 적용되는 다중 변환들에 관련된다. 그 기법들은 고 효율 비디오 코딩 (HEVC) 표준 또는 차세대의 비디오 코딩 표준들의 확장판들과 같은 고급 비디오 코덱들의 맥락에서 사용될 수도 있다.
본 개시의 기법들은 적응 다중 변환 (Adaptive Multiple Transform; AMT) 으로서도 알려진 강화된 다중 변환 (Enhanced Multiple Transform; EMT) 의 현재의 설계에 대해 잠재적으로 향상시킨다. EMT 는 인트라 예측 모드 및 결정된 EMT 인덱스에 기초하여 변환 쌍을 결정하기 위해 간단한 룩-업 테이블을 이용할 수도 있다.
『P. Philippe, V. Lorcy, "Proposed improvements to the Adaptive multiple Core transform," JVET-C0222』 에서의 수정된 EMT 룩-업 테이블은 보다 유연한 수평/수직 변환 쌍들 및 블록 사이즈 의존성을 도입함으로써 EMT 의 코딩 이득을 향상시켰지만, 룩-업 테이블은 오히려 크고 불규칙하며, 이는 깔끔한 설계를 가지지 못하고 저장 부담을 크게 증가시킨다. 본 개시의 기법들은 보다 작은 LUT 를 이용한다.
비디오 코딩에서, 비디오 인코더가 비디오 데이터의 원래 블록의 샘플 값들로부터 예측 블록의 샘플 값들을 감산함으로써 잔차 블록을 생성한다. 비디오 인코더는 잔차 블록을 하나 이상의 변환 블록들로 나누고 변환 (예컨대, 이산 코사인 변환 (discrete cosine transform; DCT) 과 같은 이산 주파수 변환) 을 하나 이상의 변환 블록들에 적용하여 하나 이상의 변환 블록들에서의 잔차 값들을 화소 도메인에서부터 주파수 도메인으로 변환시킨다. 주파수 도메인에서, 변환된 블록들은 하나 이상의 변환 계수 값들을 포함하는 계수 블록들이라고 지칭된다.
디코딩 동안, 비디오 디코더가 역 프로세스를 수행한다. 예를 들면, 비디오 디코더는 계수 블록에 역-변환을 적용하여 계수 블록을 변환 블록으로 변환시킨다 (예컨대, 주파수 도메인에서부터 화소 도메인으로 변환시킨다). 변환 블록은 잔차 블록의 하나의 블록이고, 비디오 디코더는 잔차 블록의 잔차 값들을 예측 블록의 샘플 값들에 가산하여 현재 블록을 재구성한다.
설명을 편의만을 위해, 본 개시물은 각각 인코딩 및 디코딩 프로세스를 위해 사용되는 변환을 결정하는 것으로서 비디오 인코더와 비디오 디코더를 설명한다. 그러나, 비디오 인코더는 변환 블록에 변환을 적용하여 계수 블록을 생성한다는 것과 비디오 디코더는 그 변환의 역을 계수 블록에 적용하여 변환 블록을 재구성한다는 것이 이해되어야 한다. 따라서, 비디오 디코더가 적용하는 변환은 비디오 인코더가 적용하는 변환의 역이다. 그러므로, 본 개시물에서, 비디오 디코더가 변환을 결정하는 그리고/또는 변환을 적용하는 것으로서 설명되는 경우, 비디오 디코더는 비디오 인코더에 의해 결정된 변환의 역인 변환을 결정하고 있다는 것 및/또는 비디오 디코더는 비디오 인코더에 의해 적용된 변환의 역인 변환을 적용하고 있다는 것이 이해되어야 한다.
본 개시물은 변환 계수들을 인코딩하기 위한 잔차 값들의 변환 블록에 적용되는 또는 잔차 값들을 디코딩하기 위한 변환 계수들의 계수 블록에 적용되는 변환을 결정하는 예의 기법들을 설명한다. 예를 들면, 비디오 인코더와 비디오 디코더는 각각의 변환 서브셋트가 복수의 후보 변환들을 식별하는 복수의 변환 서브셋트들을 각각 구성할 수도 있다. 후보 변환들은 상이한 유형들의 DCT들 및 상이한 유형들의 이산 사인 변환들 (discrete sine transforms; DST들) 과 같은 상이한 유형들의 변환들을 지칭한다. 비디오 인코더와 비디오 디코더는 변환 서브셋트(들)를 선택하고, 비디오 인코딩을 위해 변환 블록으로부터 계수 블록을 또는 비디오 디코딩을 위해 계수 블록으로부터 변환 블록을 결정하는데 사용되는 변환들을 선택된 변환 서브셋트(들)로부터 결정한다.
이런 식으로, 비디오 인코더와 비디오 디코더는 더 큰 후보 변환들의 셋트로부터 어떤 변환들을 사용할지를 결정하여, 비트스트림 대역폭에 지나치게 부담을 주는 일 없이 변환 블록의 가변하는 통계에 더 나은 적응을 허용할 수도 있다. 예를 들면, 일부 기법들은 얼마나 많은 변환들이 이용 가능한지를 제한하며, 이는 변환 블록의 통계가 이용 가능한 변환들 중 어느 것도 잘 수행되지 않도록 하기 때문에 열악한 코딩 성능을 초래할 수도 있다. 다른 양호한 변환들이 있을 수도 있지만 이들 변환들은 제약조건들로 인해 이용 불가능하다.
본 개시물에서 설명되는 기법들에서, 더 많은 변환들이 이용 가능하기 때문에, 비디오 인코더와 비디오 디코더는 제한된 변환들의 셋트로 가능할 것보다 더 나은 코딩 성능을 제공하는 변환을 사용할 수도 있다. 더욱이, 더 상세히 설명되는 바와 같이, 어떤 변환이 사용될 것인지를 표시하는데 사용되는 시그널링 오버헤드는, 더 많은 변환들을 가지고 대역폭에 대한 영향을 낮게 유지하면서도 코딩 이득들이 성취될 수 있도록 낮게 유지된다.
예를 들어, 비트스트림에서의 시그널링된 정보에 의존하는 것이 아니라, 비디오 디코더는 어떤 변환 서브셋트(들)를 사용할지를 암시적 기법들에 기초하여 이를테면 인트라 예측 모드, 변환 블록의 로케이션 등에 기초하여 선택할 수도 있다. 비디오 디코더는 그 다음에, 비트스트림에서 시그널링되는, 선택된 변환 서브셋트(들)중 각각의 선택된 변환 서브셋트들에 대한 하나 이상의 변환 서브셋트 인덱스들 또는 계수 블록에서의 0이 아닌 계수들의 수, 0이 아닌 계수들의 합, 또는 0이 아닌 계수들의 포지션을 비제한적으로 포함하는 다른 팩터들에 아마도 기초하여, 선택된 변환 서브셋트(들)로부터 어떤 변환(들)을 사용할지를 결정할 수도 있다.
심지어 변환 서브셋트 인덱스가 각각의 변환 서브셋트(들)에 대해 시그널링되는 경우, 인덱스 값이 모든 가능한 변환들에 걸쳐 있는 것이 아니라 변환 서브셋트의 범위에만 걸쳐 있기 때문에 시그널링 오버헤드는 낮게 유지될 수도 있다. 예를 들면, 16 개까지의 가능한 변환들이 있다고, 그리고 변환 서브셋트는 세 개의 후보 변환들을 포함한다고 가정한다. 이 경우, 인덱스 값은 0부터 2까지의 범위일 반면, 모든 변환들의 리스트에의 인덱스가 0부터 15까지의 범위일 것이다. 0 내지 2와 같은 더 작은 값들을 시그널링하는 것은 더 큰 값들을 시그널링하는 것보다 더 적은 비트들을 요구할 수도 있다.
변환 서브셋트들이 구성되고 선택되는 방식을 설명하기에 앞서, 다음에서는 비디오 코딩 표준들, 일반적으로 DCT들 및 DST들, 상이한 유형들의 DCT들 및 DST들, 그리고 일부 현존 DCT 및 DST 기법들을 설명한다. 본 개시물은 그 다음에 현존 기법들에서의 일부 문제들과, 그 문제들을 극복할 수도 있는 예시적인 기법들을 뒤따라 설명한다.
비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼 그리고 스케일러블 비디오 코딩 (scalable video coding; SVC) 및 멀티-뷰 비디오 코딩 (multiview video coding; MVC) 확장판들을 포함한 ITU-T H.264 (또한 ISO/IEC MPEG-4 AVC로 알려짐) 를 포함한다. 덧붙여서, 새로운 비디오 코딩 표준, 즉 고 효율 비디오 코딩 (HEVC) 이 ITU-T 비디오 코딩 전문가 그룹 (Video Coding Experts Group; VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹 (Motion Picture Experts Group; MPEG) 의 JCT-VC (Joint Collaboration Team on Video Coding) 에 의해 최근에 개발되어 있다. 최종 HEVC 초안 규격이고 이하에서 HEVC WD라고 지칭되는 것이, 다음으로부터 입수 가능하다: http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip. HEVC 표준의 최종 초안은: 『ITU-T H.265, Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video, Advanced video coding for generic audiovisual services, The International Telecommunication Union, October 2014』이고, http://www.itu.int/rec/T-REC-H.265-201410-I/en 으로부터 입수 가능하다.
다음은 이산 사인 및 코사인 변환들의 설명이다. 변환은 입력 신호의 대체 표현을 도출하는 프로세스를 나타낸다. 예를 들어, 변환은 (예컨대, 비디오 인코딩에서는) 화소 도메인으로부터 주파수 도메인으로 또는 (예컨대, 비디오 디코딩에서는) 주파수 도메인으로부터 화소 도메인으로 값들을 변환한다. N-포인트 벡터
Figure 112019002724515-pct00001
=[x 0, x 1, ..., x N - 1]T 및 주어진 벡터들의 셋트 { φ 0, φ 1, ..., φ M - 1}가 주어지면,
Figure 112019002724515-pct00002
는 다음과 같이 공식화될 수 있는 φ 0, φ 1, ..., φ M -1의 선형 조합을 사용하여 근사화될 수 있거나 정확히 표현될 수 있으며,
Figure 112019002724515-pct00003
여기서
Figure 112019002724515-pct00004
Figure 112019002724515-pct00005
의 근사값 또는 동치일 수 있고, 벡터 f = [f 0 , f 1, f 2 ,.., f M -1]은 변환 계수 벡터라 불리고 { φ 0, φ 1, ..., φ M-1}은 변환 기저 벡터들이다.
비디오 코딩의 시나리오에서, 변환 계수들은 거의 비-상관되고 드문드문하며, 즉, 입력 벡터 (x) 의 에너지는 단지 몇 개의 변환 계수들에 대해서만 압축되고, 나머지 대부분의 변환 계수들은 통상적으로 0에 가깝다. 예를 들면, 비디오 인코더가 변환 블록을 계수 블록으로 변환하는 경우, 계수 블록에서의 0이 아닌 계수 값들은 계수 블록의 좌측상단 코너에서 함께 모여 있는 경향이 있고, 대부분의 계수 값들은 0이다. 계수 블록의 좌측상단 코너 근처에 모여 있는 0이 아닌 계수들은 낮은 주파수 성분들을 반영하는 한편, 계수 블록의 우측하단 코너 근처의 계수 값들은, 0이 되는 경향이 있으며, 높은 주파수 성분들을 반영한다.
특정 입력 데이터가 주어지면, 에너지 비교의 측면에서의 최적의 변환은 이른바 카루넨 뢰베 변환 (Karhunen-Loeve transform; KLT) 인데, 이는 변환 기저 벡터들로서 입력 데이터의 공분산 행렬의 고유 벡터들을 사용한다. 그러므로, KLT는 실제로 데이터-의존적 변환이고 일반적인 수학 공식을 갖지 않는다. 그러나, 예컨대, 입력 데이터가 제 1-차 정지 마르코프 과정을 형성한다는 특정한 가정들 하에서, 대응하는 KLT는 유니터리 변환들의 사인곡선 패밀리의 실제로 일원이라는 것이 문헌에서 입증되어 있으며, 이는 『Jain, A.K., A sinusoidal family of unitary transforms, IEEE Trans. on Pattern Analysis and Machine Intelligence, 1, 356, 1979』에서 설명된다. 유니터리 변환들의 사인곡선 패밀리는 다음과 같이 공식화된 변환 기저 벡터들을 사용하여 변환들을 표시하며:
φ m(k) = A·e ikθ+B·e -ikθ
여기서 e는 2.71828과 동일한 자연 로그의 밑이며, A, B, 및 θ는 일반적으로 복소수이고, m의 값에 의존한다.
이산 푸리에, 코사인, 사인, 및 KLT (제 1-차 정지 마르코프 과정들을 위한 것임) 를 포함하는 여러 널리 공지된 변환들은 이 유니터리 변환들의 사인곡선 패밀리의 일원들이다. 『S. A. Martucci, "Symmetric convolution and the discrete sine and cosine transforms," IEEE Trans. Sig. Processing SP-42, 1038-1051 (1994)』에 따르면, 완전한 이산 코사인 변환 (DCT) 및 이산 사인 변환 (DST) 패밀리들은 상이한 유형들, 즉, A, B, 및 의 상이한 값들에 기초한 총 16 개 변환들을 포함하고, DCT 및 DST의 상이한 유형들의 완전한 정의는 아래에서 주어진다.
입력 N-포인트 벡터가 x =[x 0, x 1, ,,,, x N - 1]T로서 표시되고, 그것이 행렬을 곱함으로써 y =[y 0, y 1,…, y N - 1]T로서 표시된 다른 N-포인트 변환 계수 벡터로 변환된다고 가정하면, 그 과정은, 다음의 변환 공식 중 하나에 따라 추가로 예시될 수 있고, 여기서, k 는 0 에서부터 N-1 까지 포함하는 범위의 y 의 변환 계수의 인덱스이고, w 0w 1 은 DCT 및 DST 의 각각의 유형에 대해 다음과 같은 변환 공식들에서 정의된 2 개의 상수들이며, x n 은 입력 벡터 x n 번째 엘리먼트를 나타낸다:
Figure 112019002724515-pct00006
Figure 112019002724515-pct00007
Figure 112019002724515-pct00008
Figure 112019002724515-pct00009
위에서는 상이한 DCT 및 DST 유형들의 예들을 제공하며, 대체로 16 개 변환 유형들이 존재한다. 변환 유형은 변환 기저 함수의 수학적 공식에 의해 특정된다. 변환 유형 및 변환 사이즈는 혼동되지 않아야 한다. 변환 유형은 기저 함수를 지칭하는 반면, 변환 사이즈는 변환의 사이즈를 지칭한다. 예를 들면, 4-포인트 DST-VII 및 8-포인트 DST-VII가, N의 값 (예컨대, 4-포인트 또는 8-포인트) 에 무관하게, 동일한 변환 유형이다.
일반성의 손실 없이, 모든 위의 변환 유형들은 아래의 일반화된 공식을 사용하여 표현될 수 있으며:
Figure 112019002724515-pct00010
,
여기서 T는 하나의 특정한 변환, 예컨대, DCT 유형-I ~ DCT 유형-VIII, 또는 DST 유형-I ~ DST 유형-VIII의 정의에 의해 특정된 변환 행렬이고, T의 행 벡터들, 예컨대, [Ti,0, Ti,1, Ti,2, …, Ti,N - 1]은 i번째 변환 기저 벡터들이다. N-포인트 입력 벡터에 적용된 변환이 N-포인트 변환이라 불린다. DCT 유형-I ~ DCT 유형-VIII 및 DST 유형-I ~ DST 유형-VIII 에 대한 공식들은 행렬 곱으로서 다시 쓰여질 수도 있고, 여기서, 변환 행렬 T 는 부동 소수점 숫자들을 갖는 행렬이다. 일 예의 비디오 코덱에서, 부동 소수점 변환 행렬 대신에, 변환 행렬 T 는 정수 행렬로서 근사될 수도 있다.
1-D 입력 데이터 (x) 에 적용되는 위의 변환 공식들은 아래에서와 같은 행렬 곱 형태
Figure 112019002724515-pct00011
로 표현될 수 있으며, 여기서 T 는 변환 행렬을 나타내며, x는 입력 데이터 벡터를 나타내고, y는 출력 변환 계수들의 벡터를 나타낸다는 것에 주의한다.
예를 들면, 비디오 인코더는 행렬 곱셈
Figure 112019002724515-pct00012
를 수행하여 변환 계수 벡터를 생성할 수도 있다. 비디오 디코더는 역 행렬 곱셈을 수행하여 변환 계수 벡터로부터 변환 벡터를 생성할 수도 있다.
위에서 소개된 바와 같은 변환들은 1-D 입력 데이터에 적용되고, 변환들은 2-D 입력 데이터 소스들에 대해 또한 확장될 수 있다. X가 입력 MxN 데이터 어레이라고 가정한다. 2-D 입력 데이터에 변환을 적용하는 전형적인 방법들은 분해가능 및 비-분해가능 2-D 변환들을 포함한다.
분해가능 2-D 변환이 아래와 같이 공식화된 X의 수평 및 수직 벡터들을 위한 1-D 변환들에 순차적으로 적용되며:
Figure 112019002724515-pct00013
여기서 C 및 R은 각각 주어진 MxM 및 NxN 변환 행렬들을 나타낸다.
공식으로부터, C는 X의 열 벡터들에 대한 1-D 변환들에 적용되는 한편, R은 X의 행 벡터들에 대한 1-D 변환들에 적용된다. 본 개시물의 나중의 부분에서, 단순화를 위해 C 및 R은 좌측 (수직) 및 우측 (수평) 변환들로서 표시되고 그것들 둘 다는 변환 쌍을 형성한다. C가 R과 동일하고 직교 행렬인 경우들이 있다. 이러한 경우에, 분해가능 2-D 변환이 단지 하나의 변환 행렬에 의해 결정된다.
비-분해가능 2-D 변환이 일 예로서 다음의 수학적 맵핑을 행함으로써 단일 벡터, 즉 X'로의 X의 모든 엘리먼트들을 먼저 인식하였다:
Figure 112019002724515-pct00014
그 다음에 1-D 변환 T'이 다음과 같이 X'에 적용되며:
Figure 112019002724515-pct00015
여기서 T'는 (M*N)x(M*N) 변환 행렬이다.
비디오 코딩에서, 분해가능 2-D 변환들은 통상적으로 1-D 변환과 비교하면 훨씬 더 적은 연산 (예컨대, 가산, 곱셈) 카운트들을 필요로 한다. 아래에서 더 상세히 설명되는 바와 같이, 본 개시물은 비디오 인코더와 비디오 디코더가 좌측 및 우측 변환들을 선택하게 하는 예의 기법들을 설명한다.
예를 들면, 비디오 인코더와 비디오 디코더는 각각의 변환 서브셋트가 복수의 후보 변환들을 식별하는 복수의 변환 서브셋트들을 결정할 수도 있다. 16 개의 가능한 변환들 (예컨대, DCT-1 내지 DCT-8 및 DST-1 내지 DST-8) 중 일 예로서, 비디오 인코더와 비디오 디코더는 세 개의 변환 서브셋트들을 결정할 수도 있고 변환 서브셋트들의 각각은 16 개 변환들 중 둘 이상을 포함한다. 비디오 인코더와 비디오 디코더는 세 개의 변환 서브셋트들 중 하나를 선택하고 선택된 변환 서브셋트로부터 좌측 변환 (예컨대, C) 를 결정하고 세 개의 변환 서브셋트들 중 하나의 변환 서브셋트를 선택하고 선택된 변환 서브셋트로부터 우측 변환 (예컨대, R) 을 결정할 수도 있다. 선택된 변환 서브셋트들은 상이한 서브셋트들 또는 동일한 서브셋트들일 수도 있다.
다음은 HEVC에 적용되는 변환 유형들의 설명이다. 기존의 비디오 코덱들, 이를테면 H.264/AVC에서, 4-포인트 및 8-포인트 이산 코사인 변환 (DCT) 유형-II의 정수 근사가 인트라 및 인터 예측 잔차들 둘 다에 항상 적용된다. 인트라 예측 잔차는 인트라 예측으로부터의 잔차를 지칭하고 인터 예측 잔차는 인터-예측으로부터의 잔차를 지칭한다. 잔차, 인터-예측, 및 인트라 예측은 모두가 아래에서 더 상세히 설명된다. 일반적으로, 잔차 블록은 복수의 변환 블록들로 나누어진다. 비디오 인코딩에서, 변환들은 계수 블록들을 생성하기 위해 변환 블록들의 각각에 적용된다. 비디오 디코딩에서, 변환들은 변환 블록들을 생성하기 위해 그리고 잔차 블록을 재구성하기 위해 계수 블록들의 각각에 적용된다.
잔차 샘플들의 다양한 통계를 더 잘 수용하기 위해, DCT 유형-II 이외의 더욱 유연한 유형들의 변환들이 새로운 세대의 비디오 코덱에서 이용된다. 예를 들어, HEVC에서, 4-포인트 유형-VII 이산 사인 변환 (DST) 의 정수 근사가 인트라 예측 잔차에 이용되는데, 인트라 예측 방향들을 따라 생성된 잔차 벡터들에 대해 DST 유형-VII이 DCT 유형-II보다 더욱 효율적이라는 것, 예컨대, 수평 인트라 예측 방향에 의해 생성된 행 잔차 벡터들에 대해 DST 유형-VII이 DCT 유형-II보다 더욱 효율적이라는 것이 이론적으로 입증되고 실험적으로 검정된다. 예를 들어, 『J. Han, A. Saxena and K. Rose, "Towards jointly optimal spatial prediction and adaptive transform in video/image coding," IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), March 2010, pp. 726-729』를 참조한다.
HEVC에서, 4-포인트 DST 유형-VII의 정수 근사가 4x4 루마 (luma) 인트라 예측 잔차 블록들에만 적용된다 (루마 인트라 예측 잔차 블록들은 아래에서 더 상세히 설명된다). HEVC에서 사용되는 4-포인트 DST-VII은 도 1a에 도시된다.
HEVC에서, 4x4 루마 인트라 예측 잔차 블록들이 아닌 잔차 블록들에 대해, 4-포인트, 8-포인트, 16-포인트 및 32-포인트 DCT 유형-II의 정수 근사들이 또한 적용된다. 도 1b는 4-포인트 DCT-II의 일 예를 도시하며; 도 1c는 8-포인트 DCT-II의 일 예를 도시하며; 도 1d는 16-포인트 DCT-II의 일 예를 도시하며; 그리고 도 1e 는 32-포인트 DCT-II의 일 예를 도시한다. 도 1a 내지 도 1e 는 유형 II의 상이한 사이즈로 된 DCT들의 예들을 도시하고, 도 1a 내지 도 1e 처럼, 상이한 유형들의 N-포인트 DCT들 및 DST들의 예들이 있다.
도 2는 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템 (10) 을 도시하는 블록도이다. 본 명세서에서 사용되는 바와 같이, "비디오 코더"라는 용어는 비디오 인코더들 및 비디오 디코더들 양쪽 모두를 일반적으로 지칭한다. 본 개시물에서, "비디오 코딩" 또는 "코딩"이란 용어들은 비디오 인코딩 또는 비디오 디코딩을 일반적으로 지칭할 수도 있다. 비디오 코딩 시스템 (10) 의 비디오 인코더 (20) 및 비디오 디코더 (30) 는 본 개시물에서 설명되는 다양한 예들에 따라 예측 잔차에 대한 강화된 다중 변환들을 위한 기법들을 수행하도록 구성될 수도 있는 디바이스들의 예들을 나타낸다.
도 1에 도시된 바와 같이, 비디오 코딩 시스템 (10) 은 소스 디바이스 (12) 와 목적지 디바이스 (14) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 생성한다. 따라서, 소스 디바이스 (12) 는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치라고 지칭될 수도 있다. 목적지 디바이스 (14) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수도 있다. 따라서, 목적지 디바이스 (14) 는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치라고 지칭될 수도 있다. 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 비디오 코딩 디바이스들 또는 비디오 코딩 장치들의 예들일 수도 있다.
소스 디바이스 (12) 와 목적지 디바이스 (14) 는 데스크톱 컴퓨터들, 모바일 컴퓨팅 디바이스들, 노트북 (예컨대, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 이른바 "스마트" 폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 차량내 컴퓨터들 등을 포함한 다양한 범위의 디바이스들을 포함할 수도 있다.
목적지 디바이스 (14) 는 소스 디바이스 (12) 로부터의 인코딩된 비디오 데이터를 채널 (16) 을 통해 수신할 수도 있다. 채널 (16) 은 소스 디바이스 (12) 로부터의 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 이동시킬 수 있는 하나 이상의 매체들 또는 디바이스들을 포함할 수도 있다. 하나의 예에서, 채널 (16) 은 소스 디바이스 (12) 가 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 직접 실시간으로 송신하는 것을 가능하게 하는 하나 이상의 통신 매체들을 포함할 수도 있다. 이 예에서, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 통신 표준, 이를테면 무선 통신 프로토콜에 따라 변조할 수도 있고, 변조된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 하나 이상의 통신 매체들은 무선 및/또는 유선 통신 매체들, 이를테면 라디오 주파수 (radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 하나 이상의 통신 매체들은 패킷 기반 네트워크, 이를테면 로컬 영역 네트워크, 광역 네트워크, 또는 글로벌 네트워크 (예컨대, 인터넷) 의 일부를 형성할 수도 있다. 하나 이상의 통신 매체들은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는 다른 장비를 포함할 수도 있다.
다른 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 저장하는 저장 매체를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 예컨대, 디스크 액세스 또는 카드 액세스를 통해 저장 매체에 액세스할 수도 있다. 저장 매체는 블루 레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 다른 적합한 디지털 저장 매체들과 같은 다양한 로컬로 액세스되는 데이터 저장 매체들을 포함할 수도 있다.
추가의 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 저장하는 파일 서버 또는 다른 중간 저장 디바이스를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 파일 서버 또는 다른 중간 저장 디바이스에 저장된 인코딩된 비디오 데이터를 스트리밍 또는 다운로드를 통해 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수 있는 유형의 서버일 수도 있다. 예의 파일 서버들은 웹 서버들 (예컨대, 웹사이트용), 파일 전송 프로토콜 (file transfer protocol; FTP) 서버들, 네트워크 부속 스토리지 (network attached storage; NAS) 디바이스들, 및 로컬 디스크 드라이브들을 포함한다.
목적지 디바이스 (14) 는 표준 데이터 접속, 이를테면 인터넷 접속을 통해, 인코딩된 비디오 데이터에 액세스할 수도 있다. 예의 유형들의 데이터 접속들은 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널들 (예컨대, Wi-Fi 접속들), 유선 접속들 (예컨대, DSL, 케이블 모뎀 등), 또는 양쪽 모두의 조합들을 포함할 수도 있다. 파일 서버로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 둘 다의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 설정 (setting) 들로 제한되지 않는다. 그 기법들은, 다양한 멀티미디어 애플리케이션들, 이를테면 OTA (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대, 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 비디오 데이터의 인코딩, 데이터 저장 매체 상에 저장된 비디오 데이터의 디코딩, 또는 다른 애플리케이션들의 지원 하의 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 비디오 코딩 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 화상 통화와 같은 애플리케이션들을 지원하기 위해 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 2에 예시된 비디오 코딩 시스템 (10) 은 단지 일 예이고 본 개시물의 기법들은 인코딩 및 디코딩 디바이스들 간에 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정들 (예컨대, 비디오 인코딩 또는 비디오 디코딩) 에 적용될 수도 있다. 다른 예들에서, 데이터는 로컬 메모리로부터 취출되며, 네트워크를 통해 스트리밍되는 등등이 된다. 비디오 인코딩 디바이스가 데이터를 인코딩하고 메모리에 저장할 수도 있으며, 그리고/또는 비디오 디코딩 디바이스가 메모리로부터 데이터를 취출하고 디코딩할 수도 있다. 많은 예들에서, 인코딩 및 디코딩은, 서로 통신하지 않지만 단순히 데이터를 메모리에 인코딩하고 및/또는 메모리로부터 데이터를 취출하고 디코딩하는 디바이스들에 의해 수행된다.
도 2의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 구비한다. 일부 예들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 구비할 수도 있다. 비디오 소스 (18) 는 비디오 캡처 디바이스, 예컨대, 비디오 카메라, 이전에 캡처된 비디오 데이터를 포함하는 비디오 아카이브 (archive), 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하는 비디오 피드 인터페이스, 및/또는 비디오 데이터를 생성하는 컴퓨터 그래픽 시스템, 또는 비디오 데이터의 이러한 소스들의 조합을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 소스 (18) 로부터의 비디오 데이터를 인코딩할 수도 있다. 일부 예들에서, 소스 디바이스 (12) 는 출력 인터페이스 (22) 를 통해 목적지 디바이스 (14) 로 인코딩된 비디오 데이터를 직접 송신할 수도 있다. 다른 예들에서, 인코딩된 비디오 데이터는 디코딩 및/또는 플레이백을 위한 목적지 디바이스 (14) 에 의한 나중의 액세스를 위해 저장 매체 또는 파일 서버 상에 또한 저장될 수도 있다.
도 2의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 구비한다. 일부 예들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 구비한다. 입력 인터페이스 (28) 는 채널 (16) 을 통해 인코딩된 비디오 데이터를 수신할 수도 있다. 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 또는 그것 외부에 있을 수도 있다. 대체로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 액정 디스플레이 (liquid crystal display; LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (organic light emitting diode; OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들을 포함할 수도 있다.
비디오 인코더 (20) 와 비디오 디코더 (30) 각각은 다양한 적합한 회로, 이를테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (digital signal processors; DSP들), 주문형 집적회로들 (application-specific integrated circuits; ASIC들), 필드 프로그램가능 게이트 어레이들 (field-programmable gate arrays; FPGA들), 개별 로직, 하드웨어, 또는 그것들의 임의의 조합 중 임의의 것으로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현되면, 디바이스가 적합한 비일시적 컴퓨터 판독가능 저장 매체 내에 소프트웨어에 대한 명령을 저장할 수도 있고 하나 이상의 프로세서들을 사용하여 하드웨어에서 그 명령들을 실행하여 본 개시물의 기법들을 수행할 수도 있다. 전술한 바 (하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 조합 등을 포함) 중 임의의 것은 하나 이상의 프로세서들이라고 간주될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들 내에 구비될 수도 있고, 그것들 중 어느 하나는 결합형 인코더/디코더 (CODEC) 의 일부로서 각각의 디바이스 내에 통합될 수도 있다.
본 개시물은 다른 디바이스, 이를테면 비디오 디코더 (30) 에 특정 정보를 "시그널링하는" 또는 "송신하는" 비디오 인코더 (20) 에 일반적으로 관련이 있을 수도 있다. "시그널링" 또는 "송신"이란 용어는 압축된 비디오 데이터를 디코딩하는데 사용되는 신택스 엘리먼트들 및/또는 다른 데이터의 통신을 일반적으로는 지칭할 수도 있다. 이러한 통신은 실시간 또는 거의 실시간으로 일어날 수도 있다. 대안으로, 이러한 통신은, 인코딩 시에 신택스 엘리먼트들을 인코딩된 비트스트림으로 컴퓨터 판독가능 저장 매체에 저장하고 그 신택스 엘리먼트들이 이 매체에 저장된 후의 임의의 시간에 디코딩 디바이스에 의해 취출될 수도 있는 경우에 일어날 바와 같이 어떤 기간에 걸쳐 일어날 수도 있다.
일부 예들에서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 비디오 압축 표준, 이를테면 위에서 언급된 HEVC 표준, HEVC의 확장판들, 또는 아마도 개발 중인 차세대의 비디오 코딩에 따라 동작한다. 이해의 편의만을 위해, 다음에서는 HEVC 표준에 관한 일부 정보를 제공한다. 그러나, 본 개시물에서 설명되는 기법들은 HEVC 표준으로 제한되는 것으로 여겨지지 않아야 한다.
HEVC 및 다른 비디오 코딩 표준들에서, 비디오 시퀀스가 일련의 픽처들을 통상 포함한다. 픽처들은 "프레임들"이라고 또한 지칭될 수도 있다. 픽처가 SL, SCb 및 SCr로 표시되는 세 개의 샘플 어레이들을 포함할 수도 있다. SL은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb는 Cb 색차 샘플들의 2차원 어레이이다. SCr은 Cr 색차 샘플들의 2차원 어레이이다. 색차 샘플들은 본 명세서에서 "크로마 (chroma)" 샘플들이라고 또한 지칭될 수도 있다. 다른 사례들에서, 픽처가 모노크롬일 수도 있고 루마 샘플들의 어레이만을 포함할 수도 있다.
픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 코딩 트리 유닛들 (coding tree units; CTU) 의 셋트를 생성할 수도 있다. CTU들의 각각은, 루마 샘플들의 코딩 트리 블록 (coding tree block), 크로마 샘플들의 두 개의 대응 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들일 수도 있다. 코딩 트리 블록이 샘플들의 NxN 블록일 수도 있다. CTU가 "트리 블록" 또는 "최대 코딩 유닛 (largest coding unit; LCU)"이라고 또한 지칭될 수도 있다. HEVC의 CTU들은 다른 표준들, 이를테면 H.264/AVC의 매크로블록들과 대체로 유사할 수도 있다. 그러나, CTU가 특정 사이즈로 반드시 제한되는 것은 아니고 하나 이상의 코딩 유닛들 (CU들) 을 포함할 수도 있다. 슬라이스가 래스터 스캔으로 연속하여 순서화된 정수 수의 CTU들을 포함할 수도 있다.
코딩된 CTU를 생성하기 위해, 비디오 인코더 (20) 는 CTU의 코딩 트리 블록들에 대해 쿼드트리 파티셔닝을 재귀적으로 수행하여 코딩 트리 블록들을 코딩 블록들로 나눌 수도 있으며, 그래서 그 이름이 "코딩 트리 유닛들"이다. 코딩 블록이 샘플들의 NxN 블록이다. CU가, 루마 샘플 어레이, Cb 샘플 어레이 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 대응하는 두 개의 코딩 블록들과, 그 코딩 블록들의 샘플들을 코딩하는데 사용된 신택스 구조들일 수도 있다. 비디오 인코더 (20) 는 CU의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록이 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 정사각형 아닌) 블록일 수도 있다. CU의 예측 유닛 (PU) 이 픽처의 루마 샘플들의 예측 블록, 크로마 샘플들의 두 개의 대응하는 예측 블록들, 및 예측 블록 샘플들을 예측하는데 사용된 신택스 구조들일 수도 있다. 비디오 인코더 (20) 는 CU의 각각의 PU의 루마, Cb 및 Cr 예측 블록들에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다.
비디오 인코더 (20) 는 PU에 대한 예측 블록들을 생성 (예컨대, 결정) 하기 위해 인트라 예측 또는 인터 예측을 사용할 수도 있다. 비디오 인코더 (20) 가 PU의 예측 블록들을 생성하기 위해 인트라 예측을 사용하면, 비디오 인코더 (20) 는 그 PU에 연관된 픽처의 디코딩된 샘플들에 기초하여 그 PU의 예측 블록들을 생성할 수도 있다.
비디오 인코더 (20) 가 PU의 예측 블록들을 생성 (예컨대, 결정) 하기 위해 인터 예측을 사용하면, 비디오 인코더 (20) 는 그 PU에 연관된 픽처 이외의 하나 이상의 픽처들의 디코딩된 샘플들에 기초하여 그 PU의 예측 블록들을 생성할 수도 있다. 비디오 인코더 (20) 는 PU의 예측 블록들을 생성하기 위해 단-예측 (uni-prediction) 또는 양-예측 (bi-prediction) 을 사용할 수도 있다. 비디오 인코더 (20) 가 단-예측을 사용하여 PU에 대한 예측 블록들을 생성하는 경우, 그 PU는 단일 모션 벡터 (motion vector; MV) 를 가질 수도 있다. 비디오 인코더 (20) 가 양-예측을 사용하여 PU에 대한 예측 블록들을 생성하는 경우, PU는 두 개의 MV들을 가질 수도 있다.
비디오 인코더 (20) 가 CU의 하나 이상의 PU들에 대한 예측 루마, Cb 및 Cr 블록들을 생성한 후, 비디오 인코더 (20) 는 그 CU에 대한 루마 잔차 블록을 생성할 수도 있다. CU의 루마 잔차 블록에서의 각각의 샘플은 CU의 예측 루마 블록들 중 하나의 예측 루마 블록에서의 루마 샘플과 CU의 원래의 루마 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낸다. 덧붙여서, 비디오 인코더 (20) 는 CU에 대한 Cb 잔차 블록을 생성할 수도 있다. CU의 Cb 잔차 블록에서의 각각의 샘플은 CU의 예측 Cb 블록들 중 하나의 예측 Cb 블록에서의 Cb 샘플과 CU의 원래의 Cb 코딩 블록에서의 대응 샘플 간의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 CU에 대한 Cr 잔차 블록을 또한 생성할 수도 있다. CU의 Cr 잔차 블록에서의 각각의 샘플은 CU의 예측 Cr 블록들 중 하나의 예측 Cr 블록에서의 Cr 샘플과 CU의 원래의 Cr 코딩 블록에서의 대응 샘플 간의 차이를 나타낼 수도 있다.
더욱이, 비디오 인코더 (20) 는 쿼드트리 파티셔닝을 사용하여 CU의 루마, Cb 및 Cr 잔차 블록들을 하나 이상의 루마, Cb 및 Cr 변환 블록들로 분해할 수도 있다. 변환 블록이 동일한 변환이 적용되는 샘플들의 직사각형 블록일 수도 있다. CU의 변환 유닛 (transform unit; TU) 이 루마 샘플들의 변환 블록, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용된 신택스 구조들일 수도 있다. 따라서, CU의 각각의 TU는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록에 연관될 수도 있다. TU에 연관된 루마 변환 블록은 CU의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU의 Cr 잔차 블록의 서브-블록일 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 루마 변환 블록에 적용하여 그 TU에 대한 루마 계수 블록을 생성할 수도 있다. 계수 블록이 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수가 스칼라 양일 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 Cb 변환 블록에 적용하여 TU에 대한 Cb 계수 블록을 생성할 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU의 Cr 변환 블록에 적용하여 TU에 대한 Cr 계수 블록을 생성할 수도 있다. 더 상세히 설명되는 바와 같이, 본 개시물은 비디오 인코더 (20) 가 계수 블록들을 생성하기 위해 사용할 변환들을 결정하는 예시적인 방도들을 설명한다.
계수 블록 (예컨대, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록) 을 생성한 후, 비디오 인코더 (20) 는 그 계수 블록을 양자화할 수도 있다. 양자화는 변환 계수들이 그 변환 계수들을 표현하는데 사용된 데이터의 양을 가능한 한 줄이도록 양자화되어서, 추가의 압축을 제공하는 프로세스를 일반적으로 지칭한다. 비디오 인코더 (20) 가 계수 블록을 양자화한 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 대해 콘텍스트 적응 이진 산술 코딩 (Context-Adaptive Binary Arithmetic Coding; CABAC) 을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩된 신택스 엘리먼트들을 비트스트림으로 출력할 수도 있다.
비디오 인코더 (20) 는 엔트로피 인코딩된 신택스 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다. 그 비트스트림은 코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 그 비트스트림은 네트워크 추상화 계층 (network abstraction layer; NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함하고 원시 바이트 시퀀스 패이로드 (raw byte sequence payload; RBSP) 를 캡슐화한다. NAL 유닛 헤더는 NAL 유닛 유형 코드를 나타내는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 특정된 NAL 유닛 유형 코드는 NAL 유닛의 유형을 나타낸다. RBSP가 NAL 유닛 내에 캡슐화되는 정수 수의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 사례들에서, RBSP가 영 비트들을 포함한다.
상이한 유형들의 NAL 유닛들이 상이한 유형들의 RBSP들을 캡슐화할 수도 있다. 예를 들어, 제 1 유형의 NAL 유닛이 픽처 파라미터 셋트 (picture parameter set; PPS) 에 대한 RBSP를 캡슐화할 수도 있으며, 제 2 유형의 NAL 유닛이 코딩된 슬라이스에 대한 RBSP를 캡슐화할 수도 있으며, 제 3 유형의 NAL 유닛이 SEI에 대한 RBSP를 캡슐화할 수도 있다는 등등이다. 비디오 코딩 데이터에 대한 RBSP들 (파라미터 셋트들 및 SEI 메시지들에 대한 RBSP과는 대조적임) 을 캡슐화하는 NAL 유닛들은, 비디오 코딩 계층 (video coding layer; VCL) NAL 유닛들이라고 지칭될 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 덧붙여서, 비디오 디코더 (30) 는 그 비트스트림으로부터 신택스 엘리먼트들을 디코딩하기 위해 그 비트스트림을 파싱할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 디코딩된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비디오 데이터를 재구성하는 프로세스는 비디오 인코더 (20) 에 의해 수행된 프로세스에 일반적으로 역일 수도 있다. 예를 들면, 비디오 디코더 (30) 는 현재 CU의 PU들에 대한 예측 블록들을 결정하기 위해 그 PU들의 MV들을 사용할 수도 있다. 덧붙여서, 비디오 디코더 (30) 는 현재 CU의 TU들에 연관된 변환 계수 블록들을 역 양자화할 수도 있다.
비디오 디코더 (30) 는 현재 CU의 TU들에 연관된 변환 블록들을 재구성하기 위해 변환 계수 블록들에 대해 역 변환들을 수행할 수도 있다. 본 개시물은 비디오 디코더 (30) 가 변환 계수 블록들에 대해 역 변환들을 수행하는데 사용되는 변환들을 결정하는 방도에 대한 예시적인 기법들을 설명한다.
비디오 디코더 (30) 는 현재 CU의 PU들에 대한 예측 블록들의 샘플들을 현재 CU의 TU들의 변환 블록들의 대응 샘플들에 가산함으로써 현재 CU의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 그 픽처를 재구성할 수도 있다.
위에서 설명된 바와 같이, CU가 하나 이상의 TU들을 포함한다. 다음에서는 HEVC에서의 잔차 쿼드트리에 기초한 변환 스킴을 설명한다. 잔차 블록들의 다양한 특성들에 적응하기 위해, 잔차 쿼드트리 (RQT) 를 사용하는 변환 코딩 구조가 HEVC에서 적용되며, 이는 http://www.hhi.fraunhofer.de/fields-of-competence/image-processing/research-groups/image-video-coding/hevc-high-efficiency-video-coding/transform-coding-using-the-residual-quadtree-rqt.html에서 간략히 설명된다.
위에서 설명된 바와 같이, 각각의 픽처는 CTU들로 나누어지며, 그것들은 특정 타일 또는 슬라이스에 대한 래스터 스캔 순서로 코딩된다. CTU가 정사각형 블록이고 쿼드트리, 즉, 코딩 트리의 루트를 나타낸다. CTU 사이즈는 8×8부터 64×64까지의 루마 샘플들의 범위일 수도 있지만, 통상적으로 64×64가 사용된다. 각각의 CTU는 코딩 유닛들 (CU들) 이라 불리는 더 작은 정사각형 블록들로 추가로 분할될 수 있다. CTU가 CU들로 재귀적으로 분할된 후, 각각의 CU는 예측 유닛들 (PU) 과 변환 유닛들 (TU) 로 추가로 나누어진다. CU의 TU들로의 파티셔닝은 쿼드트리 접근법에 기초하여 재귀적으로 수행되며, 그러므로 각각의 CU의 잔차 신호는 트리 구조 즉, 잔차 쿼드트리 (RQT) 에 의해 코딩된다. RQT는 4×4부터 32×32까지의 루마 샘플들의 TU 사이즈들을 허용한다.
도 3은 CU가 글자들 "a" 내지 "j"로 라벨표시된 10 개의 TU들을 포함하는 일 예와, 대응하는 블록 파티셔닝을 도시한다. RQT의 각각의 노드는 실제로 변환 유닛 (TU) 이다. 개개의 TU들은, 심도-우선 순회로 재귀적 Z-스캔을 추종하는, 도 3에서 알파벳 순서로 예시된 심도-우선 트리 순회 순서 (depth-first tree traversal order) 로 진행된다. 쿼드트리 접근법은 잔차 신호의 가변하는 공간-주파수 특성들에 대한 변환의 적응을 가능하게 한다. 통상적으로, 더 큰 공간적 지원을 갖는 더 큰 변환 블록 사이즈들이, 더 나은 주파수 해상도를 제공한다. 그러나, 더 작은 공간적 지원을 갖는 더 작은 변환 블록 사이즈들이, 더 나은 공간적 해상도를 제공한다. 두 개의, 공간적 및 주파수 해상도들 사이의 절충은, 인코더 모드 결정에 의해 (예컨대, 비디오 인코더 (20) 에 의해), 예를 들어, 레이트-왜곡 최적화 기법에 기초하여 선택된다. 레이트-왜곡 최적화 기법은, 각각의 코딩 모드 (예컨대, 특정 RQT 분할 구조) 에 대해, 코딩 비트들 및 재구성 왜곡의 가중된 합, 즉, 레이트-왜곡 비용을 계산하고, 최소 레이트-왜곡 비용을 갖는 코딩 모드를 최상의 모드로서 선택한다.
세 개의 파라미터들, 즉, 트리의 최대 심도, 최소 허용된 변환 사이즈, 및 최대 허용된 변환 사이즈가 RQT에서 정의된다. 최소 및 최대 변환 사이즈들은 이전의 단락에서 언급된 지원되는 블록 변환들에 대응하는 4×4부터 32×32까지의 샘플들의 범위 내에서 가변할 수 있다. RQT의 최대 허용된 심도는 TU들의 수를 제한한다. 0과 동일한 최대 심도가, 각각의 포함된 TB (transform block) 가 최대 허용된 변환 사이즈, 예컨대, 32x32에 도달한다면 CB (coding block) 가 임의의 것으로 추가로 분할될 수 없다는 것을 의미한다.
모든 이들 파라미터들은 RQT 구조와 상호작용하고 그 RQT 구조에 영향을 미친다. 루트 CB 사이즈가 64×64이며, 최대 심도가 0과 동일하고 최대 변환 사이즈가 32×32와 동일한 경우를 고려한다. 이 경우, CB는 적어도 한번 파티셔닝되어야만 하는데, 그렇지 않으면 그것이, 허용되지 않는 64×64 TB로 이어질 것이라서이다. HEVC에서, 더 큰 사이즈의 변환들, 예컨대, 64x64 변환들이, 상대적으로 더 작은 해상도의 비디오들에 대한 상대적으로 높은 복잡도와 고려되는 그것의 제한된 이점으로 인해 채택되지 않는다.
RQT 파라미터들, 즉, 최대 RQT 심도, 최소 및 최대 변환 사이즈는, 비트스트림에서는 시퀀스 파라미터 셋트 (sequence parameter set) 레벨에서 송신된다. RQT 심도를 고려하여, 상이한 값들이 인트라 및 인터 코딩된 CU들 (즉, 인트라-예측된 인코딩된 CU들 또는 인터-예측된 디코딩된 CU들 또는 인트라-예측된 인코딩된 CU들 또는 인터-예측된 CU들) 에 대해 특정되고 시그널링된다.
쿼드트리 변환이 인트라 및 인터 잔차 블록들에 적용된다. 통상적으로 동일한 사이즈의 현재 잔차 쿼드트리 파티션의 DCT-II 변환이 잔차 블록에 적용된다. 그러나, 현재 잔차 쿼드트리 블록이 4x4이고 인트라 예측에 의해 생성된다면, 위의 4x4 DST-VII 변환이 적용된다.
다음에서는 HEVC에서의 계수 코딩을 설명한다. TU 사이즈에 상관없이, 변환 유닛의 잔차는 비-중복 계수 그룹들 (coefficient groups) (CG) 로 코딩되고, 각각은 TU의 4x4 블록의 계수들을 포함한다. 예를 들어, 32x32 TU는 총 64 개의 CG들을 갖고, 16x16 TU는 총 16 개의 CG들을 갖는다. TU 내부의 CG들은 특정한 미리 정의된 스캔 순서에 따라 코딩된다. 각각의 CG를 코딩하는 경우, 현재 CG 내부의 계수들은 4x4 블록에 대한 특정한 미리 정의된 스캔 순서에 따라 스캔되고 코딩된다. 도 4는 4 개의 CG들을 포함하는 8x8 TU에 대한 계수 스캔을 예시한다.
각각의 컬러 성분에 대해, 현재 변환 유닛이 적어도 하나의 0이 아닌 계수를 갖는지의 여부를 표시하는 하나의 플래그가 맨 먼저 시그널링될 수도 있다. 적어도 하나의 0이 아닌 계수가 있다면, 변환 유닛에서 계수 스캔 순서에서의 최종 유효 계수 (last significant coefficient) 의 포지션은 변환 유닛의 좌측상단 코너를 기준으로 하는 코디네이션 (coordination) 으로 명시적으로 코딩된다. 그 코디네이션의 수직 또는 수평 성분은 그것의 접두부 및 접미부에 의해 표현되는데, 접두부는 절단형 라이스 (truncated rice; TR) 로 이진화되고 접미부는 고정된 길이로 이진화된다.
last_ sig _ coeff _x_prefix는 변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 열 포지션의 접두부를 특정한다. last_sig_coeff_x_prefix의 값들은 0 내지 (log2TrafoSize << 1) - 1의 범위에 있을 것이다.
last_ sig _ coeff _y_prefix는 변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 행 포지션의 접두부를 특정한다. last_sig_coeff_y_prefix의 값들은 0 내지 (log2TrafoSize << 1) - 1의 범위에 있을 것이다.
last_ sig _ coeff _x_suffix는 변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 열 포지션의 접미부를 특정한다. last_sig_coeff_x_suffix의 값들은 0 내지 (1 << ((last_sig_coeff_x_prefix >> 1) - 1)) - 1의 범위에 있을 것이다.
변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 열 포지션 (LastSignificantCoeffX) 은 다음과 같이 도출된다:
- last_sig_coeff_x_suffix가 존재하지 않는다면, 다음이 적용되며:
LastSignificantCoeffX = last_sig_coeff_x_prefix
- 그렇지 않으면 (last_sig_coeff_x_suffix가 존재한다면), 다음이 적용된다:
LastSignificantCoeffX = (1 << ((last_sig_coeff_x_prefix >> 1) - 1)) *
(2 + (last_sig_coeff_x_prefix & 1)) + last_sig_coeff_x_suffix
last_ sig _ coeff _y_suffix는 변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 행 포지션의 접미부를 특정한다. last_sig_coeff_y_suffix의 값들은 0 내지 (1 << ((last_sig_coeff_y_prefix >> 1) - 1)) - 1의 범위에 있을 것이다.
변환 블록 내의 스캐닝 순서에서 최종 유효 계수의 행 포지션 (LastSignificantCoeffY) 은 다음과 같이 도출된다:
- last_sig_coeff_y_suffix가 존재하지 않는다면, 다음이 적용되며:
LastSignificantCoeffY = last_sig_coeff_y_prefix
- 그렇지 않으면 (last_sig_coeff_y_suffix가 존재한다면), 다음이 적용된다:
LastSignificantCoeffY = (1 << ((last_sig_coeff_y_prefix>> 1) - 1)) *
(2 + (last_sig_coeff_y_prefix & 1)) + last_sig_coeff_y_suffix
scanIdx가 2와 동일한 경우, 좌표들은 다음과 같이 스와핑된다:
(LastSignificantCoeffX, LastSignificantCoeffY) = Swap(LastSignificantCoeffX, LastSignificantCoeffY)
코딩된 그런 포지션과 또한 CG들의 계수 스캐닝 순서로, 하나의 플래그는 0이 아닌 계수들을 포함하는지의 여부를 표시하는 마지막 CG (스캐닝 순서에서임) 를 제외한 CG들에 대해 추가로 시그널링된다. 0이 아닌 계수들을 포함할 수도 있는 그들 CG들에 대해, 유효 플래그들, 계수들의 절대 값들 및 부호 정보가 미리 정의된 4x4 계수 스캔 순서에 따라 각각의 계수에 대해 추가로 코딩될 수도 있다.
위에서 설명된 바와 같이, 본 개시물에서 설명되는 기법들은, 변환 블록을 계수 블록으로 변환하기 위해 비디오 인코더 (20) 가 적용할 변환을 결정하는 방도와 계수 블록을 변환 블록으로 변환하기 위해 비디오 디코더 (30) 가 (예컨대, 역 변환으로서) 적용할 변환을 결정하는 방도를 설명한다. 다음에서는 인트라 및 인터 예측 잔차에 대한 다중 변환 (예컨대, 잔차 블록이 인트라 예측으로부터 생성되는 경우를 위한 그리고 잔차 블록이 인터-예측으로부터 생성되는 경우를 위한 상이한 변환 유형들) 을 설명한다. 본 기법들 중 많은 것들이 인트라 및 인터 예측과 관련하여 설명되었지만, 본 기법들은 또한 잔차 데이터를 코딩하는 것의 일부로서 변환들을 이용하는 다른 코딩 모드들에도 또한 적용될 수도 있다.
일부 경우들에서, DST 유형-VII이 기존의 DCT 유형-II에 비하여 인트라 코딩 효율을 효율적으로 개선할 수 있다는 사실에도 불구하고, 예측 잔차들이 다양한 통계를 제시하기 때문에 변환 효율은 상대적으로 제한되고, DCT 유형-II 및 DST 유형-VII의 고정된 사용이 모든 가능한 경우들에 효율적으로 적응할 수 없다. 일부 기법들이 상이한 경우들에 적응하기 위해 제안되어 있다.
『S.-C. Lim, D.-Y. Kim, S. Jeong, J. S. Choi, H. Choi, and Y.-L. Lee, "Rate-distortion optimized adaptive transform coding," Opt. Eng., vol. 48, no. 8, pp. 087004-1-087004-14, Aug. 2009 』에서, 예측 잔차에 대해 DCT 또는 DST의 정수 버전을 적응적으로 채용하는 새로운 변환 스킴이 제안되어, 각각의 블록에 대해 DCT 또는 DST 변환이 예측 잔차에 대해 사용되는지의 여부가 시그널링된다. 『Y. Ye and M. Karczewicz, "Improved H.264 intra coding based on bidirectional intra prediction, directional transform, and adaptive coefficient scanning," in Proc. 15th IEEE Int. Conf. Image Process., Oct. 2008, pp. 2116-2119』에서, 각각의 인트라 예측 모드가 KLT 쌍으로서 미리 정의된 고유 변환 쌍 (C 및 R) 에 맵핑될 수 있어서, 모드 의존적 변환 (mode dependent transform; MDDT) 이 적용된다는 것이 제안되어 있다. 이 방식의, 상이한 KLT 변환들은 상이한 인트라 예측 모드들을 위해 사용될 수 있지만; 사용될 어떤 변환은 미리 정의되고 인트라 예측 모드에 의존적이다.
『X. Zhao, L. Zhang, S. W. Ma, and W. Gao, "Video coding with rate-distortion optimized transform," IEEE Trans. Circuits Syst. Video Technol., vol. 22, no. 1, pp. 138-151, Jan. 2012』에서, 그러나, 더 많은 변환들이 사용될 수 있고 오프-라인 훈련 프로세스로부터 도출되는 미리-정의된 변환 후보들의 셋트로부터의 변환들에 대한 인덱스가 명시적으로 시그널링된다. MDDT와 마찬가지로, 각각의 인트라 예측 방향은 그것의 고유한 변환 쌍들의 셋트를 가질 수도 있다. 인덱스가 어떤 변환 쌍이 그 셋트로부터 선택되는지를 특정하기 위해 시그널링된다. 예를 들어, 최소 블록 사이즈 4x4에 대해 네 개까지의 수직 KLT 변환들과 네 개까지의 수평 KLT 변환들이 있고; 그러므로 16 개 조합들이 선택될 수도 있다. 더 큰 블록 사이즈들에 대해, 더 적은 수의 조합들이 사용된다. "레이트-왜곡 최적화된 변환을 이용한 비디오 코딩"에서의 제안된 방법은 인트라 및 인터 예측 잔차들 둘 다에 적용된다. 인터 예측 잔차에 대해, KLT 변환들의 16 개까지의 조합들이 선택될 수 있고 조합들 (4x4에 대한 네 개와 8x8에 대한 열여섯 개) 중 하나에의 인덱스는 각각의 블록에 대해 시그널링된다.
『A. Saxena and F. Fernandes, "DCT/DST-based transform coding for intra prediction in image/video coding," IEEE Trans. Image Processing』 및 『C. Yeo, Y. H. Tan, Z. Li, and S. Rahardja, "Mode-dependent transforms for coding directional intra prediction residuals," IEEE Trans. Circuits Syst. Video Technol., vol. 22, no. 4, pp. 545-554, 2012』에서, 다중 변환들이 사용되지만; KLT 변환들 (이것들은 훈련될 것이 통상적으로 필요함) 을 사용하는 대신, DCT (DCT-II) 또는 DST (DST-VII) 중 어느 하나가 변환 유닛에 대해 (동일한 좌측 및 우측 변환들 (예컨대, C 및 R) 둘 다로) 사용되고 어떤 것이 사용될 것인지가 시그널링된 플래그에 의해 결정된다. 『F. Zou, O. C. Au, C. Pang, J. Dai, and F. Lu, "Rate-Distortion Optimized Transforms Based on the Lloyd-Type Algorithm for Intra Block Coding," IEEE Journal of Selected Topics in Signal Processing, Volume:7, Issue: 6, Nov. 2013』에서, 여러 미리-정의된 KLT 변환 쌍들이 사용되고, 변환 쌍에의 인덱스가 코딩 유닛에 대해 (도출되는 대신) 시그널링되어서, 코딩 유닛의 각각의 변환 유닛은 동일한 변환 쌍을 사용한다.
『J. An, X. Zhao, X. Guo and S. Lei, "Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue," JCTVC-G281』에서, 다중 변환들이 TU들의 인터 예측된 잔차에 대해 CU 내의 그 TU들의 로케이션들에 따라 선택된다. C 및 R 변환들 둘 다는 DST-VII와 DST-VII의 뒤집힌 (flipped) 버전으로부터 선택된다. 그러므로, 네 개까지의 조합들이 CU 내의 TU들에 대해 가능하다. 그러나, 그 조합이 PU들의 로케이션에 의해 충분히 결정되므로, 어떤 조합이 사용되고 있는지를 시그널링할 필요는 없다.
HEVC 에서 채용된 DCT-II 및 4x4 DST-VII 에 추가하여, 강화된 다중 변환 (EMT) 스킴은 인터 및 인트라 코딩된 블록들 양자에 대해 잔차 코딩을 위해 사용될 수도 있다. 그 스킴은 HEVC 에서의 현재의 변환들 이외의 DCT/DST 패밀리들로부터의 다수의 선택된 변환들을 이용할 수도 있다. 이들 변환 행렬들은 DST-VII, DCT-VIII, DST-I 및 DCT-V 이다. 표 1 은 선택된 DST/DCT 의 기저 함수를 나타낸다.
변환 행렬의 직교성을 유지하기 위해, 변환 행렬들은 HEVC 에서의 변환 행렬들보다 더 정확하게 양자화될 수도 있다. 16-비트의 범위 내에서 변환된 계수들의 중간 값들을 유지하기 위해, 수평 변환 후에 그리고 수직 변환 후에, 모든 계수들은 현재 HEVC 변환들에서 사용된 우측 시프트에 비해 2 비트 더 우측 시프트될 수도 있다.
EMT 는 폭 및 높이 양자가 64 와 동일하기보다는 더 작은 CU 들에 적용되고, EMT 가 적용되는지 또는 아닌지 여부는 CU 레벨 플래그에 의해 제어된다. CU 레벨 플래그가 0 과 동일할 때, DCT-II 는 잔차를 인코딩하기 위해 CU 에서 적용된다. EMT 인에이블된 CU 내의 루마 코딩 블록에 대해, 사용될 수평 및 수직 변환을 식별하기 위해 2 개의 추가적인 플래그들이 시그널링된다.
인트라 잔차 코딩을 위해, 상이한 인트라 예측 모드들의 상이한 잔차 통계로 인해, 모드-의존적 변환 후보 선택 프로세스가 이용된다. 3 개의 변환 서브-셋트들이 표 1 에 나타낸 바와 같이 정의되었고, 변환 서브셋트는 표 2 에서 명시된 바와 같이 인트라 예측 모드에 기초하여 선택된다.
Figure 112019002724515-pct00016
서브-셋트 개념으로, 변환 서브셋트는 CU-레벨 EMT 플래그가 1 과 동일한 경우에 CU 의 인트라 예측 모드를 이용하여 표 1 에 기초하여 먼저 식별된다. 그 후에, 수평 및 수직 변환의 각각 후에, 표 2 에서, 식별된 변환 서브셋트에서의 2 개의 변환 후보들 중의 하나가 플래그로 명시적으로 시그널링된 것에 기초하여 선택된다.
Figure 112019002724515-pct00017
하지만, 인터 예측 잔차에 대해, DST-VII 및 DCT-VIII 로 이루어진 오직 하나의 변환 셋트만이 수평 및 수직 변환들 양자에 대해 그리고 모든 인터 모드들에 대해 사용될 수도 있다.
『P. Philippe, V. Lorcy, "Proposed improvements to the Adaptive multiple Core transform," JVET-C0222』 에서, DST-IV 및 아이덴터티 (ID) 변환을 이용하는 것을 도입한 EMT 의 수정된 설계가 제안된다. ID 변환은 식별 행렬과 동일한 변환 코어를 사용하고, 그래서, ID 변환은 단순히 입력을 출력으로 복사하는 것이고, 수평 또는 수직 방향 중 어느 일방에서의 변환을 생략하는 것으로서 고려될 수 있다. DST-4 및 ID 변환들의 이용은 규칙적인 패턴들이 없는 빅 (big) 룩-업 테이블에 의해 명시된다. 이들 룩-업 테이블은, 도 5a 및 도 5b 에서 도시된 바와 같이, 각각의 인트라 예측 모드 (67 개의 인트라 모드들) 및 각각의 블록 사이즈 (4x4, 8x8, 16x16, 32x32 를 포함하는 4 개의 상이한 블록 사이즈들) 에 대해 수평/수직 변환 쌍을 명시한다.
EMT 의 설계의 이러한 수정은 향상된 코딩 이득을 보이지만, 룩-업 테이블은 깔끔한 설계 및 합리적인 저장 부담에 대해 너무 크다. 또한, 최근의 JEM 코덱에서, 보다 유연한 직사각형 블록 사이즈들을 포함하는 쿼드트리 플러스 바이너리 트리 (quadtree plus binary tree; QTBT) 블록 파티션 구조가 사용된다. QTBT 를 갖는 제안된 수정된 설계를 수용하기 위해서, 룩-업 테이블 사이즈는 폭발적으로 증가할 것이고, 이는 코딩 이득 향상을 보다 의문이게 만든다.
EMT 의 설계는 변환 이용 기반 인트라 예측 모드 및 EMT 인덱스를 명시하기 위한 단순한 룩업 테이블을 사용하고, 이는 상이한 블록 사이즈들 및 수평/수직 변환 쌍에 대한 유연성을 결여할 수도 있다.
비록 JVET-C0022 에서의 EMT 룩-업 테이블이 보다 유연한 수평/수직 변환 쌍 및 블록 사이즈 의존성을 도입함으로써 EMT 의 코딩 이득을 향상시켰지만, 룩-업 테이블 (LUT) 은 오히려 크고 불규칙적이며, 이는 깔끔한 설계가 아니고, 저장 부담을 크게 증가시키며, 이는 저장할 상당한 메모리를 필요로 한다.
본 개시의 일부 예들에서, 상기 언급된 문제들 중 하나 이상을 해결하기 위해 다음 기법들 중 하나 이상이 설명된다. 그러나, 다음의 기법들이 위에서 언급된 문제들 중 하나 이상을 해결하는 것은 요건이 아니다. 다음의 기법들이 개별적으로 적용될 수도 있다. 일부 경우들에서, 예시적인 기법들의 임의의 조합이 적용될 수도 있다. 예를 들면, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 기법들을 개별적으로 적용할 수도 있거나, 또는, 일부 경우들에서, 하나 이상의 기법들의 임의의 조합을 적용할 수도 있다.
본 기법들의 일부 예들에서, JVET-C0022 에서 사용된 것보다 더 작은 사이즈의 하지만 유사한 성능을 제공하는 LUT 가 사용될 수도 있다.
일부 예들에서, 변환의 선택된 셋트, 예컨대, {DST-7, DST-4, DCT-8, DCT-5, DST-1} 또는 {DST-7, DST-4, DCT-8, DCT-5, DST-1, ID} 중에서 상이한 수평 및 수직 변환들의 모든 가능한 조합들을 허용하는 대신에, 오직 훨씬 더 적은 수의 수평/수직 변환 쌍들만이 사용된다. 이 예에서, 가능한 변환 유형들의 수는, 예컨대 더 적은 효율적인 조합들로, 제약된다. 모든 가능한 조합들, ID 변환 없이 25 개 및 ID 변환을 포함하여 36 개로부터, 오직 서브셋트만이 사용될 수도 있다. 따라서, 변환들의 셋트가 N 개의 변환들 (여기서 N 은 예컨대 5 또는 6 변환들과 동일) 을 포함할 수도 있는 경우에, N 개의 변환들의 모든 수직 및 수평 쌍 조합들은 N2 개의 수평 및 수직 변환 쌍 조합들과 동일할 것이다. 따라서, N2 개의 수평 및 수직 변환 쌍 조합들보다 더 적은 것이 사용될 수도 있다.
모든 변환 조합들을 이용하여 테스트에 기초하여 더 적은 효율적인 조합들이 결정될 수도 있고, 최소 사용의 조합들에 기초하여 허용되는 조합들의 수를 감소시킬 수도 있다. 따라서, 이용가능한 변환들의 유니버스는 성능 이득들이 감소되거나 역전될 때까지 하나씩 감소될 수도 있다. 변환 조합들에서의 추가적인 감소 후에 작은 성능 향상들이 산출되거나 전혀 성능 향상들이 산출되지 않는 경우에, 변환 조합들의 셋트는 결정될 수도 있다.
소정 예들에서, 상이한 수평 및 수직 변환들의 가능한 조합들의 총 수가 25, 36 일 수 있거나 심지어 더 클 수 있을 때, 훨씬 더 작은 수의 수평/수직 변환 쌍들의 통상적인 수는 10, 11, 12, 13, 14 등일 수 있다.
다른 예들에서, 제한된 수평/수직 변환 쌍들은 비제한적으로 다음과 같은 14 개의 쌍들로부터 선택될 수 있다: {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-7, DST-4}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DST-7, DCT-5}, {DCT-5, DST-7}, {DST-7, DCT-8}, {DST-4, DCT-5}, {DST-1, DST-7}, {DST-1, DST-4}, {DST-1, DCT-5}, {DCT-5, DCT-5}.
다른 예들에서, 각도 인트라 예측 모드들에 대해 적용되는 제한된 수평/수직 변환 쌍들은 비제한적으로 다음과 같은 10 개의 쌍들로부터 선택될 수 있다: {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-4, DCT-5}, {DST-7, DCT-5}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DCT-5, DST-7}, {DST-1, DST-7}, {DST-1, DST-4}.
추가적인 예들에서, 모든 이용가능한 수평/수직 변환 쌍들로부터의 하나의 수평/수직 변환 쌍의 선택은, EMT 플래그, EMT 인덱스, 비-분해가능 세컨더리 변환 (NSST) 인덱스, 인트라 예측 모드들, RQT 심도, 블록 폭/높이, 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 비제한적으로 포함하는 디코딩된 정보의 전부 또는 부분에 의존할 수 있다. EMT 인덱스는, 예를 들어, ID 변환이 사용되는지 여부를 결정하기 위해 사용될 수도 있다.
일부 예들에서, N (여기서, N 은 EMT 에서의 이용가능한 변환 후보들의 수) 개의 상이한 수평/수직 변환 쌍들의 모든 가능한 조합들을 허용하는 대신에, 변환 쌍들의 몇몇 셋트들이 사전-정의되고, 각 셋트는 수평/수직 변환의 N 개의 쌍들의 하나의 특정 조합을 명시하고, 이용가능한 변환 쌍 셋트들의 수는 N 개의 상이한 수평/수직 변환 쌍들의 가능한 조합들의 총 수보다 훨씬 더 작다.
사전-정의된 변환 쌍 셋트들의 통상적인 예시적인 수는 비제한적으로 10, 11, 12, 13, 및 14 일 수 있다.
N (일 예로서 4 와 동일한 N 을 취함) 개의 수평/수직 변환 쌍들에 대한 10 개의 변환 쌍 셋트들의 일 예가 아래에 나타내어지고, 여기서, 각 라인은 4 개의 변환 쌍들을 포함하는 변환 쌍 셋트를 나타내고, 각각의 변환 쌍은 수평 및 수직 변환 조합을 나타낸다:
{ {DST4, DST4}, {DST7, DST7}, {DST4, DCT8}, {DCT8, DST4} },
{ {DST4, DST7}, {DST4, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST4}, {DST7, DCT5}, {DCT5, DST4}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT5, DCT5} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} }
10 개의 변환 쌍 셋트들의 이 셋트는, 예컨대, 평면, DC, 수평, 및 수직, 및 각도 예측 모드들에 대해 사용될 수도 있다. 각도 인트라 예측 모드들에 대해 적용되는 변환 쌍 셋트들은 비제한적으로 다음의 것들로부터 선택될 수 있다:
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} }
일부 예들에서, 변환 쌍 셋트의 선택은, EMT 플래그, EMT 인덱스, NSST 인덱스, 인트라 예측 모드들, RQT 심도, 블록 폭/높이, 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 비제한적으로 포함하는 디코딩된 정보의 전부 또는 부분에 의존할 수도 있다.
일부 예들에서, 소정의 변환 유형, 예를 들어, DST-4 를 적용할 때, 그것은 오직 소정의 블록 사이즈들에 대해 적용되는 것으로 제한된다.
몇몇 추가적인 예들에서, 수직 변환에 대해, DST-4 는 소정 사이즈, 예를 들어 4 또는 8 보다 더 작거나 동일한 높이를 갖는 블록들에 대해서만 적용될 수 있다. 수평 변환들에 대해, DST-4 는 소정 사이즈, 예를 들어 4 또는 8 보다 더 작거나 동일한 폭을 갖는 블록들에 대해 적용되는 것으로 제한될 수 있다. 이것은, 통상적으로 고도로 텍스처링된 블록들을 포함하는 보다 작은 블록 사이즈들에 대해 변환 DST-4 의 사용을 제한할 것이다. 이것은, 실제로, DST-4 변환의 적용은 보다 작은 텍스처 블록들에 대해 보다 효율적이기 때문이다.
일부 예들에서, ID 변환을 적용할 때, 그 ID 변환은, 인트라 예측 방향이 수평 (수직) 예측 방향에 대해 주어진 범위의 각도 내이거나, 인트라 모드 인덱스가 수평 (수직) 예측 방향의 모드 인덱스에 대해 주어진 임계치 내일 때, 수직 (수평) 변환으로서만 적용될 수도 있다. 따라서, 수평 또는 수직에 비교적 가까운 각도들에 대해, ID 변환이 사용될 수도 있다. 임계치는 수평 (18) 및/또는 수직 (50) 에 대한 예측 모드 및 예측 모드 사이의 차이의 절대 값을 지칭한다. 임계치는 따라서, 인트라 예측 각도 및 수평 또는 수직 사이의 거리에 기초할 것이다. 일부 예들에서, 주어진 임계치 값은 사전-정의될 수 있고, 임계치 값의 일 예는, 비제한적으로, 8, 6, 4, 2 및 0 일 수 있다. 임계치가 0 인 경우에, 오직 수평 및 수직 예측 모드들만이 ID 변환을 이용할 수도 있다.
일부 예들에서, 주어진 임계치 값은, EMT 플래그, EMT 인덱스, NSST 인덱스, RQT 심도, 블록 폭/높이 (예컨대, 블록 사이즈), 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 비제한적으로 포함하는 디코딩된 정보에 의존할 수도 있다.
일부 예들에서, 변환 선택이 인트라 예측 모드에 의존할 때, 수평 및 수직 변환 쌍 선택의 규칙은 인트라 예측 모드들의 부분에 대해서만 정의될 수도 있고, 나머지 인트라 예측 모드들에 대해, 변환 쌍 선택은 상이한 인트라 예측 모드들 사이의 대칭성에 따라 인트라 예측 모드들의 이미 정의된 부분을 이용하여 도출될 수도 있다. 따라서, 변환 쌍들의 다른 것들은 변환 쌍에서의 수직 및 수평 변환들을 스와핑 (swapping) 함으로써 도출될 수도 있으므로, 변환 쌍들의 오직 절반만이 저장될 필요가 있다.
일부 예들에서, 67 개의 각도 인트라 예측 모드들이 사용되고, 모드 0 은 평면 모드들이고, 모드 1 은 DC 모드이며, 모드 2~66 은 상이한 각도 예측 모드들이고, 18 은 수평 예측 모드이고, 50 은 수직 예측 모드이며, 34 는 대각선 예측 모드인 경우에, 수평 및 수직 변환 쌍 선택은 오직 인트라 예측 모드 0~34 에 대해서만 정의된다. 인트라 모드 i (i 는 34 보다 더 큼) 를 이용하여 블록 사이즈 MxN 에 대해 수평 변환 및 수직 변환을 선택할 때, 인트라 예측 모드 68-i 를 이용한 블록 사이즈 MxN 에 대한 수평 변환 및 수직 변환 쌍은 먼저 {TH, TV} 로서 도출되고, 그 다음에, {TV, TH} 는 인트라 모드 i 에 의해 예측되는 현재 MxN 블록에 대한 수평 및 수직 변환 쌍으로서 사용된다.
일부 예들에서, 변환 선택이, NSST 인덱스, 인트라 예측 모드들, RQT 심도, 블록 폭/높이, 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 비제한적으로 포함하는 디코딩된 정보에 의존할 때, 변환 선택은 동일한 규칙을 공유할 수도 있고, 디코딩된 정보의 상이한 값들을 갖는 경우들에 대해 병합될 수도 있다. 따라서, 동일한 변환 쌍 셋트들이 큰 블록 사이즈들 (예컨대, 4x4, 4x8...4x128) 에 대해 역시 사용될 수도 있다.
예를 들어, 변환 선택이 블록 사이즈들/형상에 의존할 때, 동일한 변환 선택 규칙이 32x32, 32x64, 64x32, 및 64x64 와 같은 더 큰 블록 사이즈들에 대해 적용될 수도 있다. 따라서, 룩업 테이블의 사이즈를 추가로 감소시키기 위해 더 큰 사이즈의 블록들에 대해 동일한 변환 쌍 셋트가 사용될 수도 있다.
일부 예들에서, 변환 선택이 인트라 예측 모드에 의존할 때, 서로 가까운 예측 각도로 대각선 인트라 예측을 수행하는 인트라 예측 모드 33, 34 및 35 와 같은 다수의 인트라 예측 모드에 대해 동일한 변환 선택 규칙이 적용될 수도 있다. 따라서, 일부 각도 예측 모드들에 대해, LUT 사이즈를 감소시키기 위해 변환 쌍들의 단일 셋트가 사용될 수도 있다.
일 예에서, 수직 및 수평 변환 쌍 {TV,TH} 이 도출될 수도 있다. 10 개의 변환 쌍 셋트들이 사전-정의될 수도 있다:
transformSet[10][4][2] =
{
{ {DST4, DST4}, {DST7, DST7}, {DST4, DCT8}, {DCT8, DST4} },
{ {DST4, DST7}, {DST4, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST4}, {DST7, DCT5}, {DCT5, DST4}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT5, DCT5} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
};
블록 높이 (제 1 어레이 값), 폭 (제 2 어레이 값) - 처음 2 개의 값들은 4x4 에서부터 64x64 까지의 블록 사이즈들을 나타냄 -, 및 인트라 모드 (제 3 어레이 값) 로부터 변환 쌍 셋트 인덱스 (0~9) 로의 룩-업 테이블 맵핑이 도 6 에서 도시된 바와 같이 사전-정의될 수도 있다. 35 유형들의 블록들이 도 6 의 어레이에서 정의된다. 이것은, 다른 인트라 예측 모드들을 나타내기 위해 대칭성이 이용되기 때문이다.
블록 높이 H, 폭 W, 인트라 예측 모드 intraMode, EMT 변환 후보 인덱스 trIdx 가 주어지면, 수직 및 수평 변환 쌍 {TV, TH} 은 아래와 같이 도출되고, 여기서, DIA_IDX 는 (예컨대, 하드코딩된 상수일 수도 있는 값 34 를 갖는) 대각선 인트라 예측 인덱스이고, min() 은 최소 값 함수를 리턴하는 함수이다:
if ( intraMode>DIA_IDX )
{
Int transformSetIdx = transformSetIdxLut[log2(W)-2][min(log2(H)-2,2)][68-intraMode];
TV = transformSet[transformSetIdx][trIdx][1];
TH = transformSet[transformSetIdx][trIdx][0];
}
else
{
Int transformSetIdx = transformSetIdxLut[log2(H)-2][min(log2(W)-2,2)][intraMode];
TV = transformSet[transformSetIdx][trIdx][0];
TH = transformSet[transformSetIdx][trIdx][1];
}
그 다음에, TV 및 TH 는 수직 및 수평 변환 유형들로서 적용될 수도 있다.
따라서, 변환 셋트는 transformSet[10][4][2] 에서 정의된 10 개의 셋트들로부터 선택될 수도 있다. 10 개의 셋트들 중에서 어느 것이 선택되는지는 transformSet[10][4][2] 에서의 제 1 어레이 엔트리에 대응하는 transformSetIdxLut[5][3][35] 에서의 값 (즉, 0 에서부터 9 까지의 값) 에 기초한다. 상기 "if" 경우에서, 값은 직접 찾아진다 (예컨대, 인트라 예측 모드가 DIA_IDX 의 값 34 보다 더 적은 경우). 그 외의 경우에 ("else" 경우), 대칭성으로 인해, Tv 및 TH 는 스와핑된다. transformSetIdxLut[5][3][35] 에서의 값들은 블록 사이즈들을 어레이 엔트리들로 변환하기 위해 높이 및 폭 마이너스 2 의 log2 에 기초하여 결정된다.
예를 들어, 사이즈 64x64 의 블록에서, 1 의 변환 후보 인덱스를 갖는 인트라 예측 모드 35 를 이용하여, 인코더 (20) 또는 디코더 (30) 는 인트라모드가 DIA_IDX 보다 더 큰지 여부를 결정할 수도 있다. 그러하기 때문에, 인코더 (20) 또는 디코더 (30) 는 (도 6 에서 도시된) transformSetIdxLut 에서 룩업 (lookup) 을 수행함으로써 transformSetIdx 에 대한 값을 결정할 수도 있다. 룩업은 9 인 transformSetIdxLut[4][2][33] 로 평가되는 transformSetIdxLut[log2(W)-2][min(log2(H)-2,2)][68-intraMode] 에서이다. 인코더 (20) 또는 디코더 (30) 는 transformSet 에서의 값들을 룩업함으로써 TV 및 TH 의 값들을 결정할 수도 있다. TV = transformSet[transformSetIdx][trIdx][1] 이고, 이는 DST7 인 transformSet[9][1][1] 로 평가된다. TH = transformSet[transformSetIdx][trIdx][0] 이고, 이는 DST5 인 transformSet[9][1][0] 로 평가된다. 인코더 (20) 또는 디코더 (30) 는 변환 쌍이 {DST-7, DCT-5} 인 것을 결정할 수도 있다.
아이덴터티 (identity; ID) 변환을 적용하는 예에서, 수직 및 수평 변환 유형들이 도출된 후에, 수직 및 수평 변환 유형은 ID 변환으로서 추가로 수정될 수 있다. 따라서, 특정 예들에서, ID 변환은 소정 상황들에서 변환 쌍 내의 이전에 선택된 수직 및/또는 수평 변환에 대해 대체될 수도 있다.
블록 높이 H, 폭 W, 인트라 예측 모드 intraMode, EMT 변환 후보 인덱스 trIdx 가 주어지면, 수평 및 수직 변환 유형 TV 및 TH 은 아래와 같이 추가로 수정되고, (18 로서 하드 코딩될 수도 있는) HOR_IDX 및 (48 로서 하드 코딩될 수도 있는) VER_IDX 는 각각 수평 및 수직 인트라 예측 인덱스이고, ID 는 ID 변환 유형을 나타낸다. 변환 후보 인덱스 trIdx 는 0-3 으로부터의 값을 취할 수도 있고, RD 비용에 기초하여 결정된다. 함수 abs() 는 절대 값을 리턴한다.
임계치 룩-업 테이블은 다음과 같이 정의될 수도 있다:
thrLut[3][3] = {{8,6,4},{8,8,6},{4,2,-1}};
그 다음에, 수평 및 수직 변환 유형 TV 및 TH 는 다음과 같이 추가로 수정될 수도 있다:
if( trIdx==3 && W<=16 && H<=16 )
{
if( abs(intraMode-HOR_IDX)<= thrLut[log2(H)-2][log2(W)-2] )
{
TV = ID;
}
if( abs(intraMode-VER_IDX)<= thrLut[log2(W)-2][log2(H)-2] )
{
TH = ID;
}
}
따라서, EMT 인덱스가 1 인 경우에, ID 변환이 사용될 수도 있다. thrLut 에서, 임계치는 블록 사이즈에 기초하여 정의될 수도 있다 (여기서, 더 큰 블록들은 더 작은 임계치를 가지고, 더 작은 블록들은 더 큰 임계치를 갖는다). "if" 표현은, 블록의 폭 또는 높이가 16 보다 적거나 16 과 동일한 경우에 오직 참으로 평가된다. 따라서, ID 변환은 수직 또는 수평 방향에서 사용될 수도 있고, 여기서, 인트라모드는 수직 및/또는 수평 모드들로부터 임계량 내로 떨어져 있다. 일부 예들에서, 상기 transformSet 에서 정의된 변환 쌍들은 ID 변환을 포함하기 위해 특정 경우들에서 추가로 수정된다.
예를 들어, 4x4 블록에서, 3 의 변환 후보 인덱스 및 10 의 인트라모드의 경우에, 인코더 (20) 또는 디코더 (30) 는 표현 (trIdx = 3 및 W ≤ 16 및 H ≤ 16) 이 참인 것을 결정할 수도 있다. 인코더 (20) 또는 디코더 (30) 는 표현: abs(intraMode-HOR_IDX) <= thrLut[log2(H)-2][log2(W)-2] 을 평가할 수도 있고, 8 ≤ thrLut[0][0] 인지 여부를 평가할 것이다. thrLut[0][0] 가 8 이기 때문에, 표현은 참인 것으로 결정될 수도 있다. 따라서, 인코더 (20) 또는 디코더 (30) 는 ID 변환인 것으로 수직 변환을 결정할 수도 있다 (그리고 ID 변환에 대해 다른 결정된 수직 변환을 스와핑할 수도 있다). 인코더 (20) 또는 디코더 (30) 는 표현: abs(intraMode-VER_IDX) <= thrLut[log2(H)-2][log2(W)-2] 을 평가할 수도 있고, 38 ≤ thrLut[0][0] 인지 여부를 평가할 것이다. thrLut[0][0] 가 8 이기 때문에, 표현은 거짓인 것으로 결정될 수도 있다. 따라서, 수평 변환은 ID 변환으로 설정되지 않는다.
도 7은 본 개시의 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 도시하는 블록도이다. 도 7은 설명의 목적으로 제공되고 본 개시물에서 폭넓게 예시되고 설명된 바와 같은 기법들의 제한으로서 고려되지 않아야 한다. 설명의 목적으로, 본 개시물은 HEVC 코딩의 맥락에서 비디오 인코더 (20) 를 설명한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용 가능할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 변환 블록에 대해 HEVC에서 제공된 제한된 옵션들보다 더 많은 변환들을 적용하도록 구성될 수도 있다.
도 7의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 부 (100), 비디오 데이터 메모리 (101), 잔차 생성 부 (102), 변환 프로세싱 부 (104), 양자화 부 (106), 역 양자화 부 (108), 역 변환 프로세싱 부 (110), 재구성 부 (112), 필터 부 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 부 (118) 를 포함한다. 예측 프로세싱 부 (100) 는 인터 예측 프로세싱 부 (120) 와 인트라 예측 프로세싱 부 (126) 를 구비한다. 인터 예측 프로세싱 부 (120) 는 모션 추정 부와 모션 보상 부 (미도시) 를 구비한다. 다른 예들에서, 비디오 인코더 (20) 는 더 많거나, 더 적거나, 또는 상이한 기능성 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수도 있다.   비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다.  디코딩된 픽처 버퍼 (116) 가, 예컨대, 인트라 코딩 또는 인터 코딩 모드들에서 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩함에 있어서의 사용을 위한 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다.  비디오 데이터 메모리 (101) 와 디코딩된 픽처 버퍼 (116) 는 동기식 DRAM (SDRAM) 을 포함한 다이나믹 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다.  비디오 데이터 메모리 (101) 와 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다.  다양한 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩, 또는 그들 컴포넌트들에 대하여 오프-칩일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터의 픽처의 슬라이스에서의 각각의 CTU를 인코딩할 수도 있다. CTU들의 각각은 픽처의 동일 사이즈로 된 루마 코딩 트리 블록들 (CTB들) 및 대응하는 CTB들에 연관될 수도 있다. CTU를 인코딩하는 것의 부분으로서, 예측 프로세싱 부 (100) 는 쿼드트리 파티셔닝을 수행하여 CTU의 CTB들을 점차적으로 더 작은 블록들로 나눌 수도 있다. 더 작은 블록은 CU들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 부 (100) 는 CTU에 연관된 CTB를 네 개의 동일 사이즈로 된 서브-블록들로 파티셔닝하며, 그 서브-블록들 중 하나 이상을 네 개의 동일 사이즈로 된 서브-블록들로 파티셔닝하는 등등을 수행할 수도 있다.
비디오 인코더 (20) 는 CTU의 CU들을 인코딩하여 CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 생성할 수도 있다. CU를 인코딩하는 것의 부분으로서, 예측 프로세싱 부 (100) 는 CU의 하나 이상의 PU들 중에서 CU에 연관된 코딩 블록들을 파티셔닝할 수도 있다. 따라서, 각각의 PU는 루마 예측 블록 및 대응하는 크로마 예측 블록들에 연관될 수도 있다. 비디오 인코더 (20) 와 비디오 디코더 (30) 는 다양한 사이즈들을 갖는 PU들을 지원할 수도 있다. 위에서 나타낸 바와 같이, CU의 사이즈는 CU의 루마 코딩 블록의 사이즈를 지칭할 수도 있고 PU의 사이즈는 PU의 루마 예측 블록의 사이즈를 지칭할 수도 있다. 특정 CU의 사이즈가 2Nx2N이라고 가정하면, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 인트라 예측을 위한 2Nx2N 또는 NxN의 PU 사이즈들과, 인터 예측을 위한 2Nx2N, 2NxN, Nx2N, NxN, 또는 유사한 것의 대칭적 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 와 비디오 디코더 (30) 는 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N의 PU 사이즈들에 대한 비대칭 파티셔닝을 또한 지원할 수도 있다.
인터 예측 프로세싱 부 (120) 는 CU의 각각의 PU에 대해 인터 예측을 수행함으로써 PU에 대한 예측 데이터를 생성할 수도 있다. PU에 대한 예측 데이터는 PU의 예측 블록들 및 그 PU에 대한 모션 정보를 포함할 수도 있다. 인터 예측 부 (121) 는 PU가 I 슬라이스, P 슬라이스, 또는 B 슬라이스 중 어느 것에 있는지에 의존하여 CU의 PU에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU들이 인트라 예측된다. 그런고로, PU가 I 슬라이스에 있으면, 인터 예측 부 (121) 는 PU에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드에서 인코딩된 블록들에 대해, 예측된 블록은 동일한 프레임 내의 이전에 인코딩된 이웃 블록들로부터 공간적 예측을 사용하여 형성된다.
PU가 P 슬라이스에 있다면, 인터 예측 프로세싱 부 (120) 의 모션 추정 부는 PU에 대한 참조 구역을 참조 픽처들의 리스트 (예컨대, "RefPicList0") 에서의 참조 픽처들에서 검색할 수도 있다. PU에 대한 참조 구역은, 참조 픽처 내의, PU의 샘플 블록들에 가장 밀접하게 대응하는 샘플 블록들을 포함하는 구역일 수도 있다. 모션 추정 부는 PU에 대한 참조 구역을 포함하는 참조 픽처의 RefPicList0에서의 포지션을 나타내는 참조 인덱스를 생성할 수도 있다. 덧붙여서, 모션 추정 부는 PU의 코딩 블록 및 참조 구역에 연관된 참조 로케이션 사이의 공간적 변위를 나타내는 MV를 생성할 수도 있다. 예를 들면, MV는 현재 디코딩된 픽처에서의 좌표들로부터 참조 픽처에서의 좌표들로의 오프셋을 제공하는 2차원 벡터일 수도 있다. 모션 추정 부는 참조 인덱스 및 MV를 PU의 모션 정보로서 출력할 수도 있다. 인터 예측 프로세싱 부 (120) 의 모션 보상 부는 PU의 모션 벡터에 의해 가리켜진 참조 로케이션에 있는 실제 또는 보간된 샘플들에 기초하여 PU의 예측 블록들을 생성할 수도 있다.
PU가 B 슬라이스에 있다면, 인터 예측 프로세싱 부 (120) 의 모션 추정 부는 PU에 대해 단-예측 또는 양-예측을 수행할 수도 있다. PU에 대한 단-예측을 수행하기 위해, 모션 추정 부는 PU에 대한 참조 구역을 RefPicList0 또는 제 2 참조 픽처 리스트 ("RefPicList1") 의 참조 픽처들에서 검색할 수도 있다. 모션 추정 부는, PU의 모션 정보로서, 참조 구역을 포함하는 참조 픽처의 RefPicList0 또는 RefPicList1에서의 포지션을 나타내는 참조 인덱스, PU의 예측 블록 및 참조 구역에 연관된 참조 로케이션 사이의 공간적 변위를 나타내는 MV, 및 참조 픽처가 RefPicList0에 있는지 또는 RefPicList1에 있는지를 나타내는 하나 이상의 예측 방향 표시자들을 출력할 수도 있다. 인터 예측 프로세싱 부 (120) 의 모션 보상 부는 PU의 모션 벡터에 의해 가리켜진 참조 구역에 있는 실제 또는 보간된 샘플들에 적어도 부분적으로 기초하여 PU의 예측 블록들을 생성할 수도 있다.
PU에 대한 양방향 인터 예측을 수행하기 위해, 모션 추정 부는 그 PU에 대한 참조 구역을 RefPicList0에서의 참조 픽처들에서 검색할 수도 있고, 또한 그 PU에 대한 다른 참조 구역을 RefPicList1에서의 참조 픽처들에서 검색할 수도 있다. 모션 추정 부는 참조 구역들을 포함하는 참조 픽처들의 RefPicList0 및 RefPicList1에서의 포지션들을 나타내는 참조 픽처 인덱스들을 생성할 수도 있다. 덧붙여서, 모션 추정 부는 참조 구역들에 연관된 참조 로케이션 및 PU의 샘플 블록 사이의 공간적 변위들을 나타내는 MV들을 생성할 수도 있다. PU의 모션 정보는 PU의 MV들 및 참조 인덱스들을 포함할 수도 있다. 인터 예측 프로세싱 부 (120) 의 모션 보상 부는 PU의 모션 벡터들에 의해 가리켜진 참조 구역들에 있는 실제 또는 보간된 샘플들에 적어도 부분적으로 기초하여 PU의 예측 블록들을 생성할 수도 있다.
인트라 예측 프로세싱 부 (126) 는 PU에 대해 인트라 예측을 수행함으로써 그 PU에 대한 예측 데이터를 생성할 수도 있다. PU에 대한 예측 데이터는 PU에 대한 예측 블록들과 다양한 신택스 엘리먼트들을 포함할 수도 있다. 인트라 예측 프로세싱 부 (126) 는 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에서의 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU에 대해 인트라 예측을 수행하기 위해, 인트라 예측 프로세싱 부 (126) 는 PU에 대한 예측 데이터의 다수의 셋트들을 생성하기 위해 다수의 인트라 예측 모드들을 사용할 수도 있다. 인트라 예측 프로세싱 부 (126) 는 이웃하는 PU들의 샘플 블록들로부터의 샘플들을 사용하여 PU에 대한 예측 블록을 생성할 수도 있다. PU들, CU들, 및 CTU들에 대한 좌측에서 우측으로, 상단에서 하단으로의 인코딩 순서를 가정하면, 이웃하는 PU들은 PU의 상측, 우상측, 좌상측, 또는 좌측에 있을 수도 있다. 인트라 예측 프로세싱 부 (126) 는 다양한 수들의 인트라 예측 모드들, 예컨대, 35 개의 방향성 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU에 연관된 구역의 사이즈에 의존할 수도 있다.
예측 프로세싱 부 (100) 는 CU의 PU들에 대한 예측 데이터를, 그 PU들에 대해 인터 예측 프로세싱 부 (120) 에 의해 생성된 예측 데이터 또는 그 PU들에 대해 인트라 예측 프로세싱 부 (126) 에 의해 생성된 예측 데이터 중에서 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 부 (100) 는 예측 데이터의 셋트들의 레이트/왜곡 메트릭들에 기초하여 CU의 PU들에 대한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 블록들은 본 명세서에서는 선택된 예측 블록들이라고 지칭될 수도 있다.
본 개시물에서 설명되는 예들에서, 기법들은 비디오 블록이 인트라-예측된 또는 인트라-예측된 경우에 적용 가능하다. 예를 들어, 블록이 인트라-예측된 경우, 인트라 예측 모드는 변환 서브셋트들을 결정하는데 사용될 수도 있다. 블록이 인터-예측된 경우, 그 블록의 포지션은 변환 서브셋트들을 결정하는데 사용될 수도 있다. 따라서, 예시적인 기법들은 인트라 예측 모드들 중 임의의 인트라 예측 모드로 인트라-예측된 또는 단-방향 또는 양-방향으로 인터-예측된 비디오 블록에 적용된다.
더욱이, 예시적인 기법들은 인트라 예측 또는 인터-예측으로 제한되지 않고, 인트라-블록 복사 (intra-block copy; IBC) 모드에도 또한 확장될 수도 있다. IBC 모드에서, 예측 블록이 인코딩되고 있는 비디오 블록과는 동일한 픽처에 있고, 블록 벡터에 의해 식별된다. IBC 모드에서, 변환 서브셋트들은, 몇 가지 예들로서, 비디오 블록의 포지션, 예측 블록의 포지션, 또는 블록 벡터로부터 선택될 수도 있다.
잔차 생성 부 (102) 는, CU의 루마, Cb 및 Cr 코딩 블록과 CU의 PU들의 선택된 예측 루마, Cb 및 Cr 블록들에 기초하여, CU의 루마, Cb 및 Cr 잔차 블록들을 생성할 수도 있다. 예를 들면, 잔차 생성 부 (102) 는 CU의 잔차 블록들에서의 각각의 샘플이 그 CU의 코딩 블록에서의 샘플 및 그 CU의 PU의 대응하는 선택된 예측 블록에서의 대응하는 샘플 사이의 차이와 동일한 값을 가지도록 CU의 잔차 블록들을 생성할 수도 있다.
변환 프로세싱 부 (104) 는 쿼드트리 파티셔닝을 수행하여 CU에 연관된 잔차 블록들을 그 CU의 TU들에 연관된 변환 블록들로 파티셔닝할 수도 있다. 따라서, TU가 루마 변환 블록 및 두 개의 크로마 변환 블록들에 연관될 수도 있다. CU의 TU들의 루마 및 크로마 변환 블록들의 사이즈들 및 포지션들은 그 CU의 PU들의 예측 블록들의 사이즈들 및 포지션들에 기초할 수도 있거나 또는 기초하지 않을 수도 있다. "잔차 쿼드-트리" (RQT) 로서 알려진 쿼드트리 구조가 구역들의 각각에 연관된 노드들을 포함할 수도 있다. CU의 TU들은 RQT의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 부 (104) 는 CU의 각각의 TU에 대한 변환 계수 블록들을, 하나 이상의 변환들을 그 TU의 변환 블록들에 적용함으로써 생성할 수도 있다. 변환 프로세싱 부 (104) 는 다양한 변환들을 TU에 연관된 변환 블록에 적용할 수도 있다. 예를 들어, 변환 프로세싱 부 (104) 는 이산 코사인 변환 (DCT), 방향성 변환 (directional transform), 또는 개념적으로 유사한 변환을 변환 블록에 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 부 (104) 는 변환들을 변환 블록에 적용하지 않는다. 그런 예들에서, 변환 블록은 변환 계수 블록으로서 다루어질 수도 있다.
본 개시물에서 설명되는 기법들에서, 변환 프로세싱 부 (104) 는 수직 (좌측) 변환 및 수평 (우측) 변환을 TU의 변환 블록에 적용할 수도 있다. 일부 예들에서, 예측 프로세싱 부 (100) 는 본 개시물에서 설명되는 기법들을 사용하여 어떤 변환들을 적용할 것인지를 결정할 수도 있다.
예를 들어, 예측 프로세싱 부 (100) 는, 각각의 변환 서브셋트가 하나 이상의 후보 변환들을 식별하며 적어도 하나의 변환 서브셋트는 복수의 후보 변환들을 식별하는, 복수의 변환 서브셋트들을 결정할 수도 있다. 후보 변환들은 상이한 변환 유형들로 되며, 일부 예들에서, 예측 프로세싱 부 (100) 는 인코딩되고 있는 비디오 블록의 사이즈에 기초하여 복수의 변환 서브셋트들을 결정한다. 후보 변환들은 {DST-7, DST-4, DCT-8, DCT-5, DST-1} 또는 {DST-7, DST-4, DCT-8, DCT-5, DST-1, ID} 를 포함하는 변환들의 셋트로 제약될 수도 있다. 따라서, 비교적 작은 수의 변환 쌍들이 고려될 필요가 있다. 예를 들어, 각도 인트라 예측 모드들에 대해 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-4, DCT-5}, {DST-7, DCT-5}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DCT-5, DST-7}, {DST-1, DST-7}, {DST-1, DST-4} 로부터 선택될 수 있다. 일부 예들에서, 전술한 쌍들 중 임의의 것은 소정 경우들에서 ID 변환으로 대체될 수도 있다. 변환 쌍에서, 인코더 (20) 및 디코더 (30) 는, 상기 보다 자세히 설명된 바와 같이, 그 쌍 중 어느 것이 수평 변환을 위해 선택되는지 그리고 수직 변환을 위해 어느 것이 선택되는지를 결정할 수도 있다.
예를 들어, N (일 예로서 N 을 4 와 동일한 것으로 취함) 개의 수평/수직 변환 쌍들에 대한 10 개의 변환 쌍 셋트들이 다음과 같이 정의될 수도 있다:
{ {DST4, DST4}, {DST7, DST7}, {DST4, DCT8}, {DCT8, DST4} },
{ {DST4, DST7}, {DST4, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST4}, {DST7, DCT5}, {DCT5, DST4}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT5, DCT5} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
각도 인트라 예측 모드들에 대해 적용되는 변환 쌍 셋트들은
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
로부터 선택될 수 있다. 특정 예들에서, 선택된 변환 쌍의 일방 또는 양방은, 인트라 예측 방향이 수평 (또는 수직) 예측 방향에 대해 주어진 범위의 각도 내이거나 인트라 모드 인덱스가 수평 (또는 수직) 예측 방향의 모드 인덱스에 대해 주어진 임계치 내인 경우에, ID 변환과 스와핑될 수도 있다. 그 임계치는, 비제한적으로, EMT 플래그, EMT 인덱스, NSST 인덱스, RQT 심도, 블록 폭/높이, 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 포함하는, 디코딩된 정보에 의존할 수도 있다.
예측 프로세싱 부 (100) 는 비디오 데이터의 비디오 블록의 현재 변환 블록에 대한 좌측 변환을 위해 복수의 변환 서브셋트들로부터 제 1 변환 서브셋트를 선택하고, 비디오 데이터의 비디오 블록의 변환 블록에 대한 우측 변환을 위해 복수의 변환 서브셋트들로부터 제 2 변환 서브셋트를 선택할 수도 있다. 현재 변환 블록은 변환 프로세싱 부 (104) 가 생성하고 거기에 변환 프로세싱 부 (104) 가 변환들을 적용하는 변환 블록일 수도 있다.
예측 프로세싱 부 (100) 는 변환들의 셋트 내의 변환 쌍들에 기초하여 좌측 변환 및 우측 변환을 결정할 수도 있다. 그 셋트는 예를 들어 4 개의 변환들을 포함할 수도 있다. 예를 들면, 예측 프로세싱 부 (100) 는 선택된 변환 서브셋트들에서의 변환들의 각각을 테스트하고 어떤 변환이 최상의 비디오 코딩을 제공하는지를 결정할 수도 있다. 예측 프로세싱 부 (100) 는 좌측 변환 및 우측 변환으로서 최상의 비디오 코딩을 제공하는 각각의 변환들을 결정할 수도 있다.
변환 프로세싱 부 (104) 는 좌측 변환, 우측 변환, 및 현재 변환 블록에 기초하여 현재 계수 블록을 결정할 수도 있다. 예를 들면, 변환 프로세싱 부 (104) 는 다음의 수학식을 수행할 수도 있으며: Y = C*X*RT, 여기서 C는 좌측 변환이며, R은 우측 변환이며, X는 현재 변환 블록이고, Y는 결과적인 현재 계수 블록이다.
비디오 블록 (예컨대, CU 또는 PU) 이 인트라 예측 인코딩된다면, 예측 프로세싱 부 (100) 는 비디오 블록의 인트라 예측 모드를 결정할 수도 있다. 예측 프로세싱 부 (100) 는 결정된 인트라 예측 모드에 기초하여 제 1 변환 서브셋트를 선택하고, 결정된 인트라 예측 모드에 기초하여 제 2 변환 서브셋트를 선택할 수도 있다.
비디오 블록 (예컨대, CU 또는 PU) 이 인터-예측 인코딩된다면, 예측 프로세싱 부 (100) 는 비디오 블록에서의 현재 변환 블록의 로케이션을 결정할 수도 있다 (예컨대, 변환 블록이 비디오 블록에서의 특정 로케이션으로부터 생성된 잔차에 대한 것인지의 여부를 결정할 수도 있다). 예측 프로세싱 부 (100) 는 현재 변환 블록의 결정된 로케이션에 기초하여 제 1 변환 서브셋트를 선택하고, 현재 변환 블록의 결정된 로케이션에 기초하여 제 2 변환 서브셋트를 선택할 수도 있다.
인트라 예측 또는 인터-예측에 대해, 일부 예들에서, 예측 프로세싱 부 (100) 는, 엔트로피 인코딩 부 (118) 가, 현재 계수 블록을 결정하는데 사용되는 제 1 변환 서브셋트에서의 변환을 식별하기 위한 제 1 변환 서브셋트에의 제 1 변환 서브셋트 인덱스를 시그널링 (예컨대, 비트스트림에서 생성) 하게 할 수도 있고, 현재 계수 블록을 결정하는데 사용되는 제 2 변환 서브셋트에서의 변환을 식별하기 위한 제 2 변환 서브셋트에의 제 2 변환 서브셋트 인덱스를 시그널링 (예컨대, 비트스트림에서 생성) 하게 할 수도 있다. 일부 예들에서, 예측 프로세싱 부 (100) 는 현재 계수 블록에서의 0이 아닌 계수들의 수를 결정할 수도 있다. 이들 예들에서, 예측 프로세싱 부 (100) 는, 엔트로피 인코딩 부 (118) 가, 임계값보다 큰 0이 아닌 계수들의 수에 기초하여 제 1 변환 서브셋트 인덱스를 시그널링하게 하고, 임계값보다 큰 0이 아닌 계수들의 수에 기초하여 제 2 변환 서브셋트 인덱스를 시그널링하게 할 수도 있다. 0이 아닌 계수들의 수가 임계값 미만이면, 예측 프로세싱 부 (100) 는 엔트로피 인코딩 부 (118) 가 제 1 및 제 2 변환 서브셋트들에서의 인덱스들을 시그널링하지 않게 할 수도 있다.
양자화 부 (106) 는 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 변환 계수들의 일부 또는 전부에 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 변환 계수가 양자화 동안에 m-비트 변환 계수로 라운드 다운 (rounded down) 될 수도 있으며, 여기서 nm보다 크다. 양자화 부 (106) 는 CU에 연관된 양자화 파라미터 (quantization parameter; QP) 값에 기초하여 그 CU의 TU에 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU에 연관된 QP 값을 조정함으로써 그 CU에 연관된 계수 블록들에 적용되는 양자화 정도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있고, 따라서 양자화된 변환 계수들은 원래의 것들보다 더 낮은 정밀도를 가질 수도 있다.
역 양자화 부 (108) 와 역 변환 프로세싱 부 (110) 는 계수 블록으로부터 잔차 블록을 재구성하기 위해 역 양자화 및 역 변환들을 계수 블록에 각각 적용할 수도 있다. 재구성 부 (112) 는 TU에 연관된 재구성된 변환 블록을 생성하기 위해 재구성된 잔차 블록을 예측 프로세싱 부 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터의 대응하는 샘플들에 가산할 수도 있다. CU의 각각의 TU에 대한 변환 블록들을 이런 식으로 재구성함으로써, 비디오 인코더 (20) 는 CU의 코딩 블록들을 재구성할 수도 있다.
필터 부 (114) 는 하나 이상의 블록화제거 (deblocking) 동작들을 수행하여 CU에 연관된 코딩 블록들에서의 블록화 아티팩트들을 감소시킬 수도 있다. 디코딩된 픽처 버퍼 (116) 는, 필터 부 (114) 가 재구성된 코딩 블록들에 대해 하나 이상의 블록화제거 동작들을 수행한 후에 재구성된 코딩 블록들을 저장할 수도 있다. 인터 예측 프로세싱 부 (120) 는 다른 픽처들의 PU들에 대해 인터 예측을 수행하기 위해 재구성된 코딩 블록들을 포함하는 참조 픽처를 사용할 수도 있다. 덧붙여서, 인트라 예측 프로세싱 부 (126) 는 CU와 동일한 픽처에서의 다른 PU들에 대해 인트라 예측을 수행하기 위해 디코딩된 픽처 버퍼 (116) 에서의 재구성된 코딩 블록들을 사용할 수도 있다.
엔트로피 인코딩 부 (118) 는 비디오 인코더 (20) 의 다른 기능성 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 부 (118) 는 양자화 부 (106) 로부터 계수 블록들 (예컨대, 비디오 블록을 재구성하는데 사용되는 현재 계수 블록의 계수들을 나타내는 정보) 을 수신할 수도 있고, 예측 프로세싱 부 (100) 로부터 신택스 엘리먼트들 (예컨대, 제 1 및 제 2 변환 서브셋트들에의 인덱스들) 을 수신할 수도 있다. 엔트로피 인코딩 부 (118) 는 그 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행하여 엔트로피 인코딩된 데이터를 생성할 수도 있다. 예를 들어, 엔트로피 인코딩 부 (118) 는 그 데이터에 대해 콘텍스트 적응 가변 길이 코딩 (context-adaptive variable length coding; CAVLC) 동작, CABAC 동작, 가변 대 가변 (variable-to-variable; V2V) 길이 코딩 동작, 신택스 기반 콘텍스트 적응 이진 산술 코딩 (syntax-based context-adaptive binary arithmetic coding; SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (Probability Interval Partitioning Entropy; PIPE) 코딩 동작, 지수-골롬 (Exponential-Golomb) 인코딩 동작, 또는 다른 유형의 엔트로피 인코딩 동작을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 부 (118) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들면, 그 비트스트림은 CU에 대한 RQT를 표현하는 데이터를 포함할 수도 있다.
예의 기법들에서, 예측 프로세싱 부 (100) 는 예측 블록을 결정하고, 엔트로피 인코딩 부 (118) 가 출력하는 비디오 비트스트림에서, 예측 블록에 기초하여 비디오 블록의 예측 모드를 나타내는 정보를 생성한다. 예측 모드는 비디오 블록이 인트라-예측되는지 또는 인터-예측되는지를 나타낸다. 예를 들어, 예측 블록은 인트라-예측된 비디오 블록에 기초한 비디오 블록과는 동일한 픽처에서의 블록 또는 인터-예측된 비디오 블록에 기초한 그 비디오 블록을 포함하는 픽처와는 상이한 픽처에서의 블록이다. 잔차 생성 부 (102) 는 그 비디오 블록과 예측 블록 사이의 잔차로서 현재 변환 블록을 결정할 수도 있다.
도 8은 본 개시물의 기법들을 구현하도록 구성되는 예시적인 비디오 디코더 (30) 를 도시하는 블록도이다. 도 8은 설명의 목적으로 제공되고 본 개시물에서 폭넓게 예시되고 설명된 바와 같은 기법들에 대해 제한하고 있지는 않다. 설명의 목적으로, 본 개시물은 HEVC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에 적용 가능할 수도 있다.
비디오 디코더 (30) 는 본 개시물에서 설명되는 다양한 예들에 따른 기법들을 수행하도록 구성될 수도 있는 디바이스의 일 예를 나타낸다. 도 8의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 부 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 부 (152), 역 양자화 부 (154), 역 변환 프로세싱 부 (156), 재구성 부 (158), 필터 부 (160), 및 디코딩된 픽처 버퍼 (162) 를 구비한다. 예측 프로세싱 부 (152) 는 모션 보상 부 (164) 와 인트라 예측 프로세싱 부 (166) 를 구비한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능성 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는, 비디오 디코더 (30) 의 컴포넌트들에 의해 디코딩될 인코딩된 비디오 비트스트림과 같은 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는, 예를 들어, 컴퓨터 판독가능 매체로부터, 예컨대, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체들에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터의 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (coded picture buffer; CPB) 를 형성할 수도 있다. 디코딩된 픽처 버퍼 (162) 가, 예컨대 인트라 코딩 또는 인터 코딩 모드들에서, 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩함에 있어서의 사용을 위한 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (151) 와 디코딩된 픽처 버퍼 (162) 는 동기식 DRAM (SDRAM) 을 포함한 다이나믹 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 와 디코딩된 픽처 버퍼 (162) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩, 또는 그들 컴포넌트들에 대하여 오프-칩일 수도 있다.
코딩된 픽처 버퍼 (CPB) 가 비트스트림의 인코딩된 비디오 데이터 (예컨대, NAL 유닛들) 를 수신하고 저장할 수도 있다. 엔트로피 디코딩 부 (150) 는 CPB로부터 인코딩된 비디오 데이터 (예컨대, NAL 유닛들) 를 수신하고 신택스 엘리먼트들을 디코딩하기 위해 그 NAL 유닛들을 파싱할 수도 있다. 엔트로피 디코딩 부 (150) 는 NAL 유닛들에서의 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 부 (152), 역 양자화 부 (154), 역 변환 프로세싱 부 (156), 재구성 부 (158), 및 필터 부 (160) 는 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다.
비트스트림의 NAL 유닛들은 코딩된 슬라이스 NAL 유닛들을 포함할 수도 있다. 비트스트림을 디코딩하는 부분으로서, 엔트로피 디코딩 부 (150) 는 코딩된 슬라이스 NAL 유닛들로부터 신택스 엘리먼트들을 추출하고 엔트로피 디코딩할 수도 있다. 코딩된 슬라이스들의 각각은 슬라이스 헤더 및 슬라이스 데이터를 포함할 수도 있다. 슬라이스 헤더는 슬라이스에 관계된 신택스 엘리먼트들을 포함할 수도 있다. 슬라이스 헤더에서의 신택스 엘리먼트들은 슬라이스를 포함하는 픽처에 연관된 PPS를 식별하는 신택스 엘리먼트를 포함할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 디코딩하는 것 외에도, 비디오 디코더 (30) 는 비-파티셔닝된 CU에 대해 재구성 동작을 수행할 수도 있다. 비-파티셔닝된 CU에 대해 재구성 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU의 각각의 TU에 대해 재구성 동작을 수행할 수도 있다. CU의 각각의 TU에 대한 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU의 잔차 블록들을 재구성할 수도 있다.
CU의 TU에 대해 재구성 동작을 수행하는 부분으로서, 역 양자화 부 (154) 는 TU에 연관된 계수 블록들을 역 양자화, 즉, 탈양자화 (de-quantization) 할 수도 있다. 역 양자화 부 (154) 는 TU의 CU에 연관된 QP 값을 사용하여 양자화 정도와, 비슷하게, 역 양자화 부 (154) 에 대해 적용할 역 양자화 정도를 결정할 수도 있다. 다시 말하면, 압축 비율, 즉, 원래의 시퀀스 및 압축된 시퀀스를 표현하는데 사용된 비트들의 수의 비율은, 변환 계수들을 양자화하는 경우에 사용된 QP의 값을 조정함으로써 제어될 수도 있다. 압축 비율은 채용된 엔트로피 코딩하는 방법에 또한 의존할 수도 있다.
역 양자화 부 (154) 가 계수 블록을 역 양자화한 후, 역 변환 프로세싱 부 (156) 는 TU에 연관된 잔차 블록을 생성하기 위하여 하나 이상의 역 변환들을 계수 블록에 적용할 수도 있다. 예를 들어, 역 변환 프로세싱 부 (156) 는 역 DCT, 역 정수 변환, 역 카루넨-뢰베 변환 (KLT), 역 회전 변환, 역 방향성 변환, 또는 다른 역 변환을 계수 블록에 적용할 수도 있다.
본 개시물에서 설명되는 기법들에서, 예측 프로세싱 부 (152) 는 역 변환 프로세싱 부 (156) 가 적용할 좌측 및 우측 변환들을 결정할 수도 있다. 예를 들어, 예측 프로세싱 부 (152) 는, 각각의 변환 서브셋트가 하나 이상의 후보 변환들을 식별하며 적어도 하나의 변환 서브셋트는 복수의 후보 변환들을 식별하는, 복수의 변환 서브셋트들을 결정할 수도 있다. 후보 변환들은 상이한 변환 유형들의 것이고, 일부 예들에서, 예측 프로세싱 부 (152) 는, 비제한적으로, EMT 플래그, EMT 인덱스, NSST 인덱스, 인트라 예측 모드들, RQT 심도, 블록 폭/높이 (예컨대, 블록 사이즈), 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 포함하는, 디코딩된 정보의 전부 또는 부분에 기초하여 복수의 변환 서브셋트들을 결정한다.
예측 프로세싱 부 (152) 는 비디오 데이터의 현재 계수 블록에 대한 좌측 변환을 위해 복수의 변환 서브셋트들로부터 제 1 변환 서브셋트를을 선택하고, 비디오 데이터의 현재 계수 블록에 대한 우측 변환을 위해 복수의 변환 서브셋트들로부터 제 2 변환 서브셋트를 선택할 수도 있다. 예측 프로세싱 부 (152) 는 선택된 제 1 변환 서브셋트로부터 좌측 변환을 결정하고 선택된 제 2 변환 서브셋트로부터 우측 변환을 결정할 수도 있다. 변환 쌍들의 셋트는 {DST-7, DST-4, DCT-8, DCT-5, DST-1} 또는 {DST-7, DST-4, DCT-8, DCT-5, DST-1, ID} 를 포함하는 변환들의 셋트로 제약될 수도 있다. 따라서, 비교적 작은 수의 변환 쌍들이 고려될 필요가 있다. 예를 들어, 각도 인트라 예측 모드들에 대해 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-4, DCT-5}, {DST-7, DCT-5}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DCT-5, DST-7}, {DST-1, DST-7}, {DST-1, DST-4} 로부터 선택될 수 있다. 일부 예들에서, 전술한 쌍들 중 임의의 것은 소정 경우들에서 ID 변환으로 대체될 수도 있다.
예를 들어, N (일 예로서 N 을 4 와 동일한 것으로 취함) 개의 수평/수직 변환 쌍들에 대한 10 개의 변환 쌍 셋트들이 다음과 같이 정의될 수도 있다:
{ {DST4, DST4}, {DST7, DST7}, {DST4, DCT8}, {DCT8, DST4} },
{ {DST4, DST7}, {DST4, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST4}, {DST7, DCT5}, {DCT5, DST4}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DCT5} },
{ {DST7, DST7}, {DST7, DCT8}, {DCT8, DST7}, {DCT5, DCT5} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
각도 인트라 예측 모드들에 대해 적용되는 변환 쌍 셋트들은
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST4} },
{ {DST4, DST4}, {DST4, DCT5}, {DCT8, DST4}, {DST1, DST7} },
{ {DST4, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT8, DST7}, {DST1, DST7} },
{ {DST7, DST7}, {DST7, DCT5}, {DCT5, DST7}, {DST1, DST7} },
로부터 선택될 수 있다. 특정 예들에서, 선택된 변환 쌍의 일방 또는 양방은, 인트라 예측 방향이 수평 (또는 수직) 예측 방향에 대해 주어진 범위의 각도 내이거나 인트라 모드 인덱스가 수평 (또는 수직) 예측 방향의 모드 인덱스에 대해 주어진 임계치 내인 경우에, ID 변환과 스와핑될 수도 있다. 그 임계치는, 비제한적으로, EMT 플래그, EMT 인덱스, NSST 인덱스, RQT 심도, 블록 폭/높이, 양자화된 계수들, 및 CU 또는 PU 내부의 TU 의 상대적인 로케이션을 포함하는, 디코딩된 정보에 의존할 수도 있다. 예측 프로세싱 부 (152) 는 시그널링된 변환 쌍 셋트들 중 하나로부터 선택할 수도 있다.
역 변환 프로세싱 부 (156) 는 좌측 변환, 우측 변환, 및 현재 계수 블록에 기초하여 현재 변환 블록을 결정할 수도 있다. 예를 들면, 역 변환 프로세싱 부 (156) 는 다음의 수학식의 역을 수행할 수도 있으며: Y = C*X*RT, 여기서 Y는 계수 블록이며, C는 좌측 변환이며, X는 변환 블록이고, R은 우측 변환이다. 다시, 본 개시물에서, 역 변환 프로세싱 부 (156) 는 비디오 인코더 (20) 가 적용하였던 변환의 역을 적용하지만, 편의를 위해 비디오 디코더 (30) 는 변환을 적용하는 것으로서 설명된다는 것이 이해되어야 한다.
예측 프로세싱 부 (152) 는 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성 (예컨대, 인트라 예측 또는 인터-예측 디코딩) 할 수도 있다. 예를 들어, PU가 인트라 예측을 사용하여 인코딩되면, 인트라 예측 프로세싱 부 (166) 는 PU에 대한 예측 블록들을 생성하기 위해 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 부 (166) 는 인트라 예측 모드를 사용하여 공간적으로 이웃하는 PU들의 예측 블록들에 기초하여 PU에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다. 인트라 예측 프로세싱 부 (166) 는 비트스트림으로부터 디코딩된 하나 이상의 신택스 엘리먼트들에 기초하여 PU에 대한 인트라 예측 모드를 결정할 수도 있다.
예측 프로세싱 부 (152) 는 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 제 1 참조 픽처 리스트 (RefPicList0) 및 제 2 참조 픽처 리스트 (RefPicList1) 를 구성할 수도 있다. 더욱이, PU가 인터 예측을 사용하여 인코딩되면, 엔트로피 디코딩 부 (150) 는 그 PU에 대한 모션 정보를 추출할 수도 있다. 모션 보상 부 (164) 는, PU의 모션 정보에 기초하여, PU에 대한 하나 이상의 참조 구역들을 결정할 수도 있다. 모션 보상 부 (164) 는, PU에 대한 하나 이상의 참조 블록들에서의 샘플 블록들에 기초하여, 그 PU에 대한 예측 루마, Cb 및 Cr 블록들을 생성할 수도 있다.
본 개시물에서 설명되는 예들에서, 기법들은 비디오 블록이 인트라-예측된 또는 인트라-예측된 경우에 적용 가능하다. 예를 들어, 블록이 인트라-예측된 경우, 인트라 예측 모드는 변환 서브셋트들을 결정하는데 사용될 수도 있다. 블록이 인터-예측된 경우, 그 블록의 포지션은 변환 서브셋트들을 결정하는데 사용될 수도 있다. 따라서, 예시적인 기법들은 인트라 예측 모드들 중 임의의 인트라 예측 모드로 인트라-예측된 또는 단-방향 또는 양-방향으로 인터-예측된 비디오 블록에 적용된다.
더욱이, 예시적인 기법들은 인트라 예측 또는 인터-예측으로 제한되지 않고, 인트라-블록 복사 (IBC) 모드에도 또한 확장될 수도 있다. IBC 모드에서, 예측 블록을 형성하는데 사용되는 참조 블록이 인코딩되고 있는 비디오 블록과는 동일한 픽처에 있고, 블록 벡터에 의해 식별된다. IBC 모드에서, 변환 서브셋트들은, 몇 가지 예들로서, 비디오 블록의 포지션, 참조 블록의 포지션, 또는 블록 벡터로부터 선택될 수도 있다.
재구성 부 (158) 는, 해당되는 경우, CU의 TU들에 연관된 루마, Cb 및 Cr 변환 블록들과 그 CU의 PU들의 예측 루마, Cb 및 Cr 블록들, 즉 인트라 예측 데이터 또는 인터 예측 데이터 중 어느 하나를 사용하여 그 CU의 루마, Cb 및 Cr 코딩 블록들을 재구성할 수도 있다. 예를 들어, 재구성 부 (158) 는 루마, Cb 및 Cr 변환 블록들의 샘플들을 예측 루마, Cb 및 Cr 블록들의 대응하는 샘플들에 가산하여 CU의 루마, Cb 및 Cr 코딩 블록들을 재구성할 수도 있다.
필터 부 (160) 는 블록화제거 동작을 수행하여 CU의 루마, Cb 및 Cr 코딩 블록들에 연관된 블록화 아티팩트들을 감소시킬 수도 있다. 비디오 디코더 (30) 는 CU의 루마, Cb 및 Cr 코딩 블록들을 디코딩된 픽처 버퍼 (162) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속하는 모션 보상, 인트라 예측, 및 디스플레이 디바이스, 이를테면 도 1의 디스플레이 디바이스 (32) 상의 프레젠테이션을 위해 참조 픽처들을 제공할 수도 있다. 예를 들면, 비디오 디코더 (30) 는, 디코딩된 픽처 버퍼 (162) 에서의 루마, Cb, 및 Cr 블록들에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
일부 예들에서, 비디오 블록이 인트라 예측 디코딩될 것인 경우, 예측 프로세싱 부 (152) 는 그 비디오 블록의 인트라 예측 모드를 결정할 수도 있다. 예측 프로세싱 부 (152) 는 결정된 인트라 예측 모드에 기초하여 제 1 변환 서브셋트를 선택하고, 결정된 인트라 예측 모드에 기초하여 제 2 변환 서브셋트를 선택할 수도 있다.
비디오 블록이 인터-예측 인코딩될 것인 경우, 예측 프로세싱 부 (152) 는 비디오 블록에서의 현재 변환 블록의 로케이션을 결정 (예컨대, 계수 블록이 비디오 블록에서의 특정 로케이션으로부터 생성된 잔차에 대한 것인지의 여부를 결정) 할 수도 있다. 예측 프로세싱 부 (152) 는 현재 변환 블록의 결정된 로케이션에 기초하여 제 1 변환 서브셋트를 선택하고, 현재 변환 블록의 결정된 로케이션에 기초하여 제 2 변환 서브셋트를 선택할 수도 있다.
일부 예들에서, 예측 프로세싱 부 (152) 는 제 1 변환 서브셋트에의 제 1 변환 서브셋트 인덱스를 수신하고, 제 2 변환 서브셋트에의 제 2 변환 서브셋트 인덱스를 수신할 수도 있다. 이들 예들에서, 예측 프로세싱 부 (152) 는 제 1 변환 서브셋트 인덱스에 의해 식별된 제 1 변환 서브셋트에서의 변환에 기초하여 좌측 변환을 결정하고, 제 2 변환 서브셋트 인덱스에 의해 식별된 제 2 변환 서브셋트에서의 변환에 기초하여 우측 변환을 결정할 수도 있다.
그러나, 예측 프로세싱 부 (152) 는 제 1 및 제 2 변환 서브셋트들에서의 인덱스들을 수신하는 것이 필요하지 않을 수도 있다. 예를 들면, 예측 프로세싱 부 (152) 는 현재 계수 블록에서의 0이 아닌 계수들의 수가 임계값 미만이라고 결정할 수도 있다. 그런 경우들에서, 예측 프로세싱 부 (152) 는, 현재 계수 블록에서의 0이 아닌 계수들의 수가 임계값 미만이라고 결정하는 것에 응답하여, 제 1 변환 서브셋트에의 변환 서브셋트 인덱스를 수신하는 일 없이, 제 1 변환 서브셋트에서 식별된 제 1 변환이 좌측 변환이라고 결정할 수도 있고, 현재 계수 블록에서의 0이 아닌 계수들의 수가 임계값 미만이라고 결정하는 것에 응답하여, 제 2 변환 서브셋트에의 변환 서브셋트 인덱스를 수신하는 일 없이, 제 2 변환 서브셋트에서 식별된 제 1 변환이 우측 변환이라고 결정할 수도 있다.
또한, 예측 프로세싱 부 (152) 는 모든 경우들에서 변환 서브셋트들로부터 변환들을 반드시 결정하지 않을 수도 있다. 일부 예들에서, 예측 프로세싱 부 (152) 는 현재 변환 블록을 포함하는 블록의 모든 변환 블록들이 동일한 변환을 사용하여 변환되는 것은 아님을 표시하는 플래그를 수신할 수도 있다. 이러한 예들에서, 예측 프로세싱 부 (152) 는 제 1 및 제 2 변환들을 선택하고, 현재 변환 블록을 포함하는 블록의 모든 변환 블록들이 동일한 변환을 사용하여 변환되는 것은 아님을 표시하는 플래그를 수신하는 것에 응답하여, 각각의 제 1 및 제 2 변환들로부터 좌측 및 우측 변환들을 결정할 수도 있다. 블록의 예들은 코딩 트리 유닛 (CTU), 코딩 유닛 (CU), 또는 예측 유닛 (PU) 을 포함한다.
예의 기법들에서, 비디오 디코더 (30) 는 예측 모드 (예컨대, 비디오 블록이 인트라-예측되는지 또는 인터-예측되는지) 를 표시하는 정보를 비트스트림으로부터 수신하고, 현재 계수 블록의 계수들을 표시하는 정보를 비트스트림으로부터 수신할 수도 있다. 예측 프로세싱 부 (152) 는 예측 모드에 기초하여 예측 블록을 결정할 수도 있고, 역 변환 부 (156) 또는 예측 프로세싱 부 (152) 는 계수들을 표시하는 수신된 정보에 기초하여 계수 블록을 구성할 수도 있다. 예측 모드는 인터 예측 모드 또는 인트라 예측 모드 중 하나이고, 현재 변환 블록은 비디오 블록과 예측 블록의 잔차이다.
위에서 설명된 기법들은 비디오 인코더 (20) (도 7) 및/또는 비디오 디코더 (30) (도 8) 에 의해 수행될 수도 있으며, 그것들의 양쪽 모두는 비디오 코더라고 일반적으로 지칭될 수도 있다. 비슷하게, 비디오 코딩은 해당되는 경우 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 덧붙여서, 비디오 인코딩과 비디오 디코딩은 비디오 데이터의 "프로세싱" 으로서 일반적으로 지칭될 수도 있다.
본 명세서에서 설명되는 기법들의 모두는 개별적으로 또는 조합하여 사용될 수도 있다는 것이 이해되어야 한다. 본 개시물은 블록 사이즈, 슬라이스 유형 등과 같은 특정한 요인들에 의존하여 변할 수도 있는 여러 시그널링 방법들을 포함한다. 신택스 엘리먼트들을 시그널링 또는 유추함에 있어서의 이러한 변동은 인코더 및 디코더에 선험적으로 알려질 수도 있거나 또는 비디오 파라미터 셋트 (video parameter set; VPS), 시퀀스 파라미터 셋트 (SPS), 픽처 파라미터 셋트 (PPS), 슬라이스 헤더에서, 타일 레벨 또는 다른 곳에서 명시적으로 시그널링될 수도 있다.
도 9 는 비디오 데이터를 코딩하는 예시적인 방법을 도시하는 흐름도이다. 비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는, 복수의 예측 모드들 중 하나에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 변환들의 선택된 셋트에 대해 모든 이용가능한 수평 및 수직 변환 쌍 조합들의 서브셋트로부터 수평 및 수직 변환 쌍 조합을 결정할 수도 있다 (900). 그 선택은 복수의 예측 모드들 중 하나에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대한 것일 수도 있다. 수평 및 수직 변환 쌍 조합의 셋트는 하나 이상의 수평 및 수직 변환 쌍 조합들을 포함한다. 일부 예들에서, 수평 및 수직 변환 쌍 조합들의 셋트는 4 개의 수평 및 수직 변환 쌍들을 포함한다. 하지만, 다른 예들에서, 더 크거나 더 적은 수의 변환 쌍들이 셋트 내에 존재한다. 일부 예들에서, 비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 수평 및 수직 변환 쌍 조합의 변환을 아이덴터티 (ID) 변환으로 대체할 수도 있다.
비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 수평 및 수직 변환 쌍 조합들의 선택된 셋트로부터 수평 및 수직 변환 쌍 조합을 선택할 수도 있다 (902). 그 셋트 내에 4 개의 변환 쌍들이 존재하는 예에서, 비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 단일의 변환 쌍을 선택한다.
비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 선택된 수평 및 수직 변환 쌍 조합으로부터 수평 변환 및 수직 변환을 선택할 수도 있다 (904). 일부 예들에서, 비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 그 변환 쌍 중 어느 것이 수평 변환인지 그리고 어느 것이 수직 변환인지를 선택한다.
비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 현재 변환 블록을 결정하기 위해 현재 계수 블록에 선택된 수평 변환 및 선택된 수직 변환을 이용하여 변환을 적용할 수도 있다 (906). 비디오 디코더 (30) 는 역 변환을 적용할 수도 있다. 비디오 인코더 (20) 는 순방향 변환을 적용할 수도 있다. 역 변환에서 적용된 변환 행렬은 순방향 변환에서 적용되는 전치 변환 행렬일 수도 있다. 비디오 디코더 (30) 및/또는 비디오 인코더 (20) 는 현재 변환 블록 및 예측 블록에 기초하여 비디오 블록을 재구성할 수도 있다 (908).
예에 의존하여, 상이한 시퀀스로 수행될 수도 있는 본 명세서에서 설명된 기법들 중 임의의 기법의 특정 액트들 (acts) 또는 이벤트들이 추가되거나, 병합되거나, 또는 다 함께 제외될 수도 있다 (예컨대, 모든 설명된 액트들 또는 이벤트들이 그 기법들의 실용화에 필요한 것은 아니다) 는 것이 이해되어야 한다. 더구나, 특정 예들에서, 액트들 또는 이벤트들은 순차적으로라기 보다는, 예컨대, 다중 스레드식 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통하여 동시에 수행될 수도 있다. 덧붙여서, 본 개시물의 특정한 양태들이 명료함을 위해 단일 모듈 또는 유닛에 의해 수행되고 있는 것으로 설명되지만, 본 개시물의 기법들은 비디오 코더에 연관된 유닛들 또는 모듈들의 조합에 의해 수행될 수도 있다는 것이 이해되어야 한다.
그 기법들의 다양한 양태들의 특정 조합들이 위에서 설명되었지만, 이들 조합들은 본 개시물에서 설명된 기법들의 예들을 도시하기 위해서만 제공된다. 따라서, 본 개시물의 기법들은 이들 예의 조합들로 제한되지 않아야 하고 본 개시물에서 설명된 기법들의 다양한 양태들의 임의의 상상 가능한 조합을 포괄할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다.  소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 그것을 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체들을 포함할 수도 있다. 이런 식으로, 컴퓨터-판독가능 매체는 비-일시적인 유형의 컴퓨터-판독가능 저장 매체에 일반적으로 해당할 수도 있다. 데이터 저장 매체들은 본 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다. 비제한적인 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 소망의 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 대신 비일시적, 유형의 저장 매체들을 지향하고 있음이 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc; CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 들은 레이저들로써 광학적으로 데이터를 재생한다. 상기한 것들의 조합들은 컴퓨터 판독가능 매체들의 범위 내에 또한 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 본 명세서에서 사용되는 바와 같은 "프로세서"라는 용어는 앞서의 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 나타낼 수도 있다. 덧붙여서, 일부 양태들에서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되는, 또는 결합형 코덱으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적회로 (IC) 또는 IC들의 셋트 (예컨대, 칩 셋) 를 포함하는 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들이 개시된 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 대신에, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어에 연계하여, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함한 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    복수의 룩-업 테이블들을 저장하는 단계로서, 상기 복수의 룩-업 테이블들의 각 룩-업 테이블은 수평 및 수직 변환 쌍 조합들의 셋트를 포함하고, 상기 복수의 룩-업 테이블들에 대한 수평 및 수직 변환 쌍 조합들의 각 셋트는 수평 및 수직 변환 쌍 조합들의 모든 가능한 셋트들보다는 적은 복수의 셋트들을 포함하고, 수평 및 수직 변환 쌍 조합들의 각 셋트의 각 수평 및 수직 변환 쌍 조합은 수평 변환 및 수직 변환 둘 다를 포함하고 각각의 변환 쌍 셋트 인덱스에 연관되는, 복수의 룩-업 테이블들을 저장하는 단계;
    복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 상기 현재 계수 블록의 높이 또는 상기 현재 계수 블록의 폭 중 하나 또는 둘 다에 기초하여 상기 복수의 룩-업 테이블들로부터 룩-업 테이블을 선택하는 단계;
    변환 쌍 셋트 인덱스를 결정하는 단계;
    상기 선택된 룩-업 테이블에 대한 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하는 단계;
    현재 변환 블록을 결정하기 위해 상기 현재 계수 블록에, 상기 수평 및 수직 변환 쌍 조합의 상기 수평 변환 및 상기 수평 및 수직 변환 쌍 조합의 상기 수직 변환을 이용하여 역 변환을 적용하는 단계; 및
    상기 현재 변환 블록 및 예측 블록에 기초하여 상기 비디오 블록을 재구성하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    모든 가능한 변환들은 N 개의 변환들을 포함하고, 모든 가능한 수평 및 수직 변환 쌍 조합들은 N2 개의 수평 및 수직 변환 쌍 조합들을 포함하고, 상기 선택된 룩-업 테이블은 N2 개의 수평 및 수직 변환 쌍 조합들보다 적게 저장하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트는 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-7, DST-4}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DST-7, DCT-5}, {DCT-5, DST-7}, {DST-7, DCT-8}, {DST-4, DCT-5}, {DST-1, DST-7}, {DST-1, DST-4}, {DST-1, DCT-5}, 및 {DCT-5, DCT-5} 수평 및 수직 변환 쌍 조합들로 이루어지고,
    여기서, DST 는 이산 사인 변환의 유형을 지칭하고, DCT 는 이산 코사인 변환의 유형을 지칭하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트는 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-7, DST-4}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DST-7, DCT-5}, {DCT-5, DST-7}, {DST-7, DCT-8}, {DST-4, DCT-5}, {DST-1, DST-7}, {DST-1, DST-4}, {DST-1, DCT-5}, {DCT-5, DCT-5}, {DST-7, ID}, {DST-4, ID}, {DCT-8, ID}, (DCT-5, ID}, {DST-1, ID} 및 {ID, ID} 수평 및 수직 변환 쌍 조합들로 이루어지고,
    여기서, DST 는 이산 사인 변환의 유형을 지칭하고, DCT 는 이산 코사인 변환의 유형을 지칭하며, ID 는 아이덴터티 변환을 지칭하는, 비디오 데이터를 디코딩하는 방법.
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하는 단계는,
    강화된 다중 변환 (EMT) 인덱스 값을 결정하는 단계; 및
    결정된 상기 EMT 인덱스 값에 기초하여, 상기 수평 및 수직 변환 쌍 조합들의 셋트로부터 상기 수평 및 수직 변환 쌍 조합을 선택하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 수평 및 수직 변환 쌍 조합들의 셋트는, 수평 또는 수직 변환에 대해 아이덴터티 (ID) 변환을 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 상기 수평 및 수직 변환 쌍 조합을 선택하는 단계는, 수평 또는 수직 인트라 예측 모드와 연관된 임계치 내의 인트라 예측 모드를 포함하는 상기 복수의 예측 모드들 중의 상기 하나의 예측 모드에 기초하여, 수평 또는 수직 변환에 대해 아이덴터티 (ID) 변환을 선택하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 임계치는 상기 현재 계수 블록의 사이즈에 기초하는, 비디오 데이터를 디코딩하는 방법.
  11. 제 9 항에 있어서,
    상기 임계치는, 상기 인트라 예측 모드 및 상기 수평 또는 수직 인트라 예측 모드와 연관된 각도 사이의 거리에 기초하는, 비디오 데이터를 디코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트는, 4 개의 수평 및 수직 변환 쌍들의 수평 및 수직 변환 쌍 조합들의 셋트를 선택하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    상기 디바이스는,
    상기 비디오 데이터를 저장하도록 구성된 메모리; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    복수의 룩-업 테이블들을 저장하는 것으로서, 상기 복수의 룩-업 테이블들의 각 룩-업 테이블은 수평 및 수직 변환 쌍 조합들의 셋트를 포함하고, 상기 복수의 룩-업 테이블들에 대한 수평 및 수직 변환 쌍 조합들의 각 셋트는 수평 및 수직 변환 쌍 조합들의 모든 가능한 셋트들보다는 적은 복수의 셋트들을 포함하고, 수평 및 수직 변환 쌍 조합들의 각 셋트의 각 수평 및 수직 변환 쌍 조합은 수평 변환 및 수직 변환 둘 다를 포함하고 각각의 변환 쌍 셋트 인덱스에 연관되는, 복수의 룩-업 테이블들을 저장하고;
    복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 상기 현재 계수 블록의 높이 또는 상기 현재 계수 블록의 폭 중 하나 또는 둘 다에 기초하여 상기 복수의 룩-업 테이블들로부터 룩-업 테이블을 선택하고;
    변환 쌍 셋트 인덱스를 결정하고;
    상기 선택된 룩-업 테이블에 대한 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하고;
    현재 변환 블록을 결정하기 위해 상기 현재 계수 블록에, 상기 수평 및 수직 변환 쌍 조합의 상기 수평 변환 및 상기 수평 및 수직 변환 쌍 조합의 상기 수직 변환을 이용하여 역 변환을 적용하고; 그리고
    상기 현재 변환 블록 및 예측 블록에 기초하여 상기 비디오 블록을 재구성하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  17. 제 16 항에 있어서,
    모든 가능한 변환들은 N 개의 변환들을 포함하고, 모든 상기 가능한 수평 및 수직 변환 쌍 조합들은 N2 개의 수평 및 수직 변환 쌍 조합들을 포함하고, 상기 선택된 룩-업 테이블은 N2 개의 수평 및 수직 변환 쌍 조합들보다 적게 저장하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  18. 제 16 항에 있어서,
    상기 선택된 룩-업 테이블에 대해 저장된 상기 수평 및 수직 변환 쌍 조합들의 셋트는 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-7, DST-4}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DST-7, DCT-5}, {DCT-5, DST-7}, {DST-7, DCT-8}, {DST-4, DCT-5}, {DST-1, DST-7}, {DST-1, DST-4}, {DST-1, DCT-5}, 및 {DCT-5, DCT-5} 수평 및 수직 변환 쌍 조합들로 이루어지고,
    여기서, DST 는 이산 사인 변환의 유형을 지칭하고, DCT 는 이산 코사인 변환의 유형을 지칭하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  19. 제 16 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트들은 {DST-7, DST-7}, {DST-4, DST-4}, {DST-4, DST-7}, {DST-7, DST-4}, {DCT-8, DST-7}, {DCT-8, DST-4}, {DST-7, DCT-5}, {DCT-5, DST-7}, {DST-7, DCT-8}, {DST-4, DCT-5}, {DST-1, DST-7}, {DST-1, DST-4}, {DST-1, DCT-5}, {DCT-5, DCT-5}, {DST-7, ID}, {DST-4, ID}, {DCT-8, ID}, (DCT-5, ID}, {DST-1, ID} 및 {ID, ID} 수평 및 수직 변환 쌍 조합들로 이루어지고,
    여기서, DST 는 이산 사인 변환의 유형을 지칭하고, DCT 는 이산 코사인 변환의 유형을 지칭하며, ID 는 아이덴터티 변환을 지칭하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  20. 삭제
  21. 삭제
  22. 제 16 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하기 위해, 상기 하나 이상의 프로세서들은,
    강화된 다중 변환 (EMT) 인덱스 값을 결정하고; 그리고
    결정된 상기 EMT 인덱스 값에 기초하여, 상기 선택된 수평 및 수직 변환 쌍 조합들의 셋트로부터 상기 수평 및 수직 변환 쌍 조합을 선택하도록
    구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  23. 제 16 항에 있어서,
    상기 수평 및 수직 변환 쌍의 셋트는, 수평 또는 수직 변환에 대해 아이덴터티 (ID) 변환을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  24. 제 16 항에 있어서,
    상기 선택된 룩-업 테이블에 대한 상기 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 상기 수평 및 수직 변환 쌍 조합을 선택하기 위해, 상기 하나 이상의 프로세서들은 수평 또는 수직 인트라 예측 모드와 연관된 임계치 내의 인트라 예측 모드를 포함하는 상기 복수의 예측 모드들 중의 상기 하나의 예측 모드에 기초하여 수평 또는 수직 변환에 대해 아이덴터티 (ID) 변환을 선택하도록 구성되는, 비디오 데이터를 디코딩하기 위한 디바이스.
  25. 제 24 항에 있어서,
    상기 임계치는 상기 현재 계수 블록의 사이즈에 기초하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  26. 제 24 항에 있어서,
    상기 임계치는, 상기 인트라 예측 모드 및 상기 수평 또는 수직 인트라 예측 모드와 연관된 각도 사이의 거리에 기초하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  27. 삭제
  28. 삭제
  29. 비디오 데이터를 디코딩하기 위한 디바이스로서,
    복수의 룩-업 테이블들을 저장하는 수단으로서, 상기 복수의 룩-업 테이블들의 각 룩-업 테이블은 수평 및 수직 변환 쌍 조합들의 셋트를 포함하고, 상기 복수의 룩-업 테이블들에 대한 수평 및 수직 변환 쌍 조합들의 각 셋트는 수평 및 수직 변환 쌍 조합들의 모든 가능한 셋트들보다는 적은 복수의 셋트들을 포함하고, 수평 및 수직 변환 쌍 조합들의 각 셋트의 각 수평 및 수직 변환 쌍 조합은 수평 변환 및 수직 변환 둘 다를 포함하고 각각의 변환 쌍 셋트 인덱스에 연관되는, 복수의 룩-업 테이블들을 저장하는 수단;
    복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 상기 현재 계수 블록의 높이 또는 상기 현재 계수 블록의 폭 중 하나 또는 둘 다에 기초하여 상기 복수의 룩-업 테이블들로부터 룩-업 테이블을 선택하는 수단;
    변환 쌍 셋트 인덱스를 결정하는 수단;
    상기 선택된 룩-업 테이블에 대한 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하는 수단;
    현재 변환 블록을 결정하기 위해 상기 현재 계수 블록에, 상기 수평 및 수직 변환 쌍 조합의 상기 수평 변환 및 상기 수평 및 수직 변환 쌍 조합의 상기 수직 변환을 이용하여 역 변환을 적용하는 수단; 및
    상기 현재 변환 블록 및 예측 블록에 기초하여 상기 비디오 블록을 재구성하는 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 디바이스.
  30. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    복수의 룩-업 테이블들을 저장하게 하는 것으로서, 상기 복수의 룩-업 테이블들의 각 룩-업 테이블은 수평 및 수직 변환 쌍 조합들의 셋트를 포함하고, 상기 복수의 룩-업 테이블들에 대한 수평 및 수직 변환 쌍 조합들의 각 셋트는 수평 및 수직 변환 쌍 조합들의 모든 가능한 셋트들보다는 적은 복수의 셋트들을 포함하고, 수평 및 수직 변환 쌍 조합들의 각 셋트의 각 수평 및 수직 변환 쌍 조합은 수평 변환 및 수직 변환 둘 다를 포함하고 각각의 변환 쌍 셋트 인덱스에 연관되는, 복수의 룩-업 테이블들을 저장하게 하고;
    복수의 예측 모드들 중의 하나의 예측 모드에 따라 인코딩된 비디오 블록의 현재 계수 블록에 대해, 상기 현재 계수 블록의 높이 또는 상기 현재 계수 블록의 폭 중 하나 또는 둘 다에 기초하여 상기 복수의 룩-업 테이블들로부터 룩-업 테이블을 선택하게 하고;
    변환 쌍 셋트 인덱스를 결정하게 하고;
    상기 선택된 룩-업 테이블에 대한 수평 및 수직 변환 쌍 조합들의 셋트로부터 결정된 상기 변환 쌍 셋트 인덱스와 연관된 수평 및 수직 변환 쌍 조합을 선택하게 하며;
    현재 변환 블록을 결정하기 위해 상기 현재 계수 블록에, 상기 수평 및 수직 변환 쌍 조합의 상기 수평 변환 및 상기 수평 및 수직 변환 쌍 조합의 상기 수직 변환을 이용하여 역 변환을 적용하게 하며; 그리고
    상기 현재 변환 블록 및 예측 블록에 기초하여 상기 비디오 블록을 재구성하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020197000774A 2016-07-15 2017-07-14 강화된 다중 변환을 위한 룩-업 테이블 KR102519245B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662363188P 2016-07-15 2016-07-15
US62/363,188 2016-07-15
US15/649,612 US10972733B2 (en) 2016-07-15 2017-07-13 Look-up table for enhanced multiple transform
US15/649,612 2017-07-13
PCT/US2017/042181 WO2018013953A1 (en) 2016-07-15 2017-07-14 Look-up table for enhanced multiple transform

Publications (2)

Publication Number Publication Date
KR20190027815A KR20190027815A (ko) 2019-03-15
KR102519245B1 true KR102519245B1 (ko) 2023-04-06

Family

ID=60941548

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197000774A KR102519245B1 (ko) 2016-07-15 2017-07-14 강화된 다중 변환을 위한 룩-업 테이블

Country Status (7)

Country Link
US (3) US10972733B2 (ko)
EP (1) EP3485641A1 (ko)
JP (1) JP7033117B2 (ko)
KR (1) KR102519245B1 (ko)
CN (1) CN109691101B (ko)
BR (1) BR112019000344A2 (ko)
WO (1) WO2018013953A1 (ko)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10972733B2 (en) 2016-07-15 2021-04-06 Qualcomm Incorporated Look-up table for enhanced multiple transform
US10506228B2 (en) * 2016-10-04 2019-12-10 Qualcomm Incorporated Variable number of intra modes for video coding
US10554974B2 (en) * 2017-01-13 2020-02-04 Mediatek Inc. Method and apparatus enabling adaptive multiple transform for chroma transport blocks using control flags
US10750181B2 (en) * 2017-05-11 2020-08-18 Mediatek Inc. Method and apparatus of adaptive multiple transforms for video coding
US11228757B2 (en) 2017-05-31 2022-01-18 Interdigital Vc Holdings, Inc. Method and a device for picture encoding and decoding
US10979736B2 (en) * 2017-06-08 2021-04-13 Lg Electronics Inc. Method and apparatus for performing low-complexity computation of transform kernel for video compression
US11070806B2 (en) * 2017-06-28 2021-07-20 Lg Electronics Inc. Method and apparatus for performing low complexity computation in transform kernel for video compression
US11303928B2 (en) * 2017-09-28 2022-04-12 Sharp Kabushiki Kaisha Image decoding apparatus and image coding apparatus
WO2019076138A1 (en) * 2017-10-16 2019-04-25 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR ENCODING
EP3725083A1 (en) 2017-12-14 2020-10-21 InterDigital VC Holdings, Inc. Method and apparatus for encoding a picture block
KR102489149B1 (ko) * 2017-12-21 2023-01-17 엘지전자 주식회사 선택적 변환에 기반한 영상 코딩 방법 및 그 장치
EP3503549A1 (en) * 2017-12-22 2019-06-26 Thomson Licensing Method and apparatus for video compression using efficient multiple transforms
EP3729807A1 (en) * 2017-12-22 2020-10-28 InterDigital VC Holdings, Inc. Method and apparatus for video compression using efficient multiple transforms
CN111602397B (zh) 2018-01-17 2024-01-23 英迪股份有限公司 使用各种变换技术的视频编码方法和装置
EP3747192A1 (en) 2018-01-29 2020-12-09 InterDigital VC Holdings, Inc. Encoding and decoding with refinement of the reconstructed picture
EP3518542A1 (en) * 2018-01-30 2019-07-31 Thomson Licensing Methods and devices for picture encoding and decoding using multiple transforms
WO2019152131A1 (en) * 2018-01-30 2019-08-08 Interdigital Vc Holdings, Inc. Methods and devices for picture encoding and decoding using multiple transforms
US10812797B2 (en) * 2018-02-05 2020-10-20 Tencent America LLC Method, apparatus and medium for decoding or encoding using a low-complexity transform
US10567801B2 (en) 2018-03-07 2020-02-18 Tencent America LLC Method and apparatus for video coding with primary and secondary transforms
TWI731322B (zh) * 2018-03-29 2021-06-21 弗勞恩霍夫爾協會 變換組
WO2019190283A1 (ko) * 2018-03-29 2019-10-03 엘지전자 주식회사 저복잡도 연산 dst7을 설계하는 방법 및 장치
WO2019190284A1 (ko) * 2018-03-29 2019-10-03 엘지전자 주식회사 비디오 압축을 위한 변환 커널의 저복잡도 연산을 수행하는 방법 및 장치
CN111937383B (zh) 2018-03-30 2023-08-01 交互数字Vc控股公司 视频编码和解码中的色度量化参数调整
CN110324668B (zh) * 2018-03-31 2021-01-05 华为技术有限公司 图像块编码中的变换方法、解码中的反变换方法及装置
CN116781905A (zh) * 2018-04-01 2023-09-19 Lg电子株式会社 重构和发送视频信号的方法、对视频信号进行编码的方法
US10999604B2 (en) * 2018-04-13 2021-05-04 Mediatek Inc. Adaptive implicit transform setting
US11297348B2 (en) 2018-04-13 2022-04-05 Mediatek Inc. Implicit transform settings for coding a block of pixels
WO2019203068A1 (ja) * 2018-04-17 2019-10-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10986340B2 (en) 2018-06-01 2021-04-20 Qualcomm Incorporated Coding adaptive multiple transform information for video coding
CN115379216A (zh) 2018-06-03 2022-11-22 Lg电子株式会社 视频信号的解码、编码和发送设备及存储视频信号的介质
US10645396B2 (en) * 2018-06-04 2020-05-05 Tencent America LLC Method and apparatus for implicit transform splitting
US10666981B2 (en) 2018-06-29 2020-05-26 Tencent America LLC Method, apparatus and medium for decoding or encoding
AU2018204786A1 (en) * 2018-06-29 2020-01-16 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a transformed block of video samples
US10687081B2 (en) 2018-06-29 2020-06-16 Tencent America LLC Method, apparatus and medium for decoding or encoding
WO2020000487A1 (zh) * 2018-06-30 2020-01-02 华为技术有限公司 变换方法、反变换方法及装置
JP2021166320A (ja) * 2018-07-06 2021-10-14 ソニーグループ株式会社 画像処理装置および方法
CA3090207C (en) * 2018-07-13 2022-03-15 Telefonaktiebolaget Lm Ericsson (Publ) Transform selection in a video encoder and/or video decoder
US11259052B2 (en) * 2018-07-16 2022-02-22 Qualcomm Incorporated Transform variations of multiple separable transform selection
US11166044B2 (en) * 2018-07-31 2021-11-02 Tencent America LLC Method and apparatus for improved compound orthonormal transform
TWI816858B (zh) * 2018-08-16 2023-10-01 大陸商北京字節跳動網絡技術有限公司 用於變換矩陣選擇的隱式編碼
SI3723375T1 (sl) * 2018-09-02 2023-07-31 Lg Electronics Inc Postopek za obdelavo slikovnih signalov in računalniško berljiv shranjevalni medij, ki shranjuje bitni tok, ki se generira z omenjenim postopkom
PL3723373T3 (pl) * 2018-09-02 2023-11-06 Lg Electronics Inc. Sposób dekodowania sygnału obrazu, sposób kodowania sygnału obrazu i nośnik danych
US11039139B2 (en) * 2018-09-14 2021-06-15 Tencent America LLC Method and apparatus for identity transform in multiple transform selection
TWI729497B (zh) * 2018-09-17 2021-06-01 聯發科技股份有限公司 在視頻編解碼系統中組合多個預測子進行塊預測的方法和裝置
US20220038702A1 (en) * 2018-09-20 2022-02-03 Nokia Technologies Oy A method and an apparatus for encoding and decoding of digital image/video material
WO2020057537A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 视频解码方法及视频解码器,视频编码方法及视频编码器
CN110944177B (zh) * 2018-09-21 2024-03-01 华为技术有限公司 视频解码方法及视频解码器,视频编码方法及视频编码器
KR102630190B1 (ko) * 2018-09-23 2024-01-25 엘지전자 주식회사 비디오 신호의 부호화/복호화 방법 및 이를 위한 장치
US11218694B2 (en) * 2018-09-24 2022-01-04 Qualcomm Incorporated Adaptive multiple transform coding
CN117041554A (zh) * 2018-10-06 2023-11-10 华为技术有限公司 使用插值滤波器进行帧内预测的方法和装置
TWI738077B (zh) * 2018-10-08 2021-09-01 新加坡商聯發科技(新加坡)私人有限公司 圖像以及視訊編解碼中最後有效係數的編解碼方法以及裝置
US10893286B2 (en) * 2018-10-09 2021-01-12 Tencent America LLC Methods and apparatus for low-complexity MTS
EP3788779A4 (en) * 2018-10-23 2022-03-02 Tencent America LLC VIDEO CODING METHOD AND APPARATUS
US11831872B2 (en) * 2018-11-01 2023-11-28 Interdigital Madison Patent Holdings, Sas Video encoding and decoding using multiple transform selection
CN111225206B (zh) * 2018-11-23 2021-10-26 华为技术有限公司 视频解码方法和视频解码器
CN113170149B (zh) * 2018-12-03 2024-06-25 交互数字Vc控股公司 用于图片编码和解码的方法和设备
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding
KR102366765B1 (ko) * 2018-12-21 2022-02-24 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
RU2767513C1 (ru) * 2018-12-28 2022-03-17 Телефонактиеболагет Лм Эрикссон (Пабл) Способ и оборудование для проведения выбора преобразования в кодере и декодере
US10904563B2 (en) * 2019-01-02 2021-01-26 Tencent America LLC Method and apparatus for improved zero out transform
US11595663B2 (en) 2019-02-01 2023-02-28 Qualcomm Incorporated Secondary transform designs for partitioned transform units in video coding
CN115052163B (zh) * 2019-03-03 2024-04-09 华为技术有限公司 编码器、解码器和用于变换处理的对应方法
US10986334B2 (en) 2019-03-09 2021-04-20 Tencent America LLC Method and apparatus for video coding
CN113747157A (zh) * 2019-03-09 2021-12-03 杭州海康威视数字技术股份有限公司 进行编码和解码的方法、解码端、编码端和系统
CN111669582B (zh) * 2019-03-09 2022-05-20 杭州海康威视数字技术股份有限公司 进行编码和解码的方法、编码端、解码端和系统
US11539952B2 (en) * 2019-03-12 2022-12-27 Qualcomm Incorporated Implicit transform selection in video coding
EP3709647A1 (en) * 2019-03-12 2020-09-16 InterDigital VC Holdings, Inc. Transform selection and signaling for video encoding or decoding
US11025937B2 (en) * 2019-03-16 2021-06-01 Tencent America LLC Method and apparatus for video coding
US11172211B2 (en) * 2019-04-04 2021-11-09 Tencent America LLC Method and apparatus for video coding
US11240534B2 (en) 2019-04-05 2022-02-01 Qualcomm Incorporated Extended multiple transform selection for video coding
WO2020216288A1 (en) * 2019-04-23 2020-10-29 Beijing Bytedance Network Technology Co., Ltd. Conditional use of multiple transform matrices in video coding
KR20210145123A (ko) 2019-04-23 2021-12-01 주식회사 윌러스표준기술연구소 다중 변환 커널을 사용하는 비디오 신호 처리 방법 및 장치
EP3949396A4 (en) 2019-05-10 2022-05-04 Beijing Bytedance Network Technology Co., Ltd. SELECTION OF SECONDARY TRANSFORMATION MATRICES FOR VIDEO PROCESSING
US11032572B2 (en) 2019-05-17 2021-06-08 Qualcomm Incorporated Low-frequency non-separable transform signaling based on zero-out patterns for video coding
CN113994666A (zh) * 2019-06-06 2022-01-28 北京字节跳动网络技术有限公司 隐式选择变换候选
WO2020244663A1 (en) * 2019-06-06 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Applicability of implicit transform selection
WO2020244662A1 (en) * 2019-06-06 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Simplified transform coding tools
JP7277616B2 (ja) 2019-06-07 2023-05-19 北京字節跳動網絡技術有限公司 ビデオ・データを処理する方法、装置及び記憶媒体
US11695960B2 (en) 2019-06-14 2023-07-04 Qualcomm Incorporated Transform and last significant coefficient position signaling for low-frequency non-separable transform in video coding
US11949870B2 (en) 2019-06-21 2024-04-02 Qualcomm Incorporated Context modeling for low-frequency non-separable transformation signaling for video coding
CN110365982B (zh) * 2019-07-31 2022-01-04 中南大学 一种多用途编码中帧内编码的多变换选择加速方法
CN114208183A (zh) 2019-08-03 2022-03-18 北京字节跳动网络技术有限公司 视频的缩减二次变换中基于位置的模式导出
WO2021032045A1 (en) 2019-08-17 2021-02-25 Beijing Bytedance Network Technology Co., Ltd. Context modeling of side information for reduced secondary transforms in video
US11677984B2 (en) 2019-08-20 2023-06-13 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) signaling
US11323743B2 (en) * 2019-08-26 2022-05-03 Tencent America LLC Interaction between CU partitions and sub-block transform
US11184617B2 (en) 2019-09-19 2021-11-23 Qualcomm Incorporated Transform unit design for video coding
US11153576B2 (en) 2019-09-20 2021-10-19 Qualcomm Incorporated Scaling matrices and signaling for video coding
US11206400B2 (en) 2019-09-26 2021-12-21 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) simplifications
US11432014B2 (en) 2019-10-25 2022-08-30 Qualcomm Incorporated Parametric graph-based separable transforms for video coding
WO2021086056A1 (ko) * 2019-10-29 2021-05-06 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
US11284071B2 (en) 2019-12-12 2022-03-22 Google Llc Combination of mode-dependent and fixed transform types in video coding
US20210195192A1 (en) 2019-12-20 2021-06-24 Qualcomm Incorporated Coefficient group based restriction on multiple transform selection signaling in video coding
US11470353B2 (en) 2019-12-20 2022-10-11 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) with reduced zero-out in video coding
US11457229B2 (en) 2019-12-23 2022-09-27 Qualcomm Incorporated LFNST signaling for chroma based on chroma transform skip
US11706425B2 (en) 2020-01-08 2023-07-18 Qualcomm Incorporated Multiple transform set signaling for video coding
US11412258B2 (en) 2020-02-12 2022-08-09 Tencent America LLC Line graph transforms (LGTs) using 8-bit and 10-bit cores
US11405647B2 (en) 2020-02-18 2022-08-02 Tencent America LLC Primary transforms using 8-bit and 10-bit cores
KR20220164764A (ko) * 2020-04-02 2022-12-13 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
EP4128755A4 (en) * 2020-04-29 2023-09-06 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTERPOLATION FILTERING UNDERSAMPLING
WO2021240647A1 (ja) 2020-05-26 2021-12-02 富士通株式会社 画像処理システム、画像処理装置及び画像処理プログラム
US11785254B2 (en) 2020-05-29 2023-10-10 Tencent America LLC Implicit mode dependent primary transforms
US11575937B2 (en) 2020-07-24 2023-02-07 Tencent America LLC Methods for efficient application of LGT
US11871010B2 (en) 2020-10-02 2024-01-09 Qualcomm Incorporated Extended low-frequency non-separable transform (LFNST) designs with worst-case complexity handling
CN112533000B (zh) * 2020-10-16 2022-08-05 腾讯科技(深圳)有限公司 视频解码方法、装置、计算机可读介质及电子设备
US11924471B2 (en) 2020-11-12 2024-03-05 Qualcomm Incorporated Context-based transform index signaling in video coding
CN112565754B (zh) * 2020-12-06 2022-11-11 浙江大华技术股份有限公司 基于ibc模式变换、编码方法、装置、电子设备及存储介质
WO2022221829A1 (en) * 2021-04-12 2022-10-20 Qualcomm Incorporated Intra-mode dependent multiple transform selection for video coding
US20230112642A1 (en) * 2021-10-13 2023-04-13 Tencent America LLC Adaptive multiple transform set selection
WO2024071680A1 (ko) * 2022-09-29 2024-04-04 현대자동차주식회사 분리 불가능한 1차 변환 기반 비디오 코딩을 위한 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013154366A1 (ko) 2012-04-12 2013-10-17 주식회사 팬택 블록 정보에 따른 변환 방법 및 이러한 방법을 사용하는 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003092169A1 (en) 2002-04-26 2003-11-06 Ntt Docomo, Inc. Signal encoding method, signal decoding method, signal encoding device, signal decoding device, signal encoding program, and signal decoding program
GB2475721B (en) * 2009-11-27 2015-03-11 British Broadcasting Corp Picture encoding and decoding
MX2013000516A (es) * 2010-07-15 2013-09-02 Toshiba Kk Metodo de codificacion de imagenes y metodo de descodificacion de imagenes.
US8885701B2 (en) * 2010-09-08 2014-11-11 Samsung Electronics Co., Ltd. Low complexity transform coding using adaptive DCT/DST for intra-prediction
US10992958B2 (en) 2010-12-29 2021-04-27 Qualcomm Incorporated Video coding using mapped transforms and scanning modes
US20120307893A1 (en) 2011-06-02 2012-12-06 Qualcomm Incorporated Fast computing of discrete cosine and sine transforms of types vi and vii
CN104094597B (zh) * 2011-10-17 2018-04-20 株式会社Kt 基于帧内预测的自适应变换方法及使用该方法的装置
US9124872B2 (en) 2012-04-16 2015-09-01 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
CA2998468C (en) * 2015-12-23 2021-02-16 Huawei Technologies Co., Ltd. Method and apparatus for transform coding with block-level transform selection and implicit signaling within hierarchical partitioning
US10567759B2 (en) * 2016-03-21 2020-02-18 Qualcomm Incorporated Using luma information for chroma prediction with separate luma-chroma framework in video coding
US10972733B2 (en) 2016-07-15 2021-04-06 Qualcomm Incorporated Look-up table for enhanced multiple transform

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013154366A1 (ko) 2012-04-12 2013-10-17 주식회사 팬택 블록 정보에 따른 변환 방법 및 이러한 방법을 사용하는 장치
KR102061201B1 (ko) 2012-04-12 2019-12-31 주식회사 골드피크이노베이션즈 블록 정보에 따른 변환 방법 및 이러한 방법을 사용하는 장치

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
J. Chen et al, Algorithm Description of Joint Exploration Test Model 3, JVET of ITU-T and ISO/IEC, JVET-C1001 Ver.3 (2016.07.06.) 1부.*
Jicheng An et al, Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue, JCT-VC of ITU-T and ISO/IEC, JCTVC-G281 (2011.11.22.) 1부.*
K. Rapaka et al, Non Square TU Partitioning, JVET of ITU-T and ISO/IEC, JVET-B0047 version 2 (2016.02.21.) 1부.*
P. Philippe et al, Proposed improvements to the Adaptive multiple Core transform, JVET of ITU-T and ISO/IEC, JVET-C0022(2016.05.27.)
Xin Zhao et al, Enhanced Multiple Transform for Video Coding, 2016 Data Compression Conference (DCC), pp.73-82 (2014.04.01.) 1부.*

Also Published As

Publication number Publication date
CN109691101A (zh) 2019-04-26
KR20190027815A (ko) 2019-03-15
US20210195195A1 (en) 2021-06-24
BR112019000344A2 (pt) 2019-04-24
US20220385906A1 (en) 2022-12-01
US11647194B2 (en) 2023-05-09
US10972733B2 (en) 2021-04-06
US11412224B2 (en) 2022-08-09
CN109691101B (zh) 2022-10-11
JP7033117B2 (ja) 2022-03-09
US20180020218A1 (en) 2018-01-18
JP2019525575A (ja) 2019-09-05
WO2018013953A1 (en) 2018-01-18
EP3485641A1 (en) 2019-05-22

Similar Documents

Publication Publication Date Title
KR102519245B1 (ko) 강화된 다중 변환을 위한 룩-업 테이블
KR102452745B1 (ko) 예측 잔차를 위한 향상된 다수의 변환들
CN109716772B (zh) 用于视频译码的变换选择
CN112204969B (zh) 用于视频编解码的编解码自适应多重变换信息
AU2018282523B2 (en) Intra filtering applied together with transform processing in video coding
CN110073661B (zh) 用于编码和解码视频数据的方法和装置
EP3005698B1 (en) Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans
AU2016332318A1 (en) Non-separable secondary transform for video coding with reorganizing
KR20180113515A (ko) 최적화된 컴팩트 다중 패스 변환을 사용한 효율적인 변환 코딩
AU2013217035A1 (en) Restriction of prediction units in B slices to uni-directional inter prediction
KR20210135245A (ko) 비디오 코딩에서의 암시적 변환 선택
BR112017016012B1 (pt) Múltiplas transformadas melhoradas para residual de predição
OA18315A (en) Enhanced multiple transforms for prediction residual.

Legal Events

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