KR20160052789A - 비디오 코딩에서의 계수 스캐닝 - Google Patents

비디오 코딩에서의 계수 스캐닝 Download PDF

Info

Publication number
KR20160052789A
KR20160052789A KR1020167011046A KR20167011046A KR20160052789A KR 20160052789 A KR20160052789 A KR 20160052789A KR 1020167011046 A KR1020167011046 A KR 1020167011046A KR 20167011046 A KR20167011046 A KR 20167011046A KR 20160052789 A KR20160052789 A KR 20160052789A
Authority
KR
South Korea
Prior art keywords
transform coefficients
block
scanning
scan
subblocks
Prior art date
Application number
KR1020167011046A
Other languages
English (en)
Other versions
KR101814308B1 (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 KR20160052789A publication Critical patent/KR20160052789A/ko
Application granted granted Critical
Publication of KR101814308B1 publication Critical patent/KR101814308B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

일 예에서, 본 개시물의 양태들은 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법에 관련되며, 이 방법은, 변환 계수들의 1차원 어레이를 디코딩하는 단계, 및 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행하는 단계를 포함하며, 서브 블록 스캔 순서는 블록 내의 복수의 서브 블록들의 각각의 서브 블록이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들의 각각의 서브 블록에 대응하는 변환 계수들이 스캔되는 순서를 포함한다.

Description

비디오 코딩에서의 계수 스캐닝{COEFFICIENT SCANNING IN VIDEO CODING}
본 출원은 2011년 7월 19일자로 출원된 미국 가출원 제61/509,522호, 2011년 7월 20일자로 출원된 미국 가출원 제61/509,926호, 2011년 10월 24일자로 출원된 미국 가출원 제61/550,829호, 및 2011년 11월 01일자로 출원된 미국 가출원 제61/554,292호를 우선권 주장하며, 이들 각각의 전체 내용들은 참조에 의해 본원에 통합된다.
기술 분야
본 개시물은 비디오 코딩에 관한 것이고, 더 상세하게는, 비디오 코딩 프로세스들에 의해 생성된 변환 계수들을 스캔하고 코딩하기 위한 기법들에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인휴대 정보단말들 (PDAs), 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 원격회의 디바이스들 등을 포함하는 넓은 범위의 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 에 의해 규정된 표준들, 현재 개발중인 고 효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준, 및 이러한 표준들의 확장물들에 기재된 것들과 같은 비디오 압축 기법들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신, 수신 및 저장한다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 제거하기 위해 공간적 예측 및/또는 시간적 예측을 포함한다. 블록 기반 비디오 코딩의 경우, 비디오 화상 또는 슬라이스는 블록들로 파티셔닝 (partitioning) 될 수도 있다. 각각의 블록은 더 파티셔닝될 수 있다. 인트라 코딩된 (intra-coded; I) 프레임 또는 슬라이스에서의 블록들은 동일한 화상 또는 슬라이스에서의 이웃 블록들의 참조 샘플들에 관한 공간적 예측을 이용하여 인코딩된다. 인터 코딩된 (inter-coded; P 또는 B) 프레임 또는 슬라이스에서의 블록들은 동일한 화상 또는 슬라이스에서의 이웃 블록들의 참조 샘플들에 관한 공간적 예측 또는 다른 참조 화상들에서의 참조 샘플들에 관한 시간적 예측을 이용할 수도 있다. 공간적 또는 시간적 예측은 결과적으로 블록에 대한 예측 블록이 코딩되게 한다. 잔차 데이터는 코딩될 원본 블록과 예측 블록 사이의 화소 차이들을 나타낸다.
인터 코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 움직임 벡터, 및 코딩된 블록과 예측 블록 사이의 차이를 나타내는 잔차 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔차 데이터는 화소 도메인으로부터 변환 도메인으로 변환될 수도 있어, 결과적으로 잔차 변환 계수들이 생겨나며, 그 계수들은 그 다음에 양자화될 수도 있다. 처음에는 2차원 어레이로 배열된 양자화된 변환 계수들은, 엔트로피 코딩을 위한 변환 계수들의 1차원 벡터를 생성하기 위해 특정 순서로 스캔될 수도 있다.
일반적으로, 본 개시물은 비디오 코딩 프로세스에서 잔차 비디오 데이터의 블록과 연관된 변환 계수들을 코딩하는 디바이스들 및 방법들을 설명한다. 코딩 동안, 변환 계수들의 블록은 복수의 서브 블록들의 형태를 취할 수도 있는 서브 세트들로 분할될 수도 있다. 서브 블록들은 그 다음에 스캔되고 코딩될 수도 있다. 예를 들어, 비디오 인코더에 관해, 서브 블록들로부터의 변환 계수들의 2차원 어레이는 변환 계수들의 1차원 어레이를 형성하기 위해 스캔될 수도 있으며, 그 변환 계수들의 1차원 어레이는 그 다음에 인코딩된다. 비디오 디코더에 관해, 변환 계수들의 1차원 어레이가 수신되고 디코딩된 다음, 2차원 서브 블록들을 복원하는데 사용될 수도 있다.
본 개시물의 기법들은 대체로 변환 계수들의 서브 블록들을 스캔하는 것과 코딩하는 것에 관련된다. 예를 들어, 본원에서 설명되는 바와 같이, 계수 스캔 순서가 변환 계수들이 잔차 데이터의 블록의 서브 블록들 내에서 스캔되고 코딩되는 순서를 설명할 수도 있다. 서브 블록 스캔 순서가 서브 블록들 자체들이 스캔되고 코딩되는 순서를 설명할 수도 있다. 본 개시물의 양태들에 따르면, 계수 스캔 순서는 서브 블록 스캔 순서, 즉, 잔차 데이터의 블록 내에서 서브 블록들이 스캔된 다음, 각각의 서브 블록 내의 계수들을 스캔하는 순서와 동일한 배향을 가질 수도 있다. 다시 말하면, 본 개시물의 양태들에 따르면, 서브 블록 스캔 순서의 스캔 패턴/방향/순서는 각각의 서브 블록 내의 계수 스캔 순서의 그것과 일치할 수도 있다. 부가적으로 또는 대안으로, 본 개시물의 기법들은 다양한 기준에 기초하여 계수 스캔 순서 및/또는 서브 블록 스캔 순서를 적응적으로 결정하는 것을 포함한다. 따라서, 일부 예들에서, 계수 스캔 순서가 서브 블록 스캔 순서와 상이할 수도 있다.
일 예에서, 본 개시물의 양태들은, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법에 관련되며, 그 방법은, 변환 계수들의 1차원 어레이를 디코딩하는 단계; 및 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행하는 단계를 포함하며, 서브 블록 스캔 순서는 블록 내의 복수의 서브 블록들의 각각의 서브 블록이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들의 각각의 서브 블록에 대응하는 변환 계수들이 스캔되는 순서를 포함한다.
다른 예에서, 본 개시물의 양태들은 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치에 관련되며, 그 장치는 변환 계수들의 1차원 어레이를 디코딩하고; 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행하도록 구성된 하나 이상의 프로세서들을 포함하며, 서브 블록 스캔 순서는 블록 내의 복수의 서브 블록들의 각각의 서브 블록이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들의 각각의 서브 블록에 대응하는 변환 계수들이 스캔되는 순서를 포함한다.
다른 예에서, 본 개시물의 양태들은 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치에 관련되며, 그 장치는 변환 계수들의 1차원 어레이를 디코딩하는 수단; 및 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행하는 수단을 포함하며, 서브 블록 스캔 순서는 블록 내의 복수의 서브 블록들의 각각의 서브 블록이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들의 각각의 서브 블록에 대응하는 변환 계수들이 스캔되는 순서를 포함한다.
다른 예에서, 본 개시물의 양태들은, 명령들을 저장한 컴퓨터 판독가능 저장 매체에 관련되며, 그 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 변환 계수들의 1차원 어레이를 디코딩하도록 하고; 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행하도록 하며, 서브 블록 스캔 순서는 블록 내의 복수의 서브 블록들의 각각의 서브 블록이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들의 각각의 서브 블록에 대응하는 변환 계수들이 스캔되는 순서를 포함한다.
다른 예에서, 본 개시물의 양태들은, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법에 관련되며, 그 방법은, 변환 계수들의 블록을 복수의 서브 블록들로 분할하는 단계; 변환 계수들의 1차원 어레이를 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 블록에 대해 스캔을 수행하는 단계로서, 서브 블록 스캔 순서는 복수의 서브 블록들 각각이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들 각각 내의 변환 계수들이 스캔되는 순서를 포함하는, 상기 스캔을 수행하는 단계; 및 변환 계수들의 1차원 어레이를 인코딩하는 단계를 포함한다.
다른 예에서, 본 개시물의 양태들은, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치에 관련되며, 그 장치는 변환 계수들의 블록을 복수의 서브 블록들로 분할하고; 변환 계수들의 1차원 어레이를 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 블록에 대해 스캔을 수행하는 것으로서, 서브 블록 스캔 순서는 복수의 서브 블록들 각각이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들 각각 내의 변환 계수들이 스캔되는 순서를 포함하는, 상기 스캔을 수행하며; 변환 계수들의 1차원 어레이를 인코딩하도록 구성된 하나 이상의 프로세서들을 포함한다.
다른 예에서, 본 개시물의 양태들은, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치에 관련되며, 그 장치는 변환 계수들의 블록을 복수의 서브 블록들로 분할하는 수단; 변환 계수들의 1차원 어레이를 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 블록에 대해 스캔을 수행하는 수단으로서, 서브 블록 스캔 순서는 복수의 서브 블록들 각각이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들 각각 내의 변환 계수들이 스캔되는 순서를 포함하는, 상기 스캔을 수행하는 수단; 및 변환 계수들의 1차원 어레이를 인코딩하는 수단을 포함한다.
다른 예에서, 본 개시물의 양태들은, 명령들을 저장한 컴퓨터 판독가능 저장 매체에 관련되며, 그 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 변환 계수들의 블록을 복수의 서브 블록들로 분할하도록 하고; 변환 계수들의 1차원 어레이를 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 블록에 대해 스캔을 수행하는 것으로서, 서브 블록 스캔 순서는 복수의 서브 블록들 각각이 스캔되는 순서를 포함하고, 계수 스캔 순서는 복수의 서브 블록들 각각 내의 변환 계수들이 스캔되는 순서를 포함하는, 상기 스캔을 수행하도록 하며; 변환 계수들의 1차원 어레이를 인코딩하도록 한다.
하나 이상의 예들의 세부사항들은 첨부 도면들 및 다음의 설명에서 언급된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
효율을 개선하고 및/또는 구현예를 단순화하기 위해, 변환 계수들의 블록은 복수의 서브 블록들의 형태를 취할 수도 있는 서브 세트들로 분할될 수도 있다.
도 1은 본 개시물의 기법들을 수행하도록 구성될 수도 있는 일 예의 비디오 코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시물의 기법들을 수행하도록 구성될 수도 있는 일 예의 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시물의 기법들을 수행하도록 구성될 수도 있는 일 예의 비디오 디코더를 도시하는 블록도이다.
도 4는 유의성 맵 코딩 프로세스를 예시하는 개념도이다.
도 5a는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 개념도이다.
도 5b는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 다른 개념도이다.
도 5c는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 다른 개념도이다.
도 5d는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 다른 개념도이다.
도 5e는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 다른 개념도이다.
도 5f는 변환 계수 코딩을 위한 예의 스캐닝 패턴들 및 방향들을 예시하는 다른 개념도이다.
도 6은 비디오 데이터의 블록의 변환 계수들의 콘텍스트 적응 코딩의 일 예를 도시하는 개념도이다.
도 7은 변환 계수들의 블록을 서브 블록들로 분할하는 일 예를 도시하는 개념도이다.
도 8a는 서브 블록들로 분할된 변환 계수들의 블록에 대한 일 예의 지그재그 서브 블록 스캔 순서를 도시하는 개념도이다.
도 8b는 서브 블록들로 분할된 변환 계수들의 블록에 대한 일 예의 수평 서브 블록 스캔 순서를 도시하는 개념도이다.
도 8c는 서브 블록들로 분할된 변환 계수들의 블록에 대한 일 예의 수직 서브 블록 스캔 순서를 도시하는 개념도이다.
도 8d는 서브 블록들로 분할된 변환 계수들의 블록에 대한 일 예의 대각선 서브 블록 스캔 순서를 도시하는 개념도이다.
도 8e는 도 8d에 도시된 스캔의 역인, 서브 블록들로 분할된 변환 계수들의 블록에 대한 일 예의 대각선 서브 블록 스캔 순서를 도시하는 개념도이다.
도 9a 및 도 9b는 일 예의 서브 블록들의 변환 계수들에 대한 대각선 계수 스캔 순서 및 서브 블록들에 대한 대각선 서브 블록 스캔 순서를 도시한다.
도 10a 및 도 10b는 도 9a 및 도 9b에 도시된 스캔들에 관해 일 예의 서브 블록들의 변환 계수들에 대한 역방향 (reverse) 대각선 계수 스캔 순서 및 서브 블록들에 대한 역방향 대각선 서브 블록 스캔 순서를 도시한다.
도 11a 및 도 11b는 일 예의 서브 블록들의 변환 계수들에 대한 역방향 수직 계수 스캔 순서 및 서브 블록들에 대한 역방향 수직 서브 블록 스캔 순서를 도시한다.
도 12a 및 도 12b는 일 예의 서브 블록들의 변환 계수들에 대한 역방향 수평 계수 스캔 순서 및 서브 블록들에 대한 역방향 수평 서브 블록 스캔 순서를 도시한다.
도 13은 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 일 예를 도시하는 개념도이다.
도 14는 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 다른 예를 도시하는 개념도이다.
도 15는 본 개시물의 기법들에 따른 일 예의 비디오 인코딩 프로세스를 도시하는 흐름도이다.
도 16은 본 개시물의 기법들에 따른 일 예의 비디오 디코딩 프로세스를 도시하는 흐름도이다.
도 17은 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 일 예의 방법을 도시하는 흐름도이다.
비디오 코딩 디바이스가 공간적 및 시간적 리던던시를 이용함으로써 비디오 데이터를 압축할 수도 있다. 예를 들어, 비디오 인코더가 비디오 데이터의 블록을 이웃하는 이전에 코딩된 블록들에 관하여 코딩함으로써 공간적 리던던시를 이용할 수도 있다. 비슷하게, 비디오 인코더가 비디오 데이터의 블록을, 화상들이라고도 지칭될 수도 있는 이전에 코딩된 화상들의 비디오 데이터에 관하여 코딩함으로써 시간적 리던던시를 이용할 수도 있다. 특히, 비디오 인코더는 공간적 이웃의 데이터로부터 또는 이전에 코딩된 화상의 데이터로부터 현재 블록을 예측할 수도 있다. 비디오 인코더는 그 후 그 블록에 대한 실제 화소 값들과 그 블록에 대한 예측된 화소 값들 사이의 차이로서 그 블록에 대한 잔차를 계산할 수도 있다. 다시 말하면, 블록에 대한 잔차는 화소 (또는 공간) 도메인에서의 화소 단위 차이 값들을 포함할 수도 있다.
따라서, 블록 (예컨대, 비디오 데이터의 예측 유닛) 을 코딩하기 위해, 그 블록에 대한 예측자 (predictor) 가 먼저 도출된다. 예측 블록이라고도 지칭되는 예측자는, 인트라 (I) 예측 (즉, 공간적 예측) 또는 인터 (P 또는 B) 예측 (즉, 시간적 예측) 중 어느 하나를 통해 도출될 수 있다. 따라서, 일부 예측 유닛들은 동일한 화상 (또는 슬라이스) 에서의 이웃하는 참조 블록들의 참조 샘플들에 관해 공간적 예측을 이용하여 인트라 코딩 (I) 될 수도 있고, 다른 예측 유닛들은 다른 이전에 코딩된 화상들 (또는 슬라이스들) 에서의 참조 샘플들의 참조 블록들에 관해 단방향 인터 코딩 (P) 또는 양방향 인터 코딩 (B) 될 수도 있다. 참조 샘플들은 참조 블록들의 실제 화소들 및/또는 예컨대, 보간에 의해 생성된 합성된 참조 샘플들을 포함할 수도 있다. 각각의 경우에, 참조 샘플들은 코딩될 블록에 대한 예측 블록을 형성하는데 이용될 수도 있다.
블록의 잔차 값을 추가로 압축하기 위해, 비디오 인코더는 잔차 값들을, 가능한 한 많은 데이터 (또한 "에너지"라 지칭됨) 를 가능한 한 적은 계수들로 압축하는 변환 계수들의 세트로 변환할 수도 있다. 그 변환은 공간 도메인에서의 화소 레벨들, 예컨대, 루마 및/또는 크로마 레벨들로부터의 잔차 값들을, 예컨대, 이산 코사인 변환 (DCT), 정수 변환, 카루넨-뢰베 (Karhunen-Loeve; K-L) 변환, 또는 다른 변환을 사용하여 변환 도메인에서의 변환 계수들로 컨버팅한다. 변환 계수들은 원본 블록과 보통 동일한 사이즈인 변환 계수들의 2차원 매트릭스에 대응한다. 다르게 말하면, 원본 블록에서의 화소들만큼 많은 변환 계수들이 통상 그대로 존재한다. 그러나, 변환으로 인해, 대다수의 변환 계수들은 0과 동일한 값들을 가질 수도 있다.
비디오 인코더는 그 다음에 비디오 데이터를 추가로 압축하기 위해 변환 계수들을 양자화할 수도 있다. 양자화는 일반적으로, 비교적 큰 범위 내의 값들을 상대적으로 작은 범위의 값들로 맵핑하는 것을 수반하여, 양자화된 변환 계수들을 표현하는데 필요한 데이터의 양을 감소시킨다. 비디오 인코더는 미리 정의된 알고리즘에 따라 양자화 파라미터 (QP) 를 적용함으로써 변환 계수들을 양자화할 수도 있다. 양자화 후, 변환 계수들의 일부는 0의 값들을 가질 수도 있다. 덧붙여서, 변환 스킵 모드와 같은 소정의 비디오 코딩 모드들에서, 변환은 결여될 수도 있고 양자화는 예측 잔차에 직접 적용될 수도 있다.
엔트로피 코더가 그 다음에 엔트로피 코딩, 이를테면 콘텍스트 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 확률 간격 파티셔닝 엔트로피 코딩 (PIPE) 등을 양자화된 변환 계수들에 적용한다. 양자화된 변환 계수들의 블록을 엔트로피 코딩하기 위해, 블록에서의 양자화된 변환 계수들의 2차원 (2D) 어레이가, 특정 스캔 순서에 따라, 변환 계수들의 정렬된 1차원 (1D) 어레이, 즉, 벡터로 재배열되도록 하는 스캐닝 프로세스가 보통 수행된다. 엔트로피 코딩이 변환 계수들의 벡터에 적용된다. 양자화된 변환 계수들의 스캔은 엔트로피 코더를 위해 변환 계수들의 2D 어레이를 직렬화시킨다.
일부 예들에 따르면, 비디오 블록에서의 유의 계수들 (즉, 0이 아닌 변환 계수들) 의 포지션들은 변환 계수들의 "레벨들"이라고 지칭될 수도 있는, 변환 계수들의 값들보다 먼저 인코딩될 수도 있다. 유의 계수들의 로케이션들을 코딩하는 프로세스는 유의성 맵 (significance map) 코딩이라고 지칭될 수도 있다. 유의성 맵은 유의 계수들의 로케이션들을 나타내는 이진 값들의 2차원 어레이를 포함한다.
예를 들어, 비디오 데이터의 블록에 대한 유의성 맵은 1들 및 0들의 2D 어레이를 포함할 수도 있으며, 1들은 그 블록 내의 유의 변환 계수들의 포지션들을 나타내고 0들은 그 블록 내의 무효 (영의 값으로 된) 변환 계수들의 포지션들을 나타낸다. 1들 및 0들은 "유의 계수 플래그들"이라고 지칭될 수도 있다. 덧붙여, 일부 예들에서, 유의성 맵은, 1이 블록과 연관된 스캐닝 순서에 따른 블록 내의 마지막 유의 계수의 포지션을 나타내고 0들이 그 블록 내의 모든 다른 계수들의 포지션들을 나타내는, 1들 및 0들의 다른 2D 어레이를 포함할 수도 있다. 이 경우, 1들 및 0들은 "마지막 유의 계수 플래그들"이라고 지칭된다. 다른 예들에서는, 이러한 마지막 유의 계수 플래그들이 사용되지 않는다. 오히려, 블록에서의 마지막 유의 계수는 유의성 맵의 나머지를 전송하기 전에 먼저 코딩될 수도 있다. 어느 경우나, 비디오 데이터의 블록에 대한 유의성 맵 코딩은 그 블록을 코딩하는데 사용된 비디오 비트레이트의 상당한 백분율을 소비할 수도 있다.
유의성 맵이 스캔되어 코딩된 후, 비디오 코더가 각각의 변환 계수의 레벨을 스캔하고 코딩할 수도 있다. 예를 들어, 비디오 코더는 각각의 0이 아닌 변환 계수의 절대 값, 즉 레벨을 이진 형태로 컨버팅할 수도 있다. 이런 식으로, 각각의 0이 아닌 변환 계수의 레벨은, 변환 계수를 표현하기 위해, 예컨대, 하나 이상의 비트들, 또는 "빈들"을 생성하는 단항 (unary) 또는 다른 코드를 사용하여 "이진화될" 수도 있다. 덧붙여서, 다수의 다른 이진화된 신택스 엘리먼트들이 비디오 디코더가 비디오 데이터를 디코딩하는 것을 허용하기 위해 포함될 수도 있다.
일부 예들에서, 유의성 맵의 스캔 순서는 계수 레벨들의 그것과는 상이할 수도 있다. 다른 예들에서, 변환 계수들의 스캔 순서는, 계수 레벨들의 스캔이 유의성 맵의 스캔과, 즉, 스캔 방향 및 스캔 패턴에서 동일하도록 조화될 수도 있다. 덧붙여서, 위에서 지적했듯이, 계수 레벨들 및 유의 계수들에 대한 스캔들은 반대 방향으로, 즉, 블록에서의 마지막 유의 계수부터 그 블록에서의 첫 번째 계수 (DC 성분) 로 진행하는 역 스캔으로서 수행될 수도 있다. 역 스캔을 용이하게 하기 위해, 비디오 코더가 스캐닝 전에 마지막 유의 계수를 식별할 수도 있다. 일단 블록에서의 마지막 유의 계수가 식별되면, 반대 방향의 스캔 순서가 유의성 맵 및 계수 레벨들 양쪽 모두에 적용될 수 있다.
스캐닝 후, 다수의 0 계수들이 통상, 더 높은 주파수들에서의 감소된 에너지로 인해, 그리고 일부 0이 아닌 계수들이 비트 깊이의 감소 시에 값이 0인 계수들이 되게 할 수도 있는 양자화의 영향으로 인해, 스캔 방향에 의존하여, 1D 어레이의 하나의 말단에서 그롭화될 것이다. 직렬화된 1D 어레이에서의 계수 분포의 이들 특성들은 코딩 효율을 개선하기 위해 엔트로피 코더 설계에서 활용될 수도 있다. 다르게 말하면, 0이 아닌 계수들이 1D 어레이의 하나의 부분에서 일부 적절한 스캔 순서를 통해 효과적으로 배열될 수 있다면, 더 나은 코딩 효율이 많은 엔트로피 코더들의 설계로 인해 기대될 수 있다. 예를 들어, 엔트로피 코딩은 0의 값의 계수들의 런들을 코딩하여, 코딩을 위한 더 효율적인 심볼들을 제공할 수도 있다.
일 예로서, DCT가 변환 계수들에 적용되는 경우, 종종 2D 변환 유닛의 좌측상부 코너 (즉, 낮은 주파수 지역) 쪽에 더 높은 확률의 0이 아닌 계수들이 존재한다. 따라서, 엔트로피 코딩 효율은 변환 계수들이 좌측상부 코너에서 시작하여 스캔된다면 증가될 수도 있으며, 이는 계수들의 직렬화된 런의 상대적 시작부분에서 0이 아닌 계수들을 함께 그룹화하는 확률을 증가시킬 수도 있다. 덧붙여서, 0의 값의 계수들은 직렬화된 어레이의 그 말단 쪽에서 함께 그룹화될 수도 있으며, 이는 엔트로피 코딩 효율을 증가시킬 수도 있다.
대각선 (또는 파두 (wavefront)) 스캔 순서가 제안된 HEVC 표준에서 양자화된 변환 계수들을 스캔할 시에 사용하기 위해 채택되어 있다. 변환 및 양자화를 통해, 위에서 언급했듯이, 0이 아닌 변환 계수들은 변환이 DCT인 일 예에 대해 블록의 좌측상부 지역 쪽의 낮은 주파수 영역에 위치될 수도 있다. 그 결과, 좌측상부 지역을 먼저 횡단할 수도 있는 대각선 스캐닝 프로세스 후, 0이 아닌 변환 계수들은 1D 어레이의 전면 부분에 위치될 공산이 더 클 수도 있다. 우측하부 지역에서부터 먼저 횡단하는 대각선 스캐닝 프로세스에 대해, 0이 아닌 변환 계수들은 보통 1D 어레이의 후면 부분에 위치될 공산이 더 크다.
위의 예가 대각선 스캔을 언급하지만, 1D 어레이의 하나의 말단에 더 많은 0이 아닌 계수들을 배치시키는 목적을 달성하기 위해, 상이한 스캔 순서들이 변환 계수들을 코딩하는 비디오 코더 (예컨대, 비디오 인코더 또는 비디오 디코더) 에서 사용될 수도 있다. 일부 경우들에서, 대각선 스캐닝이 효과적일 수도 있다. 다른 경우들에서, 상이한 유형들의 스캐닝, 이를테면 지그재그, 수직 또는 수평 스캐닝이 더 효과적일 수도 있다. 구현되는 특정 스캔은 다양한 기준, 이를테면 레이트-왜곡 메트릭에 의존할 수도 있다.
상이한 스캔 순서들이 다양한 방법들로 생성될 수도 있다. 하나의 예는, 변환 계수들의 각각의 블록에 대해, "최상의" 스캔 순서가 다수의 가용 스캔 순서들로부터 선택될 수도 있다는 것이다. 비디오 인코더는 그 다음에 표시, 즉 개별 인덱스들에 의해 표시된 스캔 순서들의 세트 중 최상의 스캔 순서의 인덱스를 각각의 블록에 대해 디코더에 제공할 수도 있다. 최상의 스캔 순서의 선택은 여러 스캔 순서들을 적용하고 1D 벡터의 시작부분 또는 말단 근처에 0이 아닌 계수들을 배치시킴에 있어서 가장 효과적인 것을 선택함으로써 결정될 수도 있으며, 이에 의해 효율적인 엔트로피 코딩을 촉진시킨다.
다른 예에서, 현재 블록에 대한 스캔 순서는 적절한 예측 유닛의 코딩에 관련한 다양한 팩터 (factor) 들, 이를테면 예측 모드 (I, B, P), 블록 사이즈, 변환 또는 다른 팩터들에 기초하여 결정될 수도 있다. 일부 경우들에서, 동일한 정보, 예컨대, 예측 모드가 인코더 측 및 디코더 측 양쪽 모두에서 유추될 수 있기 때문에, 스캔 순서 인덱스의 표시를 디코더에 제공할 필요가 없을 수도 있다. 대신, 비디오 디코더는 블록에 대한 예측 모드의 지식을 감안하여 적절한 스캔 순서를 나타내는 구성 데이터 (configuration data), 및 예측 모드를 특정 스캔 순서에 맵핑하는 하나 이상의 기준을 저장할 수도 있다.
코딩 효율을 추가로 개선하기 위해, 가용 스캔 순서들은 항상 일정하지 않을 수도 있다. 대신, 스캔 순서가, 예컨대, 이미 코딩된 계수들에 기초하여 적응적으로 조절되도록 얼마간의 적응이 가능하게 될 지도 모른다. 대체로, 스캔 순서 적응은, 선택된 스캔 순서에 따라 0 및 0이 아닌 계수들이 함께 그룹화될 공산이 더 많게 되는 그러한 방식으로 행해질 수도 있다.
일부 비디오 코더들에서, 초기 가용 스캔 순서들은 순전히 수평, 수직, 대각선, 또는 지그재그 스캔과 같은 매우 규칙적인 형태로 있을 수도 있다. 대안으로, 스캔 순서들은 훈련 프로세스를 통해 도출될 수도 있고 그러므로 다소 랜덤인 것으로 보일 수도 있다. 훈련 프로세스는, 위에서 언급했듯이, 예컨대, 0이 아닌 및 값이 0인 계수들의 효율적인 배치의 측면에서, 바람직한 결과들을 생성하는 스캔 순서를 식별하기 위해 블록 또는 일련의 블록들에 대한 상이한 스캔 순서들의 적용을 수반할 수도 있다.
스캔 순서가 훈련 프로세스로부터 도출된다면, 또는 다양한 상이한 스캔 순서들이 선택될 수 있다면, 특정 스캔 순서들은 인코더 측 및 디코더 측 양쪽 모두에 저장될 수도 있다. 이러한 스캔 순서들을 특정하는 데이터의 양은 비교적 상당할 수도 있다. 예를 들어, 32x32 변환 블록의 경우, 하나의 스캔 순서가 1024 개의 변환 계수 포지션들을 포함할 수도 있다. 상이한 사이즈로 된 블록들이 있을 수도 있고, 변환 블록의 각각의 사이즈에 대해, 다수의 상이한 스캔 순서들이 있을 수도 있기 때문에, 저장이 필요한 데이터의 총 량은 무시할 수 없다.
그 반면, 대각선, 수평, 수직 또는 지그재그 순서와 같은 정규 (regular) 스캔 순서들은 스토리지를 필요로 하지 않을 수도 있거나, 또는 최소 스토리지를 필요로 할 수도 있다. 그러나, 순방향 수평 또는 수직 스캔과 같은 정규 스캔들은 좌측 또는 상단부터 우측 또는 하단으로 완전히 하나의 행/열을 스캔한 다음, 다음 행/열을 위해 좌측 또는 상단으로 되돌아갈 것이다. 스캐닝 순서에 대한 이 종류의 "강한 (strong)" 배향은 큰 블록들에 대해 효율적이지 않을 수도 있는데, 하나의 행/열의 말단 및 다음 행/열의 시작부분에서 변환 계수들 사이에 적은 상관이 있을 수도 있어서이다.
일부 예들에서, 효율을 개선하고 및/또는 구현예를 단순화하기 위해, 변환 계수들의 블록은 복수의 서브 블록들의 형태를 취할 수도 있는 서브 세트들로 분할될 수도 있다. 예를 들어, 소프트웨어 또는 하드웨어 비디오 코더가 32x32와 같은 큰 블록들에 대한 지그재그 또는 대각선 스캔을 구현하는 것은 부담이 될 (예컨대, 컴퓨테이션적으로 비효율적일) 수도 있다. 따라서, 블록을 서브 블록들로 분할한 후, 서브 블록들은 그 다음에 스캔되고 코딩될 수도 있다. 비디오 인코더에 관해, 서브 블록들로부터의 변환 계수들의 2차원 어레이는 변환 계수들의 1차원 어레이를 형성하기 위해 스캔될 수도 있으며, 그 변환 계수들의 1차원 어레이는 그 다음에 인코딩된다. 비디오 디코더에 관해, 변환 계수들의 1차원 어레이가 수신되고 디코딩된 다음, 2차원 서브 블록들을 복원하는데 사용될 수도 있다.
본 개시물의 기법들은 대체로 변환 계수들의 서브 블록들을 스캔하는 것과 코딩하는 것에 관련된다. 예를 들어, 본원에서 설명되는 바와 같이, 계수 스캔 순서가 변환 계수들이 서브 블록들 내에서 스캔되고 코딩되는 순서를 설명할 수도 있다. 서브 블록 스캔 순서가 서브 블록들 자체들이 스캔되고 코딩되는 순서를 설명할 수도 있다. 본 개시물의 양태들에 따르면, 계수 스캔 순서는 서브 블록 스캔 순서와 동일한 배향을 가질 수도 있다. 예를 들어, 본원에서 설명된 바와 같이, 스캔 배향이 일반적으로 스캔 방향, 패턴, 또는 스캔의 전체 순서를 말할 수도 있다. 다시 말하면, 지그재그 패턴 (예컨대, 도 5a에 관해 도시되고 설명된 바와 같음) 이 지그재그 배향을 갖는 것이라고 지칭될 수도 있다. 덧붙여서, 방향이 대각선인 스캔 (예컨대, 도 5d 내지 도 5f에 관해 도시되고 설명된 바와 같음) 이 대각선 배향을 갖는 것이라고 지칭될 수도 있다. 본 개시물의 양태들에 따르면, 서브 블록 스캔 순서의 배향은 계수 스캔 순서의 그것과 일치할 수도 있다.
예를 들어, 본 개시물의 양태들에 따르면, 비디오 코더가 미리 결정된 서브 블록 사이즈보다 큰 블록을 서브 블록들로 세분할 수도 있다. 일부 예들에서, 비디오 코더는 블록을 4x4 서브 블록들로 분할할 수도 있지만, 다양한 다른 서브 블록 사이즈들 (예컨대, 2x2, 8x8, 16x16 등) 이 또한 사용될 수도 있다. 비디오 코더가 화상 (또는 슬라이스) 의 모든 블록들에 대해 동일한 서브 블록 사이즈를 사용한다면, 서브 블록 사이즈들의 균일성으로 인해 하드웨어 구현예에서 이익이 얻어질 수도 있다. 그러나, 균일한 서브 블록 사이즈가 본 개시물의 기법들을 실시하는데 필수적이지 않다.
변환 계수들의 블록을 서브 블록들로 분할한 후, 비디오 코더는 서브 블록들의 변환 계수들을 계수 스캐닝 순서로 스캔할 뿐만 아니라 서브 블록들 자체들을 서브 블록 스캐닝 순서로 스캔할 수도 있다. 본 개시물의 양태들에 따르면, 계수 스캔 순서 및 서브 블록 스캔 순서는 동일한 배향 (예컨대, 동일한 스캔 패턴, 방향, 또는 순서) 을 가질 수도 있다. 다시 말하면, 예를 들어, 비디오 코더는 서브 블록들의 변환 계수들 (예컨대, 유의성, 부호 (sign), 레벨 등을 포함함) 각각을 계수 스캔 순서로 대각선으로 스캔할 수도 있다. 비디오 코더는 또한 서브 블록들을 가로질러 서브 블록 스캔 순서로 대각선으로 스캔할 수도 있다. 예시를 위하여, 서브 블록들이 스캔되는 순서는 서브 블록 내의 계수들이 첫 번째로 스캔된 다음, 제 2 서브 블록 내의 계수들이 두 번째로 스캔되는 등등을 특정할 수도 있는 반면, 계수 스캐닝의 순서는 주어진 서브 블록 내의 계수들이 스캔되는 순서를 특정한다.
다른 예들에서, 본 개시물의 양태들에 따르면, 계수 스캔 순서는 서브 블록 스캔 순서와는 상이할 수도 있다. 다시 말하면, 예를 들어, 비디오 코더가 대각선 서브 블록 스캔 순서 및 지그재그 계수 스캔 순서를 수행할 수도 있다. 아래에서 더욱 상세히 설명되는 바와 같이, 비디오 코더는, 예컨대, 레이트-왜곡 메트릭에 기초하여 서브 블록 및 계수 스캔 순서들을 적응적으로 결정할 수도 있다.
일부 예들에서, 비디오 코더는 스캔들을 역으로 수행할 수도 있다. 덧붙여서, 일부 양태들에 따르면, 비디오 코더는 서브 블록들을 순차적으로 스캔하고 코딩할 수도 있다. 다시 말하면, 비디오 코더는 서브 블록 스캔 순서에서 다음 서브 블록으로 이동하기 전에 현재 서브 블록의 변환 계수들을 계수 스캔 순서로 스캔하고 코딩할 수도 있다.
본 개시물의 양태들은 또한 엔트로피 코딩을 위한 스캐닝 (예컨대, CABAC에서의 유의성 맵 스캔 또는 계수 레벨 스캔) 을 수행하는 서브 블록 적응 스캐닝 순서의 사용에 관련한다. 하나의 예에서, 서브 블록 적응 스캐닝 순서는 비교적 큰 블록 사이즈들 (예컨대 32x32 또는 16x16 블록 사이즈들) 에 대해, 위에서 설명된 바와 같이, 강한 수평 및 수직 스캐닝 순서들 대신 사용될 수도 있다. 그러나, 다음의 기법들은 세분될 수도 있는 임의의 사이즈 블록에 대해 사용될 수도 있다. 위에서 지적했듯이, 적응 스캔들은 블록의 0이 아닌 변환 계수들을 함께 그룹화하는 것을 도울 수도 있다.
일부 예들에서, 변환 계수들의 블록을 서브 블록들로 분할하는 것은 (예컨대, 콘텍스트를 사용하여 엔트로피 코딩하는 경우) 서브 블록들 내에 콘텍스트 의존성을 생성할 수도 있다. 예를 들어, 서브 블록들 내에서 대각선 스캔을 사용하여 스캔하는 경우, 서브 블록 내의 좌측상단 계수에 대한 콘텍스트는 프로세싱되고 있는 이전 계수 (예컨대, 현재 변환 계수 하측에 위치된 변환 계수) 에 의존할 수도 있다. 콘텍스트 의존성은 엔트로피 코딩하는 경우에 원치않는 지연을 부과할 수도 있다. 이 의존성을 피하고 이에 따라 병렬화를 향상시키기 위해, 본 개시물의 양태들은 콘텍스트 지원 이웃이라고 지칭될 수도 있는 콘텍스트가 도출될 수도 있는 포지션들을 수정하는 것에 관련된다. 예를 들어, 본 개시물의 기법들은, 비디오 코더가 2 개의 빈들을 병렬로 프로세싱하는 것을 허용하게, 2 개의 연속적인 계수들의 의존성을 제거하는 콘텍스트 지원 이웃을 결정하는 것을 포함한다. 일부 예들에서, 의존성 제거는 2 개부터 3 개, 4 개 또는 그 이상의 연속적인 계수들로 증가될 수 있다. 그러한 경우들에서, 각각의 포지션에서의 콘텍스트 지원 이웃은 특정 스캔 순서를 감안하여 이웃에서 콘텍스트 의존성들을 제거하기 위해 수정될 수도 있다.
도 1은 본 개시물의 예들에 따라 변환 계수들을 코딩하는 기법들을 활용하도록 구성될 수도 있는 일 예의 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템 (10) 은 인코딩된 비디오를 통신 채널 (16) 을 통해 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12) 를 포함한다. 인코딩된 비디오는 또한 저장 매체 (34) 또는 파일 서버 (36) 에 저장될 수도 있고 원하는 대로 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 이른바 스마트폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들 등을 포함한 매우 다양한 디바이스들 중 임의의 것을 포함할 수도 있다. 많은 경우들에서, 이러한 디바이스들은 무선 통신을 위해 장착될 수도 있다.
따라서, 통신 채널 (16) 은 무선 채널, 유선 채널, 또는 인코딩된 비디오 데이터의 송신에 적합한 무선 및 유선 채널들의 조합, 이를테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 선로들, 또는 무선 및 유선 매체들의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 패킷 기반 네트워크, 이를테면 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 채널 (16) 은, 유선 또는 무선 매체들의 임의의 적합한 조합을 포함하여, 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 컬렉션을 일반적으로 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
변환 계수들을 코딩하는 기법들은, 본 개시물의 예들에 따라서, 다양한 멀티미디어 애플리케이션들, 이를테면 OTA (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대, 인터넷을 통한 스트리밍 비디오 송신들 중 임의의 것의 지원 하의 비디오 코딩, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 화상 통화와 같은 애플리케이션들을 지원하기 위해 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) 및 송신기 (24) 를 구비한다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡처 디바이스, 이를테면 비디오 카메라, 이전에 캡처된 비디오를 담고 있는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하는 비디오 피드 인터페이스, 및/또는 컴퓨터 그래픽스 데이터를 소스 비디오로서 생성하는 컴퓨터 그래픽스 시스템과 같은 소스, 또는 이러한 소스들의 조합을 포함할 수도 있다. 하나의 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 이른바 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 본 개시물에서 설명된 기법들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다.
캡처된, 사전-캡처된 (pre-captured), 또는 컴퓨터-생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 통신 표준, 이를테면 무선 통신 프로토콜에 따라 모뎀 (22) 에 의해 변조될 수도 있고, 목적지 디바이스 (14) 에 송신기 (24) 를 통해 송신될 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 구비할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하여, 데이터를 송신하기 위해 설계된 회로들을 구비할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩되는 캡처된, 사전-캡처된, 또는 컴퓨터-생성된 비디오는 또한 나중의 소비를 위해 저장 매체 (34) 또는 파일 서버 (36) 상에 저장될 수도 있다. 저장 매체 (34) 는 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오를 저장하는 임의의 다른 적합한 디지털 저장 매체들을 포함할 수도 있다. 저장 매체 (34) 상에 저장된 인코딩된 비디오는 그 다음에 디코딩 및 플레이백을 위해 목적지 디바이스 (14) 에 의해 액세스될 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장하고 그 인코딩된 비디오를 목적지 디바이스 (14) 에 송신하는 것이 가능한 임의의 유형의 서버일 수도 있다. 예의 파일 서버들은 웹 서버 (예컨대, 웹사이트 용), FTP 서버, 네트워크 접속 스토리지 (network attached storage; NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 그것을 목적지 디바이스에 송신하는 것이 가능한 임의의 다른 유형의 디바이스를 포함한다. 파일 서버 (36) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 양쪽 모두의 조합일 수도 있다. 파일 서버 (36) 는 목적지 디바이스 (14) 에 의해 인터넷 접속을 포함한 임의의 표준 데이터 접속을 통해 액세스될 수도 있다. 이는 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀, 이더넷, USB 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 양쪽 모두의 조합을 포함할 수도 있다.
목적지 디바이스 (14) 는, 도 1의 예에서, 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 구비한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 비디오 디코더 (30) 를 위한 복조된 비트스트림을 생성하기 위해 그 정보를 복조한다. 채널 (16) 을 통해 통신되는 정보는 비디오 데이터의 디코딩 시에 비디오 디코더 (30) 에 의한 사용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 정보를 포함할 수도 있다. 이러한 신택스에는 또한 저장 매체 (34) 또는 파일 서버 (36) 상에 저장되는 인코딩된 비디오 데이터가 포함될 수도 있다.
디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나, 또는 그것 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합형 디스플레이 디바이스를 포함할 수도 있고 또한 외부 디스플레이 디바이스와 인터페이스하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
비디오 인코더 (20) 와 비디오 디코더 (30) 는 비디오 코딩 표준, 이를테면 현재 개발 중인 고 효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준에 따라 동작할 수도 있고, HEVC 테스트 모델 (HM) 을 준수할 수도 있다. HEVC의 최신 작업 초안 (Working Draft; WD) 이고 이후로는 HEVC WD7이라고 지칭되는 것은, http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v5.zip 으로부터 입수가능하며, 최신 버전은 http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip 으로부터 입수가능하며, 그것들 양쪽 모두는 이에 그 전체가 본원에 언급된 것처럼 참조로 통합된다. 대안으로, 비디오 인코더 (20) 와 비디오 디코더 (30) 는, 다르게는 MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 이라고 지칭되는 ITU-T H.264 표준과 같은 다른 독점 또는 산업 표준들, 또는 이러한 표준들의 확장물들에 따라 동작할 수도 있다. 본 개시물의 기법들은, 그러나, 임의의 특정 코딩 표준으로 제한되지 않는다. 비디오 코딩 표준들의 다른 예들은 MPEG-2와 ITU-T H.263을 포함한다.
ITU-T H.264/MPEG-4 (AVC) 표준은 ISO/IEC 동화상 전문가 그룹 (MPEG) 과 함께 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 조인트 비디오 팀 (JVT) 으로서 알려진 공동 파트너십의 산물로서 공식화되었다. 일부 양태들에서, 본 개시물에서 설명되는 기법들은 H.264 표준을 일반적으로 준수하는 디바이스들에 적용될 수도 있다. H.264 표준은, H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양으로서 본원에서 지칭될 수도 있는, 2005년 3월자, ITU-T 스터디 그룹에 의한 일반 시청각 서비스들을 위한 ITU-T 권고 H.264, 고급 비디오 코딩에서 설명된다. 조인트 비디오 팀 (JVT) 은 H.264/MPEG-4 AVC로의 확장들에 애쓰고 있다.
JCT-VC는 HEVC 표준의 개발에 노력하고 있다. HEVC 표준화 노력들은 HEVC 테스트 모델 (HM) 이라고 지칭되는 비디오 코딩 디바이스의 진화 모델에 기초하고 있다. HM은 비디오 코딩 디바이스들의 몇몇 부가적인 능력들이 예컨대, ITU-T H.264/AVC에 따른 현존하는 디바이스들을 뛰어 넘는다고 추정한다. 예를 들어, H.264가 9 개의 인트라 예측 인코딩 모드들을 제공하는 반면, HM은 33 개 정도의 인트라 예측 인코딩 모드들을 제공할 수도 있다.
HEVC 표준은 비디오 데이터의 블록을 코딩 유닛 (coding unit; CU) 이라고 지칭한다. 일반적으로, CU가 사이즈 차이 (size distinction) 를 가지지 않는다는 점을 제외하면, CU는 H.264에 따라 코딩된 매크로블록에 유사한 목적을 가진다. 따라서, CU는 서브 CU들로 분할될 수도 있다. 일반적으로, 본 개시물에서의 CU에 대한 언급들은 한 화상의 최대 코딩 유닛 (largest coding unit; LCU) 또는 LCU의 서브 CU를 지칭할 수도 있다. 예를 들어, 비트스트림 내의 신택스 데이터는 화소들의 수의 측면에서 가장 큰 코딩 유닛인 LCU를 정의할 수도 있다. LCU는 서브 CU들로 분할될 수도 있고, 각각의 서브 CU는 서브 CU들로 분할될 수도 있다. 비트스트림에 대한 신택스 데이터는 최대 CU 깊이라고 지칭되는, LCU가 분할될 수도 있는 최대 횟수를 정의할 수도 있다. 따라서, 비트스트림은 또한 최소 코딩 유닛 (smallest coding unit; SCU) 을 정의할 수도 있다.
LCU는 계층적 쿼드트리 (quadtree) 데이터 구조와 연관될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하며, 여기서 루트 노드가 LCU에 대응한다. CU가 4 개의 서브 CU들로 분할되면, 그 CU에 대응하는 노드는 4 개의 리프 (leaf) 노드들을 포함하며, 그 리프 노드들 각각은 서브 CU들 중 하나에 대응한다. 쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU에 대한 신택스 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서의 노드는 그 노드에 대응하는 CU가 서브 CU들로 분할되는지 여부를 표시하는 분할 플래그를 포함할 수도 있다. CU에 대한 신택스 엘리먼트들은 재귀적으로 정의될 수도 있고, CU가 서브 CU들로 분할되는지 여부에 의존할 수도 있다.
분할되지 않은 CU는 하나 이상의 예측 유닛들 (PUs) 을 포함할 수도 있다. 일반적으로, PU는 대응하는 CU의 전부 또는 일 부분을 나타내고, PU에 대한 참조 샘플을 취출하기 위한 데이터를 포함한다. 예를 들어, PU가 인트라 모드 인코딩되는 경우, PU는 PU에 대한 인트라 예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU가 인터 모드 인코딩되는 경우, PU는 PU에 대한 움직임 벡터를 정의하는 데이터를 포함할 수도 있다. 움직임 벡터를 정의하는 데이터는, 예를 들어, 움직임 벡터의 수평 성분, 움직임 벡터의 수직 성분, 움직임 벡터에 대한 분해능 (예컨대, 1/4 화소 정밀도 또는 1/8 화소 정밀도), 움직임 벡터가 가리키는 참조 화상, 및/또는 움직임 벡터에 대한 참조 목록 (예컨대, 목록 0 또는 목록 1) 을 설명할 수도 있다. PU(들)를 정의하는 CU에 대한 데이터는 또한, 예를 들어, 하나 이상의 PU들로의 CU의 파티셔닝을 설명할 수도 있다. 파티셔닝 모드들은 CU가 코딩되지 않는지, 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지 여부 사이에서 상이할 수도 있다.
하나 이상의 PU들을 갖는 CU는 또한 하나 이상의 변환 유닛들 (TUs) 을 포함할 수도 있다. PU를 이용한 예측에 뒤이어, 비디오 인코더는 PU에 대응하는 CU의 부분에 대한 잔차 (residual) 값을 계산할 수도 있다. 잔차 값은 변환, 양자화, 및 스캔될 수도 있다. TU는 PU의 사이즈로 반드시 제한되지는 않는다. 따라서, TU들은 동일한 CU에 대한 대응하는 PU들보다 더 크거나 더 작을 수도 있다. 일부 예들에서, TU의 최대 사이즈는 대응하는 CU의 사이즈일 수도 있다. 본 개시물은 또한 CU, PU, 또는 TU 중 임의의 것을 지칭하기 위해 용어 "블록"을 이용한다.
비디오 인코더 (20) 는 비디오 코딩 프로세스에서 변환 계수들의 인코딩을 개선하기 위해 본 개시물의 기법들 중 임의의 것 또는 모두를 구현할 수도 있다. 비슷하게, 비디오 디코더 (30) 는 비디오 코딩 프로세스에서 변환 계수들의 디코딩을 개선하기 위해 이들 기법들 중 임의의 것 또는 모두를 구현할 수도 있다. 비디오 코더는, 본 개시물에서 설명된 바와 같이, 비디오 인코더 또는 비디오 디코더를 말할 수도 있다. 마찬가지로, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 말할 수도 있다. 비슷하게, 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 말할 수도 있다.
본 개시물의 양태들에 따르면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 블록 (예컨대, TU) 의 변환 계수들을 복수의 서브 블록들에서 프로세싱할 수도 있다. 서브 블록들은 동일하거나 또는 다른 사이즈로 될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔할 수도 있고 서브 블록들 자체들을 서브 블록 스캔 순서로 스캔할 수도 있다. 다시 말하면, 서브 블록 스캔 순서는 제 1 서브 블록에서의 계수들이 첫 번째로 스캔되며, 제 2 서브 블록에서의 계수들이 두 번째로 스캐되며, 제 3 서브 블록에서의 계수들이 세 번째로 스캔되는 등등을 특정할 수도 있다. 계수 스캔 순서는 그 다음에 각각의 서브 블록 내의 계수들이 스캔되는 순서를 특정할 수도 있다. 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 계수 스캔 순서 및 서브 블록 스캔 순서에 대해 동일한 배향 (예컨대, 스캔 패턴, 방향, 또는 순서) 을 사용할 수도 있다. 다시 말하면, 본 개시물의 양태들에 따르면, 서브 블록 스캔 순서의 배향은 계수 스캔 순서의 그것과 일치할 수도 있다. 다른 예들에서, 서브 블록 스캔 순서는 (예컨대, 서브 블록 스캔 순서 및 계수 스캔 순서가 적응적으로 결정되는 예들에서) 계수 스캔 순서와는 상이할 수도 있다.
예를 들어, 변환 계수들의 블록을 서브 블록들로 분할한 (또는 변환 계수들의 서브 블록들을 수신한) 후, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 서브 블록들의 변환 계수들을 계수 스캐닝 순서로 스캔할 뿐만 아니라 서브 블록들 자체들을 서브 블록 스캐닝 순서로 스캔할 수도 있다. 다시 말하면, 예를 들어, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 서브 블록들의 변환 계수들 각각을 계수 스캔 순서로 대각선으로 스캔할 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 또한 서브 블록들을 가로질러 서브 블록 스캔 순서로 대각선으로 스캔할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 그 스캔들을 역으로 수행할 수도 있다. 덧붙여서, 일부 양태들에 따르면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 서브 블록들을 순차적으로 스캔하고 코딩할 수도 있다. 다시 말하면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 서브 블록 스캔 순서에서 다음 서브 블록으로 이동하기 전에 현재 서브 블록의 변환 계수들 (예컨대, 유의성, 부호, 레벨 등을 포함) 을 계수 스캔 순서로 스캔하고 코딩할 수도 있다.
일부 양태들에 따르면, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 적응 서브 블록 스캐닝 순서를 수행할 수도 있다. 하나의 예에서, 서브 블록 적응 스캐닝 순서는 비교적 큰 블록 사이즈들 (예컨대 32x32 또는 16x16 블록 사이즈들) 에 대해, 위에서 설명된 바와 같이, 강한 수평 및 수직 스캐닝 순서들 대신 사용될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 블록에 대한 서브 블록 스캔 순서 및 계수 스캔 순서를, 블록 사이즈, 블록의 예측 모드 (예컨대, 인트라/인터 예측 모드), 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스) 에 기초하여, 및/또는 인코더에서의 풀 레이트-왜곡 결정 및 디코더에서의 인코딩된 비트스트림으로부터의 신택스로부터 적응적으로 결정할 수도 있다.
비록 도 1에 도시되진 않았지만, 일부 양태들에서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 각각이 오디오 인코더 및 디코더와 통합될 수도 있고, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함하여, 공통 데이터 스트림 또는 개별 데이터 스트림들에서의 오디오 및 비디오 양쪽 모두의 인코딩을 핸들링할 수도 있다. 적용가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들을 준수할 수도 있다.
비디오 인코더 (20) 와 비디오 디코더 (30) 각각은 다양한 적합한 인코더 회로, 이를테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그램가능 게이트 어레이들 (FPGAs), 개별 로직, 소프트웨어, 하드웨어, 펌웨어 또는 그것들의 임의의 조합 중 임의의 것으로서 구현될 수도 있다. 그 기법들이 소프트웨어에서 부분적으로 구현되는 경우, 디바이스는 본 개시물의 기법들을 수행하기 위해, 적합한 비일시적 컴퓨터 판독가능 매체 내에 소프트웨어에 대한 명령들을 저장하고 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들 내에 구비될 수도 있고, 그것들 중 어느 하나는 결합형 인코더/디코더 (CODEC) 의 부분으로서 개별 디바이스 내에 통합될 수도 있다.
도 2는 본 개시물에서 설명되는 바와 같이 변환 계수들을 코딩하는 기법들을 사용할 수도 있는 비디오 인코더 (20) 의 일 예를 도시하는 블록도이다. 비디오 인코더 (20) 의 소정의 양태들이 예시를 목적으로 제안된 HEVC 코딩에 관해 도 2에서 설명될 수도 있지만, 본 개시물의 기법들은 변환 계수들의 스캐닝을 필요로 할 수도 있는 다른 코딩 표준들 또는 방법들에 관한 제한 없이 수행될 수도 있다는 것이 이해되어야 한다.
도 2의 예에서, 비디오 인코더 (20) 는 움직임 보상 유닛 (44), 움직임 추정 유닛 (42), 인트라 예측 유닛 (46), 참조 화상 버퍼 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 구비한다. 도 2에 예시된 변환 프로세싱 유닛 (52) 은 잔차 데이터의 블록에 실제 변환을 적용하는 유닛이고, CU의 변환 유닛 (TU) 이라고 지칭될 수도 있는 변환 계수들의 블록과 혼동되지 않아야 한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한 역 양자화 유닛 (58), 역 변환 프로세싱 유닛 (60), 및 합산기 (62) 를 구비한다. 디블록킹 (deblocking) 필터 (도 2에는 미도시) 가 또한 블록 경계들을 필터링하여 복원된 비디오로부터 블록키니스 (blockiness) 아티팩트들을 제거하기 위해 포함될 수도 있다. 원한다면, 디블록킹 필터는 통상 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 화상 또는 슬라이스를 수신한다. 그 화상 또는 슬라이스는 다수의 비디오 블록들, 예컨대, 최대 코딩 유닛들 (LCUs) 로 나누어질 수도 있다. 움직임 추정 유닛 (42) 과 움직임 보상 유닛 (44) 은 시간적 압축을 제공하기 위해 하나 이상의 참조 화상들에서 하나 이상의 블록들에 관하여 수신된 비디오 블록의 인터 예측 코딩을 수행한다. 인트라 예측 유닛 (46) 은 공간적 압축을 제공하기 위해 코딩될 블록과 동일한 화상 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 관하여, 수신된 비디오 블록의 인트라 예측 코딩을 수행할 수도 있다.
모드 선택 유닛 (40) 은 코딩 모드들인 인트라 또는 인터 중의 하나를, 예컨대 각 모드에 대한 레이트 왜곡 분석에 기초하여 선택하고, 결과적인 인트라 또는 인터 코딩된 블록을, 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 참조 화상에서 사용하기 위한 인코딩된 블록을 복원할 수도 있다. 일부 비디오 화상들은 I-프레임들로서 지정될 수도 있으며, 여기서 I-프레임에서의 모든 블록들은 인트라 예측 모드에서 인코딩된다. 일부 경우들에서, 인트라 예측 유닛 (46) 은, 예컨대, 움직임 추정 유닛 (42) 에 의해 수행된 움직임 검색이 결과적으로 블록의 충분한 예측이 되지 않는 경우에 P- 또는 B-프레임에서 블록의 인트라 예측 인코딩을 수행할 수도 있다.
움직임 추정 유닛 (42) 과 움직임 보상 유닛 (44) 은 고도로 통합될 수도 있지만 개념상의 목적들을 위해 별개로 예시된다. 움직임 추정은 비디오 블록들에 대한 움직임을 추정하는, 움직임 벡터들을 생성하는 프로세스이다. 움직임 벡터는, 예를 들어, 참조 화상의 참조 샘플에 대한 현재 화상 내의 예측 유닛의 변위 (displacement) 를 표시할 수도 있다. 참조 샘플은 SAD (sum of absolute difference), SSD (sum of square difference), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 화소 차이의 측면에서 코딩된 PU를 포함하는 CU의 부분에 긴밀하게 매칭된다고 생각되는 블록일 수도 있다. 움직임 보상 유닛 (44) 에 의해 수행되는 움직임 보상은 움직임 추정에 의해 결정된 움직임 벡터에 기초하여 예측 유닛에 대한 값들을 페칭하는 것 또는 생성하는 것을 수반할 수도 있다. 다시, 움직임 추정 유닛 (42) 과 움직임 보상 유닛 (44) 은 일부 예들에서 기능적으로 통합될 수도 있다.
움직임 추정 유닛 (42) 은 예측 유닛과 참조 화상 버퍼 (64) 에 저장된 참조 화상의 참조 샘플들을 비교함으로써 인터 코딩된 화상의 예측 유닛에 대한 움직임 벡터를 계산한다. 일부 예들에서, 비디오 인코더 (20) 는 참조 화상 버퍼 (64) 에 저장된 참조 화상들의 서브 정수 (sub-integer) 화소 포지션들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 화상의 1/4 화소 포지션들, 1/8 화소 포지션들, 또는 다른 분수 화소 포지션들의 값들을 계산할 수도 있다. 그러므로, 움직임 추정 유닛 (42) 은 풀 (full) 화소 포지션들 및 분수 화소 포지션들에 대한 움직임 검색을 수행하고 분수 화소 정밀도를 갖는 움직임 벡터를 출력할 수도 있다. 움직임 추정 유닛 (42) 은 계산된 움직임 벡터를 엔트로피 인코딩 유닛 (56) 및 움직임 보상 유닛 (44) 에 전송한다. 움직임 벡터에 의해 식별된 참조 화상의 부분은 참조 샘플이라고 지칭될 수도 있다. 참조 샘플은 코딩될 현재 블록에 대한 예측 화소 값들을 형성하는데 사용하기 위한 화소 값들을 정의할 수도 있다. 움직임 보상 유닛 (44) 은, 예컨대, PU에 대한 움직임 벡터에 의해 식별된 참조 샘플을 취출함으로써 현재 CU의 예측 유닛에 대한 예측 값을 계산할 수도 있다.
인트라 예측 유닛 (46) 은 움직임 추정 유닛 (42) 및 움직임 보상 유닛 (44) 에 의해 수행된 인터 예측에 대한 대안으로서, 수신된 블록을 인트라 예측 인코딩할 수도 있다. 인트라 예측 유닛 (46) 은 블록에 대한 좌우, 상하 인코딩 순서를 가정하여, 이웃하는 이전에 코딩된 블록들, 예컨대, 현재 블록의 상측의, 상측 및 우측의, 상측 및 좌측의, 또는 좌측의 블록들에 대하여 수신된 블록을 인코딩할 수도 있다. 인트라 예측 유닛 (46) 은 다양한 상이한 인트라 예측 모드들로 구성될 수도 있다. 예를 들어, 인트라 예측 유닛 (46) 은 인코딩되고 있는 CU의 사이즈에 기초하여 소정 수의 방향성 예측 모드들, 예컨대, 33 개의 방향성 예측 모드들로 구성될 수도 있다.
인트라 예측 유닛 (46) 은, 예를 들어, 다양한 인트라 예측 모드들에 대한 에러 값들을 계산하고 최저 에러 값을 산출하는 모드를 선택함으로써 인트라 예측 모드를 선택할 수도 있다. 방향성 예측 모드들은 공간적으로 이웃하는 화소들의 값들을 조합하고 조합된 값들을 PU에서의 하나 이상의 화소 포지션들에 적용하는 기능들을 포함할 수도 있다. 일단 PU에서의 모든 화소 포지션들에 대한 값들이 계산되었다면, 인트라 예측 유닛 (46) 은 PU 와 인코딩될 수신된 블록 사이의 화소 차이들에 기초하여 예측 모드에 대한 에러 값을 계산할 수도 있다. 인트라 예측 유닛 (46) 은 허용가능 에러 값을 산출하는 인트라 예측 모드가 발견되기까지 인트라 예측 모드들을 테스트하는 것을 계속할 수도 있다. 인트라 예측 유닛 (46) 은 그 다음에 PU를 합산기 (50) 에 전송할 수도 있다.
비디오 인코더 (20) 는 코딩되고 있는 원본 비디오 블록으로부터 움직임 보상 유닛 (44) 또는 인트라 예측 유닛 (46) 에 의해 계산된 예측 데이터를 감산함으로써 잔차 블록을 형성한다. 합산기 (50) 는 이 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 잔차 블록은 화소 차이 값들의 2차원 매트릭스에 대응할 수도 있으며, 여기서 잔차 블록에서의 값들의 수는 그 잔차 블록에 대응하는 PU에서의 화소들의 수와 동일하다. 잔차 블록에서의 값들은 PU에서 그리고 코딩할 원본 블록에서 공동 배치된 (co-located) 화소들의 값들 사이의 차이들, 즉 에러에 대응할 수도 있다. 그 차이들은 코딩되는 블록의 유형에 의존하여 크로마 또는 루마 차이들일 수도 있다.
변환 프로세싱 유닛 (52) 은 하나 이상의 변환 유닛들 (TUs) 을 잔차 블록으로부터 형성할 수도 있다. 변환 프로세싱 유닛 (52) 은 변환, 이를테면 이산 코사인 변환 (DCT), 방향성 변환, 또는 개념적으로 유사한 변환을 TU에 적용하여, 변환 계수들을 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은 결과적인 변환 계수들을 양자화 유닛 (54) 에 전송할 수도 있다. 변환 스킵 모드와 같은 소정의 비디오 코딩 모드들에서, 변환 프로세싱 유닛 (52) 은, 변환을 수행하는 일 없이, 잔차 블록을 양자화 유닛 (54) 에 직접 전송할 수도 있다. 이러한 경우들에서, 잔차 값들은, 그 잔차 값들에 실제로 적용되는 변환이 없음에도 불구하고, 본원에서는 여전히 "변환 계수들"이라고 지칭될 수도 있다.
양자화 유닛 (54) 은 그 다음에 변환 계수들을 양자화할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 그 다음에 특정된 스캔 순서에 따라 매트릭스에서 양자화된 변환 계수들의 스캔을 수행할 수도 있다. 본 개시물은 엔트로피 인코딩 유닛 (56) 을 스캔을 수행하는 것으로서 설명한다. 그러나, 다른 예들에서, 다른 프로세싱 유닛들, 이를테면 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 또는 비디오 인코더 (20) 의 다른 유닛이 스캔을 수행할 수도 있다는 것이 이해되어야 한다.
본 개시물의 양태들에 따르면, 엔트로피 인코딩 유닛 (56) 은 복수의 서브 블록들을 사용하여 2D TU의 변환 계수들을 스캔할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔할 수도 있고 서브 블록들 자체들을 서브 블록 스캔 순서로 스캔할 수도 있다. 본 개시물의 양태들에 따르면, 엔트로피 인코딩 유닛 (56) 은 계수 스캔 순서 및 서브 블록 스캔 순서에 대해 동일한 배향 (예컨대, 스캔 패턴, 방향, 또는 순서) 을 사용할 수도 있다. 다시 말하면, 본 개시물의 양태들에 따르면, 서브 블록 스캔 순서의 배향은 계수 스캔 순서의 그것과 일치할 수도 있다. 다른 예들에서, 서브 블록 스캔 순서는 (예컨대, 서브 블록 스캔 순서 및 계수 스캔 순서가 적응적으로 결정되는 예들에서) 계수 스캔 순서와는 상이할 수도 있다.
예를 들어, 엔트로피 인코딩 유닛 (56) 은 변환 계수들의 TU를 생성할 수도 있다. TU를 스캔하여 TU를 직렬화하기 전에, 엔트로피 인코딩 유닛 (56) 은 TU를 복수의 서브 블록들로 분할할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 그 다음에 서브 블록들의 변환 계수들을 계수 스캐닝 순서로 스캔할 뿐만 아니라 서브 블록들 자체들을 서브 블록 스캐닝 순서로 스캔할 수도 있다. 다시 말하면, 예시를 목적으로 하는 일 예에서, 엔트로피 인코딩 유닛 (56) 은 서브 블록들의 변환 계수들 각각을 계수 스캔 순서로 대각선으로 스캔할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한 서브 블록들을 가로질러 서브 블록 스캔 순서로 대각선으로 스캔 (서브 블록들 자체들을 스캔) 할 수도 있다. 일부 예들에서, 엔트로피 인코딩 유닛 (56) 은 스캔들을 역으로 수행할 수도 있다. 덧붙여서, 일부 양태들에 따르면, 엔트로피 인코딩 유닛 (56) 은 서브 블록들을 순차적으로 스캔하고 코딩할 수도 있다. 다시 말하면, 엔트로피 인코딩 유닛 (56) 은 서브 블록 스캔 순서에서 다음 서브 블록으로 이동하기 전에 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 계수 스캔 순서로 스캔하고 코딩할 수도 있다. 다른 예들에서, 엔트로피 인코딩 유닛 (56) 은 다음의 빈을 코딩하기 전에 (모든 서브 블록들을 포함한) 전체 TU에 대해 특정 빈을 코딩할 수도 있다.
일부 양태들에 따르면, 엔트로피 인코딩 유닛 (56) 은 적응 서브 블록 스캐닝 순서를 수행할 수도 있다. 하나의 예에서, 서브 블록 적응 스캐닝 순서는 비교적 큰 블록 사이즈들 (예컨대 32x32 또는 16x16 블록 사이즈들) 에 대해, 위에서 설명된 바와 같이, 강한 수평 및 수직 스캐닝 순서들 대신 사용될 수도 있다. 엔트로피 인코딩 유닛 (56) 은 블록에 대한 서브 블록 스캔 순서 및 계수 스캔 순서를, 블록 사이즈, 블록의 예측 모드 (예컨대, 인트라/인터 예측 모드), 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스) 에 기초하여, 및/또는 인코더에서의 풀 레이트-왜곡 결정 및 디코더에서의 인코딩된 비트스트림으로부터의 신택스로부터 적응적으로 결정할 수도 있다.
일단 변환 계수들이 스캔되면 (또는 스캔 동안), 엔트로피 인코딩 유닛 (56) 은 CAVLC, PIPE, 또는 CABAC와 같은 엔트로피 코딩을 계수들에 적용할 수도 있다. 덧붙여서, 엔트로피 인코딩 유닛 (56) 은 움직임 벡터 (MV) 정보 및 비디오 디코더 (30) 에서의 비디오 데이터의 디코딩에 유용한 다양한 다른 신택스 엘리먼트들 중 임의의 것을 인코딩할 수도 있다. 신택스 엘리먼트들은 특정 계수들이 유의한 (예컨대, 0이 아닌) 지 여부를 나타내는 유의 계수 플래그들 및 특정 계수가 마지막 유의 계수인지 여부를 나타내는 마지막 유의 계수 플래그 (일부 예들에서, 마지막 유의 계수 포지션은 코딩되지 않을 수도 있다) 를 갖는 유의성 맵을 포함할 수도 있다. 비디오 디코더 (30) 는 이들 신택스 엘리먼트들을 사용하여 인코딩된 비디오 데이터를 복원할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩에 뒤이어, 결과적인 인코딩된 비디오는 다른 디바이스, 이를테면 비디오 디코더 (30) 로 송신되거나, 또는 나중의 송신 또는 취출을 위해 보관될 수도 있다.
일부 예들에서, 변환 계수들의 블록을 서브 블록들로 분할하는 것은 (예컨대, 콘텍스트 정보를 사용하여 엔트로피 코딩하는 경우) 서브 블록들 내에 콘텍스트 의존성을 생성할 수도 있다. 예를 들어, 서브 블록들 내에서 대각선 스캔을 사용하여 스캔하는 경우, 서브 블록 내의 좌측상단 계수에 대한 특정 빈 (이를테면 유의성 맵 빈들) 에 대한 콘텍스트는 프로세싱되고 있는 이전 계수 (예컨대, 현재 변환 계수 하측에 위치된 변환 계수) 에 의존할 수도 있다. 콘텍스트 의존성은 엔트로피 코딩하는 경우에 원치않는 지연을 부과할 수도 있다. 이 의존성을 피하고 이에 따라 병렬화를 향상시키기 위해, 엔트로피 인코딩 유닛 (56) 은 콘텍스트 지원 이웃을 수정할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 2 개의 연속적인 계수들의 콘텍스트 의존성을 제거하는 콘텍스트 지원 이웃을 결정하여, 엔트로피 인코딩 유닛 (56) 이 2 개의 빈들을 병렬로 인코딩하는 것을 허용할 수도 있다. 다시 말하면, 본 개시물의 양태들에 따르면, 콘텍스트를 도출하는데 보통 사용될 포지션들의 세트 (즉, 콘텍스트 지원 이웃) 로부터의 하나 이상의 포지션들이 제거될 수도 있으며, 이에 의해 감소된 콘텍스트 세트를 확립한다. 일부 예들에서, 엔트로피 인코딩 유닛 (56) 은 2 개부터 3 개, 4 개 또는 그 이상의 연속적인 계수들로 의존성 제거를 증가시킬 수도 있다. 그러한 경우들에서, 각각의 포지션에서의 콘텍스트 지원 이웃은 특정 스캔 순서를 감안하여 이웃에서 콘텍스트 의존성들을 제거하기 위해 수정될 수도 있다.
역 양자화 유닛 (58) 및 역 변환 프로세싱 유닛 (60) 은 역 양자화 및 역 변환을 각각 적용하여, 화소 도메인에서 잔차 블록을, 예컨대, 나중에 참조 블록으로서 사용하기 위해 복원한다. 움직임 보상 유닛 (44) 은 잔차 블록을 참조 화상 버퍼 (64) 의 화상들 중 하나의 화상의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 움직임 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 복원된 잔차 블록에 적용하여 움직임 추정에서 사용하기 위한 서브 정수 화소 값들을 계산할 수도 있다. 합산기 (62) 는 복원된 잔차 블록을 움직임 보상 유닛 (44) 에 의해 생성된 움직임 보상된 예측 블록에 가산하여, 참조 화상 버퍼 (64) 에 저장하기 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 움직임 추정 유닛 (42) 및 움직임 보상 유닛 (44) 에 의해 후속 비디오 화상에서의 블록을 인터 코딩하기 위한 참조 블록으로서 사용될 수도 있다.
도 3은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 도시하는 블록도이다. 도 3의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 움직임 보상 유닛 (72), 인트라 예측 유닛 (74), 역 양자화 유닛 (76), 역 변환 프로세싱 유닛 (78), 참조 화상 버퍼 (82) 및 합산기 (80) 를 구비한다.
엔트로피 디코딩 유닛 (70) 은 인코딩된 비디오를 도 2의 엔트로피 인코딩 유닛 (56) 에 의해 사용된 것의 역일 수도 있는 프로세스로 엔트로피 디코딩한다. 움직임 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 움직임 벡터들에 기초하여 예측 데이터를 생성할 수도 있다. 인트라 예측 유닛 (74) 은 현재 화상의 현재 블록에 대한 예측 데이터를 현재 화상의 이전에 디코딩된 블록들로부터의 데이터 및 시그널링된 인트라 예측 모드에 기초하여 생성할 수도 있다.
일부 예들에서, 엔트로피 디코딩 유닛 (70) (또는 역 양자화 유닛 (76)) 은 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) (또는 양자화 유닛 (54)) 에 의해 사용된 스캔 순서에 일치하는 스캔을 사용하여, 수신된 값들을 스캔할 수도 있다. 비록 계수들의 스캐닝이 역 양자화 유닛 (76) 에서 수행될 수도 있지만, 스캐닝은 예시를 목적으로 엔트로피 디코딩 유닛 (70) 에 의해 수행되고 있는 것으로서 설명될 것이다. 덧붙여서, 비록 예시의 편의를 위해 별개의 기능성 유닛들로서 도시되지만, 엔트로피 디코딩 유닛 (70), 역 양자화 유닛 (76), 및 비디오 디코더 (30) 의 다른 유닛들의 구조 및 기능성은 서로 고도로 통합될 수도 있다.
비디오 디코더 (30) 는 인코딩된 비트스트림으로부터, 비디오 인코더 (20) 에 의해 사용된 스캔 순서를 식별하는 시그널링을 수신할 수도 있다. 부가적으로, 또는 대안으로, 스캔 순서는 코딩된 비디오의 특성들, 이를테면 예측 모드, 블록 사이즈, 변환, 또는 다른 특성들에 기초하여 비디오 디코더 (30) 에 의해 유추될 수도 있다. 다른 예로서, 비디오 인코더 (20) 와 비디오 디코더 (30) 는 모든 사용 사례들에 대해 미리 결정된 스캔 순서들 및 콘텍스트들을 사용할 수도 있고, 이로써, 인코딩된 비트스트림에서의 시그널링은 필요하지 않을 것이다.
본 개시물의 기법들에 따라, 비디오 디코더 (30) 에 의해 결정된 스캔 순서는 1D 벡터로부터의 변환 계수들이 복수의 서브 블록들로 분할된 2D 블록으로 스캔되는 방법을 정의하는 서브 블록 스캔 순서 및 계수 스캔 순서를 포함할 수도 있다. 디코더는 2D 블록의 사이즈에 기초하여 변환 계수들의 블록에 대한 서브 블록들의 수 및/또는 사이즈를 유추할 수도 있다. 다른 예들에서, 서브 블록들의 수 및/또는 사이즈는 인코딩된 비디오 비트스트림에서 나타내어질 수도 있다.
결정된 스캔 순서가 어떻든간에, 엔트로피 디코딩 유닛 (70) 은 1D 벡터를 2D 어레이로 스캔하기 위해 인코더에 의해 사용된 스캔 순서의 역을 사용한다. 본 개시물의 기법들에 따라, 엔트로피 디코딩 유닛 (70) 은 1D 벡터의 섹션들로부터의 변환 계수들을 2D 블록의 복수의 서브 블록들로 스캔하는 스캐닝 프로세스를 수행할 수도 있다. 이 프로세스는 도 2를 참조를 위에서 설명된 프로세스의 역일 수도 있다.
예를 들어, 본 개시물의 양태들에 따르면, 엔트로피 디코딩 유닛 (70) 은 복수의 서브 블록들에서 TU를 디코딩하고 역 스캔할 수도 있다. 다시 말하면, 엔트로피 디코딩 유닛 (70) 은 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔할 수도 있고 서브 블록들 자체들을 서브 블록 스캔 순서로 스캔할 수도 있다. 본 개시물의 양태들에 따르면, 엔트로피 디코딩 유닛 (70) 은 계수 스캔 순서 및 서브 블록 스캔 순서에 대해 동일한 배향 (예컨대, 스캔 패턴, 방향, 또는 순서) 을 사용할 수도 있다. 다시 말하면, 본 개시물의 양태들에 따르면, 서브 블록 스캔 순서의 배향은 계수 스캔 순서의 그것과 일치할 수도 있다. 다른 예들에서, 서브 블록 스캔 순서는 (예컨대, 서브 블록 스캔 순서 및 계수 스캔 순서가 적응적으로 결정되는 예들에서) 계수 스캔 순서와는 상이할 수도 있다.
예를 들어, 엔트로피 디코딩 유닛 (70) 은 TU와 연관된 변환 계수들의 직렬화된 어레이를 수신할 수도 있다. 엔트로피 디코딩 유닛 (70) 은 2D TU를 복원하기 위해 서브 블록들에서 변환 계수들을 스캔할 수도 있다. 다시 말하면, 엔트로피 디코딩 유닛 (70) 은 계수 스캐닝 순서로 변환 계수들을 스캔할 수도 있을 뿐만 아니라 서브 블록들 자체들을 서브 블록 스캐닝 순서로 스캔할 수도 있다. 예시를 목적으로 하는 일 예에서, 엔트로피 디코딩 유닛 (70) 은 2D 서브 블록을 복원하기 위해 수신된 변환 계수들 각각을 계수 스캔 순서로 대각선으로 스캔할 수도 있다.
엔트로피 디코딩 유닛 (70) 은 또한 TU를 복원하기 위해 복원된 서브 블록들을 (서브 블록들이 생성된 바와 같이) 서브 블록 스캔 순서로 대각선으로 스캔할 수도 있다. 일부 예들에서, 엔트로피 디코딩 유닛 (70) 은 스캔들을 역으로 수행할 수도 있다. 덧붙여서, 일부 양태들에 따르면, 엔트로피 디코딩 유닛 (70) 은 서브 블록들을 순차적으로 스캔하고 코딩할 수도 있다. 다시 말하면, 엔트로피 디코딩 유닛 (70) 은 서브 블록 스캔 순서에서 다음 서브 블록으로 이동하기 전에 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 계수 스캔 순서로 스캔하고 디코딩할 수도 있다. 다른 예들에서, 엔트로피 디코딩 유닛 (70) 은 다음 빈을 디코딩하기 전에 (모든 서브 블록들을 포함한) 전체 TU에 대해 특정 빈을 디코딩할 수도 있다.
일부 양태들에 따르면, 엔트로피 디코딩 유닛 (70) 은 적응 서브 블록 스캐닝 순서를 수행할 수도 있다. 하나의 예에서, 서브 블록 적응 스캐닝 순서는 비교적 큰 블록 사이즈들 (예컨대 32x32 또는 16x16 블록 사이즈들) 에 대해, 위에서 설명된 바와 같이, 강한 수평 및 수직 스캐닝 순서들 대신 사용될 수도 있다. 엔트로피 디코딩 유닛 (70) 은 블록에 대한 서브 블록 스캔 순서 및 계수 스캔 순서를, 블록 사이즈, 블록의 예측 모드 (예컨대, 인트라/인터 예측 모드), 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스) 에 기초하여, 및/또는 인코더에서의 풀 레이트-왜곡 결정 및 디코더에서의 인코딩된 비트스트림으로부터의 신택스로부터 적응적으로 결정할 수도 있다.
일부 예들에서, 변환 계수들의 블록을 서브 블록들로 분할하는 것은 (예컨대, 콘텍스트 정보를 사용하여 엔트로피 코딩하는 경우) 서브 블록들 내에 콘텍스트 의존성을 생성할 수도 있다. 예를 들어, 서브 블록들 내에서 대각선 스캔을 사용하여 스캔하는 경우, 서브 블록 내의 좌측상단 계수에 대한 콘텍스트는 프로세싱되고 있는 이전 계수 (예컨대, 현재 변환 계수 하측에 위치된 변환 계수) 에 의존할 수도 있다. 콘텍스트 의존성은 엔트로피 코딩하는 경우에 원치않는 지연을 부과할 수도 있다. 이 의존성을 피하고 이에 따라 병렬화를 향상시키기 위해, 엔트로피 디코딩 유닛 (70) 은 수정된 콘텍스트 지원 이웃을 사용할 수도 있다. 예를 들어, 엔트로피 디코딩 유닛 (70) 은 2 개의 연속적인 계수들의 콘텍스트 의존성을 제거하는 콘텍스트 지원 이웃을 사용하여, 엔트로피 디코딩 유닛 (70) 이 2 개의 빈들을 병렬로 디코딩하는 것을 허용할 수도 있다. 일부 예들에서, 엔트로피 디코딩 유닛 (70) 은 2 개부터 3 개, 4 개 또는 그 이상의 연속적인 계수들로 의존성 제거를 증가시킬 수도 있다. 그러한 경우들에서, 각각의 포지션에서의 콘텍스트 지원 이웃은 특정 스캔 순서를 감안하여 이웃에서 콘텍스트 의존성들을 제거하기 위해 수정될 수도 있다.
엔트로피 디코딩 유닛 (70) 에 의해 생성된 변환 계수들의 2D 어레이는 양자화될 수도 있고 변환 계수들의 1D 벡터를 생성하기 위해 비디오 인코더 (20) 의 엔트로피 인코딩 유닛 (56) 에 의해 스캔된 변환 계수들의 2D 어레이에 일반적으로 일치할 수도 있다. 역 양자화 유닛 (76) 은 비트스트림으로 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 변환 계수들을 역 양자화, 즉, 양자화해제 (de-quantize) 한다. 역 양자화 프로세스는, 예컨대, HEVC를 위해 제안되거나 H.264 디코딩 표준에 의해 정의된 프로세스들과 유사한 종래의 프로세스를 포함할 수도 있다. 역 양자화 프로세스는 또한 양자화의 정도, 및 마찬가지로 적용되어야 할 역 양자화의 정도를 결정하기 위해, CU에 대해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터 (QP) 의 사용을 포함할 수도 있다. 역 양자화 유닛 (76) 은 계수들이 1D 벡터로부터 2D 어레이로 컨버팅되기 전 또는 후 중 어느 하나에서 변환 계수들을 역 약자화할 수도 있다.
역 변환 유닛 (58) 은 역 변환, 예컨대, 역 DCT, 역 정수 변환, 역 KLT, 역 회전 변환, 역 방향성 변환, 또는 다른 역 변환을 적용한다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 비디오 인코더 (20) 로부터의 시그널링에 기초하여, 또는 블록 사이즈, 코딩 모드 등과 같은 하나 이상의 코딩 특성들로부터 변환을 유추함으로써 역 변환을 결정할 수도 있다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 현재 블록을 포함한 LCU에 대한 쿼드트리의 루트 노드에서의 시그널링된 변환에 기초하여 현재 블록에 적용하는 변환을 결정할 수도 있다. 일부 예들에서, 역 변환 프로세싱 유닛 (78) 은 캐스케이드식 (cascaded) 역 변환을 적용할 수도 있다. 수신된 계수들이 이른바 스킵 모드를 사용하여 코딩되었던 예들에서, 역 변환 유닛 (58) 은 변환을 적용하지 않을 수도 있다.
움직임 보상 유닛 (72) 은 어쩌면 보간 필터들에 기초한 보간을 수행하여, 움직임 보상된 블록들을 생성한다. 서브 화소 정밀도를 갖는 움직임 추정을 위해 사용될 보간 필터들에 대한 식별자들은 신택스 엘리먼트들에 포함될 수도 있다. 움직임 보상 유닛 (72) 은 비디오 블록의 인코딩 동안에 비디오 인코더 (20) 에 의해 사용된 것과 같은 보간 필터들을 사용하여 참조 블록의 서브 정수 화소들에 대한 보간된 값들을 계산할 수도 있다. 움직임 보상 유닛 (72) 은 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 수신된 신택스 정보에 따라 결정하고 그 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다.
움직임 보상 유닛 (72) 과 인트라 예측 유닛 (74) 은, HEVC 예에서, (예컨대, 쿼드트리에 의해 제공된) 신택스 정보의 일부를 사용하여, 인코딩된 비디오 시퀀스의 화상(들)을 인코딩하는데 사용된 LCU들의 사이즈들을 결정할 수도 있다. 움직임 보상 유닛 (72) 과 인트라 예측 유닛 (74) 은 또한 인코딩된 비디오 시퀀스의 화상의 각각의 CU가 분할되는 방법 (과 비슷하게, 서브 CU들이 분할되는 방법) 을 설명하는 분할 정보를 결정하기 위해 신택스 정보를 사용할 수도 있다. 그 신택스 정보는 또한 각각의 분할이 인코딩되는 방법을 나타내는 모드들 (예컨대, 인트라 예측 또는 인터 예측, 및 인트라 예측의 경우의 인트라 예측 인코딩 모드), 각각의 인터 인코딩된 PU에 대한 하나 이상의 참조 화상들 (및/또는 그 참조 화상들에 대한 식별자들을 포함하는 참조 목록들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 포함할 수도 있다.
합산기 (80) 는 잔차 블록들과 움직임 보상 유닛 (72) 또는 인트라 예측 유닛 (74) 에 의해 생성된 대응하는 예측 블록들을 조합하여 디코딩된 블록들을 형성한다. 예를 들어, 합산기 (80) 는 예측 화소 값 (예컨대, 루마 및/또는 크로마) 과 잔차 화소 차이 값을 조합하여 화소 값을 복원할 수도 있다. 원한다면, 디블록킹 필터가 또한 블록키니스 아티팩트들을 제거하기 위하여 디코딩된 블록들을 필터링하는데 적용될 수도 있다. 디코딩된 비디오 블록들은 그 다음에 참조 화상 버퍼 (82) 에 저장되며, 이 참조 화상 버퍼는 후속하는 움직임 보상을 위한 참조 블록들을 제공하고 또한 디스플레이 디바이스 (이를테면 도 1의 디스플레이 디바이스 (32)) 상의 프레젠테이션을 위한 디코딩된 비디오를 생성한다.
도 4는 유의성 맵의 코딩을 일반적으로 예시하는 개념도이다. 예를 들어, 위에서 지적했듯이, 비디오 인코더 (이를테면 비디오 인코더 (20)) 는 변환 블록 (예컨대, TU) 에서의 유의 계수들 (즉, 0이 아닌 변환 계수들) 의 포지션들을 그 계수들의 값들 (레벨들) 을 인코딩하기 전에 인코딩할 수도 있다. 유의성 맵을 코딩하는 프로세스는 유의성 맵 코딩이라고 지칭될 수도 있으며, 이는 비트-레이트의 비교적 큰 백분율을 필요로 한다. 비디오 디코더 (이를테면 비디오 디코더 (30)) 는 유의성 맵을 수신하고 유의 변환 계수들의 로케이션들을 결정할 수도 있다.
도 4의 예는 제 1 행에서 3 개의 유의 계수들, 제 2 행에서 4 개의 유의 계수들, 제 3 행에서 2 개의 유의 계수들을 가지고, 제 4 행에서 유의 계수들을 갖지 않는 양자화된 변환 계수들의 4x4 블록 (100) 을 도시한다. 유의성 맵 (102) 은 유의 변환 계수의 각각의 로케이션에서 (1) 그리고 값이 0인 변환 계수의 각각의 로케이션에서 (0) 을 포함한다. 대체로, 유의성 변환 계수들의 로케이션들을 결정한 후, 비디오 인코더 (20) 는 유의성 맵 (102) 을 직렬화하고 인코딩할 수도 있다. 비슷하게, 비디오 디코더 (30) 는 유의 계수들의 로케이션들을 복원하기 위해 직렬화된 유의성 맵 (102) 을 수신할 수도 있다.
유의성 맵을 코딩하기 위한 일 예의 프로세스는 D. Marpe, H. Schwarz, 및 T. Wiegand의 "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", IEEE Trans. Circuits and Systems for Video Technology, vol. 13, no. 7, 2003년 7월에 기재되어 있다. 이 프로세스에서, 다음과 같이 정의될 수도 있는, 코딩된 블록 플래그 (CBF) 에 의해 나타내어진 바와 같이, 블록 내에 적어도 하나 유의 계수가 있다면 유의성 맵은 코딩된다:
코딩된 블록 플래그: coded_block_flag 는 1-비트 심볼이며, 이는 변환 계수들의 단일 블록 내부에, 코딩된 블록 패턴이 0이 아닌 엔트리들을 나타내는 유의, 즉, 0이 아닌 계수들이 있는지를 나타낸다. coded_block_flag 가 0이면, 어떠한 추가 정보도 관련된 블록에 대해 송신되지 않는다.
블록 내에 유의 계수들이 있다면, 유의성 맵은 다음과 같이 블록에서 변환 계수들의 스캔 순서를 추종함으로써 인코딩된다:
변환 계수들의 스캐닝: coded_block_flag 가 0이 아닌 엔트리들을 나타내는 서브 블록들의 변환 계수 레벨들의 2차원 어레이들은 먼저 주어진 스캐닝 패턴을 사용하여 1차원 목록에 맵핑된다. 다르게 말하면, 유의 계수들을 갖는 서브 블록들은 스캐닝 패턴에 따라 스캔된다.
스캐닝 패턴이 주어지면, 유의성 맵은 다음과 같이 스캔될 수도 있다:
유의성 맵: coded_block_flag 가 블록이 유의 계수들을 가짐을 나타내면, 이진 값으로 된 유의성 맵이 인코딩된다. 스캐닝 순서에서의 각각의 변환 계수에 대해, 1-비트 심볼 significant_coeff_flag 가 송신된다. significant_coeff_flag 심볼이 1이면, 즉, 0이 아닌 계수가 이 스캐닝 포지션에 존재하면, 추가의 1-비트 심볼 last_significant_coeff_flag 가 전송된다. 이 심볼은 현재 유의 계수가 블록 내부의 마지막 것인지 또는 추가의 유의 계수들이 뒤따르는지를 나타낸다. 마지막 스캐닝 포지션에 도달되고 유의성 맵 인코딩이 아직 값 1을 갖는 last_significant_coeff_flag 에 의해 종료되지 않았다면, 마지막 계수는 유의한 것이어야 함이 분명하다.
다른 비디오 코딩 표준들은 유의성 정보를 코딩하기 위해 상이한 프로세스를 사용할 수도 있다. 예를 들어, 제안된 HEVC 표준은 위에서 설명된 것과 유사한 프로세스를 사용하지만, 마지막 유의 계수 플래그를 코딩하지 않는다. 대신, HEVC에 따라, 마지막 유의 계수는 식별될 수도 있고, 스캔은 마지막 유의 계수로부터 제 1 유의 계수까지 역 순으로 진행할 수도 있다.
본 개시물의 양태들에 따르면, 유의성 맵 (102) 은 더 큰 유의성 맵의 부분을 형성할 수도 있다. 다시 말하면, 예를 들어, 유의성 맵 (102) 은 유의성 플래그들의 더 큰 블록에 대한 유의성 플래그들의 서브 블록일 수도 있다. 이러한 예들에서, 본 개시물의 양태들에 따르면, 비디오 코더는 동일한 배향을 갖는 스캔을 사용하여 유의성 맵 (102) 및 더 큰 유의성 맵을 스캔할 수도 있다. 유의성 맵 (102) 외에도, 아래에서 더욱 상세히 설명되는 바와 같이, 다양한 다른 빈들 (예컨대, 부호, 레벨 등) 이 또한 유의성 맵 (102) 과 동일한 또는 상이한 배향들로 스캔될 수도 있다.
도 5a 내지 도 5f는 대체로 변환 계수들을 코딩하기 위한 스캐닝 패턴들 및 방향들을 예시한다. 예를 들어, 도 5a 내지 도 5f에 도시된 스캔 패턴들은 변환 계수들 (예컨대, 유의성, 레벨들, 부호 등) 의 2D 어레이를 직렬화하는 경우에 비디오 인코더 (이를테면 비디오 인코더 (20)) 에 의해 계수 스캔 순서들로서 사용될 수도 있다. 다른 예에서, 스캔 패턴들은 수신되는 코딩된 변환 계수들의 직렬화된 어레이로부터 변환 계수들의 블록을 복원하는 경우에 비디오 디코더 (이를테면 비디오 디코더 (30)) 에 의해 계수 스캔 순서들로서 사용될 수도 있다.
일부 예들에서, 도 5a 내지 도 5f에 도시된 스캔 패턴들 및 방향들은 유의성 맵 (이를테면 도 4에 도시된 유의성 맵 (102)), 뿐만 아니라 변환 계수 레벨들을 스캔하는 경우에 비디오 코더에 의해 구현될 수도 있다. 예를 들어, 도 5a는 비디오 데이터의 블록의 변환 계수들 (예컨대, TU와 연관된 변환 계수들) 을 스캔하기 위한 순방향 지그재그 스캔 패턴 (110) 을 예시한다. 대체로, 지그재그 스캔 패턴 (110) 은 블록을 그 블록의 좌측상단에서부터 그 블록의 우측하단으로 45 도 각도들로 번갈아 횡단한다. 다시 말하면, 도 5a에 도시된 예에서, 첫 계수 (112) 는 블록의 좌측상부 코너에 위치된 DC 성분인 반면, 스캔될 마지막 계수 (114) 는 블록의 우측하단 코너에 위치된다.
도 5b는 비디오 데이터의 블록의 변환 계수들을 스캔하기 위한 순방향 수평 스캔 패턴 (120) 을 예시한다. 대체로, 순방향 수평 스캔 패턴 (120) 은 좌측부터 우측으로 그리고 상단부터 하단으로 블록을 횡단한다. 다시 말하면, 도 5b에 도시된 예에서, 첫 계수 (122) 는 블록의 좌측상부 코너에 위치된 DC 성분인 반면, 스캔될 마지막 계수 (124) 는 블록의 우측하단 코너에 위치된다. 순방향 수평 스캔 패턴 (120) 은 제 1 계수 (122) 에서부터 좌측부터 우측으로 블록의 상단을 가로질러 진행한다. 각각의 다음 행은 마지막 계수 (124) 에 도달하기까지 좌측부터 우측으로 스캔된다.
도 5c는 비디오 데이터의 블록의 변환 계수들을 스캔하기 위한 순방향 수직 스캔 패턴 (130) 을 예시한다. 대체로, 순방향 수직 스캔 패턴 (130) 은 상단부터 하단으로 그리고 좌측부터 우측으로 블록을 횡단한다. 다시 말하면, 도 5c에 도시된 예에서, 첫 계수 (132) 는 블록의 좌측상부 코너에 위치된 DC 성분인 반면, 스캔될 마지막 계수 (134) 는 블록의 우측하단 코너에 위치된다. 순방향 수직 스캔 패턴 (130) 은 제 1 계수 (132) 부터 블록의 상대적 하단을 향하여 하향으로 진행한다. 각각의 다음 열은 마지막 계수 (134) 에 도달하기까지 상단부터 하단으로 스캔된다.
도 5d는 비디오 데이터의 블록의 변환 계수들을 스캔하기 위한 대각선 스캔 패턴 (140) 을 예시한다. 대체로, 대각선 스캔 패턴 (140) 은 우측상단부터 좌측하단으로 (예컨대, 블록의 좌측상단 코너로부터 그 블록에 대한 우측하단 코너로) 45 도 각도로 블록을 횡단한다. 다시 말하면, 도 5d에 도시된 예에서, 첫 계수 (142) 는 블록의 좌측상부 코너에 위치된 DC 성분인 반면, 스캔될 마지막 계수 (144) 는 블록의 우측하단 코너에 위치된다. 대각선 스캔 패턴 (140) 에서 대각선 라인들 각각은 블록의 우측상부 코너로부터 그 블록의 좌측하부 코너로 45 도 각도로 블록을 횡단한다.
도 5e는 비디오 데이터의 블록의 변환 계수들을 스캔하기 위한 다른 대각선 스캔 패턴 (150) 을 예시한다. 대체로, 대각선 스캔 패턴 (150) 은 우측상단부터 좌측하단으로 (예컨대, 블록의 좌측상단 코너로부터 그 블록의 우측하단 코너로) 45 도 각도로 블록을 횡단한다. 다시 말하면, 도 5e에 도시된 예에서, 첫 계수 (152) 는 블록의 좌측상부 코너에 위치된 DC 성분인 반면, 스캔될 마지막 계수 (154) 는 블록의 우측하단 코너에 위치된다. 그러나, 대각선 스캔 패턴 (150) 은 대각선 스캔 패턴 (140) 과는 반대 방향으로 진행한다. 대각선 스캔 패턴 (150) 에서 대각선 라인들 각각은 블록의 좌측하부 코너로부터 그 블록의 우측상부 코너로 45 도 각도로 블록을 횡단한다.
도 5a 내지 도 5e에 도시된 스캔들 각각은 순방향으로, 즉, 변환 블록의 좌측상부 코너에서의 더 낮은 주파수 변환 계수들로부터 변환 블록의 우측하부 코너에서의 더 높은 주파수 변환 계수들로 진행한다. 대안으로, 스캔들 각각은 역, 또는 반대 방향으로 (즉, 블록의 우측하부 코너로부터 좌측상부 코너로) 진행할 수도 있다. 이러한 일 예에서, 위에서 지적했듯이, 값이 0인 변환 계수들은 직렬화된 어레이의 시작부분에 위치될 수도 있다.
예를 들어, 도 5f는 도 5e에 도시된 것과의 역방향 대각선 스캔 패턴을 예시한다. 다시 말하면, 도 5f는 비디오 데이터의 블록의 변환 계수들 (예컨대, TU와 연관된 변환 계수들) 을 스캔하기 위한 역방향 대각선 스캔 패턴 (160) 을 예시한다. 대체로, 역방향 대각선 스캔 패턴 (160) 은 우측부터 좌측으로 그리고 하단부터 상단으로 45 도 각도로 블록을 횡단한다. 다시 말하면, 도 5f에 도시된 예에서, 첫 계수 (162) 는 블록의 우측하부 코너에 위치된 반면, 스캔될 마지막 계수 (164) 는 그 블록의 좌측상단 코너에 위치된다. 다르게 말하면, 대각선 스캔 패턴 (160) 에서의 대각선 라인들 각각은 블록의 우측상부 코너로부터 그 블록의 좌측하부 코너로 45 도 각도로 블록을 횡단한다. DC 계수는 블록의 좌측상부 코너에 머무르고, 높은 주파수 계수들을 블록의 우측하부 코너에 가질 수도 있다.
도 5a 내지 도 5f에 도시된 스캔 패턴은 예시만을 목적으로 제공된다는 것이 이해되어야 한다. 덧붙여서, 변환 계수들과 연관된 상이한 성분들 (예컨대, 유의성, 부호, 레벨 등) 이 상이한 배향들의 스캔들을 사용하여 스캔될 수도 있다. 계수 레벨은 계수가 1보다 큰 레벨, 2보다 큰 레벨 뿐만 아니라 나머지 레벨, 예컨대, 2를 초과하는 레벨을 가지는지 여부를 나타내는 신택스 엘리먼트들로 스캔되고 코딩될 수도 있다. 몇몇 경우들에서, 유의성 정보 (예컨대, 유의성 플래그들) 는 변환 계수 레벨들 (예컨대, 그 계수 레벨들과 연관된 하나 이상의 신택스 엘리먼트들) 의 반대 방향으로 스캔될 수도 있다. 다른 경우들에서, 통합된 스캐닝 패턴은 유의성 정보 및 변환 계수 레벨들이 동일한 방향에서 스캔되고 코딩되도록 구현될 수도 있다.
도 5a 내지 도 5f에 도시된 스캔들이 일반적으로 전체 블록에 대해 수행되고 있는 것으로서 묘사되지만, 본 개시물의 양태들에 따르면, 그리고 아래에서 더욱 상세히 설명되는 바와 같이, 이러한 스캔들은 변환 계수들의 서브 블록들 내에서 및 서브 블록들을 가로질러 사용될 수도 있다. 다시 말하면, 일 예로서, 도 5f에 도시된 역방향 대각선 스캔 패턴 (160) 은 서브 블록들 내의 변환 계수들을 스캔하기 위한 계수 스캔 순서로서, 뿐만 아니라 서브 블록들 자체들을 스캔하기 위한 서브 블록 스캔 순서로서 사용될 수도 있다.
도 6은 대각선으로 배향된 스캔 경로에 대한 콘텍스트 지원 이웃의 일 예을 도시하는 개념도이다. 예를 들어, 도 6은 변환 계수들의 블록 (170) 과 현재 코딩되고 있는 변환 계수 포지션 (172) 을 통과하는 대각선으로 배향된 스캔 라인 (171) 을 예시한다. 덧붙여서, 도 6의 예는 5 개의 엘리먼트들을 갖는 콘텍스트 지원 이웃 (174A 내지 174E) (총칭하여, 콘텍스트 지원 이웃 (174)) 을 도시한다.
예를 들어, 위에서 지적했듯이, 비디오 데이터의 블록에 대한 각각의 빈은, 그 블록에 대한 잔차 변환 계수 레벨에 대응하든 또는 유의성 맵 정보에 대응하든 간에, 주어진 값 (예컨대, "0" 또는 "1") 을 갖는 빈의 우도를 나타내는 그 빈에 대한 확률 추정값을 사용하여 코딩될 수도 있다. 확률 추정값들은, 또한 "콘텍스트 모델"이라고 지칭될 수도 있는 확률 모델 내에 포함된다. 확률 모델은 콘텍스트 지원 이웃에 의해 식별될 수도 있는 빈에 대한 콘텍스트를 결정함으로써 선택된다. 다시 말하면, 콘텍스트 지원 이웃은 변환 계수와 연관된 특정 심볼 또는 플래그를 엔트로피 코딩하는데 사용될 수도 있는 신택스 엘리먼트들의 상대적 포지션들을 식별할 수도 있다. 콘텍스트, 예컨대, 콘텍스트 이웃 포지션들에 위치된 실제 값들은, 확률 모델을 결정한다.
도 6에 도시된 예에서, 스캔 패턴 라인 (171) 을 따르는 변환 계수들 중 임의의 것은 병렬로 코딩될 수도 있다. 이러한 스캔 패턴은 "병렬 친화적 (parallel friendly)"이라고 지칭될 수도 있다. 다시 말하면, 스캔 라인 (171) 을 따르는 포지션들은 병렬로 코딩될 수 있는데, 스캔 라인 (171) 에서의 하나의 포지션은 스캔 라인 (171) 에서의 다른 포지션에 의존하는 콘텍스트 지원 이웃을 포함하지 않기 때문이다. 따라서, 스캔 라인 (171) 은 복수의 유의성 플래그들의 콘텍스트가 병렬로 계산되는 것을 허용하며, 이에 의해 유의성 플래그 코딩을 위한 콘텍스트 사전 페칭 (pre-fetching) 을 가능하게 한다. 이러한 스캔 라인은 또한 추측성 (speculative) 컴퓨테이션을 사용하여 다수의 유의성 플래그들의 코딩을 용이하게 할 수도 있다.
그러나, 도 11 및 도 12를 참조하여 아래에서 더욱 상세히 설명되는 바와 같이, 일부 예들에서, 변환 계수들의 블록을 서브 블록들로 분할하는 것은 (예컨대, 콘텍스트를 사용하여 엔트로피 코딩하는 경우에) 서브 블록들 내에 콘텍스트 의존성을 생성할 수도 있다. 다시 말하면, 서브 블록에서의 일부 포지션들에 대한 콘텍스트 지원 이웃은 서브 블록으로부터의 스캔 순서에서 이전 계수들에 의존할 수도 있다. 따라서, 본 개시물의 양태들은 하나를 초과하는 유의성 플래그가 병렬로 코딩되는 것을 허용하는 서브 블록 스캐닝에 대한 콘텍스트 지원 이웃을 결정하는 것에 관련된다 (예컨대, 콘텍스트는 서브 블록에서 하나를 초과하는 포지션에 대해 사전 페칭될 수도 있다).
도 7은 대체로 변환 계수들의 블록 (180) 을 서브 블록들 (184A 내지 184P) (총칭하여, 서브 블록들 (184)) 형태의 서브 세트들로 분할하는 것을 예시한다. 예를 들어, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 (180) 을 스캔하고 엔트로피 코딩하는 경우에 블록 (180) 을 서브 블록들 (184) 로 분할할 수도 있다.
본 개시물의 양태들에 따르면, 아래에서 더욱 상세히 설명되는 바와 같이, 서브 블록들 (184) 내의 변환 계수들은 계수 스캔 순서로 스캔될 수도 있다. 덧붙여서, 서브 블록들 (184) 각각은 서브 블록 스캔 순서로 스캔될 수도 있다. 일부 예들에서, 본 개시물의 양태들에 따르면, 계수 스캔 순서는 서브 블록 스캔 순서의 그것과 일치할 수도 있다.
일부 예들에서, 비디오 코더는 하나를 초과하는 패스에서 서브 블록들 (184) 의 유의성 정보 및 계수 레벨들을 코딩할 수도 있다. 예를 들어, 비디오 코더는 유의성 정보를 코딩하는 제 1 패스를 수행할 수도 있다. 비디오 코더는 그 다음에 변환 계수 레벨들의 빈 1 (예컨대, 1보다 큼) 을 코딩하는 다른 패스, 변환 계수 레벨들의 빈 2 (예컨대, 2보다 큼) 를 코딩하는 다른 패스, 변환 계수 레벨들의 나머지 빈들 (예컨대, 나머지 레벨) 을 코딩하는 다른 패스, 및 변환 계수 레벨들의 부호를 코딩하는 다른 패스를 수행할 수도 있다. 그러나 위에서 설명된 5 개의 패스들은 단지 예시를 목적으로 제공되며, 상이한 코딩 시스템이 사용될 수도 있다.
본 개시물의 일부 양태들에 따르면, 비디오 코더는 서브 블록들 (184) 각각을 순차적으로 코딩할 수도 있다. 다시 말하면, 비디오 코더는 서브 블록 (184A) 에 대해 위에서 설명된 5 개의 코딩 패스들을 변환 계수 스캔 순서로 수행할 수도 있다. 비디오 코더는 그 다음에 서브 블록 스캔 순서에서 다음 서브 블록으로 이동하고 동일한 5 개의 코딩 패스들을 변환 계수 스캔 순서로 수행할 수도 있다. 다른 예들에서, 일 코딩 패스가 다음 코딩 패스로 이동하기 전에 전체 블록 (180) 에 대해 수행될 수도 있다. 다시 말하면, 비디오 코더는 블록 (180) 에 대해 제 1 코딩 패스를, 서브 블록들 (184) 의 모든 변환 계수들에 대해 변환 계수 스캔 순서로 그리고 모든 서브 블록들 (184) 에 대해 서브 블록 스캔 순서로 수행할 수도 있다. 비디오 코더는 그 다음에 모든 코딩 패스들이 완료되기까지 블록 (180) 에 대해 다음 코딩 패스를 동일한 방법으로 수행할 수도 있다.
일부 예들에서, 비디오 코더는 서브 블록들 (184) 의 변환 계수들을 스캔하기 위해 통합된 스캔을 사용할 수도 있다. 예를 들어, 비디오 코더는 동일한 배향을 갖는 스캔 (예컨대, 대각선 스캔) 을 사용하여 유의성 정보 및 계수 레벨들을 스캔할 수도 있다. 다른 예들에서, 비디오 코더는 역방향 스캔들 또는 다른 배향들을 갖는 스캔들을 사용하여 변환 계수들의 성분들 (예컨대, 유의성, 부호, 레벨들 등) 을 스캔할 수도 있다. 예를 들어, 비디오 코더는 초기에는 유의성 맵 정보를 순방향 스캔으로 스캔할 수도 있다. 비디오 코더는 그 다음에 하나 이상의 계수 레벨 빈들을 역방향 스캔으로 스캔할 수도 있다.
도 7에 도시된 예에서, 블록 (180) 은 사이즈 16x16 변환 계수들이지만, 더 크거나 또는 더 작은 블록들이 유사하게 분할될 수도 있다는 것이 이해되어야 한다. 더구나, 서브 블록들 (184) 의 사이즈가 4x4이지만, 더 크거나 또는 더 작은 서브 블록들이 사용될 수도 있다는 것이 이해되어야 한다. 다시 말하면, 다른 예들에서, 서브 블록들의 사이즈는, 서브 블록 사이즈가 원본 블록 사이즈 이하인 한, 2x2, 8x8, 16x16, 또는 n x n일 수도 있다. 변환 계수들의 특정 블록이 세분되는 방법은 블록의 사이즈에 기초하여 미리 결정될 수도 있다. 이로써, 비디오 디코더는 블록을 그것의 사이즈에 기초하여 세분하는 방법을 유추할 수도 있다. 다른 예들에서, 서브 블록들의 수 및/또는 사이즈는 인코더에 의해 인코딩된 비디오 비트스트림에서 나타내어질 수도 있다.
도 8a 내지 도 8e는 대체로 변환 계수들의 서브 블록들을 코딩하기 위한 스캐닝 패턴들 및 방향들을 예시한다. 예를 들어, 도 8a 내지 도 8e에 도시된 스캔 패턴들은 변환 계수들 (예컨대, 유의성, 레벨들, 부호 등) 의 2D 어레이를 직렬화하는 경우에 비디오 인코더 (이를테면 비디오 인코더 (20)) 에 의해 서브 블록 스캔 순서들로서 사용될 수도 있다. 다른 예에서, 스캔 패턴들은 수신되는 코딩된 변환 계수들의 직렬화된 어레이로부터 변환 계수들의 블록을 복원하는 경우에 비디오 디코더 (이를테면 비디오 디코더 (30)) 에 의해 서브 블록 스캔 순서들로서 사용될 수도 있다.
예를 들어, 도 8a는 대체로 변환 계수들의 블록의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로서 도시됨) 을 가로질러 스캔하기 위한 순방향 지그재그 서브 블록 스캔 순서 (190) 를 예시한다. 대체로, 순방향 지그재그 서브 블록 스캔 순서 (190) 는 블록의 좌측상부 코너에서의 상대적 제 1 서브 블록 (192) 으로부터 그 블록의 우측하부 코너에서의 마지막 서브 블록 (194) 까지 블록의 상대적 상단부터 블록의 상대적 하단으로 45도 각도로 번갈아 서브 블록들 각각을 횡단한다.
도 8b는 대체로 변환 계수들의 블록의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로서 도시됨) 을 가로질러 스캔하기 위한 순방향 수평 서브 블록 스캔 순서 (196) 를 예시한다. 대체로, 순방향 수평 서브 블록 스캔 순서 (196) 는 블록의 좌측상부 코너에서의 상대적 제 1 서브 블록 (198) 으로부터 우측하부 코너의 마지막 서브 블록 (200) 까지 좌측부터 우측으로 그리고 상단부터 하단으로 일련의 수평 라인들에서 서브 블록들 각각을 횡단한다. 다시 말하면, 도 8b에 도시된 예에서, 순방향 수평 서브 블록 스캔 순서는 제 1 서브 블록 (198) 으로부터 블록의 상단을 가로질러 좌측부터 우측으로 진행한다. 각각의 다음 행은 그 다음에 마지막 서브 블록 (200) 에 도달하기까지 좌측부터 우측으로 스캔된다.
도 8c는 변환 계수들의 블록의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로 도시됨) 을 가로질러 스캔하기 위한 순방향 수직 서브 블록 스캔 순서 (204) 를 예시한다. 대체로, 순방향 수직 서브 블록 스캔 순서 (204) 는 블록의 좌측상부 코너에서의 상대적 제 1 서브 블록 (206) 으로부터 우측하부 코너의 마지막 서브 블록 (208) 까지 상단부터 하단으로 그리고 좌측부터 우측으로 일련의 수직 라인들에서 서브 블록들 각각을 횡단한다. 다시 말하면, 도 8c에 도시된 예에서, 순방향 수직 서브 블록 스캔 순서는 제 1 서브 블록 (206) 으로부터 블록의 상대적 하단을 향하여 하향으로 진행한다. 각각의 다음 열은 마지막 서브 블록 (208) 에 도달하기까지 상단부터 하단으로 스캔된다.
도 8d는 대체로 변환 계수들의 블록의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로서 도시됨) 을 가로질러 스캔하기 위한 대각선 서브 블록 스캔 순서 (210) 를 예시한다. 대체로, 대각선 서브 블록 스캔 순서 (210) 는 블록의 좌측상부 코너에서의 상대적 제 1 서브 블록 (212) 으로부터 블록의 우측하부 코너에서의 마지막 서브 블록 (214) 까지 좌측부터 우측으로 그리고 하단부터 상단으로 45 도 각도로 서브 블록들 각각을 횡단한다. 다시 말하면, 도 8d에 도시된 예에서, 대각선 서브 블록 스캔 순서 (210) 는 제 1 서브 블록 (212) 부터 마지막 서브 블록 (214) 까지 연속적인 대각선 라인들에서 블록의 좌측하부 코너로부터 그 블록의 우측상부 코너로 45 도 각도로 블록을 횡단한다.
도 8a 내지 도 8d에 도시된 서브 블록 스캔들 각각은 순방향으로, 즉, 변환 블록의 좌측상부 코너에서의 더 낮은 주파수 변환 계수들로부터 변환 블록의 우측하부 코너에서의 더 높은 주파수 변환 계수들로 진행한다. 대안으로, 스캔들 각각은 역, 또는 반대 방향으로 (즉, 블록의 우측하부 코너로부터 좌측상부 코너로) 진행할 수도 있다. 이러한 일 예에서, 위에서 지적했듯이, 값이 0인 변환 계수들은 직렬화된 어레이의 시작부분에 위치될 수도 있다. 마지막 계수의 포지션이 비트스트림에서 명시적으로 코딩되어 있다면, 역방향 서브 블록 스캔은 순방향 스캔에 관한 마지막 유의 계수를 포함하는 서브 블록으로부터 시작할 수도 있다. 또한, 이 서브 블록 내에서, 스캐닝은 (레벨 코딩을 위해) 마지막 유의 계수 또는 그 마지막 유의 계수 다음의 계수로부터 역방향 스캔 순서로 시작할 수도 있다. 대안으로, 서브 블록들의 모두 및 계수들의 모두는 항상 스캔될 수도 있지만, 순방향 스캔에 관한 마지막 유의 계수 뒤의 계수들은 0이라고 유추될 수도 있다.
예를 들어, 도 8e는 대체로 도 8d에 도시된 서브 블록 스캔 순서로부터 역방향으로 변환 계수들의 블록의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로 도시됨) 을 가로질러 스캔하기 위한 역방향 대각선 서브 블록 스캔 순서 (216) 를 예시한다. 대체로, 역방향 대각선 서브 블록 스캔 순서 (216) 는 블록의 우측하부 코너에서의 상대적 제 1 서브 블록 (217) 으로부터 그 블록의 좌측상부 코너의 마지막 서브 블록 (218) 까지 우측부터 좌측으로 그리고 상단부터 하단으로 45 도 각도로 서브 블록들 각각을 횡단한다. 다시 말하면, 도 8e에 도시된 예에서, 역방향 대각선 서브 블록 스캔 순서 (216) 는 제 1 서브 블록 (217) 부터 마지막 서브 블록 (218) 까지 연속적인 대각선 라인들에서 블록의 우측상부 코너로부터 그 블록의 좌측하부 코너로 45 도 각도로 블록을 횡단한다.
도 8a 내지 도 8e에 도시된 서브 블록 스캔 순서들은 예시만을 목적으로 제공된다는 것이 이해되어야 한다. 덧붙여서, 변환 계수들과 연관된 상이한 성분들 (예컨대, 유의성, 부호, 레벨 등) 이 상이한 배향들의 스캔들을 사용하여 스캔될 수도 있다. 예를 들어, 몇몇 경우들에서, 유의성 정보 (예컨대, 유의성 플래그들) 는 변환 계수 레벨들의 반대 방향으로 스캔될 수도 있다. 다른 경우들에서, 통합된 스캐닝 패턴은 유의성 정보 및 변환 계수 레벨들이 동일한 방향으로 스캔되도록 구현될 수도 있다.
본 개시물의 양태들에 따르면, 도 8a 내지 도 8e에 도시된 서브 블록 스캔 순서들은 서브 블록들 각각 내의 변환 계수들을 스캔하는데 사용된 개별 계수 스캔 순서들에 일치할 수도 있다. 다시 말하면, 서브 블록들 각각 내의 계수들을 스캔하기 위한 계수 스캔 순서는 서브 블록들 자체들을 스캔하기 위한 서브 블록 스캔 순서들과 동일할 수도 있다.
본 개시물의 다른 양태들에 따르면, 계수 스캔 순서 및/또는 서브 블록 스캔 순서는 적응적일 수도 있다. 다시 말하면, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 사이즈, 인트라/인터 예측 모드, 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스), 또는 다른 비디오 코딩 특성들에 기초하여 블록에 대한 서브 블록 스캔 순서 및/또는 계수 스캔 순서를 선택할 수도 있다. 다른 예에서, 서브 블록 스캔 순서 및 계수 스캔 순서는 비디오 인코더 (20) 에서의 레이트-왜곡 분석으로부터 결정될 수도 있다. 이 경우, 서브 블록 스캔 순서 및 계수 스캔 순서를 나타내는 신택스 (예컨대, 아래에 도시된 표 1로부터의 블록 스캔 인덱스) 는 디코더에서의 사용을 위해 인코딩된 비디오 비트스트림으로 시그널링될 수도 있다.
따라서, 도 8a 내지 도 8e에 도시된 각각의 서브 블록 내의 변환 계수들은 동일한 또는 상이한 스캔 순서들에 따라 스캔될 수도 있다. 다시 말하면, 지그재그, 수평, 대각선 또는 수직 스캐닝 순서들은 각각의 서브 블록 내의 변환 계수들을 스캔하는데 사용될 수도 있다. 다시, 이들 스캐닝 순서들 각각은 순방향 또는 역방향으로 될 수도 있다. 계수 스캔 순서는 서브 블록 스캔 순서와 상이하거나 또는 동일할 수도 있다. 덧붙여서, 계수 스캔 순서는 변환 계수들의 블록에서의 모든 서브 블록에 대해 동일할 수도 있거나, 또는 각각의 서브 블록에 대한 계수 스캔 순서는 개별적으로 선택될 수도 있다. 예를 들어, 서브 블록 스캔 순서 및 계수 스캔 순서 양쪽 모두가 아래의 표 1에 도시된 바와 같은 3 개의 스캔들 (즉, 대각선, 수평, 및 수직) 을 사용한다면, 블록에 대한 잠재적인 스캔들의 총 수는 3x3=9 이다.
Figure pat00001
표 1이 단지 예시를 목적으로 제공되는 것과, 다른 스캔들이 적응 스캐닝 결정 동안에 선택을 위해 이용가능할 수도 있다는 것이 이해되어야 한다. 예를 들어, 지그재그 스캔, 위의 스캔들 중 임의의 것 또는 모두의 역방향 스캔들, 또는 다른 배향들의 스캔들이 또한 선택을 위해 이용가능할 수도 있다. 다른 곳에서 언급되었듯이, 본 개시물의 스캐닝 기법들은 CAVLC, CABAC, 또는 다른 엔트로피 코딩 기법들을 위해 사용된 스캐닝 프로세스들에 적용가능할 수도 있다. 예를 들어, 앞서 언급된 스캐닝 기법들은 CABAC를 위한 유의성 맵 및 계수 레벨 스캐닝 사용에 적용가능할 수도 있다.
도 9a 및 도 9b는 대체로 복수의 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔하는 것 뿐만 아니라 복수의 서브 블록들을 서브 블록 스캔 순서로 스캔하는 것을 더 상세히 예시한다. 예를 들어, 도 9a에 관해, 본 개시물의 양태들에 따르면, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 (220) 을 코딩하는 동안 블록 (220) 을 서브 블록들 (222A, 222B, 222C, 및 222D) (총칭하여, 서브 블록들 (222)) 로 분할할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 블록 (220) 의 변환 계수들을 직렬화하는 경우에 블록 (220) 을 서브 블록들 (222) 로 분할할 수도 있다. 대안으로, 비디오 디코더 (30) 는 블록 (220) 의 변환 계수들을 서브 블록들 (222) 을 사용하여 복원할 수도 있다.
어느 경우나, 도 9a에 도시된 예는 대체로 블록 (220) 의 변환 계수들을 스캔하기 위한 대각선 계수 스캔 순서를 예시하는 반면, 도 9b는 대체로 서브 블록들 (222) 을 스캔하기 위한 유사하게 배향된 대각선 서브 블록 스캔 순서를 예시한다. 따라서, 도 9a 및 도 9b에 도시된 바와 같이, 비디오 코더는 블록 (220) 의 좌측상부 코너에 위치된 제 1 서브 블록 (222A) 과 연관된 변환 계수들을 스캔할 수도 있다. 비디오 코더는 그 다음에 블록 (220) 의 좌측하부 코너에 위치된 제 2 서브 블록 (222B), 그 후 블록 (220) 의 우측상부 코너에 위치된 제 3 서브 블록 (222C), 및 블록 (220) 의 우측하부 코너에 위치된 제 4 서브 블록 (222D) 과 연관된 변환 계수들을 스캔할 수도 있다.
위에서 지적했듯이, 일부 예들에서, 비디오 코더는 서브 블록들 (222) 의 계수 레벨들 및 유의성 정보를 하나를 초과하는 패스에서 코딩할 수도 있다. 본 개시물의 일부 양태들에 따르면, 비디오 코더는 서브 블록들 (222) 각각을 순차적으로 코딩할 수도 있다. 다시 말하면, 비디오 코더는 서브 블록 (222A) 애 대한 모든 코딩 패스들을 변환 계수 스캔 순서로 수행할 수도 있다. 비디오 코더는 그 다음에 서브 블록 (222B), 그 뒤 서브 블록 (222C) 및 서브 블록 (222D) 으로 이동하여, 다음 서브 블록으로 이동하기 전에 하나의 서브 블록에서의 계수들의 코딩을 완료할 수도 있다.
다른 예들에서, 복수의 코딩 패스들 중 하나의 코딩 패스는 다음 코딩 패스로 이동하기 전에 전체 블록 (220) 에 대해 수행될 수도 있다. 다시 말하면, 비디오 코더는 블록 (220) 에 대해 제 1 코딩 패스를, 서브 블록들 (222) 의 모든 변환 계수들에 대해 변환 계수 스캔 순서로 그리고 모든 서브 블록들 (222) 에 대해 서브 블록 스캔 순서로 수행할 수도 있다. 비디오 코더는 그 다음에 모든 코딩 패스들이 완료되기까지 블록 (222) 에 대해 다음 코딩 패스를 동일한 방법으로 수행할 수도 있다.
일부 예들에서, 비디오 코더는 서브 블록들 (222) 의 변환 계수들을 스캔하기 위해 통합된 스캔을 사용할 수도 있다. 예를 들어, 비디오 코더는 도 9a 및 도 9b에 도시된 대각선 배향을 갖는 스캔을 사용하여 유의성 정보 (예컨대, 유의성 플래그들) 및 계수 레벨들을 스캔할 수도 있다. 다른 예들에서, 비디오 코더는 역방향 스캔들 또는 다른 배향들을 갖는 스캔들을 사용하여 블록 (222) 의 변환 계수들의 성분들 (예컨대, 유의성, 부호, 레벨들 등) 을 스캔할 수도 있다. 예를 들어, 비디오 코더는 초기에는 유의성 맵 정보를 순방향 스캔으로 스캔할 수도 있다. 비디오 코더는 그 다음에 하나 이상의 계수 레벨 빈들을 역방향 스캔으로 스캔할 수도 있다.
도 9a 및 도 9b에 도시된 예들이 일반적으로 대각선 스캔 패턴을 예시하지만, 도 5a 및 도 5b에 관해 위에서 지적했듯이, 다양한 다른 스캔 패턴들, 이를테면 지그재그 패턴, 적응 스캔 순서, 수평 패턴, 수직 패턴 등이 사용될 수도 있다. 덧붙여서, 도 9a 및 도 9b에 도시된 예들이 4x4 서브 블록들을 가진 변환 계수들의 8x8 블록들을 예시하지만, 본 개시물의 기법들은 다른 사이즈들의 블록들, 뿐만 아니라 다른 사이즈들의 서브 블록들에 적용될 수도 있다는 것이 이해되어야 한다. 예를 들어, 서브 블록은 변환 유닛 (TU) 의 변환 계수들의 임의의 n x n 블록 (또는 서브 블록들이 정방형이 아닌 경우들에서 n x m 블록) 을 포함할 수도 있으며, 여기서 n x n 은 TU의 사이즈 이하이다. 덧붙여서, 도 9a 및 도 9b에 도시된 바와 같은 동등한 사이즈들의 서브 블록들은, 하드웨어 효율을 달성하는 것을 도울 수도 있다 (예컨대, 하드웨어는 정적 서브 블록 사이즈로 작동하도록 최적화될 수도 있다). 그러나, 다른 예들에서, 본 개시물의 기법들은 상이한 사이즈들을 갖는 서브 블록들에 적용될 수도 있다.
도 10a 및 도 10b는 또한 대체로 복수의 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔하는 것 뿐만 아니라 복수의 서브 블록들을 서브 블록 스캔 순서로 스캔하는 것을 더 상세히 예시한다. 예를 들어, 도 10a에 관해, 본 개시물의 양태들에 따르면, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 (224) 을 코딩하는 동안 블록 (224) 을 서브 블록들 (226A, 226B, 226C, 및 226D) (총칭하여, 서브 블록들 (226)) 로 분할할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 블록 (224) 의 변환 계수들을 직렬화하는 경우에 블록 (224) 을 서브 블록들 (226) 로 분할할 수도 있다. 대안으로, 비디오 디코더 (30) 는 블록 (224) 의 변환 계수들을 서브 블록들 (226) 을 사용하여 복원할 수도 있다.
도 10a에 도시된 예는 대체로 (도 9a에 도시된 대각선 스캔 순서에 관해) 블록 (224) 의 변환 계수들을 스캔하기 위한 역방향 대각선 계수 스캔 순서를 예시하는 반면, 도 10b는 대체로 (도 9a에 도시된 대각선 스캔 순서에 관해) 서브 블록들 (222) 을 스캔하기 위한 유사하게 배향된 역방향 대각선 서브 블록 스캔 순서를 예시한다. 따라서, 도 10a 및 도 10b에 도시된 바와 같이, 비디오 코더는 처음에는 블록 (224) 의 우측하부 코너에 위치된 제 1 서브 블록 (226A) 과 연관된 변환 계수들을 스캔할 수도 있다. 비디오 코더는 그 다음에 블록 (224) 의 우측상부 코너에 위치된 제 2 서브 블록 (226B), 그 후 블록 (224) 의 좌측하부 코너에 위치된 제 3 서브 블록 (226C), 및 블록 (224) 의 좌측상부 코너에 위치된 제 4 서브 블록 (226D) 과 연관된 변환 계수들을 스캔할 수도 있다.
도 11a 및 도 11b는 또한 대체로 복수의 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔하는 것 뿐만 아니라 복수의 서브 블록들을 서브 블록 스캔 순서로 스캔하는 것을 더 상세히 예시한다. 예를 들어, 도 11a에 관해, 본 개시물의 양태들에 따르면, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 (228) 을 코딩하는 동안 블록 (228) 을 서브 블록들 (230A, 230B, 230C, 및 230D) (총칭하여, 서브 블록들 (230)) 로 분할할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 블록 (228) 의 변환 계수들을 직렬화하는 경우에 블록 (228) 을 서브 블록들 (230) 로 분할할 수도 있다. 대안으로, 비디오 디코더 (30) 는 블록 (228) 의 변환 계수들을 서브 블록들 (230) 을 사용하여 복원할 수도 있다.
도 11a에 도시된 예는 대체로 블록 (228) 의 변환 계수들을 스캔하기 위한 역방향 수직 계수 스캔 순서를 예시하는 반면, 도 11b는 대체로 서브 블록들 (230) 을 스캔하기 위한 유사하게 배향된 역방향 수직 서브 블록 스캔 순서를 예시한다. 따라서, 도 11a 및 도 11b에 도시된 바와 같이, 비디오 코더는 처음에는 블록 (228) 의 우측하부 코너에 위치된 제 1 서브 블록 (230A) 과 연관된 변환 계수들을 스캔할 수도 있다. 비디오 코더는 그 다음에 블록 (228) 의 우측상부 코너에 위치된 제 2 서브 블록 (230B), 그 후 블록 (228) 의 좌측하부 코너에 위치된 제 3 서브 블록 (230C), 및 블록 (228) 의 좌측상부 코너에 위치된 제 4 서브 블록 (230D) 과 연관된 변환 계수들을 스캔할 수도 있다.
따라서, 도 11a 및 도 11b에 도시된 예는 블록 (228) 에 대해 스캔을 수행하는 것이 복수의 서브 블록들 (230) 의 각각의 서브 블록의 변환 계수들을 복수의 서브 블록들 각각 내의 하단부터 상단으로의 그리고 우측부터 좌측으로의 계수 스캔 순서로 수직으로 스캔하는 것과, 복수의 서브 블록들 각각을 가로질러 블록 (228) 의 하단부터 상단으로의 그리고 우측부터 좌측으로의 서브 블록 스캔 순서로 수직으로 스캔하는 것을 포함하도록 역방향 수직 배향을 갖는 스캔 배향을 포함한다.
도 12a 및 도 12b는 또한 대체로 복수의 서브 블록들의 변환 계수들을 계수 스캔 순서로 스캔하는 것 뿐만 아니라 복수의 서브 블록들을 서브 블록 스캔 순서로 스캔하는 것을 더 상세히 예시한다. 예를 들어, 도 12a에 관해, 본 개시물의 양태들에 따르면, 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 블록 (234) 을 코딩하는 동안 블록 (234) 을 서브 블록들 (236A, 236B, 236C, 및 236D) (총칭하여, 서브 블록들 (236)) 로 분할할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 블록 (234) 의 변환 계수들을 직렬화하는 경우에 블록 (234) 을 서브 블록들 (236) 로 분할할 수도 있다. 대안으로, 비디오 디코더 (30) 는 블록 (234) 의 변환 계수들을 서브 블록들 (236) 을 사용하여 복원할 수도 있다.
도 12a에 도시된 예는 대체로 블록 (234) 의 변환 계수들을 스캔하기 위한 역방향 수평 계수 스캔 순서를 예시하는 반면, 도 12b는 대체로 서브 블록들 (236) 을 스캔하기 위한 유사하게 배향된 역방향 수직 서브 블록 스캔 순서를 예시한다. 따라서, 도 12a 및 도 12b에 도시된 바와 같이, 비디오 코더는 처음에는 블록 (234) 의 우측하부 코너에 위치된 제 1 서브 블록 (236A) 과 연관된 변환 계수들을 스캔할 수도 있다. 비디오 코더는 그 다음에 블록 (234) 의 우측상부 코너에 위치된 제 2 서브 블록 (236B), 그 후 블록 (234) 의 좌측하부 코너에 위치된 제 3 서브 블록 (236C), 및 블록 (234) 의 좌측상부 코너에 위치된 제 4 서브 블록 (236D) 과 연관된 변환 계수들을 스캔할 수도 있다.
따라서, 도 12a 및 도 12b에 도시된 예는 블록 (234) 에 대해 스캔을 수행하는 것이 복수의 서브 블록들 (236) 의 각각의 서브 블록의 변환 계수들을 복수의 서브 블록들 (236) 각각 내의 우측부터 좌측으로의 그리고 하단부터 상단으로의 계수 스캔 순서로 수평으로 스캔하는 것과, 복수의 서브 블록들 각각을 가로질러 블록 (234) 의 우측부터 좌측으로의 그리고 하단부터 상단으로의 서브 블록 스캔 순서로 수평으로 스캔하는 것을 포함하도록 역방향 수평 배향을 갖는 스캔 배향을 포함한다.
도 10a 내지 도 12b에 도시된 역 스캔을 용이하게 하기 위해, 일부 예들에서, 비디오 코더는 먼저 개별 블록의 마지막 유의 계수, 뿐만 아니라 각각의 개별 서브 블록의 마지막 유의 계수를 식별할 수도 있다. 다시 말하면, 도 10a 내지 도 12b에 도시된 예들이 대체로 스캔되고 있는 모든 변환 계수 포지션들을 예시하지만, 위에서 설명된 바와 같이, 비디오 코더는 유의 계수들만을 스캔할 수도 있다. 따라서, 비디오 코더는 서브 블록들 각각에서 마지막 유의 계수를 결정하고, 서브 블록들 각각을 각각의 서브 블록의 마지막 유의 계수로부터 각각의 서브 블록의 상대적 제 1 유의 계수 (예컨대, DC 계수) 까지 계수 스캔 순서로 스캔할 수도 있다. 덧붙여서, 비디오 코더는 블록의 마지막 유의 계수를 결정하고, 블록의 마지막 유의 계수로부터 블록에서의 상대적 제 1 유의 계수 (예컨대, DC 계수) 까지 서브 블록 스캔 순서로 서브 블록들을 스캔할 수도 있다. 따라서, 서브 블록들 중 하나 이상이 유의 계수들을 포함하지 않는다면, 이러한 변환 계수들 및/또는 서브 블록들은 스캔되지 않을 수도 있다.
도 13은 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 일 예를 도시하는 개념도이다. 예를 들어, 도 13은 복수의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로 도시됨) 로 분할되어 있는 변환 계수들의 블록 (240) 과 현재 코딩되고 있는 변환 계수 포지션 (244) (짙은 블록) 을 통과하는 서브 블록들 내의 대각선으로 배향된 계수 스캔 순서를 예시한다. 도 13에 도시된 예는 4 개의 콘텍스트 지원 엘리먼트들 (음영을 넣은 블록들) 을 갖는 콘텍스트 지원 이웃 (246) 을 포함한다. 도 6에 도시된 콘텍스트 지원 이웃에 대하여, 콘텍스트 지원 이웃 (246) 은 제거된 포지션 (removed position) (248) 을 가진다. 다시 말하면, 예를 들어, 현재 코딩되고 있는 변환 계수 (244) 에 대한 유의성 플래그를 코딩하기 위한 콘텍스트는 제거된 포지션 (248) 으로부터의 데이터를 포함하지 않는다.
위에서 지적했듯이, 비디오 데이터의 블록에 대한 각각의 빈은, 그 블록에 대한 잔차 변환 계수 레벨에 대응하든 또는 유의성 정보에 대응하든 간에, 주어진 값 (예컨대, "0" 또는 "1") 을 갖는 빈의 우도를 나타내는 그 빈에 대한 확률 추정값을 사용하여 코딩될 수도 있다. 확률 모델은 콘텍스트 지원 이웃에 의해 식별될 수도 있는 빈에 대한 콘텍스트를 결정함으로써 선택된다. 다시 말하면, 콘텍스트 지원 이웃은 변환 계수와 연관된 특정 심볼 또는 플래그를 엔트로피 코딩하기 위해 콘텍스트를 도출하는데 사용되는 이전에 코딩된 신택스 엘리먼트들의 상대적 포지션들을 식별할 수도 있다. 콘텍스트, 예컨대, 콘텍스트 이웃 포지션들에 위치된 신택스 엘리먼트들의 실제 값들은, 확률 모델을 결정한다.
도 6에 도시된 예에서, 스캔 패턴 라인 (171) 을 따르는 변환 계수들 중 임의의 것은 병렬로 코딩될 수도 있는데, 스캔 라인 (171) 에서의 어떤 하나의 포지션도 스캔 라인 (171) 에서의 다른 포지션에 의존하는 콘텍스트 지원 이웃을 포함하지 않기 때문이다 (동일한 콘텍스트 지원 이웃이 모든 포지션들을 위해 사용된다고 가정함). 따라서, 스캔 라인 (171) 은 복수의 유의성 플래그들의 콘텍스트들이 병렬로 계산되는 것을 허용하며, 이에 의해 유의성 플래그 코딩을 위한 콘텍스트 사전 페칭을 가능하게 한다.
그러나, 지그재그 또는 대각선 스캔이 비교적 큰 블록들 (이를테면 도 6에 도시된 것) 에 적용되는 경우, 여러 계수들은 동시에 페칭될 수도 있으며, 이에 의해 하드웨어 구현예에서 부담을 증가시킨다. 다시 말하면, 스캔 라인 (171) 을 따르는 현재 코딩되고 있는 변환 계수 전 및 후에 프로세싱되는 변환 계수들은 현재 코딩되고 있는 변환 계수와 동일한 열 또는 행에 위치되지 않는다. 통상적으로, 변환 계수들은 열 및 행에 의해 정렬되고 저장된다. 따라서, 인접한 데이터를 취출할 수 있기 위하여, 변환 계수들의 하나를 초과하는 대각선 라인은 프로세싱되는 것이 필요할 수도 있다. 몇몇 경우들에서, 소프트웨어 기반 단일 명령, 다중 데이터 (software based single instruction, multiple data; SIMD) 구현예들은 이들 큰 스캔들을 병렬화하는 경우에 유사한 문제들에 직면할 수도 있다. 서브 블록들의 집약성 (locality) 을 도입하면 이 문제를 완화하는데 도움이 될 수도 있다. 다시 말하면, 더 작은 서브 블록들은 데이터가 더 효율적인 방법으로 취출되는 것을 허용할 수도 있다.
변환 계수들의 블록을 서브 블록들로 분할하는 것이 위에서 설명된 문제를 완화하는데 도움이 될 수도 있지만, 서브 블록들은 또한 (예컨대, 콘텍스트를 사용하여 엔트로피 코딩하는 경우) 서브 블록들 내에 콘텍스트 의존성을 생성할 수도 있다. 다시 말하면, 서브 블록에서의 일부 포지션들에 대한 콘텍스트 지원 이웃은 서브 블록에서의 다른 포지션들에 의존할 수도 있다. 예시를 목적으로 그리고 도 13에 도시된 예로서, 지그재그 또는 순방향 대각선 계수 스캔 순서를 사용하여 서브 블록들 내에서 스캔하는 경우, 제 1 변환 계수 포지션에 대한 콘텍스트 지원 이웃 (즉, 블록의 좌측상단 코너에서의 현재 코딩되고 있는 포지션 (244)) 은 통상 (예컨대, 도 6에 도시된 5 개의 포지션 콘텍스트 지원 이웃을 사용하여) 현재 코딩되고 있는 포지션 (244) 바로 밑의 포지션을 포함할 수도 있다. 그러나, 이 의존성은 엔트로피 코딩하는 경우에 원치않는 지연을 부과할 수도 있다. 다시 말하면, 현재 코딩되고 있는 포지션 (244) 바로 전에 위치된 서브 블록의 변환 계수는 현재 코딩되고 있는 포지션에 대한 콘텍스트를 도출하기 위하여 코딩되어야만 할 수도 있다. 이 의존성을 피하고 이에 따라 병렬화를 향상시키기 위해, 본 개시물의 양태들은 콘텍스트가 서브 블록들에서 도출되는 포지션들, 즉, 서브 블록들 내의 포지션들에 대한 콘텍스트 지원 이웃을 수정하는 것에 관련된다.
본 개시물의 양태들에 따르면, 하나 이상의 포지션들이 서브 블록들 내의 소정의 포지션들에 대한 콘텍스트 지원 이웃으로부터 제거될 수도 있다. 다시 말하면, 도 13에 도시된 예에서, 비디오 코더는 현재 포지션 (244) 을 코딩하는 경우에 콘텍스트 지원 이웃으로부터 제거된 포지션 (248) 을 제거할 수도 있으며, 이에 의해 감소된 콘텍스트 지원 이웃을 제공한다. 제거된 포지션 (248) 은 계수 스캔 순서에서 현재 포지션 (244) 직전에 위치된다. 코딩 동안에 제거된 포지션 (248) 과 연관된 데이터를 취출하지 않음으로써, 위에서 설명된 의존성은 없애진다. 따라서, 비디오 코더는 현재 포지션 (244) 및 제거된 포지션 (248) 양쪽 모두를 병렬로 코딩할 수도 있다 (예컨대, 콘텍스트는 서브 블록에서 하나를 초과하는 포지션에 대해 사전 페칭될 수도 있다). 도 13에 관해 도시되고 설명된 콘텍스트 지원 이웃 제거 기법은 병렬로 스캔되고 코딩되는 변환 계수들의 수에 의존하여 2 개의 포지션들로부터 3 개의 이상 포지션들로 확장될 수도 있다. 다시 말하면, 예를 들어, 3 개의 변환 계수들이 병렬로 코딩된다면, 비디오 코더는 제거된 포지션 (248), 뿐만 아니라 스캔 순서에서 제거된 포지션 직전의 포지션 (예컨대, 현재 포지션 (244) 의 바로 우측의 포지션) 을 제거할 수도 있다.
일부 예들에서, 본 개시물의 양태들을 수행하기 위해, 비디오 코더는 계수의 블록 기반 포지션을 감안하여 계수의 스캔 순서에서의 포지션을 도출할 수도 있다. 포지션을 결정하는데 사용될 수도 있는 하나의 프로세스는 (예컨대, 8x8 서브 블록 및 대각선 스캔의 경우를 위한 C-코드에서) 다음을 추종하며:
Figure pat00002
여기서 uiPosLastX 및 uiPosLastY 는 블록에서 변환 계수의 X 및 Y 로케이션에 대한 입력이며, uiWidth 는 블록의 폭 및 높이이고 (예시를 목적으로, 블록이 정방형이라고 가정함) uiScanPosLast 는 서브 블록 스캔 순서에서 계수의 포지션을 식별하는 출력이다. 변환 계수의 포지션이 알려진 후, 비디오 코더는 임의의 콘텍스트 의존성들이 존재하는지 여부를 결정할 수도 있다. 이러한 콘텍스트 의존성들이 존재하면, 비디오 코더는, 위에서 설명된 바와 같이, 콘텍스트 지원 이웃으로부터 하나 이상의 포지션들을 제거할 수도 있다.
본 개시물의 양태들에 따르면, 일부 콘텍스트 지원 이웃 포지션들이 제거되지 않을 수도 있다. 예를 들어, (예컨대, 블록의 좌측상부 코너에서의) DC 포지션이 도 13에 도시된 예로부터 제거된 콘텍스트 포지션을 여전히 사용할 수도 있다. 콘텍스트 지원 이웃으로부터 포지션을 제거할지 여부에 관한 결정은 (예컨대, "1" 또는 "0"인 현재 포지션의 더욱 정확한 추정으로 인한) 모든 포지션들을 콘텍스트 지원 이웃에 포함시킴으로써 얻어진 코딩 효율과 포지션들의 모두를 포함함으로써 도입된 레이턴시의 균형에 기초할 수도 있다. 더구나, 아래에서 도 14에 관해 설명되는 바와 같이, 서브 블록들의 모든 포지션들이 도 13에 관해 설명된 동일한 레이턴시 문제를 겪는 것은 아니다.
도 14는 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 다른 예를 도시하는 개념도이다. 예를 들어, 도 14는 복수의 서브 블록들 (4x4 서브 블록들, 굵은 테두리로 도시됨) 로 분할되어 있는 변환 계수들의 블록 (250) 과 현재 코딩되고 있는 변환 계수 포지션 (254) (짙은 블록) 을 통과하는 서브 블록들 내의 대각선으로 배향된 계수 스캔 순서를 예시한다. 도 14에 도시된 예는 5 개의 콘텍스트 지원 엘리먼트들 (음영을 넣은 블록들) 을 갖는 콘텍스트 지원 이웃 (256) 을 포함한다. 다시 말하면, 도 14에서의 콘텍스트 지원 이웃은 모두 5 개의 포지션들을 포함한다.
도 14에 도시된 콘텍스트 지원 이웃 (254) 은 모두 5 개의 콘텍스트 지원 이웃 포지션들을 포함할 수도 있는데, 도 13에 관해 설명된 콘텍스트 의존성 문제가 더 이상 존재하지 않기 때문이다. 예를 들어, 현재 포지션 (254) 직전에 스캔되고 코딩되는 포지션은 콘텍스트 지원 이웃 (256) 에 포함되지 않는다. 따라서, 위에서 설명된 콘텍스트 의존성 문제 및 연관된 폐 루프 레이턴시는 존재하지 않는다. 따라서, 위에서 언급된 바와 같은 일부 예들에서, 비디오 코더는 콘텍스트 지원 이웃으로부터 포지션들을 제거하기 전에 현재 코딩되고 있는 변환 계수의 포지션을 결정할 수도 있다.
도 15는 변환 계수들을 인코딩하기 위한 일 예의 비디오 인코딩 프로세스를 도시하는 흐름도이다. 이 방법은 도 1 및 도 2의 비디오 인코더 (20) 에 의해 수행될 수도 있다. 비디오 인코더 (20) 에 관해 설명되지만, 도 15에 관해 설명되는 기법들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들 등에 의해 수행될 수도 있다는 것이 이해되어야 한다.
비디오 인코더 (20) 는 변환 계수들의 블록을 복수의 서브 블록들로 분할할 수도 있다 (280). 일부 예들에서, 서브 블록들은 사이즈 4x4 변환 계수들일 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 더 크거나 또는 더 작은 서브 블록들을 형성할 수도 있다. 다시 말하면, 다른 예들에서, 서브 블록들의 사이즈는, 서브 블록 사이즈가 원본 블록 사이즈 이하인 한, 2x2, 8x8, 16x16, 또는 n x n일 수도 있다. 비디오 인코더 (20) 는 블록이 블록의 사이즈에 기초하여 분할되는 방법을 결정할 수도 있다. 이 예에서, 비디오 디코더 (이를테면 비디오 디코더 (30)) 는 블록을 그것의 사이즈에 기초하여 세분하는 방법을 유추할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 서브 블록들의 수 및/또는 사이즈를 인코딩된 비트스트림에서 (예컨대, 헤더, 파라미터 세트 등에서) 나타낼 수도 있다.
비디오 인코더 (20) 는 또한 복수의 서브 블록들에 대한 서브 블록 스캔 순서 및 복수의 서브 블록들 각각 내의 변환 계수들에 대한 계수 스캔 순서를 결정할 수도 있다 (282). 대체로, 서브 블록 스캔 순서는 복수의 서브 블록들 각각이 스캔되는 순서일 수도 있다. 계수 스캔 순서는 복수의 서브 블록들 각각 내의 변환 계수들이 스캔되는 순서일 수도 있다. 서브 블록 스캔 순서 및 계수 스캔 순서는 스캔 패턴 및 스캔 방향 양쪽 모두 (예컨대, 특정 방향을 갖는 대각선 스캔 패턴) 를 포함할 수도 있다. 예를 들어, 서브 블록 스캔 순서는 순방향 지그재그 스캔, 순방향 수평 스캔, 순방향 수직 스캔, 순방향 대각선 스캔, 역방향 지그재그 스캔, 역방향 수평 스캔, 역방향 수직 스캔, 및 역방향 대각선 스캔 중 하나일 수도 있다. 비슷하게, 계수 스캔 순서는 순방향 지그재그 스캔, 순방향 수평 스캔, 순방향 수직 스캔, 순방향 대각선 스캔, 역방향 지그재그 스캔, 역방향 수평 스캔, 역방향 수직 스캔, 및 역방향 대각선 스캔 중 하나일 수도 있다.
본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 서브 블록들 각각 내의 변환 계수들을 스캔하는데 사용된 계수 스캔 순서들에 일치하는 서브 블록 스캔 순서를 결정할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 서브 블록들 자체들을 스캔하기 위한 서브 블록 스캔 순서들과 동일한 서브 블록들 각각 내의 계수들을 스캔하기 위해 계수 스캔 순서를 사용할 수도 있다. 예시를 목적으로 하는 일 예에서, 도 10a 및 도 10b에 관해 설명된 바와 같이, 비디오 인코더 (20) 는 서브 블록 스캔 순서 및 계수 스캔 순서에 대해 역방향 대각선 배향을 결정할 수도 있다. 이 예에서, 스캔은 서브 블록의 우측하부 코너로부터 서브 블록들의 좌측상부 코너로의 계수 스캔 순서로 서브 블록들을 횡단하고, 블록의 우측하부 서브 블록으로부터 블록의 좌측상부 서브 블록으로의 서브 블록 스캔 순서로 서브 블록들 각각을 가로질러 대각선으로 스캔한다.
본 개시물의 다른 양태들에 따르면, 비디오 인코더 (20) 는 계수 스캔 순서 및/또는 서브 블록 스캔 순서를 적응적으로 결정할 수도 있다. 다시 말하면, 비디오 인코더 (20) 는 블록 사이즈, 인트라/인터 예측 모드, 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스), 또는 다른 비디오 코딩 특성들에 기초하여 블록에 대한 서브 블록 스캔 순서 및/또는 계수 스캔 순서를 선택할 수도 있다. 다른 예에서, 비디오 인코더 (20) 는 레이트-왜곡 분석에 기초하여 서브 블록 스캔 순서 및 계수 스캔 순서를 결정할 수도 있다. 이 경우, 비디오 인코더 (20) 는 디코더에서의 사용을 위한 서브 블록 스캔 순서 및 계수 스캔 순서를 나타내는 신택스 (예컨대, 블록 스캔 인덱스, 이를테면 위의 표 1에 도시된 것) 를 인코딩된 비트스트림에 포함시킬 수도 있다.
비디오 인코더 (20) 는 또한 변환 계수들의 1차원 어레이를 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 블록에 대해 스캔을 수행할 수도 있다 (284). 비디오 인코더 (20) 는 또한 변환 계수들의 1차원 어레이를 코딩할 수도 있다 (286). 일부 예들에서, 변환 계수들의 스캐닝 및 코딩은 인터리빙될 수도 있다. 다시 말하면, 변환 계수들은 (예컨대, 코딩 전에 블록의 모든 변환 계수들을 스캐닝하기보다는) 그 변환 계수들이 스캔되자마자 코딩될 수도 있다.
도 15에 관해 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 15의 방법의 단계들은 도 15에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 16은 일 예의 비디오 디코딩 프로세스를 도시하는 흐름도이다. 도 16의 방법은, 일부 예들에서, 도 1 및 도 3의 비디오 디코더 (30) 에 의해 수행될 수도 있다. 비디오 디코더 (30) 에 관해 설명되지만, 도 16에 관해 설명되는 기법들은 다양한 다른 프로세서들, 프로세싱 유닛들, 인코더/디코더들 (CODECs) 과 같은 하드웨어 기반 코딩 유닛들 등에 의해 수행될 수도 있다는 것이 이해되어야 한다.
비디오 디코더 (30) 는 변환 계수들의 1차원 어레이를 수신할 수도 있다 (300). 일부 예들에 따르면, 변환 계수들의 어레이는 복수의 서브 블록들에 따라 코딩될 수도 있다. 예를 들어, 서브 블록들은 사이즈 4x4 변환 계수들일 수도 있다. 다른 예들에서, 서브 블록들은, 서브 블록 사이즈가 원본 블록 사이즈 이하인 한, 2x2, 8x8, 16x16, 또는 n x n일 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 수신된 블록의 사이즈에 기초하여 (예컨대, 블록의 사이즈를 나타내는 수신된 신택스에 기초하여) 서브 블록들의 사이즈를 유추할 수도 있다. 다른 예들에서, 비디오 디코더 (30) 는 인코딩된 비트스트림에서 (예컨대, 헤더, 파라미터 세트 등에서) 서브 블록들의 수 및/또는 사이즈에 관한 표시를 수신할 수도 있다.
어느 경우나, 비디오 디코더 (30) 는 복수의 서브 블록들에 대한 서브 블록 스캔 순서 및 복수의 서브 블록들 각각 내의 변환 계수들에 대한 계수 스캔 순서를 결정할 수도 있다 (302). 서브 블록 스캔 순서 및 계수 스캔 순서는 스캔 패턴 및 스캔 방향 양쪽 모두 (예컨대, 특정 방향을 갖는 대각선 스캔 패턴) 를 포함할 수도 있다. 예를 들어, 서브 블록 스캔 순서는 순방향 지그재그 스캔, 순방향 수평 스캔, 순방향 수직 스캔, 순방향 대각선 스캔, 역방향 지그재그 스캔, 역방향 수평 스캔, 역방향 수직 스캔, 및 역방향 대각선 스캔 중 하나일 수도 있다. 비슷하게, 계수 스캔 순서는 순방향 지그재그 스캔, 순방향 수평 스캔, 순방향 수직 스캔, 순방향 대각선 스캔, 역방향 지그재그 스캔, 역방향 수평 스캔, 역방향 수직 스캔, 및 역방향 대각선 스캔 중 하나일 수도 있다.
본 개시물의 양태들에 따르면, 비디오 디코더 (30) 는 서브 블록들 각각 내의 변환 계수들을 스캔하는데 사용된 계수 스캔 순서들에 일치하는 서브 블록 스캔 순서를 결정할 수도 있다. 다시 말하면, 비디오 디코더 (30) 는 예컨대, 패턴 및 방향에서 서브 블록들 자체들을 스캔하기 위한 서브 블록 스캔 순서들과 동일한 서브 블록들 각각 내의 계수들을 스캔하기 위해 계수 스캔 순서를 사용할 수도 있다. 예시를 목적으로 하는 일 예에서, 도 10a 및 도 10b에 관해 설명된 바와 같이, 비디오 디코더 (30) 는 서브 블록 스캔 순서 및 계수 스캔 순서에 대해 역방향 대각선 배향을 결정할 수도 있다. 이 예에서, 스캔은 서브 블록의 우측하부 코너로부터 서브 블록들의 좌측상부 코너로의 계수 스캔 순서로 서브 블록들을 횡단하고, 블록의 우측하부 서브 블록으로부터 블록의 좌측상부 서브 블록으로의 서브 블록 스캔 순서로 서브 블록들 각각을 가로질러 대각선으로 스캔한다.
본 개시물의 다른 양태들에 따르면, 비디오 디코더 (30) 는 계수 스캔 순서 및/또는 서브 블록 스캔 순서를 적응적으로 결정할 수도 있다. 다시 말하면, 비디오 디코더 (30) 는 블록 사이즈, 인트라/인터 예측 모드, 이웃하는 블록의 정보 (예측 모드, 움직임 정보, 스캔 인덱스), 또는 다른 비디오 코딩 특성들에 기초하여 블록에 대한 서브 블록 스캔 순서 및/또는 계수 스캔 순서를 선택할 수도 있다. 다른 예에서, 비디오 디코더 (30) 는 서브 블록 스캔 순서 및 계수 스캔 순서를 나타내는 하나 이상의 신택스 엘리먼트들을 인코딩된 비트스트림에서 수신할 수도 있다.
비디오 디코더 (30) 는 또한 변환 계수들의 블록을 생성하기 위해 서브 블록 스캔 순서 및 계수 스캔 순서에 따라 변환 계수들의 1차원 어레이에 대해 스캔을 수행할 수도 있다 (304). 다시 말하면, 비디오 디코더는 서브 블록들을 복원하기 위해 수신된 변환 계수들을 계수 스캔 순서로 그리고 비디오 인코더에 의해 코딩된 변환 계수들의 2차원 블록을 복원하기 위해 서브 블록들 자체들을 서브 블록 스캔 순서로 스캔할 수도 있다. 그 다음에, 비디오 디코더 (30) 는 역 양자화하고 그 변환 계수들의 2차원 블록에 역 변환을 적용하여 잔차 값들을 생성할 수도 있다. 비디오 디코더는 그 다음에 잔차 값들을 예측 값들에 가산하여 코딩된 블록의 화소들을 복원할 수도 있다.
도 16에 관해 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 16의 방법의 단계들은 도 16에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
도 17은 비디오 데이터의 서브 블록의 변환 계수들을 콘텍스트 적응 코딩하는 일 예의 방법을 도시한다. 도 17에 도시된 예에서 비디오 코더 (이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30)) 는 처음에는 서브 블록 스캔 순서에서 현재 코딩되고 있는 변환 계수의 포지션을 결정할 수도 있다 (320). 다시 말하면, 비디오 코더는 현재 코딩되고 있는 변환 계수의 상대적 포지션 뿐만 아니라 변환 계수를 스캔하는데 사용되고 있는 스캔의 특정 배향을 결정할 수도 있다.
스캔 순서의 포지션 및 배향에 기초하여, 비디오 코더는 현재 코딩되고 있는 변환 계수를 콘텍스트 코딩하기 위해 임의의 콘텍스트 의존성들이 콘텍스트 지원 이웃에 존재하는지 여부를 결정할 수도 있다 (322). 예를 들어, 위에서 도 11 및 도 12에 관해 설명된 바와 같이, 몇몇 경우들에서, 서브 블록에서의 변환 계수 포지션에 대한 콘텍스트 지원 이웃은 현재 코딩되고 있는 변환 계수 직전에 코딩된 포지션에 의존할 수도 있다.
본 개시물의 양태들에 따르면, 비디오 코더는 병렬 콘텍스트 계산 파라미터들 (예컨대, 병렬로 코딩되고 있는 변환 계수들의 수) 에 기초하여 콘텍스트 의존성들을 제거할 수도 있다 (324). 다시 말하면, 위의 도 13의 예에서 도시된 바와 같이, 비디오 코더는 2 개의 변환 계수들이 병렬로 코딩되는 경우들에서의 콘텍스트 지원 이웃으로부터 현재 코딩되고 있는 변환 계수 직전의 포지션을 제거할 수도 있다. 다른 예들에서, 3 개의 이상의 포지션들이 콘텍스트 지원 이웃으로부터 제거될 수도 있다. 비디오 코더는 그 다음에 결정된 콘텍스트 지원 이웃을 (제거된 콘텍스트 의존성들을 가짐) 사용하여 현재 코딩되고 있는 변환 계수를 엔트로피 코딩할 수도 있다 (326).
도 17에 관해 도시되고 설명된 단계들은 단지 하나의 예로서 제공된다는 것이 이해되어야 한다. 다시 말하면, 도 17의 방법의 단계들은 도 17에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 부가적인, 또는 대안적 단계들이 수행될 수도 있다.
더구나, 예에 의존하여, 상이한 시퀀스로 수행될 수 있는 본원에서 설명된 방법들 중 임의의 방법의 소정의 액트들 또는 이벤트들이 부가되거나, 병합되거나, 또는 다 함께 제외될 수도 있다 (예컨대, 모든 설명된 액트들 또는 이벤트들이 방법의 실용화에 필요한 것은 아니다) 는 것이 이해되어야 한다. 더구나, 소정의 예들에서, 액트들 또는 이벤트들은 순차적으로라기 보다는, 예컨대, 다중 스레드식 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통하여 동시에 수행될 수도 있다. 덧붙여서, 본 개시물의 소정의 양태들이 명료함을 위해 단일 모듈 또는 유닛에 의해 수행되는 것으로 설명되어 있지만, 본 개시물의 기법들은 비디오 코더와 연관된 유닛들 또는 모듈들의 조합에 의해 수행될 수도 있다는 것이 이해되어야 한다.
하나 이상의 예들에서, 본 개시물에서 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하드웨어 기반 프로세싱 유닛, 이를테면 컴퓨터 판독가능 명령들 또는 코드의 형태로 소프트웨어를 실행하는 하나 이상의 프로세서들에 의해 수행될 수도 있다. 이러한 명령들 또는 코드는 컴퓨터 판독가능 매체 상에 저장되거나 또는 그것을 통해 송신되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 (tangible) 비일시적 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예컨대 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적 (non-transitory) 인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 임의의 다른 솔리드 스테이트, 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 스토리지 디바이스들을 포함한 광학적 또는 자기적 데이터 스토리지 매체들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 적외선, 라디오, 및/또는 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 매체의 정의에는 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들이 포함된다. 그러나, 유형의 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고, 그 대신 비일시적 (non-transient), 유형의 저장 매체들을 지향하고 있음이 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc; CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 들은 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 상기한 것들의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 본원에서 사용되는 바와 같은 용어 "프로세서"는 앞서의 구조 또는 본원에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 말할 수도 있다. 덧붙여서, 일부 양태들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되는, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들 내에 완전히 구현될 수 있다.
본 개시물의 기법들은 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 이른바 스마트폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들 등을 포함하여, 매우 다양한 디바이스들 또는 장치들에 의해 수행될 수도 있다. 많은 경우들에서, 이러한 디바이스들은 무선 통신을 위해 장착될 수도 있다. 덧붙여서, 이러한 기법들은 집적회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 에 의해 구현될 수도 있다. 본 개시물의 기법들을 수행하도록 구성된 디바이스는 위에서 언급된 디바이스들 중 임의의 것을 포함할 수도 있고, 일부 경우들에서, 비디오 인코더 또는 비디오 디코더, 또는 하드웨어, 소프트웨어, 및 펌웨어의 조합에 의해 형성될 수도 있는 결합형 비디오 인코더-디코더, 즉, 비디오 코덱일 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명될 수도 있지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 조합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (52)

  1. 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법으로서,
    인코딩된 비트스트림으로부터, 변환 계수들의 블록과 연관된 변환 계수들의 1차원 어레이를 획득하는 단계;
    변환 계수들의 상기 블록에 대하여 변환 계수들의 복수의 서브 블록들을 결정하는 단계로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 복수의 서브 블록들을 결정하는 단계;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하는 단계;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 상기 1차원 어레이를 스캔하는 단계로서, 상기 스캔하는 단계는, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 것과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 것을 포함하는, 상기 1차원 어레이를 스캔하는 단계; 및
    변환 계수들의 상기 블록을 디코딩하는 단계
    를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 단계가 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 우측하부 코너로부터 좌측상부 코너로 역방향 대각선으로 스캔하는 단계, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 우측하부 서브 블록으로부터 상기 블록의 좌측상부 서브 블록으로 대각선으로 스캔하는 단계를 포함하도록, 역방향 대각선 배향을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 단계가 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 좌측상부 코너로부터 우측하부 코너로 순방향 대각선으로 스캔하는 단계, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 좌측상부 서브 블록으로부터 상기 블록의 우측하부 서브 블록으로 대각선으로 스캔하는 단계를 포함하도록, 순방향 대각선 배향을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 스캔하는 단계는, 상기 복수의 서브 블록들 중 상기 변환 계수들의 어레이의 마지막 유의 계수를 포함하는 서브 블록에서 상기 스캔하는 단계를 시작하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 스캔하는 단계는, 상기 계수 스캔 순서에서의 마지막 유의 계수로부터 상기 복수의 서브 블록들 각각에서 상기 스캔하는 단계를 시작하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 스캔하는 단계는, 상기 복수의 서브 블록들 중 다음 서브 블록의 변환 계수들과 연관된 빈들을 상기 서브 블록 스캔 순서로 스캔하기 전에 상기 복수의 서브 블록들 중 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 스캔하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 스캔하는 단계는, 상기 변환 계수 레벨 정보를 스캔하기 전에 상기 유의성 정보를 스캔하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 통합된 대각선 스캔을 결정하는 단계는, 레이트-왜곡 메트릭, 블록 사이즈, 예측 모드, 및 이웃하는 블록과 연관된 정보 중 하나에 기초하여 상기 통합된 대각선 스캔을 선택하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 변환 계수들의 1차원 어레이를 디코딩하는 단계는, 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 디코딩하는 단계를 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 디코딩하기 위한 콘텍스트를 결정하는 단계로서, 상기 콘텍스트는 상기 블록에서 현재 디코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하는 단계를 더 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 방법.
  11. 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치로서,
    변환 계수들의 1차원 어레이를 저장하도록 구성된 메모리; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    인코딩된 비트스트림으로부터, 변환 계수들의 상기 1차원 어레이를 획득하고;
    변환 계수들의 블록에 대하여 변환 계수들의 복수의 서브 블록들을 결정하는 것으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 복수의 서브 블록들을 결정하고;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하고;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 상기 1차원 어레이를 스캔하는 것으로서, 상기 스캔하는 것은, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 것과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 것을 포함하는, 상기 1차원 어레이를 스캔하며; 그리고
    변환 계수들의 상기 블록을 디코딩하도록 구성된, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  12. 제 11 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 것이 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 우측하부 코너로부터 좌측상부 코너로 역방향 대각선으로 스캔하는 것, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 우측하부 서브 블록으로부터 상기 블록의 좌측상부 서브 블록으로 대각선으로 스캔하는 것을 포함하도록, 역방향 대각선 배향을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  13. 제 11 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 것이 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 좌측상부 코너로부터 우측하부 코너로 순방향 대각선으로 스캔하는 것, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 좌측상부 서브 블록으로부터 상기 블록의 우측하부 서브 블록으로 대각선으로 스캔하는 것을 포함하도록, 순방향 대각선 배향을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  14. 제 11 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 복수의 서브 블록들 중 상기 변환 계수들의 어레이의 마지막 유의 계수를 포함하는 서브 블록에서 상기 스캔을 시작하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  15. 제 11 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 계수 스캔 순서에서의 마지막 유의 계수로부터 상기 복수의 서브 블록들 각각에서 상기 스캔을 시작하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  16. 제 11 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 복수의 서브 블록들 중 다음 서브 블록의 변환 계수들과 연관된 빈들을 상기 서브 블록 스캔 순서로 스캔하기 전에 상기 복수의 서브 블록들 중 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 스캔하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  17. 제 11 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 블록에 대한 변환 계수 레벨 빈들을 스캔하기 전에 상기 블록에 대한 유의성 빈들을 스캔하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  18. 제 11 항에 있어서,
    상기 통합된 대각선 스캔을 결정하기 위해, 상기 하나 이상의 프로세서들은 레이트-왜곡 메트릭, 블록 사이즈, 예측 모드, 및 이웃하는 블록과 연관된 정보 중 하나에 기초하여 상기 통합된 대각선 스캔을 선택하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  19. 제 11 항에 있어서,
    상기 변환 계수들의 1차원 어레이를 디코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 디코딩하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  20. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 :
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 디코딩하기 위한 콘텍스트를 결정하는 것으로서, 상기 콘텍스트는 상기 블록에서 현재 디코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하도록 구성되는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  21. 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치로서,
    인코딩된 비트스트림으로부터, 변환 계수들의 블록과 연관된 변환 계수들의 1차원 어레이를 획득하는 수단;
    변환 계수들의 상기 블록에 대하여 변환 계수들의 복수의 서브 블록들을 결정하는 수단으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 복수의 서브 블록들을 결정하는 수단;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하는 수단;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 상기 1차원 어레이를 스캔하는 수단으로서, 상기 스캔하는 수단은, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 수단과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 수단을 포함하는, 상기 1차원 어레이를 스캔하는 수단; 및
    변환 계수들의 상기 블록을 디코딩하는 수단
    을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  22. 제 21 항에 있어서,
    상기 디코딩하는 수단은, 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 디코딩하는 수단을 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  23. 제 22 항에 있어서,
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 디코딩하기 위한 콘텍스트를 결정하는 수단으로서, 상기 콘텍스트는 상기 블록에서 현재 디코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하는 수단을 더 포함하는, 비디오 디코딩 프로세스에서 변환 계수들을 디코딩하는 장치.
  24. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금 :
    인코딩된 비트스트림으로부터, 변환 계수들의 1차원 어레이를 획득하도록 하고,
    변환 계수들의 블록에 대하여 변환 계수들의 복수의 서브 블록들을 결정하도록 하는 것으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 복수의 서브 블록들을 결정하도록 하고;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하도록 하고;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 상기 1차원 어레이를 스캔하도록 하는 것으로서, 상기 스캔하는 것은, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 것과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 것을 포함하는, 상기 1차원 어레이를 스캔하도록 하며; 그리고
    변환 계수들의 상기 블록을 디코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 명령들은 또한, 상기 하나 이상의 프로세서들로 하여금, 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 디코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  26. 제 25 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 :
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 디코딩하기 위한 콘텍스트를 결정하도록 하는 명령들로서, 상기 콘텍스트는 상기 블록에서 현재 디코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하도록 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  27. 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법으로서,
    변환 계수들의 블록을 복수의 서브 블록들로 분할하는 단계로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 분할하는 단계;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하는 단계;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 블록을 스캔하는 단계로서, 상기 스캔하는 단계는, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 것과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 것을 포함하는, 상기 블록을 스캔하는 단계; 및
    상기 변환 계수들의 1차원 어레이를 인코딩하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  28. 제 27 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 단계가 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 우측하부 코너로부터 좌측상부 코너로 역방향 대각선으로 스캔하는 단계, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 우측하부 서브 블록으로부터 상기 블록의 좌측상부 서브 블록으로 대각선으로 스캔하는 단계를 포함하도록, 역방향 대각선 배향을 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  29. 제 27 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 단계가 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 좌측상부 코너로부터 우측하부 코너로 순방향 대각선으로 스캔하는 단계, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 좌측상부 서브 블록으로부터 상기 블록의 우측하부 서브 블록으로 대각선으로 스캔하는 단계를 포함하도록, 순방향 대각선 배향을 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  30. 제 27 항에 있어서,
    상기 스캔하는 단계는, 상기 복수의 서브 블록들 중 상기 변환 계수들의 어레이의 마지막 유의 계수를 포함하는 서브 블록에서 상기 스캔하는 단계를 시작하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  31. 제 27 항에 있어서,
    상기 스캔하는 단계는, 상기 계수 스캔 순서에서의 마지막 유의 계수로부터 상기 복수의 서브 블록들 각각에서 상기 스캔하는 단계를 시작하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  32. 제 27 항에 있어서,
    상기 스캔하는 단계는, 상기 복수의 서브 블록들 중 다음 서브 블록의 변환 계수들과 연관된 빈들을 상기 서브 블록 스캔 순서로 스캔하기 전에 상기 복수의 서브 블록들 중 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 스캔하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  33. 제 27 항에 있어서,
    상기 스캔하는 단계는, 상기 변환 계수 레벨 정보를 스캔하기 전에 상기 유의성 정보를 스캔하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  34. 제 27 항에 있어서,
    상기 통합된 대각선 스캔을 결정하는 단계는, 레이트-왜곡 메트릭, 블록 사이즈, 예측 모드, 및 이웃하는 블록과 연관된 정보 중 하나에 기초하여 상기 통합된 대각선 스캔을 선택하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  35. 제 27 항에 있어서,
    상기 인코딩하는 단계는, 콘텍스트 적응 이진 산술 인코딩하는 단계를 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  36. 제 35 항에 있어서,
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 인코딩하기 위한 콘텍스트를 결정하는 단계로서, 상기 콘텍스트는 상기 블록에서 현재 인코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하는 단계를 더 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 방법.
  37. 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치로서,
    변환 계수들의 블록을 저장하도록 구성된 메모리; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    변환 계수들의 상기 블록을 복수의 서브 블록들로 분할하는 것으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 변환 계수들의 블록을 복수의 서브 블록들로 분할하고;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하고;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 블록을 스캔하는 것으로서, 상기 블록을 스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하도록, 그리고 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하도록 구성되는, 상기 블록을 스캔하고; 그리고,
    상기 변환 계수들의 1차원 어레이를 인코딩하도록 구성된, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  38. 제 37 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 것이 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 우측하부 코너로부터 좌측상부 코너로 역방향 대각선으로 스캔하는 것, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 우측하부 서브 블록으로부터 상기 블록의 좌측상부 서브 블록으로 대각선으로 스캔하는 것을 포함하도록, 역방향 대각선 배향을 포함하는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  39. 제 37 항에 있어서,
    상기 대각선 스캔은, 상기 스캔하는 것이 상기 복수의 서브 블록들의 각각의 서브 블록의 변환 계수들을 상기 복수의 서브 블록들의 각각의 서브 블록의 좌측상부 코너로부터 우측하부 코너로 순방향 대각선으로 스캔하는 것, 및 상기 복수의 서브 블록들 각각을 가로질러 상기 블록의 좌측상부 서브 블록으로부터 상기 블록의 우측하부 서브 블록으로 대각선으로 스캔하는 것을 포함하도록, 순방향 대각선 배향을 포함하는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  40. 제 37 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 복수의 서브 블록들 중 상기 변환 계수들의 어레이의 마지막 유의 계수를 포함하는 서브 블록에서 상기 스캔을 시작하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  41. 제 37 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 계수 스캔 순서에서의 마지막 유의 계수로부터 상기 복수의 서브 블록들 각각에서 상기 스캔을 시작하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  42. 제 37 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 복수의 서브 블록들 중 다음 서브 블록의 변환 계수들과 연관된 빈들을 상기 서브 블록 스캔 순서로 스캔하기 전에 상기 복수의 서브 블록들 중 현재 서브 블록의 변환 계수들과 연관된 모든 빈들을 스캔하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  43. 제 37 항에 있어서,
    스캔하기 위해, 상기 하나 이상의 프로세서들은 상기 변환 계수 레벨 정보를 스캔하기 전에 상기 유의성 정보를 스캔하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  44. 제 37 항에 있어서,
    상기 통합된 대각선 스캔을 결정하기 위해, 상기 하나 이상의 프로세서들은 레이트-왜곡 메트릭, 블록 사이즈, 예측 모드, 및 이웃하는 블록과 연관된 정보 중 하나에 기초하여 상기 통합된 대각선 스캔을 선택하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  45. 제 37 항에 있어서,
    인코딩하기 위해, 상기 하나 이상의 프로세서들은 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 인코딩하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  46. 제 45 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 :
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 인코딩하기 위한 콘텍스트를 결정하는 것으로서, 상기 콘텍스트는 상기 블록에서 현재 인코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하도록 구성되는, 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  47. 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치로서,
    변환 계수들의 블록을 복수의 서브 블록들로 분할하는 수단으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 분할하는 수단;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하는 수단;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 블록을 스캔하는 수단으로서, 상기 스캔하는 수단은, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 수단과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 수단을 포함하는, 상기 블록을 스캔하는 수단; 및
    상기 변환 계수들의 1차원 어레이를 인코딩하는 수단을 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  48. 제 47 항에 있어서,
    상기 인코딩하는 수단은, 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 인코딩하는 수단을 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  49. 제 48 항에 있어서,
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 인코딩하기 위한 콘텍스트를 결정하는 수단으로서, 상기 콘텍스트는 상기 블록에서 현재 인코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하는 수단을 더 포함하는, 비디오 인코딩 프로세스에서 변환 계수들을 인코딩하는 장치.
  50. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금 :
    변환 계수들의 블록을 복수의 서브 블록들로 분할하도록 하는 것으로서, 상기 복수의 서브 블록들의 각 서브 블록은 동일한 사이즈를 갖는, 상기 분할하도록 하고;
    각각의 서브 블록들의 변환 계수들의 유의성 정보, 각각의 서브 블록들의 변환 계수들의 계수 레벨 정보 및 상기 복수의 서브 블록들을 스캔하기 위한 통합된 대각선 스캔을 결정하도록 하고;
    상기 통합된 대각선 스캔에 따라 변환 계수들의 블록을 스캔하도록 하는 것으로서, 상기 스캔하는 것은, 상기 복수의 서브 블록들의 각 서브 블록에 대하여 상기 통합된 대각선 스캔을 사용하여 상기 변환 계수들의 유의성 정보 및 상기 변환 계수들의 계수 레벨 정보를 스캔하는 것과 변환 계수들의 상기 블록을 생성하기 위해 상기 통합된 대각선 스캔을 사용하여 상기 복수의 서브 블록들을 스캔하는 것을 포함하는, 상기 블록을 스캔하도록 하고; 그리고
    상기 변환 계수들의 1차원 어레이를 인코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  51. 제 50 항에 있어서,
    상기 명령들은 또한, 상기 하나 이상의 프로세서들로 하여금, 상기 변환 계수들의 1차원 어레이를 콘텍스트 적응 이진 산술 인코딩하도록 하는, 컴퓨터 판독가능 저장 매체.
  52. 제 51 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 :
    상기 변환 계수들과 연관된 상기 유의성 정보를 병렬로 인코딩하기 위한 콘텍스트를 결정하도록 하는 명령들로서, 상기 콘텍스트는 상기 블록에서 현재 인코딩되고 있는 변환 계수의 포지션에 기초하여 가변하는, 상기 콘텍스트를 결정하도록 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020167011046A 2011-07-19 2012-07-18 비디오 코딩에서의 계수 스캐닝 KR101814308B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201161509522P 2011-07-19 2011-07-19
US61/509,522 2011-07-19
US201161509926P 2011-07-20 2011-07-20
US61/509,926 2011-07-20
US201161550829P 2011-10-24 2011-10-24
US61/550,829 2011-10-24
US201161554292P 2011-11-01 2011-11-01
US61/554,292 2011-11-01
US13/551,458 US9756360B2 (en) 2011-07-19 2012-07-17 Coefficient scanning in video coding
US13/551,458 2012-07-17
PCT/US2012/047220 WO2013012930A1 (en) 2011-07-19 2012-07-18 Coefficient scanning in video coding

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147004034A Division KR20140037264A (ko) 2011-07-19 2012-07-18 비디오 코딩에서의 계수 스캐닝

Publications (2)

Publication Number Publication Date
KR20160052789A true KR20160052789A (ko) 2016-05-12
KR101814308B1 KR101814308B1 (ko) 2018-01-02

Family

ID=46582083

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167011046A KR101814308B1 (ko) 2011-07-19 2012-07-18 비디오 코딩에서의 계수 스캐닝
KR1020147004034A KR20140037264A (ko) 2011-07-19 2012-07-18 비디오 코딩에서의 계수 스캐닝

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147004034A KR20140037264A (ko) 2011-07-19 2012-07-18 비디오 코딩에서의 계수 스캐닝

Country Status (15)

Country Link
US (1) US9756360B2 (ko)
EP (1) EP2735151A1 (ko)
JP (2) JP2014525200A (ko)
KR (2) KR101814308B1 (ko)
CN (1) CN103703776B (ko)
AU (1) AU2012284103B2 (ko)
BR (1) BR112014001056B1 (ko)
CA (1) CA2841957C (ko)
IL (1) IL230254A (ko)
MX (1) MX347063B (ko)
MY (1) MY166576A (ko)
RU (1) RU2604421C2 (ko)
TW (1) TWI507017B (ko)
WO (1) WO2013012930A1 (ko)
ZA (1) ZA201401155B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019027241A1 (ko) * 2017-07-31 2019-02-07 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019050299A1 (ko) * 2017-09-06 2019-03-14 가온미디어 주식회사 변화계수 서브그룹 스캐닝 방법에 따른 부/복호화 방법 및 장치

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101441903B1 (ko) * 2008-10-16 2014-09-24 에스케이텔레콤 주식회사 참조 프레임 생성 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
EP2735154A1 (en) * 2011-07-22 2014-05-28 Motorola Mobility LLC Device and methods for scanning rectangular-shaped transforms in video coding
CN107835419B (zh) * 2011-10-18 2021-05-14 株式会社Kt 视频信号解码方法
US20130114687A1 (en) * 2011-11-07 2013-05-09 Sharp Laboratories Of America, Inc. Fixed intra run-level mode for cavlc in hevc
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
US20130188736A1 (en) 2012-01-19 2013-07-25 Sharp Laboratories Of America, Inc. High throughput significance map processing for cabac in hevc
US10616581B2 (en) 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US9654139B2 (en) 2012-01-19 2017-05-16 Huawei Technologies Co., Ltd. High throughput binarization (HTB) method for CABAC in HEVC
US9860527B2 (en) 2012-01-19 2018-01-02 Huawei Technologies Co., Ltd. High throughput residual coding for a transform skipped block for CABAC in HEVC
US9363510B2 (en) 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding
US9621921B2 (en) 2012-04-16 2017-04-11 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
US11025922B2 (en) * 2012-06-13 2021-06-01 Texas Instruments Incorporated Inverse transformation using pruning for video coding
US9350998B2 (en) 2012-06-29 2016-05-24 Qualcomm Incorporated Coding of significance flags
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
US20150312571A1 (en) * 2012-11-29 2015-10-29 Lg Electronics Inc. Method and device for encoding/ decoding image supporting plurality of layers
EP2946552B1 (en) * 2013-01-16 2018-03-21 BlackBerry Limited Context determination for entropy coding of run-length encoded transform coefficients
WO2014110651A1 (en) * 2013-01-16 2014-07-24 Blackberry Limited Transform coefficient coding for context-adaptive binary entropy coding of video
US20140269896A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Multi-Frame Compression
JP6033725B2 (ja) * 2013-03-28 2016-11-30 Kddi株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、およびプログラム
US9554152B2 (en) 2013-07-12 2017-01-24 Qualcomm Incorporated Concurrent processing of horizontal and vertical transforms
RU2624464C1 (ru) 2013-07-24 2017-07-04 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Порядки сканирования для кодирования без преобразования
GB2518823A (en) * 2013-09-25 2015-04-08 Sony Corp Data encoding and decoding
US9716884B2 (en) * 2014-03-20 2017-07-25 Hfi Innovation Inc. Method of signaling for mode selection in 3D and multi-view video coding
CN104581173A (zh) * 2015-01-13 2015-04-29 中国电子科技集团公司第三十二研究所 软解码验证模型平台
US10158874B2 (en) * 2015-09-30 2018-12-18 Apple Inc. Parallel bypass and regular bin coding
SG11201806810YA (en) * 2016-02-12 2018-09-27 Huawei Tech Co Ltd Method and apparatus for scan order selection
KR102159252B1 (ko) * 2016-02-12 2020-10-14 후아웨이 테크놀러지 컴퍼니 리미티드 스캔 순서 선택을 위한 방법 및 장치
EP3453174A1 (en) 2016-05-06 2019-03-13 VID SCALE, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
CN114222138A (zh) * 2016-05-28 2022-03-22 世宗大学校产学协力团 视频信号的解码装置
US10798375B2 (en) * 2016-11-01 2020-10-06 Samsung Electronics Co., Ltd. Encoding method and device therefor, and decoding method and device therefor
US10834402B2 (en) * 2017-01-20 2020-11-10 Nec Corporation Quantization device, method, and recording medium for parallel processing transform coefficients
US10244261B2 (en) * 2017-01-26 2019-03-26 Google Llc Transform coefficient coding using level maps
KR20220127948A (ko) * 2017-03-22 2022-09-20 한양대학교 산학협력단 적응적인 화소 분류 기준에 따른 인루프 필터링 방법
KR102558015B1 (ko) * 2017-04-13 2023-07-21 엘지전자 주식회사 영상의 부호화/복호화 방법 및 이를 위한 장치
CN109842803B (zh) * 2018-09-19 2021-06-29 华为技术有限公司 一种图像压缩的方法及装置
WO2020139016A2 (ko) * 2018-12-27 2020-07-02 엘지전자 주식회사 영상 코딩 시스템에서 레지듀얼 재배열을 사용하는 영상 디코딩 방법 및 그 장치
MX2022006140A (es) 2019-11-26 2022-08-22 Fraunhofer Ges Forschung Conceptos de codificacion para representacion transformada de bloque de muestra.
US11765370B2 (en) * 2021-07-27 2023-09-19 Mediatek Inc. Video residual decoding apparatus using neighbor storage device with smaller storage size to store neighbor data for context selection and associated method
CN114513661B (zh) * 2022-04-20 2022-09-06 宁波康达凯能医疗科技有限公司 一种基于方向检测的帧内图像模式决策方法与系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821119A (en) 1988-05-04 1989-04-11 Bell Communications Research, Inc. Method and apparatus for low bit-rate interframe video coding
KR0181032B1 (ko) 1995-03-20 1999-05-01 배순훈 인터리빙을 이용한 물체 기반 부호화방법 및 장치
ITRM20010088A1 (it) 2001-02-21 2002-08-21 Idi Irccs Peptide in grado di inibire l'attivita' del fattore di crescita derivato dalle piastrine (pdgf-bb) e del fattore di crescita derivato dai fi
US6870963B2 (en) 2001-06-15 2005-03-22 Qualcomm, Inc. Configurable pattern optimizer
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7190840B2 (en) 2002-01-07 2007-03-13 Hewlett-Packard Development Company, L.P. Transform coefficient compression using multiple scans
KR100472381B1 (ko) 2002-07-18 2005-03-10 삼성에스디에스 주식회사 티켓 낱장 인출장치
US7688894B2 (en) * 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US8311119B2 (en) * 2004-12-31 2012-11-13 Microsoft Corporation Adaptive coefficient scan order
JP2007096479A (ja) 2005-09-27 2007-04-12 Nippon Telegr & Teleph Corp <Ntt> 階層間予測符号化方法および装置,階層間予測復号方法および装置,並びにそれらのプログラムおよび記録媒体
CN101292537B (zh) * 2005-11-08 2010-10-20 松下电器产业株式会社 运动图像编码方法、运动图像解码方法以及装置
CN101155302B (zh) 2006-09-25 2012-03-07 张燕生 一种基于对图像块数据旋转及变换的视频编解码方法
CN101543079B (zh) * 2007-03-28 2012-07-25 松下电器产业株式会社 解码电路、解码方法、编码电路以及编码方法
US8619874B2 (en) 2007-04-13 2013-12-31 Apple Inc. Method and system for video encoding and decoding
US8488668B2 (en) 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
US7710296B2 (en) 2007-09-19 2010-05-04 Texas Instruments Incorporated N-bin arithmetic coding for context adaptive binary arithmetic coding
KR20090097013A (ko) 2008-03-10 2009-09-15 삼성전자주식회사 영상 부호화장치 및 영상 복호화장치
KR101591825B1 (ko) 2008-03-27 2016-02-18 엘지전자 주식회사 비디오 신호의 인코딩 또는 디코딩 방법 및 장치
US8902972B2 (en) 2008-04-11 2014-12-02 Qualcomm Incorporated Rate-distortion quantization for context-adaptive variable length coding (CAVLC)
US8179974B2 (en) * 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US7932843B2 (en) 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US20110249755A1 (en) * 2008-12-16 2011-10-13 Youji Shibahara Moving image coding method, moving image decoding method, moving image coding apparatus, moving image decoding apparatus, program, and integrated circuit
EP2216998A1 (en) 2009-02-10 2010-08-11 Panasonic Corporation Hierarchical coding for intra
KR101457894B1 (ko) * 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
US20110243220A1 (en) * 2010-04-05 2011-10-06 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order
ES2784509T3 (es) 2010-04-13 2020-09-28 Ge Video Compression Llc Codificación de mapas de significado y bloques de coeficiente de transformada
CN102884792B (zh) * 2010-05-12 2016-08-17 汤姆森许可贸易公司 用于统一显著图编码的方法和设备
DK3101901T3 (en) * 2010-07-09 2017-09-18 Samsung Electronics Co Ltd Method of entropy decoding transformation coefficients
DE102010035510A1 (de) 2010-08-25 2012-03-01 Areva Np Gmbh Verfahren zur Druckentlastung eines Kernkraftwerks, Druckentlastungssystem für ein Kernkraftwerk sowie zugehöriges Kernkraftwerk
US9154801B2 (en) * 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US20130343454A1 (en) * 2011-01-07 2013-12-26 Agency For Science, Technology And Research Method and an apparatus for coding an image
US9414056B2 (en) * 2011-01-13 2016-08-09 Samsung Electronics Co., Ltd. Video-encoding method and apparatus for same and video-decoding method and apparatus for same using a selective scan mode
US8953690B2 (en) * 2011-02-16 2015-02-10 Google Technology Holdings LLC Method and system for processing video data
US9338449B2 (en) * 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
US8446301B2 (en) * 2011-04-15 2013-05-21 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
US20130003857A1 (en) * 2011-06-29 2013-01-03 General Instrument Corporation Methods and system for using a scan coding pattern during inter coding

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019027241A1 (ko) * 2017-07-31 2019-02-07 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20190013666A (ko) * 2017-07-31 2019-02-11 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20220136329A (ko) * 2017-07-31 2022-10-07 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11805256B2 (en) 2017-07-31 2023-10-31 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium storing bitstream
WO2019050299A1 (ko) * 2017-09-06 2019-03-14 가온미디어 주식회사 변화계수 서브그룹 스캐닝 방법에 따른 부/복호화 방법 및 장치

Also Published As

Publication number Publication date
TWI507017B (zh) 2015-11-01
US20130051475A1 (en) 2013-02-28
AU2012284103A1 (en) 2014-02-13
ZA201401155B (en) 2019-10-30
RU2014106068A (ru) 2015-08-27
TW201313028A (zh) 2013-03-16
MY166576A (en) 2018-07-17
CA2841957A1 (en) 2013-01-24
JP2014525200A (ja) 2014-09-25
CN103703776A (zh) 2014-04-02
RU2604421C2 (ru) 2016-12-10
MX347063B (es) 2017-04-11
CA2841957C (en) 2017-10-10
WO2013012930A9 (en) 2014-09-18
KR101814308B1 (ko) 2018-01-02
EP2735151A1 (en) 2014-05-28
KR20140037264A (ko) 2014-03-26
JP2016189598A (ja) 2016-11-04
BR112014001056A2 (pt) 2017-02-21
IL230254A (en) 2017-09-28
MX2014000718A (es) 2014-02-27
BR112014001056B1 (pt) 2022-11-01
JP6193446B2 (ja) 2017-09-06
WO2013012930A1 (en) 2013-01-24
AU2012284103B2 (en) 2016-03-10
US9756360B2 (en) 2017-09-05
CN103703776B (zh) 2017-09-15

Similar Documents

Publication Publication Date Title
KR101814308B1 (ko) 비디오 코딩에서의 계수 스캐닝
KR101662375B1 (ko) 비디오 코딩을 위한 변환 계수들의 코딩
KR101721302B1 (ko) 비디오 코딩에서 변환 계수 데이터를 코딩하기 위한 콘텍스트들의 결정
US9497472B2 (en) Parallel context calculation in video coding
KR101590237B1 (ko) 변환 계수들에 대한 함수-기반의 스캐닝 순서를 이용한 비디오 코딩
KR101656964B1 (ko) 비디오 코딩을 위한 변환 계수들의 코딩
KR101618484B1 (ko) 인트라 모드 비디오 코딩
US9445093B2 (en) Multiple zone scanning order for video coding
KR20130095289A (ko) 조인트 콘텍스트 모델을 사용한 계수들의 엔트로피 코딩
KR20130095293A (ko) 비디오 코딩을 위한 변환 계수들의 적응적 스캐닝

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant