KR20210068101A - 단일-레벨 변환 분할 및 적응형 서브-블록 변환 - Google Patents

단일-레벨 변환 분할 및 적응형 서브-블록 변환 Download PDF

Info

Publication number
KR20210068101A
KR20210068101A KR1020217012851A KR20217012851A KR20210068101A KR 20210068101 A KR20210068101 A KR 20210068101A KR 1020217012851 A KR1020217012851 A KR 1020217012851A KR 20217012851 A KR20217012851 A KR 20217012851A KR 20210068101 A KR20210068101 A KR 20210068101A
Authority
KR
South Korea
Prior art keywords
tus
block
transform
partitioning
height
Prior art date
Application number
KR1020217012851A
Other languages
English (en)
Other versions
KR102645498B1 (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 KR20210068101A publication Critical patent/KR20210068101A/ko
Application granted granted Critical
Publication of KR102645498B1 publication Critical patent/KR102645498B1/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods 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 colour or a chrominance component
    • 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
    • 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/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree 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

적어도 하나의 프로세서를 사용하여 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU:coding unit)를 하나 이상의 변환 단위(TU: transform unit)들로 파티셔닝하는 방법은, CU의 높이를 결정하는 단계; CU의 폭을 결정하는 단계; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하고; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하는 단계; 결정된 하나 이상의 TU들의 사이즈 및 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 CU를 하나 이상의 TU들로 파티셔닝하게 하는 단계를 포함한다.

Description

단일-레벨 변환 분할 및 적응형 서브-블록 변환
본 출원은, 미국 특허청에 2018년 12월 06일자로 출원된 미국 가출원 제62/776,354호와 2018년 12월 27일자로 출원된 미국 가출원 제62/785,681호, 그리고 미국 특허청에 2019년 11월 25일자로 출원된 미국 출원 제16/694,338호를 우선권으로 주장하며, 이 출원들의 개시내용들은 전체가 인용에 의해 본원에 포함된다.
본 개시내용은 고효율 비디오 코딩(HEVC: High Efficiency Video Coding)를 능가하는 차세대 비디오 코딩 기술들, 예를 들어 다용도 비디오 코딩(VVC: Versatile Video Coding)에 관한 것이다. 보다 구체적으로, 하나의 코딩 단위 내에서 다수의 변환을 적용하기 위한 변환 방식, 즉 변환 분할(transform split), 및 예측 블록 정보를 사용하여 변환 사이즈를 결정하는 적응형 서브-블록 변환(adaptive sub-block transform)이 개시된다.
ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG11)는 2013(버전 1) 2014(버전 2) 2015(버전 3) 및 2016(버전 4)의 H.265/HEVC(High Efficiency Video Coding) 표준을 공개했다. 그 이후로, 그들은 HEVC 표준(이의 확장들을 포함)을 훨씬 능가하는 압축 성능(compression capability)을 가진 미래의 비디오 코딩 기술의 표준화에 대한 잠재적 필요성을 연구해 왔다. 2017년 10월, 그들은 HEVC(CfP)를 능가하는 성능을 가진 비디오 압축에 대한 기술 제안 요청(Joint Call for Proposals)을 발표했다. 2018년 2월 15일까지, SDR(standard dynamic range)에 대한 총 22개의 CfP 응답들, HDR(high dynamic range)에 대한 12개의 CfP 응답들, 360 비디오 카테고리들에 대한 12개의 CfP 응답들이 각각 제출되었다. 2018년 4월에, 접수된 모든 CfP 응답들이 122 MPEG/10차 JVET(Joint Video Exploration Team-Joint Video Expert Team) 회의에서 평가되었다. 신중한 평가를 거쳐, JVET는 HEVC를 능가하는 차세대 비디오 코딩의 표준화, 즉, 소위 VVC(Versatile Video Coding)를 공식적으로 런칭했다(VTM(VVC 테스트 모델)의 현재 버전, 즉 VTM 3).
일 실시예에 따라, 적어도 하나의 프로세서를 사용하여 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU: coding unit)를 하나 이상의 변환 단위(TU: transform unit)들로 파티셔닝하는 방법은, CU의 높이를 결정하는 단계; CU의 폭을 결정하는 단계; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하는 단계; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하는 단계; 및 결정된 하나 이상의 TU들의 사이즈 및 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 CU를 하나 이상의 TU들로 파티셔닝하는 단계를 포함한다.
일 실시예에 따라, 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스는, 프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리; 및 프로그램 코드를 판독하고 프로그램 코드가 명령하는 대로 동작하도록 구성된 적어도 하나의 프로세서를 포함하며, 프로그램 코드는, 적어도 하나의 프로세서로 하여금, CU의 높이를 결정하게 하도록 구성된 제1 결정 코드; 적어도 하나의 프로세서로 하여금, CU의 폭을 결정하게 하도록 구성된 제2 결정 코드; 적어도 하나의 프로세서로 하여금, CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하게 하도록 구성된 제3 결정 코드; 적어도 하나의 프로세서로 하여금, CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하게 하도록 구성된 제4 결정 코드; 및 적어도 하나의 프로세서로 하여금, 결정된 하나 이상의 TU들의 사이즈 및 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 CU를 하나 이상의 TU들로 파티셔닝하도록 구성된 파티셔닝 코드를 포함한다.
일 실시예에 따라, 비-일시적 컴퓨터-판독가능 매체는 하나 이상의 명령들을 포함하는 명령들을 저장하며, 하나 이상의 명령들은, 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, CU의 높이를 결정하고; CU의 폭을 결정하고; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하고; CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하고; 그리고 결정된 하나 이상의 TU들의 사이즈 및 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 CU를 하나 이상의 TU들로 파티셔닝하게 한다.
개시된 청구대상 추가 특징들, 특성 및 다양한 이점들은 다음의 상세한 설명 및 첨부된 도면들로부터 보다 명백해질 것이다.
도 1은 일 실시예에 따른 쿼드 트리 바이너리 트리 구조(Quad Tree Binary Tree structure)의 예를 예시한다.
도 2a 및 도 2b는 일 실시예에 따른 멀티-타입 트리 구조(multi-type tree structure)들의 예들을 예시한다.
도 3은 일 실시예에 따른 서브-블록 변환 모드들의 예들을 예시한다.
도 4a 및 4b는 일 실시예에 따른, 정사각형 블록에 대한 서브-블록 파티셔닝의 예들을 예시한다.
도 5a-5e는 일 실시예에 따른, 직사각형 블록에 대한 서브-블록 파티셔닝의 예들을 예시한다.
도 6a-6c는 일 실시예에 따른, 직사각형 블록에 대한 서브-블록 파티셔닝의 예들을 예시한다.
도 7a-7c는 일 실시예에 따른, 직사각형 블록에 대한 서브-블록 파티셔닝의 예들을 예시한다.
도 8a-8c는 일 실시예에 따른, 직사각형 블록에 대한 서브-블록 파티셔닝의 예들을 예시한다.
도 9a-9d는 일 실시예에 따른 상이한 변환 세트들의 적용의 예들을 예시한다.
도 10은 본 개시내용의 실시예에 따른 통신 시스템의 단순화된 블록도이다.
도 11은 스트리밍 환경에서 비디오 인코더 및 디코더의 배치에 대한 다이어그램이다.
도 12는 본 개시내용의 실시예에 따른 비디오 디코더의 기능 블록도이다.
도 13은 본 개시내용의 실시예에 따른 비디오 인코더의 기능 블록도이다.
도 14는 본 개시내용의 일 실시예에 따른, 인코딩된 비디오 비트스트림에서 현재 블록을 인코딩하는 데 사용되는 참조 샘플을 선택하기 위한 예시적 프로세스의 흐름도이다.
도 15는 일 실시예에 따른 컴퓨터 시스템의 다이어그램이다.
HEVC에서, 코딩 트리 단위(CTU: coding tree unit)는, 다양한 로컬 특성들에 적응하기 위해, 코딩 트리로 표시된 쿼드 트리 구조를 사용하여 코딩 단위(CU)들로 분할된다. 인터-픽처(inter-pictur)(시간적) 또는 인트라-픽처(intra-picture)(공간적) 예측을 사용하여 픽처 영역을 코딩할지 여부에 대한 판단은 CU 레벨에서 이루어진다. 각각의 CU는 PU 분할 타입에 따라 1개, 2개 또는 4개의 예측 단위(PU)들로 추가로 분할될 수 있다. 하나의 PU 내부에서는, 동일한 예측 프로세스가 적용되고 관련 정보가 PU 기준으로 디코더에 전송된다. PU 분할 타입에 기반한 예측 프로세스를 적용함으로써 잔차 블록(residual block)을 획득한 후, CU는 CU를 위한 코딩 트리와 같은 다른 쿼드 트리 구조에 따라 변환 단위(TU)들로 파티셔닝될 수 있다. HEVC 구조의 특징은, HEVC 구조가 CU, PU 및 TU를 포함하는 다수의 파티션 개념들을 갖는다는 것이다. HEVC에서, CU 또는 TU는 오직 정사각형 형상일 수 있지만, PU는 인터 예측 블록에 대해서는 정사각형 또는 직사각형 형상일 수 있다. HEVC에서, 하나의 코딩 블록은, 4개의 정사각형 서브-블록들로 추가로 분할될 수 있으며, 변환이 각각의 서브-블록, 즉, TU에 대해 수행된다. 각각의 TU는, 잔차 쿼드 트리(RQT: Residual Quad-Tree)라 불리는 더 작은 TU들로 (쿼드 트리 분할을 사용하여) 재귀적으로(recursively) 추가로 분할될 수 있다.
픽처 경계에서, HEVC는, 블록이 사이즈가 픽처 경계에 맞을 때까지 쿼드 트리 분할을 계속 유지하도록 암시적 쿼드 트리 분할을 사용한다.
HEVC에서, CTU는, 다양한 로컬 특성들에 적응하기 위해, 코딩 트리로 표시된 쿼드 트리 구조를 사용하여 CU들로 분할된다. 인터-픽처(시간적) 또는 인트라-픽처(공간적) 예측을 사용하여 픽처 영역을 코딩할지 여부에 대한 판단은 CU 레벨에서 이루어진다. 각각의 CU는 PU 분할 타입에 따라 1개, 2개 또는 4개의 PU들로 추가로 분할될 수 있다. 하나의 PU 내부에서는, 동일한 예측 프로세스가 적용되고 관련 정보가 PU 기준으로 디코더에 전송된다. PU 분할 타입에 기반한 예측 프로세스를 적용함으로써 잔차 블록을 획득한 후, CU는 CU를 위한 코딩 트리와 같은 다른 쿼드 트리 구조에 따라 변환 단위(TU)들로 파티셔닝될 수 있다. HEVC 구조의 주요 특징 중 하나는, HEVC 구조가 CU, PU 및 TU를 포함하는 다수의 파티션 개념들 갖는다는 것이다.
QTBT(Quad Tree Binary Tree) 구조는 다수의 파티션 타입들의 개념들을 제거하는데, 즉, QTBT 구조는, CU, PU 및 TU 개념들의 구분을 제거하고, CU 파티션 형상들에 대해 더 많은 유연성을 지원한다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형 형상을 가질 수 있다. 도 1에 도시된 바와 같이, 코딩 트리 단위(CTU)는 먼저, 쿼드 트리 구조로 파티셔닝된다. 쿼드 트리 리프 노드(quadtree leaf node)들은 바이너리 트리 구조에 의해 추가로 파티셔닝된다. 바이너리 트리 분할에서는, 대칭 수평 분할 및 대칭 수직 분할의 2가지 분할 타입들이 있다. 바이너리 트리 리프 노드들은 코딩 단위(CU)들로 불리며, 해당 세그먼트화(segmentation)는 임의의 추가 파티셔닝없이 예측 및 변환 프로세싱에 사용된다. 이는, CU, PU 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 사이즈를 갖는다는 것을 의미한다. JEM에서, CU는 때때로 상이한 컬러 성분들의 코딩 블록(CB)들로 구성되며(예를 들어, 하나의 CU는 4:2:0 크로마 포맷의 P 및 B 슬라이스들의 경우 하나의 루마(luma) CB와 2개의 크로마(chroma) CB들을 함유함) 그리고 때로는 단일 성분의 CB로 구성된다(예를 들어, 하나의 CU는 I 슬라이스들의 경우 오직 하나의 루마 CB만 또는 단 2개의 크로마 CB들을 함유함).
다음의 파라미터들이 QTBT 파티셔닝 방식에 대해 정의된다:
CTU 사이즈: 쿼드 트리의 루트 노드 사이즈, HEVC에서와 동일한 개념
MinQTSize: 허용되는 최소 쿼드 트리 리프 노드 사이즈
MaxBTSize: 허용되는 최대 바이너리 트리 루트 노드 사이즈
MaxBTDepth: 허용되는 최대 바이너리 트리 깊이
MinBTSize: 허용되는 최소 바이너리 트리 리프 노드 사이즈
QTBT 파티셔닝 구조의 한 예에서, CTU 사이즈는 두 개의 대응하는 64x64 블록들의 크로마 샘플들을 갖는 128x128 루마 샘플들로 설정되고, MinQTSize는 16x16으로 설정되고, MaxBTSize는 64x64로 설정되고, MinBTSize(폭과 높이 둘 다에 대해)는 4×4로 설정되고 그리고 MaxBTDepth는 4로 설정된다. 쿼드 트리 파티셔닝은 먼저 CTU에 적용되어 쿼드 트리 리프 노드들을 생성한다. 쿼드 트리 리프 노드들은 16×16(즉, MinQTSize)로부터 128×128(즉, CTU 사이즈)까지의 사이즈를 가질 수 있다. 리프 쿼드 트리 노드가 128×128이면, 사이즈가 MaxBTSize(즉, 64x64)를 초과하므로 리프 쿼드 트리 노드는 바이너리 트리에 의해 더는 분할되지 않을 것이다. 그렇지 않으면, 리프 쿼드 트리 노드는 바이너리 트리에 의해 추가로 파티셔닝될 수 있다. 따라서, 쿼드 트리 리프 노드는 또한 바이너리 트리에 대한 루트 노드이기도 하며, 0의 바이너리 트리 깊이를 갖는다. 바이너리 트리 깊이가 MaxBTDepth(즉, 4)에 도달하는 경우, 추가 분할이 고려되지 않는다. 바이너리 트리 노드가 MinBTSize(즉, 4)와 같은 폭을 갖는 경우, 추가 수평 분할이 고려되지 않는다. 유사하게, 바이너리 트리 노드가 MinBTSize와 같은 높이를 갖는 경우, 더 이상 수직 분할이 고려되지 않는다. 바이너리 트리의 리프 노드들은 임의의 추가 파티셔닝없이 예측 및 변환 프로세싱에 의해 추가로 프로세싱된다. JEM에서, 최대 CTU 사이즈는 256×256 루마 샘플들이다.
도 1의 왼쪽 부분은 QTBT를 사용한 블록 파티셔닝의 예를 예시하고, 도 1의 오른쪽 부분은 대응하는 트리 표현을 예시한다. 실선들은 쿼드 트리 분할을 지시하고 점선들은 바이너리 트리 분할을 지시한다. 바이너리 트리의 각각의 분할(즉, 비-리프(non-leaf)) 노드에서, 사용되는 분할 타입(즉, 수평 또는 수직)을 지시하기 위해 하나의 플래그(flag)가 시그널링되며, 여기서 0은 수평 분할을 지시하고 1은 수직 분할을 지시한다. 쿼드 트리 분할의 경우, 분할 타입을 지시할 필요가 없는데, 이는 쿼드 트리 분할은 항상 블록을 수평 및 수직 둘 다로 분할하여 동일한 사이즈를 갖는 4개의 서브-블록들을 생성하기 때문이다.
또한, QTBT 방식은 루마와 크로마가 별도의 QTBT 구조를 갖도록 유연성을 지원한다. 현재, P 및 B 슬라이스들의 경우, 하나의 CTU에서 루마 및 크로마 CTB들이 동일한 QTBT 구조를 공유한다. 그러나, I 슬라이스들의 경우, 루마 CTB는 QTBT 구조에 의해 CU들로 파티셔닝되고, 크로마 CTB들은 다른 QTBT 구조에 의해 크로마 CU들로 파티셔닝된다. 이는, I 슬라이스에서 CU는 루마 성분의 코딩 블록 또는 2개의 크로마 성분들의 코딩 블록들로 구성되며, P 또는 B 슬라이스에서 CU는 3가지 컬러 성분들 모두의 코딩 블록으로 구성된다는 것을 의미한다.
HEVC에서, 작은 블록들에 대한 인터 예측은 모션 보상의 메모리 액세스를 감소시키도록 제한되며, 이로써 4×8 및 8×4 블록들에 대해서는 양-예측(bi-prediction)이 지원되지 않고, 4×4 블록들에 대해서는 인터 예측이 지원되지 않는다. JEM-7.0에 구현된 QTBT에서는, 이러한 제한들이 제거된다.
멀티-타입-트리(MTT: Multi-type-tree) 구조는 QTBT보다 더 유연한 트리 구조일 수 있다. MTT에서는, 쿼드-트리 및 바이너리-트리 외에, 도 2a 및 2b에 도시된 바와 같이, 수평 및 수직 중앙측 트리플-트리들이 도입된다. 구체적으로, 도 2a는 수직 중앙측 트리플-트리 파티셔닝의 예를 예시하고, 도 2b는 수평 중앙측 트리플-트리 파티셔닝의 예를 예시한다.
트리플-트리 파티셔닝은 쿼드-트리 및 바이너리-트리 파티셔닝을 보완할 수 있는데, 이는 트리플-트리 파티셔닝은 블록 중앙에 로케이팅하는 객체들을 캡처할 수 있는 반면 쿼드-트리 및 바이너리-트리는 항상 블록 중앙을 따라 분할하기 때문이다. 또한, 제안된 트리플 트리들의 파티션들의 폭과 높이는 항상 2의 거듭 제곱이므로, 추가 변환들이 필요하지 않다.
2-레벨 트리의 설계는 복잡성 감소에 의해 자극될 수 있다. 이론적으로, 트리의 순회(traversing)의 복잡성은 T^D이며, 여기서 T는 분할 타입들의 수를 표시하고 D는 트리의 깊이이다.
HEVC에서, 1차 변환들은 4-포인트, 8-포인트, 16-포인트 및 32-포인트 DCT-2이며, 변환 코어 행렬들은 8-비트 정수들, 즉 8-비트 변환 코어를 사용하여 표현된다. 더 작은 DCT-2의 변환 코어 행렬들은, 아래에 도시된 바와 같이, 더 큰 DCT-2의 일부이다.
1: 4 ×4 변환
Figure pct00001
2: 8 ×8 변환
Figure pct00002
3: 16 ×16 변환
Figure pct00003
4: 32 ×32 변환
Figure pct00004
DCT-2 코어들은 대칭(symmetry)/비대칭(anti-symmetry) 특성들을 나타내므로, 연산 카운트들(곱셈들, 덧셈들/감산들, 시프트들)의 수를 감소시키기 위해 소위 "부분 버터플라이(partial butterfly)" 구현이 지원되며, 부분 버터플라이를 사용하여 동일한 행렬 곱셈 결과들이 획득될 수 있다.
현재 VVC에서는, HEVC와 동일한 4-포인트, 8-포인트, 16-포인트 및 32-포인트 DCT-2 변환들 외에, 추가의 2-포인트 및 64-포인트 DCT-2가 또한 포함된다.
VVC에 정의된 64-포인트 DCT-2 코어가 표 5에서 64×64 행렬로서 아래에 표시된다:
표 5
{
{ aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa, aa }
{ bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck, -ck, -cj, -ci, -ch, -cg, -cf, -ce, -cd, -cc, -cb, -ca, -bz, -by, -bx, -bw, -bv, -bu, -bt, -bs, -br, -bq, -bp, -bo, -bn, -bm, -bl, -bk, -bj, -bi, -bh, -bg, -bf }
{ ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, -be, -bd, -bc, -bb, -ba, -az, -ay, -ax, -aw, -av, -au, -at, -as, -ar, -aq, -ap, -ap, -aq, -ar, -as, -at, -au, -av, -aw, -ax, -ay, -az, -ba, -bb, -bc, -bd, -be, be, bd, bc, bb, ba, az, ay, ax, aw, av, au, at, as, ar, aq, ap }
{ bg, bj, bm, bp, bs, bv, by, cb, ce, ch, ck, -ci, -cf, -cc, -bz, -bw, -bt, -bq, -bn, -bk, -bh, -bf, -bi, -bl, -bo, -br, -bu, -bx, -ca, -cd, -cg, -cj, cj, cg, cd, ca, bx, bu, br, bo, bl, bi, bf, bh, bk, bn, bq, bt, bw, bz, cc, cf, ci, -ck, -ch, -ce, -cb, -by, -bv, -bs, -bp, -bm, -bj, -bg }
{ ah, ai, aj, ak, al, am, an, ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao, ao, an, am, al, ak, aj, ai, ah, ah, ai, aj, ak, al, am, an, ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao, ao, an, am, al, ak, aj, ai, ah }
{ bh, bm, br, bw, cb, cg, -ck, -cf, -ca, -bv, -bq, -bl, -bg, -bi, -bn, -bs, -bx, -cc, -ch, cj, ce, bz, bu, bp, bk, bf, bj, bo, bt, by, cd, ci, -ci, -cd, -by, -bt, -bo, -bj, -bf, -bk, -bp, -bu, -bz, -ce, -cj, ch, cc, bx, bs, bn, bi, bg, bl, bq, bv, ca, cf, ck, -cg, -cb, -bw, -br, -bm, -bh }
{ aq, at, aw, az, bc, -be, -bb, -ay, -av, -as, -ap, -ar, -au, -ax, -ba, -bd, bd, ba, ax, au, ar, ap, as, av, ay, bb, be, -bc, -az, -aw, -at, -aq, -aq, -at, -aw, -az, -bc, be, bb, ay, av, as, ap, ar, au, ax, ba, bd, -bd, -ba, -ax, -au, -ar, -ap, -as, -av, -ay, -bb, -be, bc, az, aw, at, aq }
{ bi, bp, bw, cd, ck, -ce, -bx, -bq, -bj, -bh, -bo, -bv, -cc, -cj, cf, by, br, bk, bg, bn, bu, cb, ci, -cg, -bz, -bs, -bl, -bf, -bm, -bt, -ca, -ch, ch, ca, bt, bm, bf, bl, bs, bz, cg, -ci, -cb, -bu, -bn, -bg, -bk, -br, -by, -cf, cj, cc, bv, bo, bh, bj, bq, bx, ce, -ck, -cd, -bw, -bp, -bi }
{ ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad, ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad, ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad, ad, ae, af, ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag, ag, af, ae, ad }
{ bj, bs, cb, ck, -cc, -bt, -bk, -bi, -br, -ca, -cj, cd, bu, bl, bh, bq, bz, ci, -ce, -bv, -bm, -bg, -bp, -by, -ch, cf, bw, bn, bf, bo, bx, cg, -cg, -bx, -bo, -bf, -bn, -bw, -cf, ch, by, bp, bg, bm, bv, ce, -ci, -bz, -bq, -bh, -bl, -bu, -cd, cj, ca, br, bi, bk, bt, cc, -ck, -cb, -bs, -bj }
{ ar, aw, bb, -bd, -ay, -at, -ap, -au, -az, -be, ba, av, aq, as, ax, bc, -bc, -ax, -as, -aq, -av, -ba, be, az, au, ap, at, ay, bd, -bb, -aw, -ar, -ar, -aw, -bb, bd, ay, at, ap, au, az, be, -ba, -av, -aq, -as, -ax, -bc, bc, ax, as, aq, av, ba, -be, -az, -au, -ap, -at, -ay, -bd, bb, aw, ar }
{ bk, bv, cg, -ce, -bt, -bi, -bm, -bx, -ci, cc, br, bg, bo, bz, ck, -ca, -bp, -bf, -bq, -cb, cj, by, bn, bh, bs, cd, -ch, -bw, -bl, -bj, -bu, -cf, cf, bu, bj, bl, bw, ch, -cd, -bs, -bh, -bn, -by, -cj, cb, bq, bf, bp, ca, -ck, -bz, -bo, -bg, -br, -cc, ci, bx, bm, bi, bt, ce, -cg, -bv, -bk }
{ ai, al, ao, -am, -aj, -ah, -ak, -an, an, ak, ah, aj, am, -ao, -al, -ai, -ai, -al, -ao, am, aj, ah, ak, an, -an, -ak, -ah, -aj, -am, ao, al, ai, ai, al, ao, -am, -aj, -ah, -ak, -an, an, ak, ah, aj, am, -ao, -al, -ai, -ai, -al, -ao, am, aj, ah, ak, an, -an, -ak, -ah, -aj, -am, ao, al, ai }
{ bl, by, -ck, -bx, -bk, -bm, -bz, cj, bw, bj, bn, ca, -ci, -bv, -bi, -bo, -cb, ch, bu, bh, bp, cc, -cg, -bt, -bg, -bq, -cd, cf, bs, bf, br, ce, -ce, -br, -bf, -bs, -cf, cd, bq, bg, bt, cg, -cc, -bp, -bh, -bu, -ch, cb, bo, bi, bv, ci, -ca, -bn, -bj, -bw, -cj, bz, bm, bk, bx, ck, -by, -bl }
{ as, az, -bd, -aw, -ap, -av, -bc, ba, at, ar, ay, -be, -ax, -aq, -au, -bb, bb, au, aq, ax, be, -ay, -ar, -at, -ba, bc, av, ap, aw, bd, -az, -as, -as, -az, bd, aw, ap, av, bc, -ba, -at, -ar, -ay, be, ax, aq, au, bb, -bb, -au, -aq, -ax, -be, ay, ar, at, ba, -bc, -av, -ap, -aw, -bd, az, as }
{ bm, cb, -cf, -bq, -bi, -bx, cj, bu, bf, bt, ci, -by, -bj, -bp, -ce, cc, bn, bl, ca, -cg, -br, -bh, -bw, ck, bv, bg, bs, ch, -bz, -bk, -bo, -cd, cd, bo, bk, bz, -ch, -bs, -bg, -bv, -ck, bw, bh, br, cg, -ca, -bl, -bn, -cc, ce, bp, bj, by, -ci, -bt, -bf, -bu, -cj, bx, bi, bq, cf, -cb, -bm }
{ ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab, ab, ac, -ac, -ab, -ab, -ac, ac, ab }
{ bn, ce, -ca, -bj, -br, -ci, bw, bf, bv, -cj, -bs, -bi, -bz, cf, bo, bm, cd, -cb, -bk, -bq, -ch, bx, bg, bu, -ck, -bt, -bh, -by, cg, bp, bl, cc, -cc, -bl, -bp, -cg, by, bh, bt, ck, -bu, -bg, -bx, ch, bq, bk, cb, -cd, -bm, -bo, -cf, bz, bi, bs, cj, -bv, -bf, -bw, ci, br, bj, ca, -ce, -bn }
{ at, bc, -ay, -ap, -ax, bd, au, as, bb, -az, -aq, -aw, be, av, ar, ba, -ba, -ar, -av, -be, aw, aq, az, -bb, -as, -au, -bd, ax, ap, ay, -bc, -at, -at, -bc, ay, ap, ax, -bd, -au, -as, -bb, az, aq, aw, -be, -av, -ar, -ba, ba, ar, av, be, -aw, -aq, -az, bb, as, au, bd, -ax, -ap, -ay, bc, at }
{ bo, ch, -bv, -bh, -ca, cc, bj, bt, -cj, -bq, -bm, -cf, bx, bf, by, -ce, -bl, -br, -ck, bs, bk, cd, -bz, -bg, -bw, cg, bn, bp, ci, -bu, -bi, -cb, cb, bi, bu, -ci, -bp, -bn, -cg, bw, bg, bz, -cd, -bk, -bs, ck, br, bl, ce, -by, -bf, -bx, cf, bm, bq, cj, -bt, -bj, -cc, ca, bh, bv, -ch, -bo }
{ aj, ao, -ak, -ai, -an, al, ah, am, -am, -ah, -al, an, ai, ak, -ao, -aj, -aj, -ao, ak, ai, an, -al, -ah, -am, am, ah, al, -an, -ai, -ak, ao, aj, aj, ao, -ak, -ai, -an, al, ah, am, -am, -ah, -al, an, ai, ak, -ao, -aj, -aj, -ao, ak, ai, an, -al, -ah, -am, am, ah, al, -an, -ai, -ak, ao, aj }
{ bp, ck, -bq, -bo, -cj, br, bn, ci, -bs, -bm, -ch, bt, bl, cg, -bu, -bk, -cf, bv, bj, ce, -bw, -bi, -cd, bx, bh, cc, -by, -bg, -cb, bz, bf, ca, -ca, -bf, -bz, cb, bg, by, -cc, -bh, -bx, cd, bi, bw, -ce, -bj, -bv, cf, bk, bu, -cg, -bl, -bt, ch, bm, bs, -ci, -bn, -br, cj, bo, bq, -ck, -bp }
{ au, -be, -at, -av, bd, as, aw, -bc, -ar, -ax, bb, aq, ay, -ba, -ap, -az, az, ap, ba, -ay, -aq, -bb, ax, ar, bc, -aw, -as, -bd, av, at, be, -au, -au, be, at, av, -bd, -as, -aw, bc, ar, ax, -bb, -aq, -ay, ba, ap, az, -az, -ap, -ba, ay, aq, bb, -ax, -ar, -bc, aw, as, bd, -av, -at, -be, au }
{ bq, -ci, -bl, -bv, cd, bg, ca, -by, -bi, -cf, bt, bn, ck, -bo, -bs, cg, bj, bx, -cb, -bf, -cc, bw, bk, ch, -br, -bp, cj, bm, bu, -ce, -bh, -bz, bz, bh, ce, -bu, -bm, -cj, bp, br, -ch, -bk, -bw, cc, bf, cb, -bx, -bj, -cg, bs, bo, -ck, -bn, -bt, cf, bi, by, -ca, -bg, -cd, bv, bl, ci, -bq }
{ ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae, ae, -ag, -ad, -af, af, ad, ag, -ae, -ae, ag, ad, af, -af, -ad, -ag, ae }
{ br, -cf, -bg, -cc, bu, bo, -ci, -bj, -bz, bx, bl, ck, -bm, -bw, ca, bi, ch, -bp, -bt, cd, bf, ce, -bs, -bq, cg, bh, cb, -bv, -bn, cj, bk, by, -by, -bk, -cj, bn, bv, -cb, -bh, -cg, bq, bs, -ce, -bf, -cd, bt, bp, -ch, -bi, -ca, bw, bm, -ck, -bl, -bx, bz, bj, ci, -bo, -bu, cc, bg, cf, -br }
{ av, -bb, -ap, -bc, au, aw, -ba, -aq, -bd, at, ax, -az, -ar, -be, as, ay, -ay, -as, be, ar, az, -ax, -at, bd, aq, ba, -aw, -au, bc, ap, bb, -av, -av, bb, ap, bc, -au, -aw, ba, aq, bd, -at, -ax, az, ar, be, -as, -ay, ay, as, -be, -ar, -az, ax, at, -bd, -aq, -ba, aw, au, -bc, -ap, -bb, av }
{ bs, -cc, -bi, -cj, bl, bz, -bv, -bp, cf, bf, cg, -bo, -bw, by, bm, -ci, -bh, -cd, br, bt, -cb, -bj, -ck, bk, ca, -bu, -bq, ce, bg, ch, -bn, -bx, bx, bn, -ch, -bg, -ce, bq, bu, -ca, -bk, ck, bj, cb, -bt, -br, cd, bh, ci, -bm, -by, bw, bo, -cg, -bf, -cf, bp, bv, -bz, -bl, cj, bi, cc, -bs }
{ ak, -am, -ai, ao, ah, an, -aj, -al, al, aj, -an, -ah, -ao, ai, am, -ak, -ak, am, ai, -ao, -ah, -an, aj, al, -al, -aj, an, ah, ao, -ai, -am, ak, ak, -am, -ai, ao, ah, an, -aj, -al, al, aj, -an, -ah, -ao, ai, am, -ak, -ak, am, ai, -ao, -ah, -an, aj, al, -al, -aj, an, ah, ao, -ai, -am, ak }
{ bt, -bz, -bn, cf, bh, ck, -bi, -ce, bo, by, -bu, -bs, ca, bm, -cg, -bg, -cj, bj, cd, -bp, -bx, bv, br, -cb, -bl, ch, bf, ci, -bk, -cc, bq, bw, -bw, -bq, cc, bk, -ci, -bf, -ch, bl, cb, -br, -bv, bx, bp, -cd, -bj, cj, bg, cg, -bm, -ca, bs, bu, -by, -bo, ce, bi, -ck, -bh, -cf, bn, bz, -bt }
{ aw, -ay, -au, ba, as, -bc, -aq, be, ap, bd, -ar, -bb, at, az, -av, -ax, ax, av, -az, -at, bb, ar, -bd, -ap, -be, aq, bc, -as, -ba, au, ay, -aw, -aw, ay, au, -ba, -as, bc, aq, -be, -ap, -bd, ar, bb, -at, -az, av, ax, -ax, -av, az, at, -bb, -ar, bd, ap, be, -aq, -bc, as, ba, -au, -ay, aw }
{ bu, -bw, -bs, by, bq, -ca, -bo, cc, bm, -ce, -bk, cg, bi, -ci, -bg, ck, bf, cj, -bh, -ch, bj, cf, -bl, -cd, bn, cb, -bp, -bz, br, bx, -bt, -bv, bv, bt, -bx, -br, bz, bp, -cb, -bn, cd, bl, -cf, -bj, ch, bh, -cj, -bf, -ck, bg, ci, -bi, -cg, bk, ce, -bm, -cc, bo, ca, -bq, -by, bs, bw, -bu }
{ aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa, aa, -aa, -aa, aa }
{ bv, -bt, -bx, br, bz, -bp, -cb, bn, cd, -bl, -cf, bj, ch, -bh, -cj, bf, -ck, -bg, ci, bi, -cg, -bk, ce, bm, -cc, -bo, ca, bq, -by, -bs, bw, bu, -bu, -bw, bs, by, -bq, -ca, bo, cc, -bm, -ce, bk, cg, -bi, -ci, bg, ck, -bf, cj, bh, -ch, -bj, cf, bl, -cd, -bn, cb, bp, -bz, -br, bx, bt, -bv }
{ ax, -av, -az, at, bb, -ar, -bd, ap, -be, -aq, bc, as, -ba, -au, ay, aw, -aw, -ay, au, ba, -as, -bc, aq, be, -ap, bd, ar, -bb, -at, az, av, -ax, -ax, av, az, -at, -bb, ar, bd, -ap, be, aq, -bc, -as, ba, au, -ay, -aw, aw, ay, -au, -ba, as, bc, -aq, -be, ap, -bd, -ar, bb, at, -az, -av, ax }
{ bw, -bq, -cc, bk, ci, -bf, ch, bl, -cb, -br, bv, bx, -bp, -cd, bj, cj, -bg, cg, bm, -ca, -bs, bu, by, -bo, -ce, bi, ck, -bh, cf, bn, -bz, -bt, bt, bz, -bn, -cf, bh, -ck, -bi, ce, bo, -by, -bu, bs, ca, -bm, -cg, bg, -cj, -bj, cd, bp, -bx, -bv, br, cb, -bl, -ch, bf, -ci, -bk, cc, bq, -bw }
{ al, -aj, -an, ah, -ao, -ai, am, ak, -ak, -am, ai, ao, -ah, an, aj, -al, -al, aj, an, -ah, ao, ai, -am, -ak, ak, am, -ai, -ao, ah, -an, -aj, al, al, -aj, -an, ah, -ao, -ai, am, ak, -ak, -am, ai, ao, -ah, an, aj, -al, -al, aj, an, -ah, ao, ai, -am, -ak, ak, am, -ai, -ao, ah, -an, -aj, al }
{ bx, -bn, -ch, bg, -ce, -bq, bu, ca, -bk, -ck, bj, -cb, -bt, br, cd, -bh, ci, bm, -by, -bw, bo, cg, -bf, cf, bp, -bv, -bz, bl, cj, -bi, cc, bs, -bs, -cc, bi, -cj, -bl, bz, bv, -bp, -cf, bf, -cg, -bo, bw, by, -bm, -ci, bh, -cd, -br, bt, cb, -bj, ck, bk, -ca, -bu, bq, ce, -bg, ch, bn, -bx }
{ ay, -as, -be, ar, -az, -ax, at, bd, -aq, ba, aw, -au, -bc, ap, -bb, -av, av, bb, -ap, bc, au, -aw, -ba, aq, -bd, -at, ax, az, -ar, be, as, -ay, -ay, as, be, -ar, az, ax, -at, -bd, aq, -ba, -aw, au, bc, -ap, bb, av, -av, -bb, ap, -bc, -au, aw, ba, -aq, bd, at, -ax, -az, ar, -be, -as, ay }
{ by, -bk, cj, bn, -bv, -cb, bh, -cg, -bq, bs, ce, -bf, cd, bt, -bp, -ch, bi, -ca, -bw, bm, ck, -bl, bx, bz, -bj, ci, bo, -bu, -cc, bg, -cf, -br, br, cf, -bg, cc, bu, -bo, -ci, bj, -bz, -bx, bl, -ck, -bm, bw, ca, -bi, ch, bp, -bt, -cd, bf, -ce, -bs, bq, cg, -bh, cb, bv, -bn, -cj, bk, -by }
{ af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af, af, -ad, ag, ae, -ae, -ag, ad, -af, -af, ad, -ag, -ae, ae, ag, -ad, af }
{ bz, -bh, ce, bu, -bm, cj, bp, -br, -ch, bk, -bw, -cc, bf, -cb, -bx, bj, -cg, -bs, bo, ck, -bn, bt, cf, -bi, by, ca, -bg, cd, bv, -bl, ci, bq, -bq, -ci, bl, -bv, -cd, bg, -ca, -by, bi, -cf, -bt, bn, -ck, -bo, bs, cg, -bj, bx, cb, -bf, cc, bw, -bk, ch, br, -bp, -cj, bm, -bu, -ce, bh, -bz }
{ az, -ap, ba, ay, -aq, bb, ax, -ar, bc, aw, -as, bd, av, -at, be, au, -au, -be, at, -av, -bd, as, -aw, -bc, ar, -ax, -bb, aq, -ay, -ba, ap, -az, -az, ap, -ba, -ay, aq, -bb, -ax, ar, -bc, -aw, as, -bd, -av, at, -be, -au, au, be, -at, av, bd, -as, aw, bc, -ar, ax, bb, -aq, ay, ba, -ap, az }
{ ca, -bf, bz, cb, -bg, by, cc, -bh, bx, cd, -bi, bw, ce, -bj, bv, cf, -bk, bu, cg, -bl, bt, ch, -bm, bs, ci, -bn, br, cj, -bo, bq, ck, -bp, bp, -ck, -bq, bo, -cj, -br, bn, -ci, -bs, bm, -ch, -bt, bl, -cg, -bu, bk, -cf, -bv, bj, -ce, -bw, bi, -cd, -bx, bh, -cc, -by, bg, -cb, -bz, bf, -ca }
{ am, -ah, al, an, -ai, ak, ao, -aj, aj, -ao, -ak, ai, -an, -al, ah, -am, -am, ah, -al, -an, ai, -ak, -ao, aj, -aj, ao, ak, -ai, an, al, -ah, am, am, -ah, al, an, -ai, ak, ao, -aj, aj, -ao, -ak, ai, -an, -al, ah, -am, -am, ah, -al, -an, ai, -ak, -ao, aj, -aj, ao, ak, -ai, an, al, -ah, am }
{ cb, -bi, bu, ci, -bp, bn, -cg, -bw, bg, -bz, -cd, bk, -bs, -ck, br, -bl, ce, by, -bf, bx, cf, -bm, bq, -cj, -bt, bj, -cc, -ca, bh, -bv, -ch, bo, -bo, ch, bv, -bh, ca, cc, -bj, bt, cj, -bq, bm, -cf, -bx, bf, -by, -ce, bl, -br, ck, bs, -bk, cd, bz, -bg, bw, cg, -bn, bp, -ci, -bu, bi, -cb }
{ ba, -ar, av, -be, -aw, aq, -az, -bb, as, -au, bd, ax, -ap, ay, bc, -at, at, -bc, -ay, ap, -ax, -bd, au, -as, bb, az, -aq, aw, be, -av, ar, -ba, -ba, ar, -av, be, aw, -aq, az, bb, -as, au, -bd, -ax, ap, -ay, -bc, at, -at, bc, ay, -ap, ax, bd, -au, as, -bb, -az, aq, -aw, -be, av, -ar, ba }
{ cc, -bl, bp, -cg, -by, bh, -bt, ck, bu, -bg, bx, ch, -bq, bk, -cb, -cd, bm, -bo, cf, bz, -bi, bs, -cj, -bv, bf, -bw, -ci, br, -bj, ca, ce, -bn, bn, -ce, -ca, bj, -br, ci, bw, -bf, bv, cj, -bs, bi, -bz, -cf, bo, -bm, cd, cb, -bk, bq, -ch, -bx, bg, -bu, -ck, bt, -bh, by, cg, -bp, bl, -cc }
{ ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac, ac, -ab, ab, -ac, -ac, ab, -ab, ac }
{ cd, -bo, bk, -bz, -ch, bs, -bg, bv, -ck, -bw, bh, -br, cg, ca, -bl, bn, -cc, -ce, bp, -bj, by, ci, -bt, bf, -bu, cj, bx, -bi, bq, -cf, -cb, bm, -bm, cb, cf, -bq, bi, -bx, -cj, bu, -bf, bt, -ci, -by, bj, -bp, ce, cc, -bn, bl, -ca, -cg, br, -bh, bw, ck, -bv, bg, -bs, ch, bz, -bk, bo, -cd }
{ bb, -au, aq, -ax, be, ay, -ar, at, -ba, -bc, av, -ap, aw, -bd, -az, as, -as, az, bd, -aw, ap, -av, bc, ba, -at, ar, -ay, -be, ax, -aq, au, -bb, -bb, au, -aq, ax, -be, -ay, ar, -at, ba, bc, -av, ap, -aw, bd, az, -as, as, -az, -bd, aw, -ap, av, -bc, -ba, at, -ar, ay, be, -ax, aq, -au, bb }
{ ce, -br, bf, -bs, cf, cd, -bq, bg, -bt, cg, cc, -bp, bh, -bu, ch, cb, -bo, bi, -bv, ci, ca, -bn, bj, -bw, cj, bz, -bm, bk, -bx, ck, by, -bl, bl, -by, -ck, bx, -bk, bm, -bz, -cj, bw, -bj, bn, -ca, -ci, bv, -bi, bo, -cb, -ch, bu, -bh, bp, -cc, -cg, bt, -bg, bq, -cd, -cf, bs, -bf, br, -ce }
{ an, -ak, ah, -aj, am, ao, -al, ai, -ai, al, -ao, -am, aj, -ah, ak, -an, -an, ak, -ah, aj, -am, -ao, al, -ai, ai, -al, ao, am, -aj, ah, -ak, an, an, -ak, ah, -aj, am, ao, -al, ai, -ai, al, -ao, -am, aj, -ah, ak, -an, -an, ak, -ah, aj, -am, -ao, al, -ai, ai, -al, ao, am, -aj, ah, -ak, an }
{ cf, -bu, bj, -bl, bw, -ch, -cd, bs, -bh, bn, -by, cj, cb, -bq, bf, -bp, ca, ck, -bz, bo, -bg, br, -cc, -ci, bx, -bm, bi, -bt, ce, cg, -bv, bk, -bk, bv, -cg, -ce, bt, -bi, bm, -bx, ci, cc, -br, bg, -bo, bz, -ck, -ca, bp, -bf, bq, -cb, -cj, by, -bn, bh, -bs, cd, ch, -bw, bl, -bj, bu, -cf }
{ bc, -ax, as, -aq, av, -ba, -be, az, -au, ap, -at, ay, -bd, -bb, aw, -ar, ar, -aw, bb, bd, -ay, at, -ap, au, -az, be, ba, -av, aq, -as, ax, -bc, -bc, ax, -as, aq, -av, ba, be, -az, au, -ap, at, -ay, bd, bb, -aw, ar, -ar, aw, -bb, -bd, ay, -at, ap, -au, az, -be, -ba, av, -aq, as, -ax, bc }
{ cg, -bx, bo, -bf, bn, -bw, cf, ch, -by, bp, -bg, bm, -bv, ce, ci, -bz, bq, -bh, bl, -bu, cd, cj, -ca, br, -bi, bk, -bt, cc, ck, -cb, bs, -bj, bj, -bs, cb, -ck, -cc, bt, -bk, bi, -br, ca, -cj, -cd, bu, -bl, bh, -bq, bz, -ci, -ce, bv, -bm, bg, -bp, by, -ch, -cf, bw, -bn, bf, -bo, bx, -cg }
{ ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag, ag, -af, ae, -ad, ad, -ae, af, -ag, -ag, af, -ae, ad, -ad, ae, -af, ag }
{ ch, -ca, bt, -bm, bf, -bl, bs, -bz, cg, ci, -cb, bu, -bn, bg, -bk, br, -by, cf, cj, -cc, bv, -bo, bh, -bj, bq, -bx, ce, ck, -cd, bw, -bp, bi, -bi, bp, -bw, cd, -ck, -ce, bx, -bq, bj, -bh, bo, -bv, cc, -cj, -cf, by, -br, bk, -bg, bn, -bu, cb, -ci, -cg, bz, -bs, bl, -bf, bm, -bt, ca, -ch }
{ bd, -ba, ax, -au, ar, -ap, as, -av, ay, -bb, be, bc, -az, aw, -at, aq, -aq, at, -aw, az, -bc, -be, bb, -ay, av, -as, ap, -ar, au, -ax, ba, -bd, -bd, ba, -ax, au, -ar, ap, -as, av, -ay, bb, -be, -bc, az, -aw, at, -aq, aq, -at, aw, -az, bc, be, -bb, ay, -av, as, -ap, ar, -au, ax, -ba, bd }
{ ci, -cd, by, -bt, bo, -bj, bf, -bk, bp, -bu, bz, -ce, cj, ch, -cc, bx, -bs, bn, -bi, bg, -bl, bq, -bv, ca, -cf, ck, cg, -cb, bw, -br, bm, -bh, bh, -bm, br, -bw, cb, -cg, -ck, cf, -ca, bv, -bq, bl, -bg, bi, -bn, bs, -bx, cc, -ch, -cj, ce, -bz, bu, -bp, bk, -bf, bj, -bo, bt, -by, cd, -ci }
{ ao, -an, am, -al, ak, -aj, ai, -ah, ah, -ai, aj, -ak, al, -am, an, -ao, -ao, an, -am, al, -ak, aj, -ai, ah, -ah, ai, -aj, ak, -al, am, -an, ao, ao, -an, am, -al, ak, -aj, ai, -ah, ah, -ai, aj, -ak, al, -am, an, -ao, -ao, an, -am, al, -ak, aj, -ai, ah, -ah, ai, -aj, ak, -al, am, -an, ao }
{ cj, -cg, cd, -ca, bx, -bu, br, -bo, bl, -bi, bf, -bh, bk, -bn, bq, -bt, bw, -bz, cc, -cf, ci, ck, -ch, ce, -cb, by, -bv, bs, -bp, bm, -bj, bg, -bg, bj, -bm, bp, -bs, bv, -by, cb, -ce, ch, -ck, -ci, cf, -cc, bz, -bw, bt, -bq, bn, -bk, bh, -bf, bi, -bl, bo, -br, bu, -bx, ca, -cd, cg, -cj }
{ be, -bd, bc, -bb, ba, -az, ay, -ax, aw, -av, au, -at, as, -ar, aq, -ap, ap, -aq, ar, -as, at, -au, av, -aw, ax, -ay, az, -ba, bb, -bc, bd, -be, -be, bd, -bc, bb, -ba, az, -ay, ax, -aw, av, -au, at, -as, ar, -aq, ap, -ap, aq, -ar, as, -at, au, -av, aw, -ax, ay, -az, ba, -bb, bc, -bd, be }
{ ck, -cj, ci, -ch, cg, -cf, ce, -cd, cc, -cb, ca, -bz, by, -bx, bw, -bv, bu, -bt, bs, -br, bq, -bp, bo, -bn, bm, -bl, bk, -bj, bi, -bh, bg, -bf, bf, -bg, bh, -bi, bj, -bk, bl, -bm, bn, -bo, bp, -bq, br, -bs, bt, -bu, bv, -bw, bx, -by, bz, -ca, cb, -cc, cd, -ce, cf, -cg, ch, -ci, cj, -ck }
}
여기서,
Figure pct00005
(식 1)
HEVC에 사용된 DCT-2 및 4×4 DST-7 외에도, AMT(Adaptive Multiple Transform)(EMT(Enhanced Multiple Transform) 또는 MTS(Multiple Transform Selection)로 지칭될 수 있음) 방식이, 인터 및 인트라 코딩된 블록들에 대한 잔차 코딩(residual coding)을 위해 VVC에 사용되었다. 이는, HEVC에서의 현재 변환들 외에 DCT/DST 군(family)들로부터 선택된 다수의 변환들을 사용한다. 새롭게 도입된 변환 행렬들은 DST-7, DCT-8이다. 표 6은 선택된 DST/DCT의 기본 함수들을 보여준다.
표 6: N-포인트 입력에 대한 DCT-2, DST-7 및 DCT-8의 변환 기본 함수들
Figure pct00006
VVC의 모든 1차 변환 행렬들은 8-비트 표현과 함께 사용된다. AMT는 폭과 높이 둘 다 32보다 작거나 같은 CU들에 적용되며, AMT 적용 여부는 mts_flag로 불리는 플래그에 의해 제어된다. mts_flag가 0과 같다면, 잔차 코딩을 위해 DCT-2 만이 적용된다. mts_flag가 1과 같다면, 인덱스 mts_idx는 표 7에 따라 사용될 수평 및 수직 변환을 지정하기 위해 2개의 빈(bin)들을 사용하여 추가로 시그널링되며, 여기서 값 1은 DST-7를 사용하는 것을 의미하고 값 2는 DCT-8를 사용하는 것을 의미한다.
표 7: mts_ idx [x][y][ cIdx ]에 따른 trTypeHor trTypeVer 사양
Figure pct00007
DST-7의 기본 벡터들로 구성된 행렬인 변환 코어가 또한 아래에서 표현될 수 있다:
8: 4 -포인트 DST-7 :
Figure pct00008
여기서,
Figure pct00009
(식 2)
9: 8 -포인트 DST-7 :
Figure pct00010
여기서,
Figure pct00011
(식 3)
10: 16 -포인트 DST-7 :
Figure pct00012
여기서,
Figure pct00013
(식 4)
11: 32 -포인트 DST-7:
{ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F,}
{ c, f, i, l, o, r, u, x, A, D, F, C, z, w, t, q, n, k, h, e, b, -a, -d, -g, -j, -m, -p, -s, -v, -y, -B, -E,}
{ e, j, o, t, y, D, D, y, t, o, j, e, 0, -e, -j, -o, -t, -y, -D, -D, -y, -t, -o, -j, -e, 0, e, j, o, t, y, D,}
{ g, n, u, B, D, w, p, i, b, -e, -l, -s, -z, -F, -y, -r, -k, -d, c, j, q, x, E, A, t, m, f, -a, -h, -o, -v, -C,}
{ i, r, A, C, t, k, b, -g, -p, -y, -E, -v, -m, -d, e, n, w, F, x, o, f, -c, -l, -u, -D, -z, -q, -h, a, j, s, B,}
{ k, v, F, u, j, -a, -l, -w, -E, -t, -i, b, m, x, D, s, h, -c, -n, -y, -C, -r, -g, d, o, z, B, q, f, -e, -p, -A,}
{ m, z, z, m, 0, -m, -z, -z, -m, 0, m, z, z, m, 0, -m, -z, -z, -m, 0, m, z, z, m, 0, -m, -z, -z, -m, 0, m, z,}
{ o, D, t, e, -j, -y, -y, -j, e, t, D, o, 0, -o, -D, -t, -e, j, y, y, j, -e, -t, -D, -o, 0, o, D, t, e, -j, -y,}
{ q, E, n, -c, -t, -B, -k, f, w, y, h, -i, -z, -v, -e, l, C, s, b, -o, -F, -p, a, r, D, m, -d, -u, -A, -j, g, x,}
{ s, A, h, -k, -D, -p, c, v, x, e, -n, -F, -m, f, y, u, b, -q, -C, -j, i, B, r, -a, -t, -z, -g, l, E, o, -d, -w,}
{ u, w, b, -s, -y, -d, q, A, f, -o, -C, -h, m, E, j, -k, -F, -l, i, D, n, -g, -B, -p, e, z, r, -c, -x, -t, a, v,}
{ w, s, -d, -A, -o, h, E, k, -l, -D, -g, p, z, c, -t, -v, a, x, r, -e, -B, -n, i, F, j, -m, -C, -f, q, y, b, -u,}
{ y, o, -j, -D, -e, t, t, -e, -D, -j, o, y, 0, -y, -o, j, D, e, -t, -t, e, D, j, -o, -y, 0, y, o, -j, -D, -e, t,}
{ A, k, -p, -v, e, F, f, -u, -q, j, B, a, -z, -l, o, w, -d, -E, -g, t, r, -i, -C, -b, y, m, -n, -x, c, D, h, -s,}
{ C, g, -v, -n, o, u, -h, -B, a, D, f, -w, -m, p, t, -i, -A, b, E, e, -x, -l, q, s, -j, -z, c, F, d, -y, -k, r,}
{ E, c, -B, -f, y, i, -v, -l, s, o, -p, -r, m, u, -j, -x, g, A, -d, -D, a, F, b, -C, -e, z, h, -w, -k, t, n, -q,}
{ F, -a, -E, b, D, -c, -C, d, B, -e, -A, f, z, -g, -y, h, x, -i, -w, j, v, -k, -u, l, t, -m, -s, n, r, -o, -q, p,}
{ D, -e, -y, j, t, -o, -o, t, j, -y, -e, D, 0, -D, e, y, -j, -t, o, o, -t, -j, y, e, -D, 0, D, -e, -y, j, t, -o,}
{ B, -i, -s, r, j, -A, -a, C, -h, -t, q, k, -z, -b, D, -g, -u, p, l, -y, -c, E, -f, -v, o, m, -x, -d, F, -e, -w, n,}
{ z, -m, -m, z, 0, -z, m, m, -z, 0, z, -m, -m, z, 0, -z, m, m, -z, 0, z, -m, -m, z, 0, -z, m, m, -z, 0, z, -m,}
{ x, -q, -g, E, -j, -n, A, -c, -u, t, d, -B, m, k, -D, f, r, -w, -a, y, -p, -h, F, -i, -o, z, -b, -v, s, e, -C, l,}
{ v, -u, -a, w, -t, -b, x, -s, -c, y, -r, -d, z, -q, -e, A, -p, -f, B, -o, -g, C, -n, -h, D, -m, -i, E, -l, -j, F, -k,}
{ t, -y, e, o, -D, j, j, -D, o, e, -y, t, 0, -t, y, -e, -o, D, -j, -j, D, -o, -e, y, -t, 0, t, -y, e, o, -D, j,}
{ r, -C, k, g, -y, v, -d, -n, F, -o, -c, u, -z, h, j, -B, s, -a, -q, D, -l, -f, x, -w, e, m, -E, p, b, -t, A, -i,}
{ p, -F, q, -a, -o, E, -r, b, n, -D, s, -c, -m, C, -t, d, l, -B, u, -e, -k, A, -v, f, j, -z, w, -g, -i, y, -x, h,}
{ n, -B, w, -i, -e, s, -F, r, -d, -j, x, -A, m, a, -o, C, -v, h, f, -t, E, -q, c, k, -y, z, -l, -b, p, -D, u, -g,}
{ l, -x, C, -q, e, g, -s, E, -v, j, b, -n, z, -A, o, -c, -i, u, -F, t, -h, -d, p, -B, y, -m, a, k, -w, D, -r, f,}
{ j, -t, D, -y, o, -e, -e, o, -y, D, -t, j, 0, -j, t, -D, y, -o, e, e, -o, y, -D, t, -j, 0, j, -t, D, -y, o, -e,}
{ h, -p, x, -F, y, -q, i, -a, -g, o, -w, E, -z, r, -j, b, f, -n, v, -D, A, -s, k, -c, -e, m, -u, C, -B, t, -l, d,}
{ f, -l, r, -x, D, -C, w, -q, k, -e, -a, g, -m, s, -y, E, -B, v, -p, j, -d, -b, h, -n, t, -z, F, -A, u, -o, i, -c,}
{ d, -h, l, -p, t, -x, B, -F, C, -y, u, -q, m, -i, e, -a, -c, g, -k, o, -s, w, -A, E, -D, z, -v, r, -n, j, -f, b,}
{ b, -d, f, -h, j, -l, n, -p, r, -t, v, -x, z, -B, D, -F, E, -C, A, -y, w, -u, s, -q, o, -m, k, -i, g, -e, c, -a,}
여기서,
Figure pct00014
(식 5)
12: 4 -포인트 DCT-8:
Figure pct00015
여기서,
Figure pct00016
(식 6)
13: 8 -포인트 DCT-8:
Figure pct00017
여기서,
Figure pct00018
(식 7)
14: 16 -포인트 DCT-8:
Figure pct00019
여기서,
Figure pct00020
(식 8)
15: 32 -포인트 DCT-8:
{ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F,}
{ b, e, h, k, n, q, t, w, z, C, F, -E, -B, -y, -v, -s, -p, -m, -j, -g, -d, -a, -c, -f, -i, -l, -o, -r, -u, -x, -A, -D,}
{ c, h, m, r, w, B, 0, -B, -w, -r, -m, -h, -c, -c, -h, -m, -r, -w, -B, 0, B, w, r, m, h, c, c, h, m, r, w, B,}
{ d, k, r, y, F, -A, -t, -m, -f, -b, -i, -p, -w, -D, C, v, o, h, a, g, n, u, B, -E, -x, -q, -j, -c, -e, -l, -s, -z,}
{ e, n, w, F, -y, -p, -g, -c, -l, -u, -D, A, r, i, a, j, s, B, -C, -t, -k, -b, -h, -q, -z, E, v, m, d, f, o, x,}
{ f, q, B, -A, -p, -e, -g, -r, -C, z, o, d, h, s, D, -y, -n, -c, -i, -t, -E, x, m, b, j, u, F, -w, -l, -a, -k, -v,}
{ g, t, 0, -t, -g, -g, -t, 0, t, g, g, t, 0, -t, -g, -g, -t, 0, t, g, g, t, 0, -t, -g, -g, -t, 0, t, g, g, t,}
{ h, w, -B, -m, -c, -r, 0, r, c, m, B, -w, -h, -h, -w, B, m, c, r, 0, -r, -c, -m, -B, w, h, h, w, -B, -m, -c, -r,}
{ i, z, -w, -f, -l, -C, t, c, o, F, -q, -a, -r, E, n, d, u, -B, -k, -g, -x, y, h, j, A, -v, -e, -m, -D, s, b, p,}
{ j, C, -r, -b, -u, z, g, m, F, -o, -e, -x, w, d, p, -E, -l, -h, -A, t, a, s, -B, -i, -k, -D, q, c, v, -y, -f, -n,}
{ k, F, -m, -i, -D, o, g, B, -q, -e, -z, s, c, x, -u, -a, -v, w, b, t, -y, -d, -r, A, f, p, -C, -h, -n, E, j, l,}
{ l, -E, -h, -p, A, d, t, -w, -a, -x, s, e, B, -o, -i, -F, k, m, -D, -g, -q, z, c, u, -v, -b, -y, r, f, C, -n, -j,}
{ m, -B, -c, -w, r, h, 0, -h, -r, w, c, B, -m, -m, B, c, w, -r, -h, 0, h, r, -w, -c, -B, m, m, -B, -c, -w, r, h,}
{ n, -y, -c, -D, i, s, -t, -h, E, d, x, -o, -m, z, b, C, -j, -r, u, g, -F, -e, -w, p, l, -A, -a, -B, k, q, -v, -f,}
{ o, -v, -h, C, a, D, -g, -w, n, p, -u, -i, B, b, E, -f, -x, m, q, -t, -j, A, c, F, -e, -y, l, r, -s, -k, z, d,}
{ p, -s, -m, v, j, -y, -g, B, d, -E, -a, -F, c, C, -f, -z, i, w, -l, -t, o, q, -r, -n, u, k, -x, -h, A, e, -D, -b,}
{ q, -p, -r, o, s, -n, -t, m, u, -l, -v, k, w, -j, -x, i, y, -h, -z, g, A, -f, -B, e, C, -d, -D, c, E, -b, -F, a,}
{ r, -m, -w, h, B, -c, 0, c, -B, -h, w, m, -r, -r, m, w, -h, -B, c, 0, -c, B, h, -w, -m, r, r, -m, -w, h, B, -c,}
{ s, -j, -B, a, -C, -i, t, r, -k, -A, b, -D, -h, u, q, -l, -z, c, -E, -g, v, p, -m, -y, d, -F, -f, w, o, -n, -x, e,}
{ t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g, 0, g, -t, -t, g, 0, -g, t, t, -g,}
{ u, -d, B, n, -k, -E, g, -r, -x, a, -y, -q, h, -F, -j, o, A, -c, v, t, -e, C, m, -l, -D, f, -s, -w, b, -z, -p, i,}
{ v, -a, w, u, -b, x, t, -c, y, s, -d, z, r, -e, A, q, -f, B, p, -g, C, o, -h, D, n, -i, E, m, -j, F, l, -k,}
{ w, -c, r, B, -h, m, 0, -m, h, -B, -r, c, -w, -w, c, -r, -B, h, -m, 0, m, -h, B, r, -c, w, w, -c, r, B, -h, m,}
{ x, -f, m, -E, -q, b, -t, -B, j, -i, A, u, -c, p, F, -n, e, -w, -y, g, -l, D, r, -a, s, C, -k, h, -z, -v, d, -o,}
{ y, -i, h, -x, -z, j, -g, w, A, -k, f, -v, -B, l, -e, u, C, -m, d, -t, -D, n, -c, s, E, -o, b, -r, -F, p, -a, q,}
{ z, -l, c, -q, E, u, -g, h, -v, -D, p, -b, m, -A, -y, k, -d, r, -F, -t, f, -i, w, C, -o, a, -n, B, x, -j, e, -s,}
{ A, -o, c, -j, v, F, -t, h, -e, q, -C, -y, m, -a, l, -x, -D, r, -f, g, -s, E, w, -k, b, -n, z, B, -p, d, -i, u,}
{ B, -r, h, -c, m, -w, 0, w, -m, c, -h, r, -B, -B, r, -h, c, -m, w, 0, -w, m, -c, h, -r, B, B, -r, h, -c, m, -w,}
{ C, -u, m, -e, d, -l, t, -B, -D, v, -n, f, -c, k, -s, A, E, -w, o, -g, b, -j, r, -z, -F, x, -p, h, -a, i, -q, y,}
{ D, -x, r, -l, f, -a, g, -m, s, -y, E, C, -w, q, -k, e, -b, h, -n, t, -z, F, B, -v, p, -j, d, -c, i, -o, u, -A,}
{ E, -A, w, -s, o, -k, g, -c, b, -f, j, -n, r, -v, z, -D, -F, B, -x, t, -p, l, -h, d, -a, e, -i, m, -q, u, -y, C,}
{ F, -D, B, -z, x, -v, t, -r, p, -n, l, -j, h, -f, d, -b, a, -c, e, -g, i, -k, m, -o, q, -s, u, -w, y, -A, C, -E,}
여기서,
Figure pct00021
(식 9)
VVC에서, 코딩 블록의 높이와 폭 둘 다가 64보다 작거나 같은 경우, 변환 사이즈는 항상 코딩 블록 사이즈와 동일하다. 코딩 블록의 높이 또는 폭이 64보다 큰 경우, 변환 또는 인트라 예측을 수행할 때, 코딩 블록은 다수의 서브-블록들로 추가로 분할되며, 여기서 각각의 서브-블록의 폭과 높이는 64보다 작거나 같고, 각각의 서브-블록에 대해 하나의 변환이 수행된다.
JVET-J0024, JVET-K0139 및 JVET-L0358에서는, 공간적 가변 변환 방식이 제안되었다. SVT를 사용하면, 인터 예측 잔차들의 경우, 코딩 블록에 잔차 블록만 있지만, 잔차 블록이 코딩 블록보다 작으므로 SVT의 변환 사이즈가 코딩 블록 보다 작다. 잔차 블록 또는 변환에 의해 커버되지 않는 구역의 경우, 0 잔차가 가정된다.
보다 구체적으로, JVET-L0358에서 SVT는 또한 SBT(Sub-block Transform)로 불린다. SBT에서 지원되는 서브-블록 타입들(SVT-, SVT-H), 사이즈들 및 포지션들(왼쪽 절반, 왼쪽 1/4, 오른쪽 절반, 오른쪽 1/4, 상단 절반, 상단 1/4, 하단 절반, 하단 1/4)이 도 3에 도시된다. 문자 "A"로 라벨링된 음영 구역은 변환이 있는 잔차 블록이고, 다른 구역은 변환이 없는 0 잔차로 가정된다.
VVC에 더해 제안된 SBT를 사용함으로써 제안되는 사양 텍스트 변경들이 아래에 표시된다. SBT 방법들이 서브-블록 타입(수평 또는 수직), 사이즈(절단 또는 1/4) 및 포지션(왼쪽 또는 오른쪽, 상단 또는 하단)을 지시하기 위해 시그널링될 추가적 오버헤드 비트들(cu_sbt_flag, cu_sbt_quad_flag, cu_sbt_horizontal_flag, cu_sbt_pos_flag)를 필요로 한다는 것을 알 수 있다.
표 16: 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00022
표 17: 일반적인 슬라이스 헤더 신택스
Figure pct00023
Figure pct00024
Figure pct00025
표 18: 코딩 단위 신택스
Figure pct00026
Figure pct00027
Figure pct00028
표 19: 변환 트리 신택스
Figure pct00029
Figure pct00030
Figure pct00031
표 20: 변환 단위 신택스
Figure pct00032
Figure pct00033
시퀀스 파라미터 세트 RBSP 시맨틱(semantics)의 예에 따라, 0과 같은 sps_sbt_enabled_flag는, 인터-예측된 CU에 대한 서브-블록 변환이 비활성화(disable)되는 것을 지정한다. 1과 같은 sps_sbt_enabled_flag는, 인터-예측된 CU에 대한 서브-블록 변환이 활성화(enable)되는 것을 지정한다.
일반적 슬라이스 헤더 시맨틱의 예에 따라, 0과 같은 slice_sbt_max_size_64_flag는, 서브-블록 변환을 허용하기 위한 최대 CU 폭과 높이가 32라는 것을 지정한다. 1과 같은 slice_sbt_max_size_64_flag는, 서브-블록 변환을 허용하기 위한 최대 CU 폭과 높이가 64라는 것을 지정한다. 예가 아래에 표시된다:
Figure pct00034
(식 10)
코딩 단위 시맨틱의 예에 따라, 1과 같은 cu_sbt_flag[x0][y0]은, 현재 코딩 단위에 대해 서브-블록 변환이 사용되는 것을 지정한다. 0과 같은 cu_sbt_flag[x0][y0]은, 현재 코딩 단위에 대해 서브-블록 변환이 사용되지 않는다는 것을 지정한다. cu_sbt_flag[x0][y0]가 존재하지 않는 경우, 그 값은 0인 것으로 추론된다. 서브-블록 변환이 사용되는 경우, 코딩 단위는 2개의 변환 단위들로 타일링되고, 하나의 변환 단위는 잔차를 갖고, 다른 하나는 잔차를 갖지 않는다.
일 실시예에 따라, 1과 같은 cu_sbt_quad_flag[x0][y0]는, 현재 코딩 단위에 대해, 서브-블록 변환이 현재 코딩 단위의 1/4 사이즈의 변환 단위를 포함한다는 것을 지정한다. 0과 같은 cu_sbt_quad_flag[x0][y0]은, 현재 코딩 단위에 대해, 서브-블록 변환이 현재 코딩 단위의 1/2 사이즈의 변환 단위를 포함한다는 것을 지정한다. cu_sbt_quad_flag[x0][y0]이 존재하지 않는 경우, 그 값은 0인 것으로 추론된다.
일 실시예에 따라, 1과 같은 cu_sbt_horizontal_flag[x0][y0]는, 현재 코딩 단위가 수평 분할에 의해 2개의 변환 단위들로 타일링되는 것을 지정한다. 0과 같은 cu_sbt_horizontal_flag[x0][y0]은, 현재 코딩 단위가 수직 분할에 의해 2개의 변환 단위들로 타일링되는 것을 지정한다.
일 실시예에 따라, cu_sbt_horizontal_flag[x0][y0]이 존재하지 않는 경우, 그 값은 다음과 같이 도출된다:
- cu_sbt_quad_flag[x0][y0]이 1과 같다면, cu_sbt_horizontal_flag[x0][y0]은 allowSbtHoriQuad와 같도록 설정된다.
- 그렇지 않으면(cu_sbt_quad_flag[x0][y0]이 0과 같다면), cu_sbt_horizontal_flag[x0][y0]은 allowSbtHoriHalf와 같도록 설정된다.
일 실시예에 따라, 1과 같은 cu_sbt_pos_flag[x0][y0]은, 현재 코딩 단위의 제1 변환 단위의 tu_cbf_luma, tu_cbf_cb 및 tu_cbf_cr이 비트스트림에 존재하지 않는다는 것을 지정한다. 0과 같은 cu_sbt_pos_flag[x0][y0]은, 현재 코딩 단위의 제2 변환 단위의 tu_cbf_luma, tu_cbf_cb 및 tu_cbf_cr이 비트스트림에 존재하지 않는다는 것을 지정한다.
스케일링된 변환 계수들에 대한 변환 프로세스의 예가 아래에 표시된다. 이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플에 대한 현재 루마 변환 블록의 왼쪽 상단 샘플을 지정하는 루마 위치 (xTbY, yTbY),
- 현재 변환 블록의 폭을 지정하는 변수 nTbW,
- 현재 변환 블록의 높이를 지정하는 변수 nTbH,
- 현재 블록의 컬러 성분을 지정하는 변수 cIdx,
- x = 0..nTbW-1, y = 0..nTbH-1를 갖는 스케일링된 변환 계수들의 (nTbW)×(nTbH) 어레이 d[x][y].
이 프로세스의 출력은, x = 0..nTbW-1, y = 0..nTbH-1을 갖는 잔차 샘플들의 (nTbW)×(nTbH) 어레이 r[x][y]이다.
cu_sbt_flag[xTbY][yTbY]가 1과 같다면, 수평 변환 커널을 지정하는 변수 trTypeHor 및 수직 변환 커널을 지정하는 변수 trTypeVer는 cu_sbt_horizontal_flag[xTbY][yTbY] 및 cu_sbt_pos_flag[xTbY][yTbY]에 따라 표 21에서 도출된다.
그렇지 않으면(cu_sbt_flag[xTbY][yTbY]가 0과 같다면), 수평 변환 커널을 지정하는 변수 trTypeHor 및 수직 변환 커널을 지정하는 변수 trTypeVer는 mts_idx [xTbY][yTbY] 및 CuPredMode[xTbY][yTbY]에 따라 표 22에서 도출된다.
잔차 샘플들의 (nTbW)×(nTbH) 어레이 r은 다음과 같이 도출된다:
1. x = 0..nTbW-1, y = 0..nTbH-1 을 갖는 스케일링된 변환 계수들 d [x][y]의 각각의 (수직) 컬럼은, 1-차원 변환 프로세스를 호출함으로써 x = 0..nTbW-1, y = 0..nTbH-1을 갖는 e[x][y]로 변환되며, 각각의 컬럼에 대해 x = 0..nTbW-1(변환 블록 nTbH의 높이를 가짐)이며, 목록 d[x][y](y = 0..nTbH -1을 가짐) 및 변환 타입 변수 trTypeVer가 입력들로서 trTypeVer와 동일하게 설정되며, 출력은 목록 e[x][y](y = 0..nTbH-1을 가짐)이다.
2. x = 0..nTbW-1, y = 0..nTbH-1을 갖는 중간 샘플 값들 g[x][y]가 다음과 같이 도출된다:
Figure pct00035
(식 11)
3. x = 0..nTbW-1, y = 0..nTbH-1을 갖는 결과 어레이 g[x][y]의 각각의 (수평) 로우는, 1-차원 변환 프로세스를 호출함으로써 x = 0..nTbW-1, y = 0..nTbH-1을 갖는 r[x][y]로 변환되며, 각각의 로우에 대해 y = 0..nTbH-1(변환 블록 nTbW의 폭을 가짐)이며, 목록 g[x][y](x = 0..nTbW-1) 및 변환 타입 변수 trType가 입력들로서 trTypeHor와 동일하게 설정되며, 출력은 목록 r[x][y](x = 0..nTbW-1을 가짐)이다.
표 21: mts_ idx [x][y] 및 CuPredMode[x][y]에 따른 trTypeHor trTypeVer 사양
Figure pct00036
표 22: mts_ idx [x][y] 및 CuPredMode[x][y]에 따른 trTypeHor trTypeVer 사양
Figure pct00037
도 10은 본 개시내용의 실시예에 따른 통신 시스템(1000)의 단순화된 블록도를 예시한다. 통신 시스템(1000)은 네트워크(1050)를 통해 상호 연결된 적어도 2개의 단말(1010-1020)을 포함할 수 있다. 데이터의 단방향 전송을 위해, 제1 단말(1010)은 네트워크(1050)를 통해 다른 단말(1020)로의 전송을 위해 로컬 위치에서 비디오 데이터를 코딩할 수 있다. 제2 단말(1020)은, 네트워크(1050)로부터 다른 단말의 코딩된 비디오 데이터를 수신하고, 코딩된 데이터를 디코딩하고 그리고 복원된 비디오 데이터를 디스플레이할 수 있다. 단방향 데이터 전송은 미디어 서비스 애플리케이션 등에서 일반적일 수 있다.
도 10은, 예를 들어 화상 회의 동안 발생할 수 있는, 코딩된 비디오의 양방향 전송을 지원하기 위해 제공되는 제2 쌍의 단말들(1030, 1040)을 예시한다. 데이터의 양방향 전송을 위해, 각각의 단말(1030, 1040)은 네트워크(1050)를 통해 다른 단말로의 전송을 위해 로컬 위치에서 캡처된 비디오 데이터를 코딩할 수 있다. 각각의 단말(1030, 1040)은 또한, 다른 단말이 전송한 코딩된 비디오 데이터를 수신할 수 있고, 코딩된 데이터를 디코딩할 수 있고, 복원된 비디오 데이터를 로컬 디스플레이 디바이스에 디스플레이할 수 있다.
도 10에서, 단말들(1010-1040)은, 서버, 퍼스널 컴퓨터들 및 스마트 폰들로 예시될 수 있으나, 본 개시내용의 원리들이 이로 제한되지 않는다. 본 개시내용의 실시예들은, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 미디어 플레이어들 및/또는 전용 화상회의 장비를 갖는 애플리케이션에 맞는다(find). 네트워크(1050)는, 예를 들어 유선 및/또는 무선 통신 네트워크들을 포함하여, 단말들(1010-1040) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크를 표현한다. 통신 네트워크(1050)는 회선-교환 및/또는 패킷-교환 채널들에서 데이터를 교환할 수 있다. 대표적인 네트워크들은 전기 통신망(telecommunications network)들, 근거리 통신망들, 광역 통신망들 및/또는 인터넷을 포함한다. 본 논의의 목적들을 위해, 네트워크(1050)의 아키텍처 및 토폴로지는, 하기 본원에서 설명되지 않는 한 본 개시내용의 동작에 중요하지 않을 수 있다.
도 11은, 개시된 청구대상에 대한 애플리케이션의 예로서, 스트리밍 환경에서의, 예를 들어 스트리밍 시스템(300)에서의 비디오 인코더 및 디코더의 배치를 예시한다. 개시된 청구대상은, 압축된 비디오를 CD, DVD, 메모리 스틱 등을 포함하는 디지털 미디어에 저장하는 다른 비디오 인에이블 애플리케이션들(예를 들어, 화상회의, 디지털 TV 등을 포함)에 동일하게 적용될 수 있다.
스트리밍 시스템은, 예를 들어 비압축 비디오 샘플 스트림(1102)을 생성하는 비디오 소스(1101), 예를 들어 디지털 카메라를 포함할 수 있는 캡처 서브시스템(1113)을 포함할 수 있다. 인코딩된 비디오 비트스트림들과 비교할 때 높은 데이터 볼륨을 강조하기 위해 굵은 선으로 도시된 그 샘플 스트림(1102)은 카메라(1101)에 커플링된 인코더(1103)에 의해 프로세싱될 수 있다. 인코더(1103)는 아래에서 더 상세히 설명되는 바와 같은 개시된 청구대상의 양상들을 가능하게 하거나 구현하기 위해 하드웨어, 소프트웨어, 또는 이들의 조합을 포함할 수 있다. 샘플 스트림과 비교할 때 더 낮은 데이터 볼륨을 강조하기 위해 얇은 선으로 도시된 인코딩된 비디오 비트스트림(1104)은 향후 사용을 위해 스트리밍 서버(1105)에 저장될 수 있다. 하나 이상의 스트리밍 클라이언트들(1106, 1108)은 스트리밍 서버(1105)에 액세스하여, 인코딩된 비디오 비트스트림(1104)의 사본들(1107, 1109)을 검색할 수 있다. 클라이언트(1106)는, 인코딩된 비디오 비트스트림(1107)의 인입(incoming) 사본을 디코딩하며 디스플레이(1112) 또는 다른 렌더링 디바이스(도시되지 않음)에서 렌더링될 수 있는 발신(outgoing) 비디오 샘플 스트림(1111)을 생성하는 비디오 디코더(1110)를 포함할 수 있다. 일부 스트리밍 시스템들에서, 비디오 비트스트림들(1104, 1107, 1109)은 특정 비디오 코딩/압축 표준들에 따라 인코딩될 수 있다. 이러한 표준들의 예들은, ITU-T Recommendation H.265를 포함한다. 비공식적으로 VVC(Versatile Video Coding)로 알려진 비디오 코딩 표준이 개발 중이다. 개시된 청구대상은 VVC의 맥락에서 사용될 수 있다.
도 12는 본 발명의 일 실시예에 따른 비디오 디코더(1110)의 기능 블록도일 수 있다.
수신기(1210)는 디코더(1110)에 의해 디코딩될 하나 이상의 코덱 비디오 시퀀스들을 수신할 수 있고; 동일한 또는 다른 실시예에서는, 한 번에 하나의 코딩된 비디오 시퀀스를 수신할 수 있고, 여기서, 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스와 독립적이다. 코딩된 비디오 시퀀스는, 인코딩된 비디오 데이터를 저장하는 저장 디바이스에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(1212)로부터 수신될 수 있다. 수신기(1210)는 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림들과 함께 인코딩된 비디오 데이터를 수신할 수 있으며, 이는 그 개개의 사용 엔티티들(도시되지 않음)로 포워딩될 수 있다. 수신기(1210)는 코딩된 비디오 시퀀스를 다른 데이터로부터 분리할 수 있다. 네트워크 지터에 대항하여, 버퍼 메모리(1215)가 수신기(1210)와 엔트로피 디코더/파서(1220)(이하 "파서") 사이에 커플링될 수 있다. 수신기(1210)가 충분한 대역폭 및 제어능력의 저장/포워딩 디바이스 또는 등시성(ios synchronous) 네트워크로부터 데이터를 수신하는 경우, 버퍼(1215)는 필요하지 않거나 작을 수 있다. 인터넷과 같은 최선형 패킷(best effort packet) 네트워크에서 사용하기 위해, 버퍼(1215)가 필요할 수 있으며, 버퍼(1215)는 비교적 클 수 있으며 유리하게는 적응적 사이즈일 수 있다.
비디오 디코더(1110)는 엔트로피 코딩된 비디오 시퀀스로부터 심볼들(1221)을 재구성하기 위해 파서(1220)를 포함할 수 있다. 이러한 심볼들의 카테고리들은, 디코더(1110)의 동작을 관리하는 데 사용되는 정보, 및 디코더의 필수 부분은 아니지만 디코더에 커플링될 수 있는, 도 12에 도시된 디스플레이(1112)와 같은 렌더링 디바이스를 제어하기 위한 잠재적 정보를 포함한다. 렌더링 디바이스(들)에 대한 제어 정보는 SEI(Supplementary Enhancement Information) 메시지 또는 VUI(Video Usability Information) 파라미터 세트 프래그먼트들(도시되지 않음)의 형태일 수 있다. 파서(1220)는 수신되는 코딩된 비디오 시퀀스를 파싱/엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은, 비디오 코딩 기술 또는 표준에 따를 수 있고 그리고 가변 길이 코딩, Huffman 코딩, 맥락 민감도(context sensitivity)가 있거나 없는 산술 코딩을 등을 포함하여, 당업자에게 잘 알려진 원리들을 따를 수 있다. 파서(1220)는, 그룹에 대응하는 적어도 하나의 파라미터들에 기반하여, 비디오 디코더의 픽셀들의 서브그룹들 중 적어도 하나에 대한 서브그룹 파라미터들의 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 서브그룹은, GOP(Group of Pictures), 픽처들, 타일들, 슬라이스들, 매크로블록들, CU(Coding Unit)들, 블록들, TU(Transform Unit)들, PU(Prediction Unit)들 등을 포함할 수 있다. 엔트로피 디코더/파서는 또한, 변환 계수들, 양자화기 파라미터(QP) 값들, 모션 벡터들 등과 같은 코딩된 비디오 시퀀스 정보로부터 추출할 수 있다.
파서(1220)는 버퍼(1215)로부터 수신된 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 동작을 수행하여 심볼들(1221)을 생성할 수 있다. 파서(1220)는 인코딩된 데이터를 수신하고, 특정 심볼들(1221)을 선택적으로 디코딩할 수 있다. 또한, 파서(1220)는, 특정 심볼들(1221)이 모션 보상 예측 유닛(1253), 스케일러/역변환 유닛(1251), 인트라 예측 유닛(1252) 또는 루프 필터(1256)에 제공될 것인지를 결정할 수 있다.
심볼들의 재구성(1221)은 코딩된 비디오 픽처 또는 이의 일부들의 타입(이를테면, 인터 및 인트라 픽처, 인터 및 인트라 블록) 및 다른 요인들에 따라 다수의 상이한 유닛들을 수반할 수 있다. 코딩된 비디오 시퀀스로부터 파서(1220)에 의해 파싱된 서브그룹 제어 정보에 의해 어떤 유닛들이 수반되는지 그리고 어떻게 수반되는지가 제어될 수 있다. 파서(1220)와 아래의 다수의 유닛들 간의 이러한 하위그룹 제어 정보의 흐름은 명확성을 위해 도시되지 않는다.
이미 언급된 기능 블록들을 능가하여, 디코더(1110)는 아래에서 설명된 바와 같이 개념적으로 다수의 기능 유닛들로 세분화될 수 있다. 상업적 제약들 하에서 동작하는 실제 구현에서, 이러한 유닛 중 다수는 서로 밀접하게 상호 작용하며, 적어도 부분적으로는 서로 통합될 수 있다. 그러나, 개시된 청구대상을 설명하기 위해서는 아래의 기능 유닛들로의 개념적 세분화가 적절하다.
제1 유닛은 스케일러/역변환 유닛(1251)이다. 스케일러/역변환 유닛(1251)은, 파서(1220)로부터, 심볼(들)(1221)로서 사용할 변환, 블록 사이즈, 양자화 인자, 양자화 스케일링 행렬들 등을 포함하여, 제어 정보뿐만 아니라 양자화된 변환 계수를 수신한다. 스케일러/역변환 유닛(1251)는 어그리게이터(1255)에 입력될 수 있는 샘플 값들을 포함하는 블록들을 출력할 수 있다.
일부 경우들에서, 스케일러/역변환 유닛(1251)의 출력 샘플들은 인트라 코딩된 블록, 즉, 이전에 재구성된 픽처들로부터의 예측 정보를 사용하지 않지만 현재 픽처의 이전에 재구성된 부분들의 예측 정보를 사용할 수 있는 블록에 관련될 수 있다. 이러한 예측 정보는 인트라 픽처 예측 유닛(1252)에 의해 제공될 수 있다. 일부 경우들에서, 인트라 픽처 예측 유닛(1252)은, 현재(부분적으로 재구성된) 픽처(1258)로부터 페칭된 이미 재구성된 주변 정보를 사용하여, 재구성 하의 블록과 동일한 사이즈 및 형상의 블록을 생성한다. 어그리게이터(1255)는, 일부 경우들에서, 인트라 예측 유닛(1252)이 생성한 예측 정보를, 샘플 단위로, 스케일러/역변환 유닛(1251)에 의해 제공되는 출력 샘플 정보에 더한다.
다른 경우들에서, 스케일러/역 변환 유닛(1251)의 출력 샘플들은 인터 코딩되며 잠재적으로 모션 보상된 블록에 관련될 수 있다. 이러한 경우에서, 모션 보상 예측 유닛(1253)은 예측에 사용되는 샘플들을 페칭하기 위해 참조 픽처 메모리(1257)에 액세스할 수 있다. 블록과 관련된 심볼들(1221)에 따라 페칭된 샘플들을 모션 보상한 후, 이러한 샘플들은, 출력 샘플 정보를 생성하기 위해, 어그리게이터(1255)에 의해 스케일러/역변환 유닛의 출력(이 경우 잔차 샘플들 또는 잔차 신호로 지칭됨)에 더해질 수 있다. 모션 보상 유닛이 예측 샘플들을 페칭하는 참조 픽처 메모리 형태 내의 어드레스들은, 예를 들어, X, Y 및 참조 픽처 성분들을 가질 수 있는 심볼들(1221)의 형태로 모션 보상 유닛이 이용할 수 있는 모션 벡터들에 의해 제어될 수 있다. 모션 보상은 또한, 서브-샘플 일치 모션 벡터(sub-sample exact motion vector)들이 사용 중일 때 참조 픽처 메모리로부터 페칭된 샘플 값들의 보간, 모션 벡터 예측 메커니즘들 등을 포함할 수 있다.
어그리게이터(1255)의 출력 샘플들은 루프 필터 유닛(1256)에서 다양한 루프 필터링 기법들로 처리될 수 있다. 비디오 압축 기술들은 인-루프 필터(in-loop filter) 기술들(코딩된 비디오 비트 스트림에 포함된 파라미터들에 의해 제어되고, 파서(1220)로부터의 심볼들(1221)로서 루프 필터 유닛(1256)에 이용가능하게 됨)을 포함할 수 있지만, 또한 코딩된 픽처 또는 코딩된 비디오 시퀀스의 (디코딩 순서로) 이전 부분들을 디코딩하는 동안 획득되는 메타 정보에 응답할 수 있을 뿐만 아니라 이전에 재구성되고 루프-필터링된 샘플 값들에 응답할 수 있다.
루프 필터 유닛(1256)의 출력은, 렌더 디바이스(1112)에 출력될 수 있을뿐만 아니라 향후 인터-픽처 예측에 사용하기 위해 참조 픽처 메모리(1258)에 저장될 수 있는 샘플 스트림일 수 있다.
완전히 재구성된 특정 코딩된 픽처들은 향후 예측을 위한 참조 픽처들로 사용될 수 있다. 코딩된 픽처가 완전히 재구성되고 그리고 코딩된 픽처가 참조 픽처로 (예를 들어, 파서(1220)에 의해) 식별되면, 현재 참조 픽처(1258)는 참조 픽처 버퍼(1257)의 일부가 될 수 있고, 후속 코딩된 픽처의 재구성을 시작하기 전에 새로운 현재 픽처 메모리가 재할당될 수 있다.
비디오 디코더(1110)는, ITU-T Rec.H.265와 같은 표준에 문서화될 수 있는 미리 결정된 비디오 압축 기술에 따라 디코딩 동작들을 수행할 수 있다. 코딩된 비디오 시퀀스는, 비디오 압축 기술 문서 또는 표준, 특히 여기에서의 프로필 문서에 지정된 대로, 비디오 압축 기술 또는 표준의 신택스를 준수한다는 의미에서, 사용되고 있는 표준 또는 비디오 압축 기술에 의해 지정된 신택스를 따를 수 있다. 또한, 컴플라이언스에 필요한 것은, 코딩된 비디오 시퀀스의 복잡성이 비디오 압축 기술 또는 표준의 레벨에 정의된 범위 내에 있다는 것이다. 일부 경우들에서, 레벨들은 최대 픽처 사이즈, 최대 프레임 레이트, 최대 재구성 샘플 레이트(예를 들어, 초당 메가 샘플들로 측정됨), 최대 참조 픽처 사이즈 등을 제한한다. 일부 경우들에서, 레벨별로 설정된 제한들은 HRD(Hypothetical Reference Decoder) 사양들 및 코딩된 비디오 시퀀스에서 시그널링되는 HRD 버퍼 관리를 위한 메타데이터를 통해 추가로 제한될 수 있다.
일 실시예에서, 수신기(1210)는 인코딩된 비디오와 함께 추가(리던던트) 데이터를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로서 포함될 수 있다. 추가 데이터는, 데이터를 적절하게 디코딩하기 위해 그리고/또는 원본 비디오 데이터를 보다 정확하게 재구성하기 위해 비디오 디코더(1110)에 의해 사용될 수 있다. 추가 데이터는, 예를 들어, 시간적, 공간적 또는 신호 대 잡음비(SNR) 향상 계층들, 리던던트 슬라이스들, 리던던트 픽처들, 순방향 오류 수정 코드들 등의 형태일 수 있다.
도 13은 본 개시내용의 일 실시예에 따른 비디오 인코더(1103)의 기능 블록도일 수 있다.
인코더(1103)는 인코더(1103)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(1101)(인코더의 일부가 아님)로부터 비디오 샘플들을 수신할 수 있다.
비디오 소스(1101)는, 임의의 적절한 비트 깊이(예를 들어, 8 비트, 10 비트, 12 비트), 임의의 색 공간(예를 들어, BT.601 Y CrCB, RGB,…) 및 임의의 적절한 샘플링 구조(예를 들어, Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림 형태의, 인코더(1103)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서비스 시스템에서, 비디오 소스(1101)는 미리 준비된 비디오를 저장하는 저장 디바이스일 수 있다. 화상회의 시스템에서, 비디오 소스(1103)는 로컬 이미지 정보를 비디오 시퀀스로서 캡처하는 카메라일 수 있다. 비디오 데이터는, 순서대로 볼 때 모션을 전달하는 복수의 개별 픽처들로서 제공될 수 있다. 픽처 자체들은, 픽셀들의 공간적 어레이로서 구성될 수 있으며, 여기서 각각의 픽셀은 사용 중인 샘플링 구조, 색 공간 등에 따라 하나 이상의 샘플들을 포함할 수 있다. 당업자는 픽셀들과 샘플들 사이의 관계를 쉽게 이해할 수 있다. 아래 설명은 샘플들에 중점을 둔다.
일 실시예에 따르면, 인코더(1103)는, 소스 비디오 시퀀스의 픽처들을, 실시간으로 또는 애플리케이션에 의해 요구되는 임의의 다른 시간 제약들 하에, 코딩된 비디오 시퀀스(1343)로 코딩하고 압축할 수 있다. 적절한 코딩 속도를 강행하는 것은 제어기(1350)의 기능 중 하나이다. 제어기는, 아래에 설명되는 대로 다른 기능 유닛들을 제어하며 이러한 유닛들에 기능적으로 커플링된다. 명확성을 위해 커플링은 도시되지 않는다. 제어기에 의해 설정되는 파라미터들은, 레이트 제어 관련 파라미터들(픽처 스킵, 양자화기, 레이트-왜곡 최적화 기법들의 람다(lambda) 값,...), 픽처 사이즈, 픽처 그룹(GOP) 레이아웃, 최대 모션 벡터 서치 범위 등을 포함할 수 있다. 당업자는, 제어기(1350)의 다른 기능들을 쉽게 식별할 수 있는데, 이는 이들이 특정 시스템 설계를 위해 최적화된 비디오 인코더(1103)에 관련될 수 있기 때문이다.
일부 비디오 인코더들은, 당업자가 "코딩 루프"로 쉽게 인식하는 방식으로 동작한다. 과하게 단순화된 설명으로서, 코딩 루프는, 인코더(1330)(이하 "소스 코더")(코딩될 입력 픽처 및 참조 픽처(들)를 기반으로 심볼들을 생성하는 것을 담당함)의 인코딩 부분, 및 (심볼들과 코딩된 비디오 비트스트림 사이의 임의의 압축은 개시된 청구대상에서 고려되는 비디오 압축 기법들에서 무손실이기 때문에) (원격) 디코더가 또한 생성할 샘플 데이터를 생성하기 위해 심볼들을 재구성하는 인코더(1103)에 내장된 (로컬) 디코더(1333)로 구성될 수 있다. 그 재구성된 샘플 스트림은 참조 픽처 메모리(1334)에 입력된다. 심볼 스트림의 디코딩은 디코더 위치(로컬 또는 원격)에 관계없이 비트-일치 결과(bit-exact result)들을 유도하기 때문에, 참조 픽처 버퍼 콘텐츠는 또한 로컬 인코더와 원격 인코더 사이에서 비트 일치한다. 즉, 인코더의 예측 부분은, 디코딩 동안 예측을 사용할 때 디코더가 "보는" 것과 정확히 동일한 샘플 값들을 참조 픽처 샘플들로서 "본다". 참조 픽처 동기성의 이러한 기본 원리(및 예를 들어, 채널 오류들로 인해, 동기성이 유지될 수 없는 경우, 결과 드리프트)는 당업자에게 잘 알려져 있다.
"로컬" 디코더(1333)의 동작은 "원격" 디코더(1110)의 동작과 동일할 수 있으며, 이는 도 12와 관련하여 위에서 상세하게 설명되었다. 그러나, 간단히 도 13을 또한 참조하면, 심볼들이 이용가능하고 엔트로피 코더(1345) 및 파서(1220)에 의한, 코딩된 비디오 시퀀스에 대한 심볼들의 인코딩/디코딩이 무손실일 수 있기 때문에, 디코더(1110)의 엔트로피 디코딩 부분들(채널(1212), 수신기(1210), 버퍼(1215) 및 파서(1220)를 포함)은 로컬 디코더(1333)에서 완전히 구현되지 않을 수 있다.
이 시점에서 이루어질 수 있는 관찰은, 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 임의의 디코더 기술이, 대응하는 인코더에, 실질적으로 동일한 기능적 형태로 반드시 존재해야 한다는 것이다. 인코더 기술들의 설명은 포괄적으로 설명된 디코더 기술들의 역(inverse)이므로 생략될 수 있다. 특정 분야들에서만 더 자세한 설명이 요구되고 아래에 제공된다.
그 동작의 일부로서, 소스 코더(1330)는, "참조 프레임"으로 지정된 비디오 시퀀스로부터 하나 이상의 이전에 코딩된 프레임들을 참조하여 입력 프레임을 예측적으로 코딩하는 모션 보상된 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(1332)은, 입력 프레임에 대한 예측 참조(들)로서 선택될 수 있는 입력 프레임의 픽셀 블록들과 참조 프레임(들)의 픽셀 블록들 간의 차이들을 코딩한다.
로컬 비디오 디코더(1333)는, 소스 코더(1330)에 의해 생성된 심볼들에 기반하여, 참조 프레임들로 지정될 수 있는 프레임들의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(1332)의 동작들은 유리하게 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 13에 도시되지 않음)에서 디코딩될 수 있는 경우, 재구성된 비디오 시퀀스는 통상적으로, 약간의 오류들이 있는, 소스 비디오 시퀀스의 복제본(replica)일 수 있다. 로컬 비디오 디코더(1333)는 참조 프레임들에서 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스를 복제하고, 그리고 재구성된 참조 프레임들로 하여금 참조 픽처 캐시(1334)에 저장되게 할 수 있다. 이러한 방식으로, 인코더(1103)는 원단(far-end) 비디오 디코더(전송 오류들 없음)에 의해 획득될 재구성된 참조 프레임들로서 공통 콘텐츠를 갖는 재구성된 참조 프레임의 사본들을 국부적으로 저장할 수 있다.
예측기(1335)는 코딩 엔진(1332)에 대한 예측 서치들을 수행할 수 있다. 즉, 코딩될 새로운 프레임에 대해, 예측기(1335)는, 새로운 픽처들에 대한 적절한 예측 참조 역할을 할 수 있는 특정 메타데이터(이를테면, 참조 픽처 모션 벡터들, 블록 형상 등) 또는 (후보 참조 픽셀 블록들로서) 샘플 데이터에 대해 참조 픽처 메모리(1334)를 서치할 수 있다. 예측기(1335)는 적절한 예측 참조들을 찾기 위해 샘플 블록별 픽셀 블록 단위(sample block-by-pixel block basis)로 동작할 수 있다. 일부 경우에서, 예측기(1335)에 의해 획득된 서치 결과들에 의해 결정된 바와 같이, 입력 픽처는 참조 픽처 메모리(1334)에 저장된 다수의 참조 픽처들로부터 도출되는 예측 참조들을 가질 수 있다.
제어기(1350)는, 예를 들어, 비디오 데이터를 인코딩하기 위해 사용되는 파라미터들 및 서브그룹 파라미터들의 설정을 포함하여, 비디오 코더(1330)의 코딩 동작들을 관리할 수 있다.
앞서 논의된 모든 기능 유닛들의 출력은 엔트로피 코더(1345)에서 엔트로피 코딩을 겪을 수 있다. 엔트로피 코더는, 예를 들어 허프만 코딩, 가변 길이 코딩, 산술 코딩 등과 같이 당업자에게 알려진 기술들에 따라 심볼들을 무손실 압축함으로써, 다양한 기능 유닛들에 의해 생성된 심볼들을 코딩된 비디오 시퀀스로 변환한다.
전송기(1340)는 엔트로피 코더(1345)에 의해 생성되는 바와 같은 코딩된 비디오 시퀀스(들)를 버퍼링하여 통신 채널(1360)을 통한 전송을 준비할 수 있으며, 이 통신 채널(1360)은 인코딩된 비디오 데이터를 저장할 저장 디바이스에 대한 하드웨어/소프트웨어 링크일 수 있다. 전송기(1340)는 비디오 코더(1330)로부터의 코딩된 비디오 데이터를 전송될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림들(소스들은 도시되지 않음)과 병합할 수 있다.
제어기(1350)는 인코더(1103)의 동작을 관리할 수 있다. 코딩 동안, 제어기(1350)는 각각의 코딩된 픽처에 특정 코딩된 픽처 타입을 할당할 수 있으며, 이는 개개의 픽처에 적용될 수 있는 코딩 기법들에 영향을 미칠 수 있다. 예를 들어, 픽처들은 종종 다음의 프레임 타입들 중 하나로서 할당될 수 있다:
인트라 픽처(I 픽처)는, 예측의 소스로서 시퀀스의 임의의 다른 프레임을 사용하지 않고 코딩 및 디코딩될 수 있는 것 일 수 있다. 일부 비디오 코덱들은, 예를 들어 독립적 디코더 리프레시 픽처들을 포함하여, 상이한 타입들의 인트라 픽처들을 허용한다. 당업자는 I 픽처들의 이러한 변형들 및 이들 개개의 애플리케이션들 및 특징들을 인식한다.
예측 픽처(P 픽처)는, 각각의 블록의 샘플 값들을 예측하기 위해 최대 하나의 모션 벡터 및 참조 인덱스를 사용하여 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다.
양방향성 예측 픽처(B 픽처)는, 각각의 블록의 샘플 값들을 예측하기 위해 최대 2개의 모션 벡터 및 참조 인덱스들을 사용하여 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 유사하게, 다수의-예측 픽처들은 단일 블록의 재구성을 위해 3개 이상의 참조 픽처들 및 연관된 메타데이터를 사용할 수 있다.
소스 픽처들은 일반적으로, 공간적으로 복수의 샘플 블록들(예를 들어, 각각 4×4, 8×8, 4×8 또는 16×16 샘플 블록들)로 세분화되고 블록 단위(block-by-block basis)로 코딩될 수 있다. 블록들은 블록의 개개의 픽처들에 적용되는 코딩 할당에 의해 결정된 대로 다른(이미 코딩된) 블록들을 참조하여 예측 적으로 코딩될 수 있다. 예를 들어, I 픽처들의 블록들은 비예측적으로 코딩될 수 있거나 또는 동일한 픽처의 이미 코딩된 블록들(공간적 예측 또는 인트라 예측)을 참조하여 예측적으로 코딩될 수 있다. P 픽처들의 픽셀 블록들은, 하나의 이전에 코딩된 참조 픽처들을 참조로, 공간적 예측 또는 시간적 예측을 통해, 비예측적으로 코딩될 수 있다. B 픽처들의 블록들은, 하나의 또는 두 개의 이전에 코딩된 참조 픽처들을 참조로, 공간적 예측 또는 시간적 예측을 통해, 비예측적으로 코딩될 수 있다.
비디오 코더(1103)는 ITU-T Rec.H.265와 같은 미리결정된 비디오 코딩 기술 또는 표준에 따라 코딩 동작들을 수행할 수 있다. 그 동작에서, 비디오 코더(1103)는, 입력 비디오 시퀀스에서 시간적 및 공간적 리던던시들을 이용하는 예측 코딩 동작을 포함하는 다양한 압축 동작들을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는, 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 신택스를 따를 수 있다.
일 실시예에서, 전송기(1340)는 인코딩된 비디오와 함께 추가 데이터를 전송할 수 있다. 비디오 코더(1330)는 코딩된 비디오 시퀀스의 일부로서 이러한 데이터를 포함할 수 있다. 추가 데이터는 시간적/공간적/SNR 향상 계층들, 리던던트 픽처들 및 슬라이스들과 같은 다른 형태의 리던던트 데이터, SEI(Supplementary Enhancement Information) 메시지, VUI(Visual Usability Information) 파라미터 세트 프래그먼트들 등을 포함할 수 있다.
VVC에서, 폭 또는 높이가 64보다 큰 CU를 제외하고, CU 사이즈는 항상 TU 사이즈와 동일하며, 이는 HEVC의 RQT 설계보다 유연성이 떨어지며 더 나은 코딩 성능을 위해 개선될 수 있다.
재귀 변환 분할은 높은 복잡성에 야기하고 그리고 VVC에 정사각형이 아닌 코딩 블록들(이는 쿼드-트리 분할을 선호하지 않을 수 있음)이 있기 때문에, VVC 위에 RQT를 직접 사용하는 것은 최적이 아닐 수 있다.
SVT는 서브-블록 변환 타입, 포지션 및 사이즈를 지시하기 위해 몇몇 오버헤드 비트들을 필요로 하며, 이는 특히 인터 코딩에 대해 비용이 많이 든다. 이러한 시그널링을 피할 수 있고 방법이 서브-블록 변환 타입, 포지션 및 사이즈를 암시적으로 도출하는 데 사용되면, 이는 코딩 이득 및 인코더 복잡성 측면에서 더 효율적일 수 있다.
SVT의 한 가지 제한은, SVT는, 매우 제한된 서브-블록 포지션(예를 들어, 왼쪽 또는 오른쪽, 상단 또는 하단)만 지원할 수 있는 반면, 더 많은 지원 포지션을 추가하면 필연적으로 인코더 복잡성과 신호 비용이 추가된다는 것이다. 서브-블록 포지션이 암시적으로 도출될 수 있다면, 지원되는 서브-블록 포지션은 인코더 또는 디코더 복잡성을 추가하지 않고도 더 유연해질 수 있다.
본 개시내용의 실시예들은 개별적으로 사용되거나 또는 임의의 순서로 조합될 수 있다. 본 개시내용 전반에 걸쳐, DST-7은 DST-4로 교체될 수 있고, DCT-8은 DCT-4로 교체될 수 있다.
일 실시예에 따르면, 블록 형상 적응형 변환 분할이 적용될 수 있다. 이 실시예에서, 서브-블록 변환의 수 및 서브-블록 변환의 사이즈는 코딩 블록(CU) 사이즈에 의존한다.
일 실시예에서, 코딩 블록이 정사각형 블록이면, 코딩 블록은 도 4a에 도시된 바와 같이 하나의 단일 변환을 또는 도 4b에 도시된 바와 같이 4개의 1/4 사이즈 변환을 사용할 수 있다. 선택은 플래그에 의해 시그널링될 수 있다.
다른 실시예에서, 코딩 블록 폭이 높이보다 큰 경우, 코딩 블록은 도 5a에 도시된 바와 같이 하나의 단일 변환 또는 다수의 동일한 더 작은 사이즈 변환들을 사용할 수 있다. 선택은 플래그에 의해 시그널링될 수 있다.
일 예에서, 코딩 블록은 도 5b에 도시된 바와 같이 2개의 절반 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 절반 사이즈 변환 각각은 코딩 블록의 절반 폭을 갖지만, 코딩 블록의 높이는 동일하다.
일 예에서, 코딩 블록은 도 5c에 도시된 바와 같이 2개의 절반 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 절반 사이즈 변환 각각은 코딩 블록의 높이를 갖지만, 코딩 블록의 폭은 동일하다.
일 예에서, 코딩 블록은 도 5d에 도시된 바와 같이 4개의 1/4 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 1/4 사이즈 변환 각각은 코딩 블록의 1/4 폭을 갖지만, 코딩 블록의 높이는 동일하다.
일 예에서, 코딩 블록은 도 5e에 도시된 바와 같이 4개의 1/4 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 1/4 사이즈 변환 각각은 코딩 블록의 1/4 높이를 갖지만, 코딩 블록의 폭은 동일하다.
다른 실시예에서, 코딩 블록 폭이 높이보다 큰 경우, 코딩 블록은 도 6a에 도시된 바와 같이 하나의 단일 변환 또는 3개의 서브-블록 사이즈 변환들을 적용할 수 있다. 선택은 플래그에 의해 시그널링될 수 있다.
도 6b에 도시된 일 예에서, 절반 사이즈 변환 각각은 코딩 블록의 절반 폭을 갖지만, 코딩 블록의 높이는 동일하다.
도 6c에 도시된 일 예에서, 절반 사이즈 변환 각각은 코딩 블록의 절반 높이를 갖지만, 코딩 블록의 폭은 동일하다.
다른 실시예에서, 코딩 블록 높이가 폭보다 큰 경우, 코딩 블록은 도 7a에 도시된 바와 같이 하나의 단일 변환 또는 다수의 동일한 더 작은 사이즈를 적용할 수 있다. 선택은 플래그에 의해 시그널링될 수 있다.
도 7b에 도시된 일 예에서, 코딩 블록은 2개의 절반 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 절반 사이즈 변환 각각은 코딩 블록의 절반 높이를 갖지만, 코딩 블록의 폭은 동일하다.
도 7c에 도시된 일 예에서, 코딩 블록은 2개의 절반 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 절반 사이즈 변환 각각은 코딩 블록의 절반 폭을 갖지만, 코딩 블록의 높이는 동일하다.
일 예에서, 코딩 블록은 4개의 1/4 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 1/4 사이즈 변환 각각은 코딩 블록의 1/4 높이를 갖지만, 코딩 블록의 폭은 동일하다.
일 예에서, 코딩 블록은 4개의 1/4 사이즈 서브-블록들로 분할되고, 각각의 서브-블록에 대해 변환이 수행되고, 1/4 사이즈 변환 각각은 코딩 블록의 1/4 폭을 갖지만, 코딩 블록의 높이는 동일하다.
다른 실시예에서, 코딩 블록 높이가 폭보다 큰 경우, 코딩 블록은 도 8a에 도시된 바와 같이 하나의 단일 변환 또는 3개의 서브-블록 사이즈 변환들을 적용할 수 있다. 선택은 플래그에 의해 시그널링될 수 있다.
도 8b에 도시된 일 예에서, 서브-블록 변환들 각각은 코딩 블록의 동일한 폭을 갖는다.
도 8c에 도시된 일 예에서, 서브-블록 변환 각각은 코딩 블록의 동일한 높이를 갖는다.
각각의 TU에 대해, CU 내부에서 TU 위치에 따라, MTS에 대해 상이한 변환 세트들이 적용될 수 있다.
일 실시예에서, 각각의 TU에 대해, CU 내부에서 TU의 위치에 따라, 하나의 변환 세트에서 이용가능한 변환 타입들의 상이한 순서가 MTS에 적용될 수 있다.
일 예에서, TU가 도 9a 및 9b에 도시된 바와 같이 CU의 왼쪽 절반에 있는 경우, MTS에서 수평 변환 선택을 위한 변환 세트에서 변환 타입의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 예에서, TU가 도 9c 및 9d에 도시된 바와 같이 CU의 오른쪽 절반에 있는 경우, MTS에서 수평 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DST-7, DCT-8}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DCT-8, DST-7}이다.
일 예에서, TU가 CU의 상단 절반에 있는 경우, MTS에서 수직 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 예에서, TU가 하단 절반에 있는 경우, MTS에서 수직 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DST-7, DCT-8}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DCT-8, DST-7}이다.
일 예에서, TU의 왼쪽 경계가 CU의 왼쪽 경계와 정렬되고 TU의 오른쪽 경계 또한 CU의 오른쪽 경계와 정렬되면, MTS에서 수평 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 예에서, TU의 상단 경계가 CU의 상단 경계와 정렬되고, TU의 하단 경계가 또한 CU의 하단 경계와 정렬되면(예를 들어, 도 1.c.i에 도시됨), MTS에서 수직 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 예에서, TU의 왼쪽 경계가 CU의 왼쪽 경계와 정렬되지 않고 TU의 오른쪽 경계가 CU의 오른쪽 경계와 정렬되지 않으면, MTS에서 수평 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 예에서, TU의 상단 경계가 CU의 상단 경계와 정렬되지 않고 TU의 하단 경계가 CU의 하단 경계와 정렬되지 않으면, MTS에서 수직 변환 선택을 위한 변환 세트에서의 변환 타입들의 순서는 {DCT-8, DST-7}이며, 대안적으로, 변환 세트에서 변환 타입들의 순서는 {DST-7, DCT-8}이다.
일 실시예에서, 각각의 TU에 대해, CU 내부에서 TU의 위치에 따라, 하나의 변환 세트에서 상이한 수의 이용가능한 변환 타입들이 MTS에 적용될 수 있다.
일 예에서, TU가 CU의 왼쪽 절반 또는 오른쪽 절반에 있는 경우, 수평 변환에 대한 변환 세트는 2가지 변환 타입들(DST-7 또는 DCT-8)을 가지며, 대안적으로, 변환 세트는 오직 하나의 디폴트 변환 DCT-2(또는 DST-7 또는 DCT-8)만을 갖는다.
일 예에서, TU가 CU의 상단 절반 또는 하단 절반에 있는 경우, 수직 변환에 대한 변환 세트는 2가지 변환 타입들(DST-7 또는 DCT-8)을 가지며, 대안적으로, 변환 세트는 오직 하나의 디폴트 변환 DCT-2(또는 DST-7 또는 DCT-8)만을 갖는다.
다른 실시예에서, 상기 방법들은 인터 CU에만 적용되고, 인트라 CU에는 적용되지 않는다.
일 실시예에 따르면, 변환 분할은 하나의 레벨로만 제한될 수 있는데, 이는, 각각의 코딩 블록에 대해, 코딩 블록을 다수의 더 작은 TU들로 분할한 후, 각각의 TU가 더 이상 분할될 수 없다는 것을 의미한다. 따라서, TU 분할은 재귀적이지 않다.
코딩 블록에 대해, 전체 코딩 블록에 임의의 0이 아닌 cb 및 cr 계수가 존재하는지 여부를 각각 지시하기 위해 cbf_flag_cb_depth0 플래그 및 cbf_flag_cr_depth0 플래그가 시그널링될 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 각각의 TU에 대해, cbf_flag_cb_depth0이 전체 코딩 블록에 0이 아닌 계수가 적어도 하나 존재함을 지시하는 디폴트 값으로 시그널링되면, cbf_flag_cb_depth1 플래그가 시그널링될 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 각각의 TU에 대해, cbf_flag_cr_depth0이 전체 블록에 0이 아닌 계수가 적어도 하나 존재함을 지시하는 디폴트 값으로 시그널링되면, cbf_flag_cr_depth1 플래그가 시그널링될 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 마지막으로 코딩된 TU에 대해, cbf_flag_cb_depth1(또는 cbf_flag_cr_depth1) 플래그가 시그널링되지 않지만, cbf_flag_cb_depth0(또는 cbf_flag_cr_depth0)이 적어도 하나의 0이 아닌 cb(또는 cr) 계수를 지시하는 디폴트 값으로 시그널링될 수 있고, 동일한 코딩 블록 내의 모든 선행 TU들의 cbf_flag_cb_depth1(cbf_flag_cr_depth1) 플래그가 0이 아닌 계수가 존재하지 않음을 지시하는 디폴트 값(예를 들어, 0)으로 코딩되는 경우 암시적으로 도출된다.
암시적으로 도출된 cbf_flag_cb_depth1(또는 cbf_flag_cr_depth1) 플래그 값은 적어도 하나의 0이 아닌 계수가 존재함을 지시하는 값일 수 있다.
코딩 블록에 대해, 전체 코딩 블록에 임의의 0이 아닌 크로마 계수가 존재하는지 여부를 지시하기 위해 cbf_flag_chroma_depth0 플래그가 시그널링될 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 각각의 TU에 대해, cbf_flag_chroma_depth0이 0이 아닌 계수가 적어도 하나 존재함을 지시하는 디폴트 값으로 시그널링되면, cbf_flag_chroma_depth1 플래그가 시그널링될 수 있다.
각각의 TU에 대해, cbf_flag_chroma_depth1 플래그가 적어도 하나의 0이 아닌 크로마 계수를 지시하는 디폴트 값(예를 들어, 1)으로 시그널링되면, cbf_flag_cb_depth1 플래그 및 cbf_flag_cr_depth1 플래그가 추가로 시그널링되어, 적어도 하나의 0이 아닌 cb 및 cr 계수가 존재하는지 여부를 각각 지시할 수 있다.
각각의 TU에 대해, cbf_flag_chroma_depth1 플래그가 적어도 하나의 0이 아닌 크로마 계수를 지시하는 디폴트 값(예를 들어, 1)으로 시그널링되고 그리고 cbf_flag_cb_depth1 플래그가 0이 아닌 cb 계수가 존재하지 않음을 지시하는 디폴트 값(예를 들어, 0)으로 추가로 시그널링되면, cbf_flag_cr_depth1 플래그가 시그널링되지 않을 수 있지만 적어도 하나의 0이 아닌 cr 계수를 지시하는 값으로서 암시적으로 도출될 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 마지막으로 코딩된 TU에 대해, cbf_flag_chroma_depth1 플래그가 시그널링되지 않을 수 있지만, cbf_flag_chroma_depth0이 적어도 하나의 0이 아닌 계수를 지시하는 디폴트 값으로 시그널링되고, 동일한 코딩 블록 내의 모든 선행 TU들의 cbf_flag_chroma_depth1 플래그가 0이 아닌 계수가 존재하지 않음을 지시하는 디폴트 값(예를 들어, 0)으로 코딩되는 경우 암시적으로 도출될 수 있다.
암시적으로 도출된 cbf_flag_chroma_depth1(또는 cbf_flag_chroma_depth1) 플래그 값은 적어도 하나의 0이 아닌 계수가 존재함을 지시하는 값일 수 있다.
root_cbf가 코딩 블록에 대해 코딩되어, 전체 코딩 블록 내에 임의의 0이 아닌 루마 또는 크로마 계수가 존재하는지 여부를 지시할 수 있다.
코딩 블록이 다수의 TU들로 추가로 분할되면, 마지막으로 코딩된 TU에 대해, cbf_flag_luma_depth1 플래그가, 시그널링되지 않을 수 있지만 동일한 코딩 블록 내의 모든 이전 TU들이, 0이 아닌 루마 또는 크로마 계수가 존재하지 않고 현재 TU가 0이 아닌 크로마 계수를 갖지 않음을 지시하는 디폴트 값 (예를 들어, 0)으로 코딩되면 암시적으로 도출될 수 있다.
암시적으로 도출된 cbf_flag_luma_depth1 플래그 값은 적어도 하나의 0이 아닌 루마 계수가 존재함을 지시하는 값이다.
본 개시내용에서, 잔차 블록의 에너지의 대부분을 커버하는 서브-블록은, 이 서브-블록에 의해 커버되는 샘플들의 측정이 전체 코딩 블록에 의해 커버되는 샘플들의 측정의 주어진 백분율보다 크다는 것을 의미할 수 있다. 백분율은 사전-정의된 임계 값들, 예를 들어, 90% 또는 80%일 수 있다. 측정은, 절대 값의 합 또는 제곱 값의 합을 포함하나, 이로 제한되지 않는다.
인터 코딩에 대해, 다수의 예측 블록들이 현재 블록의 예측(예를 들어, 양-예측 또는 인터-인트라 예측)을 생성하는 데 사용되는 경우, 이러한 예측 블록들의 예측 샘플 값들이 현재 블록의 변환 사이즈 및/또는 포지션을 결정하기 위해 사용될 수 있다.
일 실시예에서, 가상 잔차 블록(VRB)은 하나의 예측 블록을 다른 블록으로부터 감산함으로써 계산된 다음, 이 VRB의 잔차 에너지 분포에 따라, 변환 블록 사이즈 및 포지션이 현재 블록에 대해 결정된다.
일 실시예에서, 서브-블록 변환 사이즈는 단지 절반 사이즈일 수 있고, 잔차 블록의 에너지의 대부분을 커버하는 서브-블록 포지션이 서브-블록 변환 포지션으로서 결정된다.
다른 실시예에서, 서브-블록 변환 사이즈는 오직 1/4 사이즈, 예를 들어, 폭이 1/4, 또는 높이가 1/4 또는 폭과 높이 둘 다가 절반일 수 있으며, 잔차 블록의 에너지의 대부분을 커버하는 서브-블록 포지션이 서브-블록 변환 포지션으로서 결정된다.
다른 실시예에서, 서브-블록 변환 사이즈는 절반 사이즈 또는 1/4 사이즈일 수 있고, 사이즈 선택은 현재 블록에 대해 명시적으로 시그널링된 다음, 선택된 서브-블록 변환 사이즈가 주어지면, 잔차 블록의 에너지의 대부분을 커버하는 서브-블록 블록 포지션이 서브-블록 변환 포지션으로서 결정된다.
다른 실시예에서, 서브-블록 변환 사이즈 및 포지션 둘 다는, 이 VRB에서 상이한 서브-블록 사이즈 및 포지션들을 시도함으로써 결정되고, 특정 서브-블록 변환 사이즈 및 포지션이 잔류 에너지의 대부분을 커버할 때, 이는 서브-블록 변환 사이즈 및 포지션으로서 결정된다.
상이한 서브-블록 사이즈에 대해 상이한 잔차 백분율 임계 값들이 사용될 수 있다. 예를 들어, 절반 사이즈 서브-블록 변환 사이즈에 대한 잔차 백분율 임계치가 K0이고, 1/4 사이즈 서브-블록 변환 사이즈에 대한 잔차 백분율 임계치가 K1이면, K1은 K0보다 크다.
일 실시예에서, 최적의 서브-블록 변환 포지션은 각각의 후보 서브-블록 변환 사이즈에 대해 개별적으로 결정된 다음, 샘플 당 최소 잔류 에너지 값을 제공하는 후보 서브-블록 변환 사이즈가 서브-블록 변환 사이즈로서 선택된다.
다른 실시예에서, 서브-블록 포지션들의 서브세트만이 허용된다. 예를 들어, x 방향 및 y 방향 둘 다에서 현재 블록의 왼쪽 상단에 대한 오프셋들은 값의 배수여야 한다. 값은 비트스트림에서, 이를테면 SPS, PPS, 슬라이스 헤더 또는 타일 헤더에서 미리정의되거나 시그널링될 수 있다. 서브-블록 변환에 의해 커버되지 않는 샘플들에 대해, 이는 0으로 가정될 수 있으므로, 계수가 시그널링되지 않는다.
인터 코딩에 대해, 현재 블록의 예측(예를 들어, 단-예측(uni-prediction))을 생성하기 위해 하나의 예측 블록만이 사용되는 경우, 제2 가상 예측 블록이 로케이팅될 수 있으며, 예측 블록 및 이 제2 가상 예측 블록이 현재 블록의 변환 사이즈 및/또는 포지션을 결정하기 위해 사용될 수 있다.
일 실시예에서, 제2 가상 예측 블록은, 현재 블록의 모션 벡터를 미러링함으로써 도출되고 상이한 참조 픽처에서 참조 블록을 로케이팅한다.
일 실시예에서, 제2 가상 예측 블록이 현재 블록의 상이한 참조 프레임을 사용하는 이웃 블록을 서치함으로써 도출된 다음, 제2 가상 예측 블록이 현재 블록의 포지션, 이 이웃 블록의 모션 벡터 및 연관된 참조 프레임을 사용함으로써 도출된다.
다른 실시예에서, 제2 가상 예측 블록은 평면 내 모드(intra planar mode)에 의해 도출된다.
다른 실시예에서, 예측 블록 및 제2 가상 예측 블록으로, 가상 잔차 블록(VRB)은 하나의 예측 블록을 다른 블록으로부터 감산함으로써 계산될 수 있고 그런 다음, 이 VRB의 잔차 에너지 분포에 따라, 변환 블록 사이즈 및 포지션이 현재 블록에 대해 결정될 수 있다. 그런 다음 위에서 설명된 기법들이 적용될 수 있다.
인터 코딩에 대해, 전체 사이즈 변환 사이즈 또는 더 작은 변환 사이즈가 사용되는지 여부는, 각각의 코딩 블록에 대한 플래그를 사용하여 시그널링될 수 있다.
일 실시예에서, 결과적인 서브-블록 변환 사이즈가 지원되지 않는다면, 예를 들어 2-포인트 변환이 사용될 필요가 있다면, 이 서브-블록 사이즈는 결코 사용될 수 없다.
일 실시예에서, 현재 블록이 상이한 샘플들, 예를 들어 서브-블록 모션에 대해 상이한 모션 벡터들을 갖는다면, 서브-블록 사이즈는 사용될 수 없으므로 서브-블록 변환이 사용될 수 없다.
일 실시예에서, 현재 블록이 상이한 샘플들, 예를 들어 서브-블록 모션에 대해 상이한 모션 벡터들을 갖는다면, 가상 잔차 블록은 또한, 다수의 서브 가상 잔차 블록들로 분할되고, 잔차 샘플들은 그들의 연관된 모션 벡터 및 예측 블록을 사용하여 개별적으로 각각의 서브 예측 블록에 대해 도출된다.
서브-블록 변환 사이즈 및 포지션이 루마 샘플들에 의해 도출될 수 있지만 크로마 샘플들에 대해서는 공유된다. 일 실시예에서, 서브-블록 변환 사이즈 및 포지션은 루마 샘플 및 크로마 샘플 둘 다에 의해 도출될 수 있고 현재 루마 블록 및 크로마 블록 둘 다에 사용될 수 있다. 일 실시예에서, 서브-블록 변환 사이즈 및 포지션은 루마 샘플들에 대해서만 도출되고 사용될 수 있다.
루마 샘플 및 크로마 샘플 둘 다가 가상 잔차 블록을 도출하는 데 사용되는 경우, 각각의 샘플에 대한 잔차 에너지는 루마 샘플 및 크로마 샘플 둘 다의 잔차 에너지의 가중 합으로 측정될 수 있다. 가중은 비트스트림에서, 이를테면 SPS, PPS, 슬라이스 헤더 또는 타일 헤더에서 미리정의되거나 시그널링될 수 있다.
위의 기법들이 적용될 수 있는지 있는지 여부는, VPS, PPS, SPS, 슬라이스, 타일, 타일 그룹, CTU 헤더를 포함하는(그러나, 이로 제한되지 않음) 하이-레벨 신택스 엘리먼트들에 시그널링된다.
도 14는 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 분할하기 위한 예시적인 프로세스(1400)의 흐름도이다. 일부 구현들에서, 도 14의 하나 이상의 프로세스 블록들은 디코더(1110)에 의해 수행될 수 있다. 일부 구현들에서, 도 14의 하나 이상의 프로세스 블록들은 인코더(1103)와 같은 디코더(1110)로부터 분리되거나 또는 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 14에 도시된 바와 같이, 프로세스(1400)는 CU의 높이를 결정하는 것(블록(1410))을 포함할 수 있다.
도 14에 추가로 도시된 바와 같이, 프로세스(1400)는 CU의 폭을 결정하는 것(블록(1420))을 포함할 수 있다.
도 14에 추가로 도시된 바와 같이, 프로세스(1400)는 CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하는 것(블록(1430))을 포함할 수 있다.
도 14에 추가로 도시된 바와 같이, 프로세스(1400)는 CU의 높이 및 CU의 폭에 기반하여 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하는 것(블록(1440))을 포함할 수 있다.
도 14에 추가로 도시된 바와 같이, 프로세스(1400)는 결정된 하나 이상의 TU들의 TU 사이즈 및 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 CU를 하나 이상의 TU들로 파티셔닝하는 것(블록(1450))을 포함할 수 있다.
일 실시예에 따르면, CU의 높이는 CU의 폭과 같을 수 있고, 하나 이상의 TU들의 수는 4개일 수 있으며, 하나 이상의 TU들 각각의 높이는 CU 높이의 절반일 수 있으며, 하나 이상의 TU들 각각의 폭은 CU 폭의 절반일 수 있다.
일 실시예에 따르면, CU의 폭은 CU의 높이보다 클 수 있으며, 하나 이상의 TU들의 수는 2개일 수 있으며, 하나 이상의 TU들 각각의 높이는 CU의 높이와 같을 수 있고, 하나 이상의 TU들 각각의 폭은 CU의 폭의 절반일 수 있다.
일 실시예에 따르면, CU의 높이는 CU의 폭보다 클 수 있고, 하나 이상의 TU들의 수는 2개일 수 있으며, 하나 이상의 TU들 각각의 높이는 CU 높이의 절반일 수 있으며, 하나 이상의 TU들 각각의 폭은 CU 폭과 동일할 수 있다.
일 실시예에 따르면, 하나 이상의 TU들 중의 TU가 이용할 수 있는 변환 타입들의 순서는 하나 이상의 TU 포지션들 중 TU의 포지션에 기반하여 결정될 수 있다.
일 실시예에 따르면, 하나 이상의 TU들은 더 작은 TU들로 파티셔닝되지 않는다.
일 실시예에 따르면, 프로세스(1400)는 CU의 인터 예측 코딩을 수행하기 위해 다수의 예측 블록들이 사용된다는 것을 결정하는 것; 및 다수의 예측 블록들의 예측 샘플 값들에 기반하여 TU 사이즈 및 하나 이상의 TU 포지션들 중 적어도 하나를 결정하는 것을 더 포함할 수 있다.
일 실시예에 따르면, 다수의 예측 블록들은 제1 예측 블록 및 제2 예측 블록을 포함할 수 있으며, 프로세스(1400)는 제1 예측 블록으로부터 제2 예측 블록을 감산하여 가상 잔차 블록(VRB)을 계산하는 것; 및 VRB의 잔차 에너지 분포에 기반하여 TU 사이즈 및 하나 이상의 TU 포지션들 중 적어도 하나를 결정하는 것을 더 포함할 수 있다.
일 실시예에 따르면, 하나 이상의 TU 포지션들은 잠재적 TU 포지션들의의 서브세트로부터 선택될 수 있다.
일 실시예에 따르면, 서브세트는 시퀀스 파라미터 세트, 픽처 파라미터 세트, 슬라이스 헤더 또는 타일 헤더 중 하나에서 시그널링될 수 있다.
일 실시예에 따르면, 프로세스(1400)는 CU의 인터 예측 코딩을 수행하기 위해 단일 예측 블록이 사용된다는 것을 결정하는 것; 가상 예측 블록을 로케이팅하는 것; 및 예측 블록 및 가상 예측 블록에 기반하여 TU 사이즈 및 하나 이상의 TU 포지션들 중 적어도 하나를 결정하는 것을 더 포함할 수 있다.
일 실시예에 따르면, 가상 예측 블록은, CU의 모션 벡터를 미러링하고 그리고 예측 블록의 참조 픽처와 상이한 참조 픽처에서 가상 예측 블록을 로케이팅함으로써 도출될 수 있다.
일 실시예에 따르면, CU는 제1 참조 프레임과 연관될 수 있으며, 프로세스(1400)는 제1 참조 프레임과 상이한 제2 참조 프레임과 연관된 이웃 블록을 결정하는 것 및 CU의 포지션, 이웃 블록의 모션 벡터 및 제2 참조 프레임에 기반하여 가상 예측 블록을 도출하는 것을 더 포함할 수 있다.
도 14는 프로세스(1400)의 예시적인 블록들을 도시하지만, 일부 구현들에서, 프로세스(1400)는 도 14에 도시된 것들과는 다른 블록들이나, 다르게 배열된 블록들이나, 더 적은 블록들 또는 추가 블록들을 포함할 수 있다. 부가적으로 또는 대안적으로, 프로세스(1400)의 블록들 중 2개 이상은 병렬로 수행될 수 있다.
또한, 제안된 방법들은 프로세싱 회로부(예를 들어, 하나 이상의 프로세서들 또는 하나 이상의 집적 회로들)에 의해 구현될 수 있다. 일 예에서, 하나 이상의 프로세서들은 제안된 방법들 중 하나 이상을 수행하기 위해 비-일시적 컴퓨터-판독가능 매체에 저장된 프로그램을 실행한다.
앞서 설명된 기법들은, 컴퓨터-판독가능 명령들을 사용하여 컴퓨터 소프트웨어로 구현될 수 있으며 하나 이상의 컴퓨터-판독가능 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 15는 개시된 청구대상의 특정 실시예들을 구현하는 데 적합한 컴퓨터 시스템(1500)을 도시한다.
컴퓨터 소프트웨어는, 임의의 적절한 머신 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있으며, 이는, CPU(computer central processing unit), GPU(Graphics Processing Unit) 등에 의해, 직접 실행되거나 해석, 마이크로-코드 실행 등을 통해 실행될 수있는 명령들을 포함하는 코드를 생성하기 위해, 어셈블리, 컴필레이션(compilation), 링킹 등의 메커니즘으로 처리될 수 있다.
명령들은, 예를 들어 개인용 컴퓨터들, 태블릿 컴퓨터들, 서버들, 스마트폰들, 게임 디바이스들, 사물 인터넷 디바이스들 등을 포함하는, 다양한 타입들의 컴퓨터들 또는 이들의 컴포넌트들에서 실행될 수 있다.
컴퓨터 시스템(1500)에 대해 도 15에 도시된 컴포넌트들은 본질적으로 예시적이며 본 개시내용의 실시예들을 구현하는 컴퓨터 소프트웨어의 사용 또는 기능의 범위에 대한 어떠한 제한을 제안하려는 의도는 아니다. 컴포넌트들의 구성은 컴퓨터 시스템(1500)의 예시적인 실시예에 예시된 컴포넌트들 중 임의의 하나 또는 이들의 조합과 관련된 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(1500)은 특정 인간 인터페이스 입력 디바이스들을 포함할 수 있다. 이러한 인간 인터페이스 입력 디바이스는, 예를 들어, 촉각 입력(이를테면, 키스트로크들, 스와이프들, 데이터 장갑 움직임들), 오디오 입력(이를테면, 음성, 클랩핑), 시각적 입력(이를테면, 제스처들), 후각 입력(도시되지 않음)을 통해, 한 명 이상의 인간 사용자에 의한 입력에 응답할 수 있다. 인간 인터페이스 디바이스들은 또한, 오디오(예를 들어, 음성, 음악, 주변 소리), 이미지들(예를 들어, 스캔된 이미지들, 스틸 이미지 카메라로부터 획득된 사진 이미지들), 비디오(이를테면, 2차원 비디오, 입체 비디오를 포함하는 3차원 비디오)와 같이 인간에 의한 의식적인 입력과 직접 관련이 없는 특정 미디어를 캡처하는 데 사용될 수 있다.
입력 인간 인터페이스 디바이스들은 키보드(1501), 마우스(1502), 트랙 패드(1503), 터치 스크린(1510), 데이터-장갑(1204), 조이스틱(1505), 마이크로폰(1506), 스캐너(1507), 카메라(1508) 중 하나 이상(각각 중 하나만이 도시됨)을 포함할 수 있다.
컴퓨터 시스템(1500)은 또한 특정 인간 인터페이스 출력 디바이스들을 포함할 수 있다. 이러한 인간 인터페이스 출력 디바이스들은, 예를 들어, 촉각 출력, 소리, 광 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 인간 인터페이스 출력 디바이스들은 촉각 출력 디바이스들(예를 들어, 터치 스크린(1510), 데이터-장갑(1204) 또는 조이스틱(1505)에 의한 촉각 피드백, 그러나 또한, 입력 디바이스들로서의 역할을 하지 않는 촉각 피드백 디바이스들일 수 있음), 오디오 출력 디바이스들(이를테면, 스피커들(1509), 헤드폰(미도시)), 시각적 출력 디바이스들(이를테면, 음극선관 (CRT) 스크린들, 액정 디스플레이(LCD) 스크린들, 플라즈마 스크린들, 유기 발광 다이오드(OLED) 스크린들을 포함하는 스크린들(1510), 각각은 터치 스크린 입력 능력이 있거나 없음, 각각은 촉각 피드백 능력이 있거나 없음 ―이들 중 일부는 입체 출력과 같은 수단을 통해 2차원 시각적 출력 또는 3차원 이상의 출력을 출력할 수 있음―; 가상-현실 안경(도시되지 않음), 홀로그램 디스플레이들 및 스모크 탱크들(도시되지 않음)), 및 프린터들(도시되지 않음)을 포함할 수 있다.
컴퓨터 시스템(1500)은 또한, 인간이 액세스가능한 저장 디바이스들 및 이들의 연관된 매체 이를테면 CD/DVD 등의 매체(1521)를 갖는 CD/DVD ROM/RW(1520), 썸-드라이브(thumb-drive)(1522), 이동식 하드 드라이브 또는 솔리드 스테이트 드라이브(1523)를 포함하는 광학 매체, 레거시 자기 매체 이를테면, 테이프 및 플로피 디스크(floppy disc)(도시되지 않음), 특수 ROM/ASIC/PLD 기반 디바이스들 이를테면, 보안 동글(security dongle)들(도시되지 않음) 등을 포함할 수 있다.
당업자는 또한, 현재 개시된 청구대상과 관련하여 사용되는 "컴퓨터 판독가능 매체"란 용어는 전송 매체, 반송파들 또는 다른 일시적인 신호들을 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(1500)은 또한 하나 이상의 통신 네트워크들(1555)에 대한 인터페이스를 포함할 수 있다. 네트워크들(1555)은 예를 들어 무선, 유선, 광(optical) 네트워크들일 수 있다. 네트워크들(1555)은 추가로, 로컬, 광역, 대도시, 차량 및 산업, 실시간, 지연-허용(delay-tolerant) 네트워크들 등일 수 있다. 네트워크들(1555)의 예들은, 이더넷, 무선 LAN들, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크들과 같은 근거리 통신망들, 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 유선 또는 무선 광역 디지털 네트워크들, CANBus를 포함하는 차량 및 산업용 네트워크들 등을 포함한다. 특정 네트워크들(1555)은 일반적으로, 특정 범용 데이터 포트들 또는 주변 버스들(1549)(이를테면, 예를 들어, 컴퓨터 시스템(1500)의 USB 포트들)에 부착된 외부 네트워크 인터페이스 어댑터들(1554)을 필요로 하며; 다른 것들은 일반적으로, 아래에 설명된 대로 시스템 버스에 대한 부착에 의해 컴퓨터 시스템(1500)의 코어에 통합된다(예를 들어, PC 컴퓨터 시스템으로의 이더넷 인터페이스 또는 스마트폰 컴퓨터 시스템으로의 셀룰러 네트워크 인터페이스). 이러한 네트워크들(1555) 중 임의의 것을 사용하여, 컴퓨터 시스템(1500)은 다른 엔티티들과 통신할 수 있다. 이러한 통신은 단방향성의 수신-전용(예를 들어, 방송 TV), 단방향성의 송신-전용(예를 들어, 특정 CANbus 디바이스들로의 CANbus), 또는 양방향성, 예를 들어, 로컬 또는 광역 디지털 네트워크들을 사용하는 다른 컴퓨터 시스템들일 수 있다. 앞서 설명된 바와 같이, 특정 프로토콜들 및 프로토콜 스택들은 이들 네트워크들(1555) 및 네트워크 인터페이스들(1554) 각각에서 사용될 수 있다.
위에서 논의된 인간 인터페이스 디바이스들, 인간이 액세스가능한 저장 디바이스들 및 네트워크 인터페이스들은 컴퓨터 시스템(1500)의 코어(1540)에 부착될 수 있다.
코어(1540)는 하나 이상의 CPU(Central Processing Unit)들 (1541), GPU(Graphics Processing Unit)(1542)들, FPGA(Field Programmable Gate Areas)(1543) 형태의 특수 프로그램가능 프로세싱 유닛들, 특정 작업들을 위한 하드웨어 가속기들(1544) 등을 포함할 수 있다. 이러한 디바이스들은, ROM(Read-only memory)(1545), RAM(Random-Access Memory)(1546), 내부 비-사용자 액세스가능 하드 드라이브들, SSD(Solid-State Drive)들 등과 같은 내부 대용량 저장소(1547)와 함께, 시스템 버스(1248)를 통해 연결된다. 일부 컴퓨터 시스템들에서, 시스템 버스(1248)는 추가 CPU들, GPU 등에 의한 확장들을 가능하게 하기 위해 하나 이상의 물리적 플러그들의 형태로 액세스가능할 수 있다. 주변 디바이스들은 코어의 시스템 버스(1248)에 직접 또는 주변장치 버스(1549)를 통해 부착될 수 있다. 주변장치 버스를 위한 아키텍처들은 PCI(Peripheral Component Interconnect), USB 등을 포함한다.
CPU(1541), GPU(1542), FPGA(1543) 및 가속기들(1544)은, 조합하여, 앞서 논의된 컴퓨터 코드를 구성할 수 있는 특정 명령들을 실행할 수 있다. 이 컴퓨터 코드는 ROM(1545) 또는 RAM(1546)에 저장될 수 있다. 트랜지셔널 데이터(transitional data)는 또는 RAM(1546)에 저장될 수 있는 반면, 영구 데이터는, 예를 들어, 내부 대용량 저장소(1547)에 저장될 수 있다. 하나 이상의 CPU(1541), GPU(1542), 대용량 저장소(1547), ROM(1545), RAM(1546) 등과 밀접하게 연관될 수 있는 캐시 메모리의 사용을 통해, 메모리 디바이스들 중 임의의 메모리 디바이스에 대한 빠른 저장 및 검색이 가능해질 수 있다.
컴퓨터 판독가능 매체는 다양한 컴퓨터 구현 동작들을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시내용의 목적들을 위해 특별히 설계되고 구성된 것일 수 있거나, 또는 이들은, 컴퓨터 소프트웨어 분야의 숙련자들에게 잘 알려져 있고 이들이 이용가능한 종류의 것일 수 있다.
제한이 아닌 예로서, 아키텍처(1500)를 갖는 컴퓨터 시스템, 특히 코어(1540)는, 하나 이상의 유형의 컴퓨터 판독가능 매체에 구현된 소프트웨어를 실행하는 프로세서(들)(CPU, GPU, FPGA, 가속기 등을 포함)의 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터 판독가능 매체는, 위에서 소개된 바와 같은 사용자가 액세스가능한 대용량 저장소와 연관된 매체일 수 있을 뿐만 아니라, 코어-내부 대용량 저장소(1547) 또는 ROM(1545)와 같은 비-일시적 특성을 갖는 코어(1540)의 특정 저장소일 수 있다. 본 개시내용의 다양한 실시예들을 구현하는 소프트웨어는 이러한 디바이스들 저장되고 코어(1540)에 의해 실행될 수 있다. 컴퓨터 판독가능 매체는 특정 요구조건들에 따라 하나 이상의 메모리 디바이스들 또는 칩들을 포함할 수 있다. 소프트웨어는, 코어(1540) 및 구체적으로 그 안에 있는 프로세서들(CPU, GPU, FPGA 등을 포함)로 하여금, RAM(1546)에 저장된 데이터 구조들을 정의하는 것 그리고 소프트웨어에 의해 정의된 프로세스들에 따라 이러한 데이터 구조들을 수정하는 것을 포함하여, 본원에서 설명되는 특정 프로세스들 또는 특정 프로세스들의 특정 부분들을 실행하게 할 수 있다. 추가로 또는 대안적으로, 컴퓨터 시스템은, 본원에 설명된 특정 프로세스들 또는 특정 프로세스들의 특정 부품들을 실행하기 위해 소프트웨어 대신 또는 소프트웨어와 함께 동작할 수 있는 회로(예를 들어, 가속기(1544))에 하드와이어링된 또는 다른 방식으로 구현된 로직의 결과로서 기능을 제공할 수 있다. 소프트웨어에 대한 참조는 로직을 포함할 수 있으며 적절한 경우 그 반대도 가능하다. 컴퓨터 판독가능 매체에 대한 언급은, 적절한 경우, 실행을 위한 소프트웨어를 저장하는 회로(예를 들어, 집적 회로(IC)), 실행을 위한 로직을 구현하는 회로, 또는 이 둘 다를 포함할 수 있다. 본 개시내용은 하드웨어 및 소프트웨어의 임의의 적절한 조합을 포함한다.
본 개시내용이 여러 예시적인 실시예들을 설명했지만, 본 개시내용의 범위 내에 속하는 변경들, 치환들 및 다양한 대체 등가물들이 존재한다. 따라서, 당업자는, 본원에 명시적으로 도시되거나 설명되지 않았지만, 본 개시내용의 원리들을 구현하고 따라서 본 개시내용의 사상 및 범위 내에 있는 수많은 시스템들 및 방법들을 안출할 수 있을 것임이 이해될 것이다.
약어들:
HEVC: 고효율 비디오 코딩(High Efficiency Video Coding)
HDR: 하이 다이내믹 레인지(high dynamic range)
SDR: 표준 다이내믹 레인지(standard dynamic range)
VVC: 다용도 비디오 코딩(Versatile Video Coding)
JVET: 조인트 비디오 탐색 팀(Joint Video Exploration Team)
CU: 코딩 단위(Coding Unit)
PU: 예측 단위(Prediction Unit)
MTS: 다중 변환 선택(Multiple Transform Selection)
EMT: 향상된 다중 변환(Enhanced Multiple Transform)
AMT: 적응형 다중 변환(Adaptive Multiple Transform)
SVT: 공간적 가변 변환(Spatially Varying Transform)
SBT: 서브-블록 변환(Sub-block Transform)
VPS: 비디오 파라미터 세트(Video Parameter Set)
PPS: 픽처 파라미터 세트(Picture Parameter Set)
SPS: 시퀀스 파라미터 세트(Sequence Parameter Set)

Claims (20)

  1. 적어도 하나의 프로세서를 사용하여 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU: coding unit)를 하나 이상의 변환 단위(TU: transform unit)들로 파티셔닝하는 방법으로서,
    상기 CU의 높이를 결정하는 단계;
    상기 CU의 폭을 결정하는 단계;
    상기 CU의 높이 및 상기 CU의 폭에 기반하여 상기 하나 이상의 TU들 각각의 TU 사이즈를 결정하는 단계;
    상기 CU의 높이 및 상기 CU의 폭에 기반하여 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하는 단계; 및
    상기 결정된 하나 이상의 TU들의 사이즈 및 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 상기 CU를 상기 하나 이상의 TU들로 분할하는 단계
    를 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  2. 제1항에 있어서,
    상기 CU의 높이는 상기 CU의 폭과 동일하고,
    상기 하나 이상의 TU들의 수는 4개이고,
    상기 하나 이상의 TU들 각각의 높이는 상기 CU의 높이의 절반이고, 그리고
    상기 하나 이상의 TU들 각각의 폭은 상기 CU의 폭의 절반인,
    코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  3. 제1항에 있어서,
    상기 CU의 폭은 상기 CU의 높이보다 크고,
    상기 하나 이상의 TU들의 수는 2개이고,
    상기 하나 이상의 TU들 각각의 높이는 상기 CU의 높이와 동일하고, 그리고
    상기 하나 이상의 TU들 각각의 폭은 상기 CU의 폭의 절반인,
    코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  4. 제1항에 있어서,
    상기 CU의 높이는 상기 CU의 폭보다 크고,
    상기 하나 이상의 TU들의 수는 2개이고,
    상기 하나 이상의 TU들 각각의 높이는 상기 CU의 높이의 절반이고, 그리고
    상기 하나 이상의 TU들 각각의 폭은 상기 CU의 폭과 동일한,
    코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 TU들 중의 TU가 이용할 수 있는 변환 타입들의 순서는 상기 하나 이상의 TU 포지션들 중 TU의 포지션에 기반하여 결정될 수 있는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 TU들은 더 작은 TU들로 파티셔닝되지 않는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  7. 제1항에 있어서,
    상기 CU의 인터 예측 코딩(inter prediction coding)을 수행하기 위해 다수의 예측 블록들이 사용된다는 것을 결정하는 단계; 및
    상기 다수의 예측 블록들의 예측 샘플 값들에 기반하여, 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하는 단계
    를 더 포함하는 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  8. 제7항에 있어서,
    상기 다수의 예측 블록들은 제1 예측 블록 및 제2 예측 블록을 포함하고,
    상기 방법은,
    상기 제1 예측 블록으로부터 상기 제2 예측 블록을 감산하여 가상 잔차 블록(VRB: virtual residual block)을 계산하는 단계; 및
    상기 VRB의 잔차 에너지 분포에 기반하여 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하는 단계
    를 더 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  9. 제7항에 있어서,
    상기 하나 이상의 TU 포지션들은 잠재적 TU 포지션들의 서브세트로부터 선택되는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  10. 제9항에 있어서,
    상기 서브세트는 시퀀스 파라미터 세트, 픽처(picture) 파라미터 세트, 슬라이스 헤더 또는 타일 헤더 중 하나에서 시그널링되는,
    코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  11. 제1항에 있어서,
    상기 CU의 인터 예측 코딩을 수행하기 위해 단일 예측 블록이 사용된다는 것을 결정하는 단계;
    가상 예측 블록을 로케이팅하는 단계; 및
    상기 예측 블록 및 상기 가상 예측 블록에 기반하여 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하는 단계
    를 더 포함하는 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  12. 제11항에 있어서,
    상기 가상 예측 블록은, 상기 CU의 모션 벡터를 미러링하고 그리고 상기 예측 블록의 참조 픽처와 상이한 참조 픽처에서 상기 가상 예측 블록을 로케이팅함으써 도출되는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  13. 제11항에 있어서,
    상기 CU는 제1 기준 프레임과 연관되고,
    상기 방법은,
    상기 제1 참조 프레임과 상이한 제2 참조 프레임과 연관된 이웃 블록을 결정하는 단계; 및
    상기 CU의 포지션, 상기 이웃 블록의 모션 벡터 및 상기 제2 참조 프레임에 기반하여 상기 가상 예측 블록을 도출하는 단계
    를 더 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하는 방법.
  14. 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스로서,
    프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리; 및
    상기 프로그램 코드를 판독하고 상기 프로그램 코드가 명령하는 대로 동작하도록 구성된 적어도 하나의 프로세서
    를 포함하며, 상기 프로그램 코드는,
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 높이를 결정하게 하도록 구성된 제1 결정 코드;
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 폭을 결정하게 하도록 구성된 제2 결정 코드;
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 높이 및 상기 CU의 폭에 기반하여 상기 하나 이상의 TU들 각각의 TU 사이즈를 결정하게 하도록 구성된 제3 결정 코드;
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 높이 및 상기 CU의 폭에 기반하여 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하게 하도록 구성된 제4 결정 코드; 및
    상기 적어도 하나의 프로세서로 하여금, 상기 결정된 하나 이상의 TU들의 TU 사이즈 및 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 상기 CU를 상기 하나 이상의 TU들로 파티셔닝하도록 구성된 파티셔닝 코드
    를 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  15. 제14항에 있어서,
    상기 하나 이상의 TU들 중의 TU가 이용할 수 있는 변환 타입들의 순서는 상기 하나 이상의 TU 포지션들 중 TU의 포지션에 기반하여 결정될 수 있는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  16. 제14항에 있어서,
    상기 하나 이상의 TU들은 더 작은 TU들로 파티셔닝되지 않는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  17. 제14항에 있어서,
    상기 프로그램 코드는,
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 인터 예측 코딩을 수행하기 위해 다수의 예측 블록들이 사용된다는 것을 결정하게 하도록 구성된 제5 결정 코드; 및
    상기 적어도 하나의 프로세서로 하여금, 상기 다수의 예측 블록들의 예측 샘플 값들에 기반하여, 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하게 하도록 구성된 제6 결정 코드
    를 더 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  18. 제17항에 있어서,
    상기 다수의 예측 블록들은 제1 예측 블록 및 제2 예측 블록을 포함하고,
    상기 프로그램 코드는,
    상기 적어도 하나의 프로세서로 하여금, 상기 제1 예측 블록으로부터 상기 제2 예측 블록을 감산하여 가상 잔차 블록(VRB)을 계산하게 하도록 구성된 계산 코드; 및
    상기 적어도 하나의 프로세서로 하여금, 상기 VRB의 잔차 에너지 분포에 기반하여 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하게 하도록 구성된 제7 결정 코드
    를 더 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  19. 제14항에 있어서,
    상기 프로그램 코드는,
    상기 적어도 하나의 프로세서로 하여금, 상기 CU의 인터 예측 코딩을 수행하기 위해 단일 예측 블록이 사용된다는 것을 결정하게 하도록 구성된 제5 결정 코드;
    상기 적어도 하나의 프로세서로 하여금, 가상 예측 블록을 로케이팅하게 하도록 구성된 로케이팅 코드; 및
    상기 적어도 하나의 프로세서로 하여금, 상기 예측 블록 및 상기 가상 예측 블록에 기반하여, 상기 하나 이상의 TU 포지션들 및 상기 TU 사이즈 중 적어도 하나를 결정하게 하도록 구성된 제6 결정 코드
    를 더 포함하는, 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스.
  20. 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체로서,
    상기 명령들은 하나 이상의 명령들을 포함하며,
    상기 하나 이상의 명령들은, 비디오 시퀀스를 인코딩하기 위해 코딩 단위(CU)를 하나 이상의 변환 단위(TU)들로 파티셔닝하기 위한 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들 하여금,
    상기 CU의 높이를 결정하고;
    상기 CU의 폭을 결정하고;
    상기 CU의 높이 및 상기 CU의 폭에 기반하여 하나 이상의 TU들 각각의 TU 사이즈를 결정하고;
    상기 CU의 높이 및 상기 CU의 폭에 기반하여 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들을 결정하고; 그리고
    상기 결정된 하나 이상의 TU들의 사이즈 및 상기 하나 이상의 TU들의 하나 이상의 TU 포지션들에 기반하여 상기 CU를 상기 하나 이상의 TU들로 파티셔닝하게 하는, 비-일시적 컴퓨터-판독가능 매체.
KR1020217012851A 2018-12-06 2019-12-04 단일-레벨 변환 분할 및 적응형 서브-블록 변환 KR102645498B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862776354P 2018-12-06 2018-12-06
US62/776,354 2018-12-06
US201862785681P 2018-12-27 2018-12-27
US62/785,681 2018-12-27
US16/694,338 US11102513B2 (en) 2018-12-06 2019-11-25 One-level transform split and adaptive sub-block transform
US16/694,338 2019-11-25
PCT/US2019/064402 WO2020117902A1 (en) 2018-12-06 2019-12-04 One-level transform split and adaptive sub-block transform

Publications (2)

Publication Number Publication Date
KR20210068101A true KR20210068101A (ko) 2021-06-08
KR102645498B1 KR102645498B1 (ko) 2024-03-07

Family

ID=70971338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012851A KR102645498B1 (ko) 2018-12-06 2019-12-04 단일-레벨 변환 분할 및 적응형 서브-블록 변환

Country Status (6)

Country Link
US (2) US11102513B2 (ko)
EP (1) EP3891992A4 (ko)
JP (1) JP7209829B2 (ko)
KR (1) KR102645498B1 (ko)
CN (1) CN112840662B (ko)
WO (1) WO2020117902A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102438149B1 (ko) 2018-02-23 2022-08-29 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩을 위한 위치 종속 공간 가변 변환
CN116320411A (zh) * 2018-03-29 2023-06-23 日本放送协会 图像编码装置、图像解码装置以及程序
US10893286B2 (en) * 2018-10-09 2021-01-12 Tencent America LLC Methods and apparatus for low-complexity MTS
EP3881546A4 (en) * 2018-12-04 2022-01-26 Huawei Technologies Co., Ltd. VIDEO ENCODER, VIDEO DECODER, AND CORRESPONDING METHOD
BR112021013512A2 (pt) * 2019-01-09 2021-09-14 Huawei Technologies Co., Ltd. Codificador de vídeo, decodificador de vídeo e métodos correspondentes
KR20210102468A (ko) * 2019-02-06 2021-08-19 엘지전자 주식회사 축소된 변환을 사용하여 비디오 신호를 처리하기 위한 방법 및 장치
US20220086490A1 (en) * 2019-02-12 2022-03-17 Lg Electronics Inc. Method and apparatus for processing video signal
CN117221544A (zh) * 2019-05-19 2023-12-12 字节跳动有限公司 数字视频中的变换旁路编解码残差块
KR20210000689A (ko) * 2019-06-25 2021-01-05 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
EP4029239A4 (en) * 2019-09-13 2022-12-14 Alibaba Group Holding Limited SUB-BLOCK TRANSFORM INFORMATION SIGNALING METHOD AND APPARATUS
CN116458159A (zh) * 2021-06-17 2023-07-18 腾讯美国有限责任公司 跳过变换标志编码

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0662389A (ja) * 1992-08-04 1994-03-04 Matsushita Electric Ind Co Ltd 映像信号符号化装置
KR100703748B1 (ko) * 2005-01-25 2007-04-05 삼성전자주식회사 다 계층 기반의 비디오 프레임을 효율적으로 예측하는 방법및 그 방법을 이용한 비디오 코딩 방법 및 장치
US8488668B2 (en) * 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
KR20090095012A (ko) * 2008-03-04 2009-09-09 삼성전자주식회사 연속적인 움직임 추정을 이용한 영상 부호화, 복호화 방법및 장치
WO2009130529A1 (en) 2008-04-24 2009-10-29 Fci Connector
KR101457396B1 (ko) * 2010-01-14 2014-11-03 삼성전자주식회사 디블로킹 필터링을 이용한 비디오 부호화 방법과 그 장치, 및 디블로킹 필터링을 이용한 비디오 복호화 방법 및 그 장치
US9237355B2 (en) * 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
CA2903530C (en) 2010-07-20 2018-08-28 Ntt Docomo, Inc. Video prediction encoding and decoding for partitioned regions while determining whether or not to use motion information from neighboring regions
KR20120012385A (ko) * 2010-07-31 2012-02-09 오수미 인트라 예측 부호화 장치
KR101373814B1 (ko) * 2010-07-31 2014-03-18 엠앤케이홀딩스 주식회사 예측 블록 생성 장치
US9049444B2 (en) * 2010-12-22 2015-06-02 Qualcomm Incorporated Mode dependent scanning of coefficients of a block of video data
US8948271B2 (en) 2011-01-13 2015-02-03 Texas Instruments Incorporated Method and apparatus for a low complexity transform unit partitioning structure for HEVC
US20130003858A1 (en) * 2011-06-30 2013-01-03 Vivienne Sze Simplified Context Selection For Entropy Coding of Transform Coefficient Syntax Elements
US9621921B2 (en) * 2012-04-16 2017-04-11 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
US9538175B2 (en) * 2012-09-26 2017-01-03 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
JP6545672B2 (ja) 2013-10-18 2019-07-17 エルジー エレクトロニクス インコーポレイティド マルチビュービデオコーディングにおいて、ビュー合成予測方法及びこれを利用したマージ候補リスト構成方法
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
WO2016154963A1 (en) * 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec
WO2017043816A1 (ko) * 2015-09-10 2017-03-16 엘지전자(주) 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
MX2021012481A (es) 2016-03-16 2022-05-30 Hfi Innovation Inc Metodo y aparato de procesamiento de datos de video con tama?o restringido de bloque en codificacion de video.
KR20170132036A (ko) * 2016-05-23 2017-12-01 가온미디어 주식회사 영상 처리를 위한 블록 분할 방법, 그를 이용한 영상 부호화 및 복호화 방법
US20190289301A1 (en) * 2016-05-23 2019-09-19 Kaonmedia Co., Ltd. Image processing method, and image encoding and decoding method using same

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Jianle Chen et al., Algorithm description for Versatile Video Coding and Test Model 3, Joint Video exploration Team(JVET), JVET-L1002, 2018-12-03, pp. 1-37* *
Krit Panuspone et al., Implicit Transform Unit Partitioning in HEVC, 2013 PICTURE CODING SYPMPOSIUM, IEEE, 2013-12-08, pp 123-126* *
Yin Zhao et al., CE6: Sub-transform for inter blocks(CE6.12), Joint Video exploration Team(JVET), JVET-L0358, 2018-09-25, pp. 1-3* *

Also Published As

Publication number Publication date
CN112840662B (zh) 2024-03-08
CN112840662A (zh) 2021-05-25
US11102513B2 (en) 2021-08-24
EP3891992A4 (en) 2022-09-21
US11706454B2 (en) 2023-07-18
US20210352327A1 (en) 2021-11-11
US20200186838A1 (en) 2020-06-11
JP7209829B2 (ja) 2023-01-20
WO2020117902A1 (en) 2020-06-11
JP2022507314A (ja) 2022-01-18
EP3891992A1 (en) 2021-10-13
KR102645498B1 (ko) 2024-03-07

Similar Documents

Publication Publication Date Title
CN113557718B (zh) 视频编解码的方法和装置
KR102471979B1 (ko) 비디오 코딩을 위한 방법 및 장치
KR102645498B1 (ko) 단일-레벨 변환 분할 및 적응형 서브-블록 변환
KR102410293B1 (ko) 비디오 시퀀스의 디코딩을 위한 방법 및 장치
US10893286B2 (en) Methods and apparatus for low-complexity MTS
JP7229355B2 (ja) 残差符号化を制御する方法、装置およびコンピュータ・プログラム
JP7465918B2 (ja) デコーダが実行するビデオデコーディングのための方法及び装置、並びにエンコーダが実行するビデオエンコーディングのための方法
KR20210068511A (ko) 비디오 코딩을 위한 방법 및 장치
KR102631373B1 (ko) 비디오 코딩을 위한 방법 및 장치
KR20210088671A (ko) 최대 변환 크기 제어
KR20200125703A (ko) 유연한 트리 구조
US11025937B2 (en) Method and apparatus for video coding
KR20200124275A (ko) 유연한 트리 구조에서의 연접된 코딩 단위들
RU2778250C1 (ru) Управление максимальным размером преобразования
KR20240093936A (ko) 비디오 코딩을 위한 방법 및 장치
KR20220062652A (ko) 비디오 코딩을 위한 방법 및 장치
KR20210138083A (ko) 플렉시블 픽처 파티셔닝

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant