KR20170031133A - 진보된 팔레트 예측 및 시그널링 - Google Patents

진보된 팔레트 예측 및 시그널링 Download PDF

Info

Publication number
KR20170031133A
KR20170031133A KR1020177000528A KR20177000528A KR20170031133A KR 20170031133 A KR20170031133 A KR 20170031133A KR 1020177000528 A KR1020177000528 A KR 1020177000528A KR 20177000528 A KR20177000528 A KR 20177000528A KR 20170031133 A KR20170031133 A KR 20170031133A
Authority
KR
South Korea
Prior art keywords
palette
predictor list
palette predictor
candidate
neighboring pixels
Prior art date
Application number
KR1020177000528A
Other languages
English (en)
Inventor
웨이 푸
펑 저우
마르타 카르체비츠
라잔 랙스맨 조쉬
바딤 세레긴
로할스 호엘 솔레
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20170031133A publication Critical patent/KR20170031133A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for 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/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/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

비디오 코더는 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정할 수도 있다. 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 값을 지정한다. 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 비디오 코더는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보에 포함시킬 수도 있다.

Description

진보된 팔레트 예측 및 시그널링{ADVANCED PALETTE PREDICTION AND SIGNALING}
본 출원은 2014년 7월 11일에 출원된 미국 가특허 출원번호 제 62/023,436호의 이익을 주장하며, 이의 전체 내용이 참고로 포함된다.
기술 분야
본 개시물은 비디오 인코딩 및 비디오 디코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기들 (PDA들), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트폰들", 원격 화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, AVC (Advanced Video Coding), HEVC (High Efficiency Video Coding) 표준, 및 이런 표준들의 확장판들에 의해 정의된 표준들에서 설명되는 비디오 코딩 기법들과 같은, 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이런 비디오 압축 기법들을 구현함으로써, 디지털 비디오 정보를 좀더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 용장성을 감소시키거나 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행한다. 블록-기반 비디오 코딩에 있어, 비디오 슬라이스 (즉, 비디오 프레임 또는 비디오 프레임의 일부) 는 비디오 블록들로 파티셔닝될 수도 있다. 픽처의 인트라-코딩된 (I) 슬라이스에서의 비디오 블록들은 동일한 픽처의 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 픽처의 인터-코딩된 (P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 픽처에서의 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측, 또는 다른 참조 픽처들에서의 참조 샘플들에 대한 시간 예측을 이용할 수도 있다. 픽처들은 프레임들로 지칭될 수 있으며, 참조 픽처들은 참조 프레임들로서 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 초래한다. 잔차 데이터는 코딩될 원래 블록과 예측 블록 사이의 픽셀 차이들을 나타낸다. 인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터에 따라서 인코딩되며, 잔차 데이터는 코딩된 블록과 예측 블록 사이의 차이를 나타낸다. 인트라-코딩된 블록은 인트라-코딩 모드 및 잔차 데이터에 따라서 인코딩된다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환될 수도 있으며, 그 결과 잔차 계수들이 되고, 그후 이들은 양자화될 수도 있다. 처음에 2차원 어레이로 배열된, 양자화된 계수들은 계수들의 1차원 벡터를 생성하기 위해 스캐닝될 수도 있으며, 엔트로피 코딩이 더욱 더 많은 압축을 달성하기 위해 적용될 수도 있다.
일반적으로, 본 개시물은 비디오 데이터의 팔레트 모드 코딩을 위한 기법들을 설명한다. 앞에서 설명한 바와 같이, 비디오 코더는 하나 이상의 후보 엔트리들을 포함하는 팔레트 예측자 리스트를 결정할 수도 있다. 후보 엔트리들의 각각은 현재의 블록에 이웃하는 상이한, 개별 복원된 픽셀의 적어도 하나의 샘플 값을 지정할 수도 있다. 비디오 코더는 팔레트 예측자 리스트의 하나 이상의 후보 엔트리들을 현재의 블록의 팔레트에 포함시킬 수도 있다.
일 예에서, 본 개시물은 비디오 데이터를 디코딩하는 방법을 기술하며, 본 방법은 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록에 인접한, 상기 팔레트 예측자 리스트를 결정하는 단계; 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 단계; 비트스트림에서 시그널링된 하나 이상의 신택스 엘리먼트들에 기초하여, 현재의 블록의 픽셀에 대한 인덱스 값을 획득하는 단계; 픽셀에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별하는 단계; 및 식별된 팔레트 엔트리에 의해 지정된 적어도 하나의 샘플 값에 기초하여, 픽셀의 적어도 하나의 복원된 샘플 값을 결정하는 단계를 포함한다.
다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 방법을 기술하며, 본 방법은 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하는 단계; 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 단계; 및 비트스트림에서, 현재의 블록의 픽셀에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계로서, 상기 인덱스 값은 팔레트에서의 엔트리에 대응하는, 상기 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계를 포함한다.
다른 예에서, 본 개시물은 비디오 데이터를 코딩하도록 구성된 디바이스를 기술하며, 상기 디바이스는, 비디오 데이터를 저장하도록 구성된 메모리; 및 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 것으로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하고; 그리고 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키도록 구성된다.
다른 예에서, 본 개시물은 비디오 데이터를 디코딩하도록 구성된 디바이스를 기술하며, 상기 디바이스는, 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 수단으로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하는 수단; 및 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 수단을 포함한다.
다른 예에서, 본 개시물은 명령들을 저장하고 있는 데이터 저장 매체를 기술하며, 상기 명령들은, 실행될 때, 비디오 데이터를 코딩하는 디바이스로 하여금, 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하도록 하는 것으로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하도록 하고; 그리고 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키도록 한다.
본 개시물의 하나 이상의 예들의 세부 사항들은 첨부도면 및 아래의 설명에서 개시된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명, 도면들, 및 청구범위로부터 명백할 것이다.
도 1 은 본 개시물에서 설명하는 기법들을 활용할 수도 있는 예시적인 비디오 코딩 시스템을 예시하는 블록도이다.
도 2 는 예시적인 팔레트 스터핑 프로세스를 예시하는 개념도이다.
도 3 은 예시적인 예측 플래그들을 예시하는 개념도이다.
도 4 는 별도의 팔레트 예측자 리스트를 위한 후보 픽셀들을 예시하는 개념도이다.
도 5 는 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 예시하는 블록도이다.
도 6 은 본 개시물에서 설명하는 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 7 은 본 개시물의 기법에 따른, 예시적인 디코딩 동작을 예시하는 플로우차트이다.
도 8 은 본 개시물의 기법에 따른, 예시적인 인코딩 동작을 예시하는 플로우차트이다.
도 9 는 본 개시물의 기법에 따른, 팔레트를 발생시키기 위한 예시적인 동작을 예시하는 플로우차트이다.
도 10 은 본 개시물의 기법에 따른, 원래 팔레트 예측자 리스트를 발생시키기 위한 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
도 11 은 본 개시물의 기법에 따른, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 디코더의 예시적인 동작을 예시하는 플로우차트이다.
도 12 는 본 개시물의 기법에 따른, 원래 팔레트 예측자 리스트를 발생시키기 위한 비디오 인코더의 예시적인 동작을 예시하는 플로우차트이다.
도 13 은 본 개시물의 기법에 따른, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 인코더의 예시적인 동작을 예시하는 플로우차트이다.
본 개시물의 양태들은 비디오 코딩 및 비디오 데이터 압축을 위한 기법들에 관한 것이다. 특히, 본 개시물은 비디오 데이터의 팔레트-기반 코딩을 위한 기법들을 설명한다. 전통적인 비디오 코딩에서, 이미지들은 연속적인-톤이고 공간적으로 매끄러운 것으로 가정된다. 이들 가정들에 기초하여, 블록-기반 변환, 필터링, 및 다른 코딩 툴들과 같은 여러 툴들이 개발되었으며, 이러한 툴들은 자연 콘텐츠 비디오들에 대해 양호한 성능을 나타냈다.
그러나, 원격 데스크탑, 협력 작업, 및 무선 디스플레이와 같은, 애플리케이션들에서는, 컴퓨터 발생된 스크린 콘텐츠가 압축될 지배적인 콘텐츠일 수도 있다. 이 유형의 콘텐츠는 이산 톤, 날카로운 라인들, 및 높은 콘트라스트 오브젝트 경계들을 가지는 경향이 있다. 연속적인-톤 및 평활도 (smoothness) 의 가정이 더 이상 적용되지 않을 수도 있으며, 따라서, 전통적인 비디오 코딩 기법들은 콘텐츠를 압축할 때에 비효율적일 수도 있다.
본 개시물은 스크린 콘텐츠 코딩 또는 하나 이상의 전통적인 코딩 툴들이 비효율적인 다른 콘텐츠에 특히 적합할 수도 있는 팔레트-기반의 코딩을 설명한다. 비디오 데이터의 팔레트-기반의 코딩은 인터- 또는 인트라-예측 코딩을 위한 기법들과 같은, 하나 이상의 다른 코딩 기법들과 함께 사용될 수도 있다. 예를 들어, 아래에서 더 자세히 설명하는 바와 같이, 인코더 또는 디코더, 또는 결합된 인코더-디코더 (코덱) 는, 인터- 및 인트라-예측 코딩 뿐만 아니라, 팔레트-기반의 코딩을 수행하도록 구성될 수도 있다.
팔레트 모드 코딩에서, 팔레트는 블록 샘플들에 대한 예측자로서 또는 최종 복원된 블록 샘플들로서 사용될 수 있는, 칼라 성분 값들을 나타내는 인덱스로 넘버링된 엔트리들을 포함하거나 또는 이들로 이루어진다. 팔레트에서의 각각의 엔트리는 하나의 칼라 성분 (예를 들어, 루마 값) 또는 2개의 성분들 (예를 들어, 2개의 크로마 값들) 또는 3개의 칼라 성분들 (예를 들어, RGB, YUV, 또는 다른 칼라 공간들의 성분들) 의 트리플릿을 포함할 수도 있다. 4개의 이상의 칼라 성분들이 또한 다른 상황들에서, 예컨대, "CMYK" 와 같은 4-성분 칼라 공간들과 함께 사용될 수도 있다.
비디오 데이터의 블록은 블록의 각각의 샘플에 대해, 그 팔레트에서의 대응하는 엔트리에 대한 인덱스를 표시함으로써 코딩될 수도 있다. 추가 효율이, 인덱스들을 개별적으로 시그널링하는 대신, 그 팔레트에서의 동일한 엔트리에 대한 인덱스들의 런들을 표시함으로써 달성된다. 팔레트 모드 블록에서의 샘플들은 런-모드들, 예컨대, (본원에서 '인덱스-복사' 로서 또한 지칭될 수도 있는) '좌측-복사', 및 '상부-복사' 를 가지는 런-길이 코딩을 이용하여 코딩될 수도 있다.
팔레트를 시그널링하는데 사용되는 비트들을 감소시키기 위해, 팔레트에서의 엔트리들은 이전에 디코딩된 팔레트 엔트리들을 이용하여 예측된다. (중복 엔트리들을 프루닝 아웃한 후) 이전 디코딩된 팔레트 엔트리들은 팔레트 예측자 리스트로서 지칭되는 리스트를 형성한다. 팔레트 예측자 리스트에서의 각각의 엔트리에 대해, 대응하는 엔트리가 현재의 팔레트에서 재사용되는지 여부를 표시하기 위해 하나의 빈이 사용된다. 이들 빈들은 2진 벡터를 형성할 수도 있다. 이 벡터는 previous_palette_entry_flag[i] 의 신택스 엘리먼트들에 대응한다.
디코더에서, previous_palette_entry_flag 모두를 디코딩한 후, 그의 대응하는 previous_palette_entry_flag 가 1 과 동일한 팔레트 예측자 리스트에서의 엔트리들은 현재의 블록의 팔레트의 시작에 배치된다. 다시 말해서, 현재의 팔레트는 2개의 존들 (zones) 로 논리적으로 분할될 수 있다. 제 1 존 (시작에 배치되며, 이하 ZONE_P 로서 명명됨) 은 팔레트 예측자 리스트로부터의 재사용된 엔트리들로 구성된다. 제 2 존 (제 1 존 이후에 배치되며, 이하 ZONE_T 로 명명됨) 은 팔레트 예측자 리스트에 있지 않고 비트스트림에서 직접 시그널링되는 새로운 팔레트 엔트리들로 구성된다.
팔레트 예측자 리스트는 이전에 코딩된 블록에서 사용된 소위 "이스케이프 픽셀들 (escape pixels)" 을 포함하지 않는다. 이스케이프 픽셀들은 팔레트-코딩된 블록에 존재하지만 블록에 대한 팔레트에 포함되지 않은 픽셀들이다. 특히, 그들 이스케이프 픽셀들이 현재의 블록에 인접하면, 이전에 코딩된 블록의 이스케이프 픽셀들이 또한 현재의 블록에 사용되는 증가된 확률이 존재할 수도 있다. 그러므로, 이전에 코딩된 블록의 이스케이프 픽셀들 중 적어도 일부를 현재의 블록에 대한 팔레트 예측자 리스트에 포함시키는 것이 유리할 수도 있다.
본 개시물은 현재의 블록의 팔레트를 예측하기 위해 현재의 블록보다 위에 있는 라인 및 현재의 블록 좌측에 있는 라인으로부터의 픽셀들과 같은, 이웃하는 복원된 픽셀들을 추가 후보 팔레트 예측자들로서 이용하는 기법들을 설명한다. 예를 들어, 비디오 코더는 이웃하는 복원된 픽셀들을 이용하여, 본원에서 "별도의 팔레트 예측자 리스트" 로서 지칭되는 다른 팔레트 예측 리스트를 구성할 수도 있다. 비디오 코더는 "별도의 팔레트 예측자 리스트" 에서의 픽셀들을, 비디오 코더가 팔레트에서의 다른 픽셀들을 이용하는 동일한 방법으로 이용할 수도 있다. 예를 들어, 비트스트림은 현재의 블록의 대응하는 픽셀이 엔트리에 의해 지정된 샘플 값을 갖는다는 것을 표시하기 위해 "별도의 팔레트 예측자 리스트" 에서의 엔트리에 대한 인덱스를 포함할 수도 있다.
따라서, 본 개시물의 일 예에 따르면, 비디오 코더는 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정할 수도 있다. 이 예에서, 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정한다. 더욱이, 이 예에서, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 예를 들어, 이웃하는 픽셀들은 현재의 블록에 인접할 수도 있다. 일부 예들에서, 이웃하는 픽셀들은 상부 로우 또는 현재의 블록보다 위에 있는 2개 이상의 로우들로부터 나올 수도 있다. 이웃하는 픽셀들은 또한 현재의 블록의 좌측 칼럼 또는 좌측 2개 이상의 칼럼들로부터 나올 수도 있다. 이 예에서, 비디오 코더는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시킨다.
도 1 은 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템 (10) 을 예시하는 블록도이다. 본원에서 사용될 때, 용어 "비디오 코더" 는 비디오 인코더들 및 비디오 디코더들 양쪽을 포괄적으로 지칭한다. 본 개시물에서, 용어들 "비디오 코딩" 또는 "코딩" 은 비디오 인코딩 또는 비디오 디코딩을 포괄적으로 지칭할 수도 있다.
도 1 에 나타낸 바와 같이, 비디오 코딩 시스템 (10) 은 소스 디바이스 (12) 및 목적지 디바이스 (14) 를 포함한다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 발생한다. 따라서, 소스 디바이스 (12) 는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치로서 지칭될 수도 있다. 목적지 디바이스 (14) 는 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오 데이터를 디코딩할 수도 있다. 따라서, 목적지 디바이스 (14) 는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치로서 지칭될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 비디오 코딩 디바이스들 또는 비디오 코딩 장치들의 예들일 수도 있다. 디코딩은 인코딩된 비디오 데이터로부터 샘플 값들을 복원하는 것을 나타낸다.
소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 모바일 컴퓨팅 디바이스들, 노트북 (예컨대, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 소위 "스마트" 폰들과 같은 전화기 핸드셋들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 자동차용 컴퓨터들, 화상 회의 디바이스들, 또는 다른 유형들의 매체들-이용가능 디바이스들을 포함한, 광범위한 디바이스들을 포함할 수도 있다.
목적지 디바이스 (14) 는 소스 디바이스 ((12)) 로부터 채널 (16) 을 통해서 인코딩된 비디오 데이터를 수신할 수도 있다. 채널 (16) 은 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시키는 것이 가능한 하나 이상의 매체들 또는 디바이스들을 포함할 수도 있다. 일 예에서, 채널 (16) 은 소스 디바이스 (12) 로 하여금, 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 로 실시간으로 송신가능하게 하는 하나 이상의 통신 매체들을 포함할 수도 있다. 이 예에서, 소스 디바이스 (12) 는 무선 통신 프로토콜과 같은 통신 표준에 따라서, 인코딩된 비디오 데이터를 변조할 수도 있으며, 변조된 비디오 데이터를 목적지 디바이스 (14) 로 송신할 수도 있다. 하나 이상의 통신 매체들은 무선 및/또는 유선 통신 매체들, 예컨대 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적인 송신 라인들을 포함할 수도 있다. 하나 이상의 통신 매체들은 근거리 네트워크, 광역 네트워크, 또는 글로벌 네트워크 (예컨대, 인터넷) 와 같은, 패킷-기반 네트워크의 일부를 형성할 수도 있다. 하나 이상의 통신 매체들은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는 다른 장비를 포함할 수도 있다.
또 다른 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 발생되는 인코딩된 비디오 데이터를 저장하는 저장 매체를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 디스크 액세스 또는 카드 액세스를 통해서 저장 매체에 액세스할 수도 있다. 저장 매체는 Blu-ray 디스크들, DVD들, CD-ROM들, 플래시 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 다른 적합한 디지털 저장 매체들과 같은 다양한 로컬-액세스되는 데이터 저장 매체들을 포함할 수도 있다.
추가 예에서, 채널 (16) 은 소스 디바이스 (12) 에 의해 발생된 인코딩된 비디오 데이터를 저장하는 파일 서버 또는 다른 중간 저장 디바이스를 포함할 수도 있다. 이 예에서, 목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해서 파일 서버 또는 다른 중간 저장 디바이스에 저장된 인코딩된 비디오 데이터에 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신가능한 서버의 형태일 수도 있다. 예시적인 파일 서버들은 (예컨대, 웹사이트용) 웹 서버들, 파일 전송 프로토콜 (FTP) 서버들, NAS (network attached storage) 디바이스들, 및 로컬 디스크 드라이브들을 포함한다.
목적지 디바이스 (14) 는 인코딩된 비디오 데이터에 인터넷 접속과 같은 표준 데이터 접속을 통해서 액세스할 수도 있다. 데이터 접속들의 예시적인 유형들은 무선 채널들 (예컨대, Wi-Fi 접속들), 유선 접속들 (예컨대, DSL, 케이블 모뎀, 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한 양쪽의 조합들을 포함할 수도 있다. 파일 서버로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이 양쪽의 조합일 수도 있다.
본 개시물의 기법들은 무선 애플리케이션들 또는 설정들에 한정되지 않는다. 이 기법들은 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예컨대, 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 비디오 데이터의 인코딩, 데이터 저장 매체 상에 저장된 비디오 데이터의 디코딩, 또는 다른 애플리케이션들과 같은, 다양한 멀티미디어 애플리케이션들을 지원하는 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 비디오 코딩 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화 통신과 같은, 애플리케이션들을 지원하기 위해 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 은 단지 일 예이며, 본 개시물의 기법들은 인코딩 디바이스와 디코딩 디바이스 사이의 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정들 (예컨대, 비디오 인코딩 또는 비디오 디코딩) 에 적용할 수도 있다. 다른 예들에서, 데이터 (예컨대, 비디오 데이터) 는 로컬 메모리로부터 취출되거나, 네트워크를 통해서 스트리밍되거나, 또는 기타 등등으로 이루어질 수 있다. 비디오 인코딩 디바이스는 데이터 (예컨대, 비디오 데이터) 를 인코딩하여 메모리에 저장할 수도 있거나, 및/또는 비디오 디코딩 디바이스는 메모리로부터 데이터 (예컨대, 비디오 데이터) 를 취출하여 디코딩할 수도 있다. 많은 예들에서, 인코딩 및 디코딩은, 서로 통신하지 않지만, 메모리에 데이터 (예컨대, 비디오 데이터) 를 간단히 인코딩하거나 및/또는 메모리로부터 데이터 (예컨대, 비디오 데이터) 를 취출하여 디코딩하는 디바이스들에 의해 수행된다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 일부 예들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 비디오 소스 (18) 는 비디오 캡쳐 디바이스, 예컨대, 비디오 카메라, 이전에 캡쳐된 비디오 데이터를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 비디오 공급 인터페이스, 및/또는 비디오 데이터를 발생하기 위한 컴퓨터 그래픽스 시스템, 또는 이런 비디오 데이터의 소스들의 조합을 포함할 수도 있다.
비디오 인코더 (20) 는 비디오 소스 (18) 로부터의 비디오 데이터를 인코딩할 수도 있다. 일부 예들에서, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 출력 인터페이스 (22) 를 통해서 목적지 디바이스 (14) 로 직접 송신한다. 다른 예들에서, 인코딩된 비디오 데이터는 또한 디코딩 및/또는 플레이백을 위해 목적지 디바이스 (14) 에 의한 추후 액세스를 위해 저장 매체 또는 파일 서버 상으로 저장될 수도 있다.
도 1 의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 예들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함한다. 입력 인터페이스 (28) 는 인코딩된 비디오 데이터를 채널 (16) 로부터 수신할 수도 있다. 디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 디스플레이한다. 디스플레이 디바이스 (32) 는 다양한 디스플레이 디바이스들, 예컨대 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스를 포함할 수도 있다.
본 개시물은 일반적으로 어떤 정보를 비디오 디코더 (30) 와 같은 또 다른 디바이스로 "시그널링하는" 또는 "송신하는" 비디오 인코더 (20) 를 나타낼 수도 있다. 용어 "시그널링하는 것" 또는 "송신하는 것" 은 일반적으로, 압축된 비디오 데이터를 디코딩하는데 사용되는 신택스 엘리먼트들 및/또는 다른 데이터의 통신을 지칭할 수도 있다. 이런 통신은 실시간 또는 근실시간으로 일어날 수도 있다. 대안적으로, 이런 통신은, 예컨대 인코딩 시에 신택스 엘리먼트들을 컴퓨터-판독가능 저장 매체에 인코딩된 비트스트림에서 저장하고, 그후 이 매체에 저장되어진 후 임의의 시간에 디코딩 디바이스에 의해 취출될 수도 있는 경우에 일어날 수도 있는 것과 같이, 어떤 기간에 걸쳐서 일어날 수도 있다. 따라서, 비디오 디코더 (30) 은 어떤 정보를 "수신하는" 것으로서 지칭될 수도 있지만, 정보의 수신은 반드시 실시간 또는 근실시간으로 일어날 필요는 없으며 저장 이후 언젠가 매체로부터 취출될 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드-프로그래밍가능 게이트 어레이들 (FPGA들), 이산 로직, 하드웨어, 또는 임의의 이들의 조합들과 같은, 다양한 적합한 회로 중 임의의 회로로서 구현될 수도 있다. 기법들이 소프트웨어로 부분적으로 구현되면, 디바이스는 소프트웨어용 명령들을 적합한 비일시성 컴퓨터-판독가능 저장 매체에 저장할 수도 있으며, 본 개시물의 기법들을 수행하기 위해 그 명령들을 하드웨어에서 하나 이상의 프로세서들을 이용하여 실행할 수도 있다. (하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함한) 전술한 것 중 임의의 것이 하나 이상의 프로세서들로 간주될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 쪽이든 개별 디바이스에서 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 HEVC 와 같은, 비디오 압축 표준에 따라서 동작한다. 이하에서 "HEVC 버전 1" 로서 지칭되는, HEVC 의 버전은 https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.265-201304-S!!PDF-E&type=items 로부터 입수가능하다. HEVC 버전 1 에 더해서, HEVC 에 대한 스케일러블 비디오 코딩, 멀티뷰 비디오 코딩, 및 3D 코딩 확장을 만들어 내려는 진행중인 노력들이 있다. 게다가, 예컨대, 본 개시물에서 설명하는 바와 같은, 팔레트-기반의 코딩 모드들이 HEVC 의 확장을 위해 제공될 수도 있다. 일부 예들에서, 팔레트-기반의 코딩에 대해 본 개시물에서 설명되는 기법들은 ITU-T-H.264/AVC 표준과 같은 다른 비디오 코딩 표준들, 또는 미래의 표준들에 따라서 동작하도록 구성된 인코더들 및 디코더들에 적용될 수도 있다. 따라서, HEVC 코덱에서의 코딩 유닛들 (CU들) 또는 예측 유닛들 (PU들) 의 코딩을 위한 팔레트-기반의 코딩 모드의 적용은 예의 목적을 위해 설명된다.
비디오 코딩 시스템 (10) 의 비디오 인코더 (20) 및 비디오 디코더 (30) 는 본 개시물에서 설명된 여러 예들에 따른, 팔레트-기반의 비디오 코딩을 위한 기법들을 수행하도록 구성될 수도 있는 디바이스들의 예들을 나타낸다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 팔레트-기반의 코딩 또는 비-팔레트 기반의 코딩 중 어느 하나를 이용하여, HEVC 코딩에서의 CU들 또는 PU들과 같은, 비디오 데이터의 여러 블록들을 선택적으로 코딩하도록 구성될 수도 있다. 비-팔레트 기반의 코딩 모드들은 HEVC 버전 1 에 의해 명시된 여러 코딩 모드들과 같은, 여러 인터-예측 시간 코딩 모드들 또는 인트라-예측 공간 코딩 모드들을 나타낼 수도 있다.
HEVC 및 다른 비디오 코딩 표준들에서, 비디오 시퀀스는 일반적으로 일련의 픽처들을 포함한다. 픽처들은 또한 "프레임들" 로서 지칭될 수도 있다. 픽처는 SL, SCb 및 SCr 로 표기되는, 3개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb 는 Cb 색차 샘플들의 2차원 어레이이다. SCr 은 Cr 색차 샘플들의 2차원 어레이이다. 색차 샘플들은 또한 본원에서 "크로마" 샘플들로서 지칭될 수도 있다. 다른 경우, 픽처는 단색일 수도 있으며 단지 루마 샘플들의 어레이를 포함할 수도 있다.
픽처의 인코딩된 표현을 발생시키기 위해, 비디오 인코더 (20) 는 코딩 트리 유닛들 (CTU들) 의 세트를 발생시킬 수도 있다. CTU들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들일 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로서 지칭될 수도 있다. HEVC 의 CTU들은 H.264/AVC 와 같은, 다른 표준들의 매크로블록들과 대략 유사할 수도 있다. 그러나, CTU 는 특정의 사이즈에 반드시 제한되지 않으며, 하나 이상의 코딩 유닛들 (CU들) 을 포함할 수도 있다. 슬라이스는 래스터 스캔으로 연속적으로 순서화된 정수 개의 CTU들을 포함할 수도 있다.
코딩된 CTU 를 발생하기 위해, 비디오 인코더 (20) 는 코딩 트리 블록들을 코딩 블록들, 따라서 이름 "코딩 트리 유닛들" 로 분할하기 위해 CTU 의 코딩 트리 블록들에 관해 쿼드-트리 파티셔닝을 회귀적으로 수행할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. CU 는 루마 샘플 어레이, Cb 샘플 어레이 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록 및 크로마 샘플들의 2개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들일 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, CU 는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비-정사각형) 블록일 수도 있다. CU 의 예측 유닛 (PU) 은 루마 샘플들의 예측 블록, 픽처의 크로마 샘플들의 2개의 대응하는 예측 블록들, 및 예측 블록 샘플들을 예측하는데 사용되는 신택스 구조들일 수도 있다. 비디오 인코더 (20) 는 CU 의 각각의 PU 의 루마, Cb 및 Cr 예측 블록들에 대한 예측 루마, Cb 및 Cr 블록들을 발생시킬 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, PU 는 단일 예측 블록 및 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 PU 에 대한 예측 블록들을 발생시키기 위해 인트라 예측 또는 인터 예측을 이용할 수도 있다. 예측 블록들은 또한 본원에서 "예측 샘플 블록들" 로서 지칭될 수도 있다. 비디오 인코더 (20) 가 PU 의 예측 블록들을 발생시키기 위해 인트라 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처의 디코딩된 샘플들에 기초하여 PU 의 예측 블록들을 발생시킬 수도 있다. 본 개시물에서, "기초하여 (based on)" 는 일부 경우, "적어도 부분적으로 기초하여" 로서 해석될 수도 있다.
비디오 인코더 (20) 가 PU 의 예측 블록들을 발생하기 위해 인터 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처 이외의 하나 이상의 픽처들의 디코딩된 샘플들에 기초하여, PU 의 예측 블록들을 발생시킬 수도 있다. 비디오 인코더 (20) 는 PU 의 예측 블록들을 발생시키기 위해 단방향-예측 또는 양방향-예측을 이용할 수도 있다. 비디오 인코더 (20) 가 PU 에 대한 예측 블록들을 발생시키기 위해 단방향-예측을 이용할 때, PU 는 단일 모션 벡터를 가질 수도 있다. 비디오 인코더 (20) 가 PU 에 대한 예측 블록들을 발생시키기 위해 양방향-예측을 이용할 때, PU 는 2개의 모션 벡터들을 가질 수도 있다.
비디오 인코더 (20) 가 CU 의 하나 이상의 PU들에 대한 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들) 을 발생시킨 후, 비디오 인코더 (20) 는 CU 에 대한 잔차 블록을 발생시킬 수도 있다. 잔차 블록에서의 각각의 샘플은 CU 의 예측 블록들 중 하나에서의 샘플과 CU 의 원래 코딩 블록들 중 하나에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 예를 들어, 비디오 인코더 (20) 는 CU 에 대한 루마 잔차 블록을 발생시킬 수도 있다. CU 의 루마 잔차 블록에서의 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에서의 루마 샘플과 CU 의 원래 루마 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낸다. 게다가, 비디오 인코더 (20) 는 CU 에 대한 Cb 잔차 블록을 발생시킬 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 원래 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 또한 CU 에 대한 Cr 잔차 블록을 발생시킬 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 원래 Cr 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다.
게다가, 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여, CU 의 잔차 블록들 (예컨대, 루마, Cb, 및 Cr 잔차 블록들) 을 하나 이상의 변환 블록들 (예컨대, 루마, Cb, 및 Cr 변환 블록들) 로 분해할 수도 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형의 블록일 수도 있다. CU 의 변환 유닛 (TU) 은 루마 샘플들의 변환 블록, 크로마 샘플들의 2개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용되는 신택스 구조들일 수도 있다. 따라서, CU 의 각각의 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록에 대응할 수도 있다. TU 와 연관되는 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, TU 는 단일 변환 블록 및 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 변환 블록에 적용하여, TU 에 대한 계수 블록을 발생시킬 수도 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 예를 들어, 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 루마 변환 블록에 적용하여, TU 에 대한 루마 계수 블록을 발생시킬 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cb 변환 블록에 적용하여, TU 에 대한 Cb 계수 블록을 발생시킬 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cr 변환 블록에 적용하여, TU 에 대한 Cr 계수 블록을 발생시킬 수도 있다.
계수 블록 (예컨대, 루마 계수 블록, Cb 계수 블록, 또는 Cr 계수 블록) 을 발생시킨 후, 비디오 인코더 (20) 는 계수 블록을 양자화할 수도 있다. 양자화는 일반적으로 변환 계수들이 변환 계수들을 나타내는데 사용되는 데이터의 양을 감소시킬 수 있도록 양자화되어 추가 압축을 제공하는 프로세스를 지칭한다. 비디오 인코더 (20) 가 계수 블록을 양자화한 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 관해 컨텍스트-적응 2진 산술 코딩 (CABAC) 을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피-인코딩된 신택스 엘리먼트들을 비트스트림으로 출력할 수도 있다. 비트스트림은 또한 엔트로피 인코딩되지 않은 신택스 엘리먼트들을 포함할 수도 있다.
비디오 인코더 (20) 는 엔트로피-인코딩된 신택스 엘리먼트들을 포함하는 비트스트림을 출력할 수도 있다. 비트스트림은 코딩된 픽처들 및 연관되는 데이터의 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 즉, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다. 비트스트림은 네트워크 추상화 계층 (NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함하며, 미가공 바이트 시퀀스 페이로드 (RBSP; raw byte sequence payload) 를 캡슐화한다. NAL 유닛 헤더는 NAL 유닛 유형 코드를 표시하는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 지정된 NAL 유닛 유형 코드는 NAL 유닛의 유형을 표시한다. RBSP 는 NAL 유닛 내에 캡슐화된 정수의 바이트들을 포함하는 신택스 구조이다. 일부의 경우, RBSP 는 제로 비트들을 포함한다.
상이한 유형들의 NAL 유닛들이 상이한 유형들의 RBSP들을 캡슐화할 수도 있다. 예를 들어, NAL 유닛의 제 1 유형은 픽처 파라미터 세트 (PPS) 에 대한 RBSP 를 캡슐화할 수도 있으며, NAL 유닛의 제 2 유형은 코딩된 슬라이스에 대한 RBSP 를 캡슐화할 수도 있으며, NAL 유닛의 제 3 유형은 보충 강화 정보 (SEI) 에 대한 RBSP 를 캡슐화할 수도 있는 등이다. (파라미터 세트들 및 SEI 메시지들에 대한 RBSP들과는 반대로) 비디오 코딩 데이터에 대한 RBSP들을 캡슐화하는 NAL 유닛들은 비디오 코딩 계층 (VCL) NAL 유닛들로서 지칭될 수도 있다. SEI 는 VCL NAL 유닛들로부터의 코딩된 픽처들의 샘플들을 디코딩하는데 필요하지 않은 정보를 포함할 (로 이루어질) 수도 있다. SEI RBSP 는 하나 이상의 SEI 메시지들을 포함할 수도 있다.
VPS 는 0개 이상의 전체 코딩된 비디오 시퀀스들 (CVS들) 에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. 시퀀스 파라미터 세트 (SPS) 는 또한 0개 이상의 전체 CVS들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는 SPS 가 활성일 때 활성인 VPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, VPS 의 신택스 엘리먼트들은 일반적으로 SPS 의 신택스 엘리먼트들보다 더 일반적으로 적용가능할 수도 있다. 픽처 파라미터 세트 (PPS) 는 0개 이상의 코딩된 픽처들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. PPS 는 PPS 가 활성일 때 활성인 SPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 슬라이스의 슬라이스 헤더는 슬라이스가 코딩되고 있을 때 활성인 PPS 를 표시하는 신택스 엘리먼트를 포함할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 발생되는 비트스트림을 수신할 수도 있다. 게다가, 비디오 디코더 (30) 는 비트스트림을 파싱하여, 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다 (예컨대, 디코딩할 수도 있다). 비디오 디코더 (30) 는 비트스트림으로부터 디코딩된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 복원할 수도 있다. 비디오 데이터를 복원하는 프로세스는 일반적으로 비디오 인코더 (20) 에 의해 수행되는 프로세스와 반대일 수도 있다.
예를 들어, 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들을 결정하기 위해 PU들의 모션 벡터들을 이용할 수도 있다. 게다가, 비디오 디코더 (30) 는 현재의 CU 의 TU들과 연관되는 변환 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 변환 계수 블록들에 관해 역변환들을 수행하여, 현재의 CU 의 TU들과 연관되는 변환 블록들을 복원할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 샘플 블록들의 샘플들을 현재의 CU 의 TU들의 변환 블록들의 대응하는 샘플들에 가산함으로써, 현재의 CU 의 코딩 블록들을 복원할 수도 있다. 픽처의 각각의 CU 에 대해 코딩 블록들을 복원함으로써, 비디오 디코더 (30) 는 그 픽처를 복원할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 팔레트-기반의 코딩을 수행하도록 구성될 수도 있다. 예를 들어, 팔레트-기반의 코딩에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 특정의 영역 (예컨대, 주어진 블록) 의 비디오 데이터를 표시하기 위해 칼라들의 테이블로서 소위 팔레트를 코딩할 수도 있다. 각각의 픽셀은 픽셀의 적어도 하나의 샘플을 나타내는 팔레트에서의 엔트리와 연관될 수도 있다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 픽셀의 하나 이상의 샘플들을 지정하는 팔레트 엔트리를 식별하는 픽셀에 대한 인덱스를 코딩할 수도 있다. 일부 예들에서, "픽셀 값" 은 단일 칼라 성분 (예컨대, 루마, Cb, Cr) 의 단일 샘플 값이다. 다른 예들에서, "픽셀 값" 은 복수의 샘플 값들 (예컨대, 루마 샘플 값, Cb 샘플 값, 및 Cr 샘플 값) 이다.
비디오 인코더 (20) 는 팔레트-관련된 신택스 엘리먼트들을 CU 레벨에서 시그널링할 수도 있다. 예를 들어, CU 가 팔레트 모드를 이용하여 인코딩되면, CU 는 하나 이상의 palette_coding_component 신택스 구조들을 포함할 수도 있다. palette_coding_component 신택스 구조의 신택스는 하기 테이블 1 에서 재현된다.
테이블 1
Figure pct00001
Figure pct00002
Figure pct00003
다음 패러그라프들은 테이블 1 에서의 신택스 엘리먼트들의 예시적인 의미론들을 설명한다.
1 과 동일한 previous_palette_entry_flag[ i ] 는 이전 사용된 팔레트로부터의 팔레트 엔트리가 복사된다는 것을 지정한다. 0 과 동일한 previous_palette_entry_flag [ i ] 는 이전 사용된 팔레트로부터의 팔레트 엔트리가 복사되지 않는다는 것을 지정한다. previousPaletteSize 는 팔레트 모드에서 디코딩된 이전 CU 의 팔레트의 사이즈이다. 변수 previousPaletteSize 는 슬라이스뿐만 아니라 각각의 CTB 라인의 제 1 디코딩된 팔레트 CU 에 대해 0 과 동일하게 설정된다.
palette_num_signalled_entries 는 현재의 CU 에 대해 명시적으로 시그널링되는 팔레트에서의 엔트리들의 개수를 지정한다. palette_num_signalled_entries 이 존재하지 않을 때, 그것은 0 과 동일한 것으로 추론된다.
palette_entries[ cIdx ][ i ] 는 칼라 성분 cIdx 에 대한 팔레트에서 i-번째 엘리먼트를 지정한다. 어레이 previousPaletteEntries 는 팔레트 모드에서 디코딩된 최종 CU 의 어레이 palette_entries 와 동일하다.
palette_escape_val 은 이스케이프 픽셀 값을 지정한다.
1 과 동일한 palette_run_type_flag 는 디코딩 프로세스가 디코딩된 픽셀 값이 상부 로우에서의 동일한 로케이션에서의 픽셀과 동일한 COPY_ABOVE_MODE 이라는 것을 지정한다. 0 과 동일한 palette_run_type_flag 는 디코딩 프로세스 모드가 픽셀의 팔레트 인덱스가 비트스트림에서 코딩되는 INDEX_MODE 이라는 것을 지정한다. palette_run_type_flag 가 존재하지 않을 때, 그것은 INDEX_MODE 와 동일한 것으로 추론된다.
palette_index 는 팔레트 엔트리들에 대한 인덱스이다. palette_index 가 palette_size 와 동일하면, 픽셀은 ESCAPE_PIXEL 로서 코딩된다.
palette_run 은 palette_run_type_flag 가 COPY_ABOVE_MODE 와 동일할 때 상부 로우에서의 위치와 동일한 팔레트 인덱스로, 연속된 로케이션들의 개수 마이너스 1 을 표시하거나 또는 palette_run_type_flag 가 INDEX_MODE 와 동일할 때 동일한 팔레트 인덱스로, 연속된 로케이션들의 개수 마이너스 1 을 나타낸다.
따라서, 팔레트 모드 (즉, 팔레트-기반의 코딩) 에서, 팔레트는 블록 샘플들에 대한 예측자로서 또는 최종 복원된 블록 샘플들로서 사용될 수 있는, 칼라 성분 값들을 나타내는 인덱스에 의해 넘버링된 엔트리들로 이루어질 수도 있다. 팔레트에서의 각각의 엔트리는 하나의 칼라 성분 (예를 들어, 루마 값) 또는 2개의 성분들 (예를 들어, 2개의 크로마 값들) 또는 3개의 칼라 성분들 (예를 들어, RGB, YUV 등) 의 트리플릿을 포함할 수도 있다. 팔레트 모드 블록에서의 샘플들은 런-길이 코딩을 이용하여 코딩된다. 예를 들어, (본원에서 '인덱스-복사' 로서 또한 지칭될 수도 있는) '좌측-복사', '상부-복사', 및 '이스케이프' 를 포함한, 3개의 런-모드들이 사용될 수도 있다. 예컨대, ITU-T SG 16 WP 3 과 ISO/IEC JTC 1/SC 29/WG 11 의 JCT-VC (Joint Collaborative Team on Video Coding), 18차 회의, 2014년 6월 30일 - 7월 9일, 일본, 사뽀로, 문서 JCTVC-R0306 (이하, "JCTVC-R0306-WD"), Pu 등, "SCCE3 base Software Bugfix Report" 를 참조한다.
일부 예들에서, 비디오 인코더 (20) 는 블록에 대한 팔레트를 결정하고, 각각의 픽셀의 값을 표현하기 위해 팔레트에서 엔트리를 로케이트하고, 그리고 픽셀 값을 팔레트에 관련시키는 픽셀들에 대한 인덱스 값들로 팔레트를 인코딩함으로써, 비디오 데이터의 블록을 인코딩할 수도 있다. 비디오 디코더 (30) 는 인코딩된 비트스트림으로부터, 블록에 대한 팔레트 뿐만 아니라, 블록의 픽셀들에 대한 인덱스 값들을 획득할 수도 있다. 비디오 디코더 (30) 는 픽셀들의 인덱스 값들을 팔레트의 엔트리들에 관련시켜, 블록의 픽셀 값들을 복원할 수도 있다.
팔레트를 시그널링하는데 사용되는 비트들을 감소시키기 위해, 팔레트에서의 엔트리들은 이전에 디코딩된 팔레트 엔트리들을 이용하여 예측될 수도 있다 (예컨대, JCTVC-R0306-WD, 및 ITU-T SG 16 WP 3 과 ISO/IEC JTC 1/SC 29/WG 11 의 JCT-VC (Joint Collaborative Team on Video Coding), 18차 회의, 2014년 6월 30일 - 7월 9일, 일본, 사뽀로, 문서 JCTVC-R0082 (이하, "JCTVC-R0082"), Gisquet 등, "SCCE3 Test A.3: palette stuffing" 을 참조한다). 중복된 엔트리들을 프루닝 아웃한 후, 이전에 디코딩된 팔레트 엔트리들은, 본원에서 팔레트 예측자 리스트로서 지칭되는 리스트를 형성한다. 팔레트 예측자 리스트에서의 각각의 엔트리에 대해, 대응하는 엔트리가 현재의 팔레트에서 재사용되는지 여부를 표시하기 위해 하나의 빈이 사용된다. 이들 빈들은 2진 벡터를 형성한다. JCTVC-R0306-WD 에서, 이 벡터는 신택스 엘리먼트들 previous_palette_entry_flag[i] 에 대응한다. ITU-T SG 16 WP 3 과 ISO/IEC JTC 1/SC 29/WG 11 의 JCT-VC (Joint Collaborative Team on Video Coding), 18차 회의, 2014년 6월 30일 - 7월 9일, 일본, 사뽀로, 문서 JCTVC-R0063 (이하, "JCTVC-R0063"), Karczewicz 등, "SCCE3: Test A.8 ? Improvements on palette prediction vector signaling" 과 같은, 여러 방법들이 이 벡터를 압축하기 위해 개발되었다.
ITU-T SG 16 WP 3 과 ISO/IEC JTC 1/SC 29/WG 11 의 JCT-VC (Joint Collaborative Team on Video Coding), 18차 회의, 2014년 6월 30일 - 7월 9일, 일본, 사뽀로, 문서 JCTVC-Q0063 (이하, "JCTVC-Q0063"), Gisquet 등, "AhG10: palette predictor stuffing" 은, 팔레트 예측자 리스트를 발생시키는 방법의 다른 예를 제공한다. JCTVC-Q0063 에서, 비디오 코더는 최종 코딩된 팔레트를 예측자로서 사용한다. JCTVC-Q0063 은 도 2 에 나타낸 바와 같이, 이 예측자의 끝에, 현재의 예측자로부터의 미사용된 값들을 스터핑하는 것을 제안하였다. 도 2 는 예시적인 팔레트 스터핑 프로세스를 예시하는 개념도이다. 도 2 에서, CU1 이 인코딩된 후, 예측자가 CU2 에 이용가능하게 된다. 현재, 그것은 CU1 의 팔레트이다. 예측자 엘리먼트들의 재사용을 표시하는 비트 플래그들이 발생되어 코딩된다. CU2 팔레트는 CU3 의 예측자로서 보통 사용될 것이다. CU2 의 팔레트 예측자로부터 비트 플래그들을 체크함으로써, 어느 엘리먼트들이 재사용되지 않았는지를 결정하는 것이 가능하다. 그들 엘리먼트들은 예측자의 끝에 추가된다.
추가 엘리먼트들을 예측자에 포함시키는 것은 그들 엘리먼트들이 과거에 실제로 발생했고, 여전히 발생할 수도 있기 때문에 유익할 수도 있다. 그러나, 그들 추가 엘리먼트들이 다시 발생할 확률이 낮다. 이 회귀적인 구성에 의해, 예측자가 발생되며, 여기서, 엘리먼트들은 확률에 의해 어느 정도 순서화된다. 게다가, 유효한 예측이 제공하는 높은 압축 비로 인해, 예측자의 사이즈를 증가시키는 것이 가능하고 유익할 수도 있다.
특히, 예측자의 사이즈가 예측할 실제 팔레트보다 아주 더 클 때, 도 3 에 도시된 바와 같이, 팔레트가 주로 예측자의 시작에 엘리먼트들에 의해 예측되는 것이 일어날 수도 있다. 도 3 은 예시적인 예측 플래그들을 예시하는 개념도이다. 도 3 에서 볼 수 있는 바와 같이, 예측 방식은 제한된 효율을 가질 수도 있다. 전형적인 향상은 엘리먼트들의 CABAC 코딩일 것이며, 그러나 이것은 적어도 32 개의 플래그들에 대해 빈번한 업데이팅을 필요로 할 것이다. JCTVC-Q0063 은 엘리먼트들이 더 이상 예측될 수 없는 시점을 표시하기 위해 "예측 종료" (end-of-prediction) 으로 불리는, 중간 플래그들을 대신 추가할 것을 제안하였다. 그러나, 이것은 더 많은 플래그들을 추가하기 때문에, 이것은 플래그들의 비트맵의 확장을 초래할 수도 있다. 따라서, 비트맵에서의 특정의 로케이션들에 플래그들을 삽입하는 것이 더 나을 수도 있다.
일부의 경우, 비디오 디코더 (30) 에서, previous_palette_entry_flag 신택스 엘리먼트들 모두를 디코딩한 후, 그의 대응하는 previous_palette_entry_flag 가 1 과 동일한 팔레트 예측자 리스트에서의 엔트리들은 현재의 블록의 팔레트의 시작에 배치된다. 다시 말해서, 현재의 팔레트는 2개의 존들로 논리적으로 분할될 수 있다. 제 1 존 (시작에 배치되며, 이하 ZONE_P 로서 명명됨) 은 팔레트 예측자 리스트로부터의 재-사용된 엔트리들로 이루어진다. 제 2 존 (제 1 존 이후에 배치되며, 이하 ZONE_T 로서 명명됨) 은 팔레트 예측자 리스트에 있지 않고 비트스트림에서 직접 시그널링된 새로운 팔레트 엔트리들로 이루어진다.
팔레트 예측자 리스트는 이전에 코딩된 블록에 사용된 소위 "이스케이프 픽셀들" 을 포함하지 않는다. 이스케이프 픽셀들은, 팔레트-코딩된 블록에 존재하지만 블록에 대한 팔레트에 포함되지 않는 픽셀들이다. 예를 들어, 이스케이프 픽셀들은 직접 시그널링될 수도 있으며, 일부 예들에서, 예측 코딩되지 않는다. 특히, 그들 이스케이프 픽셀들이 현재의 블록에 인접하면, 이전 블록의 이스케이프 픽셀들이 또한 현재의 블록에서 재사용되는 증가된 확률이 있을 수도 있다. 그러므로, 이전에 코딩된 블록의 이스케이프 픽셀들 중 적어도 일부를 현재의 블록에 대한 팔레트 예측자 리스트에 포함시키는 것이 유리할 수도 있다. 이러한 이스케이프 픽셀들이 팔레트 예측자 리스트에 포함되는 것이 아니라 현재의 블록에 사용되면, 이러한 픽셀들은 현재의 블록의 추가 팔레트 엔트리들 또는 현재의 블록의 이스케이프 픽셀들로서 시그널링될 필요가 있을 수도 있다.
본 개시물은 현재의 블록의 팔레트를 예측하기 위해 추가 후보 팔레트 예측자들로서, 이웃하는 복원된 픽셀들 (예컨대, 이용가능한 경우, 현재의 블록 바로 위에 있는 하나 이상의 라인들, 및 이용가능한 경우, 현재의 블록 바로 좌측에 있는 하나 이상의 라인들로부터의 픽셀들) 의 사용을 제안한다. 혼란을 피하기 위해, 본 개시물은 JCTVC-Q0063 에서 사용된 팔레트 예측자 리스트와 같은, 이전 블록의 팔레트에 기초한 팔레트 예측자 리스트를, "원래 팔레트 예측자 리스트" 로서 지칭한다.
본 개시물은 본원에서 "별도의 팔레트 예측자 리스트" 로서 지칭되는 다른 팔레트 예측 리스트를 구성하기 위해 이웃하는 복원된 픽셀들의 사용을 제안한다. 예를 들어, 이웃하는 복원된 픽셀들이 샘플 값들 3, 5, 및 7 을 지정하면, 비디오 코더는 샘플 값들 3, 5, 및 7 을 지정하는 후보들 (즉, 엔트리들) 을 포함하는 별도의 팔레트 예측자 리스트를 결정할 수도 있다.
예를 들어, 비디오 인코더 (20) 는 하나 이상의 후보들로 이루어지는 팔레트 예측자 리스트를 결정할 수도 있다. 이 예에서, 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정한다. 이 예에서, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 더욱이, 이 예에서, 비디오 인코더 (20) 는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시킬 수도 있다. 이 예에서, 비디오 인코더 (20) 는 비트스트림에서, 현재의 블록의 픽셀에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링할 수도 있으며, 인덱스 값은 팔레트에서의 엔트리에 대응한다.
유사한 예에서, 비디오 디코더 (30) 는 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정할 수도 있다. 이 예에서, 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정한다. 이 예에서, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 더욱이, 이 예에서, 비디오 디코더 (30) 는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보에 포함시킬 수도 있다. 일부의 경우, 비디오 디코더 (30) 는 현재의 블록에 대한 팔레트에 후보들 중 어느 후보도 포함시키지 않는다. 비디오 디코더 (30) 는 또한, 비트스트림에서 시그널링된 하나 이상의 신택스 엘리먼트들에 기초하여, 현재의 블록의 픽셀에 대한 인덱스 값을 획득할 수도 있다. 예를 들어, 하나 이상의 신택스 엘리먼트들은 인덱스 값을 지정할 수도 있다. 다른 예에서, 비디오 디코더 (30) 는 하나 이상의 신택스 엘리먼트들 및 특정의 규칙에 기초하여, 현재의 블록의 픽셀에 대한 인덱스 값을 추론함으로써 인덱스 값을 획득할 수도 있다. 이 예에서, 비디오 디코더 (30) 는 픽셀에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별할 수도 있다. 비디오 디코더 (30) 는 또한, 식별된 팔레트 엔트리에 의해 지정된 적어도 하나의 샘플 값에 기초하여, 픽셀의 적어도 하나의 복원된 샘플 값을 결정할 수도 있다.
본 개시물의 일부 예들에 따르면, "별도의 팔레트 예측자 리스트" 에 N (>= 0 또는 > 0) 개의 엔트리들이 있다고 가정하면, 비디오 인코더 (20) 는 "별도의 팔레트 예측자 리스트" 에서의 각각의 개개의 엔트리가 현재의 블록에 의해 재사용되는지 여부를 표시하기 위해, 그 사이즈가 N 과 동일한 2진 벡터 (예컨대, 2진 값들의 어레이) 를 비트스트림에서 시그널링할 수도 있다. 예를 들어, N 이 5 과 동일하면, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에서의 제 1, 제 2, 제 3, 및 제 5 후보들이 현재의 블록에서 재사용된다는 것을 표시하기 위해 2진 벡터 11101 을 시그널링할 수도 있다. 후보가 현재의 블록에서 재사용되지 않으면, 비디오 코더는 현재의 블록의 팔레트로부터 후보를 제외시킬 수도 있다. 2진 벡터는 비트스트림에서 직접 송신되거나 또는 원래 팔레트 예측자 리스트를 압축하는데 사용된 방법을 이용하여 압축될 수도 있다.
이러한 방법으로, 비디오 인코더 (20) 는 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정할 수도 있다. 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 복원된 이웃하는 픽셀의 값을 지정할 수도 있다. 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록 (예컨대, CU, 매크로블록 등) 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 더욱이, 비디오 인코더 (20) 는 비트스트림에서, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 시그널링할 수도 있다. 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응한다. 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 데이터의 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 값을 포함한다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트는 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 포함한다. 팔레트가 개별 후보에 의해 지정된 값을 포함하지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트는 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 제외시킨다. 더욱이, 비디오 인코더 (20) 는 비트스트림에서, 현재의 블록의 샘플에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링할 수도 있으며, 인덱스 값은 팔레트에서의 엔트리에 대응한다. 일부 예들에서, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들은 잔차 픽셀 값들을 지정할 수도 있다. 다른 예들에서, 현재의 블록에 대한 팔레트 엔트리들은 비-잔차 픽셀 값들을 지정할 수도 있다.
더욱이, 이러한 방법으로, 비디오 디코더 (30) 는 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정할 수도 있으며, 그 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 복원된 이웃하는 픽셀의 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록 (예컨대, CU, 매크로블록 등) 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 비디오 디코더 (30) 는 비트스트림으로부터, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 획득할 수도 있으며, 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응한다. 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 데이터의 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 값을 포함한다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 비디오 디코더 (30) 는 팔레트에, 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 포함시킬 수도 있다. 팔레트가 개별 후보에 의해 지정된 값을 포함하지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 비디오 디코더 (30) 는 팔레트로부터, 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 제외시킬 수도 있다. 더욱이, 비디오 디코더 (30) 는 비트스트림에서 시그널링된 하나 이상의 추가 신택스 엘리먼트들에 기초하여, 현재의 블록의 샘플에 대한 인덱스 값을 획득할 수도 있다. 게다가, 비디오 디코더 (30) 는 샘플에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별할 수도 있다. 비디오 디코더 (30) 는 식별된 팔레트 엔트리에 의해 지정된 픽셀 값에 기초하여, 샘플의 복원된 값을 결정할 수도 있다. 예를 들어, 일부 예들에서, 샘플의 복원된 값은 식별된 팔레트 엔트리에 의해 지정된 픽셀 값과 매칭할 수도 있다. 다른 예에서, 식별된 팔레트 엔트리에 의해 지정된 픽셀 값은 잔차 픽셀 값이며, 비디오 디코더 (30) 는 샘플의 복원된 값이 팔레트 엔트리에 의해 지정된 픽셀 값 및 예측 블록의 픽셀 값의 총합과 동일하도록, 샘플의 복원된 값을 결정할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더는 "별도의 팔레트 예측자 리스트" 구성 방법을 수행할 수도 있다. 제 1 예시적인 구성 방법에서, 비디오 코더는 "별도의 팔레트 예측자 리스트" 를 형성하기 위해 K (여기서, K > 0) 개에 이르기까지 이웃하는 복원된 픽셀들을 픽업한다. 일부 예들에서, 도 4 에서, K=5 이며 비디오 코더는 픽셀들 A0, A1, B0, B1, 및 B2 를 이용한다. 도 4 는 별도의 팔레트 예측자 리스트를 위한 후보 픽셀들을 예시하는 개념도이다. 예를 들어, 픽셀들 A0, A1, B0, B1, 및 B2 가 샘플 값들 5, 10, 15, 20, 및 25 를 각각 지정하면, 비디오 코더는 샘플 값들 5, 10, 15, 20, 및 25 를 각각 지정하는 후보들을 포함한, 별도의 팔레트 예측자 리스트를 결정할 수도 있다. 따라서, 별도의 팔레트 예측 리스트에 사용된 복원된 이웃하는 픽셀들은, 좌하측 복원된 이웃하는 픽셀 (즉, A0), 좌측 복원된 이웃하는 픽셀 (즉, A1), 상부-좌측 복원된 이웃하는 픽셀 (즉, B2), 상부 복원된 이웃하는 픽셀 (즉, B1), 또는 상부-우측 복원된 이웃하는 픽셀 (즉, B0) 중 적어도 하나를 포함할 수도 있다. 순서는 K 개의 후보들을 랭크하도록 정의된다. 일 예로서, 후보들은 (B2, A0, B0, A1, B1) 로서 순서화될 수도 있다. 프루닝 프로세스가 중복된 후보들을 제거하기 위해 적용될 수도 있다. 프루닝 이후, K 개 미만의 후보들이 있으면, 어떤 미리 정의된 후보들이 추가될 수도 있다. 예를 들어, YUV 값 (0, 0, 0) 을 가지는 엔트리가 추가될 수도 있다. 다른 예로서, YUV 값 (128, 128, 128) 을 가지는 엔트리가 추가될 수도 있다.
비디오 코더는 리스트로부터 용장의 (redundant) 후보들을 제거할 수도 있다. 일부 예들에서, 리스트에서 자신보다 앞에 다른 후보에 가까운 후보가 또한 리스트로부터 제거될 수도 있다. 예를 들어, 비디오 코더는 별도의 팔레트 예측자 리스트에서의 다른 후보가 특정의 후보에 가까우면 별도의 팔레트 예측자 리스트로부터 그 특정의 후보를 제거할 수도 있다. 예를 들어, 임계 거리가 5 이고 별도의 팔레트 예측자 리스트에서의 제 1 후보에 의해 지정된 샘플 값이 100 이고 그리고 별도의 팔레트 예측자 리스트에서의 제 2 후보에 의해 지정된 샘플 값이 99 이면, 비디오 코더는 별도의 팔레트 예측자 리스트로부터 제 1 후보 또는 제 2 후보 중 어느 하나를 제거할 수도 있다. '근사도 (closeness)' 는 SAD (sum of absolute differences) 또는 SSE (sum of squared error) 와 같은, 메트릭들을 이용하여 측정될 수 있다.
다른 예시적인 구성 방법에서, 비디오 코더는 상부 라인 및 좌측 칼럼에서의 픽셀들 또는 상부 라인 및 좌측 칼럼으로부터 나오는 픽셀들의 서브세트를 그들의 발생의 횟수에 따라서 랭크한다. 높은 빈도 픽셀들은 별도의 팔레트 예측자 리스트에서 낮은 빈도 픽셀들의 앞에 배치된다. 따라서, 일부 예들에서, 별도의 팔레트 예측자 리스트를 결정하는 것의 일부로서, 비디오 코더는 복수의 복원된 이웃하는 픽셀들의 샘플 값들의 빈도에 따라서, 별도의 팔레트 예측자 리스트 내에서, 복수의 복원된 이웃하는 픽셀들 중 2개 이상을 랭크할 수도 있다. 예를 들어, 별도의 팔레트 예측자 리스트가 후보들 A, B, C, 및 D 를 포함하고 그리고 후보 D 가 이웃하는 픽셀들 중에서 2번 발생하는 샘플 값에 대응하는 한편, 후보들 A, B, 및 C 가 이웃하는 픽셀들 중에서 한번만 발생하는 샘플 값들에 대응하면, 비디오 코더는 별도의 팔레트 예측자 리스트 내에서, 후보 D 가 후보들 A, B, 및 C 에 선행하도록, 후보들을 랭크할 수도 있다.
이 랭크하는 것은 샘플 값이 이웃하는 픽셀들 사이에 좀더 빈번하게 사용되면, 그 샘플 값이 현재의 블록에서 사용될 가능성이 더 많다는 가정에 기초할 수도 있다. 더욱이, 팔레트 엔트리들을 표시하는 인덱스 값들이 1진 코드 (unary code) 들로서 표시될 수도 있기 때문에, 좀더 가능성있는 샘플 값들을 더 작은 인덱스 값들과 연관시키는 것은 비트스트림 사이즈를 감소시킬 수도 있다. 그러므로, 별도의 팔레트 예측자 리스트의 시작에 좀더 가능성있는 후보들을 랭크하는 것은 비트스트림 사이즈를 감소시킬 수도 있다.
일부 예들에서, 비디오 코더는 별도의 팔레트 예측자 리스트에 N 개보다 많은 후보들이 있으면, 리스트 트렁케이션 프로세스를 적용하여 후보 리스트 사이즈를 N 개로 삭감할 수도 있다. 따라서, 일부 예들에서, 별도의 팔레트 예측자 리스트를 결정하는 것의 일부로서, 비디오 코더는 별도의 팔레트 예측자 리스트의 사이즈가 특정의 개수의 후보들로 제한되도록, 별도의 팔레트 예측자 리스트를 트렁케이트할 수도 있다. 예를 들어, N 이 4 이고 별도의 팔레트 예측자 리스트가 후보들 A, B, C, D, E, 및 F 를 포함하면, 비디오 코더는 별도의 팔레트 예측자 리스트가 단지 후보들 A, B, C, 및 D 만을 포함하도록, 별도의 팔레트 예측자 리스트를 트렁케이트할 수도 있다.
더욱이, 일부 예들에서, 복원된 이웃하는 픽셀들은 디코딩 지연을 감소시키기 위해 '인-루프 필터링 이전' 값들일 수도 있다. 예를 들어, 비디오 코더는 팔레트 예측자 리스트를 결정한 후 인-루프 필터링을 하나 이상의 복원된 이웃하는 픽셀들에 적용할 수도 있다.
본 개시물의 하나 이상의 기법들에 따르면, 비디오 코더가 현재의 블록에 대한 별도의 팔레트 예측자 리스트 및 원래 팔레트 예측자 리스트를 구성한 후, 비디오 코더는 프루닝 프로세스를 적용할 수도 있다. 비디오 코더는 별도의 팔레트 예측자 리스트를 블록당 기반으로 구성할 수도 있다. 예를 들어, 별도의 팔레트 예측자 리스트에서의 엔트리는, 그 엔트리가 또한 원래 팔레트 예측자 리스트에 포함되면, 제거된다. 더욱이, 일부 예들에서, 별도의 팔레트 예측자 리스트에서의 엔트리는, 이 엔트리와 원래 팔레트 예측자 리스트에서의 임의의 엔트리 사이의 최소 거리가 임계치 이내이면, 제거된다. 예를 들어, 거리가 5이고 원래 팔레트 예측자 리스트에서의 후보에 의해 지정된 샘플 값이 101 이고 별도의 팔레트 예측자 리스트에서의 후보에 의해 지정된 샘플 값이 99 이면, 비디오 코더는 원래 팔레트 예측자 리스트에서의 후보 또는 별도의 팔레트 예측자 리스트에서의 후보 중 어느 하나를 제거할 수도 있다. 임계치는 양자화 파라미터들에 의존할 수도 있다. 일부 예들에서, 거리는 SAD, SSE, 또는 다른 메트릭들일 수 있다.
일부 예들에서, 별도의 팔레트 예측자 리스트에서의 엔트리들은 현재의 블록을 디코딩한 후 원래 팔레트 예측자 리스트에 병합되지 않을 수도 있다. 따라서, 이러한 예들에서, 팔레트 예측자 리스트의 후보들은 현재의 블록 이후 프로세싱된 비디오 데이터의 블록에 대한 팔레트를 결정하는데 사용된 팔레트 예측자 리스트에 포함되지 않는다.
본 개시물의 하나 이상의 기법들에 따르면, 별도의 팔레트 예측자 리스트로부터 나오는 현재의 블록에서의 팔레트 엔트리들이 ZONE_E 로서 명명되는 새로운 존을 형성한다고 가정한다. 비디오 코더는 3개의 존들을 다음 예들 중 하나 이상에 따라서 순서화할 수도 있다. 제 1 예에서, 비디오 코더는 현재의 블록의 팔레트의 시작에 별도의 팔레트 예측자 리스트로부터 나오는 엔트리들을, 그후 원래 팔레트 예측자 리스트로부터 나오는 팔레트 엔트리들을 놓는다. 다시 말해서, 이 제 1 예에서, 3개의 존들은 ZONE_E, ZONE_P, ZONE_T 로서 순서화된다. 제 2 예에서, 비디오 코더는 현재의 블록의 팔레트의 시작에 원래 팔레트 예측자 리스트로부터 나오는 엔트리들을, 그후 별도의 팔레트 예측자 리스트로부터 나오는 팔레트 엔트리들을 놓는다. 다시 말해서, 이 제 2 예에서, 3개의 존들은 ZONE_P, ZONE_E, ZONE_T 로서 순서화된다. ZONE_P, ZONE_T, ZONE_E 와 같은, 다른 순서들이, 또한 사용될 수도 있다.
도 5 는 본 개시물의 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 예시하는 블록도이다. 도 5 는 설명의 목적들을 위해 제공되며 본 개시물에서 넓게 예시되고 설명된 바와 같은 기법들의 한정으로 간주되지 않아야 한다. 설명의 목적을 위해, 본 개시물은 HEVC 코딩의 상황에서 비디오 인코더 (20) 를 기술한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에도 적용가능할 수도 있다.
비디오 인코더 (20) 는 본 개시물에서 설명된 여러 예들에 따른, 팔레트-기반의 비디오 코딩을 위한 기법들을 수행하도록 구성될 수도 있는 디바이스의 일 예를 나타낸다. 예를 들어, 비디오 인코더 (20) 는 팔레트-기반의 코딩 또는 비-팔레트 기반의 코딩 중 어느 하나를 이용하여, HEVC 코딩에서의 CU들 또는 PU들과 같은, 비디오 데이터의 여러 블록들을 선택적으로 코딩하도록 구성될 수도 있다. 비-팔레트 기반의 코딩 모드들은 HEVC 버전 1 에 의해 지정된 여러 코딩 모드들와 같은, 여러 인터-예측 시간 코딩 모드들 또는 인트라-예측 공간 코딩 모드들을 지칭할 수도 있다. 비디오 인코더 (20) 는, 일 예에서, 픽셀 값들을 표시하는 엔트리들을 가지는 팔레트를 발생시키고, 비디오 데이터의 블록의 적어도 일부 위치들의 픽셀들 값들을 표시하기 위해 팔레트에서 픽셀 값들을 선택하고, 그리고 비디오 데이터의 블록의 위치들 중 적어도 일부를 선택된 픽셀 값들에 각각 대응하는 팔레트에서의 엔트리들과 연관시키는 정보를 시그널링하도록 구성될 수도 있다. 시그널링된 정보는 비디오 데이터를 디코딩하기 위해 비디오 디코더 (30) 에 의해 사용될 수도 있다.
도 5 의 예에서, 비디오 인코더 (20) 는 비디오 데이터 메모리 (101), 예측 프로세싱 유닛 (100), 잔차 발생 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역양자화 유닛 (108), 역변환 프로세싱 유닛 (110), 복원 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터-예측 프로세싱 유닛 (120) 및 인트라-예측 프로세싱 유닛 (126) 을 포함한다. 인터-예측 프로세싱 유닛 (120) 은 모션 추정 유닛 (122) 및 모션 보상 유닛 (미도시) 을 포함할 수도 있다. 비디오 인코더 (20) 는 또한 본 개시물에서 설명된 팔레트-기반의 코딩 기법들의 여러 양태들을 수행하도록 구성된 팔레트-기반 인코딩 유닛 (122) 을 포함한다. 다른 예들에서, 비디오 인코더 (20) 는 더 많거나, 더 적거나, 또는 상이한 기능적 구성요소들을 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 구성요소들에 의해 인코딩될 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (116) 는 예컨대, 인트라- 또는 인터-코딩 모드들에서 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩할 때에 사용하기 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동기 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 다른 구성요소들과의 온칩, 또는 그들 구성요소들에 대한 오프-칩일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터의 픽처의 슬라이스에서의 각각의 CTU 를 인코딩할 수도 있다. CTU들의 각각은 픽처의 동일-사이즈의 루마 코딩 트리 블록들 (CTB들) 및 대응하는 CTB들과 연관될 수도 있다. CTU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 쿼드-트리 파티셔닝을 수행하여, CTU 의 CTB들을 점진적으로 더 작은 블록들로 분할할 수도 있다. 더 작은 블록들은 CU들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 CTU 와 연관되는 CTB 를 4개의 동일-사이즈로된 서브-블록들로 파티셔닝하고, 서브-블록들 중 하나 이상을 4개의 동일-사이즈로된 서브-서브-블록들로 파티셔닝할 수도 있고 기타 등등이다.
비디오 인코더 (20) 는 CU들의 인코딩된 표현들 (즉, 코딩된 CU들) 을 발생하기 위해 CTU 의 CU들을 인코딩할 수도 있다. CU 를 인코딩하는 것의 일부로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU들 중에서 CU 와 연관되는 코딩 블록들을 파티셔닝할 수도 있다. 따라서, 각각의 PU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 여러 사이즈들을 가지는 PU들을 지원할 수도 있다. 위에서 나타낸 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있으며, PU 의 사이즈는 루마 PU 의 예측 블록의 사이즈를 지칭할 수도 있다. 특정의 CU 의 사이즈가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측에 대해서는 2Nx2N 또는 NxN 의 PU 사이즈들을, 그리고 인터 예측에 대해서는 2Nx2N, 2NxN, Nx2N, NxN, 또는 유사한 대칭 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한 인터 예측에 대해서 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 사이즈들에 대한 비대칭적인 파티셔닝을 지원할 수도 있다.
인터-예측 프로세싱 유닛 (120) 은 CU 의 각각의 PU 에 대해 인터 예측을 수행함으로써, PU 에 대한 예측 데이터를 발생시킬 수도 있다. PU 에 대한 예측 데이터는 PU 의 예측 블록들 및 PU 에 대한 모션 정보를 포함할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 PU 가 I 슬라이스, P 슬라이스, 또는 B 슬라이스 내에 있는지 여부에 따라서, CU 의 PU 에 대해 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU들은 인트라 예측된다. 그러므로, PU 가 I 슬라이스에 있으면, 인터-예측 프로세싱 유닛 (120) 은 PU 에 관해 인터 예측을 수행하지 않는다. 따라서, I-모드에서 인코딩되는 블록들에 대해, 예측된 블록은 동일한 프레임 내에서 이전에 인코딩된 이웃하는 블록들로부터 공간 예측을 이용하여 형성된다.
PU 가 P 슬라이스 내에 있을 때, 인터-예측 프로세싱 유닛 (120) 의 모션 추정 유닛은 참조 픽처들의 리스트 (예컨대, "RefPicList0") 에서의 참조 픽처들을 PU 에 대한 참조 영역에 대해 탐색할 수도 있다. PU 에 대한 참조 영역은 PU 의 예측 블록들에 가장 가깝게 대응하는 샘플 블록들을 포함하는, 참조 픽처 내, 영역일 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 PU 에 대한 참조 영역을 포함하는 참조 픽처의 RefPicList0 에서의 위치를 나타내는 참조 인덱스를 발생시킬 수도 있다. 게다가, 인터-예측 프로세싱 유닛 (120) 은 PU 의 예측 블록과 참조 영역과 연관되는 참조 로케이션 사이의 공간 변위를 표시하는 모션 벡터를 발생시킬 수도 있다. 예를 들어, 모션 벡터는 현재의 디코딩된 픽처에서의 좌표들로부터 참조 픽처에서의 좌표들까지 오프셋을 표시하는 2차원 벡터일 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 참조 인덱스 및 모션 벡터를 PU 의 모션 정보로서 출력할 수도 있다. 인터-예측 프로세싱 유닛 (120) 의 인터-예측 프로세싱 유닛 (120) 은 PU 의 모션 벡터에 의해 표시되는 참조 로케이션에서의 실제 또는 내삽된 샘플들에 기초하여, PU 의 예측 블록들을 발생시킬 수도 있다.
PU 가 B 슬라이스 내에 있을 때, 인터-예측 프로세싱 유닛 (120) 은 PU 에 대해 단방향-예측 또는 양방향-예측을 수행할 수도 있다. PU 에 대한 단방향-예측을 수행하기 위해, 인터-예측 프로세싱 유닛 (120) 은 RefPicList0 또는 제 2 참조 픽처 리스트 ("RefPicList1") 의 참조 픽처들을 PU 에 대한 참조 영역에 대해 탐색할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 참조 영역을 포함하는 참조 픽처의 RefPicList0 또는 RefPicList1 에서의 위치를 표시하는 참조 인덱스, PU 의 샘플 블록과 참조 영역과 연관되는 참조 로케이션 사이의 공간 변위를 표시하는 모션 벡터, 및 참조 픽처가 RefPicList0 또는 RefPicList1 에 있는지 여부를 표시하는 하나 이상의 예측 방향 표시자들을, PU 의 모션 정보로서 출력할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 PU 의 모션 벡터에 의해 표시되는 참조 영역에서의 실제 또는 내삽된 샘플들에 적어도 부분적으로 기초하여, PU 의 예측 블록들을 발생시킬 수도 있다.
PU 에 대한 양방향 인터 예측을 수행하기 위해, 인터-예측 프로세싱 유닛 (120) 은 RefPicList0 에서의 참조 픽처들을 PU 에 대한 참조 영역에 대해 탐색할 수도 있으며, 또한 RefPicList1 에서의 참조 픽처들을 PU 에 대한 또 다른 참조 영역에 대해 탐색할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 참조 영역들을 포함하는 참조 픽처들의 RefPicList0 및 RefPicList1 에서의 위치들을 표시하는 참조 픽처 인덱스들을 발생시킬 수도 있다. 게다가, 인터-예측 프로세싱 유닛 (120) 은 참조 영역들과 연관되는 참조 로케이션들과 PU 의 예측 블록 사이의 공간 변위들을 표시하는 모션 벡터들을 발생시킬 수도 있다. PU 의 모션 정보는 PU 의 참조 인덱스들 및 모션 벡터들을 포함할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 PU 의 모션 벡터에 의해 표시되는 참조 영역에서의 실제 또는 내삽된 샘플들에 적어도 부분적으로 기초하여, PU 의 예측 블록들을 발생시킬 수도 있다.
본 개시물의 여러 예들에 따르면, 비디오 인코더 (20) 는 팔레트-기반의 코딩을 수행하도록 구성될 수도 있다. HEVC 프레임워크에 대해, 일 예로서, 팔레트-기반의 코딩 기법들은 CU 모드로서 사용되도록 구성될 수도 있다. 다른 예들에서, 팔레트-기반의 코딩 기법들은 HEVC 의 프레임워크에서 PU 모드로서 사용되도록 구성될 수도 있다. 따라서, CU 모드의 상황에서 (본 개시물 전반에 걸쳐) 본원에서 설명되는 개시된 프로세스들은 추가적으로 또는 대안적으로, PU들에 적용할 수도 있다. 그러나, 이들 HEVC-기반의 예들은, 이러한 기법들이 독립적으로 또는 다른 기존 또는 앞으로 개발될 시스템들/표준들의 일부로서 동작하도록 적용될 수도 있기 때문에, 본원에서 설명하는 팔레트-기반의 코딩 기법들의 제한 또는 한정으로서, 간주되지 않아야 한다. 이들 경우들에서, 팔레트 코딩을 위한 유닛은 정사각형 블록들, 직사각형의 블록들 또는 심지어 비-직사각형의 형태의 영역들일 수 있다.
팔레트-기반 인코딩 유닛 (122) 은, 예를 들어, 예컨대, CU 또는 PU 에 대해, 팔레트-기반의 인코딩을 수행할 수도 있다. 예를 들어, 팔레트-기반 인코딩 유닛 (122) 은 적어도 하나의 샘플 값을 각각 표시하는 엔트리들을 포함하는 팔레트를 발생시키고, 비디오 데이터의 블록의 적어도 일부 위치들의 샘플 값들을 표시하기 위해 팔레트에서 샘플 값들을 선택하고, 그리고 비디오 데이터의 블록의 위치들 중 적어도 일부를 선택된 샘플 값들에 각각 대응하는 팔레트에서의 엔트리들과 연관시키는 정보를 시그널링하도록 구성될 수도 있다. 여러 기능들이 팔레트-기반 인코딩 유닛 (122) 에 의해 수행되는 것으로 설명되지만, 일부 또는 모두 이러한 기능들은 다른 프로세싱 유닛들, 또는 상이한 프로세싱 유닛들의 조합에 의해 수행될 수도 있다. 다른 예들에서, 팔레트-기반 인코딩 유닛 (122) 은 외부 예측 프로세싱 유닛 (100) 일 수도 있다.
본 개시물의 일부 예들에 따르면, 팔레트-기반 인코딩 유닛 (122) 은 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정할 수도 있다. 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정할 수도 있다. 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있을 수도 있다. 팔레트-기반 인코딩 유닛 (122) 은 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보에 포함시킬 수도 있다. 더욱이, 팔레트-기반 인코딩 유닛 (122) 은 비트스트림에서, 현재의 블록 내 픽셀 로케이션에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링할 수도 있으며, 인덱스 값은 팔레트에서의 엔트리에 대응한다.
인트라-예측 프로세싱 유닛 (126) 은 PU 에 대해 인트라 예측을 수행함으로써, PU 에 대한 예측 데이터를 발생시킬 수도 있다. PU 에 대한 예측 데이터는 PU 에 대한 예측 블록들 및 여러 신택스 엘리먼트들을 포함할 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들에서의 PU들에 대해 인트라 예측을 수행할 수도 있다.
PU 상에 인트라 예측을 수행하기 위해, 인트라-예측 프로세싱 유닛 (126) 은 다수의 인트라 예측 모드들을 이용하여, PU 에 대한 다수의 예측 데이터의 세트들을 발생시킬 수도 있다. 일부 예들에서, 인트라-예측 프로세싱 유닛 (126) 은 이웃하는 블록들에서의 참조 샘플들의 값들에 기초하여 예측 블록의 샘플들을 결정할 수도 있다. 이웃하는 블록들은 PU들, CU들, 및 CTU들에 대해 좌-우, 상-하 인코딩 순서를 가정하면, PU 의 상측에, 우상부에, 좌상부에, 또는 좌측에 있을 수도 있다. 인트라-예측 프로세싱 유닛 (126) 은 다수의 인트라 예측 모드들, 예컨대, 33개의 방향 인트라 예측 모드들을 이용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 와 연관되는 영역의 사이즈에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은 PU들에 대해 인터-예측 프로세싱 유닛 (120) 에 의해 발생된 예측 데이터, 또는 PU들에 대해 인트라-예측 프로세싱 유닛 (126) 에 의해 발생된 예측 데이터 중에서, CU 의 PU들에 대한 예측 데이터를 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여, CU 의 PU들에 대한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 블록들은 본원에서 선택된 예측 블록들로서 지칭될 수도 있다.
잔차 발생 유닛 (102) 은 CU 의 코딩 블록들 (예컨대, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU들의 선택된 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 의 잔차 블록들 (예컨대, 루마, Cb 및 Cr 잔차 블록들) 을 발생시킬 수도 있다. 예를 들어, 잔차 발생 유닛 (102) 은 잔차 블록들에서의 각각의 샘플이 CU 의 코딩 블록에서의 샘플과 CU 의 PU 의 대응하는 선택된 예측 샘플 블록에서의 대응하는 샘플 사이의 차이와 동일한 값을 갖도록, CU 의 잔차 블록들을 발생시킬 수도 있다.
변환 프로세싱 유닛 (104) 은 쿼드-트리 파티셔닝을 수행하여, CU 와 연관되는 잔차 블록들을 CU 의 TU들과 연관되는 변환 블록들로 파티셔닝할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU들의 루마 및 크로마 변환 블록들의 사이즈들 및 위치들은 CU 의 PU들의 예측 블록들의 사이즈들 및 위치들에 기초하거나 또는 기초하지 않을 수도 있다. "잔차 쿼드-트리" (RQT) 로서 알려진 쿼드-트리 구조는 그 영역들 각각과 연관되는 노드들을 포함할 수도 있다. CU 의 TU들은 RQT 의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (104) 은 하나 이상의 변환들을 TU 의 변환 블록들에 적용함으로써, CU 의 각각의 TU 에 대한 변환 계수 블록들을 발생시킬 수도 있다. 변환 프로세싱 유닛 (104) 은 여러 변환들을 TU 의 변환 블록에 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 변환 블록에 이산 코사인 변환 (DCT), 방향성 변환, 또는 개념적으로 유사한 변환을 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환들을 변환 블록에 적용하지 않는다. 이러한 예들에서, 변환 블록은 변환 계수 블록으로서 취급될 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 프로세스는 그 변환 계수들의 일부 또는 모두와 연관되는 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 절사될 수도 있으며, 여기서, n 은 m 보다 더 크다. 양자화 유닛 (106) 은 CU 와 연관되는 양자화 파라미터 (QP) 값에 기초하여, CU 의 TU 와 연관되는 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관되는 QP 값을 조정함으로써 CU 와 연관되는 계수 블록들에 적용되는 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있으며, 따라서 양자화된 변환 계수들은 원래 정밀도들보다 낮은 정밀도를 가질 수도 있다.
역양자화 유닛 (108) 및 역변환 프로세싱 유닛 (110) 은 역양자화 및 역변환들을 계수 블록에 각각 적용하여, 계수 블록으로부터 잔차 블록을 복원할 수도 있다. 복원 유닛 (112) 은 그 복원된 잔차 블록을 예측 프로세싱 유닛 (100) 에 의해 발생되는 하나 이상의 예측 샘플 블록들로부터의 대응하는 샘플들에 가산하여, TU 와 연관되는 복원된 변환 블록을 생성할 수도 있다. 이 방법으로 CU 의 각각의 TU 에 대한 변환 블록들을 복원함으로써, 비디오 인코더 (20) 는 CU 의 코딩 블록들을 복원할 수도 있다.
필터 유닛 (114) 은 CU 와 연관되는 코딩 블록들에서 블록킹 아티팩트들을 감소시키기 위해, 하나 이상의 디블록킹 동작들을 수행할 수도 있다. 디코딩된 픽처 버퍼 (116) 은 필터 유닛 (114) 이 복원된 코딩 블록들에 관해 하나 이상의 디블록킹 동작들을 수행한 후 그 복원된 코딩 블록들을 저장할 수도 있다. 인터-예측 프로세싱 유닛 (120) 은 그 복원된 코딩 블록들을 포함하는 참조 픽처를 이용하여, 다른 픽처들의 PU들에 대해 인터 예측을 수행할 수도 있다. 게다가, 인트라-예측 프로세싱 유닛 (126) 은 디코딩된 픽처 버퍼 (116) 에서의 복원된 코딩 블록들을 이용하여, CU 와 동일한 픽처에서의 다른 PU들에 대해 인트라 예측을 수행할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (20) 의 다른 기능적 구성요소들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있으며 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행하여, 엔트로피-인코딩된 데이터를 발생시킬 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 CABAC 동작, 컨텍스트-적응 가변 길이 코딩 (CAVLC) 동작, 변수-대-변수 (V2V) 길이 코딩 동작, 신택스-기반 컨텍스트-적응 2진 산술 코딩 (SBAC) 동작, 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수-Golomb 인코딩 동작, 또는 또다른 유형의 엔트로피 인코딩 동작을 데이터에 대해 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (118) 에 의해 발생된 엔트로피-인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들어, 비트스트림은 CU 에 대한 RQT 를 나타내는 데이터를 포함할 수도 있다.
도 6 은 본 개시물의 기법들을 구현하도록 구성된 예시적인 비디오 디코더 (30) 를 예시하는 블록도이다. 도 6 은 설명의 목적들을 위해 제공되며 본 개시물에 넓게 예시되고 설명된 것과 같은 기법들에 한정하는 것이 아니다. 설명의 목적을 위해, 본 개시물은 HEVC 코딩의 상황에서의 비디오 디코더 (30) 를 기술한다. 그러나, 본 개시물의 기법들은 다른 코딩 표준들 또는 방법들에도 적용가능할 수도 있다.
비디오 디코더 (30) 는 본 개시물에서 설명된 여러 예들에 따른, 팔레트-기반의 비디오 코딩을 위한 기법들을 수행하도록 구성된 디바이스의 일 예를 나타낸다. 예를 들어, 비디오 디코더 (30) 는 팔레트-기반의 코딩 또는 비-팔레트 기반의 코딩 중 어느 하나를 이용하여 HEVC 코딩에서의 CU들 또는 PU들과 같은, 비디오 데이터의 여러 블록들을 선택적으로 디코딩하도록 구성될 수도 있다. 비-팔레트 기반의 코딩 모드들은 HEVC 버전 1 에 의해 지정된 여러 코딩 모드들과 같은, 여러 인터-예측 시간 코딩 모드들 또는 인트라-예측 공간 코딩 모드들을 지칭할 수도 있다. 비디오 디코더 (30) 는, 일 예에서, 픽셀 값들을 표시하는 엔트리들을 가지는 팔레트를 발생시키고, 비디오 데이터의 블록의 적어도 일부 위치들을 팔레트에서의 엔트리들과 연관시키는 정보를 수신하고, 그 정보에 기초하여 팔레트에서 픽셀 값들을 선택하고, 그리고 그 선택된 픽셀 값들에 기초하여 블록의 픽셀 값들을 복원하도록 구성될 수도 있다.
도 6 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 복원 유닛 (158), 필터 유닛 (160), 및 디코딩된 픽처 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은 모션 보상 유닛 (164) 및 인트라-예측 프로세싱 유닛 (166) 을 포함한다. 비디오 디코더 (30) 는 또한 본 개시물에서 설명된 팔레트-기반의 코딩 기법들의 여러 양태들을 수행하도록 구성된 팔레트-기반 디코딩 유닛 (165) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능적 구성요소들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 구성요소들에 의해 디코딩될, 인코딩된 비디오 비트스트림과 같은, 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는 예를 들어, 채널 (16) 로부터, 예컨대, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해서, 또는 물리적인 데이터 저장 매체들에 액세스함으로써 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하는 코딩된 픽처 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 예컨대, 인트라- 또는 인터-코딩 모드들에서 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩할 때에 사용하기 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동기 DRAM (SDRAM) 을 포함한 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항 RAM (RRAM), 또는 다른 유형들의 메모리 디바이스들과 같은, 다양한 메모리 디바이스들 중 임의의 메모리 디바이스에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 구성요소들과의 온칩, 또는 그들 구성요소들에 대한 오프-칩일 수도 있다.
코딩된 픽처 버퍼 (CPB) 는 비트스트림의 인코딩된 비디오 데이터 (예컨대, NAL 유닛들) 를 수신하여 저장할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 CPB 로부터 인코딩된 비디오 데이터 (예컨대, NAL 유닛들) 를 수신할 수도 있으며, NAL 유닛들을 파싱하여, 신택스 엘리먼트들을 디코딩할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 NAL 유닛들에서의 엔트로피-인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 복원 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여, 디코딩된 비디오 데이터를 발생시킬 수도 있다.
비트스트림의 NAL 유닛들은 코딩된 슬라이스 NAL 유닛들을 포함할 수도 있다. 비트스트림을 디코딩하는 것의 일부로서, 엔트로피 디코딩 유닛 (150) 은 코딩된 슬라이스 NAL 유닛들로부터 신택스 엘리먼트들을 추출하여 엔트로피 디코딩할 수도 있다. 코딩된 슬라이스들 각각은 슬라이스 헤더 및 슬라이스 데이터를 포함할 수도 있다. 슬라이스 헤더는 슬라이스에 관련된 신택스 엘리먼트들을 포함할 수도 있다. 슬라이스 헤더에서의 신택스 엘리먼트들은 슬라이스를 포함하는 픽처와 연관되는 PPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다.
비트스트림으로부터 신택스 엘리먼트들을 디코딩하는 것에 더해서, 비디오 디코더 (30) 는 비파티셔닝된 CU 에 대해 복원 동작을 수행할 수도 있다. 비-파티셔닝된 CU 에 대해 복원 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU 의 각각의 TU 에 대해 복원 동작을 수행할 수도 있다. CU 의 각각의 TU 에 대해 복원 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 복원할 수도 있다.
CU 의 TU 에 대해 복원 동작을 수행하는 것의 일부로서, 역양자화 유닛 (154) 은 TU 와 연관되는 계수 블록들을 역양자화할 수도 있다, 즉, 탈양자화할 수도 있다. 역양자화 유닛 (154) 은 TU 의 CU 와 연관되는 QP 값을 이용하여, 적용할 역양자화 유닛 (154) 에 대한 양자화의 정도 및 이와 유사하게, 역양자화의 정도를 결정할 수도 있다. 즉, 압축 비, 즉, 원래 시퀀스 및 압축된 시퀀스를 표현하는데 사용되는 비트수의 비는, 변환 계수들을 양자화할 때 사용되는 QP 의 값을 조정함으로써 제어될 수도 있다. 압축 비는 또한 채용되는 엔트로피 코딩의 방법에 의존할 수도 있다.
역양자화 유닛 (154) 이 계수 블록을 역양자화한 후, 역변환 프로세싱 유닛 (156) 은 TU 와 연관되는 잔차 블록을 발생하기 위해, 하나 이상의 역변환들을 계수 블록에 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (156) 은 역 DCT, 역 정수 변환, 역 Karhunen-Loeve 변환 (KLT), 역 회전 변환, 역 방향 변환, 또는 또 다른 역변환을 계수 블록에 적용할 수도 있다.
PU 가 인트라 예측을 이용하여 인코딩되면, 인트라-예측 프로세싱 유닛 (166) 은 인트라 예측을 수행하여, PU 에 대한 예측 블록들을 발생시킬 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 인트라 예측 모드를 이용하여, 공간적으로-이웃하는 PU들의 예측 블록들에 기초하여 PU 에 대한 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들) 을 발생시킬 수도 있다. 인트라-예측 프로세싱 유닛 (166) 은 비트스트림으로부터 디코딩된 하나 이상의 신택스 엘리먼트들에 기초하여, PU 에 대한 인트라 예측 모드를 결정할 수도 있다.
예측 프로세싱 유닛 (152) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여, 제 1 참조 픽처 리스트 (RefPicList0) 및 제 2 참조 픽처 리스트 (RefPicList1) 를 구성할 수도 있다. 더욱이, PU 가 인터 예측을 이용하여 인코딩되면, 엔트로피 디코딩 유닛 (150) 은 PU 에 대한 모션 정보를 추출할 수도 있다. 모션 보상 유닛 (164) 은 PU 의 모션 정보에 기초하여, PU 에 대한 하나 이상의 참조 영역들을 결정할 수도 있다. 모션 보상 유닛 (164) 은 PU 에 대한 하나 이상의 참조 블록들에서의 샘플들 블록들에 기초하여, PU 에 대한 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들) 을 발생시킬 수도 있다.
복원 유닛 (158) 은 적용가능한 경우, CU 의 TU들의 변환 블록들 (예컨대, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU들의 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들), 즉, 인트라-예측 데이터 또는 인터-예측 데이터 중 어느 하나를 이용하여, CU 의 코딩 블록들 (예컨대, 루마, Cb 및 Cr 코딩 블록들) 을 복원할 수도 있다. 예를 들어, 복원 유닛 (158) 은 변환 블록들 (예컨대, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측 블록들 (예컨대, 예측 루마, Cb 및 Cr 블록들) 의 대응하는 샘플들에 추가하여, CU 의 코딩 블록들 (예컨대, 루마, Cb 및 Cr 코딩 블록들) 을 복원할 수도 있다.
필터 유닛 (160) 은 CU 의 코딩 블록들 (예컨대, 루마, Cb 및 Cr 코딩 블록들) 과 연관되는 블록킹 아티팩트들을 감소시키기 위해 디블록킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 CU 의 코딩 블록들 (예컨대, 루마, Cb 및 Cr 코딩 블록들) 을 디코딩된 픽처 버퍼 (162) 에 저장할 수도 있다. 디코딩된 픽처 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상에의 프리젠테이션을 위해, 참조 픽처들을 제공할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 디코딩된 픽처 버퍼 (162) 에서의 블록들 (예컨대, 루마, Cb 및 Cr 블록들) 에 기초하여, 다른 CU들의 PU들에 대해 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다. 이렇게, 비디오 디코더 (30) 는 비트스트림으로부터, 유의한 계수 블록의 변환 계수 레벨들을 추출하고, 변환 계수 레벨들을 역양자화하고, 변환을 변환 계수 레벨들에 적용하여 변환 블록을 발생시키고, 그 변환 블록에 적어도 부분적으로 기초하여, 코딩 블록을 발생시키고, 그리고 디스플레이를 위해 코딩 블록을 출력할 수도 있다.
팔레트-기반 디코딩 유닛 (165) 은, 예를 들어, 팔레트-기반의 디코딩 모드가 예컨대, CU 또는 PU 에 대해 선택될 때 팔레트-기반의 디코딩을 수행할 수도 있다. 예를 들어, 팔레트-기반 디코딩 유닛 (165) 은 픽셀 값들을 표시하는 엔트리들을 가지는 팔레트를 발생시키고, 비디오 데이터의 블록의 적어도 일부 위치들을 팔레트에서의 엔트리들과 연관시키는 정보를 수신하고, 그 정보에 기초하여 팔레트에서 픽셀 값들을 선택하고, 그리고 그 선택된 픽셀 값들에 기초하여 블록의 픽셀 값들을 복원하도록 구성될 수도 있다. 여러 기능들이 팔레트-기반 디코딩 유닛 (165) 에 의해 수행되는 것으로 설명되지만, 일부 또는 모두 이러한 기능들은 다른 프로세싱 유닛들, 또는 상이한 프로세싱 유닛들의 조합에 의해 수행될 수도 있다.
본 개시물의 일부 예들에 따르면, 팔레트-기반 디코딩 유닛 (165) 은 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정할 수도 있다. 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정할 수도 있다. 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있을 수도 있다. 더욱이, 팔레트-기반 디코딩 유닛 (165) 은 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보에 포함시킬 수도 있다. 팔레트-기반 디코딩 유닛 (165) 은 비트스트림에서 시그널링된 하나 이상의 신택스 엘리먼트들에 기초하여, 현재의 블록의 픽셀에 대한 인덱스 값을 획득할 수도 있다. 더욱이, 팔레트-기반 디코딩 유닛 (165) 은 픽셀에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별할 수도 있다. 게다가, 팔레트-기반 디코딩 유닛 (165) 은 식별된 팔레트 엔트리에 의해 지정된 적어도 하나의 샘플 값에 기초하여, 픽셀의 적어도 하나의 복원된 샘플 값을 결정할 수도 있다. 현재의 블록의 픽셀들의 복원된 샘플 값들을 결정함으로써, 팔레트-기반 디코딩 유닛 (165) 은 현재의 블록을 복원할 수도 있다.
도 7 은 본 개시물의 기법에 따른, 예시적인 디코딩 동작을 예시하는 플로우차트이다. 본 개시물의 플로우차트들은 예들로서 제공된다. 다른 예들에서, 플로우차트들에 나타낸 동작들은 더 많거나, 더 적거나, 또는 상이한 액션들을 포함할 수도 있다. 더욱이, 다른 예들에서, 액션들은 상이한 순서들로 또는 병렬로 수행될 수도 있다. 도 7 은 비디오 디코더 (30) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 디코더들이 또한 도 7 에 나타낸 액션들을 수행하는데 사용될 수도 있다.
도 7 의 예에서, 비디오 디코더 (30) 는 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정한다 (700). 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정할 수도 있다. 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있다. 비디오 디코더 (30) 는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시킬 수도 있다 (702).
더욱이, 비디오 디코더 (30) 는 비트스트림에서 시그널링된 하나 이상의 신택스 엘리먼트들 (예컨대, palette_index 신택스 엘리먼트) 에 기초하여, 현재의 블록의 픽셀에 대한 인덱스 값을 획득할 수도 있다 (704). 게다가, 비디오 디코더 (30) 는 픽셀에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별할 수도 있다 (706). 비디오 디코더 (30) 는 식별된 팔레트 엔트리에 의해 지정된 적어도 하나의 샘플 값에 기초하여, 픽셀의 적어도 하나의 복원된 샘플 값을 결정할 수도 있다 (708).
도 8 은 본 개시물의 기법에 따른, 예시적인 인코딩 동작을 예시하는 플로우차트이다. 도 7 은 비디오 인코더 (20) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 인코더들이 또한 도 8 에 나타낸 액션들을 수행하는데 사용될 수도 있다. 도 8 의 예에서, 비디오 인코더 (20) 는 하나 이상의 후보들을 포함하거나 또는 이들로 이루어지는 팔레트 예측자 리스트를 결정한다 (800). 도 8 의 예에서, 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 값을 지정한다. 더욱이, 도 8 의 예에서, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록에 인접한다.
도 8 의 예에서, 비디오 인코더 (20) 는 현재의 블록에 대한 팔레트에, 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시킨다 (802). 비디오 인코더 (20) 는 비트스트림에서, 현재의 블록의 픽셀에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링하며, 인덱스 값은 팔레트에서의 엔트리에 대응한다 (804).
도 9 는 본 개시물의 기법에 따른, 팔레트를 발생시키는 예시적인 동작을 예시하는 플로우차트이다. 도 9 의 예에서, 비디오 코더 (예컨대, 비디오 인코더 또는 비디오 디코더) 는 원래 팔레트 예측자 리스트를 발생시킨다 (900). 본 개시물에 다른 어딘가에서 자세히 설명된, 도 10 은, 비디오 디코더가 원래 팔레트 예측자 리스트를 발생시키는데 사용할 수도 있는 예시적인 동작이다. 본 개시물에 다른 곳에서 자세히 설명된, 도 12 는, 비디오 인코더가 원래 팔레트 예측자 리스트를 발생시키는데 사용할 수도 있는 예시적인 동작이다.
더욱이, 도 9 의 예에서, 비디오 코더는 별도의 팔레트 예측자 리스트를 발생시킨다 (902). 본 개시물에 다른 곳에서 자세히 설명된, 도 13 은, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 인코더의 예시적인 동작이다. 본 개시물에 다른 곳에서 자세히 설명된, 도 11 은, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 디코더의 예시적인 동작이다.
도 9 의 예에서, 비디오 코더는 프루닝 프로세스를 원래 팔레트 예측자 리스트 및 별도의 팔레트 예측자 리스트에 적용한다 (904). 다른 예들에서, 비디오 코더는 프루닝 프로세스를 수행하지 않는다. 프루닝 프로세스는, 별도의 팔레트 예측자 리스트로부터, 별도의 팔레트 예측자 리스트에서의 특정의 후보를, 특정의 후보가 원래 팔레트 예측자 리스트에서의 후보와 매칭하면, 제거할 수도 있다. 더욱이, 일부 예들에서, 프루닝 프로세스를 적용하는 것의 일부로서, 비디오 코더는 별도의 팔레트 예측자 리스트에서의 제 1 후보 및 원래 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 별도의 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정한다. 비디오 코더는 그 결정에 응답하여 별도의 팔레트 예측자 리스트로부터 제 1 후보를 제거할 수도 있다.
더욱이, 도 9 의 예에서, 비디오 코더는 비트스트림으로부터, 하나 이상의 추가 팔레트 엔트리들을 지정하는 신택스 엘리먼트들 (예컨대, palette_entries 신택스 엘리먼트들) 을 획득한다 (906). 도 9 의 예에서, 비디오 코더는 현재의 블록에 대한 팔레트에, 원래 팔레트 예측자 리스트, 별도의 팔레트 예측자 리스트, 및 추가 팔레트 엔트리들에 남아있는 후보들에 대응하는 팔레트 엔트리들을 포함시킨다 (908). 일부 예들에서, 비디오 코더는 추가 팔레트 엔트리들을 지정하는 임의의 신택스 엘리먼트들을 획득하거나 또는 이러한 추가 팔레트 엔트리들을 팔레트에 포함시키지 않는다.
일부 예들에서, 비디오 코더는 별도의 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 원래 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 및 추가 팔레트 엔트리들과 같이, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들을 순서화한다. 다른 예들에서, 비디오 코더는 원래 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 별도의 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 및 추가 팔레트 엔트리들과 같이, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들을 순서화한다.
도 10 은 본 개시물의 기법에 따른, 원래 팔레트 예측자 리스트를 발생시키기 위한 비디오 디코더 (30) 의 예시적인 동작을 예시하는 플로우차트이다. 도 10 은 비디오 디코더 (30) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 디코더들이 또한 도 10 에서의 액션들을 수행하는데 사용될 수도 있다. 도 10 의 동작은 원래 팔레트 예측자 리스트를 결정하기 위한 도 9 의 액션 (900) 의 인스턴스일 수도 있다. 도 10 의 예에서, 이전에 코딩된 블록의 각각의 개별 팔레트 엔트리에 대해, 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트에 개별 후보를 포함시킨다 (1000). 개별 후보는 개별 팔레트 엔트리와 동일한 픽셀을 지정한다. 따라서, 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트가 하나 이상의 후보들을 포함하도록 원래 팔레트 예측자 리스트를 결정할 수도 있으며, 원래 팔레트 예측자 리스트에서의 각각의 개별 후보는 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정한다. 일부 예들에서, 원래 팔레트 예측자 리스트는 또한 JCTVC-R0082 에서 설명된 바와 같이, 이전에 코딩된 블록 이전에 코딩된 블록에 대한 팔레트에서의 엔트리들에 기초하여 하나 이상의 후보들을 포함할 수도 있다.
더욱이, 비디오 디코더 (30) 는 비트스트림으로부터, 원래 팔레트 예측자 리스트에 대한 2진 벡터를 획득할 수도 있다 (1002). 도 10 의 예에서, 원래 팔레트 예측자 리스트에 대한 2진 벡터는 하나 이상의 2진 벡터 신택스 엘리먼트들 (예컨대, previous_palette_entry_flag 신택스 엘리먼트들) 을 포함한다. 하나 이상의 2진 벡터 신택스 엘리먼트들의 각각은 원래 팔레트 예측자 리스트에서의 상이한 후보에 대응한다.
도 10 의 예에서, 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해 액션들 (1004) 내지 (1008) 을 수행할 수도 있다. 특히, 비디오 디코더 (30) 는 개별 후보가 현재의 블록에서 재사용된다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시하는지 여부를 결정할 수도 있다 (1004). 개별 후보가 현재의 블록에서 재사용된다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1004 의 "예"), 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트에, 개별 후보를 유지한다 (1006). 그렇지 않으면, 개별 후보가 현재의 블록에서 재사용되지 않는다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1004 의 "아니오"), 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트로부터, 개별 후보를 제외시킨다 (1008). 예를 들어, 2진 벡터 "01001…" 는, 원래 팔레트 예측자 리스트에서의 제 2 및 제 5 후보들이 원래 팔레트 예측자 리스트에 유지되고 있고 원래 팔레트 예측자 리스트에서의 제 1, 제 3, 및 제 4 후보들이 궁극적으로 원래 팔레트 예측자 리스트로부터 제외된다는 것을 표시한다.
비디오 디코더 (30) 가 원래 팔레트 예측자 리스트로부터 개별 후보를 제외시키기 때문에, 비디오 디코더 (30) 는 개별 후보가 현재의 블록의 팔레트에 포함되지 않는다고 효과적으로 결정한다. 따라서, 도 10 의 예에서, 원래 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 디코더 (30) 는 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트에 기초하여, 원래 팔레트 예측자 리스트에서의 개별 후보가 현재의 블록에 대한 팔레트에 포함되지 않는다고 결정할 수도 있다.
도 11 은 본 개시물의 기법에 따른, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 디코더 (30) 의 예시적인 동작을 예시하는 플로우차트이다. 도 11 은 비디오 디코더 (30) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 디코더들이 또한 도 11 에 나타낸 액션들을 수행하는데 사용될 수도 있다. 도 11 의 동작은 별도의 팔레트 예측자 리스트를 결정하기 위한 도 9 의 액션 (902) 의 인스턴스일 수도 있다. 도 11 의 예에서, 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에서의 미리 정의된 세트의 이웃 픽셀들의 각각의 개별 이웃 픽셀에 대해, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트에서, 개별 이웃 픽셀의 값을 지정하는 개별 후보를 발생시킨다 (1100).
더욱이, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트로부터 용장의 후보들을 제거할 수도 있다 (1102). 예를 들어, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트로부터 매칭 후보들을 제거할 수도 있다. 일 예에서, 별도의 팔레트 예측자 리스트로부터 용장의 후보들을 제거하는 것의 일부로서, 비디오 디코더 (30) 는 팔레트 예측자 리스트에서의 제 1 후보 및 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정할 수도 있다. 이 예에서, 비디오 디코더 (30) 는 그 결정에 응답하여 팔레트 예측자 리스트로부터 제 1 후보를 제거할 수도 있다.
도 11 의 예에서, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과하는지 여부를 결정할 수도 있다 (1104). 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과한다고 결정하는 것에 응답하여 (1104 의 "예"), 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트의 사이즈가 후보들의 특정의 개수 (예컨대, 임계치) 로 제한되도록 별도의 팔레트 예측자 리스트를 트렁케이트할 수도 있다 (1106). 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과하지 않는다고 결정하는 것에 응답하여 (1104 의 "아니오"), 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트를 트렁케이트하는 것을 억제할 수도 있다 (1108).
게다가, 비디오 디코더 (30) 는 비트스트림으로부터, 별도의 팔레트 예측자 리스트에 대한 2진 벡터를 획득할 수도 있다 (1110). 별도의 팔레트 예측자 리스트에 대한 2진 벡터는 하나 이상의 신택스 엘리먼트들을 포함한다. 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응한다.
도 11 의 예시적인 동작에서, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해 액션들 (1112) 내지 (1116) 을 수행할 수도 있다. 특히, 비디오 디코더 (30) 는 개별 후보가 현재의 블록에서 재사용된다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하는지 여부를 결정한다 (1112). 개별 후보가 현재의 블록에서 재사용된다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1112 의 "예"), 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트에, 개별 후보를 유지한다 (1114). 후보가 현재의 블록에서 재사용되지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1112 의 "아니오"), 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트로부터, 개별 후보를 제외시킬 수도 있다 (1116). 예를 들어, 2진 벡터 "01001…" 은, 별도의 팔레트 예측자 리스트에서의 제 2 및 제 5 후보들 (예컨대, 제 2 및 제 5 이웃하는 복원된 픽셀들) 이 별도의 팔레트 예측자 리스트에 유지되고 별도의 팔레트 예측자 리스트에서의 제 1, 제 3, 및 제 4 후보들 (예컨대, 제 1, 제 3, 및 제 4 이웃하는 복원된 픽셀들) 이 궁극적으로 별도의 팔레트 예측자 리스트로부터 제외된다는 것을 표시한다.
비디오 디코더 (30) 가 별도의 팔레트 예측자 리스트로부터 개별 후보를 제외시키기 때문에, 비디오 디코더 (30) 는 개별 후보가 현재의 블록의 팔레트에 포함되지 않는다고 효과적으로 결정한다. 따라서, 도 11 의 예에서, 별도의 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 디코더 (30) 는 별도의 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트에 기초하여, 별도의 팔레트 예측자 리스트에서의 개별 후보가 현재의 블록에 대한 팔레트에 포함되지 않는다고 결정할 수도 있다.
도 12 는 본 개시물의 기법에 따른, 원래 팔레트 예측자 리스트를 발생시키기 위한 비디오 인코더 (20) 의 예시적인 동작을 예시하는 플로우차트이다. 도 12 는 비디오 인코더 (20) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 디코더들이 또한 도 12 에 나타낸 액션들을 수행하는데 사용될 수도 있다. 도 12 의 동작은 원래 팔레트 예측자 리스트를 결정하기 위한 도 9 의 액션 (900) 의 인스턴스일 수도 있다. 도 12 의 예에서, 이전에 코딩된 블록의 각각의 개별 팔레트 엔트리에 대해, 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트에 개별 후보를 포함시킨다 (1200). 개별 후보는 개별 팔레트 엔트리와 동일한 픽셀을 지정한다. 따라서, 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트가 하나 이상의 후보들을 포함하도록 원래 팔레트 예측자 리스트를 결정할 수도 있으며, 원래 팔레트 예측자 리스트에서의 각각의 개별 후보는 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정한다. 일부 예들에서, 원래 팔레트 예측자 리스트는 또한 JCTVC-R0082 에서 설명된 바와 같이, 이전에 코딩된 블록 이전에 코딩된 블록에 대한 팔레트에서의 엔트리들에 기초하여 하나 이상의 후보들을 포함할 수도 있다.
더욱이, 비디오 인코더 (20) 는 비트스트림에서, 원래 팔레트 예측자 리스트에 대한 2진 벡터를 시그널링할 수도 있다 (1202). 도 12 의 예에서, 원래 팔레트 예측자 리스트에 대한 2진 벡터는 하나 이상의 2진 벡터 신택스 엘리먼트들을 포함한다. 하나 이상의 2진 벡터 신택스 엘리먼트들의 각각은 원래 팔레트 예측자 리스트에서의 상이한 후보에 대응한다.
도 12 의 예에서, 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해 액션들 (1204) 내지 (1208) 을 수행할 수도 있다. 특히, 비디오 인코더 (20) 는 개별 후보가 현재의 블록에서 재사용된다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시하는지 여부를 결정할 수도 있다 (1204). 후보가 현재의 블록에서 재사용된다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1204 의 "예"), 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트에, 개별 후보를 유지한다 (1206).
그렇지 않으면, 후보가 현재의 블록에서 재사용되지 않는다는 것을 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1204 의 "아니오"), 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트로부터, 개별 후보를 제외시킨다 (1208). 비디오 인코더 (20) 가 원래 팔레트 예측자 리스트로부터 개별 후보를 제외시키기 때문에, 비디오 인코더 (20) 는 개별 후보가 현재의 블록의 팔레트에 포함되지 않는다고 효과적으로 결정한다. 따라서, 도 12 의 예에서, 원래 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 인코더 (20) 는 원래 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트에 기초하여, 원래 팔레트 예측자 리스트에서의 개별 후보가 현재의 블록에 대한 팔레트에 포함되지 않는다고 결정할 수도 있다.
도 13 은 본 개시물의 기법에 따른, 별도의 팔레트 예측자 리스트를 발생시키기 위한 비디오 인코더 (20) 의 예시적인 동작을 예시하는 플로우차트이다. 도 13 은 비디오 인코더 (20) 의 상황에서 설명되지만, 다른 유형들의 디바이스들 또는 디코더들이 또한 도 13 에 나타낸 액션들을 수행하는데 사용될 수도 있다. 도 13 의 동작은 별도의 팔레트 예측자 리스트를 결정하는 도 9 의 액션 (902) 의 인스턴스일 수도 있다. 도 13 의 예에서, 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에서의 미리 정의된 세트의 이웃 픽셀들의 각각의 개별 이웃 픽셀에 대해, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에, 개별 이웃 픽셀의 값을 지정하는 개별 후보를 발생시킨다 (1300).
더욱이, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트로부터 용장의 후보들을 제거할 수도 있다 (1302). 예를 들어, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트로부터 매칭 후보들을 제거할 수도 있다. 일 예에서, 별도의 팔레트 예측자 리스트로부터 용장의 후보들을 제거하는 것의 일부로서, 비디오 인코더 (20) 는 팔레트 예측자 리스트에서의 제 1 후보 및 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정할 수도 있다. 이 예에서, 비디오 인코더 (20) 는 그 결정에 응답하여 팔레트 예측자 리스트로부터 제 1 후보를 제거할 수도 있다.
도 13 의 예에서, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과하는지 여부를 결정할 수도 있다 (1304). 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과한다고 결정하는 것에 응답하여 (1304 의 "예"), 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트의 사이즈가 후보들의 특정의 개수 (예컨대, 임계치) 에 제한되도록 별도의 팔레트 예측자 리스트를 트렁케이트할 수도 있다 (1306). 별도의 팔레트 예측자 리스트에서의 후보들의 개수가 임계치를 초과하지 않는다고 결정하는 것에 응답하여 (1304 의 "아니오"), 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트를 트렁케이트하는 것을 억제할 수도 있다 (1308).
게다가, 비디오 인코더 (20) 는 비트스트림에서, 별도의 팔레트 예측자 리스트에 대한 2진 벡터를 시그널링할 수도 있다 (1310). 별도의 팔레트 예측자 리스트에 대한 2진 벡터는 하나 이상의 신택스 엘리먼트들을 포함한다. 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응한다.
도 13 의 예시적인 동작에서, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해 액션들 (1312) 내지 (1316) 을 수행할 수도 있다. 특히, 비디오 인코더 (20) 는 개별 후보가 현재의 블록에서 재사용된다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하는지 여부를 결정한다 (1312). 개별 후보가 현재의 블록에서 재사용된다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1312 의 "예"), 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에, 개별 후보를 유지한다 (1314).
후보가 현재의 블록에서 재사용되지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시한다고 결정하는 것에 응답하여 (1312 의 "아니오"), 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트로부터, 개별 후보를 제외시킬 수도 있다 (1316). 비디오 인코더 (20) 가 별도의 팔레트 예측자 리스트로부터 개별 후보를 제외시키기 때문에, 비디오 인코더 (20) 는 개별 후보가 현재의 블록의 팔레트에 포함되지 않는다고 효과적으로 결정한다. 따라서, 도 13 의 예에서, 별도의 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 비디오 인코더 (20) 는 별도의 팔레트 예측자 리스트에서의 개별 후보에 대응하는 2진 벡터 신택스 엘리먼트에 기초하여, 별도의 팔레트 예측자 리스트에서의 개별 후보가 현재의 블록에 대한 팔레트에 포함되지 않는다고 결정할 수도 있다.
다음 단락들은 본 개시물의 몇개의 예들을 열거한다.
예 1. 비디오 데이터를 디코딩하는 방법으로서, 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 복원된 이웃하는 픽셀의 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록에 인접한, 상기 팔레트 예측자 리스트를 결정하는 단계; 비트스트림으로부터, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 획득하는 단계로서, 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 획득하는 단계; 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해: 비디오 데이터의 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 값을 포함한다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트에, 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 포함시키는 단계; 및 팔레트가 개별 후보에 의해 지정된 값을 포함하지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트로부터, 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 제외시키는 단계; 비트스트림에서 시그널링된 하나 이상의 추가 신택스 엘리먼트들에 기초하여, 현재의 블록의 샘플에 대한 인덱스 값을 획득하는 단계; 샘플에 대한 인덱스 값에 대응하는 팔레트에서의 팔레트 엔트리를 식별하는 단계; 및 식별된 팔레트 엔트리에 의해 지정된 픽셀 값에 기초하여, 샘플의 복원된 값을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 2. 예 1 의 방법에 있어서, 복원된 이웃하는 픽셀들은 현재의 블록보다 위에 있는 라인으로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 디코딩하는 방법.
예 3. 예들 1 또는 2 의 방법에 있어서, 복원된 이웃하는 픽셀들은 현재의 블록 좌측에 있는 칼럼으로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 디코딩하는 방법.
예 4. 예 1 의 방법에 있어서, 복원된 이웃하는 픽셀들은 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 및 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 또는 상부-우측 복원된 이웃하는 픽셀 중 적어도 하나를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 5. 예 1 의 방법에 있어서, 복원된 이웃하는 픽셀들은 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 및 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 및 상부-우측 복원된 이웃하는 픽셀 각각을 포함하는, 비디오 데이터를 디코딩하는 방법.
예 6. 예들 1-5 중 임의의 예의 방법에 있어서, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 제 1 팔레트 예측자 리스트로부터 하나 이상의 용장의 후보들을 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 7. 예들 1-6 중 임의의 예의 방법에 있어서, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 팔레트 예측자 리스트에서의 제 1 후보 및 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정하는 단계; 및 그 결정에 응답하여 팔레트 예측자 리스트로부터 제 1 후보를 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 8. 예들 1-7 중 임의의 예의 방법에 있어서, 하나 이상의 이웃하는 픽셀들은 복수의 이웃하는 픽셀들을 포함하며, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 복수의 복원된 이웃하는 픽셀들의 값들의 빈도에 따라서 복수의 복원된 이웃하는 픽셀들 중 2개 이상을 랭크하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 9. 예들 1-8 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트를 결정하는 단계는 팔레트 예측자 리스트의 사이즈가 특정의 개수의 후보들로 제한되도록 팔레트 예측자 리스트를 트렁케이트하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 10. 예들 1-9 중 임의의 예의 방법에 있어서, 인-루프 필터링은 팔레트 예측자 리스트에서의 후보들에 의해 지정된 하나 이상의 복원된 이웃하는 픽셀들의 값들에 적용되지 않는, 비디오 데이터를 디코딩하는 방법.
예 11. 예들 1-10 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트는 제 1 팔레트 예측자 리스트이고 2진 벡터는 제 1 의 2진 벡터이며, 본 방법은, 하나 이상의 후보들을 포함하는 제 2 팔레트 예측자 리스트를 결정하는 단계로서, 상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보는 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정하는, 상기 제 2 팔레트 예측자 리스트를 결정하는 단계; 비트스트림으로부터 제 2 의 2진 벡터를 획득하는 단계로서, 제 2 의 2진 벡터는 하나 이상의 제 2 의 2진 벡터 신택스 엘리먼트들을 포함하며, 하나 이상의 제 2 의 2진 벡터 신택스 엘리먼트들의 각각은 제 2 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 제 2 의 2진 벡터를 획득하는 단계; 및 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해: 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 팔레트 엔트리를 포함한다는 것을 제 2 팔레트 예측자 리스트에서의 개별 후보에 대응하는 제 2 의 2진 벡터 신택스 엘리먼트가 표시하면, 현재의 블록에 대한 팔레트에, 개별 후보에 의해 지정된 팔레트 엔트리를 포함시키는 단계; 및 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 팔레트 엔트리를 포함하지 않는다는 것을 제 2 팔레트 예측자 리스트에서의 개별 후보에 대응하는 제 2 의 2진 벡터 신택스 엘리먼트가 표시하면, 현재의 블록에 대한 팔레트로부터, 개별 후보에 의해 지정된 팔레트 엔트리를 제외시키는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
예 12. 예 11 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
예 13. 예 12 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계는 제 1 팔레트 예측자 리스트로부터, 제 1 팔레트 예측자 리스트에서의 특정의 후보를, 특정의 후보가 제 2 팔레트 예측자 리스트에서의 후보와 매칭하면, 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 14. 예들 12 또는 13 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계는 제 1 팔레트 예측자 리스트에서의 제 1 후보 및 제 2 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 제 1 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정하는 단계; 및 그 결정에 응답하여 제 1 팔레트 예측자 리스트로부터 제 1 후보를 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
예 15. 예들 11-14 중 임의의 예의 방법에 있어서, 비트스트림으로부터, 하나 이상의 추가 팔레트 엔트리들을 지정하는 신택스 엘리먼트들을 획득하는 단계; 및 현재의 블록에 대한 팔레트에, 하나 이상의 추가 팔레트 엔트리들을 포함시키는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
예 16. 예 15 의 방법에 있어서, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들은 제 1 팔레트 예측자 리스트에서의 후보들에 의해 지정된 값들을 지정하는 팔레트 엔트리들, 추가 팔레트 엔트리들, 및 제 2 팔레트 예측자 리스트에 의해 지정된 팔레트 엔트리들과 같이 순서화되는, 비디오 데이터를 디코딩하는 방법.
예 17. 예 15 의 방법에 있어서, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들은 제 1 팔레트 예측자 리스트에서의 후보들에 의해 지정된 값들을 지정하는 팔레트 엔트리들, 제 2 팔레트 예측자 리스트에 의해 지정된 팔레트 엔트리들, 및 추가 팔레트 엔트리들과 같이 순서화되는, 비디오 데이터를 디코딩하는 방법.
예 18. 예들 1-17 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트의 후보들은 현재의 블록 이후 프로세싱된 비디오 데이터의 블록에 대한 팔레트를 결정하는데 사용된 팔레트 예측자 리스트에 포함되지 않는, 비디오 데이터를 디코딩하는 방법.
예 19. 비디오 데이터를 인코딩하는 방법으로서, 하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 복원된 이웃하는 픽셀의 값을 지정하며, 하나 이상의 복원된 이웃하는 픽셀들의 각각은 비디오 데이터의 현재의 블록에 인접한, 상기 팔레트 예측자 리스트를 결정하는 단계; 비트스트림에서, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 시그널링하는 단계로서, 하나 이상의 신택스 엘리먼트들의 각각은 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 시그널링하는 단계; 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해: 비디오 데이터의 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 값을 포함한다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트는 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 포함하고; 그리고 팔레트가 개별 후보에 의해 지정된 값을 포함하지 않는다는 것을 개별 후보에 대응하는 신택스 엘리먼트가 표시하면, 팔레트는 개별 후보에 의해 지정된 값을 지정하는 팔레트 엔트리를 제외하는 단계; 및 현재의 블록의 샘플에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계로서, 상기 인덱스 값은 팔레트에서의 엔트리에 대응하는, 상기 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 20. 예 19 의 방법에 있어서, 복원된 이웃하는 픽셀들은 현재의 블록보다 위에 있는 라인으로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 인코딩하는 방법.
예 21. 예들 19 또는 20 의 방법에 있어서, 복원된 이웃하는 픽셀들은 현재의 블록 좌측에 있는 칼럼으로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 인코딩하는 방법.
예 22. 예 19 의 방법에 있어서, 복원된 이웃하는 픽셀들은 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 및 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 또는 상부-우측 복원된 이웃하는 픽셀 중 적어도 하나를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 23. 예 19 의 방법에 있어서, 복원된 이웃하는 픽셀들은 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 및 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 및 상부-우측 복원된 이웃하는 픽셀 각각을 포함하는, 비디오 데이터를 인코딩하는 방법.
예 24. 예들 19-23 중 임의의 예의 방법에 있어서, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 제 1 팔레트 예측자 리스트로부터 하나 이상의 용장의 후보들을 제거하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 25. 예들 19-24 중 임의의 예의 방법에 있어서, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 팔레트 예측자 리스트에서의 제 1 후보 및 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정하는 단계; 및 그 결정에 응답하여 팔레트 예측자 리스트로부터 제 1 후보를 제거하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 26. 예들 19-25 중 임의의 예의 방법에 있어서, 하나 이상의 이웃하는 픽셀들은 복수의 이웃하는 픽셀들을 포함하며, 제 1 팔레트 예측자 리스트를 발생시키는 단계는 복수의 복원된 이웃하는 픽셀들의 값들의 빈도에 따라서 복수의 복원된 이웃하는 픽셀들 중 2개 이상을 랭크하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 27. 예들 19-26 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트를 결정하는 단계는 팔레트 예측자 리스트의 사이즈가 특정의 개수의 후보들로 제한되도록 팔레트 예측자 리스트를 트렁케이트하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 28. 예들 19-27 중 임의의 예의 방법에 있어서, 인-루프 필터링은 팔레트 예측자 리스트에서의 후보들에 의해 지정된 하나 이상의 복원된 이웃하는 픽셀들의 값들에 적용되지 않는, 비디오 데이터를 인코딩하는 방법.
예 29. 예들 19-28 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트는 제 1 팔레트 예측자 리스트이고 2진 벡터는 제 1 의 2진 벡터이며, 본 방법은, 하나 이상의 후보들을 포함하는 제 2 팔레트 예측자 리스트를 결정하는 단계로서, 상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보는 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정하는, 상기 제 2 팔레트 예측자 리스트를 결정하는 단계; 제 2 의 2진 벡터를 비트스트림에서 시그널링하는 단계로서, 상기 제 2 의 2진 벡터는 하나 이상의 제 2 의 2진 벡터 신택스 엘리먼트들을 포함하며, 하나 이상의 제 2 의 2진 벡터 신택스 엘리먼트들의 각각은 제 2 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 제 2 의 2진 벡터를 비트스트림에서 시그널링하는 단계; 및 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해: 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 팔레트 엔트리를 포함한다는 것을 제 2 팔레트 예측자 리스트에서의 개별 후보에 대응하는 제 2 의 2진 벡터 신택스 엘리먼트가 표시하면, 현재의 블록에 대한 팔레트는 개별 후보에 의해 지정된 팔레트 엔트리를 포함하고; 그리고 현재의 블록에 대한 팔레트가 개별 후보에 의해 지정된 팔레트 엔트리를 포함하지 않는다는 것을 제 2 팔레트 예측자 리스트에서의 개별 후보에 대응하는 제 2 의 2진 벡터 신택스 엘리먼트가 표시하면, 현재의 블록에 대한 팔레트는 개별 후보에 의해 지정된 팔레트 엔트리를 제외하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
예 30. 예 29 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
예 31. 예 30 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계는 제 1 팔레트 예측자 리스트로부터, 제 1 팔레트 예측자 리스트에서의 특정의 후보를, 특정의 후보가 제 2 팔레트 예측자 리스트에서의 후보와 매칭하면, 제거하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 32. 예들 30 또는 31 의 방법에 있어서, 프루닝 프로세스를 제 1 및 제 2 팔레트 예측자 리스트들에 적용하는 단계는 제 1 팔레트 예측자 리스트에서의 제 1 후보 및 제 2 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 제 1 팔레트 예측자 리스트로부터 제 1 후보를 제거할지 여부를 결정하는 단계; 및 그 결정에 응답하여 제 1 팔레트 예측자 리스트로부터 제 1 후보를 제거하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
예 33. 예들 29-32 중 임의의 예의 방법에 있어서, 현재의 블록에 대한 팔레트에, 하나 이상의 추가 팔레트 엔트리들을 포함시키는 단계; 및 비트스트림에서, 하나 이상의 추가 팔레트 엔트리들을 지정하는 신택스 엘리먼트들을 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
예 34. 예 33 의 방법에 있어서, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들은 제 1 팔레트 예측자 리스트에서의 후보들에 의해 지정된 값들을 지정하는 팔레트 엔트리들, 추가 팔레트 엔트리들, 및 제 2 팔레트 예측자 리스트에 의해 지정된 팔레트 엔트리들과 같이 순서화되는, 비디오 데이터를 인코딩하는 방법.
예 35. 예 33 의 방법에 있어서, 현재의 블록에 대한 팔레트에서의 팔레트 엔트리들은 제 1 팔레트 예측자 리스트에서의 후보들에 의해 지정된 값들을 지정하는 팔레트 엔트리들, 제 2 팔레트 예측자 리스트에 의해 지정된 팔레트 엔트리들, 및 추가 팔레트 엔트리들과 같이 순서화되는, 비디오 데이터를 인코딩하는 방법.
예 36. 예들 19-35 중 임의의 예의 방법에 있어서, 팔레트 예측자 리스트의 후보들은 현재의 블록 이후 프로세싱된 비디오 데이터의 블록에 대한 팔레트를 결정하는데 사용된 팔레트 예측자 리스트에 포함되지 않는, 비디오 데이터를 인코딩하는 방법.
예 37. 비디오 데이터를 디코딩하도록 구성된 디바이스로서, 비디오 데이터를 저장하도록 구성된 메모리; 및 예들 1-18 중 임의의 예의 방법들을 수행하도록 구성된 하나 이상의 프로세서들을 포함하는, 비디오 데이터를 프로세싱하는 디바이스.
예 38. 비디오 데이터를 인코딩하도록 구성된 디바이스로서, 비디오 데이터를 저장하도록 구성된 메모리; 및 예들 19-36 중 임의의 예의 방법들을 수행하도록 구성된 하나 이상의 프로세서들을 포함하는, 비디오 데이터를 프로세싱하는 디바이스.
예 39. 비디오 데이터를 디코딩하도록 구성된 디바이스로서, 예들 1-18 중 임의의 예의 방법들을 수행하는 수단을 포함하는, 디바이스.
예 40. 비디오 데이터를 인코딩하도록 구성된 디바이스로서, 예들 19-36 중 임의의 예의 방법들을 수행하는 수단을 포함하는, 디바이스.
예 41. 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 예들 1-18 중 임의의 예의 방법들을 수행하게 하는 명령들을 저장하고 있는 컴퓨터-판독가능 저장 매체.
예 42. 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 예들 19-36 중 임의의 예의 방법들을 수행하게 하는 명령들을 저장하고 있는 컴퓨터-판독가능 저장 매체.
그 예에 따라서, 본원에서 설명되는 기법들 중 임의의 기법의 어떤 행위들 또는 이벤트들이 상이한 시퀀스로 수행될 수 있으며, 추가되거나, 병합되거나, 또는 모두 제외시킬 수도 있는 (예컨대, 모든 설명되는 행위들 또는 이벤트들이 기법들의 실시에 필수적인 것은 아닌) 것으로 인식되어야 한다. 더욱이, 어떤 예들에서, 행위들 또는 이벤트들은 순차적으로 보다는, 동시에, 예컨대, 멀티-쓰레드된 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통해서 수행될 수도 있다. 게다가, 본 개시물의 어떤 양태들이 명료성의 목적들을 위해 단일 모듈 또는 유닛에 의해 수행되는 것으로 설명되지만, 본 개시물의 기법들은 비디오 코더와 연관되는 유닛들 또는 모듈들의 결합에 의해 수행될 수도 있는 것으로 이해되어야 한다.
본 개시물의 어떤 양태들은 예시의 목적을 위해 HEVC 표준에 대해서 설명되었다. 그러나, 본 개시물에서 설명하는 기법들은 아직 개발되지 않은 다른 표준 또는 독점 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
위에서 설명된 기법들은 비디오 인코더 (20) (도 1 및 도 5) 및/또는 비디오 디코더 (30) (도 1 및 도 6) 에 의해 수행될 수도 있으며, 이 비디오 인코더와 디코더는 비디오 코더로서 일반적으로 지칭될 수도 있다. 이와 유사하게, 비디오 코딩은 적용가능한 경우, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다.
본 기법들의 여러 양태들의 특정의 조합들이 위에서 설명되지만, 이들 조합들은 단지 본 개시물에서 설명하는 기법들의 예들을 예시하기 위해 제공된다. 따라서, 본 개시물의 기법들은 이들 예시적인 조합들에 한정되지 않아야 하며 본 개시물에서 설명하는 기법들의 여러 양태들의 임의의 상상가능한 조합을 포괄할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령들 또는 코드로서, 컴퓨터-판독가능 매체 상에 저장되거나 또는 컴퓨터-판독가능 매체를 통해서 송신될 수도 있으며, 하드웨어-기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터-판독가능 매체는 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라서 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방법으로, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시성 유형의 컴퓨터-판독가능 저장 매체, 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
일 예로서, 이에 한정하지 않고, 이런 컴퓨터-판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터-판독가능 매체로 적절히 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 무선 기술들, 예컨대 적외선, 라디오, 및 마이크로파를 이용하여 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 무선 기술들 예컨대 적외선, 라디오, 및 마이크로파가 그 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체는 접속부들, 반송파들, 신호들, 또는 다른 일시성 매체를 포함하지 않고, 그 대신, 비-일시성 유형의 저장 매체로 송신되는 것으로 해석되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 Blu-ray 디스크를 포함하며, 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 결합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본원에서 사용될 때 전술한 구조 중 임의의 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 전적으로 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시한 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 여러 구성요소들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 대신, 위에서 설명한 바와 같이, 여러 유닛들이 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호작용하는 하드웨어 유닛들의 컬렉션으로 제공될 수도 있다.
여러 예들이 설명되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.

Claims (30)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 상기 하나 이상의 복원된 이웃하는 픽셀들의 각각은 상기 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하는 단계;
    상기 현재의 블록에 대한 팔레트에, 상기 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 단계;
    비트스트림에서 시그널링된 하나 이상의 신택스 엘리먼트들에 기초하여, 상기 현재의 블록의 픽셀에 대한 인덱스 값을 획득하는 단계;
    상기 픽셀에 대한 상기 인덱스 값에 대응하는 상기 팔레트에서의 팔레트 엔트리를 식별하는 단계; 및
    식별된 상기 팔레트 엔트리에 의해 지정된 상기 적어도 하나의 샘플 값에 기초하여, 상기 픽셀의 적어도 하나의 복원된 샘플 값을 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 복원된 이웃하는 픽셀들은, 상기 현재의 블록 바로 위에 있는 라인, 및 상기 현재의 블록 바로 좌측에 있는 칼럼으로 이루어지는 그룹으로부터 선택된 적어도 하나로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 디코딩하는 방법.
  3. 제 2 항에 있어서,
    상기 복원된 이웃하는 픽셀들은, 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 또는 상부-우측 복원된 이웃하는 픽셀로 이루어지는 그룹으로부터 선택된 적어도 하나를 포함하는, 비디오 데이터를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 팔레트 예측자 리스트를 결정하는 단계는,
    상기 팔레트 예측자 리스트로부터 하나 이상의 용장의 후보들을 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 팔레트 예측자 리스트를 결정하는 단계는,
    상기 팔레트 예측자 리스트에서의 제 1 후보 및 상기 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 상기 팔레트 예측자 리스트로부터 상기 제 1 후보를 제거할지 여부를 결정하는 단계; 및
    상기 결정에 응답하여 상기 팔레트 예측자 리스트로부터 상기 제 1 후보를 제거하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 하나 이상의 이웃하는 픽셀들은 복수의 이웃하는 픽셀들을 포함하며,
    상기 팔레트 예측자 리스트를 결정하는 단계는,
    복수의 상기 복원된 이웃하는 픽셀들의 값들의 빈도에 따라서, 상기 팔레트 예측자 리스트 내에서, 상기 복수의 복원된 이웃하는 픽셀들 중 2개 이상을 랭크하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 팔레트 예측자 리스트를 결정하는 단계는,
    상기 팔레트 예측자 리스트의 사이즈가 특정의 개수의 후보들로 제한되도록 상기 팔레트 예측자 리스트를 트렁케이트하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 팔레트 예측자 리스트를 결정한 후 인-루프 필터링을 상기 하나 이상의 복원된 이웃하는 픽셀들에 적용하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  9. 제 1 항에 있어서,
    상기 비트스트림으로부터, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 획득하는 단계로서, 상기 하나 이상의 신택스 엘리먼트들의 각각은 상기 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 획득하는 단계;
    상기 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 상기 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 팔레트 예측자 리스트는 제 1 팔레트 예측자 리스트이고 상기 2진 벡터는 제 1 의 2진 벡터이며,
    상기 방법은,
    하나 이상의 후보들을 포함하는 제 2 팔레트 예측자 리스트를 결정하는 단계로서, 상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보는 상기 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정하는, 상기 제 2 팔레트 예측자 리스트를 결정하는 단계;
    상기 비트스트림으로부터, 상기 제 2 팔레트 예측자 리스트에 대한 2진 벡터를 획득하는 단계로서, 상기 2진 벡터는 하나 이상의 2진 벡터 신택스 엘리먼트들을 포함하며, 상기 하나 이상의 2진 벡터 신택스 엘리먼트들의 각각은 상기 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 획득하는 단계; 및
    상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  11. 제 10 항에 있어서,
    상기 제 1 팔레트 예측자 리스트로부터, 상기 제 1 팔레트 예측자 리스트에서의 특정의 후보를, 상기 특정의 후보가 상기 제 2 팔레트 예측자 리스트에서의 후보와 매칭하면, 제거하는 프루닝 프로세스를 적용하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  12. 제 10 항에 있어서,
    상기 제 1 팔레트 예측자 리스트에서의 제 1 후보 및 상기 제 2 팔레트 예측자 리스트에서의 제 2 후보의 유사성의 메트릭에 기초하여, 상기 제 1 팔레트 예측자 리스트로부터 상기 제 1 후보를 제거할지 여부를 결정하는 단계; 및
    상기 결정에 응답하여 상기 제 1 팔레트 예측자 리스트로부터 상기 제 1 후보를 제거하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  13. 제 10 항에 있어서,
    상기 비트스트림으로부터, 하나 이상의 추가 팔레트 엔트리들을 지정하는 신택스 엘리먼트들을 획득하는 단계; 및
    상기 현재의 블록에 대한 상기 팔레트에, 상기 하나 이상의 추가 팔레트 엔트리들을 포함시키는 단계를 더 포함하며,
    상기 현재의 블록에 대한 상기 팔레트에서의 상기 팔레트 엔트리들은 상기 제 1 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 상기 제 2 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 및 상기 추가 팔레트 엔트리들과 같이 순서화되는, 비디오 데이터를 디코딩하는 방법.
  14. 제 10 항에 있어서,
    상기 비트스트림으로부터, 하나 이상의 추가 팔레트 엔트리들을 지정하는 신택스 엘리먼트들을 획득하는 단계; 및
    상기 현재의 블록에 대한 상기 팔레트에, 상기 하나 이상의 추가 팔레트 엔트리들을 포함시키는 단계를 더 포함하며,
    상기 현재의 블록에 대한 상기 팔레트에서의 상기 팔레트 엔트리들은 상기 제 2 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 상기 제 1 팔레트 예측자 리스트에서의 후보들을 지정하는 팔레트 엔트리들, 및 상기 추가 팔레트 엔트리들과 같이, 순서화되는, 비디오 데이터를 디코딩하는 방법.
  15. 제 1 항에 있어서,
    상기 팔레트 예측자 리스트의 후보들은, 상기 현재의 블록 이후 프로세싱된 상기 비디오 데이터의 블록에 대한 팔레트를 결정하는데 사용된 팔레트 예측자 리스트에 포함되지 않는, 비디오 데이터를 디코딩하는 방법.
  16. 비디오 데이터를 인코딩하는 방법으로서,
    하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 단계로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 상기 하나 이상의 복원된 이웃하는 픽셀들의 각각은 상기 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하는 단계;
    상기 현재의 블록에 대한 팔레트에, 상기 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 단계; 및
    비트스트림에서, 상기 현재의 블록의 픽셀에 대한 인덱스 값을 표시하는 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계로서, 상기 인덱스 값은 상기 팔레트에서의 엔트리에 대응하는, 상기 하나 이상의 신택스 엘리먼트들을 시그널링하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  17. 제 16 항에 있어서,
    상기 복원된 이웃하는 픽셀들은, 상기 현재의 블록 바로 위에 있는 라인, 및 상기 현재의 블록 바로 좌측에 있는 칼럼으로 이루어지는 그룹으로부터 선택된 적어도 하나로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 인코딩하는 방법.
  18. 제 16 항에 있어서,
    상기 복원된 이웃하는 픽셀들은, 좌하측 복원된 이웃하는 픽셀, 좌측 복원된 이웃하는 픽셀, 상부-좌측 복원된 이웃하는 픽셀, 상부 복원된 이웃하는 픽셀, 또는 상부-우측 복원된 이웃하는 픽셀로 이루어지는 그룹으로부터 선택된 적어도 하나를 포함하는, 비디오 데이터를 인코딩하는 방법.
  19. 제 16 항에 있어서,
    상기 하나 이상의 이웃하는 픽셀들은 복수의 이웃하는 픽셀들을 포함하며,
    상기 팔레트 예측자 리스트를 발생시키는 단계는,
    복수의 상기 복원된 이웃하는 픽셀들의 값들의 빈도에 따라서, 상기 팔레트 예측자 리스트 내에서, 상기 복수의 복원된 이웃하는 픽셀들 중 2개 이상을 랭크하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  20. 제 16 항에 있어서,
    상기 비트스트림에서, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 시그널링하는 단계로서, 상기 하나 이상의 신택스 엘리먼트들의 각각은 상기 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 시그널링하는 단계; 및
    상기 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 상기 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  21. 제 16 항에 있어서,
    상기 팔레트 예측자 리스트는 제 1 팔레트 예측자 리스트이고 상기 2진 벡터는 제 1 의 2진 벡터이며,
    상기 방법은,
    하나 이상의 후보들을 포함하는 제 2 팔레트 예측자 리스트를 결정하는 단계로서, 상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보는 상기 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정하는, 상기 제 2 팔레트 예측자 리스트를 결정하는 단계;
    상기 비트스트림에서 2진 벡터를 시그널링하는 단계로서, 상기 2진 벡터는 하나 이상의 2진 벡터 신택스 엘리먼트들을 포함하며, 상기 하나 이상의 2진 벡터 신택스 엘리먼트들의 각각은 상기 제 2 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 시그널링하는 단계; 및
    상기 제 2 팔레트 예측자 리스트에서의 적어도 하나의 개별 후보에 대해, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  22. 제 21 항에 있어서,
    상기 제 1 팔레트 예측자 리스트로부터, 상기 제 1 팔레트 예측자 리스트에서의 특정의 후보를, 상기 특정의 후보가 상기 제 2 팔레트 예측자 리스트에서의 후보와 매칭하면, 제거하는 프루닝 프로세스를 적용하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  23. 비디오 데이터를 코딩하도록 구성된 디바이스로서,
    상기 비디오 데이터를 저장하도록 구성된 메모리; 및
    하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서는,
    하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 것으로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 상기 하나 이상의 복원된 이웃하는 픽셀들의 각각은 상기 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하고; 그리고
    상기 현재의 블록에 대한 팔레트에, 상기 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키도록 구성되는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  24. 제 23 항에 있어서,
    상기 복원된 이웃하는 픽셀들은, 상기 현재의 블록 바로 위에 있는 라인, 및 상기 현재의 블록 바로 좌측에 있는 칼럼으로 이루어지는 그룹으로부터 선택된 적어도 하나로부터의 복원된 이웃하는 픽셀들을 포함하는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  25. 제 23 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 비트스트림으로부터, 하나 이상의 신택스 엘리먼트들을 포함하는 2진 벡터를 획득하는 것으로서, 상기 하나 이상의 신택스 엘리먼트들의 각각은 상기 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 획득하고; 그리고
    상기 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 상기 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하도록 구성되는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  26. 제 23 항에 있어서,
    상기 팔레트 예측자 리스트는 제 1 팔레트 예측자 리스트이고 상기 2진 벡터는 제 1 의 2진 벡터이며,
    상기 하나 이상의 프로세서들은,
    하나 이상의 후보들을 포함하는 제 2 팔레트 예측자 리스트를 결정하는 것으로서, 상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보는 상기 비디오 데이터의 이전에 코딩된 블록에 대한 팔레트에서의 팔레트 엔트리를 지정하는, 상기 제 2 팔레트 예측자 리스트를 결정하고;
    비트스트림으로부터, 상기 제 2 팔레트 예측자 리스트에 대한 2진 벡터를 획득하는 것으로서, 상기 2진 벡터는 하나 이상의 2진 벡터 신택스 엘리먼트들을 포함하며, 상기 하나 이상의 2진 벡터 신택스 엘리먼트들의 각각은 상기 팔레트 예측자 리스트에서의 상이한 후보에 대응하는, 상기 2진 벡터를 획득하고; 그리고
    상기 제 2 팔레트 예측자 리스트에서의 각각의 개별 후보에 대해, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보에 대응하는 상기 2진 벡터 신택스 엘리먼트에 기초하여, 상기 제 2 팔레트 예측자 리스트에서의 상기 개별 후보가 상기 현재의 블록에 대한 상기 팔레트에 포함되지 않는다고 결정하도록 더 구성되는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  27. 제 23 항에 있어서,
    상기 하나 이상의 프로세서들은,
    비트스트림에서 시그널링된 하나 이상의 추가 신택스 엘리먼트들에 기초하여, 상기 현재의 블록의 픽셀에 대한 인덱스 값을 획득하고;
    상기 픽셀에 대한 상기 인덱스 값에 대응하는 상기 팔레트에서의 팔레트 엔트리를 식별하고; 그리고
    식별된 상기 팔레트 엔트리에 의해 지정된 상기 적어도 하나의 샘플 값에 기초하여, 상기 픽셀의 적어도 하나의 복원된 샘플 값을 결정하도록 구성되는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  28. 제 23 항에 있어서,
    상기 디바이스는,
    집적 회로;
    마이크로프로세서; 또는
    무선 통신 디바이스로 이루어지는 그룹으로부터 선택된 적어도 하나를 포함하는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  29. 제 23 항에 있어서,
    디코딩된 비디오 데이터를 디스플레이하도록 구성된 디스플레이, 또는 상기 비디오 데이터를 캡쳐하도록 구성된 카메라로 이루어지는 그룹으로부터 선택된 적어도 하나를 더 포함하는, 비디오 데이터를 코딩하도록 구성된 디바이스.
  30. 비디오 데이터를 디코딩하도록 구성된 디바이스로서,
    하나 이상의 후보들을 포함하는 팔레트 예측자 리스트를 결정하는 수단으로서, 상기 팔레트 예측자 리스트에서의 각각의 개별 후보는 하나 이상의 복원된 이웃하는 픽셀들 중에서 상이한 개별 복원된 이웃하는 픽셀의 적어도 하나의 샘플 값을 지정하며, 상기 하나 이상의 복원된 이웃하는 픽셀들의 각각은 상기 비디오 데이터의 현재의 블록보다 위에 있는 라인 또는 좌측에 있는 칼럼에 있는, 상기 팔레트 예측자 리스트를 결정하는 수단; 및
    상기 현재의 블록에 대한 팔레트에, 상기 팔레트 예측자 리스트에서의 적어도 하나의 후보를 포함시키는 수단을 포함하는, 비디오 데이터를 디코딩하도록 구성된 디바이스.
KR1020177000528A 2014-07-11 2015-07-10 진보된 팔레트 예측 및 시그널링 KR20170031133A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462023436P 2014-07-11 2014-07-11
US62/023,436 2014-07-11
US14/795,734 2015-07-09
US14/795,734 US9955157B2 (en) 2014-07-11 2015-07-09 Advanced palette prediction and signaling
PCT/US2015/039904 WO2016007832A1 (en) 2014-07-11 2015-07-10 Advanced palette prediction and signaling

Publications (1)

Publication Number Publication Date
KR20170031133A true KR20170031133A (ko) 2017-03-20

Family

ID=53765550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177000528A KR20170031133A (ko) 2014-07-11 2015-07-10 진보된 팔레트 예측 및 시그널링

Country Status (6)

Country Link
US (1) US9955157B2 (ko)
EP (1) EP3167615A1 (ko)
JP (1) JP2017527168A (ko)
KR (1) KR20170031133A (ko)
CN (1) CN106664429A (ko)
WO (1) WO2016007832A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023090616A1 (ko) * 2021-11-19 2023-05-25 현대자동차주식회사 포인트 단위 예측을 이용하는 라이다 포인트 클라우드 코딩을 위한 방법 및 장치

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015194187A1 (en) 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding
US9986248B2 (en) * 2015-01-29 2018-05-29 Qualcomm Incorporated Palette mode coding for video coding
US10506244B2 (en) 2015-03-06 2019-12-10 Qualcomm Incorporated Method and apparatus for video coding using adaptive tile sizes
US10178412B2 (en) * 2015-04-08 2019-01-08 Hfi Innovation Inc. Methods of palette mode coding in video coding
US11025905B2 (en) * 2018-09-14 2021-06-01 Tencent America LLC Method and device for decoding with palette mode
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
CN114175662B (zh) 2019-07-20 2023-11-24 北京字节跳动网络技术有限公司 调色板模式使用指示的条件相关编解码
CN117221536A (zh) * 2019-07-23 2023-12-12 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
US11770535B2 (en) * 2021-02-19 2023-09-26 Samsung Display Co., Ltd. Systems and methods for joint color channel entropy encoding with positive reconstruction error

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898313B2 (en) 2002-03-06 2005-05-24 Sharp Laboratories Of America, Inc. Scalable layered coding in a multi-layer, compound-image data transmission system
KR100856411B1 (ko) 2006-12-01 2008-09-04 삼성전자주식회사 조도 보상 방법 및 그 장치와 그 방법을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN100576921C (zh) * 2008-01-14 2009-12-30 浙江大学 基于块分类的混合图像压缩方法
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
WO2015096812A1 (en) * 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for palette coding with cross block prediction
CN106105229B (zh) * 2014-03-14 2019-03-15 寰发股份有限公司 使用调色板编码来编码视频数据的块的方法及装置
AU2014202921B2 (en) * 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
CA2950964C (en) * 2014-06-19 2018-10-30 Hfi Innovation Inc. Method and apparatus of candidate generation for single sample mode in video coding
US9900617B2 (en) * 2014-06-20 2018-02-20 Qualcomm Incorporated Single color palette mode in video coding
US20150381994A1 (en) * 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US9544607B2 (en) 2014-08-25 2017-01-10 Hfi Innovation Inc. Method of palette index signaling for image and video coding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023090616A1 (ko) * 2021-11-19 2023-05-25 현대자동차주식회사 포인트 단위 예측을 이용하는 라이다 포인트 클라우드 코딩을 위한 방법 및 장치

Also Published As

Publication number Publication date
US20160014407A1 (en) 2016-01-14
JP2017527168A (ja) 2017-09-14
WO2016007832A1 (en) 2016-01-14
EP3167615A1 (en) 2017-05-17
US9955157B2 (en) 2018-04-24
CN106664429A (zh) 2017-05-10

Similar Documents

Publication Publication Date Title
EP3308542B1 (en) Grouping palette bypass bins for video coding
US9826242B2 (en) Palette-based video coding
US9900617B2 (en) Single color palette mode in video coding
EP3155815B1 (en) Determining quantization parameter (qp) values and delta qp values for palette coded blocks in video coding
KR102352642B1 (ko) 비디오 코딩에서 팔레트 코딩된 블록들의 팔레트 사이즈, 팔레트 엔트리들 및 필터링의 결정
KR101977450B1 (ko) 팔레트 코딩 모드에서의 비디오 블록의 이스케이프 픽셀들의 양자화
KR102142181B1 (ko) 비디오 코딩에서의 팔레트 블록 사이즈에 대한 제한
KR102218511B1 (ko) 팔레트 코딩을 위한 이스케이프 픽셀들의 코딩
KR20180056687A (ko) 팔레트 모드 비디오 코딩에서의 이스케이프 픽셀 시그널링된 값들의 제한
US20150281728A1 (en) Palette predictor signaling with run length code for video coding
US9955157B2 (en) Advanced palette prediction and signaling
WO2015191834A1 (en) Determining application of deblocking filtering to palette coded blocks in video coding
WO2016057929A1 (en) Palette run hiding in palette-based video coding
US9961351B2 (en) Palette mode coding
EP3205104A2 (en) Diagonal copy for palette mode coding
NZ737096B2 (en) Grouping palette bypass bins for video coding