KR102020101B1 - 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치 - Google Patents

비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR102020101B1
KR102020101B1 KR1020167017702A KR20167017702A KR102020101B1 KR 102020101 B1 KR102020101 B1 KR 102020101B1 KR 1020167017702 A KR1020167017702 A KR 1020167017702A KR 20167017702 A KR20167017702 A KR 20167017702A KR 102020101 B1 KR102020101 B1 KR 102020101B1
Authority
KR
South Korea
Prior art keywords
block
parameter
palette
value
entropy code
Prior art date
Application number
KR1020167017702A
Other languages
English (en)
Other versions
KR20160093061A (ko
Inventor
기욤 라로슈
크리스토프 지스께
빠트리스 온노
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20160093061A publication Critical patent/KR20160093061A/ko
Application granted granted Critical
Publication of KR102020101B1 publication Critical patent/KR102020101B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1887Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Abstract

본 발명은 비디오를 인코딩 또는 디코딩하는 프로세스에서 변위 벡터 컴포넌트 신택스 요소를 예측하기 위한 방법 및 디바이스에 관한 것이다. 이것은 특히, HEVC에서 팔레트 모드 인코딩시 "Run" 신택스 요소에 관한 것이다. 이것은 더 구체적으로, 픽셀의 블록이 소위 팔레트로 인코딩되거나 이로부터 구축되는 예측자 블록에 기초하여 예측 인코딩되는 코딩의 모드에 적용된다. 이것은 변수 골롬 순서를 이용하여 Run 신택스 요소의 인코딩을 향상시키는 것을 제안한다. 골롬 순서가 상이한 파라미터에 따라 적응되는 여러 실시예들이 설명된다. 따라서, Run 신택스 요소의 코딩은 향상된다.

Description

비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치{METHOD AND APPARATUS FOR SYNTAX ELEMENT ENCODING IN A VIDEO CODEC}
본 발명은 비디오를 인코딩 또는 디코딩하는 프로세스에서 변위 벡터 컴포넌트 신택스 요소 인코딩을 예측하기 위한 방법 및 디바이스에 관한 것이다. 이것은 특히, HEVC에서 팔레트 모드 인코딩시 "Run" 신택스 요소에 관한 것이다.
이것은 더 구체적으로, 픽셀의 블록이 소위 팔레트로 인코딩되거나 이로부터 구축되는 예측자 블록에 기초하여 예측 인코딩되는(predictively encoded) 코딩의 모드에 적용된다.
본 명세서의 팔레트는 인덱스를 픽셀의 값과 연관시키는 엔트리들을 가진 룩업 테이블로서 정의된다. 전형적으로, 픽셀의 값은 픽셀과 연관되는 각각의 컬러 컴포넌트의 값으로 구성되어, 컬러 팔레트가 될 수 있지만, 반드시 그렇지는 않다. 오히려, 픽셀의 값은 단일 픽셀 컴포넌트로 만들어질 수 있어, 모노크롬 팔레트가 될 수 있다.
픽셀의 블록을 인코딩하는 이런 모드는 일반적으로 팔레트 코딩 모드로서 지칭된다. 예를 들어, 고효율 비디오 코딩(HEVC: ISO/IEC 23008-2 MPEG-H Part 2/ITU-T H.265) 국제 표준의 레인지 확장에서 이 모드를 채택하는 것이 고려된다.
비디오 시퀀스에서 이미지를 인코딩할 때, 이미지는 먼저 코딩 트리 블록(CTB)(Coding Tree Block)들로 언급되는 동일 크기의 픽셀들의 코딩 엔티티들로 분할된다. 코딩 트리 블록의 크기는 전형적으로 64×64 픽셀들이다. 각각의 코딩 트리 블록은 이후 그 크기가 변할 수 있고 인코딩하기 위한 픽셀들의 실제 블록들인 더 작은 블록들의 계층 트리로 분류될 수 있다. 인코딩하기 위한 이러한 작은 블록들은 코딩 유닛(CU)(Coding Unit)으로서 지칭된다.
특정한 코딩 유닛의 인코딩은 전형적으로 예측 가능하다. 이것은 예측자 블록이 먼저 결정되는 것을 의미한다. 다음에, 예측자 블록과 코딩 유닛 간의 차이가 계산된다. 이런 차이를 잔차(residue)로 부른다. 다음에, 이 잔차가 압축된다. 코딩 유닛의 실제 인코딩된 정보는 예측자 블록 및 압축된 잔차를 결정하는 방식을 나타내기 위해 일부 정보로 만들어진다. 최상의 예측자 블록들은 효율적으로 압축될 수 있는 작은 잔차를 얻기 위해 가능한 한 코딩 유닛과 유사한 블록들이다.
코딩 모드는 코딩 유닛의 예측 인코딩 방법을 위한 예측자 블록을 결정하는 데 사용되는 방법에 기초하여 정의된다.
제1 코딩 모드는 인트라(INTRA) 모드로서 지칭된다. 인트라 모드에 따르면, 예측자 블록은 현재 이미지 내의 코딩 유닛의 바로 근처의 픽셀들의 값에 기초하여 구축된다. 예측자 블록이 현재 이미지의 블록이 아니라 재구성이라는 점에 유의해야 한다. 경계의 어느 픽셀들이 예측자 블록을 구축하는 데 사용되고 어떻게 이들이 사용되는지를 결정하기 위해 방향이 사용된다. 인트라 모드에 감쳐진 아이디어는, 자연적 이미지들의 일반적 코히런스(general coherence) 때문에, 코딩 유닛의 바로 근처의 픽셀들이 현재 코딩 유닛의 픽셀들과 유사할 수 있다는 것이다. 따라서, 이들 근처 픽셀들에 기초하는 예측자 블록을 이용하여 코딩 유닛의 픽셀들의 값의 양호한 예측을 얻는 것이 가능하다.
제2 코딩 모드는 인터(INTER) 모드로서 지칭된다. 인터 모드에 따르면, 예측자 블록은 다른 이미지의 블록이다. 인터 모드에 감쳐진 아이디어는 시퀀스 내의 연속적인 이미지들이 일반적으로 매우 유사하다는 것이다. 주된 차이는 전형적으로 카메라의 스크롤링 또는 장면 내의 객체들의 이동에 기인하는 이들 이미지 간의 움직임으로부터 온다. 예측자 블록은 현재 이미지 내의 코딩 유닛의 위치와 관련된 그 위치를 참조 이미지에 제공하는 벡터에 의해 결정된다. 이 벡터는 움직임 벡터로서 지칭된다. 이 모드에 따르면, 이 모드를 이용하는 그런 코딩 유닛의 인코딩은 움직임 벡터 및 압축된 잔차를 포함하는 움직임 정보를 포함한다.
본 명세서는 팔레트 모드로 불리는 제3 코딩 모드에 집중한다. 팔레트 모드에 따르면, 주어진 코딩 유닛에 대한 예측자 블록을 팔레트로부터의 인덱스들의 블록으로서 정의하는 것이 가능하고: 예측자 블록 내의 각각의 픽셀 위치에서, 예측자 블록은 코딩 유닛에서 동일 위치를 갖는(즉, 같은 위치에 배치되는) 픽셀의 값에 가장 가까운 팔레트 내의 픽셀 값과 연관되는 인덱스를 포함한다. 예측자 블록과 코딩 유닛 간의 차이를 나타내는 잔차는 이후 계산되고 인코딩된다. 팔레트 내의 엔트리 인덱스들은 또한 "레벨들(Levels)"로서 알려져 있다.
팔레트 모드를 이용할 때, 레벨들의 예측자 블록은 비트스트림으로 전송될 필요가 있다. 이런 전송에서, 예측자 블록은 3개의 신택스 요소(syntax element)를 이용하여 바이너리 인코딩된다. "Pred mode"로 불리는 제1 신택스 요소는 2개의 인코딩 모드를 구별하는 것을 가능하게 한다. 값 0을 갖는 Pred 모드에 대응하는 제1 모드에서, 인코딩될 레벨의 값은 비트스트림으로 전송돼야만 한다. 값 1을 갖는 Pred 모드에 대응하는 제2 모드에서, 인코딩될 레벨의 값은 예측자 블록에서 상기 픽셀의 값으로부터 획득된다. 레벨은 전송될 필요가 없다.
"레벨(Level)"로 불리는 제2 신택스 요소는 제1 모드에서 레벨의 값의 전송을 위해 정의된다. "런(Run)"으로 불리는 제3 신택스 요소는 반복 값을 인코딩하는 데 사용된다. 예측자 블록이 상부 좌측 코너에서 하부 우측 코너로, 로우(row)별로 좌측에서 우측으로 그리고 상부에서 하부로 스캐닝된다고 고려하면, Run 신택스 요소는 동일한 인코딩을 갖는 예측자 블록에 연속적 픽셀들의 수를 제공한다. Pred 모드가 0일 때, 이것은 동일한 레벨 값을 갖는 예측자 블록의 연속적 픽셀들의 수이다. Pred 모드가 1일 때, 이것은 상기 픽셀의 레벨 값에 대응하는 레벨 값을 갖는 예측자 블록의 연속적 픽셀들의 수이다.
Run 신택스 요소는 최하위 값들에 대해서는 골롬-라이스 코드(Golomb-Rice code)를 이용하고 더 높은 값에 대해서는 지수 골롬 코드(exponential Golomb code)를 이용하여 인코딩된다. 이들 골롬 코드들은 골롬 순서로 불리는 파라미터를 이용하여 정의된다. Run 신택스 요소의 인코딩에서, 이 골롬 순서는 값 3을 갖는 것으로 추정된다. 골롬 엔트로피 코드의 길이가 순서에 따라 달라짐에 유의해야 한다.
본 발명은 팔레트 모드의 "Run" 신택스 요소의 인코딩의 인코딩을 향상시키기 위해 고안되었다.
이것은 변수 골롬 순서를 이용하여 Run 신택스 요소의 인코딩을 향상시키는 것을 제안한다. 골롬 순서가 상이한 파라미터에 따라 적응되는 여러 실시예들이 설명된다.
본 발명의 제1 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 방법이 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 엔트로피 코드의 적어도 하나의 파라미터는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 결정된다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드의 길이와 관련된다.
실시예에서, 상기 엔트로피 코드는 골롬 타입 코드이다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 골롬 타입 코드의 순서이다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드와 연관되는 상기 적어도 하나의 인덱스의 예측 모드에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드와 연관되는 상기 적어도 하나의 인덱스의 인덱스 값에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 팔레트 크기에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 코딩 유닛 크기에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 인덱스들의 블록의 각각의 인덱스는 각각의 픽셀과 연관되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 인덱스들의 블록 내의 인덱스들과 연관시키기 위해 픽셀들의 나머지 수에 따라 결정된다.
실시예에서, 인덱스들의 블록의 적어도 하나의 인덱스는 연속적인 픽셀들의 그룹에 의해 스캔 순서로 인코딩되고, 각각의 그룹은 예측 모드를 제공하는 제1 신택스 요소와 반복을 제공하는 제2 요소를 이용하여 인코딩되고, 상기 엔트로피 코드는 반복 신택스 요소의 인코딩에 사용된다.
실시예에서, 방법은
- 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 하나의 제2 파라미터에 기초하여 카테고리들을 결정하는 단계; 및
- 각각의 카테고리에 대한 엔트로피 코드의 상기 적어도 하나의 파라미터의 값을 결정하는 단계를 포함한다.
실시예에서, 방법은
- 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 하나의 제3 파라미터에 기초하여 엔트로피 코드의 상기 적어도 하나의 파라미터의 상기 결정된 값을 적응시키는 단계를 더 포함한다.
실시예에서, 상기 적어도 하나의 제3 파라미터는 동일한 카테고리에 대해 결정된 최종 값과 최종 인코딩된 반복 값을 포함한다.
실시예에서, 상기 적어도 하나의 제2 파라미터는 엔트로피 코드와 연관되는 픽셀의 예측 모드 또는 인덱스 값을 포함한다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 최종 인코딩된 또는 디코딩된 대응하는 요소의 인코딩 또는 디코딩을 위해 최적이 되는 엔트로피 코드의 파라미터의 값으로서 주어진 요소의 인코딩을 위해 결정된다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터의 값은 고정된 수의 값들로 제한된다.
본 발명의 제2 양태에 따르면, 비디오 데이터를 비트스트림에 인코딩하는 방법이 제공되며, 방법은
- 제1 양태의 방법에 따라 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 단계; 및
- 엔트로피 코드의 결정된 파라미터 또는 하나의 결정된 파라미터를 이용하여 상기 비트스트림에 값을 기입하는 단계를 포함한다.
본 발명의 제3 양태에 따르면, 비트스트림으로부터 비디오 데이터를 디코딩하는 방법이 제공되며, 방법은
- 인덱스들의 블록의 인코딩 프로세스에 사용되는 파라미터를 상기 비트스트림으로부터 획득하는 단계;
- 제1 양태의 방법에 따라 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 단계를 포함한다.
본 발명의 제4 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하기 위한 디바이스가 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 디바이스는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 엔트로피 코드의 상기 적어도 하나의 파라미터를 결정하기 위한 수단을 포함한다.
본 발명의 제5 양태에 따르면, 비디오 데이터를 비트스트림에 인코딩하기 위한 디바이스가 제공되며, 디바이스는 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하기 위한 수단 - 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 디바이스는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 엔트로피 코드의 상기 적어도 하나의 파라미터를 결정하기 위한 수단을 포함함 -, 및 엔트로피 코드의 결정된 파라미터 또는 하나의 결정된 파라미터를 이용하여 상기 비트스트림에 값을 기입하기 위한 수단을 포함한다.
본 발명의 제6 양태에 따르면, 비트스트림으로부터 비디오 데이터를 디코딩하기 위한 디바이스가 제공되며, 디바이스는 인덱스들의 블록의 인코딩 프로세스에 사용되는 파라미터를 상기 비트스트림으로부터 획득하기 위한 수단; 및 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하기 위한 수단을 포함하고, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 디바이스는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 엔트로피 코드의 상기 적어도 하나의 파라미터를 결정하기 위한 수단을 포함한다.
본 발명의 제7 양태에 따르면, 프로그램 가능 장치를 위한 컴퓨터 프로그램 제품이 제공되며, 컴퓨터 프로그램 제품은 프로그램 가능 장치에 로딩되고 이에 의해 실행될 때 제1, 제2 또는 제3 양태 중 어느 하나에 따른 방법을 구현하기 위한 명령어들의 시퀀스를 포함한다.
본 발명의 제8 양태에 따르면, 제1, 제2 또는 제3 양태 중 어느 하나에 따른 방법을 구현하기 위한 컴퓨터 프로그램의 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체가 제공된다.
본 발명의 제9 양태에 따르면, 컴퓨터 프로그램의 명령어들을 저장하는 컴퓨터 또는 마이크로프로세서에 의해 판독 가능한 정보 저장 매체가 제공되며, 이것은 제1, 제2 또는 제3 양태 중 어느 하나에 따른 방법을 구현하는 것이 가능하게 된다.
본 발명의 하나의 추가 양태에 따르면, 비디오 데이터를 비트스트림에 인코딩하는 방법이 제공되며, 상기 방법은 제1 양태에 따라 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 단계; 및 상기 비트스트림에 결정된 값을 기입하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 비트스트림으로부터 비디오 데이터를 디코딩하는 방법이 제공되며, 상기 방법은 제1 양태에 따라 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 단계; 및 상기 비트스트림으로부터 결정된 값을 판독하는 단계를 포함한다.
본 발명의 추가 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 방법이 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 적어도 하나의 파라미터는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 결정된다. 따라서, Run 신택스 요소의 코딩은 향상된다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드의 길이와 관련된다.
실시예에서, 상기 엔트로피 코드는 골롬 타입 코드이다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 골롬 타입 코드의 순서이다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드와 연관되는 상기 적어도 하나의 인덱스의 예측 모드에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 엔트로피 코드와 연관되는 상기 적어도 하나의 인덱스의 인덱스 값에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 팔레트 크기에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 코딩 유닛 크기에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록의 적어도 하나의 인덱스는 예측 인코딩되고, 엔트로피 코드의 상기 적어도 하나의 파라미터는 인코딩될 또는 디코딩될 레벨의 블록 내의 남아있는 픽셀들의 수에 따라 결정된다.
실시예에서, 인덱스들의 상기 블록은 연속적인 픽셀들의 그룹에 의해 스캔 순서로 인코딩되고, 각각의 그룹은 예측 모드를 제공하는 제1 신택스 요소와 반복을 제공하는 제2 요소를 이용하여 인코딩되고, 상기 엔트로피 코드는 반복 신택스 요소의 인코딩에 사용된다.
실시예에서, 방법은
인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 하나의 제2 파라미터에 기초하여 카테고리들을 결정하는 단계; 및
각각의 카테고리에 대한 엔트로피 코드의 상기 적어도 하나의 파라미터의 값을 결정하는 단계를 포함한다.
실시예에서, 방법은
인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 하나의 제3 파라미터에 기초하여 엔트로피 코드의 상기 적어도 하나의 파라미터의 상기 결정된 값들을 적응시키는 단계를 더 포함한다.
실시예에서, 상기 적어도 하나의 제3 파라미터는 동일한 카테고리에 대해 결정된 최종 값과 최종 인코딩된 반복 값을 포함한다.
실시예에서, 상기 적어도 하나의 제2 파라미터는 엔트로피 코드와 연관되는 픽셀의 예측 모드 또는 인덱스 값을 포함한다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터는 최종 인코딩된 또는 디코딩된 대응하는 요소의 인코딩 또는 디코딩을 위해 최적이 되는 엔트로피 코드의 파라미터의 값으로서 주어진 요소의 인코딩을 위해 결정된다.
실시예에서, 엔트로피 코드의 상기 적어도 하나의 파라미터의 값은 고정된 수의 값들로 제한된다.
본 발명의 다른 양태에 따르면, 비디오 데이터를 비트스트림에 인코딩 또는 디코딩하는 방법이 제공되며, 방법은
본 발명에 따라 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 단계; 및
상기 비트스트림에/으로부터 결정된 값을 기입/판독하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록을 인코딩하는 방법이 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 인덱스들의 상기 블록은 연속적인 픽셀들의 그룹에 의해 스캔 순서로 인코딩되고, 각각의 그룹은 예측 모드를 제공하는 제1 신택스 요소와 반복을 제공하는 제2 요소를 이용하여 인코딩되고, 상기 엔트로피 코드는 반복 신택스 요소의 인코딩에 사용되고, 상기 팔레트는 인덱스들의 블록에서 인덱스들의 발생에 따라 재정렬되고, 반복 요소는 미리 정의된 임계값보다 큰 인덱스와 연관된 픽셀들의 그룹들에 대해 인코딩되지 않는다.
본 발명의 다른 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하는 방법이 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 적어도 하나의 파라미터는 제로 값인 것으로 결정된다.
본 발명의 또 다른 양태에 따르면, 팔레트에 따라 이미지의 코딩 유닛을 인코딩하기 위해 사용되는 인덱스들의 블록의 인덱스들과 연관되는 엔트로피 코드의 적어도 하나의 파라미터를 결정하기 위한 디바이스가 제공되며, 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드는 인덱스들의 상기 블록의 적어도 일부의 인코딩을 위해 사용되고, 상기 디바이스는 인덱스들의 상기 블록의 인코딩 프로세스에 사용되는 적어도 파라미터에 따라 상기 상기 적어도 하나의 파라미터를 결정하기 위한 수단을 포함한다.
본 발명의 또 다른 양태에 따르면, 프로그램 가능 장치를 위한 컴퓨터 프로그램 제품이 제공되며, 컴퓨터 프로그램 제품은 프로그램 가능 장치에 로딩되고 이에 의해 실행될 때 본 발명에 따른 방법을 구현하기 위한 명령어들의 시퀀스를 포함한다.
본 발명의 또 다른 양태에 따르면, 본 발명에 따른 방법을 구현하기 위한 컴퓨터 프로그램의 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체가 제공된다.
본 발명의 또 다른 양태에 따르면, 컴퓨터 프로그램의 명령어들을 저장하는 컴퓨터 또는 마이크로프로세서에 의해 판독 가능한 정보 저장 매체가 제공되며, 이것은 본 발명에 따른 방법을 구현하는 것을 가능하게 한다.
본 발명의 또 다른 양태에 따르면, 이미지에서 팔레트 모드에 따라 인코딩되는 픽셀들의 블록의 픽셀들과 연관되는 엔트로피 코드의 파라미터들을 결정하는 방법이 제공되며, 하나의 상기 파라미터는 연관된 픽셀의 예측 방향에 따라 결정된다.
실시예에서, 상기 결정된 파라미터는 엔트로피 코드의 길이이다.
실시예에서, 상기 결정된 파라미터가 골롬 코드의 파라미터이다.
본 발명의 추가 양태에서는, 전술한 또 다른 양태의 파라미터들을 결정하는 방법을 포함하는, 이미지를 인코딩하는 방법이 제공된다.
본 발명의 추가 양태에서는, 전술한 또 다른 양태의 파라미터들을 결정하는 방법을 포함하는, 이미지를 디코딩하는 방법이 제공된다. 본 발명에 따르는 방법들 중 적어도 일부는 컴퓨터로 구현될 수 있다. 따라서, 본 발명은 모두가 일반적으로 "회로", "모듈" 또는 "시스템"으로서 본 명세서에서 불리는, 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 띨 수 있다. 또한, 본 발명은 컴퓨터 이용가능 프로그램 코드가 매체 내에 구현되는 표현의 임의의 유형의 매체로 구현되는 컴퓨터 프로그램 제품의 형태를 띨 수도 있다.
본 발명이 소프트웨어로 구현될 수 있으므로, 본 발명은 임의의 적절한 반송파 매체상의 프로그램 가능 장치에 제공하기 위한 컴퓨터 판독가능 코드로서 구현될 수 있다. 유형의 반송파 매체는, 예를 들어 플로피 디스크, CD-ROM, 하드 디스크 드라이브, 자기 테이프 디바이스 또는 솔리드 스테이트 메모리 디바이스 등과 같은 저장 매체를 포함할 수 있다. 일시적 반송파 매체는, 예를 들어 전기 신호, 전자 신호, 광학 신호, 음향 신호, 자기 신호, 또는 마이크로웨이브 또는 RF 신호와 같은 전자파 신호와 같은 신호를 포함할 수 있다.
본 발명의 실시예들은 이하 다음의 도면을 참고로 하여 단지 예로서 설명될 것이다.
도 1은 HEVC 인코더의 아키텍처를 예시한다;
도 2는 HEVC 디코더의 아키텍처를 예시한다;
도 3은 인과(causal) 영역의 개념을 예시한다;
도 4는 다른 비디오 포맷들을 예시한다;
도 5는 코딩 유닛들 내의 코딩 트리 블록 분할과 이들 코딩 유닛의 스캔 순서 디코딩을 예시한다;
도 6은 HEVC에서 신택스 요소(syntax element)의 골롬 기반 바이너리 코딩(Golomb based binary coding)을 예시한다.
도 7은 HEVC의 레인지 확장에서 조사 중에 있는 디코더 측에서의 팔레트 모드 예측의 원리를 예시한다.
도 8은 코딩 유닛의 예를, 레벨들의 그 대응하는 블록 및 연관된 팔레트로 예시한다.
도 9는 레벨들의 동일 블록과 레벨들의 이런 블록의 인코딩에 사용되는 신택스 요소들의 세트를 예시한다.
도 10은 팔레트 모드와 관련된 신택스 요소들의 디코딩 프로세스를 예시한다;
도 11은 레벨들의 블록과, 이후 예측자로서 사용돼야 하는 블록 예측자를 색 공간에 구축하기 위한 재구성 프로세스를 예시한다;
도 12는 인코더에서 예시적인 팔레트 결정 알고리즘을 예시한다;
도 13은 인코더에서 Pred mode, Level 및 Run 신택스 요소들의 선택을 예시한다;
도 14는 Order 값이 레벨들의 블록에 남아 있는 픽셀들의 수에 따라 달라지는 실시예를 예시한다;
도 15는 Order 값이 비트스트림으로 전송되는 실시예를 예시한다;
도 16은 Run 값을 전송하지 않기로 결정하는 데 사용되는 Level 값에 대한 임계값의 디코딩과 관련된 실시예를 예시한다;
도 17은 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략 블록도이다.
도 1은 HEVC 인코더의 아키텍처를 나타낸다. 비디오 인코더에서, 최초 시퀀스(101)는 픽셀들의 블록들로 분할된다(102). 코딩 모드는 이후 각각의 블록에 영향을 받는다. HEVC에 전형적으로 사용되는 코딩 모드들에는 2개의 패밀리가 있다: 공간 예측 또는 인트라(INTRA) 모드들(103) 또는 움직임 추정(104) 및 움직임 보상(105)에 기초하는 시간 예측 또는 인터(INTER) 모드들. 인트라 코딩 유닛은 일반적으로 인트라 예측으로 불리는 프로세스에 의해 그 인과 경계에서 인코딩된 픽셀들로부터 예상된다. HEVC RExt로 알려진, 현재 설계되고 있는 HEVC의 확장은 픽셀들의 블록들을 인코딩하기 위해 인트라 및 인터 코딩 모드들과 경쟁하는 추가 코딩 모드, 즉 팔레트 코딩 모드를 추가한다. 이 팔레트 코딩 모드는, 특히 도 7 내지 13을 참고하여 이하에서 더 상세히 설명된다.
인터 코딩 모드의 시간 예측은 먼저, 움직임 추정 단계 104에서 코딩 유닛에 가장 가까운 참조 영역을 참조 프레임(116)으로 불리는 이전 또는 미래 프레임에서 찾는 것에 있다. 이 참조 영역은 예측자 블록을 구성한다. 다음에 이 코딩 유닛은 움직임 보상 단계 105에서 잔차를 계산하기 위해 예측자 블록을 이용하여 예상된다.
공간 예측 및 시간 예측의 둘 다의 경우에, 잔차는 최초 예측자 블록에서 코딩 유닛을 차감하여 계산된다.
인트라 예측에서는, 예측 방향이 인코딩된다. 시간 예측에서는, 적어도 하나의 움직임 벡터가 인코딩된다. 그러나, 움직임 벡터 인코딩과 관련된 비트레이트 코스트를 더 감소시키기 위해, 움직임 벡터는 직접 인코딩되지 않는다. 사실상, 움직임이 동종이라고 가정하면, 이 움직임 벡터와 그 주위의 움직임 벡터 간의 차이로서 움직임 벡터를 인코딩하는 것에 특히 관심이 있다. 예를 들어, H.264/AVC 코딩 표준에서, 움직임 벡터들은 현재 블록의 상부 및 좌측에 위치한 3개의 블록들 사이에서 계산된 중간 벡터에 관해 인코딩된다. 중간 벡터와 현재 블록 움직임 벡터 사이에서 계산된, 잔차 움직임 벡터(residual motion vector)로 불리는 차이만이 비트스트림으로 인코딩된다. 이것은 모듈 'Mv 예측 및 코딩'(117)에 의해 수행되는 프로세스이다. 각각의 인코딩된 벡터의 값은 움직임 벡터 필드(118)에 저장된다. 예측에 사용되는 인접 움직임 벡터들은 움직임 벡터 필드(118)로부터 추출된다.
다음에, 레이트 왜곡 성능을 최적화하는 모드는 모듈(106)에서 선택된다. 중복성을 더 감소시키기 위해, 변환, 전형적으로 DCT가 모듈(107)에서 잔차 블록에 적용되고, 양자화는 모듈(108)에서 계수들에 적용된다. 계수들의 양자화된 블록은 이후 모듈(109)에서 엔트로피 코딩되고, 결과는 비트스트림(110)에 삽입된다.
인코더는 이후 모듈들(111 내지 116)에서 미래 움직임 추정을 위해 인코딩된 프레임의 디코딩을 수행한다. 이것은 인코더에서의 디코딩 루프이다. 이러한 단계들은 인코더 및 디코더가 동일 참조 프레임들을 가지게 할 수 있다. 코딩된 프레임을 재구성하기 위해서, 잔차는 픽셀 도메인에서 "재구성된" 잔차를 제공하기 위해 모듈(111)에서 역 양자화되고 모듈(112)에서 역 변환된다. 인코딩 모드(인터 또는 인트라)에 따라, 이 잔차는 인터 예측자(114) 또는 인트라 예측자(113)에 추가된다.
다음에, 이런 제1 재구성은 하나 또는 여러 종류의 포스트 필터링에 의해 모듈(115)에서 필터링된다. 이들 포스트 필터링은 디코딩 루프에 통합된다. 이것은 이들이 인코더 및 디코더에서 동일 참조 프레임들을 이용하기 위해 인코더 및 디코더에서의 재구성된 프레임에 적용될 필요가 있다는 것을 의미한다. 이런 포스트 필터링의 목표는 압축 아티팩트를 제거하는 것이다.
HEVC 디코더의 원리는 도 2에 나타냈다. 비디오 스트림(201)은 모듈(202)에서 제1 엔트로피 디코딩된다. 잔차 데이터는 이후 픽셀 값들을 획득하기 위해 모듈(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)들에 의해 조직화된다. 프레임은 여러 비중첩된 정사각형 코딩 트리 블록들을 포함한다. 코딩 트리 블록의 크기는 64x64 내지 16x16와 동일할 수 있다. 이 크기는 시퀀스 레벨에서 결정된다. 코딩 효율의 관점에서, 가장 효율적인 크기는 가장 큰 크기, 64x64이다. 모든 코딩 트리 블록들이 이미지 경계를 제외하곤 그 크기가 동일한 것에 유의한다. 경계 CTB들의 크기는 나머지 픽셀들의 양에 따라 적응된다.
각각의 코딩 트리 블록은 하나 이상의 정사각형 코딩 유닛들(CU)을 포함한다. 코딩 트리 블록은 쿼드 트리 구조에 기초하여 여러 코딩 유닛들로 분할된다. 코딩 트리 블록 내의 각각의 코딩 유닛의 처리(코딩 또는 디코딩) 순서는 래스터 스캔 순서에 기초하는 쿼드 트리 구조를 따른다. 도 5는 코딩 유닛들의 처리 순서의 예를 보여준다. 본 도면에서, 각각의 코딩 유닛 내의 수는 이 코딩 트리 블록의 각각의 대응하는 코딩 유닛의 처리 순서를 제공한다.
HEVC에서, 상이한 신택스 요소들, 예를 들어 블록 잔차, 예측자 블록들에 대한 정보(움직임 벡터, 인트라 예측 방향 등)를 코딩하기 위해 여러 방법이 사용된다. HEVC는, 예를 들어 콘텍스트 기반 적응 바이너리 산술 코딩(CABAC)(Context based Adaptive Binary Arithmetic Coding), 골롬-라이스 코드(Golomb-rice code) 또는 고정 길이 코딩으로 불리는 단순한 2진수 표현과 같은 여러 유형의 엔트로피 코딩을 이용한다. 대부분, 바이너리 인코딩 프로세스는 상이한 신택스 요소들을 나타내기 위해 수행된다. 이런 바이너리 인코딩 프로세스는 또한 매우 특정적이고, 상이한 신택스 요소에 따라 달라진다.
예를 들어, "coeff_abs_level_remaining"으로 불리는 신택스 요소는 절대값 또는 계수 잔차의 절대값의 일부를 포함한다. 이런 바이너리 인코딩 프로세스의 아이디어는 최초 값들에 대해서는 골롬-라이스 코드를 사용하고 더 높은 값들에 대해서는 지수 골롬(Exponential Golomb)을 사용하는 것이다. 보다 상세하게, 골롬 순서로 불리는 주어진 파라미터에 따르면, 이것은 최초 값들, 예를 들어 0 내지 3의 값들을 나타내기 위해서 골롬-라이스 코드가 사용되고, 이후 더 높은 값들, 예를 들어 4 이상의 값들을 나타내기 위해서 지수 골롬 코드가 사용된다는 것을 의미한다. 골롬 순서는 골롬-라이스 코드와 지수 골롬 코드의 양자에 의해 사용되는 파라미터이다.
도 6은 디코딩 측에서의 이런 원리를 예시한다. 디코딩 프로세스의 입력 데이터는 비트스트림(601), 및 골롬 라이스 파라미터로 알려진 순서 또는 골롬 순서이다. 이 프로세스의 출력은 디코딩된 심볼(612)이다.
프리픽스(prefix) 값은 단계 602에서 1과 동일하게 설정되고, 이후 1비트는 단계 601에서 비트스트림으로부터 추출되고, 변수 플래그는 디코딩된 값과 동일하게 설정된다(603). 이 플래그가 단계 604에서 0과 동일하면, 프리픽스 값은 증분되고(605), 다른 비트는 비트스트림으로부터 추출된다(603). 플래그 값이 1과 동일할 때, 결정 모듈(606)은 값 프리픽스가 3보다 절대적으로 낮은지를 체크한다. 이것이 참이면, N=오더(Order) 비트들이 비트스트림(601)으로부터 추출되고(608), 변수 "코드워드(codeword)"로 설정된다. 이것은 골롬-라이스 표현에 대응한다. 심볼(Symbol) 값(612)은 단계 609에 표시된 바와 같이 ((prefix<<Order) + codeword)와 동일하게 설정된다. 여기서, '<<'는 좌측 시프트 연산자이다.
프리픽스가 단계 606에서 3보다 크거나 동일한 경우, 다음 단계는 610이며, 이 단계에서 N=(prefix - 3 + Order) 비트들이 비트스트림으로부터 추출되고, 변수 "코드워드"로 설정된다(610). 심볼 값(611)은 ((1<<(prefix-3))+2)<<Order) + codeword와 동일하게 설정된다. 이것은 지수 골롬 표현에 대응한다.
이하에서, 이런 디코딩 프로세스, 및 대칭되는 대응하는 인코딩 프로세스는, 골롬 순서에 대응하는 입력 파라미터를 가진 Golomb_H로 불린다. 이것은 단순히 Golomb_H(Order)로 지칭될 수 있다.
HEVC에서, 잔차들과 같은 일부 신택스 요소들에서, 골롬 순서는 엔트로피 코딩을 인코딩될 신호에 적응시키기 위해 업데이트된다. 업데이트 공식은 계수가 큰 값들을 가질 때 골롬 순서를 증가시킴으로써 골롬 코드 크기를 줄이려고 한다. HEVC 표준에서, 업데이트는 하기 공식에 의해 주어진다:
Figure 112016063790905-pct00001
cLastRiceOrder가 최종 사용된 순서인 경우, cLastAbsLevel은 최종 디코딩된 coeff_abs_level_remaining이다. 인코딩될 또는 디코딩될 제1 파라미터에 대해, cLastRiceOrder 및 cLastAbsLevel이 0과 동일하게 설정되는 것에 유의한다. 더욱이, 파라미터 Order가 이 공식에서 4의 값을 초과할 수 없음에 유의한다. 그리고 이 경우, 표현(C ? A: B)은 조건 C가 참인 경우 값 A를 갖고, 조건 C가 거짓인 경우 B를 갖는다.
또한, 통상 HEVC RExt로 불리는 HEVC 레인지 확장은 새로운 비디오 코딩 표준 HEVC를 위해 현재 선택되고 있는 확장이다.
이 확장의 목적은 비디오 시컨스들을 추가 컬러 포맷들 및 비트 심도로 가능한 손실 없이 코딩하기 위한 추가 툴을 제공하는 것이다. 특히, 이런 확장은 4:2:2 컬러 포맷뿐만 아니라 4:4:4 비디오 포맷과 더불어 4:2:0 비디오 포맷을 지원하도록 설계된다(도 4 참조). 컬러 이미지는 일반적으로 3개의 컬러 컴포넌트 R, G 및 B로 구성된다. 이들 컴포넌트는 일반적으로 상관되며, 이미지들을 처리하기 전에 컬러 컴포넌트들의 상관을 감소시키는 것(decorrelate)은 이미지 및 비디오 압축에서 매우 일반적이다. 컬러 컴포넌트들의 상관을 감소시키는 가장 일반적인 포맷은 YUV 컬러 포맷이다. YUV 신호들은 전형적으로 선형 변환을 3개의 입력 R, G 및 B 입력 프레임들에 적용함으로써, 이미지들의 RGB 표현으로부터 생성된다. Y는 보통 루마 컴포넌트로 불리고, U와 V는 일반적으로 크로마 컴포넌트들로 불린다. 용어 'YCbCr'는 또한 일반적으로 용어 'YUV' 대신에 사용된다.
픽셀의 각각의 컬러 컴포넌트를 코딩하는 데 사용되는 비트들의 수인 비트 심도에 관하여, 현재의 HEVC 표준이 8 및 10비트 비트 심도를 갖는 4:2:0 컬러 포맷(즉, 256 내지 1,024 가능한 컬러)을 다룰 수 있다면, HEVC RExt는 8비트에서 최대 16비트까지의 범위를 갖는 확장된 비트-심도(즉, 최대 65,536 가능한 컬러)를 가진 4:2:2 및 4:4:4 비디오 포맷을 추가 지원하도록 설계될 것이다. 이것은 특히, 컬러 컴포넌트들의 더 큰 다이내믹을 갖는데 유용하다.
HEVC RExt는 또한 입력 시퀀스의 무손실 인코딩을 제공하도록 설계되고; 이것은 입력(101)과 아주 동일한 디코딩된 출력(209)을 갖게 하는 것이다. 이를 달성하기 위해, 다수의 툴이 종래의 HEVC 손실성 코덱과 비교해서, 수정되거나 추가되었다. 손실 없게 동작하기 위한 예시적 수정들 또는 추가들의 완전하지 않은 리스트가 이하에 제공된다:
- 양자화 단계(108)의 제거(디코더에서의 203);
- 통상의 코사인/사인 변환(107)으로서 바이패스 변환의 강제 활성화는 에러들을 도입할 수 있다(디코더에서의 204);
- 포스트 필터링(115)과 같은 양자화 노이즈를 보상하기 위해 특별히 맞춤화된 툴의 제거(디코더에서의 207).
HEVC RExt에서, 골롬 순서의 업데이팅 공식은 무손실 코딩을 포함하는 확장 포맷(4:2:2 및 4:4:4)의 비디오 압축을 다루는 애플리케이션에 의해 요구되는, 더 높은 비트 심도를 다루고 매우 높은 품질을 고려하기 위해 적응되도록 더 수정되었다. HEVC RExt에서, 업데이팅 공식은 다음과 같이 변경되었다:
Figure 112016063790905-pct00002
이 공식에서, 순서의 최대값은 7이다. 더욱이, 변환 블록의 서브-블록에 대한 coeff_abs_level_remaining의 제1 코딩에서는, 골롬 순서가
Figure 112016063790905-pct00003
와 동일하게 설정되고, 여기서, 
Figure 112016063790905-pct00004
변수 "transform_skip_flag"는 변환(예를 들어, DCT(107 또는 204))이 현재 코딩 유닛에 대해 스킵되는 경우 1로 설정되고, 변환이 사용되는 경우 0으로 설정되며,
Figure 112016063790905-pct00005
변수 "cu_transquant_bypass_flag"는 코딩 유닛이 손실 없이 인코딩되는 경우 1로 설정되고 그렇지 않으면 0으로 설정되고,
Figure 112016063790905-pct00006
변수 "cRiceOrder"는 변환 블록의 다른 서브-블록으로부터의 최종 사용된 순서와 동일하게 설정되고, 그렇지 않으면 0으로 설정된다.
HEVC RExt를 위한 추가 툴은 자연적 시퀀스들뿐만 아니라 "스크린 콘텐츠" 비디오 시퀀스들을 효율적으로 인코딩하도록 현재 설계되고 있다. "스크린 콘텐츠" 비디오 시퀀스들은, 예를 들어 텍스트, 파워포인트 표현, 그래픽 사용자 인터페이스, 테이블들(예를 들어, 스크린 샷들)을 포함하는, 임의의 다른 디바이스의 개인용 컴퓨터로부터 캡처되는 것들에 대응하는 매우 특정한 콘텐츠를 갖는 특정한 비디오 시퀀스들을 지칭한다. 이러한 특정 비디오 시퀀스들은 자연적 비디오 시퀀스들에 비해 아주 상이한 통계치들을 갖는다. 비디오 코딩에서, HEVC를 포함하는, 종래의 비디오 코딩 툴의 성능은 때때로 그런 "스크린 콘텐츠"를 처리할 때 감동스럽지 않다고 증명되었다.
"스크린 콘텐츠" 비디오 시퀀스들을 처리하기 위해 HEVC RExt에서 현재 논의되고 있는 현재 툴은 인트라 블록 카피 모드(Intra Block Copy mode) 및 팔레트 모드를 포함한다. 이들 모드에 대한 프로토타입들은 자연적 비디오 시퀀스들을 목표로 하고 있는 종래의 방법에 비해 양호한 코딩 효율을 나타낸다. 본 출원은 팔레트 코딩 모드에 초점을 맞춘다.
HEVC RExt의 팔레트 모드는 예측 모드이다. 이것은 팔레트 방법이 움직임 예측(인터 케이스) 또는 인트라 예측에 의해 수행되는 예측과 유사하게 주어진 코딩 유닛의 코딩을 위한 예측자를 구축하는 데 사용된다는 것을 의미한다. 예측의 생성 후에, 잔차 코딩 유닛은 변환, 양자화 및 코딩된다. 다시 말하면, 도 1 및 2를 참고하여 상술한 프로세스와 동일한 프로세스들이 적용된다.
팔레트는 일반적으로 컬러들의 N-투플(tuple)의 한정된 세트를 포함하는 테이블에 의해 표현되고, 각각의 컬러는 주어진 색 공간에서 그 컴포넌트들에 의해 정의된다(예를 들어, YUV 색 공간에 기초하는 도 8의 803을 참고). 예를 들어, 전형적인 RGB 포맷에서, 팔레트는 N-투플(이 경우, RGB에 대해 N=3)의 P 요소들의 리스트로 구성된다. 더 정확하게, 각각의 요소는 RGB 포맷의 컬러 컴포넌트들의 고정된 트리플릿에 대응한다. 물론 이것은 RGB 또는 YUV 컬러 포맷에 한정되지 않는다. 임의의 다른 컬러 포맷은 팔레트에 의해 표현될 수 있고, N이 3과 다를 수 있다는 것을 의미하는, 컬러 컴포넌트들의 더 작은 수 또는 더 높은 수를 사용할 수 있다.
인코더 측에서, RExt에서 고려 중인 팔레트 모드는 주어진 입력 코딩 유닛의 픽셀 값들을, 연관된 팔레트에서 엔트리들을 식별하는 레벨들로 불리는 인덱스들로 변환하는 것으로 구성된다. 변환 후에, 최종 코딩 유닛 또는 블록은 레벨들로 구성되고, 이후 연관된 팔레트, 일반적으로는 코딩 유닛을 표현하는 데 사용되는 컬러들의 트리플릿의 한정된 수를 갖는 테이블과 함께 디코더에 전송된다. 팔레트가 한정된 수의 컬러들을 정의하기 때문에, 인덱스들의 블록으로의 변환은 최초 입력 코딩 유닛을 보통 근사화한다.
인코더 측에 팔레트 모드를 적용하기 위해, 픽셀들의 코딩 유닛을 변환하기 위한 예시적 방식은 다음과 같이 수행된다:
- 예를 들어, 전체 왜곡을 최소화함으로써, 인코딩하기 위한 픽셀들의 코딩 유닛을 가장 잘 기술하는 P 트리플릿들을 찾는 것; 
- 그 후, P 트리플릿들 중에서 가장 가까운 컬러를 코딩 유닛의 각각의 픽셀과 연관시키는 것: 인코딩하기 위한 값(또는 레벨)은 이후 연관된 가장 가까운 컬러의 엔트리에 대응하는 인덱스이다.
각각의 코딩 유닛에서, 팔레트(즉, 발견된 P 트리플릿들), 인덱스들 또는 레벨들의 블록, 및 최초 코딩 유닛과 색 공간 내의 인덱스들의 블록(이것은 블록 예측자임) 간의 차이를 나타내는 잔차는 비트스트림(110)으로 코딩되고, 디코더로 송신된다.
디코더에서, 팔레트 모드는 변환을 반대 방식으로 수행하도록 구성된다. 이것은 코딩 유닛의 각각의 픽셀과 연관되는 각각의 디코딩된 인덱스가 코딩 유닛의 각각의 픽셀에 대한 대응하는 컬러를 재구성하기 위해, 비트스트림으로부터 디코딩된 팔레트에서 대응하는 컬러에 의해 대체된다는 것을 의미한다. 이것은 색 공간에서 인덱스들의 블록(즉, 코딩 유닛 예측자)의 재구성이다. 팔레트 모드가 예측 모드이기 때문에, 연관되는 잔차는 비트스트림으로부터 디코딩되고, 이후 최종 재구성된 코딩 유닛을 구축하기 위해 재구성된 코딩 유닛 예측자에 추가된다.
도 7은 디코더에서의 팔레트 모드의 원리를 더 예시한다. 현재 코딩 유닛을 위한 예측 모드는 비트스트림(701)으로부터 단계 702에서 추출된다. 현재, 팔레트 모드는 비트스트림에서 스킵 플래그 이전에 위치한 플래그에 의해 식별된다(다른 코딩 모드들은 도 1 및 2를 참고하여 상술했다). 이 플래그는 단일 콘텍스트를 이용하여 코딩된 CABAC이다. 이 모드가 팔레트 모드인 경우(703), 이후 팔레트 모드의 관련된 신택스(705), 즉, 팔레트에 대한 정보, 레벨들의 블록 및 잔차는 비트스트림(701)으로부터 추출되고 디코딩된다(704).
다음에, 단계 706 동안, 2개의 요소가 디코딩된 데이터로부터 구축된다: 팔레트(707) 및 레벨들의 블록(708). 레벨들의 블록 및 연관된 팔레트로부터, 픽셀 도메인 내의 코딩 유닛 예측자(710)가 구축된다(709). 이것은 레벨들의 블록의 각각의 레벨에 대해, 컬러(RGB 또는 YUV)가 각각의 픽셀과 연관된다는 것을 의미한다.
그 후, 코딩 유닛 잔차는 비트스트림(701)으로부터 디코딩된다(711). 팔레트 모드의 현재 구현에서, 팔레트 모드와 연관되는 잔차는 공통 HEVC 인터 잔차 코딩 방법, 즉, 골롬 코딩을 이용하여 코딩된다. 코딩 유닛의 잔차를 획득하기 위해, 종래의 역 양자화 및 역 변환이 수행된다. 블록 예측자(710)는 재구성된 코딩 유닛(714)을 형성하기 위해 이런 코딩 유닛 잔차(712)에 추가된다(713).
도 8은 인코더에서의 팔레트 모드의 원리를 예시한다. 현재 코딩 유닛(801)은 3개의 컬러 값 (Y, U, V) 또는 (R, G, B) 대신에 각각의 픽셀에 대한 레벨을 포함하는 동일 크기의 블록(802)으로 변환된다. 레벨들의 이런 블록과 연관되는 팔레트(803)는 코딩 유닛 전체 왜곡 최소화에 기초하여 구축되고, 각각의 엔트리에서, 엔트리 인덱스 또는 레벨을 대응하는 픽셀 컬러 값들과 연관시킨다. 단색 애플리케이션에 대해서는, 픽셀 값이 단지 하나의 컴포넌트를 포함할 수 있다는 점에 유의한다.
도 7에 관련하여 언급된 바와 같이, 팔레트(잔차와 더불어)는 각각의 코딩 유닛에 대한 비트스트림 내에 코딩되고 삽입된다. 동일한 방식으로, 레벨들의 블록(코딩 유닛 예측자에 대응함)은 비트스트림 내에 코딩되고 삽입되며, 코딩의 예는 도 9를 참조하여 이하 제공된다. 본 예에서, 레벨들의 블록은 수평 순서로 스캐닝된다.
레벨들의 블록(91)은 도 8에서 802를 참고하여 예시된 것과 정확하게 동일한 것이다. 테이블들(92 및 93)은 레벨들의 블록(91)을 코딩하는 데 사용되는 연속적인 신택스 요소를 기술한다. 테이블(93)은 테이블(92)의 연속으로 읽혀져야 한다. 테이블 내의 신택스 요소들은 블록(91)에서 굵은 선으로 둘러싸인 레벨들의 그룹의 인코딩에 대응한다.
레벨들의 블록은 연속적인 픽셀들의 그룹에 의해 스캔 순서로 인코딩된다. 각각의 그룹은 예측 방향을 제공하는 제1 신택스 요소, 반복을 제공하는 제2 요소, 및 픽셀의 값, 즉 레벨을 제공하는 선택적인 제3 요소를 이용하여 인코딩된다. 반복은 그룹 내의 픽셀들의 수에 대응한다.
이러한 2개의 테이블은 팔레트 모드와 연관되는 현재 신택스를 나타낸다. 이러한 신택스 요소들은 레벨들의 블록(91)에 대한 비트스트림과 연관된 인코딩된 정보에 대응한다. 이들 테이블에서, 3개의 주요 신택스 요소는 팔레트 모드의 동작들을 완전히 나타내는데 사용되고, 레벨들의 블록(91)의 레벨들을 연속해서 고려할 때 다음과 같이 사용한다.
"Pred mode"로 불리는 제1 신택스 요소는 2개의 인코딩 모드를 구별하는 것을 가능하게 한다. "0"과 동일한 "Pred mode" 플래그에 대응하는 제1 모드에서, 새로운 레벨은 현재 픽셀에 사용된다. 그 레벨은 그 플래그 이후에 비트스트림으로 바로 시그널링된다. "1"과 동일한 "Pred mode" 플래그에 대응하는 제2 모드에서, "위로 복사" 모드가 이용된다. 보다 상세하게, 이것은 현재 픽셀 레벨이 래스터 스캔 순서 동안 동일 위치에서 시작하는 바로 위 라인에 위치하는 픽셀 레벨에 대응한다는 것을 의미한다. "1"과 동일한 "Pred mode" 플래그의 경우에는, 레벨의 값이 레벨들의 블록(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은 팔레트 모드와 관련된 신택스 요소들의 디코딩 프로세스를 예시한다. 먼저, 팔레트의 크기는 비트스트림(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). 이후, 픽셀 카운터가 블록에 포함된 픽셀들의 수에 대응하는지를 알기 위한 체크가 수행된다. 단계 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"가 단계 1011에서 1과 동일한 경우, "Run" 값은 또한 단계 1014에서 디코딩된다. 이 신택스 요소 "Run"은 디코딩된 모든 런들을 포함하는 인덱스 syntax_i에서 테이블에 추가된다.
다음에 단계 1015에서, 값 j는 단계 1014에서 디코딩된 런의 값만큼 증분된다. 변수 syntax_i는 신택스 요소들의 다음 세트를 고려하기 위해 1만큼 증분된다. 카운터 j가 블록 내의 픽셀들의 수와 동일한 경우, 레벨들의 블록(91)을 구축하기 위한 신택스는 종료된다(1017). 팔레트와 관련되는 이런 프로세스의 끝에서, 디코더는 팔레트와, 이런 코딩 유닛의 팔레트 모드와 연관되는 모든 "Pred mode", "Level" 및 "Run" 신택스 요소들의 리스트를 포함하는 테이블들을 알고 있다. 디코더는 이후 도 7을 통해 전술한 바와 같이 코딩 유닛의 재구성 프로세스로 진행할 수 있다.
상기 예에서 3개의 값으로 구성되는 각각의 팔레트 요소는 일반적으로 3개의 이진 코드들을 이용하여 인코딩된다. 이진 코드들의 길이는 각각의 컬러 컴포넌트의 비트 심도에 대응한다. 팔레트 크기는 전형적으로 단항 코드를 이용하여 인코딩된다. "Pred mode" 요소는 1비트를 이용하여 인코딩된다. "Level" 요소는 b와 동일한 이진 코드 길이를 갖는 이진 코드를 이용하여 인코딩되고, 여기서 2b는 팔레트 크기와 동일하거나 이보다 큰 가장 작은 정수이다. "Run" 요소는 도 6과 관련하여 상술한 Golomb_H(Order=3)을 이용하여 인코딩된다.
도 11은 레벨들의 블록(91)을 구축하고 이후 예측자로서 이용되어야 하는 색 공간 내의 블록 예측자를 구축하기 위한 재구성 프로세스를 예시한다. 이 프로세스의 입력 데이터는 상기 도 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에서 획득된다: 이것은 테이블 블록 []에 대응한다. 이후 최종 단계 1123는 도 10의 프로세스를 이용하여 디코딩된 팔레트(803)를 이용하여 컬러 값들에서 각각의 레벨을 변환하는 것으로 구성된다. 이 최종 단계는 블록 내의 이 위치의 레벨 및 팔레트 내의 대응하는 엔트리들에 따른 각각의 블록 위치에서 픽셀 값들(Y, U, V) 또는 (R, G, B)에 영향을 미친다.
HEVC RExt에 도입된 팔레트 모드의 다른 양태들은 현재 코딩 유닛을 인코딩하는 데 사용될 팔레트의 인코더에 의한 결정에 관한 것이고(아래 도 12 참조), 인코더에서의 Pred 모드, Level 및 Run 신택스 요소들의 선택에 관한 것이다(아래 도 13 참조).
도 12는 인코더에서의 예시적 팔레트 결정 알고리즘을 예시한다. 이 프로세스의 입력 데이터는 픽셀들의 최초 코딩 유닛 및 그 코딩 유닛 크기이다. 본 예에서는, YUV 팔레트가 구축되지만, 다른 구현들은 동일한 방식으로 구축되는 RGB를 갖게 될 수 있다.
제1 단계 1201에서, 픽셀 카운터를 나타내는 변수 j는 0으로 설정되고, 구축 중인 팔레트의 성장을 따르는 변수 "Palette_size"는 또한 0으로 설정되고, 임계값을 나타내는 변수 "TH"는 9로 설정된다. 다음에 단계 1203에서, 픽셀 pi, 즉 스캐닝 순서에 따른 인덱스 i를 갖는 픽셀은 최초 코딩 유닛(1204)으로부터 단계 1203에서 판독된다. 이후 변수 j는 1205에서 0과 동일하게 설정되고, 단계 1206에서는 팔레트 크기가 변수 "j"와 동일한지 아닌지를 결정하기 위한 체크가 수행된다(이것은 구성 중인 팔레트의 팔레트 요소들 모두가 고려되고 있음을 의미한다).
팔레트 크기가 j와 동일한 경우, 인덱스 "j"에서의 팔레트는 단계 1209에서, 픽셀 값 pi와 동일하게 설정된다. 이것은 현재 픽셀 pi가 팔레트 내의 새로운 요소가 되는 것을 의미하며, 인덱스 j는 새로운 요소와 연관된다. 더 정확하게는 다음의 할당이 수행된다:
Figure 112016063790905-pct00007
Figure 112016063790905-pct00008
여기서,
Figure 112016063790905-pct00009
는 컬러 값들을 저장하기 위한 3개의 테이블이다.
팔레트 크기(Palette_size)는 단계 1210에서 1씩 증분되고, 발생 테이블 카운터(occurrence table counter)는 단계 1211에서 인덱스 'Palette size'에 대해 1과 동일하게 설정된다. 이후 변수 i는 현재 코딩 유닛의 다음 픽셀 "i"를 고려하기 위해 단계 1213에서 1씩 증분된다. 이후 단계 1214에서, 현재 코딩 유닛의 모든 픽셀들이 처리되었는지 아닌지를 결정하기 위한 체크가 수행된다. 이들이 모두 처리된 경우, 프로세스는 이후에 계속 설명되는 정렬 단계(1215)에 의해 완료되고, 그렇지 않으면 다음 픽셀이 전술한 단계 1203에서 고려된다.
단계 1206으로 돌아가서, j가 palette_size와 다른 경우, 단계 1207에서, pi와 인덱스 j에서의 팔레트 요소 사이의 각각의 컬러 컴포넌트에 대한 절대값이 계산되는 것이 수행된다. 공식들이 도면에 도시된다. 모든 절대값 차이가 미리 정의된 임계값 TH보다 완전히 작은 경우, 팔레트 내의 요소 "j"에 관한 발생 카운터는 단계 1212에서 1씩 증분된다. 단계 1207은 구성 중인 팔레트의 각각의 요소에 대한 클래스를 생성하고, 그런 클래스는 마진 TH이 주어지는, 요소의 컬러에 인접하는 컬러들을 포함한다. 따라서, 단계 1212는 각각의 클래스의 발생들을 카운트한다. 단계 1212는 전술한 단계 1213에 선행한다.
단계 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에서의 현재 레벨(Block[i + icopy])은 상기 라인 바로 위에 위치한 픽셀의 레벨(Block[i + icopy - width])과 비교되고, 여기서 "width"은 현재 코딩 유닛의 폭에 해당한다. 코딩 유닛의 각각의 픽셀의 레벨 Block[i + icopy]은 단계 1308에서 동시에 결정됨에 유의한다. 이 단계는 이미 전술한 바와 같이, 가장 가까운 팔레트 요소(실제로는 그 인덱스 또는 레벨)를, 위치 i에서의 픽셀과 연관시키는 것으로 구성된다. 이 단계는 위치 i, 팔레트(1306) 및 최초 코딩 유닛(1307)을 이용한다.
단계 1304에서 Block[i + icopy] = Block[i + icopy - width]인 경우, 변수 "icopy"는, 픽셀들의 블록의 다음 픽셀 값을 고려하기 위해, 그리고 위치 i + icopy에서의 현재 픽셀 레벨이 현재 "copy up" Run에 포함될 수 있는지를 나타내기 위해, 단계 1305에서 1씩 증분된다. "copy up" 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[]는 예측 모드(각각의 "copy up" 예측 및 좌측 값 예측을 위해 1 또는 0)를 저장하기 위해 인코더에 의해 이용되는 테이블이다. 이것은 연속적인 픽셀들이 처리됨에 따라 후술되는 단계 1317에서 점진적으로 충전되고, 예를 들어 단계 1301에서 제로 값으로 초기화된다: 임의의 k에 대해 Pred_mode[k]=0.
단계 1310에서 조건이 충족되는 경우, 변수 "ileft"는, 위치 j에서의 현재 픽셀 레벨이 현재 "좌측 값" Run에 포함될 수 있는지를 나타내기 위해 단계 1311에서 1씩 증분되고, 변수 j는 픽셀들의 블록의 다음 픽셀 값을 고려하기 위해 단계 1312에서 1씩 증분된다.
단계 1310에서 조건이 충족되지 않은 경우, 변수 "j"는 이것이 현재 "좌측 값" Run을 위해 검사될 제1 픽셀 값인지를 결정하기 위해 "istart"와 비교된다. 이것은 단계 1313이다. "j"가 현재 Run을 위해 검사될 제1 픽셀 값이라는 것을 의미하는, "j"가 "istart"와 동일하거나 작은 경우, 이것은 현재 Run을 시작하고, 다음 픽셀 값은 상술한 단계 1312에서 고려된다. "j"가 "istart"보다 확실히 큰 경우, 현재 "좌측 값" Run의 픽셀 값과 다른 제1 픽셀 값이 검출되었다는 것을 의미한다. 현재 "좌측 값" Run의 길이에 대응하는 변수 "ileft"는 결정 모듈(1314)로 전송된다. "위로 복사" 예측을 위한 루프로서, 인덱스 i에서의 레벨 Block[i]가 단계 1308에서 동일 루프에서 결정되는 것에 유의한다.
'좌측 값 예측'과 '위로 복사' 모드에 대한 최대 런을 계산한 후, 변수 "ileft" 및 "icopy"는 단계 1314에서 비교된다. 이것은 "icopy"!= 0 및 "icopy" + 2가 "ileft"보다 큰지 아닌지를 결정하기 위한 것이다. 이것은 위로 복사 모드 또는 좌측 값 예측 모드를 선택하기 위한 예시적 기준이다. 특히, 파라미터 "2"는 다소 바뀔 수 있다.
단계 1314에서의 조건은, "icopy"가 0과 동일하거나 또는 ileft-2보다 작거나 동일한 경우 "좌측 값 예측" 모드가 단계 1315에서 선택된다는 것을 의미한다. 그러한 경우에, "PredMode" 변수는 0과 동일하게 설정되고, Run 변수는 동일한 단계 1315에서 "ileft"와 동일하게 설정된다. 한편, "icopy"가 0과 다르고 "ileft-2"보다 완전히 큰 경우, "위로 복사" 모드는 단계 1316에서 선택된다. 그러한 경우에, "PredMode" 변수는 1과 동일하게 설정되고, Run 변수는 단계 1316에서 icopy-1로 설정된다.
다음에, 인코더에서 "Pred_mode" 및 "Run"을 포함하는 테이블들은 단계 1317에서, 현재 값 "Pred_mode" 및 "Run"으로 업데이트된다. 그 후, 픽셀들의 블록에서 고려하기 위한 다음 위치는 단계 1318에서 계산되며, 이것은 "run" 값 +1만큼 증분된 현재 위치 i에 대응한다. 이후 단계 1319에서, 코딩 유닛의 최종 픽셀들이 처리되었는지를 결정하기 위한 체크가 수행된다. 이것이 사실인 경우, 프로세스는 단계 1320에서 종료되고, 그렇지 않으면 2개의 예측 모드 "좌측 예측" 및 "위로 복사"의 평가는 신택스 요소들의 새로운 세트를 획득하기 위해 다음 픽셀 위치에 대해 단계들(1303 및 1309)에서 평가되기 시작한다.
이 프로세스의 끝에서, 인코더는 코딩 유닛의 각각의 샘플에 대한 레벨들을 알고, 3개의 테이블 Pred_mode[], Block[] 및 Run[]의 콘텐츠에 기초하여 레벨들의 블록의 대응하는 신택스를 인코딩할 수 있다.
일반적으로 말해서, 작은 값의 골롬 순서(Golomb order)는 작은 범위의 값들에 가장 적합한 반면, 더 높은 골롬 순서는 더 높은 범위의 값들을 인코딩하는 데 가장 적합한다. 이미 설명한 바와 같이, Run 신택스 요소는 3개의 고정된 값을 갖는 골롬 순서를 이용하여 전형적으로 인코딩된다. 본 발명의 일 양태에 따르면, Run 값의 인코딩에 사용되는 골롬 순서는 일부 파라미터들에 기초하여 적응된다. 이들 파라미터는 특히, 레벨의 값, 팔레트의 크기, 예측 모드, 코딩 유닛의 크기를 포함할 수 있다. 이것은 Run 값의 예상된 범위가 어떤 점에서 이들 파라미터와 관련될 수 있다는 사실에 기인한다.
도 14는 Run 신택스 요소의 골롬 순서의 선택과 다른 파라미터들 사이의 종속성을 예시한다. 이 도면은 이미 설명된 도 10에 기초한다. 도 10과 비교하여, 도 14는 런의 디코딩을 위한 골롬 순서의 결정과 관련된 하나의 추가 모듈(1418)을 포함한다. 하기 실시예에서 설명되는 바와 같이, 이런 Order 파라미터는 팔레트 크기, Pred 모드, 레벨의 값, 및 코딩 유닛 크기(1419)에 따라 달라질 수 있다.
본 발명의 일 실시예에서, Order는 "Pred mode"에 따라 업데이트된다. 이것은 2개의 예측 모드를 갖는 현재 구현에 기초하여, 2개의 파라미터 Order로서, Order[0]이 "Pred mode" = 0에 대응하는 "좌측 예측" 모드로 고려되고, Order[1]이 "Pred mode" = 1에 대응하는 "위로 복사" 예측 모드로 고려될 수 있다는 것을 의미한다. 그러나, 하나 또는 여러 예측 모드가 고려된 2개의 모드에 추가될 수 있다. 그래서, N개의 상이한 Order는 N개의 가능한 예측 모드에 따라 고려될 수 있다.
특정한 실시예에서, N > 2 때, 하나의 Order만이 2개 이상의 예측 모드와 연관될 수 있다. 다시 말해서, 여러 예측 모드들은 동일한 Order 값에 매핑될 수 있다. 예측 모드에 따른 Run 코딩의 적응은 일반적으로 이들 각각과 연관되는 Run 값이 상이하기 때문에 효율적이다. 사실상, "위로 복사" 모드에 대한 Run 값은 일반적으로 크며, 도 9의 예에 설명된 바와 같이 "좌측 예측" 모드에 대한 Run 값보다 크다. 이것은 또한, 레벨을 전송할 수 있는 유일한 모드인 "좌측 예측" 모드의 속성 때문이다. 바람직한 실시예에서, "위로 복사" "Pred mode"의 Order는 "좌측 예측" 모드의 Order보다 크다.
본 발명의 일 실시예에서, Order는 레벨에 따라 업데이트된다. "좌측 예측" 모드("Pred mode" = 0)에서, 최종 디코딩된 신택스 요소는 레벨이다. 이런 예측 모드에서, 레벨은 레벨과 관련된 특정한 Order를 설정하는 데 사용된다. 그래서, 고려될 수 있는 Order들의 수는 팔레트 크기와 동일하다. 특정 실시예에서, 팔레트 크기가 2보다 완전히 클 때, 하나의 Order만이 2개 이상의 레벨 값과 연관될 수 있다. 다시 말해서, 여러 레벨은 동일한 Order 값에 매핑될 수 있다.
"위로 복사" 예측 모드에서는, 어떤 레벨도 인코딩되지 않고, 복사된 제1 레벨이 관련된 Order를 설정하는 데 사용된다고 고려될 수 있다. 추가 실시예에서, "좌측 예측" 모드에 사용되는 좌측 레벨은 Order를 적응시키는 것으로 간주될 수 있다. 레벨에 따른 Order의 적응은 팔레트가 레벨들의 발생에 따라 정렬되었을 때 특히 효율적이다. 레벨이 더 낮을수록, 그 발생이 더 높아진다. 그래서, 하위 레벨의 예상된 Run 값은 가장 높은 레벨 값보다 높아야 한다. 바람직한 실시예에서, 하위 레벨에 정의된 Order는 최상위 레벨에 정의된 Order보다 더 크다.
본 발명의 일 실시예에서, Order는 팔레트 크기에 기초하여 결정된다. 전술한 바와 같이, 최대 팔레트 크기는 디폴트로 설정된다. 그래서, 고려될 수 있는 Order들의 수는 팔레트 크기와 동일하다. 그러나, 이것은 요구되지 않고, 유리하게는 더 작은 범위의 Order 값들이 바람직한 실시예에서 고려될 수 있다. 팔레트 크기에 따른 Order의 적응은 레벨들의 수가 낮을 때 평균 Run 값이 증가하기 때문에 효율적이다. 동일한 방식으로, 레벨들의 수가 더 크면, 평균 Run 값은 감소한다. 그래서, 팔레트 크기가 작을 때 Order를 증가시키고 팔레트 크기가 클 때 Order를 감소시키는 것이 유용하다. 바람직한 실시예에서, 더 낮은 팔레트 크기 값의 Order는 가장 높은 팔레트 크기 값의 Order보다 크다. 특정한 실시예에서, Order는 팔레트 크기에 따르는 공식에 의해 결정될 수 있다.
본 발명의 일 실시예에서, Order는 코딩 유닛 크기에 기초하여 결정된다. 그래서, 고려될 수 있는 Order 값들의 수는 현재 코딩 유닛 크기: 64x64, 32x32, 16x16, 8x8을 고려하는 경우 4와 동일하다. 그러나, 이것은 요구되지 않고, 더 작은 수의 Order 값들이 다른 실시예에서 고려될 수 있다. 코딩 유닛 크기에 따른 Order의 적응은 코딩 유닛 크기가 작을 때 예상된 Run 값이 작아져야 하기 때문에 효율적이다; 동일한 방식으로, 코딩 유닛 크기가 큰 경우, 예상된 Run 값은 더 커야 한다. 그래서, 코딩 유닛 크기가 작을 때 Order를 감소시키고 코딩 유닛 크기가 클 때 Order를 증가시키는 것이 유용하다. 바람직한 실시예에서, 더 작은 코딩 유닛에 대해 결정된 Order 값은 가장 큰 코딩 유닛 크기 값에 대해 결정된 Order 값보다 낮다. 특정 실시예에서, Order 값은 팔레트 크기에 따라는 공식에 의해 획득될 수 있다.
일 실시예에서, Order 값은 디코딩되거나 인코딩될 레벨의 블록에 남아 있는 픽셀들의 수에 따라 달라진다. 도 14에서, 이것은 Order 값이 값 Pixels_in_Block-j에 따라 달라지는 것을 의미한다. 사실상, 아직 디코딩되거나 인코딩되지 않은 픽셀들의 수가 더 낮을수록, Run 요소의 예상된 값이 더 낮아진다.
일 실시예에서는, 다양하게 제안된 적응 방법들이 결합될 수 있다.
일 실시예에서, Order 값은 팔레트 크기, 및 예를 들어, 다음의 표에 따르는 코딩 유닛 크기에 기초하여 결정된다:
Figure 112016063790905-pct00010
이 표가 가능한 예로서 주어질 뿐임에 유의한다.
일 실시예에서, Order 값은 예측 모드 "Pred mode" 및 레벨 값에 기초하여 결정된다. 바람직한 실시예에서, Order 값은 하기 공식에 의해 주어진다:
Figure 112016063790905-pct00011
바람직한 실시예에서는, Order0 = Order1이다. 사실상, 0과 동일한 레벨은 레벨들의 블록의 백그라운드이다. 그래서, 0과 동일한 레벨을 따르는 예상된 Run 값은 다른 레벨 값보다 높아야 한다. 바람직한 실시예에서는, OrderO = Orderl = 2 및 Order2 =0이다. 이것은 예상된 Run 값이 "위로 복사" 예측 모드 및 레벨 0(블록 백그라운드)일 때의 "좌측 예측" 모드에 대해서는 높아야 하고, "좌측 예측" 모드에 대한 다른 레벨 값들에 대해서는 낮아야 하는 것을 의미한다.
일 실시예에서, 카테고리는 일부 파라미터들에 기초하여 정의된다. 예를 들어, 카테고리는 전술한 바와 같은 예측 모드 및 레벨에 기초하여 정의될 수 있다. Order 값은 각각의 카테고리와 연관되고, OrderN으로 불리며, N은 카테고리의 수이다. 이후 각각의 카테고리에 대해 결정된 Order 값은 일부 다른 파라미터들에 기초하여 적응될 수 있다. 예를 들어, 이것은 이 카테고리에 대해 결정된 최종 Order 값 및 디코딩된 최종 Run 값에 기초하여 적응될 수 있다. 각각의 카테고리에서, Order 값은 초기화된다. 이것은 디폴트 값들 또는 값 0으로 초기화될 수 있다. 또는, 이것은 이전 코딩 유닛에 정의된 최종 Order 값을 이용하여 초기화될수 있다.
일 실시예에서, 주어진 Order 값을 이용하여 Run 값을 디코딩한 후, 인코더 및 디코더는 디코딩된 Run 값의 인코딩을 위해 최적이 되는 골롬 순서 값인 OptOrder를 계산한다. 이런 최적 Order 값은 다음 디코딩된 런에 대한 결정된 Order 값으로서 이후 사용된다.
하나의 대안은 Order 값이 값 3으로 초기화되는 것이다. 각각의 카테고리의 제1 런에서, Order 값은 이전에 디코딩된 다른 오더 값들에 따라 달라진다.
예를 들어, 하기 공식이 이용될 수 있다:
Figure 112016063790905-pct00012
LastOrderN은 최종 사용된 OrderN이다. LastRunN은 카테고리 N에 대한 최종 디코딩된 Run 값이다.
다른 실시예에서, 각각의 카테고리는 OrderN 값을 업데이트하기 위해 그 자신의 공식을 갖는다. 예를 들어, Order2의 공식은 다음의 공식을 이용하는 2개의 다른 OrderO 및 Orderl보다 더 빨리 Order 값을 감소시켜야 한다:
Figure 112016063790905-pct00013
대신에
Figure 112016063790905-pct00014
일 실시예에서, 오더 값은 비트스트림으로 전송된다. 도 15는 현재 코딩 유닛을 위한 이런 실시예를 예시한다. 그래서, Order 값은 단계 1518에서 런 파라미터들의 디코딩을 위해 비트스트림(1501)으로부터 추출된다. 도 15는 도 10에 기초한다. 그래서, 다른 모듈들은 도 10에 사용된 것들과 동일하다. 인코더 측에서, 이 파라미터는 레이트 왜곡 기준에 의해 선택된다. 이런 알고리즘은 Order의 여러 값을 테스트하는 것으로 구성된다. 최상의 레이트 왜곡 절충을 제공하는 값들이 선택된다.
비트레이트에 대한 영향을 제한하기 위해, 이 값은 작은 고정된 수의 값들로 제한될 수 있다. 예를 들어, Order 값들은 단지 3개의 값으로 제한될 수 있다: 0, 1, 2. 그래서, 이 값은 (값에 따라) 1 또는 2비트의 코드로 코딩될 수 있다. 하나의 플래그는 이것이 변경될 필요가 있는지 또는 Order 값이 아닌지를 알기 위해 전송될 수 있다. 다른 실시예에서, 이런 Order 값은 다른 Order 값 또는 사용된 최종 Order 값에 의해 예측될 수 있다. 또 다른 실시예에서, 1비트는 Order = 0 또는 Order = 2를 시그널링하기 위해 시그널링될 수 있다.
본 실시예는 전술한 것들과 결합될 수 있다. 바람직한 실시예에서, 이전 섹션에서 설명된 바와 같이 3개의 오더 값, OrderO, Orderl, Order2이 고려될 수 있다. 그래서, OrderO은 "Pred mode""위로 복사"(=1)에 사용되고, Orderl은 이전에 디코딩된 레벨이 0일 때 "Pred mode" left(=0)에 사용되고, 그렇지 않으면 Order2가 사용된다. 이들 OrderN은 각각의 코딩 유닛에 대해 전송된다. 바람직한 실시예에서는, OrderO 및 Order2만이 전송되고, Orderl = OrderO이다. 이러한 실시예들은 도 15에 나타난다; 사실상, 모듈(1518)은 블록 "Pred mode"(1510), 레벨(1512)과 소정 관계를 가진다.
일 실시예에서, 일부 Run 값들은 전송되지 않으며, 이것은 이들이 디폴트 값, 예를 들어 값 0에 의해 대체된다는 것을 의미한다. 전형적으로, 전송되지 않은 Run 값들은 덜 일반적인 상위 레벨 값들과 연관된 값이다. 이것은 덜 일반적인 레벨 값들의 반복 패턴이 인코딩에 사용되지 않을 것이라는 것을 의미한다. 동일한 상위 레벨 값들을 갖는 레벨들의 블록 내의 2개의 연속적인 픽셀은 반복이 없는 것처럼 코딩을 각각 생성할 것이다. 주어진 Run 값을 전송하지 않기 위한 결정은 최종 디코딩된 레벨 값에 기초할 수 있다. 예를 들어, 임계값은 레벨 값에 대해 정의될 수 있다. 이 임계값은 고정되며, 예를 들어 4의 값을 가질 수 있다. 임계값은 코딩 유닛 크기 및 팔레트 크기에 기초하는 룩업 테이블에 기초할 수 있다.
일 실시예에서, 임계값은 시퀀스, 프레임, CTB, 또는 코딩 유닛 레벨에서 비트스트림으로 전송된다.
도 16은 본 도면에서 "리미트(limit)"로 불리는 임계값의 디코딩과 관련되는 실시예를 예시한다.
일 실시예에서, 리미트는 단항 최대 코드 또는 단항 코드로 코드화된다. 이 리미트가 각각의 코딩 유닛에 대해 코딩된 경우, 단항 최대 코드의 최대 크기는 팔레트 크기와 동일하다. 이진 코드가 또한 고려될 수 있고, 코딩 유닛 레벨 및 비트들의 수가 팔레트 크기에 따라 달라질 수 있다. 도 16은 이들 실시예를 예시한다. 리미트는 비트스트림(1618)으로부터 디코딩된다. 그 후, 팔레트 크기에 관하여, 리미트는 디코딩된 limit + 1(1619)과 동일하게 설정된다. "Level"이 디코딩될 때(1612), 그리고 이것이 리미트보다 크거나 같은 경우(1620), 런 신택스 요소는 디코딩되지 않고 0과 동일하게 설정된다. 그리고, 모듈(1615)이 처리되거나, 아니면 런이 이전과 같이 디코딩된다(1614). 리미트가 각각의 코딩 유닛에서 한번 디코딩됨에 유의한다.
또 다른 실시예에서, 리미트는 단항 코드를 가진 팔레트 크기에 앞서 코딩된다. 팔레트 크기는 디코딩된 size + limit + 1과 동일하게 설정된다.
인코더 측에서, 이런 리미트는 레이트 왜곡 기준에 기초하여 선택된다. 이것은 여러 테스트가 레이트 왜곡 기준의 관점에서 최상의 리미트를 발견하기 위해 계산된다는 것을 의미한다. 인코더 측에서, 다른 해결책은 모든 런 파라미터들이 0과 동일한 하위 레벨과 동일한 리미트를 선택하는 것이다. 이것은 이 리미트보다 큰 모든 레벨들에 대해, 연관된 런이 0과 동일하게 설정되는 것을 의미한다.
일 실시예에서, 골롬 순서는 다른 파라미터들의 값이 무엇이든지 간에, 항상 0(Golomb_H(0))과 동일하게 설정된다.
일 실시예에서, Run 값의 값은 너무 큰 골롬 코드를 방지하기 위해 제한된다. 사실상, 값이 실제로 클 때, 연관되는 골롬 코드는 매우 큰 수의 비트들을 갖는다. 이것은 엔트로피 디코딩 복잡성 프로세스를 크게 증가시키고, 결국 최악의 경우의 복잡성을 증가시킨다. 최악의 경우는 하드웨어를 설계하는 데 이용된다. 이 실시예에 대한 대안은 리미트 값을 골롬 코드와 연관시키는 것이고, 이런 리미트 값이 디코딩되는 경우, 디코더는 추가 이진 코드를 판독한다. 이것은 현재 값이 리미트보다 아주 낮은 경우 현재 값이 골롬 코드로 보통 코딩된다는 것을 의미한다. 현재 값이 리미트보다 크거나 같은 경우, 리미트는 고정된 수의 비트들이 뒤따르는 골롬 코드로 코딩된다. 고정된 수의 비트들은 이진 코드이다. 그러한 경우에, 현재 값은 추가적인 고정 비트들과 연관되는 수가 더해진 리미트와 동일하다.
모든 설명된 실시예들은 결합될 수 있다.
바람직한 실시예에서, 3개의 카테고리는 예측 모드와, 다음 공식에 따르는 최종 디코딩된 레벨에 기초하여 정의된다:
Figure 112016063790905-pct00015
3개의 대응하는 Order 값들, Order0, Order1 및 Order2는 다음과 같이 초기화된다: Order0 = Order1 = 2 및 Order2 =0. 그 후, 3개의 Order 값이 다음 공식에 따른 업데이트된다:
Figure 112016063790905-pct00016
LastOrderN은 최종 사용된 OrderN이다. LastRunN은 카테고리 N에 대한 최종 디코딩된 Run 값이다.
게다가, Pred Mode = 0에서, Run 값들은, 최종 디코딩된 레벨 값이 임계값보다 확실히 클 때(또는 그보다 크거나 같을 때) 코딩 및 디코딩되지 않는다. 임계값은 각각의 팔레트 모드 코딩 유닛에 대한 비트스트림으로부터 추출된다.
골롬 코드와 관련하여 설명했지만, 임의의 다른 엔트로피 코드의 길이에 적응하기 위해 동일한 것이 적용될 수 있다. 예를 들어, 허프만 코드(Huffman code)를 이용하여, 허프만 코드의 특정한 사전은 코딩 파라미터들에 따라 결정될 수 있다.
도 17은 본 발명의 하나 이상의 실시예의 구현를 위한 컴퓨팅 디바이스(1700)의 개략적인 블록도이다. 컴퓨팅 디바이스(1700)는 마이크로-컴퓨터, 워크스테이션 또는 광 포터블 디바이스와 같은 디바이스일 수 있다. 컴퓨팅 디바이스(1700)는 통신 버스를 포함하며, 통신 버스는 다음에 접속된다:
- CPU로 지칭되는 마이크로프로세서와 같은 중앙 처리 유닛(1701),
- 본 발명의 실시예에 따른 이미지의 적어도 일부를 인코딩 또는 디코딩하기 위한 방법을 구현하기 위해 필요한 변수 및 파라미터를 기록하도록 적응되는 레지스터는 물론이고, 본 발명의 실시예의 방법의 실행가능 코드를 저장하기 위한, RAM으로 지칭되는 랜덤 액세스 메모리(1702) - 그의 메모리 용량은, 예를 들어 확장 포트에 접속된 선택적 RAM에 의해서 확장될 수 있음 -, 
- 본 발명의 실시예를 구현하기 위한 컴퓨터 프로그램을 저장하기 위한, ROM으로 지칭되는 판독 전용 메모리(1703),
- 네트워크 인터페이스(1704)는 전형적으로 처리될 디지털 데이터가 전송 또는 수신되는 통신 네트워크를 통해 접속된다. 네트워크 인터페이스(1704)는 단일 네트워크 인터페이스이거나, 또는 상이한 네트워크 인터페이스의 세트로 이루어질 수 있다(예를 들면, 유선 및 무선 인터페이스, 또는 상이한 종류의 유선 또는 무선 인터페이스). 데이터 패킷은 CPU(1701)에서 실행되는 소프트웨어 애플리케이션의 제어 하에 전송을 위해서 네트워크 인터페이스에 기록되거나, 수신을 위해서 네트워크 인터페이스로부터 판독된다; 
- 사용자 인터페이스(1705)는 사용자로부터 입력들을 수신하거나 정보를 사용자에게 표시하기 위해 사용될 수 있다; 
- HD로 지칭되는 하드 디스크(1706)는 대용량 스토리지 디바이스로서 제공될 수 있다;
- I/O 모듈(1707)은 데이터를 비디오 소스나 디스플레이와 같은 외부 디바이스들로부터/로 수신하고/전송하기 위해 이용될 수 있다.
실행 가능한 코드는 하드 디스크(1706) 상의 판독 전용 메모리(1703)에 저장되거나, 예를 들어 디스크와 같은 이동식 디지털 매체에 저장될 수 있을 것이다. 변형에 따르면, 프로그램의 실행 가능한 코드는 실행되기 전에 하드 디스크(1706)와 같은 통신 디바이스(1700)의 스토리지 수단들 중 하나에 저장되기 위해서, 네트워크 인터페이스(1704)를 통해 통신 네트워크의 수단에 의해서 수신될 수 있다.
중앙 처리 유닛(1701)은, 본 발명의 실시예에 따른 프로그램 또는 프로그램들의 소프트웨어 코드의 명령어 - 이 명령어는 전술한 스토리지 수단들 중 하나에 저장되어 있음 - 또는 그 일부를 제어하고 그 실행을 명령하도록 적응된다. 전원을 켠 후에, CPU(1701)는, 예를 들어 프로그램 ROM(1703) 또는 하드 디스크(HD)(1706)로부터 이들 명령어가 로딩된 후에, 소프트웨어 애플리케이션에 관련되는 메인 RAM 메모리(1702)로부터의 명령어를 실행할 수 있다. 그러한 소프트웨어 애플리케이션은, CPU(1701)에 의해 실행될 때, 도 10 내지 16에 도시된 흐름도들의 단계들이 수행되게 한다.
도 10 내지 16에 도시된 알고리즘의 임의의 단계는 PC("Personal Computer"), DSP("Digital Signal Processor") 또는 마이크로컨트롤러와 같은, 프로그램가능 컴퓨팅 머신에 의한 명령어의 세트 또는 프로그램의 실행에 의해 소프트웨어로 구현될 수 있고, 혹은, FPGA("Field-Programmable Gate Array") 또는 ASIC("Application-Specific Integrated Circuit")과 같은 머신 또는 전용 컴포넌트에 의해 하드웨어로 구현될 수 있다.
본 발명이 특정의 실시예들을 참조하여 이상에서 기술되어 있지만, 본 발명이 특정의 실시예들로 제한되지 않고, 본 발명의 범위 내에 속하는 수정이 통상의 기술자에게 명백할 것이다.
단지 예로서 제공되어 있고 첨부된 특허청구범위에 의해서만 결정되는 본 발명의 범위를 제한하기 위한 것이 아닌 이상의 예시적 실시예들을 참조하면 많은 추가의 수정들 및 변환들이 기술 분야의 통상의 기술자에게 안출될 것이다. 특히, 다양한 실시예로부터의 상이한 특징부가 적절하게 상호교환될 수 있을 것이다.
청구항들에서, 용어 "포함하는"은 다른 요소들 또는 단계들을 배제하지 않으며, 부정관사("a" 또는 "an")는 복수를 배제하지 않는다. 상이한 특징들이 서로 상이한 종속항들에 인용되어 있다는 사실만으로는 이들 특징의 조합이 유리하게 이용될 수 없다는 것을 나타내지 않는다.

Claims (24)

  1. 팔레트에 따라 이미지의 블록을 인코딩 또는 디코딩하기 위해 사용되는 상기 블록의 인덱스들과 연관되는 엔트로피 코드의 파라미터를 결정하는 방법으로서,
    상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고,
    상기 엔트로피 코드의 상기 파라미터는 상기 블록의 상기 인덱스들의 런(Run) 신택스의 인코딩 또는 디코딩을 위해 사용되고,
    상기 블록의 인덱스는 상기 블록의 상기 인덱스가 위의 로우에서 같은 위치의 인덱스와 동일한지를 나타내는 플래그를 사용하여 인코딩 또는 디코딩되고,
    상기 엔트로피 코드의 상기 파라미터는 상기 플래그에 따라 결정되는, 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 엔트로피 코드는 골롬 타입 코드(Golomb type code)인, 방법.
  4. 제3항에 있어서, 상기 엔트로피 코드의 상기 파라미터는 상기 골롬 타입 코드의 순서인, 방법.
  5. 제1항에 있어서, 상기 블록의 상기 인덱스는 연속적인 픽셀들의 그룹에 의해 스캔 순서로 인코딩 또는 디코딩되고, 각각의 그룹은 인덱스의 값을 결정하기 위한 모드를 제공하는 제1 신택스 요소(syntax element)와 반복을 제공하는 제2 신택스 요소를 이용하여 인코딩 또는 디코딩되고, 상기 엔트로피 코드의 상기 파라미터는 상기 제2 신택스 요소의 인코딩 또는 디코딩에 사용되는, 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제1항에 있어서, 상기 엔트로피 코드의 상기 파라미터는 최종 인코딩된 또는 디코딩된 대응하는 요소의 인코딩 또는 디코딩을 위해 최적이 되는 상기 엔트로피 코드의 파라미터의 값으로서 주어진 요소의 인코딩 또는 디코딩을 위해 결정되는, 방법.
  11. 제1항에 있어서, 상기 엔트로피 코드의 상기 파라미터의 값은 고정된 수의 값들로 제한되는, 방법.
  12. 비디오 데이터를 비트스트림에 인코딩하는 방법으로서,
    - 제1항의 방법에 따라 상기 엔트로피 코드의 상기 파라미터를 결정하는 단계; 및
    - 상기 엔트로피 코드의 상기 결정된 파라미터를 이용하여 상기 비트스트림에 값을 기입하는 단계
    를 포함하는 방법.
  13. 비트스트림으로부터 비디오 데이터를 디코딩하는 방법으로서,
    - 블록의 디코딩 프로세스에 사용되는 파라미터를 상기 비트스트림으로부터 획득하는 단계;
    - 제1항의 방법에 따라 상기 엔트로피 코드의 상기 파라미터를 결정하는 단계
    를 포함하는 방법.
  14. 비디오 데이터를 인코딩 또는 디코딩하기 위한 파라미터를 결정하기 위한 디바이스로서, 상기 디바이스는,
    팔레트에 따라 이미지의 블록을 인코딩 또는 디코딩하기 위해 사용되는 상기 블록의 인덱스들과 연관되는 엔트로피 코드의 파라미터를 결정하기 위한 결정 수단을 포함하고,
    상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드의 상기 파라미터는 상기 블록의 상기 인덱스들의 런(Run) 신택스의 인코딩 또는 디코딩을 위해 사용되고,
    상기 블록의 인덱스는 상기 블록의 상기 인덱스가 위의 로우에서 같은 위치의 인덱스와 동일한지를 나타내는 플래그를 사용하여 인코딩 또는 디코딩되고, 상기 결정 수단은, 상기 플래그에 따라 상기 엔트로피 코드의 상기 파라미터를 결정하도록 구성되는, 디바이스.
  15. 비디오 데이터를 비트스트림에 인코딩하기 위한 디바이스로서,
    - 팔레트에 따라 이미지의 블록을 인코딩하기 위해 사용되는 상기 블록의 인덱스들과 연관되는 엔트로피 코드의 파라미터를 결정하기 위한 수단 - 상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드의 상기 파라미터는 상기 블록의 상기 인덱스들의 런(Run) 신택스의 인코딩을 위해 사용됨 -, 및
    - 상기 엔트로피 코드의 상기 결정된 파라미터를 이용하여 상기 비트스트림에 값을 기입하는 수단을 포함하고,
    - 상기 블록의 인덱스는 상기 블록의 상기 인덱스가 위의 로우에서 같은 위치의 인덱스와 동일한지를 나타내는 플래그를 사용하여 인코딩되고,
    - 상기 결정하기 위한 수단은, 상기 플래그에 따라 상기 엔트로피 코드의 상기 파라미터를 결정하도록 구성되는,
    디바이스.
  16. 비트스트림으로부터 비디오 데이터를 디코딩하기 위한 디바이스로서,
    - 블록의 디코딩 프로세스에 사용되는 파라미터를 상기 비트스트림으로부터 획득하기 위한 수단; 및
    - 팔레트에 따라 이미지의 블록을 디코딩하기 위해 사용되는 상기 블록의 인덱스들과 연관되는 엔트로피 코드의 파라미터를 결정하기 위한 수단을 포함하고,
    상기 팔레트는 픽셀 값들과 연관되는 인덱스들의 세트를 포함하고, 상기 엔트로피 코드의 상기 파라미터는 상기 블록의 상기 인덱스들의 런(Run) 신택스의 디코딩을 위해 사용되고, 상기 블록의 인덱스는 상기 블록의 상기 인덱스가 위의 로우에서 같은 위치의 인덱스와 동일한지를 나타내는 플래그를 사용하여 디코딩되고, 상기 결정하기 위한 수단은, 상기 플래그에 따라 상기 엔트로피 코드의 상기 파라미터를 결정하도록 구성되는, 디바이스.
  17. 프로그램가능 장치에 로딩되어서 실행될 때에, 제1항에 따른 방법을 구현하기 위한 명령어들의 시퀀스를 포함하는 프로그램가능 장치용 컴퓨터 프로그램의 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020167017702A 2013-12-10 2014-12-10 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치 KR102020101B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GBGB1321851.6A GB201321851D0 (en) 2013-12-10 2013-12-10 Run length parameters coding for palette mode
GB1321851.6 2013-12-10
GB1322471.2 2013-12-18
GB1322471.2A GB2521411B (en) 2013-12-10 2013-12-18 Method and apparatus for syntax element encoding in video coding and decoding
PCT/EP2014/077295 WO2015086716A1 (en) 2013-12-10 2014-12-10 Method and apparatus for syntax element encoding in a video codec

Publications (2)

Publication Number Publication Date
KR20160093061A KR20160093061A (ko) 2016-08-05
KR102020101B1 true KR102020101B1 (ko) 2019-09-09

Family

ID=50000506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017702A KR102020101B1 (ko) 2013-12-10 2014-12-10 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US10674155B2 (ko)
EP (1) EP3080988B1 (ko)
JP (1) JP6532467B2 (ko)
KR (1) KR102020101B1 (ko)
CN (1) CN105814890B (ko)
GB (2) GB201321851D0 (ko)
RU (1) RU2668061C2 (ko)
WO (1) WO2015086716A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MY175688A (en) 2014-03-14 2020-07-06 Vid Scale Inc Palette coding for screen content coding
US10687064B2 (en) 2014-08-04 2020-06-16 Qualcomm Incorporated Palette mode encoding and decoding with inferred pixel scan order
TW201626798A (zh) * 2014-10-06 2016-07-16 Vid Scale Inc 用於螢幕內容編碼之改良調色編碼
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
JP6613842B2 (ja) * 2015-11-24 2019-12-04 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
EP3767955B1 (en) * 2018-04-01 2023-08-09 LG Electronics Inc. Method for processing image and apparatus therefor
MX2021012516A (es) * 2019-04-19 2021-11-12 Bytedance Inc Codificacion de contexto para modo de salto de transformada.
CA3137163A1 (en) 2019-04-24 2020-10-29 Bytedance Inc. Constraints on quantized residual differential pulse code modulation representation of coded video
JP7311627B2 (ja) 2019-05-01 2023-07-19 バイトダンス インコーポレイテッド 量子化残差差分パルス符号変調符号化を使用したイントラ符号化映像
JP7288083B2 (ja) 2019-05-02 2023-06-06 バイトダンス インコーポレイテッド 符号化ツリー構造タイプに基づく符号化モード
US20220295105A1 (en) * 2019-08-29 2022-09-15 Lg Electronics Inc. Image or video coding based on escape binarization in palette mode
JP2022532444A (ja) * 2019-09-07 2022-07-14 ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド ビデオデータを復号化する方法、コンピューティングデバイス、非一時的コンピュータ可読記憶媒体、デコーダ可読記憶媒体、およびコンピュータプログラム製品
WO2021072364A1 (en) * 2019-10-10 2021-04-15 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using palette mode
CN114788284B (zh) * 2019-12-30 2023-03-31 阿里巴巴(中国)有限公司 用于在调色板模式下对视频数据进行编码的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898313B2 (en) * 2002-03-06 2005-05-24 Sharp Laboratories Of America, Inc. Scalable layered coding in a multi-layer, compound-image data transmission system
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US20040071351A1 (en) * 2002-10-07 2004-04-15 Johan Rade Method and system for graphics compression and display
US7519274B2 (en) 2003-12-08 2009-04-14 Divx, Inc. File format for multiple track digital data
BRPI0510076B1 (pt) 2004-04-21 2019-01-29 Slipstream Data Inc método e sistema de processamento para a criação de um particionamento de árvore estruturado
ES2450265T3 (es) 2006-11-14 2014-03-24 Nippon Telegraph & Telephone Corporation Método de codificación y método de decodificación de señal de imagen, método de codificación y método de decodificación de fuente de información, dispositivos para ellos, sus programas, y medio de memoria con programa registrado
KR20120071253A (ko) * 2010-12-22 2012-07-02 광주과학기술원 무손실 부호화를 위한 엔트로피 부호화 방법 및 엔트로피 부호화기
TWI530161B (zh) * 2011-06-07 2016-04-11 Sony Corp Image processing apparatus and method
US9191670B2 (en) 2012-01-17 2015-11-17 Qualcomm Incorporated Throughput improvement for CABAC coefficient level coding
ITBO20120404A1 (it) * 2012-07-26 2014-01-27 Nicolo' Antonino Patroniti Circuito extracorporeo per la rimozione della co2 dal sangue
US11259020B2 (en) * 2013-04-05 2022-02-22 Qualcomm Incorporated Determining palettes in palette-based video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Evaluation of Palette Mode Coding on HM-12.0+RExt-4.1, JCT-VC of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC29/WG 11, JCTVC-O0218(2013.11.01.)*

Also Published As

Publication number Publication date
RU2668061C2 (ru) 2018-09-25
GB201322471D0 (en) 2014-02-05
GB2521411B (en) 2017-11-01
JP6532467B2 (ja) 2019-06-19
CN105814890A (zh) 2016-07-27
GB2521411A (en) 2015-06-24
JP2017505001A (ja) 2017-02-09
US20160330452A1 (en) 2016-11-10
CN105814890B (zh) 2019-07-26
GB201321851D0 (en) 2014-01-22
EP3080988B1 (en) 2022-04-27
EP3080988A1 (en) 2016-10-19
WO2015086716A1 (en) 2015-06-18
KR20160093061A (ko) 2016-08-05
US10674155B2 (en) 2020-06-02

Similar Documents

Publication Publication Date Title
KR102020101B1 (ko) 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치
KR101897378B1 (ko) 팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치
JP6537511B2 (ja) Hevcにおける改良型パレットモード
US10972742B2 (en) Encoding process using a palette mode
RU2684202C2 (ru) Улучшенный процесс кодирования с использованием режима палитры
US9516342B2 (en) Method and apparatus for transition encoding in video coding and decoding
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
GB2521496A (en) Improved palette mode in HEVC
GB2523992A (en) Method and apparatus for encoding or decoding blocks of pixel

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant