KR101625548B1 - 변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들 - Google Patents

변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들 Download PDF

Info

Publication number
KR101625548B1
KR101625548B1 KR1020147001166A KR20147001166A KR101625548B1 KR 101625548 B1 KR101625548 B1 KR 101625548B1 KR 1020147001166 A KR1020147001166 A KR 1020147001166A KR 20147001166 A KR20147001166 A KR 20147001166A KR 101625548 B1 KR101625548 B1 KR 101625548B1
Authority
KR
South Korea
Prior art keywords
transform coefficients
level
context model
scan
transform
Prior art date
Application number
KR1020147001166A
Other languages
English (en)
Other versions
KR20140031370A (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 KR20140031370A publication Critical patent/KR20140031370A/ko
Application granted granted Critical
Publication of KR101625548B1 publication Critical patent/KR101625548B1/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]

Landscapes

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

Abstract

일 실시예에 있어서, 변환 계수들의 2차원 어레이를 포함하는 변환 유닛을 수신하는 단계, 및 2차원 어레이의 변환 계수들을 단일 레벨 스캔 순서에 따라 프로세싱하는 단계를 포함하는 비디오 데이터를 인코딩하는 방법이 제공된다. 프로세싱하는 단계는, 단일 레벨 스캔 순서에 따른 각각의 비-제로 변환 계수에 대하여, 비-제로 변환 계수의 절대 레벨을 인코딩하기 위한 하나 이상의 컨텍스트 모델들을 선택하는 단계를 포함하고, 여기서, 선택하는 단계는 단일 레벨 스캔 순서에 따라 사전에 인코딩된 하나 이상의 변환 계수들에 기초한다.

Description

변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들{CONTEXT MODELING TECHNIQUES FOR TRANSFORM COEFFICIENT LEVEL CODING}
관련 출원들에 대한 상호참조들
본 출원은 "CONTEXT MODELING FOR LEVEL CODING IN CABAC"의 명칭으로 2011년 7월 15일자로 출원된 미국 가출원 제61/508,595호 및 "WAVEFRONT SCAN AND RELATED CONTEXT MODELING"의 명칭으로 2011년 11월 8일자로 출원된 미국 가출원 제61/557,299호의 35 U.S.C. 119(e) 하의 우선권의 이익을 주장한다. 이들 출원들의 전체 내용은 모든 목적으로 참조로 본 명세서에 통합된다.
비디오 압축(즉, 코딩) 시스템들은 일반적으로, 대부분의 압축 동작들에 대한 블록 프로세싱을 채용한다. 블록은 이웃하는 픽셀들의 그룹이며, 압축의 목적으로 "코딩 유닛"으로 고려된다. 이론적으로, 더 큰 코딩 유닛 사이즈는 바로 이웃하는 픽셀들 간의 상관을 이용하기 위해 선호된다. MPEG(Motion Picture Expert Group)-1, MPEG-2, 및 MPEG-4와 같은 특정 비디오 코딩 표준들은 4×4, 8×8, 또는 16×16 픽셀들(매크로블록으로서 공지됨)의 코딩 유닛 사이즈를 이용한다.
고효율 비디오 코딩(HEVC:high efficiency video coding)은, 블록 프로세싱을 또한 채용하는 대안적인 비디오 코딩 표준이다. 도 1에 도시된 바와 같이, HEVC는 입력 화상(input picture)(100)을, 최대 코딩 유닛들(LCUs:largest coding units)로서 지칭되는 정방형 블록들(square blocks)로 파티셔닝한다. 각각의 LCU는 128×128 픽셀만큼 클 수 있으며, 코딩 유닛들(CUs:coding units)로서 지칭되는 더 작은 정방형 블록들로 파티셔닝될 수 있다. 예를 들어, LCU는 4개의 CU들로 분할될 수 있으며, 각각은 LCU의 사이즈의 1/4이다. CU는 4개의 더 작은 CU들로 더 분할될 수 있으며, 각각은 오리지널 CU의 사이즈의 1/4이다. 이러한 파티셔닝 프로세스는 특정 기준이 충족될 때까지 반복될 수 있다. 도 2는 7개의 CU들(202-1, 202-2, 202-3, 202-4, 202-5, 202-6, 및 202-7)로 파티셔닝된 LCU(200)를 도시한 것이다. 도시된 바와 같이, CU들(202-1, 202-2, 및 202-3)은 각각 LCU(200)의 사이즈의 1/4이다. 추가로, LCU(200)의 우상측 사분면은 4개의 CU들(202-4, 202-5, 202-6, 및 202-7)로 분할되고, 이들은 각각 사분면 사이즈의 1/4이다.
각각의 CU는 하나 이상의 예측 유닛들(PUs:prediction units)을 포함한다. 도 3은, PU들(302-1, 302-2, 302-3, 및 302-4)을 포함하는 예시적인 CU 파티션(300)을 도시한 것이다. PU들은 CU 파티션(300)의 공간 또는 시간 예측 코딩을 위해 사용된다. 예를 들어, CU 파티션(300)이 "인트라" 모드에서 코딩되면, 각각의 PU(302-1, 302-2, 302-3, 및 302-4)은 공간 예측에 대한 그 자신의 예측 방향을 갖는다. CU 파티션(300)이 "인터" 모드에서 코딩되면, 각각의 PU(302-1, 302-2, 302-3, 및 302-4)은 시간 예측에 대한 그 자신의 모션 벡터(들) 및 관련 레퍼런스 화상(들)을 갖는다.
추가로, PU들의 각각의 CU 파티션은 변환 유닛들(TUs:transform units)의 세트와 연관된다. 다른 비디오 코딩 표준들과 유사하게, HEVC는 잔여 데이터(residual data)에 대한 블록 변환을 적용하여 블록 내의 픽셀들을 상관해제(decorrelate)시키고, 블록 에너지를 낮은 차수 변환 계수들로 압축한다. 하지만, 단일의 4×4 또는 8×8 변환을 매크로블록에 적용하는 다른 표준들과는 달리, HEVC는 상이한 사이즈들의 블록 변환들의 세트를 단일의 CU에 적용할 수 있다. CU에 적용될 블록 변환들의 세트는 그 관련 TU들에 의해 표현된다. 예로서, 도 4는 TU들(402-1, 402-2, 402-3, 402-4, 402-5, 402-6, 및 402-7)의 관련 세트를 갖는 (PU들(302-1, 302-2, 302-3, 및 302-4)을 포함하는) 도 3의 CU 파티션(300)을 도시한 것이다. 이들 TU들은 7개의 별도의 블록 변환들이 CU 파티션(300)에 적용되어야 함을 나타내며, 여기서, 각각의 블록 변환의 범위는 각각의 TU의 위치 및 사이즈에 의해 정의된다. 특정 CU와 연관된 TU들의 구성은 다양한 기준들에 기초하여 상이할 수 있다.
일단 블록 변환 동작이 특정 TU에 대하여 적용되었으면, 결과적인 변환 계수들은 계수 데이터의 사이즈를 감소시키기 위해 양자화된다(quantized). 그 후, 양자화된 변환 계수들은 엔트로피 코딩되어, 압축 비트들의 최종 세트를 발생시킨다. 현재, HEVC 는 컨텍스트 기반 적응적 이진 산술 코딩(CABAC:context-based adaptive binary arithmetic coding)으로서 공지된 엔트로피 코딩 방식을 제안한다. CABAC는, 사전에 코딩된 심볼 통계들에 기초하여 입력 심볼들을 산술적으로 코딩하기 위한 컨텍스트 모델들(즉, 확률 모델들)을 적응적으로 선택하는 그 능력으로 인해 효율적인 압축을 제공할 수 있다. 하지만, CABAC에서의 컨텍스트 모델 선택 프로세스(컨텍스트 모델링으로서 지칭됨)는 복잡하고, 다른 압축 방식들보다 인코딩/디코딩을 위해 현저하게 더 많은 프로세싱 전력을 요구한다.
일 실시예에 있어서, 변환 계수들의 2차원 어레이를 포함하는 변환 유닛을 수신하는 단계, 및 2차원 어레이의 변환 계수들을 단일 레벨 스캔 순서에 따라 프로세싱하는 단계를 포함하는 비디오 데이터를 인코딩하는 방법이 제공된다. 프로세싱하는 단계는, 단일 레벨 스캔 순서에 따른 각각의 비-제로 변환 계수에 대하여, 비-제로 변환 계수의 절대 레벨을 인코딩하기 위한 하나 이상의 컨텍스트 모델들을 선택하는 단계를 포함하고, 여기서, 선택하는 단계는 단일 레벨 스캔 순서에 따라 사전에 인코딩된 하나 이상의 변환 계수들에 기초한다.
다른 실시예에 있어서, 압축된 데이터의 비트스트림을 수신하는 단계 - 압축된 데이터는 단일 레벨 스캔 순서에 따라 사전에 인코딩되었던 변환 계수들의 2차원 어레이에 대응함 -, 및 압축된 데이터의 비트스트림을 디코딩하는 단계를 포함하는 비디오 데이터를 디코딩하는 방법이 제공된다. 디코딩하는 단계는, 단일 레벨 스캔 순서에 따른 각각의 비-제로 변환 계수에 대하여, 비-제로 변환 계수의 절대 레벨을 디코딩하기 위한 하나 이상의 컨텍스트 모델들을 선택하는 단계를 포함하고, 여기서, 선택하는 단계는 단일 레벨 스캔 순서에 따라 사전에 디코딩된 하나 이상의 변환 계수들에 기초한다.
다른 실시예에 있어서, 복수의 변환 계수들을 포함하는 변환 유닛을 수신하는 단계, 및 단일 스캔 타입 및 단일 컨텍스트 모델 선택 방식을 사용하여 변환 유닛의 유의성 맵(significance map) 및 복수의 변환 계수들의 절대 레벨들을 인코딩하는 단계를 포함하는 비디오 데이터를 인코딩하는 방법이 제공된다.
다른 실시예에 있어서, 압축된 데이터의 비트스트림을 수신하는 단계를 포함하는 비디오 데이터를 디코딩하는 방법이 제공되며, 압축된 데이터는 사전에 인코딩되었던 복수의 변환 계수들을 포함하는 변환 유닛에 대응한다. 그 방법은 단일 스캔 타입 및 단일 컨텍스트 모델 선택 방식을 사용하여 변환 유닛의 유의성 맵 및 복수의 변환 계수들의 절대 레벨들을 디코딩하는 단계를 더 포함한다.
다음의 상세한 설명 및 첨부 도면들은 특정 실시예들의 본성 및 이점들의 더 우수한 이해를 제공한다.
도 1은 최대 코딩 유닛들(LCUs)로 파티셔닝된 입력 화상을 도시한 것이다.
도 2는 코딩 유닛들(CUs)로 파티셔닝된 LCU를 도시한 것이다.
도 3은 예측 유닛들(PUs)로 파티셔닝된 CU를 도시한 것이다.
도 4는 PU들로 파티셔닝된 CU 및 CU와 연관된 변환 유닛들(TU)의 세트를 도시한 것이다.
도 5는 비디오 콘텐츠를 인코딩하는 인코더를 도시한 것이다.
도 6은 비디오 콘텐츠를 디코딩하는 디코더를 도시한 것이다.
도 7은 CABAC 인코딩/디코딩 프로세스를 도시한 것이다.
도 8은 TU에 있어서의 마지막 유효 계수 포지션(last significant coefficient position)을 도시한 것이다.
도 9는 순방향 스캔(forward scan)을 이용한 컨텍스트 모델 선택을 위한 예시적인 이웃들을 도시한 것이다.
도 10은, 4×4 서브 블록 당 순방향 지그재그 스캔 및 각각의 서브 블록 내의 역방향 지그재그 스캔(reverse zigzag scan)을 포함하는 2레벨 스캐닝 시퀀스를 도시한 것이다.
도 11은 2레벨 스캐닝 시퀀스를 이용한 변환 계수 레벨들의 CABAC 인코딩/디코딩을 위한 프로세스를 도시한 것이다.
도 12는 일 실시예에 따른 단일 레벨 스캔을 이용한 변환 계수 레벨들의 CABAC 인코딩/디코딩을 위한 프로세스를 도시한 것이다.
도 13은 단일 레벨의 역방향 지그재그 스캔을 도시한 것이다.
도 14는 단일 레벨의 역방향 웨이브프론트 스캔(reverse wavefront scan)을 도시한 것이다.
도 15는 일 실시예에 따른 통합된 스캔 타입 및 컨텍스트 모델 선택 방식을 이용한 유의성 맵 값들 및 변환 계수 레벨들의 CABAC 인코딩/디코딩을 위한 프로세스를 도시한 것이다.
도 16은 역방향 스캔을 이용한 컨텍스트 모델 선택을 위한 예시적인 이웃들을 도시한 것이다.
CABAC와 같은 컨텍스트 적응적 엔트로피 코딩 방식 내에서의 변환 계수 레벨 코딩을 위해 사용될 수 있는 컨텍스트 모델링 기술들이 본 명세서에서 설명된다. 다음의 설명에 있어서, 설명의 목적으로, 다수의 예들 및 특정 상세들이 특정 실시예들의 철저한 이해를 제공하기 위해 기술된다. 청구항들에 의해 정의된 바와 같은 특정 실시예들은 이들 예들에서의 특징들의 일부 또는 그 모두를, 단독으로 또는 하기에서 설명되는 다른 특징들과 조합하여 포함할 수도 있으며, 본 명세서에서 설명되는 특징들 및 개념들의 변형물들 및 균등물들을 더 포함할 수도 있다.
인코더 및 디코더 실시예들
도 5는 비디오 콘텐츠를 인코딩하는 예시적인 인코더(500)를 도시한 것이다. 일 실시예에 있어서, 인코더(500)는 HEVC 표준을 구현할 수 있다. 인코더(500)의 일반적인 동작이 하기에 설명되지만, 이러한 설명은 오직 예시의 목적으로 제공될 뿐 본 명세서에서의 개시 및 교시들을 한정하도록 의도되지 않음을 이해해야 한다. 당업자는 인코더(500)의 구조 및 동작에 대한 다양한 변형예들, 변경예들, 및 대체예들을 인식할 것이다.
도시된 바와 같이, 인코더(500)는, 입력으로서, 현재의 PU "x"를 수신한다. PU x는 CU(또는 그 일부)에 대응하고, 이 CU는 결국 인코딩되고 있는 입력 화상(예를 들어, 비디오 프레임)의 파티션이다. PU x가 주어지면, 예측 PU "x'"가 (공간 예측 블록(502) 또는 시간 예측 블록(504)을 통한) 공간 예측 또는 시간 예측을 통해 획득된다. 그 후, PU x'는 PU x로부터 감산되어, 잔여 PU "e"를 생성한다.
일단 생성되면, 잔여 PU e는 변환 블록(506)으로 전달되고, 이 변환 블록은 PU e에 대한 하나 이상의 변환 동작들을 수행하도록 구성된다. 그러한 변환 동작들의 예들은 이산 사인 변환(DST:discrete sine transform), 이산 코사인 변환(DCT:discrete cosine transform), 및 그 변형물들(예를 들어, DCT-I, DCT-II, DCT-III 등)을 포함한다. 그 후, 변환 블록(506)은 잔여 PU e를 변환 도메인("E")에 출력하여, 변환된 PU E는 변환 계수들의 2차원 어레이를 포함한다. 이 블록에 있어서, 변환 동작은 (상기 도 4에 대하여 설명된 바와 같이) PU e에 대응하는 CU와 연관되었던 각각의 TU에 대하여 수행될 수 있다.
변환된 PU E는 양자화기(quantizer)(508)로 전달되고, 이 양자화기는 PU E의 상대적으로 높은 정밀도의 변환 계수들을 유한 개수의 가능한 값들로 변환하거나 양자화하도록 구성된다. 양자화 이후, 변환된 PU E는 엔트로피 코딩 블록(510)을 통해 엔트로피 코딩된다. 이러한 엔트로피 코딩 프로세스는 양자화된 변환 계수들을, 적절한 수신기/디코더로 후속적으로 송신되는 최종 압축 비트들로 압축한다. 엔트로피 코딩 블록(510)은 CABAC와 같은 다양한 서로다른 타입들의 엔트로피 코딩 방식들을 이용할 수 있다. CABAC를 구현하는 엔트로피 코딩 블록(510)의 특정 실시예는 하기에 더 상세히 설명된다.
전술한 단계들에 부가하여, 인코더(500)는, 역양자화기(dequantizer)(512)가 PU E의 양자화된 변환 계수들을 역양자화된 PU "E'"로 역양자화하는 디코딩 프로세스를 포함한다. PU E'는 역변환 블록(514)으로 전달되고, 이 역변환 블록은 PU E'의 역양자화된 변환 계수들을 역변환하고, 이에 의해, 복원된(reconstructed) 잔여 PU "e'"를 생성하도록 구성된다. 그 후, 복원된 잔여 PU e'는 오리지널 예측 PU x'에 가산되어 새로운 복원된 PU "x''"를 생성한다. 루프 필터(516)는 복원된 PU x''에 대해 다양한 동작들을 수행하여 블록 경계들을 평활화하고 복원된 픽셀들과 오리지널 픽셀들 간의 코딩 왜곡을 최소화한다. 그 후, 복원된 PU x''는 비디오 콘텐츠의 추후 프레임들을 인코딩하기 위한 예측 PU로서 사용된다. 예를 들어, 복원된 PU x''가 레퍼런스 프레임의 일부라면, 복원된 PU x''는 추후 시간 예측을 위해 레퍼런스 버퍼(518)에 저장될 수 있다.
도 6은 도 5의 인코더(500)에 상보적인 예시적인 디코더(600)를 도시한 것이다. 인코더(500)와 유사하게, 일 실시예에 있어서, 디코더(600)는 HEVC 표준을 구현할 수 있다. 디코더(600)의 일반적인 동작이 하기에 설명되지만, 이러한 설명은 오직 예시의 목적으로 제공될 뿐 본 명세서에서의 개시 및 교시들을 한정하도록 의도되지 않음을 이해해야 한다. 당업자는 디코더(600)의 구조 및 동작에 대한 다양한 변형예들, 변경예들, 및 대체예들을 인식할 것이다.
도시된 바와 같이, 디코더(600)는, 입력으로서, 인코더(500)에 의해 출력된 비트스트림과 같은 압축된 데이터의 비트스트림을 수신한다. 입력 비트스트림은 엔트로피 디코딩 블록(602)으로 전달되고, 이 엔트로피 디코딩 블록은 비트스트림에 대해 엔트로피 디코딩을 수행하여 잔여 PU의 양자화된 변환 계수들을 생성하도록 구성된다. 일 실시예에 있어서, 엔트로피 디코딩 블록(602)은 인코더(500)의 엔트로피 코딩 블록(510)에 의해 수행된 동작들의 역을 수행하도록 구성된다. 엔트로피 디코딩 블록(602)은 CABAC와 같은 다양한 서로다른 타입들의 엔트로피 코딩 방식들을 이용할 수 있다. CABAC를 구현하는 엔트로피 디코딩 블록(602)의 특정 실시예는 하기에 더 상세히 설명된다.
일단 생성되면, 양자화된 변환 계수들은 역양자화기(604)에 의해 역양자화되어 잔여 PU "E'"를 생성한다. PU E'는 역변환 블록(606)으로 전달되고, 이 역변환 블록은 PU E'의 역양자화된 변환 계수들을 역변환하고, 이에 의해, 복원된 잔여 PU e'를 출력하도록 구성된다. 그 후, 복원된 잔여 PU e'는 사전에 디코딩된 예측 PU x'에 가산되어 새로운 복원된 PU "x''"를 형성한다. 루프 필터(608)는 복원된 PU x''에 대해 다양한 동작들을 수행하여 블록 경계들을 평활화하고 복원된 픽셀들과 오리지널 픽셀들 간의 코딩 왜곡을 최소화한다. 그 후, 복원된 PU x''는 복원된 비디오 프레임을 출력하는데 사용된다. 특정 실시예에 있어서, 복원된 PU x''가 레퍼런스 프레임의 일부라면, 복원된 PU x''는 (예를 들어, 공간 예측 블록(612) 또는 시간 예측 블록(614)을 통한) 추후 PU들의 복원을 위해 레퍼런스 버퍼(610)에 저장될 수 있다.
CABAC 인코딩/디코딩
도 5 및 도 6에 대하여 언급된 바와 같이, 엔트로피 코딩 블록(510) 및 엔트로피 디코딩 블록(602)은 각각 CABAC를 구현할 수 있으며, 이 CABAC는 입력 심볼들을 비-정수(non-integer) 길이(예를 들어, 분수) 코드워드로 매핑하는 산술 코딩 방식이다. 산술 코딩의 효율은 입력 심볼들에 대한 정확한 확률들의 결정에 상당한 정도로 의존한다. 따라서, 코딩 효율을 개선시키기 위해, CABAC는, 상이한 컨텍스트 모델들(즉, 확률 모델들)이 선택되고 상이한 신택스 엘리먼트들에 대해 적용되는 컨텍스트 적응적 기술을 이용한다. 추가로, 이들 컨텍스트 모델들은 인코딩/디코딩 동안에 업데이트될 수 있다.
일반적으로 말하면, CABAC를 이용하여 신택스 엘리먼트를 인코딩하는 프로세스는 3개의 기본 단계들: 즉, (1) 이진화(binarization), (2) 컨텍스트 모델링, 및 (3) 이진 산술 코딩을 포함한다. 이진화 단계에 있어서, 신택스 엘리먼트는 이진 시퀀스 또는 빈 스트링(아직 이진 수치화되지 않은 경우)으로 변환된다. 컨텍스트 모델링 단계에 있어서, 컨텍스트 모델이 빈 스트링의 하나 이상의 빈들(즉, 비트들)을 위해 (CABAC 표준 당 가용 모델들의 리스트로부터) 선택된다. 컨텍스트 모델 선택 프로세스는 인코딩되는 특정 신택스 엘리먼트뿐 아니라 최근에 인코딩된 엘리먼트들의 통계들에 기초하여 상이할 수 있다. 산술 코딩 단계에 있어서, 각각의 빈은 선택된 컨텍스트 모델에 기초하여 (산술 코더를 통해) 인코딩된다. CABAC를 이용하여 신택스 엘리먼트를 디코딩하는 프로세스는 이들 단계들의 역에 대응한다.
도 7은, 잔여 PU의 양자화된 변환 계수들(예를 들어, 도 5의 양자화된 PU E)을 인코딩/디코딩하기 위해 수행되는 예시적인 CABAC 인코딩/디코딩 프로세스(700)를 도시한 것이다. 프로세스(700)는 예를 들어, 도 5의 엔트로피 코딩 블록(510) 또는 도 6의 엔트로피 디코딩 블록(602)에 의해 수행될 수 있다. 특정 실시예에 있어서, 프로세스(700)는 잔여 PU와 연관된 각각의 TU에 적용된다.
블록 702에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은, (소정의 스캐닝 패턴에 대한) 현재의 TU에서의 마지막 유효(즉, 비-제로) 변환 계수의 (y, x) 좌표에 대응하는 마지막 유효 계수 포지션을 인코딩 또는 디코딩한다. 예로서, 도 8은 N×N 변환 계수들의 TU(800)를 도시한 것이며, 여기서, 계수(802)는, 예를 들어, 지그재그 스캔에 대한 TU(800)에서의 마지막 유효 계수 포지션에 대응한다. 인코딩 프로세스에 대하여, 블록 702는 (y 좌표에 대응하는) "last_significant_coeff_y" 신택스 엘리먼트를 이진화하는 것 및 (x 좌표에 대응하는) "last_significant_coeff_x" 신택스 엘리먼트를 이진화하는 것을 포함한다. 블록 702는 last_significant_coeff_y 및 last_significant_coeff_x 신택스 엘리먼트들에 대한 컨텍스트 모델을 선택하는 것을 더 포함하고, 여기서, 컨텍스트 모델은 미리정의된 컨텍스트 인덱스(lastCtx) 및 컨텍스트 인덱스 증분(lastIndInc)에 기초하여 선택된다. 일 실시예에 있어서, 컨텍스트 인덱스 증분은 다음과 같이 결정된다.
1. 현재의 TU 사이즈가 4×4 픽셀이면, lastIndInc = lastCtx임
2. 현재의 TU 사이즈가 8×8 픽셀이면, lastIndInc = lastCtx + 3임
3. 현재의 TU 사이즈가 16×16 픽셀이면, lastIndInc = lastCtx + 8임
4. 현재의 TU 사이즈가 32×32 픽셀이면, lastIndInc = lastCtx + 15임
일단 컨텍스트 모델이 선택되면, last_significant_coeff_y 및 last_significant_coeff_x 신택스 엘리먼트들은 선택된 모델을 이용하여 산술적으로 인코딩/디코딩된다.
블록 704에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 현재의 TU와 연관된 이진 유의성 맵을 인코딩 또는 디코딩하며, 여기서, (신택스 엘리먼트 significant_coeff_flag에 의해 표현되는) 유의성 맵의 각각의 엘리먼트는 TU에 있어서 대응하는 위치에서의 변환 계수가 비-제로인지 여부를 나타내는 이진 값이다. 블록 704는 현재의 TU를 스캐닝하는 것, 및 스캐닝 순서로의 각각의 변환 계수에 대해, 변환 계수에 대한 컨텍스트 모델을 선택하는 것을 포함한다. 그 후, 선택된 컨텍스트 모델은 변환 계수와 연관된 significant_coeff_flag 신택스 엘리먼트를 산술적으로 인코딩/디코딩하는데 사용된다. 컨텍스트 모델의 선택은 기저 컨텍스트 인덱스(base context index)(sigCtx) 및 컨텍스트 인덱스 증분(sigIndInc)에 기초한다. 변수들 sigCtx 및 sigIndInc는, 변환 계수의 포지션뿐 아니라 현재의 변환 계수 주위의 하나 이상의 이웃 계수들에 대한 유의성 맵 값을 고려하는 이웃 기반 방식을 이용하여 각각의 변환 계수에 대해 동적으로 결정된다.
일 실시예에 있어서, sigCtx 및 sigIndInc는 하기에 언급되는 바와 같이 소정의 변환 계수(y, x)에 대해 결정된다. 이 실시예에 있어서, TU는 순방향 지그재그 스캔을 이용하여 스캐닝된다고 가정한다. 다른 타입들의 스캔들은, sigCtx 및 sigIndInc를 결정하기 위한 상이한 이웃들의 이용을 야기할 수도 있다.
1. 현재의 TU 사이즈가 4×4 픽셀이면, sigCtx = y*4 + x 및 sigIndInc = sigCtx + 48임
2. 현재의 TU 사이즈가 8×8 픽셀이면, sigCtx = (y>>1)*4 + (x>>1) 및 sigIndInc = sigCtx + 32임
3. 현재의 TU 사이즈가 16×16 또는 32×32 픽셀이면, sigCtx는 다음과 같이 현재의 변환 계수의 포지션(y, x) 및 계수의 코딩된 이웃들의 유의성 맵 값에 기초하여 결정됨
a. y <= 2 및 x <= 2이면, sigCtx = y*2 + x임
b. 그렇지 않고 y = 0(즉, 현재의 변환 계수가 TU의 상부 경계에 있음)이면, sigCtx = 4 + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y][x - 2]임
c. 그렇지 않고 x = 0(즉, 현재의 변환 계수가 TU의 좌측 경계에 있음)이면, sigCtx = 7 + significant_coeff_flag[y - 1][x] + significant_coeff_flag[y - 2][x]임
d. 그렇지 않고 x > 1 및 y > 1이면, sigCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y][x - 2] + significant_coeff_flag[y - 2][x]임
e. 그렇지 않고 x > 1이면, sigCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y][x - 2]임
f. 그렇지 않고 y > 1이면, sigCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y - 2][x]임
g. 그렇지 않으면, sigCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1]임
h. sigCtx가 10 + min(4, sigCtx)이면, 최종 값임
4. 현재의 TU 사이즈가 16×16이면, sigIndInc = sigCtx + 16임
5. 현재의 TU 사이즈가 32×32이면, sigIndInc = sigCtx임
상기 이웃 결정 로직을 시각화하는 것을 돕기 위해, 도 9는 예시적인 TU(900)에 있어서 상이한 변환 계수들에 대한 가능한 이웃 정의들을 도시한 것이다. TU(900)의 중간에 위치된 변환 계수들(예를 들어, (y, x)에 위치된 계수(902))에 있어서, sigCtx는 (y, x - 1), (y, x - 2), (y - 1, x), (y - 2, x), 및 (y - 1, x - 1)에 위치된 5개의 이웃들의 유의성 맵 값들에 기초하여 결정된다. TU(900)의 좌측 경계에 위치된 변환 계수들(예를 들어, (y, 0)에 위치된 계수(904))에 있어서, sigCtx는 (y - 1, 0) 및 (y - 2, 0)에 위치된 2개의 이웃들의 유의성 맵 값들에 기초하여 결정된다. TU(900)의 상부 경계에 위치된 변환 계수들(예를 들어, (0, x)에 위치된 계수(906))에 있어서, sigCtx는 (0, x - 1) 및 (0, x - 2)에 위치된 2개의 이웃들의 유의성 맵 값들에 기초하여 결정된다. 그리고, TU(900)의 상위의 상좌측 경계에 위치된 특정 변환 계수들(예를 들어, 계수들(908, 910, 912, 914))에 있어서, sigCtx는 어떠한 이웃 데이터에도 기초하지 않는다.
도 7의 블록 706에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 현재의 TU의 유효(즉, 비-제로) 변환 계수들을 인코딩 또는 디코딩한다. 이러한 프로세스는, 각각의 유효 변환 계수에 대해, (1) 변환 계수의 절대 레벨(또한 "변환 계수 레벨"로서도 지칭됨), 및 (2) 변환 계수의 부호(포지티브 또는 네거티브)를 인코딩 또는 디코딩하는 것을 포함한다. 변환 계수 레벨을 인코딩/디코딩하는 부분으로서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 3개의 별도의 신택스 엘리먼트들: 즉, coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag, 및 coeff_abs_level_remaining을 인코딩 또는 디코딩한다. coeff_abs_level_greater1_flag은 변환 계수의 절대 레벨이 1보다 큰 지를 나타내는 이진 값이다. coeff_abs_level_greater2_flag은 변환 계수의 절대 레벨이 2보다 큰 지를 나타내는 이진 값이다. 그리고, coeff_abs_level_remaining은, 변환 계수의 절대 레벨 마이너스 미리결정된 값(일 실시예에 있어서, 이 미리결정된 값은 3임)과 동일한 값이다.
일 실시예에 있어서, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들을 인코딩/디코딩하는 프로세스는 서브 블록 방식에 기초하여 각각의 신택스 엘리먼트에 대한 컨텍스트 모델을 선택하는 것을 수반한다(coeff_abs_level_remaining 신택스 엘리먼트는 컨텍스트 모델 선택을 요구하지 않음을 유의한다). 이 방식에 있어서, 현재의 TU는 다수의 4×4 서브 블록들로 분할되며, 소정의 비-제로 변환 계수에 대한 coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag에 대한 컨텍스트 모델 선택은 변환 계수의 서브 블록 내의 통계들뿐 아니라 TU에서의 이전의 서브 블록들의 통계들에 기초하여 실행된다. 이를 용이하게 하기 위해, 블록 706에 있어서, 현재의 TU는 2개의 스캔들 또는 루프들 - (1) 서브 블록 레벨에서의 외부 스캔 및 (2) (특정 서브 블록 내) 변환 계수 레벨에서의 내부 스캔 - 을 이용하여 스캐닝된다. 이는 도 10에서 시각적으로 도시되며, 도 10은 TU(1000)에 대한 2레벨 스캐닝 시퀀스를 도시한 것이다. 이 예에 있어서, 스캐닝 시퀀스는 TU(1000)의 4×4 서브 블록들에 대하여 순방향 지그재그 패턴에 따라 진행한다(즉, 외부 스캔). 각각의 4×4 서브 블록 내에서, 스캐닝 시퀀스는 서브 블록의 변환 계수들에 대하여 역방향 지그재그 패턴에 따라 진행한다(즉, 내부 스캔). 이는 TU(1000)의 각각의 4×4 서브 블록으로 하여금 다음 서브 블록으로 이동하기 전에 그 전체에 있어서 프로세싱되게 한다.
도 11은, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들이 도 10에 도시된 2레벨 스캐닝 시퀀스를 이용하여 어떻게 인코딩/디코딩되는지를 나타낸 프로세스(1100)를 도시한 것이다. 블록 1102에서, 외부 FOR 루프가 현재의 TU의 각각의 4×4 서브 블록에 대해 시작된다. 이러한 외부 FOR 루프는 도 10에 도시된 서브 블록 레벨 순방향 지그재그 패턴과 같은 제1 스캐닝 패턴에 따라 진행한다. 블록 1104에서, 내부 FOR 루프가 현재의 4×4 서브 블록에 있어서 각각의 변환 계수에 대해 시작된다. 이러한 내부 FOR 루프는 도 10에 도시된 계수 레벨 역방향 지그재그 패턴과 같은 제2 스캐닝 패턴에 따라 진행한다. 블록 1104의 내부 FOR 루프 내에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 변환 계수가 비-제로라면(즉, 대응하는 유의성 맵에 있어서 변환 계수에 대한 significant_coeff_flag가 1과 동일하면) 현재의 변환 계수에 대한 coeff_abs_level_greater1_flag 신택스 엘리먼트를 인코딩 또는 디코딩한다(블록 1106).
상기 언급된 바와 같이, 블록 1106에서의 coeff_abs_level_greater1_flag 신택스 엘리먼트를 인코딩/디코딩하는 것은 적절한 컨텍스트 모델을 선택하는 것을 포함하며, 여기서, 선택된 컨텍스트 모델은 서브 블록 레벨 데이터(예를 들어, TU에 있어서 현재의 서브 블록 내에서의 통계들 및 이전 서브 블록들의 통계들)에 기초한다. 일 실시예에 있어서, 블록 1106에서의 coeff_abs_level_greater1_flag에 대한 컨텍스트 모델을 선택하는 것은, 먼저, 다음과 같이 현재의 서브 블록에 대한 컨텍스트 세트(ctxSet)를 결정하는 것을 포함한다.
1. 현재의 TU 사이즈가 4×4 픽셀이면, ctxSet = 0임
2. 현재의 TU 사이즈가 4×4보다 크고 현재의 4×4 서브 블록이 서브 블록 레벨 스캐닝 순서(즉, 블록 1102의 FOR 루프)에서 첫번째라면, ctxSet = 5임
3. 그렇지 않으면, ctxSet는 이전의 4×4 서브 블록(lastGreater2Ctx)에 있어서 1보다 큰 절대값을 갖는 수치 변환 계수들에 의해 결정됨: 즉, ctxSet = ((lastGreater2Ctx) >> 2) + 1임
각각의 컨텍스트 세트 내에서, 5개의 상이한 컨텍스트 모델들(0 내지 4로 넘버링됨)이 존재할 수 있다. 일단 현재의 서브 블록에 대한 컨텍스트 세트가 상기와 같이 결정되면, 컨텍스트 세트 내의 특정 컨텍스트 모델이 다음과 같이 현재의 변환 계수의 coeff_abs_level_greater1_flag 신택스 엘리먼트에 대해 선택된다.
1. 초기 컨텍스트는 1로 설정됨
2. 현재의 4×4 서브 블록에 있어서 1보다 큰 절대 레벨을 갖는 변환 계수가 인코딩/디코딩된 이후, 컨텍스트 모델이 0으로 설정됨
3. 현재의 4×4 서브 블록에 있어서 오직 하나의 변환 계수만이 인코딩/디코딩되었고 그 절대 레벨이 1과 동일한 경우, 컨텍스트 모델은 2로 설정됨
4. 현재의 4×4 서브 블록에 있어서 오직 2개의 변환 계수들만이 인코딩/디코딩되었고 그 절대 레벨들이 1과 동일한 경우, 컨텍스트 모델은 3으로 설정됨
5. 현재의 4×4 서브 블록에 있어서 3개 이상의 변환 계수들이 인코딩/디코딩되었고 그 절대 레벨들이 1과 동일한 경우, 컨텍스트 모델은 4로 설정됨
블록 1108에서, 블록 1104에서 개시된 내부 FOR 루프는 (일단 현재의 서브 블록에 있어서 모든 변환 계수들이 선회되면(traversed)) 종료한다.
블록 1110에서, 다른 내부 FOR 루프가 현재의 4×4 서브 블록에 있어서 각각의 변환 계수에 대해 시작된다. 이러한 루프는 실질적으로 루프 1104와 유사하지만, coeff_abs_level_greater2_flag 신택스 엘리먼트를 인코딩/디코딩하는데 사용된다. 특히, 블록 1110의 내부 FOR 루프 내에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 변환 계수에 대한 coeff_abs_level_greater1_flag가 1과 동일하면 현재의 변환 계수에 대한 coeff_abs_level_greater2_flag를 인코딩 또는 디코딩한다(블록 1112).
coeff_abs_level_greater1_flag 신택스 엘리먼트와 유사하게, 블록 1112에서의 coeff_abs_level_greater1_flag 신택스 엘리먼트를 인코딩/디코딩하는 것은 적절한 컨텍스트 모델을 선택하는 것을 포함하며, 여기서, 선택된 컨텍스트 모델은 서브 블록 레벨 데이터에 기초한다. 일 실시예에 있어서, 블록 1112에서의 coeff_abs_level_greater2_flag에 대한 컨텍스트 모델을 선택하는 것은, 먼저, 블록 1106에 대하여 설명된 ctxSet 선택 룰 세트와 동일한 룰 세트에 따라 현재의 서브 블록에 대한 컨텍스트 세트를 결정하는 것을 포함한다. 일단 현재의 서브 블록에 대한 컨텍스트 세트가 결정되면, 컨텍스트 세트 내의 특정 컨텍스트 모델이 다음과 같이 현재의 변환 계수의 coeff_abs_level_greater2_flag 신택스 엘리먼트에 대해 선택된다.
1. 초기 컨텍스트는 0으로 설정됨
2. 현재의 4×4 서브 블록에 있어서 1보다 큰 절대 레벨을 갖는 오직 하나의 변환 계수만이 인코딩/디코딩된 경우, 컨텍스트 모델은 1로 설정됨
3. 현재의 4×4 서브 블록에 있어서 1보다 큰 절대 레벨을 갖는 오직 2개의 변환 계수들만이 인코딩/디코딩된 경우, 컨텍스트 모델은 3으로 설정됨
4. 현재의 4×4 서브 블록에 있어서 1보다 큰 절대 레벨을 갖는 오직 3개의 변환 계수들만이 인코딩/디코딩된 경우, 컨텍스트 모델은 3으로 설정됨
5. 현재의 4×4 서브 블록에 있어서 1보다 큰 절대 레벨을 갖는 4개 이상의 변환 계수들이 인코딩/디코딩된 경우, 컨텍스트 모델은 4로 설정됨
블록 1114에서, 블록 1110에서 개시된 내부 FOR 루프는 (일단 현재의 서브 블록에 있어서 모든 변환 계수들이 선회되면) 종료한다.
도 11에는 도시되지 않지만, 블록 1114 이후, 프로세스(1100)는, 각각, 계수 부호 및 coeff_abs_level_remaining 신택스 엘리먼트들을 인코딩/디코딩하기 위한 2개의 부가적인 내부 FOR 루프들(즉, 현재의 서브 블록 내의 루프들)을 포함할 수 있다. 이들 신택스 엘리먼트들의 코딩은 어떠한 컨텍스트 모델 선택도 요구하지 않음을 유의한다.
블록 1116에서, 블록 1102에서 개시된 외부 FOR 루프는 (일단 현재의 TU에 있어서 모든 서브 블록들이 선회되면) 종료한다.
도 11 및 그 수반하는 설명으로부터 알 수 있는 바와 같이, CABAC를 이용하여 변환 계수 레벨들을 인코딩 및 디코딩하는 프로세스는, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들에 대한 컨텍스트 모델들을 선택할 경우에 4×4 서브 블록들 간의 의존성들에 대부분 기인하여, 복잡할 수 있다. 이들 서브 블록 의존성들은 2레벨 스캐닝 프로세스 및 상대적으로 복잡한 컨텍스트 모델 선택 룰들을 발생시킨다. 다음 섹션들은, CABAC를 이용하여 변환 계수 레벨들을 인코딩/디코딩할 경우에 스캐닝 및 컨텍스트 모델 선택을 단순화하는 다양한 개선들을 설명한다.
단일 레벨 스캔을 이용한 변환 계수 레벨들의 CABAC 인코딩/디코딩
실시예들의 일 세트에 있어서, 도 7의 블록 706에서의 변환 계수 레벨들의 인코딩/디코딩은, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들에 대한 컨텍스트 모델 선택이 더 이상 서브 블록 레벨 데이터에 의존하지 않도록 변형될 수 있다. 대신, 이들 실시예들에 있어서, 컨텍스트 모델들은 현재의 TU 내의 개별 변환 계수들에 기초하여 선택될 수 있다. 따라서, 도 11의 프로세스(1100)와 대조적으로, 2레벨 스캐닝 시퀀스(즉, 외부 서브 블록 레벨 스캔 및 서브 블록 당 내부 계수 레벨 스캔)를 수행하여 변환 계수 레벨들을 인코딩/디코딩하는 것은 불필요하다. 오히려, 인코딩/디코딩은 전체 TU의 단일 레벨 스캔을 이용하여(즉, 단일 레벨 스캔 순서에 따라) 실행될 수 있다. 이는, 컨텍스트 모델 선택에 필요한 코드를 단순화하면서 인코딩/디코딩 성능을 개선시킬 수 있다.
도 12는 일 실시예에 따른 단일 레벨 스캔을 이용하여 CABAC에 있어서 변환 계수 레벨 인코딩/디코딩을 실행하기 위한 프로세스(1200)를 도시한 것이다. 특히, 도 12는 coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들의 인코딩/디코딩에 집중한다(coeff_abs_level_remaining 신택스 엘리먼트의 인코딩/디코딩은 그것이 컨텍스트 모델 선택을 요구하지 않기 때문에 설명되지 않음). 프로세스(1200)는 도 7의 블록 706 내에서 엔트로피 코딩 블록(510) 또는 엔트로피 디코딩 블록(602)에 의해 실행될 수 있다. 일 실시예에 있어서, 프로세스(1200)는 도 11의 프로세스(1100) 대신 실행될 수 있다.
블록 1202에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 현재의 TU에 있어서 각각의 변환 계수에 대한 FOR 루프를 시작할 수 있다. 이러한 FOR 루프는 단일 레벨 스캔 순서(즉, 어떠한 서브 블록 분할도 요구하지 않는 스캔)에 따른 TU의 선회를 나타낼 수 있다. 일 실시예에 있어서, 단일 레벨 스캔 순서는 도 13에 도시된 바와 같은 역방향 지그재그 스캔에 대응할 수 있다. 다른 실시예에 있어서, 단일 레벨 스캔 순서는 도 14에 도시된 바와 같은 역방향 웨이브프론트 스캔에 대응할 수 있다. 웨이브프론트 또는 역방향 웨이브프론트 스캔에 있어서, 스캔 라인들 모두는 동일한 대각선 스캔 방향을 갖는다. 또다른 실시예들에 있어서, 단일 레벨 스캔 순서는 당업계에 공지된 임의의 다른 타입의 스캐닝 패턴에 대응할 수 있다.
블록 1204에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 계수가 비-제로라면 현재의 변환 계수에 대한 coeff_abs_level_greater1_flag 신택스 엘리먼트를 인코딩/디코딩할 수 있으며, 여기서, 그 인코딩/디코딩은 현재의 단일 레벨 스캔 순서로(즉, 블록 1202의 FOR 루프에 있어서) 사전에 인코딩/디코딩된 변환 계수들에 기초하여 coeff_abs_level_greater1_flag에 대한 컨텍스트 모델을 선택하는 것을 포함한다. 일 실시예에 있어서, 이러한 컨텍스트 모델을 선택하는 것은 다음을 포함할 수 있다.
1. 모든 TU 사이즈들에 대해:
a. 초기 컨텍스트 모델을 1로 설정함
b. 1보다 큰 절대 레벨을 갖는 변환 계수가 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었으면, 컨텍스트 모델을 0으로 설정함
c. 오직 (n-1)개의 변환 계수(들)만이 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었고 그 절대 레벨들이 1과 동일하면, 컨텍스트 모델을, 2로부터 T-1로 레인징하는 n으로 설정함
d. (T-1)개의 변환 계수(들)가 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었고 그 절대 레벨들이 1과 동일하면, 컨텍스트 모델을 T로 설정함
전술한 로직에 있어서, 컨텍스트 모델 선택은, 동일한 룰들이 모든 TU 사이즈들에 적용되기 때문에 현재의 TU의 사이즈와는 독립적임을 유의한다. 추가로, (1)(c) 및 (1)(d)에 대하여, 선택된 컨텍스트 모델은, 임계 수치 T 마이너스 1까지의, 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었던 1과 동일한 절대 레벨들을 갖는 변환 계수들의 수에 기초하여 변할 수 있다. T 마이너스 1에 도달될 경우, 컨텍스트 모델은 임계 수치 T로 설정될 수 있다. 특정 실시예에 있어서, T의 값은 10으로 설정될 수 있다.
대안적인 실시예에 있어서, coeff_abs_level_greater1_flag에 대한 전술한 컨텍스트 모델 선택 로직은 현재의 TU의 사이즈(예를 들어, 4×4 픽셀로부터 32×32 픽셀까지 레인징함)를 고려하여 변형될 수 있다. 이 실시예에 있어서, 컨텍스트 모델을 선택하는 것은 다음을 포함할 수 있다.
1. 모든 TU 사이즈들에 대해:
a. 초기 컨텍스트 모델을 1로 설정함
b. 1보다 큰 절대 레벨을 갖는 변환 계수가 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었으면, 컨텍스트 모델을 0으로 설정함
2. 4×4 TU들에 있어서, 오직 (n4 ×4 - 1)개의 변환 계수(들)만이 현재의 4×4 TU에서 인코딩/디코딩되었고 그 절대 레벨(들)이 1과 동일하면, 컨텍스트 모델을, 2로부터 T4 ×4 - 1로 레인징하는 n4 ×4으로 설정하고; (T4 ×4 - 1)개 이상의 변환 계수(들)가 현재의 4×4 TU에서 인코딩/디코딩되었고 그 레벨들이 1과 동일하면, 컨텍스트 모델을 T4 ×4로 설정함
3. 8×8 TU들에 있어서, 오직 (n8 ×8 - 1)개의 변환 계수(들)만이 현재의 8×8 TU에서 인코딩/디코딩되었고 그 절대 레벨(들)이 1과 동일하면, 컨텍스트 모델을, 2로부터 T8 ×8 - 1로 레인징하는 n8 × 8으로 설정하고; (T8 ×8 - 1)개 이상의 변환 계수(들)가 현재의 8×8 TU에서 인코딩/디코딩되었고 그 레벨들이 1과 동일하면, 컨텍스트 모델을 T8 ×8로 설정함
4. 16×16 TU들에 있어서, 오직 (n16 ×16 - 1)개의 변환 계수(들)만이 현재의 16×16 TU에서 인코딩/디코딩되었고 그 절대 레벨(들)이 1과 동일하면, 컨텍스트 모델을, 2로부터 T16 ×16 - 1로 레인징하는 n16 ×16으로 설정하고; (T16 ×16 - 1)개 이상의 변환 계수(들)가 현재의 16×16 TU에서 인코딩/디코딩되었고 그 레벨들이 1과 동일하면, 컨텍스트 모델을 T16 ×16로 설정함
5. 32×32 TU들에 있어서, 오직 (n32 ×32 - 1)개의 변환 계수(들)만이 현재의 32×32 TU에서 인코딩/디코딩되었고 그 절대 레벨(들)이 1과 동일하면, 컨텍스트 모델을, 2로부터 T32 ×32 - 1로 레인징하는 n32 ×32으로 설정하고; (T32 ×32 - 1)개 이상의 변환 계수(들)가 현재의 32×32 TU에서 인코딩/디코딩되었고 그 레벨들이 1과 동일하면, 컨텍스트 모델을 T32 ×32로 설정함
특정 실시예에 있어서, 상기 임계 수치들 T4 ×4, T8 ×8, T16 ×16, 및 T32 ×32의 값은 각각 4, 6, 8, 및 10으로 설정될 수 있다.
블록 1206에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 현재의 변환 계수에 대한 coeff_abs_level_greater2_flag 신택스 엘리먼트를 인코딩/디코딩할 수 있으며, 여기서, 그 인코딩/디코딩은 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩된 변환 계수들에 기초하여 coeff_abs_level_greater2_flag에 대한 컨텍스트 모델을 선택하는 것을 포함한다. 일 실시예에 있어서, 이러한 컨텍스트 모델을 선택하는 것은 다음을 포함할 수 있다.
1. 모든 TU 사이즈들에 대해:
a. 초기 컨텍스트 모델을 0으로 설정함
b. 1보다 큰 절대 레벨(들)을 갖는 오직 m개의 변환 계수(들)만이 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었으면, 컨텍스트 모델을, 1로부터 K-1까지 레인징하는 m으로 설정함
c. 1보다 큰 절대 레벨(들)을 갖는 K개 이상의 변환 계수(들)가 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었으면, 컨텍스트 모델을 K로 설정함
전술한 로직에 있어서, 컨텍스트 모델 선택은, 동일한 룰들이 모든 TU 사이즈들에 적용되기 때문에 현재의 TU의 사이즈와는 독립적임을 유의한다. 추가로, (1)(b) 및 (1)(c)에 대하여, 선택된 컨텍스트 모델은, 임계 수치 K 마이너스 1까지의, 현재의 단일 레벨 스캔 순서로 사전에 인코딩/디코딩되었던 1보다 큰 절대 레벨들을 갖는 변환 계수들의 수에 기초하여 변할 수 있다. K에 도달될 경우, 컨텍스트 모델은 임계 수치 K로 설정될 수 있다. 특정 실시예에 있어서, K의 값은 10으로 설정될 수 있다.
대안적인 실시예에 있어서, coeff_abs_level_greater2_flag에 대한 전술한 컨텍스트 모델 선택 로직은 현재의 TU의 사이즈(예를 들어, 4×4 픽셀로부터 32×32 픽셀까지 레인징함)를 고려하여 변형될 수 있다. 이 실시예에 있어서, 컨텍스트 모델을 선택하는 것은 다음을 포함할 수 있다.
1. 모든 TU 사이즈들에 대하여, 초기 컨텍스트 모델을 0으로 설정함
2. 4×4 TU들에 있어서, 1보다 큰 절대 레벨(들)을 갖는 오직 (m4×4 - 1)개의 변환 계수(들)만이 현재의 4×4 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을, 1로부터 K4 ×4 - 1로 레인징하는 m4×4으로 설정하고; 1보다 큰 절대 레벨(들)을 갖는 K4 ×4개 이상의 변환 계수(들)가 현재의 4×4 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을 K4 ×4로 설정함
3. 8×8 TU들에 있어서, 1보다 큰 절대 레벨(들)을 갖는 오직 (m8×8 - 1)개의 변환 계수(들)만이 현재의 8×8 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을, 1로부터 K8 ×8 - 1로 레인징하는 m 8으로 설정하고; 1보다 큰 절대 레벨(들)을 갖는 K8 ×8개 이상의 변환 계수(들)가 현재의 8×8 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을 K8 ×8로 설정함
4. 16×16 TU들에 있어서, 1보다 큰 절대 레벨(들)을 갖는 오직 (m16×16 - 1)개의 변환 계수(들)만이 현재의 16×16 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을, 1로부터 K16 ×16 - 1로 레인징하는 m16×16으로 설정하고; 1보다 큰 절대 레벨(들)을 갖는 K16 ×16개 이상의 변환 계수(들)가 현재의 16×16 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을 K16 ×16로 설정함
5. 32×32 TU들에 있어서, 1보다 큰 절대 레벨(들)을 갖는 오직 (m32×32 - 1)개의 변환 계수(들)만이 현재의 32×32 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을, 1로부터 K32 ×32 - 1로 레인징하는 m32×32으로 설정하고; 1보다 큰 절대 레벨(들)을 갖는 K32 ×32개 이상의 변환 계수(들)가 현재의 4×4 TU에서 인코딩/디코딩되었으면, 컨텍스트 모델을 K32 ×32로 설정함
특정 실시예에 있어서, 상기 임계 수치들 K4 ×4, K8 ×8, K16 ×16, 및 K32 ×32의 값은 각각 4, 6, 8, 및 10으로 설정될 수 있다.
블록 1208에서, 블록 1202에서 개시된 FOR 루프는 (일단 현재의 TU에 있어서 모든 변환 계수들이 단일 레벨 스캔 순서에 따라 프로세싱되면) 종료할 수 있다.
도 12가 coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들의 인코딩/디코딩을 단일 루프(즉, FOR 루프(1202))에서 발생하는 것으로서 도시하지만, 특정 실시예들에 있어서, 이들 신택스 엘리먼트들은 별도의 루프들에서 인코딩/디코딩될 수 있다. 이들 실시예들에 있어서, coeff_abs_level_greater1_flag 또는 coeff_abs_level_greater2_flag에 대한 각각의 FOR 루프는 현재의 TU의 단일 레벨 스캔에 대응할 수 있다.
통합된 스캔 타입 및 컨텍스트 모델 선택을 이용한 변환 계수 레벨들 및 유의성 CABAC 인코딩/디코딩
상기 언급된 바와 같이, CABAC를 이용하여 TU를 인코딩/디코딩하는 일 양태는, TU에 있어서의 각각의 변환 계수가 비-제로인지 여부를 나타내는 이진 유의성 맵을 인코딩/디코딩하는 것이다. 현재의 HEVC 표준에 있어서, 컨텍스트 모델들이 유의성 맵의 각각의 엘리먼트(즉, significant_coeff_flag)를 인코딩/디코딩하기 위해 선택되는 방법은, 컨텍스트 모델들이 변환 계수 레벨들을 인코딩/디코딩하기 위해 선택되는 방법과는 현저하게 상이하다. 예를 들어, 도 7의 블록 704에 대하여 설명된 바와 같이, TU에 대한 유의성 맵을 인코딩/디코딩하는 것은 예를 들어 순방향 지그재그 스캔을 이용하여 TU를 선회하는 것, 및 변환 계수 주위의 특정 이웃들의 유의성 맵 값들에 기초하여 각각의 변환 계수의 significant_coeff_flag 신택스 엘리먼트에 대한 컨텍스트 모델을 선택하는 것을 수반한다. 이에 반하여, 도 7의 블록 706에 대하여 설명된 바와 같이, TU에 대한 변환 계수 레벨들을 인코딩/디코딩하는 것은 2레벨 네스팅된 스캐닝 시퀀스(예를 들어, 4×4 서브 블록 당 외부 순방향 지그재그 스캔 및 소정의 서브 블록 내의 내부 역방향 지그재그 스캔)를 이용하여 TU를 선회하는 것, 및 서브 블록 레벨 계수 데이터에 기초하여 각각의 변환 계수의 abs_coeff_level_greater1_flag 및 abs_coeff_level_greater2_flag 신택스 엘리먼트들에 대한 별도의 컨텍스트 모델들을 선택하는 것을 수반한다.
특정 실시예들에 있어서, 블록들 704 및 706에서 수행된 프로세싱은, TU에 대한 유의성 맵 및 변환 계수 레벨들이 동일한 스캔 타입 및 동일한 컨텍스트 모델 선택 방식을 이용하여 인코딩/디코딩되도록 변형될 수 있다. 이러한 접근법은 프로세스(1500)로서 도 15에 도시된다.
블록 1502에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 특정 스캔 타입 및 특정 컨텍스트 모델 선택 방식을 이용하여 현재의 TU에 대한 유의성 맵을 인코딩 또는 디코딩할 수 있다. 실시예들의 일 세트에 있어서, 블록 1502에서 사용된 스캔 타입은 단일 레벨 순방향 지그재그 스캔, 역방향 지그재그 스캔, 순방향 웨이브프론트 스캔, 역방향 웨이브프론트 스캔, 또는 당업계에 공지된 임의의 다른 스캔 타입일 수 있다. 블록 1502에서 사용된 컨텍스트 모델 선택 방식은 도 7의 블록 704에 대하여 상기 설명된 방식과 같은 이웃 기반 방식일 수 있다. 이웃 기반 방식은, 현재의 TU의 각각의 변환 계수에 대하여, 변환 계수 주위의 하나 이상의 이웃 변환 계수들에 기초하여 변환 계수의 significant_coeff_flag 신택스 엘리먼트에 대한 컨텍스트 모델을 선택할 수 있다. 일 실시예에 있어서, 이러한 방식에 있어서 이웃 선택을 제어하기 위한 로직은 사용된 스캔 타입(예를 들어, 순방향 지그재그, 역방향 지그재그 등)에 기초하여 변할 수 있다.
블록 1504에서, 엔트로피 코딩 블록(510)/엔트로피 디코딩 블록(602)은 블록 1502에서 사용된 동일한 스캔 타입 및 컨텍스트 모델 선택 방식을 이용하여 현재의 TU에 있어서의 각각의 변환 계수의 절대 레벨(예를 들어, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들)을 인코딩 또는 디코딩할 수 있다. 예를 들어, 역방향 지그재그 스캔이 블록 1502에서의 유의성 맵 인코딩/디코딩에 사용되었으면, 동일한 역방향 지그재그 스캔이 블록 1504에서의 변환 계수 레벨 인코딩/디코딩에 사용될 수 있다. 추가로, 특정 이웃 기반 컨텍스트 모델 선택 방식이 블록 1502에서의 유의성 맵 인코딩/디코딩에 사용되었으면, 동일한(또는 유사한) 이웃 기반 방식이 블록 1504에서의 변환 계수 레벨 인코딩/디코딩에 사용될 수 있다. 이러한 통합된 접근법은, 소프트웨어 및/또는 하드웨어 로직의 대부분이 유의성 맵 및 변환 계수 레벨 코딩 페이즈들에 대해 재사용될 수 있기 때문에, CABAC 인코딩 및 디코딩을 구현하는데 필요한 소프트웨어 및/또는 하드웨어의 복잡도를 현저하게 감소시킬 수 있다.
다음은, 통합된 순방향 스캔 타입(예를 들어, 순방향 지그재그, 순방향 웨이브프론트 등) 및 통합된 이웃 기반 방식이 사용될 경우 TU에 있어서의 변환 계수(y, x)의 significant_coeff_flag, coeff_abs_level_greater1_flag, 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들에 대한 컨텍스트 모델들을 선택하는데 적용될 수 있는 예시적인 로직이다. 다양한 실시예들에 있어서, 동일한 로직이 3개의 신택스 엘리먼트들 각각에 대해 적용될 수 있다. 변수 baseCtx는 신택스 엘리먼트에 대한 기저 컨텍스트 인덱스를 지칭하고, 변수 ctxIndInc는 신택스 엘리먼트에 대한 컨텍스트 인덱스 증분을 지칭한다.
1. 현재의 TU 사이즈가 4×4 픽셀이면, baseCtx = y*4 + x 및 ctxIndInc = baseCtx + 48임
2. 현재의 TU 사이즈가 8×8 픽셀이면, baseCtx = (y>>1)*4 + (x>>1) 및 ctxIndInc = baseCtx + 32임
3. 현재의 TU 사이즈가 16×16 또는 32×32 픽셀이면, baseCtx는 다음과 같이 현재의 변환 계수의 포지션(y, x) 및 계수의 코딩된 이웃들의 유의성 맵 값에 기초하여 결정됨
a. y <= 2 및 x <= 2이면, baseCtx = y*2 + x임
b. 그렇지 않고 y = 0(즉, 현재의 변환 계수가 TU의 상부 경계에 있음)이면, baseCtx = 4 + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y][x - 2]임
c. 그렇지 않고 x = 0(즉, 현재의 변환 계수가 TU의 좌측 경계에 있음)이면, baseCtx = 7 + significant_coeff_flag[y - 1][x] + significant_coeff_flag[y - 2][x]임
d. 그렇지 않고 x > 1 및 y > 1이면, baseCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y][x - 2] + significant_coeff_flag[y - 2][x]임
e. 그렇지 않고 x > 1이면, baseCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y][x - 2]임
f. 그렇지 않고 y > 1이면, baseCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1] + significant_coeff_flag[y - 2][x]임
g. 그렇지 않으면, baseCtx = significant_coeff_flag[y - 1][x] + significant_coeff_flag[y][x - 1] + significant_coeff_flag[y - 1][x - 1]임
h. baseCtx가 10 + min(4, baseCtx)이면, 최종 값임
4. 현재의 TU 사이즈가 16×16이면, baseIndInc = baseCtx + 16임
5. 현재의 TU 사이즈가 32×32이면, baseIndInc = baseCtx임
상기 로직에 있어서 baseCtx를 결정하는데 사용되는 특정 이웃들이 도 9의 TU(900)에 시각적으로 도시된다. TU(900)의 중간에 위치된 변환 계수들(예를 들어, (y, x)에 위치된 계수(902))에 있어서, baseCtx는 (y, x - 1), (y, x - 2), (y - 1, x), (y - 2, x), 및 (y - 1, x - 1)에 위치된 5개의 이웃들에 기초하여 결정된다. TU(900)의 좌측 경계에 위치된 변환 계수들(예를 들어, (y, 0)에 위치된 계수(904))에 있어서, baseCtx는 (y - 1, 0) 및 (y - 2, 0)에 위치된 2개의 이웃들에 기초하여 결정된다. TU(900)의 상부 경계에 위치된 변환 계수들(예를 들어, (0, x)에 위치된 계수(906))에 있어서, baseCtx는 (0, x - 1) 및 (0, x - 2)에 위치된 2개의 이웃들에 기초하여 결정된다. 그리고, TU(900)의 상위의 상좌측 경계에 위치된 특정 변환 계수들(예를 들어, 계수들(908, 910, 912, 914))에 있어서, baseCtx는 어떠한 이웃 데이터에도 기초하지 않는다.
다음은, 통합된 역방향 스캔 타입(예를 들어, 역방향 지그재그, 역방향 웨이브프론트 등) 및 통합된 이웃 기반 방식이 사용될 경우 TU에 있어서의 변환 계수(y, x)의 significant_coeff_flag, coeff_abs_level_greater1_flag, 및 coeff_abs_level_greater2_flag 신택스 엘리먼트들에 대한 컨텍스트 모델들을 선택하는데 적용될 수 있는 예시적인 로직이다. 다양한 실시예들에 있어서, 동일한 로직이 3개의 신택스 엘리먼트들 각각에 대해 적용될 수 있다. 변수 baseCtx는 신택스 엘리먼트에 대한 기저 컨텍스트 인덱스를 지칭하고, 변수 ctxIndInc는 신택스 엘리먼트에 대한 컨텍스트 인덱스 증분을 지칭한다.
1. 현재의 TU 사이즈가 4×4 픽셀이면, baseCtx = y*4 + x 및 ctxIndInc = baseCtx + 48임
2. 현재의 TU 사이즈가 8×8 픽셀이면, baseCtx = (y>>1)*4 + (x>>1) 및 ctxIndInc = baseCtx + 32임
3. 현재의 TU 사이즈가 16×16 또는 32×32 픽셀이면, baseCtx는 다음과 같이 현재의 변환 계수의 포지션(y, x) 및 계수의 코딩된 이웃들의 유의성 맵 값에 기초하여 결정됨
a. y <= 2 및 x <= 2이면, baseCtx = y*2 + x임
b. 그렇지 않고 y = 0(즉, 현재의 변환 계수가 TU의 상부 경계에 있음)이면, baseCtx = 4 + significant_coeff_flag[y][x + 1] + significant_coeff_flag[y][x + 2]임
c. 그렇지 않고 x = 0(즉, 현재의 변환 계수가 TU의 좌측 경계에 있음)이면, baseCtx = 7 + significant_coeff_flag[y + 1][x] + significant_coeff_flag[y + 2][x]임
d. 그렇지 않고 x > 1 및 y > 1이면, baseCtx = significant_coeff_flag[y + 1][x] + significant_coeff_flag[y][x + 1] + significant_coeff_flag[y + 1][x + 1] + significant_coeff_flag[y][x + 2] + significant_coeff_flag[y + 2][x]임
e. 그렇지 않고 x > 1이면, baseCtx = significant_coeff_flag[y + 1][x] + significant_coeff_flag[y][x + 1] + significant_coeff_flag[y + 1][x + 1] + significant_coeff_flag[y][x + 2]임
f. 그렇지 않고 y > 1이면, baseCtx = significant_coeff_flag[y + 1][x] + significant_coeff_flag[y][x + 1] + significant_coeff_flag[y + 1][x + 1] + significant_coeff_flag[y + 2][x]임
g. 그렇지 않으면, baseCtx = significant_coeff_flag[y + 1][x] + significant_coeff_flag[y][x + 1] + significant_coeff_flag[y + 1][x + 1]임
h. baseCtx가 10 + min(4, baseCtx)이면, 최종 값임
4. 현재의 TU 사이즈가 16×16이면, baseIndInc = baseCtx + 16임
5. 현재의 TU 사이즈가 32×32이면, baseIndInc = baseCtx임
상기 로직에 있어서 baseCtx를 결정하는데 사용되는 특정 이웃들이 도 16의 TU(1600)에 시각적으로 도시된다. TU(1600)의 중간에 위치된 변환 계수들(예를 들어, (y, x)에 위치된 계수(1602))에 있어서, baseCtx는 (y, x + 1), (y, x + 2), (y + 1, x), (y + 2, x), 및 (y + 1, x + 1))에 위치된 5개의 이웃들에 기초하여 결정된다. TU(1600)의 좌측 경계에 위치된 변환 계수들(예를 들어, (y, 0)에 위치된 계수(1604))에 있어서, baseCtx는 (y + 1, 0) 및 (y + 2, 0)에 위치된 2개의 이웃들에 기초하여 결정된다. TU(1600)의 상부 경계에 위치된 변환 계수들(예를 들어, (0, x)에 위치된 계수(1606))에 있어서, baseCtx는 (0, x + 1) 및 (0, x + 2)에 위치된 2개의 이웃들에 기초하여 결정된다. 그리고, TU(1600)의 상위의 상좌측 경계에 위치된 특정 변환 계수들(예를 들어, 계수들(1608, 1610, 1612, 1614))에 있어서, baseCtx는 어떠한 이웃 데이터에도 기초하지 않는다.
특정 실시예들은 명령 실행 시스템, 장치, 디바이스, 또는 머신에 의해 또는 그와 관련하여 사용하기 위한 비-일시적인 컴퓨터-판독가능 저장 매체에서 구현될 수도 있다. 예를 들어, 비-일시적인 컴퓨터-판독가능 저장 매체는 특정 실시예들에 의해 설명된 방법을 수행하기 위해 컴퓨터 시스템/디바이스를 제어하는 프로그램 코드 또는 명령들을 포함할 수 있다. 프로그램 코드는, 컴퓨터 시스템/디바이스의 하나 이상의 프로세서들에 의해 실행될 경우, 특정 실시예들에서 설명된 프로그램 코드를 수행하도록 동작가능할 수 있다.
본 명세서에서의 설명에서 및 뒤따르는 청구항들에 걸쳐 사용된 바와 같이, "a, "an" 및 "the"는, 컨텍스트가 명확하게 달리 지시하지 않는다면 복수의 레퍼런스들을 포함한다. 또한, 본 명세서에서의 설명에서 및 뒤따르는 청구항들에 걸쳐 사용된 바와 같이, "내에(in)"의 의미는, 컨텍스트가 명확하게 달리 지시하지 않는다면 "내에" 및 "상에"를 포함한다.
상기 설명은, 특정 실시예들의 양태들이 어떻게 구현될 수 있는지의 예들과 함께 다양한 실시예들을 예시한다. 상기 예들 및 실시예들은 유일한 실시예들인 것으로 간주되지 않아야 하며, 다음의 청구항들에 의해 정의된 바와 같은 특정 실시예들의 유연성 및 이점들을 예시하도록 제시된다. 상기 개시 및 다음의 청구항들에 기초하여, 다른 배열들, 실시예들, 구현들 및 균등물들은 청구항들에 의해 정의된 바와 같은 그 범위로부터 일탈함없이 채용될 수도 있다.

Claims (20)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    컴퓨팅 디바이스에 의해, 변환 계수들의 2차원 어레이를 포함하는 변환 유닛을 수신하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 2차원 어레이의 변환 계수들을 단일 레벨 스캔 순서에 따라 프로세싱하는 단계
    를 포함하고,
    상기 프로세싱하는 단계는, 상기 단일 레벨 스캔 순서에 따른 각각의 비-제로 변환 계수에 대하여, 상기 비-제로 변환 계수의 절대 레벨을 인코딩하기 위한 하나 이상의 컨텍스트 모델들을 선택하는 단계를 포함하고,
    상기 선택하는 단계는 상기 단일 레벨 스캔 순서에 따라 사전에 인코딩된 하나 이상의 변환 계수들에 기초하고,
    상기 하나 이상의 컨텍스트 모델들을 선택하는 단계는 상기 비-제로 변환 계수와 연관된 제1 신택스 엘리먼트에 대한 제1 컨텍스트 모델을 선택하는 단계를 포함하고, 상기 제1 신택스 엘리먼트는 상기 비-제로 변환 계수에 대한 절대 레벨이 1보다 큰지 여부를 나타내며,
    상기 제1 컨텍스트 모델을 선택하는 단계는, 1과 동일한 절대 레벨을 갖는 상기 단일 레벨 스캔 순서에 따라 사전에 인코딩된 변환 계수들의 제1 임계 수치에 기초하는, 비디오 데이터를 인코딩하는 방법.
  2. 제1항에 있어서,
    상기 제1 임계 수치는 10과 동일한, 비디오 데이터를 인코딩하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 하나 이상의 컨텍스트 모델들을 선택하는 단계는 상기 비-제로 변환 계수와 연관된 제2 신택스 엘리먼트에 대한 제2 컨텍스트 모델을 선택하는 단계를 더 포함하고,
    상기 제2 신택스 엘리먼트는 상기 비-제로 변환 계수에 대한 절대 레벨이 2보다 큰지 여부를 나타내는, 비디오 데이터를 인코딩하는 방법.
  4. 제3항에 있어서,
    상기 제2 컨텍스트 모델을 선택하는 단계는, 1보다 큰 절대 레벨을 갖는 상기 단일 레벨 스캔 순서에 따라 사전에 인코딩된 변환 계수들의 제2 임계 수치에 기초하는, 비디오 데이터를 인코딩하는 방법.
  5. 제4항에 있어서,
    상기 제2 임계 수치는 10과 동일한, 비디오 데이터를 인코딩하는 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 컨텍스트 모델들을 선택하는 단계는, 추가로, 상기 변환 유닛의 사이즈에 기초하는, 비디오 데이터를 인코딩하는 방법.
  7. 제1항에 있어서,
    상기 단일 레벨 스캔 순서는 역방향 지그재그 스캔 또는 역방향 웨이브프론트 스캔에 대응하는, 비디오 데이터를 인코딩하는 방법.
  8. 비디오 데이터를 디코딩하는 방법으로서,
    컴퓨팅 디바이스에 의해, 압축된 데이터의 비트스트림을 수신하는 단계 - 상기 압축된 데이터는 단일 레벨 스캔 순서에 따라 사전에 인코딩되었던 변환 계수들의 2차원 어레이에 대응함 -; 및
    상기 컴퓨팅 디바이스에 의해, 상기 압축된 데이터의 비트스트림을 디코딩하는 단계
    를 포함하고,
    상기 디코딩하는 단계는, 상기 단일 레벨 스캔 순서에 따른 각각의 비-제로 변환 계수에 대하여, 상기 비-제로 변환 계수의 절대 레벨을 디코딩하기 위한 하나 이상의 컨텍스트 모델들을 선택하는 단계를 포함하고,
    상기 선택하는 단계는 상기 단일 레벨 스캔 순서에 따라 사전에 디코딩된 하나 이상의 변환 계수들에 기초하고,
    상기 하나 이상의 컨텍스트 모델들을 선택하는 단계는 상기 비-제로 변환 계수와 연관된 제1 신택스 엘리먼트에 대한 제1 컨텍스트 모델을 선택하는 단계를 포함하고, 상기 제1 신택스 엘리먼트는 상기 비-제로 변환 계수에 대한 절대 레벨이 1보다 큰지 여부를 나타내며,
    상기 제1 컨텍스트 모델을 선택하는 단계는, 1과 동일한 절대 레벨을 갖는 상기 단일 레벨 스캔 순서에 따라 사전에 디코딩된 변환 계수들의 제1 임계 수치에 기초하는, 비디오 데이터를 디코딩하는 방법.
  9. 제8항에 있어서,
    상기 하나 이상의 컨텍스트 모델들을 선택하는 단계는 상기 비-제로 변환 계수와 연관된 제2 신택스 엘리먼트에 대한 제2 컨텍스트 모델을 선택하는 단계를 더 포함하고,
    상기 제2 신택스 엘리먼트는 상기 비-제로 변환 계수에 대한 절대 레벨이 2보다 큰지 여부를 나타내는, 비디오 데이터를 디코딩하는 방법.
  10. 제9항에 있어서,
    상기 제2 컨텍스트 모델을 선택하는 단계는, 1보다 큰 절대 레벨을 갖는 상기 단일 레벨 스캔 순서에 따라 사전에 디코딩된 변환 계수들의 제2 임계 수치에 기초하는, 비디오 데이터를 디코딩하는 방법.
  11. 비디오 데이터를 인코딩하는 방법으로서,
    컴퓨팅 디바이스에 의해, 복수의 변환 계수들을 포함하는 변환 유닛을 수신하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 단일 스캔 타입 및 단일 컨텍스트 모델 선택 방식을 사용하여 상기 변환 유닛의 유의성 맵(significance map) 및 상기 복수의 변환 계수들의 절대 레벨들을 인코딩하는 단계
    를 포함하는, 비디오 데이터를 인코딩하는 방법.
  12. 제11항에 있어서,
    상기 단일 스캔 타입은 순방향 지그재그 스캔, 역방향 지그재그 스캔, 순방향 웨이브프론트 스캔, 또는 역방향 웨이브프론트 스캔인, 비디오 데이터를 인코딩하는 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 단일 컨텍스트 모델 선택 방식은, 상기 복수의 변환 계수들에 있어서의 각각의 변환 계수에 대하여, 상기 단일 스캔 타입에 따라 사전에 인코딩된 하나 이상의 이웃 변환 계수들에 기초하여 상기 변환 계수에 대한 컨텍스트 모델을 선택하는 이웃 기반 방식인, 비디오 데이터를 인코딩하는 방법.
  14. 비디오 데이터를 디코딩하는 방법으로서,
    컴퓨팅 디바이스에 의해, 압축된 데이터의 비트스트림을 수신하는 단계 - 상기 압축된 데이터는 사전에 인코딩되었던 복수의 변환 계수들을 포함하는 변환 유닛에 대응함 -; 및
    상기 컴퓨팅 디바이스에 의해, 단일 스캔 타입 및 단일 컨텍스트 모델 선택 방식을 사용하여 상기 변환 유닛의 유의성 맵 및 상기 복수의 변환 계수들의 절대 레벨들을 디코딩하는 단계
    를 포함하는, 비디오 데이터를 디코딩하는 방법.
  15. 제14항에 있어서,
    상기 단일 스캔 타입은 순방향 지그재그 스캔, 역방향 지그재그 스캔, 순방향 웨이브프론트 스캔, 또는 역방향 웨이브프론트 스캔인, 비디오 데이터를 디코딩하는 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 단일 컨텍스트 모델 선택 방식은, 상기 복수의 변환 계수들에 있어서의 각각의 변환 계수에 대하여, 상기 단일 스캔 타입에 따라 사전에 디코딩된 하나 이상의 이웃 변환 계수들에 기초하여 상기 변환 계수에 대한 컨텍스트 모델을 선택하는 이웃 기반 방식인, 비디오 데이터를 디코딩하는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020147001166A 2011-07-15 2012-07-16 변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들 KR101625548B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161508595P 2011-07-15 2011-07-15
US61/508,595 2011-07-15
US201161557299P 2011-11-08 2011-11-08
US61/557,299 2011-11-08
PCT/US2012/046960 WO2013012819A2 (en) 2011-07-15 2012-07-16 Context modeling techniques for transform coefficient level coding
US13/550,493 US20130016789A1 (en) 2011-07-15 2012-07-16 Context modeling techniques for transform coefficient level coding
US13/550,493 2012-07-16

Publications (2)

Publication Number Publication Date
KR20140031370A KR20140031370A (ko) 2014-03-12
KR101625548B1 true KR101625548B1 (ko) 2016-05-30

Family

ID=47518913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147001166A KR101625548B1 (ko) 2011-07-15 2012-07-16 변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들

Country Status (6)

Country Link
US (1) US20130016789A1 (ko)
EP (1) EP2732628A2 (ko)
JP (1) JP5733590B2 (ko)
KR (1) KR101625548B1 (ko)
CN (1) CN103650510B (ko)
WO (1) WO2013012819A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020141856A1 (ko) * 2019-01-02 2020-07-09 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX346677B (es) * 2011-11-04 2017-03-29 Sharp Kk * Dispositivo de decodificacion aritmetica, dispositivo de decodificacion de imagenes, dispositivo de codificacion aritmetica, dispositivo de codificacion de imagenes y metodo de decodificacion aritmetica.
KR101672107B1 (ko) 2011-11-08 2016-11-02 구글 테크놀로지 홀딩스 엘엘씨 변환 계수들에 대한 이진 코드워드들을 결정하는 방법
CN103931197B (zh) 2011-11-08 2018-01-23 谷歌技术控股有限责任公司 确定用于变换系数的二进制码字的方法
EP2786575A4 (en) 2012-01-20 2016-08-03 Sony Corp REDUCTION OF CODING COMPLEXITY ON CARD OF IMPORTANCE
EP2805497A1 (en) 2012-01-21 2014-11-26 Motorola Mobility LLC Method of determining binary codewords for transform coefficients
US9635358B2 (en) 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
US9866829B2 (en) * 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
WO2013116849A1 (en) 2012-02-04 2013-08-08 General Instrument Corporation Devices and methods for context reduction in last significant coefficient position coding
US9167245B2 (en) 2012-02-05 2015-10-20 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
US9350998B2 (en) * 2012-06-29 2016-05-24 Qualcomm Incorporated Coding of significance flags
GB2513111A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
US9781424B2 (en) 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
KR20160131526A (ko) * 2015-05-07 2016-11-16 삼성전자주식회사 시스템 온 칩, 상기 시스템 온 칩을 포함하는 디스플레이 시스템, 및 상기 디스플레이 시스템의 동작 방법
US10382768B2 (en) * 2015-06-23 2019-08-13 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
CN105141966B (zh) * 2015-08-31 2018-04-24 哈尔滨工业大学 视频压缩中变换系数的上下文建模方法
US10708164B2 (en) * 2016-05-03 2020-07-07 Qualcomm Incorporated Binarizing secondary transform index
US10931947B2 (en) * 2016-05-04 2021-02-23 Sharp Kabushiki Kaisha Systems and methods for coding transform data
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
US10244261B2 (en) * 2017-01-26 2019-03-26 Google Llc Transform coefficient coding using level maps
EP3490253A1 (en) * 2017-11-23 2019-05-29 Thomson Licensing Encoding and decoding methods and corresponding devices
CN116132673A (zh) * 2017-12-13 2023-05-16 三星电子株式会社 视频解码方法及其装置以及视频编码方法及其装置
EP3562156A1 (en) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for adaptive context modeling in video encoding and decoding
CN110891180B (zh) * 2018-09-10 2023-11-17 华为技术有限公司 视频解码方法及视频解码器
US11006150B2 (en) * 2018-09-24 2021-05-11 Tencent America LLC Method and apparatus for video coding
CN111435993B (zh) 2019-01-14 2022-08-26 华为技术有限公司 视频编码器、视频解码器及相应方法
WO2020236723A1 (en) 2019-05-19 2020-11-26 Bytedance Inc. Transform bypass coded residual blocks in digital video
CN114679917A (zh) * 2019-06-24 2022-06-28 阿里巴巴集团控股有限公司 视频数据的变换跳过残差编码
CN114175653B (zh) * 2019-09-17 2023-07-25 北京达佳互联信息技术有限公司 用于视频编解码中的无损编解码模式的方法和装置
CN114556932B (zh) * 2019-09-24 2023-05-23 北京达佳互联信息技术有限公司 用于视频编解码的无损编解码模式
EP4062645A4 (en) * 2019-11-21 2023-08-16 Beijing Dajia Internet Information Technology Co., Ltd. METHOD AND DEVICE FOR TRANSFORMATION AND COEFFICIENT SIGNALING
CN113497936A (zh) * 2020-04-08 2021-10-12 Oppo广东移动通信有限公司 编码方法、解码方法、编码器、解码器以及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US8275045B2 (en) * 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J. Sole, et al. CE11: Unified scans for the significance map and coefficient level coding in high efficiency. JCT-VC of ITU-T and ISO/IEC. JCTVC-F288 Ver.2, Jul. 9, 2011, pp.1-8*
T. Wiegand, et al. WD3: Working Draft 3 of High-Efficiency Video Coding. JCT-VC of ITU-T and ISO/IEC. JCTVC-E603 Ver.8, Jun. 27, 2011, pp.1-215*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020141856A1 (ko) * 2019-01-02 2020-07-09 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치
US11671598B2 (en) 2019-01-02 2023-06-06 Lg Electronics Inc. Image decoding method and device using residual information in image coding system

Also Published As

Publication number Publication date
KR20140031370A (ko) 2014-03-12
EP2732628A2 (en) 2014-05-21
CN103650510A (zh) 2014-03-19
WO2013012819A2 (en) 2013-01-24
JP2014523709A (ja) 2014-09-11
WO2013012819A3 (en) 2013-06-20
CN103650510B (zh) 2018-05-22
US20130016789A1 (en) 2013-01-17
JP5733590B2 (ja) 2015-06-10

Similar Documents

Publication Publication Date Title
KR101625548B1 (ko) 변환 계수 레벨 코딩을 위한 컨텍스트 모델링 기술들
US9479780B2 (en) Simplification of significance map coding
JP7181126B2 (ja) 改善されたエントロピー符号化および復号を行う方法および装置
RU2504103C1 (ru) Способ и устройство для кодирования и декодирования изображения посредством использования вращательного преобразования
CN101682773B (zh) 用于对视频数据进行熵编码和熵解码的方法和设备
RU2551794C2 (ru) Способ и устройство для кодирования и декодирования изображения с использованием крупной единицы преобразования
KR101566105B1 (ko) Cabac에서 savs를 사용한 dqp의 이진화
JP2018078625A (ja) 符号化ビデオデータの変換単位のサブブロックを符号化又は復号するための方法、装置、及び、プログラム
WO2013109914A1 (en) Coding of coefficients in video coding
KR20140037264A (ko) 비디오 코딩에서의 계수 스캐닝
WO2014011439A1 (en) Method and apparatus for coding adaptive-loop filter coeeficients
JP2015507885A5 (ko)
KR20130140190A (ko) 마지막 유효 계수의 위치를 코딩 및 디코딩하는 방법 및 장치
JP2015507885A (ja) 変換単位の残差係数のための有意度マップを符号化および復号化する方法、装置およびシステム
KR20100027385A (ko) 적응적 이진화를 이용한 영상 부호화, 복호화 방법 및 장치
WO2012006738A1 (en) Methods and devices for data compression using context-based coding order
KR20180040515A (ko) 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법
JP6497100B2 (ja) 映像符号化装置、方法及びプログラム
RU2575868C2 (ru) Способ и устройство для кодирования и декодирования изображения с использованием крупной единицы преобразования

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190517

Year of fee payment: 4