KR102613155B1 - 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에적합한 변환 계수의 효율적인 코딩 - Google Patents
종속 스칼라 양자화를 사용하거나 이와 조합하는 데에적합한 변환 계수의 효율적인 코딩 Download PDFInfo
- Publication number
- KR102613155B1 KR102613155B1 KR1020237022958A KR20237022958A KR102613155B1 KR 102613155 B1 KR102613155 B1 KR 102613155B1 KR 1020237022958 A KR1020237022958 A KR 1020237022958A KR 20237022958 A KR20237022958 A KR 20237022958A KR 102613155 B1 KR102613155 B1 KR 102613155B1
- Authority
- KR
- South Korea
- Prior art keywords
- flag
- transform coefficient
- transform
- context coded
- decoding
- Prior art date
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 435
- 230000001419 dependent effect Effects 0.000 title abstract description 51
- 238000000034 method Methods 0.000 claims description 78
- 230000007423 decrease Effects 0.000 claims description 2
- 230000001052 transient effect Effects 0.000 claims 1
- 230000009466 transformation Effects 0.000 description 68
- 230000006870 function Effects 0.000 description 43
- 230000007704 transition Effects 0.000 description 39
- 241000209094 Oryza Species 0.000 description 36
- 235000007164 Oryza sativa Nutrition 0.000 description 36
- 235000009566 rice Nutrition 0.000 description 36
- 230000003044 adaptive effect Effects 0.000 description 29
- 230000000694 effects Effects 0.000 description 28
- 238000006243 chemical reaction Methods 0.000 description 26
- 230000033001 locomotion Effects 0.000 description 26
- 239000013598 vector Substances 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 241000170567 Gollum Species 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 14
- 241000023320 Luma <angiosperm> Species 0.000 description 13
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical group COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 13
- 208000010587 benign idiopathic neonatal seizures Diseases 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 238000011084 recovery Methods 0.000 description 9
- 238000000844 transformation Methods 0.000 description 9
- 238000005259 measurement Methods 0.000 description 8
- IBBLRJGOOANPTQ-JKVLGAQCSA-N quinapril hydrochloride Chemical compound Cl.C([C@@H](C(=O)OCC)N[C@@H](C)C(=O)N1[C@@H](CC2=CC=CC=C2C1)C(O)=O)CC1=CC=CC=C1 IBBLRJGOOANPTQ-JKVLGAQCSA-N 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000009795 derivation Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 101100439297 Caenorhabditis elegans cgt-1 gene Proteins 0.000 description 3
- 101100439298 Caenorhabditis elegans cgt-2 gene Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 108091026890 Coding region Proteins 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 108010076504 Protein Sorting Signals Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 241000238097 Callinectes sapidus Species 0.000 description 1
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000002537 cosmetic Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/18—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/1887—Methods 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 variable length codeword
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
종속 양자화의 사용이 컨텍스트 적응 엔트로피 코딩의 사용과 결합된 경우에도 종속 양자화 및 컨텍스트 적응 엔트로피 코딩을 사용하여 변환 블록 계수의 보다 효율적인 코딩을 달성하거나 보다 효율적인 코딩을 허용하는 방식으로 변환 블록의 계수 코딩을 달성할 수 있는 개념이 제공된다.
Description
본 출원은 화상 또는 비디오를 코딩하는 것과 같은 변환 계수 레벨의 코딩에 관한 것이다.
양자화 매개변수를 설정할 때, 인코더는 타협해야 한다. 양자화를 거칠게 렌더링하면 비트 전송률이 감소하지만, 양자화 왜곡이 증가하고 양자화를 더 미세하게 렌더링하면 왜곡이 감소하지만 비트 전송률은 증가한다. 사용 가능한 양자화 레벨의 주어진 도메인에 대해 코딩 효율성을 증가시키는 개념을 가지고 있는 것이 유리하다. 이러한 가능성 중 하나는 이전에 양자화되고 코딩된 데이터에 따라 양자화가 꾸준히 조정되는 종속 양자화의 사용이다. 그러나 이 양자화의 종속성은 양자화 및 코딩되는 데이터 항목들 간의 상호 관계에 영향을 미치고 이에 따라서 개별 구문 요소를 코딩하기 위한 컨텍스트 유도에 대한 정보의 가용성에 영향을 미치므로, 코딩 복잡성 증가, 컨텍스트 모델링 수행을 위한 정보 저장소 감소와 같은 문제를 발생하게 만든다.
종속 양자화의 사용이 컨텍스트 적응 엔트로피 코딩의 사용과 결합되는 경우우에도 더 효율적인 코딩을 허용하는 방식으로 종속 양자화 및 컨텍스트 적응 엔트로피 코딩을 사용하여 변환 블록 계수의 보다 효율적인 코딩을 달성하고 변환 블록의 계수 코딩을 달성하는 개념을 갖는 것이 바람직하다.
본 발명의 목적은 변환 계수 블록을 코딩하기 위한 이러한 개념을 제공하는 것이다.
이 목적은 본 출원의 독립 청구항의 주제에 의해 달성된다.
본 발명의 바람직한 측면은 종속 클레임의 주제이다. 본 출원의 바람직한 실시 예는 다음 도면과 관련하여 이하에 설명된다:
도 1은 이하 설명되는 임의의 실시 예에 따라 동작하거나 본 명세서에서 설명된 실시 예에 따른 기능을 통합하도록 구현될 수 있는 화상 인코더에 대한 예로서 예시적인 비디오 인코더의 블록도를 도시한다;
도 2는 블록 기반 변환 코딩의 기본 접근법을 설명하기 위한 (a) 변환 인코더 및 (b) 변환 디코더의 블록도를 도시한다;
도 3은 균일한 복원 양자화기를 나타내는 분포의 히스토그램을 도시한다;
도 4는 변환 계수 레벨, 본 명세서에서 예를 들어 H.265|MPEG-H HEVC에서 사용되는 것의 스캐닝에 대한 예를 설명하기 위해서 (a) 서브블록으로 세분화된 변환 블록 및 (b) 서브블록의 개략도를 도시하고; 특히, (a)는 16x16 변환 블록을 4x4 서브블록 및 서브블록의 코딩 순서를 도시하고, (b)는 4x4 서브블록 내부의 변환 계수 레벨의 코딩 순서를 도시한다. 세분화는 본 출원의 실시 예에서, 그들의 플래그 및 나머지를 디코딩할 때 계수의 패스 및 이들을 역양자화할 때 상태 변이를 위해서, 예시적으로 사용될 수 있다.
도 5는 변환 계수 당 하나의 축으로 확장된 다차원 출력 공간의 개략도와 두 변환 계수: (a) 독립 스칼라 양자화; (b) 종속 스칼라 양자화의 예의 간단한 경우에 대해 허용되는 복원 벡터의 위치를 도시하며;
도 6은 종속 스칼라 양자화를 사용하여 본 출원에 따른 미디어 디코더의 실시 예를 형성하는 변환 디코더의 블록도를 도시한다. 도 2b와 비교하여 기존의 변환 코딩(독립 스칼라 양자화기 사용)과 관련된 수정이 유도 가능하다. 상응하는 방식으로, 종속 스칼라 양자화를 사용하여 변환 블록을 인코딩하는 실시 예는 마찬가지로 도 2a의 인코더를 수정함으로써 획득될 수 있다.
도 7은 단일 양자화 단계 크기 Δ에 의해 완전히 결정되는 두 세트의 복원 레벨의 종속 양자화의 실시 예를 나타내는 개략도이다. 사용 가능한 두 세트의 복원 레벨이 세트 0(맨 위 줄) 및 세트 1(맨 아래 줄)로 강조 표시된다. 세트 내의 복원 레벨을 나타내는 양자화 인덱스의 예는 원 아래의 숫자로 제공된다. 속이 빈 원과 채워진 원은 복원 레벨 세트 내의 서로 다른 두 서브 세트를 나타낸다; 서브 세트는 복원 순서에서 다음 변환 계수에 대한 복원 레벨 세트를 결정하는 데 사용될 수 있다. 두 세트 모두 0과 동일한 복원 레벨을 포함하지만, 분리되어 있다. 두 세트 모두 0을 중심으로 대칭이다.
도 8은 변환 계수에 대한 복원 프로세스의 예를 설명하는 의사 코드를 도시한다. k는 현재 변환 계수의 복원 순서를 지정하는 인덱스를 나타내고, 현재 변환 계수에 대한 양자화 인덱스는 level[k]로 표시되고, 현재 변환 계수에 적용되는 양자화 스텝 크기 Δk는 quant_step_size[k]로 표시되며, trec[k]는 복원된 변환 계수 tk '의 값을 나타낸다. 변수 setId[k]는 현재 변환 계수에 적용되는 복원 레벨 세트를 지정한다. 복원 순서에서 선행 변환 계수에 기초하여, setId[k]의 가능한 값은 0과 1이라고 결정된다. 변수 n은 양자화 단계 크기의 정수 인자를 지정하고; 이는 선택된 복원 레벨 세트(즉, setId[k]의 값) 및 전송된 양자화 인덱스 level[k]에 의해 제공된다.
도 9는 도 8의 의사 코드의 대안적인 구현을 예시하는 의사 코드를 도시한다. 주요 변경 사항은 양자화 단계를 통한 곱셈이 스케일 및 시프트 매개변수를 사용하는 정수 구현을 사용하여 표현된다는 것이다. 일반적으로, 시프트 매개변수(시프트로 표시됨)는 변환 블록에 대해 일정하며 스케일 매개변수(scale[k]로 제공됨) 만 변환 계수의 위치에 따라 달라질 수 있다. 변수 add는 반올림 오프셋을 나타내며, 일반적으로 add =(1 <<(shift-1))과 동일하게 설정된다. Δk가 변환 계수에 대한 명목 양자화 단계인 경우, 매개변수 shift 및 scale[k]는 를 갖는 방식으로 선택된다.
도 10은 변환 블록에 대한 변환 계수의 복원 프로세스에 대한 예를 나타내는 의사 코드를 도시한다. 어레이 레벨은 변환 블록에 대해 전송된 변환 계수 레벨(양자화 인덱스)을 나타내고 어레이 trec는 대응하는 복원된 변환 계수를 나타낸다. 2차원 테이블 state_trans_table은 상태 변이 테이블을 지정하고 테이블 setId는 상태와 연관된 양자화 세트를 지정한다.
도 11은 격자 구조로서 종속 스칼라 양자화에서 상태 변이를 예시하는 개략도를 보여준다. 수평 축은 복원 순서에서 상이한 변환 계수를 나타낸다. 수직 축은 종속 양자화 및 복원 프로세스에서 가능한 여러 상태를 나타낸다. 도시된 연결은 서로 다른 변환 계수에 대한 상태간에 사용 가능한 경로를 지정한다.
도 12a는 위치가 뒤 채우기로 설명되는 코딩 순서에서 제 1 논제로 양자화 인덱스의 위치의 시그널링을 설명하기 위한 변환 블록의 개략도를 보여준다. 제 1 논제로 변환 계수의 위치 외에도, 음영 처리된 계수에 대한 빈만 전송되고, 흰색으로 표시된 계수는 0과 같은 것으로 추론된다;
도 12b는 변환 블록의 개략도를 나타내고 확률 모델을 선택하는 데 사용되는 템플릿을 도시한다. 검은색 사각형은 현재 스캔 위치를 지정하고 음영 처리된 사각형은 컨텍스트 모델을 유도하는 데 사용되는 로컬 인접을 나타낸다;
도 13은 변환 계수 블록을 코딩하는 제 1 실시 예에 따른 의사 코드를 도시한다;
도 14는 양자화 인덱스에 대한 값 영역을 반복적으로 이등분하여 도 13의 실시 예에 따라 변환 계수의 양자화 인덱스의 표현을 나타내는 개략도를 도시한다;
도 15는 패스가 변환 계수를 횡단하는 방법 및 어느 플래그와 나머지가 도 13의 예에 따라 어느 패스에서 코딩되는지에 대하여, 도 13의 디코딩 예에서 다양한 패스를 예시하는 개략도를 도시한다;
도 16은 변환 계수 블록을 코딩하기 위한 제 2 실시 예를 설명하기 위한 의사 코드를 도시한다;
도 17은 도 16의 실시 예에 따른 계수의 양자화 인덱스의 표현을 예시하는 개략도를 도시한다;
도 18은 변환 계수 블록을 코딩하기 위한 제 3 실시 예를 예시하는 의사 코드를 도시한다; 및
도 19는 변환 계수 블록을 코딩하기 위한 제 4 실시 예를 예시하는 의사 코드를 도시한다.
도 1은 이하 설명되는 임의의 실시 예에 따라 동작하거나 본 명세서에서 설명된 실시 예에 따른 기능을 통합하도록 구현될 수 있는 화상 인코더에 대한 예로서 예시적인 비디오 인코더의 블록도를 도시한다;
도 2는 블록 기반 변환 코딩의 기본 접근법을 설명하기 위한 (a) 변환 인코더 및 (b) 변환 디코더의 블록도를 도시한다;
도 3은 균일한 복원 양자화기를 나타내는 분포의 히스토그램을 도시한다;
도 4는 변환 계수 레벨, 본 명세서에서 예를 들어 H.265|MPEG-H HEVC에서 사용되는 것의 스캐닝에 대한 예를 설명하기 위해서 (a) 서브블록으로 세분화된 변환 블록 및 (b) 서브블록의 개략도를 도시하고; 특히, (a)는 16x16 변환 블록을 4x4 서브블록 및 서브블록의 코딩 순서를 도시하고, (b)는 4x4 서브블록 내부의 변환 계수 레벨의 코딩 순서를 도시한다. 세분화는 본 출원의 실시 예에서, 그들의 플래그 및 나머지를 디코딩할 때 계수의 패스 및 이들을 역양자화할 때 상태 변이를 위해서, 예시적으로 사용될 수 있다.
도 5는 변환 계수 당 하나의 축으로 확장된 다차원 출력 공간의 개략도와 두 변환 계수: (a) 독립 스칼라 양자화; (b) 종속 스칼라 양자화의 예의 간단한 경우에 대해 허용되는 복원 벡터의 위치를 도시하며;
도 6은 종속 스칼라 양자화를 사용하여 본 출원에 따른 미디어 디코더의 실시 예를 형성하는 변환 디코더의 블록도를 도시한다. 도 2b와 비교하여 기존의 변환 코딩(독립 스칼라 양자화기 사용)과 관련된 수정이 유도 가능하다. 상응하는 방식으로, 종속 스칼라 양자화를 사용하여 변환 블록을 인코딩하는 실시 예는 마찬가지로 도 2a의 인코더를 수정함으로써 획득될 수 있다.
도 7은 단일 양자화 단계 크기 Δ에 의해 완전히 결정되는 두 세트의 복원 레벨의 종속 양자화의 실시 예를 나타내는 개략도이다. 사용 가능한 두 세트의 복원 레벨이 세트 0(맨 위 줄) 및 세트 1(맨 아래 줄)로 강조 표시된다. 세트 내의 복원 레벨을 나타내는 양자화 인덱스의 예는 원 아래의 숫자로 제공된다. 속이 빈 원과 채워진 원은 복원 레벨 세트 내의 서로 다른 두 서브 세트를 나타낸다; 서브 세트는 복원 순서에서 다음 변환 계수에 대한 복원 레벨 세트를 결정하는 데 사용될 수 있다. 두 세트 모두 0과 동일한 복원 레벨을 포함하지만, 분리되어 있다. 두 세트 모두 0을 중심으로 대칭이다.
도 8은 변환 계수에 대한 복원 프로세스의 예를 설명하는 의사 코드를 도시한다. k는 현재 변환 계수의 복원 순서를 지정하는 인덱스를 나타내고, 현재 변환 계수에 대한 양자화 인덱스는 level[k]로 표시되고, 현재 변환 계수에 적용되는 양자화 스텝 크기 Δk는 quant_step_size[k]로 표시되며, trec[k]는 복원된 변환 계수 tk '의 값을 나타낸다. 변수 setId[k]는 현재 변환 계수에 적용되는 복원 레벨 세트를 지정한다. 복원 순서에서 선행 변환 계수에 기초하여, setId[k]의 가능한 값은 0과 1이라고 결정된다. 변수 n은 양자화 단계 크기의 정수 인자를 지정하고; 이는 선택된 복원 레벨 세트(즉, setId[k]의 값) 및 전송된 양자화 인덱스 level[k]에 의해 제공된다.
도 9는 도 8의 의사 코드의 대안적인 구현을 예시하는 의사 코드를 도시한다. 주요 변경 사항은 양자화 단계를 통한 곱셈이 스케일 및 시프트 매개변수를 사용하는 정수 구현을 사용하여 표현된다는 것이다. 일반적으로, 시프트 매개변수(시프트로 표시됨)는 변환 블록에 대해 일정하며 스케일 매개변수(scale[k]로 제공됨) 만 변환 계수의 위치에 따라 달라질 수 있다. 변수 add는 반올림 오프셋을 나타내며, 일반적으로 add =(1 <<(shift-1))과 동일하게 설정된다. Δk가 변환 계수에 대한 명목 양자화 단계인 경우, 매개변수 shift 및 scale[k]는 를 갖는 방식으로 선택된다.
도 10은 변환 블록에 대한 변환 계수의 복원 프로세스에 대한 예를 나타내는 의사 코드를 도시한다. 어레이 레벨은 변환 블록에 대해 전송된 변환 계수 레벨(양자화 인덱스)을 나타내고 어레이 trec는 대응하는 복원된 변환 계수를 나타낸다. 2차원 테이블 state_trans_table은 상태 변이 테이블을 지정하고 테이블 setId는 상태와 연관된 양자화 세트를 지정한다.
도 11은 격자 구조로서 종속 스칼라 양자화에서 상태 변이를 예시하는 개략도를 보여준다. 수평 축은 복원 순서에서 상이한 변환 계수를 나타낸다. 수직 축은 종속 양자화 및 복원 프로세스에서 가능한 여러 상태를 나타낸다. 도시된 연결은 서로 다른 변환 계수에 대한 상태간에 사용 가능한 경로를 지정한다.
도 12a는 위치가 뒤 채우기로 설명되는 코딩 순서에서 제 1 논제로 양자화 인덱스의 위치의 시그널링을 설명하기 위한 변환 블록의 개략도를 보여준다. 제 1 논제로 변환 계수의 위치 외에도, 음영 처리된 계수에 대한 빈만 전송되고, 흰색으로 표시된 계수는 0과 같은 것으로 추론된다;
도 12b는 변환 블록의 개략도를 나타내고 확률 모델을 선택하는 데 사용되는 템플릿을 도시한다. 검은색 사각형은 현재 스캔 위치를 지정하고 음영 처리된 사각형은 컨텍스트 모델을 유도하는 데 사용되는 로컬 인접을 나타낸다;
도 13은 변환 계수 블록을 코딩하는 제 1 실시 예에 따른 의사 코드를 도시한다;
도 14는 양자화 인덱스에 대한 값 영역을 반복적으로 이등분하여 도 13의 실시 예에 따라 변환 계수의 양자화 인덱스의 표현을 나타내는 개략도를 도시한다;
도 15는 패스가 변환 계수를 횡단하는 방법 및 어느 플래그와 나머지가 도 13의 예에 따라 어느 패스에서 코딩되는지에 대하여, 도 13의 디코딩 예에서 다양한 패스를 예시하는 개략도를 도시한다;
도 16은 변환 계수 블록을 코딩하기 위한 제 2 실시 예를 설명하기 위한 의사 코드를 도시한다;
도 17은 도 16의 실시 예에 따른 계수의 양자화 인덱스의 표현을 예시하는 개략도를 도시한다;
도 18은 변환 계수 블록을 코딩하기 위한 제 3 실시 예를 예시하는 의사 코드를 도시한다; 및
도 19는 변환 계수 블록을 코딩하기 위한 제 4 실시 예를 예시하는 의사 코드를 도시한다.
후술하는 실시 예에서, 샘플 세트를 변환하기 위해 변환 코딩이 사용된다. 종속 양자화는 결과의 변환 계수를 양자화하는 데 사용되며, 획득된 양자화 인덱스의 엔트로피 코딩, 즉 컨텍스트 적응 산술 코딩이 발생한다. 디코더 측에서, 복원된 샘플 세트는 양자화 인덱스의 대응하는 디코딩 및 변환 계수의 종속적 복원에 의해 얻어지므로 역변환이 샘플을 생성한다. 샘플은 화상 또는 비디오의 일부일 수 있으며 특정 화상 블록을 설명할 수 있다. 당연히 다른 가능성도 존재한다. 아래의 실시 예의 설명은 주로 이미지 및 비디오 코덱의 예측 오류 샘플 블록의 손실 코딩을 대상으로 하지만, 실시 예는 손실 코딩의 다른 영역에도 적용될 수 있다. 특히 직사각형 블록을 형성하는 샘플 세트에 대한 제한이나 예측 오류 샘플(즉, 원본 신호와 예측 신호의 차이)을 나타내는 샘플 세트에 대한 제한이 없다.
국제 비디오 코딩 표준 H.264|MPEG-4 AVC 및 H.265 | MPEG-H HEVC와 같은 모든 최첨단 비디오 코덱는 하이브리드 비디오 코딩의 기본 접근 방식을 따른다. 비디오 사진은 블록으로 분할되고, 블록의 샘플은 화면 내 예측 또는 화면 간 예측을 사용하여 예측되고, 결과의 예측 오류 신호의 샘플(원본 샘플과 예측 신호의 샘플 간의 차이)은 변환 코딩을 사용하여 코딩된다.
도 1은 전형적인 최신 비디오 인코더의 단순화된 블록도를 도시한다. 비디오 시퀀스의 비디오 화상은 코딩 순서라고 하는 특정 순서로 코딩된다. 화상의 코딩 순서는 캡처 및 표시 순서와 다를 수 있다. 실제 코딩을 위해, 각 비디오 사진은 블록으로 분할된다. 블록은 특정 색상 구성 요소의 직사각형 영역 샘플로 구성된다. 동일한 직사각형 영역에 해당하는 모든 색상 구성 요소의 블록 엔티티를 종종 단위라고 한다. 블록 파티셔닝은 목적에 따라, H.265|MPEG-H HEVC에서는, 코딩 트리 블록(CTB), 코딩 블록(CB), 예측 블록(PB) 및 변환 블록(TB)으로 구분된다. 관련 단위는 코딩 트리 단위(CTU), 코딩 단위(CU), 예측 단위(PU) 및 변환 단위(TU)로 지칭된다.
일반적으로, 비디오 화상은 초기에 고정 크기 단위로 분할된다(즉, 모든 색상 구성 요소에 대해 정렬된 고정 크기 블록). H.265|MPEG-H HEVC에서, 이러한 고정 크기 단위를 코딩 트리 단위(CTU)라고 한다. 각 CTU는 여러 코딩 단위(CU)로 더 분할될 수 있다. 코딩 단위는 코딩 모드(예를 들어, 인트라 또는 인터 코딩)가 선택되는 엔티티이다. H.265|MPEG-H HEVC에서, CTU를 하나 또는 여러 CU로 분해하는 것은 쿼드 트리(QT) 구문에 의해 지정되고 비트 스트림의 일부로 전송된다. CTU의 CU는 소위 z-스캔 순서로 처리된다. 이것은 분할 결과 4 개의 블록이 래스터 스캔 순서로 처리되는 것을 의미하고; 블록이 더욱 분할된 경우, 상위 분할 레벨의 다음 블록이 처리되기 전에 대응하는 4 개의 블록(포함된 작은 블록을 포함)이 처리된다.
CU가 인트라 코딩 모드로 코딩되면 루마 신호에 대한 인트라 예측 모드가, 비디오 신호에 크로마 성분이 포함되어 있으면 크로마 신호에 대한 또 다른 인트라 예측 모드가 전송된다. ITU T H.265|MPEG H HEVC에서, CU 크기가 최소 CU 크기와 같으면(시퀀스 매개변수 세트에서 신호로 표시되는 바와 같이), 루마 블록은 동일한 크기의 블록 4 개로 분할될 수도 있고, 이 경우, 이들 블록 각각에 대해, 별도의 루마 인트라 예측 모드가 전송된다. 실제 인트라 예측 및 코딩은 변환 블록을 기반으로 수행된다. 화면 내 코딩된 CU의 각 변환 블록에 대해, 동일한 색 성분의 이미 복원된 샘플을 사용하여 예측 신호가 도출된다. 변환 블록에 대한 예측 신호 생성에 사용되는 알고리즘은 전송된 인트라 예측 모드에 의해 결정된다.
인트라 코딩 모드로 코딩된 CU는 다중 예측 단위(PU)로 더 분할될 수 있다. 예측 단위는 루마의 엔티티이며, 컬러 비디오의 경우, 단일 세트의 예측 매개변수가 사용되는 두 개의 연관된 크로마 블록(동일한 화상 영역을 포함)이 사용된다. CU는 단일 예측 단위로 코딩되거나, 2 개의 비 정사각형(대칭 및 비대칭 분할이 지원됨) 또는 4 개의 정사각형 예측 단위로 분할될 수 있다. 각 PU에 대해, 각 모션 매개변수 세트가 전송된다. 각 모션 매개변수 세트는, 모션 가설의 수(H.265|MPEG H HEVC에서 1 개 또는 2 개) 및 각각의 모션 가설에 대해, 참조 픽쳐(참조 픽쳐 인덱스를 통해 참조 픽쳐의 리스트로 표시됨) 및 관련 모션 벡터를 포함한다. 또한, H.265|MPEG-H HEVC는 소위 병합 모드를 제공하고, 이 때 모션 매개변수가 명시적으로 전송되지만, 공간적 또는 시간적 인접 블록의 모션 매개변수를 기반으로 유도된다. CU 또는 PU가 병합 모드로 코딩된 경우, 모션 매개변수 후보 목록에 대한 인덱스만 전송된다(이 목록은 공간 및 시간 주변 블록의 모션 데이터를 사용하여 파생된다). 인덱스는 사용되는 모션 매개변수 세트를 완전히 결정한다. 인터 코딩된 PU에 대한 예측 신호는 모션 보상 예측에 의해 형성된다. 각 모션 가설(참조 화상 및 모션 벡터에 의해 지정됨)에 대해, 지정된 참조 화상에서 변위된 블록에 의해 예측 신호가 형성되고, 여기서 현재 PU에 대한 변위는 모션 벡터에 의해 지정된다. 변위는 일반적으로 하위 샘플 정확도로 지정되고(H.265|MPEG H HEVC에서 모션 벡터의 정밀도는 1/4 루마 샘플이다). 정수가 아닌 모션 벡터의 경우, 복원된 참조 화상을 보간하여 예측 신호를 생성한다(일반적으로 분리 가능한 FIR 필터 사용하여). 다중 가설 예측을 사용하는 PU의 최종 예측 신호는 개별 모션 가설에 대한 예측 신호의 가중 합으로 구성된다. 일반적으로 동일한 모션 매개변수 세트가 PU의 루마 및 크로마 블록에 사용된다. 최신 비디오 코딩 표준은 참조 화상에 대한 현재 영역(샘플 블록)의 모션을 지정하기 위해 변환 변위 벡터를 사용하지만, 고차 모션 모델을 사용할 수도 있다(예를 들어, 아핀 모션 모델). 이 경우 모션 가설을 위해 추가 모션 매개변수를 전송해야 한다.
인트라 및 인터 코딩된 CU 모두에 대해, 예측 오류 신호(잔차 신호라고도 함)는 일반적으로 변환 코딩을 통해 전송된다. H.265|MPEG-H HEVC에서, CU의 루마 잔차 샘플 블록과 크로마 잔차 샘플(있는 경우) 블록은 변환 블록(TB)으로 분할된다. CU의 변환 블록으로 분할은 잔차 쿼드트리(RQT)라고도 하는, 쿼드 트리 구문으로 표시된다. 결과의 변환 블록은 변환 코딩을 사용하여 코딩되고: 2차원 변환이 잔차 샘플 블록에 적용되고, 결과의 변환 계수는 독립 스칼라 양자화를 사용하여 양자화되고, 결과의 변환 계수 레벨(양자화 인덱스)은 엔트로피 코딩된다. P 및 B 슬라이스에서 CU 구문의 시작 부분에서 skip_flag가 전송된다. 이 플래그가 1이면, 이것은 해당 CU가 병합 모드로 코딩된 단일 예측 단위로 구성되어 있고(즉, merge_flag는 1과 같은 것으로 추론 됨) 모든 변환 계수는 0과 같다(즉, 복원 신호는 예측 신호와 동일 함)는 것을 나타낸다. 이 경우 skip_flag와 함께 merge_idx 만 전송된다. skip_flag가 0이면, 예측 모드(인터 또는 인트라)가 시그널링되고, 이어서 상기 설명된 구문 피쳐가 시그널링된다.
이미 코딩된 화상은 다음 화상에서 블록의 모션 보상 예측에 사용할 수 있으므로, 이 화상은 인코더에서 완전히 복원되어야 한다. 블록에 대한 복원된 예측 오류 신호(양자화 인덱스와 역변환이 주어진 변환 계수를 복원하여 얻음)는 해당 예측 신호에 추가되고 그 결과는 현재 화상의 버퍼에 기록된다. 화상의 모든 블록이 복원된 후 하나 이상의 인-루프 필터가 적용될 수 있다(예를 들어, 디블로킹 필터 및 샘플 적응 오프셋 필터). 최종 복원된 화상은 디코딩된 화상 버퍼에 저장된다.
이하에서 설명하는 실시 예는 예측 오차에 관한 것과 같은 변환 계수 블록을 코딩하기 위한 개념을 제시한다. 이 개념은 화면 내 및 화면 간 코딩된 블록 모두에 적용할 수 있다. 직사각형이 아닌 샘플 영역의 코딩을 변환하는데도 적용할 수 있다. 기존의 변환 코딩과 달리 변환 계수는 독립적으로 양자화되지 않는다. 오히려 이들은 종속 양자화를 사용하여 양자화된다. 종속 양자화에 따르면, 특정 변환 계수에 대해 사용 가능한 복원 레벨 세트는 다른 변환 계수에 대해 선택된 양자화 인덱스에 따라 달라진다.
모든 주요 비디오 코딩 표준(최신 표준 H.265|MPEG-H HEVC 포함)은 예측 오류 샘플의 코딩 블록에 대해 변환 코딩의 개념을 활용한다. 블록의 예측 오차 샘플은 원본 신호의 샘플과 블록에 대한 예측 신호의 샘플 간의 차이를 나타낸다. 예측 신호는 화면 내 예측(이 경우 현재 블록에 대한 예측 신호의 샘플은 동일한 화면 내의 인접 블록의 이미 복원된 샘플을 기반으로 도출됨) 또는 화상 간 예측(이 경우 예측 신호의 샘플은 이미 복원된 화상의 샘플에 기초하여 도출됨)에 의해 획득된다. 원본 예측 오차 신호의 샘플은 현재 블록에 대한 원본 신호의 샘플 값에서 예측 신호의 샘플 값을 감하여 획득된다.
샘플 블록의 변환 코딩은 선형 변환, 스칼라 양자화 및 양자화 인덱스의 엔트로피 코딩으로 구성된다. 인코더 측(도 2a 참조)에서, 원본 샘플의 NxM 블록은 선형 분석 변환 A를 사용하여 변환된다. 결과는 NxM 블록의 변환 계수이다. 변환 계수 tk는 다른 신호 공간(또는 다른 좌표계)에서 원본의 예측 오류 샘플을 나타낸다. NxM 변환 계수는 NxM 독립 스칼라 양자화기를 사용하여 양자화된다. 각 변환 계수 tk는 변환 계수 레벨이라고도 하는, 양자화 인덱스 qk에 매핑된다. 획득된 양자화 인덱스 qk는 엔트로피 코딩되고 비트 스트림에 기록된다.
도 2b에 도시된 디코더 측에서, 변환 계수 레벨 qk는 수신된 비트 스트림으로부터 디코딩된다. 각 변환 계수 레벨 qk는 복원된 변환 계수 t' k에 매핑된다. 복원된 샘플의 NxM 블록은 선형 합성 변환 B를 사용하여 복원된 변환 계수의 블록을 변환하여 얻는다.
비디오 코딩 표준은 합성 변환 B만 지정하지만, 합성 변환 B의 역이 인코더에서 분석 변환 A로 사용되는 것이 일반적이다. 즉, A = B-1이다. 또한 실제 비디오 코딩 시스템에서 사용되는 변환은 직교 변환(B-1 = BT) 또는 거의 직교에 가까운 변환을 나타낸다. 직교 변환의 경우, 신호 공간의 평균 제곱 오차(MSE) 왜곡은 변환 영역의 MSE 왜곡과 같다. 직교성은 독립적인 스칼라 양자화기를 사용하여 원본과 복원된 샘플 블록 간의 MSE 왜곡을 최소화할 수 있다는 중요한 이점이 있다. 인코더에서 사용되는 실제 양자화 프로세스가 변환 계수 레벨(위의 엔트로피 코딩 설명에서 소개됨) 간의 종속성을 고려하는 경우에도, 직교 변환을 사용하면 양자화 알고리즘을 상당히 단순화할 수 있다.
일반적인 예측 오류 신호의 경우, 변환은 신호 에너지가 몇 개의 변환 계수에 집중되는 효과가 있다. 원본 예측 오류 샘플과 비교하여, 결과의 변환 계수 간의 통계적 종속성은 감소한다.
최첨단 비디오 코딩 표준에서, 분리 가능한 이산 코사인 변환(유형 II) 또는 그 정수 근사법이 사용된다. 그러나 변환 코딩 시스템의 다른 측면을 수정하지 않고도 변환을 쉽게 대체할 수 있다. 문헌 또는 표준화 문서에서 제안된 개선의 예는 다음과 같다:
* 화면 내 예측된 블록에 대해 이산 사인 변환(DST)의 사용(아마도 인트라 예측 모드 및/또는 블록 크기에 따라 다름). H.265|MPEG-H HEVC에는 이미 화면 내 예측된 4x4 변환 블록에 대한 DST가 포함되어 있음에 유의해야 한다.
* 전환된 변환 : 인코더는 미리 정의된 변환 세트 중에서 실제로 사용되는 변환을 선택한다. 사용 가능한 변환 세트는 인코더와 디코더 모두에 의해 알려져 있으므로, 사용 가능한 변환 목록에 대한 인덱스를 사용하여 효율적으로 신호를 보낼 수 있다. 사용 가능한 변환 세트 및 목록의 순서는 선택한 인트라 예측 모드와 같이, 블록에 대한 다른 코딩 매개변수에 따라 달라질 수 있다. 특별한 경우에, 사용된 변환은 인트라 예측 모드와 같은 코딩 매개변수에 의해 완전히 결정되므로, 변환을 지정하는 구문 요소가 전송될 필요가 없다.
* 분리 불가능한 변환 : 인코더와 디코더에서 사용되는 변환은 분리 불가능한 변환을 나타낸다. 전환된 변환의 개념에는 하나 이상의 분리 불가능한 변환이 포함될 수 있음에 유의해야 한다. 복잡한 이유로 인해 분리 불가능한 변환의 사용은 특정 블록 크기로 제한될 수 있다.
* 다중 레벨 변환 : 실제 변환은 두 개 이상의 변환 단계로 구성된다. 제 1 변환 단계는 계산적으로 복잡하지 않은 분리 가능한 변환으로 구성될 수 있다. 그리고 제 2 단계에서 결과 변환 계수의 서브 세트가 분리 불가능한 변환을 사용하여 추가로 변환된다. 전체 변환 블록에 대해 분리할 수 없는 변환과 비교하여, 2 단계 접근법은 더 복잡한 분리 불가능한 변환이 적은 수의 샘플에 적용된다는 장점이 있다. 다중 레벨 변환의 개념은 전환된 변환의 개념과 효율적으로 결합될 수 있다.
변환 계수는 스칼라 양자화기를 사용하여 양자화된다. 양자화의 결과로, 변환 계수에 허용되는 값 세트는 감소된다. 즉, 변환 계수는 소위 복원 레벨의 가산 세트(실제로는, 유한 세트)에 매핑된다. 복원 레벨 세트는 가능한 변환 계수 값 세트의 적절한 서브 세트를 나타낸다. 다음 엔트로피 코딩을 단순화하기 위해서, 허용 가능한 복원 레벨은 비트 스트림의 일부로 전송되는 양자화 인덱스(변환 계수 레벨이라고도 함)로 표시된다. 디코더 측에서는 양자화 인덱스(변환 계수 레벨)가 복원된 변환 계수에 매핑된다. 복원된 변환 계수의 가능한 값은 복원 레벨 세트에 해당한다. 인코더 측에서 스칼라 양자화의 결과는 변환 계수 레벨(양자화 인덱스) 블록이다.
최신 비디오 코딩 표준에서, 균일 복원 양자화기(URQ)가 사용된다. 기본 설계는 도 3에 나와 있다. URQ는 복원 레벨 s가 동일한 간격으로 배치된다는 특성을 가지고 있다. 인접한 두 복원 레벨 사이의 거리 Δ를 양자화 단계 크기라고 한다. 복원 레벨 중 하나는 0이다. 따라서 사용 가능한 복원 레벨의 전체 세트는 양자화 단계 크기 Δ에 의해 고유하게 지정된다. 양자화 인덱스 q와 복원된 변환 계수 t'의 디코더 매핑은 원칙적으로 다음과 같은 간단한 공식으로 주어진다:
이 컨텍스트에서, 용어 "독립 스칼라 양자화"는, 임의의 변환 계수에 대한 양자화 인덱스 q가 주어지면, 관련된 복원 변환 계수 t'는 다른 변환 계수에 대한 모든 양자화 인덱스와 독립적으로 결정될 수 있다는 속성을 의미한다.
비디오 디코더는 일반적으로 표준 정밀도(예를 들어, 32 비트)의 정수 산술을 사용하므로, 표준에 사용된 실제 공식은 단순 곱셈과 약간 다를 수 있다. 변환 계수에 대해 지원되는 동적 범위에 대한 클리핑을 무시할 때, H.265|MPEG-H HEVC에서 복원된 변환 계수는 다음으로 획득된다:
이 때, 연산자 "<<" 및 ">>"는 각각 왼쪽 및 오른쪽으로의 비트 이동을 나타낸다. 정수 산술을 무시하면, 양자화 단계 크기 Δ는 다음 항에 해당한다.
H.262| MPEG-2 비디오와 같은 구 비디오 코딩 표준은, 복원 레벨 0과 제 1 논제로 복원 레벨 사이의 거리가 명목 양자화 단계 크기(예를 들어, 공칭 양자화 단계 크기 Δ의 절반)에 상대적으로 증가하는 수정된 URQ을 또한 지정한다.
변환 계수에 대한 양자화 단계 크기(또는 스케일 및 시프트 매개변수)는 다음 두 가지 요인에 의해 결정된다:
* 양자화 매개변수 QP: 양자화 단계 크기는 일반적으로 블록 단위로 수정할 수 있다. 이를 위해 비디오 코딩 표준은 미리 정의된 양자화 단계 크기 세트를 제공한다. 사용된 양자화 단계 크기 (또는 앞서 소개된 "스케일" 및 "시프트" 매개변수)는 미리 정의된 양자화 단계 크기 목록에 대한 인덱스를 사용하여 표시된다. 인덱스를 양자화 매개변수(QP)라고 한다. H.265|MPEG-H HEVC에서, QP와 양자화 단계 크기 간의 관계는 대략 다음과 같다:
슬라이스 QP는 일반적으로 슬라이스 헤더에서 전송된다. 일반적으로, 블록 단위로 양자화 매개변수 QP를 수정할 수 있다. 이를 위해 DQP(델타 양자화 매개변수)가 전송될 수 있다. 사용된 양자화 매개변수는 전송된 DQP 및 예측된 QP 값에 의해 결정되며, 이는 이미 코딩된 (일반적으로 인접하는) 블록의 QP를 사용하여 도출된다.
* 양자화 가중 행렬 : 비디오 코딩 표준은 종종 개별 변환 계수에 대해 서로 다른 양자화 단계 크기를 사용할 수 있는 가능성을 제공한다. 이는 일반적으로 시퀀스 또는 화상 레벨에서 인코더에 의해 선택되어 비트 스트림의 일부로 전송되는, 소위 양자화 가중 행렬 w를 지정함으로써 달성된다. 양자화 가중 행렬 w는 대응하는 변환 계수 블록과 동일한 크기를 갖는다. 변환 계수 tik에 대한 양자화 단계 크기 Δik는 다음과 같이 주어진다:
여기에서, Δblock은 고려중인 블록에 대한 양자화 단계 크기(블록 양자화 매개변수 QP로 표시됨)를 나타내고, i 및 k는 변환 블록 내부의 현재 변환 계수를 지정하는 좌표를 나타내고, wik는 양자화 가중 행렬 w의 해당 엔트리를 나타낸다.
양자화 가중치 행렬의 주요 목적은 인지적으로 의미있는 방식으로 양자화 노이즈를 도입할 수 있는 가능성을 제공하는 것이다. 적절한 가중치 매트릭스를 사용하면, 인간 시각의 공간 대비 감도를 활용하여 비트 전송률과 주관적 복원 품질 간의 더 나은 균형을 얻을 수 있다. 그럼에도 불구하고, 많은 인코더는 소위 플랫 양자화 행렬(하이 레벨의 구문 요소를 사용하여 효율적으로 전송할 수 있음)을 사용한다. 이 경우, 블록의 모든 변환 계수에 대해 동일한 양자화 단계 크기 Δ가 사용된다. 그런 다음 양자화 단계 크기는 양자화 매개변수 QP에 의해 완전히 지정된다.
변환 계수 레벨의 블록(변환 계수에 대한 양자화 인덱스)은 엔트로피 코딩된다(즉, 비트 스트림의 일부로서 무손실 방식으로 전송됨). 선형 변환은 선형 종속성만 줄일 수 있으므로, 변환 계수 수준에 대한 엔트로피 코딩은 효율적인 코딩을 위해 블록의 변환 계수 레벨간에 남아있는 비선형 종속성을 활용할 수 있는 방식으로 일반적으로 설계된다. 잘 알려진 예로는 MPEG-2 Video에서 런-레벨 코딩(run-level coding), H.263 및 MPEG-4 Visual의 런-레벨=래스트 코딩, H264| MPEG-4 AVC의 컨텍스트 적응 가변 길이 코딩(CAVLC), 및 H.264|MPEG-4 AVC 및 H.265|MPEG-H HEVC의 컨텍스트 기반 적응 이진 산술 코딩(CABAC)이 있다.
최첨단 비디오 코딩 표준 H.265|MPEG-H HEVC에 지정된 CABAC는 다양한 변환 블록 크기에 적용될 수 있는 일반적인 개념을 따른다. 4x4 샘플보다 큰 변환 블록은 4x4 서브블록으로 분할된다. 분할은 16x16 변환 블록의 예에 대해 도 4a 및 b에 도시되어 있다. 도 4adp 도시된 4x4 서브블록의 코딩 순서 뿐만 아니라 도 4b에 표시된 서브블록 내부의 변환 계수 레벨의 코딩 순서는 일반적으로 도면에 표시된 역 대각선 스캔으로 지정된다. 특정 화면 내 예측 블록의 경우 수평 또는 수직 스캔 패턴이 (실제 인트라 예측 모드에 따라서) 사용된다. 코딩 순서는 항상 고 빈도 위치에서 시작된다.
H.265|MPEG-H HEVC에서, 변환 계수 레벨은 4x4 서브블록을 기반으로 전송된다. 변환 계수 수준의 무손실 코딩에는 다음 단계가 포함된다:
1. 변환 블록에 논제로 변환 계수 레벨이 있는지 여부를 신호 보내는 coded_block_flag 구문 요소가 전송된다. coded_block_flag가 0이면, 변환 블록에 대해 더 이상 데이터가 코딩되지 않는다.
2. 코딩 순서(예를 들어, 도 4에 예시된 블록 단위 역 대각 스캔 순서)에서 제 1 논제로 변환 계수 레벨의 x 및 y 좌표가 전송된다. 좌표 전송은 접두사와 접미사 부분으로 분할된다. 표준은 last_sig_coeff_x_prefix, last_sig_coeff_y_prefix, last_sig_coeff_x_suffix 및 last_sig_coeff_x_suffix 구문 요소를 사용한다.
3. 코딩 순서에서 0이 아닌 제 1 변환 계수 레벨을 포함하는 4x4 서브블록부터 시작하여, 4x4 서브블록이 코딩 순서로 처리된다. 여기서 서브블록의 코딩은 다음과 같은 주요 단계를 포함한다:
a. 구문 요소 coded_sub_block_flag가 전송되고, 이것은 서브블록이 0이 아닌 변환 계수 레벨을 포함하는지 여부를 나타낸다. 제 1 및 마지막 4x4 서브블록(즉, 제 1 논제로 변환 계수 레벨 또는 DC 레벨을 포함하는 서브블록)에 대해, 이 플래그는 전송되지 않고 1과 동일하게 추론된다.
b. coded_sub_block_flag가 1인 서브블록 내부의 모든 변환 계수 레벨에 대해, 구문 요소 significant_coeff_flag는 해당 변환 계수 레벨이 0이 아닌지 여부를 나타낸다. 이 플래그는 이미 전송된 데이터를 기반으로 값을 추론할 수없는 경우에만 전송된다. 특히, 플래그는 제 1 중요한 스캔 위치(전송된 x 및 y 좌표로 지정됨)에 대해서 전송되지 않고, 플래그는 DC 계수가 제 1 논제로 계수(코딩 순서대로)와 다른 서브블록에 있고 마지막 서브블록에 대한 다른 모든 다른 significant_coeff_flags가 0과 동일한 경우 DC 계수에 대해 전송되지 않는다.
c. significant_coeff_flag가 (있는 경우) 1인 처음 8 개의 변환 계수 레벨에 대해, 플래그 coeff_abs_level_greater1_flag가 전송된다. 이것은 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 나타낸다.
d. coeff_abs_level_greater1_flag가 (있는 경우) 1인 제 1 변환 계수 레벨의 경우, 플래그 coeff_abs_level_greater2_flag가 전송된다. 이것은 변환 계수 수준의 절대 값이 2보다 큰지 여부를 나타낸다.
e. significant_coeff_flag가 1 인 모든 레벨에 대해 (아래에서 예외가 설명됨), 변환 계수 레벨의 부호를 지정하는 구문 요소 coeff_sign_flag가 전송된다.
f. significant_coeff_flag, coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag의 값으로 절대 값이 아직 완전히 지정되지 않은 모든 변환 계수 수준에 대해 (전송된 플래그 중 하나가 0이면 절대 값이 완전히 지정됨), 절대 값의 나머지는 다중 레벨 구문 요소 coeff_abs_level_remaining을 사용하여 전송된다.
H.265|MPEG-H HEVC에서, 모든 구문 요소는 컨텍스트 기반 적응 이진 산술 코딩(CABAC)을 사용하여 코딩된다. 비 이진 구문 요소는 또한 빈(bin)이라고도 하는, 일련의 바이너리 결정에 매핑된다. 결과의 빈 시퀀스는 이진 산술 코딩을 사용하여 코딩된다. 이를 위해 각 빈은 컨텍스트라고도 하는 확률 모델(이진 확률 질량 함수)과 연결된다. 대부분의 빈에서, 컨텍스트는 적응형 확률 모델을 나타내며, 이는 관련 이진 확률 질량 함수가 실제로 코딩된 빈 값을 기반으로 업데이트됨을 의미한다. 조건부 확률은 이미 전송된 데이터를 기반으로 특정 빈에 대한 컨텍스트를 전환하여 이용할 수 있다. CABAC은 또한 고정 확률 질량 함수(0.5, 0.5)가 사용되는, 소위 우회 모드를 포함한다.
coded_sub_block_flag의 코딩을 위해 선택되는 컨텍스트는 이미 코딩된 인접 서브블록에 대한 coded_sub_block_flag의 값에 따라 달라진다. significant_coeff_flag에 대한 컨텍스트는 서브블록 내부의 스캔 위치(x 및 y 좌표), 변환 블록의 크기, 및 인접 서브블록의 coded_sub_block_flag의 값에 기반하여 선택된다. coeff_abs_level_greater1_flag 및 coeff_abs_level_greater2_flag 플래그의 경우, 컨텍스트 선택은 현재 서브블록이 DC 계수를 포함하는지 여부 및 및 1과 동일한 coeff_abs_level_greater1_flag가 인접 서브블록에 대해 전송되었는지 여부에 따라 다르다. coeff_abs_level_greater1_flag의 경우, 서브블록에 대해 이미 코딩된 coeff_abs_level_greater1_flag의 수와 값에 더 의존한다.
부호 coeff_sign_flag 및 절대값의 나머지 coeff_abs_level_remaining는 이진 산술 코더의 우회 모드에서 코딩된다. coeff_abs_level_remaining을 빈의 시퀀스(이진 결정)에 매핑하기 위해, 적응 이진화 방식이 사용된다. 이진화는 서브블록에 대해 이미 코딩된 값을 기반으로 조정되는 단일 매개변수에 의해 제어된다.
H.265|MPEG-H HEVC에는 소위 부호 데이터 숨김 모드가 포함되어 있고, 이 때, (특정 조건 하에서) 서브블록 내에서 0이 아닌 마지막 레벨에 대한 부호 전송이 생략된다. 대신, 이 레벨에 대한 부호는 해당 서브블록의 레벨에 대한 절대 값의 합의 패리티에 포함된다. 인코더는 적절한 변환 계수 레벨을 결정할 때 이 측면을 고려해야 한다.
비디오 코딩 표준은 비트 스트림 구문과 복원 프로세스만 지정한다. 원본 예측 오류 샘플의 주어진 블록에 대한 변환 코딩 및 주어진 양자화 단계 크기를 고려하면, 인코더는 많은 자유도를 가진다. 변환 블록에 대한 양자화 인덱스 qk가 주어지면, 엔트로피 코딩은 데이터를 비트 스트림에 기록하기 위해 고유하게 정의된 알고리즘을 따라야 한다(즉, 산술 코드 워드 구성). 그러나 예측 오류 샘플의 원본 블록이 주어진 경우 양자화 인덱스 qk를 획득하기 위한 인코더 알고리즘은 비디오 코딩 표준의 범위를 벗어난다. 또한 인코더는 블록 단위로 양자화 매개변수 QP를 자유롭게 선택할 수 있다. 다음 설명에서, 양자화 매개변수 QP와 양자화 가중치 행렬이 주어졌다고 가정한다. 따라서 각 변환 계수에 대한 양자화 단계 크기가 알려져 있다. 또한 인코더가 원본 변환 계수 tk를 얻기 위해 지정된 합성 변환의 역(또는 역에 매우 가까운 근사값)인 분석 변환을 수행한다고 가정한다. 이러한 조건에서도, 인코더는 각 원본 변환 계수 tk에 대해 양자화 인덱스 qk를 자유롭게 선택할 수 있다. 변환 계수 레벨을 선택하면 왜곡(또는 복원/근사 품질)과 비트 전송률이 모두 결정되므로, 사용된 양자화 알고리즘은 생성된 비트 스트림의 속도 왜곡 성능에 상당한 영향을 미친다.
가장 간단한 양자화 방법은 원본 변환 계수 tk를 가장 가까운 복원 레벨로 반올림한다. 일반적으로 사용되는 URQ의 경우 해당 양자화 인덱스 qk는 다음에 따라 결정될 수 있다:
sgn()은 부호 함수이고 연산자 는 그 인수보다 작거나 같은 가장 큰 정수를 반환한다. 이 양자화 방법은 MSE 왜곡이
로 최소화되는 것을 보장하지만, 결과의 변환 계수 레벨 qk를 전송하는 데 필요한 비트 전송률을 완전히 무시한다. 일반적으로 반올림이 0으로 치우치면 더 나은 결과를 얻을 수 있다.
양자화 과정이 라그랑주(Lagrangian) 함수 D + λ·R을 최소화하면 속도 왜곡 감지에서 최상의 결과를 얻을 수 있으며, 여기서 D는 변환 블록의 왜곡(예를 들어, MSE 왜곡)을 나타내고, R은 블록의 변환 계수 레벨을 전송하는 데 필요한 비트 수를 지정하고, λ는 라그랑주 승수이다. QP와 양자화 단계 크기(예를 들어, H.264|MPEG-4 AVC 또는 H.265|MPEG-H HEVC) 간의 관계 를 사용하는 코덱의 경우, 라그랑주 승수 λ와 블록 양자화 매개변수 QP 사이에는 다음과 같은 관계가 자주 사용된다:
여기에서 c1 및 2는 슬라이스 또는 화상에 대한 상수 인자를 나타낸다.
왜곡 및 속도의 라그랑주 함수 D + λ·R을 최소화하는 것을 목표로하는 양자화 알고리즘을 속도 왜곡 최적화 양자화(RDOQ)라고도 한다. MSE 또는 가중 MSE를 사용하여 왜곡을 측정하면, 변환 블록에 대한 양자화 인덱스 qk는 다음 비용 측정을 최소화하는 방식으로 결정되어야 한다.
이때, 변환 계수 인덱스 k는 변환 계수 레벨의 코딩 순서(또는 스캐닝 순서)를 지정한다. 항 R(qk|qk-1, qk-2, ...)은 양자화 인덱스 qk를 전송하는 데 필요한 비트 수(또는 추정치)를 나타낸다. 조건은 (결합 또는 조건부 확률의 사용으로 인해) 특정 변환 계수 레벨 qk에 대한 비트 수는 일반적으로 코딩 순서에서 선행 변환 계수 레벨 qk-1, qk-2 등에 대해 선택된 값에 의존한다는 것을 설명한다. 위 방정식의 계수 αk는 개별 변환 계수의 기여도에 가중치를 부여하기 위해, 예를 들어, 인간 시각의 대비 감도를 모델링하는 데 사용될 수 있다. 다음에서, 우리는 일반적으로 모든 가중치 인자 αk가 1과 같다고 가정한다(그러나 알고리즘은 다른 가중치 요인을 고려할 수 있는 방식으로 간단하게 수정될 수 있다).
대부분의 이진 결정이 적응형 확률 모델을 사용하여 코딩되기 때문에, H.265|MPEG-H HEVC에서 변환 계수 코딩에 대해서, 속도 항의 정확한 계산은 매우 복잡하다. 하지만 확률 모델 선택의 일부 측면을 무시하고 확률 모델이 변환 블록 내에서 조정된다는 사실을 무시하면, 합리적인 정도의 복잡성으로 RDOQ 알고리즘을 설계하는 것이 가능하다. H.265|MPEG-H HEVC 용 참조 소프트웨어에서 구현된 RDOQ 알고리즘은 다음과 같은 기본 처리 단계로 구성된다:
1. 각 스캔 위치 k에 대해, 변환 계수 레벨 qk는 레벨이 0과 같게 추론되지 않는다는 가정하에, 라그랑주 비용 Dk(qk) + λ·Rk(qk)를 최소화하여 선택된다. Dk(qk)는(가중) 제곱 오차 Dk(qk) = αk·(tk-Δk·qk)2를 나타내고 Rk(qk)는 qk를 전송하는 데 필요한 비트 수의 추정치를 나타낸다.
2. 4x4 서브블록에 대한 coded_sub_block_flag 플래그는 다음 두 경우에 대한 라그랑주 비용을 비교하여 결정된다: (a) 단계 1에서 선택한 변환 계수 레벨이 사용되고; (b) 구문 요소 coded_sub_block_flag는 0으로 설정되므로, 4x4 서브블록의 모든 변환 계수 레벨은 0으로 설정되다.
3. 제 1 논제로 변환 계수 레벨의 위치는 논제로 변환 계수 레벨 (단계 1 이후) 중 하나를 코딩 순서에서 제 1 논제로 변환 계수 레벨로 선택하여 얻은 라그랑주 비용들을 비교하여 결정된다(이전 변환 계수 레벨은 0으로 설정된다).
4. coded_block_flag는 단계 1 이후에 획득한 변환 계수 레벨의 시퀀스에 대한 라그랑주 비용과 변환 블록 내부의 모든 변환 계수 레벨이 0으로 설정된 경우를 비교하여 결정된다.
변환 코딩의 수정된 개념은 변환 계수가 독립적으로 양자화되고 복원되지 않는다는 것이다. 대신, 변환 계수에 대해 허용 가능한 복원 레벨은 복원 순서에서 선행 변환 계수에 대해 선택된 양자화 인덱스에 따라 달라진다. 종속 스칼라 양자화의 개념은 수정된 엔트로피 코딩과 결합되고, 이 때 변환 계수에 대한 확률 모델 선택 (또는 대안적으로 코드 워드 테이블 선택)은 허용 가능한 복원 레벨 세트에 의존한다.
변환 계수의 종속 양자화의 장점은 허용 가능한 복원 벡터가 N 차원 신호 공간에 더 밀집되어 있다는 것이다 (여기서 N은 변환 블록의 샘플 또는 변환 계수의 수를 나타낸다). 변환 블록에 대한 복원 벡터는 변환 블록의 정렬된 복원 변환 계수 (또는 순서가 지정된 복원 샘플)를 참조한다. 이 효과는 두 변환 계수의 가장 간단한 경우에 대해 도 5a 및 b에 설명되어 있다. 도 5a는 독립적인 스칼라 양자화를 위한 허용 가능한 복원 벡터(2차원 평면의 점을 나타냄)를 도시한다. 알 수 있듯이, 제 2 변환 계수 t'1에 대한 허용 가능한 값 세트는 복원된 제 1 변환 계수 t'0에 대해 선택된 값에 의존하지 않는다. 도 5b는 종속 스칼라 양자화의 예를 도시한다. 독립 스칼라 양자화와는 달리, 제 2 변환 계수 t'1에 대한 선택 가능한 복원 값은 제 1 변환 계수 t'0에 대해 선택된 복원 레벨에 따라 달라진다. 도 5b의 예에서, 제 2 변환 계수 t'1(다른 색상으로 표시됨)에 대해 사용 가능한 복원 레벨의 두 가지 세트가 있다. 제 1 변환 계수 t'0에 대한 양자화 인덱스가 짝수(…, -2,0,2,…)이면, 제 2 변환 계수 t'1에 대해 제 1 세트(파란색 포인트)의 임의의 복원 레벨이 선택될 수 있다. 그리고 제 1 변환 계수 t'0에 대한 양자화 인덱스가 홀수(…, -3, -1,1,3,…)이면, 제 2 변환 계수 t'1에 대해 제 2 세트의 복원 레벨(빨간색 점)이 선택될 수 있다. 이 예에서 제 1 및 제 2 세트의 복원 레벨은 양자화 단계 크기의 절반만큼 이동한다(제 2 세트의 모든 복원 레벨은 제 1 세트의 두 복원 레벨 사이에 위치한다).
변환 계수의 종속 스칼라 양자화는 N 차원 단위 부피당 주어진 평균 복원 벡터 수에 대해, 주어진 변환 계수의 입력 벡터와 가장 가까운 사용 가능한 복원 벡터 사이의 거리의 예상 값이 감소한다는 효과가 있다. 결과적으로, 변환 계수의 입력 벡터와 벡터 복원된 변환 계수 사이의 평균 왜곡은 주어진 평균 비트 수에 대해 감소될 수 있다. 벡터 양자화에서, 이 효과를 공간 채우기 이득이라고 한다. 변환 블록에 종속 스칼라 양자화를 사용하면, 고차원 벡터 양자화를 위한 잠재적인 공간 채우기 이득의 주요 부분을 활용할 수 있다. 그리고 벡터 양자화와 달리, 복원 프로세스 (또는 디코딩 프로세스)의 구현 복잡성은 독립적인 스칼라 양자화기를 사용하는 기존 변환 코딩의 복잡성과 비슷하다.
종속 스칼라 양자화를 사용하는 변환 디코더의 블록도가 도 6에 도시된다. 주요 변경 사항은 위에서 아래로 가리키는 화살표로 이어지는 종속 양자화와 관련된다. 이러한 수직 화살표로 표시된 바와 같이, 복원 순서 인덱스 k> 0를 갖는 복원된 변환 계수 t'k는 연관된 양자화 인덱스 qk 뿐만 아니라, 복원 순서의 이전 변환 계수에 대한 양자화 인덱스 q0, q1, .., qk-1에도 의존한다. 종속 양자화에서 변환 계수의 복원 순서는 고유하게 정의되어야 한다. 양자화 인덱스 qk와 관련된 복원 레벨 세트에 대한 지식이 엔트로피 코딩에서도 이용된다면 전체 변환 코덱의 성능이 향상될 수 있다. 이것은, 변환 계수에 적용되는 복원 레벨 세트를 기반으로 컨텍스트(확률 모델) 또는 코드 워드 테이블을 전환하는 것이 바람직하다는 것을 의미한다.
종래의 변환 코딩에서와 같이, 본 명세서에서 요약된 실시 예에 따른 변환 인코딩은 분석 변환 외에도, 양자화 알고리즘 및 엔트로피 코딩을 포함한다. 분석 변환은 일반적으로 합성 변환의 역 (또는 역의 근사)이 사용되고, 엔트로피 코딩은 일반적으로 엔트로피 디코딩 프로세스에 따라 고유하게 지정된다. 하지만 기존의 변환 코딩과 유사하게, 원본 변환 계수가 주어지면 양자화 인덱스를 선택하는 데 많은 자유도가 있다.
변환 계수의 종속 양자화는 변환 계수에 대해 사용 가능한 복원 레벨 세트가 (동일한 변환 블록 내) 복원 순서에서 선행하는 변환 계수에 대해 선택된 양자화 인덱스에 의존하는 개념을 말한다.
*여러 세트의 복원 레벨이 미리 정의되어 있으며, 코딩 순서에서 선행 변환 계수에 대한 양자화 인덱스를 기반으로, 현재 변환 계수를 복원하기 위해 미리 정의된 세트 중 하나가 선택된다.
현재 변환 계수에 대한 허용 가능한 복원 레벨 세트는 (코딩 순서에서 선행 변환 계수에 대한 양자화 인덱스 기반하여) 사전 정의된 복원 레벨 세트의 모음 (2 개 이상의 세트) 중에서 선택된다. 복원 레벨 세트의 복원 레벨 값은 블록 기반 양자화 매개변수에 의해 매개변수화된다. 블록 기반 양자화 매개변수(QP)는 양자화 단계 크기 Δ를 결정하고 (모든 복원 레벨 세트에서) 모든 복원 레벨은 양자화 단계 크기 Δ의 정수 배수를 나타낸다. 특정 변환 계수 tk (k는 복원 순서를 나타냄)에 대한 양자화 단계 크기 Δk는 블록 양자화 매개변수 QP에 의해서만 결정되지 않고, 특정 변환 계수 tk에 대한 양자화 단계 크기 Δk가 양자화 가중치 행렬 및 블록 양자화 매개변수에 의해서도 결정될 수 있다. 일반적으로, 변환 계수 tk에 대한 양자화 단계 크기 Δk는 변환 계수 tk(양자화 가중치 행렬에 의해 지정됨)에 대한 가중 계수 wk와 블록 양자화 단계 크기 Δblock(블록 양자화 매개변수에 의해 지정됨)의 곱으로 제공된다:
일 실시 예에서, 변환 계수에 대한 종속 스칼라 양자화는 정확히 2 개의 상이한 복원 레벨 세트를 사용한다. 그리고 변환 계수 tk에 대한 두 세트의 모든 복원 레벨은 이 변환 계수에 대한 양자화 단계 크기 Δk의 정수 배수를 나타낸다(적어도 부분적으로는 블록 기반 양자화 매개변수에 의해 결정됨). 양자화 단계 크기 Δk는 두 세트에서 허용되는 복원 값에 대한 스케일링 인자를 나타내는 것에 유의해야 한다. 변환 블록 내부의 상이한 변환 계수 tk (및 이에 따라 개별 스케일링 인자)에 대해 가능한 개별 양자화 단계 크기 Δk를 제외하고, 모든 변환 계수에 대해 동일한 두 세트의 복원 레벨이 사용된다.
두 세트의 복원 레벨에 대한 선호 구성이 도 7에 도시된다. 제 1 양자화 세트(도면에서 세트 0으로 표시됨)에 포함된 복원 레벨은 양자화 단계 크기의 짝수 정수 배수를 나타낸다. 제 2 양자화 세트(도면에서 세트 1로 표시됨)는 양자화 단계 크기의 모든 홀수 정수 배수와 추가로 0과 동일한 복원 레벨을 포함한다. 두 복원 세트는 모두 0에 대해 대칭이다. 0과 같은 복원 레벨은 두 복원 세트에 모두 포함되고, 그렇지 않으면 복원 세트는 분리된다. 두 복원 세트의 합집합은 양자화 단계 크기의 모든 정수배를 포함된다.
인코더가 허용 가능한 복원 레벨 중에서 선택하는 복원 레벨은 비트 스트림 내에서 표시되거나 전송되어야 한다. 기존의 독립 스칼라 양자화에서와 같이, 이는 변환 계수 레벨이라고도 하는 소위 양자화 인덱스를 사용하여 성취될수 있다. 양자화 인덱스(또는 변환 계수 레벨)는 양자화 세트(즉, 복원 레벨 세트 내부) 내에서 사용 가능한 복원 레벨을 고유하게 식별하는 정수이다. 양자화 인덱스는 (엔트로피 코딩 기술을 사용하여) 비트 스트림의 일부로 디코더에 전송된다. 디코더 측에서 복원된 변환 계수는 (코딩/복원 순서에서 선행하는 양자화 인덱스에 의해 결정되는) 현재의 복원 레벨 세트 및 현재 변환 계수에 대해 전송된 양자화 인덱스에 기초하여 고유하게 계산될 수 있다.
도 7의 복원 레벨은 관련 양자화 인덱스로 표시된다(양자화 인덱스는 복원 레벨을 나타내는 원 아래의 숫자로 제공된다). 0과 같은 양자화 인덱스는 0과 같은 복원 레벨에 할당된다. 1과 같은 양자화 인덱스는 0보다 큰 가장 작은 복원 레벨에 할당되고, 2와 같은 양자화 인덱스는 0보다 큰 다음 복원 레벨에 할당되는 (즉, 0보다 큰 두 번째로 작은 복원 레벨) 등이다. 즉, 0보다 큰 복원 레벨은 값의 오름차순으로 0보다 큰 정수(즉, 1, 2, 3 등)로 레이블이 지정된다. 마찬가지로, 양자화 인덱스 -1은 0보다 작은 가장 큰 복원 레벨에 할당되고, 양자화 인덱스 -2는 0보다 작은 다음(즉, 두 번째로 큰) 복원 레벨에 할당되는 등이다. 즉, 0보다 작은 복원 레벨은 값의 내림차순으로 0보다 작은 정수(즉, -1, -2, -3 등)로 레이블이 지정된다.
양자화 단계 크기의 정수 배수를 나타내는 복원 레벨의 사용은 디코더 측에서 변환 계수의 복원을 위한 계산적으로 낮은 복잡한 알고리즘을 허용한다. 이것은 다음에서 도 7의 바람직한 예를 기반으로 설명된다. 제 1 양자화 세트는 양자화 단계 크기의 모든 짝수 정수배를 포함하고 제 2 양자화 세트는 양자화 단계 크기의 모든 홀수 정수배와 0(두 양자화 세트에 포함됨)과 같은 복원 레벨을 더한 값을 포함한다. 변환 계수에 대한 복원 프로세스는 도 8의 의사 코드에 지정된 알고리즘과 유사하게 구현될 수 있다.
도 8의 의사 코드에서, level[k]는 변환 계수 tk에 대해 전송되는 양자화 인덱스를 나타내고, setId[k](0 또는 1과 같음)는 현재 복원 레벨 집합의 식별자를 지정한다(아래에서 더 자세히 설명하는 바와 같이 복원 순서의 선행 양자화 인덱스를 기반으로 결정된다). 변수 n은 양자화 인덱스 level[k]과 세트 식별자 setId[k]에 의해 주어진 양자화 단계 크기의 정수배를 나타낸다. 변환 계수가 양자화 단계 크기 Δk의 짝수 배수를 포함하는, 제 1 세트의 복원 레벨(setId[k] == 0)를 사용하여 코딩되면, 변수 n은 전송된 양자화 인덱스의 두 배이다. 제 2 세트의 복원 레벨 (setId[k] == 1)를 사용하여 변환 계수를 코딩하는 경우, 다음 세 가지 경우가 있다: (a) level[k]가 0이면, n은 또한 0과 같다; (b) level[k]가 0보다 크면, n은 양자화 인덱스 level[k]의 두 배에서 1을 뺀 값이다; 및 (c) level[k]가 0보다 작으면, n은 양자화 인덱스 level[k]의 두 배에서 1을 더한 값이다. 이것은 부호 함수를 사용하여 지정할 수 있다:
제 2 양자화 집합이 사용되면, 변수 n은 양자화 인덱스 level[k]의 두 배에서 양자화 인덱스의 부호 함수 부호(level[k])를 뺀 값이다. 변수 n(양자화 단계 크기의 정수 인자를 지정함)이 결정되면, 복원된 변환 계수 t'k는 n에 양자화 스텝 크기 Δk를 곱하여 구한다.
위에서 언급했듯이, 양자화 단계 크기 Δk와의 정확한 곱셈 대신에, 복원된 변환 계수 t'k는 정수 근사법으로 얻을 수 있다. 이것은 도 8의 의사 코드에 설명되어 있다. 여기서 변수 이동은 오른쪽으로 약간 이동하는 것을 나타낸다. 그 값은 일반적으로 블록의 양자화 매개변수에만 의존한다 (그러나 블록 내의 다른 변환 계수에 대해 시프트 매개변수를 변경할 수도 있다). 변수 scale[k]는 변환 계수 tk에 대한 스케일링 계수를 나타내고; 블록 양자화 매개변수에 추가하여, 이것은 예를 들어, 양자화 가중치 행렬의 해당 항목에 따라 달라질 수 있다. 변수 add는 반올림 오프셋을 지정하며, 일반적으로 add =(1 <<(shift-1))과 동일하게 설정된다. 도 8의 의사 코드(마지막 줄)에 지정된 정수 산술은, 반올림을 제외하고, 다음과 같이 주어진 양자화 단계 크기 Δk의 곱과 동일하다:
도 8과 비교하여 도 9의 또 다른(순수한 외관) 변화는 두 세트의 복원 레벨 간의 전환이 삼변수 if-then-else 연산자(a? b : c)를 사용하여 구현된다는 것으로, 이는 C 프로그래밍 언어와 같은 프로그래밍 언어에서 알려져 있다.
위에서 논의한 복원 레벨 세트를 선택하는 것 외에도, 변환 코딩에서 종속 스칼라 양자화의 또 다른 작업은 정의된 양자화 세트(복원 레벨 세트) 사이를 전환하는 데 사용되는 알고리즘이다. 사용된 알고리즘은 변환 계수의 N 차원 공간에서(및, 이에 따라 복원된 샘플의 N 차원 공간에서) 얻을 수 있는 "포장 밀도"를 결정한다. 패킹 밀도가 높을수록 인쇄 효율성이 향상된다.
바람직한 실시 예에서, 양자화 세트(세트 0 및 세트 1) 사이의 변이는 상태 변수에 의해 결정된다. 복원 순서의 제 1 변환 계수에 대해, 상태 변수는 미리 정의된 값과 동일하게 설정된다. 일반적으로 미리 정의된 값은 0이다. 코딩 순서에서 다음 변환 계수에 대한 상태 변수는 업데이트 프로세스에 의해 결정된다. 특정 변환 계수에 대한 상태는 복원 순서의 이전 변환 계수에 대한 상태와 이전 변환 계수의 값에만 의존한다.
상태 변수는 4 개의 가능한 값(0, 1, 2, 3)을 가질 수 있다. 한편으로 상태 변수는 현재 변환 계수에 사용되는 양자화 세트를 지정한다. 양자화 세트 0은 상태 변수가 0 또는 1 인 경우에만 사용되고, 양자화 세트 1은 상태 변수가 2 또는 3 인 경우에만 사용된다. 반면에 상태 변수는 양자화 세트 간의 가능한 전환도 지정한다.
특정 변환 계수에 대한 상태는, 예를 들어 복원 순서에서 이전 변환 계수에 대한 상태와 이전 변환 계수 레벨 값의 이진 함수에만 의존할 수 있다. 이진 함수는 이하에서 경로라고 언급한다. 특히 바람직한 실시 예에서, 다음 상태 변이 테이블이 사용되고, 여기서 "경로"는 복원 순서에서 이전 변환 계수 레벨의 상기 이진 함수를 언급한다.
현재 상태 | 현재 계수에 대한 양자화 세트 | 다음 상태 | |
경로 0 | 경로 1 | ||
0 | 0 | 0 | 2 |
1 | 0 | 2 | 0 |
2 | 1 | 1 | 3 |
3 | 1 | 3 | 1 |
경로는 양자화 인덱스의 패리티에 의해 주어질 수 있다. levle[k]가 변환 계수 레벨인 경우, 이것은 다음에 따라 결정될 수 있다:
연산자 &는 두 개의 보수 정수 산술에서 비트 단위 "and"를 나타낸다. 경로는 level[k]의 다른 이진 함수를 나타낼 수도 있다. 예를 들어 변환 계수 수준이 0과 같은지 여부를 지정할 수 있다:
종속 스칼라 양자화를 위한 상태 변이의 개념은 디코더에서 변환 계수의 복원을 위한 낮은 복잡도 구현을 가능하게 한다. 단일 변환 블록의 변환 계수의 복원 프로세스에 대한 바람직한 예는 C 스타일의 의사 코드를 사용하여 도 10에 도시된다.
도 10의 의사 코드에서 인덱스 k는 변환 계수의 복원 순서를 지정한다. 예시 코드에서, 인덱스 k는 복원 순서에서 감소한다는 점에 유의해야 한다. 마지막 변환 계수는 k = 0과 같은 인덱스를 갖는다. 제 1 인덱스 kstart는 제 1 복원된 변환 계수의 복원 인덱스 (또는 더 정확하게는 역 복원 인덱스)를 지정한다. 변수 kstart는 변환 블록의 변환 계수 수에서 1을 뺀 값과 동일하게 설정될 수 있거나, 코딩/복원 순서에서 제 1 논제로 양자화 인덱스의 인덱스와 동일하게 설정될 수 있다 (예를 들어, 적용된 엔트로피 코딩 방식에서 제 1 0이 아닌 양자화 인덱스의 위치가 전송되는 경우). 후자의 경우, 모든 선행 변환 계수(인덱스 k > kstart 포함)는 0과 같은 것으로 추론된다. 각 단일 변환 계수에 대한 복원 프로세스는 도 9의 예와 동일한다. 도 9의 예에서와 같이 양자화 인덱스는 level[k]로 표시되고 관련 복원된 변환은 trec[k]로 표시된다. 상태 변수는 상태로 표시된다. 1차원 테이블 setId[]는 상태 변수의 다른 값과 연관된 양자화 세트를 지정하고 2d 테이블 state_trans_table[][]은 현재 상태(제 1 인수)와 경로(제 2 인수)가 주어진 상태 변이를 지정한다. 예를 들어, 경로는 양자화 인덱스의 패리티(비트 단위 및 연산자 &를 사용함)에 의해 제공될 수 있지만 다른 개념도 가능한다. 추가 예로서, 경로는 변환 계수가 0과 같거나 같지 않은지 여부를 지정할 수 있다. C 스타일 구문에서, 테이블에 대한 예는 다음과 같다(이 테이블은 위에 표시된 테이블 1과 동일하다).
다음 상태를 결정하기 위한 테이블 state_trans_table[][]를 사용하는 대신, 동일한 결과를 산출하는 산술 연산을 사용할 수 있다. 마찬가지로, 산술 연산을 사용하여 테이블 setId[]를 구현할 수도 있다. 또는 1차원 테이블 setId[]를 사용한 룩업 테이블과 부호 함수의 조합은 산술 연산을 사용하여 구현될 수 있다.
종속 스칼라 양자화의 주요 측면은 변환 계수에 대해 서로 다른 허용 가능한 복원 레벨 세트(양자화 세트라고도 함)가 있다는 것이다. 현재 변환 계수에 대한 양자화 세트는 선행 변환 계수에 대한 양자화 인덱스의 값을 기반으로 결정된다. 도 7의 예를 고려하고 두 개의 양자화 세트를 비교하면, 0과 같은 복원 레벨과 인접한 복원 레벨 사이의 거리는 세트 1에서 보다 세트 0에서 더 크다. 따라서, 양자화 인덱스가 0 일 확률은 세트 0을 사용하면 더 크고, 세트 1을 사용하면 더 작아진다. 이 효과는 양자화 세트 또는 보다 일반적으로 현재 양자화 인덱스에 사용되는 상태를 기반으로 하여 확률 모델을 전환하여 엔트로피 코딩에서 활용될 수 있다.
코드워드 테이블 또는 확률 모델의 적절한 전환을 위해, 현재 양자화 인덱스(또는 현재 양자화 인덱스의 대응하는 이진 결정)를 엔트로피 디코딩할 때, 모든 선행 양자화 인덱스의 경로(양자화 인덱스의 이진 함수)를 알아야 한다.
양자화 인덱스는 H.264|MPEG-4 AVC 또는 H.265|MPEG-H HEVC와 유사한 이진 산술 코딩을 사용하여 코딩될 수 있다. 이를 위해 비 이진 양자화 인덱스는 먼저 일련의 이진 결정(일반적으로 빈이라고 함)에 매핑된다.
이하에서는, 종속 양자화로 인한 양자화 인덱스를 이진화하고 산술적으로 인코딩하는 방법, 즉 어떤 순서로 어떤 컨텍스트를 사용하는지에 대한 다양한 예를 설명한다. 여기서, 양자화 인덱스는 절대 값으로 전송되며, 절대 값이 0보다 큰 경우 부호가 전송된다. 부호가 단일 빈으로 전송되는 동안, 아래에 설명된 예에서 나타나는 일련의 이진 결정에 절대 값을 매핑할 수 있는 많은 가능성이 있다. 다음 설명은 먼저 코딩 순서와 이진화 방식에 초점을 맞추고 다양한 예를 제시한다. 이하, 컨텍스트 모델링에 대한 여러 다른 예를 설명한다. 후자는 코딩 순서 및 이진화 방식과 관련하는 전자의 실시 예와 결합될 수 있지만, 전자의 실시 예는 후자의 예들에 제한되지 않는다.
예시 1:
다음 이진 및 비 이진 구문 요소가 전송된다:
* sig_flag: 변환 계수 수준의 절대 값이 0보다 큰지 여부를 지정한다.
* sig_flag가 1이면, gt1_flag: 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 지정한다.
* gt1_flag가 1이면, gt2_flag: 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 지정한다.
* gt2_flag가 1이면, 나머지: 절대 레벨의 나머지를 지정하는 비 이진 구문 요소이다. 이 구문 요소는 예를 들어, 골룸 라이스 코드(Golomb-Rice code)를 사용하여, 산술 코딩 엔진의 바이패스 모드에서 전송된다.
존재하지 않는 구문 요소는 0과 같은 것으로 추론된다. 디코더 측에서 변환 계수 레벨의 절대 값은 다음과 같이 복원된다:
absLevel = sig_flag + gt1_flag + gt2_flag + 나머지
추가 gtX_flag를 전송하거나, gt2_flag를 생략하거나, gt1_flag와 gt2_flag를 모두 생략할 수 있다. sig_flag 및 gtx_flag는 적응형 컨텍스트 모델을 사용하여 코딩된다.
예시 2:
다음 이진 및 비 이진 구문 요소가 전송된다.
* sig_flag : 변환 계수 수준의 절대 값이 0보다 큰지 여부를 지정한다.
* sig_flag가 1이면, gt1_flag: 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 지정한다.
* gt1_flag가 1 인 경우:
o par_flag: 변환 계수 레벨의 절대 값의 나머지(즉, 절대 값 - 2)의 패리티를 지정한다.
o 나머지 : 절대 레벨의 나머지(즉,(절대 값 - 2 - par_flag)/2)를 지정하는 비 이진 구문 요소. 이 구문 요소는 예를 들어 골룸 라이스 코드를 사용하여 산술 코딩 엔진의 우회 모드로 전송된다.
존재하지 않는 구문 요소는 0과 같은 것으로 추론된다. 디코더 측에서 변환 계수 레벨의 절대 값은 다음과 같이 복원된다.
absLevel = sig_flag + gt1_flag + par_flag + 2 * 나머지
추가 gtX_flag를 전송하거나 gt1_flag를 생략할 수 있다. 예를 들어, 위의 나머지 대신, gt2_flag(절대 값이 3보다 큰지 여부 지정함) 및 (gt2_flag가 1 인 경우) 수정된 나머지 (즉, (절대 값 - 3 - par_flag)/2)가 전송된다. 다음에, 절대값은 다음에 따라 구성된다:
absLevel = sig_flag + gt1_flag + par_flag + 2 *(gt2_flag + 나머지)
sig_flag, gtX_flag 및 par_flag는 적응 컨텍스트 모델을 사용하여 코딩된다.
예시 3:
다음 이진 및 비 이진 구문 요소가 전송된다.
* sig_flag: 변환 계수 수준의 절대 값이 0보다 큰지 여부를 지정한다.
* sig_flag가 1이면,
o par_flag: 변환 계수 레벨의 절대 값의 나머지(즉, 절대 값 - 1)의 패리티를 지정한다.
o gt1_flag: 변환 계수 레벨의 절대 값의 나머지(즉,(절대 값 - 1 - par_flag)/2)가 0보다 큰지 여부를 지정한다.
* gt1_flag가 1과 같으면, gt2_flag: 변환 계수 수준의 절대 값의 나머지(즉, (절대 값 - 1 - par_flag)/2)가 1보다 큰지 여부를 지정한다.
* gt2_flag가 1이면, 나머지: 절대 레벨의 나머지(즉, (절대 값 - 1 - par_flag)/2 - 2)를 지정하는 비 이진 구문 요소. 이 구문 요소는 예를 들어 골롬 라이스 코드를 사용하여 산술 코딩 엔진의 우회 모드로 전송된다.
존재하지 않는 구문 요소는 0과 같은 것으로 추론된다. 디코더 측에서 변환 계수 레벨의 절대 값은 다음과 같이 복원된다:
absLevel = sig_flag + par_flag + 2 *(gt1_flag + gt2_flag + 나머지)
추가 gtX_flag를 전송하거나 gt2_flag를 생략할 수 있다. sig_flag, gtx_flag 및 par_flag는 적응 컨텍스트 모델을 사용하여 코딩된다.
추가 이진화가 가능한다.
컨텍스트 모델링과 관련하여 이진화, 빈/계수 순서 지정 및 컨텍스트 파생 간의 상호 의미를 설명하기 위해 다음 예시가 제공된다. 특정 예시에서, 변환 블록의 양자화 인덱스를 전송하기 위한 구문은, 양자화 인덱스가 0인지 또는 0과 같지 않은지를 지정하는 빈을 포함한다(위에서 소개 한 sig_flag). 이 빈을 코딩하는 데 사용되는 확률 모델은 두 개 이상의 확률 모델 세트 중에서 선택될 수 있다. 사용되는 확률 모델의 선택은 현재 상태 변수에 따라 다른다(상태 변수는 사용된 양자화 집합을 의미함). 이때 상태 변수의 가능한 모든 값에 대해 서로 다른 확률 모델 세트를 사용하거나, 상태 변수의 가능한 값을 두 개 이상의 클러스터로 클러스터링할 수 있으며, 각 클러스터에 대해 여러 다른 확률 모델 세트를 사용할 수 있다(예를 들어, 상태 0 및 1에 대한 확률 모델의 제 1 세트, 상태 2에 대한 확률 모델의 제 2 세트 및 상태 3에 대한 확률 모델의 제 3 세트; 또는 대안적으로, 상태 0 및 1에 대한 확률 모델의 제 1 세트 및 상태 2 및 3에 대한 확률 모델의 제 2 세트).
다른 이진 구문 요소(예를 들어, gt1_flag 또는 par_flag)에 대해 선택된 확률 모델도 현재 상태 변수의 값에 의존할 수도 있다.
변환 계수의 종속 양자화가 엔트로피 코딩과 결합되는 것이 바람직하고, 이 때 양자화 인덱스(양자화 레벨이라고도 함)의 이진 표현의 하나 이상의 빈에 대한 확률 모델의 선택은 현재 양자화 인덱스에 대한 상태 변수에 따라 달라진다. 상태 변수는 코딩 및 복원 순서에서 선행 변환 계수에 대한 양자화 인덱스(또는 양자화 인덱스를 나타내는 빈의 서브 세트)에 의해 제공된다.
특히, 바람직하게는, 설명되는 확률 모델의 선택은 다음 엔트로피 코딩 측면 중 하나 이상과 결합된다:
* 변환 블록에 대한 양자화 인덱스가 0이 아닌지 또는 변환 블록에 대한 모든 양자화 인덱스가 0과 같은지 여부를 지정하는, 변환 블록에 대한 플래그의 전송.
* 변환 블록의 계수(최소한 블록의 치수 또는 포함된 샘플 수에 의해 주어진 미리 정의된 크기를 초과하는 변환 블록의 경우)를 여러 서브블록으로의 분할. 이것은 도 12a의 변환 블록(10)에 대해 예시적으로 도시되며, 여기서 블록의 계수(12)는 예시적으로 크기 4x4 계수의 서브블록(14)으로 세분된다. 변환 블록이 여러 서브블록(14)으로 분할되면, 하나 이상의 서브블록에 대해 서브블록이 논제로 양자화 인덱스를 포함하는지 여부를 지정하는 플래그가 전송된다(이미 전송된 구문 요소에 기초하여 추론되지 않는 한). 서브블록은 또한 빈의 코딩 순서를 지정하는 데 사용될 수 있다. 예를 들어, 빈의 코딩은 서브블록(14)으로 분할되므로, 서브블록의 모든 빈은 다음 서브블록(14)의 임의의 빈이 전송되기 전에 코딩된다. 그러나 특정 서브블록(14)에 대한 빈은 이 서브블록 내부의 변환 계수에 대해 다중 패스에서 코딩될 수 있다. 예를 들어, 서브블록에 대한 양자화 인덱스의 절대 값을 지정하는 모든 빈은 부호 빈이 코딩되기 전에 코딩될 수 있다. 절대 값에 대한 빈은 위에서 설명한대로, 여러 패스로 분할될 수도 있다.
* 코딩 순서에서 제 1 논제로의 위치의 전송. 이 위치는 도 12a에서 굵게 표시되어 있다. 이것은 변환 계수의 2차원 배열에서 위치를 지정하는 x 및 y 좌표로 전송될 수 있거나, 스캔 순서에 대한 인덱스로 전송될 수 있거나,다른 수단으로 전송될 수 있다. 도 12a에 도시된 바와 같이, 코딩 순서에서 제 1 논제로 양자화 인덱스(또는 변환 계수)의 전송된 위치는 코딩 순서(도 12a에서 흰색으로 표시됨)에서 식별된 계수에 선행하는 모든 변환 계수(12)가 0과 같게 추론된 것을 지정한다. 추가 데이터는 지정된 위치(도 12a에서 흑색/굵게 표시됨), 즉 코딩 순서에서 제 1의 것, 및 코딩 순서에서 이 계수에 이어지는 계수(도 12a에서 해칭 표시됨)에 대해서만 전송된다. 도 12a의 예는 4x4 서브블록(14)을 갖는 16x16 변환 블록(10)을 도시하고; 사용된 코딩 순서는 H.265|MPEG-H HEVC에서 지정된 서브블록 단위 대각선 스캔이다. 지정된 위치(코딩 순서에서 제 1 논제로 계수)에서의 양자화 인덱스에 대한 코딩은 약간 수정될 수 있다. 예를 들어, 양자화 인덱스의 절대 값에 대한 이진화가 양자화 인덱스가 0이 아닌지 여부를 지정하는 빈을 포함하는 경우, 이 빈은 지정된 위치의 양자화 인덱스에 대해 전송되지 않고(계수가 0이 아님을 이미 알고 있음), 대신에 빈은 1과 같은 것으로 추론된다.
* 양자화 인덱스의 절대 값에 대한 이진화에는 양자화 인덱스가 0과 같지 않은지 여부를 지정하는 적응적으로 코딩된 빈이 포함된다. 이 빈을 코딩하는 데 사용되는 확률 모델(컨텍스트라고 함)은 후보 확률 모델 세트 중에서 선택된다. 선택된 후보 확률 모델은 현재 양자화 인덱스에 대한 상태 변수에 의해 결정될뿐만 아니라, 부가하여, 변환 블록에 대해 이미 전송된 양자화 인덱스에 의해 결정될 수도 있다. 바람직한 실시 예에서, 상태 변수는 이용 가능한 확률 모델의 서브 세트(컨텍스트 세트라고도 함)를 결정한다. 이미 코딩된 양자화 인덱스의 값은 이 서브 세트(컨텍스트 세트) 내에서 사용되는 확률 모델을 결정한다.
바람직한 실시 예에서, 컨텍스트 세트 내에서 사용된 확률 모델은 현재 변환 계수(50)의 로컬 인접(52)에서 이미 코딩된 양자화 인덱스의 값에 기초하여 결정되는데, 즉, 이들 빈의 계수가 현재 인코딩/디코딩되므로 이것의 컨텍스트가 결정될 필요가 있다. 그러한 로컬 인접(52)에 대한 예가 도 12b에 도시되어 있다. 도면에서, 현재 변환 계수(50)는 검은 색으로 표시되고 로컬 인접(52)은 해칭으로 표시된다. 다음에서, 로컬 인접(52) 내의 인접 계수(51)의 양자화 인덱스의 값에 기초하여 도출된 다음에, 미리 결정된 컨텍스트 세트의 확률 모델을 선택하는 데 사용될 수 있는, 몇 가지 예시적인 측정이 나열된다.
더욱이, 디코더에 이용 가능한 다른 데이터는 미리 결정된 컨텍스트 세트 내에서 확률 모델을 유도하기 위해 (명시적으로 또는 위에 나열된 측정과 결합하여) 사용될 수 있다. 이러한 데이터는 다음을 포함한다:
o 현재 변환 계수의 위치(x 좌표, y 좌표, 대각선의 수 또는 이들의 조합).
o 현재 블록의 크기(세로 크기, 가로 크기, 샘플 수 또는 이들의 조합).
o 현재 변환 블록의 종횡비.
* 양자화 인덱스의 절대 값에 대한 이진화에는 양자화 인덱스의 절대 값이 1보다 큰지 여부를 지정하는 적응적으로 코딩된 빈이 포함된다. 이 빈을 코딩하는 데 사용되는 확률 모델(컨텍스트라고 함)은 후보 확률 모델 세트 중에서 선택된다. 선택된 확률 모델은 변환 블록에 대해 이미 전송된 양자화 인덱스에 의해 결정된다. 확률 모델을 선택하기 위해, (양자화 인덱스가 0과 같지 않은지 여부를 지정하는 빈에 대해) 위에서 설명한 방법 중 하나를 사용할 수 있다.
위에서 이미 언급한 바와 같이, 계수(12)의 양자화 인덱스의 이진화의 빈의 코딩 순서는 블록(10)의 코딩의 효율성에 영향을 미친다. 예를 들어, 이진 결정(빈) 중 적어도 하나에 대해 선택된 확률, 통상 sig_flag는 현재 상태 변수의 값에 따라 좌우한다. 그리고 상태 변수는 이전 변환 계수 레벨의 이진 함수 경로 ()에 의해 결정되기 때문에, 빈의 코딩 순서는 현재 변환 계수에 대해 sig_flag (또는 보다 일반적으로 확률 모델이 상태 변수에 의존하는 이진 구문 요소)를 코딩할 때, 이전의 모든 변환 계수에 대한 경로가 알려져 있도록 배열되어야 한다.
예를 들어, 양자화 인덱스의 절대 값을 지정하는 모든 빈은 연속적으로 코딩될 수 있다. 이것은, 코딩/복원 순서의 모든 선행 양자화 인덱스의 모든 빈(절대 값에 대해)이 현재 양자화 인덱스의 제 1 빈 이전에 코딩된다. 부호 빈은 (실제로 사용되는 양자화 세트에 따라 달라질 수 있는) 변환 계수에 대한 별도의 제 2 패스에서 코딩되거나 코딩되지 않을 수 있다. 서브블록에 대한 부호 빈은 다음 서브블록에 대한 빈 이전이 아니고, 서브블록의 절대 값에 대한 빈 이후 코딩될 수 있다.
다른 예에서, 양자화 인덱스의 절대 값을 지정하는 빈의 서브 세트만이 변환 계수에 대해 제 1 패스에서 연속적으로 코딩된다. 그러나 이러한 빈은 상태 변수를 고유하게 지정한다. 나머지 빈은 변환 계수에 대한 하나 이상의 추가 패스로 코딩된다. 경로가 양자화 인덱스의 패리티에 의해 지정되었다고 가정하면, 패리티 빈은 변환 계수에 대한 제 1 패스에 포함된다. 나머지 빈은 하나 이상의 추가 패스로 전송할 수 있다. 본 발명의 다른 실시 예에서, 유사한 개념이 사용된다. 예를 들어, 단항 빈의 수는 이미 전송된 심볼을 기반으로 수정되거나 조정될 수 있다. 다른 패스는 서브블록을 기반으로 사용할 수 있으며, 이 경우 서브블록의 빈이 여러 패스로 코딩되지만, 서브블록의 모든 빈은 다음 서브블록의 빈이 전송되기 전에 전송된다.
이하에서는, 여러 패스에서 이진 결정을 코딩하기 위한 몇 가지 예가 나열되어 있다.
예시 A:
이 예에서는 위의 예시 3의 이진화를 사용하며 경로는 패리티로 지정된다.
* 패스 1: sig_flag, par_flag, gt1_flag
* 패스 2: gt2_flag
* 패스 3: 나머지
* 패스 4: 부호 비트
예시 B:
이 예에서는 위의 예시 3의 이진화를 사용하며 경로는 패리티로 지정된다.
* 패스 1: sig_flag, par_flag
* 패스 2: gt1_flag
* 패스 3: gt2_flag
* 패스 4: 나머지
* 패스 5: 부호 비트
예시 C:
이 예는 위의 예시 1의 이진화를 사용하며 절대 값은 0 보다 큰지의 여부를 지정한다.
* 패스 1: sig_flag
* 패스 2: gt1_flag
* 패스 3: gt2_flag
* 패스 4: 나머지
* 패스 5: 부호 비트
예시 D :
이 예에서는 위의 예시 2의 이진화를 사용하며 경로는 패리티로 지정된다.
* 패스 1: sig_flag, gt1_flag, par_flag
* 패스 2: 나머지
* 패스 3: 부호 비트
예시 E :
이 예에서는 추가 gt2_flag와 함께 위의 예시 2의 이진화를 사용하며; 경로는 패리티에 의해 제공된다.
* 패스 1: sig_flag, gt1_flag, par_flag, gt2_flag
* 패스 2: 나머지
* 패스 3: 부호 비트
이 예제를 약간 수정하여, gt2_flag는 또한 별도의 패스에서 전송될 수 있다.
추가 코딩 순서 또는 조합은 이진화이며 코딩 순서가 가능하다.
처리량이 많은 디코더 구현을 사용하기 위해서는, 컨텍스트 코딩된 빈(일반 코딩된 빈이라고도 함)의 수를 가능한 한 낮게 유지하는 것이 좋다(성능을 저하시키지 않음). 이는 특정 빈의 최대 수를 제한하여 달성할 수 있다(HEVC와 유사함). 나머지 정보는 산술 코딩 엔진의 우회 모드를 사용하여 코딩된다.
이하에 설명되는 컨텍스트 코딩된 빈의 최대 수를 감소시키는 방법은 이미 위에 제시된 다음 측면 중 하나 이상과 결합될 수 있다:
* 변환 계수의 양자화를 위6한 여러 세트의 복원 레벨. 특히 두 세트: 제 1 세트는 양자화 단계 크기의 모든 짝수 정수배를 포함하고; 제 2 세트는 양자화 단계 크기 및 0의 모든 홀수 정수배를 포함한다.(적어도 변환 블록 내부의 변환 계수의 일부에 대해)
* 선택한 복원 레벨 세트는 상태 변수에 따라 다르다. 상태 변수는 복원 순서의 제 1 계수에 대해 0으로 설정된다. 다른 모든 계수의 경우, 다음이 적용된다. 현재 변환 계수에 대한 상태 변수 값은 선행 변환 계수 레벨에 대한 상태 변수 값과 선행 변환 계수 레벨 값의 이진 함수(경로)에 의해 결정된다.
* 변환 계수 수준은 이진화되고 빈은 이진 산술 코딩을 사용하여 엔트로피 코딩된다. 이진화는 변환 계수 레벨이 0과 같지 않은지 여부를 지정하는 sig_flag를 포함한다. 이 플래그는 적응형 확률 모델을 사용하여 코딩되고, 이 때 선택한 확률 모델은 현재 변환 계수 (및 잠재적으로 다른 매개변수)에 대한 상태 변수의 값에 따라 달라진다.
다음에서, 종속 스칼라 양자화를 위한 컨텍스트 코딩된 빈의 수를 줄이기 위한 여러 실시 예가 설명된다. 이러한 실시 예에서, 최악의 경우 디코딩 복잡도는 서브블록에 기초하여 제한된다. 일반적으로, HEVC에서와 같이 더 큰 변환 블록은 4x4 서브블록으로 분할되며 다음이 적용된다:
* 변환 블록의 구문은 변환 블록에 0이 아닌 변환 계수 레벨이 있는지 여부를 지정하는 구문 요소 (예를 들어, coded_block_flag)를 포함한다. coded_block_flag가 0이면, 모든 변환 계수 수준은 0과 같고, 변환 블록에 대해 더 이상의 데이터가 전송되지 않고; 그렇지 않으면 (coded_block_flag는 1과 같으면), 다음이 적용된다:
* 스캐닝 순서에서 제 1 유효 변환 계수의 x 및 y 좌표가 전송된다 (이것은 때때로 실제 스캐닝 순서가 고 빈도에서 저 빈도 성분으로의 스캐닝을 지정하기 때문에, 마지막 유효 계수라고도 한다).
* 변환 계수의 스캐닝은 서브블록(일반적으로 4x4 서브블록)을 기반으로 진행된다: 다른 서브블록의 임의의 변환 계수 레벨이 코딩되기 전에 서브블록의 모든 변환 계수 레벨이 코딩되고; 서브블록은 스캐닝 순서에서 제 1 유효 계수를 포함하는 서브블록으로 시작하여 DC 계수를 포함하는 서브블록으로 끝나는, 미리 정의된 스캔 순서로 처리된다.
* 구문은 서브블록이 0이 아닌 변환 계수 레벨을 포함하는지 여부를 나타내는, coded_subblock_flag를 포함한다; 스캐닝 순서의 제 1 및 마지막 서브블록(즉, 스캐닝 순서에서 제 1 유효 계수를 포함하는 서브블록 및 DC 계수를 포함하는 서브블록)에 대해, 이 플래그는 전송되지 않고, 1과 같은 것으로 추론된다; coded_subblock_flag가 전송되면 일반적으로 서브블록의 시작 부분에서 전송된다;
coded_subblock_flag가 1인 각 서브블록에 대해, 변환 계수 레벨은 서브블록의 스캐닝 위치를 통해 다중 스캔 패스로 전송된다;
이하의 실시 예는 coded_subblock_flag가 1 인 서브블록에 대한 변환 계수 레벨의 코딩에 적용된다. 그러나, 실시 예는 이 경우에 제한되지 않는다.(서브블록 구조없이) 변환 블록을 완성하기 위해 실시 예를 적용하는 것도 가능하다. 이러한 컨텍스트에서 (위에서 설명한 바와 같이) 서브블록 구조를 사용하는 것도 가능하지만, (개별적으로 서브블록에 제한을 적용하는 대신에) 변환 블록을 완료하기 위해 (아래 설명하는 바와 같이) 최악의 복잡성 제한을 적용할 수 있다.
실시 예 1
*제 1 실시 예에서, 변환 계수 레벨은 다중 스캔 패스로 코딩된다.
이는 다음과 같은 속성이 있다:
* 종속 양자화를 위한 상태 머신은 변환 계수 레벨의 패리티에 의해 구동된다. 즉, 이진 함수 경로(레벨)는 인수의 패리티를 반환한다.
* 제 1 패스의 sig_flag에 대한 확률 모델은 상태 변수 (및 선택적으로 디코더에 사용할 수 있는 다른 매개변수, 위 참조)의 해당 값을 기반으로 선택된다.
제 1 패스 :
스캔 위치에 대한 제 1 패스에서, 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 변환 계수가 0과 같지 않은지 여부를 나타내는 sig_flag; sig_flag는 1과 같은 것으로 추론될 수 있는 경우 전송되지 않는다(즉, 예를 들어, 변환 블록에서 제 1 유효 스캔 위치에 대한 경우(x 및 y 좌표로 명시적으로 신호 받은 것).
* sig_flag가 1(코딩되거나 추론된 값)과 같이면, 현재 스캔 위치에 대해 다음이 추가로 전송된다.
o 절대 레벨의 패리티에 1을 뺀 값을 지정하는 par_flag;
o 나머지((절대 레벨-1-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정하는 gt1_flag.
* 미리 정의된 컨텍스트 코딩된 빈의 최대 수에 도달하면 제 1 패스가 종료된다. MAX_REG_BINS를 제 1 패스에서 전송할 수 있는 최대 빈의 수로 하고 regBins를 여전히 사용 가능한 일반 코딩된 빈의 수로 한다. 그러면, 다음이 적용된다:
o regBins는 초기에 MAX_REG_BINS와 동일하게 설정된다.
o 임의의 bin(sig_flag, gt1_flag, par_flag)을 코딩한 후, regBins가 1 씩 감소한다.
o 스캔 위치에 대해 빈(sig_flag 및 sig_flag이 1 인 경우 gt1_flag, par_flag)을 전송한 후, 여전히 사용 가능한 빈 regBins의 수가 3 미만인 경우, (즉, 다음 스캔 위치에 대해 sig_flag, par_flag 및 gt1_flag를 전송할 수 없음), 제 1 스캔 패스가 종료된다.
제 2 패스 : 스캔 위치에 대한 제 2 패스에서 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 스캔 위치에 대한 gt1_flag가 1이면, gt2_flag가 전송되어, 나머지((absolute level-3-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정한다.
* 제 2 패스는 컨텍스트 코딩된 gt2_flag의 미리 정의된 최대 수가 전송된 경우 종료된다. 제 1 패스에서 데이터가 전송되지 않은 스캔 위치에 도달하면 제 2 패스도 종료된다(즉, 이러한 스캔 위치의 경우 제 2 패스에서 데이터가 전송되지 않음)
제 3 패스 : 스캔 위치에 대한 제 3 패스에서 절대 레벨에 대한 나머지(즉, 전송된 sig_flag, par_flag, gt1_flag 및 gt2_flag에 의해 아직 지정되지 않은 데이터)는 sig_flag가 패스 1에서 코딩된 모든 스캔 위치에 대해 전송된다. 비 이진 구문 요소 나머지는 구조화된 코드(예를 들어, Golomb-Rice 코드)를 사용하여 이진화되고 빈은 산술 코딩 엔진의 우회 모드에서 코딩되다. 나머지는 다음 스캔 위치로 전송된다:
* 제 2 패스에서 1과 동일한 gt2_flag가 전송된 모든 스캐닝 위치에 대해:
이러한 스캐닝 위치에 대해, 전송된 비 이진 구문 요소 나머지는 다음을 지정한다:
(절대 값 - 5 - par_flag)/2
* 제 1 패스에서는 1과 동일한 gt1_flag가 전송되었지만 제 2 패스에서는 gt2_flag가 전송되지 않는 모든 스캐닝 위치에 대해:
이러한 스캐닝 위치에 대해 전송된 비 이진 구문 요소 나머지는 다음을 지정한다.
(절대 값 - 3 - par_flag)/2
제 4 패스 : 제 4 패스에서는, 제 1 패스에서 데이터가 전송되지 않는 모든 스캔 위치에 대한 절대 레벨이 코딩된다. 절대 레벨은 먼저 구조화된 코드를 사용하여 이진화되고, 사용되는 코드는 현재 상태 변수의 값뿐만 아니라 로컬 활동 측정에 따라 달라질 수 있다. 빈은 산술 코딩 엔진의 우회 모드를 사용하여 전송된다.
* 제 5 패스 : 마지막으로, 제 5 패스에서 0과 같지 않은 모든 변환 계수 레벨에 대한 부호가 전송된다. 부호는 산술 코딩 엔진의 우회 모드로 전송된다.
설명된 실시 예의 이점은 컨텍스트 코딩된 빈의 수가 제 1 및 제 2 패스에서 빈의 수에 대한 제약없이 버전에 비해 효율적으로 감소된다는 점이다. 컨텍스트 코딩된 빈의 인코딩 및 디코딩에는 우회 모드에서 코딩된 빈보다 더 복잡한 구현이 필요하므로, 복잡성이 감소한다.
도 13에 나타낸 의사 코드를 기반으로 위의 설명을 예시한다. 도 13은 위에서 제시된 실시 예에 따른 변환 계수 블록을 디코딩하는 방법을 도시하지만, 대응하는 코딩 실시 예는 모든 "디코딩"을 "인코딩"으로 대체함으로써 쉽게 유도될 수 있다.
도 13에 도시된 의사 코드는 서브블록(14) 내의 변환 계수 레벨에 대한 코딩/디코딩 프로세스를 예시한다. 디코더 관점에서 설명한다. 데이터 스트림으로부터의 디코딩은 스캔 순서를 따라 블록(10)의 변환 계수 위치(12)를 스캔하는 패스(601 내지 605)의 시퀀스에서 발생한다. 사용된 이진화, 즉 계수의 양자화 인덱스를 정의하는 데 사용되는 플래그/빈, 코딩/디코딩 패스에 대한 플래그 및 나머지의 코딩/디코딩의 분포는 이후 설명되는 실시 예에서 변경되고, 따라서 도 13의 설명은 이후에 설명되는 실시 예들에도 적용되는 개요 또는 대략적인 설명의 제공에 집중된다.
패스의 기본이 되는 스캔 순서에 대한 가능성은 도 12a, b와 관련하여 위에서 설명되었으며 도 12b의 62에서 예시적으로 설명되어 있지만, 패스(601 내지 605)는 변환 블록(10)의 모든 변환 계수 위치(12)를 스캔할 필요가 없지만, 이들 모두 스캔 순서(62)를 사용한다는 것에 유의해야 하고; 또한, 일부 플래그 유형에 대한 플래그는 도 13의 삽입과 관련하여 설명된 것과 동일한 패스에서 전송될 수 있지만, 다른 가능성이 또한 존재한다.
도 13에서 발생하는 미리 정의된 값 MAX_REG_BINS 및 MAX_GT2_BINS는 각각 패스 1(601) 및 패스 2(602)에서 정규 코딩된 빈의 최대 수를 지정한다. 부울 변수 firstSubblock은 현재 서브블록이 도 12a의 굵은/검은 색 계수(12)를 포함하는 서브블록과 같은 블록(10)에 대해 코딩/디코딩된 코딩 순서(변환 블록 내부)의 제 1 서브블록인지 여부를 지정한다. firstSigScanIdx는 변환 블록(10)에서 제 1 유효 변환 계수, 즉, 변환 블록 구문의 시작 부분에서 명시적으로 신호를 받는 계수의 위치에 해당하는 스캔 인덱스를 지정한다. 참조 부호 64는 그 위치를 나타내기 위해 지금부터 사용된다. minSubblockScanIdx 및 maxSubblockScanIdx는 현재, 즉 현재 디코딩/코딩된 서브블록에 대한 스캔 인덱스의 최소 및 최대 값을 나타낸다. 현재 서브블록(14)에 대해 데이터가 전송되는 제 1 스캔 인덱스, startScanIdx는 서브블록이 스캐닝 순서에서 제 1 유효 계수를 포함하는지 여부에 좌우된다. 이 경우, 제 1 스캔 패스는 제 1 유효 변환 계수(64)에 대응하는 스캔 인덱스에서 시작하고; 그렇지 않으면, 제 1 스캔 패스는 서브블록(14)이 있는 왼쪽 하단 계수 위치와 같은 서브블록의 최소 스캔 인덱스, 또는 다른 말로 하면, 스캔 순서(62)가 이끄는 DC 위치(66)로부터 가장 먼 곳에서 시작한다. 다시 한 번, 도 13은 서브블록 단위 코딩을 사용하는 실시 예이지만, 이 개념은 계수를 블록으로 코딩하는 것과 관련되거나 아래에 설명된 양상 중 일부를 서브블록에 관련시키는 반면 다른 것들은 전체 블록(10)에 관련되도록 쉽게 수정될 수 있다.
패스(601 내지 604)의 시퀀스에서, 컨텍스트 적응 이진 산술 코딩/디코딩은 하나 이상의 플래그 유형 세트에서 각각 선택된 플래그 또는 빈을 코딩/디코딩하는 데 사용되고, 이것은 현재 설명된 실시 예 1에서, 예를 들어, sig_flag, par_flag, gt1_flag 및 gt2_flag를 포함하고, 가변 길이 코드가 나머지 값을 코딩/디코딩하는 데 사용된다. 즉, 가변 길이 코드의 코드 워드의 빈은 균일한 비 적응 확률 모델을 사용하여 이진 산술 코딩/디코딩 엔진의 우회 모드에서 코딩/디코딩되어, 결과적으로 개별 빈에 대한 압축 비율이 1이 된다. 따라서, 각각의 플래그 및 각각의 나머지 값은 도 12b에서 50으로 표시된 것과 같이, 현재 스캔된 변환 계수 위치에 대해 각각 디코딩된다. 의사 코드에서 이 현재 위치는 매개변수 또는 인덱스 k로 표시된다.
패스(601 내지 605)의 시퀀스에서 데이터 스트림으로부터의 디코딩은 코딩된 변환 계수 위치 세트의 각각의 변환 계수 위치에 대해 하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나가 코딩/디코딩되는 방식으로 발생한다. "코딩된 변환 계수 위치 세트"는 예를 들어 startScanIdx와 같은 미리 정의된 제 1 변환 계수 위치와 endScanIdx와 같은 미리 정의된 마지막 변환 계수 위치 사이에서 확장되고, 여기에서 사전 정의된 제 1 및 마지막 변환 계수 위치는 변환 블록에서 변환 계수 위치의 서브 세트를 지정하고; 대안적으로, 코딩된 세트는 제 1 논-제로 계수(64)와 DC 계수(66)와 같은 미리 정의된 계수 사이에서 확장된다. 즉, 플래그가 없이 하나의 나머지가 코딩/디코딩되는 코딩 세트의 하나 이상의 계수, 하나 이상의 플래그 및 하나의 나머지가 코딩/디코딩되는 하나 이상의 계수, 및 나머지는 없이 하나 이상의 플래그가 코딩/디코딩되지 않는 하나 이상의 계수가 있을 수 있다. 각 계수에 대해, 코딩된 데이터, 즉 플래그 및/또는 나머지의 코딩/디코딩은 연속적으로, 순차적 의미로, 또는 단계적으로 초기 값 영역을 제한하기 위해서 순차적으로 수행된다. 예를 들어, 각 계수 위치의 양자화 인덱스의 절대 값은 Ω = 0 내지 2x-1의 초기 값 영역에 해당하는 x 비트 표현, 예를 들어, x=16으로 표현되며, 이 내에 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값이 있어야 한다. 순차 코딩/디코딩에 의해, 이 초기 값 영역은 값 영역 내의 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값을 포함하도록 단계적으로 제한된다. 즉, 마지막으로, 특정 변환 계수 위치에 대해 코딩/디코딩된 하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나는 초기 값 영역에서 고유하게 후자를 정의한다. 각 플래그는 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값의 값 영역이 이중 분할된 제 1 부분 또는 제 2 부분으로, 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값 값 영역을 제한한다. 더 정확하게 말하면, 각 플래그는 선행 플래그(들)로 인해 각 계수의 양자화 인덱스의 절대 값이 존재하는 것으로 알려진 값 영역 부분을 이중 분할한다. 예를 들어, sig_flag는 값 영역 Ω을 A = {0} 및 으로 분할하고; 이 때, par_flag는 을 홀수 또는 짝수 값으로 제한하는 등이다.
현재 스캔된 특정 변환 계수 위치(50)에 대해 나머지 값이 코딩/디코딩되면, 나머지 값은 현재 스캔된 변환 계수 위치에 대해 적어도 하나의 플래그가 디코딩된 경우 값 영역 중에서, 또는 현재 스캔된 변환 계수 위치에 대해 플래그가 디코딩되지 않으면 초기 값 영역 중에서 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값을 고유하게 나타낸다. 나머지 값이 코딩/디코딩되지 않은 변환 계수 위치, 이러한 변환 계수 위치에 대해 코딩/디코딩된 하나 이상의 플래그는 이미 값 영역을 단지 하나의 절대 값을 포함하도록 제한했다. 부호에 관해서는, 반드시 수정된 실시 예에 대해서는 아니고, 본 실시 예에서의 경우와 같이 변환 계수에 부호가 있는 경우, 이것이 바이패스 모드에서 별도로 코딩될 수 있다. 도 13에서, 이들은 논제로 양자화 인덱스에 대해 자체 패스(605)에서 개별적으로 코딩/디코딩되는 것으로 도시되어 있지만, 이것은 추가 실시 예에 도달하기 위해 변경될 수 있다.
종속 양자화는 코딩된 변환 계수 위치 세트의 변환 계수 위치의 양자화 인덱스를 순차적으로 역 양자화하는 데 사용된다. 이 측정에 의해, 이 변환 계수 위치 세트에 대해 복원된 변환 계수가 획득된다. 예를 들어, 위에서 설명한대로 상태 변이가 사용될 수 있다. 이것은, 예를 들어, 도 10에 도시된 바와 같이, 양자화 인덱스가 상기 개념에 의해 고유하게 코딩/디코딩되는 인덱스 k를 사용하여 표시된 현재 변환 계수 위치에 대해, 도 7에서 "상태"로 표시된 현재 변환 계수 위치에 대해 상태 변이가 가정하는 상태에 고유하게 기초하여, 복수(73)의 복원 레벨 세트 중에서, 즉 도 7의 세트 0 및 세트 1 중에서 복원 레벨 세트를 선택하고(72), 양자화 인덱스 level[k]을, 양자화 인덱스가 복원 레벨 세트에서 가리키는, 즉, 복원된 변환 계수가 상기 복원 레벨과 동일하게 설정되는, 복원 레벨 trec[k]로 역 양자화(74)하고, 스캔 순서에서 현재 변환 계수를 따르는 변환 계수 위치에 대한 업데이트된 상태(78)를 산출하기 위해 현재 변환 계수 위치, 즉 종속 양자화 동안 현재 스캔된 것에 대해 가정된 상태 변이의 상태를 업데이트(76)함으로써, 스캔 순서(62)에 따라 상태 변이 테이블 또는 격자 다이어그램을 사용하여 구현될 수 있다. 업데이트하는 단계(76)는 도 10의 80에 도시된 바와 같이 현재 변환 계수 위치, level[k]의 양자화 인덱스에 따라 수행되며, 여기서 표(82)가 이를 위해 사용된다. 마찬가지로 선택한 레벨 세트를 사용한 양자화는 인코더 측면에서 발생한다.
위에서 예시된 바와 같이, 상태 변이는 도 10에 언급된 벡터의 4 개 요소에 대응하는 4 개의 별개의 상태 사이에서 변이될 수 있다. 또한, 현재 변환 계수 위치의 양자화 인덱스(80)에 적용된 패리티 함수와 같은 이진 함수(86)에 따라 제 1 후속 상태와 제 2 후속 상태(841, 842) 중 하나를 결정하여 업데이트를 수행할 수 있고, 여기서, 제 1 후속 상태 및 제 2 후속 상태는 88에 도시된 바와 같이 현재 변환 계수 위치에 대한 상태에 의존한다. 인코더 및 디코더는 예를 들어 데이터 스트림에서 전송되는 미리 결정된 양자화 단계 크기에 대한 정보와 함께, 미리 결정된 양자화 단계 크기, 즉 도 7의 △ 및 도 10의 2shift에 의해 복원 레벨 세트를 매개변수화할 수 있다. 또한, 각각의 복원 레벨 세트는 도 7에 도시된 바와 같이 현재 변환 계수 위치에 대한 모든 복원 레벨 세트에 대해 일정하거나 유효한 미리 결정된 양자화 단계 크기의 정수 배수로 구성될 수 있다. 상기 언급된 스케일링 행렬로 인해, 하나의 블록(10) 내의 상이한 계수에 대해 상이한 단계 크기가 사용될 수 있음을 주목한다. 복수의 복원 레벨 세트 중 복원 레벨 세트의 수는 2일 수 있고, 복수의 복원 레벨 세트는 미리 결정된 양자화 단계 크기의 0 및 짝수 배수를 포함하는 제 1 복원 레벨 세트, 즉 세트 0, 및 미리 결정된 양자화 단계 크기의 0 및 홀수 배수를 포함하는, 제 2 복원 레벨 세트, 즉 세트 1을 포함한다.
지금까지, 도 13의 설명은 이후 설명되는 실시 예들에도 적용된다. 그러나, 실시 예 1은 컨텍스트 적응성을 사용하여 코딩된 플래그의 수를 제한하기 위해 다음 메커니즘을 사용한다. 특히, 패스의 시퀀스 중 특정 패스, 즉 도 13의 패스(601)에서, sig_flag 유형의 플래그는, 이 패스에서 미리 결정된 중단 기준이 스캔 순서에 따라 처음으로 충족되는, 미리 결정된 변환 계수 위치까지만 코딩/디코딩된다. 여기에서, "까지"는 여기에서 이를 포함하는 이전의 위치로 이해되어야 하지만, 예를 들어, "위치(112) 이후"라는 위치 대한 언급은 위치(112)를 제외한 위치(112)의 후속 위치를 나타내는 것으로 이해된다. 도 13에서는 이와 같이 sig_flag의 수 뿐만 아니라 패스(601)의 par_flag와 gt1_flag, 패스(602)의 gt2_flag의 수도 제한된다. 제한은 이진화에도 영향을 주고; 중단 기준이 충족되는 즉시, 각각의 플래그 유형은 스캔 순서에서 방금 언급한 미리 결정된 변환 계수 위치를 따르는 계수 위치의 정의에 더 이상 사용되지 않는다. 즉, 미리 결정된 플래그 유형의 플래그, 즉 코딩/디코딩될 개수에 제한이 있는 플래그는 미리 결정된 변환 계수 위치를 스캔 순서로 포함하는 변환 계수 위치에 대해서만 코딩/디코딩된다. 따라서, 도 13에서 패스(601)에 관한 기준, 즉 MAX_REG_BINS에 관한 기준이 충족되는 즉시, 스캔 순서에서 미리 결정된 변환 계수 위치를 따르는 각각의 코딩된 세트의 변환 계수 위치들 각각에 대해, 패스 시퀀스의 추가 패스, 즉 도 13의 경우 패스(603)에, 후자가 초기 값 영역에서 직접, 즉 즉, 각 계수의 양자화 인덱스를 코딩/디코딩하는 데 사용되는 플래그 유형의 플래그 중 임의의 것에 의해 초기 값 영역을 사전에 제한하지 않고, 각각의 변환 계수 위치에 대한 양자화 인덱스의 절대 값을 고유하게 나타내도록 코딩된 나머지 값 중 하나가 있다.
컨텍스트 적응적으로 인코딩/디코딩된 플래그의 수를 제한하기 위해 방금 개요된 개념을 설명하기 위해서, 도 13에 추가하여 도 14 및 15를 참조한다. 도 14는 90에서 변환 계수의 양자화 인덱스의 절대 값에 대한 초기 값 영역을 도시한다. 이 초기 값 영역은 0과 일부 최대 값 사이의 모든 정수 값을 포함할 수 있다. 초기 값 영역은 더 큰 숫자를 향해 개방된 간격일 수도 있다. 초기 값 영역(90)의 정수 값 개수는 반드시 2의 거듭 제곱일 필요는 없다. 또한, 도 14는 개별 양자화 인덱스를 나타내는 데 참여하는, 즉 절대 값을 나타내는 데 참여하는 다양한 플래그 유형을 보여준다. 특정 양자화 인덱스의 절대 값이 0인지 아닌지를 나타내는 sig_flag 타입이 있다. 즉, sig_flag(92)는 초기 값 영역(90)을 2 개의 하위 부분, 즉 하나는 단지 0을 포함하고 다른 하나는 가능한 다른 모든 값을 포함하는 두 부분으로 분할한다. 즉, sig_flag는 양자화 인덱스의 절대값을 도 14의 하단에 예시된 바와 같이 0이면 이미 고유하게 나타낸다. 초기 값 영역(90)의 논제로 값은 플래그 유형 par_flag에 의해 더욱 이중 분할되는 값 영역(94)을 형성하며, 즉 한편으로는 홀수 값으로, 다른 한편으로는 짝수 값으로 분할된다. par_flag(96)은 논제로인 경우에만 특정 양자화 인덱스에 대해 존재해야 한다. par_flag(96)는 이것이 값 영역(94)을 이중 분할하여 생긴 절반 중 하나에 대해 고유성을 생성하지 않는다. 이것은 다음 결과된 (재귀적으로 정의된) 값 영역으로서 하나의 절반을 나타내고, 이에 따라 다음 플래그, 즉 gt1_flag(98)는 par_flag 이후의 결과된 값 영역을 이분할한다. 즉, 양자화 인덱스 값이 홀수 값인 경우 홀수 논제로 값(100), 및 양자화 인덱스가 짝수 논제로 값인 경우 짝수 논제로 값(102). 특히, gt1_flag(98)에 의한 이분할은 한 부분이 값 영역(100)의 가장 작은 홀수 값 또는 도메인(102)의 가장 작은 논제로 짝수 값을 각각 포함하는 방식으로 행해진다. 다른 부분은 각 도메인(100/102)의 다른 모든 값을 포함한다. 후자의 나머지 값 영역은 동일한 방식으로 플래그 gt2_flag(104)에 의해 추가로 이분할된다. 즉, 가장 작은 값은 한 부분을 나타내고 다른 값은 다른 부분을 나타낸다. 도 14의 하단에서 볼 수 있는 바와 같이, 이것은, sig_flag(92)는 이것이 0일 경우 특정 변환 계수의 양자화 인덱스에 대해 코딩되고, sig_flag, par_flag 및 gt1_flag(92, 96 및 98)는 이것이 절대 값 1과 2를 포함하는 값 간격(106)에 속하는 경우에 특정 변환 계수의 특정 양자화 인덱스를 나타내도록 코딩되고, 모든 플래그(92, 96, 98 및 104)는 이것이 값 3과 4를 포함하여 바로 다음 값 간격(108) 내에 들어가도록 발생하면 특정 변환 계수의 양자화 인덱스의 절대 값을 나타내도록 코딩되고, 추가적으로 나머지는 그 절대 값이 초기 값 영역(90) 중에서 나머지 구간(110)에 있는 변환 계수의 양자화 인덱스에 대해 코딩되는 것을 의미한다. 플래그 유형(92, 96 및 98)의 플래그는 제 1 패스(601)에서 코딩된다. 플래그(104)는 제 2 패스(602)에서 코딩된다. 이들 플래그는 컨텍스트 적응 산술 코딩을 사용하여 코딩된다. 그러나, 패스에서 코딩되는 플래그의 수는 제한될 수 있으며 도 13에 따라 제한된다. 도 13의 예에서, 패스(601)에서 플래그 유형의 플래그 수는 max_rec_bins로 제한된다. 플래그 유형(92, 96 및 98)의 플래그는 순서(62)를 따라 제 1 패스 내에서 현재 방문한 변환 계수 위치(12)에 대해 코딩되고, 패스(601)에서 코드화된 플래그의 전체 수가 패스(601)에서 코드화/디코딩될 수 있는 최대 플래그 수를 초과하지 않고 세 가지 플래그 유형 모두가 여전히 패스(601)에서 코딩될 수 있는 경우에만 가능하다. 도 15에서, 패스(601)에서 허용되는 플래그의 최대 개수를 초과하지 않는 마지막 변환 계수 위치는 112인 것으로 도시되어 있다. 마찬가지로, 패스(602)에서 코딩된 플래그(104)의 전체 수가 패스(602)에서 코딩/디코딩될 플래그의 최대 허용 수를 초과하지 않고 패스(602)에서 여전히 코딩되는 경우에만, 플래그 유형(104)의 플래그는 순서(62)를 따라 제 2 패스 내에서 현재 방문한 변환 계수 위치(12)에 대해 코딩된다. 도 15에서, 패스(602)에서 허용되는 플래그의 최대 수가 초과되지 않는 마지막 변환 계수 위치는 116인 것으로 도시되어 있다.
도 15는 서브블록(14)에 대한 변환 계수 또는 양자화 인덱스의 코딩을 도시하지만, 위에서 이미 개략적으로 설명한 바와 같이, 도 13의 전체 프로세스가 블록(10) 전체에 적용되기 때문에 도 13의 실시 예는 변형될 수 있다. 또한, 도 15는 코딩된 변환 계수 세트가 예를 들어, 제 1 논제로 변환 계수 위치(64)를 포함하는 스캔 순서(62)에서 이 서브블록 이후의 서브블록들에 대해서 그러한 모든 계수를 포함하는 경우를 예시한다. 따라서, 도 15에 해칭으로 표시된 모든 변환 계수 위치는 그 양자화 인덱스가 플래그 유형(92, 96 및 98)을 포함하는 방식으로 표현되는 변환 계수와 관련된다. 따라서, 제 1 패스(601)에서, 이러한 플래그 유형(92, 96 및 98)의 플래그는 위치(112)까지 변환 계수(12)에 대해 코딩된다. 위치(112) 까지의 변환 계수(12) 중 일부에 대해서는, sig_flag(92)만 코딩되어야 하는 반면, 다른 것에 대해서는 모든 세 가지 모든 플래그 유형이 패스(601)에 포함되어 코딩/디코딩된다. 따라서, 도 15는 데이터 스트림이 이들 플래그 유형(92, 96 및 98)의 플래그가 패스(601) 내에서 코딩되는 대응 부분(114)을 포함하는 것을 예시한다. 위치(112) 이후에, 패스(601)내에서 아무 것도 코딩/디코딩되지 않는다. 제 2 패스(602)에서, 변환 계수 위치(12)는 스캔 순서(62)를 따라 다시 횡단되고, 패스(602) 동안 코딩될 수 있는 gt2_flag의 최대 수, 이 플래그의 수가 max_gt2_bins를 초과하지 않는 한, gt2_flag은 gt1_flag(98)이 해당 양자화 인덱스의 절대 값이 구간(108 및 118)을 포함하는 나머지 값 영역 부분 내에 있음을 나타내는, 변환 계수에 대해 코딩된다. 도 15는 위치(116)까지 스캔 순서(62)를 따르는 모든 변환 계수 위치(12)를 크로스 해칭하여 도시하고 이들 위치를 단순히 해칭한 위치(112)까지의 후속 변환 계수 위치(12)와 구별한다. 위치(112) 이후의 모든 변환 계수 위치(12)는 도 15에서 해칭되지 않은 것으로 도시되어 있다. 패스(602) 동안 코딩된 gt2_flag(104)는 부분(114) 바로 뒤에 오는 데이터 스트림의 부분(118)으로 코딩된다. 위치(116) 이후의 패스(602) 동안에 추가 데이터는 코딩되지 않는다. 한 패스의 절반으로 형성하는 것으로 해석될 수 있는, 다음 두 번의 패스(603, 604)에서, 나머지는 부분(118) 바로 뒤에 오는 데이터 스트림의 부분(120)으로 코딩된다. 특히, 부분(120)의 제 1 하위 부분에서, 패스(603) 동안, 위치(112)까지 변환 계수 위치(12)에 대한 나머지가 코딩된다. 따라서 이들 나머지는 크로스 해칭된 변환 계수 위치(12), 즉 위치(116)까지의 변환 계수 위치(12)에 대한 간격(110)에서, 및 단순히 해칭된 변환 계수 위치(12), 즉 위치(112)까지 위치(116)를 따르는 것에 대해 간격(108 및 110)을 포함하는 나머지 값 영역에서, 특정 변환 계수 위치(12)의 양자화 인덱스의 절대 값을 나타낸다. 위치(112)까지 변환 계수 위치(12)의 나머지가 들어가는 하위 부분(122) 이후에, 패스(604) 동안, 위치(112)를 따르는 변환 계수 위치(12) 당 하나의 나머지, 즉 해칭 없는 변환 계수 위치(12)가 데이터 스트림으로 코딩되는 추가 하위 부분(124)이 있다. 후자의 나머지는 양자화 인덱스를 직접 나타내며, 즉 초기 값 영역(90)에서 직접 절대 값을 나타낸다. 이러한 방식으로, 컨텍스트 적응적으로 코딩된 플래그(92, 96, 98 및 104)의 수가 감소하고, 바이패스 모드, 즉 고정된 등확률 모드를 사용하여 코딩된 빈의 수, 즉 나머지의 이진화의 빈 수가 증가한다.
즉, 도 13에서, 전술한 중단 기준은 제 1 패스에서 디코딩된 플래그의 수가 미리 결정된 임계 값을 초과하는지 여부와 관련된다. sig_flags 외에도, 유형(96 및 98)의 플래그가 계산된다.
현재 스캔된 변환 계수 위치에 대한 나머지 값을 코딩/디코딩하기 위한 가변 길이 코드는 골룸 라이스 코드 등과 같은 미리 정의된 가변 길이 코드 세트 중에서 선택될 수 있다. 선택된 코드는 현재 스캔된 변환 계수 위치가 미리 정해진 변환 계수 위치(112), 즉, 도 15의 해칭된 위치까지 위치하는지 또는 스캔 순서(62)에서 미리 결정된 변환 계수 위치(112)를 따르는지에 여부에 따라 달라지며, 이 때 도 13의 경우, 선택은 위치가 위치(112 및 116) 사이에 있는지 여부에 따라 달라질 수 있다. 예를 들어, 나머지의 인코딩/디코딩은 도 15의 130에서 크로스 해칭된 계수의 나머지를 코딩/디코딩할 때 사용된 VLC 코드와 비교하여, 패스(604)에서와 다르게 패스(603)에서 다른 VLC 코드 및 도 15의 단순 해칭된 계수의 나머지를 코딩/디코딩할 때와 다른 코드를 포함할 수 있다. 선택은 인덱스 골롬 코드, 또는 후술하는 바와 같이 라이스 매개변수의 순서를 선택하는 것과 같은, 매개변수화 가능한 VLC 코드의 매개변수화를 포함할 수 있다. 또는, 선택한 가변 길이 코드를 나타내는 매개변수는 패스(603,4)에서 일정하게 유지될 수 있으며 미리 결정된 기준을 충족하는 선행 변환 계수 위치의 양자화 인덱스에 따라 점진적으로 변경된다. 또는 이진화 매개변수는 나머지 부분을 코딩할 때 현재 스캔된 변환 계수 위치 주변의 변환 계수 위치의 양자화 인덱스에 의존하여 선택될 수 있다. 이 의존성은, 예를 들어, 도 15의 모든 해칭된 위치에 대해, 나머지가 코딩된 현재 변환 계수 위치가 스캔 순서(62)에서 앞서거나 미리 결정된 변환 계수 위치(112)인 경우에만 사용될 수 있다. 이와 관련된 자세한 내용은 아래에 설명되어 있다.
선택/매개변수화된 코드에서 선택된 코드 워드는 나머지가 코딩/디코딩되는 경우에 계수 위치가 어디인지에 따라 달라진다: 양자화 인덱스의 절대값 지수가 속하는 계수가 위치(116) 까지 어딘가인 경우, 임의의 계수의 양자화 인덱스의 나머지 이진화에 의해, 양자화 인덱스의 절대 값에서 제 1 및 제 2 패스(601,2)의 플래그(92, 96, 98 및 104)에 의해 표현 가능한 최대 값을 뺀 값, 즉, 4에 1을 더한 값, 즉 5가 표시되거나 VLC 코딩되고, 양자화 인덱스가 속한 계수가 위치(116) 이후 위치(112) 까지 어딘가인 경우, 임의의 계수의 양자화 인덱스의 나머지 이진화에 의해, 양자화 인덱스의 절대 값에서 제 1 패스(601)의 플래그(92, 96, 98)에 의해 표현 가능한 최대 값, 즉 2에 1을 더한 값 3이 표현되거나 VLC 코딩되고, 양자화 인덱스가 속한 계수가 위치(112) 이후 어딘가에 있는 경우, 양자화 인덱스의 절대 값은 모든 계수의 양자화 인덱스의 나머지 이진화에 의해, 직접 표현되거나 VLC 코딩된다.
도 13의 실시 예의 여러 변형이 적용될 수 있다. 예를 들어, gt2_flag는 별도의 패스(602)에서 코딩/디코딩되지 않고 제 1 패스(601)에 포함될 수 있다. 그 다음, 코딩된 gt2_flags의 수는 제 1 패스(601)에서 컨텍스트 코딩된 빈의 카운팅에 포함될 수 있으며, 사용 가능한 컨텍스트 코딩된 빈의 수가 4 미만이면 제 1 패스가 종료된다. 즉, 이 경우 컨텍스트 코딩된 빈의 수에 대해 단일 임계 값이 사용된다. 대안으로, gt2_flag는 전혀 전송되지 않으며, 이 경우 gt1_flag가 1과 같으면 나머지가 코딩된다.
이 실시 예의 다른 변형에서, 하나 이상의 추가 gtx_flag가 포함된다. gt2_flag와 유사하게, 이들 플래그는 이전 gty_flag(y = x-1 포함)가 1 인 경우에만 코딩된다. 이들은 양자화 인덱스의 절대 값이 이전 gtx_flags에 의해 지정된 최소 가능 값보다 큰지 여부를 나타낸다. 절대 값의 복원은 다음과 같이 주어진다:
absLevel = sig_flag + par_flag + 2*(gt1_flag + gt2_flag + gt3_flag + .. + 나머지)
이들 플래그는 gt2_flag와 동일한 패스에서 코딩되거나(제 1 패스에 gt2_flag가 포함된 경우를 포함) 하나 이상의 추가 패스에서 코딩될 수 있다. 후자의 경우 gtx_flag의 수를 제한하기 위한 추가 임계 값이 적용될 수 있다.
다음에 설명되는 제 2 실시 예는 일 측면에서 제 1 실시 예와 다르다: par_flag 및 gt1_flag의 순서가 바뀐다 (이들 플래그의 의미는 그에 따라 변경됨). sig_flag가 1이면, 먼저 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 지정하는 gt1_flag가 전송된다. 그리고 gt1_flag가 1이면 par_flag는 나머지의 패리티를 지정한다(즉, 절대 레벨 - 2). 제 1 실시 예에 대해서는 다음이 적용된다.
* 종속 양자화를 위한 상태 머신은 변환 계수 레벨의 패리티에 의해 구동되고, 즉, 이진 함수 path(level)는 그 인수의 패리티를 반환한다.
* 제 1 패스에서 sig_flag에 대한 확률 모델은 상태 변수의 해당 값(및 선택적으로 디코더에 사용할 수 있는 다른 매개변수, 상기 참조)에 따라 선택된다;
제 1 패스 :
스캔 위치에 대한 제 1 패스에서, 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 변환 계수가 0과 같지 않은지 여부를 나타내는 sig_flag; sig_flag는 1과 같은 것으로 추론될 수 있는 경우 전송되지 않는다(즉, 예를 들어, 변환 블록에서 제 1 유효 스캔 위치에 대한 경우(x 및 y 좌표로 명시적으로 신호 받은 것).
* sig_flag가 1(코딩되거나 추론된 값)이면, 현재 스캔 위치에 대해 다음이 추가로 전송된다.
o 절대 레벨이 1 보다 큰지의 여부를 나타내는 gt1_flag;
o gt1_flag가 1과 동일하면, 절대 레벨에 2를 뺀 값의 패리터를 지정하는 par_flag;
* 미리 정의된 컨텍스트 코딩된 빈의 최대 수에 도달하면 제 1 패스가 종료된다. MAX_REG_BINS를 제 1 패스에서 전송할 수 있는 최대 빈의 수로 하고 regBins를 여전히 사용 가능한 일반 코딩된 빈의 수를 나타내도록 한다. 그러면, 다음이 적용된다:
o regBins는 초기에 MAX_REG_BINS와 동일하게 설정된다.
o 임의의 bin(sig_flag, gt1_flag, par_flag)을 코딩한 후, regBins가 1 씩 감소한다.
o 스캔 위치에 대해 빈(sig_flag 및 적용 가능하다면, gt1_flag 및 par_flag)을 전송한 후, 여전히 사용 가능한 빈 regBins의 수가 3 미만인 경우 (즉, 다음 스캔 위치에 대해 sig_flag, par_flag 및 gt1_flag를 전송할 수 없음), 제 1 스캔 패스가 종료된다.
제 2 패스 : 스캔 위치에 대한 제 2 패스에서 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 스캔 위치에 대한 gt1_flag가 1이면 gt2_flag가 전송되고, 이는 나머지((absolute level-2-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정한다.
* 제 2 패스는 컨텍스트 코딩된 gt2_flag의 미리 정의된 최대 수가 전송된 경우 종료된다. 제 1 패스에서 데이터가 전송되지 않은 스캔 위치에 도달하면 제 2 패스도 종료된다 (즉, 이러한 스캔 위치의 경우 제 2 패스에서 데이터가 전송되지 않음)
제 3 패스 : 스캔 위치에 대한 제 3 패스에서 절대 레벨에 대한 나머지(즉, 전송된 sig_flag, par_flag, gt1_flag 및 gt2_flag에 의해 아직 지정되지 않은 데이터)는 sig_flag가 패스 1에서 코딩된 모든 스캔 위치에 대해 전송된다. 비 이진 구문 요소 나머지는 구조화된 코드(예를 들어, 골룸 라이스 코드)를 사용하여 이진화되고 빈은 산술 코딩 엔진의 우회 모드에서 코딩되다. 나머지는 다음 스캔 위치로 전송된다:
* 제 2 패스에서 1과 동일한 gt2_flag가 전송되는, 모든 스캐닝 위치에 대해:
이러한 스캐닝 위치에 대해, 전송된 비 이진 구문 요소 나머지는 다음을 지정한다:
(절대 값 - 4 - par_flag)/2
* 모든 스캐닝 위치에 대해, 제 1 패스에서는 1과 동일한 gt1_flag가 전송되었지만 제 2 패스에서는 gt2_flag가 전송되지 않는다. 이러한 스캐닝 위치에 대해 전송된 비 이진 구문 요소 나머지는 다음을 지정한다.
(절대 값 - 2 - par_flag)/2
* 제 4 패스 : 제 4 패스에서는, 제 1 패스에서 데이터가 전송되지 않은 모든 스캔 위치에 대한 절대 레벨이 코딩된다. 절대 레벨은 먼저 구조화된 코드를 사용하여 이진화되고, 사용되는 코드는 현재 상태 변수의 값뿐만 아니라 로컬 활동 계측에 따라 달라질 수 있다. 빈은 산술 코딩 엔진의 우회 모드를 사용하여 전송된다.
제 5 패스 : 마지막으로, 제 5 패스에서 0과 같지 않은 모든 변환 계수 레벨에 대한 부호가 전송된다. 부호는 산술 코딩 엔진의 우회 모드에서 전송된다.
도 16의 의사 코드는 서브블록 내부의 변환 계수 레벨의 코딩/디코딩 프로세스를 더 예시한다. 제 1 실시 예와 동일한 설명이 적용된다. 도 17은 도 16에 적용된 도 14의 수정된 버전을 보여준다. 나머지가 위치(112와 116) 사이의 계수와 관련된 값 영역의 시작과 같은 세부 사항, 즉, 플래그(92, 96 및 98)를 사용하여 표현할 수 있는 최대 값이 도 13의 경우 2이고 도 16의 경우 1인 것을 제외하고, 도 15는 도 16에도 유효하다. 알 수 있는 바와 같이, 도 13의 경우를 제외하고, 제 1 패스(601)에서 플래그 par_flag의 코딩/디코딩은, 플래그 gt1_flag가 대응하는 스캔된 변환 계수의 양자화 인덱스가 크기가 1보다 크다는 것을 나타내는 변환 계수 위치 및 그 이후의 변환 계수 위치에 대해 배타적으로 발생한다. 도 13의 경우, 해당 sig_flag에 의해 0이 아닌 값이 표시되는 경우 이러한 코딩/디코딩이 불가피하게 발생한다.
이 실시 예의 변형에서, gt2_flag는 별도의 패스에서 코딩되지 않고 제 1 패스에 포함된다. 그런 다음 코딩된 gt2_flags의 수는 제 1 패스에서 컨텍스트 코딩된 빈의 카운팅에 포함되고, 사용 가능한 컨텍스트 코딩된 빈의 수가 4 개 미만이면 제 1 패스가 종료된다. 즉, 이 경우 컨텍스트 코딩된 빈의 수에 대해 단일 임계 값이 사용된다.
대안으로, gt2_flag는 전혀 전송되지 않으며, 이 경우 gt1_flag가 1이면 나머지가 코딩된다.
이 실시 예의 다른 변형에서, 하나 이상의 추가 gtx_flag가 포함된다. gt2_flag와 유사하게, 이러한 플래그는 이전 gty_flag(y = x-1 포함)가 1인 경우에만 코딩된다. 이들은 양자화 인덱스의 절대 값이 이전 gtx_flags에서 지정한 가능한 최소값보다 큰지 여부를 나타낸다. 절대 값의 복원은 다음과 같이 주어진다:
absLevel = sig_flag + par_flag + 2*(gt1_flag + gt2_flag + gt3_flag + .. + 나머지)
이러한 플래그는 gt2_flag와 동일한 패스(이것은 제 1 패스에 gt2_flagis가 포함된 경우를 포함함) 또는 하나 이상의 추가 패스로 코딩될 수 있다. 후자의 경우, gtx_flag의 수를 제한하기 위한 추가 임계 값이 적용될 수 있다.
제 3 실시 예는 한 측면에서 제 1 실시 예와 다르다 : 제 1 패스의 sig_flag는 모든 스캔 위치에 대해 코딩된다; par_flag 및 gt1_flag의 존재 만이 이미 전송된 컨텍스트 코딩된 bin의 수에 의해 결정된다. 제 1 실시 예에 대해서는 다음이 적용된다:
* 종속 양자화를 위한 상태 머신은 변환 계수 레벨의 패리티에 의해 구동되고, 즉, 이진 함수 path(level)는 그 인수의 패리티를 반환한다.
* 제 1 패스에서 sig_flag에 대한 확률 모델은 상태 변수의 해당 값 (및 선택적으로 디코더에 사용할 수 있는 다른 매개변수, 상기 참조)에 따라 선택된다;
제 1 패스 :
스캔 위치에 대한 제 1 패스에서, 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 변환 계수가 0과 같지 않은지 여부를 나타내는 sig_flag; sig_flag는 1과 같은 것으로 추론될 수 있는 경우 전송되지 않는다(즉, 예를 들어, 변환 블록에서 제 1 유효 스캔 위치에 대한 경우(x 및 y 좌표로 명시적으로 신호 받은 것).
* sig_flag가 1(코딩되거나 추론된 값)이면, 현재 스캔 위치에 대해 다음이 추가로 전송된다.
o 절대 레벨 마이너스 1의 패리티를 지정하는 par_flag;
o 나머지((절대 레벨-1-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정하는 gt1_flag.
* 컨텍스트 코딩된 빈(아직 코딩된 sig_flag 를 포함함)의 미리 정의된 최대 수에 도달하면 par_flag 및 gt1_flag의 전송이 스킵된다. MAX_REG_BINS를 제 1 패스에서 전송할 수 있는 최대 빈의 수로 하고 regBins를 여전히 사용 가능한 일반 코딩된 빈의 수를 나타내도록 한다. 그러면, 다음이 적용된다:
o regBins는 처음에 MAX_REG_BINS에서 제 1 패스에서 전송될 sig_flag 수를 뺀 값과 동일하게 설정된다(이 수는 제 1 패스에 대한 제 1 스캔 인덱스, 서브블록의 마지막 스캔 인덱스 및 서브블록이 스캔 순서에서 제 1 유효 계수를 포함하는지 여부에 대한 정보에 의해 주어진다)
o 임의의 gt1_flag 또는 par_flag을 코딩한 후, regBins가 1 씩 감소한다.
o 스캔 위치에 대해 빈(sig_flag 및 sig_flag이 1 인 경우 gt1_flag, par_flag)을 전송한 후, 여전히 사용 가능한 빈 regBins의 수가 2 미만인 경우, (즉, 다음 스캔 위치에 대해 sig_flag, par_flag 및 gt1_flag를 전송할 수 없음), 제 1 스캔 패스에서 다음 모든 스캔 인덱스에 대해, sig_flag만이 전송된다.
제 2 패스 : 스캔 위치에 대한 제 2 패스에서 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 스캔 위치에 대한 gt1_flag가 1이면, 나머지((절대 레벨-3-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정하는, gt2_flag가 전송된다.
* 제 2 패스는 컨텍스트 코딩된 gt2_flag의 미리 정의된 최대 개수가 전송된 경우 종료된다. 1과 동일한 sig_flag만이 제 1 패스에서 전송되는, 스캔 위치에 도달하면 제 2 패스도 종료된다(즉, 이러한 스캔 위치의 경우 제 2 패스에서 데이터가 전송되지 않음)
제 3 패스 : 스캔 위치에 대한 제 3 패스에서, 절대 레벨에 대한 나머지(즉, 전송된 sig_flag, par_flag, gt1_flag 및 gt2_flag에 의해 아직 지정되지 않은 데이터)는 sig_flag 및 gt1_flag 및 par_flag가 패스 1에서 코딩된 모든 스캔 위치에 대해 전송된다. 비 이진 구문 요소 나머지는 구조화된 코드(예를 들어, 골룸 ㄹ라라이스 코드)를 사용하여 이진화되고 빈은 산술 코딩 엔진의 우회 모드에서 코딩되다. 나머지는 다음 스캔 위치에 대해 전송된다:
* 제 2 패스에서 1과 동일한 gt2_flag가 전송된 모든 스캐닝 위치에 대해:
이러한 스캐닝 위치에 대해, 전송된 비 이진 구문 요소 나머지는 다음을 지정한다:
(절대 값 - 5 - par_flag)/2
* 모든 스캐닝 위치에 대해, 제 1 패스에서는 1과 동일한 gt1_flag가 전송되었지만 제 2 패스에서는 gt2_flag가 전송되지 않는다. 이러한 스캐닝 위치에 대해 전송된 비 이진 구문 요소 나머지는 다음을 지정한다.
(절대 값 - 3 - par_flag)/2
제 4 패스 : 제 4 패스에서는, 1과 동일한 sig_flag만이 제 1 패스에서 코딩되는(gt1_flag는 전송되지 않음), 모든 스캔 위치에 대해 절대 레벨에서 1을 뺀 값이 코딩된다. 나머지(절대 레벨에서 1을 뺀 값)는 먼저 구조화된 코드를 사용하여 이진화되며, 이 사용된 코드는 현재 상태 변수의 값뿐만 아니라 로컬 활동 측정 값에 따라 달라질 수 있다. 빈은 산술 코딩 엔진의 우회 모드를 사용하여 전송된다.
제 5 패스 : 마지막으로, 제 5 패스에서 0과 같지 않은 모든 변환 계수 레벨에 대한 부호가 전송된다. 부호는 산술 코딩 엔진의 우회 모드로 전송된다.
도 18의 의사 코드는 서브블록 내부의 변환 계수 레벨의 코딩 프로세스를 더 예시한다. 제 1 실시 예와 동일한 설명이 적용된다. 도 14 및 도 15는 또한 도 18에 대해서도 유효한데, 위치(112)가 스캔 순서(62)를 계속 따라서 플래그(96 및 98)가 더 이상 코딩되지 않는 위치를 나타내는 반면, sig_flag는 전체 블록에 사용되므로, 위치(112)의 하류측 계수 위치에 대한 나머지, 해칭되지 않은 부분은 해당 계수의 양자화 인덱스를 바로 나타내지 않고, 그보다 이 나머지는 sig_flag가 0이 아닌 값을 나타내고 양자화 인덱스의 절대 값에서 1을 뺀 값만을 나타내는 위치(112) 이후의 계수에 대해 코딩된다는 사실을 제외하고는 유효하다.
상태 변수는 1과 동일한 제 1 sig_flag가 코딩된 후 알 수 없으며, 그 후 gt1_flag/par_flag가 뒤따르지 않는다. 따라서 다음 sig_flag의 경우, 사용된 확률 모델은 상태 변수와 독립적으로 유도되어야 한다(이전 sig_flag의 경우, 여전히 상태 변수에 따라 달라짐).
실시 예 3의 다음 변형이 가능하다 :
1. 상태 머신은 sig_flag(즉, 변환 계수 레벨이 0과 같거나 같지 않은지 여부에 대한 정보)에 의해 구동된다. 이진 함수 경로는 수준이 0이 아닌지 여부를 지정한다. 이 경우 패리티 플래그를 전송할 필요가 없으며, sig_flag에 부가하여 다음 데이터만이 전송된다.
* 제 1 패스: gt1_flag(1인 sig_flag의 전송은 절대 레벨이 1보다 큰지 여부를 지정함)
* 제 2 패스: gt2_flag(1인 gt1_flag의 전송은 절대 레벨이 2보다 큰지 여부를 지정함).
이것은 모든 sig_flag에 대해 상태 변수가 알려져 있다는 장점이 있고: 따라서 sig_flag를 코딩하는 데에 사용되는 확률 모델은 상태 변수를 기반으로 선택될 수 있다. 또한 gt1_flag는 제 1 패스에서 제거하고 다음과 같이 별도의 패스에서 코딩될 수 있다.
* 제 1 패스: sig_flag의 전송
* 제 2 패스: gt1_flag의 전송(gt1_flags의 최대 수까지);
* 제 3 패스: gt2_flag의 전송(gt2_flags의 최대 수까지);
* 제 4 패스: (a) 1과 동일한 gt2_flag가 전송되고 (b) 1과 동일한 gt1_flag가 전송되었지만 gt2_flag는 전송되지 않은 스캔 인덱스에 대한 나머지;
* 제 5 패스: sig_flag가 1과 같지만 gt1_flag는 전송되지 않은 스캔 위치에 대해 절대 레벨에 1을 뺀 값.
* 제 6 패스 : 0이 아닌 모든 변환 계수 레벨에 대한 부호.
2. 상태 머신은 패리티 기반 상태 머신에서 유의성 구동 상태 머신으로 전환한다.
그 의미는:
* regBins(위의 의사 코드에 지정됨)가 2보다 크거나 같은 모든 스캔 인덱스에 대해, 상태 변수는 패리티를 사용하여 업데이트된다(즉, 이진 함수 경로는 변환 계수 레벨의 패리티를 지정한다).
* regBins가 2보다 작아지면, 상태 변수는 유의성 정보를 사용하여 업데이트된다(즉, 이진 함수 경로(수준)는 수준이 0이 아닌지 여부를 지정한다).
이것은 모든 sig_flags에 대해 상태 변수가 알려져 있다는 장점이 있고, 따라서 sig_flag 코딩에 사용되는 확률 모델은 상태 변수를 기반으로 선택될 수 있다. 변형 1(항상 sig_flag에 의해 구동되는 상태 머신)과 달리, N 차원 공간에서 더 높은 패킹 밀도 및 이에 따라 더 높은 코딩 효율성이 달성된다.
즉, 지금까지 순전히 패리티 구동이라고 설명한 76에서의 상태 변이는, 상태 변이의 상태 업데이트가 도 10에서 k로 주어진 현재 변환 계수 위치가 스캔 순서 62에서 선행하는지, 미리 결정된 변환 계수 위치(112)에 있는지, 즉 도 15의 해칭 위치 중 하나인지, 또는 이 위치를 지나는지, 즉 스캔(601)과 관련하여 도 15에 도시된 해칭되지 않은 위치 중 하나인지에 따라 좌우한다. 현재 변환 계수 위치가 스캔 순서(62)를 따라 미리 결정된 변환 계수 위치(112)를 지나지 않은 경우, 즉 미리 결정된 변환 계수 위치(112)보다 선행하거나 그 위치와 동일한 경우, 업데이트는 앞에서 설명한대로, 현재 변환 계수 위치의 제 2 플래그 유형(96)의 플래그, 즉 패리티에 따라 달라지지만, 현재 변환 계수 위치가 스캔 순서에서 미리 결정된 변환 계수 위치를 뒤따르는 경우, 즉, 스캔 순서(62)를 따라서 이를 지나는 경우, 업데이트는 현재 변환 계수 위치의 제 1 플래그 유형의 플래그에 따라, 즉, 현재 계수의 제로 값에 따라 좌우한다. 이것은 제 1 미리 결정된 플래그 유형의 플래그, 즉 본 실시 예에 따라 각 계수의 양자화 인덱스의 표현에 참여하는 sig_flag를, 패리티 플래그 및 코딩이 112에서 중지된 gt1 플래그를 제외한 계수 위치(112)를 지나서까지, 컨텍스트 적응 엔트로피 디코딩할 때 이용될 수 있다; 따라서, 상태 변이가 현재 스캔된 변환 계수 위치에 대해 가정하는 상태에 따라, 미리 결정된 변환 계수 위치(112)에 선행하고, 이를 포함하고, 이를 뒤따르는 모든 변환 계수 위치에 대해, 디코더 및 인코더가 현재 스캔된 변환 계수에 대해서 sig_flag에 대한 컨텍스트를 결정하는 것이 가능하다.
다른 방법으로도 상태 업데이트는 순전히 패리티 기반과 같은 방식으로 행해지며, 위치(112)까지의 sig_flags에 대한 컨텍스트는 종속 양자화의 상태에 기반하여 수행되는 반면 해당 위치(112) 이후에는 독립적이다.
실시 예 1과 유사하게, 다음 변형이 가능하다 :
* gt2_flag는 제 1 패스에 포함된다.
* gt2_flag는 전혀 코딩되지 않습니다.
* 추가 gtx_flag가 코딩된다.
즉, 제 3 실시 예의 경우, 제 1 미리 결정된 플래그 유형의 플래그(92), 즉 sig_flag 및 제 2 미리 결정된 플래그 유형의 플래그(96), 즉 par_flag가 있으며, 다른 실시 예와 마찬가지로, 제 1 변환 계수 위치에 대한 양자화 인덱스의 절대 값의 값 영역을 제한하는 플래그가 스캔 순서(62)에서 제 1 변환 계수 위치를 따르는 제 2 변환 계수 위치에 대한 양자화 인덱스의 절대 값의 값 영역을 제한하는 플래그 이전에 코딩/디코딩된다. 즉, 모든 sig_flag[k] 및 par_flag[k]는 모든 sig_flag[k + 1] 및 par_flag[k + 1] 이전에 코딩/디코딩된다. 그러나, 도 13의 경우에서와 달리, 제 2 미리 결정된 플래그 유형의 플래그, 즉 par_flag의 코딩/디코딩은 제 1 패스(601)에서 중단 기준은 스캔 순서(62)를 따라 처음으로 만족하면, 예를 들어, 제 1 패스(601)에서 코딩된 플래그의 수가 특정 임계 값을 초과하면, 도 18에서 "startIdxBypass-1"에 의해 인덱싱된, 미리 결정된 변환 계수 위치(112)까지 수행되는 반면, 제 1 미리 결정된 플래그 유형의 플래그, 즉 sig_flag의 코딩/디코딩은 중단 기준을 조사하지 않고, 미리 결정된 변환 계수 위치(112)를 지나, 즉 예를 들어 모든 변환 계수에 대해 또는 위치(64)에 대한 제 1 논제로 양자화 인덱스를 제외한 모든 것에 대해, 스캔 순서(62)로 수행된다.
제 4 실시 예는 한 측면에서 제 3 실시 예와 다르다: par_flag 및 gt1_flag의 순서가 바꾼다(이 플래그의 의미는 그에 따라 변경됨). sig_flag가 1이면, 먼저 변환 계수 레벨의 절대 값이 1보다 큰지 여부를 지정하는 gt1_flag가 먼저 전송된다. 그리고 gt1_flag가 1이면, par_flag는 나머지의 패리티를 지정한다(즉, 절대 레벨 - 2). 제 1 실시 예에 대해서는 다음이 적용된다:
* 종속 양자화를 위한 상태 머신은 변환 계수 레벨의 패리티에 의해 구동되는데, 즉, 이진 함수 path(level)은 그 인수의 패리티를 반환한다.
* 제 1 패스의 sig_flag에 대한 확률 모델은 상태 변수의 값(및 선택적으로 디코더에서 사용할 수 있는 다른 매개변수, 위 참조)에 따라 선택된다.
제 1 패스 : 스캔 위치에 대한 제 1 패스에서, 다음과 같은 컨텍스트 코딩된 빈이 전송된다.
* 변환 계수가 0과 같지 않은지 여부를 나타내는 sig_flag; sig_flag는 1과 같은 것으로 추론될 수 있는 경우 전송되지 않는다(즉, 예를 들어, 변환 블록에서 제 1 유효 스캔 위치에 대한 경우(x 및 y 좌표로 명시적으로 신호 받은 것).
* sig_flag가 1(코딩되거나 추론된 값)이면, 현재 스캔 위치에 대해 다음이 추가로 전송된다:
o 절대 레벨이 1보다 큰지 여부를 지정하는 gt1_flag
o gt1_flag가 1인 경우, 절대 레벨에서 2를 뺀 패리티를 지정하는 par_flag
* 미리 정의된 최대 수의 컨텍스트 코딩된 빈(아직 코딩되지 않은 sig_flag들을 포함) 수에 도달하면 par_flag 및 gt1_flag의 전송을 건너뛴다. MAX_REG_BINS를 제 1 패스에서 전송할 수 있는 최대 빈 수로 하고 regBins가 여전히 사용 가능한 일반 코딩된 빈 수를 나타내도록 한다. 그러면 다음이 적용된다:
o regBins는 처음에 MAX_REG_BINS에서 제 1 패스에서 전송되는 sig_flag의 수를 뺀 값과 동일하게 설정된다(이 수는 제 1 패스에 대한 제 1 스캔 인덱스, 서브블록의 마지막 스캔 인덱스 및 서브블록이 스캔 순서에서 제 1 유효 계수를 포함하는지 여부에 대한 정보에 의해 주어진다).
o gt1_flag 또는 par_flag를 코딩한 후, regBins는 1 씩 감소한다.
o 스캔 위치에 대해 빈(sig_flag 및 sig_flag이 1이면 gt1_flag, par_flag)을 전송한 후, 여전히 사용 가능한 빈 regBins의 수가 2 미만이면(즉, 다음 스캔 위치에 대해 par_flag 및 gt1_flag를 전송할 수 없음), 제 1 스캔 패스의 모든 후속 스캔 인덱스에 대해 sig_flag만 전송된다.
제 2 패스 : 스캔 위치에 대한 제 2 패스에서 다음과 같은 컨텍스트 코딩된 빈이 전송된다:
* 스캔 위치에 대한 gt1_flag가 1이면, gt2_flag가 전송되어 나머지((absolute level-2-par_flag)/2)에 의해 제공됨)가 0보다 큰지 여부를 지정한다
* 제 2 패스는 컨텍스트 코딩된 gt2_flag의 미리 정의된 최대 개수가 전송된 경우 종료된다. 제 1 패스에서 1과 같은 skip_flag만 전송된 스캔 위치에 도달하면 제 2 패스도 종료된다(즉, 이러한 스캔 위치에 대해서는 제 2 패스에서 데이터가 전송되지 않음).
제 3 패스 : 스캔 위치의 제 3 패스에서, 절대 레벨에 대한 나머지(즉, 전송된 sig_flag, par_flag, gt1_flag 및 gt2_flag에 의해 아직 지정되지 않은 데이터)가 sig_flag 및 gt1_flag 및 par_flag가 패스 1에서 코딩된 모든 스캔 위치에 대해 전송된다. 비 이진 구문 요소 나머지는 구조화된 코드(예를 들어, 골룸 라이스 코드)를 사용하여 이진화되고 빈은 산술 코딩 엔진의 우회 모드에서 코딩된다. 나머지는 다음 스캔 위치에 대해 전송된다:
* 제 2 패스에서 1과 같은 gt2_flag가 전송되는, 모든 스캐닝 위치에 대해:
이들 스캐닝 위치에 대해, 전송된 비 이진 구문 요소 나머지는 다음을 지정한다:
(절대 값 - 4 - par_flag)/2
* 제 1 패스에서는 1과 동일한 gt1_flag가 전송되었지만 제 2 패스에서는 gt2_flag가 전송되지 않는, 모든 스캐닝 위치에 대해: 이들 스캐닝 위치에 대해서는, 전송된 비 이진 구문 요소 나머지는 다음을 지정한다:
(절대 값 - 2 - par_flag)/2
제 4 패스: 제 4 패스에서, 1과 동일한 sig_flag 만 제 1 패스에서 코딩되는(gt1_flag는 전송되지 않음), 모든 스캔 위치에 대해 절대 레벨에서 1을 뺀 값이 코딩된다. 나머지(절대 레벨에서 1을 뺀 값)는 먼저 구조화된 코드를 사용하여 이진화되고, 사용되는 코드는 현재 상태 변수의 값뿐만 아니라 로컬 활동 계측에 따라 달라질 수 있다. 빈은 산술 코딩 엔진의 우회 모드를 사용하여 전송된다.
제 5 패스: 마지막으로, 제 5 패스에서, 0과 같지 않은 모든 변환 계수 레벨에 대한 부호가 전송된다. 부호는 산술 코딩 엔진의 우회 모드에서 전송된다. 도 19의 의사 코드는 서브블록 내부의 변환 계수 레벨의 코딩 프로세스를 더 예시한다. 제 1 및 제 3 실시 예에 대한 것과 동일한 설명이 적용된다. 도 17과 도 15는 도 19에도 유효하고, 이 때 도 15에서, 나머지가 위치(112와 116) 사이의 계수와 관련된 값 영역의 시작, 플래그(92, 96 및 98)을 사용하여 표현할 수 있는 최대 값이 도 13의 경우 2이고 도 19의 경우 1이다.
실시 예 4의 경우, 실시 예 3과 동일한 변형이 가능하다. 이것은(실시 예 2와 유사한) 다음 측면을 포함한다:
* gt2_flag는 제 1 패스에 포함된다.
* gt2_flag는 전혀 코딩되지 않습니다.
* 추가 gtx_flag가 코딩된다.
다음 양태는 위에서 설명된 임의의 실시 예와 결합될 수 있다:
sig_flag의 확률 모델 선택
현재 sig_flag를 코딩하기 위한 적응 확률 모델은 확률 모델 세트 중에서 선택된다. 단순화를 위해 사용 가능한 확률 모델이 4 차원 배열로 구성되어 있다고 가정한다.
probModelSig[cSig][sSig][dSig][aSig],
여기서 cSig는 현재 색상 채널에 따라 달라지는 인덱스를 지정하고, sSig는 상태 변수에 의존하는 인덱스를 지정하고, dSig는 변환 블록 내부의 x 및 y 위치에 따라 달라지는 인덱스를 지정하고, aSig는 로컬 활동 측정에 의존하는 인덱스를 지정한다. 확률 모델의 실제 구성은 실제 구현의 한 측면이다. 이것은, 예를 들어 1 차원 배열로 구성될 수 있으며, 이 경우 결합된 인덱스는 cSig, sSig, dSig 및 aSig의 값을 기반으로 파생될 수 있다. 다음에서는 인덱스 cSig, sSig, dSig 및 aSig를 파생하는 예제 방법을 설명한다. 그러나 이러한 인덱스 (또는 인덱스의 일부)를 파생하는 다른 방법이 가능하다는 점에 유의해야 한다:
컬러 채널 인덱스 cSig
바람직한 실시 예에서, 컬러 채널 인덱스 cSig는 현재 컬러 채널이 루마 채널 (또는 보다 일반적으로 제 1 컬러 채널)을 나타내는 경우에만 0으로 설정된다. 현재 색상 채널이 크로마 채널을 나타내는 경우 (또는 일반적으로 제 1 컬러 채널이 아닌 경우) 및 이 경우에만 cSig는 1로 설정된다:
cSig =(현재 채널은 luma? 0 : 1)
대안으로, cSig는 루마 채널의 경우 0, Cb 채널의 경우 1, Cr 채널의 경우 2와 동일하게 설정할 수 있다.
상태 인덱스 sSig
바람직한 실시 예에서, 인덱스 sSig는 다음과 같이 설정된다:.
이것은 한 세트의 확률 모델은 0과 1과 같은 상태 변수에 사용되며, 제 2 세트는 2와 같은 상태 변수에 사용되며, 제 3 세트는 3과 같은 상태 변수에 사용되는 것을 의미한다.
대안으로, 인덱스 sSig는 상태 변수(sSig = state)와 동일하게 설정될 수 있으며, 이 경우 상태 변수의 가능한 각 값마다 별도의 확률 모델 세트가 사용된다. 또는 다른 대안으로, sSig 인덱스를 sSig = state >> 1에 따라 설정할 수 있고, 이 경우 두 개의 양자화기 Q0 및 Q1 각각에 대해 별도의 컨텍스트 모델 세트가 사용된다(상태가 0 또는 1과 같을 때 양자화기 Q0이 사용되고 상태가 2 또는 3과 같을 때 양자화기 Q1이 사용된다는 점에 유의한다).
위치 인덱스 dSig
바람직한 실시 예에서, 인덱스 dSig는 다음과 같이 설정된다:
* 인덱스 cSig가 0인 경우(즉, 현재 컬러 채널이 루마 채널을 나타냄), dSig는 다음에 따라 설정된다:
* 인덱스 cSig가 1인 경우(즉, 현재 컬러 채널이 크로마 채널을 나타냄), dSig는 다음에 따라 설정된다:
이 diag는 diag = x + y로 주어진 대각선 위치를 나타내고, 여기서 x 및 y는 변환 블록 내 현재 스캔 위치의 x 및 y 좌표를 나타낸다. 또는 대각선 위치의 다른 클러스터링이 가능하다. 또는, 변환 블록 내의 (x, y) 위치는 여러 클래스로 분할될 수 있고 인덱스 dSig는 해당 클래스 인덱스와 동일하게 설정될 수 있다.
로컬 활동 인덱스 aSig
마지막으로, 본 발명의 바람직한 실시 예에서, 인덱스 aSig는 다음에 따라 설정된다:
aSig = min(MAX_ABS1, sumAbs1),
여기서 MAX_ABS1은 미리 정의된 값이고 sumAbs1은 제 1 패스에서 전송된 데이터에 의해 제공되는 로컬 템플릿의 최소 절대 변환 계수 레벨의 합을 나타낸다(위 참조). 또는, sumAbs1의 함수 또는 min(MAX_ABS1, sumAbs1)의 함수는 aSig를 도출하기 위해 사용될 수 있다.
본 발명의 바람직한 실시 예에서, 미리 정의된 값 MAX_ABS1은 5와 동일하게 설정된다.
본 발명의 바람직한 실시 예에서, 도 12b에 도시된 로컬 템플릿이 사용된다. 템플릿은 현재 위치 이전에 코딩된 인접 위치를 포함한다는 것에 유의한다. 이러한 속성(현재 위치 이전에 스캔/코딩된 인접 위치)과 함께 다른 로컬 템플릿을 사용할 수도 있다. 이러한 다른 템플릿은 두 가지 측면에서 도 12b에 도시된 템플릿과 다를 수 있다: (1) 포함된 변환 계수 위치의 수 및 (2) 포함된 변환 계수 위치의 위치.
absLevel1[i]를 스캔 인덱스 i에서 변환 계수 레벨의 부분적으로 복원된 절대 값이라고 하고 T(k)를 현재 스캔 인덱스 k에 사용되는 템플릿 내부의 스캔 인덱스 세트를 지정한다고 한다. 이 때, 현재 스캔 인덱스 k에 대한 변수 sumAbs1은 다음에 따라 파생된다:
즉, sumAbs1은 템플릿 내에서 부분적으로 복원된 절대 값의 합을 나타낸다.
absLevel1[k]는 스캐닝 인덱스 k에서 변환 계수 레벨의 부분적으로 복원된 절대 값을 나타낸다. 부분 복원은 제 1 패스에서 전송된 데이터만 사용한다. 이하에서 몇 가지 예가 지정된다.
* sig_flag, par_flag 및 gt1_flag가 실시 예 1 및 실시 예 3에서 정의된 바와 같이 제 1 패스에서 전송되는 경우(상기 참조: par_flag는 절대 레벨에서 1을 뺀 값의 패리티를 지정하고 gt1_flag는 (절대 레벨 - 1 - par_flag)/2가 0보다 큰지 여부를 지정하고는 경우, 부분 복원된 값은 다음에 따라 파생될 수 있다.
absLevel1[k] = sig_flag[k]+par_flag[k]+2*gt1_flag[k]
여기서 명시적으로 코딩되지 않은 par_flag 및 gt1_flag의 값은 0과 같은 것으로 추론된다.
gt2_flag는 제 1 패스(실시 예 1 및 3의 변형)에 포함되면, 최소 가능한 절대 값을 유도하기 위해 추가로 사용할 수 있다. 이 경우 부분 복원 값은 다음에 따라 도출될 수 있다:
absLevel1[k] = sig_flag[k]+par_flag[k]+2*(gt1_flag[k]+gt2_flag[k])
여기서 명시적으로 코딩되지 않은 gt2_flag는 0과 같은 것으로 추론된다.
* sig_flag, gt1_flag 및 par_flag가 실시 예 2 및 실시 예 4에서 정의된 바와 같이 제 1 패스에서 전송되는 경우 (상기 참조: gt1_flag는 절대 레벨이 1보다 큰지 여부를 지정하고 par_flag는 (절대 레벨-2)의 패리티를 지정함), 부분 복원된 값은 다음에 따라 파생될 수 있다:
absLevel1[k] = sig_flag[k]+gt1_flag[k]+par_flag[k].
여기서 명시적으로 코딩되지 않은 par_flag 및 gt1_flag의 값은 0과 같은 것으로 추론된다.
gt2_flag는 제 1 패스에 포함되면(실시 예 2 및 4의 변형), 가능한 최소 절대 값을 유도하기 위해 추가로 사용할 수 있다. 이 경우 부분 복원 값은 다음에 따라 도출될 수 있다:
absLevel1[k] = sig_flag[k]+g1_flag[k]+par_flag[k]+2*gt2_flag[k]
여기서 명시적으로 코딩되지 않은 gt2_flag의 값은 0으로 추론된다.
* 제 1 패스에서 sig_flag 및 par_flag 만 코딩된 경우, 부분 복원된 값은 다음에 따라 파생될 수 있다:
absLevel1[k] = sig_flag[k] + par_flag[k]
* 제 1 패스에서 sig_flag만 코딩된 경우, 부분 복원된 값은 다음에 따라 파생될 수 있다:
absLevel1[k] = sig_flag[k]
부분 복원은 다른 구성에 대해서도 유사한 방식으로 지정할 수 있다.
par_flag, gt1_flag 및 gt2_flag에 대한 확률 모델 선택
현재 par_flag를 코딩하기 위한 적응 확률 모델은 일련의 확률 모델 중에서 선택된다. 유의성 플래그와 마찬가지로, 사용 가능한 확률 모델이 4 차원 배열로 구성되어 있다고 가정한다
probModelPar[cPar][sPar][dPar][aPar],
여기서 cPar는 현재 컬러 채널에 따라 달라지는 인덱스를 지정하고, sPar는 상태 변수에 의존하는 인덱스를 지정하고, dPar는 변환 블록 내의 x 및 y 위치에 따라 달라지는 인덱스를 지정하고, aPar는 로컬 활동 계측에 의존하는 인덱스를 지정한다.
gt1_flag 및 par_flag에도 동일한 개념이 사용된다.
probModelGt1[cGt1][sGt1][dGt1][aGt1],
probModelGt2[cGt2][sGt2][dGt2][aGt2]
바람직한 실시 예에서, 3 개의 플래그 par_flag, gt1_flag 및 gt2_flag에 대해 동일한 인덱스가 사용된다. 이는 인덱스(또는 결합된 인덱스)가 스캔 인덱스 당 오직 한번 계산하면 된다는 장점이 있다:
cGt2 = cGt1 = cPar
sGt2 = sGt1 = sPar
dGt2 = dGt1 = dPar
aGt2 = aGt1 = aPar
인덱스가 동일하더라도, par-flag, gt1_flag 및 gt2_flag의 세 플래그에 대해 여전히 여러 다른 세트의 확률 모델이 사용된다. 다른 실시 예에서, 동일한 세트의 확률 모델이 gt1_flag 및 gt2_flag 모두에 사용된다(이 경우, 각 샘플 위치에 대해, gt1_flag 및 gt2_flag는 항상 동일한 확률 모델로 코딩된다). 개별 플래그에 대한 인덱스를 파생하는 다른 방법을 사용할 수도 있다. 이하에서, 인덱스 cPar, sPar, dPar 및 aPar의 파생을 예로 설명한다. 동일한 방법이 gt1_flag 및 gt2_flag의 해당 인덱스에도 적용된다.
컬러 채널 인덱스 cPar
유의성 플래그와 유사하게, 바람직한 실시 예에서, 색상 채널 인덱스 cSig는 다음에 따라 설정된다:
cPar =(현재 채널은 luma? 0 : 1)
또는 cSig에 대해 위에서 설명한 대안을 사용할 수 있다.
상태 인덱스 sPar
바람직한 실시 예에서, 인덱스 sPar는 0으로 설정된다. 이것은 선택한 확률 모델이 상태 변수에 의존하지 않는 것을 의미한다. 따라서 확률 모델 집합은 3 차원 배열
probModelPar[cPar][dPar][aPar],
probModelGt1[cGt1][dGt1][aGt1],
probModelGt2[cGt2][dGt2][aGt2]
또는 결합된 인덱스로 표현될 수 있으며 cPar, dPar 및 aPar의 3 가지 인덱스를 사용하여 파생될 수 있다. 또는 sPar에 대해 위에서 설명한 방법 중 하나를 사용할 수 있다.
위치 인덱스 dPar
바람직한 실시 예에서, 인덱스 dPar는 다음과 같이 설정된다 :
* 인덱스 cPar가 0이면(즉, 현재 색상 채널이 루마 채널을 나타냄), dPar는 다음에 따라 설정된다:
* 인덱스 cPar가 1이면(즉, 현재 컬러 채널이 크로마 채널을 나타냄), dPar는 다음에 따라 설정된다:
이 diag는 diag = x + y로 주어진 대각선 위치를 나타내고, 여기서 x 및 y는 변환 블록 내 현재 스캔 위치의 x 및 y 좌표를 나타낸다. 부울 변수 firstNonZero는 현재 스캔 위치가 코딩 순서에서 0이 아닌 제 1 논제로 레벨의 스캔 위치를 나타내는지 여부를 지정한다(즉, 코딩된 블록 플래그 이후에 전송되는 x 및 y 좌표(또는 유사한 수단)로 식별되는 위치). 따라서 코딩 순서에서 제 1 논제로 레벨에 대해, 상이한 세트의 확률 모델이 (대각선 위치와 무관하게) 사용된다.
또는 대각선 위치의 다른 클러스터링이 가능하다. 또는 변환 블록 내의 (x, y) 위치는 여러 클래스로 분할될 수 있고 인덱스 dPar는 해당 클래스 인덱스와 동일하게 설정될 수 있다. 또한 이러한 설정의 경우, 제 1 중요한 스캔 위치에 dPar의 특수 값을 사용할 수 있다.
로컬 활동 인덱스 aPar
마지막으로, 본 발명의 바람직한 실시 예에서, 인덱스 aPar는 다음에 따라 설정된다:
aPar = min(MAX_ABS1_SIG, sumAbs1-numSig),
여기서 MAX_ABS1_SIG는 사전 정의된 값이고, sumAbs1은 제 1 패스에서 전송된 데이터에 의해 제공된 로컬 템플릿의 최소 절대 변환 계수 레벨의 합을 나타내고(위 설명 참조), numSig는 로컬 템플릿에서 논제로 레벨의 수를 지정한다.
본 발명의 바람직한 실시 예에서, 미리 정의된 값 MAX_ABS1_SIG는 4와 동일하게 설정된다.
본 발명의 바람직한 실시 예에서, 도 12b에 도시된 로컬 템플릿이 사용된다. 템플릿이 현재 위치 이전에 코딩된 인접 위치를 포함하는 것에 유의해야 한다. 이러한 속성(현재 위치 이전에 스캔/코딩된 인접 위치)과 함께 다른 로컬 템플릿을 사용할 수도 있다. 이러한 다른 템플릿은 두 가지 측면에서 도 12b에 표시된 템플릿과 다를 수 있다: (1) 포함된 변환 계수 위치의 수 및 (2) 포함된 변환 계수 위치의 위치.
T(k)가 현재 스캔 인덱스 k에 사용되는 템플릿 내부의 스캔 인덱스 세트를 지정하도록 한다. 변수 sumAbs1은 sig_flag(sec. 0)에 대해 위에 지정된대로 파생되고 현재 스캔 인덱스 k에 대한 numSig는 다음에 따라 파생된다:
즉, numSig는 템플릿 내에서 논제로 변환 계수(sig_flag가 1로 표시됨)의 수를 나타낸다.
대안으로 sumAbs1 및 numSig의 상이한 최대 값 또는 상이한 함수를 사용할 수 있다.
나머지의 이진화(완전히 우회된 계수 제외)
본 발명의 바람직한 실시 예에서, 구문 요소 나머지는 산술 코딩 엔진의 우회 모드에서 코딩된다. 압축 효율성은 사용된 이진화에 따라 다르다. HEVC에서, 유사한 구문 요소는 골룸 라이스 코드라고하는 이진화 코드 클래스를 사용하여 코딩된다. 이 코드 클래스는 소위 라이스 매개변수에 의해 매개변수화된다. 라이스 매개변수는 코딩 중에 조정될 수 있으므로, 사용된 이진화는 이전 구문 요소에 따라 달라진다.
본 발명의 바람직한 실시 예에서, 구문 요소 나머지는 소위 골룸 라이스 코드를 사용하여 이진화된다. 골룸 라이스 코드는 접두사 부분 및 코딩될 값이 미리 정의된 임계 값을 초과하는 경우, 접미사 부분으로 이루어진다. 접두사 부분은 절삭된 라이스 코드(HEVC 참조)를 나타내며, 이는 라이스 매개변수(RP)와 최대 기호 값(cMax)으로 매개변수화된다. 코딩될 값(나머지)이 cMax보다 크거나 같으면 접미사 빈 문자열이 접두사 빈 문자열에 추가된다. 접미사 빈 문자열은 kEG 순서의 지수 골룸 코드로 제공된다. 단일 매개변수로 연결된 코드를 매개변수화하기 위해 사용된 cMax 및 kEG의 값은 라이스 매개변수(RP)의 함수를 나타낸다. 특정 설정에서, cMax 및 kEG(지수 골룸 코드의 순서)는 다음에 따라 파생된다:
cMax(RP) 및 kEG(RP)에 대한 다른 기능적 관계가 가능하다. 또한 다른 매개변수화된 구조 코드 세트를 사용할 수 있다.
이하에서, 라이스 매개변수(RP) 또는 상이한 코드 클래스에 대해 유사한 매개변수를 적용하는 두 가지 방법이 설명된다.
방법 1 : 마지막으로 코딩된 값(또는 마지막 절대 레벨)이 임계 값을 초과하는 경우 RP를 증가시킴
서브블록(또는 변환 블록)의 시작 부분에서, 라이스 매개변수 RP는 미리 정의된 값과 동일하게 설정된다. 특정 실시 예에서, 미리 정의된 값은 0과 같다. 구문 요소 나머지를 디코딩(또는 인코딩) 한 후에, 라이스 매개변수는 다음에 따라 업데이트된다:
이때 MAX_RP는 최대 라이스 매개변수에 대해 미리 정의된 값을 나타낸다. 바람직한 실시 예에서, MAX_RP는 3으로 설정된다. Threshold(RP) 함수는 라이스 매개변수의 현재 값에 따라 달라지는 임계 값을 나타낸다. 바람직한 실시 예에서, 이 함수는 다음과 같이 정의된다:
Threshold(RP) =(3<<RP) - 1
여기에서 연산자 "<<"는 오른쪽으로 약간 이동하는 것을 나타낸다. 즉, "3 << RP"는 3*2^RP와 동일하다.
Threshold(RP)를 예를 들어 룩업 테이블로서 다르게 임의적으로 정의하는 것이 가능하다.
방법의 변형에서, 코딩된 값 나머지가 아닌, 복원된 절대 레벨 absLevel이 임계 값과의 비교를 위해 사용된다. 이 때, 라이스 매개변수는 다음에 따라 업데이트된다.
if(RP < MAX_RP && absLevel > Threshold(RP))
{
RP = RP + 1
}
방법 2 : 로컬 인접의 절대 레벨을 기반으로 RP 결정
바람직한 구성에서, 라이스 매개변수는 로컬 템플릿에 포함된 인접 레벨의 절대적 합을 사용하여 파생된다. sumAbs를 로컬 템플릿에 있는 절대 값의 합이라고한다. 바람직한 실시 예에서, sig_flag에 대한 컨텍스트 모델을 유도하기 위해서 같이 동일한 템플릿이 사용된다.
라이스 매개변수 RP는 sumAbs(즉, 로컬 템플릿의 절대 값 합계)에 따라 파생된다. 특히 바람직한 구체 예에서, 라이스 매개변수 RP는 다음에 따라 유도된다.
다른 구성에서는 Rice 매개변수를 전환하기 위한 임계 값을 수정할 수 있다. 또는 Rice 매개변수는 로컬 템플릿의 다른 활동 계측을 기반으로 파생될 수 있다. 또한 Rice 매개변수가 서브블록 내에서 작아지는 것을 허용하지 않도록 추가로 지정할 수 있다.
우회 모드에서 절대 레벨의 이진화
본 발명의 바람직한 실시 예에서, (즉, 실시 예 1 및 2의 제 4 패스에 대해) 우회 모드에서 완전히 코딩된 절대 레벨에 대해 상이한 이진화가 사용된다.
바람직한 구성에서는, 상기 설명한 동일한 클래스의 골룸 라이스 코드가 사용되지만 라이스 매개변수는 다른 방식으로 파생된다. 본 발명의 바람직한 실시 예에서, 라이스 매개변수는 로컬 인접의 절대 값의 합과 상태 변수(종속 양자화에 사용됨) 둘 모두에 의존한다. 이 종속성 RP(sumAbs, state)는 2 차원 룩업 테이블로 설명될 수 있다. 이때, 절대 값의 합은 일반적으로 룩업 테이블에 액세스하기 전에 최대 값 MAX_SUM_ABS으로 클립된다. 이것은, 라이스 매개변수는 다음에 의해 유도되는 것을 의미한다:
RP = LookupTable[state ][ min(MAX_SUM_ABS, sumAbs)]
여기서 LookupTable은 미리 정의된 룩업 테이블을 지정한다.
이 방법의 변형에서 절대 레벨 absLevel은 파생된 라이스 매개변수에 의해 결정된 코드에 의해 직접 코딩되는 것이 아니고, 다음이 적용된다: 절대 값 absLevel은 먼저 값 codeValue로 변환되고 다음에 codeValue는 라이스 매개변수 RP에 지정된 골룸 라이스 코드를 사용하여 전송된다.
예를 들어, 코드 값 codeValue는 다음에 따라 결정된다:
zPos 매개변수는 다음 방법 중 하나로 파생된다.
* zPos는 로컬 인접의 절대 값 sumAbs의 합의 함수로 파생된다.
* zPos는 상태 변수의 함수로 파생된다.
* zPos는 상태 변수 및 로컬 인접의 절대 값 sumAbs의 합의 함수로 파생된다.
라이스 매개변수의 파생에 대해서와 동일한 sumAbs 값이 사용된다. sumAbs의 값도 또한 라이스 매개변수의 파생에 대해서와 동일한 최대 값 MAX_SUM_ABS로 클립된다. 상태 변수 및/또는 클립된 값 min(MAX_SUM_ABS, sumAbs)에서 zPos의 종속성은 사전 정의된 룩업 테이블에서 지정할 수 있다.
즉, 현재 스캔된 변환 계수 위치에 대한 나머지 값을 코딩/디코딩하기위한 가변 길이 코드는 RP에 의해 서로 다른 골룸 라이스 코드 세트와 같이, 미리 정의된 세트의 가변 길이 코드 중에서 선택될 수 있다. 선택은 나머지가 코딩/디코딩될 현재 스캔된 변환 계수 위치가 미리 결정된 변환 계수 위치(112)까지에 위치하는지 또는 스캔 순서(62)에서 그 하류측에 위치하는지에 따라 행해지는데, 즉, 전자와 후자의 경우 서로 다른 RP가 선택된다. 위에서 설명한 방법 1과 2에 따르면, 선택된 가변 길이 코드를 나타내는 RP 매개변수는 일반적으로 패스(603,4) 동안 일정하게 유지될 수 있지만, 방법 1에서와 같이 일부 제한을 초과하는 것과 같이 미리 결정된 기준을 충족하는 바로 이전에 디코딩/코딩된 변환 계수의 양자화 인덱스에 따라, 또는 일부 제한을 초과하는 합과 같은 일부 표준을 만족하는 현재 스캔된 변환 계수 위치 근처의 계수 위치에서의 양자화 인덱스에 따라 증가하게 변경된다. 이 종속성 또는 증가 변경은, 예를 들어 나머지가 코딩된 현재 변환 계수 위치가 미리 결정된 변환 계수 위치(112)까지, 즉 도 15의 모든 해칭 위치에 위치하는 경우에만 사용된다. 인접 계수의 양자화 인덱스 외에도, 종속 양자화 상태는 이진화 코드 매개변수를 선택하는 데 사용될 수 있다.
다음의 측면은, 전술한 실시 예와 결합될 수 있지만, 코딩 효율을 증가시키기 위해 상기 실시 예들로 다르게 구현될 수 있다. 이 측면은 절대 값이 1보다 큰 변환 계수 레벨을 포함하지 않는 블록/서브블록의 명시적 시그널링과 관련된다.
변환 계수 레벨을 코딩하기 위한 빈의 수를 줄이기 위해서, 블록 또는 서브블록의 절대 레벨이 1보다 큰지 여부를 신호 보내는 전용 플래그가 변환 블록 또는 서브블록 단위로 도입된다:
* coded_subblock_flag가 1(코딩 또는 추론)인 서브블록의 경우, 제 2 플래그가 서브블록에 대해 전송된다. 이 플래그(gt1_subblock_flag)는 서브블록이 1 보다 큰 절대 레벨을 갖는 변환 계수 레벨을 포함하는지 여부를 지정한다.
* gt1_subblock_flag가 0이면, 0이 아닌 변환 계수 레벨에 대한 부호 비트 및 유의 정보(sig_flag)만이 전송된다.
* gt1_subblock_flag가 1 인 경우, 변환 계수 레벨의 코딩은 실시 예 1 내지 4에서 설명한 바와 같이 진행된다. 서브블록의 마지막 스캔 인덱스에 도달하고 서브블록의 모든 이전 절대 레벨이 1과 같을 때, 마지막 절대 레벨이 1보다 크다고 추론될 수 있다는 추가 조건을 포함할 수 있다. 따라서 해당 gt1_flag는 1과 같다고 유추할 수 있다. 실시 예 1 및 3의 경우, 패리티 플래그 par_flag도 이 경우 0과 같은 것으로 추론될 수 있다.
모든 레벨의 절대 값이 1임을 지정하는 플래그는 서브블록을 기반으로 하는 대신에, 전체 변환 블록에 대해 전송될 수 있다. 선택된 서브블록(예를 들어, 제 1 유효 계수를 포함하는 서브블록)에 대해서만이 플래그를 전송할 수도 있다.
즉, 여기서 변환 계수 블록(10)은 다음과 같은 방식으로 코딩/디코딩된다. 변환 계수 블록(10)이 분할되는 적어도 한 세트의 서브블록(14) 각각에 대해, 서브블록 중요도 플래그, 즉 gt1_subblock_flag은 각 서브블록(14)이 임의의 변환 계수(12)를 포함하는지 여부를 나타낸다. 1과 같이 미리 결정된 논제로 임계 값보다 큰 양자화 인덱스의 절대 값이 전송된다. 서브블록 중요도 플래그가 양자화 인덱스의 절대 값이 미리 결정된 0이 아닌 임계 값보다 큰 적어도 하나의 변환 계수가 있음을 나타내는 각 서브블록(14) 내의 변환 계수 블록의 변환 계수들은, 즉, 하나 이상의 플래그(92, 96, 98, 194) 또는 각각의 변환 계수의 값 영역을 2 개의 파티션으로 재귀적으로 이중 분할하고, 2 개의 파티션 중 각각의 변환 계수의 양자화 인덱스가 있는 부분을 나타내는 다른 플래그의 시퀀스를 각각의 서브블록 내의 변환 계수 각각에 대해 순차적으로 코딩/디코딩하고, 값 영역이 단지 하나의 값, 또는 값 영역이 부호있는 값을 정의하는 것으로 해석되는 경우 절대적인 의미에서 동일한 값들을 포함하는 즉시 시퀀스 디코딩을 중지함으로써, 상술된 바와 같이 코딩/디코딩된다.
값 영역이 여전히 절대적인 의미에서 다른 하나 이상의 값을 포함한다면, 값 영역에서 각각의 변환 계수의 양자화 인덱스의 절대 값을 나타내는 나머지 값이 코딩/디코딩된다. 그러나, 서브블록 중요도 플래그가 양자화 인덱스의 절대 값이 미리 결정된 0이 아닌 임계 값보다 큰 변환 계수가 없음을 나타내는 각 서브블록 내에서, 각각의 서브블록 내의 각 변환 계수에 대한 하나 이상의 플래그 시퀀스의 순차적인 디코딩은, 값 영역이 논제로 임계 값을 초과하지 않는 하나의 값만 포함하거나, 하나의 값 또는 단순히 절대적인 의미에서 동일한 값을 포함하는 즉시 정지된다. 제 1 중지 기준은 다음과 같은 사실에서 비롯된다: 각각의 계수에 대해 이전에 코딩된/디코딩된 플래그에 의해 결정된 잔차 값 영역 또는 잔차 값 간격이 각 서브블록의 모든 계수의 인덱스가 미리 결정된 논제로 임계 값을 초과하지 않는 것에 따라 서브블록 중요도 플래그에 의해 제시된 요구 사항을 충족하는 하나의 값을 포함하는 즉시, 이 값 영역의 한 값은 양자화 인덱스이다.
따라서, 무엇보다도 이하의 실시 예가 위에서 설명되었다.
A1. 변환 계수의 블록을 디코딩하기 위한 장치가 제공되고, 상기 장치는 데이터 스트림으로부터, 스캔 순서를 따라 상기 블록의 변환 계수 위치를 스캔하는 패스의 시퀀스에서, (패스는 변환 블록의 모든 변환 계수 위치를 스캔할 필요가 없지만, 모두 스캔 순서를 사용하고, 또한 일부 플래그 유형에 대한 플래그는 동일한 패스로 전송될 수 있는 것에 유의함), 컨텍스트 적응 이진 산술 디코딩을 사용하여, 1) 각각 하나 이상의 플래그 유형의 세트에 속하는 플래그, (예를 들어, 실시 예 1: sig_flag, par_flag, gt1_flag, gt2_falg) 및 가변 길이 코드를 사용하여, (예를 들어, 압축률 1을 사용하여; 우회 모드에서 전송되고; 위에서 설명한 것처럼 VLC 코드 워드 빈이 산술 코딩 엔진을 사용하여 코딩될 수 있지만, 이를 상황에 적응적으로 수행하는 대신에, (0.5; 0.5) 확률 우회 모드를 사용하여 수행되고, - 달리 말해 이진화 및 비 적응 이진 산술 디코딩 또는 균일한 확률 모델을 갖는 바이 패스 모드가 이러한 VCL 빈에 사용됨) 나머지 값을 디코딩하도록 구성되어, 각 플래그 및 각 나머지 값이 각각 현재 스캔된 변환 계수 위치에 대해 디코딩되도록 하고, (예를 들어, 실시 예 1, 인덱스 k), 코딩된 세트의 변환 계수 위치의 각 변환 계수 위치에 대해, (예를 들어, 미리 정의된 첫 번째 변환 계수 위치와 미리 정의된 마지막 변환 계수 위치 사이에서 연장되고, 여기서 미리 정의된 첫 번째 및 마지막 변환 계수 위치는 변환 블록에서 변환 계수 위치의 서브 세트를 지정하고; 다르게, 마지막 논제로 계수와 DC 계수와 같은 미리 정의된 계수 사이에서 연장됨), 상기 하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나(즉, 하나의 나머지 및 플래그 없음, 하나 이상의 플래그 및 하나의 나머지 또는 하나 이상의 플래그 및 나머지 없음)가 순차적으로 디코딩되어 값 도메인 내에서 (즉, 특정 변환 계수 위치에 대해 디코딩된 "하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나"는 후자를 초기 값 도메인에서 고유하게 정의함), 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값이 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값을 단지 포함하기 위해 있는, 초기 값 영역(예를 들어, x 비트 표시 -> Ω = 0 내지 2x-1, 예를 들어, x=16)으로 제한하도록 하고 - 각각의 플래그는 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값의 값 영역을, 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값의 상기 값 영역을 이분할한 제 1 부분 또는 제 2 부분으로 제한하고 (예를 들어, sig_flag: 값 영역 Ω이 A={0} 및 으로 분할되면, par_flag은 를 짝수 또는 홀수 값으로 제함함), 상기 현재 스캔된 변환 계수 위치에 대한 나머지 값이 디코딩되면, (다음 두 가지 대안은 일부 변환 계수 위치에 대해 단지 나머지가 코딩되는 실시 예 1 및 그러한 변환 계수 위치가 존재하지 않는 실시 예 3을 포함하여 모든 실시 예를 포괄하는 것으로 이해되어야 함) 상기 나머지 값은 상기 현재 스캔된 변환 계수 위치에 대해 적어도 하나의 플래그가 디코딩된 경우 상기 값 영역 중에서, 또는 상기 현재 스캔된 변환 계수 위치에 대해 플래그가 디코딩되지 않은 경우 상기 초기 값 영역 중에서, 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 절대 값을 고유하게 나타냄 - , (나머지 값이 디코딩되지 않은 변환 계수 위치, 이러한 변환 계수 위치에 대해 디코딩된 하나 이상의 플래그는 값 도메인을 단지 하나의 절대 값을 포함하도록 이미 제한했고, 부호에 대해서는, TC에 대해 우회 모드에서 동일하게 코딩될 수 있음), 상기 장치는, (예를 들어, 실시 예 1 내지 4) 상기 스캔 순서를 따라 상태 변이(예를 들어, 격자도)를 사용하여, 1) 현재 변이 계수 위치에 대해, 상기 상태 변이가 상기 현재 변환 계수 위치에 대해 가정한 상태에 기초하여 고유하게 복수의 복원 레벨 세트 중에서 복원 레벨 세트를 선택하고, 상기 양자화 인덱스를 상기 양자화 인덱스가 상기 복원 레벨 세트에서 가리키는 복원 레벨로 역 양자화하고, 2) 상기 현재 변환 계수 위치의 상기 양자화 인덱스에 따라 상기 스캔 순서에서 상기 현재 변환 계수 위치를 뒤따르는 변환 계수 위치에 대해 (이 항은 이제 업데이트의 의도된 목적 또는 효과를 나타냄) 상기 현재 변환 계수 위치에 대해 (이는 종속 양자화 중에 현재 스캔된 것이고; "현재 스캔된" 것은 패스 중에 현재 디코딩된 것을 표시하는 데 사용됨) 가정된 상기 상태 변이의 상기 상태를 업데이트함으로써 코딩된 변환 계수 위치 세트의 변환 계수 위치의 양자화 인덱스를 순차적으로 역 양자화하도록 (즉, 종속 양자화 사용) 구성된다.
A2. 실시 예 B5 또는 A1 중 어느 하나의 장치는, 4 개의 개별 상태 간에서 변이하는 상태 변이를 수행하도록 구성된다.
A3. 실시 예 B5 또는 A1 -A2 중 어느 하나의 장치는, 상기 상태 변이의 상태를 업데이트할 때, 상기 현재 변환 계수 위치의 상기 양자화 인덱스(80)에 적용된 이진 함수(86)에 따라 제 1 후속 상태(841)와 제 2 후속 상태(842) 사이를 결정하여 상기 업데이트를 수행하도록 구성되고, 상기 제 1 후속 상태 및 상기 제 2 후속 상태는 상기 현재 변환 계수 위치에 대한 상기 상태에 의존한다.
A4. 실시 예 B5 또는 A1 -A3 중 어느 하나의 장치에서, 상기 이진 함수는 패리티 또는 0을 생성한다.
A5. 실시 예 B5 또는 A1 -A4 중 어느 하나의 장치는, 미리 결정된 양자화 단계 크기를 통해 상기 복수의 양자화 레벨 세트를 매개변수화하고, 상기 데이터 스트림으로부터 상기 미리 결정된 양자화 단계 크기에 대한 정보를 도출하도록 구성된다.
A6. 실시 예 B5 또는 A1 - A5 중 어느 하나의 장치는, 상기 복수의 양자화 레벨 세트 각각은 상기 복수의 양자화 레벨 세트에 대해 일정한 미리 결정된 양자화 단계 크기의 정수배로 구성된다.
A7. 실시 예 B5 또는 A1 -A6 중 어느 하나의 장치에서, 상기 복수의 양자화 레벨 세트 중 양자화 레벨 세트의 개수는 2이고 상기 복수의 양자화 레벨 세트는, 리 결정된 양자화 단계 크기의 0 및 짝수 배를 포함하는 제 1 양자화 레벨 세트, 및 상기 미리 결정된 양자화 단계 크기의 0 및 홀수 배를 포함하는 제 2 양자화 레벨 세트를 포함한다.
A8. 선행하는 실시 예 A1 - A7 중 어느 하나의 장치에서, 상기 디코더는 (예를 들어, 실시 예 3 및 4) 상기 패스의 시퀀스 중 제 1 패스에서, 스캔 순서(62)에서 상기 제 1 변환 계수 위치를 따르는 제 2 변환 계수 위치에 대한 양자화 인덱스의 절대 값의 값 영역을 제한하는 플래그 이전에 제 1 변환 계수 위치에 대한 양자화 인덱스의 절대 값의 값 영역을 제한하는 플래그가 디코딩되도록 제 1 미리 결정된 플래그 유형(예를 들어, sig_flag)의 플래그 및 제 2 미리 결정된 플래그 유형(예를 들어, par_flag)의 플래그를 상기 데이터 스트림으로부터 디코딩하도록 구성되고, 상기 제 2 미리 결정된 플래그 유형의 상기 플래그의 상기 디코딩은 제 1 패스에서 미리 결정된 중단 기준이 상기 스캔 순서(즉, sig_flag[k+1] 및 part_flag[k+1] 이전의 sog_flag[kl] 및 par_flag[k])에 따라 처음 충족된 미리 결정된 변환 계수 위치(예를 들어, 실시 예 3: startldxBypass-1)까지 이 위치를 포함하여 수행되고 (예를 들어, 제 1 패스에서 코딩된 플래그의 수가 특정 임계 값을 초과함), 상기 제 1 미리 결정된 플래그 유형의 상기 플래그의 상기 디코딩은 상기 미리 결정된 변환 계수 위치(예를 들어, 모든 코드 세트 또는 중단 기준을 조사하지 않고 제 1 논제로 양자화 인덱스를 제외한 모든 경우)를 지나 상기 스캔 순서로 수행되고, 상기 현재 스캔된 변환 계수의 상기 양자화 인덱스를 나타내는 상기 제 1 미리 결정된 플래그 유형(92)의 상기 플래그는 0이거나 0이 아니다(예를 들어, sig_flag).
A9. 실시 예 A8의 장치에서, 상기 제 2 미리 결정된 플래그 유형의 상기 플래그는 상기 현재 스캔된 변환 계수에 대한 상기 양자화 인덱스의 패리티를 나타낸다.
A10. 선행하는 실시 예 A8 - A9의 장치는, 제 1 패스(601)에서 상기 제 1 미리 결정된 플래그 유형(92)의 상기 플래그가 상기 현재 스캔된 변환 계수의 상기 양자화 인덱스가 논제로임을 나타내는 변환 계수 위치 및 그 이후의 변환 계수 위치에 대해 배타적으로 상기 제 2 미리 결정된 플래그 유형(96)의 상기 플래그를 디코딩하도록 구성된다.
A11. 실시 예 A8의 장치에서, 상기 미리 결정된 중단 기준은 제 1 패스(601)에서 디코딩된 플래그의 수가 미리 결정된 임계 값을 초과하는지 여부와 관련된다.
A12. 선행하는 실시 예 A8 - A11 중 어느 하나의 장치는, 상기 제 1 패스(601)에서, 절대 값으로 상기 값 영역에서 가장 작은 값을 가정하거나 그렇지 않은 경우, 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스를 나타내는 제 3 미리 결정된 플래그 유형(98)의 플래그를 또한 디코딩하도록 구성된다.
A13. 실시 예 A12의 장치는, 상기 제 1 패스(601)에서, 상기 제 1 미리 결정된 플래그 유형(92)의 상기 플래그가 상기 현재 스캔된 변환 계수의 상기 양자화 인덱스가 논제로임을 나타내는 변환 계수 위치와 그 이후의 변환 계수 위치에 대해 상기 제 3 미리 결정된 플래그 유형의 상기 플래그를 배타적으로 디코딩하도록 구성된다.
A14. 실시 예 A13의 장치는, (예를 들어, 실시 예 3) 상기 제 1 패스(601)에서, 상기 제 1 미리 결정된 플래그 유형(92)의 상기 플래그가 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스가 논제로임을 나타내는 변환 계수 위치 및 그 이후의 변환 계수 위치에 대해, 상기 제 2 미리 결정된 플래그 유형(96)의 상기 플래그 이후에 상기 제 3 미리 결정된 플래그 유형(98)의 상기 플래그를 디코딩하도록 구성된다.
A15. 실시 예 A13의 장치는, (예를 들어, 실시 예 4) 상기 제 1 패스(601)에서, 상기 제 1 미리 결정된 플래그 유형(92)의 상기 플래그가 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스가 논제로임을 나타내는 변환 계수 위치 및 그 이후의 변환 계수 위치에 대해, 상기 제 3 미리 결정된 플래그 유형(98)의 상기 플래그가 1보다 큰 중요도를 나타내는 변환 계수 위치에 대해 배타적으로 상기 제 2 미리 결정된 플래그 유형(96)의 상기 플래그를 디코딩하도록 구성된다.
A16. 선행하는 실시 예 A8 - A15 중 어느 하나의 장치는, 상기 제 1 패스(601)에 이어 제 2 패스(602)에서, 절대 값으로, 상기 제 1 패스(601)에서 디코딩된 플래그에 의해 제한되는 바와 같이 상기 값 영역에서 가장 작은 값을 가정하거나 그렇지 않은 경우 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스를 나타내는, 제 4 미리 결정된 플래그 유형(104)의 플래그를 또한 디코딩하도록 구성된다.
A17. 실시 예 A16의 장치는, 상기 제 2 패스에 이어 하나 이상의 추가 패스에서 상기 나머지 값을 디코딩하도록 구성된다.
A18. 선행하는 실시 예 A8-A17 중 어느 하나의 장치는, 상기 제 1 패스에 이어 하나 이상의 패스(603, 604)에서 상기 나머지 값을 디코딩하도록 구성된다.
A19. 선행하는 실시 예 A8 - A18 중 어느 하나의 장치는, 마지막 패스(605)에서 논제로 변환 계수의 부호를 디코딩하도록 구성된다.
A20. 선행하는 실시 예 A8 - A19 중 어느 하나의 장치에서, 상기 디코더는 (예를 들어, 실시 예 3, 제 2 대안 "2. 상태 머신은 패리티 기반 상태 머신에서 중요 기반 상태 머신으로 전환된다") 1) 상기 상태 변이에서, 상기 현재의 변환 계수 위치가 상기 각각의 변환 계수 위치에 대해 스캔 순서에서 선행하거나 상기 미리 결정된 변환 계수 위치와 동일한 경우, 상기 각각의 변환 계수 위치의 제 2 플래그 유형(예를 들어, 실시 예 3: par_flag)의 플래그에 따라서, 상기 각각의 변환 계수 위치가 상기 각각의 변환 계수 위치에 대해 스캔 위치에서 상기 미리 결정된 변환 계수 위치를 따라는 경우, 상기 각각의 변환 계수 위치의 제 1 플래그 유형(예를 들어, 실시 예 3: path(level)은 제로 값을 생성함)의 상기 플래그에 따라 상기 상태 변이의 상기 상태의 상기 업데이트를 수행하고, 2) 상기 컨텍스트 적응 엔트로피 디코딩에서, 상기 상태 변이가 상기 현재 스캔된 변환 계수 위치에 대해 가정한 상기 상태에 따라 상기 미리 결정된 변환 계수 위치(112)를 포함하고 이를 따르는, 선행하는 모든 변환 계수 위치에 대해, 상기 현재 스캔된 변환 계수에 대해 제 1 미리 결정된 플래그 유형의 플래그를 디코딩하기 위한 컨텍스트를 결정하도록 구성된다.
A21. 선행하는 실시 예 A8 - A19 중 어느 하나의 장치에서, 상기 디코더는, (예를 들어, 실시 예 3)상기 컨텍스트 적응 엔트로피 디코딩에서, 상기 상태 변이가 상기 현재 스캔된 변환 계수 위치에 대해 가정한 상기 상태와는 독립적으로, 상기 상태 변이가 상기 현재 스캔된 변환 계수 위치 및 상기 미리 결정된 변환 계수 위치(112)를 따르는 상기 변환 계수 위치에 대해 가정하는 상태에 따라, 상기 미리 결정된 변환 계수 위치(112)를 포함하여 이에 선행하는 상기 변환 계수 위치에 대해, 상기 현재 스캔된 변환 계수 위치에 대해 상기 제 1 미리 결정된 플래그 유형(92)의 플래그를 디코딩하기 위한 컨텍스트를 결정하도록 구성된다.
A22. 선행하는 실시 예 A8 - A19 중 어느 하나의 장치에서, 상기 디코더는, (예를 들어, 실시 예 3, 제 1 대안) 1) 상기 컨텍스트 적응 엔트로피 디코딩에서, 상기 상태 변이가 상기 현재 스캔된 변환 계수 위치에 대해 가정한 상기 상태에 따라, 상기 미리 결정된 변환 계수 위치(112)에 대해 선행, 포함 및 뒤따르는 상기 변환 계수 위치 모두에 대해, 상기 현재 스캔된 변환 계수 위치에 대해 상기 제 1 미리 결정된 플래그 유형(92)의 플래그를 디코딩하기 위한 컨텍스트를 결정하고, 2) 상기 상태 변이에서, 상기 각각의 변환 계수 위치의 상기 제 1 플래그 유형(예를 들어, 실시 예 3: path(level)은 제로 값을 생성함)의 상기 플래그에 따라 상기 스캔 순서에서 상기 각 변환 계수 위치를 따르는 변환 계수 위치에 대한 상기 상태 변이의 상기 상태의 상기 업데이트를 수행하도록 구성된다.
B1. 변환 계수의 블록을 디코딩하기 위한 장치는, 데이터 스트림으로부터, 스캔 순서를 따라 변환 계수 위치를 스캔하는 패스의 시퀀스에서, (패스는 변환 블록의 모든 변환 계수 위치를 스캔할 필요가 없지만, 모두 스캔 순서를 사용하고, 또한 일부 플래그 유형에 대한 플래그는 동일한 패스로 전송될 수 있는 것에 유의함), 1) 컨텍스트 적응 이진 산술 디코딩을 사용하여, 각각 하나 이상의 플래그 유형의 세트에 속하는 플래그, (예를 들어, 실시 예 1: sig_flag, par_flag, gt1_flag, gt2_falg) 및 가변 길이 코드를 사용하여, (예를 들어, 압축률 1을 사용하여; 우회 모드에서 전송되고; 또한 A1에 대해 코멘트된 것 처럼), 나머지 값을 디코딩하도록 구성되어, 각 플래그 및 각 나머지 값이 각각 현재 스캔된 변환 계수 위치에 대해 디코딩되도록 하고, (예를 들어, 실시 예 1, 인덱스 k), 코딩된 세트의 변환 계수 위치의 각 변환 계수 위치에 대해, (예를 들어, 미리 정의된 첫 번째 변환 계수 위치와 미리 정의된 마지막 변환 계수 위치 사이에서 연장되고, 여기서 미리 정의된 첫 번째 및 마지막 변환 계수 위치는 변환 블록에서 변환 계수 위치의 서브 세트를 지정하고; 다르게, 마지막 논제로 계수와 DC 계수와 같은 미리 정의된 계수 사이에서 연장됨), 상기 하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나(즉, 하나의 나머지 및 플래그 없음, 하나 이상의 플래그 및 하나의 나머지 또는 하나 이상의 플래그 및 나머지 없음)가 순차적으로 디코딩되어 값 도메인 내에서 (즉, 특정 변환 계수 위치에 대해 디코딩된 "하나 이상의 플래그 및 하나의 나머지 값 중 적어도 하나"는 후자를 초기 값 도메인에서 고유하게 정의함), 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스의 절대 값이 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값을 단지 포함하기 위해 있는, 초기 값 영역(예를 들어, x 비트 표시 -> Ω = 0 내지 2x-1, 예를 들어, x=16)으로 제한하도록 하고 - 각각의 플래그는 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값의 값 영역을, 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 상기 절대 값의 상기 값 영역을 이분할한 제 1 부분 또는 제 2 부분으로 제한하고 (예를 들어, sig_flag: 값 영역 Ω이 A={0} 및 으로 분할되면, par_flag은 를 짝수 또는 홀수 값으로 제함함), 상기 현재 스캔된 변환 계수 위치에 대한 나머지 값이 디코딩되면, (다음 두 가지 대안은 일부 변환 계수 위치에 대해 단지 나머지가 코딩되는 실시 예 1 및 그러한 변환 계수 위치가 존재하지 않는 실시 예 3을 포함하여 모든 실시 예를 포괄하는 것으로 이해되어야 함) 상기 나머지 값은 상기 현재 스캔된 변환 계수 위치에 대해 적어도 하나의 플래그가 디코딩된 경우 상기 값 영역 중에서, 또는 상기 현재 스캔된 변환 계수 위치에 대해 플래그가 디코딩되지 않은 경우 상기 초기 값 영역 중에서, 상기 현재 스캔된 변환 계수 위치에 대한 상기 양자화 인덱스의 절대 값을 고유하게 나타냄 - , (나머지 값이 디코딩되지 않은 변환 계수 위치, 이러한 변환 계수 위치에 대해 디코딩된 하나 이상의 플래그는 값 도메인을 단지 하나의 절대 값을 포함하도록 이미 제한했고, 부호에 대해서는, TC에 대해 우회 모드에서 동일하게 코딩될 수 있음), 상기 장치는, (예를 들어, 실시 예 1, 2) 패스의 시퀀스 중 제 1 패스에서, a) 제 1 통과에서 미리 결정된 중단 기준이 스캔 순서에 따라 처음으로 충족되는 미리 결정된 제 1 플래그 유형의 데이터 스트림 플래그로부터 미리 결정된 변환 계수 위치까지 (예를 들어, 실시 예 1: startIdxBypass-1에 의해 인덱스된 것) 디코딩하고 (예를 들어, 실시 예 1에서, 미리 결정된 수의 플래그가 제 1 패스에서 이미 디코딩됨), 미리 결정된 제 1 플래그 유형의 플래그는 현재 스캔된 변환 계수 위치에 대한 양자화 인덱스가 0인지 아닌지를 나타내고 (예 : sig_flag), b) 미리 결정된 변환 계수 위치를 선행하고 포함하는 변환 계수 위치에 대해서만 플래그를 디코딩하고, 스캔 순서에서 미리 결정된 변환 계수 위치를 따르는 각각의 코딩된 변환 계수 위치 세트에 대해 나머지 값들 중 하나를 디코딩하므로, 다른 것은 초기 값 영역을 벗어난 각 변환 계수 위치에 대한 양자화 인덱스의 절대 값을 고유하게 나타낸다.
B2. 실시 예 B1의 장치는, 상기 현재 스캔된 변환 계수 위치가 스캔 순서에서 상기 미리 결정된 변환 계수 위치에 선행하거나 상기 미리 결정된 변환 계수 위치이거나, 상기 미리 결정된 변환 계수 위치를 뒤따르는지에 따라, 상기 현재 스캔된 변환 계수 위치에 대해 상기 나머지 값을 다르게 디코딩하기 위해서, 미리 정의된 세트의 가변 길이 코드 중에서 상기 가변 길이 코드를 선택하도록 구성된다.
B3. 실시 예 B1 또는 B2의 장치는, 상기 현재 스캔된 변환 계수 위치가 (스캔 순서대로) 선행하거나 미리 결정된 변환 계수 위치인 경우, 미리 결정된 기준을 충족하는 선행 변환 계수 위치의 양자화 인덱스에서 점진적으로 변경함으로써, 및/또는 현재 스캔된 변환 계수 위치의 이웃에있는 변환 계수 위치의 양자화 인덱스에 따라, 현재 스캔된 변환 계수 위치에 대한 나머지 값을 디코딩하기 위해 가변 길이 코드를 매개 변수화하도록 구성된다.
B4. 실시 예 B1 또는 B2 또는 B3의 장치는, 상기 현재 스캔된 변환 계수 위치가 상기 미리 결정된 변환 계수 위치(112)보다 선행하거나 상기 미리 결정된 변환 계수 위치(112)와 동일한 경우, 상기 미리 결정된 기준을 충족하는 선행하는 변환 계수 위치의 상기 양자화 인덱스에 대해 상기 선택된 가변 길이 코드를 나타내는 상기 매개변수를 증가하게 변경함으로써, 및/또는 상기 현재 스캔된 변환 계수 위치 근처에 있는 변환 계수 위치의 상기 양자화 인덱스에 따라, 상기 현재 스캔된 변환 계수 위치에 대한 상기 나머지 값을 디코딩하기 위해, 상기 가변 길이 코드를 매개 변수화하도록 구성된다.
B5. 실시 예 B1 내지 B4 중 어느 하나의 장치에서, 상기 디코더는 (예를 들어, 실시 예 1 내지 4) 상기 스캔 순서를 따라 상태 변이(예를 들어, 격자도)를 사용하여, a) 현재 변이 계수 위치에 대해, 상기 상태 변이가 상기 현재 변환 계수 위치에 대해 가정한 상태에 기초하여 고유하게 복수의 복원 레벨 세트 중에서 복원 레벨 세트를 선택하고, 상기 양자화 인덱스를 상기 양자화 인덱스가 상기 복원 레벨 세트에서 가리키는 복원 레벨로 역 양자화하고, b) 상기 현재 변환 계수 위치에 대해 상기 양자화 인덱스에 따라 상기 스캔 순서에서 상기 현재 변환 계수 위치를 뒤따르는 변환 계수 위치에 대해 (이 항은 이제 업데이트의 의도된 목적 또는 효과를 나타냄) 상기 현재 변환 계수 위치에 대해 (이는 종속 양자화 중에 현재 스캔된 것이고; "현재 스캔된" 것은 패스 중에 현재 디코딩된 것을 표시하는 데 사용됨) 가정된 상기 상태 변이의 상기 상태를 업데이트함으로써 코딩된 변환 계수 위치 세트의 변환 계수 위치의 양자화 인덱스를 순차적으로 역 양자화하도록 (즉, 종속 양자화 사용) 구성된다.
3. 실시 예 A1 - A11 또는 B1 - B5 중 어느 하나의 장치는, (예를 들어, 실시 예 1 내지 4) 하나 이상의 플래그 유형의 세트의 각각에 대해, 상기 패스의 시퀀스 중 하나에서 상기 각각의 플래그 유형의 상기 플래그가 디코딩되도록 상기 디코딩을 실행하도록 구성된다.
4. 선행하는 실시 예들 중 어느 하나의 장치에서, (예를 들어, 실시 예 1 내지 4, 섹션 4. 5.4) 상기 가변 길이 코드는 골룸 라이스 코드이다.
5. 선행하는 실시 예들 중 어느 하나의 장치에서, (예를 들어, 실시 예 1 내지 4, 섹션 4. 5.4에서의 방법 1 및 2) 상기 장치는, 미리 결정된 기준을 충족하는 선행하는 변환 계수 위치의 상기 양자화 인덱스에 대해 증가하게 변경함으로써, 및/또는 상기 현재 스캔된 변환 계수 위치 근처의 변환 계수 위치의 상기 양자화 인덱스에 따라, 상기 현재 스캔된 변환 계수 위치에 대한 상기 나머지 값을 디코딩하기 위해, 미리 결정된 가변 길이 코드 세트 중에서 상기 가변 길이 코드를 선택하도록 구성된다.
6. 선행하는 실시 예들 중 어느 하나의 장치는, (예를 들어, 실시 예 1 내지 4) 스캔 순서에서 제 1 논제로 양자화 인덱스(64)의 위치와 미리 정의된 변환 계수 위치 사이에서, 상기 스캔 순서를 따라 연장하는 것으로 상기 코딩된 변환 계수 위치 세트를 결정하고, 상기 데이터 스트림을 기반으로 상기 제 1 논제로 양자화 인덱스의 상기 위치를 선정하도록 구성된다.
7. 선행하는 실시 예들 중 어느 하나의 장치는, (예를 들어, 실시 예 1 내지 4) 등 확률 우회 모드를 사용하여 각 논제로 양자화 인덱스에 대해 상기 데이터 스트림에서 부호 비트를 디코딩하도록 구성된다.
10. 선행하는 실시 예들 중 어느 하나의 장치는, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 미리 결정된 변환 계수 위치에 대한 상기 제 1 플래그 유형의 플래그를, 상기 미리 결정된 변환 계수의 상기 계수 위치에 따라 컨텍스트를 선택하여 디코딩하도록 구성된다.
11. 선행하는 실시 예들 중 어느 하나의 장치는, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 미리 결정된 변환 계수 위치에 대한 상기 제 1 미리 결정된 플래그 유형의 상기 플래그를, 상기 미리 결정된 변환 계수 위치 주변의 로컬 템플릿 내의 인접 변환 계수 위치 세트에 대해 상기 미리 결정된 변환 계수 위치의 상기 미리 결정된 플래그 유형의 상기 플래그 이전에 디코딩된 플래그 세트에 기초하여 로컬 활동을 결정하고, 상기 로컬 활동에 따라 컨텍스트를 선택함으로써 디코딩하도록 구성된다.
12. 선행하는 실시 예 11의 장치에서, 상기 플래그 세트는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 플래그 및 인접한 변환 계수 위치 세트에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 플래그를 (적어도 네 개 이상일 수 있음) 포함하고, 상기 장치는 상기 인접 변환 계수 위치 각각에 대한 가수(addend)에 대한 합에 기초하여 상기 활동을 계산하도록 구성되며, 상기 가수는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 상기 플래그 및 상기 인접 변환 계수 위치에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 상기 플래그에 기초하여 결정되는 상기 인접 변환 계수 위치에 대해 최소 가정된 절대 양자화 레벨 또는 상기 양자화 인덱스의 최소 가정된 절대 값을 표시한다.
13. 선행 실시 예들 중 어느 하나의 장치에서, 상기 디코더는, (실시 예 1 내지 4) 1) 상기 스캔 순서를 따라 상태 변이(예를 들어, 격자도)를 사용하여, a) 현재 변이 계수 위치에 대해, 상기 상태 변이가 상기 현재 변환 계수 위치에 대해 가정한 상태에 기초하여 고유하게 복수의 복원 레벨 세트 중에서 복원 레벨 세트를 선택하고, 상기 양자화 인덱스를 상기 양자화 인덱스가 상기 복원 레벨 세트에서 가리키는 복원 레벨로 역 양자화하고, b) 상기 현재 변환 계수 위치에 대해 상기 양자화 인덱스에 따라 상기 스캔 순서에서 상기 현재 변환 계수 위치를 뒤따르는 변환 계수 위치에 대해 (이 항은 이제 업데이트의 의도된 목적 또는 효과를 나타냄) 상기 현재 변환 계수 위치에 대해 (이는 종속 양자화 중에 현재 스캔된 것이고; "현재 스캔된" 것은 패스 중에 현재 디코딩된 것을 표시하는 데 사용됨) 가정된 상기 상태 변이의 상기 상태를 업데이트함으로써 코딩된 변환 계수 위치 세트의 변환 계수 위치의 양자화 인덱스를 순차적으로 역 양자화하고 (즉, 종속 양자화 사용), 2) 컨텍스트 적응 엔트로피 디코딩을 사용하여, 상기 상태 변이가 상기 미리 결정된 변환 계수 위치에 대해 가정한 상기 상태, 및/또는 상기 미리 결정된 변환 계수 위치에 대해 선택된 상기 복원 레벨 세트에 따라, 컨텍스트를 선택하여 미리 결정된 변환 계수 위치에 대해 상기 제 1 미리 결정된 플래그 유형의 상기 플래그를 디코딩하도록 구성된다.
20. 선행하는 실시 예들 중 어느 하나의 장치는, 선행 항들 중 어느 한 항에 있어서, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 상기 미리 결정된 변환 계수의 계수 위치에 따라 컨텍스트를 선택하여 미리 결정된 변환 계수 위치에 대한 상기 제 2 플래그 유형의 상기 플래그를 디코딩하도록 구성된다.
21. 선행 실시 예들 중 어느 하나의 장치는, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 미리 결정된 변환 계수 위치에 대한 상기 제 2 미리 결정된 플래그 유형의 상기 플래그를, 미리 결정된 변환 계수 위치 주변의 로컬 템플릿 내의 인접 변환 계수 위치 세트에 대한 상기 미리 결정된 변환 계수 위치의 상기 제 2 미리 결정된 플래그 유형의 상기 플래그 이전에 디코딩된 플래그 세트 및/또는 상기 미리 결정된 변환 계수 위치 주변의 상기 로컬 템플릿 내의 변환 계수 위치의 수에 기초하여 로컬 활동을 결정하고 - 이들의 상기 양자화 인덱스는 논제로임 - , 상기 로컬 활동 및/또는 논제로 양자화 인덱스의 수에 따라 컨텍스트를 선택함으로써, 디코딩하도록 구성된다.
22. 실시 예 21의 장치는, 상기 로컬 활동과 상기 논제로 양자화 인덱스 수의 차이에 따라 컨텍스트를 선택하도록 구성된다.
23. 실시 예 20 또는 21의 장치는, 상기 플래그 세트는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 플래그 및 인접한 변환 계수 위치 세트에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 플래그를 (예를 들어, 제 1 스캔 패스에서 코딩되며, 실시 예 12에서) 포함하고, 상기 장치는 상기 인접 변환 계수 위치 각각에 대한 가수(addend)에 대한 합에 기초하여 상기 활동을 계산하도록 구성되며, 상기 가수는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 상기 플래그 및 상기 인접 변환 계수 위치에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 상기 플래그에 기초하여 (다음 플래그 이상이 제 1 패스에서 전송되는 경우 이용될 수 있음) 결정되는 상기 인접 변환 계수 위치에 대해 최소 가정된 절대 양자화 레벨 또는 상기 양자화 인덱스의 최소 가정된 절대 값을 표시한다.
30. 선행 실시 예들 중 어느 하나의 장치는, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 상기 미리 결정된 변환 계수의 계수 위치에 따라 컨텍스트를 선택하여 미리 결정된 변환 계수 위치에 대한 상기 제 3 미리 결정된 플래그 유형의 플래그를 디코딩하도록 구성된다.
31. 선행 실시 예들 중 어느 하나의 장치는, 컨텍스트 적응 엔트로피 디코딩을 사용하여, 미리 결정된 변환 계수 위치에 대한 상기 제 3 미리 결정된 플래그 유형(98)의 상기 플래그를, 1) 미리 결정된 변환 계수 위치 주변의 로컬 템플릿 내의 인접 변환 계수 위치 세트에 대한 상기 미리 결정된 변환 계수 위치의 상기 제 3 미리 결정된 플래그 유형의 상기 플래그 이전에 디코딩된 플래그 세트 및/또는 상기 미리 결정된 변환 계수 위치 주변의 상기 로컬 템플릿 내의 변환 계수 위치의 수에 기초하여 로컬 활동을 결정하고 - 이들의 상기 양자화 인덱스는 논제로임 - , 2) 상기 로컬 활동 및/또는 논제로 양자화 인덱스의 수에 따라 컨텍스트를 선택함으로써, 디코딩하도록 구성된다.
32. 실시 예 31의 장치는, 상기 로컬 활동과 상기 논제로 양자화 인덱스의 수 간의 차이에 따라 상기 컨텍스트를 선택하도록 구성된다.
33. 실시 예 30 또는 31의 장치에서, 상기 플래그 세트는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 플래그 및 인접한 변환 계수 위치 세트에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 플래그를 (실시 예 12 및 32 참조) 포함하고, 상기 장치는 상기 인접 변환 계수 위치 각각에 대한 가수(addend)에 대한 합에 기초하여 상기 활동을 계산하도록 구성되며, 상기 가수는 상기 제 1 미리 결정된 플래그 유형의 상기 플래그, 상기 제 2 미리 결정된 플래그 유형의 상기 플래그 및 상기 인접 변환 계수 위치에 대해 디코딩된 상기 제 3 미리 결정된 플래그 유형의 상기 플래그에 기초하여 (실시 예 12 및 23 참조) 결정되는 상기 인접 변환 계수 위치에 대해 최소 가정된 절대 양자화 인덱스 또는 상기 양자화 인덱스의 최소 가정된 절대 값을 표시한다.
C1. 변환 계수 블록을 디코딩하기 위한 디코더는, 1) 상기 변환 계수 블록(10)이 분할되는 적어도 세트의 상기 서브블록(14) 각각에 대해, 상기 각각의 서브블록(14)이 양자화 인덱스의 절대 값이 미리 결정된 논제로 임계 값보다 큰 임의의 변환 계수(12)를 포함하는지 여부를 나타내는 서브블록 중요도 플래그를 디코딩하고, 2) 상기 변환 계수 블록의 변환 계수를, 상기 각각의 서브블록 내의 상기 변환 계수 각각에 대해, 각각의 변환 계수의 값 영역을 2 개의 파티션으로 재귀적으로 이분할하고, 상기 2 개의 파티션 중 어디에 상기 각각의 변환 계수의 양자화 인덱스가 놓이는지를 나타내는 하나 이상의 플래그의 시퀀스 - 상기 시퀀스의 디코딩은 상기 값 영역이 절대적인 의미에서 동일한 하나의 값 또는 값들을 포함하는 즉시 중지됨 - , 및 상기 값 영역이 여전히 상기 절대적 의미에서 다른 하나 이상의 값을 포함하는 경우, 상기 값 영역에서 상기 각 변환 계수의 상기 양자화 인덱스의 상기 절대 값을 나타내는 나머지 값을 순차적으로 디코딩함으로써, 상기 서브블록 중요도 플래그가 상기 양자화 인덱스의 상기 절대 값이 상기 미리 결정된 논제로 임계 값보다 큰 적어도 하나의 변환 계수가 있음을 나타내는 각 서브블록(14) 내에서; 및 상기 각각의 서브블록 내의 상기 변환 계수 각각에 대해, 상기 하나 이상의 플래그의 시퀀스를 순차적으로 디코딩함으로써 - 상기 시퀀스의 디코딩은 상기 값 영역이 상기 논제로 임계 값을 초과하지 않는 하나의 값, 단지 하나의 값, 또는 단순히 절대적인 의미에서 동일한 값을 포함하는 즉시 중지됨 - , 상기 서브블록 중요도 플래그가 상기 양자화 인덱스의 상기 절대 값이 상기 미리 결정된 논제로 임계 값보다 큰 변환 계수가 없음을 나타내는 각 서브블록 내에서, 디코딩하도록 구성된다.
C2. 실시 예 C1의 장치에서, 상기 플래그의 시퀀스 중 제 1 플래그는 상기 제 1 플래그가 디코딩되는 변환 계수가 0인지 여부를 나타내는 중요 플래그이다.
C3. 실시 예 C2의 장치에서, 상기 미리 결정된 논제로 임계 값은 1이고, 상기 장치는, 상기 서브블록 중요도 플래그가 양자화 인덱스의 절대 값이 1보다 큰 변환 계수가 없음을 나타내는 각 서브블록 내에서, 상기 각 서브블록 내의 상기 변환 계수 각각에 대해 상기 제 1 플래그를 순차적으로 디코딩하도록 구성된다.
C4. 실시 예 C1-C3의 어느 하나의 장치는, 1) 상기 변환 계수 블록이 분할되는 적어도 추가 세트의 상기 서브블록 각각에 대해, 각각의 서브블록이 0과 같지 않은 임의의 변환 계수를 포함하는지 여부를 나타내는 추가 서브블록 중요도 플래그를 디코딩하고, 2)기 제 1 서브블록 중요도 플래그가 상기 추가 서브블록 중요도 플래그가 0이 아닌 적어도 하나의 변환 계수를 포함함을 나타내는 상기 서브블록으로 이루어지도록 디코딩되는 서브블록의 세트를 결정하고, 3) 추가 서브블록 중요도 플래그가 0이 아닌 변환 계수가 없음을 나타내는 각 서브블록 내에서, 상기 변환 계수 블록의 변환 계수가 모두 0이라고 추론하도록 구성된다.
위의 설명에서는, 블록 기반 하이브리드 비디오 코딩을 위한 변환 계수 레벨 (양자화 인덱스)의 양자화 및 엔트로피 코딩에 대한 개념이 제시되었다. 위에서 설명한 기술은 잔차 샘플 블록의 손실 코딩에 적용될 수 있다. 잔차 샘플은 샘플의 원본 블록과 예측 신호의 샘플 간의 차이를 나타낼 수 있다 (예측 신호는 화면 내 예측 또는 화면 간 예측, 또는 화면 내 및 화면 간 예측의 조합 또는 임의의 다른 수단에 의해 획득될 수 있으며, 특별한 경우에 예측 신호는 0으로 설정될 수 있다).
샘플의 잔차 블록은 신호 변환을 사용하여 변환될 수 있다. 일반적으로 선형 및 분리 가능한 변환이 사용된다 (선형은 변환이 선형임을 의미하지만 변환 계수의 추가 반올림을 포함할 수 있음). 종종 DCT-II의 정수 근사치 또는 DCT/DST 제품군의 다른 변환의 정수 근사치가 사용된다. 가로 또는 세로 방향으로 다른 변환을 사용할 수 있습니다. 변환은 선형 및 분리 가능한 변환으로 제한되지 않는다. 다른 변환 (선형 및 비 분리형 또는 비선형)을 사용할 수 있다. 신호 변환의 결과, 다른 신호 공간에 있는 잔차 샘플의 원래 블록을 나타내는 변환 계수 블록이 획득된다. 특별한 경우, 변환은 식별 변환과 동일할 수 있다 (즉, 변환 계수 블록은 잔여 샘플 블록과 동일할 수 있음). 변환 계수 블록은 손실 코딩을 사용하여 코딩된다. 디코더 측에서, 복원된 변환 계수의 블록은 역변환되어 잔류 샘플의 복원된 블록이 획득된다. 마지막으로 예측 신호를 추가하여 복원된 이미지 샘플 블록을 얻는다.
* 변환 계수의 종속 스칼라 양자화:
인코더 측에서, 변환 계수 블록은 변환 계수 레벨 블록 (즉, 양자화 인덱스)에 매핑되고, 이는 정확도가 감소된 변환 계수를 나타낸다. 디코더 측에서 양자화 인덱스는 복원된 변환 계수에 매핑된다 (이것은 양자화로 인해 원래 변환 계수와 다르다). 기존의 스칼라 양자화와 달리 변환 계수는 독립적으로 양자화되지 않는다. 대신, 특정 변환 계수에 대해 허용 가능한 복원된 레벨 세트는 다른 변환 계수에 대해 선택된 양자화 인덱스에 따라 다르다.
* 변환 계수 레벨의 엔트로피 코딩 (양자화 인덱스):
복원된 변환 계수를 나타내는 변환 계수 레벨 (종속 스칼라 양자화 용)은 이진 산술 코딩을 사용하여 엔트로피 코딩된다. 이 컨텍스트에서, 종속 양자화의 속성은 엔트로피 코딩의 효율성을 향상시키기 위해 이용된다.
상이한 실시 예 및 측면이 위에서 설명되었다. 설명은 플래그/나머지 표현, 패스에 대한 플래그 및 나머지 분배, 컨텍스트 파생, 컨텍스트 적응 적으로 코딩된 플래그의 제한 등과 같은 다른 측면에 관한 것이다. 상이한 부분에서 설명된 이러한 측면, 특징, 기능 및 세부 사항은 선택적으로 본 명세서에 설명된 실시 예에 개별적으로 또는 함께 도입될 수 있다.
또한, 여기에 설명된 실시 예는 개별적으로 사용될 수 있으며, 다른 장의 특징, 기능 및 세부 사항 중 임의의 것에 의해 보완될 수도 있다.
또한, 본 명세서에 설명된 개별적인 측면은 개별적으로 또는 조합하여 사용될 수 있다는 점에 유의해야한다. 따라서, 세부 사항은 상기 양상들 중 다른 하나에 세부 사항을 추가하지 않고 상기 개별 양상들 각각에 추가될 수 있다.
특히, 실시 예는 또한 청구 범위에 설명되어있다. 청구항에 기술된 실시 예는 개별적으로 그리고 조합하여 본 명세서에서 기술된 특징, 기능 및 세부 사항 중 임의의 것에 의해 선택적으로 보완될 수 있다.
또한, 본 개시는 비디오 인코더(입력 비디오 신호의 인코딩된 표현을 제공하는 장치) 및 비디오 디코더 (비디오 신호의 인코딩된 표현에 기초하여 비디오 신호의 디코딩된 표현을 제공하기위한 장치)에서 사용 가능한 특징을 명시 적으로 또는 묵시적으로 설명한다는 점에 유의해야 한다. 따라서, 본 명세서에 설명된 임의의 특징은 비디오 인코더의 컨텍스트 및 비디오 디코더의 컨텍스트에서 사용될 수 있다.
더욱이, 방법과 관련하여 본 명세서에 개시된 특징 및 기능은 장치 (이러한 기능을 수행하도록 구성됨)에서도 사용될 수 있다. 더욱이, 장치와 관련하여 본 명세서에 개시된 임의의 특징 및 기능은 또한 대응하는 방법에서 사용될 수 있다. 다시 말하면, 여기에 개시된 방법은 장치와 관련하여 설명된 특징 및 기능 중 임의의 것에 의해 보완될 수 있다.
또한, 본 명세서에서 설명된 특징 및 기능은 "구현 대안" 섹션에 설명되어 있는 바와 같이, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다.
일부 측면이 장치의 컨텍스트에서 설명되지만, 이러한 측면이 해당 방법에 대한 설명을 나타내는 것이 분명하고, 본 명세서에서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 해당한다. 유사하게, 방법 단계의 컨텍스트에서 설명된 측면은 또한 대응하는 장치의 대응하는 블록 또는 항목 또는 특징의 설명을 나타낸다. 방법 단계의 일부 또는 전부는 예를 들어 마이크로 프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해 (또는 사용하여) 실행될 수 있다. 일부 실시 예에서, 하나 이상의 가장 중요한 방법 단계가 그러한 장치에 의해 실행될 수 있다.
특정 구현 요구 사항에 따라, 본 발명의 실시 예는 하드웨어 또는 소프트웨어로 구현될 수 있다. 이 구현은 전자적으로 판독 가능한 제어 신호가 저장되어 있는, 플로피 디스크, DVD, Blu-Ray, CD, ROM, PROM, EPROM, EEPROM 또는 FLASH 메모리와 같은 디지털 저장 매체를 사용하여 수행할 수 있으며, 이들은 각각의 방법이 수행되도록 프로그램 가능한 컴퓨터 시스템과 협력한다 (또는 협력할 수 있다). 따라서, 디지털 저장 매체는 컴퓨터 판독 가능할 수 있다.
본 발명에 따른 일부 실시 예는 프로그램 가능한 컴퓨터 시스템과 협력할 수 있는 전자적으로 판독 가능한 제어 신호를 갖는 데이터 캐리어를 포함하므로, 본 명세서에서 설명된 방법 중 하나가 수행되도록 한다.
일반적으로 본 발명의 실시 예는 프로그램 코드를 갖는 컴퓨터 프로그램 제품으로 구현될 수 있으며, 프로그램 코드는 컴퓨터 프로그램 제품이 컴퓨터에서 실행될 때 방법 중 하나를 수행하기 위해 작동한다. 프로그램 코드는 예를 들어 기계 판독 가능 캐리어에 저장될 수 있다.
다른 실시 예는 기계 판독 가능 캐리어에 저장된 본 명세서에 설명된 방법 중 하나를 수행하기 위한 컴퓨터 프로그램을 포함한다.
즉, 본 발명의 방법의 실시 예는 컴퓨터 프로그램이 컴퓨터에서 실행될 때, 본 명세서에서 설명된 방법 중 하나를 수행하기위한 프로그램 코드를 갖는 컴퓨터 프로그램이다.
따라서, 본 발명의 방법의 추가 실시 예는 본 명세서에서 설명된 방법 중 하나를 수행하기위한 컴퓨터 프로그램을 기록하고 있는 데이터 캐리어 (또는 디지털 저장 매체, 또는 컴퓨터 판독 가능 매체)이다. 데이터 매체, 디지털 저장 매체 또는 기록 매체는 일반적으로 유형적 및/또는 비 과도적이다.
따라서 본 발명의 방법의 추가 실시 예는 본 명세서에 설명된 방법 중 하나를 수행하기 위한 컴퓨터 프로그램을 나타내는 데이터 스트림 또는 신호 시퀀스이다. 데이터 스트림 또는 신호 시퀀스는 예를 들어 데이터 통신 연결을 통해, 예를 들어 인터넷을 통해 전송되도록 구성될 수 있다.
추가 실시 예는 본 명세서에서 설명된 방법 중 하나를 수행하도록 구성되거나 적응된 처리 수단, 예를 들어 컴퓨터, 또는 프로그래밍 가능한 논리 장치를 포함한다.
추가 실시 예는 본 명세서에서 설명된 방법 중 하나를 수행하기 위한 컴퓨터 프로그램이 설치된 컴퓨터를 포함한다.
본 발명에 따른 추가 실시 예는 본 명세서에 설명된 방법 중 하나를 수행하기 위한 컴퓨터 프로그램을 수신기로 전송 (예를 들어, 전자적으로 또는 광학적으로)하도록 구성된 장치 또는 시스템을 포함한다. 수신기는 예를 들어 컴퓨터, 모바일 장치, 메모리 장치 등일 수 있다. 장치 또는 시스템은 예를 들어 컴퓨터 프로그램을 수신기로 전송하기 위한 파일 서버를 포함할 수 있다.
일부 실시 예에서, 프로그램 가능 논리 장치 (예를 들어, 필드 프로그램 가능 게이트 어레이)는 본 명세서에 설명된 방법의 일부 또는 모든 기능을 수행하는 데 사용될 수 있다. 일부 실시 예에서, 필드 프로그래밍 가능 게이트 어레이는 여기에 설명된 방법 중 하나를 수행하기 위해 마이크로 프로세서와 협력할 수 있다. 일반적으로, 방법은 바람직하게는 임의의 하드웨어 장치에 의해 수행된다.
본 명세서에 설명된 장치는 하드웨어 장치를 사용하거나, 컴퓨터를 사용하거나, 하드웨어 장치와 컴퓨터의 조합을 사용하여 구현될 수 있다.
본 명세서에 설명된 장치 또는 본 명세서에 설명된 장치의 임의의 구성 요소는 적어도 부분적으로 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
본 명세서에 설명된 방법은 하드웨어 장치를 사용하거나, 컴퓨터를 사용하거나, 하드웨어 장치와 컴퓨터의 조합을 사용하여 수행될 수 있다.
본 명세서에 설명된 방법, 또는 본 명세서에 설명된 장치의 임의의 구성 요소는 하드웨어 및/또는 소프트웨어에 의해 적어도 부분적으로 수행될 수 있다.
본 명세서에서 설명된 실시 예는 본 발명의 원리에 대한 예시 일 뿐이다. 본 명세서에 기술된 배열 및 세부 사항의 수정 및 변경은 당업자에게 명백할 것임이 이해된다. 따라서, 본 명세서의 실시 예의 설명 및 설명에 의해 제시된 특정 세부 사항이 아니라 임박한 특허 청구 범위에 의해서만 제한되는 것이 의도된다.
Claims (33)
- 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법으로서, 상기 방법은:
상기 픽쳐의 일부를 나타내는 변환 블록을 디코딩하기 위한 이용가능한 컨텍스트 코딩된 빈들의 수를 식별하는 단계;
적어도 하나의 위치에 대한 디코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 디코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 디코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 디코딩 패스를 종료하는 것을 진행하는 단계;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따른 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 디코딩하는 단계; 및
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 디코딩하는 단계를 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 1 항에 있어서, 상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각은 상기 서브블록의 연관된 변환 계수의 변환 계수 레벨을 적어도 부분적으로 특정하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법.
- 제 1 항에 있어서, 상기 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하는 것은,
상기 현재 위치에서의 변환 계수에 대해, 상기 현재 위치에서의 상기 변환 계수가 0인지 여부를 나타내는 제 1 플래그 유형의 제 1 컨텍스트 코딩된 플래그를 디코딩하는 것; 및
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플래그가 상기 현재 위치에서의 상기 변환 계수가 0이 아니라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 현재 위치에서의 상기 변환 계수에 대하여, 상기 현재 위치에서의 상기 변환 계수가 미리 정해진 값보다 큰 것인지 여부를 나타내는 제 2 플래그 유형의 제 2 컨텍스트 코딩된 플래그를 디코딩하는 것; 및
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플레그가 상기 현재 위치에서의 상기 변환 계수가 0이라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 비교에 기초하여, 상기 다음 위치에서의 변환 계수에 대하여 상기 제 1 플래그 유형의 다른 컨텍스트 코딩된 플래그를 디코딩하거나 상기 디코딩 패스를 종료하는 것을 결정하는 것을 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 1 항에 있어서, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것은, 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 중에서, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 각각의 컨텍스트 코딩된 플래그에 대해 1만큼 감소시키는 것을 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법.
- 제 1 항에 있어서,
상기 적어도 하나의 컨텍스트 코딩된 플래그는 그레이터 댄(greater than) 플래그를 포함하며,
상기 특정 변환 계수들의 각각은 변환 계수가 미리 결정된 값보다 더 큰 것을 나타내는 디코딩된 값을 갖는 상기 그래이터 댄 플래그와 연관되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 5 항에 있어서, 상기 그래이터 댄 플래그의 상기 디코딩된 값은 상기 특정 변환 계수들의 각각에 대해 1인, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법.
- 제 1 항에 있어서,
업데이트된 상기 이용가능한 컨텍스트 코딩딘 빈의 수가 상기 미리 결정된 값보다 작은 것을 나타내는 상기 비교에 기초하여, 상기 디코딩 패스를 종료하는 것을 결정하는 단계를 더 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 1 항에 있어서,
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인지 여부를 결정하는 단계;
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 및 상기 현재 위치에서의 상기 변환 계수와 연관된 상기 절대 레벨에 대해 디코딩된 상기 나머지에 기초하는 것을 결정하는 단계; 및
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나가 아닌 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그에 기초하는 것을 결정하는 단계를 더 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 1 항에 있어서,
업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 상기 미리 결정된 값보다 큰 것을 나타내는 상기 비교에 기초하여 상기 디코딩 패스를 계속하는 것을 결정하는 단계; 및
상기 스캔 순서를 따른 상기 다음 위치에서의 변환 계수와 연관된 적어도 하나의 추가 컨텍스트 코딩된 플래그를 디코딩하는 단계를 더 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 제 1 항에 있어서,
상기 서브블록의 상기 변환 계수들의 각각에 대한 상태를 결정하는 단계 ― 현재 변환 계수에 대한 상기 상태는 이전 변환 계수의 상태와 상기 이전 변환 계수의 값에 좌우됨 ― ; 및
상기 상태에 기초한 양자화 세트들 간의 전환 여부를 결정하는 단계를 더 포함하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 방법. - 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치로서, 상기 전자 장치는 프로세서를 포함하며, 상기 프로세서는,
상기 픽쳐의 일부를 나타내는 변환 블록을 디코딩하기 위한 이용가능한 컨텍스트 코딩된 빈들의 수를 식별하고;
적어도 하나의 위치에 대한 디코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 디코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 디코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 디코딩 패스를 종료하는 것을 진행하고;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따라 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 디코딩하고; 그리고
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 디코딩하도록 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서, 상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각은 상기 서브블록의 연관된 변환 계수의 변환 계수 레벨을 적어도 부분적으로 특정하는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치.
- 제 11 항에 있어서, 상기 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하기 위하여, 상기 프로세서는,
상기 현재 위치에서의 변환 계수에 대해, 상기 현재 위치에서의 상기 변환 계수가 0인지 여부를 나타내는 제 1 플래그 유형의 제 1 컨텍스트 코딩된 플래그를 디코딩하고; 그리고
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플래그가 상기 현재 위치에서의 상기 변환 계수가 0이 아니라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 현재 위치에서의 상기 변환 계수에 대하여, 상기 현재 위치에서의 상기 변환 계수가 미리 정해진 값보다 큰 것인지 여부를 나타내는 제 2 플래그 유형의 제 2 컨텍스트 코딩된 플래그를 디코딩하고; 그리고
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플레그가 상기 현재 위치에서의 상기 변환 계수가 0이라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 비교에 기초하여, 상기 다음 위치에서의 변환 계수에 대하여 상기 제 1 플래그 유형의 다른 컨텍스트 코딩된 플래그를 디코딩하거나 상기 디코딩 패스를 종료하는 것을 결정하도록 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하기 위하여, 상기 프로세서는,
디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 중에서, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 각각의 컨텍스트 코딩된 플래그에 대해 1만큼 감소시키도록 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서,
상기 적어도 하나의 컨텍스트 코딩된 플래그는 그래이터 댄 플래그를 포함하며,
상기 특정 변환 계수들의 각각은 변환 계수가 미리 결정된 값보다 더 큰 것을 나타내는 디코딩된 값을 갖는 상기 그래이터 댄 플래그와 연관되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 15 항에 있어서, 상기 그래이터 댄 플래그의 상기 디코딩된 값은 상기 특정 변환 계수들의 각각에 대해 1인, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치.
- 제 11 항에 있어서,
상기 프로세서는,
업데이트된 상기 이용가능한 컨텍스트 코딩딘 빈의 수가 상기 미리 결정된 값보다 작은 것을 나타내는 상기 비교에 기초하여, 상기 디코딩 패스를 종료하는 것을 결정하도록 추가로 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서,
상기 프로세서는,
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인지 여부를 결정하고;
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 및 상기 현재 위치에서의 상기 변환 계수와 연관된 상기 절대 레벨에 대해 디코딩된 상기 나머지에 기초하는 것을 결정하고; 그리고
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나가 아닌 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그에 기초하는 것을 결정하도록 추가로 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서,
상기 프로세서는,
업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 상기 미리 결정된 값보다 큰 것을 나타내는 상기 비교에 기초하여 상기 디코딩 패스를 계속하는 것을 결정하고; 그리고
상기 스캔 순서를 따른 상기 다음 위치에서의 변환 계수와 연관된 적어도 하나의 추가 컨텍스트 코딩된 플래그를 디코딩하도록 추가로 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 제 11 항에 있어서,
상기 프로세서는,
상기 서브블록의 상기 변환 계수들의 각각에 대한 상태를 결정하고 ― 현재 변환 계수에 대한 상기 상태는 이전 변환 계수의 상태와 상기 이전 변환 계수의 값에 좌우됨 ― ; 그리고
상기 상태에 기초한 양자화 세트들 간의 전환 여부를 결정하도록 추가로 구성되는, 데이터 스트림으로부터 픽쳐를 디코딩하기 위한 전자 장치. - 비일시적 컴퓨터 판독가능 매체로서, 실행시 전자 장치의 적어도 하나의 프로세서로 하여금:
상기 픽쳐의 일부를 나타내는 변환 블록을 디코딩하기 위한 이용가능한 컨텍스트 코딩된 빈들의 수를 식별하고;
적어도 하나의 위치에 대한 디코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 디코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 디코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 디코딩 패스를 종료하는 것을 진행하고;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따라 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 디코딩하고; 그리고
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 디코딩하게 하는 명령들을 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서, 상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각은 상기 서브블록의 연관된 변환 계수의 변환 계수 레벨을 적어도 부분적으로 특정하는, 비일시적 컴퓨터-판독가능 매체.
- 제 21 항에 있어서, 실행시 상기 적어도 하나의 프로세서로 하여금 상기 적어도 하나의 컨텍스트 코딩된 플래그를 디코딩하게 하는 상기 명령들은,
실행시 상기 적어도 하나의 프로세서로 하여금:
상기 현재 위치에서의 변환 계수에 대해, 상기 현재 위치에서의 상기 변환 계수가 0인지 여부를 나타내는 제 1 플래그 유형의 제 1 컨텍스트 코딩된 플래그를 디코딩하고; 그리고
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플래그가 상기 현재 위치에서의 상기 변환 계수가 0이 아니라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 현재 위치에서의 상기 변환 계수에 대하여, 상기 현재 위치에서의 상기 변환 계수가 미리 정해진 값보다 큰 것인지 여부를 나타내는 제 2 플래그 유형의 제 2 컨텍스트 코딩된 플래그를 디코딩하고; 그리고
상기 제 1 플래그 유형의 상기 제 1 컨텍스트 코딩된 플레그가 상기 현재 위치에서의 상기 변환 계수가 0이라고 나타낸 때와 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 업데이트된 후에, 상기 비교에 기초하여, 상기 다음 위치에서의 변환 계수에 대하여 상기 제 1 플래그 유형의 다른 컨텍스트 코딩된 플래그를 디코딩하거나 상기 디코딩 패스를 종료하는 것을 결정하게 하는 명령들을 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서, 실행시 상기 적어도 하나의 프로세서로 하여금 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하게 하는 상기 명령들은,
실행시 상기 적어도 하나의 프로세서로 하여금 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 중에서, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 각각의 컨텍스트 코딩된 플래그에 대해 1만큼 감소시키게 하는 명령들을 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서,
상기 적어도 하나의 컨텍스트 코딩된 플래그는 그래이터 댄 플래그를 포함하며,
상기 특정 변환 계수들의 각각은 변환 계수가 미리 결정된 값보다 더 큰 것을 나타내는 디코딩된 값을 갖는 상기 그래이터 댄 플래그와 연관되는, 비일시적 컴퓨터-판독가능 매체. - 제 25 항에 있어서, 상기 그래이터 댄 플래그의 상기 디코딩된 값은 상기 특정 변환 계수들의 각각에 대해 1인, 비일시적 컴퓨터-판독가능 매체.
- 제 21 항에 있어서,
실행시 상기 적어도 하나의 프로세서로 하여금:
업데이트된 상기 이용가능한 컨텍스트 코딩딘 빈의 수가 상기 미리 결정된 값보다 작은 것을 나타내는 상기 비교에 기초하여, 상기 디코딩 패스를 종료하도록 결정하게 하는 명령들을 추가로 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서,
실행시 상기 적어도 하나의 프로세서로 하여금:
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인지 여부를 결정하고;
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나인 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그 및 상기 현재 위치에서의 상기 변환 계수와 연관된 상기 절대 레벨에 대해 디코딩된 상기 나머지에 기초하는 것을 결정하고; 그리고
상기 현재 위치에서의 상기 변환 계수가 상기 특정 변환 계수들 중 하나가 아닌 때, 상기 현재 위치에서의 상기 변환 계수 중에서, 상기 절대 레벨이, 상기 현재 위치에서 디코딩된 상기 적어도 하나의 컨텍스트 코딩된 플래그에 기초하는 것을 결정하게 하는 명령들을 추가로 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서,
실행시 상기 적어도 하나의 프로세서로 하여금:
업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수가 상기 미리 결정된 값보다 큰 것을 나타내는 상기 비교에 기초하여 상기 디코딩 패스를 계속하는 것을 결정하고; 그리고
상기 스캔 순서를 따른 상기 다음 위치에서의 변환 계수와 연관된 적어도 하나의 추가 컨텍스트 코딩된 플래그를 디코딩하게 하는 명령들을 추가로 포함하는, 비일시적 컴퓨터-판독가능 매체. - 제 21 항에 있어서,
실행시 상기 적어도 하나의 프로세서로 하여금:
상기 서브블록의 상기 변환 계수들의 각각에 대한 상태를 결정하고 ― 현재 변환 계수에 대한 상기 상태는 이전 변환 계수의 상태와 상기 이전 변환 계수의 값에 좌우됨 ― ; 그리고
상기 상태에 기초한 양자화 세트들 간의 전환 여부를 결정하게 하는 명령들을 추가로 포함하는, 비일시적 컴퓨터-판독가능 매체. - 픽쳐를 인코딩하기 위한 방법으로서, 상기 방법은:
상기 픽쳐의 일부를 나타내는 변환 블록의 크기에 기초하여 이용가능한 컨텍스트 코딩된 빈들의 수를 세팅하는 단계;
적어도 하나의 위치에 대한 인코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 인코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 인코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 인코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 인코딩 패스를 종료하는 것을 진행하는 단계;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따른 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 인코딩하는 단계; 및
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 인코딩하는 단계를 포함하는, 픽쳐를 인코딩하기 위한 방법. - 픽쳐를 인코딩하기 위한 전자 장치로서, 상기 전자 장치는 프로세서를 포함하며, 상기 프로세서는:
상기 픽쳐의 일부를 나타내는 변환 블록의 크기에 기초하여 이용가능한 컨텍스트 코딩된 빈들의 수를 세팅하고;
적어도 하나의 위치에 대한 인코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 인코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 인코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 인코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 인코딩 패스를 종료하는 것을 진행하고;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따른 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 인코딩하고; 그리고
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 인코딩하도록 구성되는, 픽쳐를 인코딩하기 위한 전자 장치. - 비일시적 컴퓨터 판독가능 매체로서, 실행시 전자 장치의 적어도 하나의 프로세서로 하여금:
상기 픽쳐의 일부를 나타내는 변환 블록의 크기에 기초하여 이용가능한 컨텍스트 코딩된 빈들의 수를 세팅하고;
적어도 하나의 위치에 대한 인코딩 패스 동안 ― 각 위치는 상기 변환 블록의 서브블록 내의 변환 계수에 대응됨 ― , 시작 위치에서 시작하여 상기 적어도 하나의 위치를 순차적으로 횡단하는 스캔 순서에 따라,
상기 서브블록 내의 현재 위치에서 적어도 하나의 컨텍스트 코딩된 플래그를 인코딩하는 것,
상기 적어도 하나의 컨텍스트 코딩된 플래그의 각각을 인코딩하는 것에 응답하여, 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 업데이트하는 것,
상기 현재 위치와 연관된 모든 컨텍스트 코딩된 플래그들을 인코딩한 후 상기 스캔 순서에서 상기 현재 위치에 뒤이은 바로 다음 위치로 진행하기 전에, 업데이트된 상기 이용가능한 컨텍스트 코딩된 빈들의 수를 미리 정의된 값과 비교하는 것, 및
상기 비교에 기초하여, 상기 인코딩 패스를 종료하는 것을 진행하고;
상기 시작 위치로부터 시작하여 상기 현재 위치까지 상기 스캔 순서에 따른 선택 위치들에 대해, 특정 변환 계수들의 각각의 위치에서 상기 특정 변환 계수들와 연관된 절대 레벨에 대한 나머지를 인코딩하고; 그리고
상기 다음 위치로부터 시작하여 상기 서브블록 내의 마지막 위치까지 상기 스캔 순서에 따른 각각의 위치에 대해, 각각의 개별 위치에서의 변환 계수와 연관된 절대 레벨을 인코딩하게 하는 명령들을 포함하는, 비일시적 컴퓨터 판독가능 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020237042405A KR20230170824A (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18196399 | 2018-09-24 | ||
EP18196399.2 | 2018-09-24 | ||
KR1020217012254A KR102661759B1 (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
PCT/EP2019/075732 WO2020064745A1 (en) | 2018-09-24 | 2019-09-24 | Efficient coding of transform coefficients using or suitable for a combination with dependent scalar quantization |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012254A Division KR102661759B1 (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237042405A Division KR20230170824A (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230106751A KR20230106751A (ko) | 2023-07-13 |
KR102613155B1 true KR102613155B1 (ko) | 2023-12-13 |
Family
ID=63720488
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012254A KR102661759B1 (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
KR1020237042405A KR20230170824A (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
KR1020237022958A KR102613155B1 (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에적합한 변환 계수의 효율적인 코딩 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012254A KR102661759B1 (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
KR1020237042405A KR20230170824A (ko) | 2018-09-24 | 2019-09-24 | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11677950B2 (ko) |
EP (1) | EP3857882A1 (ko) |
JP (2) | JP2022500966A (ko) |
KR (3) | KR102661759B1 (ko) |
CN (1) | CN117729332A (ko) |
BR (1) | BR112021005558A2 (ko) |
MX (1) | MX2021003343A (ko) |
WO (1) | WO2020064745A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3857882A1 (en) * | 2018-09-24 | 2021-08-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Efficient coding of transform coefficients using or suitable for a combination with dependent scalar quantization |
US11523136B2 (en) * | 2019-01-28 | 2022-12-06 | Hfi Innovation Inc. | Methods and apparatuses for coding transform blocks |
US11496745B2 (en) * | 2019-06-24 | 2022-11-08 | Qualcomm Incorporated | Binarization in transform skip residual coding |
US11184642B2 (en) * | 2019-08-02 | 2021-11-23 | Mediatek Inc. | Methods and apparatus for simplification of coding residual blocks |
US12047575B2 (en) * | 2020-12-03 | 2024-07-23 | Intel Corporation | Methods, apparatus, and articles of manufacture for multi-symbol equiprobable mode entropy coding |
WO2022165763A1 (zh) * | 2021-02-05 | 2022-08-11 | Oppo广东移动通信有限公司 | 编码方法、解码方法、编码器、解码器以及电子设备 |
WO2022187026A2 (en) * | 2021-02-25 | 2022-09-09 | Innopeak Technology, Inc. | Dependent quantization state transition method for video coding |
WO2022232061A1 (en) * | 2021-04-26 | 2022-11-03 | Innopeak Technology, Inc. | Bypass alignment in video coding |
WO2023132660A1 (ko) * | 2022-01-05 | 2023-07-13 | 주식회사 윌러스표준기술연구소 | 종속 양자화를 이용한 비디오 신호 처리 방법 및 이를 위한 장치 |
WO2024035762A1 (en) * | 2022-08-09 | 2024-02-15 | Innopeak Technology, Inc. | Dynamic mesh geometry refinement component adaptive coding |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020051540A1 (en) | 2000-10-30 | 2002-05-02 | Glick Barry J. | Cryptographic system and method for geolocking and securing digital information |
US20110041148A1 (en) | 2009-08-13 | 2011-02-17 | At&T Intellectual Property I, L.P. | Blackouts of pay per view multimedia content |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701480A (en) * | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
ES2277174T3 (es) * | 2002-05-02 | 2007-07-01 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Codificacion aritmetica de coeficientes de transformacion. |
JP5083867B2 (ja) * | 2007-03-02 | 2012-11-28 | 株式会社リコー | 光源駆動装置、光走査装置及び画像形成装置 |
EP2559166B1 (en) * | 2010-04-13 | 2017-11-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Probability interval partioning encoder and decoder |
PL3962088T3 (pl) * | 2010-11-04 | 2023-11-27 | Ge Video Compression, Llc | Kodowanie obrazu wspomagające scalanie bloków i tryb przeskoku |
MX346677B (es) * | 2011-11-04 | 2017-03-29 | Sharp Kk * | Dispositivo de decodificacion aritmetica, dispositivo de decodificacion de imagenes, dispositivo de codificacion aritmetica, dispositivo de codificacion de imagenes y metodo de decodificacion aritmetica. |
US9191670B2 (en) * | 2012-01-17 | 2015-11-17 | Qualcomm Incorporated | Throughput improvement for CABAC coefficient level coding |
EP2805492B1 (en) | 2012-01-19 | 2018-11-14 | VID SCALE, Inc. | System and method of video coding quantization and dynamic range control |
US9264706B2 (en) * | 2012-04-11 | 2016-02-16 | Qualcomm Incorporated | Bypass bins for reference index coding in video coding |
US9307264B2 (en) * | 2012-06-22 | 2016-04-05 | Sharp Kabushiki Kaisha | Arithmetic decoding device, arithmetic coding device, image decoding apparatus, and image coding apparatus |
US9936200B2 (en) * | 2013-04-12 | 2018-04-03 | Qualcomm Incorporated | Rice parameter update for coefficient level coding in video coding process |
US10021419B2 (en) * | 2013-07-12 | 2018-07-10 | Qualcomm Incorported | Rice parameter initialization for coefficient level coding in video coding process |
EP2980793A1 (en) | 2014-07-28 | 2016-02-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoder, decoder, system and methods for encoding and decoding |
US9628803B2 (en) | 2014-11-25 | 2017-04-18 | Blackberry Limited | Perceptual image and video coding |
US11233998B2 (en) * | 2015-05-29 | 2022-01-25 | Qualcomm Incorporated | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design |
WO2017190288A1 (en) * | 2016-05-04 | 2017-11-09 | Microsoft Technology Licensing, Llc | Intra-picture prediction using non-adjacent reference lines of sample values |
WO2017201574A1 (en) * | 2016-05-23 | 2017-11-30 | Newsouth Innovations Pty Limited | A method and apparatus for image compression |
US10587875B2 (en) * | 2017-03-01 | 2020-03-10 | Intel Corporation | Coding tools for subjective quality improvements in video codecs |
US10491914B2 (en) * | 2018-03-29 | 2019-11-26 | Tencent America LLC | Transform information prediction |
US11483575B2 (en) * | 2018-08-24 | 2022-10-25 | Hfi Innovation Inc. | Coding transform coefficients with throughput constraints |
US11336918B2 (en) * | 2018-09-05 | 2022-05-17 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
WO2020054713A1 (en) * | 2018-09-11 | 2020-03-19 | Sharp Kabushiki Kaisha | Systems and methods for coding transform coefficient level values |
MX2021003245A (es) * | 2018-09-20 | 2021-05-12 | Lg Electronics Inc | Metodo de codificacion de nivel del factor de conversion y dispositivo del mismo. |
EP3857882A1 (en) * | 2018-09-24 | 2021-08-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Efficient coding of transform coefficients using or suitable for a combination with dependent scalar quantization |
EP4022906A4 (en) * | 2019-08-30 | 2022-11-09 | Huawei Technologies Co., Ltd. | HIGH LEVEL SIGNALING METHOD AND APPARATUS FOR NON-RECTANGULAR PARTITIONING MODES |
-
2019
- 2019-09-24 EP EP19770129.5A patent/EP3857882A1/en active Pending
- 2019-09-24 KR KR1020217012254A patent/KR102661759B1/ko active IP Right Grant
- 2019-09-24 KR KR1020237042405A patent/KR20230170824A/ko not_active Application Discontinuation
- 2019-09-24 CN CN202410126974.8A patent/CN117729332A/zh active Pending
- 2019-09-24 KR KR1020237022958A patent/KR102613155B1/ko active Application Filing
- 2019-09-24 JP JP2021516639A patent/JP2022500966A/ja active Pending
- 2019-09-24 BR BR112021005558-4A patent/BR112021005558A2/pt unknown
- 2019-09-24 WO PCT/EP2019/075732 patent/WO2020064745A1/en unknown
- 2019-09-24 MX MX2021003343A patent/MX2021003343A/es unknown
-
2021
- 2021-03-19 US US17/207,396 patent/US11677950B2/en active Active
-
2023
- 2023-04-13 US US18/134,252 patent/US20230379471A1/en active Pending
- 2023-06-27 JP JP2023105222A patent/JP2023123702A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020051540A1 (en) | 2000-10-30 | 2002-05-02 | Glick Barry J. | Cryptographic system and method for geolocking and securing digital information |
US20110041148A1 (en) | 2009-08-13 | 2011-02-17 | At&T Intellectual Property I, L.P. | Blackouts of pay per view multimedia content |
Non-Patent Citations (1)
Title |
---|
Heiko Schwarz et al., Description of Core Experiment 7 (CE 7): Quantization and coefficient coding, JVET of ITU-T and ISO/IEC, JVET-K1027-v3(2018.08.17.) |
Also Published As
Publication number | Publication date |
---|---|
US20230379471A1 (en) | 2023-11-23 |
CN117729332A (zh) | 2024-03-19 |
MX2021003343A (es) | 2021-07-02 |
JP2022500966A (ja) | 2022-01-04 |
EP3857882A1 (en) | 2021-08-04 |
BR112021005558A2 (pt) | 2021-06-29 |
KR20210065155A (ko) | 2021-06-03 |
WO2020064745A1 (en) | 2020-04-02 |
JP2023123702A (ja) | 2023-09-05 |
KR20230170824A (ko) | 2023-12-19 |
CN113170132A (zh) | 2021-07-23 |
KR20230106751A (ko) | 2023-07-13 |
KR102661759B1 (ko) | 2024-04-30 |
US11677950B2 (en) | 2023-06-13 |
US20210211673A1 (en) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102613155B1 (ko) | 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에적합한 변환 계수의 효율적인 코딩 | |
TWI813126B (zh) | 相依量化技術 | |
KR102662646B1 (ko) | 종속 스칼라 양자화에 적합한 변환 계수의 엔트로피 코딩 | |
US10574993B2 (en) | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design | |
KR102638578B1 (ko) | 변환 및 계수 시그널링에 대한 방법 및 장치 | |
CN113170132B (zh) | 使用或适用于与依赖标量量化的组合的变换系数的有效编码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent |