KR20130048153A - 파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩 - Google Patents

파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩 Download PDF

Info

Publication number
KR20130048153A
KR20130048153A KR1020120117887A KR20120117887A KR20130048153A KR 20130048153 A KR20130048153 A KR 20130048153A KR 1020120117887 A KR1020120117887 A KR 1020120117887A KR 20120117887 A KR20120117887 A KR 20120117887A KR 20130048153 A KR20130048153 A KR 20130048153A
Authority
KR
South Korea
Prior art keywords
context
importance map
bit position
bit
transform unit
Prior art date
Application number
KR1020120117887A
Other languages
English (en)
Other versions
KR101418649B1 (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 KR20130048153A publication Critical patent/KR20130048153A/ko
Application granted granted Critical
Publication of KR101418649B1 publication Critical patent/KR101418649B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

비디오 데이터를 인코딩 및 디코딩하는 방법이 개시되고, 여기에서 중요도 맵은 맵을 부분품으로 공간적으로 불균일하게 분할하는 것을 이용하여 인코드 및 디코드되고, 각 부분품 내의 비트 위치는 주어진 콘텍스트와 연관된다. 예시적인 파티션 집합 및 소정의 파티션 집합으로부터 선택하고 그 선택을 디코더에 전달하는 처리가 개시된다.

Description

파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩{SIGNIFICANCE MAP ENCODING AND DECODING USING PARTITION SELECTION}
저작권 고지
이 문서의 설명의 일부 및 첨부 자료는 저작권 주장이 있는 자료를 포함한다. 저작권 소유자는 특허 문서 또는 특허 명세서가 특허 상표청 파일로 나타날 때 그 특허 문서 또는 특허 명세서를 누군가가 모사 복제하는 것을 반대하지 않지만, 다른 모든 저작권은 어떻게든 보유한다.
기술 분야
본 발명은 일반적으로 데이터 압축에 관한 것이고, 특히 파티션(partition) 선택을 이용하여 비디오의 중요도 맵(significance map)을 인코딩 및 디코딩하는 방법 및 장치에 관한 것이다.
데이터 압축은 다수의 콘텍스트(context)에서 발생한다. 데이터 압축은 통신 및 컴퓨터 네트워킹에서 정보를 효율적으로 저장, 전송 및 복제하기 위해 매우 일반적으로 사용되고 있다. 데이터 압축은 이미지, 오디오 및 비디오의 인코딩시에 특수한 응용을 발견한다. 비디오는 각 비디오 프레임에 필요한 다량의 데이터 및 가끔 인코딩 및 디코딩시에 필요한 속도 때문에 데이터 압축에 중요한 해결사항(challenge)을 제시한다. 현재의 최신식의 비디오 인코딩은 ITU-T H.264/AVC 비디오 부호화 표준이다. 이 부호화 표준은 메인 프로필, 베이스라인 프로필 등을 포함해서 서로 다른 응용에 대하여 다수의 서로 다른 프로필을 규정한다. 차세대 비디오 인코딩 표준은 MPEG-ITU:고효율성 비디오 부호화(High Efficiency Video Coding; HEVC)의 공동 발의를 통하여 현재 개발중에 있다.
이미지 및 비디오를 인코딩/디코딩하는 데는 블록 기반 부호화 처리를 이용하는 H.264를 비롯해서 다수의 표준이 있다. 이러한 처리에 있어서, 이미지 또는 프레임은 다수의 블록, 전형적으로 4×4 또는 8×8의 블록으로 나누어지고, 각 블록은 계수로 스펙트럼적으로 변환되고 양자화되고 엔트로피 인코드된다. 많은 경우에, 변환되는 데이터는 실제의 픽셀 데이터가 아니고, 예측 동작을 따르는 잔류 데이터이다. 예측(prediction)은 프레임내(intra-frame), 즉 프레임/이미지 내에서 블록 대 블록이거나, 또는 프레임간(inter-frame), 즉 프레임들 사이(모션 예측이라고도 부름)일 수 있다. HEVC(H.265라고도 부름)도 또한 이러한 특징을 갖는 것으로 기대된다.
잔류 데이터를 스펙트럼적으로 변환할 때, 상기 많은 표준들은 이산 코사인 변환(discrete cosine transform; DCT) 또는 그 어떤 변형체의 이용을 규정한다. 결과적인 DCT 계수들은 그 다음에 양자화기를 이용하여 양자화되어 양자화 변환 도메인 계수 또는 지수를 생성한다.
양자화 변환 도메인 계수의 블록 또는 매트릭스(가끔은 "변환 유닛"이라고 부름)는 그 다음에 특수 콘텍스트 모델을 이용하여 엔트로피 인코드된다. H.264/AVC에서 및 HEVC에 대한 현재의 개발 작업에서, 양자화 변환 계수는 (a) 블록 내에서 최종의 비제로 계수의 위치를 표시하는 최종 유효 계수(last significant coefficient) 위치를 인코딩하고, (b) 비제로 계수를 포함하는 블록 내의 위치(최종 유효 계수 위치가 아닌 위치)를 표시하는 중요도 맵을 인고딩하고, (c) 비제로 계수의 크기를 인코딩하고, 및 (d) 비제로 계수의 부호를 인코딩함으로써 인코드된다. 양자화 변환 계수의 이러한 인코딩은 가끔 비트스트림의 인코딩된 데이터의 30~80%를 점유한다.
중요도 맵에서 기호들의 엔트로피 인코딩은 콘텍스트 모델에 기초를 둔다. 4×4 루마 또는 크로마 블록 또는 변환 유닛(transform unit; TU)의 경우에, 별도의 콘텍스트가 TU 내의 각 계수 위치와 연관된다. 즉, 인코더 및 디코더는 4×4 루마 또는 크로마 TU에 대하여 총 30개(하부 우측 코너 위치를 배제함)의 분리된 콘텍스트를 추적한다. 8×8 TU는 하나의 별개의 콘텍스트가 8×8 TU 내의 각 2×2 블록과 연관되도록 2×2 블록으로 분할된다(개념적으로 말하면 콘텍스트 연합 목적으로). 따라서, 인코더와 디코더는 8×8 루마 또는 크로마에 대하여 총 16+16=32개의 콘텍스트를 추적한다. 이것은 인코더와 디코더가 중요도 맵의 인코딩 및 디코딩 중에 62개의 서로 다른 콘텍스트를 추적 및 조사한다는 것을 의미한다. 16×16 TU 및 32×32 TU를 고려할 때, 관련된 별개의 콘텍스트의 총 수는 88이다. 이 동작은 높은 연산 속도로 실행되도록 또한 의도된다.
본 명세서에서는 콘텍스트 적응성 인코딩 또는 디코딩으로 중요도 맵을 인코딩 및 디코딩하는 방법 및 인코더/디코더를 설명한다. 인코더와 디코더는 맵을 복수의 부분품(part)으로 공간적으로 불균일하게 분할(partitioning)하는 것에 특징이 있고, 각 부분품 내의 비트 위치는 주어진 콘텍스트와 연관된다. 예시적인 파티션 집합, 및 소정의 파티션 집합으로부터 선택하고 그 선택을 디코더에 전달하는 처리는 뒤에서 설명된다.
하나의 양태에 있어서, 본 명세서는 변환 유닛에 대하여 중요도 맵을 재구성하기 위해 인코딩된 데이터의 비트스트림을 디코딩하는 방법을 설명한다. 이 방법은 중요도 맵의 각 비트 위치에 대하여, 파티션 집합에 기초하여 비트 위치의 콘텍스트를 결정하는 단계와, 비트 값을 재구성하기 위해 결정된 콘텍스트에 기초하여 인코딩된 데이터를 디코드하는 단계와, 재구성된 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하며, 재구성된 비트 값은 디코드된 중요도 맵을 형성한다.
다른 양태에 있어서, 본 명세서는 변환 유닛에 대하여 중요도 맵을 인코딩하는 방법을 설명한다. 이 방법은 중요도 맵의 각 비트 위치에 대하여, 파티션 집합에 기초하여 비트 위치의 콘텍스트를 결정하는 단계와, 인코드된 데이터를 발생하기 위해 결정된 콘텍스트에 기초하여 그 비트 위치에서의 비트 값을 인코드하는 단계와, 그 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하며, 인코드된 데이터는 인코드된 중요도 맵을 형성한다.
일부 예시적인 실시형태에 있어서, 변환 유닛은 4×4이다. 일부 예시적인 실시형태에 있어서, 변환 유닛은 8×8이다. 일 예에 있어서, 파티션 집합은 하기와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정한다.
0, 1, 2, 3,
4, 5, 2, 3,
6, 6, 7, 7,
8, 8, 7,
상기 정수들은 4×4 블록 중요도 맵의 비트 위치에 지정된 콘텍스트들을 나타낸다.
다른 예에 있어서, 파티션 집합은 하기와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정한다.
0, 1, 2, 2, 3, 3, 4, 4,
1, 1, 2, 2, 3, 3, 4, 4,
5, 5, 6, 6, 7, 7, 4, 4,
5, 5, 6, 6, 7, 7, 4, 4,
8, 8, 9, 9, 6, 7, 10, 10,
8, 8, 9, 9, 9, 10, 10, 10,
11, 11, 11, 11, 10, 10, 10, 10,
11, 11, 11, 11, 10, 10, 10
다른 예시적인 파티션 집합이 본 명세서에서 설명된다.
다른 양태에 있어서, 본 명세서는 상기 인코딩 방법 및 디코딩 방법을 구현하도록 구성된 인코더 및 디코더를 설명한다.
또 다른 양태에 있어서, 본 명세서는 실행될 때 여기에서 설명하는 인코딩 및/또는 디코딩 방법을 수행하도록 프로세서를 구성하는 컴퓨터 실행가능 프로그램 명령어를 저장한 비일시적 컴퓨터 판독가능 매체를 설명한다.
본 발명의 다른 양태 및 특징들은, 이 기술에 통상의 지식을 갖는 사람이라면, 첨부 도면과 함께 본 발명의 각종 실시형태에 관한 이하의 설명을 읽음으로써 이해할 수 있을 것이다.
본 발명에 따르면, 파티션 선택을 이용하여 비디오의 중요도 맵을 인코딩 및 디코딩하는 방법 및 장치를 제공할 수 있다.
이제, 본 발명의 예시적인 실시형태를 나타내는 첨부 도면을, 예로서, 참조하기로 한다.
도 1은 비디오를 인코딩하는 인코더를 블록도 형태로 나타낸 도이다.
도 2는 비디오를 디코딩하는 디코더를 블록도 형태로 나타낸 도이다.
도 3은 4×4 블록을 6개의 부분품으로 분할하고 각 부분품 내의 비트 위치가 콘텍스트에 맵된 것을 도식적으로 보인 도이다.
도 4는 도 3의 분할을 정제하여 9개의 부분품으로 만든 것을 보인 도이다.
도 5는 8×8 블록을 4개의 부분품으로 분할하고 각 부분품 내의 비트 위치가 콘텍스트에 맵된 것을 도식적으로 보인 도이다.
도 6은 도 5의 분할을 정제하여 12개의 부분품으로 만든 것을 보인 도이다.
도 7은 중요도 맵을 재구성하도록 인코드된 데이터를 디코드하는 예시적인 방법을 흐름도 형태로 보인 도이다.
도 8은 거친 파티션과 미세 파티션의 상대적 효율 및 인코드된 슬라이스 크기에서의 그 의존성을 보인 도이다.
도 9는 예시적인 인코더 실시형태를 단순화하여 보인 블록도이다.
도 10 예시적인 디코더 실시형태를 단순화하여 보인 블록도이다.
각 도면에 있어서 유사한 참조 번호는 유사한 구성요소를 지시한다.
이하의 설명에서, 일부 예시적인 실시형태는 비디오 부호화(coding)에 대한 H.264 표준 및/또는 개발중인 HEVC 표준과 관련하여 설명된다. 이 기술에 숙련된 사람이라면, 본 발명이 H.264/AVC 또는 HEVC로 제한되는 것이 아니고, 아마도 있을 미래의 표준, 멀티뷰 부호화 표준, 확장성 비디오 부호화 표준 및 구성가능한 비디오 부호화 표준을 비롯한 다른 비디오 부호화/디코딩 표준에도 적용할 수 있다는 것을 이해할 것이다.
이하의 설명에서, 비디오 또는 이미지를 인용할 때, 용어 프레임, 화상, 슬라이스, 타일 및 직사각형 슬라이스 그룹은 다소간 상호교환적으로 사용될 수 있다. 이 기술에 숙련된 사람이라면, H.264 표준의 경우에, 프레임이 하나 이상의 슬라이스를 포함할 수 있다는 것을 이해할 것이다. 또한, 특정의 인코딩/디코딩 동작은 프레임마다의 방식으로 수행되고, 일부는 적용가능한 이미지 또는 비디오 부호화 표준의 특수한 필요조건 또는 용어론에 따라서 슬라이스마다의 방식으로, 일부는 화상마다의 방식으로, 일부는 타일마다의 방식으로, 및 일부는 직사각형 슬라이스 그룹에 의해 수행된다는 것을 이해할 것이다. 임의의 특수한 실시형태에 있어서, 적용가능한 이미지 또는 비디오 부호화 표준은 뒤에서 설명하는 동작들이 경우에 따라서 프레임 및/또는 슬라이스 및/또는 화상 및/또는 타일 및/또는 직사각형 슬라이스 그룹과 함께 수행되는지 여부를 결정할 수 있다. 따라서, 이 기술에 통상의 지식을 가진 사람이라면, 본 발명의 설명에 비추어, 여기에서 설명하는 특수한 동작 또는 처리 및 프레임, 슬라이스, 화상, 타일, 직사각형 슬라이스 그룹에 대한 특수한 인용이 소정의 실시형태에 대한 프레임, 슬라이스, 화상, 타일, 직사각형 슬라이스 그룹에, 또는 이들의 일부 또는 전부에 적용가능한지 여부를 이해할 것이다. 이것은 또한, 이하의 설명에 비추어 명백하게 되는 것처럼, 변환 유닛, 부호화 유닛, 부호화 유닛의 그룹 등에도 적용된다.
이제, 도 1을 참조하면, 비디오를 인코드하기 위한 인코더(10)가 블록도 형태로 도시되어 있다. 도 2를 참조하면, 비디오를 디코드하기 위한 디코더(50)가 블록도 형태로 도시되어 있다. 여기에서 설명하는 인코더(10)와 디코더(50)는 하나 이상의 처리 요소 및 메모리를 포함한 특수 용도 또는 범용 컴퓨팅 장치에서 각각 구현될 수 있음을 이해할 것이다. 인코더(10) 또는 디코더(50))에 의해 수행되는 동작들은, 경우에 따라서, 예를 들면 특수 용도 집적 회로에 의해, 또는 범용 프로세서에 의해 실행되는 저장된 프로그램 명령어에 의해 구현될 수 있다. 장치는 예를 들면 기본 장치 기능을 제어하는 운영체제를 포함한 추가의 소프트웨어를 포함할 수 있다. 인코더(10) 또는 디코더(50)가 구현될 수 있는 장치 및 플랫폼의 범위는 이 기술에 통상의 지식을 가진 사람에게 이하의 설명과 관련하여 명백하게 될 것이다.
인코더(10)는 비디오 소스(12)를 수신하고 인코드된 비트스트림(14)을 생성한다. 디코더(50))는 인코드된 비트스트림(14)을 수신하여 디코드된 비디오 프레임(16)을 출력한다. 인코더(10)와 디코더(50)는 다수의 비디오 압축 표준과 호환되게 동작하도록 구성될 수 있다. 예를 들면, 인코더(10)와 디코더(50)는 H.264/AVC 호환성일 수 있다. 다른 실시형태에 있어서, 인코더(10)와 디코더(50)는 HEVC와 같이 H.264/AVC 표준의 진화형을 비롯해서 다른 비디오 압축 표준에 따를 수 있다.
인코더(10)는 공간 예측기(21), 부호화 모드 선택기(20)), 변환 프로세서(22), 양자화기(24) 및 엔트로피 인코더(26)를 포함한다. 이 기술에 통상의 지식을 가진 자라면 이해하고 있는 바와 같이, 부호화 모드 선택기(20)는 비디오 소스에 대한 적당한 부호화 모드, 예를 들면, 대상 프레임/슬라이스가 I형인지, P형인지 또는 B형인지, 및 프레임/슬라이스 내의 특정 부호화 유닛(예를 들면, 매크로블록)이 상호간 부호화(inter coded)인지 내부 부호화(intra coded)인지를 결정한다. 변환 프로세서(22)는 공간 도메인 데이터에 대한 변환을 수행한다. 특히, 변환 프로세서(22)는 블록 기반 변환을 적용하여 공간 도메인 데이터를 스펙트럼 컴포넌트로 변환한다. 예를 들면, 많은 실시형태에 있어서, 이산 코사인 변환(DCT)이 사용된다. 일부 경우에는 이산 사인 변환 등과 같은 다른 변환이 사용될 수 있다. 블록 기반 변환은 매크로블록의 크기에 따라서 매크로블록 또는 서브블록 기반으로 수행된다. 예를 들면, H.264 표준에 있어서, 전형적인 16×16 매크로블록은 16개의 4×4 변환 블록을 포함하고, DCT 처리는 4×4 블록에서 수행된다. 일부 경우에, 변환 블록들은 8×8일 수 있고, 이것은 매크로블록당 4개의 변환 블록이 있음을 의미한다. 또 다른 경우에, 변환 블록들은 다른 크기를 가질 수 있다. 일부 경우에, 16×16 매크로블록은 4×4 변환 블록과 8×8 변환 블록의 비중첩 결합을 포함할 수 있다.
픽셀 데이터의 블록에 블록 기반 변환을 적용하면 변환 도메인 계수들의 집합이 발생한다. 이 상황에서 "집합"은 계수들이 계수 위치를 갖는 정돈된 집합이다. 일부 경우에, 변환 도메인 계수의 집합은 계수들의 "블록" 또는 매트릭스로서 간주될 수 있다. 본 명세서의 설명에서 "변환 도메인 계수의 집합" 또는 "변환 도메인 계수의 블록"은 상호 교환적으로 사용되고 변환 도메인 계수의 정돈된 집합을 표시하는 의미이다.
변환 도메인 계수의 집합은 양자화기(24)에 의해 양자화된다. 양자화 계수 및 관련 정보는 그 다음에 엔트로피 인코더(26)에 의해 인코드된다.
내부 부호화 프레임/슬라이스(즉, 유형 I)는 다른 프레임/슬라이스에 대한 참조없이 인코드된다. 다시 말하면, 이들은 시간 예측을 이용하지 않는다. 그러나 내부 부호화 프레임은 도 1에서 공간 예측기(21)로 나타낸 것처럼 프레임/슬라이스 내의 공간 예측에 의존한다. 즉, 특정 블록을 인코딩할 때, 그 블록 내의 데이터는 그 프레임/슬라이스에 대하여 이미 인코드된 블록들 내의 인근 픽셀들의 데이터와 비교될 수 있다. 예측 알고리즘을 이용해서, 블록의 소스 데이터는 잔류 데이터로 변환될 수 있다. 변환 프로세서(22)는 그 다음에 잔류 데이터를 인코드한다. 예를 들어서, H.264는 4×4 변환 블록에 대하여 9개의 공간 예측 모드를 규정한다. 일부 실시형태에 있어서, 9개의 모드가 각각 블록을 독립적으로 처리하기 위해 사용될 수 있고, 그 다음에 비율 왜곡 최적화(rate-distortion optimization)를 이용하여 최상의 모드를 선택한다.
H.264 표준은 시간 예측의 장점을 취하기 위해 모션 예측/보상의 사용을 또한 규정한다. 따라서, 인코더(10)는 역양자화기(28), 역변환 프로세서(30) 및 디블로킹(deblocking) 프로세서(32)를 포함한 피드백 루프를 구비한다. 디블로킹 프로세서(32)는 디블로킹 프로세서와 필터링 프로세서를 포함할 수 있다. 이 요소들은 프레임/슬라이스를 복제하기 위해 디코더(50)에서 구현되는 디코딩 처리를 반영(mirror)한다. 프레임 기억부(34)는 복제된 프레임을 저장하기 위해 사용된다. 이 방법으로, 모션 예측은 디코더(50)에서 재구성 프레임으로 되는 것에 의존하고 원래의 프레임에 의존하지 않으며, 원래의 프레임은 인코딩/디코딩에 수반되는 손실 압축 때문에 재구성 프레임과 다를 수 있다. 모션 예측기(36)는 유사한 블록들을 식별할 목적으로 현재 프레임과 비교하기 위한 소스 프레임/슬라이스로서 프레임 기억부(34)에 저장된 프레임/슬라이스를 이용한다. 따라서, 모션 예측을 적용하는 매크로블록에 대하여, 변환 프로세서(22)가 인코드하는 "소스 데이터"는 모션 예측 처리로부터 오는 잔류 데이터이다. 예를 들면, 소스 데이터는 기준 프레임, 공간 변위 또는 "모션 벡터"에 관한 정보, 및 기준 블록과 현재 블록 간의 차(만일 있으면)를 나타내는 잔류 픽셀 데이터를 포함할 수 있다. 기준 프레임 및/또는 모션 벡터에 관한 정보는 변환 프로세서(22) 및/또는 양자화기(24)에 의해 처리되지 않지만, 그 대신 양자화 계수와 함께 비트스트림의 일부로서 인코딩하기 위해 엔트로피 인코더(26)에 공급될 수 있다.
이 기술에 통상의 지식을 가진 자라면 H.264 인코더를 구현하는 세부 내용 및 가능한 변형체를 예상할 수 있을 것이다.
디코더(50)는 엔트로피 디코더(52), 역양자화기(54), 역변환 프로세서(56), 공간 보상기(57) 및 디블로킹 프로세서(60)를 포함한다. 디블로킹 프로세서(60)는 디블로킹 프로세서 및 필터링 프로세서를 포함할 수 있다. 프레임 버퍼(58)는 모션 보상을 적용할 때 모션 보상기(62)에서 사용되는 재구성 프레임을 공급한다. 공간 보상기(57)는 예전에 디코드된 블록으로부터 특정의 내부 부호화 블록용으로 비디오 데이터를 복구하는 동작을 나타낸다.
비트스트림(14)은 엔트로피 디코더(52)에 의해 수신 및 디코드되어 양자화 계수를 복구한다. 보조 정보(side information)가 또한 엔트로피 디코딩 처리 중에 복구될 수 있고, 그 일부는, 만일 적용가능하다면, 모션 보상에 사용하도록 모션 보상 루프에 공급될 수 있다. 예를 들면, 엔트로피 디코더(52)는 상호간 부호화 매크로블록을 위한 모션 벡터 및/또는 기준 프레임 정보를 복구할 수 있다.
양자화 계수는 그 다음에 역양자화기(54)에 의해 역양자화되어 변환 도메인 계수를 생성하고, 변환 도메인 계수는 그 다음에 역변환 프로세서(56)에 의해 역변환 처리되어 "비디오 데이터"를 재현한다. 내부 부호화 매크로블록에 의한 경우와 같은 일부 경우에, 재현된 "비디오 데이터"는 프레임 내에서 예전에 디코드된 블록에 대한 공간 보상시에 사용하기 위한 잔류 데이터임을 이해할 것이다. 공간 보상기(57)는 잔류 데이터로부터 비디오 데이터를 생성하고 예전에 디코드된 블록으로부터 픽셀 데이터를 생성한다. 상호간 부호화 매크로블록과 같은 다른 경우에, 역변환 프로세서(56)로부터의 재현된 "비디오 데이터"는 다른 프레임으로부터의 기준 블록에 대한 모션 보상시에 사용하기 위한 잔류 데이터이다. 공간 보상과 모션 보상은 둘 다 여기에서 "예측 동작"이라고 부른다.
모션 보상기(62)는 특수한 상호간 부호화 매크로블록에 대하여 특정된 프레임 버퍼(58)에 기준 블록을 위치시킨다. 모션 보상기(62)는 상호간 부호화 매크로블록에 대하여 특정된 모션 벡터 및 기준 프레임 정보에 기초하여 그렇게 한다. 모션 보상기(62)는 그 다음에 그 매크로블록에 대한 재구성 비디오 데이터에 도달하도록 잔류 데이터와의 결합을 위해 기준 블록 픽셀 데이터를 공급한다.
그 다음에, 디블로킹/필터링 처리가 디블로킹 프로세서(60)로 나타낸 것처럼 재구성 프레임/슬라이스에 적용될 수 있다. 디블로킹/필터링 후에, 프레임/슬라이스는 예를 들면 디스플레이 장치에서의 디스플레이를 위해 디코드된 비디오 프레임(16)으로서 출력된다. 컴퓨터, 셋톱박스, DVD 또는 블루레이 플레이어와 같은 비디오 재생 장치 및/또는 모바일 핸드헬드 장치는 디코드된 프레임을 출력 장치에서 디스플레이하기 전에 메모리에 버퍼링할 수 있다는 것을 이해할 것이다.
HEVC 호환성 인코더 및 디코더는 이러한 많은 동일한 또는 유사한 특징을 갖는 것으로 기대된다.
중요도 맵 인코딩
전술한 바와 같이, 양자화 변환 도메인 계수의 블록 또는 집합의 엔트로피 부호화는 양자화 변환 도메인 계수의 그 블록 또는 집합에 대한 중요도 맵의 인코딩을 포함한다. 중요도 맵은 비제로 계수가 어느 위치(최종 위치가 아닌 것)에 나타나는지를 표시하는 블록의 이진수 맵핑이다. 블록은 그 블록과 연관된 소정의 특성을 가질 수 있다. 예를 들면, 블록은 내부 부호화 슬라이스 또는 상호간 부호화 슬라이스로부터의 것일 수 있다. 블록은 루마 블록 또는 크로마 블록일 수 있다. 슬라이스의 QP 값은 슬라이스마다 다를 수 있다. 이러한 모든 인자(factor)들은 중요도 맵을 엔트로피 인코딩하는 최상의 방법에 영향을 줄 수 있다.
중요도 맵은 스캔 순서에 따라서 벡터로 변환된다(상기 스캔 순서는 수직, 수평, 대각선, 지그재그, 또는 적용가능한 부호화 표준에 의해 규정된 임의의 다른 스캔 순서일 수 있다). 각각의 유효 비트(significant bit)는 그 다음에 적용가능한 콘텍스트 적응성 부호화 방식을 이용하여 엔트로피 인코드된다. 예를 들면, 많은 응용에서, 콘텍스트 적응성 이진 산술 부호화(context-adaptive binary arithmetic coding; CABAC) 방식이 사용될 수 있다. 다른 구현예는 이진화와 함께 다른 콘텍스트 적응성 코덱을 이용할 수 있다. 그 예로는 이진 산술 부호화(binary arithmetic coding; BAC), 가변 대 가변(variable-to-variable; V2V) 부호화, 및 가변 대 고정(variable-to-fixed; V2F) 길이 부호화가 있다. 각각의 비트 위치에 대하여 콘텍스트가 지정된다. 그 비트 위치에 있는 비트를 인코딩할 때, 지정된 콘텍스트, 및 그 포인트에 대한 콘텍스트 이력은 최소 확률 기호(least probable symbol;LPS)(또는 일부 구현예에서는 최대 확률 기호(most probable symbol; MPS))의 추정 확률을 결정한다.
기존의 비디오 부호화기에 있어서, 콘텍스트 지정은 인코더와 디코더 둘 다에 대하여 미리 정해진다. 예를 들면, 4×4 루마 블록에 대하여, 현재의 드래프트 HEVC 표준은 4×4 중요도 맵의 각 비트 위치가 유일한 콘텍스트를 갖는다는 것을 규정한다. 최종 위치를 배제하면, 이것은 15개의 콘텍스트가 4×4 루마 중요도 맵의 인코딩 동안 추적된다는 것을 의미한다. 각각의 비트 위치에 대하여, 그 위치에 지정된 콘텍스트는 그 위치에서 LPS와 관련된 추정 확률을 결정한다. 그 다음에, 실제 비트 값이 그 추정 확률을 이용하여 인코드된다. 마지막으로, 그 위치에 지정된 콘텍스트는 실제 비트 값에 기초하여 갱신된다. 디코더에서, 인코드된 데이터는 동일한 콘텍스트 모델을 이용하여 디코드된다. 각 비트 위치의 콘텍스트는 그 위치의 비트를 복구하기 위해 데이터를 디코딩하는 추정 확률을 결정하기 위하여 추적 및 사용된다.
콘텍스트 지정은 데이터 블록의 분할 및 별개의 콘텍스트를 각 부분품에 맵핑하는 것으로서 간주될 수 있다. 수학적으로, 맵핑은 파티션 집합으로서 P:{0,..., n-1}×{0,..., n-1} → {0,..., m-1}을 이용하여 규정될 수 있다. 비트 위치는 {0,..., n-1}×{0,..., n-1}서 색인된다. 숫자 0,..., m-1은 다른 파티션들을 나타낸다. 각 파티션은 그 파티션과 연관된 하나의 지정 콘텍스트를 갖는다. 이 콘텍스트는 그 파티션에 대하여 배타적으로 사용될 수 있다(일부 경우에, 콘텍스트는 루마형 및 크로마형 블록 모두에 대하여 사용될 수 있다).
임의의 2개의 파티션 집합(P, Q)에 있어서, 만일 모든 i 및 j에 대하여 T(P(i,j))=Q(i,j)로 되도록 맵핑(T)이 있으면, Q는 P의 부분집합이거나 P는 Q의 정제형(refinement)이라고 말한다.
인코딩 작업은 다음과 같다: 크기 n×n의 TU는 파티션 집합 P로 지정된다. 중요도 맵은 매트릭스 M(i,j)로 간주될 수 있다. 수평 스캐닝 순서로 판독된 매트릭스 M은 M(0, 0), M(0, 1), ..., M(0, n-1), M(1, 0), M(1, 1), ..., M(1, n-1), ..., M(n-1, n-1)로 표시될 수 있다. 스캐닝 순서는 매트릭스 표시로부터 벡터 표시까지 1:1 맵핑을 규정한다. 벡터 형태에 있어서, 스캐닝 순서는 숫자 0, 1, ..., n2-2의 순열에 대응한다. 실제 구현예에 있어서, 색인화(indexing)는 단일 값 벡터 색인화와 매트릭스 스타일 이중 색인화 중에서 어느 쪽이든 더 편리한 쪽에 기초를 둘 수 있다. M(i,j)는 P(i,j)에 대응하는 BAC 콘텍스트에서 인코드되고, 그 콘텍스트는 M(i,j)를 이용하여 갱신된다. 디코딩은 인코딩 절차로부터 간단한 방법으로 유도된다.
이 프레임워크는 현재 HEVC에 대하여 제안되어 있는 중요도 맵 부호화 방식을 설명하기 위해 사용될 수 있다. 각각의 4×4 및 8×8 TU는 각각 P4 및 P8이라고 부르는 별도의 파티션 집합과 연관된다. 이들은 다음과 같이 주어진다.
P4(i,j)=4*i+j i,j=0,1,2,3 [총 15 콘텍스트]
P8(i,j)=4*[i/2]+[j/2] i,j=0,1,2,3,4,5,6,7 [총 16 콘텍스트]
루마 및 크로마에 대하여 동일한 맵핑이 사용되지만, 루마에 대한 콘텍스트와 크로마에 대한 콘텍스트는 별개이다. 그러므로, 이들 TU에 대하여 사용된 콘텍스트의 총 수는 15+15+16+16=62이다.
중요도 맵의 분할은 균일하게 분포된다는 것을 알 수 있다. 즉, 상부 좌측 사분면에 지정된 것만큼 많은 콘텍스트가 하부 우측 사분면의 비트 위치에 지정된다. 균일한 콘텍스트 분포는 많은 실시형태에 대하여 최적이 아닐 수 있다. 상부 좌측 사분면과 연관된 콘텍스트는 하부 우측 사분면의 콘텍스트보다 더 중하게 사용된다(중요도 맵은 가끔 이들 하부 우측 비트 위치에 도달하기 전에 종료하기 때문이다). 따라서, 이러한 콘텍스트에 이용가능한 데이터가 적고, 데이터를 덜 신속하게 적응성으로 하며, 더 일반적으로 말하면, 덜 효과적이다.
뒤에서 설명하는 것처럼, 개선된 분할 및 맵핑은 정확성의 목적(이것은 콘텍스트당 더 적은 비트 위치를 야기하는 경향이 있다)과 적응성의 목적(이것은 더 많은 데이터를 제공하고 최적의 확률 추정치에 더 신속하게 수렴시키기 위하여 콘텍스트당 더 많은 비트 위치를 야기하는 경향이 있다) 사이에서 더 나은 균형(balance)을 산출할 것이다. 양호한 파티션 집합은 압축 효율과 파티션의 수(m) 사이에서 균형을 이룰 것이다. 이론상으로, 상기 2가지 제약하에서 파티션 집합을 최적화할 때, 소정의 TU 크기에 대하여 P의 모든 가능한 경우들이 평가되어야 한다.
이 작업의 복잡성을 이해하기 위해, 임의의 주어진 TU 크기(n×n)와 파티션 카운트(m)에 대한 본질적으로 유일한 파티션 집합의 수가 계산될 수 있다. 파티션의 매트랙스 배열은 임의적이고 벡터 형태의 등가적인 표시가 예를 들면 수평 스캔 순서를 이용하여 가능하다는 것을 알 것이다. 결과적인 맵핑은 Pv:{0,..., N-1}→{0,..., m-1}로 표시되고, 여기에서 N=n2-1이다(즉, 하부 우측 비트 위치를 배제한다). C(N,m)을 그러한 대상 맵핑의 수라고 하면, 이것은 Pv의 범위가 {0,..., m-1}임을 의미하고, 이미 카운트된 맵핑의 단순 순열인 그러한 맵핑(즉, 다른 이미 카운트된 맵핑을 야기하도록 새로 명칭이 붙여질 수 있는(relabeled) 파티션)을 제거할 수 있다. 임의의 N≥1에 대하여 C(N,1)=1 및 C(N,N)=1임에 주목한다. m>1에 대하여, 모든 Pv 맵핑은 2개의 부류로 분리될 수 있다. 제1 부류에 있어서, Pv(0)/∈{Pv(1), ..., Pv(N-1)}이라고 하면, 값 1, ..., N-1이 이제 (1, ..., Pv(0)-1, Pv(0)+1, ..., m-1}에 맵되기 때문에, 그러한 맵핑의 수는 C(N-1, m-1)이다. 제2 부류에서, Pv(0)∈{Pv(1), ..., Pv(N-1)}이라고 하면, 값 1, ..., N-1이 0, ..., m-1에 맵되고, 이것은 C(N-1, m) 방법으로 행하여질 수 있으며, Pv(0)는 m개의 파티션 중의 임의의 것에 삽입될 수 있고, m*C(N-1, m) 확률을 가져온다. 따라서, 우리는 반복되는 C(N, m)=C(N-1, m-1)+m*C(N-1, m)을 획득하였다. 그에 따라서 C(N, m) 수들은 제2 종류의 스털링 수(stirling number)와 일치한다는 점에 주목한다.
이 공식을 이용하면, 4×4 TU의 파티션 집합, 즉 15개의 계수 또는 비트 위치의 총 수가 1382958545이고; 정확하게 5개의 부분품을 가진 파티션 집합의 수가 210766920이며, 정확하게 10개의 부분품을 가진 파티션 집합의 수가 12662650이라고 계산될 수 있다. 8×8 TU(63 계수)의 대응하는 수는 지수 형태로 더 잘 표현된다. 즉, 서로 다른 파티션 집합의 총 수는 8.2507717*1063이고, 16개 부분품보다 많지 않은 부분품을 가진 집합의 수는 3.5599620*1062이며, 정확하게 5개의 부분품을 가진 집합의 수는 9.0349827*1041이고, 정확하게 10개의 부분품을 가진 집합의 수는 2.7197285*1056이다. 이들 중 임의의 것으로 비디오 압축을 위한 적법한 파티션 집합을 형성하기 때문에, 이렇게 많은 후보로부터 최상의 것을 선택하는 것은 중요하고 어려운 작업이다.
예시적인 파티션 집합
경험적 테스트 및 분석을 통해서 하기의 예시적인 파티션 집합 및 콘텍스트 맵핑이 연산 속도 및 압축 효율의 유리한 균형을 가져오는 것으로 나타났다.
이제, 도 3을 참조하면, 4×4 블록을 P1, P2, ..., P6로 각각 표시된 6개의 부분품으로 분할하는 것이 도식적으로 나타나 있다. 이것은 예를 들면 4×4 블록의 경우에 중요도 맵에 대하여 사용될 수 있다. 각각의 비트 위치와 연관된 콘텍스트(C0, C1, ..., C5)는 블록(100)으로 도시되어 있다. 동일한 부분품 내의 비트 위치들은 모두 동일한 콘텍스트를 공유한다. 부분품 P4는 2개의 비연속적인 지역을 포함한다는 점에 주목한다. 부분품 P4 내의 4개의 비트 위치는 각각 콘텍스트 C3에 지정된다. 도 3에 도시된 분할은 분할이 4×4 블록과 관련이 있고 6개의 부분품으로 구성된다는 것을 표시하기 위해 P4-6으로 표시할 수 있다.
도 4는 P4-6의 정제형(refinement)을 도식적으로 보인 것이고, 이 예에서는 부분품 P2가 P2, P5 및 P6로 각각 표시된 3개의 개별 부분품으로 나누어져 있다. 또한, 부분품 P4는 2개의 비연속적인 지역이 이제 P4 및 P9로 각각 표시된 별도의 부분품으로 되도록 반으로 나누어져 있다. 이 분할 구조는 4×4 블록의 9개의 별개의 부분품에 9개의 콘텍스트를 지정한다는 것을 표시하기 위해 P4-9로 표시될 수 있다.
도 5는 8×8 블록을 P1~P4로 표시된 4개의 분리된 부분품으로 분할한 것을 보인 것이다. 콘텍스트 C0~C3의 각 콘텍스트는 도시된 것처럼 각 부분품에 지정된다. 이 분할은 P8-4로 표시될 수 있다.
도 6은 P8-4를 P8-12로 정제한 것을 보인 것이다. 이 경우에, P8-4의 분할은 4개의 부분품이 도면에 도시된 것처럼 총 12개의 부분품으로 세분되도록 추가로 세분된다. 따라서, 이 분할에는 12개의 콘텍스트(C0, ..., C11)가 있다.
전술한 모든 예에서, 분할 및 그에 따른 콘텍스트의 할당/지정은 블록 전체에 걸쳐서 균일하게 분포되어 있지 않음을 알 수 있다. 즉, 분할에서의 더 작은 부분품들은 상부 좌측 사분면을 향하여 밀집하는 경향이 있고 분할에서의 더 큰 부분품들은 블록의 하부 우측을 향하여 위치되는 경향이 있다. 그 결과, 상부 좌측 사분면에 지정된 콘텍스트들은 그들과 연관된 더 적은 비트 위치를 갖는 경향이 있고(일반적이지만 항상은 아님), 하부 또는 우측에 지정된 콘텍스트들은 그들과 연관된 더 많은 비트 위치를 갖는 경향이 있다. 시간이 지남에 따라, 이것은 더 균일한 콘텍스트 사용을 유도할 것이다. 즉, 이러한 불균일한 공간 할당은 각 콘텍스트에 대하여 더 균일한 비트 할당을 가져오는 경향이 있다.
P4-6 분할은 P4-9 분할의 부분집합이고 P8-4 분할은 P8-12 분할의 부분집합임을 또한 알 수 있다. 이러한 특성은 뒤에서 설명하는 것처럼 일부 파티션 집합 선택 처리에 대한 적절성을 갖는다.
하나의 응용예에서, 4×4 및 8×8 파티션 집합의 콘텍스트 색인 파생물(index derivation)은 조사표에 의해 획득될 수 있다. 다른 응용예에 있어서, 콘텍스트 색인은 논리적 연산에 의해 결정될 수 있다. 예를 들면, P4-6 집합에 대하여, 콘텍스트 색인 파생물은 다음과 같이 얻어질 수 있다:
( x & 2 ) ? ( ( y & 2 ) ? 5 : x ) :
( ( y & 2 ) ? ( y & 1 ? 3 : 4 ) :
( x | y ) );
전술한 4개의 예시적인 파티션 집합은 단순한 예임을 알 것이다. 뒤에서 설명하는 선택 처리에서는 다른(또는 추가적인) 파티션 집합이 사용될 수 있다.
파티션 집합 선택 - 정적 지정
본 명세서에서는 4개의 예시적인 선택 처리를 구체적으로 설명한다. 제1의 예시적인 선택 처리는 정적 지정(static assignment)이다. 이 예시적인 처리에 있어서, 인코더와 디코더는 특유의 특성을 가진 중요도 맵에 대하여 특정의 파티션 집합을 사용하도록 사전구성된다. 예를 들면, 지정은 TU 크기, 텍스트 유형(루마 또는 크로마), 및/또는 QP 값에 기초를 둘 수 있다. 이 지정은 비디오 데이터에 앞서는 헤더에서 인코더에 의해 특정될 수 있고, 또는 인코더와 디코더 둘 다에서 사전구성될 수 있다.
일부 구현예에 있어서, 지정은 크로마 서브샘플링에 (부분적으로) 기초를 둘 수 있다. 4:2:0 및 4;1:1 서브샘플링에 있어서, 크로마 컴포넌트는 루마 컴포넌트보다 훨씬 더 적은 정보를 포함하고, 이것은 크로마에 대하여 루마의 경우보다 더 거친(coarse) 파티션 집합을 사용하는 것을 제안한다. 예를 들면, P4-9는 4×4 루마에 대하여 사용될 수 있고, P4-6은 4×4 크로마에 대하여, P8-12는 8×8 루마에 대하여, 및 P8-4는 8×8 크로마에 대하여 사용될 수 있다. 이것은 31개의 콘텍스트를 발생할 것이다.
4:4:4 서브샘플링 경우에 대하여, 크로마 값은 비교적 상승된 중요도를 가지며, 이것은 크로마에 대하여 더욱 정제된 파티션 집합의 사용을 유도한다. 따라서, 하나의 예로서, P4-9는 4×4 루마 및 크로마 둘 다에 대하여 사용될 수 있고, P8-12는 8×8 루마 및 크로마 둘 다에 대하여 사용될 수 있다. 이것은 42개의 콘텍스트를 발생할 것이다.
그러나, 일부 구현예에 있어서, 콘텍스트는 텍스트 유형들 중에 공유될 수 있다는 점에 주목한다. 예를 들면, 4×4 루마 및 4×4 크로마는 둘 다 P4-9 파티션 집합을 사용할 수 있지만, 그 집합 내의 콘텍스트들은 루마 및 크로마용으로 사용된다. 다른 실시형태에 있어서, 4×4 루마 및 4×4 크로마는 P4-9 파티션 집합을 사용할 수 있지만, 이들은 별도의 콘텍스트를 이용할 수 있다.
이제, 도 7을 참조하면, 중요도 맵을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 예시적인 방법(100)이 흐름도 형태로 도시되어 있다. 방법(100)은 단계 102에서 중요도 맵의 크기를 결정하는 것으로부터 시작한다. 이 결정은 비트스트림에서 특정되는 최종 유효 계수(last significant coefficient)에 기초를 둔다. 일부 실시형태에 있어서, 최종 유효 계수는 최종 유효 계수 전의 모든 비트 위치(스캔 순서로)에 대하여 제로의 문자열을 이용하고 최종 유효 계수의 비트 위치에서 1을 이용하여 이진수로 신호될 수 있다. 최종 유효 계수는 대안적으로 비트 위치를 표시하는 한 쌍의 지수(x, y)를 이용하여 신호될 수 있다. 다른 실시형태에 있어서, 최종 유효 계수는 비트 위치를 스캔 순서로 표시하는 단일 지수를 이용하여 신호될 수 있다. 최종 유효 계수를 신호하는 다른 메카니즘이 또한 사용될 수 있다. 어느 경우이든, 최종 유효 계수는 디코더에게 중요도 맵의 크기를 통보한다.
단계 104, 106 및 108은 중요도 맵의 각 비트 위치에 대하여, 인코더가 그들을 인코드한 것과 동일한 순서로 수행된다. 일부 실시형태에 있어서, 이것은 스캔 순서로 수행됨을 의미할 수 있다. 일부 실시형태에 있어서, 이것은 역스캔 순서로 수행됨을 의미할 수 있다. 인코더와 디코더가 동일한 순서를 사용하면, 이것은 어떤 임의의 순서로 될 수 있다.
단계 104에서, 현재 비트 위치의 콘텍스트가 저장된 파티션 집합으로부터 결정된다. 이 예시적인 방법의 경우에, 파티션 집합의 정적 지정이 사용될 수 있다. 따라서, 텍스트 유형과 변환 유닛 크기는 그 비트 위치에 대하여 지정된 콘텍스트를 특정하는 저장된 파티션 집합을 결정한다. 예로서, 저장된 파티션 집합은 여기에서 설명하는 P4-6, P4-9, P8-4 및 P8-12 파티션 집합일 수 있다.
단계 106에서, 인코드된 데이터는 디코드되어 결정된 콘텍스트에 따라서 그 비트 위치의 비트 값을 재구성한다. 예를 들면, 콘텍스트는 LPS의 추정 확률을 제공할 수 있고, 그로부터 CABAC 엔진이 인코드된 데이터로부터 비트 값을 생성한다. 단계 108에서, 결정된 콘텍스트는 그 다음에 비트 값에 따라서 갱신된다.
단계 110에서, 디코더는 추가의 비트 위치가 중요도 맵에 남아있는지를 평가하고, 만일 남아있으면 다음 비트 위치에 대하여 단계 104, 106 및 108을 반복한다.
파티션 집합 선택 - 시퀀스 특유 지정
제2의 예시적인 선택 처리는 시퀀스 특유 지정이다. 이 예시적인 처리에 있어서, 인코더는 어떤 파티션 집합을 TU의 특정 카테고리에 대하여 사용할 것인지를, 예를 들면 TU 크기, 텍스트 유형, QP 값 또는 기타의 특성에 기초하여 결정한다. 이 결정은 전체 비디오 시퀀스에 적용한다. 선택된 파티션 집합은 시퀀스 헤더에서 특정된다. 따라서, 디코더는 시퀀스 헤더를 판독하고, 그 후 어떤 파티션 집합이 특수한 환경에서 중요도 맵을 디코딩하기 위해 사용되는지를 안다. 만일 동일한 파티션 집합이 하나 이상의 텍스트 유형과 함께 사용되면(예를 들면, 4×4 루마 및 4×4 크로마에 대하여), 인코더는 콘텍스트가 공유되고 있는지 또는 2개의 텍스트 유형이 별도의 콘텍스트를 이용하는지를 또한 특정할 수 있다.
하나의 예시적인 구문(syntax)에서, 인코더는 사용되는 각각의 파티션 집합의 식별자를 리스트할 수 있고, 이때 만일 파티션 구조가 하나 이상의 상황에 적용되고 하나 이상의 상황의 콘텍스트가 별개의 것이면 동일한 파티션 집합이 1회 이상 리스트될 수 있다. 그 다음에, 인코더는 리스트된 파티션 집합 중의 하나를 중요도 맵의 각 "카테고리"(예를 들면, 4×4 루마, 4×4 크로마, 8×8 루마, 8×8 크로마 등)에 미리 정해진 순서로 지정한다. 일부 실시형태에 있어서, QP 값은 또한 중요도 맵의 "카테고리"를 결정하는 인자일 수 있다.
이 예시적인 구문을 설명하기 위해, 위에서 예로서 주어진 P4-6, P4-9, P8-4 및 P8-12와 같은 4개의 파티션 집합을 고려한다. 4개의 집합은 P4-6, P4-9, P8-4 및 P8-12에 각각 대응하는 00, 01, 10, 11과 같은 4개의 비트를 이용하여 색인될 수 있다.
만일 P4-9가 별도의 콘텍스트와 함께 4×4 루마 및 4×4 크로마에 대하여 사용되어야 하고, P8-12가 공유 콘텍스트와 함께 8×8 루마 및 8×8 크로마에 대하여 사용되어야 한다고 인코더가 결정하면, 인코더는 이진수 표시자 01011100011010을 포함하는 시퀀스 헤더를 발생한다.
디코더는, 시퀀스 헤더로부터 이 표시자를 판독한 때, 집합 P4-9(01), P4-9(01) 및 P8-12(11)이 사용될 예정임을 인식할 것이다. 디코더는, 집합들이 이 방식으로 리스트되어서, 집합들이 이제 제1 P4-9 집합에 대하여 "00"으로, 제2 P4-9 집합에 대하여 "01"로 및 P8-12 집합에 대하여 "10"으로 인용될 것임을 또한 인식할 것이다.
디코더는 그 다음에 "00011010"을 판독하는데, 이 경우 각각의 2개의 비트 부분은 파티션 집합을 4×4 루마, 4×4 크로마, 8×8 루마, 및 8×8 크로마 각각에 대하여 사용되도록 특정한다. 비트들은 바로 앞에 판독한 리스트에서의 순서에 따라 파티션 집합을 색인한다. 그에 따라서,디코더는 00을 판독하고, 이것이 제1 P4-9 집합을 인용한다는 것을 안다. 디코더는 그 다음에 제2 P4-9 집합을 인용하는 01을 판독한다. 최종의 4개의 비트 "10" 및 "10"은 동일한 P8-12 집합이 공유 콘텍스트와 함께 8×8 루마 및 8×8 크로마에 대하여 사용된다는 것을 디코더에게 통보한다.
시퀀스 헤더에서 파티션 집합 선택을 신호하기 위해 다른 구문이 사용될 수 있고, 상기의 설명은 단지 하나의 예시적인 구현예임을 이해할 것이다.
인코더는 표, 상수 함수 또는 다른 메카니즘을 이용하여 파티션 집합을 선택할 수 있다. 함수 및/또는 표는 TU 크기, 텍스트 유형(루마 또는 크로마), QP 값, 슬라이스/시퀀스에서 픽셀의 수, 또는 다른 인자들을 고려할 수 있다.
파티션 집합 선택 - 슬라이스 특유 지정
제3의 예시적인 선택 처리는 슬라이스 특유 지정이다.
적응성과 정확성 간의 균형은 인코드된 슬라이스 크기가 비교적 작을 때 거친 파티션 쪽으로 기울고 인코드된 슬라이스 크기가 비교적 클 때 미세 파티션 쪽으로 기운다는 것으로 알려져 있다. 따라서, 인코드될 비트의 수, 더 구체적으로 말하면, 인코딩 처리에 의해 발생하는 인코드된 비트의 수는 가장 적합한 파티션 집합을 결정할 때 중요한 인자일 수 있다.
이제, 도 8을 참조하면, 각종의 인코드된 슬라이스 사이즈에 대하여 미세 분할 대 거친 분할의 상대적 효력을 나타내는 예시적인 그래프(200)가 도시되어 있다. 수평 축을 따르는 각각의 인코드된 슬라이스 크기는 2개의 기둥, 즉 거친 파티션 집합(202)에 대한 하나의 기둥과 미세 파티션 집합(204)에 대한 하나의 기둥을 보여주고 있다. 기둥의 높이는 소정의 파티션 집합이 테스트 슬라이스용의 다른 집합보다 더 나은 압축 효율을 나타내는 횟수를 테스트 슬라이스의 총 수로 나눈 것에 기초를 둘 수 있다. 거친 파티션 집합(202)은 작은 크기의 슬라이스에 대하여 미세 파티션 집합(204)보다 성능이 뛰어나고 미세 파티션 집합(204)은 큰 크기의 슬라이스에 대하여 거친 파티션 집합(202)보다 성능이 뛰어나다는 것을 알 수 있다.
따라서, 더 거친 파티션 집합으로부터 다음의 더 미세한 파티션 집합으로 스위칭하기 위해 하나 이상의 문턱 값이 설정될 수 있다. 위에서 설명한 예시적인 집합과 함께, 각 TU 크기에 대하여 단지 2개의 파티션 집합(하나의 거친 집합과 하나의 미세 집합)이 있고, 따라서 문턱 값은 예를 들면 64k로 또는 그 부근 값으로 설정될 수 있다. 주어진 TU 크기에 대하여 더 많은 파티션 집합이 미리 규정되는 경우에는 추가의 다른 문턱 값이 확립될 수 있다.
슬라이스 특유 지정 처리에 있어서, 인코더는 각 슬라이스의 TU에 대한 파티션 집합을 선택한다. 선택은 슬라이스 헤더에서 디코더에 전달될 수 있다. 위에서 간략히 설명한 것과 같은 구문은 TU의 특수 카테고리에 대한 선택된 파티션 집합을 전달하기 위해 사용될 수 있다. 이 방법으로, 인코더는 파티션 집합의 선택을 특정 슬라이스의 특성에 맞출 수 있다. 그러나, 그렇게 하기 위하여, 인코더는 디폴트 파티션 선택을 이용하여 슬라이스를 인코드하고, 슬라이스 특성(예를 들면, 인코드된 슬라이스 크기)을 분석하고, 그 다음에 새로운 파티션 선택으로 다시 인코드할 필요가 있다(만일 슬라이스가 디폴트와 다르면). 일부 구현예에 있어서, 인코더에 대한 이러한 여분의 연산 부하는 인코딩이 1회 발생하고(즉, DVD/블루레이와 같은 배선 매체(distribution media)에 저장하기 위해 비디오를 인코딩하는 경우) 비실시간 재생이 나중에 아마도 복수 회 발생하는 경우와 같이 수용가능하다. 영상 회의 또는 휴대용 비디오 레코딩과 같은 다른 구현예에 있어서, 인코더에 대한 2-패스(two-pass) 인코딩 부담은 허용될 수 없다.
한가지 옵션은 파티션 집합 선택을 동일한 QP 값 및 슬라이스 유형(내부 또는 상호간)을 가진 예전에 인코드된 슬라이스의 통계에 따르게 하는 것이다. 만일 그러한 예전의 슬라이스가 비디오에 대하여 존재하면, 인코더는 예전의 유사한 슬라이스의 통계(예를 들면, 인코드된 크기)에 따라서 파티션 집합을 TU에 지정할 수 있다. 만일 예전의 슬라이스가 존재하지 않으면, 인코더는 디폴트 파티션 집합 선택을 이용할 수 있다.
파티션 집합 선택 - 동적 지정
제4의 예시적인 선택 처리는 각각의 TU에 대하여 파티션 집합의 시퀀스를 이용하는 것이고, 이때 시퀀스 내의 각각의 연속적인 파티션 집합은 그 전구체(predecessor)의 더욱 정제된 버전이다. 각각의 TU는 그 리스트의 첫번째 파티션 집합으로 시작하고, 그 다음에 각각의 LCU 경계에서, 지금까지 인코드된 크기가 소정의 한계점을 초과하였는지를 체크한다. 소정의 한계점을 초과하였을 때, 그 리스트로부터의 다음 파티션 집합이 TU에 지정된다. 언제 스위칭이 이루어져야 하는지에 대한 결정은 현재 슬라이스에 따르고, 그러므로 인코더에 의해 행하여졌던 것과 동일한 방법으로 디코더에 의해 결정될 수 있고, 추가의 정보가 비디오 시퀀스에서 특정될 필요가 없다.
이 예시적인 처리에 있어서, 하나의 파티션 집합(Q)으로부터 다른 집합(P)으로의 스위칭은 Q가 P의 부분집합이라는 사실을 이용한다. 각 부분품 P(i,j)과 연관된 BAC 콘텍스트는 Q로부터 T(P(i,j))로 초기화되고, 부분집합 속성은 이 초기화가 잘 정제되었다고 단언한다. 만일 2개의 비트 위치 (i1,j1) 및 (i2,j2)에 대하여 P(i1,j1)≠P(i2,j2)이지만 T(P(i1,j1))=T(P(i2,j2))이면, (i1,j1) 및 (i2,j2)의 부분품은 동일한 BAC 상태로 초기화되지만, 이들 2개의 파티션에 대응하는 2개의 콘텍스트 상의 그 지점으로부터 독립적으로 작용하고 발산할 것이다.
예로서, 파티션 P4-6 및 P4-9는 둘 다 4×4 루마 중요도 맵의 인코딩을 위해 사용되고 파티션 P8-4 및 P8-12는 둘 다 8×8 루마 중요도 맵의 인코딩을 위해 사용된다고 가정하자. 크로마 파티션은 이 경우에 고정된다고 가정한다. P4-9는 P4-6의 정제형이고 P8-12는 P8-4의 정제형임에 주목한다. 스위칭 기준은 이진 산술 부호화기가 현재의 슬라이스에서 지금까지 인코드된 저장소(bin)의 수의 2개의 문턱 값, 즉 4×4에 대한 하나의 문턱 값과 8×8에 대한 다른 하나의 문턱 값이다. 파티션 P4-6은 초기화되어 루마 4×4 중요도 맵에 대하여 사용되고 파티션 P8-4는 초기화되어 루마 8×8 중요도 맵에 대하여 사용된다. 각각의 LCU를 부호화한 후에, BAC가 인코드된 저장소의 수가 체크되고 4×4 문턱 값 및 8×8 문턱 값과 비교된다. 만일 4×4 문턱 값이 초과되면, 파티션 집합 P4-9는 루마 4×4 중요도 맵에 대하여 사용되고, 유사하게, 만일 8×8 문턱 값이 초과되면, 파티션 집합 P8-12는 그 이후의 모든 LCU에 대해서 루마 8×8 중요도 맵에 대하여 사용된다. P4-9 파티션의 초기화 값(뒤에서 나타내는 것처럼 C4-9[i]로서 규정됨)은 다음과 같이 P4-6 파티션의 값(뒤에서 나타내는 것처럼 C4-6[i]로서 규정됨)으로부터 복사될 것이다.
C4-9: { C4-6[0], C4-6[1], C4-6[2], C4-6[3], C4-6[1], C4-6[1], C4-6[4], C4-6[5], C4-6[3] }
P8-12 파티션의 초기화 값(뒤에서 나타내는 것처럼 C8-12[i]로서 규정됨)은 다음과 같이 P8-4 파티션의 값(뒤에서 나타내는 것처럼 C8-4[i]로서 규정됨)으로부터 복사될 것이다.
C8-12: { C8-4[0], C8-4[0], C8-4[1], C8-4[2], C8-4[3], C8-4[1], C8-4[1], C8-4[2], C8-4[2], C8-4[2], C8-4[3], C8-4[3] }
다음 LCU로부터, P4-9 및 P8-12의 각 파티션/콘텍스트는 임의의 다른 콘텍스터와는 독립적으로 작용하고 갱신한다.
디코더가 동일한 방법으로 디코드된 저장소의 수를 카운트하기 때문에, 인코드된 슬라이스 헤더로부터의 명시적인 시그널링 없이, 상기 처리가 디코더 측에서 반복될 수 있다.
파티션 초기화
파티션 집합 내의 각 부분품은 그 파티션의 비트들을 인코딩 및 디코딩하는데 사용하는 BAC 상태에 대응하기 때문에, 각 슬라이스의 시작시에, 그 상태의 초기값이 결정될 필요가 있다. 초기 값은 현재의 HEVC 용어론에서 간격 {1, ..., 126}의 정수 값인 BAC 상태이다. 이 값의 최하위 비트는 MPS를 특정하고, 나머지의 6 비트는 LPS의 확률을 나타낸다. MPS=1 및 p(LPS)=0.5인 균일한 상태는 값 64에 의해 식별된다.
위에서 설명한 파티션 집합은 상태 초기화가 압축 성능의 큰 손실없이 일부 실시형태에서 시행되도록 선택되었다. 그러므로, 파티션이 초기화될 필요가 있을 때마다, 파티션은 균일 상태로 설정될 수 있다.
다른 실시형태에 있어서, 초기화 값이 제공될 수 있다. 일 실시형태에 있어서, 제공된 초기화 값은 인터 슬라이스(inter slices)에 대한 것이다. 그러나, 각 부분품, 슬라이스 유형(I, P, B) 및 텍스트 유형(루마, 크로마)에 대하여 QP의 선형 함수를 특정하기보다는, 일 실시형태에 있어서, 본 발명은 각 파티션에 대하여 단일 값을 제안한다.
일 예로서, 하기의 초기화 값이 위에서 설명한 각 파티션에 대하여 사용될 수 있다. 시각적 명확성을 위해, 콘텍스트가 그 파티션 집합에 사용되는 각 위치에 대하여 콘텍스트의 초기화 값이 나타나는 매트릭스 표시법으로 나타내지만, 실제 구현예에서는 초기화 값이 각 비트 위치보다는 각 콘텍스트에 대하여 (공지의 순서로) 나타내지는 벡터 표시법이 더 간결하게 될 수 있다.
P4-9에 대한 인트라 초기화 값:
[ 77 71 66 61
71 67 66 61
66 66 65 65
61 61 65 ],
P4-6에 대한 인트라 초기화 값:
[ 67 60 55 46
60 60 55 46
55 55 54 54
46 46 54 ],
P8-12에 대한 인트라 초기화 값:
[ 71 67 59 59 53 53 45 45
67 67 59 59 53 53 45 45
59 59 55 55 51 51 45 45
59 59 55 55 51 51 45 45
53 53 51 51 55 51 42 42
53 53 51 51 51 42 42 42
45 45 45 45 42 42 42 42
45 45 45 45 42 42 42 ],
P8-4에 대한 인트라 초기화 값:
[ 62 62 48 48 41 41 33 33
62 62 48 48 41 41 33 33
48 48 48 48 41 41 33 33
48 48 48 48 41 41 33 33
41 41 41 41 48 41 33 33
41 41 41 41 41 33 33 33
33 33 33 33 33 33 33 33
33 33 33 33 33 33 33 ],
P4-9에 대한 인터 (B) 초기화 값:
[ 61 56 52 51
56 54 52 51
52 52 55 55
51 51 55 ],
P4-6에 대한 인터 (B) 초기화 값:
[ 60 49 43 36
49 49 43 36
43 43 48 48
36 36 48 ],
P8-12에 대한 인터 (B) 초기화 값:
[ 59 52 45 45 38 38 37 37
52 52 45 45 38 38 37 37
45 45 40 40 37 37 37 37
45 45 40 40 37 37 37 37
38 38 37 37 40 37 40 40
38 38 37 37 37 40 40 40
37 37 37 37 40 40 40 40
37 37 37 37 40 40 40 ],
P8-4에 대한 인터 (B) 초기화 값:
[ 56 56 37 37 27 27 25 25
56 56 37 37 27 27 25 25
37 37 37 37 27 27 25 25
37 37 37 37 27 27 25 25
27 27 27 27 37 27 25 25
27 27 27 27 27 25 25 25
25 25 25 25 25 25 25 25
25 25 25 25 25 25 25 ],
P4-9에 대한 인터 (P) 초기화 값:
[ 62 57 54 51
57 55 54 51
54 54 55 55
51 51 55 ],
P4-6에 대한 인터 (P) 초기화 값:
[ 61 51 43 34
51 51 43 34
43 43 48 48
34 34 48 ],
P8-12에 대한 인터 (P) 초기화 값:
[ 60 54 47 47 42 42 39 39
54 54 47 47 42 42 39 39
47 47 43 43 41 41 39 39
47 47 43 43 41 41 39 39
42 42 41 41 43 41 41 41
42 42 41 41 41 41 41 41
39 39 39 39 41 41 41 41
39 39 39 39 41 41 41 ],
P8-4에 대한 인터 (P) 초기화 값:
[ 55 55 37 37 27 27 21 21
55 55 37 37 27 27 21 21
37 37 37 37 27 27 21 21
37 37 37 37 27 27 21 21
27 27 27 27 37 27 21 21
27 27 27 27 27 21 21 21
21 21 21 21 21 21 21 21
21 21 21 21 21 21 21 ].
스캔 순서
위에서 설명한 것처럼, 최종 유효 계수(LSC)의 위치는 스캔 순서를 이용하여 결정된다. 예시적인 규정된 스캔 순서는 수평, 수직, 대각선, 및 지그재그를 포함한다. 중요도 맵의 인코딩 및 디코딩은 LSC로부터의 역방향인 역으로 특정된 스캔 순서로 진행한다.
예컨대 하드웨어로 수행되는 일부 구현예에 있어서, 인코더 또는 디코더가 새로운 콘텍스트를 로드해야 하는 횟수를 최소화하는 것이 유리할 수 있다. 파티션 집합의 소정의 부분품에서의 각 위치가 동일한 콘텍스트를 사용하기 때문에, 이것은 다음 부분품으로 진행하기 전에 하나의 부분품 내의 모든 위치들을 처리하는 것이 더 효율적일 수 있음을 의미한다. 따라서, 일부 실시형태에 있어서, 다른 스캔 순서는 LSC를 결정할 때 사용되었던 것보다 중요도 맵을 인코딩하기 위해 사용될 수 있다.
n×n TU에 있어서, 부호화 스캔 순서는 수 0, 1, ..., n2-2의 임의 순열이다. 순열은 수평 수캔 순서로 리스트된 매트릭스 위치에 적용된다. 인코더와 디코더가 각 파티션 집합에 대한 동일한 순열에 일치하는 한 임의의 순열이 사용될 수 있다. 순열은 예를 들면 콘텍스트들 간의 스위치의 수를 최소화하도록 설계될 수 있다.
예를 사용하기 위해 P4-6에 대한 파티션 집합이 다음과 같이 주어진다는 점을 상기한다.
0 1 2 3
1 1 2 3
4 4 5 5
3 3 5
만일 대각선 스캐닝을 사용하면, 순열은 다음과 같이 주어진다.
0, 4, 1, 8, 5, 2, 12, 9, 6, 3, 13, 10, 7, 14, 11 (1)
이때 수 0, 1, ... 14는 수평 순서에서 4×4 비트 위치를 나타낸다. 이 대각선 스캐닝 순열에 있어서, 콘텍스트는 그에 따라서 하기의 순서로 사용된다.
0, 1, 1, 4, 1, 2, 3, 4, 2, 3, 3, 5, 3, 5, 5 (2)
중요도 맵의 인코딩 및 디코딩을 위해, 이 콘텍스트들은 LSC 전의 위치로부터 역방향으로 판독한 순서로 사용된다. 이것은 하기의 스캔 순서 또는 순열보다 더 많은 콘텍스트 변화를 야기한다.
0, 4, 1, 5, 2, 6, 3, 7, 12, 13, 8, 9, 10, 11, 14 (3)
이것은 콘텍스트가 하기의 순서로 사용되게 한다.
0, 1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5 (4)
따라서, 스캔 순서 (3)은 중요도 맵을 처리할 때 대각선 스캔 (1) 대신에 P4-6과 함께 사용하도록 미리 규정될 수 있고, 이것은 콘텍스트 시퀀스 (2) 대신에 (4)가 사용되어 계수들 간에 콘텍스트 변화가 더 적게 한다.
콘텍스트 변화를 최소화하게 하는 중요도 맵의 재정돈된 스캔 순서는 일부 하드웨어 구현예에서 유리할 수 있다. 단일의 클럭 주기에 2개의 다른 콘텍스트로부터의 비트들을 처리하는 것이 가능하지만, 단일 클럭 주기에 동일한 콘텍스트로부터의 비트들을 처리하는 것이 더 용이하다. 콘텍스트에 의해 저장소들을 그룹화하도록 저장소들을 재정돈함으로써, 클럭 주기당 복수의 저장소를 처리하는 것이 더 용이하다. 만일 단일 클럭 주기에 취급되는 2개의 콘텍스트가 서로 다르면, 인코더/디코더는 2개의 다른 콘텍스트를 판독하고 2개의 다른 콘텍스트를 갱신해야 한다. 2개를 판독하고 갱신하는 것보다 1 클럭 주기에서 단일 콘텍스트를 2회 갱신하는 하드웨어 구현예를 생성하는 것이 더 용이할 수 있다.
구체적인 구문예 - 정적 지정 실시형태
HEVC의 현재 개발중인 구문에 의지할 때, 구문에 대한 하기의 수정 및/또는 추가가 정적 지정의 사용을 촉진하기 위해 일부 예시적인 실시형태에서 이루어질 수 있다. 하기의 예에서, 구문은 위에서 설명한 4개의 예시적인 파티션 집합(P4-6, P4-9, P8-4, P8-12)이 4×4 크로마, 4×4 루마, 8×8 크로마 및 8×8 루마와 함께 사용하도록 각각 저장 및 지정되는 구현예에 기초를 둔다.
이러한 처리에의 입력은 컬러 성분 지수(cIdx), 현재 계수 스캔 위치(xC, yC), 즉 비트 위치, 및 변환 블록 크기(log2TrafoSize)이다. 이 처리의 출력은 ctxIdxInc이다. 변수 sigCtx는 현재 위치 (xC, yC), 컬러 성분 지수(dIdx), 변환 블록 크기 및 구문 요소 significant_coeff_flag의 예전에 디코드된 저장소에 의존한다. sigCtx의 유도를 위해 하기의 처리를 적용한다:
만일 log2TrafoSize가 2와 같으면, sigCtx는 다음과 같이 유도된다:
sigCtx = CTX_IND_MAP_4×4[cIdx][(yC << 2) + xC]
그렇지 않고 만일 log2TrafoSize가 3과 같으면, sigCtx는 다음과 같이 유도된다:
sigCtx = CTX_IND_MAP_8×8[cIdx][(yC << 3) + xC]
상수 CTX_IND_MAP_4×4 및 CTX_IND_MAP_8×8은 루마 및 크로마에 대하여 다음과 같이 규정될 수 있다:
static const UInt CTX_IND_MAP4x4[2][15] =
{
//LUMA map
{
0, 1, 2, 3,
4, 5, 2, 3,
6, 6, 7, 7,
8, 8, 7,
},
//CHROMA map
{
0, 1, 2, 3,
1, 1, 2, 3,
4, 4, 5, 5,
3, 3, 5
}
};
static const UInt CTX_IND_MAP8x8[2][63] =
{
//LUMA map
{
0, 1, 2, 2, 3, 3, 4, 4,
1, 1, 2, 2, 3, 3, 4, 4,
5, 5, 6, 6, 7, 7, 4, 4,
5, 5, 6, 6, 7, 7, 4, 4,
8, 8, 9, 9, 6, 7, 10, 10,
8, 8, 9, 9, 9, 10, 10, 10,
11, 11, 11, 11, 10, 10, 10, 10,
11, 11, 11, 11, 10, 10, 10
},
//CHROMA map
{
0, 0, 1, 1, 2, 2, 3, 3,
0, 0, 1, 1, 2, 2, 3, 3,
1, 1, 1, 1, 2, 2, 3, 3,
1, 1, 1, 1, 2, 2, 3, 3,
2, 2, 2, 2, 1, 2, 3, 3,
2, 2, 2, 2, 2, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3
}
};
콘텍스트 인덱스 증분(ctxIdxInc)은 컬러 성분 인덱스(cIdx), 변환 블록 크기(log2TrafoSize), sigCtx 및 파티션 집합을 이용하여 다음과 같이 유도된다.
ctxOffset[max(log2TrafoSize-2,2)][cIdx]의 값은 하기의 표에 나타내었다.
max(log2TrafoSize-2,2) cIdx=0 cIdx=1
0 0 0
1 num_paritions_luma4×4 num_paritions_chroma4×4
2 num_paritions_luma4×4 +
num_paritions_luma8×8
num_paritions_chroma4×4 +
num_paritions_chroma8×8
예를 들어서, 만일 파티션 집합 P4-9가 루마 4×4 블록에 대하여 사용되고, P4-6이 크로마 4×4 블록에 대하여, P8-12가 루마 8×8 블록에 대하여, 및 P8-4가 크로마 8×8 블록에 대하여 사용되면, 위의 표는 하기의 값을 갖는다.
max(log2TrafoSize-2,2) cIdx=0 cIdx=1
0 0 0
1 9 6
2 21 10
ctxIdxInc는 성분 cIdx의 4×4 블록의 시작 위치를 인용한다는 점에 주목한다. 값 ctxIdxInc는 다음과 같이 유도된다.
ctxIdxInc = ctxOffset[max(log2TrafoSize-2,2)][cIdx] + sigCtx
콘텍스트 변수의 초기화와 관련하여, 각 슬라이스 유형에 대한 ctxIdx와 구문 요소 간의 관계는 다음과 같이 특정될 수 있다.

구문요소
ctxIdxTable
슬라이스 유형
I P B
residual_coding() last_significant_coeff_x ... ... ... ...
last_significant_coeff_y ... ... ... ...
significant_coeff_flag Table 0...56 0...56 0...56
coeff_abs_level_greater1_flag ... ... ... ...
coeff_abs_level_greater2_flag ... ... ... ...
균일한 초기화 실시형태를 가정하면, 구문 요소 significant_coeff_flag에 대하여 위에서 인용된 ctxIdxTable은 다음과 같이 주어질 수 있다.
초기화
변수
significant_coeff_flag_ctxIdx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
48 49 50 51 52 53 54 55 56
m 0 0 0 0 0 0 0 0 0
n 64 64 64 64 64 64 64 64 64
그러나, 상수 초기화(constant initialization)가 균일한 초기화(uniform initialization) 대신에 구현되면, 구문 요소와 ctxIdx 간의 관계는 다음과 같이 수정될 수 있다.

구문요소
ctxIdxTable
슬라이스 유형
I P B
residual_coding() last_significant_coeff_x ... ... ... ...
last_significant_coeff_y ... ... ... ...
significant_coeff_flag(I) Table I 0...56
significant_coeff_flag(B) Table B 0...56
significant_coeff_flag(P) Table P 0...56
coeff_abs_level_greater1_flag ... ... ... ...
coeff_abs_level_greater2_flag ... ... ... ...
구문 요소 significant_coeff_flag(I)에 대하여 위에서 인용된 ctxIdxTable Table I는 다음과 같이 주어질 수 있다.
초기화
변수
significant_coeff_flag_ctxIdx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 77 71 66 61 71 67 66 65 61 71 67 59 53 45 59 55
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
m 0 0 0 0 0 -15 -14 -15 -4 0 -2 -7 -15 -4 1 -4
n 51 53 51 42 45 119 104 106 49 62 72 88 112 28 54 72
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
m -7 -10 0 0 0 0 0 0 0 0 0 0 15 7 5 14
n 82 96 67 60 55 46 55 54 62 48 41 33 59 56 57 11
48 49 50 51 52 53 54 55 56
m 10 7 5 11 -9 5 7 10 13
n 45 53 61 59 38 46 49 48 47
구문 요소 significant_coeff_flag(B)에 대하여 위에서 인용된 ctxIdxTable Table B는 다음과 같이 주어질 수 있다.
초기화
변수
significant_coeff_flag_ctxIdx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 61 56 52 51 56 54 52 55 51 59 52 45 38 37 45 40
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
m 0 0 0 0 0 0 0 -3 2 3 0 -3 -9 -4 4 1
n 37 38 37 40 37 78 66 68 31 53 65 74 93 20 44 57
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
m 0 -1 0 0 0 0 0 0 0 0 0 0 28 16 11 26
n 65 72 60 49 43 36 43 48 56 37 27 25 29 35 39 -18
48 49 50 51 52 53 54 55 56
m 10 4 -2 -11 0 5 5 9 20
n 44 58 71 94 0 45 49 45 32
구문 요소 significant_coeff_flag(P)에 대하여 위에서 인용된 ctxIdxTable Table P는 다음과 같이 주어질 수 있다.
초기화
변수
significant_coeff_flag_ctxIdx
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 62 57 54 51 57 55 54 55 51 60 54 47 42 39 47 43
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
m 0 0 0 0 0 0 0 -3 2 3 0 -3 -9 -4 4 1
n 41 42 41 41 39 78 66 68 31 53 65 74 93 20 44 57
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
m 0 -1 0 0 0 0 0 0 0 0 0 0 28 16 11 26
n 65 72 61 51 43 34 43 48 55 37 27 21 29 35 39 18
48 49 50 51 52 53 54 55 56
m 10 4 -2 -11 0 5 5 9 20
n 44 58 71 94 0 45 49 45 32
알고리즘 소프트웨어 구현예로 돌아가서, 추가의 상수가 임의의 4×4 집합에서 최대 파티션 수로서 규정될 수 있다.
const UInt NUM_SIG_FLAG_CTX_4×4 = 9
이 상수 및 위에서 규정한 파티션 집합 상수들을 이용해서, TComTrQuant::getSigCtxInc 함수에 대한 수정예를 다음과 같이 나타낼 수 있다.
getSigCtxInc(pcCoeff, uiPosX, uiPosY, uiLog2BlkSize, uiStride, eTType) {
eTType = eTType == TEXT_LUMA ? TEXT_LUMA : eTType == TEXT_NONE ?
TEXT_NONE : TEXT_CHROMA
L_C = eTType != TEXT_LUMA
uiScanIdx = ((uiLog2BlkSize - 2) << 1) | L_C
if (uiLog2BlkSize == 2) {
return CTX_IND_MAP_4x4[L_C][(uiPosY << 2) + uiPosX]
}
if (uiLog2BlkSize == 3) {
return NUM_SIG_FLAG_CTX_4x4 + CTX_IND_MAP_8x8[L_C] [(uiPosY << 3) + uiPosX]
}
// The rest of the function is unchanged(나머지 함수는 불변이다)
}
이제, 도 9를 참조하면, 인코더(900)의 예시적인 실시형태의 단순화한 블록도가 도시되어 있다. 인코더(900)는 프로세서(902), 메모리(904) 및 인코딩 애플리케이션(906)을 포함한다. 인코딩 애플리케이션(906)은 메모리(904)에 저장된 컴퓨터 프로그램 또는 애플리케이션을 포함하고, 여기에서 설명한 각종 단계 또는 동작들을 수행하도록 프로세서(902)를 구성하기 위한 명령어들을 내포한다. 예를 들면, 인코딩 애플리케이션(906)은 여기에서 설명한 적응성 재구성 레벨 처리에 따라서 비트스트림을 인코드하고 인코드된 비트스트림을 출력할 수 있다. 입력 데이터 포인트는 오디오, 이미지, 비디오, 또는 손실 데이터 보상 기획(scheme)의 대상인 기타 데이터와 관련이 있다. 인코딩 애플리케이션(906)은 파티션 구조의 각 인덱스에 대하여 적응성 재구성 레벨을 결정하도록 구성된 양자화 모듈(908)을 포함할 수 있다. 인코딩 애플리케이션(906)은 적응성 재구성 레벨 또는 RSP 데이터, 및 기타 데이터를 엔트로피 인코드하도록 구성된 엔트로피 인코더를 포함할 수 있다. 인코딩 애플리케이션(906)은 컴팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 컴퓨터 판독가능 매체에 저장될 수 있다.
이제, 도 10을 참조하면, 디코더(1000)의 예시적인 실시형태의 단순화한 블록도가 도시되어 있다. 디코더(1000)는 프로세서(1002), 메모리(1004) 및 디코딩 애플리케이션(1006)을 포함한다. 디코딩 애플리케이션(1006)은 메모리(1004)에 저장된 컴퓨터 프로그램 또는 애플리케이션을 포함하고, 여기에서 설명한 각종 단계 또는 동작들을 수행하도록 프로세서(1002)를 구성하기 위한 명령어들을 내포한다. 디코딩 애플리케이션(1006)은 RSP 데이터 또는 적응성 재구성 레벨을 획득하고 획득된 데이터를 이용하여 변환 도메인 계수 또는 다른 그러한 데이터 포인트를 재구성하도록 구성된 엔트로피 디코더 및 양자화 모듈(1010)을 포함할 수 있다. 디코딩 애플리케이션(1006)은 컴팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 컴퓨터 판독가능 매체에 저장될 수 있다.
본 발명에 따른 디코더 및/또는 인코더는 비제한적인 예를 들자면 서버, 적절히 프로그램된 범용 컴퓨터, 오디오/비디오 인코딩 및 재생장치, 셋톱 텔레비전 박스, 텔레비전 방송 장비, 및 모바일 장치를 포함한 다수의 컴퓨팅 장치에서 구현될 수 있다는 것을 이해할 것이다. 디코더 또는 인코더는 여기에서 설명한 각종 기능을 수행하도록 프로세서를 구성하기 위한 명령어를 포함한 소프트웨어에 의해 구현될 수 있다. 소프트웨어 명령어는 CD, RAM, ROM, 플래시 메모리 등을 포함한 임의의 적당한 비일시적 컴퓨터 판독가능 메모리에 저장될 수 있다.
여기에서 설명한 인코더 및 인코더를 구성하기 위해 여기에서 설명한 방법/프로세스를 구현하는 모듈, 루틴, 프로세스, 스레드 또는 기타 소프트웨어 컴포넌트는 표준 컴퓨터 프로그래밍 기술 및 언어를 이용하여 실현될 수 있다는 것을 이해할 것이다. 본 발명은 특정 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 규약, 데이터 구조, 기타 그러한 구현을 위한 세부로 제한되지 않는다. 이 기술에 숙련된 사람이라면 여기에서 설명한 각종 프로세스가 휘발성 또는 비휘발성 메모리에 저장된 컴퓨터 실행가능 코드의 일부로서, 용도 지정 집적회로(ASIC)의 일부로서 등으로 구현될 수 있다는 것을 인식할 것이다.
여기에서 설명한 실시형태의 특정 변형예 및 수정예가 만들어질 수 있다. 그러므로, 위에서 설명한 실시형태들은 단순히 설명을 위한 것이지 한정하는 것으로 의도되지 않는다.

Claims (13)

  1. 변환 유닛(transform unit)에 대한 중요도 맵(significance map)을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트(context)를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 인코드된 데이터를 디코딩하여, 비트 값을 재구성하는 단계와;
    그 재구성된 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 재구성된 비트 값은 디코드된 중요도 맵을 형성하고, 변환 유닛은 4×4의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 3,
    4, 5, 2, 3,
    6, 6, 7, 7,
    8, 8, 7,
    상기 정수들은 4×4 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 디코딩 방법.
  2. 제1항에 있어서, 상기 결정하는 단계는 텍스트 유형 및 변환 유닛 크기에 기초하여, 복수의 파티션 집합 중에서 파티션 집합을 선택하는 것을 포함하고, 상기 텍스트 유형은 루마(luma)이며 변환 유닛 크기는 4×4인 디코딩 방법.
  3. 변환 유닛에 대한 중요도 맵을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 인코드된 데이터를 디코딩하여, 비트 값을 재구성하는 단계와;
    그 재구성된 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 재구성된 비트 값은 디코드된 중요도 맵을 형성하고, 변환 유닛은 8×8의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 2, 3, 3, 4, 4,
    1, 1, 2, 2, 3, 3, 4, 4,
    5, 5, 6, 6, 7, 7, 4, 4,
    5, 5, 6, 6, 7, 7, 4, 4,
    8, 8, 9, 9, 6, 7, 10, 10,
    8, 8, 9, 9, 9, 10, 10, 10,
    11, 11, 11, 11, 10, 10, 10, 10,
    11, 11, 11, 11, 10, 10, 10
    상기 정수들은 8×8 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 디코딩 방법.
  4. 제3항에 있어서, 상기 결정하는 단계는 텍스트 유형 및 변환 유닛 크기에 기초하여, 복수의 파티션 집합 중에서 파티션 집합을 선택하는 것을 포함하고, 상기 텍스트 유형은 루마이며 변환 유닛 크기는 8×8인 디코딩 방법.
  5. 변환 유닛에 대한 중요도 맵을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 인코드된 데이터를 디코딩하여, 비트 값을 재구성하는 단계와;
    그 재구성된 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 재구성된 비트 값은 디코드된 중요도 맵을 형성하고, 변환 유닛은 4×4의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 3,
    1, 1, 2, 3,
    4, 4, 5, 5,
    3, 3, 5
    상기 정수들은 4×4 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 디코딩 방법.
  6. 변환 유닛에 대한 중요도 맵을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치의 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 인코드된 데이터를 디코딩하여, 비트 값을 재구성하는 단계와;
    그 재구성된 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 재구성된 비트 값은 디코드된 중요도 맵을 형성하고, 변환 유닛은 8×8의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 0, 1, 1, 2, 2, 3, 3,
    0, 0, 1, 1, 2, 2, 3, 3,
    1, 1, 1, 1, 2, 2, 3, 3,
    1, 1, 1, 1, 2, 2, 3, 3,
    2, 2, 2, 2, 1, 2, 3, 3,
    2, 2, 2, 2, 2, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3
    상기 정수들은 8×8 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 디코딩 방법.
  7. 변환 유닛에 대한 중요도 맵을 재구성하기 위해 인코드된 데이터의 비트스트림을 디코딩하는 디코더에 있어서,
    프로세서와;
    메모리와;
    메모리에 저장되고 청구항 1 내지 청구항 6 중의 어느 한 항에서 청구되는 방법을 수행하도록 프로세서를 구성하는 명령어를 내포한 디코딩 애플리케이션을 포함한 디코더.
  8. 변환 유닛에 대한 중요도 맵을 인코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 그 비트 위치에서의 비트 값을 인코딩하여, 인코드된 데이터를 발생시키는 단계와;
    그 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 인코드된 데이터는 인코드된 중요도 맵을 형성하고, 변환 유닛은 4×4의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 3,
    4, 5, 2, 3,
    6, 6, 7, 7,
    8, 8, 7,
    상기 정수들은 4×4 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 인코딩 방법.
  9. 변환 유닛에 대한 중요도 맵을 인코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 그 비트 위치에서의 비트 값을 인코딩하여, 인코드된 데이터를 발생시키는 단계와;
    그 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 인코드된 데이터는 인코드된 중요도 맵을 형성하고, 변환 유닛은 8×8의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 2, 3, 3, 4, 4,
    1, 1, 2, 2, 3, 3, 4, 4,
    5, 5, 6, 6, 7, 7, 4, 4,
    5, 5, 6, 6, 7, 7, 4, 4,
    8, 8, 9, 9, 6, 7, 10, 10,
    8, 8, 9, 9, 9, 10, 10, 10,
    11, 11, 11, 11, 10, 10, 10, 10,
    11, 11, 11, 11, 10, 10, 10
    상기 정수들은 8×8 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 인코딩 방법.
  10. 변환 유닛에 대한 중요도 맵을 인코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 그 비트 위치에서의 비트 값을 인코딩하여, 인코드된 데이터를 발생시키는 단계와;
    그 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 인코드된 데이터는 인코드된 중요도 맵을 형성하고, 변환 유닛은 4×4의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 1, 2, 3,
    1, 1, 2, 3,
    4, 4, 5, 5,
    3, 3, 5
    상기 정수들은 4×4 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 인코딩 방법.
  11. 변환 유닛에 대한 중요도 맵을 인코딩하는 방법에 있어서,
    중요도 맵의 각 비트 위치에 대하여,
    그 비트 위치에 대한 콘텍스트를 파티션 집합에 기초하여 결정하는 단계와;
    상기 결정된 콘텍스트에 기초하여 그 비트 위치에서의 비트 값을 인코딩하여, 인코드된 데이터를 발생시키는 단계와;
    그 비트 값에 기초하여 콘텍스트를 갱신하는 단계를 포함하고,
    상기 인코드된 데이터는 인코드된 중요도 맵을 형성하고, 변환 유닛은 8×8의 크기를 가지며, 파티션 집합은 아래와 같이 주어지는 블록 기반 맵핑에 따라서 비트 위치에 콘텍스트를 지정하고:
    0, 0, 1, 1, 2, 2, 3, 3,
    0, 0, 1, 1, 2, 2, 3, 3,
    1, 1, 1, 1, 2, 2, 3, 3,
    1, 1, 1, 1, 2, 2, 3, 3,
    2, 2, 2, 2, 1, 2, 3, 3,
    2, 2, 2, 2, 2, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3, 3,
    3, 3, 3, 3, 3, 3, 3
    상기 정수들은 8×8 블록 중요도 맵의 비트 위치에 지정된 콘텍스트를 나타내는 것인 인코딩 방법.
  12. 변환 유닛에 대한 중요도 맵을 인코딩하는 인코더에 있어서,
    프로세서와;
    중요도 맵을 저장하는 메모리와;
    메모리에 저장되고 청구항 8 내지 청구항 11 중의 어느 한 항에서 청구되는 방법을 수행하도록 프로세서를 구성하는 명령어를 내포한 인코딩 애플리케이션을 포함한 인코더.
  13. 실행되었을 때 청구항 1 내지 청구항 6 및 청구항 8 내지 청구항 11 중의 어느 한 항에서 청구되는 방법을 수행하도록 하나 이상의 프로세서를 구성하는 프로세서 실행가능 명령어를 저장한 비일시적 프로세서 판독가능 매체.
KR1020120117887A 2011-10-24 2012-10-23 파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩 KR101418649B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP11186392.4 2011-10-24
EP11186392.4A EP2587802B1 (en) 2011-10-24 2011-10-24 Significance map encoding and decoding using partition selection

Publications (2)

Publication Number Publication Date
KR20130048153A true KR20130048153A (ko) 2013-05-09
KR101418649B1 KR101418649B1 (ko) 2014-07-30

Family

ID=44883121

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120117887A KR101418649B1 (ko) 2011-10-24 2012-10-23 파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩

Country Status (11)

Country Link
EP (4) EP3621206B1 (ko)
JP (1) JP5529236B2 (ko)
KR (1) KR101418649B1 (ko)
CN (2) CN103067701B (ko)
AU (1) AU2012244143B2 (ko)
BR (1) BR102012027259B1 (ko)
CA (1) CA2795414C (ko)
ES (1) ES2496365T3 (ko)
HK (1) HK1201646A1 (ko)
SG (1) SG189659A1 (ko)
TW (1) TWI493945B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3550840A1 (en) 2012-01-20 2019-10-09 Sony Corporation Complexity reduction of significance map coding
US10448058B2 (en) * 2015-05-21 2019-10-15 Qualcomm Incorporated Grouping palette index at the end and index coding using palette size and run value
KR20180045530A (ko) 2016-10-26 2018-05-04 디지털인사이트 주식회사 임의의 블록 분할을 사용하는 비디오 코딩 방법 및 장치
US11297339B2 (en) * 2017-12-06 2022-04-05 V-Nova International Limited Methods and apparatuses for hierarchically encoding and decoding a bytestream
CN111602396B (zh) 2019-06-25 2022-04-29 北京大学 一种视频图像处理方法、设备及存储介质
CN111699681B (zh) * 2019-06-25 2023-11-14 北京大学 一种视频图像处理方法、设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW420935B (en) * 1998-05-07 2001-02-01 Sarnoff Corp Method and apparatus for increasing memory resource utilization in an information stream decoder
KR20040091682A (ko) * 2002-03-05 2004-10-28 코닌클리케 필립스 일렉트로닉스 엔.브이. 계층적 비디오 인코딩을 위한 방법 및 시스템
US8213484B2 (en) * 2005-06-16 2012-07-03 Qualcomm Incorporated Wireless communication network with extended coverage range
US7535972B2 (en) * 2005-06-24 2009-05-19 Broadcom Corporation Programmable transmitter
CN101132529A (zh) * 2006-08-22 2008-02-27 中兴通讯股份有限公司 基于快速逐次逼近量化的小波图像压缩方法
CA2667727C (en) * 2006-11-14 2014-07-08 Nippon Telegraph And Telephone Corporation Information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs
US7378994B1 (en) * 2007-01-08 2008-05-27 Mediatek, Inc. EFM/EFM+ encoder and method thereof
KR101356733B1 (ko) * 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
CN101609547B (zh) * 2009-07-16 2011-12-07 复旦大学 基于累积能量的无缝拼接图像处理方法
CN113556563B (zh) * 2010-04-13 2024-08-20 Ge视频压缩有限责任公司 显著性图和变换系数块的编码
US9793921B2 (en) * 2010-05-12 2017-10-17 Thomson Licensing Dtv Methods and apparatus for unified significance map coding
CN102063258B (zh) * 2010-12-31 2012-07-04 山东大学 一种针对不同尺寸显示终端的图像自适应显示方法
US8687904B2 (en) * 2011-01-14 2014-04-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding
CN102129698A (zh) * 2011-03-08 2011-07-20 华中科技大学 一种基于感兴趣区域的图像编码方法
CN103129698A (zh) * 2011-11-29 2013-06-05 刘增勇 一种全回转拖船

Also Published As

Publication number Publication date
CA2795414A1 (en) 2013-04-24
EP3621206A1 (en) 2020-03-11
EP2587802A1 (en) 2013-05-01
EP3621206B1 (en) 2024-06-05
AU2012244143B2 (en) 2014-11-13
EP2587802A9 (en) 2013-07-03
AU2012244143A1 (en) 2013-05-09
JP5529236B2 (ja) 2014-06-25
TWI493945B (zh) 2015-07-21
CN103067701A (zh) 2013-04-24
CN103067701B (zh) 2016-06-08
CN105791847B (zh) 2018-12-11
HK1201646A1 (en) 2015-09-04
EP2587802B1 (en) 2014-07-16
JP2013093848A (ja) 2013-05-16
TW201325241A (zh) 2013-06-16
KR101418649B1 (ko) 2014-07-30
EP2773047A3 (en) 2015-01-14
ES2496365T3 (es) 2014-09-18
CA2795414C (en) 2015-07-14
SG189659A1 (en) 2013-05-31
BR102012027259B1 (pt) 2022-04-12
EP2773047A2 (en) 2014-09-03
BR102012027259A2 (pt) 2014-09-16
EP4447445A2 (en) 2024-10-16
CN105791847A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
US11627338B2 (en) Significance map encoding and decoding using partition selection
AU2016270634B2 (en) Advanced arithmetic coder
EP3847809A1 (en) Regular coded bin reduction for coefficient coding using threshold and rice parameter
WO2019100060A1 (en) Memory reduction for context initialization with temporal prediction
WO2013158566A1 (en) Coefficient groups and coefficient coding for coefficient scans
KR20220024050A (ko) 비디오 코딩을 위한 저주파 비분리형 변환 시그널링을 위한 콘텍스트 모델링
KR101418649B1 (ko) 파티션 선택을 이용한 중요도 맵 인코딩 및 디코딩
EP3754989A1 (en) Multi-level significance maps for encoding and decoding
EP3906679A1 (en) Escape coding for coefficient levels

Legal Events

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

Payment date: 20170628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180626

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190703

Year of fee payment: 6