KR20170066462A - 팔레트 모드를 사용하는 개선된 인코딩 프로세스 - Google Patents
팔레트 모드를 사용하는 개선된 인코딩 프로세스 Download PDFInfo
- Publication number
- KR20170066462A KR20170066462A KR1020177011153A KR20177011153A KR20170066462A KR 20170066462 A KR20170066462 A KR 20170066462A KR 1020177011153 A KR1020177011153 A KR 1020177011153A KR 20177011153 A KR20177011153 A KR 20177011153A KR 20170066462 A KR20170066462 A KR 20170066462A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- indices
- palette
- pixels
- pixel
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 99
- 230000008569 process Effects 0.000 title description 52
- 238000004590 computer program Methods 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 4
- 230000033001 locomotion Effects 0.000 abstract description 35
- 230000000875 corresponding effect Effects 0.000 description 98
- 238000011156 evaluation Methods 0.000 description 33
- 239000013598 vector Substances 0.000 description 28
- 238000012545 processing Methods 0.000 description 23
- 230000006872 improvement Effects 0.000 description 18
- 238000013459 approach Methods 0.000 description 8
- 230000001364 causal effect Effects 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 239000003086 colorant Substances 0.000 description 6
- 230000011664 signaling Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012854 evaluation process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/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/182—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 pixel
-
- 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/103—Selection of coding mode or of prediction mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- 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
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- 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/17—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 an image region, e.g. an object
- H04N19/176—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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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/186—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 colour or a chrominance component
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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/93—Run-length coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 비디오 코딩 및 디코딩에 관한 것으로, 특히 팔레트 코딩 모드를 정의하는 HEVC SCC에 관한 것이다. 종래의 팔레트 모드에서, 코딩 유닛 및 팔레트로부터 구축된 레벨들의 블록은 "Pred mode" 요소, 선택적인 "Level" 요소, 및 "Pred mode" 요소와 선택적인 "Level" 요소에 의해 정의된 동작과 관련된 인덱스들의 블록의 연속적인 인덱스들의 수를 정의하는 "Run" 요소와 같은 신택스 요소들을 사용하여 인코딩된다. 본 발명의 개선된 실시예에서, 코딩 유닛에 대한 최종 "Run" 요소는, 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서 인덱스들에 대한 동작을 수행하는 것을 표시하기 위해, 정의된 수의 연속적인 인덱스들과 연관된 코드워드 대신에 특정한 업-투-엔드 코드워드를 사용한다.
Description
본 발명은 비디오 코딩 및 디코딩에 관한 것이다. 보다 상세하게, 본 발명은 팔레트 모드 코딩 방법들에 관한 것이다. 팔레트 모드는 HEVC 레인지 확장의 범위에서 초기에 제시된 코딩 방법이며 HEVC의 스크린 콘텐츠 코딩 확장에 대해 현재 고려 중이다. 이 코딩 방법은 "스크린 콘텐츠(screen content)" 비디오 시퀀스를 타겟으로 하는 비디오 코딩에 효율적이다.
본 발명은 픽셀들의 현재 블록이 소위 팔레트(palette)로부터 구축되는 인덱스들의 블록을 사용하여 인코딩되는 코딩 모드에 적용된다.
본 명세서에서 팔레트는 인덱스를 픽셀의 값과 연관시키는 엔트리들을 가진 룩업 테이블로서 정의된다. 전형적으로, 픽셀의 값은 픽셀과 연관되는 각각의 컬러 컴포넌트의 값으로 구성되어, 컬러 팔레트가 될 수 있지만, 반드시 그렇지는 않다. 오히려, 픽셀의 값은 단일 픽셀 컴포넌트로 만들어질 수 있어, 모노크롬 팔레트가 될 수 있다.
픽셀의 블록을 인코딩하는 이런 모드는 일반적으로 팔레트 코딩 모드로서 지칭된다. 예를 들어, 고효율 비디오 코딩(HEVC: ISO/IEC 23008-2 MPEG-H Part 2/ITU-T H.265) 국제 표준의 레인지 확장에서 이 모드를 채택하는 것이 고려된다. 이 모드는 HEVC의 스크린 콘텐츠 코딩(Screen Content Coding)(SCC) 확장의 드래프트 스팩에서 현재 고려 중이다.
비디오 시퀀스에서 이미지를 인코딩할 때, 이미지는 먼저 코딩 트리 블록(Coding Tree Block)(CTB)들로 지칭되는 동일 크기의 픽셀들의 코딩 엔티티들로 분할된다. 코딩 트리 블록의 크기는 일반적으로 64×64 픽셀이다. 각각의 코딩 트리 블록은 이후 그 크기가 변할 수 있고 인코딩하기 위한 픽셀들의 실제 블록들인 더 작은 블록들의 계층 트리로 분류될 수 있다. 인코딩하기 위한 이러한 작은 블록들은 코딩 유닛(Coding Unit)(CU)으로서 지칭된다.
특정한 코딩 유닛의 인코딩은 일반적으로 예측적이다. 이것은 예측자 블록이 먼저 결정되는 것을 의미한다. 다음에, 예측자 블록과 코딩 유닛 간의 차이가 계산된다. 이 차이는 잔차 또는 잔차 블록으로 불린다. 다음에, 이 잔차가 압축된다. 코딩 유닛의 실제 인코딩된 정보는 예측자 블록 및 압축된 잔차를 결정하는 방식을 표시하기 위해 일부 정보로 만들어진다. 최상의 예측자 블록들은 효율적으로 압축될 수 있는 작은 잔차를 얻기 위해 가능한 한 코딩 유닛과 유사한 블록들이다.
코딩 모드는 코딩 유닛의 예측 인코딩 방법을 위한 예측자 블록을 결정하는 데 사용되는 방법에 기초하여 정의된다.
제1 코딩 모드는 인트라(INTRA) 모드로서 지칭된다. 인트라 모드에 따르면, 예측자 블록은 현재 이미지 내의 코딩 유닛의 바로 근처의 픽셀들의 값에 기초하여 구축된다. 예측자 블록이 현재 이미지의 블록이 아니라 구성이라는 점에 유의한다. 경계의 어느 픽셀들이 예측자 블록을 구축하는 데 실제로 사용되고 어떻게 이들이 사용되는지를 결정하기 위해 방향이 사용된다. 인트라 모드에 감쳐진 아이디어는, 자연적 이미지들의 일반적 코히런스(general coherence) 때문에, 코딩 유닛의 바로 근처의 픽셀들이 현재 코딩 유닛의 픽셀들과 유사할 수 있다는 것이다. 따라서, 이들 근처 픽셀들에 기초하는 예측자 블록을 사용하여 코딩 유닛의 픽셀들의 값의 양호한 예측을 얻는 것이 가능하다.
제2 코딩 모드는 인터(INTER) 모드로서 지칭된다. 인터 모드에 따르면, 예측자 블록은 다른 이미지의 블록이다. 인터 모드에 감쳐진 아이디어는 시퀀스 내의 연속적인 이미지들이 일반적으로 매우 유사하다는 것이다. 주된 차이는 전형적으로 카메라의 스크롤링 또는 장면에서 객체들의 이동에 기인하는 이들 이미지 간의 움직임으로부터 온다. 예측자 블록은 현재 이미지 내의 코딩 유닛의 위치와 관련된 그 위치를 참조 이미지에 제공하는 벡터에 의해 결정된다. 이 벡터는 움직임 벡터로서 지칭된다. 이 모드에 따르면, 이 모드를 사용하는 그런 코딩 유닛의 인코딩은 움직임 벡터 및 압축된 잔차를 포함하는 움직임 정보를 포함한다.
본 명세서에서는 팔레트 모드로 불리는 제3 코딩 모드에 중점을 둔다. 팔레트 모드의 이전 버전에 따르면, 예측자 블록은 팔레트로부터의 인덱스들의 블록으로서 주어진 코딩 유닛에 대해 정의된다: 예측자 블록 내의 각 픽셀 위치에 대해, 예측자 블록은 코딩 유닛에서 동일 위치를 갖는(즉, 공동 배치된) 픽셀의 값에 가장 가까운 팔레트에서 픽셀 값과 연관된 인덱스를 포함한다. 따라서 예측자 블록은 코딩 유닛과 동일한 크기를 갖는다. (픽셀 도메인 내의) 예측자 블록과 코딩 유닛 간의 차이를 표현하는 잔차가 그 후 계산된다. 잔차는 또한 코딩 유닛 및 예측자 블록과 동일한 크기를 갖는다.
팔레트 내의 엔트리 인덱스들은 "레벨들"로 알려졌다.
HEVC SCC에서의 고려 중인 팔레트 모드의 최근 버전에서, 잔차는 디코더에 구축 및 송신되지 않는다(도 7에서 후술되는 바와 같이). 팔레트를 사용하여 형성된 인덱스들의 블록만이 픽셀들의 현재 블록을 표현하기 위해 비트스트림에서 코딩된다.
일부 픽셀은 최상의 팔레트 엔트리에 의해 잘못 표현될 수 있으며, 이는 픽셀들과 최상의 팔레트 엔트리 간의 차이가 크다는 것을 의미한다. 이러한 픽셀을 표현하기 위해 인덱스를 사용할 가치는 없을 수도 있다.
따라서, 팔레트 모드는 그런 픽셀을 식별하고 근사 인덱스를 사용하는 대신 그들의 명시적 픽셀 값을 인코딩하는 것을 가능하게 한다. 이러한 접근법은 (팔레트 엔트리에 의해 이루어진 근사를 표현하는) 잔차가 송신되지 않는 경우에 특히 중요하다. 픽셀 값이 명시적으로 코딩된 그런 픽셀들은 "이스케이프된 픽셀들(escaped pixels)"로 명명되며 대응하는 인덱스는 팔레트에서 픽셀 값과 연관되는 인덱스들의 블록에 제공되지 않는다. HEVC의 현재 구현에서, "이스케이프된 픽셀들"은 픽셀 값과 연관되지 않은 팔레트의 엔트리 인덱스를 사용하여 인덱스들의 블록에서 시그널링된다.
이러한 팔레트 모드의 구현에서, 인덱스들의 블록 및 팔레트 외에, 이스케이프된 픽셀 값들을 저장하기 위해 이스케이프된 픽셀 값들의 블록이 구축된다.
예측자 블록(즉, 인덱스 블록), 이스케이프된 픽셀 값들의 블록, 및 아마도 잔차 및 팔레트는 인코딩된 현재 코딩 유닛을 표현하는 비트스트림에 추가되도록 인코딩된다.
팔레트 모드에 대한 인덱스들의 블록을 인코딩하기 위해, 신택스 요소들의 복수의 세트가 사용되며, 각각의 세트는 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 대응하는 그룹을 생성하기 위한 동작을 설정한다.
HEVC의 스크린 콘텐츠 코딩 확장의 현재의 드래프트 스팩에서는, 인덱스들의 블록의 각각의 인덱스를 블록 매트릭스의 위나 그 좌측에서의 인덱스를 참조하여 인코딩하기 위해 "카피 업(copy up)" 예측 및 "좌측 값(left value)" 예측이 제안된다.
"Pred mode"로 지칭되는 하나의 신택스 요소는 인덱스들의 블록 내의 대응하는 인덱스들의 그룹에 대해, 즉, 위에서 정의된 Run이 종료되지 않는 한 블록의 각각의 현재 인덱스에 대해 선택된 동작 또는 예측 모드를 정의한다. "레벨(Level)"로 지칭되는 선택적 ("Pred mode"의 기능) 제2 신택스 요소는 "좌측 값" 예측 모드에서만 인덱스들의 대응하는 그룹에 대한 새 인덱스 값을 지정한다. 그리고 "Run"으로 지칭되는 제3의 최종 신택스 요소는 "Pred mode" 신택스 요소에 의해 정의된 동작이 적용되는 연속적인 블록 위치들이 얼마나 많이 적용되는지를 지정한다. 즉, 이는 인덱스들의 대응하는 그룹에서 다수의 인덱스(연속적인 블록 위치를 포함함)를 정의한다.
본 발명의 실시예는 팔레트 모드의 코딩 효율을 향상시킨다.
제1 양태에서, 본 발명은 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하는 방법을 제공하며, 상기 방법은,
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트를 획득하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트로부터 픽셀들의 디코딩된 현재 블록을 형성하는 단계
를 포함하고,
인덱스들의 블록을 획득하는 단계는,
비트스트림으로부터, 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들을 획득하는 단계;
신택스 요소들에 기초하여 인덱스들의 블록의 인덱스들을 생성하는 단계를 포함하고,
획득된 신택스 요소들은, 인덱스들의 그룹들 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드(up-to-end codeword)에 의해 표시되는 신택스 요소를 포함한다.
제2 양태에서, 본 발명은 이미지 내의 픽셀들의 현재 블록을 인코딩하는 방법을 제공하며, 상기 방법은,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들을 생성하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록 및 이스케이프된 픽셀 값을 인코딩하는 단계
를 포함하고;
인덱스들의 블록을 인코딩하는 단계는,
인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들을 생성하는 단계를 포함하고;
신택스 요소들은, 인덱스들의 그룹들 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함한다.
제1 및 제2 양태들의 실시예들에서, 업-투-엔드 코드워드는 플래그를 포함할 수 있다. 이스케이프된 픽셀 값은 그런 이스케이프된 픽셀 값들의 블록을 포함할 수 있다.
실시예들에서, 신택스 요소들은 정의된 수의 인덱스들과 연관되고 인덱스들의 블록의 인덱스들의 그룹에 대응하는 미리 정의된 코드워드를 사용하고, 인덱스들의 블록 내의 최종 블록 위치들에 대응하는 신택스 요소는 업-투-엔드 코드워드를 사용한다.
정의된 수의 인덱스들과 연관된 미리 정의된 코드워드들은 짧은 코드워드들일 수 있고, 다른 정의된 수의 인덱스들과 연관된 다른 미리 정의된 코드워드들은 공통 코드워드 프리픽스(common codeword prefix) 및 가변 코드워드 서픽스(variable codeword suffix)로 구성될 수 있고; 업-투-엔드 코드워드는 공통 코드워드 프리픽스를 포함할 수 있다. 예를 들어, 업-투-엔드 코드워드는 공통 코드워드 프리픽스 외에 1비트 서픽스를 포함할 수 있다.
실시예들에서, 신택스 요소들은 세트들로 제공되고, 신택스 요소들의 세트에 대응하는 인덱스들의 그룹을 생성하는 단계는 세트의 제1 신택스 요소에 의존하며, 인덱스를 생성하는 데 사용되는 동작은,
블록 위치가 바로 위에 있는 인덱스를 반복하는 동작; 및
세트의 제2 신택스 요소에 코딩된 인덱스를 반복하는 동작 중 하나이다.
추가 양태에서는, 디바이스 내의 마이크로프로세서 또는 컴퓨터 시스템에 의해 실행될 때, 디바이스로 하여금 전술한 양태들 및 실시예들 중 어느 하나의 방법을 수행하게 하는 프로그램을 저장하는 비일시적인 컴퓨터 판독 가능 매체가 제공된다.
다른 양태에서는, 실행시 임의의 선행하는 양태 또는 실시예의 방법이 수행되게 하는 컴퓨터 프로그램이 제공된다. 컴퓨터 프로그램은 머신 판독 가능 매체와 같은 캐리어 상에 구현될 수 있다.
다른 양태에서는, 제2 양태 또는 그것의 실시예들을 사용하여 생성된 비트스트림 및 상기 비트스트림이 저장되는 저장 매체가 제공된다. 이러한 저장 매체는, 예를 들어 블루레이(Blu-Ray) 디스크, DVD, CD-ROM 또는 또 다른 디바이스 판독 가능 매체의 형태를 취할 수 있다.
다른 양태에서는, 상기 양태들 또는 실시예들 중 어느 하나의 방법을 수행하기 위해 적응된 수단을 포함하는 디바이스가 제공된다.
본 발명의 추가 양태에서는, 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하기 위한 디코딩 디바이스가 제공되며, 상기 디코딩 디바이스는,
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트를 획득하기 위한 수단 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트로부터 픽셀들의 디코딩된 현재 블록을 형성하기 위한 수단
을 포함하고,
인덱스들의 블록을 획득하는 것은,
비트스트림으로부터, 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들을 획득하는 것;
신택스 요소들에 기초하여 인덱스들의 블록의 인덱스들을 생성하는 것을 포함하고,
획득된 신택스 요소들은, 인덱스들의 그룹 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함한다.
본 발명의 또 다른 양태에서는, 이미지 내의 픽셀들의 현재 블록을 인코딩하기 위한 인코딩 디바이스가 제공되며, 상기 인코딩 디바이스는,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들을 생성하기 위한 수단 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록 및 이스케이프된 픽셀 값들을 인코딩하기 위한 수단
을 포함하고;
인덱스들의 블록을 인코딩하는 것은,
인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 그룹들을 생성하기 위한 신택스 요소들을 생성하는 것을 포함하고;
신택스 요소들은, 인덱스들의 대응하는 그룹 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이, 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치들에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함한다.
또 다른 양태에서, 본 발명은 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하는 방법을 제공하며, 상기 방법은,
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트를 획득하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트로부터 픽셀들의 디코딩된 현재 블록을 형성하는 단계
를 포함하고,
인덱스들의 블록을 획득하는 단계는,
비트스트림으로부터, 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들을 획득하는 단계 - 연속적인 블록 위치들의 수는 런(run)에 의해 표시됨 - ;
신택스 요소들에 기초하여 인덱스들의 블록의 인덱스들을 생성하는 단계를 포함하고,
획득된 신택스 요소들은, 인덱스들의 그룹의 런이 디코딩되고 있는 블록 내의 최종 런일 때를 표시하는 비트스트림 내의 플래그를 포함한다. 추가 양태에서, 상기 디코딩 방법 및 실행될 때 상기 디코딩 방법이 수행되게 하는 컴퓨터 프로그램을 수행하도록 구성된 프로세서 또는 이를 수행하기 위한 수단을 갖는 디바이스가 제공된다.
제2 양태에서, 본 발명은 이미지 내의 픽셀들의 현재 블록을 인코딩하는 방법을 제공하며, 상기 방법은,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들을 생성하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록 및 이스케이프된 픽셀 값을 인코딩하는 단계
를 포함하고;
인덱스들의 블록을 인코딩하는 단계는,
인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 그룹들을 생성하기 위한 신택스 요소들을 생성하는 단계를 포함하고, 인덱스들의 그룹의 연속적인 블록 위치들의 수는 런에 의해 표시되며,
신택스 요소들은, 인덱스들의 그룹의 런이 인코딩되고 있는 블록 내의 최종 런일 때를 표시하는 비트스트림 내의 플래그를 포함한다. 추가 양태에서, 상기 인코딩 방법 및 실행될 때 상기 방법이 수행되게 하는 컴퓨터 프로그램을 수행하도록 구성된 프로세서 또는 이를 수행하기 위한 수단을 갖는 디바이스가 제공된다.
신택스 요소들의 최종 세트(즉, 코딩 유닛 내의 최종 픽셀에 대한 세트)는 종종 많은 수의 픽셀(인덱스), 특히 이미지의 최종 코딩 유닛에 적용되는 데, 그 이유는 이미지의 끝이 일반적으로 모노톤이기 때문이다. 따라서, 그러한 "업-투-엔드" 값 또는 플래그를 사용하는 것은, 이것이 최종 "Run"과 관련된 많은 수의 인덱스를 표현하는 값을 인코딩하기 위해 많은 양의 비트를 사용하는 것을 피할 수 있게 하기 때문에 코딩 효율을 향상시킨다.
또한, (특히 디코딩 루프에서) 신택스 요소들의 최종 세트에 대해 처리되고 있는 인덱스들의 수에 대한 제어가 회피될 수 있다. 이것은 "업-투-엔드" 값 또는 플래그 덕분에, 나머지 모든 인덱스가 수반된다고 알려졌기 때문이다.
일 양태에서, 본 발명은 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하는 방법을 제공하며, 상기 방법은,
인덱스들의 블록, 이스케이프된 픽셀 값들의 블록 및 팔레트를 획득하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들의 블록은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록, 이스케이프된 픽셀 값들의 블록 및 팔레트로부터 픽셀들의 디코딩된 현재 블록을 형성하는 단계
를 포함하고,
인덱스들의 블록을 획득하는 단계는,
비트스트림으로부터 신택스 요소들의 복수의 세트를 획득하는 단계 - 각각의 세트는 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 대응하는 그룹을 생성하기 위한 동작을 설정함 - ;
신택스 요소들의 세트들에 기초하여 인덱스들의 블록의 인덱스들을 생성하는 단계를 포함하고,
각 세트에 제공된 신택스 요소(예를 들어, HEVC의 스크린 콘텐츠 코딩 트래프트 스펙 내의 Run 요소)는 적어도 2개의 이용 가능한 코드워드로부터 선택된 코드워드를 사용하며, 인덱스들의 대응하는 그룹을 형성하는 인덱스들이 그런 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치들에서의 인덱스들임을 표시하는 업-투-엔드 코드워드를 포함한다.
코드워드의 사용은 그러한 코드워드가 제공된 신택스 요소에 설정됨을 의미한다.
또한, 이미지 내의 픽셀들의 현재 블록을 코딩하는 방법이 제공되며, 상기 방법은,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들의 블록을 생성하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들의 블록은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록 및 이스케이프된 픽셀 값의 블록을 코딩하는 단계
를 포함하고;
인덱스들의 블록을 코딩하는 단계는,
신택스 요소들의 복수의 세트를 생성하는 단계를 포함하고, 각각의 세트는 디코더가 인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 대응하는 그룹을 생성하는 동작을 설정하며;
각각의 세트에 제공되는 신택스 요소는 적어도 2개의 이용 가능한 코드워드의 세트로부터 선택된 코드워드를 사용하고, 인덱스들의 대응하는 그룹을 형성하는 인덱스들이 그런 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드를 포함한다.
이에 상응하여, 본 발명의 상술한 실시예들은 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하기 위한 디코딩 디바이스를 제공하며, 상기 디코딩 디바이스는,
인덱스들의 블록, 이스케이프된 픽셀 값들의 블록 및 팔레트를 획득하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들의 블록은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록, 이스케이프된 픽셀 값들의 블록 및 팔레트로부터 픽셀들의 디코딩된 현재 블록을 형성하는 단계
를 수행하도록 구성된 적어도 하나의 마이크로프로세서를 포함하고,
인덱스들의 블록을 획득하는 단계는,
비트스트림으로부터 신택스 요소들의 복수의 세트를 획득하는 단계 - 각각의 세트는 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 대응하는 그룹들을 생성하기 위한 동작을 설정함 - ;
신택스 요소들의 세트에 기초하여 인덱스들의 블록의 인덱스들을 생성하는 단계를 포함하고,
각 세트에 제공된 신택스 요소는 적어도 2개의 이용 가능한 코드워드로부터 선택된 코드워드를 사용하며, 인덱스들의 대응하는 그룹을 형성하는 인덱스들이 그런 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치들에서의 인덱스들임을 표시하는 업-투-엔드 코드워드를 포함한다.
이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 코딩 디바이스가 또한 제공되며, 상기 코딩 디바이스는,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들의 블록을 생성하는 단계 - 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 이스케이프된 픽셀 값들의 블록은 팔레트 내의 픽셀 값과 연관되는 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
인덱스들의 블록 및 이스케이프된 픽셀 값의 블록을 코딩하는 단계
를 수행하도록 구성된 적어도 하나의 마이크로프로세서를 포함하고,
인덱스들의 블록을 코딩하는 단계는,
신택스 요소들의 복수의 세트를 생성하는 단계를 포함하고, 각각의 세트는 디코더가 인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 대응하는 그룹을 생성하는 동작을 설정하며;
각각의 세트에 제공되는 신택스 요소는 적어도 2개의 이용 가능한 코드워드의 세트로부터 선택된 코드워드를 사용하고, 인덱스들의 대응하는 그룹을 형성하는 인덱스들이 그런 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드를 포함한다.
이들 실시예의 선택적 특징은 첨부된 청구범위에서 정의된다. 이들 특징 중 일부는 방법을 참조하여 이하에서 설명되며, 본 발명의 실시예에 따른 디바이스 전용의 시스템 특징으로 치환될 수 있다.
일부 실시예에서, 제공된 신택스 요소에 대한 적어도 2개의 이용 가능한 코드워드의 세트는 정의된 수의 인덱스들과 연관된 미리 정의된 코드워드를 포함하고, 제공된 신택스 요소는 인덱스들의 블록에서 최종 블록 위치에 대응하는, 최종 세트로 지칭되는 세트를 제외한, 인덱스들의 블록의 인덱스들의 그룹에 대응하는 각각의 세트에 대해 그러한 미리 정의된 코드워드들 중 하나를 사용하고, 최종 세트의 제공된 신택스 요소는 업-투-엔드 코드워드를 사용한다.
이런 제공은 알려진 신택스 요소에 대한 추가 코드워드(업-투-엔드 코드워드)를 삽입함으로써 코딩 효율을 절약한다.
특정 실시예에 따르면, 정의된 수의 인덱스들과 연관된 일부 미리 정의된 코드워드는 짧은 코드워드이고, 다른 정의된 수의 인덱스들과 연관된 다른 미리 정의된 코드워드는 하나의 다른 미리 정의된 코드워드와 서로 상이한, 공통 코드워드 프리픽스 및 코드워드 서픽스로 이루어지고; 업-투-엔드 코드워드는 공통 코드워드 프리픽스를 포함한다.
짧은 코드워드는 일반적으로 공통 코드워드 프리픽스보다 (비트 관점에서) 짧거나 같다.
이 구성은 효율적인 코딩을 제공한다. 이는, 업-투-엔드 코드워드가 코딩 유닛(픽셀들의 블록)에서 최대 한번 사용되기 때문에, 가장 빈번한 수의 인덱스들에 대해 짧은 코드워드를 유지하는 것이 더 효율적이기 때문이다.
특정 실시예에서, 업-투-엔드 코드워드는 공통 코드워드 프리픽스 외에 1비트 서픽스를 포함한다. 즉, 공통 코드워드 프리픽스를 갖는 최단 코드워드는 "업-투-엔드" 코드워드에 사용된다. 이것은 코딩 효율을 유지하기 위한 것이다.
공통 코드워드 프리릭스 및 서픽스로 이루어진 업-투-엔드 코드워드를 사용하는 변형에서, 업-투-엔드 코드워드는 특정한 짧은 코드워드(즉, 공통 코드워드 프리픽스 없음)일 수 있다.
실시예에서, 신택스 요소들의 세트에 대응하는 인덱스들의 그룹을 생성하기 위한 동작은 그 세트의 제1 신택스 요소(예를 들어, Pred_mode 요소)에 의존하며, 인덱스들을 생성하는 데 사용된 동작은,
블록 위치가 바로 위에 인덱스를 반복하는 동작(이것은 HEVC의 "상향 카피(copy up)" 또는 "위로 카피(copy above)" 모드임); 및
세트의 제2 신택스 요소(예를 들어, Level 요소)에 코딩된 인덱스를 반복하는 동작(이것은 HEVC 표준에서 "좌측 카피 모드" 또는 "좌측 예측 모드" 또는 "인덱스 모드"로 알려짐)
중 하나일 수 있다.
본 발명의 다른 실시예들은 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 방법에 관한 것으로서,
팔레트 코딩 모드를 포함하는 2개 이상의 코딩 모드 각각에 대한 픽셀들의 현재 블록의 코딩을 평가하는 단계(또는 테스트된 코딩 모드들 중에서 최상의 모드를 선택하기 위해 코딩 비용을 테스팅, 즉 추정하는 단계) - 팔레트 코딩 모드는 (비트스트림에서 픽셀들의 현재 블록을 인코딩하는 데 사용되는) 인덱스들의 블록을 구축하기 위해 현재 팔레트를 사용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들에 연관시키는 엔트리들의 세트를 포함함 - :
평가에 기초하여 픽셀들의 현재 블록을 코딩하기 위해 2개 이상의 코딩 모드로부터 코딩 모드를 선택하는 단계 - 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 현재 블록의 픽셀들을 연속적으로 고려하는 단계를 포함함 -;
각각의 고려된 픽셀에 대해
거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견된다면, 엔트리 인덱스를 사용하여 고려된 픽셀을 인코딩하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견되지 않으면 고려된 픽셀을 이스케이프 코딩하는 단계 - 이스케이프 코딩하는 단계는 고려된 픽셀의 값의 명시적인 코딩을 포함함 -
를 포함하고,
이스케이프 코딩된 픽셀들의 수가 픽셀들의 현재 블록에 대한 미리 정의된 임계치를 초과하면, 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 중단된다.
이에 상응하여, 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 코딩 디바이스는,
팔레트 코딩 모드를 포함하는 2개 이상의 코딩 모드 각각에 대한 픽셀들의 현재 블록의 코딩을 평가하는 단계 - 팔레트 코딩 모드는 인덱스들의 블록을 구축하기 위해 현재 팔레트를 사용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들에 연관시키는 엔트리들의 세트를 포함함 - :
평가들에 기초하여 픽셀들의 현재 블록을 코딩하기 위해 2개 이상의 코딩 모드로부터 코딩 모드를 선택하는 단계 - 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 현재 블록의 픽셀들을 연속적으로 고려하는 단계를 포함함 - ;
각각의 고려된 픽셀에 대해
거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견된다면, 엔트리 인덱스를 사용하여 고려된 픽셀을 인코딩하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견되지 않으면 고려된 픽셀을 이스케이프 코딩하는 단계 - 이스케이프 코딩하는 단계는 고려된 픽셀의 값의 명시적인 코딩을 포함함 -
를 수행하도록 구성된 적어도 하나의 마이크로프로세서를 포함하고
이스케이프 코딩된 픽셀들의 수가 픽셀들의 현재 블록에 대한 미리 정의된 임계치를 초과하면, 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 중단된다.
이런 제공 덕분에 처리 시간이 절약될 수 있다. 이것은, 많은 수의 이스케이프 코딩된 픽셀이 팔레트 코딩 모드를 다른 코딩 모드들과 비교하여 매우 효율적이지 않게 만들기 때문이다. 결과적으로, 이런 큰 수가 알려지자마자 현재 코딩 유닛의 인코딩에 쓸모없는 처리 동작에 시간을 낭비할 가치는 없게 된다.
이들 실시예의 선택적 특징은 첨부된 청구 범위에서 정의된다. 이들 특징 중 일부는 방법을 참조하여 이하에서 설명되지만, 이들은 본 발명의 실시예에 따른 디바이스 전용의 시스템 특징으로 치환될 수 있다.
실시예들에서, 미리 정의된 임계치는 픽셀들의 현재 블록 내의 픽셀들의 수, 예를 들어 30%에 의존한다.
다른 실시예들에서, 프로세스는 픽셀이 이스케이프 코딩될 때마다 카운터를 증분시키는 단계를 더 포함하고; 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 카운터가 미리 정의된 임계치에 도달하자마자 중단된다. 이 접근법은 처리 시간을 절약하는 데 최적이다.
또 다른 실시예들에서, 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는,
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견되지 않으면, 고려된 픽셀을 팔레트에서 새로운 팔레트 엔트리로서 추가하는 단계;
픽셀들의 블록의 모든 픽셀이 고려될 때, 팔레트로부터 적어도 하나의 팔레트 엔트리를 제거하는 단계를 더 포함한다.
이런 제공은 현재 코딩 유닛의 픽셀들을 반영하고 메모리 요건을 충족시키는 팔레트를 동적으로 구축하는 것을 가능하게 한다.
특정 실시예에서, 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는,
팔레트 엔트리를 발견하거나 새로운 팔레트 엔트리를 추가할 때, 발견된 또는 새로운 팔레트 엔트리와 연관된 발생 카운터를 증분시키는 단계; 및
평가의 중단 여부를 결정하기 위해 제거된 팔레트 엔트리들의 발생 카운터들의 합을 미리 정의된 임계치와 비교하는 단계를 더 포함한다.
본 발명의 다른 독창적인(및 독립적인) 실시예들은 팔레트 코딩 모드를 사용하여 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 방법에 관한 것으로,
픽셀들의 현재 블록 및 현재 팔레트로부터 인덱스들의 블록을 구축하는 단계 - 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함함 - ;
인덱스들의 블록을 인코딩하는 단계를 포함하고;
픽셀들의 현재 블록에 대한 인덱스들의 블록을 구축하는 단계는, 픽셀들의 현재 블록의 각 픽셀에 대해, 거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계; 발견된 팔레트 엔트리의 엔트리 인덱스를 인덱스들의 블록에 추가하는 단계; 및 현재 픽셀 및 발견된 팔레트 엔트리의 엔트리 인덱스를 메모리에 저장하는 단계를 포함하고;
현재 픽셀의 값이 픽셀들의 현재 블록 내의 선행 픽셀의 값과 동일한 경우, 선행 픽셀에 대한 메모리에 저장된 엔트리 인덱스를 검색하는 단계, 및 검색된 인덱스를 현재 픽셀에 대한 엔트리 인덱스로서 인덱스들의 예측자 블록에 추가하는 단계를 포함한다.
이에 상응하여, 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 코딩 디바이스는,
픽셀들의 현재 블록 및 현재의 팔레트로부터 인덱스들의 블록을 구축하는 단계 - 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함함 - ;
인덱스들의 블록을 인코딩하는 단계
를 수행하도록 구성된 적어도 하나의 마이크로프로세서를 포함하고,
픽셀들의 현재 블록에 대한 인덱스들의 블록을 구축하는 단계는, 픽셀들의 현재 블록의 각 픽셀에 대해, 거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계; 발견된 팔레트 엔트리의 엔트리 인덱스를 인덱스들의 블록에 추가하는 단계; 및 현재 픽셀 및 발견된 팔레트 엔트리의 엔트리 인덱스를 메모리에 저장하는 단계를 포함하고;
현재 픽셀의 값이 픽셀들의 현재 블록 내의 선행 픽셀의 값과 동일한 경우, 선행 픽셀에 대한 메모리에 저장된 엔트리 인덱스를 검색하는 단계, 및 검색된 인덱스를 현재 픽셀에 대한 엔트리 인덱스로서 인덱스들의 블록에 추가하는 단계를 포함한다.
이러한 독창적인 실시예들은 팔레트 내의 인덱스에 대한 철저한 탐색을 수행하는 것을 피할 수 있게 한다. 평균적으로, 픽셀들 간 동일성을 테스트하기 위한 추가 처리 비용은, 이미지(특히, 스크린 콘텐츠 이미지)가 종종 픽셀 중복성의 하이 레벨을 갖기 때문에 철저한 탐색을 수행하지 않고 절감되는 처리 비용보다 적다.
"선행 픽셀"이 코딩 유닛에서 이미 처리된 픽셀들 중 임의의 픽셀일 수 있지만, 픽셀 비교의 양을 제한하고 선행 픽셀들을 저장하는 데 필요한 메모리를 제한하기 위해서 가능한 "선행 픽셀들"의 수를 제한하는 것이 가치가 있을 것이다. 바람직한 실시예에서, 선행 픽셀은 픽셀들의 현재 블록에서 현재 픽셀에 바로 선행하는 픽셀이다. 즉, 팔레트에서 발견된 최종 인덱스는 처리된 최종 인덱스와 동일한 경우 다음 픽셀에 다시 사용되도록 메모리에 유지된다. 변형에서, 현재 픽셀에 바로 선행하는 2개 이상의 픽셀이 고려될 수 있다.
바람직하게는 단 하나의 엔트리 인덱스 및 단 하나의 "선행" 픽셀이 언제든지 메모리에 저장됨에 유의한다. 이는 메모리 필요를 감소시킨다.
현재 픽셀에 바로 선행하는 픽셀을 고려하는 변형에서, 선행 픽셀은 팔레트 엔트리 인덱스가 인덱스들의 블록에 추가되는 픽셀들의 현재 블록의 최종 픽셀이다. 이런 제공은 팔레트 엔트리가 발견될 수 없는 이스케이프된 픽셀을 고려할 수 있게 하므로, 엔트리 인덱스가 레벨들의 블록에 추가되지 않는다.
다른 변형에서, 선행 픽셀은 픽셀들의 현재 블록에서 현재 픽셀 위에 위치하는 픽셀이다.
일부 실시예에서, 본 방법은 현재 픽셀의 값이 선행 픽셀의 값과 동일한지 여부를 결정하기 위해 현재 픽셀의 값을 선행 픽셀에 대한 메모리에 저장된 값과 비교하는 단계를 더 포함한다.
일반적으로 가장 가까운 팔레트 엔트리(임계치가 주어지면)는 대응하는 엔트리 인덱스를 현재 픽셀에 대한 인덱스들의 블록 내의 인덱스로서 제공하도록 선택되는 것에 유의한다.
본 발명의 다른 독창적인(및 독립적인) 실시예는 팔레트 코딩 모드를 사용하여 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 방법에 관한 것으로, 팔레트 코딩 모드는 각각의 엔트리 인덱스를 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 사용하고, 상기 방법은,
현재 팔레트를 예측하기 위한 2개 이상의 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계(또는 테스트된 코딩 모드들 중에서 최상의 모드를 선택하기 위해 코딩 비용을 테스팅, 즉 추정하는 단계)를 포함하고, 제1 팔레트 예측 모드는 현재 팔레트가 아닌 픽셀들의 현재 블록을 코딩하기 위해 이미지 내의 픽셀들의 선행 블록의 선행 팔레트를 사용하고;
상기 방법은,
현재 팔레트에서 재사용되는 선행 팔레트의 팔레트 엔트리들의 양을 결정하는 단계; 및
재사용된 팔레트 엔트리들의 양이 미리 정의된 임계치 아래라고 결정되면, 제1 팔레트 예측 모드를 사용하여 픽셀들의 현재 블록의 코딩의 평가를 스킵하는 단계를 더 포함한다.
이에 상응하여, 팔레트 코딩 모드를 사용하여 이미지 내의 픽셀들의 현재 블록을 코딩하기 위한 코딩 디바이스로서, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 사용하고, 상기 코딩 디바이스는,
현재 팔레트를 예측하기 위한 2개 이상의 팔레트 예측 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계 - 제1 팔레트 예측 모드는 현재 팔레트가 아닌 픽셀들의 현재 블록을 코딩하기 위해 이미지 내의 픽셀들의 선행 블록의 선행 팔레트를 사용함 -;
현재 팔레트에서 재사용되는 선행 팔레트의 팔레트 엔트리들의 양을 결정하는 단계; 및
재사용된 팔레트 엔트리들의 양이 미리 정의된 임계치 아래라고 결정되면, 제1 팔레트 예측 모드를 사용하여 픽셀들의 현재 블록의 코딩의 평가를 스킵하는 단계
를 수행하도록 구성된 적어도 하나의 마이크로프로세서를 포함한다.
이 접근법은 팔레트 공유 평가가 비효율적인 경우를 조기에 검출할 수 있게 하며, 이에 따라 가능한 한 빨리 이를 스킵한다.
본 발명의 다른 양태는, 디바이스 내의 마이크로프로세서 또는 컴퓨터 시스템에 의해 실행될 때, 디바이스로 하여금 위에 정의된 바와 같은 임의의 방법을 수행하게 하는 프로그램을 저장하는 비일시적인 컴퓨터 판독 가능 매체에 관한 것이다.
비일시적인 컴퓨터 판독 가능 매체는 방법 및 디바이스와 관련하여 위에 기재되고 이하에 기재되는 것들과 유사한, 특히 팔레트 코딩 모드의 코딩 효율을 향상시키는 것과 유사한 특징들 및 장점들을 가질 수 있다.
본 발명의 또 다른 양태는 위에 정의된 임의의 방법의 각 단계를 수행하도록 적응된 수단을 포함하는 디바이스에 관한 것이다.
본 발명의 또 다른 양태는 첨부된 도면의 도 17 또는 도 18 또는 도 19 또는 도 20 또는 도 21을 참조하고 본 명세서에서 실질적으로 설명되고 도시된 바와 같은, 이미지 내의 픽셀들의 현재 블록을 코딩 또는 디코딩하는 방법에 관한 것이다.
본 발명에 따른 방법들 중 적어도 일부는 컴퓨터 구현될 수 있다. 따라서, 본 발명은 완전 하드웨어 실시예, 완전 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 일반적으로 모두가 여기서 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 결합한 실시예의 형태를 취할 수 있다. 또한, 본 발명은 매체에 구체화된 컴퓨터 이용 가능 프로그램 코드를 갖는 임의의 유형의 표현 매체에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
본 발명은 소프트웨어로 구현될 수 있으므로, 본 발명은 임의의 적절한 캐리어 매체 상의 프로그램 가능 장치에 제공하기 위한 컴퓨터 판독 가능 코드로서 구현될 수 있다. 유형의 캐리어 매체는 플로피 디스크, CD-ROM, 하드디스크 드라이브, 자기 테이프 디바이스 또는 솔리드 스테이트 메모리 디바이스 등과 같은 저장 매체를 포함할 수 있다. 일시적인 캐리어 매체는 전기 신호, 전자 신호, 광 신호, 음향 신호, 자기 신호 또는 전자기 신호, 예를 들어 마이크로웨이브 또는 RF 신호와 같은 신호를 포함할 수 있다.
이제 본 발명의 실시예는 이하 도면을 참조하여 예로서만 설명될 것이다:
도 1은 HEVC 인코더 아키텍처를 도시한다.
도 2는 HEVC 디코더 아키텍처를 도시한다.
도 3은 인과 관계 영역(causal area)의 개념을 도시한다.
도 4는 HEVC 레인지 스크린 콘텐츠 코딩 확장에 의해 지원되는 크로마 포맷들을 도시한다.
도 5는 코딩 유닛들로 분할되는 코딩 트리 블록과 이들 코딩 유닛의 스캔 순서 디코딩을 도시한다.
도 6은 HEVC의 스크린 콘텐츠 코딩 확장에서 조사 중인 디코더 측에서의 팔레트 코딩 모드의 원리를 도시한다.
도 7은 잔차를 수반하지 않는, 디코더 측에서의 팔레트 코딩 모드의 변형을 도시한다.
도 8은 레벨들의 대응하는 블록 및 연관된 팔레트를 갖는 코딩 유닛의 예를 도시한다.
도 9는 레벨들의 동일 블록과 이런 레벨들의 블록을 인코딩하는 데 사용된 신택스 요소들의 세트를 도시한다.
도 10은 팔레트 모드와 관련된 신택스 요소들의 디코딩 프로세스를 도시한다.
도 11은 디코딩 측에서 레벨들의 블록을 구축하기 위한 재구성 프로세스를 도시한다.
도 12는 인코더에서의 예시적인 팔레트 결정 알고리즘을 도시한다.
도 13은 팔레트 모드에 대한 인코더에서의, Pred 모드, 레벨 및 Run 신택스 요소들뿐만 아니라, 이스케이프된 코딩 모드의 선택을 도시한다.
도 14는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략적인 블록도이다.
도 15는 "Run" 신택스 요소를 인코딩하기 위한 알고리즘을 도시한다.
도 16은 "Run" 요소를 인코딩하기 위한 다른 알고리즘을 도시한다.
도 17은 도 15와 비교하여 "Run"신택스 요소를 인코딩하기 위한 개선된 알고리즘을 도시한다.
도 18은 도 16과 비교하여 "Run" 신택스 요소를 인코딩하기 위한 개선된 알고리즘을 도시한다.
도 19는 이스케이프 코딩된 픽셀의 시그널링을 포함하는, 팔레트 코딩 모드를 사용하여 코딩 유닛을 레벨들의 블록으로 변환하기 위한 개선된 알고리즘을 도시한다.
도 20은 팔레트 코딩 모드를 위한 팔레트를 구축하기 위한 개선된 알고리즘을 도시한다.
도 21은 팔레트 코딩 모드들을 평가하기 위한 개선된 알고리즘을 도시한다.
도 1은 HEVC 인코더 아키텍처를 도시한다.
도 2는 HEVC 디코더 아키텍처를 도시한다.
도 3은 인과 관계 영역(causal area)의 개념을 도시한다.
도 4는 HEVC 레인지 스크린 콘텐츠 코딩 확장에 의해 지원되는 크로마 포맷들을 도시한다.
도 5는 코딩 유닛들로 분할되는 코딩 트리 블록과 이들 코딩 유닛의 스캔 순서 디코딩을 도시한다.
도 6은 HEVC의 스크린 콘텐츠 코딩 확장에서 조사 중인 디코더 측에서의 팔레트 코딩 모드의 원리를 도시한다.
도 7은 잔차를 수반하지 않는, 디코더 측에서의 팔레트 코딩 모드의 변형을 도시한다.
도 8은 레벨들의 대응하는 블록 및 연관된 팔레트를 갖는 코딩 유닛의 예를 도시한다.
도 9는 레벨들의 동일 블록과 이런 레벨들의 블록을 인코딩하는 데 사용된 신택스 요소들의 세트를 도시한다.
도 10은 팔레트 모드와 관련된 신택스 요소들의 디코딩 프로세스를 도시한다.
도 11은 디코딩 측에서 레벨들의 블록을 구축하기 위한 재구성 프로세스를 도시한다.
도 12는 인코더에서의 예시적인 팔레트 결정 알고리즘을 도시한다.
도 13은 팔레트 모드에 대한 인코더에서의, Pred 모드, 레벨 및 Run 신택스 요소들뿐만 아니라, 이스케이프된 코딩 모드의 선택을 도시한다.
도 14는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략적인 블록도이다.
도 15는 "Run" 신택스 요소를 인코딩하기 위한 알고리즘을 도시한다.
도 16은 "Run" 요소를 인코딩하기 위한 다른 알고리즘을 도시한다.
도 17은 도 15와 비교하여 "Run"신택스 요소를 인코딩하기 위한 개선된 알고리즘을 도시한다.
도 18은 도 16과 비교하여 "Run" 신택스 요소를 인코딩하기 위한 개선된 알고리즘을 도시한다.
도 19는 이스케이프 코딩된 픽셀의 시그널링을 포함하는, 팔레트 코딩 모드를 사용하여 코딩 유닛을 레벨들의 블록으로 변환하기 위한 개선된 알고리즘을 도시한다.
도 20은 팔레트 코딩 모드를 위한 팔레트를 구축하기 위한 개선된 알고리즘을 도시한다.
도 21은 팔레트 코딩 모드들을 평가하기 위한 개선된 알고리즘을 도시한다.
도 1은 HEVC 인코더 아키텍처를 도시한다. 비디오 인코더에서, 최초 시퀀스(101)는 픽셀들의 블록들로 분할된다(102). 코딩 모드는 그 후 각각의 블록에 영향을 받는다. HEVC에서 전형적으로 사용되는 코딩 모드들에는 2개의 패밀리, 즉 공간 예측에 기초한 모드(INTRA 모드)(103), 및 움직임 추정(104) 및 움직임 보상(105)에 기초한 시간 예측에 기초한 모드(INTER, Bidir, Skip 모드)가 있다. HEVC 스크린 콘텐츠 코딩 확장으로 알려진, 현재 설계되고 있는 HEVC의 확장은 픽셀들의 블록들을 인코딩하기 위해 인트라(INTRA) 및 인터(INTER) 코딩 모드들과 경쟁하는 추가 코딩 모드, 즉 팔레트 코딩 모드를 추가한다. 이 팔레트 코딩 모드는, 특히 도 6 내지 도 13, 도 15 및 도 16을 참조하여 이하에서 보다 상세하게 설명된다.
인트라 코딩 유닛은 인트라 예측으로 불리는 프로세스에 의해 그 인과 관계 경계에서의 인코딩된 픽셀들로부터 일반적으로 예측된다.
인터 코딩 모드의 시간 예측은 먼저, 움직임 추정 단계(104)에서 코딩 유닛에 가장 가까운 참조 영역을 참조 프레임(116)으로 불리는 이전 또는 미래 프레임에서 찾는 것으로 이루어진다. 이 참조 영역은 예측자 블록을 구성한다. 다음에, 이 코딩 유닛은 움직임 보상 단계(105)에서 잔차를 계산하기 위해 예측자 블록을 사용하여 예측된다.
공간 예측 및 시간 예측의 둘 다의 경우에, 잔차는 최초 예측자 블록에서 코딩 유닛을 차감하여 계산된다.
인트라 예측에서는, 예측 방향이 인코딩된다. 시간 예측에서는, 적어도 하나의 움직임 벡터가 인코딩된다. 그러나 움직임 벡터 인코딩과 관련된 비트레이트 코스트를 더 감소시키기 위해, 움직임 벡터는 직접 인코딩되지 않는다. 사실상, 움직임이 동종이라고 가정하면, 이 움직임 벡터와 그 주위의 움직임 벡터 간의 차이로서 움직임 벡터를 인코딩하는 것에 특히 관심이 있다. 예를 들어, H.264/AVC 코딩 표준에서, 움직임 벡터들은 현재 블록의 상부 및 좌측에 위치한 3개의 블록 사이에서 계산된 중간 벡터에 관해 인코딩된다. 중간 벡터와 현재 블록 움직임 벡터 사이에서 계산된, 잔차 움직임 벡터(residual motion vector)로 불리는 차이만이 비트스트림으로 인코딩된다. 이것은 모듈 "Mv 예측 및 코딩"(117)에서 처리된다. 각각의 인코딩된 벡터의 값은 움직임 벡터 필드(118)에 저장된다. 예측에 사용되는 인접 움직임 벡터들은 움직임 벡터 필드(118)로부터 추출된다.
그런 다음, 모듈(106)에서 레이트 왜곡 성능을 최적화하는 모드가 선택되고, 예를 들어 D+λ.R과 같은 람다 기반의 표준을 사용하고, 여기서, D는 왜곡이고, λ는 람다 또는 라그랑지안 계수(Lagrangian coefficient)이며, R은 레이트이다. 중복성을 더 감소시키기 위해, 변환, 전형적으로 DCT가 모듈(107)에서 잔차 블록에 적용되고, 양자화는 모듈(108)에서 계수들에 적용된다. 계수들의 양자화된 블록은 이후 모듈(109)에서 엔트로피 코딩되고, 결과는 비트스트림(110)에 삽입된다.
인코더는 이후 모듈들(111 내지 116)에서 미래 움직임 추정을 위해 인코딩된 프레임의 디코딩을 수행한다. 이것은 인코더에서의 디코딩 루프이다. 이러한 단계들은 인코더 및 디코더가 동일 참조 프레임들을 가지게 할 수 있다. 코딩된 프레임을 재구성하기 위해서, 잔차는 픽셀 도메인에서 "재구성된" 잔차를 제공하기 위해 모듈(111)에서 역 양자화되고 모듈(112)에서 역 변환된다. 인코딩 모드(인터 또는 인트라)에 따라, 이 잔차는 인터 예측자(114) 또는 인트라 예측자(113)에 추가된다.
다음에, 이런 제1 재구성은 하나 또는 여러 종류의 포스트 필터링에 의해 모듈(115)에서 필터링된다. 이들 포스트 필터는 디코딩 루프에 통합된다. 이것은 이들이 인코더 및 디코더에서 동일 참조 프레임들을 사용하기 위해 인코더 및 디코더에서의 재구성된 프레임에 적용될 필요가 있다는 것을 의미한다. 이런 포스트 필터링의 목표는 압축 아티팩트를 제거하는 것이다.
예를 들어, H.264/AVC는 디블록킹 필터(deblocking filter)를 사용한다. 이 필터는 잔차의 DCT 양자화 및 블록 움직임 보상에 기인한 블록킹 아티팩트(blocking artifact)를 제거할 수 있다. 현재의 HEVC 표준에서는, 디블로킹(deblocking) 필터, 샘플 적응 오프셋(SAO)의 2가지 타입의 루프 필터가 사용된다.
HEVC 디코더의 원리는 도 2에 표현된다. 비디오 스트림(201)은 모듈(202)에서 먼저 엔트로피 디코딩된다. 잔차 데이터는 이후 잔차를 형성하는 픽셀 값들을 획득하기 위해 모듈(203)에서 역 양자화되고 모듈(204)에서 역 변환된다. 모드 데이터는 또한 엔트로피 디코딩되고, 모드의 기능에서 인트라 타입 디코딩 또는 인터 타입 디코딩이 수행된다. 인트라 모드의 경우에, 인트라 예측 방향은 비트스트림으로부터 디코딩된다. 예측 방향은 이후 참조 영역을 위치 지정하기 위해 사용된다(205). 모드가 인터이면, 움직임 정보는 비트스트림으로부터 디코딩된다(202). 이것은 참조 프레임 인덱스 및 움직임 벡터 잔차로 이루어져 있다. 움직임 벡터 예측자는 움직임 벡터를 획득하기 위해 움직임 벡터 잔차에 추가된다(210). 움직임 벡터는 이후 참조 영역을 참조 프레임에 위치 지정하기 위해 사용된다(206). 참조 영역은 디코딩된 프레임을 재구성하기 위해 잔차에 추가된다. 움직임 벡터 필드 데이터(211)는 다음 디코딩된 움직임 벡터들의 예측에 사용되도록 하기 위해 디코딩된 움직임 벡터를 이용하여 업데이트되는 것에 유의한다. 디코딩된 프레임의 이런 제1 재구성은 이후 인코더 측에서 사용된 것과 정확히 동일한 포스트 필터를 이용하여 포스트 필터링된다(207). 디코더의 출력은 압축 해제된 비디오이다(209).
도 3은 HEVC에서와 같이 블록별 인코딩으로부터 생기는 인과 관계 원리를 도시한다.
하이 레벨에서, 이미지는 래스터 스캔 순서로 인코딩되는 코딩 유닛들로 분할된다. 따라서, 블록(3.1)을 코딩할 때, 영역(3.3)의 모든 블록들은 이미 인코딩되었고, 인코더에 이용 가능한 것으로 간주될 수 있다. 유사하게, 디코더에서 블록(3.1)을 디코딩할 때, 영역(3.3)의 모든 블록들은 이미 디코딩되었고 따라서 재구성되었고, 디코더에 이용 가능한 것으로 간주될 수 있다. 영역(3.3)은 코딩 유닛(3.1)의 인과 관계 영역으로 불린다. 코딩 유닛(3.1)이 인코딩될 때, 이것은 다음 코딩 유닛을 위한 인과 관계 영역에 속할 것이다. 이런 다음 코딩 유닛은 모든 다음 코딩 유닛들과 더불어, 점선 영역으로서 나타낸 영역(3.4)에 속하고, 현재 코딩 유닛(3.1)을 코딩하는 데 사용될 수 없다. 인과 관계 영역이 재구성된 블록들에 의해 구성된다는 점에 유의한다. 주어진 코딩 유닛을 인코딩하는 데 사용되는 정보는 이 정보가 디코딩에 이용 가능하지 않기 때문에 이미지의 최초 블록들이 아니다. 디코딩에 이용 가능한 정보만이 인과 관계 영역 내의 픽셀들의 블록들의 재구성된 버전, 즉, 이들 블록의 디코딩된 버전이다. 이러한 이유로, 인코딩에서, 인과 관계 영역의 이전에 인코딩된 블록들은 이들 블록의 이런 재구성된 버전을 제공하도록 디코딩된다.
블록(3.1)을 인코딩할 때 인과 관계 영역에서 블록(3.2)으로부터 정보를 사용하는 것이 가능하다. HEVC 스크린 콘텐츠 코딩 드래프트 스팩에서, 비트스트림으로 송신될 수 있는 변위 벡터(3.5)는 이 블록(3.2)을 표시할 수 있다.
도 5는 코딩 트리 블록의 코딩 유닛들로의 분할, 및 이들 코딩 유닛을 순차적으로 처리하기 위한 예시적 스캔 순서를 도시한다. HEVC 표준에서, 블록 구조는 코딩 트리 블록(CTB)(Coding Tree Block)들에 의해 조직화된다. 프레임은 여러 비중첩된 정사각형 코딩 트리 블록들을 포함한다. 코딩 트리 블록의 크기는 64픽셀×64픽셀 내지 16×16과 동일할 수 있다. 이 크기는 시퀀스 레벨에서 결정된다. 코딩 효율의 관점에서, 가장 효율적인 크기는 가장 큰 크기, 64×64이다. 모든 코딩 트리 블록들이 이미지 경계를 제외하곤 그 크기가 동일한 것에 유의하며, 이것은 이들이 행들로 배열된다는 것을 의미한다. 경계 CTB들의 크기는 나머지 픽셀들의 양에 따라 적응된다.
각각의 코딩 트리 블록은 하나 이상의 정사각형 코딩 유닛(CU)을 포함한다. 코딩 트리 블록은 쿼드 트리 구조에 기초하여 여러 코딩 유닛들로 분할된다. 코딩 트리 블록 내의 각각의 코딩 유닛의 처리(코딩 또는 디코딩) 순서는 래스터 스캔 순서에 기초하는 쿼드 트리 구조를 따른다. 도 5는 하나의 코딩 트리 블록에서 코딩 유닛들의 처리 순서의 예를 도시한다. 본 도면에서, 각각의 코딩 유닛 내의 수는 이 코딩 트리 블록의 각각의 대응하는 코딩 유닛의 처리 순서를 제공한다.
HEVC 레인지 확장(일반적으로 HEVC RExt라고도 함)은 확장된 비디오 포맷을 처리하기 위한 새로운 비디오 코딩 표준 HEVC의 확장이다.
이 확장의 목적은 비디오 시퀀스들을 추가 컬러 포맷들 및 비트 심도로 가능한 손실 없이 코딩하기 위한 추가 툴을 제공하는 것이다. 특히, 이런 확장은 4:2:2 컬러 포맷뿐만 아니라 4:4:4 비디오 포맷과 더불어 4:2:0 비디오 포맷을 지원하도록 설계된다(도 4 참조). 컬러 이미지는 일반적으로 3개의 컬러 컴포넌트 R, G 및 B로 구성된다. 이들 컴포넌트는 일반적으로 상관되며, 이미지들을 처리하기 전에 컬러 컴포넌트들의 상관을 감소시키는 것(de-correlate)은 이미지 및 비디오 압축에서 매우 일반적이다. 컬러 컴포넌트들의 상관을 감소시키는 가장 일반적인 포맷은 YUV 컬러 포맷이다. YUV 신호들은 전형적으로 선형 변환을 3개의 입력 R, G 및 B 입력 프레임들에 적용함으로써, 이미지들의 RGB 표현으로부터 생성된다. Y는 보통 루마 컴포넌트로 불리고, U와 V는 일반적으로 크로마 컴포넌트들로 불린다. 용어 'YCbCr'는 또한 일반적으로 용어 'YUV' 대신에 사용된다.
3개의 컬러 컴포넌트에 대해 상이한 샘플링 비를 사용하는 것이 매우 일반적이다. 서브샘플링 방안은 일반적으로 3개 부분의 비 J:a:b(예를 들어, 4:2:2)로 표현되고, 이것은 J개 픽셀의 폭과 2개 픽셀의 높이를 갖는 개념 영역 내의 휘도 및 색차 샘플들의 수를 기술한다. 이 부분들은 (이들의 각각의 순서에서) 다음과 같다:
J: 수평 샘플링 참조(개념 영역의 폭)(보통, 4).
a: J개 픽셀의 제1 행에서 색차 샘플들(Cr, Cb)의 수.
b: J개 픽셀의 제2 행에서 (추가)색차 샘플들(Cr, Cb)의 수.
도 4는 HEVC RExt에서 상이하게 고려된 크로마 포맷(Chroma format)들을 도시한다. 이러한 포맷들은 3개의 컬러 컴포넌트들의 상이한 픽처 크기와 컬러 컴포넌트들의 상이한 타입 때문에 다르게 된다.
4:2:0 YUV 크로마 포맷에서, Y 컴포넌트 영역이 W 픽셀들과 동일한 폭 및 H 픽셀들과 동일한 높이를 갖는 경우, U 및 V 컴포넌트 영역들은 픽셀들과 동일한 폭 W/2 및 H/2 픽셀들과 동일한 높이를 갖는다.
4:2:2 YUV 크로마 포맷에서, Y 컴포넌트 영역이 W 픽셀들과 동일한 폭 및 H 픽셀들과 동일한 높이를 갖는 경우, U 및 V 컴포넌트 영역은 W/2 픽셀들과 동일한 폭 및 H 픽셀들과 동일한 높이를 갖는다.
4:4:4 YUV 또는 RGB 크로마 포맷에서, 3가지 컬러 컴포넌트에 대한 영역들은 동일한 폭 W 및 높이 H를 갖는다.
픽처가 모노크롬일 때, 그것의 포맷은 4:0:0으로 명명된다.
픽셀의 각 컬러 컴포넌트를 코딩하는 데 사용되는 비트들의 수인 비트 심도와 관련하여, 현재 HEVC 표준이 8비트 및 10비트 비트 심도(즉, 256 내지 1,024 가능한 컬러)를 갖는 4:2:0 컬러 포맷을 처리할 수 있는 경우, HEVC RExt는 8비트에서 최대 16비트까지의 확장된 비트 심도(즉, 최대 65,536 가능 컬러)로 4:2:2 및 4:4:4 비디오 포맷을 추가로 지원하도록 설계된다. 이것은 특히, 컬러 컴포넌트들의 더 큰 다이내믹 레인지를 갖는데 유용하다.
HEVC RExt는 또한 입력 시퀀스들의 무손실 인코딩을 제공하도록 설계되고; 이것은 입력(101)과 완전히 동일한 디코딩된 출력(209)을 갖게 하는 것이다. 이를 달성하기 위해, 다수의 툴이 종래의 HEVC 손실성 코덱과 비교해서, 수정되거나 추가되었다. 손실 없이 동작하기 위한 예시적 수정들 또는 추가들의 완전하지 않은 리스트가 이하에 제공된다:
- 양자화 단계(108)의 제거(디코더에서의 203);
- 통상의 코사인/사인 변환(107) 때문에 바이패스 변환의 강제 활성화는 에러들을 도입할 수 있다(디코더에서의 204);
- 포스트 필터링(115)과 같은 양자화 노이즈의 보상시에 특별히 맞춤화된 툴의 제거(디코더에서의 207).
현재 표준화를 고려중인 HEVC의 스크린 콘텐츠 코딩(Screen Content Coding)(SCC)으로 불리는 새로운 확장에서 "스크린 콘텐츠" 비디오 시퀀스를 자연적 시퀀스와 더불어 효율적으로 인코딩하기 위해 추가 툴이 현재 설계되고 있다. "스크린 콘텐츠" 비디오 시퀀스들은, 예를 들어 텍스트, 파워포인트 프레젠테이션, 그래픽 사용자 인터페이스, 테이블들(예를 들어, 스크린 샷들)을 포함하는, 임의의 다른 디바이스의 개인용 컴퓨터로부터 캡처되는 것들에 대응하는 매우 특정한 콘텐츠를 갖는 특정한 비디오 시퀀스들을 지칭한다. 일반적으로 4:4:4 포맷의 이러한 특정한 비디오 시퀀스는 자연적 비디오 시퀀스와 비교하여 상당히 다른 통계치를 갖는다. 비디오 코딩에서, HEVC를 포함하는, 종래의 비디오 코딩 툴의 성능은 때때로 그런 "스크린 콘텐츠" 시퀀스를 처리할 때 감동스럽지 않다고 증명되었다.
"스크린 콘텐츠" 비디오 시퀀스를 처리하기 위해 HEVC SCC에서 현재 논의되는 툴은 인트라 블록 카피 모드 및 팔레트 모드를 포함한다. 이들 모드에 대한 프로토타입들은 자연적 비디오 시퀀스들을 목표로 하고 있는 종래의 방법에 비해 양호한 코딩 효율을 나타낸다. 본 명세서는 팔레트 코딩 모드에 초점을 맞춘다.
HEVC SCC의 팔레트 모드의 구현은 예측을 기반으로 한다. 이것은 임의의 다른 무손실 또는 손실성 코딩 방법들에 평범하게 적용될 수 있다. 이것은 팔레트 방법이 움직임 예측(인터 케이스) 또는 인트라 예측에 의해 수행되는 예측과 유사하게, 주어진 코딩 유닛의 코딩을 위한 예측자를 구축하는 데 사용된다는 것을 의미한다. 예측자의 생성 후에, 잔차 코딩 유닛은 변환, 양자화 및 코딩된다. 즉, 도 1 및 도 2를 참조하여 전술한 바와 같은 동일한 프로세스가 적용된다.
도 7을 참조하여 아래에 설명되는 다른 구현에서, 팔레트 모드로 구축된 블록은 임의의 잔차를 포함함이 없이 비트스트림에 직접 인코딩된다.
팔레트는 일반적으로 컬러들의 N-투플(tuple)의 한정된 세트를 포함하는 테이블에 의해 표현되고, 각각의 컬러는 주어진 컬러 공간에서 그 컴포넌트들에 의해 정의된다(예를 들어, YUV 컬러 공간에 기초하는 도 8의 803을 참고). 예를 들어, 전형적인 4:4:4 RGB 포맷에서, 팔레트는 N-투플(이 경우, RGB에 대해 N=3)의 P 요소들의 리스트로 구성된다. 더 정확하게, 각각의 요소는 RGB 포맷의 컬러 컴포넌트들의 고정된 트리플릿에 대응한다. 물론, 이것은 RGB 또는 YUV 컬러 포맷에 한정되지 않는다. 임의의 다른 컬러 포맷은 팔레트에 의해 표현될 수 있고, N이 3과 다를 수 있다는 것을 의미하는, 컬러 컴포넌트들의 더 작은 수 또는 더 높은 수를 사용할 수 있다.
인코더 측에서, SCC에서 고려 중인 팔레트 모드는 주어진 입력 코딩 유닛의 픽셀 값들을, 연관된 팔레트에서 엔트리들을 식별하는 레벨들로 불리는 인덱스들로 변환하는 것으로 구성된다. 변환 후에, 최종 코딩 유닛 또는 인덱스들의 블록은 레벨들로 구성되고, 이후 연관된 팔레트, 일반적으로는 코딩 유닛을 표현하는 데 사용되는 컬러들의 한정된 수의 트리플릿을 갖는 테이블과 함께 디코더에 송신된다. 팔레트가 한정된 수의 컬러들을 정의하기 때문에, 인덱스들의 블록으로의 변환은 최초 입력 코딩 유닛을 보통 근사화한다.
인코더 측에 팔레트 모드를 적용하기 위해, 픽셀들의 코딩 유닛을 변환하기 위한 예시적 방식은 다음과 같이 방식으로 수행된다:
- 예를 들어, 전체 왜곡을 최소화함으로써, 인코딩하기 위한 픽셀들의 코딩 유닛을 가장 잘 기술하는 P 트리플릿들을 찾는 방식;
- 그 다음에 P 트리플릿 중 가장 가까운 컬러를 코딩 단위의 각 픽셀과 연관시키는 방식: 인코딩할 값(또는 레벨)은 연관된 가장 가까운 컬러의 엔트리에 대응하는 인덱스이다.
- 추가로, 현재 처리된 픽셀 값이 팔레트의 임의의 엔트리와 멀리 떨어져 있으면 팔레트를 사용하지 않는 것이 좋을 수 있다. 이러한 상황에서 SCC는 픽셀의 이스케이프 코딩을 제공하며, 이는 양자화 단계를 적용한 후 비트스트림에서 그 픽셀 값(이스케이프 코딩된 픽셀)의 명시적 인코딩을 의미한다.
각각의 코딩 유닛에 대해, 팔레트(즉, 발견된 P 트리플릿), 인덱스들 또는 레벨들의 블록, 이스케이프 코딩된 픽셀("이스케이프된 픽셀"의 블록에 저장됨) 및 최초 코딩 유닛과 컬러 공간 내의 인덱스들의 블록(블럭 예측자임) 간의 차이를 표현하는 선택적인 잔차는 비트스트림(110)에서 코딩되고 디코더로 전송된다.
디코더에서, 팔레트 모드는 변환 동작을 반대 방식으로 하는 것으로 구성된다. 이것은, 코딩 유닛의 각각의 픽셀과 연관된 각각의 디코딩된 인덱스가 코딩 유닛의 각각의 픽셀에 대한 대응하는 컬러를 생성하기 위해, 팔레트의 대응하는 컬러 또는 비트스트림으로부터 디코딩된 이스케이프된 픽셀 값(이스케이프 코딩이 적용되었는지 여부에 따라 달라짐)에 의해 대체됨을 의미한다. 이것은 디코더에서 컬러 공간에 인덱스들의 블록을 구축하는 것이다.
도 6은 디코더에서 팔레트 코딩 모드의 제1 구현의 원리를 더 예시한다. 현재 코딩 유닛에 대한 코딩 모드는 비트스트림(601)으로부터 단계 602에서 추출된다. 현재, 팔레트 모드는 비트스트림에서 스킵 플래그 이전에 위치한 플래그에 의해 식별된다(다른 코딩 모드들은 도 1 및 2를 참고하여 상술했다). 이 플래그는 단일 콘텍스트를 사용하여 코딩된 CABAC이다. 이 모드가 팔레트 모드이면(603), 팔레트 모드의 관련 신택스(605), 즉 팔레트, 레벨들의 블록, 이스케이프된 픽셀들의 블록 및 선택적인 잔차에 대한 정보가 비트스트림(601)으로부터 추출되고 디코딩된다(604).
그 후, 단계 606 동안, 디코딩된 데이터로부터 팔레트(607) 및 레벨들의 블록(608)의 두 요소가 구축된다. 레벨들의 블록 및 연관된 팔레트로부터, 픽셀 도메인 내의 코딩 유닛 예측자(610)가 구축된다(609). 이것은 레벨들의 블록의 각각의 레벨에 대해, 컬러(RGB 또는 YUV)가 각각의 픽셀과 연관된다는 것을 의미한다.
그 다음, 코딩 유닛 잔차는 비트스트림(601)으로부터 디코딩된다(611). 팔레트 모드의 현재 구현에서, 팔레트 모드와 연관된 잔차는 공통 HEVC 인터 잔차 코딩 방법, 즉 골롬 코딩(Golomb coding)을 이용하여 코딩된다. 코딩 유닛의 잔차(612)를 획득하기 위해, 종래의 역 양자화 및 역 변환이 수행된다. 블록 예측자(610)는 재구성된 코딩 유닛(614)을 형성하기 위해 이 코딩 유닛 잔차(612)에 추가된다(613).
도 6의 팔레트 모드 예측의 HEVC SCC 변형이 이제 도 7을 참조하여 설명되며, 여기서 701 내지 708은 601 내지 608과 거의 유사하다.
이 변형에서는 잔차가 없고 예측 자체가 없으며, 이는 팔레트에 의해 적절히 표현될 수 있는 픽셀만이 팔레트 모드의 대응하는 엔트리를 사용하여 코딩된다는 것을 의미한다.
이런 특정 맥락에서, 팔레트에 의해 적절히 표현될 수 없는 픽셀은 팔레트의 컬러 엔트리를 참조함이 없이 상이하게 코딩된다. 팔레트의 엔트리를 사용하는 대신에, 양자화된 픽셀 값이 명시적으로 송신된다. 이런 픽셀들은 위에서 언급한 "이스케이프 값들" 또는 "이스케이프 코딩된 픽셀들"로 알려져 있다. 이런 이스케이프 모드는 임의의 팔레트 엔트리를 시그널링하기 위해 이를 사용하지 않고 이로 인해 팔레트 엔트리를 낭비함이 없이 매우 드문 픽셀을 처리하는 효율적인 방식을 제공한다(팔레트는 크기가 제한될 수 있음).
픽셀이 이스케이프된 값으로 코딩될 때, 후술될 이스케이프 플래그는, 코딩 유닛의 어느 픽셀이 이스케이프 코딩되는지와 동일한 코딩 유닛의 어느 픽셀이 팔레트 엔트리를 사용하여 코딩되는지를 디코더가 식별할 수 있게 하기 위해, 미리 결정된 값으로 설정된다.
픽셀들을 시그널링하는 예는 "Pred mode" 요소 앞에 "이스케이프" 플래그를 추가하는 것이며, 픽셀이 팔레트-코딩되는지(팔레트 엔트리로부터의 레벨을 사용하여 코딩되는지) 또는 이스케이프-코딩되는지(그러므로 명시적 픽셀 값을 이용함)를 나타내는 것이다. "이스케이스" 플래그 뒤에는 명시적 픽셀 값이 온다("Pred mode", "Level" 및 "Run" 요소는 이 픽셀에 대해 제공되지 않는다).
변형에서, "이스케이프" 정보는 어느 픽셀이 "이스케이프 코딩된" 픽셀인지를 시그널링하기 위해 인덱스들의 블록에서 특정한 레벨 값("이스케이프 코딩된" 픽셀에 전용)을 사용할 수 있다.
임의의 실시예에서, 명시적 픽셀 값들은 예측 가능하게(예를 들어, 인접 픽셀 값과의 차이로서) 또는 가변 길이 코딩을 사용하여 코딩되거나 코딩되지 않을 수 있고, 엔트로피 코딩을 위한 가능한 결과들(비트들의 콘텍스트 및 수 등등)로 양자화되거나 되지 않을 수 있다.
도 6과 비교하면 몇 가지 단계가 수정되었다.
신택스는 어떤 잔차도 인코딩되지 않은 관계로 약간 변경되기 때문에, 단계 704는 605와 비교하여 상이한 특정 신택스(705)을 추출한다. 이는, 도 7의 팔레트 모드에서, 픽셀 값들이 팔레트 엔트리에 의해 적절히 표현된 경우에만 이들이 팔레트 모드를 사용하여 코딩되기 때문이다. 그렇지 않으면, 즉 픽셀 값이 팔레트 모드를 사용하여 코딩될 수 없는 경우(예를 들어, 팔레트 엔트리에 의해 적절히 표현할 수 없거나 팔레트가 최대 크기에 도달했기 때문에 새로운 값을 추가할 수 없는 경우), 픽셀 값은 이스케이프된 값으로 코딩된다.
단계 706에서, 도 6의 단계 606과 유사하게, 3개의 요소가 디코딩된 데이터로부터 구축된다: 팔레트(707), 레벨들의 블록(708) 및 이스케이프된 픽셀 값들의 블록. 이러한 모든 데이터에 기초하여, 디코더는 특히, 이스케이프되지 않은 픽셀들에 대한 팔레트를 사용하여 코딩 유닛의 픽셀 값들을 재생성하고, 인코딩된 명시적 픽셀로부터 이스케이프된 픽셀 값들을 디코딩함으로써 현재 코딩 유닛(714)을 생성할 수 있다(709).
도 8은 인코더에서의 팔레트 모드의 원리를 예시한다. 현재 코딩 유닛(801)은 3개의 컬러 값(Y, U, V) 또는 (R, G, B) 대신에 각각의 픽셀에 대한 레벨을 포함하는 동일 크기의 블록(802)으로 변환된다. 레벨들의 이런 블록과 연관되는 팔레트(803)는 코딩 유닛 전체 왜곡 최소화에 기초하여 구축되고, 대응하는 픽셀 컬러 값들을 갖는 레벨 또는 엔트리 인덱스를 각각의 엔트리와 연관시킨다. 모노크롬 애플리케이션의 경우 픽셀 값에는 하나의 컴포넌트만이 포함될 수 있음에 유의한다.
도 6 및 도 7과 관련하여 언급한 바와 같이, 팔레트(또한, 단지 도 6에서의 잔차)는 코딩되고 각각의 코딩 유닛에 대한 비트스트림에 삽입된다. 동일한 방식으로, 레벨들 또는 인덱스들의 블록은 코딩되고 비트스트림에 삽입되며, 그 코딩의 예는 도 9를 참조하여 아래에 주어진다. 이 예에서, 레벨들의 블록은 래스터 스캔 순서로 처리된다.
레벨들의 블록(91)은 참조 번호 802로 도 8에 도시된 블록과 정확히 동일하다. 테이블들(92 및 93)은 레벨들의 블록(91)을 코딩하는 데 사용되는 연속적인 신택스 요소들을 기술한다. 테이블(93)은 테이블(92)의 연속으로 읽혀져야 한다. 테이블 내의 신택스 요소들은 블록(91)에서 굵은 선으로 둘러싸인 레벨들의 그룹의 인코딩에 대응한다.
레벨들의 블록은 연속적인 픽셀들의 그룹에 의해 래스터 스캔 순서로 인코딩된다. 각 그룹은 예측 방향(즉, 그룹들의 인덱스들을 재구성하는 데 사용되는 예측 또는 재구성 모드)을 제공하는 제1 신택스 요소, 픽셀 또는 픽셀들의 값(즉, 레벨)을 제공하는 선택적인 제2 신택스 요소, 반복을 제공하는 제3 신택스 요소를 사용하여 인코딩된다. 반복은 그룹 내의 픽셀들의 수에 대응한다.
이러한 2개의 테이블은 팔레트 모드와 연관되는 현재 신택스를 나타낸다. 이러한 신택스 요소들은 레벨들의 블록(91)과 비트스트림에서 연관되는 인코딩된 정보에 대응한다. 이들 테이블에서, 3개의 주요 신택스 요소는 팔레트 모드의 동작들을 완전히 표현하는데 사용되고, 레벨들의 블록(91)의 레벨들을 연속해서 고려할 때 다음과 같이 사용한다.
"Pred mode"라고 불리는 제1 신택스 요소는 두 가지 인코딩 모드를 구별할 수 있게 한다. "Pred mode" 플래그가 "0"과 동일한 제1 모드에서, 새로운 레벨은 현재 픽셀에 대해 사용된다. 그 레벨은 비트스트림에서 그 플래그 이후에 바로 시그널링된다. "Pred mode" 플래그가 "1"과 동일한 제2 모드에서, "카피 업" 모드가 사용된다. 보다 상세하게, 이것은 현재 픽셀 레벨이 래스터 스캔 순서 동안 동일 위치에서 시작하는 바로 위 라인에 위치하는 픽셀 레벨에 대응한다는 것을 의미한다. "Pred mode" 플래그가 "1"과 동일한 경우에는, 레벨의 값이 레벨들의 블록(91) 바로 위의 픽셀의 레벨의 값을 참조하여 알려지기 때문에, 플래그 바로 이후의 레벨을 시그널링하는 것이 필요 없다.
"Level"로 불리는 제2 신택스 요소는 "Pred mode"의 제1 모드에서만 현재 픽셀에 대한 팔레트의 레벨 값을 표시한다.
"Run"으로 불리는 제3 신택스 요소는 "Pred mode"의 양쪽 모두의 모드에서 반복 값을 인코딩하는 데 사용된다. 레벨들의 블록(91)이 상부 좌측 코너에서 하부 우측 코너로, 행별로 좌측에서 우측으로 그리고 상부에서 하부로 스캐닝된다고 고려하면, Run 신택스 요소는 동일한 인코딩을 갖는 블록(91) 내의 연속적인 픽셀들의 수, 즉 현재 신택스 요소가 적용되는 인덱스들의 그룹 내의 인덱스의 수를 제공한다.
이런 "Run" 신택스 요소는 "pred mode" 플래그에 따라 달라지는 상이한 의미를 갖는다. Pred 모드가 0일 때, "Run" 요소는 동일한 레벨 값을 갖는 블록의 연속적인 픽셀들의 수이다. 예를 들어, Run=8이면, 이것은 현재 "Level"이 현재 픽셀에 적용되고, 래스터 스캔 순서에서 9개의 동일한 연속적인 샘플들에 대응하는 후속하는 8개의 픽셀에 적용된다는 것을 의미한다.
Pred 모드가 1일 때, "Run" 요소는 블록(91)에서 상기 픽셀, 즉 "카피 업" 모드가 적용되는 픽셀의 레벨 값에 대응하는 레벨 값을 갖는 블록의 연속적인 픽셀들의 수이다. 예를 들어, Run=31인 경우, 이것은 현재 픽셀의 레벨이 전체 32개 픽셀에 대응하는 후속하는 31개 픽셀과 더불어 상기 라인의 픽셀로부터 카피된다는 것을 의미한다.
테이블들(92 및 93)에 관하여, 이들은 팔레트 모드를 사용하여 블록(91)을 코딩하기 위해 8개의 단계를 표현한다. 각 단계는 "Pred mode" 플래그가 "0"일 때 "Level" 신택스 요소가 뒤따르거나 또는 "Pred mode" 플래그가 "1"일 때 "Run" 신택스 요소가 뒤따르는 "Pred mode" 플래그의 코딩으로 시작한다. "Level" 신택스 요소 뒤에는 항상 "Run" 신택스 요소가 온다.
현재 블록을 위해 디코딩된 예측 모드가 팔레트 모드일 때, 디코더는 이 블록과 관련되는 신택스를 먼저 디코딩하고, 이후 코딩 유닛을 위한 재구성 프로세스를 적용한다.
도 10은 팔레트 모드와 관련된 신택스 요소들의 디코딩 프로세스(상술한 단계들 605-606 또는 705-706)를 예시한다. 먼저, 팔레트의 크기는 비트스트림(1001)으로부터 추출되고 디코딩된다(1002). 팔레트의 정확한 크기(Palette_Size)는 단계 1002에서 디코딩된 이런 크기 값에 1을 더해 획득된다. 사실상, 크기는 값 0이 가장 작은 비트들의 수(1비트)를 갖는 단항 코드를 사용하여 코딩되고, 팔레트의 크기는 0과 동일할 수 없고, 그렇지 않으면 픽셀 값은 블록 예측자를 구축하는데 사용될 수 없다.
다음에 팔레트 값 디코딩에 대응하는 프로세스가 시작된다. 팔레트의 인덱스에 대응하는 변수 i는 단계 1004에서 0과 동일하게 설정되고, 그 다음 단계 1005에서, i가 팔레트 크기(palette_size)와 동일한지를 체크하기 위한 테스트가 수행된다. 동일하지 않은 경우, 하나의 팔레트 요소는 비트스트림(1001)으로부터 추출되고, 디코딩되고(1006), 이후 i와 동일한 연관된 레벨/인덱스를 가진 팔레트에 추가된다. 이후 변수 i는 단계 1007을 통해 증분된다. i가 팔레트 크기와 동일한 경우(1005), 팔레트는 완전히 디코딩되었다.
다음에 레벨들의 블록(91)의 디코딩에 대응하는 프로세스가 수행된다. 먼저, 픽셀 카운터에 대응하는 변수 j는 변수 syntax_i와 더불어 0으로 설정된다(1008). 그런 다음, 픽셀 카운터가 블록에 포함된 픽셀들의 수에 대응하는지 알기 위한 체크가 수행된다(코딩 트리 블록의 코딩 유닛들로의 분할이 디코더에 의해 알려진 이후에 알려짐 - 도 5 참조). 단계 1009에서 응답이 예인 경우, 프로세스는 단계 1017에서 종료하고, 그렇지 않으면, 하나의 예측 모드에 대응하는 플래그 "Pred mode"의 값은 비트스트림(1001)으로부터 추출되고, 디코딩된다(1010).
"Pred mode"의 값은 디코딩된 모든 "Pred mode" 값을 포함하는 인덱스 syntax_i에서 테이블에 추가된다. 이 "Pred mode"의 값이 0과 동일한 경우, 단계 1011에서 "Level"에 대응하는 신택스 요소가 비트스트림(1001)으로부터 추출되고, 디코딩된다(1012). 이 변수 "Level"는 디코딩된 모든 레벨들을 포함하는 인덱스 syntax_i에서 테이블에 추가된다. 픽셀 카운터에 대응하는 변수 j는 1만큼 증분된다(1013).
다음으로, "Run" 신택스 요소는 단계 1014에서 디코딩된다. 신택스 요소 "Pred mode"가 1과 동일한 경우(단계 1011), "Run" 값은 또한 단계 1014에서 디코딩된다. 이 신택스 요소 "Run"는 디코딩된 모든 런을 포함하는 인덱스 syntax_i에서 테이블에 추가된다.
다음에 단계 1015에서, 값 j는 단계 1014에서 디코딩된 Run의 값만큼 증분된다. 변수 syntax_i는 신택스 요소들의 다음 세트를 고려하기 위해 1만큼 증분된다. 카운터 j가 블록 내의 픽셀들의 수와 동일하다면(즉, 현재 코딩 유닛에 대한 신택스 요소들의 최종 세트가 처리되었다면), 레벨들의 블록(91)을 구축하기 위한 신택스가 완료된다(1017). 팔레트와 관련된 이런 프로세스의 끝에서, 디코더는 팔레트, 및 이런 코딩 유닛의 팔레트 모드와 연관된 모든 "Pred mode", "Level" 및 "Run" 신택스 요소들의 리스트를 포함하는 테이블들을 알고 있다. 그 후, 디코더는 도 6 또는 도 7을 통해 설명한 바와 같이 코딩 유닛의 재구성 프로세스로 진행할 수 있다.
여기서는, 인덱스들의 블록 내의 특정 인덱스 값(인덱스는 연관된 픽셀 값을 갖지 않는 팔레트 엔트리에 대응함)이 이스케이프 코딩된 픽셀들을 플래그하기 위해 사용될 수 있고 명시적 이스케이프 코딩된 값이 비트스트림으로부터 추출됨에 명심한다.
단지 예시적 목적을 위해, 각각의 신택스 요소와 연관될 수 있는 코드워드가 아래에 주어져 있다. 물론, 더 나은 코딩 효율을 얻기 위해 다른 코드워드가 사용될 수 있다.
상기 예들에서 3개의 값(YUV 또는 RGB)으로 구성되는 각각의 팔레트 요소는 일반적으로 (단계 1016에서 디코딩된) 3개의 2진 코드들을 사용하여 인코딩된다. 이진 코드들의 길이는 각각의 컬러 컴포넌트의 비트 심도(256 값을 표현하기 위해 8비트)에 대응한다.
단계 1002에서 디코딩된 팔레트 크기는 일반적으로 단항 코드를 사용하여 인코딩된다.
"Pred mode" 요소는 1비트를 사용하여 인코딩된다.
"Level" 요소는 이진 코드 또는 절단된 이진 코드(truncated binary code)를 사용하여 인코딩된다.
본 발명의 실시예에서, "Run" 요소는 가변 길이 코드를 사용하여 인코딩된다. 예를 들어, Run 요소에 대한 일부 값은 짧은 코드워드를 사용하여 코딩되고, 다른 값은 하나의 다른 코드워드와 서로 상이한, 공통 코드워드 프리픽스 및 코드워드 서픽스로 이루어진 다른 코드워드를 사용하여 코딩된다.
아래 테이블은 Run 요소에 대한 코드워드들의 예이다.
도 15는 이 테이블에 따라 "Run" 요소를 인코딩하는 알고리즘을 예시하며, 이 테이블에서는 "Run" 값을 인코딩하는 데 사용되는 코드워드가 상기 값에 종속한다.
이 예에서, Run 요소에 대한 3가지의 가능한 제1 값들, 즉 0, 1 및 2는 짧은 코드워드를 사용하여 코딩되며(물론, 더 많거나 적은 가능한 제1 값들은 짧은 코딩 값들에 관련될 수 있음), Run 요소에 대한 다른(그리고 연속적인) 가능한 값들은 하나의 다른 가능한 코드워드와 서로 상이한, 공통 코드워드 프리픽스 및 코드워드 서픽스로 이루어진 다른 코드워드들을 사용하여 코딩된다.
이런 코드워드의 설계는 팔레트 모드에서 보통 매우 빈번한 Run 요소에 대한 3가지의 제1 값(0, 1 및 2)에 대한 우선순위를 제공한다. 결과적으로, Run 요소에 대한 다른 값과 높은 값은 상당히 긴 코드워드를 사용한다.
도면에 도시된 바와 같이, 제1 체크는 그 값이 0과 비교되는 단계 1501에서 수행된다. 값이 0과 동일한 경우, 코드워드 "0"은 단계 1502에서 생성되고, 현재의 Run 요소의 코딩은 단계 1509에서 종료된다.
단계 1501에서의 응답이 부정이면, Run 값이 1과 동일한지를 알기 위해 단계 1503에서 제2 테스트가 수행된다. 응답이 긍정이면, 코드워드 "10"이 단계 1504에서 생성되고 다음 단계는 1509가 된다.
만일 Run 값이 1과 동일하지 않으면, Run 값이 2와 비교되는 단계 1505에서 추가적인 테스트가 수행된다. Run 값이 2와 동일하면, 단계 1506에서 코드워드 "110"이 생성되고, 다음 단계는 1509가 된다.
단계 1505에서의 응답이 부정이면, 프리픽스 코드 "111"이 생성되고 Run 값의 값은 단계 1508에서 차수 3의 절단된 라이스 코드를 사용하여 코딩된다(여기서 코드에 대한 심벌은 Run 요소에서 3을 뺀 값이다). 단계 1508 이후에는 Run 값의 코딩을 완료하는 단계 1509가 뒤따른다.
코드워드(짧은 코드워드들 "0", "10", "110" 및 프리픽스 + 서픽스 코드워드들 "111x...x" 중 어느 하나)는 Run 값의 코딩과 관련된 정보의 최종 크기를 줄이기 위해 비트스트림에 직접 삽입될 수 있거나 또는 CABAC와 같은 산술 엔트로피 코더를 사용하여 코딩될 수 있음에 유의해야 한다.
도 16은 Run 값 "0"에 대해서만 짧은 코드워드를 제공하는 "Run" 요소를 인코딩하는 다른 알고리즘을 예시하며, 따라서 도 15보다 적은 단계를 포함한다.
프로세스는 단계 1601에서 시작하며, 이 단계 동안 Run 값이 0과 비교된다. 응답이 긍정이면, 단계 1602에서 코드워드 "0"이 생성되고 현재의 Run 요소의 코딩은 단계 1605에서 종료된다.
단계 1601에서의 응답이 부정이면(Run 값이 0과 다르면), 단계 1603에서 "1"의 코드워드가 생성되어 "0"과 다른 모든 Run 값에 공통인 프리픽스 코드 "1"을 형성한다. 다음으로, Run 값은 단계 1604에서 k번째 차수 절단된 Exp-골롬 코드를 사용하여 코딩되고, 여기서 코딩하기 위한 심벌은 Run 요소의 값에서 1을 뺀 값이며, 차수 k는 코딩 유닛의 크기 및 현재의 Run 요소의 현재 스캐닝 위치를 고려하여 계산된다. 다음으로, 현재 Run 요소의 코딩은 단계 1605에서 종료된다.
도 11은 레벨들의 블록(91)을 구축하고, 그 후 컬러 공간 내의 대응하는 블록(팔레트 모드의 제1 구현을 위한 예측자로서 사용되거나 또는 팔레트 모드의 다른 구현에 대한 디코딩된 현재 코딩 유닛임)을 구축하기 위한 재구성 프로세스를 도시한다. 이 프로세스의 입력 데이터는 위의 도 10의 프로세스에서 획득된 테이블이며, "Pred mode", "Level" 및 "Run"의 리스트를 포함한다. 추가 입력 데이터는 비트스트림으로 시그널링된 쿼드 트리(도 5)로부터 알려진 코딩 유닛(801)의 크기(이것은 레벨들의 블록(802/91)의 크기와 동일함)이다.
제1 단계(1101)에서, 픽셀 카운터를 표현하는 변수 i는 0과 동일하게 설정되고, 신택스 요소들의 각각의 세트를 연속해서 고려하기 위한 변수 j는 또한 0과 동일하게 설정된다. 단계 1104에서, 인덱스 j에서 "Pred mode"의 테이블로부터 추출된 요소 pred_mode[j]는 0과 같은지 체크된다.
그것이 0과 같으면, 새로운 레벨이 현재 픽셀 i에 대해 인코딩된다. 따라서, 위치 i에서의 픽셀의 값은 레벨들의 테이블로부터의 인덱스 j에서의 레벨과 동일하게 설정된다; Block[i] =Level[j]. 이것은 단계 1105이다. 변수 i는 다음 픽셀을 고려하기 위해 단계 1106에서 1씩 증분되고, 현재 Run에서 이미 처리된 픽셀들을 카운팅하는데 전용인 변수 k는 단계 1107에서 0과 동일하게 설정된다.
단계 1108에서 k가 인덱스 j에서 런들의 테이블의 "Run" 요소와 동일한지를 결정하기 위한 체크가 수행된다: k = Run[j]?. 동일하지 않으면, 위치 i에서의 픽셀의 레벨은 위치 i-1에서의 픽셀의 레벨 값과 동일하게 설정된다: Block[i] = Block[i-1]. 이것은 단계 1109이다. 변수 i 및 변수 k는 이후 각각의 단계들(1110 및 1111)에서 1씩 증분된다. 단계 1108에서 k = Run[j]인 경우, 좌측 레벨 값의 전파는 종료되고, 단계 1120이 수행된다(이하 후술된다).
Pred_mode[j]가 단계 1104에서 0과 다른 경우, "카피 업" 모드는 단계 1112에서 0과 동일하게 설정된 변수 k로 시작된다. 다음으로, 단계 1113은 (k-1)이 인덱스 j에서 런들의 테이블의 "Run" 요소와 동일한지 여부를 체크한다: k = Run[j] +1?. 동일하지 않은 경우, 위치 i에서의 픽셀의 레벨 값은 상기 라인의 위치 i에서의 픽셀의 레벨 값과 동일하게 설정된다: Block[i] = Block[i-width], 여기서 "width"은 코딩 유닛의 입력 크기로부터 추론된 레벨들의 블록(코딩 유닛과 동일함)의 폭이다. 이것은 단계 1114이다. 다음으로, 변수 i 및 변수 k는 각각의 단계들(1115 및 1116)에서 1씩 각각 증분된다. 단계 1113에서 k = Run[j]+1인 경우, 예측 모드 '카피 업'은 완료되고, 프로세스는 단계 1120으로 진행한다.
단계 1120에서, 변수 i가 블록(91)/CU(801) 내의 픽셀들의 양과 동일한지 여부를 결정하기 위한 체크가 수행된다. 동일하지 않은 경우, 변수 j는 신택스 요소들의 다음 세트를 고려하기 위해 단계 1121에서 1씩 증분되고, 프로세스는 전술한 단계 1104로 루프백된다.
모든 픽셀이 단계 1120에서 처리된 경우, 레벨들의 최종 블록(91)이 단계 1122에서 획득된다: 이것은 테이블 Block[]에 대응한다. 그 다음 최종 단계(1123)(예를 들어, 단계 709에 대응함)는 도 10의 프로세스를 사용하여 디코딩된 팔레트(803)를 사용하여 컬러 값들에서 각 레벨을 변환하는 단계를 포함한다. 이 최종 단계는 블록 내의 이 위치의 레벨 및 팔레트 내의 대응하는 엔트리들에 따른 각각의 블록 위치에서 픽셀 값들 (Y, U, V) 또는 (R, G, B)에 영향을 미친다.
이것은 이스케이프된 픽셀들이 이들의 정확한 픽셀 값들로 변환되는 단계 1123 동안인 것에 유의한다. 이스케이프 모드는 레벨 테이블의 특정한 값을 사용하여 시그널링될 수 있다. 예를 들어, 팔레트가 32개의 요소를 포함한 경우, 최종 값(31)은 이스케이프 모드를 시그널링하는 데 사용될 수 있고, 팔레트 엔트리는 이 특정한 값과 연관되지 않으며, 이는 이스케이프 픽셀이 팔레트 내의 픽셀 값과 연관되지 않은 값(최종 값)을 사용하여 레벨들의 블록에 정의되어 있음을 의미한다.
따라서, 이스케이프된 픽셀을 식별하기 위해, 단계 1123은 이스케이프된 픽셀을 시그널링하도록 할당된 특정한 값과 Block[j]을 비교한다. 이러한 이스케이프된 픽셀들 각각에 대해, 단계 1123에서는 이스케이프된 픽셀들(710)의 코딩 유닛으로부터 대응하는 정확한 픽셀 값을 검색한다.
실시예에서, 이스케이프 모드는 픽셀의 정확한 값을 정의하는 3개의 컬러 컴포넌트 값이 뒤따르는 특정한 레벨 값을 사용하여 시그널링될 수 있다.
또한, 이스케이프된 픽셀들이 인코더에서 양자화되면, 단계 1123에서 역 양자화 단계가 수행된다.
HEVC SCC에 도입된 팔레트 모드의 다른 양태들은 현재 코딩 유닛을 인코딩하는 데 사용될 팔레트의 인코더에 의한 결정에 관한 것이고(아래 도 12 참조), 인코더에서의 Pred 모드, Level 및 Run 신택스 요소들의 선택에 관한 것이다(아래 도 13 참조).
도 12는 인코더에서의 예시적인 팔레트 결정 알고리즘을 도시한다. 이 프로세스의 입력 데이터는 픽셀들의 최초 코딩 유닛 및 그 코딩 유닛 크기이다. 본 예에서는, YUV 팔레트가 구축되지만, 다른 구현들은 동일한 방식으로 구축되는 RGB 팔레트를 갖게 될 수 있다.
제1 단계(1201)에서, 픽셀 카운터를 표현하는 변수 j는 0으로 설정되고, 팔레트가 구축되고 있을 때 팔레트의 성장을 따르는 변수 "Palette_size"도 0으로 설정되고, 임계치를 나타내는 변수 "TH"는 정의되고, 예를 들어 손실성 코딩의 경우 9로 설정되고, 무손실 코딩의 경우에 0으로 설정된다. 실제로, 무손실 코딩에서, 양자화는 완전히 스킵되고 QP는, 예를 들어 0으로 인위적으로 설정된다. 이 무손실 속성은 CU 레벨에서 정의될 수 있다(신택스 요소 cu_transquant_bypass_flag가 존재하고 픽처 파라미터 세트-레벨(PPS-레벨)에서 신택스 요소 transquant_bypass_enabled_flag가 1로 설정되면 1로 설정됨).
어쨌든, 코딩 유닛(CU)이 무손실하게 코딩되는 경우 에러 한계는 0으로 설정됨을 유념하며, 여기서 목표는 레벨이 어떠한 불일치 없이 픽셀을 표현하는 것을 보장하는 것이다. 그 후, 단계 1203에서, 스캐닝 순서에 따라 인덱스 i를 갖는 픽셀 pi가 최초 코딩 유닛(1204)으로부터 판독된다. 이후, 변수 j는 1205에서 0과 동일하게 설정되고, 단계 1206에서는 팔레트 크기가 변수 "j"와 동일한지 여부를 결정하기 위한 체크가 수행된다(이것은 구성 중인 팔레트의 팔레트 요소들 모두가 고려되고 있음을 의미한다).
팔레트 크기가 j와 동일한 경우, 인덱스 "j"에서의 팔레트는 단계 1209에서 픽셀 값 pi와 동일하게 설정된다. 이것은 현재 픽셀 pi가 팔레트 내의 새로운 요소가 되는 것을 의미하며, 인덱스 j는 새로운 요소와 연관된다. 더 정확하게는 다음의 할당이 수행된다:
PALY[j] =(Yi)
PALU[j] =(Ui)
PALV[j] =(Vi)
여기서 PALY .U.V는 컬러 값들을 저장하는 3개의 테이블이다.
팔레트 크기(Palette_size)는 단계 1210에서 1씩 증분되고, 발생 테이블 카운터(occurrence table counter)는 단계 1211에서 인덱스 "Palette size"에 대해 1과 동일하게 설정된다. 이후 변수 i는 현재 코딩 유닛의 다음 픽셀 "i"를 고려하기 위해 단계 1213에서 1씩 증분된다. 이후 단계 1214에서, 현재 코딩 유닛의 모든 픽셀들이 처리되었는지 여부를 결정하기 위한 체크가 수행된다. 이들이 모두 처리된 경우, 프로세스는 이후에 계속 설명되는 정렬 단계(1215)에 의해 완료되고, 그렇지 않으면 다음 픽셀이 전술한 단계 1203에서 고려된다.
단계들(1203 내지 1206 및 1209 내지 1211)로 이루어진 처리 분기는, 고려된 픽셀이 구성 중인 팔레트에 이미 있는 모든 요소 또는 요소들로부터 너무 멀리 떨어져 있을 때마다 고려된 픽셀의 값을 갖는 새로운 요소를 팔레트에 추가하도록 블록의 각 픽셀을 반복적으로 고려한다(테스트 1207).
단계 1206으로 돌아가서, j가 palette_size와 다른 경우, pi와 인덱스 j에서의 팔레트 요소 사이의 차이의, 각각의 컬러 컴포넌트에 대한 절대값이 계산되는 단계 1207이 수행된다. 수식은 도면에 나와 있다. 모든 절대 차가 미리 정의된 임계치 TH보다 완전히 작은 경우, 단계 1212에서 팔레트 내의 요소 "j"에 관한 발생 카운터가 1씩 증분된다. 단계 1207은 구성 중인 팔레트의 각각의 요소에 대한 클래스를 생성하고, 그런 클래스는 마진 TH이 주어지는, 요소의 컬러에 인접하는 컬러들을 포함한다. 따라서, 단계 1212는 각각의 클래스의 발생들을 카운트한다. 단계 1212는 전술한 단계 1213에 선행한다.
단계들(1203 내지 1207 및 1212)로 이루어진 처리 분기는 고려된 픽셀에 충분히 근접한 팔레트 요소와 연관된 카운터를 증분시키기 위해 블록의 각 픽셀을 반복적으로 고려한다.
단계 1207의 조건이 충족되지 않은 경우, 변수 j는 구성 중인 팔레트 내의 다음 팔레트 요소를 고려하기 위해 단계 1208에서 1씩 증분된다. 이것은 단계 1207의 새로운 발생을 통해 다른 팔레트 컬러 요소들을 현재 픽셀과 비교하는 것이다. 팔레트 내의 요소가 단계 1207의 기준을 충족하지 못한 경우, 새로운 요소는 단계들(1209, 1210 및 1211)과 관련하여 상술한 바와 같이 팔레트에 추가된다.
결정 모듈(1207)이 4:4:4(YUV 또는 RGB) 시퀀스에 대한 각각의 컬러 컴포넌트를 비교할 수 있고 4:2:0 시퀀스에 대한 루마 컬러 컴포넌트 또는 크로마 컬러 컴포넌트 중 어느 하나만을 비교할 수 있음에 또한 유의한다.
도 12의 프로세스의 끝에서, 테이블 "Counter"는 각각의 팔레트 요소에 의해 정의된 클래스들의 발생 횟수를 포함한다. 그 후, 팔레트 요소는, 가장 빈번한 요소가 팔레트 내의 제1 위치(최하위 인덱스 또는 '레벨"을 가진 엔트리) 내에 있도록 그들의 발생들에 따라 단계 1215에서 정렬된다.
또한, 팔레트의 크기가 최대 크기, 예를 들어 24개 엔트리로 제한될 수 있음에 유의한다. 그런 경우, 단계 1215로부터 생기는 팔레트의 크기가 24를 초과하는 경우, 팔레트는 정렬된 팔레트 내의 25번째 위치에서 요소(엔트리)들을 제거함으로써 감소된다. 이것은 결과적으로 팔레트가 구축되게 한다.
인코더에서의 Pred 모드, Level, 및 Run 신택스 요소들의 선택을 지금 다시 참조하면, 도 13의 프로세스의 입력 데이터는 픽셀들의 최초 코딩 유닛, 도 12의 프로세스를 통해 구축된 팔레트, 및 코딩 유닛 크기이다. 특히, 이런 평가는 인트라 코딩, 인터 코딩 및 팔레트 코딩 중에서 어느 코딩 모드가 사용되어야 하는지를 결정할 때 수행된다.
제1 단계(1301)에서, 픽셀 카운터를 표현하는 변수 "i"는 0으로 설정된다. 후술되는 프로세스는 i에서 시작하는 픽셀들에 대한 신택스 요소들을 결정하고자 하는 것이다. 예측의 2가지 모드는 독립적으로 평가된다: 도면의 오른쪽 부분 상의 "Pred mode"= 0, 및 도면의 왼쪽 부분 상의 "Pred mode"= 1.
그러나, 이러한 예측 모드들이 실패하면, 위에서 소개된 이스케이프 모드가 하나 또는 여러 픽셀 값을 명시적으로 인코딩하는 데 사용된다.
'카피 업' 예측("Pred mode" =1에 대응함)에서는, 현재 Run에서 레벨들의 수를 카운트하는 데 사용되는 변수 "icopy"가 단계 1303에서 0과 동일하게 설정된다. 그 다음, 단계 1304에서, 픽셀 위치 i+icopy에서의 현재 레벨(Block[i + icopy])은 상기 라인의 바로 위에 위치한 픽셀의 레벨(Block[i + icopy-width])와 비교되고, 여기서 "width"는 현재 코딩 단위의 폭에 대응한다.
코딩 유닛의 각각의 픽셀의 레벨 Block[i + icopy]은 단계 1308에서 병렬로 결정됨에 유의한다. 이 단계는 이미 전술한 바와 같이, 가장 가까운 팔레트 요소(실제로는 그 인덱스 또는 레벨)를, 위치 i+icopy에서의 픽셀과 연관시키는 것으로 구성된다. 변형에서, 이 단계는 위치 i에서의 픽셀을 가진 거리가 미리 정의된 임계치보다 낮은 제1 팔레트 요소를 선택하는 단계로 구성될 수 있다. 이 단계는 위치 i, 팔레트(1306) 및 최초 코딩 유닛(1307)을 사용한다.
그러나, 현재 픽셀 값이 팔레트의 임의의 엔트리로부터 "멀리" 있는 경우, 단계 1350은 이 픽셀에 대해 이스케이프 모드가 활성화되었음을 시그널링하기 위해 수행된다. 이스케이프 모드는, 예를 들어 픽셀의 컬러 컴포넌트 값과 팔레트 내의 가장 가까운 엔트리 간의 차이가 주어진 임계치를 초과할 때 사용된다. 단계 1350 다음에, 픽셀 카운터 i는 단계 1319로 루프하기 전에 단계 1351에서 1씩 증분된다.
사소한 변형에서, 단계 1350은 이스케이프된 픽셀에 상기 정의된 특정한 레벨 값을 할당하기 위해 단계 1308의 내부에 있으며, 단계 1351은 삭제된다. 이 접근법은 이스케이프된 픽셀을 시그널링하는 데 사용되는 특정 값의 발생을 효율적으로 인코딩하기 위해 "카피 업" 및 "좌측 값" 예측 모드들을 사용하는 것을 가능하게 한다.
단계 1304에서 Block[i + icopy] = Block[i + icopy - width]인 경우, 변수 "icopy"는, 픽셀들의 블록의 다음 픽셀 값을 고려하기 위해, 그리고 위치 i + icopy에서의 현재 픽셀 레벨이 현재 "카피 업" Run에 포함될 수 있는지를 표시하기 위해, 단계 1305에서 1씩 증분된다. "카피 업" Run의 현재 평가가 종료된 것을 의미하는, 단계 1304에서 Block[i + icopy]이 Block[i + icopy - width]와 다른 경우, 변수 "icopy"는 결정 모듈(1314)로 송신된다. 프로세스의 이런 스테이지에서, 변수 "icopy"는 바로 위의 라인으로부터 카피된 값들의 수에 대응한다.
좌측 값 예측("Pred mode"= 0에 대응함)에서는, Run 값(ileft)을 결정하는 루프가 병렬로 또는 순차적으로 처리된다. 먼저, 현재 픽셀의 인덱스 i를 저장하기 위해 사용되는 변수 "istart"는 "i"로 설정되고, 인덱스 "i"에 후행하는 픽셀 레벨을 연속적으로 고려하는 데 사용된 변수 "j"도 "i"와 동일하게 설정되고, 구성중인 현재 Run을 카운트하는 데 사용된 변수 "ileft"는 0과 동일하게 설정된다. 이것은 단계 1309이다. 다음에, 단계 1310은 j!= 0, "pred_mode[j-1]" = 0 및 Block[j] = Block[j-1]인지 여부를 결정하는 것으로 구성된다. pred_mode[]는 예측 모드(각각의 "카피 업" 예측 및 좌측 값 예측을 위해 1 또는 0)를 저장하기 위해 인코더에 의해 사용되는 테이블이다. 이것은 연속적인 픽셀들이 처리될 때 후술되는 단계 1317에서 점진적으로 채워지게 되고, 예를 들어 단계 1301에서 0 값들로 초기화된다: 임의의 k에 대해 Pred_mode [k] = 0.
단계 1310에서 조건이 충족되는 경우, 변수 "ileft"는, 위치 j에서의 현재 픽셀 레벨이 현재 "좌측 값" Run에 포함될 수 있는지를 표시하기 위해 단계 1311에서 1씩 증분되고, 변수 j는 픽셀들의 블록의 다음 픽셀 값을 고려하기 위해 단계 1312에서 1씩 증분된다.
단계 1310에서 조건이 충족되지 않은 경우, 변수 "j"는 이것이 현재 "좌측 값" Run을 위해 검사될 제1 픽셀 값인지를 결정하기 위해 "istart"와 비교된다. 이것은 단계 1313이다. "j"가 "istart"와 같거나 그보다 작으면(현재의 Run에 대해 검사 될 제1 픽셀 값임을 의미함), 현재 Run을 시작하고 다음 픽셀 값은 전술한 단계 1312에서 고려된다. "j"가 "istart"보다 완전히 높은 경우(현재 "좌측 값" Run의 픽셀 값과 상이한 제1 픽셀 값이 검출되었음을 의미함), 현재 "좌측 값" Run에 대응하는 변수 "ileft"는 결정 모듈(1314)로 송신된다. "카피 업" 예측을 위한 루프로서, 인덱스 i에서의 레벨 Block [i]는 단계 1308에서 동일한 루프에서 결정됨에 유의한다.
'좌측 값 예측' 및 '카피 업' 모드에 대한 최대 런을 계산한 후에, 변수 "ileft" 및 "icopy"가 단계 1314에서 비교된다. 이것은 "icopy"!= 0 및 "icopy" + 2가 "ileft"보다 큰지의 여부를 결정하기 위한 것이다. 이것은 카피 업 모드 또는 좌측 값 예측 모드 중 어느 하나를 선택하기 위한 예시적 기준이다. 특히, 좌측 값 예측 모드의 레벨의 레이트 비용을 보상하기 위해 사용된 파라미터 "2"는 약간 변경될 수 있다. 특히, 가산 파라미터(이 예에서는 2)는, 팔레트의 크기(Palette_size)가 레벨의 비용에 직접 관련되기 때문에 그 팔레트 크기에 따라 달라질 수 있다. 일 실시예에서, 동작 "+2"는 단계 1314의 비교가 체크되는 순서에서 제거된다: "icopy! = 0 && icopy> ileft". 이 실시예는 코딩 효율을 향상시킨다.
단계 1314에서의 조건은, "icopy"가 0과 동일하거나 또는 ileft-2 이하인 경우, "좌측 값 예측" 모드가 단계 1315에서 선택된다는 것을 의미한다. 그러한 경우에, "PredMode" 변수는 0과 동일하게 설정되고, Run 변수는 동일한 단계 1315에서 "ileft"와 동일하게 설정된다. 한편, "icopy"가 0과 다르고 ileft-2보다 완전히 큰 경우, "카피 업" 모드는 단계 1316에서 선택된다. 그러한 경우, 단계 1316에서 "PredMode" 변수는 1과 동일하게 설정되고 Run 변수는 icopy-1로 설정된다.
그 후, 인코더에서 "Pred_mode" 및 "Run"을 포함하는 테이블은 단계 1317에서 현재 값 "Pred_mode"및 "Run"으로 업데이트된다. 그 후, 픽셀들의 블록에서 고려할 다음 위치는 단계 1318에서 계산되며, 이것은 "run" 값 + 1만큼 증분된 현재 위치 i에 대응한다. 그 후, 단계 1319에서 코딩 유닛의 최종 픽셀들이 처리되었는지를 결정하기 위한 체크가 수행된다. 이것이 사실인 경우, 프로세스는 단계 1320에서 종료되고, 그렇지 않으면 2개의 예측 모드 "좌측 예측" 및 "카피 업"의 평가는 신택스 요소들의 새로운 세트를 획득하기 위해 다음 픽셀 위치에 대한 단계들(1303 및 1309)에서 평가되기 시작한다.
이 프로세스의 끝에서, 인코더는 코딩 유닛의 각각의 샘플 또는 픽셀에 대한 레벨들을 알고, 3개의 테이블 Pred_mode[], Block[] 및 Run[]의 콘텐츠에 기초하여 레벨들의 블록의 대응하는 신택스를 인코딩할 수 있다.
블록 예측자를 결정하기 위해, 인코더는 팔레트를 사용하여 레벨들의 정의된 블록을 변환하고, 또한 1350에서 이스케이프된 픽셀로서 시그널링된 픽셀들의 리스트를 사용한다.
도 17 및 도 18은 각각 도 15 및 도 16과 동일한 표현으로, 팔레트 모드에서 Run 신택스 요소를 인코딩하는 인코더에서의 예시적인 알고리즘을 도시한다. 따라서 입력 데이터는 동일한다.
알고리즘의 이러한 예에서, 플래그(예를 들어, Run 요소에 대한 "업-투-엔드" 코드워드에 걸친)는 현재 "Run"이 최종 Run임을 표시하는 데 사용되며, 그런 나머지 인덱스들의 수에 상관없이, 즉 신택스 요소들의 현재 및 최종 세트에 대응하는 인덱스들의 그룹을 형성하는 이들 나머지 인덱스들의 수를 특정함이 없이, 현재 코딩 유닛의 끝까지의 모든 나머지 인덱스들에 적용한다. 이러한 접근법은, 최종 그룹에 대해 인덱스된 정확한 수를 인코딩하기 위해 더 긴 코드워드(이미지의 하부가 보통 모노톤이기 때문에 이미지의 최종 코드 유닛에 대해서는 종종 적어도 큼)가 필요한 상황에 비해 일부 비트를 절약할 수 있다.
이 접근법에 따르면, 각각의 세트에 제공된 Run 신택스 요소는 적어도 두 개의 이용 가능한 코드워드로부터 선택된 코드워드를 사용하며, 이는 인덱스들의 대응하는 그룹을 형성하는 인덱스들이 그런 나머지 블록 위치들의 수에 상관없이 인덱스들의 블록의 끝까지의 모든 나머지 블록 위치에서의 인덱스임을 표시하기 위한 업-투-엔드 코드워드를 포함한다. 따라서, 업-투-엔드 코드워드는 코딩 유닛을 구성하는 최종 세트에서 Run 요소에 대해 설정될 수 있다. 그러나 이것은 의무 사항은 아니다; 전술한 종래의 접근법은 일부 코딩 유닛에 대해 여전히 구현될 수 있다.
종래의 Run 요소와는 별개의 업-투-엔드 2진수 플래그는 업-투-엔드 접근법을 시그널링하기 위해 제공될 수 있음에 유의한다. 그러나, Run 요소에 대한 임의의 종래의 코드워드와 결합된 그러한 2진수 플래그는 내장된 Run 요소의 코드워드를 형성한다. 이것은 본 설명이 Run 요소에 대한 가능한 코드워드에 집중하는 이유가 된다.
도 17 및 도 18은 Run 값들을 인코딩하는데 사용된 코드워드에 의해 서로 상이하다. 이들 도면에 도시된 바와 같이, 현재 코딩 유닛에 대한 최종 세트 내의 Run 신택스 요소는 신택스 요소들의 현재 세트에 대한 "업-투-엔드" 옵션을 가능하게 하도록 시그널링하기 위해 업-투-엔드 코드워드를 사용한다.
도 17의 실시예에서, 단계들(1701 내지 1707)은 도 15의 대응하는 단계들(단계들(1501 내지 1507))과 동일하므로 다시 설명하지 않는다.
단계 1707에서 코드워드 "111"(프로세스의 이 위치에서, 코딩될 Run 값은 2보다 우수하다)의 생성에 뒤이어, 단계 1708은 현재 Run이 현재 코딩 유닛에 대한 최종 Run인지 여부(즉, 신택스 요소들의 현재 세트가 최종 세트인지 여부)를 결정하는 것으로 구성된다. 최종 Run은, 프로세스가 코딩 유닛의 해당 최종 픽셀(사실상 레벨들의 블록의 해당 최종 인덱스)에 도달했기 때문에 이 최종 Run의 코딩 이후에 현재 코딩 유닛에서 다른 동작("카피 업" 또는 "좌측 값")이 수행되지 않음을 의미한다.
예를 들어, 테스트(1319)가 긍정일 때, 도 13의 프로세스 동안 최종 Run이 검출될 수 있다. 이러한 경우에, 단계 1317에서 메모리에 저장된 최종 Run은 현재 코딩 유닛에 대한 최종 Run이다.
현재 Run이 최종 Run이면, 본 실시예의 아이디어는 단계 1710에서, 최종 Run이 처리되고 있음을 표시하기 위해 비트스트림에 플래그 "1"을 코딩함으로써 Run의 값(이는 종종 크고, 따라서 상당히 긴 코드워드를 초래할 수 있다)의 시그널링을 피하는 것이다.
응답이 단계 1708에서 부정이면, 다음 단계는 현재 Run이 최종 Run이 아님을 나타내는 비트스트림에 플래그 "0"이 코딩되는 단계 1709이다. 다음으로, Run에서 3을 뺀 값이 단계 1508과 유사하게 단계 1711에서 코딩된다.
이 구성에서, Run 요소의 높은 값들(단계 1709와 결합된 단계 1707로부터 생긴 "111")에 사용된 공통 코드워드 프리픽스는 업-투-엔드 코드워드를 형성하는 데 사용된다. 다음으로, 업-투-엔드 코드워드의 서픽스 부분은 최소로, 즉 단일 비트로 감소된다(단계 1710): 업-투-엔드 코드워드는 공통 코드워드 프리픽스를 포함하고 공통 코드워드 프리릭스 외에 1-비트 서픽스를 포함한다.
또한, 단계들(1709 및 1710)에서 설명된 "업-투-엔드" 플래그는 본 발명에 의해 기술된 방법의 코딩 효율을 개선하기 위해 CABAC와 같은 산술 엔트로피 코더를 사용함으로써 또한 인코딩될 수 있다.
도 18의 실시예에서, 업-투-엔드 코드워드는 또한 "다른" Run 값들(즉, 짧은 코드워드가 없는 값들)을 인코딩하는데 사용되는 공통 코드워드 프리픽스를 포함하고, 공통 프리픽스 2진수 값 외에 1-비트 서픽스를 포함한다. 단계들(1801 내지 1803)은 도 16의 대응하는 단계들(단계들(1601 내지 1607))과 동일하고, 따라서 다시 설명되지 않는다.
단계 1803에서 코드워드 "1"(즉, 현재 Run 값이 0과 다르다는 것을 의미)의 생성에 뒤이어, 단계 1804는 현재 Run이 현재 코딩 유닛에 대한 최종 Run인지 여부를 결정하는 단계(단계 1708과 유사함)로 구성된다.
현재 Run이 최종 Run이면, 본 실시예의 아이디어는 단계 1805에서, 최종 Run이 처리되고 있음을 표시하기 위해 비트스트림에 플래그 "1"을 코딩함으로써 Run 길이의 값(이는 종종 크고, 따라서 상당히 긴 코드워드를 초래할 수 있음)의 시그널링을 피하는 것이다.
응답이 단계 1804에서 부정이면, 다음 단계는, 현재 Run이 최종 Run이 아니라고 나타내는 비트스트림에 플래그 "0"이 코딩되는 단계 1806이다. 다음으로, Run의 값은 단계 1604와 유사하게 단계 1807에서 코딩된다.
도 17 및 18은 인코더의 관점에서 프로세스를 도시한다. 본 기술분야의 통상의 기술자는 디코더에서 대응하는 디코딩 프로세스를 직접 추론할 것이다. 이것은 비트스트림으로부터 비트를 파싱하여, 정의된 수의 인덱스들과 연관된 미리 정의된 코드워드 또는 본 발명에 따른 "업-투-엔드" 코드워드 중 하나인 Run 요소에 대한 코드워드를 획득하는 것을 암시한다. 예를 들어, "업-투-엔드" 코드워드가 디코딩 프로세스의 단계 1014에서 검출될 때, 고려될 Run 값은 Pixels_in_Block - j일 수 있고, 그래서 프로세스를 종료시키는 단계 1017로 진행한다.
이 두 도면의 예는 Run 요소의 첫 번째(그리고 가장 빈번한) 가능한 값에 우선순위를 유지한다(즉, 도 17에서는 0, 1 및 2, 도 18에서는 0). 이것은 단계들(1707 및 1803) 이후에 최종 Run을 시그널링하기 위해 업-투-엔드 코드워드를 제공함을 암시한다.
다른 변형 예들은, 단계들(1703 및 1705) 사이에(이 경우, 업-투-엔드 코드워드는, 예를 들어 "110"이다) 또는 단계들(1701 및 1703) 사이에(이 경우, 업-투-엔드 코드워드는, 예를 들어 "10"이다) 또는 심지어 단계 1701 이전에(이 경우, 업-투-엔드 코드워드는, 예를 들어 "0"이다) 단계 1708을 제공할 수 있다. 유사하게, 도 18에 대한 다른 변형 예는 단계 1801 이전에(이 경우, 업-투-엔드 코드워드는, 예를 들어 "0"이다) 단계 1804를 제공할 수 있다. 이러한 변형 예들에서, 최종 Run을 시그널링하기 위해 Run 요소에 사용될 업-투-엔드 코드워드는 짧은 코드워드이다.
단계들(1708 및 1804)이 각각 단계들(1701 및 1801) 이전에 있는 경우는 "업-투-엔드" 플래그가 Run 요소와 별개이고 Run 요소 바로 앞에 배치되는 실시예로서 고려될 수 있다.
HEVC SCC의 다른 독창적인 개선점은 최종 Run을 시그널링하기 위해 "업-투-엔드" 플래그를 사용한다는 상기 아이디어에 의존하지 않는다고 설명되는 것이 아니라, 팔레트 모드를 사용하여 코딩의 효율을 향상시키기 위해 이들과 결합될 수 있다는 것이다.
일부 픽셀이 임의의 팔레트 엔트리에 의해 적절히 표현될 수 없는 경우에, 이들은 상이하게 코딩되고, 즉 "이스케이프된 코딩"되고, 팔레트 코딩된 픽셀을 현재 코딩 유닛 내의 이스케이프된 픽셀과 구별하기 위해 특정한 시그널링이 제공된다는 것을 위에서 알 수 있었다.
이스케이프 코딩 모드는 명시적인 픽셀 값을 코딩할 필요가 있기 때문에 많은 비용이 소요되므로 많은 비트를 사용할 필요가 있다. 이는 코딩 효율에 해로울 수 있다.
또한, 도 13을 다시 참조하면, 인코더에 의한 팔레트 모드의 평가는 인덱스(레벨)가 코딩 유닛의 각 픽셀에 대한 팔레트에서 발견되는 것을 요구한다. 이것은 단계 1308이다. 이 단계의 처리 비용은 높은 것으로 입증될 수 있다.
이러한 단점들을 제한하기 위해, 이스케이프된 픽셀들의 수가 미리 정의된 임계치에 도달할 때 팔레트 모드의 평가를 중단하기 위한 제1 독창적 개선점이 제안되었다. 따라서 이러한 평가를 위한 처리 비용은 압축 레이트가 낮아지게 되는 즉시 극적으로 줄어들게 된다(이스케이프된 각각의 픽셀이 비트스트림에서 많은 비트를 필요로하기 때문이다). 실제로, 팔레트 모드로 현재 코딩 유닛을 코딩하기 위해 많은 수의 이스케이프된 픽셀이 필요한 경우, 코딩 유닛에 대한 동시 코딩 모드(인트라 또는 인터)가 더 나은 레이트 왜곡 타협을 가지며 인코더에 의해 선택될 수 있을 가능성이 높아진다.
따라서, 제1 독창적 개선점에 따른 프로세스는,
팔레트 코딩 모드를 포함하는 2개 이상의 코딩 모드의 각각에 대한 픽셀들의 현재 블록의 코딩을 평가하는 단계 - 팔레트 코딩 모드는 인덱스들의 블록을 구축하기 위해 현재 팔레트를 사용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들에 연관시키는 엔트리들의 세트를 포함함 - :
평가들에 기초하여 픽셀들의 현재 블록을 코딩하기 위해 2개 이상의 코딩 모드로부터 코딩 모드를 선택하는 단계 - 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 현재 블록의 픽셀들을 연속적으로 고려하는 단계를 포함함 -;
각각의 고려된 픽셀에 대해
거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견된다면, 엔트리 인덱스를 사용하여 고려된 픽셀을 인코딩하는 단계;
거리 임계치가 주어질 때, 팔레트 엔트리가 고려된 픽셀에 충분히 근접한 팔레트에서 발견되지 않으면 고려된 픽셀을 이스케이프 코딩하는 단계 - 이스케이프 코딩하는 단계는 고려된 픽셀의 값의 명시적인 코딩을 포함함(즉, 이런 픽셀에 대한 예측이 없음) -
를 포함하고,
이스케이프 코딩된 픽셀들의 수가 픽셀들의 현재 블록에 대한 미리 정의된 임계치를 초과하면, 팔레트 코딩 모드를 사용하여 픽셀들의 현재 블록의 코딩을 평가하는 단계는 중단된다.
연속적인 픽셀들 사이의 중복으로 인하여 저비용으로 그런 저장된 정보의 재사용을 돕기 위해, 처리된 최종 픽셀 및 대응하는 팔레트 레벨을 저장함으로써 팔레트 평가를 가속화하기 위한 제2 독창적 개선점이 제안된다. 따라서 각 픽셀에 대한 인덱스의 완전한 탐색은 회피될 수 있다.
따라서, 제2 독창적 개선점에 따른 프로세스는,
픽셀들의 현재 블록 및 현재 팔레트로부터 인덱스들의 블록을 구축하는 단계 - 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함함 - ;
인덱스들의 블록을 인코딩하는 단계를 포함하고;
픽셀들의 현재 블록에 대한 인덱스들의 블록을 구축하는 단계는, 픽셀들의 현재 블록의 각 픽셀에 대해, 거리 임계치가 주어질 때, 고려된 픽셀에 충분히 근접한 대응하는 픽셀 값을 갖는 팔레트 엔트리를 팔레트에서 탐색하는 단계; 발견된 팔레트 엔트리의 엔트리 인덱스를 인덱스들의 블록에 추가하는 단계; 및 현재 픽셀 및 발견된 팔레트 엔트리의 엔트리 인덱스를 메모리에 저장하는 단계를 포함하고;
현재 픽셀의 값이 픽셀들의 현재 블록 내의 선행 픽셀의 값과 동일한 경우, 선행 픽셀에 대한 메모리에 저장된 엔트리 인덱스를 검색하는 단계, 및 검색된 인덱스를 현재 픽셀에 대한 엔트리 인덱스로서 인덱스들의 예측자 블록에 추가하는 단계를 포함한다.
제1 및 제2 개선점들은 팔레트 코딩 모드를 사용할 때 개별적으로 결합되거나 사용될 수 있다.
도 19는 팔레트 코딩 모드에 대한 2가지 독창적인 개선점의 조합을 도시한다. 현재 팔레트를 알고 있는 인코더는 픽셀에 대응하는 레벨(또는 인덱스)을 결정한다. 이는, 예를 들어 전술한 단계 1308이다.
단계들(1909, 1910 및 1914)은 처리 시간을 낭비하지 않기 위해, 너무 많은 픽셀이 이스케이프 코딩된 경우에 팔레트 코딩 모드의 평가를 중단하는 단계로 구성되는 제1 독창적인 개선점을 구현한다. 따라서 제한된 수의 이스케이프된 픽셀들만이 팔레트 코딩 모드에 허용된다.
단계들(1920, 1921 및 1922)은 적어도 발견된 최종 인덱스를 계속 추적하는 단계로 구성되는 제2 독창적인 개선점을 구현한다. 도면의 예에서, 발견된 최종 인덱스만이 메모리에 유지되지만 동일한 것은 최종이지만 발견된 하나의 인덱스에 적용될 수 있고, 나머지도 마찬가지이다.
시작 단계 1901에서, 현재 코딩 유닛 내의 각 픽셀을 연속적으로 고려하는 픽셀 카운터를 표현하는 변수 "i"는 0으로 초기화될 뿐만 아니라, 현재 코딩 유닛에서 이스케이프된 픽셀들의 수를 카운트하는데 사용되는 변수 "Count"도 초기화된다. 또한, 카운트 임계치를 정의하는 변수 "TH"는 이상적으로는 단계 108(도 1)에서 사용된 양자화 파라미터 QP에 의존하는 값으로 설정된다. 마지막으로 중요한 것은, 픽셀 값 변수 "Last"와 인덱스 변수 "LIDX"는 메모리에서 "정의되지 않은" 값으로 설정된다.
다음으로, 단계 1903에서, 현재 픽셀 Pi는 최초 코딩 유닛(1904)으로부터 판독된다. 현재 픽셀 값이 처리된 최종 픽셀과 동일한지를 알기 위해 현재 픽셀 Pi는 단계 1920에서 Last의 현재 값과 비교된다.
그것들이 동일하다면, 단계 1921에서 현재 픽셀에 대한 인덱스는 LIDX로 설정되며, 이는 현재 픽셀이 처리된 최종 픽셀과 동일한 인덱스를 갖는다는 것을 의미한다.
그렇지 않으면, 종래의 탐색 알고리즘을 사용하여 단계 1906에서 팔레트에서 최상의 인덱스가 탐색된다. 예를 들어, 탐색은 Pi와 비교하여 가장 작은 에러를 산출하는 인덱스를 발견하는 것에 기초할 수 있다, 예를 들어 최대 컴포넌트 절대 에러, 절대 에러들의 합, 제공 에러들의 합 등에 기초할 수 있다.
다음으로, 단계 1907에서는, 발견된 인덱스에 대응하는 팔레트 엔트리(탐색 알고리즘에 의해 또는 LIDX를 사용하여 획득됨)가 Pi를 충분히 나타내는지를 체크한다. 이 체크는 상기 정의된 임계치 TH에 기초할 수 있다: 상술한 에러(탐색 단계(1906) 동안 계산됨)는 TH와 비교될 수 있다(LIDX가 사용되면, 체크(1907)는 항상 긍정일 것임을 의미한다). 에러가 TH보다 낮으면, 팔레트 엔트리 인덱스는 대표적인 것으로 발견된다.
발견된 인덱스에 대응하는 팔레트 엔트리가 Pi를 충분히 대표한다면, 발견된 인덱스는 단계 1911에서 Pi에 대해 사용될 수 있는데, 즉 레벨들의 블록에 추가될 수 있다. 그 다음, 프로세스는 단계 1922로 계속된다.
그렇지 않으면, 현재 픽셀 Pi는 전술한 바와 같이 단계 1908에서 이스케이프 코딩된다. 이는 픽셀 Pi가 "이스케이프된" 것으로 시그널링되고 그 값이 명시적으로 인코딩됨을 의미한다. 다음으로, 단계 1909에서 이스케이프 카운트(Count)가 증분된다.
단계 1909에 이어서, 인코더는 이스케이프 카운트(Count)가 너무 높은 값에 도달했는지의 여부를 체크한다. 그렇게 하기 위해, 단계 1910에서는, Count를, 현재 코딩 유닛 내의 픽셀들의 수에 유리하게 의존하는 임계치와 비교한다.
실시예에서, 임계치는 현재 코딩 유닛 내의 픽셀들의 수의 백분율, 예를 들어 10%, 20%, 25% 또는 30%를 표현한다.
그것이 너무 높은 것으로 발견되면, 단계 1912에서 팔레트 평가가 중단된다: 임의의 추가 팔레트 처리(팔레트화(palettization), 런 결정, 코딩 레이트 평가 등)는 스킵된다.
너무 높지 않은 것으로 발견되면, 프로세스는 단계 1922로 계속된다.
인덱스 탐색을 가속화하기 위해, 다음 단계(1922)는 Last 및 LIDX 내의 현재 픽셀 값 Pi 및 대응하는 발견된 인덱스를 각각 메모리에 저장하는 단계로 구성된다.
다음으로, 단계 1913에서, 변수 i는 현재 코딩 유닛의 다음 픽셀 "i"를 고려하기 위해 증분된다.
다음으로, 단계 1914에서 현재 코딩 유닛의 모든 픽셀이 처리되었는지 여부를 알기 위한 체크가 수행된다. 이들이 처리되었다면, 전체 코딩 유닛은 "팔레트화"되고 프로세스는 단계 1915에서 종료된다. 그렇지 않으면, 이미 설명된 단계 1903에서 다음 픽셀이 고려된다.
도 19의 실시예의 변형 예에서, 픽셀들의 현재 블록에서 현재 픽셀 위에 위치한 픽셀은 위에서 정의된 "Last" 픽셀 대신에 단계들(1920 및 1922)에 사용될 수 있다. 그렇게 하기 위해, 픽셀들과 인덱스들 간의 연관은 코딩 유닛의 전체 행에 대한 메모리에 저장될 수 있다(즉, 단계 1922 동안 채워짐). 그 후, 단계 1920은 존재한다면, 현재 픽셀 위의 픽셀에 대응하는 연관을 검색할 수 있다.
도 20은 팔레트 결정 알고리즘 동안 발생하는 팔레트 코딩 모드에 대한 2가지 독창적인 개선점의 다른 조합을 도시한다.
인코더의 입력들은 현재 코딩 유닛 및 그 크기이다. 도면의 예에서는, YUV 팔레트가 생성된다. 물론, 본 기술분야의 통상의 기술자는 이 예를 RGB 팔레트의 구축에 쉽게 적응시킬 수 있다.
알고리즘은 도 19의 것과 매우 유사하다. 단계들(2003, 2004, 2006, 2007, 2013, 2014, 2020, 2021 및 2022)은 단계들(1903, 1904, 1906, 1907, 1913, 1914, 1920, 1921 및 1922)과 각각 유사하다. 변수 Count가 더 이상 존재하지 않는 동안 변수 "Palette_size"가 0으로 초기화된다는 점을 제외하면 단계 2001은 단계 1901과 유사한다.
단계들(2016 및 2018)은 제1 독창적인 개선점을 구현한다. 단계들(2020, 2021 및 2022)은 제2 독창적인 개선점을 구현한다.
도 19에서 행해진 바와 같은 인덱스 탐색을 가속하기 위해, 단계 2020에서 현재 픽셀은 Last의 현재 값과 비교된다. 그것들이 동일하다면, 단계 2021에서 현재 픽셀에 대한 인덱스는 LIDX로 설정된다. 그렇지 않으면, 최상의 인덱스는 단계 2006에서 팔레트에서 탐색된다.
도 20의 프로세스는 인코더가, 발견된 인덱스에 대응하는 팔레트 엔트리가 Pi를 충분히 대표하는지를 체크하는 단계 2007 이후에 있는 도 19의 프로세스와 상이하다.
팔레트가 결정되기 때문에(도 20의 프로세스가 팔레트 결정 알고리즘에 속하기 때문에), 단계 2007의 체크가 부정이면, 현재 픽셀 Pi가 단계 2009에서 새로운 팔레트 엔트리로서 팔레트에 추가된다.
즉, 거리 임계치가 주어질 때, 픽셀 Pi에 충분히 근접한 팔레트 엔트리가 팔레트에서 발견되지 않으면, 고려된 픽셀 Pi는 팔레트에서 새로운 팔레트 엔트리로서 추가되고 대응하는 엔트리 인덱스를 고려된 픽셀에 대한 인덱스들의 블록에 추가한다. 이는 새로운 팔레트 요소가 픽셀 값 Pi와 동일하게 설정되고 현재 픽셀 Pi가 팔레트의 엔트리가 된다는 것을 의미한다. 보다 정확하게는 다음 할당이 수행된다:
PALY[j] = (Yi); PALU[j] = (Ui); PALV[j] = (Vi), 여기서, Yi, Ui, Vi는 Pi의 YUV 컬러 컴포넌트를 표현한다.
다음으로, 이 새로운 팔레트 엔트리의 발생 횟수는 단계 2010에서 1과 동일하게 설정된다: Counter[Palette_size] = 1. 다음으로, 변수 Palette_size는 단계 2022로 계속되기 전에 단계 2011에서 1씩 증분된다.
인덱스가 픽셀을 나타내는 경우(체크(2007)가 긍정인 경우), 팔레트를 결정하는데 필요한 임의의 정보는 단계 2002에서 업데이트된다. 특히, 인덱스에 대응하는 엔트리에 대한 카운터(Counter[index])가 증분된다. 프로세스는 단계 2022로 계속된다.
단계 2022에서, 픽셀 값과 발견된 인덱스 사이의 연관은 변수들 Last 및 LIDX를 업데이트함으로써 메모리에 저장된다.
다음으로, 변수 i는 현재 코딩 유닛의 다음 픽셀 "i"를 고려하기 위해 단계 2013에서 증분된다. 단계 2014에서 현재 코딩 유닛의 모든 픽셀이 처리되었는지 여부를 알기 위한 체크가 수행된다.
처리되지 않았다면, 프로세스는 이미 설명된 단계 2003으로 계속된다.
처리되었다면, 프로세스는 구축된 팔레트를 후 처리하는 단계 2015로 계속된다. 이때의 프로세스에서, 테이블 "Counter"는 각 팔레트 요소의 발생을 포함한다.
후 처리는 이들의 발생 및 통계를 고려할 수 있다.
후 처리의 예는 단계 1215를 참조하여 위에서 설명되었다: 예를 들어, 가장 빈번한 요소가 팔레트에서 제1 위치(가장 낮은 인덱스 또는 "레벨"을 갖는 엔트리)에 있도록 팔레트 요소는 그들의 발생(Counter[])에 따라 정렬된다.
다음으로, N개의 제1 팔레트 요소가 유지되고, 다른 팔레트 요소는 삭제될 수 있다. 예를 들어, 팔레트의 크기가 최대 크기(예를 들어, 24개 엔트리)로 제한되면, 24개보다 많은 엔트리를 갖는 구축된 팔레트는 정렬된 팔레트 내의 25번째 위치에서 요소(엔트리)들을 제거함으로써 축소된다.
단계 2015에 이어, 단계 2016은 팔레트를 사용하여 코딩될 현재 코딩 유닛의 픽셀들의 수의 추정치, 또는 대응하는 팔레트 엔트리가 단계 2015에서 제거되었기 때문에 비트스트림에서 명시적으로 코딩될 픽셀들(이스케이프 코딩된 픽셀들)의 수의 추정치를 결정하는 단계로 구성된다. 이들 추정치는 대응하는(유지되거나 제거된) 팔레트 엔트리에 대한 발생 값을 (Counter[]에서) 합산함으로써 용이하게 획득될 수 있다.
단계 2016은 또한, 이스케이프 픽셀에 대한 획득된 추정치를 미리 정의된 임계치(예를 들어, 코딩 유닛 내의 픽셀들 수의 백분율)와 비교하는 단계로 구성된다. 획득된 추정치가 임계치를 초과하는 경우, 너무 많은 이스케이프-코딩된 픽셀이 구상되고, 팔레트 모드 평가는 단계 2018에서 중단된다. 그렇지 않으면, 팔레트 모드 평가는 단계 2017에서 올바르게 종료된다.
HEVC SCC의 또 다른 독창적인 개선점은 또한, 관련이 없다면 평가 프로세스를 다시 중단함으로써 처리 시간을 절약할 수 있다. 이런 다른 독창적인 개선점은 전술한 하나 이상의 독창적인 개선점과 독립적으로 또는 이들과 결합하여 구현될 수 있다.
이 개선점은 현재 팔레트의 인코딩이 팔레트 예측자를 사용하여 그러한 팔레트를 예측하는 것을 수반하는 컨텍스트에서 발생한다. 따라서, 본 발명은, 팔레트 코딩 모드를 사용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 방법에 관한 것으로, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 사용하며, 상기 방법은 적어도 하나의 팔레트 예측자로부터 현재 팔레트를 예측하는 단계를 포함한다. 예를 들어, 팔레트 예측자는 이미지 내의 픽셀들의 블록을 처리하기 위해 이전에 사용된 하나의 팔레트일 수 있으며, 그 예는 계류중인 출원 GB 1403823.6에 기술되어 있다.
일반적으로 현재 팔레트를 예측하기 위한 2개 이상의 팔레트 예측 모드는 최상의 팔레트 예측 모드를 결정하기 위해 평가된다.
팔레트 예측 모드는 이전에 사용된 팔레트로부터 예측될 현재 팔레트(즉, 팔레트 코딩 모드로 인코딩된 최종 코딩 유닛)에 대해 이루어진다. 이전에 사용된 팔레트로부터 재사용되는 각각의 팔레트 요소/엔트리는 비트스트림에서 인코더에 의해, 어느 엔트리들이 재사용되는지를 표시하는 플래그들의 세트를 통해 시그널링된다. 이 팔레트 예측 모드는 인코더 측에서 평가되며 정상 팔레트 평가라고 불린다.
또 다른 팔레트 예측 모드는 픽셀들의 현재 블록을 코딩하기 위해 현재 팔레트로서 이미지 내의 픽셀들의 선행 블록의 선행 팔레트를 완전히 사용하는 것으로 구성된다. 즉, 팔레트는 이전에 사용된 팔레트의 모든 엔트리를 실제로 재사용한다. 그러한 경우, 플래그는 코딩 유닛이 전적으로 이전에 사용된 팔레트를 재사용한다는 것을 표시하기 위해 코딩 유닛에서 사용될 수 있고, 이 경우 명시적인 팔레트 요소들은 송신되지 않는다: 팔레트는 단순히 이전에 팔레트-코딩된 CU의 팔레트이다. 이 팔레트 예측 모드는 또한 인코더 측에서 평가되며 팔레트 공유 평가라고 불린다.
인코더 측에서 2개 이상의 팔레트 예측 모드를 연속적으로 실행하는 것은 매우 값비싼 평가를 초래할 수 있다. 팔레트 공유 평가가 비효율적인 경우를 검출하고 이를 가능한 빨리 스킵하는 것이 가장 바람직하다.
이것은 독창적인 단계들(1802 내지 1808)을 갖는, 도 21을 통해 예시된 예인, 이런 제3의 독창적인 개선점의 목적이다. 이 개선점에 따르면, 팔레트 공유 평가를 수행하기 전에, 현재 팔레트에서 재사용되는 선행 팔레트의 팔레트 엔트리들의 양이 결정된다. 이 결정에 기초하여, 팔레트 공유 평가는 스킵될 수 있다, 즉 재사용된 팔레트 엔트리들의 양이 미리 정의된 임계치 아래라고 결정되면, 제1 팔레트 예측 모드를 사용하는 픽셀들의 현재 블록의 코딩의 평가는 스킵된다.
도 21의 프로세스의 입력은 완전히 알려진 현재 팔레트이다. 이는 정상 팔레트 평가(2101)가 종료되면 현재 팔레트가 될 수 있다.
정상 팔레트 평가가 수행되면(2101), 그 팔레트 요소들은 알려진다. 팔레트 코딩 모드가 현재 코딩 유닛에 대한 최상의 코딩 모드인지는 단계 2102에서 체크된다.
그렇지 않다면, 팔레트 공유를 사용하는 것이 상황을 개선시키지 않을 수 있다. 결과적으로, 팔레트 평가 프로세스는 단계 2110에서 종료된다.
그렇다면, 현재 팔레트에서 재사용된 이전 팔레트로부터의 요소들의 수는 루핑 단계들(2103 내지 2106)을 통해 카운트된다.
카운팅 루핑은 단계 2103에서, 현재의 엔트리 인덱스를 표현하는 변수 "i"와 재사용된 팔레트 요소들의 개수를 표현하는 변수 "Count"를 모두 0으로 설정함으로써 초기화된다. 다음으로, 단계 2104는 이전 팔레트로부터 i번째 팔레트 요소가 재사용되는지 여부를 체크하는 단계로 구성된다. 그렇다면, 재사용된 요소들의 수는 단계 2105에서 증분되고, 프로세스는 단계 2106으로 진행한다. 그렇지 않다면, 프로세스는 단계 2106으로 직접 진행한다.
단계 2106은 i번째 팔레트 요소가 이전 팔레트의 최종 요소인지 여부를 체크하는 단계로 구성된다. 그렇지 않다면, 다음 팔레트 요소는 단계 2104로 다시 루핑하기 전에, 단계 2107에서 "i"를 증분시킴으로써 선택된다.
그것이 이전 팔레트의 최종 팔레트 요소라면, 단계 2108은 팔레트 공유 평가가 스킵될 수 있는지 여부를 평가하는 단계로 구성된다.
간단한 체크는 팔레트 공유 평가를 승인하기 전에 재사용될 현재 팔레트 요소들의 최소 비율을 보장하기 위해 Count를 현재 팔레트 크기와 비교하는 것으로 구성될 수 있다.
최소 비율에 도달하지 않은 경우(너무 적은 요소가 재사용되는 경우), 팔레트 공유 평가를 수행하지 않고 단계 2110에서 팔레트 평가가 종료된다. 후자는 따라서 스킵된다.
그렇지 않다면(최소 비율에 도달한다면), 팔레트 공유 평가는 단계 2110에서 프로세스를 종료하기 전에, 단계 2109에서 종래의 방식으로 수행된다.
도 14는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스(1400)의 개략적인 블록도이다. 컴퓨팅 디바이스(1400)는 마이크로-컴퓨터, 워크스테이션 또는 경량 휴대용 디바이스와 같은 디바이스일 수 있다. 컴퓨팅 디바이스(1400)는 다음과 같은 것에 접속되는 통신 버스를 포함한다:
- CPU로 지칭되는 마이크로프로세서와 같은 중앙 처리 유닛(1401);
- 본 발명의 실시예의 방법의 실행 가능 코드뿐만 아니라 본 발명의 실시예에 따른 방법을 구현하는데 필요한 변수 및 파라미터를 레코딩하도록 적응된 레지스터를 저장하기 위한, RAM으로 지칭되는 랜덤 액세스 메모리(1402), 이것의 메모리 용량은, 예를 들어 확장 포트에 접속된 옵션 RAM에 의해 확장될 수 있다;
- 본 발명의 실시예를 구현하기 위한 컴퓨터 프로그램을 저장하기 위한, ROM으로 지칭되는 판독 전용 메모리(1403);
- 네트워크 인터페이스(1404)는 처리될 디지털 데이터가 송신 또는 수신되는 통신 네트워크에 전형적으로 접속된다. 네트워크 인터페이스(1404)는 단일 네트워크 인터페이스일 수 있거나, 또는 한 세트의 상이한 네트워크 인터페이스들(예를 들어, 유선 및 무선 인터페이스들 또는 상이한 종류의 유선 또는 무선 인터페이스들)로 구성될 수 있다. 데이터 패킷은 CPU(1401)에서 실행되는 소프트웨어 애플리케이션의 제어 하에 송신을 위해서 네트워크 인터페이스에 기입되거나, 수신을 위해서 네트워크 인터페이스로부터 판독된다;
- 사용자 인터페이스(1405)는 사용자로부터 입력을 수신하거나 사용자에게 정보를 표시하기 위해 사용될 수 있다;
- HD로 지칭되는 하드 디스크(1406)는 대용량 스토리지 디바이스로서 제공될 수 있다;
- I/O 모듈(1407)은 데이터를 비디오 소스나 디스플레이와 같은 외부 디바이스들로부터/로 수신하고/전송하기 위해 사용될 수 있다.
실행가능 코드는 판독 전용 메모리(1403), 하드 디스크(1406), 또는 예를 들어 디스크와 같은 이동식 디지털 매체에 저장될 수 있다. 변형에 따르면, 프로그램들의 실행가능 코드는, 실행되기 전에 하드 디스크(1406)와 같은, 통신 디바이스(1400)의 저장 수단들 중 하나에 저장되도록, 네트워크 인터페이스(1404)를 통해서, 통신 네트워크에 의해 수신될 수 있다.
중앙 처리 유닛(1401)은 본 발명의 실시예들에 따른 프로그램 또는 프로그램들의 소프트웨어 코드의 명령어들 또는 부분들의 실행을 제어 및 명령하도록 적응되어 있으며, 이들 명령어들은 앞서 언급한 저장 수단들 중 하나에 저장되어 있다. 전원이 켜진 후, CPU(1401)는 명령어들이, 예를 들어 프로그램 ROM(1403) 또는 하드-디스크(HD)(1406)로부터 로딩된 후 소프트웨어 애플리케이션에 관한 메인 RAM 메모리(1402)로부터 명령어들을 실행할 수 있다. 이러한 소프트웨어 애플리케이션은, CPU(1401)에 의해 실행될 때, 도 17 내지 21에 도시된 흐름도의 단계들이 수행되게 한다.
도 17 내지 도 21에 도시된 알고리즘의 임의의 단계는 PC("Personal Computer"), DSP("Digital Signal Processor") 또는 마이크로컨트롤러와 같은, 프로그램가능 컴퓨팅 머신에 의한 명령어들의 집합 또는 프로그램의 실행에 의해 소프트웨어로 구현될 수 있고; 아니면 FPGA("Field-Programmable Gate Array") 또는 ASIC("Application-Specific Integrated Circuit")과 같은 머신 또는 전용 컴포넌트에 의해 하드웨어로 구현될 수 있다.
비록 본 발명이 특정 실시예를 참고로 위와 같이 설명되었다 할지라도, 본 발명은 이 특정 실시예들에 제한되지 않으며, 본 기술분야의 통상의 기술자에게는 본 발명의 범위 내에 있는 수정들이 자명할 것이다.
전술한 예시적 실시예들을 참조하면 본 기술분야의 통상의 기술자에 대해 많은 추가 수정 및 변형이 제안될 것인데, 이들 실시예들은 단지 예로서 주어지고, 본 발명의 범위를 제한하도록 의도되지는 않으며, 본 발명의 범위는 첨부 청구항들에 의해서만 결정된다. 특히, 상이한 실시예들로부터의 상이한 특징들은 적절한 경우에 상호 교환될 수 있다.
청구항들에서, 용어 "포함하는(comprising)"은 다른 요소들 또는 단계들을 배제하지 아니하며, 부정 관사 "일(a)" 또는 "일(an)"은 복수를 배제하지 아니한다. 상이한 특징들이 서로 상이한 종속항들에 인용되어 있다는 사실만으로는 이들 특징의 조합이 유리하게 이용될 수 없다는 것을 나타내지 않는다.
Claims (14)
- 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하는 방법으로서,
인덱스들의 블록, 이스케이프된(escaped) 픽셀 값들 및 팔레트를 획득하는 단계 - 상기 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 상기 이스케이프된 픽셀 값들은 상기 팔레트 내의 픽셀 값과 연관되는 상기 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
상기 인덱스들의 블록, 상기 이스케이프된 픽셀 값들 및 상기 팔레트로부터 디코딩된 픽셀들의 현재 블록을 형성하는 단계를 포함하고,
상기 인덱스들의 블록을 획득하는 단계는,
상기 비트스트림으로부터, 상기 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들(syntax elements)을 획득하는 단계; 및
상기 신택스 요소들에 기초하여 상기 인덱스들의 블록의 인덱스들을 생성하는 단계를 포함하고,
획득된 상기 신택스 요소들은, 상기 인덱스들의 그룹들 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 상기 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드(up-to-end codeword)에 의해 표시되는 신택스 요소를 포함하는, 방법. - 이미지 내의 픽셀들의 현재 블록을 인코딩하는 방법으로서,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들을 생성하는 단계 - 상기 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 상기 이스케이프된 픽셀 값들은 상기 팔레트 내의 픽셀 값과 연관되는 상기 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
상기 인덱스들의 블록 및 상기 이스케이프된 픽셀 값을 인코딩하는 단계를 포함하고;
상기 인덱스들의 블록을 인코딩하는 단계는,
상기 인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 그룹들을 생성하기 위한 신택스 요소들을 생성하는 단계를 포함하고;
상기 신택스 요소들은, 상기 인덱스들의 그룹들 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 상기 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함하는, 방법. - 제1항 또는 제2항에 있어서, 상기 신택스 요소들은 정의된 수의 인덱스들과 연관되고 상기 인덱스들의 블록의 인덱스들의 그룹에 대응하는 미리 정의된 코드워드를 사용하고, 상기 인덱스들의 블록 내의 최종 블록 위치들에 대응하는 신택스 요소는 상기 업-투-엔드 코드워드를 사용하는, 방법.
- 제3항에 있어서, 상기 정의된 수의 인덱스들과 연관된 상기 미리 정의된 코드워드 중 일부는 짧은 코드워드이고, 다른 정의된 수의 인덱스들과 연관된 다른 미리 정의된 코드워드는 공통 코드워드 프리픽스(common codeword prefix) 및 가변 코드워드 서픽스(variable codeword suffix)로 구성되고; 상기 업-투-엔드 코드워드는 상기 공통 코드워드 프리픽스를 포함하는, 방법.
- 제4항에 있어서, 상기 업-투-엔드 코드워드는 상기 공통 코드워드 프리픽스 외에 1비트 서픽스를 포함하는, 방법.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 신택스 요소는 세트들로 제공되고, 신택스 요소들의 세트에 대응하는 인덱스들의 그룹 생성은 상기 세트의 제1 신택스 요소에 의존하며, 상기 인덱스들을 생성하는 데 사용되는 동작은,
상기 블록 위치가 바로 위에 있는 인덱스를 반복하는 동작; 및
상기 세트의 제2 신택스 요소에 코딩된 인덱스를 반복하는 동작 중 하나인, 방법. - 디바이스 내의 마이크로프로세서 또는 컴퓨터 시스템에 의해 실행될 때, 상기 디바이스로 하여금 제1항 내지 제6항 중 어느 한 항의 방법을 수행하게 하는 프로그램을 저장하는 비일시적인 컴퓨터 판독 가능 매체.
- 실행시 제1항 내지 제6항 중 어느 한 항의 방법이 수행되게 하는 컴퓨터 프로그램.
- 제8항에 따른 컴퓨터 프로그램이 저장되는 머신 판독 가능 매체.
- 제2항, 또는 제2항에 종속하는 제3항 내지 제6항 중 어느 한 항의 인코딩 방법을 사용하여 생성되는 비트스트림.
- 제10항에 따른 비트스트림이 저장되는 저장 매체.
- 제1항 내지 제6항 중 어느 한 항의 방법을 수행하도록 적응된 수단을 포함하는 디바이스.
- 비트스트림으로부터의 이미지 내의 픽셀들의 현재 블록을 디코딩하기 위한 디코딩 디바이스로서,
인덱스들의 블록, 이스케이프된 픽셀 값들 및 팔레트를 획득하기 위한 수단 - 상기 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 상기 이스케이프된 픽셀 값들은 상기 팔레트 내의 픽셀 값과 연관되는 상기 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
상기 인덱스들의 블록, 상기 이스케이프된 픽셀 값들 및 상기 팔레트로부터 디코딩된 픽셀의 현재 블록을 형성하기 위한 수단을 포함하고,
상기 인덱스들의 블록을 획득하는 것은,
비트스트림으로부터, 상기 인덱스들의 블록에서 연속적인 블록 위치들을 갖는 인덱스들의 그룹들을 생성하기 위한 신택스 요소들을 획득하는 것; 및
상기 신택스 요소들에 기초하여 상기 인덱스들의 블록의 인덱스들을 생성하는 것을 포함하고,
획득된 상기 신택스 요소들은, 상기 인덱스들의 그룹들 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 상기 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함하는, 디코딩 디바이스. - 이미지 내의 픽셀들의 현재 블록을 인코딩하기 위한 인코딩 디바이스로서,
픽셀들의 현재 블록 및 팔레트로부터 인덱스들의 블록 및 이스케이프된 픽셀 값들을 생성하기 위한 수단 - 상기 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 상기 이스케이프된 픽셀 값들은 상기 팔레트 내의 픽셀 값과 연관되는 상기 인덱스들의 블록에서 대응하는 인덱스를 갖지 않는 픽셀들에 대한 픽셀 값들을 포함함 - ; 및
상기 인덱스들의 블록 및 상기 이스케이프된 픽셀 값들을 인코딩하기 위한 수단을 포함하고;
상기 인덱스들의 블록을 인코딩하는 것은,
상기 인덱스들의 블록에서 연속적인 블록 위치를 갖는 인덱스의 그룹들을 생성하기 위한 신택스 요소들을 생성하는 것을 포함하고;
상기 신택스 요소들은, 상기 인덱스들의 대응하는 그룹 중 하나를 형성하는 인덱스들이 나머지 블록 위치들의 수에 상관없이 상기 인덱스들의 블록의 끝까지의 나머지 모든 블록 위치에서의 인덱스들임을 표시하는 업-투-엔드 코드워드에 의해 표시되는 신택스 요소를 포함하는, 인코딩 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1417652.3 | 2014-10-06 | ||
GB1417652.3A GB2531005A (en) | 2014-10-06 | 2014-10-06 | Improved encoding process using a palette mode |
PCT/EP2015/073062 WO2016055486A1 (en) | 2014-10-06 | 2015-10-06 | Improved encoding process using a palette mode |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197010693A Division KR102088605B1 (ko) | 2014-10-06 | 2015-10-06 | 팔레트 모드를 사용하는 개선된 인코딩 프로세스 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170066462A true KR20170066462A (ko) | 2017-06-14 |
KR101970903B1 KR101970903B1 (ko) | 2019-04-19 |
Family
ID=51946924
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197010693A KR102088605B1 (ko) | 2014-10-06 | 2015-10-06 | 팔레트 모드를 사용하는 개선된 인코딩 프로세스 |
KR1020177011153A KR101970903B1 (ko) | 2014-10-06 | 2015-10-06 | 팔레트 모드를 사용하는 개선된 인코딩 프로세스 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197010693A KR102088605B1 (ko) | 2014-10-06 | 2015-10-06 | 팔레트 모드를 사용하는 개선된 인코딩 프로세스 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10491907B2 (ko) |
EP (1) | EP3205108A1 (ko) |
JP (1) | JP6584501B2 (ko) |
KR (2) | KR102088605B1 (ko) |
CN (1) | CN106797483B (ko) |
GB (1) | GB2531005A (ko) |
RU (1) | RU2684202C2 (ko) |
WO (1) | WO2016055486A1 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201500846TA (en) * | 2012-09-26 | 2015-05-28 | Panasonic Ip Corp America | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus |
US10097842B2 (en) | 2015-09-18 | 2018-10-09 | Qualcomm Incorporated | Restriction of escape pixel signaled values in palette mode video coding |
JP6613842B2 (ja) * | 2015-11-24 | 2019-12-04 | 富士通株式会社 | 画像符号化装置、画像符号化方法、及び画像符号化プログラム |
US11265579B2 (en) * | 2018-08-01 | 2022-03-01 | Comcast Cable Communications, Llc | Systems, methods, and apparatuses for video processing |
CN113228650B (zh) * | 2018-11-08 | 2024-03-19 | 交互数字Vc控股公司 | 基于块的表面的视频编码或解码的量化 |
WO2020156534A1 (en) | 2019-02-01 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Interactions between in-loop reshaping and intra block copy |
CN113383547A (zh) | 2019-02-01 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 环路整形和帧间编解码工具之间的相互作用 |
US10924750B2 (en) * | 2019-03-01 | 2021-02-16 | Alibaba Group Holding Limited | Palette size constraint in palette mode for video compression system |
US11202101B2 (en) * | 2019-03-13 | 2021-12-14 | Qualcomm Incorporated | Grouped coding for palette syntax in video coding |
CN113574889B (zh) | 2019-03-14 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 环路整形信息的信令和语法 |
WO2020192614A1 (en) | 2019-03-23 | 2020-10-01 | Beijing Bytedance Network Technology Co., Ltd. | Restrictions on adaptive-loop filtering parameter sets |
US11309911B2 (en) | 2019-08-16 | 2022-04-19 | Advanced Micro Devices, Inc. | Semi-sorting compression with encoding and decoding tables |
CN116684634A (zh) | 2019-08-26 | 2023-09-01 | Lg电子株式会社 | 编码设备、解码设备和比特流发送设备 |
EP4026322A4 (en) * | 2019-09-07 | 2024-01-03 | Beijing Dajia Internet Information Technology Co., Ltd. | PREDICTIVE MODE SIGNALING IN VIDEO CODING |
US11076151B2 (en) | 2019-09-30 | 2021-07-27 | Ati Technologies Ulc | Hierarchical histogram calculation with application to palette table derivation |
KR102589351B1 (ko) * | 2020-03-25 | 2023-10-16 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
US11558625B2 (en) * | 2020-06-24 | 2023-01-17 | Electronics And Telecommunications Research Institute | Method for generating residual image of multi-view video and apparatus using the same |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8599925B2 (en) | 2005-08-12 | 2013-12-03 | Microsoft Corporation | Efficient coding and decoding of transform blocks |
RU2420021C2 (ru) | 2009-03-24 | 2011-05-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ сжатия изображений и видеопоследовательностей |
US8615138B2 (en) | 2011-11-03 | 2013-12-24 | Google Inc. | Image compression using sub-resolution images |
US20140009576A1 (en) | 2012-07-05 | 2014-01-09 | Alcatel-Lucent Usa Inc. | Method and apparatus for compressing, encoding and streaming graphics |
JP5632431B2 (ja) * | 2012-09-04 | 2014-11-26 | 株式会社東芝 | 画像符号化装置、及び画像符号化方法 |
CN103281538B (zh) * | 2013-06-06 | 2016-01-13 | 上海交通大学 | 基于滚动哈希和块级别帧内预测的帧内编码方法 |
WO2015006169A1 (en) * | 2013-07-08 | 2015-01-15 | Sony Corporation | Improvement for palette coding mode |
US9558567B2 (en) * | 2013-07-12 | 2017-01-31 | Qualcomm Incorporated | Palette prediction in palette-based video coding |
WO2015091879A2 (en) * | 2013-12-19 | 2015-06-25 | Canon Kabushiki Kaisha | Improved encoding process using a palette mode |
GB2521606A (en) * | 2013-12-20 | 2015-07-01 | Canon Kk | Method and apparatus for transition encoding in video coding and decoding |
US10237575B2 (en) * | 2014-03-14 | 2019-03-19 | Vid Scale, Inc. | Palette coding for screen content coding |
US9860560B2 (en) * | 2014-07-02 | 2018-01-02 | Qualcomm Incorporated | Method for palette mode coding |
KR20170066457A (ko) * | 2014-09-26 | 2017-06-14 | 브이아이디 스케일, 인크. | 시간적 블록 벡터 예측을 갖는 인트라 블록 카피 코딩 |
US10158866B2 (en) * | 2014-09-26 | 2018-12-18 | Qualcomm Incorporated | Parsing dependency reduction for palette index coding |
-
2014
- 2014-10-06 GB GB1417652.3A patent/GB2531005A/en not_active Withdrawn
-
2015
- 2015-10-06 KR KR1020197010693A patent/KR102088605B1/ko active IP Right Grant
- 2015-10-06 WO PCT/EP2015/073062 patent/WO2016055486A1/en active Application Filing
- 2015-10-06 US US15/516,661 patent/US10491907B2/en active Active
- 2015-10-06 JP JP2017516935A patent/JP6584501B2/ja active Active
- 2015-10-06 KR KR1020177011153A patent/KR101970903B1/ko active IP Right Grant
- 2015-10-06 CN CN201580053564.4A patent/CN106797483B/zh active Active
- 2015-10-06 RU RU2017115411A patent/RU2684202C2/ru active
- 2015-10-06 EP EP15777672.5A patent/EP3205108A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR101970903B1 (ko) | 2019-04-19 |
RU2684202C2 (ru) | 2019-04-04 |
JP6584501B2 (ja) | 2019-10-02 |
WO2016055486A1 (en) | 2016-04-14 |
RU2017115411A (ru) | 2018-11-13 |
CN106797483B (zh) | 2019-11-19 |
KR20190041549A (ko) | 2019-04-22 |
US20170310977A1 (en) | 2017-10-26 |
GB2531005A (en) | 2016-04-13 |
GB201417652D0 (en) | 2014-11-19 |
KR102088605B1 (ko) | 2020-03-12 |
RU2017115411A3 (ko) | 2018-11-13 |
EP3205108A1 (en) | 2017-08-16 |
JP2017536724A (ja) | 2017-12-07 |
CN106797483A (zh) | 2017-05-31 |
US10491907B2 (en) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101970903B1 (ko) | 팔레트 모드를 사용하는 개선된 인코딩 프로세스 | |
US11259033B2 (en) | Method and apparatus for encoding or decoding blocks of pixel | |
US10972742B2 (en) | Encoding process using a palette mode | |
KR101869018B1 (ko) | Hevc에서의 향상된 팔레트 모드 | |
KR102020101B1 (ko) | 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치 | |
US9516342B2 (en) | Method and apparatus for transition encoding in video coding and decoding | |
GB2547047A (en) | Encoder optimizations for palette lossless encoding of content with subsampled colour component | |
GB2521410A (en) | Method and apparatus for encoding or decoding blocks of pixel | |
GB2526337A (en) | Method and apparatus for syntax element encoding in video coding and decoding | |
GB2528431A (en) | Improved encoding process using a palette mode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |