KR101897378B1 - 팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치 - Google Patents

팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101897378B1
KR101897378B1 KR1020167017790A KR20167017790A KR101897378B1 KR 101897378 B1 KR101897378 B1 KR 101897378B1 KR 1020167017790 A KR1020167017790 A KR 1020167017790A KR 20167017790 A KR20167017790 A KR 20167017790A KR 101897378 B1 KR101897378 B1 KR 101897378B1
Authority
KR
South Korea
Prior art keywords
palette
entry
current
pixels
predictor
Prior art date
Application number
KR1020167017790A
Other languages
English (en)
Other versions
KR20160093064A (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
Priority claimed from GBGB1321850.8A external-priority patent/GB201321850D0/en
Priority claimed from GB1403823.6A external-priority patent/GB2523992B/en
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20160093064A publication Critical patent/KR20160093064A/ko
Application granted granted Critical
Publication of KR101897378B1 publication Critical patent/KR101897378B1/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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/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
    • 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/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

본 발명은 HEVC RExt에 따라 팔레트 예측 모드를 이용하여 이미지의 현재 픽셀 블록을 처리하기 위한 방법 및 디바이스와 관련된다. 모드는 현재 픽셀 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하기 위해 현재 팔레트를 이용한다. 현재 팔레트는 엔트리 인덱스들을 픽셀 값들과 연관시키는 엔트리들을 포함한다. 방법은 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트들인 2개 이상의 팔레트들 엔트리들로부터 현재 팔레트를 예측하는 단계를 포함한다. 팔레트 예측자는 2개 이상의 팔레트로부터, 바람직하게는, 현재 코딩 엔티티 내의 코딩 유닛에 대한 최종 사용된 팔레트로부터, 및 플래그 비트맵이 그것의 요소들이 최종 사용된 팔레트로 복사되었는지 아닌지를 나타내는 이전에 사용된 팔레트로부터 구축되는 것으로 사용될 수 있다. 따라서, 팔레트 모드의 코딩이 향상된다.

Description

팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치{METHOD AND APPARATUS FOR ENCODING OR DECODING A PALETTE IN PALETTE CODING MODE}
본 발명은 팔레트 예측 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한, 예를 들어 인코딩 또는 디코딩하기 위한 방법 및 장치에 관한 것이다. 본 발명은 특히, HEVC 레인지 확장(Range Extension)에 도입된 것으로서 팔레트 모드 인코딩에 관한 것이다.
본 발명은 픽셀들의 현재 블록이 소위 팔레트로 인코딩되거나 이로부터 구축되는 예측자 블록에 기초하여 예측적으로 인코딩되는 코딩의 모드에 특히 더 적용된다.
본 명세서에서 팔레트는 인덱스를 픽셀의 값과 연관시키는, 엔트리들 또는 "요소들"을 갖는 룩업 테이블로서 정의된다. 전형적으로, 픽셀의 값은 픽셀과 연관되는 각각의 컬러 컴포넌트의 값으로 구성되어, 컬러 팔레트가 될 수 있지만, 반드시 그렇지는 않다. 오히려, 픽셀의 값은 단일 픽셀 컴포넌트로 만들어질 수 있어, 모노크롬 팔레트가 될 수 있다.
픽셀의 블록을 인코딩하는 이런 모드는 일반적으로 팔레트 코딩 모드로서 지칭된다. 예를 들어, 고효율 비디오 코딩(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) 모드로서 지칭된다. 인트라 모드에 따르면, 예측자 블록은 현재 이미지 내의 코딩 유닛의 바로 근처의 픽셀들의 값에 기초하여 구축된다. 예측자 블록이 현재 이미지의 블록이 아니라 그것의 재구성이라는 점에 유의해야 한다. 블록의 경계에 인접하는 어느 픽셀들이 예측자 블록을 구축하는 데 사용되고 어떻게 이들이 사용되는지를 결정하기 위해 방향이 사용된다. 인트라 모드에 감쳐진 아이디어는, 자연적 이미지들의 일반적 코히런스(coherence) 때문에, 코딩 유닛의 바로 근처의 픽셀들이 현재 코딩 유닛의 픽셀들과 유사할 수 있다는 것이다. 따라서, 이들 근처 픽셀들에 기초하는 예측자 블록을 이용하여 코딩 유닛의 픽셀들의 값의 양호한 예측을 얻는 것이 가능하다.
제2 코딩 모드는 인터(INTER) 모드로서 지칭된다. 인터 모드에 따르면, 예측자 블록은 다른 이미지의 블록이다. 인터 모드에 감쳐진 아이디어는 시퀀스 내의 연속적인 이미지들이 일반적으로 매우 유사하다는 것이다. 주된 차이는 전형적으로 카메라의 스크롤링 또는 장면 내의 객체들의 이동에 기인하는 이들 이미지 간의 움직임으로부터 온다. 예측자 블록은 현재 이미지 내의 코딩 유닛의 위치와 관련된 그 위치를 참조 이미지에 제공하는 벡터에 의해 결정된다. 이 벡터는 움직임 벡터로서 지칭된다. 이 모드에 따르면, 이 모드를 이용하는 그런 코딩 유닛의 인코딩은 움직임 벡터 및 압축된 잔차를 포함하는 움직임 정보를 포함한다.
본 명세서는 팔레트 모드로 불리는 제3 코딩 모드에 집중한다. 팔레트 모드에 따르면, 주어진 코딩 유닛에 대한 예측자 블록을 팔레트로부터의 인덱스들의 블록으로서 정의하는 것이 가능하고: 예측자 블록 내의 각각의 픽셀 위치에서, 예측자 블록은 코딩 유닛에서 동일 위치를 갖는(즉, 같은 위치에 배치되는) 픽셀의 값에 가장 가까운 팔레트 내의 픽셀 값과 연관되는 인덱스를 포함한다. 따라서, 팔레트 코딩 모드는 현재 팔레트를 이용하여 현재 코딩 유닛 또는 픽셀들의 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축한다. 예측자 블록과 코딩 유닛 간의 차이를 나타내는 잔차는 이후 계산되고 인코딩된다. 팔레트 내의 엔트리 인덱스들은 또한 "레벨들(levels)"로서 알려져 있다.
팔레트 모드를 이용할 때, 인덱스들 또는 "레벨들"의 팔레트 및 예측자 블록은 이미지를 인코딩하는 비트스트림으로 전송될 필요가 있다. 이것은, 수십 개의 엔트리를 포함하는 팔레트가 각각의 코딩 유닛에 대해 전송될 필요가 있기 때문에 고비용의 시그널링을 나타낸다.
본 발명은 특히, 시그널링 코스트(signalling cost)를 실질적으로 감소시키기 위해, 팔레트 모드를 이용하여 인코딩을 향상시키도록 고안되었다.
본 발명은 픽셀들의 블록을 인코딩할 때 사용되는 팔레트를 예측함으로써 팔레트 모드의 인코딩을 향상시키기 위해 제공된다. 이로 인해 인코더로부터 디코더로 전송될 팔레트에 대한 정보를 더 적게 갖게 되고: 시그널링 코스트는 실질적으로 감소된다.
본 발명의 제1 양태에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 방법이 제공되고, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하고, 방법은 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하는 단계를 포함하고, 2개 이상의 팔레트는 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트이고, 현재 팔레트의 예측은 2개 이상의 팔레트 중 주어진 팔레트로부터 엔트리를 선택하는 것을 포함하고, 엔트리의 상기 선택은 플래그들의 비트맵에 기초하고, 각각의 플래그는 주어진 팔레트 내의 대응하는 엔트리가 다른 팔레트 내의 엔트리를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의하고, 선택된 엔트리는 다른 팔레트를 생성하기 위해 엔트리의 선택 없음을 정의하는 비트맵의 플래그에 대응하는 주어진 팔레트의 엔트리를 포함한다. 이런 방식으로, 다른 팔레트를 예측할 때 폐기되는 주어진 팔레트의 엔트리들은 이에 따라 현재 팔레트 또는 그것의 팔레트 예측자를 강화하기 위해 검색될 수 있다.
실시예에서, 다른 팔레트는 2개 이상의 팔레트 중 다른 하나이다.
실시예에서, 상기 다른 팔레트는 이미지 내의 픽셀들의 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는 데 사용된 팔레트이다.
실시예에서, 주어진 팔레트는 이미지 내의 픽셀들의 현재 블록에 바로 선행하는 픽셀들의 블록에 바로 선행하는 이미지 내의 픽셀들의 블록을 처리하는 데 사용된 팔레트이다.
실시예에서, 플래그들의 비트맵은 비트맵이 미리 정의된 위치 이후에, 다른 팔레트를 생성하기 위해 주어진 팔레트의 엔트리의 선택을 정의하는 적어도 하나의 추가 플래그를 포함하는지 아닌지를 시그널링하기 위한, 비트맵 내의 미리 정의된 위치에서의 적어도 하나의 요소를 포함한다.
실시예에서, 현재 팔레트는 2개 이상의 팔레트로부터 구축되는 팔레트 예측자로부터 생성된다.
실시예에서, 팔레트 예측자를 구축하는 것은 이미지 내의 픽셀들의 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는 데 최종 사용된 팔레트로부터 모든 엔트리들을 선택하는 것, 및 이미지 내의 픽셀들의 다른 블록을 처리하는 데 사용된 다른 팔레트로부터 적어도 하나의 엔트리를 선택하는 것을 포함한다. 이 구성은 종래의 팔레트 예측자(일반적으로 최종 사용된 팔레트)를, 특히 상술한 바와 같이 선택되는 높은 관련성을 가질 수 있는 추가 엔트리들로 보충하는 것을 가능하게 한다.
실시예에서, 현재 팔레트는 플래그들의 비트맵을 이용하여 팔레트 예측자로부터 생성되고, 각각의 플래그는 팔레트 예측자 내의 대응하는 엔트리가 현재 팔레트 내의 엔트리를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의한다.
실시예에서, 2개 이상의 팔레트의 엔트리는 구축 중인 팔레트 예측자에 아직 유사한 엔트리가 존재하지 않은 경우 구축 중인 팔레트 예측자에 추가된다.
본 발명의 제2 양태에 따르면, 디지털 이미지들의 시퀀스를 비트스트림에 인코딩하는 방법이 제공되고, 팔레트 코딩 모드를 이용하여 인코딩되고 있는 이미지의 적어도 하나의 블록은 제1 양태에 따르는 픽셀들의 현재 블록을 처리하는 방법을 포함한다.
본 발명의 제3 양태에 따르면, 디지털 이미지들의 인코딩된 시퀀스를 포함하는 비트스트림을 디코딩하는 방법이 제공되고, 팔레트 코딩 모드를 이용하여 인코딩되었던 이미지의 적어도 하나의 블록은 제1 양태에 따르는 픽셀들의 현재 블록을 처리하는 방법을 포함한다.
본 발명의 제4 양태에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스가 제공되고, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하고, 디바이스는 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하도록 구성되는 예측 모듈을 포함하고, 2개 이상의 팔레트는 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트들이고, 현재 팔레트의 예측은 2개 이상의 팔레트 중 주어진 팔레트로부터 엔트리를 선택하는 것을 포함하고, 엔트리의 상기 선택은 플래그들의 비트맵에 기초하며, 각각의 플래그는 주어진 팔레트 내의 대응하는 엔트리가 다른 팔레트 내의 엔트리를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의하고, 선택된 엔트리는 다른 팔레트를 생성하기 위해 엔트리의 선택 없음을 정의하는 비트맵의 플래그에 대응하는 주어진 팔레트의 엔트리를 포함한다.
본 발명의 제5 양태에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스가 제공되고, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하고, 디바이스는 상술한 제1 양태의 처리 방법을 구현하도록 구성된다.
본 발명의 제6 양태에 따르면, 디지털 이미지들의 시퀀스를 비트스트림에 인코딩하기 위한 디바이스가 제공되고, 디바이스는 제2 양태에 따른 방법을 수행하기 위한 수단을 포함한다.
본 발명의 제7 양태에 따르면, 디지털 이미지들의 시퀀스를 포함하는 비트스트림을 디코딩하기 위한 디바이스가 제공되며, 디바이스는 제3 양태에 따른 방법을 수행하기 위한 수단을 포함한다.
본 발명의 제8 양태에 따르면, 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 매체로서, 프로그램이 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스 내의 마이크로프로세서 또는 컴퓨터 시스템에 의해 실행될 때 - 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용함 -, 디바이스로 하여금 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하는 단계를 수행하게 하는 비일시적 컴퓨터 판독 가능 매체가 제공되며, 2개 이상의 팔레트는 픽셀들의 블록을 처리하는 데 이전에 이용된 팔레트이고, 현재 팔레트의 예측은 2개 이상의 팔레트 중 주어진 팔레트로부터 엔트리를 선택하는 것을 포함하고, 엔트리의 상기 선택은 플래그들의 비트맵에 기초하고, 각각의 플래그는 주어진 팔레트 내의 대응하는 엔트리가 다른 팔레트 내의 엔트리를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의하고, 선택된 엔트리는 다른 팔레트를 생성하기 위해 엔트리의 선택 없음을 정의하는 비트맵의 플래그에 대응하는 주어진 팔레트의 엔트리를 포함한다.
제9 양태에 따르면, 컴퓨터 프로그램으로서, 이것이 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 제1, 제2 또는 제3 양태들 중 어느 하나의 방법을 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램이 제공된다.
본 발명의 추가 양태에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 방법이 제공되고, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용한다.
방법은 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하는 단계를 포함하고, 2개 이상의 팔레트는 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트이다.
따라서, 위에 언급한 바와 같이, 현재 팔레트에 대한 정보가 디코더에 거의 전송되지 않으며, 그로 인해 비트스트림에서 시그널링을 감소시킨다. 본 명세서에서 이하 설명되는 바와 같이, 팔레트 예측자는 2개 이상의 팔레트로부터 형성될 수 있고, 현재 팔레트의 모두 또는 일부는 팔레트 예측자를 이용하여 예측될 수 있다. 따라서, 본 발명은 또한 팔레트를 생성하기 위한 단일 팔레트 예측자가 극소수의 요소들을 갖는다고 판명될 때 열악한 팔레트를 갖는 것을 회피하게 한다. 이것은 그러한 팔레트 예측자가 도입될 때 발생할 수 있다.
변형에서, 팔레트 코딩 모드는 현재 팔레트를 이용하여 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하고, 방법은 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계를 포함한다.
이에 따라, 본 발명의 다른 양태들에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스, 즉 경우에 따라 달라지는 인코더 또는 디코더가 제공되고, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용한다.
디바이스는 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하도록 구성되는 예측 모듈을 포함하고, 2개 이상의 팔레트는 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트이다.
변형에서, 팔레트 코딩 모드는 현재 팔레트를 이용하여 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하고, 예측 모듈은 팔레트 예측자를 이용하여 현재 팔레트를 예측하도록 구성된다.
본 발명의 실시예들의 선택적 특징들은 첨부된 청구항들에 정의된다. 이러한 특징들 중 일부는 방법과 관련하여 이하에서 설명될 것이고, 이들은 본 발명의 실시예들에 따른 디바이스에 전용인 시스템 특징들로 치환될 수 있다.
본 발명의 일부 실시예들에서, 현재 팔레트의 예측은 2개 이상의 팔레트 중 주어진 팔레트로부터 엔트리를 선택하는 것을 포함하고, 엔트리의 상기 선택은 플래그들의 비트맵에 기초하고, 각각의 플래그는 주어진 팔레트 내의 대응하는 엔트리가 다른 팔레트를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의한다. 이것은 플래그들의 비트맵이 어느 요소들/엔트리들이 일부 팔레트를 위해 재사용되었는지와 어느 것들이 폐기되었는지를 알게 할 수 있기 때문에 가능하다. 이 정보의 덕택으로, 현재 처리중인 픽셀들의 블록과 관련될 수 있는 일부 폐기된 요소들을 이용하여 팔레트 예측자 또는 현재 팔레트를 강화하는 것이 가능하다.
특히, 이것은 선택된 엔트리가 다른 팔레트를 생성하기 위해 엔트리의 선택 없음을 정의하는 비트맵의 플래그에 대응하는 주어진 팔레트의 엔트리를 포함하는 경우에 해당한다. 그런 플래그는 엔트리가 이전에 폐기되었다는 것을 의미한다.
일부 특징들에 따르면, 다른 팔레트는 2개 이상의 팔레트들 중 다른 하나이다. 이것은 하나의 팔레트를 다른 팔레트에 기초하여 예측하는 것에 밀접하게 관련되는 2개의 팔레트가 현재 팔레트를 예측하는 데 모두 사용된다는 것을 의미한다. 이 구성은, 예를 들어 새로운 팔레트를 예측하기 위해 최종 사용된 팔레트들을 사용할 때 발생할 수 있다.
따라서, 다른 팔레트를 예측할 때 폐기되었던 주어진 팔레트의 엔트리들은 현재 팔레트 또는 그 팔레트 예측자를 강화하기 위해 검색될 수 있다.
특히, 다른 팔레트는 이미지 내의 픽셀들의 현재 블록에 바로(즉, 즉시) 선행하는(코딩/디코딩 순서에 따라) 픽셀들의 블록을 처리하기 위해 최종 사용된 팔레트일 수 있다. 게다가, 주어진 팔레트 및 다른 팔레트는 이미지 내의 픽셀들의 현재 블록에 바로 선행하는(동일한 코딩/디코딩 순서에 따라) 픽셀들의 최종 2개의 블록을 처리하는 데 사용되는 2개의 팔레트일 수 있다. 특히, 주어진 팔레트는 이미지 내의 픽셀들의 현재 블록에 바로 선행하는 픽셀들의 블록에 바로 선행하는 이미지 내의 픽셀들의 블록을 처리하는 데 사용된 팔레트일 수 있다. 이러한 구성들은 효율적인 코딩을 획득하기 위해 픽셀들의 연이은 근접 블록(consecutive and close block)들 간의 중복성을 활용한다.
다른 특징들에 따르면, 플래그들의 비트맵은 비트맵이 미리 정의된 위치 이후에, 다른 팔레트를 생성하기 위해 주어진 팔레트의 엔트리의 선택을 정의하는 적어도 하나의 추가 플래그를 포함하는지 아닌지를 시그널링하기 위한, 비트맵 내의 미리 정의된 위치에서의 적어도 하나의 요소를 포함한다. 이것은 비트맵의 크기를 감소시키며, 따라서 시그널링 코스트를 감소시킨다. 이것은 팔레트들이 어떻게 구축되는지에 따라, 주어진 팔레트의 최종 엔트리들이 오래된 비효율적인 요소들로 더 되기 쉽기 때문에 가능하다. 따라서, 비트맵들의 최종 플래그들이 주어진 팔레트로부터 대응하는 엔트리의 선택 없음을 정의하는 0으로 모두 설정될 가능성이 크다.
위에서 언급된 일부 실시예들에서, 현재 팔레트는 2개 이상의 팔레트로부터 구축되는 팔레트 예측자로부터 생성된다.
일부 특정한 실시예들에서, 팔레트 예측자를 구축하는 것은 이미지 내의 픽셀들의 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하기 위해 최종 사용된 팔레트로부터 모든 엔트리들을 선택하는 것, 및 이미지 내의 픽셀들의 다른 블록을 처리하는 데 사용되는 다른 팔레트로부터 적어도 하나의 엔트리를 선택하는 것을 포함한다. 이 구성은 종래의 팔레트 예측자(일반적으로, 최종 사용된 팔레트)를, 특히 상술한 바와 같이 선택되는 높은 관련성을 가질 수 있는 추가 엔트리들로 보충하는 것을 가능하게 한다.
다른 특정 실시예에서, 현재 팔레트는 플래그들의 비트맵을 이용하여 팔레트 예측자로부터 생성되고, 각각의 플래그는 팔레트 예측자 내의 대응하는 엔트리가 현재 팔레트에서 엔트리를 생성하기 위해 엔트리로서 선택되는지 아닌지를 정의한다.
일부 실시예에서, 2개 이상의 팔레트의 엔트리는 구축 중인 팔레트 예측자에 아직 유사한 엔트리가 있지 않은 경우 구축 중인 팔레트 예측자에 추가된다. 이것은 중복성을 회피하기 위한 것이다.
일부 실시예들에서, 이미지의 픽셀들의 블록들은 미리 정의된 스캐닝 순서에 따라 처리되고; 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따라 이전에 처리된 픽셀들의 블록들을 예측하는 데 사용된 팔레트들의 세트로부터 선택된다. 이것은 과거 팔레트에 기초하기 때문에 현재 팔레트의 인터 예측에 대응한다. 이런 구성은 픽셀들의 현재 블록을 처리할 때 많은 양의 정보를 갖는 과거 팔레트가 양측(인코더 및 디코더)에서 이미 이용 가능하기 때문에 상당한 양의 시그널링 코스트를 감소시킬 가능성을 가진다. 따라서, 효율적인 팔레트 예측이 행해질 수 있다.
특정한 실시예들에서, 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따른 처리되는 픽셀들의 최종 블록 신호에 사용되는 팔레트이다. 다시 말하면, 이것은 팔레트 예측자로서 선택되는 최종 사용된(예를 들어, 디코딩된) 팔레트이다. 이런 제공은 연속해서 처리되는 픽셀들의 블록 간의 높은 픽셀 중복성을 이용하는데, 그 이유는 이들이 종종 공간적으로 닫혀있기 때문이다. 이것은 또한, 최종 팔레트만이 저장될 필요가 있기 때문에, 이전에 사용된 팔레트들을 저장하는 메모리 코스트(memory cost)를 감소시킨다. 게다가, 이것은 이전에 사용된 어느 팔레트가 픽셀들의 현재 블록에 대한 팔레트 예측자로서 사용되는지를 지정할 필요가 없기 때문에 인코딩된 비트스트림에서 비트들을 절약할 수 있다.
다른 특정한 실시예들에서, 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따라 이전에 처리된 픽셀들의 블록에 사용된 팔레트들의 세트로부터 선택되고 픽셀들의 현재 블록에 인접한다. 실제로, 이것은 일반적으로 현재 픽셀 블록의 위에 또는 그 좌측에 있는 픽셀 블록들이다. 이 제공은 또한 픽셀들의 인접한 블록들 간의 높은 픽셀 중복성을 이용한다.
또 다른 특정한 실시예들에서, 픽셀들의 이전에 처리된 블록들에 사용되는 팔레트들의 세트는 픽셀들의 현재 블록이 픽셀들의 블록들로 만들어진 새로운 코딩 엔티티, 예를 들어 슬라이스 또는 독립 타일을 시작하거나 또는 코딩 엔티티들의 새로운 라인을 시작할 때 리셋되고, 각각의 코딩 엔티티는 픽셀들의 블록들로 만들어진다. 변형에서, 리셋은 각각의 새로운 이미지 또는 프레임에서 발생할 수 있다. 이런 제공은 코딩 엔티티들 또는 코딩 엔티티들의 라인들(예를 들어, HEVC 내의 코딩 트리 블록들)이 동시에 처리될 수 있기 때문에, 이미지의 처리(인코딩 또는 디코딩)를 가속할 수 있다. 게다가, 코딩 엔티티들의 각각의 새로운 라인에서의 리셋은 각각의 코딩 엔티티에서의 리셋보다 픽셀 블록들의 코딩을 더 효율적으로 제공한다고 판명되었다.
HEVC 표준에 정의된 독립 타일은 적어도 하나의 슬라이스를 포함하고, 다른 타일들과 공간적으로 독립적이다.
특정한 특징에 따르면, 팔레트들의 세트는 빈 세트로 리셋된다.
변형에서, 팔레트들의 리셋된 세트는 바이-디폴트(by-default) 팔레트를 포함한다. 이 구성은 따라서, 리셋의 경우에도, 즉 새로운 코딩 엔티티가 처리될 때조차 팔레트 예측을 제공할 수 있다. 이것은 새로운 코딩 엔티티에서 제1 코딩 유닛에 대한 시그널링 코스트들을 다시 감소시키는 것을 가능하게 한다.
이 변형에서, 바이-디폴트 팔레트는 색 공간을 통해 동등하게 분포되는 픽셀 값들에 대응하는 미리 결정된 엔트리들의 세트를 포함한다. 예를 들어, YUV 색 공간에서 표현되는 픽셀들에서(동일한 것이 RGB 색 공간에 적용될 것이다), 픽셀 값들은 Y 컴포넌트를 통해 동등하게 분포될 수 있는 반면, U 및 V 컴포넌트 값들은 각각의 컬러 컴포넌트를 코딩하는 데 사용되는 비트 심도가 주어지는 최대가능값 MAX의 절반으로 고정될 수 있고(즉, U 및 V는 색 공간에서 대응하는 컴포넌트들의 중간 값을 취한다), 예를 들어, 1<<(비트심도-1) 또는 (MAX+1)/2이다.
본 발명의 다른 실시예들에서, 참조 팔레트 예측자들은 이미지를 형성하는 픽셀들의 블록들의 각각의 코딩 엔티티들과 연관되고, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 현재 블록을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자이다. 본 발명의 이러한 실시예들은 코딩 엔티티(예를 들어, CTB) 레벨에서 매우 효율적인 팔레트 예측자들을 정의하는 것을 가능하게 한다. 예로서, 단일 참조 팔레트 예측자는 상기 리셋과 동일한 정신에서 코딩 엔티티들의 단일 라인을 위해 정의될 수 있다. 이것은 참조 팔레트 예측자들을 디코더에 시그널링하는 코스트를 줄이기 위한 것이다.
특정한 실시예들에서, 코딩 엔티티와 연관되는 참조 팔레트 예측자는 코딩 엔티티를 구성하는 픽셀들의 각각의 블록에 대한 팔레트 예측자로서 이용된다. 이런 제공 덕택에, 제한된 정보량, 즉 참조 팔레트 예측자가 전체 코딩 엔티티를 위해 필요하다. 이것은 종래의 팔레트 모드와 비교하여 시그널링 코스트를 실질적으로 감소시키는 것을 목표로 한다.
바람직하게, 참조 팔레트 예측자들은 이미지를 코딩하는 비트스트림에 삽입된다. 이것은 디코더가 코딩 엔티티에서 픽셀들의 각각의 블록에 대한 팔레트 예측을 효율적으로 수행하기 위한 참조 팔레트 예측자를 갖는 것을 가능하게 하며, 즉 이들 예측자를 결정하기 위한 복잡한 메커니즘이 필요없게 한다.
인코더에 관한 특정한 실시예들에서, 방법은 코딩 엔티티를 위한 참조 팔레트 예측자로서, 코딩 엔티티의 픽셀들의 모든 블록들을 예측하는 데 사용되는 팔레트들로부터의 레이트 왜곡 기준을 최소화하는 팔레트를 선택하는 단계를 더 포함할 수 있다. 이후, 인코더는 비트스트림 내의 선택된 참조 팔레트 예측자를 디코더에 시그널링할 것이다. 이것은 최적 팔레트의 선택을 코딩 엔티티의 모든 팔레트들에 제공한다.
인코더에 관한 변형에서, 방법은 코딩 엔티티를 위한 참조 팔레트 예측자로서, 코딩 엔티티의 픽셀들의 가장 큰 블록을 예측하는 데 사용되는 팔레트를 선택하는 단계를 더 포함할 수 있다. 이후 인코더는 비트스트림 내의 선택된 참조 팔레트 예측자를 디코더에 시그널링할 것이다. 참조 팔레트 예측자의 이런 선택의 구현은 매우 단순하고, 이 구현은 낮은 복잡성을 갖는다.
본 발명의 또 다른 실시예들에서, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 현재 블록에 인접하는 픽셀들의 값들에 대응하는 엔트리들을 포함한다. 이것은 공간적으로 가까운 픽셀들 사이의 높은 픽셀 중복성을 이용하기 위한 것이다.
특정한 실시예들에서, 픽셀들의 현재 블록에 인접하는 픽셀들은 픽셀들의 현재 블록의 상측 및 좌측에 인접한 픽셀들로부터 선택된다. 이런 제공은 블록별 HEVC 코딩의 인과 효과(causal effect)가 주어지는, 인코더 및 디코더에서의 항상 이용 가능한 픽셀들에 대한 종속성을 유지하면서 상술한 장점을 증가시킨다. 사실상, 종래의 스캐닝 순서들은 현재 픽셀 블록들의 상측 및 좌측에 인접한 블록들이 이미 재구성되었다는 것을 의미한다.
특정한 특징에 따르면, 픽셀들의 현재 블록에 인접하는 픽셀들은 픽셀들의 인접한 현재 블록과 관련하여, 상부-좌측, 상부-우측 및 하부-좌측에 있는 픽셀들을 포함한다. 물론, 이들 3개의 특정한 픽셀들은 선택된 인접 픽셀들을 형성할 수 있다. 이들 픽셀들은 종래의 인트라 예측 모드에 사용되는 것들이다. 이들은 현재 픽셀 블록의 픽셀들에 대한 관련 정보에 작은 정보량을 제공한다.
다른 특정한 실시예들에서, 픽셀들의 미리 정의된 수는 팔레트 예측자의 엔트리들로서, 픽셀들의 현재 블록에 인접하는 픽셀들의 미리 결정된 세트로부터 선택되고, 선택된 픽셀들은 픽셀들의 미리 결정된 세트 내에서 이들 사이에 가장 큰 공간 거리를 갖는 것들이다. 이것은 다양성을 만들고, 이중 픽셀들을 방지한다.
또 다른 특정한 실시예들에서, 픽셀 클래스는 각각의 인접 픽셀과 연관되고, 인접 픽셀들은 팔레트 예측자의 더 낮은 엔트리 인덱스들을 더 빈번한 픽셀 클래스를 갖는 인접 픽셀들에 제공하기 위해, 픽셀들의 현재 블록에 인접하는 픽셀들의 미리 결정된 세트 내에서 그들의 연관된 클래스의 발생(occurrence) 횟수에 따라 정렬된다. 이것은 필요한 경우 팔레트 예측자를 인코딩할 때 코스트를 줄이기 위한 것이다. 주어진 픽셀과 연관되는 클래스들은, 예를 들어 미리 정의된 마진이 주어지는, 주어진 픽셀의 값 주위의 픽셀 값들에 의해 정의될 수 있음에 유의한다.
본 발명의 또 다른 실시예들에서, 현재 팔레트는 정렬된 엔트리들을 가지고, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 것은 동일한 현재 팔레트의 이전 에트리로부터 현재 팔레트의 엔트리를 예측하는 것을 포함한다. 다시 말하면, 팔레트의 주어진 엔트리를 처리할 때의 팔레트 예측자는 컬러 팔레트 내의 주어진 엔트리 이전에 있는 엔트리들로 만들어진다(포함한다). 이것은 컬러 팔레트의 인트라 예측과 유사하다.
특정한 실시예들에서, 현재 팔레트의 주어진 엔트리는 동일한 현재 팔레트 내의 주어진 엔트리에 바로 선행하는 엔트리로부터 예측된다. 이 제공은 이전 엔트리가 현재 엔트리를 예측하는 데 사용된다는 점에서 정보를 (디코더에) 송신할 필요가 더 이상 없기 때문에, 비트스트림에서 시그널링을 감소시킨다(따라서 코딩 코스트(coding cost)를 감소시킨다).
유사한 방식으로, 현재 팔레트의 모든 엔트리들은 제1 엔트리를 제외하고는, 동일한 현재 팔레트에서 이들에 바로 선행하는 엔트리로부터 예측될 수 있다. 이것은 또한 비트스트림에서 시그널링을 감소시킨다. 이것은 모든 엔트리들이 예측되고 이에 따라 어느 엔트리들이 예측되는지와 어느 엔트리들이 예측되지 않았는지를 식별할 필요가 더 이상 없기 때문에 가능하다.
팔레트 예측자를 획득하기 위한 상술한 다양한 실시예들은 전체 또는 일부가 결합될 수 있다. 그러한 결합을 고려할 때, 현재 팔레트를 예측하는 데 사용되는 팔레트 예측자는 이에 따라 다음 중 2개 이상을 결합한다:
픽셀들의 이전에 처리된 블록을 예측하는 데 사용되는 팔레트;
픽셀들의 현재 블록을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자; 
픽셀들의 현재 블록에 인접하는 픽셀들의 값들에 대응하는 엔트리들; 및 
현재 팔레트에서 예측될 현재 엔트리에 선행하는 현재 팔레트의 적어도 하나의 엔트리.
이제, 팔레트 예측자로부터 현재 팔레트의 예측을 참조하면, 여러 구현이 고려될 수 있다.
본 발명의 실시예들에서, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 것은 플래그들의 비트맵을 획득하는 것을 포함하며, 플래그들 각각은 팔레트 예측자 내의 대응하는 엔트리가 현재 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다. 이 구성은 팔레트 예측자로부터 실제 예측을 정의하기 위해 낮은(메모리 및 코딩) 코스트를 갖는다. 코스트는 비트맵을 제한한다.
특정한 실시예들에서, 플래그들 비트맵은 팔레트 예측자 내의 엔트리들의 수와 동일한 수의 비트들을 포함하고, 비트맵 내의 한 위치에서 각각의 비트는 팔레트 예측자 내의 대응하는 위치를 갖는 엔트리가 현재 팔레트의 엔트리로 선택되는지 아닌지를 정의한다. 이 구성은 코딩 효율을 향상시킨다. 비트맵의 크기를 더 감소시킬 수 있는 변형은 현재 팔레트의 엔트리로서 선택되는 최종 엔트리에서 비트맵을 중단한다고 고려할 수 있다. 이것은 위에 제안된 바와 같이, 팔레트 예측자 내의 엔트리들이 이들의 발생에 따라 정렬되기 때문에 특히 유리하다. 일부 실시예들에서, 이것은 팔레트 예측자의 최종 엔트리들이 현재 팔레트에 통계적으로 흔히 사용되지 않게 되는 결과를 초래한다.
다른 특정한 실시예들, 방법은 팔레트 예측자로부터의 선택된 엔트리들을 갖는 현재 팔레트의 끝에 추가 엔트리들을 추가하는 단계를 더 포함할 수 있다. 이러한 추가 엔트리들은 (디코딩 루프를 이용하는 디코더 및 인코더 양측에서) 디코딩된 추가 픽셀들을 위한 엔트리들이고, 예를 들어 인코더에 의해 구축되고 (종래의 팔레트 코딩 모드에서와 같이) 디코더에 전송된(비트스트림으로) 미리 결정된 팔레트로부터의 엔트리들일 수 있다. 이런 제공은 현재 팔레트의 코딩 효율을 증가시키기 위한 것이다.
본 발명의 다른 실시예들에서, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계는, 현재 팔레트의 적어도 하나의 대응하는 엔트리와 팔레트 예측자의 엔트리 간의 차이에 대응하는 적어도 하나(아마도 2개 이상)의 엔트리 잔차를 획득하는 단계를 포함한다. 이것은 팔레트 예측으로부터의 잔차들이 디코더에 송신될 필요가 있다는 것을 의미한다. 이 구성은 (예측자에서 현재 팔레트로의 엔트리들의 복사에 기초하는) 이전 실시예들과 비교하여 더 미세한 팔레트를 획득하는 것을 가능하게 한다.
특정한 실시예들에서, 현재 팔레트 및 팔레트 예측자는 각각의 정렬된 엔트리들을 가지고, 각각의 엔트리 잔차는 현재 팔레트의 엔트리와, 동일 엔트리 인덱스를 갖는 팔레트 예측자의 엔트리 간의 차이에 해당한다. 이런 제공은, 예측자의 엔트리가 현재 엔트리를 예측하는 데 사용되는 정보를 (디코더에) 송신할 필요가 더 이상 없기 때문에 비트스트림에서 시그널링을 감소시킨다(따라서, 코딩 코스트를 감소시킨다).
유사한 방식으로, 잔차는 팔레트 예측자에서 동일 엔트리 인덱스를 가진 대응하는 엔트리를 갖는 현재 팔레트의 모든 엔트리를 위해 획득될 수 있다. 이것은 또한, 어느 엔트리들이 예측이 필요한지와 예측이 필요하지 않은지를 식별하는 데 더 이상 추가로 필요하지 않기 때문에 비트스트림에서 시그널링을 감소시킨다.
엔트리들의 복사 또는 잔차들에 기초한 모든 예측들이 상술한 방법들 중 어느 하나를 이용하여 획득되는 팔레트 예측자들 함께 사용될 수 있다는 점에 유의한다. 현재 팔레트가 인트라 예측되는 경우가 예외적으로 있으며, 이 경우 잔차 접근법만이 사용될 수 있다(그렇지 않으면, 2개의 엔트리는 팔레트에서 동일할 것이다).
일부 실시예들에서, 현재 팔레트의 엔트리들의 픽셀 값들은 컬러 컴포넌트들을 가지고, 컬러 컴포넌트들의 서브파트(subpart)만이 팔레트 예측자를 이용하여 예측된다. 실제로, 3개 중에서 하나 또는 두 개의 컬러 컴포넌트가 예측될 수 있다. 이런 제공은 비트스트림에서 처리 및 시그널링을 감소시킨다.
본 발명의 다른 양태는 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스와 관련되며, 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하고, 디바이스는 위에 정의된 처리 방법의 임의의 실시예를 구현하도록 구성된다.
본 발명의 또 다른 양태는 프로그램을 저장한 비일시적 컴퓨터-판독 가능 매체로서, 프로그램이 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스 내의 마이크로프로세서 또는 컴퓨터 시스템에 의해 실행될 때 - 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용함 -, 디바이스로 하여금 2개 이상의 팔레트의 엔트리들로부터 현재 팔레트를 예측하는 단계를 수행하게 하며, 2개 이상의 팔레트는 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트이다.
비일시적 컴퓨터 판독 가능 매체는 방법 및 디바이스와 관련하여 위에 기재되고 이하에 기재되는 것들과 유사한, 특히 팔레트 예측 모드의 코딩 효율을 향상시키는 것과 유사한 특징들 및 장점들을 가질 수 있다.
본 발명의 또 다른 양태는 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 방법과 관련되고, 팔레트 코딩 모드는 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하기 위해 현재 팔레트를 이용하고, 현재 팔레트는, 실질적으로 본 명세서에서 첨부 도면의 도 13, 14, 15, 17, 19, 21 또는 22를 참고하여 기재되고 이에 도시된 바와 같이, 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함한다.
본 발명의 또 다른 양태에서는, 팔레트 모드에 따라 이미지의 픽셀들의 현재 블록을 인코딩 또는 디코딩하는 방법이 제공되고, 팔레트 모드는 현재 블록의 픽셀들의 적어도 하나의 컴포넌트를 나타내기 위한 값들의 세트를 포함하는 컬러 팔레트를 이용하고, 방법은 컬러 팔레트 예측자를 획득하는 단계, 및 컬러 팔레트 예측자를 이용하여 현재 블록의 컬러 팔레트를 예측하는 단계를 포함한다.
바람직하게, 상기 이미지의 블록들은 미리 정의된 스캐닝 순서에 따라 정렬되고, 컬러 팔레트 예측자는 이미지의 주어진 인과 영역(causal area)에서 팔레트 모드에 따라 인코딩된 최종 블록의 컬러 팔레트로부터 결정된다.
실시예에서, 현재 컬러 팔레트의 값들은 컬러 팔레트 예측자에 포함되는 값들로부터 예측된다. 컬러 팔레트들의 값들은 정렬될 수 있으며, 현재 컬러 팔레트의 값은 상기 값이 컬러 팔레트 예측자에서 동일 순서를 갖는 값으로부터 예측되는지를 나타내는 플래그와 연관될 수 있다. 실시예에서, 주어진 인과 영역은 픽셀들의 현재 블록을 포함하는 인코딩 엔티티의 이미 재구성된 부분이다.
실시예에서 컬러 팔레트들의 값들은 정렬되고, 현재 팔레트의 값은 상기 값이 컬러 팔레트 예측자에서 주어진 순서를 갖는 값으로부터 예측되는지를 나타내는 플래그와 연관된다.
실시예들에서, 컬러 팔레트 예측자는 이미지의 각각의 인코딩 엔티티와 연관된다. 컬러 팔레트 예측자는 현재 블록에 인접하는 픽셀들로부터 획득될 수 있다.
본 발명의 하나의 추가 양태에서는 팔레트 모드에 따라 이미지의 현재 블록을 인코딩 또는 디코딩하는 방법이 제공되며, 팔레트 모드는 현재 블록의 픽셀들의 적어도 하나의 컴포넌트를 나타내기 위한 값들의 세트를 포함하는 컬러 팔레트를 이용하고, 방법은 컬러 팔레트 예측자를 획득하는 단계, 및 컬러 팔레트 예측자를 이용하여 현재 블록의 컬러 팔레트를 예측하는 단계를 포함하고, 컬러 팔레트 예측자를 이용하여 현재 블록의 컬러 팔레트를 예측하는 단계는 플래그들의 비트맵을 획득하는 단계를 포함하고, 플래그들 각각은 컬러 팔레트 예측자 내의 대응하는 엔트리가 현재 블록의 컬러 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다.
플래그들의 비트맵은 컬러 팔레트 예측자 내의 엔트리들의 수와 동일한 수의 비트들을 포함하고, 비트맵 내의 한 위치에서 각각의 비트는 컬러 팔레트 예측자 내의 대응하는 위치를 갖는 엔트리가 현재 블록의 컬러 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다.
일 실시예에서, 방법은 컬러 팔레트 예측자로부터의 선택된 엔트리들을 갖는 현재 블록의 컬러 팔레트의 끝에 추가 엔트리들을 추가하는 단계를 더 포함한다.
본 발명의 또 다른 양태에서는 팔레트 모드에 따라 이미지의 픽셀들의 현재 블록을 인코딩 또는 디코딩하는 방법이 제공되며, 팔레트 모드는 현재 블록의 픽셀들의 적어도 하나의 컴포넌트를 나타내기 위한 값들의 세트를 포함하는 컬러 팔레트를 이용하고, 방법은 컬러 팔레트 예측자를 획득하는 단계, 및 컬러 팔레트 예측자를 이용하여 현재 블록의 컬러 팔레트를 예측하는 단계를 포함하고, 이미지의 픽셀들의 블록들은 스캐닝 순서에 따라 처리되고, 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따라 이전에 처리된 픽셀들의 블록들을 예측하는 데 사용된 팔레트들의 세트로부터 선택되고, 픽셀들의 이전에 처리된 블록들에 사용된 팔레트들의 상기 세트는 픽셀들의 현재 블록이 픽셀들의 블록을 각각 포함하는 코딩 엔티티들의 새로운 라인을 시작할 때 리셋된다. 바람직하게, 팔레트들의 세트는 바이-디폴트 팔레트로 리셋된다.
본 발명에 따르면, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 방법이 더 제공되고, 팔레트 코딩 모드는 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하기 위해 현재 팔레트를 이용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하고, 방법은 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계를 포함한다.
실시예에서, 이미지의 픽셀들의 블록들은 미리 정의된 스캐닝 순서에 따라 처리되고; 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따라 이전에 처리된 픽셀들의 블록들을 예측하는 데 사용된 팔레트들의 세트로부터 선택된다. 바람직하게, 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드를 이용하여 처리된 픽셀들의 최종 블록에 사용된 팔레트이다. 픽셀들의 현재 블록에 대한 팔레트 예측자는 팔레트 코딩 모드에 따라 이전에 처리된 픽섹들의 블록들에 사용된 팔레트들의 세트로부터 선택될 수 있고, 픽셀들의 현재 블록에 인접한다.
픽셀들의 이전에 처리된 블록들에 사용된 팔레트들의 세트는 바람직하게 픽셀들의 현재 블록이 픽셀들의 블록들로 이루어진 새로운 코딩 엔티티를 시작하거나 코딩 엔티티들의 새로운 라인을 시작할 때 리셋되고, 코딩 엔티티들 각각은 픽셀들의 블록들로 만들어진다. 팔레트들의 세트는 널 세트(null set) 또는 바이-디폴트 팔레트로 리셋된다. 바이-디폴트 팔레트는 색 공간을 통해 균등하게 분포되는 픽셀 값들에 대응하는 미리 결정된 엔트리들의 세트를 포함한다.
실시예에서, 참조 팔레트 예측자들은 이미지를 형성하는 픽셀들의 블록들의 각각의 코딩 엔티티들과 연관되고, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 현재 블록을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자이다. 코딩 엔티티와 연관되는 참조 팔레트 예측자는 코딩 엔티티를 구성하는 픽셀들의 각각의 블록에 대한 팔레트 예측자로서 이용된다. 참조 팔레트 예측자들은 바람직하게 이미지를 코딩하는 비트스트림에 삽입된다. 방법은 코딩 엔티티를 위한 참조 팔레트 예측자로서, 코딩 엔티티의 픽셀들의 가장 큰 블록을 예측하는 데 사용된 팔레트를 선택하는 단계를 더 포함할 수 있다. 실시예에서, 방법은 코딩 엔티티를 위한 참조 팔레트 예측자로서, 코딩 엔티티의 픽셀들의 블록들 모두를 예측하는 데 사용되는 팔레트로부터 레이트 왜곡 기준을 최소화하는 팔레트를 선택하는 단계를 더 포함한다.
실시예에서, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 현재 블록에 인접하는 픽셀들의 값들에 대응하는 엔트리들을 포함한다. 픽셀들의 현재 블록에 인접하는 픽셀들은 픽셀들의 현재 블록의 상측 및 좌측에 인접한 픽셀들로부터 선택될 수 있다. 픽셀들의 현재 블록에 인접하는 픽셀들은 픽셀들의 인접한 현재 블록과 관련된, 상부 좌측, 상부 우측 및 하부-좌측에 있는 픽셀들을 포함할 수 있다. 실시예에서, 픽셀 클래스는 각각의 인접 픽셀과 연관되고, 인접 픽셀들은 팔레트 예측자의 더 낮은 엔트리 인덱스들을 더 빈번한 픽셀 클래스를 갖는 인접 픽셀들에 제공하기 위해, 픽셀들의 현재 블록에 인접하는 픽셀들의 미리 결정된 세트 내에서 그들의 연관된 클래스의 발생 횟수에 따라 정렬된다. 바람직하게, 픽셀들의 미리 정의된 수는 픽셀들의 현재 블록에 인접하는 픽셀들의 미리 결정된 세트로부터 팔레트 예측자의 엔트리들로서 선택되고, 선택된 픽셀들은 픽셀들의 미리 결정된 세트 내에서 이들 사이에 가장 큰 공간 거리를 갖는 것들이다.
실시예에서, 현재 팔레트는 정렬된 엔트리들을 가지고, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계는 동일한 현재 팔레트의 이전 엔트리로부터 현재 팔레트의 엔트리를 예측하는 단계를 포함한다. 현재 팔레트의 주어진 엔트리는 동일한 현재 팔레트 내의 주어진 엔트리에 바로 선행하는 엔트리로부터 예측될 수 있다. 현재 팔레트의 모든 엔트리들은 제1 엔트리를 제외하고, 동일한 현재 팔레트 내의 엔트리들에 바로 선행하는 엔트리로부터 예측될 수 있다.
실시예에서, 현재 팔레트를 예측하는 데 사용되는 팔레트 예측자는 다음 중 2개 이상을 결합한다: 픽셀들의 이전에 처리된 블록을 예측하는 데 사용되는 팔레트; 픽셀들의 현재 블록을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자; 픽셀들의 현재 블록에 인접하는 픽셀들의 값들에 대응하는 엔트리들; 및 현재 팔레트에서 예측될 현재 엔트리에 선행하는 현재 팔레트의 적어도 하나의 엔트리.
실시예에서, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계는 플래그들의 비트맵을 획득하는 단계를 포함하고, 플래그들 각각은 팔레트 예측자 내의 대응하는 엔트리가 현재 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다. 플래그들의 비트맵은 팔레트 예측자 내의 엔트리들의 수와 동일한 수의 비트들을 포함할 수 있고, 비트맵 내의 한 위치에서 각각의 비트는 팔레트 예측자 내의 대응하는 위치를 갖는 엔트리가 현재 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다. 추가 실시예에서, 방법은 팔레트 예측자로부터의 선택된 엔트리들을 갖는 현재 팔레트의 끝에 추가 엔트리들을 추가하는 단계를 포함한다.
실시예에서, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 단계는, 현재 팔레트의 적어도 하나의 대응하는 엔트리와 팔레트 예측자의 엔트리 간의 차이에 대응하는 적어도 하나의 엔트리 잔차를 획득하는 단계를 포함한다. 현재 팔레트 및 팔레트 예측자는 각각의 정렬된 엔트리들을 가질 수 있고, 각각의 엔트리 잔차는 현재 팔레트의 엔트리와 동일한 엔트리 인덱스를 갖는 팔레트 예측자의 엔트리 간의 차이에 해당한다. 잔차는 바람직하게, 팔레트 예측자에서 동일 엔트리 인덱스를 가진 대응하는 엔트리를 갖는 현재 팔레트의 모든 엔트리에 대해 획득될 수 있다.
실시예에서, 현재 팔레트의 엔트리들의 픽셀 값들은 컬러 컴포넌트들을 가지고, 컬러 컴포넌트들의 서브파트만이 팔레트 예측자를 이용하여 예측된다.
본 발명의 하나 이상의 양태에서는, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스가 제공되며, 팔레트 코딩 모드는 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하기 위해 현재 팔레트를 이용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들에 연관시키는 엔트리들의 세트를 포함하고, 디바이스는 팔레트 예측자를 이용하여 현재 팔레트를 예측하도록 구성되는 예측 모듈을 포함한다.
본 발명의 추가 양태에서는, 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스가 제공되며, 팔레트 코딩 모드는 픽셀들의 현재 블록을 예측하기 위한 인덱스들의 예측자 블록을 구축하기 위해 현재 팔레트를 이용하고, 현재 팔레트는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들에 연관시키는 엔트리들의 세트를 포함하고, 디바이스는 추가로 제공된 방법 및 전술한 실시예들 중 어느 하나에 따르는 처리 방법을 구현하도록 구성된다.
본 발명에 따르는 방법들 중 적어도 일부는 컴퓨터로 구현될 수 있다. 따라서, 본 발명은 모두가 일반적으로 "회로", "모듈" 또는 "시스템"으로서 본 명세서에서 불리는, 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 띨 수 있다. 또한, 본 발명은 컴퓨터 이용가능 프로그램 코드가 매체 내에 구현되는 표현의 임의의 유형의 매체로 구현되는 컴퓨터 프로그램 제품의 형태를 띨 수도 있다.
본 발명이 소프트웨어로 구현될 수 있으므로, 본 발명은 임의의 적절한 반송파 매체상의 프로그래머블 장치에 제공하기 위한 컴퓨터 판독가능 코드로서 구현될 수 있다. 유형의 반송파 매체는, 예를 들어 플로피 디스크, CD-ROM, 하드 디스크 드라이브, 자기 테이프 디바이스 또는 솔리드 스테이트 메모리 디바이스 등과 같은 저장 매체를 포함할 수 있다. 일시적 반송파 매체는, 예를 들어 전기 신호, 전자 신호, 광학 신호, 음향 신호, 자기 신호, 또는 마이크로웨이브 또는 RF 신호와 같은 전자파 신호와 같은 신호를 포함할 수 있다.
본 발명의 실시예들은 이하 다음의 도면을 참고로 하여 단지 예로서 설명될 것이다.
도 1은 HEVC 인코더 아키텍처를 예시한다.
도 2는 HEVC 디코더 아키텍처를 예시한다.
도 3은 인과 영역의 개념을 예시한다.
도 4는 HEVC RExt에 의해 지원되는 크로마 포맷들을 예시한다.
도 5는 코딩 유닛들로 분할되는 코딩 트리 블록과 이들 코딩 유닛의 스캔 순서 디코딩을 예시한다.
도 6은 HEVC에서 신택스 요소(syntax element)의 골롬 기반 바이너리 코딩(Golomb based binary coding)을 예시한다.
도 7은 HEVC의 레인지 확장에서 조사 중에 있는 디코더 측에서의 팔레트 모드 예측의 원리를 예시한다.
도 8은 코딩 유닛의 예를, 레벨들의 그 대응하는 블록 및 연관된 팔레트로 예시한다.
도 9는 레벨들의 동일 블록과 레벨들의 이런 블록의 인코딩에 사용되는 신택스 요소들의 세트를 예시한다.
도 10은 팔레트 모드에 관한 신택스 요소들의 디코딩 프로세스를 예시한다.
도 11은 디코딩 측에서 레벨들의 블록을 구축하기 위한 재구성 프로세스를 예시한다.
도 12은 인코더에서의 예시적 팔레트 결정 알고리즘을 예시한다.
도 13은 팔레트 모드를 위한 인코더에서의 Pred 모드, 레벨(Level) 및 런(Run) 신택스 요소들의 선택을 예시한다.
도 14는 팔레트 예측을 이용하는 원리를 예시한다.
도 14a는 로우(row)들에 배열된 여러 CTB들을 가진 프레임을 도시한다.
도 15는 본 발명의 실시예들에 따르는 비트스트림으로 전송된 참조 팔레트 예측자들에 기초하는 디코딩 프로세스를 예시한다.
도 16은 본 발명의 실시예들에서 예측자들로서 이용되는 인접 픽셀들을 가진 현재 코딩 유닛을 예시한다.
도 17은 본 발명의 실시예들에 따르는 인접한 픽셀들에 기초하는, 현재 코딩 유닛에 대한 팔레트 예측자의 생성을 예시한다.
도 18은 본 발명의 실시예들에 따르는 팔레트 예측자의 구축의 예를 예시한다.
도 19는 본 발명의 실시예들에 따르는, 플래그들의 비트맵에 기초하는 팔레트 신택스의 디코딩을 예시한다.
도 20은 일례에서 도 19의 프로세스를 예시한다.
도 21은 본 발명의 실시예들에 따르는, 팔레트 요소들과 요소 예측자들 사이의 잔차들을 갖는 것에 기초하는 디코딩 프로세스를 예시한다.
도 22는 본 발명의 실시예들에 따르는 팔레트의 인트라 예측을 예시한다.
도 23은 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략적인 블록도이다.
도 24는 본 발명의 일부 실시예들에 따르는, 이미 존재하는 2개 이상의 팔레트로부터 팔레트 예측자를 구축하는 일반적 단계들을 예시하는 흐름도이다.
도 25은 도 24의 접근법의 예시적 구현을 예시한다.
도 26은 도 24의 프로세스의 구현을 예시한다.
도 27은 팔레트가 팔레트 예측자로부터 어떻게 예측될 수 있는지를 정의하는 플래그들의 비트맵들을 위한 수정된 신택스를 도시하고, 비트맵의 수정된 신택스를 디코딩하기 위한 단계들을 예시하는 흐름도를 포함한다.
도 1은 HEVC 인코더 아키텍처를 예시한다. 비디오 인코더에서, 최초 시퀀스(101)는 픽셀들의 블록들로 분할된다(102). 코딩 모드는 이후 각각의 블록에 할당된다. 전형적으로 HEVC에 사용되는 코딩 모드들에는 2개의 패밀리가 있다: 공간 예측에 기초하는 모드들 또는 인트라 모드들(103), 및 시간 예측에 기초하는 모드들 또는 움직임 추정(104) 및 움직임 보상(105)에 기초하는 인터 모드들. 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 112016064058048-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 112016064058048-pct00002
이 공식에서, 순서의 최대값은 7이다. 더욱이, 변환 블록의 서브-블록에 대한 coeff_abs_level_remaining의 제1 코딩에서는, 골롬 순서가
Figure 112016064058048-pct00003
와 동일하게 설정되고, 여기서, 
- 변수 "transform_skip_flag"는 변환(예를 들어, DCT(107 또는 204))이 현재 코딩 유닛에 대해 스킵되는 경우 1로 설정되고, 변환이 사용되는 경우 0으로 설정되며,
- 변수 "cu_transquant_bypass_flag"는 코딩 유닛이 손실 없이 인코딩되는 경우 1로 설정되고 그렇지 않으면 0으로 설정되고,
- 변수 "cRiceOrder"는 변환 블록의 다른 서브-블록으로부터의 최종 사용된 순서와 동일하게 설정되고, 그렇지 않으면 0으로 설정된다.
HEVC RExt를 위한 추가 툴은 자연적 시퀀스들뿐만 아니라 "스크린 콘텐츠(screen content)" 비디오 시퀀스들을 효율적으로 인코딩하도록 현재 설계되고 있다. "스크린 콘텐츠" 비디오 시퀀스들은, 예를 들어 텍스트, 파워포인트 표현, 그래픽 사용자 인터페이스, 테이블들(예를 들어, 스크린 샷들)을 포함하는, 임의의 다른 디바이스의 개인용 컴퓨터로부터 캡처되는 것들에 대응하는 매우 특정한 콘텐츠를 갖는 특정한 비디오 시퀀스들을 지칭한다. 이러한 특정 비디오 시퀀스들은 자연적 비디오 시퀀스들에 비해 아주 상이한 통계치들을 갖는다. 비디오 코딩에서, 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)와 동일한지 아닌지를 체크하기 위한 테스트가 수행된다. 이것이 단계 1005에서 팔레트 크기와 상이한 경우, 하나의 팔레트 요소는 비트스트림(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을 통해 전술한 바와 같이 코딩 유닛의 재구성 프로세스로 진행할 수 있다.
도 10의 이런 실시예의 사소한 변형에서, "Pred mode" 요소는 레벨들의 블록(91)의 상부에 있는 픽셀들의 제1 라인에 제공되지 않는다. 이것은, 이러한 픽셀들이 상기 라인에서 레벨들을 허용하지 않음으로 인해, "위로 복사" 모드가 실행될 수 없기 때문이다. 따라서, j가 단계 1009에서 블록 폭보다 작게 되는 한, "Pred mode" 요소는 제공되지 않고, 단계들(1010-1011)은 쇼트커트 되고, 이에 따라 단계 1012를 직접 수행한다. 이런 사소한 변형이 레벨들의 인코딩된 블록의 크기를 감소시킨다는 점에 유의한다.
도 10의 상기 실시예 또는 그 사소한 변형과 결합될 수 있는 실시예에서, 레벨들의 여러 블록은 단지 하나 대신에 생성될 수 있다. 이것은 여러 레벨이 픽셀들의 모두 또는 일부를 위해 사용된다는 것을 의미한다. 예를 들어, 레벨들의 제1 블록은 제1 컬러 컴포넌트(예를 들어, Y)를 위해 구축될 수 있는 반면, 레벨들의 다른 블록이 적어도 하나의 나머지 컴포넌트(예를 들어, U 및 V)를 위해 구축될 수 있다. 물론, 3개의 컬러 컴포넌트에 대한 레벨들의 3개의 블록이 고려될 수 있다. 레벨의 여러 블록 및 이들과 컬러 컴포넌트들의 대응관계를 갖기 위한 선택은 특정한 플래그들을 이용하여 비트스트림으로 시그널링될 수 있다. 변형에서, 이것은 이미지의 컬러 포맷에 의해 암시될 수 있다.
도 10의 프로세스는 도 7의 팔레트 모드 예측 프로세스와 관련하여 상술했으며, 여기서 잔차는 코딩 유닛 예측자에 추가되기 전에 단계들(711 및 712)에서 인코딩되어, 추출 및 디코딩된다.
도 7에 설명된 팔레트 모드 예측 프로세스의 변형에서는, 잔차가 제공되지 않을 수 있다(즉, 인코딩 측에서 인코딩된다). 그 결과 도 7에서는 단계들(711, 712 및 713)이 허용되지 않고, 재구성된 코딩 유닛(714)은 코딩 유닛 예측자(710)와 동일하다.
그러나, 팔레트의 레벨들에 의해 부적절하게 기술되는 코딩 유닛의 픽셀들이 여전히 존재할 수 있으며, 이것은 대응하는 관련 레벨이 팔레트에서 발견되지 않았다는 것을 의미한다. 이들 픽셀은 대응하는 값이 레벨들의 블록에 설정되지 않기 때문에, "이스케이프(escape) 픽셀들로 지칭된다.
레벨들의 블록을 위해 도 10의 프로세스 동안 구축된 신택스 요소들은 그러므로, 이들 "이스케이프" 픽셀들을 위해, 최초 코딩 유닛으로부터의 명시적 픽셀 값들로 보충될 수 있다. 명시적 픽셀 값들은 비트스트림으로 시그널링되고 전송될 수 있다.
픽셀들을 시그널링하는 예는, 픽셀이 팔레트 코딩되었는지(따라서, 단계 1010을 거쳤는지) 또는 이스케이프-코딩되었는지(따라서, 명시적 픽셀 값을 가졌는지)를 나타내는 "Pred mode" 요소 전에(즉, 단계 1010 이전에) "이스케이스" 플래그를 추가하는 것이다. "이스케이프" 플래그는 명시적 픽셀 값에 선행한다("Pred mode", "Level" 및 "Run" 요소들이 이 픽셀에 제공되지 않는다).
"이스케이프" 플래그에 대한 변형에서, 특정한 레벨 값("이스케이프" 픽셀들에 전용이며 단계 1012에서 획득됨)은 "이스케이프" 픽셀을 시그널링하는 데 사용될 수 있다. 이 경우에, "Run" 요소는 명시적 픽셀 값이어야 한다. 이런 특정한 값은 구축 중인 팔레트가 그 최대값에 도달할 때만 일어날 수 있고, 그로 인해 각각의 팔레트 크기에 대한 이스케이프 값들을 시그널링하는 코스트를 절약할 수 있다.
임의의 실시예에서, 명시적 픽셀 값들은 예측 가능하게(예를 들어, 인접 픽셀 값과의 차이로서) 코딩되거나 코딩되지 않을 수 있고, 엔트로피 코딩을 위한 가능한 결과들(비트들의 콘텍스트 및 수 등등)로 양자화되거나 되지 않을 수 있다.
팔레트들을 다시 참조하면, 상기 예에서 3개의 값으로 구성되는 각각의 팔레트 요소는 일반적으로 3개의 이진 코드들을 이용하여 인코딩된다. 이진 코드들의 길이는 각각의 컬러 컴포넌트의 비트 심도에 대응한다. 팔레트 크기는 전형적으로 단항 코드를 이용하여 인코딩된다. "Pred mode" 요소는 1비트(있다면 "이스케이프" 플래그와 더불어)를 이용하여 인코딩된다. "Level" 요소는 b와 동일한 이진 코드 길이를 갖는 이진 코드를 이용하여 인코딩되고, 여기서 2b는 팔레트 크기와 동일하거나 이보다 큰 가장 작은 정수이다. "Run" 요소는 도 6과 관련하여 상술한 Golomb_H(Order=3)을 이용하여 인코딩된다.
도 11은 레벨들의 블록(91)을 구축하고 이후 예측자로서 이용되어야 하는 색 공간 내의 블록 예측자를 구축하기 위한 재구성 프로세스를 예시한다. 이 프로세스의 입력 데이터는 상기 도 10의 프로세스를 이용하여 획득된 테이블들이고, "Pred mode", "Level" 및 "Run"의 리스트를 포함한다. 본 기술분야의 통상의 기술자가 "이스케이프" 픽셀들의 존재에 의존하는 실시예들에 대한 이하의 교시에 적응할 수 있음에 유의한다.
"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 112016064058048-pct00004
Figure 112016064058048-pct00005
여기서,
Figure 112016064058048-pct00006
는 컬러 값들을 저장하기 위한 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에서 고려된다. 현재 "좌측 값" Run의 픽셀 값과 다른 제1 픽셀 값이 검출되었다는 것을 의미하는, "j"가 "istart"보다 확실히 큰 경우, 현재 "좌측 값" 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[]의 콘텐츠에 기초하여 레벨들의 블록의 대응하는 신택스를 인코딩할 수 있다.
상술한 바와 같이, HEVC RExt에서 현재 설계된 팔레트 모드는 팔레트가 각각의 코딩 유닛에 대해 전송되도록 요구한다. 이것은 다량의 데이터를 비트스트림으로 표현하고, 따라서 코딩 코스트를 나타낸다. 발명자들은 팔레트 모드의 코딩 효율을 향상시키기 위해 팔레트 모드의 향상을 상정했다.
본 발명의 일 양태에 따르면, 현재 코딩 유닛에 대한 현재 팔레트는 팔레트 예측자를 이용하여 예측된다. 본 발명에 관한 변형에서, 현재 팔레트는 2개 이상의 팔레트의 엔트리들로부터 예측되고, 2개 이상의 팔레트들은, 예를 들어 2개 이상의 팔레트로부터 구축된 팔레트 예측자를 이용하여 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트들이다. 이것은 코딩 유닛과 연관되는 각각의 팔레트를 위해 전송될 정보량을 감소시키는 것을 가능하게 한다. 다양한 실시예들이 후술된다.
본 발명의 접근법이 예측-기반이기 때문에, 현재 코딩 유닛에 대한 예측자의 획득은 도 14 내지 18, 22 및 24 내지 26을 참고하여 먼저 설명되었고, 이후 디코더에 대한 예측을 기술하기 위한 신택스 요소들은 도 19 내지 22 및 27을 참고하여 설명되었다.
본 발명을 구현하는 디코딩 프로세스의 일반적 단계들은 상술한 도 7을 기초로 하는 도 14에 도시된다. 본 기술분야의 통상의 기술자는 비트스트림을 적절히 구축하기 위해 인코더에서의 대응하는 동작을 직접 이해할 것이다. 도 14에서의 블록들 14xx는 도 7에서의 블록들 7xx와 유사하다. 도시된 바와 같이, 본 발명의 주 아이디어는 단계 1406에서 구현되고, 이 단계에서 팔레트는 비트스트림으로부터 완전히 디코딩되는 것이 아니라 팔레트 예측자(1416)로부터 적어도 부분적으로 예측된다. 팔레트 예측자를 획득(1415)하기 위한 여러 방식은,
픽셀들의 이전에 처리된 블록 또는 코딩 유닛을 예측하는 데 사용된 팔레트; 
현재 코딩 유닛을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자;
현재 코딩 유닛에 인접하는 픽셀들의 값들에 대응하는 엔트리들; 및
현재 팔레트에서 예측될 현재 엔트리에 선행하는 현재 팔레트의 적어도 하나의 엔트리
를 획득하는 것을 포함하는 것으로 후술된다.
팔레트 예측자를 획득하기 위한 제1 실시예들에 따르면, 이미지의 픽셀들의 블록들은 도 5를 참고하여 상술한 바와 같이 미리 정의된 스캐닝 순서에 따라 처리되고, 여기서 CTB의 CU들은 스캔 순서에 따라 코딩/디코딩된다. 픽셀들의 현재 블록에 대한 팔레트 예측자는 이후 픽셀들의 이전에 처리된 블록들을 예측하는 데 사용되는 팔레트들의 세트로부터 선택된다. 바람직하게, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 최종 처리된 블록에 사용되는 팔레트이다. 이것은 최종 사용된 디코딩 팔레트(최종 처리된 코딩 유닛에 대한)를 메모리에 저장함으로써 구현될 수 있다. 물론 이미 사용된 팔레트들 중에서의 다른 팔레트는 팔레트 예측자로서 선택될 수 있고, 이 경우에 그런 선택된 팔레트의 식별자는 디코더에 제공되여야 한다.
사용되는 스캔 순서에 따르면, 일반적으로, 최종 사용된 팔레트, 결국 팔레트 예측자가 현재 코딩 유닛에 인접하는 이전에 처리된 코딩 유닛들에 사용되는 팔레트들 중 하나인 것으로 관찰된다. 이것은 코딩 유닛들 사이에 높은 중복성이 효율적 코딩을 획득하기 위해 고려된다는 것을 보장한다. 예를 들어, 도 5에 기초하여, 팔레트 예측자는 좌측 또는 상부 코딩 유닛들(15, 17, 12 및 13)을 처리하는 데 사용되는 팔레트들 중 하나일 수 있다.
현재 코딩 유닛의 실제 콘텐츠로부터 멀리 떨어진 콘텐츠를 갖는 팔레트 예측자에 기인한 열악한 팔레트 예측을 회피하기 위해, 특정 실시예는 최종 사용된 팔레트(또는 이전에 사용된 팔레트들의 세트)의 리셋을 제공한다. 그런 리셋은 각각의 새로운 CTB에서(즉, 현재 코딩 유닛이 픽셀들의 블록들로 이루어진 새로운 코딩 엔티티를 시작할 때), 또는 위에 소개한 바와 같은 CTB들의 각각의 새로운 라인 또는 로우에서, 또는 심지어 각각의 새로운 프레임에서 발생할 수 있다.
그런 리셋은 또한 인코더 또는 디코더가 각각의 CTB(또는 CTB들의 로우 또는 프레임)에 대한 팔레트 모드를 동시에 추정하게 하는 것을 가능하게 한다. 그러나, 일부 상관이 종종 2개의 CTB의 코딩 유닛들 사이에 존재하기 때문에, 리셋은 바람직하게 CTB들의 각각의 새로운 로우에 대해 수행된다. 이것은 여러 CTB(각각이 정사각형으로 표현됨)를 갖는 프레임을 도시하는 도 14a를 이용하여 예시된다. 굵은 라인들 좌측에 있는 CTB들은 이들 각각이 CTB들의 새로운 라인을 시작하기 때문에 최종 사용된 팔레트가 리셋되는 CTB들이다.
한 라인의 제1 CTB에서의 리셋은 프레임 레벨에서의 리셋보다 더 효율적인 접근법이다. 이것은 CTB들이 수평 래스터 스캔 순서로 인코딩되고, 이에 따라 한 라인의 CTB들 중 제1 CTB에서, 최종 사용된 팔레트가 공간적으로 먼 CTB(CTB 라인 바로 위의 최종 CTB)로부터 잠재적으로 예측되기 때문에 가능하다. CTB들 사이에 공간적 거리가 주어지면, 그들 간의 상관은 매우 낮고, 따라서 그들 각각의 팔레트들 사이의 종속성(예측)은 가치가 없다.
최종 사용된 팔레트의 리셋은 팔레트가 현재 팔레트의 예측을 가능하게 하는 팔레트 예측자로서 이용 가능하지 않다는 것을 의미할 수 있다. 그러한 경우에, 현재의 팔레트, 예를 들어 해당 라인의 제1 CTB에서 처리되는 바로 그 제1 코딩 유닛의 팔레트는 예측될 수 없다. 이 리셋은 Previous_Palette_size 변수(최종 사용된 팔레트의 크기를 저장함)를 0으로 설정하여 수행될 수 있다.
게다가, 최종 사용된 팔레트의 리셋은 또한 어떤 값도 예측될 수 없기 때문에 실질적인 방식으로 팔레트 모드의 전체 코딩 코스트를 증가시키며, 그로 의해 팔레트 크기가 더 작아지고, 따라서 팔레트 예측자들이 더 작고 덜 효율적이 되는 경향이 있다. 이것은 블록 내의 새로운 요소들이 다른 블록들에 의해 재사용될 수 있어, 제1 블록에 대해 소비된 비트들을 실제로 최소화하기 때문이다. 전형적인 해결책은 비터비(Viterbi)와 같은 동적 프로그래밍 알고리즘들을 이용하는 것일 수 있으며, 여기서는 블록을 위한 코딩 결정이 소수의 블록들이 인코딩된 후에만 선택된다. 그러나, 이것은 엄청나게 복잡하고, 더 단순한 해결책이 바람직하다.
코딩 코스트의 그러한 증가는 그러므로, 코딩 모드 선택기(단계 106 참조)가 더 드물게 선택하고 리셋(결국, 지연을 가짐) 후에 바로 선택하지 못하게 야기할 수 있다. 그러나, 이것은 코딩 유닛을 코딩하기 위해 팔레트 모드가 선택되는 것에 가치가 있다. 이런 목적을 위해, 실시예들은 리셋이 발생된 후 코딩 유닛의 제1 코딩의 비트 코딩 코스트에 대해 치팅(cheating)함으로써(즉, 빈 또는 디폴트 팔레트 예측자를 이용하여) 팔레트 모드가 선택되는 가능성을 증가시키도록 제공된다. 이것은 그래야 하는 것보다 낮은 비트 코딩 코스트를 갖게 하고, 그로 인해 팔레트 모드가 선택되는 가능성을 증가시키는 것이다.
코딩에 사용되는 비트들에 대한 거짓 정보는 비트 코딩 코스트들의 이런 감소를 인위적으로 획득하기 위해 제공될 수 있다. 이런 거짓 또는 치팅 정보 또는 컬러 컴포넌트를 위한 "보너스"는 코덱의 동작점(즉, 비트가 얼마나 많은 왜곡 개선을 가져와야 하는지), 크로마 포맷, 관련된 적어도 하나의 컬러 컴포넌트 및/또는 현재 코딩 유닛에 대한 팔레트 내의 요소들의 수에 의존할 수 있다.
예를 들어, RGB 또는 YUV 요소들의 팔레트가 고려되는 경우가 있을 수 있으며, 각각의 요소 R/G/B/Y/U/V는, 예를 들어 8비트 컴포넌트들 갖는다. 따라서, 팔레트 리셋 후에 제1 코딩 유닛에 사용되는 팔레트의 하나 엔트리의 코딩으로부터 초래되는 비트 코스트(bit cost)는 보통 3x8=24비트이다. 그러나, 본 명세서에서 논의된 실시예에서, 보너스는, 예를 들어 이런 비트 코스트를 단지 8비트로 인위적으로 감소시킴에 의해 이런 비트 코스트를 수정하도록 적용될 수 있다. 따라서, 팔레트 모드는 단계 106에서 선택될 가능성이 더 크다.
2개 이상의 레벨(예를 들어, 하나의 레벨은 컴포넌트 Y를 위한 것이고, 다른 레벨은 컴포넌트들 U 및 V의 쌍을 위한 것임)이 픽셀을 표현하는 데 필요한 특정 실시예들에서, 2개 이상의 팔레트는 픽셀들의 블록을 코딩하는 데 실제로 사용된다. 보너스는 2개 이상의 팔레트들 각각에 적용될 수 있다. 예를 들어, 2개의 팔레트(하나는 컴포넌트 Y를 위한 것이고 다른 하나는 컴포넌트 U+V를 위한 것임)가 제공되는 경우, 보너스는 8비트에서 4비트로 하나의 Y 요소의 비트 코스트를 수정하고 16비트에서 6비트로 하나의 U+V 요소의 비트 코스트를 수정하는 것으로 구성될 수 있다.
먼저 처리된 코딩 유닛에 대한 팔레트를 예측하는 것이 가치가 있을 수 있기 때문에, 변형은 최종 사용된 팔레트를 바이-디폴트 팔레트로 대체하는 것을 포함하고, 그래서 바이-디폴트 팔레트는 CTB들의 라인의 제1 코딩 유닛에 대한 팔레트 예측자로서 이용된다. 바이-디폴트 팔레트(인코더 및 디코더의 양쪽이 동일한 방식으로 동작함)를 생성하기 위한 다양한 방식들이 고려될 수 있다. 예로서, 바이-디폴트 팔레트는 색 공간에 걸쳐 동등하게 분포된 컬러 값들에 대응하는 미리 결정된 엔트리들의 세트를 포함할 수 있다. 등분포는 3개의 컬러 컴포넌트와 관련될 수 있다. 그러나 바람직한 실시예에서, 컬러 값들은 Y 컴포넌트에 걸쳐 동등하게 분포될 수 있다. 그리고 U 및 V 컴포넌트 값들은, 예를 들어 색 공간에서 U 또는 V 컴포넌트들의 중간 값에서 고정된다. U 및 V 값들은 그 값에 bit-depth/2 또는 bit-depth >> 1을 할당함으로써, 컴포넌트들의 비트 심도로부터 직접 계산될 수 있고, 여기서 '>>'는 우측 시프트 연산자이다. Y 컴포넌트를 따른 분포의 예는, YLevel =(Level * bit-depth)/ Previous_Palette_size이고,
여기서, Level은 상술한 바와 같이 바이-디폴트 테이블의 엔트리 인텍스에 대응하며(따라서, 각각의 새로운 값 Y에서 1씩 증가되고), bit-depth는 Y 컴포넌트의 비트 심도이다. Previous_Palette_size가 최종 사용된 팔레트, 또는 최종 디코딩된 CTB 또는 CTB들 또는 프레임로부터 계산된 평균 Palette_size, 또는 4와 같은 미리 정의된 수와 동일할 수 있음에 유의한다.
팔레트 예측자를 획득하기 위한 다른 실시예들에 따르면, 참조 팔레트 예측자들은, 예를 들어 CTB들, CTB들의 라인, 슬라이스들, 슬라이스 세그먼트, 프레임 또는 시퀀스와 같은, 이미지를 형성하는 코딩 유닛들의 각각의 코딩 엔티티들과 연관된다. 그리고, 픽셀들의 현재 블록에 대한 팔레트 예측자는 픽셀들의 현재 블록을 포함하는 코딩 엔티티와 연관되는 참조 팔레트 예측자이다. 이러한 실시예들은 참조 팔레트 예측자가 각각의 코딩 엔티티를 위해 비트스트림으로 전송되도록 요구할 수 있다.
도 15은 비트스트림으로 전송된 참조 팔레트 예측자들에 기초하는 디코딩 프로세스를 예시한다. 이 도면은 도 14에 기초하고, 따라서, 블록들(1501 내지1514)은, 모듈(1506)이 비트스트림으로부터 디코딩된 참조 팔레트 예측자(1516)를 이용하여 팔레트를 구축하는 것을 제외하고, 블록들(1401 내지 1414)과 유사하다. 물론, 대응하는 프로세스는 비트스트림에 참조 팔레트 예측자를 포함시키기 위해 인코더에서 수행된다.
CTB 디코딩(또는 CTB 라인, 슬라이스, 프레임 등의 디코딩)의 초기에, 참조 팔레트 예측자(1516)는 단계 1515에서 비트스트림으로부터 추출된다. 참조 팔레트 예측자의 사용으로 인해 현재 코딩 엔티티 CTB의 임의의 코딩 유닛에 대한 팔레트가 비트스트림에 제공되지 않게 될 수 있음에 유의한다. 이 경우에 하나의 플래그는 비트스트림으로 제공될 수 있고, 따라서 코딩 유닛들에 대한 임의의 팔레트를 디코딩하지 않도록 시그널링하기 위해 이로부터 추출될 수 있다. 변형에서, 이런 플래그는 어떤 팔레트도 현재 코딩 유닛에 대해 디코딩되지 않음을 디코더에게 나타내기 위해 값 0을 이용하여 Palette_size로 대체될 수 있다. 이 변형은 Palette_size가 상술한 단계 1003에서 decodedSize + 1 대신에 decodedSize와 동일할 것을 요구한다. 참조 팔레트 예측자의 사용을 시그널링하는데 이용되는 임의의 비트를 절약하기 위해, 참조 팔레트 예측자는 현재 CTB의 적어도 하나의 CU가 팔레트 코딩 모드를 이용하여 코딩되는 경우 CTB의 끝에서 전송될 수 있다.
여하튼, 참조 팔레트 예측자는 현재 CTB의 코딩 유닛들 중 하나를 디코딩하기 위해 필요한 경우 추출되고 디코딩된다. 모듈(1502)은 예측 모드를 추출한다. 이것이 팔레트 모드가 아닌 경우(테스트 1503), 디코더는 대응하는 모드로 CU를 디코딩한다(1517). 그렇지 않으면(팔레트 모드), 현재 코딩 유닛에 대한 팔레트는 도 7에서와 같이 디코딩된다. 그러나, 본 실시예에서 팔레트(1507)의 구축(1506)은 참조 팔레트 예측자(1516)에 의존한다. 이런 종속성 및 대응하는 신택스 요소들(1505)의 예들은 후술된다.
코딩 유닛이 도 7 및 13에 대해 상술한 바와 같이 디코딩될 때(1517, 1520), 디코더는 이것이 단계 1518에서 CTB의 최종 코딩 유닛이었는지 아닌지를 체크한다. 이 도면이 다른 신택스 요소들을 수반할 수 있는 CTB의 완전한 신택스 디코딩을 포함하지 않음에 유의한다. 이것이 최종 코딩 유닛이 아닌 경우, 다음 CU에 대한 예측 모드는 단계 1502에서 추출된다. 이것이 최종 코딩 유닛인 경우, CTB를 완전히 디코딩하기 위한 나머지 프로세스들이 수행되고(도시 안됨), 디코더는 이것이 단계 1519에서 프레임의 최종 CTB인지 아닌지를 체크한다. 이것이 최종 CTB가 아닌 경우, 다음 CTB에 대한 참조 팔레트 예측자는 상술한 단계 1515에서 비트스트림으로부터 추출된다. 물론, 이 도면은 완전하지 않고, 본 발명과 관련되지 않은 여러 디코딩 단계들은 생략되었다.
설명된 바와 같이, 전송된 참조 팔레트 예측자는 현재 CTB에서 각각의 코딩 유닛 CU에 사용되는 팔레트의 예측자로서 사용된다. 이하에 설명되는 바와 같이, 참조 팔레트 예측자는 팔레트의 요소들을 예측하는 데 사용될 수 있거나, 변형에서, 참조 팔레트 예측자는 현재 코딩 유닛에 대한 팔레트로서 사용될 수 있다. 그러한 경우에, 참조 팔레트 예측자(1516)는 모듈(1509)로 직접 전송되고, 그로 인해 모듈(1507)이 더 이상 요구되지 않게 한다.
인코더에서 참조 팔레트 예측자의 선택은 코딩 효율에 기여할 수 있다. 여러 알고리즘들은 "최상" 참조 팔레트 예측자를 결정하는 데 사용될 수 있다. 예를 들어, 현재 CTB에서 가장 큰 코딩 유닛을 예측하는 데 사용되는 팔레트는 CTB에 대한 참조 팔레트 예측자로서 선택될 수 있다. 다른 예에서, 현재 CTB를 구성하는 코딩 유닛들 모두를 예측하는 데 사용되는 팔레트로부터 레이트 왜곡 기준을 최소화하는 팔레트는 CTB에 대한 참조 팔레트 예측자로서 결정되고 사용될 수 있다. 물론, 다른 선택 기준이 이용될 수 있다.
팔레트 예측자를 획득하기 위한 다른 실시예들에 따르면, 현재 코딩 유닛에 대한 팔레트 예측자는 현재 코딩 유닛에 인접하는 픽셀들의 값들에 대응하는 엔트리들을 포함한다. 이러한 실시예들에서, 현재 CU에 대한 팔레트 예측자는 도 16에서 예로서 도시된 바와 같이 인접 픽셀들로부터 추출된다.
이 예에서, 선택된 픽셀들은 픽셀들의 현재 블록의 상측 및 좌측에 인접한 픽셀들인데, 그 이유는 이들이 도 3을 참고하여 위에서 정의한 바와 같은 인과 영역에 속하기 때문이다. 이러한 인접 픽셀들은 도면에서 회색으로 도시된다. 특히, 선택된 픽셀들은 고정된 수이며, 예를 들어 인트라 예측 모드에 사용되는 픽셀들, 즉 인접하는 현재 코딩 유닛에 대해 상부 좌측, 상부 우측 및 하부 좌측에 있는 픽셀들과 동일한 3개의 픽셀(도면에서는 짙은 회색 픽셀들(1601 내지 1603))이다. 물론, 픽셀들의 다른 수가 고려될 수 있다. 바람직하게, 선택하기 위한 관련 픽셀들은 추가 시그널링 정보가 필요하지 않도록 인코더 및 디코더의 양자에 의해 알려졌다. 그러나 일부 실시예들은 인코더에서 특정 픽셀들을 선택하는 것을 상정할 수 있고, 그 후 선택된 픽셀들의 수 및 이러한 선택된 픽셀들을 비트스트림으로 시그널링하는 것을 상정할 수 있다.
일 실시예에서는, 인접 픽셀들의 제한된 세트가 고려된다. 예를 들어, 이런 픽셀들의 세트는 픽셀들이 가장 큰 공간 거리를 갖도록 선택된다. 이것은 다양성을 만들고, 이중 픽셀들을 방지한다.
도 17은 인접한 픽셀들에 기초하는, 현재 코딩 유닛에 대한 팔레트 예측자의 생성을 예시한다. 위에 언급한 바와 같이, 팔레트 예측자 내의 요소들의 순서는 중요하다. 이것은 팔레트 요소들(본 명세서에서는 인접 픽셀들)에 대한 클래스들의 정의를 요구한다. 이런 결정 프로세스는 인코더 및 디코더의 양자에서 수행될 수 있다.
일 실시예에서, 인접 픽셀들(1701)은 분류된다(1702). 인접 픽셀들이 현재 코딩 유닛에 직접 인접하지 않은 픽셀들을 포함할 수 있다는 점에 유의한다. 인접 픽셀들의 고려된 세트의 각각의 인접 픽셀은, 예를 들어 도 12의 단계 1207의 기준을 이용하여, 팔레트 예측자 내의 이미 존재하는 엔트리들로부터의 컬러 거리에 종속하는 클래스(그래서, 엔트리 인덱스)와 연관된다. 실시예에서, 클래스들은 도 16에 도시된 3개의 픽셀(1601 내지 1603)에 의해 정의된다. 이것은 비정렬된 팔레트 예측자(1703)를 초래한다. 게다가, 분류(1702) 동안, 각각의 클래스의 발생들(1704)이 카운트된다.
비정렬된 팔레트 예측자(1703) 및 발생들(1704)에 기초하여, 정렬된 엔트리들을 가진 팔레트 예측자(1706)는 단계 1705에서 구축되고, 예를 들어 가장 빈번한 엔트리들을 먼저 갖는다. 얼마 안 되는 발생들(예를 들어, 임계값 아래)을 갖는 엔트리들이 팔레트 예측자로부터 폐기될 수 있음에 유의한다.
실시예에서, 동일 클래스의 2개의 픽셀은 동일 픽셀 값을 정확히 갖는다(따라서, 분류에 사용된 기준은 절대값을 포함하지 않고, 임계값 TH가 0으로 설정되는 것을 요구한다). 텍스트 또는 스크린 샷들을 포함하는 HEVC RExt에 의해(따라서, 팔레트 모드에 의해) 표적이 된 이미지들에서, 인접 코딩 유닛들 내에는 상이한 값들이 거의 없다는 점에 유의한다. 따라서, 픽셀 값들의 아이덴티티에 기초하여 픽셀들을 분류하는 것이 적절하다.
도 18은 분류의 예를 예시한다. 1801은 제1 픽셀 값(클래스 '1'로 표현됨) 또는 제2 픽셀 값(클래스 '2'로 표현됨) 또는 제3 픽셀 값(클래스 '3'으로 표현됨)를 갖는 인접 픽셀들을 가진 현재 코딩 유닛을 보여준다. 인접 픽셀들의 세트는 테이블(1802)에서 그것의 관련된 클래스들로 표현된다. 테이블(1802)은 각각의 클래스와 연관된 발생들을 제공한다. 테이블(1802)로부터 구축되는 팔레트 예측자는 그들의 발생들에 따라 클래스들을 정렬하고 비유효 예측자 엔트리들(본 명세서에서, 엔트리는 낮은 수(즉, 본 예에서는 2)의 발생에 의해 클래스 '1'에 대응함)을 제거하여, 테이블(1803)에 도시된다. 예측자 엔트리를 제거하기 위해, 알고리즘은 인접 픽셀들의 수, 클래스들의 수 및/또는 가장 개연성 있는 인접 픽셀들의 발생을 고려할 수 있다.
팔레트 예측자를 획득하기 위한 다른 실시예들에 따르면, 현재 팔레트는 정렬된 엔트리들을 가지고 있고, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 것은 동일한 현재 팔레트의 이전 엔트리로부터 현재 팔레트의 엔트리를 예측하는 것을 포함한다. 다시 말하면, 팔레트의 주어진 엔트리를 처리할 때 팔레트 예측자는 현재 구축 중인 컬러 팔레트 내의 주어진 엔트리 이전에 있는 엔트리들로 이루어진다(포함한다). 따라서, 현재 팔레트는 인트라 예측된다.
이것은 필요할 때 비트스트림으로의 시그널링에 기초하여 예측된 팔레트를 획득하기 위한 디코딩 프로세스를 도시하는 도 22에 예시된다. 도 22는 도 10의 상부 좌측 부분에 대응하는 부분, 즉, 예측된 팔레트의 생성을 재생할 뿐이다. 따라서, 도 10의 나머지는 블록 예측자(91)를 정의하는 신택스 요소들을 획득하기 위해 수행되어야 한다.
도시된 바와 같이, Palette_size는 단계들(2201 및 2202)에서 디코딩되고 계산된다. 다음에, 제1 팔레트 요소가 디코딩된다. 팔레트가 인트라 예측되기 때문에, 제1 팔레트 요소는 예측되지 않고, 따라서 비트스트림으로부터 직접 디코딩된다. 이후 각각의 팔레트 엔트리를 연속적으로 고려하기 위해 제공된 변수 i는 단계 2204에서 1과 동일하게 설정된다. 다른 팔레트 요소들은 다음 단계들을 통해 디코딩된다. 특히, 각각의 팔레트 요소에서, 플래그, 즉, Use_pred는 인덱스 i에서 팔레트 요소가 인트라 예측을 이용하는지 아닌지(테스트 2207)를 결정하기 위해 단계 2206에서 디코딩된다. 인트라 예측을 이용하지 않은 경우, 팔레트 요소는 단계 2208에서 비트스트림으로부터의 직접 디코딩된다. 그렇지 않으면, 현재 팔레트 내의 팔레트 요소 예측자의 인덱스에 대응하는 인덱스 j는 단계 2210에서 비트스트림으로부터 디코딩된다. 인코더가 비트들을 절약하기 위해 인덱스 i와 관련된 인덱스 j를 코딩할 수 있다는 점에 유의하고, 이 경우에 디코더는 반대 방식으로 동작한다. 이후 잔차는 단계 2211에서 디코딩되고, 팔레트 요소 Pal[i]는 Res[i] + Pal[i]와 동일하게 설정되고 단계 2212에서 팔레트를 추가된다. 이후 인덱스 i는 단계 2209에서 다음 팔레트 요소를 고려하기 위해 1씩 증분된다. 모든 팔레트 요소들이 디코딩될 때(테스트 2205), 프로세스는 도 10의 단계 1008에서 계속된다.
일 실시예에서, 팔레트 요소 i의 팔레트 예측자는 팔레트 요소 i-1, 즉 현재 팔레트 내의 현재 팔레트 요소에 바로 선행하는 팔레트 엔트리이다. 그런 경우, 모듈(2210)은 생략될 수 있고, 팔레트 요소 Pal[i]는 이것이 예측될 때 Res[i] + Pal[i-1]과 동일하게 설정된다. 일 실시예에서, 모든 팔레트 엔트리들은, 제1 엔트리를 제외하고, 현재 팔레트에서 이들에 바로 선행하는 팔레트 요소로부터 예측된다. 그런 경우, Use_pred 플래그는, 디코더가 인트라 예측을 이용하여 팔레트 요소들을 획득하거나/디코딩하는 방법을 알기 때문에 생략될 수 있다. 이것은 모듈들(2206 및 2208)이 생략될 수 있다는 것을 의미한다.
팔레트 요소의 인트라 예측의 코딩 효율을 향상시키기 위해, 팔레트 요소는 인코더에서 이들의 발생에 따르는 것이 아니라 이들의 값에 따라 정렬될 수 있다.
또 다른 실시예들에 따르면, 현재 팔레트는 2개 이상의 팔레트의 엔트리들로부터 예측된다. 이것은 팔레트 예측자가 2개 이상의 팔레트로부터 구축될 수 있다는 것을 의미한다. 특히, 2개 이상의 팔레트는 현재 팔레트에 대한 새로운 팔레트 예측자를 형성하기 위해 부분적으로 또는 전체적으로 통합될 수 있다.
이것은, 위에 소개한 예측 메커니즘들이, 예를 들어 픽셀들의 이전에 처리된 블록들을 예측하는 데 사용된 팔레트들의 세트로부터 팔레트 예측자로서 선택되는 단일 팔레트에 의존할 수 있기 때문이다. 이것은 팔레트 예측자의 품질에 영향을 미칠 수 있다. 예를 들어, 픽셀들의 연속적인 블록들 B1, B2 및 B3 중에서, 블록들 B1 및 B3은 각각 많은 수의 상이한 픽셀들로 만들어지지만, B2는 적은 수의 상이한 픽셀들로 만들어지고, 다음 팔레트에 대한 팔레트 예측자로서 비로 이전의 팔레트를 이용하고 있다는 사실은 B3에 대한 팔레트 예측자로서 B2의 팔레트(이것은 소수의 팔레트 요소들을 가짐)를 이용하는 것으로 이어진다. 그러나 이것은 B3에 대한 팔레트 예측자 내의 요소들의 수를 대폭 감소시키고, 따라서 B3에 대한 팔레트를 효율적으로 예측하기 위한 능력을 대폭 감소시킬 것이다.
발명자들은 픽셀들의 새로운 블록을 처리하기 위한 새로운 팔레트를 구축하기 위해 2개 이상의 팔레트를 결합하는 것이 가치가 있다는 것을 알게 되었다.
도 24는 이미 존재하는 2개 이상의 팔레트로부터 팔레트 예측자를 구축하기 위한 일반적 단계들을 설명하는 흐름도이다. 기존 팔레트들은 현재 팔레트의 모두 또는 일부, 최종 팔레트 예측자들(참조 팔레트 예측자들을 포함함), 공간적 또는 시간적으로 인접하는 팔레트들, 및 바이-디폴트 팔레트(예를 들어, 그 컴포넌트들이 모든 0인 요소와 같은 바이-디폴트 팔레트 요소들을 포함함)를 포함할 수 있다.
도 24의 프로세스에서, P는 고려되는 이미 존재하는 팔레트들의 수를 나타내고; pal0,..., palP -1은 대응하는 팔레트들이고; "pred"은 프로세스에 의해 팔레트 요소들의 최대 수 NMAX로 형성되는 팔레트 예측자이고; Jk, k∈[0;P[는 팔레트 palk 내의 요소들의 수이고; "i"는 pal0,..., palP -1의 각각을 연속적으로 고려하기 위한 팔레트 카운터를 나타내는 변수이고; "n"은 구축 중인 팔레트 예측자 "pred" 내의 팔레트 요소들의 현재 수를 표현하는 변수이고; "j"는 현재 팔레트 pali의 각각의 팔레트 요소를 연속적으로 고려하기 위한 팔레트 요소 카운터를 나타내는 변수이다.
팔레트들 pal0,..., palP - 1는 가장 최근 팔레트들을, 예를 들어 낮은 인덱스들로 먼저 처리하기 위해 정렬될 수 있다. 이것은 가능한 한 가까운 더 최근의 요소들을 팔레트 예측자의 시작에 추가하기 위한 것이다.
프로세스는 단계 2400에서, ("i" =0), 및 구축될("n" =0) 팔레트 예측자 "pred" 내의 현재 예측자 요소를 고려하기 위해 제1 팔레트를 초기화하여 시작된다. 프로세스는 이후 각각의 팔레트 pali를 연속적으로 고려하기 위해 루프에 진입한다.
단계 2401에서, 팔레트 요소 카운터 "j"은 현재 팔레트 pali의 제1 팔레트 요소를 고려하기 위해 0에서 초기화된다.
단계 2402에서는, 현재 팔레트 pali의 현재 팔레트 요소 pali[j]가 현재 팔레트 예측자 "pred"에 이런 팔레트 요소의 추가를 트리거하기 위한 특정한 기준을 충족했는지 아닌지를 체크한다.
트리거링 기준은, pali[j]가 pred [0]...pred[n-1]과 상이한 경우 "pred"에 현재 팔레트 요소의 추가를 결정하고, pali[j]가 "pred"의 하나의 요소와 동일한 경우 현재 팔레트 요소를 "pred"에 추가하지 않도록 결정하기 위해, pali[j]를 팔레트 예측자 "pred"에 이미 추가된 요소들(즉, pred [0]...pred[n-1])과 비교하는 것에 단순히 의존할 수 있다. 2개의 요소 pali[j]과 pred[k] 간이 비교가 엄격한 비교 또는 엄격한 유사성(이들 컴포넌트들 사이의 엄격한 동등성)일 수 있거나, 또는 느슨한 비교/유사성(요소들의 대응하는 컴포넌트들 간의 차이는 각각의 임계값 아래에 있음)일 수 있음에 유의한다. 변형에서, n개의 요소 pred[k]의 특정한 양만이 그 비교에 수반될 수 있고, 정확한 양은 "n"의 값에 따른다. 이것은 비교들의 수가 빨리 증가할 수 있기 때문이다. 이것은, 예를 들어 비교에 수반되는 n/2 또는 많아야 4개의 요소를 이용하는 것은, 코딩 효율과 복잡성 사이에서 양호한 트레이드-오프(trade-off)가 될 수 있다.
그러나 다른 트리거링 기준은, 예를 들어 도 19 내지 21과 관련하여 후술되는 바와 같이 Use_pred 플래그들의 비트맵이 수반될 수 있다. 이러한 Use_pred 플래그들은 인코더가, 예를 들어 팔레트 엔트리들의 각각을 하나씩 팔레트 예측자 엔트리들과 비교함으로써 어느 값들이 현재 팔레트 내의 값으로서 재사용될 수 있는지를 시그널링하기 위해 생성된다. 특히, 이 접근법은 유리하게 팔레트 요소들을 명시적으로 전송하거나 복제하지 않는 것을 가능하게 한다. 플래그들의 수는 팔레트 예측자의 크기와 요소들이 어떻게 시그널링되는지에 달렸다.
단계 2402의 결과는 현재 팔레트 요소 pali[j]를 팔레트 예측자 "pred"에 추가할지 안할지에 관한 결정이 선택되는 것이다.
결정이 이를 추가하지 않도록 선택되는 경우, 프로세스는 단계 2405로 진행한다.
결정이 이를 추가하도록 선택되는 경우, 프로세스는 단계 2403으로 진행하여, 현재 예측자 요소 pred[n]가 현재 팔레트 요소 pali[j]로 설정된다. "pred" 내의 다음 예측자 요소는 "n"을 증분함으로써 다음에 선택된다.
다음에, 단계 2404는 "pred"의 예측자 요소들의 최대 수가 결정되었는지 아닌지를 체크하는 것으로 구성된다. 이들이 결정되지 않은 경우, 프로세스는 단계 2405로 간다. 그렇지 않으면, 팔레트 예측자 "pred"은 완전히 결정되고, 프로세스는 단계 2409에서 종료된다.
단계 2405에서, 현재 팔레트 pali 내의 다음 요소는 팔레트 요소 카운터 "j"를 증분하므로써 선택된다.
단계 2406에서는, 현재 팔레트 pali의 모든 팔레트 요소들이 고려되고 처리되었는지 아닌지가 체크된다: j<Ji. 아닌 경우, 프로세스는 다음 팔레트 요소 pali[j]를 처리하기 위해 단계 2402로 루프백(loop back)한다. 현재 팔레트 pali전체가 처리된 경우, 프로세스는 단계 2407로 가며, 여기서 모든 팔레트 pal0,...,palp-1가 아직 처리되지 않은 경우(단계 2408에서의 체크), 팔레트 카운터 "i"는 다음 팔레트를 고려하기 위해 증분된다.
모든 팔레트들 pal0,...,palp -1가 처리된 경우, 프로세스는 단계 2409에서 종료된다.
팔레트 예측자를 획득하기 위한 상기 다양한 실시예들이 팔레트 요소들 중 모두 또는 일부를 예측하기 위한 여러 기준을 제공하도록 부분적으로 또는 모두가 결합될 수 있음에 유의한다.
디코더에 대한 팔레트 예측을 실제로 기술하는 신택스 요소들을 지금 참조하면, 이미 위에서 설명된 도 22가 팔레트 예측을 정의하기 위한 메커니즘을 소개했을지라도, 이하에서는 도 19-21을 참조한다. 팔레트 예측자는 검색된 것으로 간주되고, 그 크기(predictor_of_palette_size)는 알려졌다.
신택스 요소들에 관한 실시예들에 따르면, 팔레트 예측자를 이용하여 현재 팔레트를 예측하는 것은 플래그들의 비트맵을 획득하는 것을 포함하고, 플래그들 각각은 팔레트 예측자 내의 대응하는 엔트리가 현재 팔레트의 엔트리로서 선택되는지 아닌지를 정의한다. 그 결과, 디코더가 적절한 팔레트 예측자를 검색하는 것을 가능하게 하는 정보 이외에, 비트맵만이 디코더에 전송될 필요가 있다. 이 비트맵은 현재 코딩 유닛에 대한 HEVC RExt에 정의된 팔레트 대신에 전송될 수 있다.
비트맵의 신택스는 M개의 플래그를 포함하며, M은 팔레트 예측자 내의 요소들의 수와 동일하다. i번째 디코딩된 플래그는 팔레트 예측자로부터의 요소 i가 현재 코딩 유닛에 대한 현재 팔레트를 충전(예측)하는 데 사용되는지 아닌지를 정의한다. 변형에서, 비트맵은 팔레트 예측자 내의 제1 요소에 대응하는 플래그에서, 컴포넌트 예측자로서 이용되어야 하는 최종 요소에 대응하는 플래그까지의 낮은 수의 플래그들로 제한될 수 있다. 비트맵의 크기는 팔레트 크기가 HEVC RExt 비트스트림에서 특정되는 것과 유사한 방식으로 비트스트림에서 특정된다.
예를 들어, 1과 동일한 플래그(비트)와 연관되는 팔레트 예측자의 요소들은 그들의 순서를 유지하면서, 제1 이용 가능한 위치에서 현재 팔레트에 복사된다.
다른 실시예에서, 추가 엔트리들은 팔레트 예측자로부터의 선택된 엔트리들을 갖는 현재 팔레트의 끝에 추가된다. 예를 들어, 먼저, 비트맵은 비트스트림으로부터 디코딩되고, 팔레트 예측자의 대응하는 엔트리들은 현재 팔레트로 복사되고, 이후 추가 픽셀들은 종래의 팔레트 전송과 동일한 방식으로 현재 팔레트의 끝에 추가될 수 있다.
추가 팔레트 요소로서 예측된 팔레트 요소를 제공하고자 하는 일 실시예에서, Palette_size의 결정은 예측된 팔레트 요소들의 수만큼 증가되도록 적응되고: 그렇게 하기 위해, Palette_size는 (디코딩된 크기 + 비트맵에서 1과 동일하게 설정된 플래그들의 수)(Palette_pred_enable_size)와 동일하게 설정된다. Palette_pred_enabled_size가 0과 동일한 경우, Palette_size는 단계 1003에서 설명된 바와 같이 디코딩된 크기 + 1과 동일하게 설정된다.
도 19는 플래그들의 비트맵에 기초하는 이러한 실시예들의 팔레트 신택스의 디코딩을 예시한다. 도 22에서는, 도 19가 도 10에 기초하지만, 팔레트 디코딩과 관련된 부분만이 도시된다.
먼저, 팔레트 예측자(1902)는 상술한 실시예들 어느 하나에 따라서 단계 1901에서 획득된다. 게다가, Predictor_of_palette_size(1903)도 획득된다. 모듈(1905)은 비트스트림(1904)으로부터의 N개의 플래그를 디코딩하며, 여기서 N = Predictor_of_palette_size이다.
1과 동일한 각각의 플래그에서, 팔레트 예측자로부터의 대응하는 요소는 단계 1906 동안 제1 이용 가능한 인덱스에서 현재 팔레트(1907)에 추가된다. 비트맵에서 1과 동일한 플래그들의 수를 나타내는 Palette_pred_enabled_size(1908)는 결정 모듈(1910)로 전송된다. 팔레트의 나머지의 크기는 또한 비트스트림(1909)으로부터 디코딩된다. 결정 모듈(1910)은 Palette_pred_enabled_size가 0과 동일한지 아닌지를 결정한다. 이것이 0과 동일하여 현재 팔레트 내에 예측된 팔레트 요소가 없다는 것을 의미하는 경우, Palette_size는 단계 1911에서 디코딩된 Size + 1과 동일하게 설정되고, 현재 팔레트의 각각의 엔트리를 연속적으로 고려하는 데 사용되는 변수 i는 단계 1912에서 0과 동일하게 설정된다. Palette_pred_enabled_size가 0과 달라서 현재 팔레트 내에 적어도 하나의 예측된 팔레트 요소가 있다는 것을 의미하는 경우, Palette_size는 단계 1913에서 디코딩된 Size + Palette_pred_enabled_size와 동일하게 설정되고, 변수 i는 Palette_pred_enabled_size와 동일하게 설정된다. 다음에, 팔레트 요소들의 디코딩 루프는 도 10의 단계들(1005, 1006 및 1007)에 대응하는 단계들(1915, 1916 및 1917)을 통해 수행된다. 이 루프는 변수 i가 Palette_size와 동일할 때 중단된다. 디코딩된 팔레트 요소들(1916)은 현재 팔레트(1907)의 끝에, 즉, 예측된 팔레트 요소들 이후에 추가된다. 일 실시예에서, Palette_size는 모듈들(1910, 1911 및 1912)이 생략될 수 있도록 구현을 단순화하기 위해 단계 1913에서 디코딩된 Size + Palette_pred_enabled_size와 동일하게 항상 설정된다.
플래그에 대한 값들 "0" 및 "1 "이 반전될 수 있음에 유의하며, 이것은 팔레트 예측자 내의 대응하는 요소가 구성 중인 팔레트의 요소를 예측하는데 사용되는 않을 때 플래그=1이 사용됨을 의미한다(플래그=0에 대해서는 반대로 된다).
플래그들의 값들의 의미의 이런 반전은 "시작 코드 에뮬레이션"으로 불리는 현상을 방지하는 데 유용하다: 일련의 바이트들이 시작 코드로 불리는 것과 일치하는 경우, 비트스트림의 크기를 증가시키는 확장 프로세스를 통해, 일련의 바이트들은 시작 코드와 더 이상 일치하지 않고 고유 시작 코드를 갖도록 변환되어야 한다. 0 대신에 1를 사용하여, 이런 크기 증가가 방지된다.
도 20은 도 19의 프로세스를 예로서 예시한다. 도 14 내지 18을 참고하여 상술한 실시예들 중 임의의 실시예를 이용하여 획득된 팔레트 예측자는 인덱스 또는 레벨을 컬러 값들과 연관시키는 5개의 요소를 포함하는 테이블(2001)이다. 비트맵의 디코딩된 플래그들은 테이블(2002)에 표현된다. 본 예에서, 2개의 플래그는 1과 동일하게 설정된다: 하나는 팔레트 예측자의 레벨 0을 위한 것이고, 다른 하나는 레벨 2를 위한 것이다. 따라서, 대응하는 팔레트 요소들은 이용 가능한 제1 레벨, 레벨 0 및 레벨 1을 각각 갖는 현재 팔레트(2003)에 추가된다. 이후 새로운 팔레트 엔트리들은 HEVC RExt에서 제안된 바와 같이 비트스트림으로부터 디코딩될 수 있고, 위치 2 및 3에 추가될 수 있다.
팔레트 예측자가 전송될 때, 팔레트 예측자들에 대응하는 플래그들(비트맵)만이 요구되는 것에 유의해야 한다. 시그널링을 감소시키기 위해, 동일한 비트맵은 단일 참조 팔레트 예측자가 전송되는 동일한 CTB, 슬라이스, 타일, 슬라이스 세그먼트, 프레임 또는 시퀀스에 속하는 모든 코딩 유닛들에 사용될 수 있다.
Use_pred 플래그들의 비트맵은 도 19 및 20을 참조하는 상기 설명에서 정의되었다. 이하에서는 도 24를 다시 참조하고, 더 구체적으로는 구성 중인 팔레트 예측자 "pred"에 현재 팔레트 요소 pali[j]의 추가를 인가하기 위한 트리거링 기준이 사용되는 단계 2402를 참조한다. 위에 소개된 바와 같이, 이런 트리거링 기준은 Use_pred 플래그들의 비트맵을 수반할 수 있다.
일부 실시예들에서, 구성 중인 팔레트 예측자는 상술한 바와 같이 플래그들의 비트맵을 이용하여 제2 팔레트(예측자로서 사용됨)에 기초하여 예측되는 제1 팔레트로부터의 엔트리들을 포함하고, 각각의 플래그는 제2 팔레트 내의 대응하는 엔트리가 제1 팔레트 내의 엔트리를 예측하기 위한 엔트리로서 선택되는지 아닌지를 정의한다. 본 실시예에서는, 특히 팔레트 예측자가 제1 팔레트를 예측하기 위해 엔트리의 어떤 선택도 정의하지 않은 비트맵의 플래그에 대응하는 제2 팔레트의 엔트리들을 또한 포함하여 구축된다.
도 25은 그런 접근법의 예시적 구현을 예시한다.
3개의 코딩 유닛, CU1 내지 CU3은 현재 이미지에서 처리되는 있는 연속적인 코딩 유닛들일 수 있다.
참조 번호 2500은 CU 1을 처리(인코딩 또는 디코딩)하기 위해 사용된 팔레트를 나타낸다. 이 팔레트는 비트스트림으로 인코딩될 수 있거나(따라서, 디코더에 의해 검색될 수 있거나), 본 출원에 설명된 임의의 메커니즘을 이용하여 예측될 수 있다.
상술한 바와 같이 최종 사용된 팔레트에 기초하는 예측자 생성 메커니즘을 이용하면, 이 팔레트(2500)는 CU2를 처리하는 팔레트(2501)를 구축하기 위한 팔레트 예측자로서 이용된다. 팔레트(2501)의 예측은 상술한 Use_pred 플래그들의 비트맵(2506)에 기초한다. 플래그들이 다음 CU의 팔레트를 예측하기 위한 대응하는 요소들의 사용 여부에 따라 각각 값 1 또는 0을 취할 수 있다는 것을 상기해야 한다. 변형에서, 플래그=1은 대응하는 요소를 선택하지 않음을 의미할 수 있고, 반면에 플래그=0은 다음 CU의 팔레트를 예측하기 위한 요소를 선택하는 것을 의미할 수 있다.
그 결과, 본 예에서, 팔레트 예측자(2500)의 제1, 제3, 제4 및 제5 요소들은 비트맵(2506)에 정의된 바와 같이 팔레트(2501)에 복사된다. 제2 요소(2502)는 재사용되는 않는다(비트맵(2506)에서 플래그=0). 추가 팔레트 요소(2503)가 상술한 메커니즘(예를 들어, 비트스트림으로 명시적으로 전송되는)에 기초하여, 구축되고 있는 팔레트(2501)의 끝에 추가될 수 있음에 유의한다.
또한, 팔레트(2501)는 CU3을 처리하는 팔레트를 구축하기 위한 팔레트 예측자로서 사용된다. 도면의 예에서, 팔레트(2501)의 모든 요소들은 CU3에 대한 팔레트 내에 복사된다(단계 2504). 본 예에 대한 변형에서, 비트맵(도시 안됨)은 팔레트(2501) 내에 복사될 요소들을 정의하는 비트맵(2506)과 유사하게, 팔레트(2501)의 어느 요소들이 CU3에 대한 팔레트 내에 복사되어야 하는지를 식별하도록 제공될 수 있다.
본 발명의 이런 실시예에 따르면, 팔레트 예측자(2500)는 또한 CU3을 처리하는 팔레트를 구축하기 위한 예측자로서 사용된다.
그런 구축을 달성하기 위해, 팔레트 예측자(2505)는 팔레트들(2500 및 2501)로부터 구축된다. 앞서 언급한 바와 같이, 팔레트(2501)의 모든 요소들은 팔레트 예측자(2505) 내에 복사된다(단계 2504). 본 예에서, 팔레트(2501)를 예측하기 위해 엔트리의 어떤 선택도 정의하지 않은 비트맵의 플래그에 대응하는 팔레트 예측자(2500)의 엔트리들(즉, 일반적으로 플래그=0을 갖고, 예로서 요소(2502))은 팔레트 예측자(2505)에 추가된다(단계 2508). 이것은 팔레트 예측자(2500)의 다른 엔트리들이 복사 단계(2504)의 덕택으로 팔레트 예측자(2505)에 이미 존재하기 때문이다. 요소(2502)의 이런 선택은 비트맵(2506)에서 플래그들의 덕택으로 매우 빨리 수행될 수 있다.
비트맵은 팔레트 예측자(2505)에 기초하여, CU3를 처리하기 위한 팔레트를 예측하도록 제공될 수 있다.
물론, 팔레트 예측자(2505)는 또한 CU3을 처리하기 위한 팔레트 바로 그것일 수 있다. 그러나, 팔레트 예측자(2505)는 이것이 이전 팔레트들에 정의된 모든 요소들을 포함하기 때문에 계속 성장한다. 이것은 더 이상 맞지 않는 팔레트 예측자의 요소들이 그들의 Use_pred 플래그의 값에도 불구하고 예측자에 추가되지 않는 제한까지 성장한다.
요소(2502)의 추가는 바람직하게 팔레트 예측자(2505)의 끝에서 수행된다. 최종 팔레트 예측자가 상술한 상황과 비교하여 강화되는 것을 바로 관찰할 수 있다.
팔레트 예측자의 끝에 미사용된 요소들을 추가하는 하나의 특별한 장점은, 요소들이 그들의 나이 및 레벨에 의해 거의 정렬된다는 것이다. 이로 인해 적어도 유용하고 가장 제거되기 쉬운 팔레트 예측자 내의 최종 요소를 갖게 된다. 따라서, 구성 중인 팔레트 예측자로부터 일부 요소들을 제거하기 위한 결정은, 예를 들어 이런 요소를 포함하는 각각의 팔레트들을 이용하여 픽셀들의 최종 M개(M은 정수로 정의됨)의 블록들에 대해 처리할 때 이런 요소의 사용 횟수에 기초하여 내려질 수 있다.
물론, 이런 프로세스는 미사용된 요소들을 팔레트 예측자에 먼저 두기 위해 적응될 수 있거나, 또는 심지어 팔레트(2401)로부터의 요소들 중 일부와 인터리빙될 수 있다.
이전 팔레트로부터 미사용된 요소들의 선택은 요소들이 고유하고, 그러므로 Use_pred 플래그들이 중복되지 않는다는 것을 보장함에 유의한다. 따라서 팔레트 예측자 효율은 최대화된다.
2개 이상의 팔레트로부터 팔레트 예측자를 구축하는 것을 수반하는 본 발명의 상기 접근법은 도 19의 팔레트 예측자 구축 단계 1901에만 영향을 미친다.
도 26은 예측자(2505)와 같은 팔레트 예측자를 상기 접근법으로 구축하기 위한 단계 1901의 실시예를 예시하며, 그 실시예는 도 24를 참고하여 전술한 일반적 단계들보다 더 특정한 것이다. 그런 팔레트 예측자(2505)는 대응하는 비트맵(도시 생략)의 Use_pred 플래그들에 기초하여, CU3를 처리하는 팔레트를 구축하는데 사용된다.
도 25의 예와 관련하여 이런 프로세스를 요약하면, 이것은 어레이 "pal"에 의해 표현되는 CU2 팔레트(2501)의 요소들을 예측자 요소들 "pred"의 어레이 내에 복사하는 것(단계 2504)으로 구성된다. "pred"는 팔레트 어레이 "pal"로부터 요소들을 복사하는데 사용되는 임시 버퍼이다. 프로세스의 끝에서, "pred"은 팔레트 예측자이다.
게다가, 가능한 스터핑 요소들(stuffing elements)(예를 들어, 2502)은 "pred"에 추가되고, 추가로 이미 복사된 요소들에 추가된다.
구조 "pred"는 NMAX 요소들의 최대를 포함한다. NMAX는 팔레트 내의 요소들의 최대 개수보다 더 클 수 있다. 코딩 효율과 메모리 사이에 양호한 절충은 NMAX = 64, 즉, 본 예에서는 팔레트의 최대 크기의 2배로 밝혀졌다.
"pal"은 사용된 최종 팔레트, 즉, 도 25의 예에서의 팔레트(2501)를 저장하는데 전용인 Ncur 요소들을 포함하는 구조이다.
"last"는 이전 팔레트 또는 예측자, 예를 들어 최종 사용된 팔레트의 팔레트 예측자, 즉, 도 25의 예에서의 팔레트 예측자(2500)를 저장하는데 전용인 Nlast 요소들을 포함하는 구조이다. 대응하는 Use-pred 플래그들은 또한 메모리, 예를 들어 소위 "Use_pred" 어레이에 저장된다.
"pal"이 사용된 최종 팔레트인 반면, "last"는 이런 사용된 최종 팔레트의 팔레트 예측자인 것에 유의한다.
단계 2600은 "pal"의 "pred"로의 복사를 초기화한다: 각각의 구조의 제1 요소는 루프 카운터 "i"를 0으로 설정하여 선택된다. 그 후, 복사 루프가 단계 2601에서 시작된다: "pred"의 현재 요소는 "pred"의 하나와 동일하게 설정된다. 그 후, 단계 2602는 루프 카운터 "i"를 증분하여 "pal"의 다음 요소를 선택하는 것을 가능하게 한다.
단계 2603은 이후 구성 중인 팔레트 예측자 "pred" 또는 팔레트 "pal" 중 어느 하나의 최종 요소가 도달했는지 아닌지를 체크한다("pred"에 대해서는 NMAX가, "pal"에 대해서는 Ncur가 주어진다).
최종 요소가 도달하지 않은 경우, 프로세스는 다음 요소를 복사하기 위해단계 2601로 루프백한다. 그렇지 않다면, 프로세스는 단계 2604로 간다.
본 발명의 이런 실시예에 따라 다른 팔레트, 여기서는 이전 팔레트(2500)가 팔레트 예측자(2505)의 구축에 기여하는 것은 후속 단계들(2604 내지 2608)로부터 생길 수 있다.
이러한 단계들은 셔플링 동작이 도 25에서 2508을 참조하는 것을 허용한다. 이들은 선행하는 팔레트 "pal"의 복사로부터 생긴 요소들뿐만 아니라, 추가 요소들을 "pred"에 제공한다.
단계 2604는 루프 카운터 "j"를 0으로 초기화함으로써 이전 팔레트 "last"의 제1 요소를 선택한다.
이후, 단계 2605에서는 "pred" 또는 "last" 중 어느 하나의 최종 요소가 도달했는지 아닌지를 체크하는 것이 일어난다.
도달하지 않은 경우, 프로세스는 단계 2606으로 계속된다. 그렇지 않으면, 프로세스는 단계 2609에서 종료된다.
단계 2606은 "last" 내의 현재 요소 "j"가 이미 재사용되었는지 아닌지를 체크하는 것으로 구성된다. 상기 단계 2402에서와 같이, 이것은 "Use_pred" 어레이에서 이 요소와 연관되는 Use_pred 플래그가 0(재사용되지 않음) 또는 1(재사용됨)로 설정되는지를 체크하는 것으로 구성된다. 변형에서, 이것은 현재 요소가 구축 중인 "pred"에 이미 존재하는지 아닌지를 검증하는 것으로 구성될 수 있다.
재사용되지 않은 경우, 단계 2607에서는 현재 요소 "j"가 "last"에서 "pred"("pred"의 끝)에 추가되는 것이 발생한다. 그래서, "pred"의 다음 요소는 "i"를 증분하여 선택된다.
여하튼, "last" 내의 다음 요소는 단계 2608에서 "j"을 증분하여 선택된다.
"last" 또는 "pred"의 모든 요소들이 처리되었을 때, 프로세스는 단계 2609에서 종료된다.
도 26의 프로세스의 다음 반복을 위해, 구조 "last"가 CU3에 사용되는 팔레트(최종 사용된 팔레트일 수 있음)의 팔레트 예측자를 저장하기 위해, 즉, CU3에 대한 팔레트 예측자(2505)를 저장하는 "pred"의 복사를 수신함으로써, 업데이트될 수 있음에 유의한다. 다음 반복(새로운 코딩 유닛 CU4를 처리할 때)을 위한 최종 사용된 팔레트가 팔레트 예측자(2505)로부터 CU3을 위해 구축된 팔레트인 것에 유의한다. 따라서, 이것은 다음 반복을 위해 "pal"에 저장되어야만 하는 CU3을 위해 구축된 팔레트이다.
앞서 언급한 바와 같이, 본 실시예는 팔레트 예측자의 크기가 연속해서 증가하는 경향이 있는 그런 방식으로 각각의 새로운 팔레트 예측자를 구축하기 위한 방식을 제공한다. 물론, 수 NMAX는 팔레트 예측자의 최대 크기에 대한 제한을 제공한다. 그러나, NMAX는 보통 꽤 크게, 종종 팔레트들의 최대 크기보다 크게 선택된다.
Use_pred 플래그들의 비트맵이 새롭게 구성된 팔레트 예측자로부터 새로운 팔레트의 예측을 수행하기 위해 클라이언트 디바이스에 제공되어야 한다는 것을 상기해야 한다. NMAX의 값이 더 클수록, 비트맵 내의 관련없는 Use_pred 플래그들의 수가 더 커진다. 이것은 각각의 플래그가 적어도 1비트의 코스트를 갖기 때문에 전송시 코스트를 갖는다.
추가 기술 없이, 이러한 관련없는 코스트들을 줄이기 위한 방법은 NMAX를 Ncur 및 Nlast의 조합으로서 계산하는 것이다. 예를 들어, NMAX는 fact*Nlast로서 정의될 수 있으며, 이 경우 영향을 받은 컬러 포맷 및 컴포넌트(들)에 따라 팩트(fact)가 달라질 수 있다. 예를 들어, 팩트=6은 4:4:4 컬러 포맷을 위한 것인 반면, 팩트=1은 루마를 위한 것이고 팩트=2는 다른 포맷들의 크로마를 위한 것이다.
그러나, 이 접근법은, 특히 최적 NMAX가 약 64인 것으로 결정되는 도 26의 실시예의 경우에는 최적 해법이 아닌 것으로 밝혀졌다.
이하 도 27에 제안된 실시예는 비트맵들의 크기를 감소시키기 위해 이들에게 수정된 신택스를 제공한다. 특히, 플래그들의 비트맵은 비트맵이 미리 정의된 위치 이후에, 다른 팔레트를 예측하기 위해 팔레트 예측자의 엔트리의 선택을 정의하는 적어도 하나의 추가 플래그를 포함하는지 아닌지를 시그널링하기 위해 비트맵 내의 미리 정의된 위치에서 적어도 하나의 요소를 포함한다.
도 27은 팔레트(예를 들어, CU3을 처리하기 위한 팔레트)를 예측하기 위해 팔레트 예측자(예를 들어, 예측자(2505))와 연관되는 Use_pred 플래그들에 대한 수정된 신택스를 예시한다. 수정된 신택스가 임의의 비트맵에 사용될 수 있음에 유의한다.
상술한 비트맵(즉, 수정된 신택스가 없는)이 도 27의 상부에 도시된다. 이것은 보통 2개의 부분을 포함한다:
"0"으로 설정된 플래그들과 "1"로 설정된 플래그들이 섞인 부분(2700). 부분(2700)은 "1"로 설정된 최종 플래그에서 끝난다. 이 부분은 예측된 팔레트에 사용되는 팔레트 예측자의 요소들 모두를 정의한다; 및 
비트맵의 나머지 부분이며, 전적으로 "0"으로 설정된 플래그들로 이루어지고, 이에 따라 재사용되지 않은 요소들에 대응하는 부분(2701). 대응하는 요소들이 보통 오래되고 덜 사용되는 요소들이기 때문에 비트맵의 마지막 부분이 전적으로 "0"들로 이루어진다는 것이 일반적인 것임에 유의한다.
2개의 부분으로의 이러한 분할은 여기서 단지 예시적 목적을 위해 제공된 것임에 유의한다. 비트맵(2700+2701)은 본 발명에 따라 수정된 신택스가 구현되지 않은 경우에 제공된다.
이런 비트맵 아래에, 수정된 신택스를 가진 비트맵이 도시된다. 그 크기가 크게 감소된 것에 유의해야 한다.
수정된 신택스는 추가 요소들 또는 비트들을 일련의 Use_pred 플래그들 내의 특정한 위치에 삽입함으로써 연이은 "0" 플래그들(2702)의 존재를 이용한다.
예시와 같이, 비트들(2703 및 2704)은 이후 비트맵에서 "1"로 설정된 다른 Use_pred 플래그들이 존재하는지 아닌지를 나타내기 위해 추가되었다.
이들 추가 비트는 "예측의 끝" 플래그들로 지정되고, 이들은 팔레트 예측자 내의 대응하는 엔트리가 구성 중인 현재 팔레트에서 엔트리를 예측하기 위해 엔트리로서 선택되는지 아닌지에 관한 지시를 제공하지 않는다. 이와 반대로, 이들 추가 플래그는 Use_pred 플래그들을 오른쪽으로 시프트시킨다.
일례로서, "예측의 끝" 플래그들은 비트맵의 나머지 부분에서 1과 동일한 다른 플래그들이 존재하는 것을 지시하기 위해 값 "0"을 취할 수 있는 반면, 비트맵의 나머지에서 1과 동일한 다른 플래그들이 없을 때 값 "1을 취할 수 있다.
2703 및 2704의 예에 관하여, 플래그(2703)의 값 "0"은 서브파트(2705)에서 1로 설정되는 플래그에 의해 입증된 바와 같이 비트맵을 이용하여 예측하기 위해 나머지 요소들이 존재한다는 것을 나타내는 반면, 플래그(2704)는 어떤 요소도 더 이상 예측되지 않기 때문에(모든 다른 Use_pred 플래그들이 0으로 설정됨) 1로 설정된다.
그 결과, 플래그들(2703 및 2704)이 추가되는 동안, 본 예에서 서브파트(2702)만이 스킵된다 할지라도, 서브파트(2701)는 전부가 스킵될 수 있고, 그로 인해 전송의 코스트를 줄일 수 있다.
추가적인 "예측의 끝" 플래그들에 대한 위치들은 바람직하게 팔레트 모드의 특성들에 따라 미리 정의된다. 그러나, 이들은 다음의 것을 고려하여 선택되어야 한다:
작은 팔레트들에 대해 너무 많은 Use_pred 플래그들을 전송하는 것을 회피하기 위해 빨리 예측의 끝 플래그를 갖는 것이 가치가 있다; 및
비트맵을 쉽게 파싱하기 위해, 주기적 간격들, 이상적으로는 2의 제곱에서 예측의 끝 플래그들을 갖는 것이 가치가 있다.
이를 고려하여, 실시예는 4번째 Use_pred 플래그 위치 이후의 예측의 끝 플래그들, 및 16번째 Use_pred 플래그, 그 다음에 24번째 Use_pred 플래그 등등 이후에 시작하는 모든 8개의 Use_pred 플래그들에 미리 정의된 위치들을 제공한다.
도 27의 하부는 비트맵의 수정된 신택스를 디코딩하기 위한 단계들을 예시하는 흐름도이다.
프로세스의 단계들(2715 내지 2717)은 수정된 신택스에 따라 다르다.
단계 2710은 루프 카운터 "i"를 0으로 설정하고 예측된 요소들의 수 "j"를 0으로 설정하여 디코딩 루프를 초기화한다.
단계 2711는 이후, 예측자가 비어있고(N = 0) 디코딩할 플래그가 남아있지 않다고(요소들의 최대 수 NMAX를 갖는 팔레트) 일어날지라도, 팔레트 예측자에 남겨진 임의의 요소(i < N)가 있는지를 체크한다.
처리할 추가 요소가 없는 경우, 프로세스는 단계 2718에서 종료된다.
그렇지 않으면, Use_pred 플래그는 단계 2712에서 팔레트 예측자의 요소 i에 대해 디코딩된다.
단계 2713에서는, 요소 i가 구성 중인 팔레트를 예측하기 위해 이용되는지를 결정한다. 예를 들어, 1로 설정된 플래그는 팔레트 예측자의 대응하는 요소 i가 이용된 것을 의미한다.
긍정인 경우, 사용된 요소들의 수 "j"는 단계 2714에서 증분된다.
여하튼, 프로세스는 이것이 수정된 신택스가 없을지라도 단계 2719로 직접 가기보다는 단계 2715에서 계속된다.
단계 2715는 "예측의 끝" 플래그(예를 들어, 2703 또는 2704)가 현재 i번째 Use_pred 플래그의 다음에 존재하는지 아닌지를 체크한다. 예를 들어, 체크는 "i"의 값(예를 들어, 이것이 위에 제안된 바와 같이 4, 16, 24,...인지의 여부)을 기초로 할 수 있다.
다음 플래그가 "예측의 끝" 플래그가 아닌 경우, 정상 프로세스는 단계 2719로 가서 재개된다.
그렇지 않으면, "예측의 끝" 플래그는 단계 2716에서 디코딩된다. 이것이 디코딩되면, 단계 2717은 "예측의 끝" 플래그가 예측의 끝을 나타내는지, 즉 1로 설정되었는지를 결정한다.
"예측의 끝" 플래그가 예측의 끝을 나타내지 않은 경우, Use_pred 플래그들의 디코딩은 루프 카운터 "i"의 증분을 통해 다음 Use_pred 플래그를 선택함으로써 단계 2719에서 진행된다.
"예측의 끝" 플래그가 예측의 끝을 나타내는 경우, 프로세스는 2718에서 종료된다.
이 프로세스의 결과는 모든 관련 Use_pred 플래그들이, 팔레트 예측자의 어느 요소가 구성 중인 팔레트를 예측하기 위해 이용되어야 하는지 결정하기 위해 획득된 것이다. Use_pred 플래그가 획득되지 않은 요소들이 미사용된 것으로 간주되어야만 함에 유의한다.
신택스 요소들에 관한 다른 실시예에 따르면, 현재 팔레트를 팔레트 예측자를 이용하여 예측하는 것은 현재 팔레트의 적어도 하나의 대응하는 엔트리와 팔레트 예측자의 엔트리 사이의 차이에 대응하는 적어도 하나(아마도 2개 이상)의 엔트리 잔차를 획득하는 것을 포함한다. 이러한 실시예들에서, 현재 팔레트 요소와 팔레트 예측자 사이의 잔차는 비트스트림으로 전송된다. 잔차 Res[i]는 Pal[i]-pal_pred[j]와 동일하고,
여기서, Res[i]는 레벨 i에 대한 잔차이고, Pal[i]는 레벨 i에 대한 현재 팔레트 요소이고, pal_pred[j]는 레벨 j에 의해 식별된 요소 예측자이다. 팔레트 예측자 j가 보통 이것이 디코더에 의해 알려지지 않는다면 전송될 필요가 있음에 유의한다(예를 들어, j가 i에 대해 고정되기 때문에, 예로서 j=i).
3개의 컬러 컴포넌트들에 대한 잔차의 디코딩은 팔레트 요소의 디코딩과 상이하다. 사실상, 종래 기술에서 언급한 바와 같이, 팔레트 요소는 N 비트들의 고정 길이, N = 3* 비트 심도로 코딩된다. 잔차를 위해 그리고 비트들을 절약하기 위해, 각각의 컬러 컴포넌트 잔차는 골롬 코드와 같은 적응 코드로 코딩될 수 있다(블록 잔차의 계수들과 동일한 방식으로).
도 21은 팔레트 요소들과 컴포넌트 예측자들 사이에서 그런 잔차들을 갖는 것에 기초하는 디코딩 프로세스를 예시한다. 다시, 이 도면은 팔레트 디코딩과 관련되는 부분만을 보여준다. 게다가, 도면을 단순화하기 위해, 비트스트림은 나타내지 않았다.
팔레트의 디코딩된 크기는 단계 2101에서 비트스트림으로부터 추출되고, Palette_size는 단계 2102에서 디코딩된 Size + 1과 동일하게 설정된다. 각각의 팔레트 엔트리를 연속적으로 고려하는데 사용되는 변수 i는 단계 2103에서 0으로 설정된다. 이후 팔레트를 디코딩하기 위한 루프는 테스트 2104로 시작하여, 모든 팔레트 엔트리들이 처리되었는지를 결정한다. 팔레트 요소 i에서, 플래그, Use_pred는 단계 2105에서 비트스트림으로부터 디코딩되어, 팔레트 요소 i가 예측을 이용했는지 아닌지를 결정한다(테스트 2106). 팔레트 요소 i가 예측을 이용하지 않은 경우, 이것은 단계 2107에서 종래의 메커니즘들을 이용하여 디코딩되고, i와 동일한 레벨에서 팔레트에 추가된다. 이후 변수 i는 다음 팔레트 요소를 고려하기 위해 단계 2108에서 1씩 증분된다. 팔레트 요소 i가 예측을 이용한 경우, 예측자 인덱스 j는 단계 2112에서 비트스트림으로부터 디코딩된다. 코딩 효율 목적들을 위해, 예측자 인덱스 j를 인코딩하는데 사용되는 코드의 길이가 Predictor_of_Palette_size(2110)에 의존한다는 점에 유의한다. 따라서, 동시에, 팔레트 예측자(2110)는 상술한 바와 같이 획득되고, Predictor_of_Palette_size(2011)도 획득된다.
예측자 인덱스 j가 알려지면, 팔레트 요소의 잔차 Res[i]는 또한 단계 2113에서 비트스트림으로부터 디코딩된다. 그 후, 팔레트 요소 Pal[i]는 팔레트 예측자 Pal_Pred(2111)을 이용하여 단계 2114에서 공식 Res[i] + Pal_Pred[j]로부터 계산된다. 팔레트 요소 Pal[i]는 이후 현재 팔레트에 추가된다. 다음에, 변수 i는 다음 팔레트 요소를 고려하기 위해 단계 2108에서 1씩 증분된다. 이 프로세스의 끝에서, 현재 팔레트는 디코딩되었다.
일 실시예에서, 인덱스 j는 i와 동일하게 설정되고, 이 경우에 예측자 인덱스 j는 디코더로 전송되는 것이 더 이상 요구되지 않는다. 따라서, 모듈(2112)은 생략될 수 있다. 게다가, 잔차는 팔레트 예측자에서 동일 엔트리 인덱스/레벨을 가진 대응하는 엔트리를 갖는 현재 팔레트의 모든 요소에 대해 획득될 수 있다. 이 경우에, i가 Predictor_of_Palette_size보다 크거나 같은 경우, 잔차는 디코딩되지 않는다. 게다가, 플래그 Use_pred는 디코더가 어느 팔레트 요소가 Predictor_of_Palette_size에 기초하여 예측하는지를 알기 때문에 더 이상 요구되지 않는다. 그 결과, 모듈들(2105 및 2106)은 생략될 수 있다. 이러한 접근법들은 예측자들의 시그널링을 제거함으로써, 팔레트 예측에 요구된 신호 비트들의 수를 감소시킨다. 이것은 팔레트 요소들이 이들의 발생에 따라 정렬될 때 유용하다.
실시예들에서, 3개(또는 그 이상)의 컬러 컴포넌트 중 하나 또는 두 개만이 예측된다.
위에서는, 팔레트 예측자를 획득하기 위한 여러 방식(도 14-18, 22 및 24-26), 및 팔레트 예측자로부터 팔레트의 예측을 정의하고 시그널링하기 위한 여러 방식(도 19-22 및 27)이 설명되었다. 이러한 실시예들은, 현재 팔레트가 인트라 예측될 때 잔차 접근법만이 사용될 수 있다는 점을 제외하고는 결합될 수 있다(그렇지 않으면 2개의 엔트리가 팔레트에서 동일할 것이다). 바람직한 실시예에서, 팔레트 예측자는 CTB들의 각각의 라인 또는 각각의 CTB에서 리셋을 가진 최종 디코딩된 CU이고; 팔레트 예측자는 팔레트 예측자의 요소들이 구축 중인 현재 팔레트에서 복사되어야 하는지 아닌지를 나타내는 플래그 비트맵으로 시그널링된다.
도 23은 본 발명의 하나 이상의 실시예의 구현를 위한 컴퓨팅 디바이스(2300)의 개략적인 블록도이다. 컴퓨팅 디바이스(2300)는 마이크로-컴퓨터, 워크스테이션 또는 광 포터블 디바이스와 같은 디바이스일 수 있다. 컴퓨팅 디바이스(2300)는 통신 버스를 포함하며, 통신 버스는 다음에 접속된다:
- CPU로 지칭되는 마이크로프로세서와 같은 중앙 처리 유닛(2301),
- 본 발명의 실시예에 따른 이미지의 적어도 일부를 인코딩 또는 디코딩하기 위한 방법을 구현하기 위해 필요한 변수 및 파라미터를 기록하도록 적응되는 레지스터는 물론이고, 본 발명의 실시예의 방법의 실행가능 코드를 저장하기 위한, RAM으로 지칭되는 랜덤 액세스 메모리(2302) - 그의 메모리 용량은, 예를 들어 확장 포트에 접속된 선택적 RAM에 의해서 확장될 수 있음 -, 
- 본 발명의 실시예를 구현하기 위한 컴퓨터 프로그램을 저장하기 위한, ROM으로 지칭되는 판독 전용 메모리(2303),
- 네트워크 인터페이스(2304)는 전형적으로 처리될 디지털 데이터가 전송 또는 수신되는 통신 네트워크를 통해 접속된다. 네트워크 인터페이스(2304)는 단일 네트워크 인터페이스이거나, 또는 상이한 네트워크 인터페이스의 세트로 이루어질 수 있다(예를 들면, 유선 및 무선 인터페이스, 또는 상이한 종류의 유선 또는 무선 인터페이스). 데이터 패킷은 CPU(2301)에서 실행되는 소프트웨어 애플리케이션의 제어 하에 전송을 위해서 네트워크 인터페이스에 기록되거나, 수신을 위해서 네트워크 인터페이스로부터 판독된다; 
- 사용자 인터페이스(2305)는 사용자로부터 입력들을 수신하거나 정보를 사용자에게 표시하기 위해 사용될 수 있다; 
- HD로 지칭되는 하드 디스크(2306)는 대용량 스토리지 디바이스로서 제공될 수 있다;
- I/O 모듈(2307)은 데이터를 비디오 소스나 디스플레이와 같은 외부 디바이스들로부터/로 수신하고/전송하기 위해 이용될 수 있다.
실행 가능한 코드는 하드 디스크(2306) 상의 판독 전용 메모리(2303)에 저장되거나, 예를 들어 디스크와 같은 이동식 디지털 매체에 저장될 수 있을 것이다. 변형에 따르면, 프로그램의 실행 가능한 코드는 실행되기 전에 하드 디스크(2306)와 같은 통신 디바이스(2300)의 스토리지 수단들 중 하나에 저장되기 위해서, 네트워크 인터페이스(2304)를 통해 통신 네트워크의 수단에 의해서 수신될 수 있다.
중앙 처리 유닛(2301)은, 본 발명의 실시예에 따른 프로그램 또는 프로그램들의 소프트웨어 코드의 명령어 - 이 명령어는 전술한 스토리지 수단들 중 하나에 저장되어 있음 - 또는 그 일부를 제어하고 그 실행을 명령하도록 적응된다. 전원을 켠 후에, CPU(2301)는, 예를 들어 프로그램 ROM(2303) 또는 하드 디스크(HD)(2306)로부터 이들 명령어가 로딩된 후에, 소프트웨어 애플리케이션에 관련되는 메인 RAM 메모리(2302)로부터의 명령어를 실행할 수 있다. 그러한 소프트웨어 애플리케이션은, CPU(2301)에 의해 실행될 때, 도 14, 15, 17, 19, 21, 22, 및 24 내지 27에 도시된 흐름도들의 단계들이 수행되게 한다.
도 14, 15, 17, 19, 21, 22, 및 24 내지 27에 도시된 알고리즘의 임의의 단계는 PC("Personal Computer"), DSP("Digital Signal Processor") 또는 마이크로컨트롤러와 같은, 프로그램가능 컴퓨팅 머신에 의한 명령어의 세트 또는 프로그램의 실행에 의해 소프트웨어로 구현될 수 있고, 혹은, FPGA("Field-Programmable Gate Array") 또는 ASIC("Application-Specific Integrated Circuit")과 같은 머신 또는 전용 컴포넌트에 의해 하드웨어로 구현될 수 있다.
본 발명이 특정의 실시예들을 참조하여 이상에서 기술되어 있지만, 본 발명이 특정의 실시예들로 제한되지 않고, 본 발명의 범위 내에 속하는 수정이 통상의 기술자에게 명백할 것이다.
단지 예로서 제공되어 있고 첨부된 특허청구범위에 의해서만 결정되는 본 발명의 범위를 제한하기 위한 것이 아닌 이상의 예시적 실시예들을 참조하면 많은 추가의 수정들 및 변환들이 기술 분야의 통상의 기술자에게 안출될 것이다. 특히, 다양한 실시예로부터의 상이한 특징부가 적절하게 상호교환될 수 있을 것이다.
청구항들에서, 용어 "포함하는"은 다른 요소들 또는 단계들을 배제하지 않는다. 상이한 특징들이 서로 상이한 종속항들에 인용되어 있다는 사실만으로는 이들 특징의 조합이 유리하게 이용될 수 없다는 것을 나타내지 않는다.

Claims (17)

  1. 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 방법으로서, 상기 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하는, 방법이며,
    2개 이상의 팔레트들의 엔트리들로부터 구축되는 팔레트 예측자를 이용하여 상기 현재 팔레트를 예측하는 단계를 포함하고,
    상기 2개 이상의 팔레트들은 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트들이고,
    상기 현재 팔레트의 예측은 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 주어진 팔레트로부터 엔트리를 선택하는 것과 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 다른 팔레트로부터 엔트리들 모두를 선택하는 것을 포함하고,
    상기 다른 팔레트는 상기 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는데 사용되고,
    상기 주어진 팔레트로부터 엔트리를 선택하는 것은, 각각이 상기 주어진 팔레트 내의 대응하는 엔트리가 상기 다른 팔레트 내의 엔트리로서 선택되는지 아닌지를 정의하는 플래그들에 기초하고, 또한 상기 주어진 팔레트의 엔트리가 상기 다른 팔레트 내의 엔트리로서의 비선택을 정의하는 플래그에 대응하는지를 결정하는 것과 만약 대응하는 것으로 결정되면 상기 현재 팔레트를 예측하기 위해 상기 팔레트 예측자 내에 포함될 상기 주어진 팔레트의 그 엔트리를 선택하는 것을 포함하는, 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 주어진 팔레트는 상기 이미지 내의 픽셀들의 상기 현재 블록에 바로 선행하는 픽셀들의 블록에 바로 선행하는 상기 이미지 내의 픽셀들의 블록을 처리하는 데 사용된 팔레트인, 방법.
  4. 제1항에 있어서,
    상기 플래그들은, 비트맵을 생성하고, 상기 비트맵은 미리 정의된 위치 이후에 상기 다른 팔레트를 생성하기 위해 상기 주어진 팔레트의 엔트리의 선택을 정의하는 하나 이상의 추가 플래그를 포함하는지 아닌지를 시그널링하기 위한, 상기 비트맵 내의 상기 미리 정의된 위치에서의 하나 이상의 요소를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 현재 팔레트는 플래그들을 이용하여 상기 팔레트 예측자로부터 예측되고, 각각의 플래그는 상기 팔레트 예측자 내의 대응하는 엔트리가 상기 현재 팔레트 내의 엔트리를 생성하기 위한 엔트리로서 선택되는지 아닌지를 정의하는, 방법.
  6. 제1항에 있어서,
    상기 2개 이상의 팔레트의 엔트리는 구축 중인 상기 팔레트 예측자 내에 아직 유사한 엔트리가 존재하지 않는 경우 구축 중인 상기 팔레트 예측자에 추가되는, 방법.
  7. 디지털 이미지들의 시퀀스를 비트스트림에 인코딩하는 방법이며,
    팔레트 코딩 모드를 이용하여 인코딩되고 있는 이미지의 하나 이상의 블록은 제1항에 따르는 픽셀들의 현재 블록을 처리하는 방법을 포함하는, 방법.
  8. 디지털 이미지들의 인코딩된 시퀀스를 포함하는 비트스트림을 디코딩하는 방법이며,
    팔레트 코딩 모드를 이용하여 인코딩된 이미지의 하나 이상의 블록은 제1항에 따르는 픽셀들의 현재 블록을 처리하는 방법을 포함하는, 방법.
  9. 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하기 위한 디바이스로서, 상기 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하는, 디바이스이며,
    2개 이상의 팔레트들의 엔트리들로부터 구축되는 팔레트 예측자를 이용하여 상기 현재 팔레트를 예측하기 위한 예측 수단을 포함하고,
    상기 2개 이상의 팔레트들은 픽셀들의 블록들을 처리하는 데 이전에 사용된 팔레트들이고,
    상기 현재 팔레트의 예측은 상기 2개 이상의 팔레트들 중 주어진 팔레트로부터 엔트리를 선택하는 것과 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 다른 팔레트로부터 엔트리들 모두를 선택하는 것을 포함하고,
    상기 다른 팔레트는 상기 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는데 사용되고,
    상기 주어진 팔레트로부터 엔트리를 선택하는 것은, 각각이 상기 주어진 팔레트 내의 대응하는 엔트리가 상기 다른 팔레트 내의 엔트리로서 선택되는지 아닌지를 정의하는 플래그들에 기초하며,
    상기 예측 수단은, 상기 주어진 팔레트의 엔트리가 상기 다른 팔레트 내의 엔트리로서의 비선택을 정의하는 플래그에 대응하는지 여부를 결정하고 만약 대응하는 것으로 결정되면 상기 현재 팔레트를 예측하기 위해 상기 팔레트 예측자 내에 포함될 상기 주어진 팔레트의 그 엔트리를 선택하도록 구성되는, 디바이스.
  10. 삭제
  11. 디지털 이미지들의 시퀀스를 비트스트림으로 인코딩하기 위한 디바이스로서, 이미지의 픽셀들의 현재 블록이 팔레트 코딩 모드를 이용하여 인코딩되고, 상기 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하는, 디바이스이며,
    2개 이상의 팔레트들의 엔트리들로부터 구축되는 팔레트 예측자를 이용하여 상기 현재 팔레트를 예측하기 위한 수단을 포함하고,
    상기 2개 이상의 팔레트들은 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트들이고,
    상기 현재 팔레트의 예측은 상기 2개 이상의 팔레트들 중 주어진 팔레트로부터 엔트리를 선택하는 것과 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 다른 팔레트로부터 엔트리들 모두를 선택하는 것을 포함하고,
    상기 다른 팔레트는 상기 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는데 사용되고,
    상기 주어진 팔레트로부터 엔트리를 선택하는 것은, 각각이 상기 주어진 팔레트 내의 대응하는 엔트리가 상기 다른 팔레트 내의 엔트리로서 선택되는지 아닌지를 정의하는 플래그들에 기초하며,
    상기 수단은, 상기 주어진 팔레트의 엔트리가 상기 다른 팔레트 내의 엔트리로서의 비선택을 정의하는 플래그에 대응하는지 여부를 결정하고 만약 대응하는 것으로 결정되면 상기 현재 팔레트를 예측하기 위해 상기 팔레트 예측자 내에 포함될 상기 주어진 팔레트의 그 엔트리를 선택하도록 구성된, 디바이스.
  12. 디지털 이미지들의 시퀀스를 포함하는 비트스트림을 디코딩하기 위한 디바이스로서, 이미지의 픽셀들의 현재 블록이 팔레트 코딩 모드를 이용하여 인코딩되어 있고, 상기 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하는, 디바이스이며,
    2개 이상의 팔레트들의 엔트리들로부터 구축되는 팔레트 예측자를 이용하여 상기 현재 팔레트를 예측하기 위한 수단을 포함하고,
    상기 2개 이상의 팔레트들은 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트들이고,
    상기 현재 팔레트의 예측은 상기 2개 이상의 팔레트들 중 주어진 팔레트로부터 엔트리를 선택하는 것과 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 다른 팔레트로부터 엔트리들 모두를 선택하는 것을 포함하고,
    상기 다른 팔레트는 상기 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는데 사용되고,
    상기 주어진 팔레트로부터 엔트리를 선택하는 것은, 각각이 상기 주어진 팔레트 내의 대응하는 엔트리가 상기 다른 팔레트 내의 엔트리로서 선택되는지 아닌지를 정의하는 플래그들에 기초하고,
    상기 수단은 상기 주어진 팔레트의 엔트리가 상기 다른 팔레트 내의 엔트리로서의 비선택을 정의하는 플래그에 대응하는지 여부를 결정하고, 만약 대응하는 것으로 결정되면 상기 현재 팔레트를 예측하기 위해 상기 팔레트 예측자 내에 포함될 상기 주어진 팔레트의 그 엔트리를 선택하도록 구성된, 디바이스.
  13. 컴퓨터 판독 가능 저장 매체로서, 컴퓨터에 의한 실행시, 상기 컴퓨터로 하여금 팔레트 코딩 모드를 이용하여 이미지의 픽셀들의 현재 블록을 처리하는 단계를 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램을 저장한, 컴퓨터 판독 가능 저장 매체이며,
    상기 팔레트 코딩 모드는 각각의 엔트리 인덱스들을 대응하는 픽셀 값들과 연관시키는 엔트리들의 세트를 포함하는 현재 팔레트를 이용하며,
    상기 현재 블록을 처리하는 단계는, 2개 이상의 팔레트들의 엔트리들로부터 구축되는 팔레트 예측자를 이용하여 상기 현재 팔레트를 예측하는 단계를 포함하고, 상기 2개 이상의 팔레트들은 픽셀들의 블록을 처리하는 데 이전에 사용된 팔레트들이고,
    상기 현재 팔레트의 예측은 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 주어진 팔레트로부터 엔트리를 선택하는 것과 상기 팔레트 예측자의 엔트리로서 상기 2개 이상의 팔레트들 중 다른 팔레트로부터 엔트리들 모두를 선택하는 것을 포함하고,
    상기 다른 팔레트는 상기 현재 블록에 바로 선행하는 픽셀들의 블록을 처리하는데 사용되고,
    상기 주어진 팔레트로부터 엔트리를 선택하는 것은, 각각이 상기 주어진 팔레트 내의 대응하는 엔트리가 상기 다른 팔레트 내의 엔트리로서 선택되는지 아닌지를 정의하는 플래그들에 기초하고, 또한 상기 주어진 팔레트의 엔트리가 상기 다른 팔레트 내의 엔트리로서 비선택을 정의하는 플래그에 대응하는지 여부를 결정하는 것과 만약 대응하는 것으로 결정되면 상기 현재 팔레트를 예측하기 위해 상기 팔레트 예측자 내에 포함될 상기 주어진 팔레트의 그 엔트리를 선택하는 것을 포함하는, 컴퓨터 판독 가능 저장 매체.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020167017790A 2013-12-10 2014-12-10 팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치 KR101897378B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GBGB1321850.8A GB201321850D0 (en) 2013-12-10 2013-12-10 Palette Prediction
GB1321850.8 2013-12-10
GB1322468.8A GB2521410B (en) 2013-12-10 2013-12-18 Method and apparatus for encoding or decoding blocks of pixel
GB1322468.8 2013-12-18
GB1403823.6 2014-03-04
GB1403823.6A GB2523992B (en) 2014-03-04 2014-03-04 Method and apparatus for encoding or decoding blocks of pixel
PCT/EP2014/077297 WO2015086718A2 (en) 2013-12-10 2014-12-10 Method and apparatus for encoding or decoding blocks of pixel

Publications (2)

Publication Number Publication Date
KR20160093064A KR20160093064A (ko) 2016-08-05
KR101897378B1 true KR101897378B1 (ko) 2018-09-10

Family

ID=53371914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017790A KR101897378B1 (ko) 2013-12-10 2014-12-10 팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치

Country Status (9)

Country Link
US (2) US10834412B2 (ko)
EP (3) EP3425914B1 (ko)
JP (1) JP6465890B2 (ko)
KR (1) KR101897378B1 (ko)
CN (1) CN105814891B (ko)
ES (1) ES2893815T3 (ko)
PL (1) PL3425914T3 (ko)
RU (2) RU2689189C2 (ko)
WO (1) WO2015086718A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200107746A (ko) * 2019-03-08 2020-09-16 소니 주식회사 이미지 압축을 위한 하이브리드 팔레트-dpcm 코딩

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659606B (zh) 2013-10-14 2019-06-18 微软技术许可有限责任公司 用于视频和图像编码和解码的方法、系统和介质
WO2015086717A2 (en) 2013-12-10 2015-06-18 Canon Kabushiki Kaisha Improved palette mode in hevc
GB2523992B (en) * 2014-03-04 2018-06-06 Canon Kk Method and apparatus for encoding or decoding blocks of pixel
RU2689189C2 (ru) 2013-12-10 2019-05-24 Кэнон Кабусики Кайся Способ и устройство для кодирования или декодирования блока пикселов
WO2015090217A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette table prediction
EP3090559A2 (en) 2014-01-02 2016-11-09 VID SCALE, Inc. Two-dimensional palette coding for screen content coding
CN104853209B (zh) * 2014-02-16 2020-09-29 同济大学 图像编码、解码方法及装置
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
CN106105229B (zh) 2014-03-14 2019-03-15 寰发股份有限公司 使用调色板编码来编码视频数据的块的方法及装置
KR102494913B1 (ko) * 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
JP6328277B2 (ja) 2014-06-20 2018-05-23 寰發股▲ふん▼有限公司HFI Innovation Inc. ビデオ符号化(coding)のパレット予測器シグナリング方法
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
US9986248B2 (en) * 2015-01-29 2018-05-29 Qualcomm Incorporated Palette mode coding for video coding
US10212434B2 (en) 2015-01-30 2019-02-19 Qualcomm Incorporated Palette entries coding in video coding
KR20180010260A (ko) * 2015-06-03 2018-01-30 미디어텍 인크. 화상 및 비디오 데이터의 팔레트 코딩 방법
WO2016197314A1 (en) * 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
JP6662123B2 (ja) * 2016-03-14 2020-03-11 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
CN107295343A (zh) * 2017-06-27 2017-10-24 郑州云海信息技术有限公司 一种调色板变换算法的优化方法、装置及系统
US11470319B2 (en) * 2018-10-05 2022-10-11 Lg Electronics Inc. Method and device for coding transform coefficient
US11330306B2 (en) * 2019-08-07 2022-05-10 Tencent America LLC Method and apparatus for video coding
MX2022002617A (es) * 2019-09-12 2022-03-25 Bytedance Inc Uso de predictor de paleta en codificacion de video.
US20210203960A1 (en) * 2019-12-31 2021-07-01 Alibaba Group Holding Limited Method and apparatus for initializing predictor palette
CN112633168B (zh) * 2020-12-23 2023-10-31 长沙中联重科环境产业有限公司 一种垃圾车翻桶动作识别方法、装置及垃圾车
CN114299172B (zh) 2021-12-31 2022-07-08 广东工业大学 一种用于视觉系统的平面编码靶标及其实时位姿测量方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015006724A2 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Palette prediction in palette-based video coding
WO2015086717A2 (en) 2013-12-10 2015-06-18 Canon Kabushiki Kaisha Improved palette mode in hevc
WO2015148814A1 (en) 2014-03-26 2015-10-01 Qualcomm Incorporated Determining palette size, palette entries and filtering of palette coded blocks in video coding
WO2015179814A1 (en) 2014-05-23 2015-11-26 Qualcomm Incorporated Predictor palette initialization in palette-based video coding

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023558A (en) 1996-06-27 2000-02-08 Apple Computer, Inc. Graphics compression for an emulation system
JPH11161782A (ja) 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US7415154B2 (en) 2002-02-01 2008-08-19 Koninklijke Philips Electronics N.V. Compression of palettized color images with variable length color codes
US7433526B2 (en) 2002-04-30 2008-10-07 Hewlett-Packard Development Company, L.P. Method for compressing images and image sequences through adaptive partitioning
US7302006B2 (en) 2002-04-30 2007-11-27 Hewlett-Packard Development Company, L.P. Compression of images and image sequences through adaptive partitioning
JP2004179687A (ja) 2002-11-22 2004-06-24 Toshiba Corp 動画像符号化/復号化方法及び装置
EP1445734B1 (en) 2003-02-06 2007-08-08 STMicroelectronics S.r.l. Method and apparatus for texture compression
JP4515832B2 (ja) * 2004-06-14 2010-08-04 オリンパス株式会社 画像圧縮装置、及び画像復元装置
JP2006005421A (ja) 2004-06-15 2006-01-05 Olympus Corp 画像処理方法、及びコンピュータプログラムを格納したコンピュータで読み取り可能な記憶媒体
JP4769039B2 (ja) 2005-07-26 2011-09-07 パナソニック株式会社 デジタル信号符号化および復号化装置ならびにその方法
JP4736619B2 (ja) 2005-08-18 2011-07-27 沖電気工業株式会社 画像処理装置および画像処理方法
EP1924970B1 (en) 2005-08-19 2009-03-11 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Texture compression based on two hues with modified brightness
CA2845591C (en) 2006-01-05 2015-12-08 Nippon Telegraph And Telephone Corporation Video encoding method and decoding method, apparatuses therefor, programs therefor, and storage media for storing the programs
JP4747917B2 (ja) 2006-04-03 2011-08-17 株式会社日立製作所 デジタル放送受信装置
WO2007127452A2 (en) 2006-04-28 2007-11-08 Avocent Corporation Dvc delta commands
US20090010533A1 (en) 2007-07-05 2009-01-08 Mediatek Inc. Method and apparatus for displaying an encoded image
EP2154893A1 (en) 2008-08-13 2010-02-17 Thomson Licensing Method for modifying a reference block of a reference image, method for encoding or decoding a block of an image by help of a reference block and device therefor and storage medium or signal carrying a block encoded by help of a modified reference block
WO2010022002A1 (en) 2008-08-19 2010-02-25 Marvell World Trade Ltd Systems and methods for perceptually lossless video compression
CN101645173B (zh) 2008-12-16 2012-05-16 中国科学院声学研究所 一种随机调色板编码系统及方法
JP5221430B2 (ja) 2009-03-24 2013-06-26 株式会社東芝 画像圧縮装置および画像伸張装置
RU2420021C2 (ru) * 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
JP2011035807A (ja) 2009-08-05 2011-02-17 Victor Co Of Japan Ltd 動画像符号化方法及び動画像符号化装置
JP5222870B2 (ja) 2010-03-05 2013-06-26 日本放送協会 イントラ予測装置、符号化器、復号器及びプログラム
EP3493543B1 (en) 2010-12-17 2020-12-23 Mitsubishi Electric Corporation Moving image encoding device, moving image decoding device, moving image encoding method and moving image decoding method
RU2562771C2 (ru) 2011-02-16 2015-09-10 Долби Лабораторис Лайсэнзин Корпорейшн Способы и системы генерирования коэффициентов фильтра и конфигурирования фильтров
US9654777B2 (en) * 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
WO2015006169A1 (en) 2013-07-08 2015-01-15 Sony Corporation Improvement for palette coding mode
RU2689189C2 (ru) 2013-12-10 2019-05-24 Кэнон Кабусики Кайся Способ и устройство для кодирования или декодирования блока пикселов

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015006724A2 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Palette prediction in palette-based video coding
WO2015086717A2 (en) 2013-12-10 2015-06-18 Canon Kabushiki Kaisha Improved palette mode in hevc
WO2015148814A1 (en) 2014-03-26 2015-10-01 Qualcomm Incorporated Determining palette size, palette entries and filtering of palette coded blocks in video coding
WO2015179814A1 (en) 2014-05-23 2015-11-26 Qualcomm Incorporated Predictor palette initialization in palette-based video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wenjing Zhu, ‘Template-based palette prediction’, (JCTVC-N0169), JCT-VC of ITU-T SG16 WP3와 ISO/IEC JTC1/SC29/WG11, 13th Meeting: Incheon, KR, 2013.07.27*

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200107746A (ko) * 2019-03-08 2020-09-16 소니 주식회사 이미지 압축을 위한 하이브리드 팔레트-dpcm 코딩
KR102267206B1 (ko) 2019-03-08 2021-06-22 소니그룹주식회사 이미지 압축을 위한 하이브리드 팔레트-dpcm 코딩
US11503311B2 (en) 2019-03-08 2022-11-15 Sony Group Corporation Hybrid palette-DPCM coding for image compression

Also Published As

Publication number Publication date
EP3425914B1 (en) 2021-08-18
RU2018104096A (ru) 2019-02-22
CN105814891B (zh) 2019-04-02
RU2645358C2 (ru) 2018-02-21
US11259033B2 (en) 2022-02-22
CN105814891A (zh) 2016-07-27
EP3080990A2 (en) 2016-10-19
RU2018104096A3 (ko) 2019-02-22
EP3425914A1 (en) 2019-01-09
WO2015086718A2 (en) 2015-06-18
ES2893815T3 (es) 2022-02-10
RU2689189C2 (ru) 2019-05-24
PL3425914T3 (pl) 2022-02-14
JP6465890B2 (ja) 2019-02-06
US10834412B2 (en) 2020-11-10
WO2015086718A3 (en) 2015-10-29
US20160309172A1 (en) 2016-10-20
EP3926955A1 (en) 2021-12-22
JP2017505010A (ja) 2017-02-09
US20210029367A1 (en) 2021-01-28
EP3080990B1 (en) 2018-09-05
KR20160093064A (ko) 2016-08-05

Similar Documents

Publication Publication Date Title
KR101897378B1 (ko) 팔레트 코딩 모드에서 팔레트를 인코딩 또는 디코딩하기 위한 방법 및 장치
KR102088560B1 (ko) 자족식 코딩 구조를 인코딩 또는 디코딩할 때의 팔레트 예측자 초기화기
US10972742B2 (en) Encoding process using a palette mode
KR101869018B1 (ko) Hevc에서의 향상된 팔레트 모드
KR102020101B1 (ko) 비디오 코덱에서 신택스 요소 인코딩을 위한 방법 및 장치
KR102088605B1 (ko) 팔레트 모드를 사용하는 개선된 인코딩 프로세스
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
GB2523992A (en) Method and apparatus for encoding or decoding blocks of pixel
GB2528431A (en) Improved encoding process using a palette mode

Legal Events

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