KR20170094544A - 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들 - Google Patents

인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들 Download PDF

Info

Publication number
KR20170094544A
KR20170094544A KR1020177015255A KR20177015255A KR20170094544A KR 20170094544 A KR20170094544 A KR 20170094544A KR 1020177015255 A KR1020177015255 A KR 1020177015255A KR 20177015255 A KR20177015255 A KR 20177015255A KR 20170094544 A KR20170094544 A KR 20170094544A
Authority
KR
South Korea
Prior art keywords
palette
run
copy
pixel
index
Prior art date
Application number
KR1020177015255A
Other languages
English (en)
Other versions
KR102144154B1 (ko
Inventor
쯔-더 추앙
칭-예 첸
유첸 순
징 예
샨 리우
샤오종 쑤
정선 김
Original Assignee
에이치에프아이 이노베이션 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이치에프아이 이노베이션 인크. filed Critical 에이치에프아이 이노베이션 인크.
Publication of KR20170094544A publication Critical patent/KR20170094544A/ko
Application granted granted Critical
Publication of KR102144154B1 publication Critical patent/KR102144154B1/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
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

팔레트 코딩을 위하여 변환 계수 버퍼 팔레트를 재이용함으로써 감소된 구현 비용을 갖는 비디오 코딩의 방법이 개시되어 있다. 현재의 예측 모드가 인트라 예측 모드 또는 인터 예측 모드일 경우, 인트라 예측 또는 인터 예측으로부터 기인된 현재의 블록의 예측 잔차에 대한 변환 계수들에 관련된 정보는 변환 계수 버퍼 내에 저장된다. 현재의 예측 모드가 팔레트 코딩 모드일 경우, 현재의 블록과 연관된 팔레트 데이터에 관련된 정보는 변환 계수 버퍼 내에 저장된다. 그 다음으로, 현재의 블록은 현재의 블록이 인트라 예측 모드 또는 인터 예측 모드에서 코딩될 경우에 변환 계수들에 관련된 정보, 또는 현재의 예측 모드가 팔레트 코딩 모드일 경우에 변환 계수 버퍼 내에 저장된 팔레트 데이터에 관련된 정보에 기초하여 인코딩되거나 디코딩된다.

Description

인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들{METHODS OF ESCAPE PIXEL CODING IN INDEX MAP CODING}
관련 출원에 대한 상호 참조
본 발명은 2014년 11월 12일자로 출원된 미국 특허 가출원 제62/078,595호, 2014년 12월 4일자로 출원된 미국 특허 가출원 제62/087,454호, 2015년 2월 24일자로 출원된 미국 특허 가출원 제62/119,950호, 2015년 4월 10일자로 출원된 미국 특허 가출원 제62/145,578호, 2015년 5월 15일자로 출원된 미국 특허 가출원 제62/162,313호, 및 2015년 6월 4일자로 출원된 미국 특허 가출원 제62/170,828호에 대한 우선권을 주장한다. 미국 특허 가출원들은 그 전체가 참고로 본원에 통합된다.
본 발명은 비디오 데이터에 대한 팔레트 코딩(palette coding)에 관한 것이다. 특히, 본 발명은 변환 계수 버퍼를 재이용함으로써, 또는 이스케이프(escape) 값들, 팔레트 예측자 초기화(palette predictor initialization), 팔레트 예측자 엔트리 시맨틱(palette predictor entry semantic)들, 또는 팔레트 엔트리 시맨틱(palette entry semantic)들을 함께 그룹화(group)함으로써, 시스템 메모리를 절감하거나 시스템 스루풋(throughput)을 증가시키기 위한 다양한 기법들에 관한 것이다.
고효율 비디오 코딩(High Efficiency Video Coding; HEVC)은 최근 몇 년에 개발되었던 새로운 코딩 표준이다. 고효율 비디오 코딩(HEVC) 시스템에서, H.264/AVC의 고정된-크기 매크로블록(macroblock)은 코딩 유닛(coding unit; CU)으로 명명된 신축적인 블록에 의해 대체된다. CU에서의 픽셀들은 코딩 효율을 개선시키기 위하여 동일한 코딩 파라미터들을 공유한다. CU는 HEVC에서의 코딩된 트리 유닛(coded tree unit; CTU)로서 또한 지칭되는 최대 CU(largest CU; LCU)와 함께 시작할 수도 있다. 코딩 유닛의 개념에 추가하여, 예측 유닛(prediction unit; PU)의 개념이 HEVC에서 또한 도입된다. 일단 CU 계층적 트리의 분할이 행해지면, 각각의 리프(leaf) CU는 예측 타입 및 PU 파티션(partition)에 따라 하나 이상의 예측 유닛(PU)들로 추가로 분할된다. 스크린 컨텐츠 코딩을 위한 몇몇 코딩 툴들이 개발되었다. 본 발명에 관련된 이 툴들은 다음과 같이 간략하게 검토된다.
팔레트 코딩
HEVC 스크린 컨텐츠 코딩(screen content coding; SCC)의 개발 동안, 몇몇 제안들은 팔레트-기반 코딩을 다루기 위하여 개시되었다. 예를 들어, 팔레트 예측 및 공유 기법은 JCTVC-N0247(Guo 등, "RCE3 : Results of Test 3.1 on Palette Mode for Screen Content Coding(스크린 컨텐츠 코딩을 위한 팔레트 모드에 관한 테스트3.1의 결과들)", ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(Joint Collaborative Team on Video Coding; JCT-VC), 14차 회의: Vienna, AT, 25 July - 2 Aug. 2013 문서: JCTVC-N0247) 및 JCTVC-O0218(Guo 등, "Evaluation of Palette Mode Coding on HM -12.0+ RExt -4.1( HM -12.0+RExt-4.1에 관한 팔레트 모드 코딩의 평가)", ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 15차 회의: Geneva, CH, 23 Oct. - 1 Nov. 2013, 문서: JCTVC-O0218)에 개시되어 있다. JCTVC-N0247 및 JCTVC-O0218에서는, 각각의 컬러 컴포넌트(color component)의 팔레트가 구성되고 송신된다. 팔레트는 비트레이트를 감소시키기 위하여 그 좌측의 이웃하는 CU로부터 예측(또는 공유)될 수 있다. 그 다음으로, 주어진 블록 내의 모든 픽셀들은 그 팔레트 인덱스들을 이용하여 코딩된다. JCTVC-N0247에 따른 인코딩 프로세스의 예는 다음과 같이 도시된다.
팔레트의 송신: 컬러 인덱스 테이블(또한, 팔레트 테이블로 칭해짐) 크기가 먼저 송신되고, 그 다음으로, 팔레트 엘리먼트(palette element)들(즉, 컬러 값들)이 송신된다.
픽셀 팔레트 인덱스 값들(팔레트에서의 컬러들을 지시하는 인덱스들)의 송신: CU에서의 픽셀들에 대한 인덱스 값들은 래스터 스캔 순서(raster scan order)로 인코딩된다. 각각의 위치에 대하여, 플래그는 "런 모드(run mode)" 또는 "상부 복사 런 모드(copy above run mode)"가 이용되고 있는지를 여부를 표시하기 위하여 먼저 송신된다.
a. "런 모드": "런 모드"에서는, 팔레트 인덱스가 먼저 시그널링되고, 그 다음으로, "palette_run"(예컨대, M)이 시그널링된다. 추가의 정보가 현재의 위치 및 다음의 M 위치들에 대하여 송신될 필요가 없는데, 이것은 그것들이 시그널링된 것과 동일한 팔레트 인덱스를 가지기 때문이다. 팔레트 인덱스(예컨대, i)는 모든 3 개의 컬러 컴포넌트들에 의해 공유되고, 이것은 재구성된 픽셀 값들이 (컬러 공간이 YUV인 것으로 가정하면) (Y, U, V) = (paletteY [i], paletteU [i], paletteV [i])인 것을 의미한다.
b. "상부-복사 런 모드": "상부 복사 런 모드"에서는, 값 "copy_run"(예컨대, N)은 (현재의 것을 포함하는) 다음의 N 위치들에 대하여, 팔레트 인덱스들이 행(row) 상부에서의 동일한 위치에 있는 것들의 팔레트 인덱스들과 동일하다는 것을 표시하기 위하여 송신된다.
레지듀(residue)의 송신: 스테이지 2에서 송신된 팔레트 인덱스들은 픽셀 값들로 다시 변환되고, 예측으로서 이용된다. 레지듀 정보는 HEVC 잔차 코딩(residual coding)을 이용하여 송신되고, 재구성을 위하여 예측에 추가된다.
JCTVC-N0247에서는, 각각의 컴포넌트의 팔레트가 구성되고 송신된다. 팔레트는 비트레이트를 감소시키기 위하여 그 좌측의 이웃하는 CU로부터 예측(또는 공유)될 수 있다. JCTVC-O0218에서는, 팔레트에서의 각각의 엘리먼트가 3 개의 컬러 컴포넌트들의 특정 조합을 나타내는 트리플릿(triplet)이다. CU에 걸친 팔레트의 예측 코딩은 제거된다.
JCTVC-O0182(Guo 등, "AHG8 : Major-color-based screen content coding(주-컬러-기반 스크린 컨텐츠 코딩)", ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 15차 회의: Geneva, CH, 23 Oct.- 1 Nov. 2013, 문서: JCTVC-O0182)에서는, 또 다른 팔레트 코딩 방법이 개시되어 있다. 좌측 CU로부터 전체 팔레트 테이블을 예측하는 대신에, 팔레트에서의 개별적인 팔레트 컬러 엔트리는 상부 CU 또는 좌측 CU에서의 정확한 대응하는 팔레트 컬러 엔트리로부터 예측될 수 있다.
픽셀 팔레트 인덱스 값들의 송신을 위하여, 예측 코딩 방법이 JCTVC-O0182에 따라 인덱스들에 적용된다. 인덱스 라인은 상이한 모드들에 의해 예측될 수 있다. 구체적으로, 3 종류들의 라인 모드들, 즉, 수평 모드, 수직 모드, 및 정상 모드는 인덱스 라인에 대하여 이용된다. 수평 모드에서는, 동일한 라인에서의 모든 인덱스들이 동일한 값을 가진다. 값이 상부 픽셀 라인의 최초 픽셀과 동일할 경우, 라인 모드 시그널링 비트들만이 송신된다. 그렇지 않을 경우, 인덱스 값이 또한 송신된다. 수직 모드에서는, 현재의 인덱스 라인이 상부 인덱스 라인과 동일하다. 그러므로, 라인 모드 시그널링 비트들만이 송신된다. 정상 모드에서는, 라인에서의 인덱스들이 개별적으로 예측된다. 각각의 인덱스 위치에 대하여, 좌측 또는 상부 이웃은 예측자로서 이용되고, 예측 심볼은 디코더로 송신된다.
또한, JCTVC-O0182에 따르면, 픽셀들은 (팔레트 컬러들을 지시하는 팔레트 인덱스들을 갖는) 주 컬러 픽셀(major color pixel)들 및 이스케이프 픽셀(excape pixel)로 분류된다. 주 컬러 픽셀들에 대하여, 디코더는 주 컬러 인덱스(즉, JCTVC-N0247 및 JCTVC-O0182에서의 팔레트 인덱스) 및 팔레트 테이블에 따라 픽셀 값을 재구성한다. 이스케이프 픽셀에 대하여, 인코더는 픽셀 값을 추가로 전송할 것이다.
팔레트 테이블의 시그널링
스크린 컨텐츠 코딩(SCC) 표준의 참조 소프트웨어, SCM-2.0(JCTVC-R1014: Joshi 등, 스크린 컨텐츠 코딩 테스트 모델 2(Screen content coding test model 2; SCM 2), ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 18차 회의: Sapporo, JP, 30 June - 9 July 2014, 문서: JCTVC-R1014)에서는, 최후 코딩된 팔레트 CU의 팔레트 테이블이 현재의 팔레트 테이블 코딩을 위한 예측자로서 이용된다. 팔레트 테이블 코딩에서는, palette_share_flag가 먼저 시그널링된다. palette_share_flag가 1일 경우, 최후 코딩된 팔레트 테이블에서의 모든 팔레트 컬러들은 현재의 CU에 대하여 재이용된다. 현재의 팔레트 크기는 이 경우에 최후 코딩된 팔레트 CU의 팔레트 크기와 동일하다. 그렇지 않을 경우(즉, palette_share_flag가 0 임), 현재의 팔레트 테이블은 최후 코딩된 팔레트 테이블에서의 어느 팔레트 컬러들이 재이용될 수 있는지를 표시함으로써, 또는 새로운 팔레트 컬러들을 송신함으로써 시그널링된다. 현재의 팔레트의 크기는 예측된 팔레트의 크기(즉, numPredPreviousPalette) 플러스(plus) 송신된 팔레트의 크기(즉, num_signaled_palette_entries)로서 설정된다. 예측된 팔레트는 이전에 재구성된 팔레트 코딩된 CU들로부터 유도된 팔레트이다. 현재의 CU를 팔레트 모드로서 코딩할 때, 팔레트 컬러들은 예측된 팔레트를 이용하여 예측되지 않고, 비트스트림을 통해 직접적으로 송신된다. 예를 들어, 현재의 CU가 6과 동일한 팔레트 크기를 갖는 팔레트 모드로서 코딩될 경우. 6 개의 주 컬러들 중의 3 개가 팔레트 예측자로부터 예측되고, 3 개는 비트스트림을 통해 직접적으로 송신될 경우. 다음의 의사 코드(pseudo code)들은 위에서 언급된 샘플 신택스(sample syntax)를 이용하는 송신된 3 개의 팔레트 컬러들의 예를 예시한다.
num _signaled_palette_entries = 3
for (cIdx = 0; cIdx < 3; cIdx++ ) //상이한 컴포넌트들에 대한 컬러들을 시그널링
for (i = 0; i <num_signaled_palette_entries; i++ )
palette_entries[ cIdx ][ numPredPreviousPalette + i ]
팔레트 크기는 이 예에서 6이므로, 0로부터 5까지의 팔레트 인덱스들은 각각의 팔레트 코딩된 픽셀을 표시하기 위하여 이용되고, 각각의 팔레트는 팔레트 컬러 테이블에서의 주 컬러로서 재구성될 수 있다.
SCM-2.0에서, 파면 병렬 프로세싱(wavefront parallel processing; WPP)이 적용되지 않을 경우, 최후 코딩된 팔레트 테이블은 각각의 슬라이스(slice)의 시작부에서, 또는 각각의 타일(tile)의 시작부에서 초기화(즉, 재설정)된다. WPP가 적용될 경우, 최후 코딩된 팔레트 테이블은 각각의 슬라이스의 시작부에서, 또는 각각의 타일의 시작부에서 초기화(재설정)될 뿐만 아니라, 각각의 CTU 행의 시작부에서 초기화(즉, 재설정)된다.
팔레트 인덱스 맵 스캔 순서
SCM-3.0(JCTVC-S1014, Joshi 등, "Screen content coding test model 3(SCM 3){스크린 컨텐츠 코딩 테스트 모델 3(SCM 3)}", ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 19차 회의: Strasbourg, FR, 17-24 Oct. 2014, 문서: JCTVC-S1014) 팔레트 모드 코딩에서는, 횡단 스캔이 도 1에서 도시된 바와 같이 인덱스 맵 코딩을 위하여 이용된다. 도 1은 8x8 블록에 대한 횡단 스캔(transverse scan)의 예를 예시한다. 횡단 스캔에서, 짝수 행들에 대한 스캔은 좌측으로부터 우측까지이고, 홀수 행들에 대한 스캔은 우측으로부터 좌측까지이다. 횡단 스캔은 팔레트 모드에서의 모든 블록 크기들에 대하여 적용된다.
SCM-4.0에서의 팔레트 인덱스 맵 코딩
SCM-4.0(JCTVC-T1014: Joshi 등, 스크린 컨텐츠 코딩 테스트 모델 4(SCM 4), ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 20차 회의: Geneva, CH, 10-18 Feb. 2015, 문서: JCTVC-T1014) 팔레트 모드 코딩에서는, 팔레트 인덱스들이 대응하는 블록에 대한 코딩된 데이터의 전방에서(즉, palette_run_mode 및 palette_run 코딩 전에) 그룹화되고 시그널링된다. 다른 한편으로, 이스케이프 픽셀들은 대응하는 블록에 대한 코딩된 데이터의 종료부에서 코딩된다. 신택스 엘리먼트(syntax element)들, palette_run_mode 및 palette_run은 팔레트 인덱스들과 이스케이프 픽셀들 사이에서 코딩된다. 도 2는 SCM 4.0에 따른 인덱스 맵 신택스 시그널링을 위한 예시적인 플로우차트를 예시한다. 인덱스들의 수(210), 최후 런타입(runtype) 플래그(230), 및 그룹화된 인덱스들(220)이 시그널링된다. 인덱스 정보를 시그널링한 후, 한 쌍의 런 타입(240) 및 런들의 수(250)가 반복적으로 시그널링된다. 마지막으로, 이스케이프 값들(260)의 그룹이 필요할 경우에 시그널링된다.
팔레트 예측자 초기화
SCM-4.0에서, 글로벌 팔레트 예측자 세트(global palette predictor set)는 PPS(picture parameter set; 픽처 파라미터 세트)에서 시그널링된다. PredictorPaletteSize, PreviousPaletteSize, 및 PredictorPaletteEntries를 포함하는 모든 팔레트 예측 상태들을 0으로 재설정하는 대신에, PPS로부터 획득된 값들이 그 대신에 이용된다.
팔레트 신택스
인덱스 맵에서의 인덱스들의 런에 대하여, 하기를 포함하는, 시그널링될 필요가 있는 몇몇 엘리먼트들이 있다:
1) 런 타입: 그것은 상부 복사 런 또는 인덱스 복사 런의 어느 하나이다.
2) 팔레트 인덱스: 그것은 어느 인덱스가 인덱스 복사 런에서 이 런을 위하여 이용되는지를 시그널링하기 위하여 이용된다.
3) 런 길이: 그것은 상부 복사 및 인덱스 복사 타입의 양자에 대한 이 런의 길이를 나타낸다.
4) 이스케이프 픽셀: 런에서 N(N>=1) 이스케이프 픽셀들이 있을 경우, N 픽셀 값들은 이 N 이스케이프 픽셀들에 대하여 시그널링될 필요가 있다.
JCTVC-T0064(JCTVC-S1014: Joshi 등, 스크린 컨텐츠 코딩 테스트 모델 4(SCM 4), ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 20차 회의: Geneva, CH, 10-18 Feb. 2015, 문서: JCTVC-T1014)에서는, 모든 팔레트 인덱스들이 함께 그룹화된다. 팔레트 인덱스들의 수가 먼저 시그널링되고, 그 다음으로, 팔레트 인덱스들이 시그널링된다.
현존하는 HEVC 사양에 따르면, 각각의 컬러 컴포넌트에 대한 팔레트 인덱스들이 함께 그룹화되지만, 상이한 컬러 컴포넌트들에 대한 대부분의 다른 팔레트 코딩 관련 데이터는 비트스트림에서 인터리빙(interleaving)된다. 또한, 인터/인트라(Inter/Intra) 코딩된 블록을 저장하고 팔레트 코딩된 블록을 저장하기 위한 개별적인 메모리 공간. 시스템 스루풋을 개선시키고 및/또는 시스템 구현 비용을 감소시키기 위한 기법들을 개발하는 것이 희망된다.
팔레트 코딩을 위하여 변환 계수 버퍼 팔레트를 재이용함으로써 감소된 구현 비용을 갖는 비디오 코딩의 방법이 개시되어 있다. 현재의 예측 모드가 인트라 예측 모드(Intra prediction mode) 또는 인터 예측 모드(Inter prediction mode)일 경우, 인트라 예측 또는 인터 예측으로부터 기인된 현재의 블록의 예측 잔차에 대한 변환 계수들에 관련된 정보는 변환 계수 버퍼 내에 저장된다. 현재의 예측 모드가 팔레트 코딩 모드일 경우, 현재의 블록과 연관된 팔레트 데이터에 관련된 정보는 변환 계수 버퍼 내에 저장된다. 그 다음으로, 현재의 블록은 현재의 블록이 인트라 예측 모드 또는 인터 예측 모드에서 코딩될 경우에 변환 계수들에 관련된 정보, 또는 현재의 예측 모드가 팔레트 코딩 모드일 경우에 변환 계수 버퍼 내에 저장된 팔레트 데이터에 관련된 정보에 기초하여 인코딩되거나 디코딩된다.
현재의 예측 모드가 팔레트 코딩 코드일 경우, 팔레트 데이터는 현재의 블록과 연관된 팔레트 런 타입, 팔레트 인덱스, 팔레트 런, 이스케이프 값들, 이스케이프 플래그들, 팔레트 테이블, 또는 이들의 임의의 조합에 대응할 수도 있다. 팔레트 데이터에 관련된 정보는 팔레트 데이터, 파싱된(parsed) 팔레트 데이터, 또는 재구성된 팔레트 데이터에 대응할 수도 있다. 예를 들어, 현재의 블록의 샘플들에 대한 파싱된 팔레트 인덱스들은 파싱 스테이지(parsing stage)에서 재구성되고, 재구성된 팔레트 인덱스들 및 재구성된 이스케이프 값들은 디코더 측에서 변환 계수 버퍼 내에 저장된다. 또 다른 예에서는, 현재의 블록의 샘플들에 대한 파싱된 팔레트 인덱스들이 재구성되고, 재구성된 팔레트 인덱스들은 파싱 스테이지에서 팔레트 테이블을 이용하여 재구성된 픽셀 값들로 추가로 재구성되고, 재구성된 픽셀 값들 및 재구성된 이스케이프 값들은 디코더 측에서 변환 계수 버퍼 내에 저장된다. 또한, 하나의 저장 영역은 파싱 스테이지 동안에 팔레트 테이블을 저장하도록 지정될 수 있고, 저장 영역은 재구성 스테이지 동안에 팔레트 테이블에 의한 이용으로부터 해제될 수 있다. 이스케이프 플래그들은 디코더 측에서 변환 계수 버퍼 내에 또한 저장될 수도 있다. 또 다른 예에서, 이스케이프 플래그들은 변환 계수 버퍼의 부분(예를 들어, 변환 계수 버퍼의 최상위 비트(most significant bit; MSB) 부분) 내에 저장되고, 재구성된 픽셀 값들 또는 이스케이프 값들은 변환 계수 버퍼의 또 다른 부분 내에 저장된다.
또 다른 실시형태에서, 현재의 예측 모드가 팔레트 코딩 모드일 경우, 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 이스케이프 값들은 디코더 측에서 비디오 비트스트림으로부터 파싱되거나, 동일한 컬러 컴포넌트에 대한 모든 이스케이프 값들은 인코더 측에서 함께 그룹화된다. 그 다음으로, 이스케이프 값들을 포함하는 정보는 현재의 블록의 인코딩 또는 디코딩을 위하여 이용된다. 동일한 컬러 컴포넌트에 대한 그룹화된 이스케이프 값들은 현재의 블록에 대한 코딩된 팔레트 데이터의 종료부에서 시그널링될 수 있다. 상이한 컬러 컴포넌트들에 대한 그룹화된 이스케이프 값들은 현재의 블록에 대하여 별도로 시그널링될 수 있다. 현재의 블록의 동일한 컬러 컴포넌트에 대한 그룹화된 이스케이프 값들은 변환 계수 버퍼 내에 저장될 수 있다. 상이한 컬러 컴포넌트들에 대한 그룹화된 이스케이프 값들은 하나의 컬러 컴포넌트에 대한 그룹화된 이스케이프 값들을 변환 계수 버퍼 내에 한 번에 저장함으로써 변환 계수 버퍼를 공유할 수 있다.
또 다른 실시형태에서, 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 초기 팔레트 예측자 값들은 디코더 측에서 비디오 비트스트림의 시퀀스 파라미터 세트(sequence parameter set; SPS), 픽처 파라미터 세트(picture parameter set; PPS), 또는 슬라이스 헤더로부터 파싱되거나, 동일한 컬러 컴포넌트에 대한 모든 초기 팔레트 예측자 값들은 인코더 측에서 함께 그룹화된다. 대응하는 시퀀스, 픽처, 또는 슬라이스 내에서의 적어도 하나의 팔레트 코딩된 블록은 초기 팔레트 예측자 값들을 이용하여 인코딩되거나 디코딩된다.
더욱 또 다른 실시형태에서, 현재의 블록에 대하여 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 팔레트 예측자 엔트리들 또는 팔레트 엔트리들은 디코더 측에서 비디오 비트스트림으로부터 파싱되거나, 동일한 컬러 컴포넌트에 대한 모든 팔레트 예측자 엔트리들 또는 팔레트 엔트리들은 인코더 측에서 함께 그룹화된다. 그 다음으로, 현재의 블록은 모든 팔레트 예측자 엔트리들로 구성되는 팔레트 예측자, 또는 모든 팔레트 엔트리들로 구성되는 팔레트 테이블을 이용하여 인코딩되거나 디코딩된다.
도 1은 8x8 블록에 대한 횡단 스캔의 예를 예시한다.
도 2는 스크린 컨텐츠 코딩 테스트 모듈 버전 4(SCM-4.0)에 따른 예시적인 팔레트 인덱스 맵 신택스 시그널링을 예시한다.
도 3a는 인코딩 코딩 전의 일 예의 인덱스 맵 플립핑(index map flipping)을 예시한다.
도 3b는 도 3a에서의 인덱스 맵에 대응하는 플립핑된 인덱스 맵의 예를 예시한다.
도 4는 인덱스 맵 코딩 전에 인덱스 맵을 플립핑하는 예를 예시하고, 여기서, 물리적 위치에서의 최후 행에서 픽셀들을 예측하기 위한 상부의 이웃하는 구성된 픽셀들의 이용은 비효율적이다.
도 5a 내지 도 5b는 본 발명의 실시형태에 따라 플립핑된 인덱스 맵에 의한 상부 CU로부터의 예측의 예를 예시하고, 여기서, 상부-복사 런 모드에서의 인덱스들은 인덱스 맵이 플립핑되는지 여부에 관계없이 그 물리적 상부 위치들로부터 항상 예측된다. 도 5a에서, 라인-충전된(line-filled) 블록들은 플립핑된 인덱스 맵을 나타내는 반면, 도 5b에서의 깨끗한 블록들은 원래의 인덱스 맵을 나타낸다.
도 6a 내지 도 6b는 본 발명의 실시형태에 따라 플립핑된 인덱스 맵에 의한 상부 CU로부터의 예측의 또 다른 예를 예시하고, 여기서, 최초 행의 상부-복사 런 코딩된 픽셀들은 그 물리적인 가장 근처의 위치들에서의 샘플들로부터 예측된다. 도 6a에서, 라인-충전된 블록들은 플립핑된 인덱스 맵을 나타내는 반면, 도 6b에서의 깨끗한 블록들은 원래의 인덱스 맵을 나타낸다.
도 7a 내지 도 7b는 본 발명의 실시형태에 따라 플립핑된 인덱스 맵에 의한 상부 CU로부터의 예측의 또 다른 예를 예시하고, 여기서, 최후 행의 상부-복사 런 코딩된 픽셀들은 상부의 이웃하는 CU의 그 물리적인 픽셀 위치들로부터 예측된다. 도 7a에서, 라인-충전된 블록들은 플립핑된 인덱스 맵을 나타내는 반면, 도 7b에서의 깨끗한 블록들은 원래의 인덱스 맵을 나타낸다.
도 8a는 확장된 상부-복사 런 모드의 예를 예시하고, 여기서, 픽셀들의 2 개의 라인들(즉, L = 2)은 CU 경계의 상부에 위치되는 상부 라인으로부터 복사된다.
도 8b는 최초의 M(즉, M = 11) 샘플들이 재구성된 픽셀들로부터 예측된다는 것을 표시하기 위하여 신택스 엘리먼트, pixel_num (M)을 시그널링함으로써 CU에 걸친 예측의 예를 예시한다.
도 9a는 상부 CU의 최후 행의 재구성된 픽셀 값들에 의해 예측되는 샘플들의 최초의 2 개의 라인들의 픽셀 값들의 예를 예시한다.
도 9b는 좌측 CU의 가장-우측 열(column)의 재구성된 픽셀 값들에 의해 예측되는 샘플들의 최초의 2 개의 열들의 픽셀 값들의 예를 예시한다.
도 10a 내지 도 10c는 CU에 걸친 예측을 위하여, 본 발명의 실시형태에 따라 3 개의 상이한 스캔 패턴들을 예시한다.
도 11a 내지 도 11c는 CU에 걸친 예측을 위하여, 본 발명의 또 다른 실시형태에 따라 3 개의 상이한 스캔 패턴들을 예시한다.
도 12a 내지 도 12b는 CU에 걸친 예측을 위하여, 본 발명의 실시형태에 따라 역 스캔을 갖는 2 개의 상이한 스캔 패턴들을 예시한다.
도 13은 행-기반 복사 픽셀을 이웃하는 CU로부터 인터 모드에서 코딩된 8x8 CU로 확장하는 예를 예시한다.
도 14는 본 발명의 실시형태에 따라 이웃하는 참조 픽셀들의 위치들을 변경하는 예를 예시하고, 여기서, 상부-우측 참조 픽셀들은 상부-우측 CU로부터 복사된다.
도 15는 본 발명의 실시형태에 따라 이웃하는 참조 픽셀들의 위치들을 변경하는 또 다른 예를 예시하고, 여기서, 상부-우측 참조 픽셀들은 제 3 행의 가장-우측 픽셀들로부터 복사된다.
도 16은 현재의 코딩 블록 내에서의 상이한 로케이션(location)들에서 N 이스케이프 픽셀들(N = 5)을 갖는 실시형태에 따라 이스케이프 컬러들을 디코딩하는 예를 예시하고, 여기서, 각각의 이스케이프 픽셀 발생의 픽셀 값은 비트스트림 내로 여전히 기입(write)되고, 수평 횡단 스캔이 이용된다.
도 17은 현재의 코딩 블록 내의 상이한 로케이션들에서 N 이스케이프 픽셀들(N = 5)을 갖는 또 다른 실시형태에 따라 이스케이프 컬러들을 디코딩하는 예를 예시하고, 여기서, 비-복제된(non-duplicated) 컬러들만이 디코딩된다.
도 18은 CU 경계에 걸쳐, N으로서 나타낸 이웃하는 구성된 픽셀(neighboring constructed pixel; NCP)에 대한 특수한 인덱스를 이용하는 예를 예시한다.
도 19는 최대 인덱스 값이 0일 경우에 이웃하는 구성된 픽셀(NCP)에 대한 특수한 인덱스를 이용하는 예를 예시한다.
도 20은 최대 인덱스 값이 1일 경우에 이웃하는 구성된 픽셀(NCP)에 대한 특수한 인덱스를 이용하는 예를 예시한다.
도 21은 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시하고, 여기서, 새로운 플래그 all_pixel_from_NCP_flag가 추가되고, SCM3.0에 따른 신택스는 CU에 걸친 인덱스 예측을 위하여 이용된다.
도 22는 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시하고, 여기서, 새로운 플래그 all_pixel_from_NCP_flag가 추가되고, SCM3.0에 따른 신택스는 all_pixel_from_NCP_flag가 오프(off)일 때에, CU에 걸친 인덱스 예측 없이 이용된다.
도 23은 도 22의 그것과 유사한 또 다른 예시적인 플로우차트를 예시한다. 그러나, SCM3.0에 따른 신택스는 최대 인덱스 값이 0이 아닐 때에, CU에 걸친 인덱스 예측을 위하여 이용된다.
도 24는 본 발명의 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 25는 본 발명의 또 다른 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 26은 본 발명의 또 다른 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 27은 본 발명의 또 다른 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 28a는 본 발명의 또 다른 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 28b는 본 발명의 또 다른 실시형태에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다.
도 29는 인트라 블록 복사 예측 및 보상을 위한 소스 픽셀들의 예를 예시하고, 여기서, 도트-충전된(dot-filled) 영역들은 현재의 CTU(코딩 트리 유닛) 및 좌측 CTU에서 비-필터링된(un-filtered) 픽셀들에 대응한다.
도 30은 인트라 블록 복사 예측 및 보상을 위한 소스 픽셀들의 또 다른 예를 예시하고, 여기서, 도트-충전된 영역들은 현재의 CTU(코딩 트리 유닛), 좌측 CTU, 상부 CTU의 4 개의 하부 라인들, 및 상부-좌측 CTU의 4 개의 하부 라인들에서의 비-필터링된 픽셀들에 대응한다.
도 31은 인트라 블록 복사 예측 및 보상을 위한 소스 픽셀들의 또 다른 예를 예시하고, 여기서, 도트-충전된 영역들은 현재의 CTU(코딩 트리 유닛), N 좌측 CTU들, 상부 CTU의 4 개의 하부 라인들, 및 N 상부-좌측 CTU들의 4 개의 하부 라인들에서의 비-필터링된 픽셀들에 대응한다.
도 32는 인트라 블록 복사 예측 및 보상을 위한 소스 픽셀들의 또 다른 예를 예시하고, 여기서, 도트-충전된 영역들은 현재의 CTU(코딩 트리 유닛), 상부 CTU의 4 개의 하부 라인들, 및 좌측 CTU의 4 개의 우측 열들에서의 비-필터링된 픽셀들에 대응한다.
도 33은 인트라 블록 복사 예측 및 보상을 위한 소스 픽셀들의 또 다른 예를 예시하고, 여기서, 도트-충전된 영역들은 현재의 CTU(코딩 트리 유닛), N 좌측 CTU들과, 상부 CTU의 4 개의 하부 라인들, N 상부-좌측 CTU들의 4 개의 하부 라인들, 및 (N+1) 번째 좌측 CTU의 4 개의 우측 열들에서의 비-필터링된 픽셀들에 대응한다.
도 34는 변환 계수 버퍼를 공유하기 위하여 팔레트 코딩된 블록에 대한 본 발명의 실시형태를 통합시키는 시스템을 위한 예시적인 플로우차트를 예시한다.
다음의 설명은 발명을 수행하는 최상으로 고려된 모드이다. 이 설명은 발명의 일반적인 원리들을 예시하는 목적을 위하여 행해지고, 제한적인 의미에서 취해지지 않아야 한다. 발명의 범위는 첨부된 청구항들을 참조하여 최상으로 결정된다.
팔레트 관련된 정보를 위한 HEVC 변환 계수 버퍼의 재이용
HEVC에서는, 인터 예측 및 인트라 예측이 팔레트 코딩에 추가하여 이용가능한 코딩 모드들이다. 인터 또는 인트라 예측이 이용될 때, 변환 코딩은 인터/인트라 예측으로부터 기인하는 예측 잔차에 종종 적용된다. 그 다음으로, 변환 계수들은 코딩된 비트스트림에서의 포함(inclusion)을 위하여 양자화되고 엔트로피 코딩된다. 디코더 측에서는, 역 동작이 수신된 비트스트림에 적용된다. 다시 말해서, 엔트로피 디코딩은 양자화된 변환 계수들에 대응하는 코딩된 심볼들을 복원하기 위하여 비트스트림에 적용된다. 그 다음으로, 양자화된 변환 계수들은 인터/인트라 예측 잔차를 재구성하기 위하여 역양자화되고 역-변환된다. 변환 계수 버퍼는 엔트로피 코딩과 양자화/변환 동작들 사이에서 요구된 바와 같이 변환 계수들을 저장하기 위하여 인코더 측 및 디코더 측에서 종종 이용된다.
컬러 비디오 데이터에 대하여, 복수의 변환 계수 버퍼들이 필요하게 될 수도 있다. 그러나, 하나의 변환 계수 버퍼만이 필요하게 되도록, 하나의 컬러 컴포넌트를 한 번에 프로세싱하도록 시스템을 구성하는 것이 또한 가능하다. 블록이 팔레트 코딩될 때에는, 변환이 블록에 적용되지 않고, 변환 계수 버퍼가 이용되지 않는다. 시스템 구현 비용을 절감하기 위하여, 본 발명의 실시형태는 팔레트 코딩 관련된 데이터를 저장하기 위하여 변환 계수 버퍼를 재이용한다. 따라서, 인터/인트라 코딩된 블록에 대하여, TU의 디코딩된 계수들은 계수 파싱 스테이지 동안에 계수 버퍼 내에 저장된다. 그러나, SCC(스크린 컨텐츠 코딩) 코딩된 블록에 대하여, 팔레트 코딩된 블록에 대하여 필요하게 된 잔차 코딩이 없다. 그러므로, 본 발명의 하나의 실시형태에 따르면, 변환 계수 버퍼는 팔레트 런 타입, 팔레트 인덱스, 팔레트 런, 이스케이프 값들, 이스케이프 플래그들, 팔레트 테이블, 또는 이들의 임의의 조합을 포함할 수도 있는 팔레트 코딩 관련된 정보를 저장하기 위하여 이용된다.
예를 들어, 블록의 샘플들에 대한 파싱된 팔레트 인덱스들은 파싱 스테이지에서 재구성된다. 변환 계수 버퍼는 재구성된 팔레트 인덱스들 및 이스케이프 값들을 저장하기 위하여 이용된다.
또 다른 예에서, 블록의 샘플들에 대한 파싱된 팔레트 인덱스들은 파싱 스테이지에서 재구성된다. 파싱된 인덱스들은 파싱 스테이지에서 팔레트 테이블 룩업(palette table lookup)을 이용하여 대응하는 컬러 컴포넌트에 대한 픽셀 값들을 재구성하기 위하여 이용된다. 그러므로, 계수 버퍼는 재구성된 픽셀 값들 및 이스케이프 값들을 저장하기 위하여 이용되거나, 재구성된 픽셀 값들, 이스케이프 값들, 및 이스케이프 플래그들을 저장하기 위하여 이용된다. 이 경우, 팔레트 테이블만이 파싱 스테이지에 저장될 필요가 있다. 재구성 스테이지 동안에 팔레트 테이블을 저장하고 유지하기 위한 필요성은 없다.
변환 계수들에 대하여 요구된 데이터 심도(data depth)는 팔레트 코딩 관련된 데이터에 대한 데이터 심보보다 훨씬 더 높을 수도 있다. 예를 들어, 변환 계수는 16-비트 심도를 갖는 버퍼를 요구할 수도 있다. 그러나, 팔레트 코딩을 위하여, 최대 팔레트 인덱스가 63일 경우, 팔레트 인덱스들을 위한 저장은 6-비트 심도만을 요구한다. 또한, 이스케이프 값에 대한 최대 비트-길이는, 일반적으로 8 또는 10 비트들인 비트-심도와 동일하다. 그러므로, 16 비트들의 부분(즉, 8 또는 6 비트들)은 아이들(idle)이고, 이스케이프 플래그를 위한 정보를 저장하기 위하여 이용될 수 있다. 예를 들어, 계수 버퍼의 6 개의 MSB(most significant bits; 최상위 비트들)는 이스케이프 플래그들을 저장하기 위하여 이용될 수 있다. 나머지 비트들은 재구성된 픽셀 값들 또는 이스케이프 값들을 저장하기 위하여 이용된다. 재구성 스테이지에서, MSB는 이스케이프 값들 또는 재구성된 픽셀 값들을 직접적으로 재구성하기 위하여 이용될 수 있다.
또 다른 예에서, 샘플들의 파싱된 팔레트 인덱스들은 파싱 스테이지에서 재구성되고, 상이한 컬러 컴포넌트들의 재구성된 값들은 파싱 스테이지에서 팔레트 테이블 룩업을 이용하여 또한 재구성된다. 이스케이프 샘플의 픽셀 값들은 파싱 스테이지에서 이스케이프 값들에 의해 또한 재구성된다. 그러므로, 계수 버퍼는 재구성된 픽셀 값들을 저장하기 위하여 이용된다. 이 경우, 팔레트 테이블만이 파싱 스테이지에 저장될 필요가 있다. 재구성 스테이지는 팔레트 테이블을 저장하고 유지할 필요가 없다.
동일한 컬러 컴포넌트의 이스케이프 값들의 그룹화
SCM-4.0[JCTVC-T1014: Joshi 등, 스크린 컨텐츠 코딩 테스트 모델 4(SCM 4), ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 20차 회의: Geneva, CH, 10-18 Feb. 2015, 문서: JCTVC-T1014]에서는, 3 개의 컬러 컴포넌트들에 대한 이스케이프 값들이 함께 그룹화된다. 다시 말해서, 각각의 샘플에 대하여, 3 개의 컴포넌트들의 이스케이프 값들이 순차적으로 코딩된다. JCTVC-T1014에 따른 이스케이프 값 코딩의 신택스 테이블이 표 1에 도시되어 있다.
표 1
Figure pct00001
팔레트 모드에 대한 잔차 코딩이 없으므로, 계수 버퍼는 팔레트 인덱스 맵 정보를 저장하기 위하여 재이용될 수 있다. HEVC 계수 파싱에서는, 하나의 컬러 컴포넌트의 TU만이 한 번에 파싱된다. 신택스 파서(syntax parser)는 하나의 컬러 컴포넌트에 대한 하나의 계수 버퍼만을 가질 수도 있고, 하나의 컬러 컴포넌트의 하나의 계수 버퍼만이 액세스될 수 있다. 그러나, 팔레트 코딩에서는, 하나의 팔레트 인덱스가 복수의 컬러 컴포넌트들의 픽셀 값들을 나타낸다. 팔레트 모드는 복수의 컬러 컴포넌트 값들을 한 번에 디코딩할 수 있다. 팔레트 인덱스는 하나의 컬러 컴포넌트의 하나의 계수 버퍼 내에 저장될 수 있다. 그러나, 현재의 SCM-4.0 신택스 파싱 순서에서, 이스케이프 값들은 3 개의 컬러 컴포넌트들에 대한 3 개의 계수 버퍼들을 필요로 할 수도 있다.
그러므로, 또 다른 실시형태에 따르면, 이스케이프 값들의 신택스 파싱 순서는 3 개의 컬러 컴포넌트들을 저장하기 위한 3 개의 계수 버퍼들에 대한 필요성에 관련된 쟁점을 극복하기 위하여 변경된다. 동일한 컬러 컴포넌트의 이스케이프 값들은 함께 그룹화되고, 블록에 대한 팔레트 신택스 코딩의 종료부에서 시그널링된다. 상이한 컬러 컴포넌트들의 이스케이프 값들은 별도로 시그널링된다. 이 실시형태를 통합시키는 팔레트 코딩을 위한 예시적인 신택스 테이블이 표 2에 도시되어 있다.
표 2
Figure pct00002
표 2에서, 라인-충전된 영역에서의 텍스트는 삭제를 표시한다. 상이한 컬러 컴포넌트들에 대한 do-루프(do-loop) 명령문(즉, "for (cIdx = 0; cIdx < numComps; cIdx++ )" )은 주석(2-1)에 의해 표시된 원래의 로케이션으로부터 주석(2-2)에 의해 표시된 새로운 로케이션으로 위로 이동된다. 따라서, 그것은 CU에 대한 하나의 컬러 컴포넌트의 모든 이스케이프 값들을 파싱할 수 있다. 제 1 컬러 컴포넌트(즉, 0과 동일한 cIdx)의 팔레트 인덱스들 및 이스케이프 값들은 기입될 수 있고, 그 다음으로, 파서는 제 2 컬러 컴포넌트의 정보를 파싱하기 위하여 동일한 버퍼를 재이용할 수 있다. 표 2에서의 신택스 변경들로, 하나의 컬러 컴포넌트에 대한 팔레트 코딩 관련된 데이터를 저장하기 위한 하나의 계수 버퍼는 팔레트 모드 파싱을 위하여 충분하다. SCC 파서의 구현 복잡도 및 비용은 증가되지 않는다.
동일한 컬러 컴포넌트의 팔레트 예측자 초기화의 그룹화
SCM 4.0에서, PPS(Picture Parameter Set; 픽처 파라미터 세트) 신택스 엘리먼트의 세트는 팔레트 예측자 초기화기를 특정하기 위하여 시그널링된다. PPS 확장을 위한 현존하는 신택스는 표 3에 도시되어 있다.
표 3
Figure pct00003
현존하는 SCM 4.0에 따른 팔레트 예측자 초기화 프로세스는 다음과 같이 도시되어 있다:
● 이 프로세스의 출력들은 초기화된 팔레트 예측자 변수들 PredictorPaletteSize 및 PredictorPaletteEntries이다.
● PredictorPaletteSize는 다음과 같이 유도된다:
- palette_predictor_initializer_present_flag가 1과 동일할 경우, PredictorPaletteSize는 num_palette_predictor_initializer_minus1 플러스 1과 동일하게 설정된다.
- 그렇지 않을 경우(palette_predictor_initializer_present_flag가 0과 동일함), PredictorPaletteSize는 0과 동일하게 설정된다.
● 어레이 PredictorPaletteEntries는 다음과 같이 유도된다:
- palette_predictor_initializer_present_flag가 1과 동일할 경우,
for (i = 0; i < PredictorPaletteSize; i++ )
for (comp = 0; comp < 3; comp++ )
PredictorPaletteEntries [ i ] [ comp ] =
palette_predictor_initializers [ i ] [ comp ]
- 그렇지 않을 경우(palette_predictor_initializer_present_flag가 0과 동일함), PredictorPaletteEntries는 0과 동일하게 설정된다.
하나의 실시형태에서, 예측자 초기화 값들은 각각 Y 컴포넌트, Cb 컴포넌트, Cr 컴포넌트에 대하여 함께 그룹화될 수 있다. 신택스 변경들은 표 4에 도시된 바와 같다. 표 3과 비교할 때, 2 개의 do-루프 명령문들은 동일한 컬러 컴포넌트의 팔레트 예측자 초기화를 그룹화하기 위하여 주석 (4-1) 및 주석 (4-2)에 의해 표시된 바와 같이 교환된다.
표 4
Figure pct00004
상기 실시형태에 대응하는 예시적인 팔레트 예측자 초기화 프로세스는 다음과 같이 도시되어 있다.
● 이 프로세스의 출력들은 초기화된 팔레트 예측자 변수들 PredictorPaletteSize 및 PredictorPaletteEntries이다.
● PredictorPaletteSize는 다음과 같이 유도된다:
- palette_predictor_initializer_present_flag가 1과 동일할 경우, PredictorPaletteSize는 num_palette_predictor_initializer_minus1 플러스(+) 1과 동일하게 설정된다.
- 그렇지 않을 경우(palette_predictor_initializer_present_flag가 0과 동일함), PredictorPaletteSize는 0과 동일하게 설정된다
● 어레이 PredictorPaletteEntries는 다음과 같이 유도된다:
- palette_predictor_initializer_present_flag가 1과 동일할 경우,
for (comp = 0; comp < 3; comp++ )
for (i = 0; i < PredictorPaletteSize; i++ )
PredictorPaletteEntries [ i ] [ comp ] =
palette_predictor_initializers [ i ] [ comp ]
- 그렇지 않을 경우(palette_predictor_initializer_present_flag가 0과 동일함), PredictorPaletteEntries는 0과 동일하게 설정된다.
팔레트 예측자 초기화기가 SPS(sequence parameter set; 시퀀스 파라미터 세트) 또는 슬라이스 헤더에서 시그널링될 경우, 동일한 그룹화 방법이 적용될 수 있다. 다시 말해서, Y 컴포넌트에 대한 모든 초기화 값들이 함께 시그널링되고, Cb 컴포넌트에 대한 모든 초기화 값들이 함께 시그널링되고, Cr 컴포넌트에 대한 모든 초기화 값들이 함께 시그널링된다.
동일한 컬러 컴포넌트의 팔레트 예측자 업데이트 프로세스의 그룹화
현존하는 팔레트 예측자 업데이트 프로세스는 다음과 같다.
변수 numComps는 수학식 (1)에 도시된 바와 같이 유도된다:
Figure pct00005
변수들 PredictorPaletteSize 및 PredictorPaletteEntries는 표 5에서의 의사 코드들에 의해 도시된 바와 같이 수정된다.
표 5
Figure pct00006
표 5에 도시된 바와 같이, newPredictorPaletteEntries 업데이트 프로세스의 제 1 부분은 주석 (5-1) 및 주석 (5-2)에 의해 표시된 이중 do-루프 내에서 수행되고, 여기서, 컬러 컴포넌트(즉, cIdx)와 연관된 do-루프는 내부 do-루프 내에 있다. 그러므로, 각각의 팔레트 엔트리에 대하여, 3 개의 컬러 컴포넌트들이 업데이트된다. 나머지 newPredictorPaletteEntries 업데이트를 위한 2 개의 do-루프 명령문들은 주석 (5-3) 및 (5-4)에 의해 표시되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 내부 루프에 대응한다. 그러므로, 각각의 엔트리에 대하여, 3 개의 컬러 컴포넌트들이 업데이트된다. PredictorPaletteEntries 업데이트를 위한 2 개의 do-루프 명령문들은 주석 (5-5) 및 주석 (5-6)에 의해 표시되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, PredictorPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다.
하나의 실시형태에서, 3 개의 개개의 컴포넌트들에 대한 팔레트 예측자들은 그룹화되고, 그 다음으로, 업데이트된다. 현존하는 업데이트 프로세스에 대한 예시적인 수정들은 다음과 같이 도시되어 있다.
변수 numComps의 유도는 수학식 (1)과 동일하게 유지된다. 변수들 PredictorPaletteSize 및 PredictorPaletteEntries는 표 6에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 수정된다.
표 6
Figure pct00007
상기 예에서, 제 1 부분 newPredictorPaletteEntries 업데이트를 위한 2 개의 do-루프 명령문들은 주석 (6-1) 및 주석 (6-2)에 의해 표시되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, 나머지 newPredictorPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다. 주석 (6-3) 및 주석 (6-4)에 의해 표시된 이중 do-루프에 의해 표시된 바와 같은 newPredictorPaletteEntries 업데이트 프로세스는 표 5에서의 현존하는 업데이트 프로세스와 동일하게 유지된다. 주석 (6-5) 및 주석 (6-6)에 의해 표시된 이중 do-루프에 의해 표시된 바와 같은 PredictorPaletteEntries 업데이트 프로세스는 표 5에서의 현존하는 업데이트 프로세스와 동일하게 유지된다.
또 다른 실시형태에서, 변수들 PredictorPaletteSize 및 PredictorPaletteEntries는 표 7에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 수정된다.
표 7
Figure pct00008
상기 예에서, newPredictorPaletteEntries 업데이트의 제 1 부분을 위한 2 개의 do-루프 명령문들은 주석 (7-1) 및 주석 (7-2)에 의해 표시되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, 나머지 newPredictorPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다. 주석 (7-3) 및 주석 (7-4)에 의해 표시된 이중 do-루프에 의해 표시된 바와 같은 newPredictorPaletteEntries 업데이트 프로세스로서, 여기서, 상이한 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, newPredictorPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다. 주석 (7-5) 및 주석 (7-6)에 의해 표시된 이중 do-루프에 의해 표시된 바와 같은 PredictorPaletteEntries 업데이트 프로세스는 표 5에서의 현존하는 업데이트 프로세스와 동일하게 유지된다.
또 다른 실시형태에서, 변수들 PredictorPaletteSize 및 PredictorPaletteEntries는 표 8에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 수정된다.
표 8
Figure pct00009
상기 예에서, newPredictorPaletteEntries 및 PredictorPaletteEntries 업데이트 프로세스를 위한 2-루프 명령문은 주석 (8-1), 주석 (8-2), 주석 (8-3), 및 주석 (8-4)에 의해 표시되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, newPredictorPaletteEntries 값들 및 PredictorPaletteEntries는 각각의 컬러 컴포넌트에 대하여 업데이트된다.
업데이트 프로세스를 위한 동일한 컬러 컴포넌트의 팔레트 예측자를 그룹화하는 다양한 예들은 표 6 내지 표 8 에 도시되었고, 여기서, HEVC 신택스 엘리먼트들은 본 발명의 실시형태에 따라 동일한 컬러 컴포넌트의 팔레트 예측자를 그룹화함으로써 업데이트 프로세스를 입증하기 위하여 이용되었다. 그러나, 본 발명은 이 예들에서 열거된 특정 신택스 엘리먼트들뿐만 아니라 특정 의사 코드들로 제한되지는 않는다. 당해 분야의 당업자는 본 발명의 사상으로부터의 이탈 없이 본 발명을 실시할 수도 있다.
동일한 컬러 컴포넌트의 팔레트 엔트리 시맨틱들의 그룹화
현재의 SCM4.0에서, 신택스 엘리먼트 palette_entry는 현재의 팔레트에 대한 팔레트 엔트리에서 컴포넌트의 값을 특정하기 위하여 이용된다. 변수 PredictorPaletteEntries[ cIdx ][ i ]는 컬러 컴포넌트 cIdx에 대한 예측자 팔레트에서 i번째 엘리먼트를 특정한다. 변수 numComps는 수학식 (1)에 도시된 바와 같이 유도된다. 변수 CurrentPaletteEntries[ cIdx ][ i ]는 컬러 컴포넌트 cIdx에 대한 현재의 팔레트에서 i번째 엘리먼트를 특정하고, 표 9에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 유도된다.
표 9
Figure pct00010
표 9에 도시된 바와 같이, 팔레트 예측자로부터의 CurrentPaletteEntries는 주석 (9-1) 및 주석 (9-2)에 의해 표시된 바와 같이 업데이트되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 내부 루프에 대응한다. 그러므로, 각각의 엔트리에 대하여, 3 개의 컬러 컴포넌트들이 업데이트된다. 또한, 새로운 팔레트 엔트리로부터의 CurrentPaletteEntries는 주석 (9-3) 및 주석 (9-4)에 의해 표시된 바와 같이 업데이트되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, CurrentPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다.
하나의 실시형태에서, 3 개의 컴포넌트들의 각각에 대한 팔레트 예측자 값들은 함께 그룹화될 수 있다. 현존하는 프로세스에 대한 예시적인 변경들은 다음과 같이 도시되어 있다.
변수 numComps는 수학식 (1)에 도시된 바와 같이 유도된다. 변수 CurrentPaletteEntries[ cIdx ][ i ]는 컬러 컴포넌트 cIdx에 대한 현재의 팔레트에서 i번째 엘리먼트를 특정하고, 표 10에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 유도된다.
표 10
Figure pct00011
표 10에 도시된 바와 같이, 팔레트 예측자로부터의 CurrentPaletteEntries는 주석 (10-1) 및 주석 (10-2)에서 표시된 바와 같이 업데이트되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, CurrentPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다. 새로운 팔레트 엔트리로부터의 CurrentPaletteEntries는 주석 (10-3) 및 주석 (10-4)에서 표시된 바와 같이 업데이트되고, 표 9와 동일하게 유지된다.
또 다른 실시형태에서, 3 개의 컴포넌트들은 함께 그룹화될 수 있다. 변경들은 다음과 같이 도시되어 있다.
변수 numComps는 수학식 (1)에 도시된 바와 같이 유도된다:
변수 CurrentPaletteEntries[ cIdx ][ i ]는 컬러 컴포넌트 cIdx에 대한 현재의 팔레트에서 i번째 엘리먼트를 특정하고, 표 11에서의 다음의 예시적인 의사 코드들에 의해 도시된 바와 같이 유도된다.
표 11
Figure pct00012
표 11에 도시된 바와 같이, 팔레트 예측자로부터의 CurrentPaletteEntries 및 새로운 팔레트 엔트리로부터의 그것들은 주석 (11-1), 주석 (11-2), 주석 (11-3), 및 주석 (11-4)에서 표시된 바와 같이 업데이트되고, 여기서, 상이한 컬러 컴포넌트들에 대한 do-루프 명령문은 외부 루프에 대응한다. 그러므로, CurrentPaletteEntries 값들은 각각의 컬러 컴포넌트에 대하여 업데이트된다.
업데이트 프로세스를 위한 동일한 컬러 컴포넌트의 팔레트 엔트리 시맨틱들을 그룹화하는 다양한 예들은 표 10 및 표 11 에 도시되었고, 여기서, HEVC 신택스 엘리먼트들은 본 발명의 실시형태에 따라 동일한 컬러 컴포넌트의 팔레트 엔트리 시맨틱들을 그룹화함으로써 업데이트 프로세스를 입증하기 위하여 이용되었다. 그러나, 본 발명은 이 예들에서 열거된 특정 신택스 엘리먼트들뿐만 아니라 특정 의사 코드들로 제한되지는 않는다. 당해 분야의 당업자는 본 발명의 사상으로부터의 이탈 없이 본 발명을 실시할 수도 있다.
다른 팔레트 신택스 그룹화
SCM-4.0에서, 팔레트 인덱스들은 전방에서 그룹화되고, 이스케이프 값들은 종료부에서 그룹화된다. 팔레트 인덱스들 및 이스케이프 값들은 우회 빈(bypass bin)들로 코딩된다. 팔레트 인덱스들을 갖는 이스케이프 값들을 그룹화하는 것(즉, 우회 코딩된 빈들을 그룹화하는 것)은 파싱 스루풋을 증가시킬 수도 있다. SCM-4.0에서, 파싱되어야 할 이스케이프 값들의 수는 팔레트 런 모드, 팔레트 인덱스, 및 팔레트 런에 종속된다. 그러므로, 이스케이프 값들만이 종료부에서 그룹화될 수 있다. 팔레트 인덱스들을 갖는 이스케이프 값들을 그룹화하기 위하여, 몇몇 방법들은 다음과 같이 개시되어 있다.
방법-1: 팔레트 인덱스들을 갖는 전방에서 이스케이프 값들을 그룹화하는 것.
이스케이프 값들이 전방에서 그룹화될 경우, 파싱되어야 할 이스케이프 값들의 수는 팔레트 런들에 독립적이어야 한다. 이스케이프 값 파싱에 대하여, 팔레트 런들에 대한 데이터 종속성을 제거하기 위하여, 본 발명의 실시형태는 상부 행으로부터 이스케이프 샘플들을 복사할 때에 상부-복사 런 모드 거동을 변경한다. 예측자가 이스케이프 샘플일 경우, 이스케이프 샘플은 예측자 복사 모드에서 미리 정의된 컬러 인덱스로서 취급된다.
상부-복사 런 모드에서, "팔레트 런" 값은 상부 행으로부터 복사되어야 할 다음의 예들의 수를 표시하기 위하여 송신되거나 유도된다. 컬러 인덱스들은 상부 행에서의 컬러 인덱스들과 동일하다. 하나의 실시형태에서, 상부 또는 좌측 샘플이 이스케이프 샘플일 경우, 상부 샘플의 컬러 인덱스는 미리 정의된 컬러 인덱스(예컨대, 0)로서 취급된다. 현재의 인덱스는 미리 정의된 인덱스로 설정된다. 이스케이프 값이 이 예측자 복사 모드들에서는 요구되지 않는다. 이 방법에서, 팔레트 런은 시그널링된 인덱스가 이스케이프 인덱스와 동일하더라도 인덱스 런 모드에 대하여 시그널링될 수 있다. 이스케이프 인덱스에 대한 런이 0보다 더 클 경우(예컨대, N, N>0), 최초 샘플은 코딩된 이스케이프 값으로 재구성된다. 최초 샘플의 인덱스는 이스케이프 인덱스 또는 미리 정의된 컬러 인덱스로 설정될 수 있다. 잔여 N 샘플들의 인덱스는 미리 정의된 인덱스(예컨대, 인덱스 0)로 설정되고, 나머지 N 샘플들은 미리 정의된 인덱스(예컨대, 인덱스 0)의 값으로 재구성된다. 하나의 실시형태에서, 런 모드에서의 최대 코드워드 인덱스(예컨대, adjustedIndexMax)는 인덱스 런 모드의 최초 샘플을 제외하고는 고정된다(예컨대, indexMax-1로 고정됨). CU에서의 최초 샘플에 대하여, adjustedIndexMax는 indexMax와 동일하다. 중복적인 인덱스 제거가 여전히 적용될 수 있다. 이 방법에서, 파싱될 필요가 있는 이스케이프 값들의 수는 이스케이프 인덱스와 동일한 파싱된/재구성된 인덱스들의 수에 종속된다. 예를 들어, 팔레트 인덱스들이 절단된 2진 코드(truncated binary code)로 코딩되고 코딩된 빈들이 모두 1일 경우, 파싱된 인덱스는 이스케이프 인덱스이다. 파싱될 필요가 있는 이스케이프 값들의 수는 팔레트 런들에 독립적이다. 그러므로, 이스케이프 값들의 신택스는 팔레트 인덱스들을 갖는 전방에서(즉, 팔레트 런들 전에) 야기될 수 있다.
신택스 순서 예 1: copy_above_run의 수 또는 index_run의 수 → last_run_mode → 런 타입 그룹(컨텍스트 코딩됨) → 팔레트 인덱스 그룹(우회 코딩됨) → 이스케이프 값 그룹(우회 코딩됨) → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일하고 last_run_mode가 index_run일 경우에는, 런 타입 그룹은 종결될 것이다. 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일하고 last_run_mode가 copy_above_run일 경우, 런 타입 그룹은 또한 종결될 것이고, copy_above_run은 종료부에서 삽입된다.
신택스 순서 예 2: copy_above_run의 수 또는 index_run의 수 → 런 타입 그룹(컨텍스트 코딩됨) → last_run_mode → 팔레트 인덱스 그룹(우회 코딩됨) → 이스케이프 값 그룹(우회 코딩됨) → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이고, last_run_mode가 시그널링된다. last_run_mode가 copy_above_run일 경우, copy_above_run은 종료부에서 삽입된다.
신택스 순서 예 3: copy_above_run의 수 또는 index_run의 수 → 런 타입 그룹(컨텍스트 코딩됨) → 팔레트 인덱스 그룹(우회 코딩됨) → 이스케이프 값 그룹(우회 코딩됨) → last_run_mode → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode는 시그널링된다. last_run_mode가 copy_above_run일 경우, copy_above_run은 종료부에서 삽입된다.
신택스 순서 예 4: copy_above_run의 수 또는 index_run의 수 → 런 타입 그룹(컨텍스트 코딩됨) → 팔레트 인덱스 그룹(우회 코딩됨) → last_run_mode → 이스케이프 값(우회 코딩됨) 그룹 → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode는 시그널링된다. last_run_mode가 copy_above_run일 경우, copy_above_run은 종료부에서 삽입된다.
신택스 순서 예 5: copy_above_run의 수 또는 index_run의 수 → 팔레트 인덱스 그룹 → 이스케이프 값 그룹 → last_run_mode → 런 타입 그룹 → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode가 copy_above_run일 경우, copy_above_run은 시그널링 없이 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
신택스 순서 예 6: copy_above_run의 수 또는 index_run의 수 → 팔레트 인덱스 그룹 → last_run_mode → 이스케이프 값 그룹 → 런 타입 그룹 → 런 길이 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode가 copy_above_run일 경우, copy_above_run은 시그널링 없이 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
신택스 순서 예 7: copy_above_run의 수 또는 index_run의 수 → 팔레트 인덱스 그룹 → 이스케이프 값 그룹 → last_run_mode → 인터리빙됨{팔레트 런 타입, 팔레트 런 길이}
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode가 copy_above_run일 경우, copy_above_run은 시그널링 없이 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
신택스 순서 예 8: copy_above_run의 수 또는 index_run의 수 → 팔레트 인덱스 그룹 → last_run_mode → 이스케이프 값 그룹 → 인터리빙됨{팔레트 런 타입, 팔레트 런 길이}.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩하는 동안, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이다. last_run_mode가 copy_above_run일 경우, copy_above_run은 시그널링 없이 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
상기 예들에서, copy_above_run은 위에서 언급된 "copy-above run mode"에 대한 예시적인 신택스 엘리먼트에 대응한다. 또한, index_run은 "런 모드"에 대한 예시적인 신택스 엘리먼트에 대응한다.
위에서 언급된 신택스 순서에 대한 예들 1, 2, 3, 및 5에서, "팔레트 인덱스 그룹(우회 코딩됨) → 이스케이프(우회 코딩됨) 값 그룹"은 "인터리빙됨{팔레트 인덱스, 이스케이프 값들}"일 수 있다. 팔레트 인덱스 및 이스케이프 값들은 인터리빙된 방식으로 코딩될 수 있다. 파싱된 인덱스가 이스케이프 인덱스와 동일할 경우, 이스케이프 값들은 우측으로 떨어져서 파싱될 수 있다.
위에서 언급된 신택스 순서에 대한 예들 2 내지 7에서, "last_run_mode"는 "copy_above_run의 수 또는 index_run의 수" 후에 시그널링될 수 있다.
위에서 언급된 신택스 순서에 대한 예들 1 내지 8에서, "last_run_mode"는 최후 팔레트 런을 시그널링하기 전에 어딘가에서 시그널링될 수 있다.
위에서 언급된 신택스 순서에 대한 예들 1 내지 4에서, 팔레트 런 그룹은 팔레트 런 그룹 전에 디코딩된다. 그러므로, 팔레트 런 시그널링에 대하여, 최대 가능한 런은 나머지 인덱스 런 모드들의 수, 잔여 상부 복사 런 모드들의 수, 또는 잔여 인덱스 런 모드들의 수 + 잔여 상부 복사 런 모드들의 수에 의해 추가로 감산될 수 있다. 예를 들어, maxPaletteRun = nCbS * nCbS-scanPos - 1 - 나머지 COPY_INDEX_MODE의 수이거나, maxPaletteRun = nCbS * nCbS - scanPos - 1 - 나머지 COPY_ABOVE_MODE의 수이거나, 또는 maxPaletteRun = nCbS * nCbS-scanPos - 1 - 나머지 COPY_ABOVE_MODE의 수 - 나머지 COPY_INDEX_MODE의 수이다. 상기 예들에서, maxPaletteRun은 최대 팔레트 런에 대한 예시적인 신택스 엘리먼트에 대응하고, nCbS는 현재의 루마 코딩 블록(luma coding block)의 크기에 대한 예시적인 신택스 엘리먼트에 대응하고, scanPos는 현재의 픽셀의 스캔 위치에 대응한다.
위에서 언급된 신택스 순서에 대한 예들 1 내지 7에서, 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
방법-2: 이스케이프 값들을 갖는 종료부에서 팔레트 인덱스들을 그룹화하는 것.
SCM-4.0에서, 팔레트 런의 컨텍스트 형성은 팔레트 인덱스에 종속된다. 그러므로, 팔레트 인덱스만이 팔레트 런 전에 코딩될 수 있다. 종료부에서 팔레트 인덱스를 그룹화하기 위하여, 팔레트 런의 컨텍스트 형성은 팔레트 인덱스에 독립적이어야 한다.
그러므로, 팔레트 런의 컨텍스트 형성은 팔레트 런의 컨텍스트 형성이 현재의 팔레트 런 모드, 이전의 팔레트 런 모드, 이전의 팔레트 런, 상부 샘플의 팔레트 런 모드, 상부 샘플의 팔레트 런, 또는 상기 정보의 조합에만 종속되도록 변경될 필요가 있다. 대안적으로, 팔레트 런들은 우회 빈들로 코딩될 수 있다.
팔레트 인덱스 맵 코딩의 신택스 코딩의 다양한 예들은 다음과 같이 도시되어 있다.
신택스 순서 예 1: copy_above_run의 수 또는 index_run의 수 → last_run_mode → 런 타입 그룹(컨텍스트 코딩됨) → 런 길이 그룹(팔레트 인덱스들에 종속되지 않음) → 팔레트 인덱스 그룹(우회 코딩됨) → 이스케이프 값 그룹(우회 코딩됨).
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩할 때, 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일하고 last_run_mode가 index_run일 경우에는, 런 타입 그룹은 종결될 것이다. 인코딩된/디코딩된 index_run 수가 index_run의 수와 동일하고 last_run_mode가 copy_above_run일 경우, 런 타입 그룹은 또한 종결될 것이고, copy_above_run은 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
신택스 순서 예 2: copy_above_run의 수 또는 index_run의 수 → 런 타입 그룹 → last_run_mode → 런 길이 그룹 → 팔레트 인덱스 그룹 → 이스케이프 값 그룹.
이 경우, last_run_mode는 최후 런 모드가 copy_above_run 또는 index_run인 것을 표시한다. 예를 들어, 런 타입 그룹을 코딩/디코딩할 때, 인코딩된/디코딩된 index_run 수가index_run의 수와 동일할 경우에는, 런 타입 그룹이 종결될 것이고, last_run_mode가 시그널링된다. last_run_mode가 copy_above_run일 경우, copy_above_run은 종료부에서 삽입된다. 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
신택스 순서 예 3: 인터리빙됨{팔레트 런 타입, 팔레트 런 길이}, 팔레트 인덱스 그룹 → 이스케이프 값 그룹.
위에서 언급된 신택스 순서에 대한 예들 1 내지 3에 대하여, "팔레트 인덱스 그룹 → 이스케이프 값 그룹"은 "인터리빙됨{팔레트 인덱스, 이스케이프 값들}"일 수 있다. 팔레트 인덱스 및 이스케이프 값들은 인터리빙된 방식으로 코딩될 수 있다. 파싱된 인덱스가 이스케이프 인덱스와 동일할 경우, 이스케이프 값들은 우측으로 떨어져서 파싱될 수 있다.
위에서 언급된 신택스 순서에 대한 예들 1 내지 3에서, "last_run_mode"는 최후 팔레트 런을 시그널링하기 전에 어딘가에서 시그널링될 수 있다.
위에서 언급된 신택스 순서에 대한 예들 1 및 2에서, 팔레트 런 그룹은 팔레트 런 그룹 전에 디코딩될 수 있다. 그러므로, 팔레트 런 시그널링에 대하여, 최대 가능한 런은 나머지 인덱스 런 모드들의 수, 나머지 상부 복사 런 모드들의 수, 또는 나머지 인덱스 런 모드들의 수 + 나머지 상부 복사 런 모드들의 수에 의해 추가로 감산될 수 있다. 예를 들어, maxPaletteRun = nCbS * nCbS-scanPos - 1 - 나머지 COPY_INDEX_MODE의 수이거나, maxPaletteRun = nCbS * nCbS - scanPos - 1 - 나머지 COPY_ABOVE_MODE의 수이거나, 또는 maxPaletteRun = nCbS * nCbS-scanPos - 1 - 나머지 COPY_ABOVE_MODE의 수 - 나머지 COPY_INDEX_MODE의 수이다.
위에서 언급된 신택스 순서에 대한 예들 1 및 2에서, 최후 팔레트 런 모드에 대하여, 팔레트 런은 PU/CU의 종료부에 있는 것으로 추론된다.
본 발명은 이하에서 개시된 바와 같은 팔레트 코딩에 관련된 다양한 양태들을 다룬다.
팔레트 인덱스 맵 파싱에서의 라인 버퍼의 제거
SCM-3.0에서, 4 개의 팔레트 인덱스 맵 신택스 엘리먼트들(즉, 팔레트 런 모드, 팔레트 인덱스, 팔레트 런, 및 이스케이프 값들)은 인터리빙된 방식으로 코딩된다. 팔레트 런 모드의 컨텍스트 형성은 SCM-4.0에서의 상부 샘플의 팔레트 런 모드에 독립적으로 되도록 수정되지만, 인덱스 맵 파싱은 상부 행의 정보를 요구한다. 예를 들어, 상부-복사 런 모드가 이용될 때, 파싱되어야 할 이스케이프 값들의 수는 상부 행들로부터 복사되어야 할 이스케이프 픽셀들의 수에 종속된다. 이전의 코딩 모드가 상부-복사 런 모드일 때, 인덱스 재구성은 상부 샘플의 팔레트 인덱스에 또한 종속된다. 팔레트 인덱스 맵 파싱에서 라인 버퍼를 절감하기 위하여, 상부 샘플로부터의 데이터 종속성을 제거하기 위한 몇몇 방법들이 개시되어 있다.
방법-1: 예측자가 이스케이프 샘플일 경우에 예측자 복사 모드에서 이스케이프 값을 직접 복사하는 것.
상부-복사 런 모드에서 파싱되어야 할 이스케이프 픽셀들의 수를 계산하는 동안에 종속성을 제거하기 위하여, 상부-복사 런 모드 거동은 상부 행으로부터 이스케이프 샘플들을 복사하기 위한 본 발명의 실시형태에 따라 수정된다.
상부-복사 런 모드에서, "팔레트 런" 값은 상부 행으로부터 복사되어야 할 다음의 예들의 수를 표시하기 위하여 송신되거나 유도된다. 컬러 인덱스들은 상부 행에서의 컬러 인덱스들과 동일하다. 하나의 실시형태에 따르면, 예측자(즉, 상부 위치)가 이스케이프 샘플일 경우, 현재의 샘플은 상부 행으로부터, 인덱스(이스케이프 인덱스)를 복사할 뿐만 아니라, 이스케이프 값들을 복사한다. 이스케이프 값은 이 샘플들에서 파싱되도록 요구되지 않는다. 이 방법에서, 런은 시그널링된 인덱스가 이스케이프 인덱스와 동일하더라도 인덱스 런 모드에 대하여 시그널링될 수 있다. 이스케이프 인덱스에 대한 런이 0보다 더 클 경우(예컨대, N 및 N>0), 디코더는 다음의 N 샘플들에 대한 최초 샘플로부터 재구성 값(또는 이스케이프 값들)을 충전할 것이다. 이스케이프 값들은 런 신택스 후에 시그널링될 수 있다.
이전의 모드가 상부-복사 런 모드일 때에 인덱스 런 모드의 인덱스 파싱 및 재구성을 위한 데이터 종속성을 제거하기 위하여, JCTVC-T0078(JCTVC-T00784: Kim 등, CE1-관련: simplification for index map coding in palette mode(팔레트 모드에서의 인덱스 맵 코딩을 위한 간략화), ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11의 비디오 코딩에 관한 합동 협력 팀(JCT-VC), 20차 회의: Geneva, CH, 10-18 Feb. 2015, 문서: JCTVC-T0078)에서 설명된 바와 같이, 중복적인 인덱스 제거는 이전의 모드가 상부-복사 런 모드일 때에 디스에이블된다.
방법-1에 기초하여, 인덱스 맵 파싱은 상부 행의 정보에 종속되지 않는다. 엔트로피 디코더는 이전의 코딩된 팔레트 런 모드 및 팔레트 인덱스에 대한 종속성을 단지 이용함으로써 모든 팔레트 인덱스 맵 신택스들을 파싱할 수 있다.
하나의 실시형태에서는, 인덱스 복사 런 모드에서, "팔레트 런" 값은 비트스트림에서 코딩되어야 할 다음의 샘플들의 수를 표시하기 위하여 송신되거나 유도된다. 현재의 위치의 컬러 인덱스가 코딩된다. 그러나, 현재의 로케이션에서의 샘플이 이스케이프 샘플일 경우, 현재의 샘플의 인덱스(이스케이프 인덱스)가 코딩될 뿐만 아니라, 이스케이프 값들이 코딩된다. 이 방법에서, 런은 시그널링된 인덱스가 이스케이프 인덱스와 동일하더라도 인덱스 런 모드에 대하여 시그널링될 수 있다. 이스케이프 인덱스에 대한 런이 0보다 더 클 경우(예컨대, N 및 N>0), 디코더는 다음의 N 샘플들에 대한 최초 샘플로부터 재구성 값(또는 이스케이프 값들)을 충전할 것이다. 이스케이프 값들은 런 신택스 후에 시그널링될 수 있다.
이전의 모드가 인덱스 복사 런 모드일 때에 인덱스 복사 런 모드의 인덱스 파싱 및 재구성을 위한 데이터 종속성을 제거하기 위하여, 중복적인 인덱스 제거는 이전의 모드가 인덱스 복사 런 모드일 때에 디스에이블된다.
상기 방법으로, 인덱스 맵 파싱은 이전의 인덱스의 정보에 종속되지 않는다. 엔트로피 디코더는 이전의 코딩된 팔레트 런 모드 및 팔레트 인덱스에 대한 종속성을 단지 이용함으로써 모든 팔레트 인덱스 맵 신택스들을 파싱할 수 있다.
방법-2: 예측자가 이스케이프 샘플일 경우에, 예측자 복사 모드에서 이스케이프 샘플을 미리 정의된 컬러 인덱스로서 취급하는 것.
상부-복사 런 모드에서, "팔레트 런" 값은 상부 행으로부터 복사되어야 할 다음의 예들의 수를 표시하기 위하여 송신되거나 유도된다. 컬러 인덱스들은 상부 행에서의 컬러 인덱스들과 동일하다. 하나의 실시형태에 따르면, 상부 또는 좌측 샘플이 이스케이프 샘플일 경우, 상부 샘플의 컬러 인덱스는 미리 정의된 컬러 인덱스(예컨대, 0)로서 취급된다. 현재의 인덱스는 미리 정의된 인덱스로 설정된다. 이스케이프 값이 이 예측자 복사 모드들에서는 요구되지 않는다. 하나의 실시형태에 따르면, 팔레트 런은 시그널링된 인덱스가 이스케이프 인덱스와 동일하더라도 인덱스 런 모드에 대하여 시그널링될 수 있다. 이스케이프 값들은 런 신택스 후에 시그널링될 수 있다. 이스케이프 인덱스에 대한 런이 0보다 더 클 경우(예컨대, N, N>0), 최초 샘플은 코딩된 이스케이프 값으로 재구성된다. 최초 샘플의 인덱스는 이스케이프 인덱스 또는 미리 정의된 컬러 인덱스로 설정될 수 있다. 잔여 N 샘플들의 인덱스들은 미리 정의된 인덱스(예컨대, 인덱스 0)로 설정된다. 나머지 N 샘플들은 미리 정의된 인덱스(예컨대, 인덱스 0)의 값으로 재구성된다. 또 다른 예에서, 이스케이프 인덱스에 대한 런이 0보다 더 클 경우(예컨대, N, N>0), 최초 샘플은 이스케이프 값으로 재구성되고, 다음의 N 샘플들의 이스케이프 값들은 또한 시그널링될 필요가 있다. 잔여 샘플들은 시그널링된 이스케이프 값들로 각각 재구성된다. 최초 샘플 및 잔여 N 샘플들의 인덱스들은 미리 정의된 인덱스(예컨대, 인덱스 0)로 설정될 수 있다.
방법-2에 따르면, 런 모드에서의 최대 코드워드 인덱스(즉, adjustedIndexMax)는 인덱스 런 모드의 최초 샘플을 제외하고는 고정된다(예컨대, indexMax-1로 고정됨). CU에서의 최초 샘플에 대하여, adjustedIndexMax는 indexMax와 동일하다. 중복적인 인덱스 제거가 여전히 적용될 수 있다.
방법-2에 따르면, 인덱스 맵 재구성은 상부 샘플들의 인덱스 값들을 여전히 필요로 하지만, 엔트로피 디코더는 이전의 코딩된 팔레트 런 모드 및 팔레트 인덱스에 대한 종속성을 단지 이용함으로써 모든 팔레트 인덱스 맵 신택스들을 파싱할 수 있다.
JCTVC-T0078에 따르면, 이전의 모드가 상부-복사 런 모드일 때에 인덱스 런 모드의 인덱스 재구성을 위한 데이터 종속성을 제거하기 위하여, 중복적인 인덱스 제거는 이전의 모드가 상부-복사 런 모드일 때에 디스에이블될 것이다.
인덱스 맵 플립핑 하에서의 상부-복사 모드
본 발명은 인덱스 맵 코딩 전의 인덱스 맵 플립핑에 관련된 쟁점을 또한 다룬다. 디코더가 인덱스 맵을 플립핑한 후, 상부-복사 런 모드에서의 예측 소스(prediction source)는 이전과 동일한 물리적 상부 픽셀들이 아니다. 도 3a는 인코딩 코딩 전의 일 예의 인덱스 맵 플립핑을 예시한다. 도 3b는 플립핑된 인덱스 맵의 예를 예시한다.
도 3a는 원래의 코딩 유닛의 예를 도시한다. 인덱스 맵 플립핑 후에, 가장 최후 행에서의 픽셀들(즉, 픽셀 0 내지 픽셀 7)은 도 3b에 도시된 바와 같이 최초 행으로 플립핑될 것이다. 지금의 최초 행 픽셀들은 예측이 CU에 걸쳐 있을 수 있을 경우에 상부의 이웃하는 구성된 픽셀들(NCP)에 의해 예측된다. 도 3b에서, 라인-충전된 블록들은 플립핑된 인덱스 맵을 표시하는 반면, 도 3a에서의 깨끗한 블록들은 원래의 인덱스 맵을 표시한다. 플립핑 후의 다른 행들에서의 픽셀들에 대하여, 상부-복사 런 모드에서의 예측은 플립핑 전의 물리적 하부 픽셀 위치들에 의한 예측으로 된다. 이 방법에서, 인덱스 재구성은 제 2 패스(pass)를 필요로 하지 않는다.
그러나, 인덱스 맵 코딩 전에 인덱스 맵을 플립핑하는 것은 도 4에서 예시된 바와 같이 물리적 위치에서의 최후 행에서 픽셀들을 예측하기 위하여 상부 NCP를 이용하는 것을 암시한다. 이 예측 프로세스는 예측자와 예측되어야 할 기초적인 인덱스 사이의 거리가 크기 때문에 비효율적이다.
따라서, 인덱스 맵 플립핑에 관련된 코딩 효율을 개선시키기 위한 방법들은 다음과 같이 개시되어 있다.
방법 1: 인덱스 맵이 플립핑되든지 간에, 상부-복사 런 모드에서의 인덱스들은 도 5a 및 도 5b에 도시된 바와 같이 그 물리적 상부 위치(또는 전치 플래그(transpose flag)가 온(on)일 경우에 좌측 위치)로부터 예측된다. 도 5a에서, 라인-충전된 블록들은 플립핑된 인덱스 맵을 나타내는 반면, 도 5b에서의 깨끗한 블록들은 원래의 인덱스 맵을 나타낸다.
방법 2: 상이한 런 스캔 시작 위치를 시그널링하는 것. 이 방법은 방법 1과 유사하고, 여기서, 상부-복사 런 모드에서의 인덱스들은 물리적 상부 위치들에서의 픽셀들로부터 예측된다. 추가적인 정보는 "런 스캔 시작 위치" 또는 "스캔 패턴"을 표시하기 위하여 시그널링될 수 있다. "런 스캔 시작 위치"는 상부-좌측, 상부-우측, 하부-좌측, 또는 하부-우측일 수 있다. "스캔 패턴"은 수평 스캔, 수직 스캔, 수평 횡단 스캔, 또는 수직 횡단 스캔일 수 있다.
방법 3: 인덱스 맵이 플립핑될 경우, 최초 행의 상부-복사 런 코딩된 픽셀들은 도 6a 및 도 6b에 도시된 바와 같이 그 물리적인 가장 근처의 위치들에서의 샘플들로부터 예측된다. 도 6a는 라인-충전된 블록들에 의해 표시된 바와 같은 플립핑된 샘플들을 도시하고, 도 6b는 원래의 물리적 위치들에서의 샘플들을 도시한다. 전치 플래그가 오프일 경우, 물리적 위치에서의 최후 행의 상부-복사 런 코딩된 픽셀들은 그 물리적인 가장 근처의 위치들에서의 샘플들로부터 예측된다.
방법 4: 인덱스 맵이 플립핑될 경우, 최후 행의 상부-복사 런 코딩된 픽셀들은 도 7a 및 도 7b에 도시된 바와 같이 상부의 이웃하는 CU의 그 물리적 픽셀 위치들로부터 예측된다.도 7a는 라인-충전된 블록들에 의해 표시된 바와 같은 플립핑된 픽셀들을 도시하고, 도 7b는 원래의 물리적 위치들에서의 샘플들을 도시한다. 전치 플래그가 오프일 경우, 물리적 위치에서의 최초 행(또는 최초 M 행들)은 상부의 이웃하는 CU의 그 물리적 픽셀 위치들로부터 예측될 수 있다. M은 1, 2, 또는 3일 수 있다. M은 또한, CU 크기에 종속될 수 있다. M은 디코더가 이에 따라 디코딩할 수 있도록 시그널링될 수 있다.
CU에 걸친 예측
코딩 효율을 추가로 개선시키기 위하여, 특수한 런이 개시되어 있다. 이 특수한 런은 팔레트 코딩된 CU의 최초 샘플로부터 시작되는 상부-복사 런을 확장한다. 특수한 런은 한 번 시그널링될 수 있다. 확장된 상부-복사 런 모드에서의 샘플들은 이웃하는 CU에서의 재구성된 픽셀들로부터 예측된다. PU/CU에서의 전체 팔레트 코딩된 샘플들이 감소되는 것을 제외하고는, 이 CU에서의 잔여 샘플들은 SCM-4.0 또는 SCM-3.0에서 특정된 팔레트 신택스를 이용하여 코딩된다.
방법 1: 신택스 엘리먼트(예컨대, L에 의해 표현된 line_num)는 샘플들의 최초 L 라인들이 이웃하는 CU에서의 재구성된 픽셀들로부터 예측된다는 것을 표시하기 위하여 먼저 시그널링되고, 여기서, L은 양의 정수이다. PU/CU에서의 전체 팔레트 코딩된 샘플들이 감소되는 것을 제외하고는, 잔여 샘플들은 SCM-4.0 또는 SCM-3.0에서의 팔레트 신택스를 이용하여 코딩된다. 샘플들의 최초 L 라인들에 대하여, 그 픽셀 값들은 이웃하는 CU에서의 재구성된 픽셀들로부터 예측된다. 예를 들어, palette_transpose_flag가 0일 경우, 상부 CU들에서의 재구성된 픽셀들이 이용된다. 샘플들의 최초 L 라인들의 픽셀 값들은 상부 CU들의 최후 행의 재구성된 픽셀 값들이다. 그것은 인트라 수직 예측을 샘플들의 최초 L 라인들에 적용하는 것과 유사한 반면, 잔여 라인들은 정상 팔레트 모드로 코딩된다.
도 8a는 확장된 상부-복사 런 모드의 예를 예시하고, 여기서, 픽셀들의 2 개의 라인들(즉, L = 2)은 CU 경계(810)의 상부에 위치되는 상부 라인으로부터 복사된다.
방법 2: 신택스 엘리먼트(예컨대, L으로 표현된 pixel_num)는 최초 M 샘플들이 이웃하는 CU에서의 재구성된 픽셀들로부터 예측된다는 것을 표시하기 위하여 먼저 시그널링되고, 여기서, M은 양의 정수이다. PU/CU에서의 전체 팔레트 코딩된 샘플들이 감소되는 것을 제외하고는, 잔여 샘플들은 SCM-4.0 또는 SCM-3.0에서의 팔레트 신택스를 이용하여 코딩된다. 예를 들어, palette_transpose_flag가 0일 경우, 상부 CU들에서의 재구성된 픽셀들이 이용된다. 최초 M 샘플들의 픽셀 값들은 상부 CU들의 최후 행의 재구성된 픽셀 값들이다. 그것은 인트라 수직 예측을 최초 M 샘플들에 적용하는 것과 유사하다. CU의 폭이 CU_width일 경우, CU에서의 (M+1) 내지 (M + CU_width) 번째 샘플에서의 최초 샘플로부터 시작하는 최초 CU_width 샘플들은 SCM-4.0에서의 신택스에 따라 상부-복사 런 모드에서 코딩될 수 없다. 다시 말해서, M 내지 (M + CU_width - 1)과 동일한 스캔 위치를 갖는 샘플들은 SCM-4.0에서의 신택스에 따라 상부-복사 런 모드에서 코딩될 수 없다. 도 8b는 최초의 M(즉, M = 11) 샘플들이 재구성된 픽셀들로부터 예측된다는 것을 표시하기 위하여 신택스 엘리먼트, pixel_num (M)을 시그널링함으로써 CU에 걸친 예측의 예를 예시한다.
예를 들어, SCM-3.0에서의 palette_coding에 대한 신택스 테이블은 표 12에 도시된 바와 같이 수정될 수 있다.
표 12
Figure pct00013
표 12에 도시된 바와 같이, 신택스 엘리먼트 pixel_num는 주석 (12-1)에 의해 표시된 바와 같이 통합되고, 여기서, pixel_num은 팔레트 인덱스 맵 코딩 전에 시그널링된다. 나머지 팔레트 샘플들은 주석 (12-2)에 의해 표시된 pixel_num으로부터 시작하는 스캔 위치로부터 코딩된다. 이전의 팔레트 샘플 위치는 주석 (12-3)에 따라 유도된다. 상부-복사 모드는 주석 (12-4)에 의해 표시된 바와 같이, 최초 pixel_num 샘플들 후에 최초 샘플 행에 대하여 허용되지 않는다.
조절된 최대 인덱스를 나타내는 변수 adjustedIndexMax는 다음과 같이 유도된다:
Figure pct00014
조절된 최대 참조 인덱스를 나타내는 변수 adjustedRefIndexMax는 다음과 같이 유도된다:
Figure pct00015
위에서 언급된 방법 1방법 2에서는, 신택스 엘리먼트, copy_from_neighboring_CU_flag가 먼저 시그널링될 수 있다. copy_from_neighboring_CU_flag가 0일 경우, line_num 및 pixel_num는 시그널링되지 않고 0으로서 추론된다. copy_from_neighboring_CU_flag가 1일 경우, line_num 및 pixel_num는 시그널링된다. 실제적인 line_num 및 pixel_num는 1만큼 증가된 파싱된 line_num 및 pixel_num과 동일하다.
방법 3: 이 방법에서, 이웃하는 픽셀들은 팔레트 모드에서 코딩된 현재의 픽셀을 예측하기 위하여 이용된다. Num_copy_pixel_line은 샘플들의 최초 num_copy_pixel_line 라인들이 이웃하는 CU에서의 재구성된 픽셀들로부터 예측된다는 것을 표시하기 위하여 먼저 시그널링된다. 시작 포인트가 변경되고 PU/CU에서의 전체 팔레트 코딩된 샘플들이 감소된다는 것을 제외하고는, 잔여 샘플들은 정상 팔레트 인덱스 맵 코딩에 의해 코딩된다.
샘플들의 최초 num_copy_pixel_line 라인들에 대하여, 그 픽셀 값들은 이웃하는 CU에서의 재구성된 픽셀들로부터 예측되고, 여기서, 신택스 엘리먼트, num_copy_pixel_line은 복사되어야 할 픽셀 라인들의 수에 대응한다. 예를 들어, palette_transpose_flag가 0일 경우, 상부 CU들에서의 재구성된 픽셀들은 도 9a에 도시된 바와 같이 이용된다. 샘플들의 최초 num_copy_pixel_line(예컨대, K) 라인들의 픽셀 값들은 상부 CU의 최후 행의 재구성된 픽셀 값들에 의해 예측된다. 그것은 인트라 수직 예측을 샘플들의 최초 K 라인들에 적용하는 것과 유사한 반면, 잔여 라인들은 정상 팔레트 모드로 코딩된다. palette_transpose_flag가 1일 경우, 좌측 CU들에서의 재구성된 픽셀들은 도 9b에 도시된 바와 같이 이용된다.
num_copy_pixel_line의 신택스는 팔레트 모드 플래그 후에, 그리고 팔레트 테이블 코딩 전에 시그널링될 수 있다. num_copy_pixel_line이 CU 폭 또는 CU 높이와 동일할 경우, palette_transpose_flag는 전체 CU가 상부 픽셀들 또는 좌측 픽셀들로부터 예측된다는 것을 표시하기 위하여 시그널링된다. 현재의 CU에서의 모든 샘플들이 예측되므로, 팔레트 테이블 코딩 및 인덱스 맵 코딩의 신택스들은 스킵(skip)된다.
num_copy_pixel_line이 CU 폭 또는 CU 높이보다 더 작을 경우, 정상 팔레트 테이블 코딩 및 팔레트 인덱스 맵 코딩이 적용된다. SCM-4.0에서, palette_transpose_flag는 MaxPaletteIndex가 0과 동일할 경우에 0으로서 추론된다. 그러나, 현재의 방법에 따르면, MaxPaletteIndex가 0과 동일하고 num_copy_pixel_line이 0과 동일하지 않을 경우, palette_transpose_flag는 상부 CU 또는 좌측 CU에서의 재구성된 픽셀들로부터 예측되어야 할 샘플들의 최초 num_copy_pixel_line 행들 또는 열들을 표시하기 위하여 여전히 시그널링될 필요가 있다. 인덱스 맵 코딩을 위하여, 시작 샘플 위치는 num_copy_pixel_line*CU_width로 설정된다. num_copy_pixel_line*CU_width와 (num_copy_pixel_line+1)*CU_width - 1 사이의 샘플 위치들을 갖는 샘플들에 대하여, 상부-복사 런 모드는 선택될 수 없다. 다시 말해서, CU_width*(num_copy_pixel_line + 1)보다 더 작은 샘플 위치들을 갖는 샘플들은 상부-복사 런 모드로서 시그널링될 수 없다.
표 13은 위에서 개시된 방법의 실시형태에 따라 팔레트 코딩의 예시적인 신택스 테이블을 예시한다.
표 13
Figure pct00016
Figure pct00017
표 13에서, 신택스 엘리먼트, num_copy_pixel_line은 주석 (13-1)에 의해 표시된 바와 같이 모든 신택스들의 전방에 통합된다. num_copy_pixel_line이 nCbS(즉, CU 폭 또는 CU 높이)와 동일할 경우, 신택스 palette_transpose_flag는 주석 (13-2)에 의해 표시된 바와 같이 통합된다. 전체 CU의 팔레트 인덱스들은 주석 (13-3)에 의해 표시된 바와 같이 -1로서 할당되고, 이것은 픽셀 값들이 이웃하는 CU로부터 복사된다는 것을 표시한다. num_copy_pixel_line이 0과 동일하지 않고 MaxPaletteIndex가 0보다 더 크지 않을 경우(예컨대, MaxPaletteIndex는 0과 동일함), 신택스 엘리먼트, palette_transpose_flag는 주석 (13-4)에 의해 표시된 바와 같이 통합된다. num_copy_pixel_line 라인들 내의 샘플들의 팔레트 인덱스들은 주석 (13-5)에 의해 표시된 바와 같이 -1로서 할당된다. 상부-복사 모드는 주석 (13-6)에 의해 표시된 바와 같이, nCbS*num_copy_pixel_line 후에 최초 샘플 행에 대하여 허용되지 않는다.
변수 AdjustedMaxPaletteIndex는 다음과 같이 유도된다:
Figure pct00018
변수 adjustedRefPaletteIndex는 다음과 같이 유도된다:
Figure pct00019
PaletteIndexMap[xC][yC]가 -1과 동일할 경우, 대응하는 픽셀 값은 그 이웃하는 픽셀과 동일하다. 이 방법에 따르면, 상부 또는 좌측 픽셀들이 이용가능하지 않을 경우, (예컨대, 프레임 경계에서의 샘플들, 또는 제약 인트라 예측이 적용되고 있을 때의 인터 코딩된 샘플들), 0과 동일한 팔레트 인덱스를 갖는 컬러가 그 대신에 이용된다. 현재의 CU의 팔레트 테이블이 코딩되지 않을 경우(예컨대, num_copy_pixel_line이 CU_width와 동일함), 팔레트 예측자 테이블에서의 최초 팔레트가 그 대신에 이용된다.
또 다른 예에서, 상부 또는 좌측 픽셀들이 이용가능하지 않을 경우, HEVC 인트라 예측 경계 픽셀 충전 방법은 대체 이웃하는 픽셀들을 생성하기 위하여 이용될 수 있다.
상부-복사 픽셀 라인 모드를 이용하는 라인들의 수는 신택스 엘리먼트, num_copy_pixel_line으로서 직접적으로 그 대신에 시그널링되는 num_copy_pixel_line_indication에 따라 유도될 수 있다. num_copy_pixel_line_indication가 0과 동일할 경우, num_copy_pixel_line은 0으로서 유도된다. num_copy_pixel_line_indication가 1과 동일할 경우, num_copy_pixel_line은 미리 정의된 수인 N으로서 유도된다. num_copy_pixel_line_indication가 k일 경우, num_copy_pixel_line은 k*N으로서 유도된다.
방법 4: 이 방법에서, num_copy_pixel_line 신택스는 palette_transpose_flag 신택스 전에 시그널링된다. 표 14는 이 발명의 실시형태에 따라 예시적인 팔레트 코딩 신택스 테이블을 예시한다.
표 14
Figure pct00020
Figure pct00021
표 14에서, 신택스 엘리먼트 num _copy_pixel_line은 주석 (14-1)에 의해 표시된 바와 같이 palette_escape_val_present_flag 신택스 시그널링 후에 통합된다. num_copy_pixel_line이 0과 동일하지 않고 MaxPaletteIndex가 0보다 더 크지 않을 경우(예컨대, MaxPaletteIndex는 0과 동일함), 신택스, palette_transpose_flag는 주석 (14-2)에 의해 표시된 바와 같이 통합된다. num_copy_pixel_line 라인들 내의 샘플들의 팔레트 인덱스들은 주석 (14-3)에 의해 표시된 바와 같이 -1로서 할당된다. 상부-복사 모드는 주석 (14-4)에 의해 표시된 바와 같이, nCbS*num_copy_pixel_line 후에 최초 샘플 행에 대하여 허용되지 않는다.
신택스 엘리먼트, num_copy_pixel_line은 신택스 엘리먼트, palette_escape_val_present_flag의 전방에서 시그널링될 수 있다. 표 15는 이 방법에 따라 팔레트 코딩을 위한 예시적인 신택스 테이블을 예시한다.
표 15
Figure pct00022
Figure pct00023
표 15에서, 신택스 엘리먼트, num _copy_pixel_line은 주석 (15-1)에 의해 표시된 바와 같이 palette_escape_val_present_flag 신택스 시그널링 전에 통합된다. num_copy_pixel_line이 0과 동일하지 않고 MaxPaletteIndex가 0보다 더 크지 않을 경우(예컨대, MaxPaletteIndex는 0과 동일함), 신택스 palette_transpose_flag는 주석 (15-2)에 의해 표시된 바와 같이 통합된다. num_copy_pixel_line 라인들 내의 샘플들의 팔레트 인덱스들은 주석 (15-3)에 의해 표시된 바와 같이 -1로서 할당된다. 상부-복사 모드는 주석 (15-4)에 의해 표시된 바와 같이, nCbS*num_copy_pixel_line 후에 최초 샘플 행에 대하여 허용되지 않는다.
이 실시형태에서, 신택스 엘리먼트, num_copy_pixel_line이 CU_width와 동일할 경우, 신택스 엘리먼트들, NumPredictedPaletteEntries 및 num_signaled_palette_entries는 양자 모두 0이어야 한다. 최초 코딩된 신택스 엘리먼트, palette_predictor_run은 1이어야 한다.
palette_escape_val_present_flag 전에 num_copy_pixel_line을 시그널링하는 신택스 설계(예컨대, 표 15)에서는, NumPredictedPaletteEntries 및 num_signaled_palette_entries가 양자 모두 0이어야 하고, 최초 코딩된 palette_predictor_run은 1이어야 하고, palette_escape_val_present_flag는 0으로서 추론된다.
방법 5: 이 방법에 따르면, num_copy_pixel_line은 palette_transpose_flag 후에 시그널링된다. 이 신택스 설계에서, 신택스 엘리먼트, palette_transpose_flag는 MaxPaletteIndex가 0과 동일할 때에도 시그널링될 필요가 있다. 표 16은 이 방법의 실시형태에 따라 팔레트 코딩을 위한 예시적인 신택스 테이블을 예시한다.
표 16
Figure pct00024
신택스 엘리먼트, palette_transpose_flag는 MaxPaletteIndex가 0과 동일할 때에도 시그널링될 필요가 있으므로, 신택스는 테스트 "if(MaxPaletteIndex > 0)" 외부에서 (주석 (16-1)에 도시된 바와 같이) 통합된다. 동시에, 신택스 엘리먼트, 테스트 "if(MaxPaletteIndex > 0)" 내부의 palette_transpose_flag는 주석 (16-2)에서의 라인-충전된 텍스트에 의해 표시된 바와 같이 삭제된다. 신택스 엘리먼트 num_copy_pixel_line은 주석(16-3)에 의해 표시된 바와 같이 통합된다. num_copy_pixel_line 라인들 내의 샘플들의 팔레트 인덱스들은 주석 (16-4)에 의해 표시된 바와 같이 -1로서 할당된다.
num_copy_pixel_line이 짝수일 경우, 도 10a에 도시된 바와 같이, 최초 법선 라인에 대한 좌측-우측 스캔(left-to-right scan)을 이용하는 것이 당연하다. 그러나, num_copy_pixel_line이 홀수일 경우, 선택하기 위한 2 개의 타입들의 스캔들이 있다. 하나는 도 10b에 도시된 바와 같이 최초 법선 라인에 대한 좌측-우측 스캔이고, 다른 것은 도 10c에 도시된 바와 같이 최초 법선 라인에 대한 우측-좌측 스캔이다.
도 10b에서, 그것은 횡단 스캔을 하향으로 이동시키거나, 최초 법선 라인으로부터의 횡단을 이용하는 것과 같다. 도 10c에서, 그것은 현재의 CU에서의 최초 샘플로부터 횡단 스캔을 이용하고 최초 num_copy_pixel_line 라인들에 대한 스캔을 스킵하는 것과 같다. 표들 13 내지 16에서는, 도 10c에서의 스캔이 이용된다. 신택스 테이블은 도 10b에서의 스캔에 대하여 이에 따라 수정될 수 있다.
방법 6: 표 17은 도 10b에서의 스캔에 대한 팔레트 코딩을 위한 예시적인 신택스 테이블을 예시한다.
표 17
Figure pct00025
Figure pct00026
Figure pct00027
표 17에서, 신택스 엘리먼트, num_copy_pixel_line은 주석 (17-1)에 의해 표시된 바와 같이 모든 신택스들의 전방에 통합된다. num_copy_pixel_line이 nCbS(즉, CU 폭 또는 CU 높이)와 동일할 경우, 신택스 palette_transpose_flag는 주석 (17-2)에 의해 표시된 바와 같이 통합된다. 전체 CU의 팔레트 인덱스들은 주석 (17-3)에 의해 표시된 바와 같이 -1로서 할당되고, 이것은 픽셀 값들이 이웃하는 CU로부터 복사된다는 것을 표시한다. num_copy_pixel_line이 0과 동일하지 않고 MaxPaletteIndex가 0보다 더 크지 않을 경우(예컨대, MaxPaletteIndex는 0과 동일함), 신택스 palette_transpose_flag는 주석 (17-4)에 의해 표시된 바와 같이 통합된다. num_copy_pixel_line 라인들 내의 샘플들의 팔레트 인덱스들은 주석 (17-5)에 의해 표시된 바와 같이 -1로 할당된다. PaletteScanPos는 주석 (17-6)에 의해 표시된 바와 같이 0으로 재설정된다. PaletteScanPos가 재설정되므로, 실제적인 샘플 인덱스들은 주석 (17-7 및 17-10 내지 17-12)에 의해 표시된 바와 같이, num_copy_pixel_line*nCbS만큼 증가될 필요가 있다. 수직 위치는 주석 (17-8, 17-9, 및 17-13)에 의해 표시된 바와 같이, num_copy_pixel_line만큼 증가될 필요가 있다.
변수 AdjustedMaxPaletteIndex는 다음과 같이 유도된다:
Figure pct00028
변수 adjustedRefPaletteIndex는 다음과 같이 유도된다:
Figure pct00029
위에서 언급된 방법 3 내지 방법 6에서, num _copy_pixel_line의 시그널링은 현존하는 HEVC SCC 사양에서 palette_run 신택스 엘리먼트들 및 컨텍스트를 이용함으로써 또한 구성될 수 있다는 것에 주목한다. 예를 들어, 그것은 표 18에 도시된 바와 같이 시그널링될 수 있다.
표 18
Figure pct00030
표 18에서는, 상부 신택스에 의하여, 디코딩된 copy_pixel_line_length는 의미론적으로 픽셀 복사 라인들의 수일 수 있다. 이 코딩된 엘리먼트의 최대 값은 블록 높이-1이다.
디코딩된 copy_pixel_line 길이는 또한, 실제적으로 픽셀 복사 모드를 이용하는 샘플들의 수일 수 있고, 픽셀 복사 라인들의 수는 copy_pixel_line 길이/block_width로서 유도된다. 이 방법에서, 적합성 제약은 그것이 block_width의 배수가 되어야 하도록, copy_pixel_line 길이에 부과된다는 것에 주목한다.
방법 7: 이 방법에서, 블록이 현재의 CU 외부로부터 픽셀 복사 모드로 시작되는지 여부의 표시와, 픽셀 복사 모드를 이용하는 라인들의 수(샘플들의 수)는 수정된 디코딩 프로세스를 갖는 현재의 신택스 구조를 이용하여 시그널링된다. 예를 들어, 이것은 다음에 의해 달성될 수 있다:
● 블록에서 최초 샘플에 대한 상부-복사 런 모드를 허용하는 것. 이것은 신택스 엘리먼트 palette_run_type_flag[0][0]를 이용함으로써 표시된다. palette_run_type_flag[0][0]가 1일 경우, 다음의 라인들은 시그널링된 라인들의 수로 샘플들을 충전하기 위하여 픽셀 복사를 이용한다. palette_run_type_flag[0][0]가 0일 경우, 잔여 신택스 시그널링은 현재의 신택스 구조와 동일하게 유지된다.
● palette_run_type_flag[0][0]가 1일 때, 픽셀 복사를 이용하는 라인들의 수는 팔레트 런 길이를 시그널링하기 위한 동일한 신택스 엘리먼트들을 이용하여 시그널링된다. 팔레트 런 길이 신택스를 이용하여 라인들의 수를 시그널링하기 위한 2 개의 방법들이 있다.
○ 픽셀 복사 모드에 대한 디코딩된 팔레트 런 길이 R은 (샘플들의 수가 아니라) 라인들의 수를 의미론적으로 의미한다. 그러므로, 픽셀 복사의 실제적인 런은 수평 스캔에 대한 디코딩된 값 R*block_width, 또는 수직 스캔에 대한 R*block_height이다. 이 디코딩된 R의 최대 값은 블록 높이(또는 폭)이어야 한다.
○ 다른 방법은 디코딩된 팔레트 런 길이 R이 실제적인 픽셀 복사 런이라는 것이다. 이 방법은 픽셀 복사의 런에 대한 시맨틱 및 디코딩 프로세스를 변경하는 것을 요구하지 않는다.
이 방볍에 대하여, 적합성 제약은 그것이 block_width의 배수가 되어야 하도록, 디코딩된 값 R에 대하여 부과되어야 한다는 것에 주목한다.
● palette_run_type_flag[0][0]가 1일 때, 그리고 픽셀 복사 라인들 후에, 샘플들의 다음 라인은 상부-복사 런 모드를 이용할 수 없다. 파싱 기준은 이 라인에 대한 run_type 플래그를 파싱하지 않는 것으로 이 조건에 따라 수정된다.
● palette_run_type_flag[0][0]가 0일 때, 최초 라인에서의 잔여 샘플들은 상부-복사 런 모드를 이용할 수 없다. 파싱 기준은 이 샘플들에 대한 run_type 플래그를 파싱하지 않는 것으로 이 조건에 따라 수정된다.
표 19는 이 방법에 따라 팔레트 코딩을 위한 예시적인 신택스 테이블을 예시한다. 픽셀 복사 모드에 대한 "팔레트 런 길이 R"의 코딩은 (샘플들의 수가 아니라) 라인들의 수를 의미론적으로 의미한다.
표 19
Figure pct00031
Figure pct00032
표 19에서, 신택스 엘리먼트, palette_transpose_flag는 MaxPaletteIndex가 0과 동일할 때에도 시그널링될 필요가 있으므로, 신택스는 테스트 "if(MaxPaletteIndex > 0)" 외부에서 (주석 (19-1)에 도시된 바와 같이) 통합된다. 동시에, 신택스 엘리먼트, 테스트 "if(MaxPaletteIndex > 0)" 내부의 palette_transpose_flag는 주석 (19-2)에서의 라인-충전된 텍스트에 의해 표시된 바와 같이 삭제된다. 전체 CU의 팔레트 인덱스들은 주석 (19-3)에 의해 표시된 바와 같이 -1로 먼저 재설정되고, 이것은 픽셀 값들이 이웃하는 CU로부터 복사된다는 것을 표시한다. 최초 샘플(PaletteScanPos == 0)에 대한 palette_run_type_flag 및 paletteRun은 num_copy_pixel_line을 표시하기 위하여 이용된다. 주석 (19-5)에 의해 표시된 바와 같이, 최초 샘플에 대하여, palette_run_type_flag가 COPY_ABOVE_MODE와 동일할 경우, maxPaletteRun은 주석 (19-4)에 의해 표시된 바와 같이 nCbS -1과 동일하게 설정되고, num_copy_pixel_line은 디코딩된 paletteRun과 동일하다. 그렇지 않을 경우, num_copy_pixel_line은 0으로 설정된다.
표 20은 이 방법에 따라 팔레트 코딩을 위한 또 다른 예시적인 신택스 테이블을 예시한다. 픽셀 복사 모드에 대한 "팔레트 런 길이 R"의 코딩은 실제적인 런 길이이고, 적합성 제약은 R이 CU_width의 배수가 되어야 하도록 부과된다.
표 20
Figure pct00033
Figure pct00034
표 20에서, 신택스 엘리먼트, palette_transpose_flag는 MaxPaletteIndex가 0과 동일할 때에도 시그널링될 필요가 있으므로, 신택스는 테스트 "if(MaxPaletteIndex > 0)" 외부에서 (주석 (20-1)에 도시된 바와 같이) 통합된다. 동시에, 신택스 엘리먼트, 테스트 "if(MaxPaletteIndex > 0)" 내부의 palette_transpose_flag는 주석 (20-2)에서의 라인-충전된 텍스트에 의해 표시된 바와 같이 삭제된다. 전체 CU의 팔레트 인덱스들은 주석 (20-3)에 의해 표시된 바와 같이 -1로 먼저 재설정되고, 이것은 픽셀 값들이 이웃하는 CU로부터 복사된다는 것을 표시한다. 최초 샘플(PaletteScanPos == 0)에 대한 palette_run_type_flag 및 paletteRun은 num_copy_pixel_line을 표시하기 위하여 이용된다. 주석 (20-4)에 의해 표시된 바와 같이, 최초 샘플에 대하여, palette_run_type_flag가 COPY_ABOVE_MODE와 동일할 경우, num_copy_pixel_line은 디코딩된 paletteRun/nCbs와 동일하다. 이 상황에서, 적합성 제약은 그것이 nCbs의 배수가 되어야 하도록, paletteRun에 부과된다는 것에 주목한다. 그렇지 않을 경우(즉, palette_run_type_flag가 COPY_ABOVE_MODE와 동일하지 않음), num_copy_pixel_line은 0으로 설정된다.
방법 8: 이 방법에 따르면, num_copy_pixel_line = 0 또는 CU_width만이 테스트된다. 팔레트 모드에서의 숏 커트(short cut)는 새로운 신택스 엘리먼트, pred_from_neighboring_pixels를 도입함으로써 제공된다. pred_from_neighboring_pixels가 1일 경우, palette_transpose_flag가 시그널링된다.
pred_from_neighboring_pixels가 1이고, palette_transpose_flag가 0일 경우, 모든 샘플들은 상부 CU의 픽셀들로부터 예측된다. pred_from_neighboring_pixels가 1이고, palette_transpose_flag가 1일 경우, 모든 샘플들은 좌측 CU의 픽셀들로부터 예측된다. 이웃하는 픽셀들이 이용불가능할 경우, 대체 픽셀들을 생성하기 위한 2 개의 방법들이 있다. 제 1 접근법에 따르면, 인트라 예측 경계 픽셀 생성 방법이 이용될 수 있다. 그것은 잔차 코딩 없는 수평 또는 수직 인트라 예측과 같다. 제 2 접근법에 따르면, 0과 동일한 팔레트 인덱스를 갖는 컬러가 그 대신에 이용된다. 현재의 CU의 팔레트 테이블이 코딩되지 않을 경우(예컨대, CU_width와 동일한 num_copy_pixel_line), 팔레트 예측자 테이블에서의 최초 팔레트가 그 대신에 이용된다.
표 21은 이 방법에 따라 팔레트 코딩을 위한 예시적인 신택스 테이블을 예시한다.
표 21
Figure pct00035
표 21에서, 신택스 엘리먼트, pred_from_neighboring_pixels 신택스는 주석 (21-1)에 의해 표시된 바와 같이 통합된다. pred_from_neighboring_pixels가 참(true)일 경우, 주석(21-2)에 의해 표시된 바와 같이, palette_transpose_flag가 통합되고 전체 CU의 팔레트 인덱스들은 -1로 설정된다.
방법 3 내지 방법 8에서, 하나의 palette_transpose_flag를 시그널링하는 것이 시그널링된다. palette_transpose_flag가 0과 동일할 경우, 수직 픽셀 복사 모드가 먼저 이용되고, 그 다음으로, 인덱스 수평 스캔이 이용된다. 그렇지 않을 경우, 수평 복사 픽셀이 먼저 이용되고, 그 다음으로, 인덱스 수직 스캔이 이용된다.
대안적으로, palette_copy_pixel_transpose_flag 및 palette_scan_transpose_flag와 같은 2 개의 전치 플래그들이 시그널링될 수 있다. Palette_copy_pixel_transpose_flag는 이웃하는 CU로부터의 픽셀 복사 모드의 방향을 표시한다. Palette_scan_transpose_flag는 팔레트 스캔의 방향을 표시한다. 예를 들어, 0과 동일한 palette_copy_pixel_transpose_flag는 상부 CU로부터의 픽셀 복사를 의미하고, 1과 동일한 palette_copy_pixel_transpose_flag는 좌측 CU로부트의 픽셀 복사 모드를 의미한다. 0과 동일한 Palette_scan_transpose_flag는 수평 스캔이 이용된다는 것을 의미하고, 1은 수직 스캔이 이용된다는 것을 의미한다.
예를 들어, 도 11a에서, palette_copy_pixel_transpose_flag는 0이고, palette_scan_transpose_flag는 0이다. 도 11b에서, palette_copy_pixel_transpose_flag는 0이고, palette_scan_transpose_flag는 1이다. 도 11c에서, palette_copy_pixel_transpose_flag는 1이고, palette_scan_transpose_flag는 0이다.
반전된 횡단 스캔 및 회전된 횡단 스캔에 의한 CU에 걸친 예측
하나의 실시형태에 따르면, CU에 걸친 예측은 반전된 횡단 스캔 및 회전된 횡단 스캔으로 적용될 수 있다. 도 12a는 반전된 횡단 스캔에 의한 CU에 걸친 예측의 예를 예시하고, 도 12b는 회전된 횡단 스캔에 의한 CU에 걸친 예측의 예를 예시한다. 양자의 스캔들에 대한 정상 인덱스 맵 코딩의 스캔 위치는 0으로부터 시작하고, nCbS*nCbS - num_copy_pixel_line*nCbS - 1에서 종료된다. nCbS*nCbS - num_copy_pixel_line*nCbS 이상인 샘플 위치들을 갖는 잔여 샘플들에 대하여, PaletteIndexMap[xC][yC]는 -1과 동일하게 설정되고, 이것은 그 픽셀 값이 이웃하는 픽셀들과 동일하다는 것을 의미한다.
num _copy_pixel_line에 대한 컨텍스트 형성 및 2진화
신택스 엘리먼트, num_copy_pixel_line은 차수-K(order-K)를 갖는 지수-골롬(Exponential-Golomb) 코드(EG-K 코드), 차수-K를 갖는 절단된 지수-골롬 코드(절단된 EG-K 코드), N-비트 절단된 1진 코드 + EG-K 코드, 또는 (palette_run_msb_id_plus1 및 palette_run_refinement_bits로 2진화된) 팔레트 런에서 이용된 동일한 2진화 방법을 이용하여 2진화(binarize)될 수 있다.
컨텍스트 빈들은 num_copy_pixel_line을 코딩하기 위하여 이용될 수 있다. 예를 들어, 우리는 num_copy_pixel_line에 대한 팔레트 런에서 이용된 동일한 2진화 방법을 이용할 수 있다. palette_run_msb_id_plus1의 최초 N 비트들은 컨텍스트 코딩된 빈(bin)들을 이용할 수 있다. 예를 들어, N은 3일 수 있다. 잔여 빈들은 우회 빈들에서 코딩된다. 컨텍스트들은 팔레트 런 코딩과 공유될 수 있다. 예를 들어, 컨텍스트들은 확장된 상부-복사 런 모드와 공유될 수 있다.
num_copy_pixel_line이 CU_width 및 0과 동일할 확률들은 num_copy_pixel_line이 다른 수들일 확률보다 더 크므로, 코드 2진화는 CU_width와 동일한 num_copy_pixel_line의 코드워드를 감소시키기 위하여 수정된다. 예를 들어, CU_width의 값은 2진화를 위한 코드워드 테이블에서 수 P(예컨대, 1) 전에 삽입될 수 있다. P 이상인 num_copy_pixel_line의 값은 인코더 측에서 1만큼 증가될 것이다. 디코더 측에서는, 파싱된 코드워드가 P일 경우, 그것은 num_copy_pixel_line이 CU_width와 동일하다는 것을 의미한다. 파싱된 코드워드가 P보다 더 작을 경우, num_copy_pixel_line은 파싱된 코드워드와 동일하다. 파싱된 코드워드가 P보다 더 클 경우, num_copy_pixel_line은 파싱된 코드워드 마이너스(minus) 1과 동일하다.
또 다른 실시형태에서, 2 개의 추가적인 비트들은 num_copy_pixel_line이 0, CU_width, 또는 다른 수인지 여부를 표시하기 위하여 이용된다. 예를 들어, "0"는 num_copy_pixel_line이 0과 동일하다는 것을 의미하고, "10"은 num_copy_pixel_line이 CU_width와 동일하다는 것을 의미하고, "11 + 코드워드-L"은 num_copy_pixel_line이 L+1과 동일하다는 것을 의미한다.
또 다른 실시형태에서, 2 개의 추가적인 비트들은 num_copy_pixel_line이 0, CU_width, 또는 다른 수인지 여부를 표시하기 위하여 이용된다. 예를 들어, "0"는 num_copy_pixel_line이 CU_width와 동일하다는 것을 의미하고, "10"은 num_copy_pixel_line이 0과 동일하다는 것을 의미하고, "11 + 코드워드-L"은 num_copy_pixel_line이 L+1과 동일하다는 것을 의미한다.
CU에 걸친 예측 섹션에서 언급된 방법 4 내지 방법 7에 대하여, num_copy_pixel_line은 팔레트 테이블 코딩 후에 시그널링된다. num_copy_pixel_line의 2진화는 팔레트 테이블 코딩의 디코딩된 정보에 따라 수정될 수 있다. 예를 들어, NumPredictedPaletteEntries 및 num_signaled_palette_entries가 모두 0일 경우, 그것은 샘플들의 적어도 하나의 행/열이 정상 팔레트 모드로 코딩된다는 것을 의미한다. 그러므로, num_copy_pixel_line은 CU_width와 동일하지 않아야 한다. 따라서, num_copy_pixel_line의 코드워드 범위는 0으로부터 (CU_width -1)까지인 것으로 제한된다. 예를 들어, 차수-K를 갖는 절단된 지수-골롬 코드(절단된 EG-K 코드), N-비트 절단된 1진 코드 + EG-K 코드, 또는 팔레트 런에서 이용된 동일한 2진화 방법이 num_copy_pixel_line을 코딩하기 위하여 이용될 경우, cMax, MaxPaletteRun, 또는 최대 가능한 값은 CU_width - 1인 것으로 설정된다. 팔레트 런을 위하여 이용된 2진화 방법은 팔레트 런을 palette_run_msb_id_plus1 및 palette_run_refinement_bits로 2진화할 것이다.
num _copy_pixel_line을 결정하기 위한 검색 방법
또 다른 실시형태에서는, 픽셀-복사 라인들의 수(즉, num_copy_pixel_line)를 결정하기 위한 검색 방법이 개시되어 있다.
방법 1: 인코더 측에서는, num_copy_pixel_line의 값이 결정된다. 최초 num_copy_pixel_line 열들/행들은 이웃하는 픽셀들로부터 예측된다. 잔여 샘플들은 나머지 샘플들 및 인덱스 맵에 대한 팔레트들을 유도하기 위하여 이용된다.
방법 2: 인코더 측에서는, 전체 CU의 샘플들이 팔레트들을 먼저 유도하기 위하여 이용된다. 이 팔레트 테이블에 따르면, 레이트-왜곡-최적화(rate-distortion-optimization; RDO) 프로세스는 num_copy_pixel_line의 최상의 값을 결정하기 위하여 이용될 수 있다. 보간(interpolation)은 상이한 num_copy_pixel_line의 비트 비용(bit cost)을 추정하기 위하여 이용될 수 있다. 예를 들어, num_copy_pixel_line = 0에 대한 비트 비용이 R0이고, CU_width가 16일 경우, num_copy_pixel_line = 3에 대한 비트 비용은 R0*(CU_width - 3)/CU_width(즉, 13/16*R0)과 동일하다.
num_copy_pixel_line이 결정된 후, 최초 num_copy_pixel_line 열들/행들은 이웃하는 픽셀들로부터 예측된다. 잔여 샘플들은 잔여 샘플들 및 인덱스 맵에 대한 팔레트들을 재-유도하기 위하여 이용된다.
이웃하는 CU로부터의 픽셀들의 라인-기반 복사
이전의 섹션에서, 이웃하는 CU로부터의 픽셀의 행-기반 복사는 팔레트 모드 코딩을 위하여 개시되어 있다. 픽셀 복사 행들의 수를 나타내는 신택스 엘리먼트, num_copy_pixel_row는 이웃하는 CU에서의 재구성된 픽셀들로부터 예측되어야 할 샘플들의 최초 num_copy_pixel_row 라인들을 표시하기 위하여 먼저 시그널링된다. 유사한 개념은 인터 모드, 인트라 모드, 및 인트라BC(IntraBC) 모드와 같은 다른 모드들에 적용될 수 있다.
하나의 실시형태에서, 이웃하는 CU로부터의 픽셀의 행-기반 복사는 인터 모드 및/또는 인트라 모드 PU 또는 CU에 적용된다. 신택스 엘리먼트, num_copy_pixel_row가 먼저 시그널링된다. num_copy_pixel_row가 0과 동일하지 않을 경우, 신택스 엘리먼트, copy_pixel_row_direction_flag는 픽셀 복사 행들의 방향을 표시하기 위하여 시그널링된다. copy_pixel_row_direction_flag가 0일 경우, num_copy_pixel_row는 상부 CU들에서의 재구성된 픽셀들로부터 예측되어야 할 샘플들의 최초 num_copy_pixel_row 행들을 표시한다. copy_pixel_row_direction_flag가 1일 경우, num_copy_pixel_row는 좌측 CU들에서의 재구성된 픽셀들로부터 예측되어야 할 샘플들의 최초 num_copy_pixel_row 열들을 표시한다. 예를 들어, 도 13은 인터 모드에서 코딩된 8x8 CU의 예를 예시한다. 이 CU의 num_copy_pixel_row의 값은 3이고, 이 CU의 copy_pixel_row_direction_flag는 0이다. 상부 3 개의 행들에서의 예측자들은 상부 CU들의 최후 행의 재구성된 픽셀 값들에 의해 대체된다. 나머지 픽셀들은 원래의 인터 모드에 의해 예측된다. 그것은 전체 CU/PU에 대한 인터 모드 예측을 수행하고, 그 다음으로, 최초 num_copy_pixel_row 행들 또는 열들을 이웃하는 픽셀들에 의해 대체하는 것과 유사하다.
인트라 예측 이웃하는 픽셀 구성은 이웃하는 참조 픽셀들을 생성하기 위하여 이용될 수 있다. 이웃하는 픽셀이 이용가능하지 않을 경우(예컨대, 픽처 경계 외부), 인트라 예측에서의 참조 픽셀 충전 방법은 이웃하는 참조 픽셀들을 생성하기 위하여 적용될 수 있다. 인트라 예측에서의 평탄화 필터(smoothing filter)는 적용될 수 있거나 턴-오프될 수 있다.
신택스 엘리먼트들, num_copy_pixel_row 및 copy_pixel_row_direction_flag는 CU-레벨 또는 PU-레벨에서 시그널링될 수 있다. Num_copy_pixel_row 및 copy_pixel_row_direction_flag는 CU 또는 PU의 전방에서 시그널링될 수 있거나, CU 또는 PU의 중간에서 시그널링될 수 있거나, 또는 CU 또는 PU의 종료부에서 시그널링될 수 있다. 예를 들어, num_copy_pixel_row 및 copy_pixel_row_direction_flag가 CU-레벨에서 시그널링되고 CU의 전방에서 시그널링될 경우, num_copy_pixel_row 및 copy_pixel_row_direction_flag는 part_mode 전에 시그널링될 수 있다. part_mode의 코드워드는 num_copy_pixel_row 및 copy_pixel_row_direction_flag의 값에 따라 적응적으로 변경될 수 있다. 예를 들어, copy_pixel_row_direction_flag가 0이고 num_copy_pixel_row이 CU_height/2 이상일 경우, PART_2NxN 및 PART_2NxnU는 유효하지 않다. part_mode의 코드워드 2진화는 수정된다. 예를 들어, PART_2NxN 및 PART_2NxnU가 제거될 경우, part_mode의 2진화는 표 22에 도시된다.
표 22
Figure pct00036
표 22에서, 라인-충전된 배경을 갖는 텍스트들은 삭제된 텍스트들에 대응한다. 또 다른 예에서, num_copy_pixel_row 및 copy_pixel_row_direction_flag가 CU-레벨에서 시그널링되고, CU의 종료부에서, 또는 CU의 중간에서 시그널링될 경우, num_copy_pixel_row 및 copy_pixel_row_direction_flag는 part_mode 후에 시그널링될 수 있다. part_mode가 수신된 후, num_copy_pixel_row 및 copy_pixel_row_direction_flag의 값은 한정될 수 있다. 예를 들어, part_mode가 PART_2NxN이고 copy_pixel_row_direction_flag가 0일 경우, num_copy_pixel_row의 값은 0으로부터 CU_height/2까지의 범위로 한정된다.
인트라 경계 참조 픽셀들
인트라 모드에서, num_copy_pixel_row가 0이 아닐 경우, 이웃하는 참조 픽셀들은 HEVC로부터 유도된 픽셀들과 동일할 수 있다. 그것은 PU에 대한 인트라 예측을 수행하고, 그 다음으로, 최초 몇몇 행들 또는 열들을 이웃하는 CU의 픽셀들에 의해 대체하는 것과 동일하다.
또 다른 실시형태에서, num_copy_pixel_row가 0이 아닐 경우, 이웃하는 참조 픽셀들의 위치들은 변경된다. 도 14 및 도 15는 이 실시형태에 따라 이웃하는 참조 픽셀들의 위치들을 변경하는 예들을 예시한다. 도 14 및 도 15에서, num_copy_pixel_row는 3이고, copy_pixel_row_direction_flag는 0이다. 상부 참조 픽셀들 및 상부-좌측 참조 픽셀들은 제 3 행으로 시프트(shift)된다. 도 14에서, 상부-우측 참조 픽셀들은 상부-우측 CU로부터 복사된다. 도 15에서, 상부-우측 참조 픽셀들은 제 3 행의 가장-우측 픽셀들로부터 복사된다.
이웃하는 CU로부터 예측된 영역에 대한 잔차 코딩
하나의 실시형태에 따르면, num_copy_pixel_row가 N이고 copy_pixel_row_direction_flag가 0일 경우, 상부 N 행들은 이웃하는 CU로부터 예측된다. 상부 N 행들의 잔차는 0인 것으로 한정될 수 있다. 또 다른 실시형태에 따르면, 상부 N 행들의 잔차가 시그널링될 수 있다. 인터 모드에 대하여, HEVC 잔차 쿼드-트리(residual quad-tree)가 적용된다.
num _copy_pixel_row에 대한 컨텍스트 형성 및 2진화
신택스 엘리먼트, num_copy_pixel_row는 차수-K(order-K)를 갖는 지수-골롬(Exponential-Golomb) 코드(EG-K 코드), 차수-K를 갖는 절단된 지수-골롬 코드(절단된 EG-K 코드), N-비트 절단된 1진 코드 + EG-K 코드, 또는 (즉, palette_run_msb_id_plus1 및 palette_run_refinement_bits로 2진화되는) 팔레트 런에서 이용된 동일한 2진화 방법을 이용하여 2진화될 수 있다.
컨텍스트 빈들은 num_copy_pixel_row를 코딩하기 위하여 이용될 수 있다. 예를 들어, 팔레트 런 코딩에서의 num_copy_pixel_row에 대한 그것과 동일한 2진화 방법이 이용될 수 있다. palette_run_msb_id_plus1의 최초 N 비트들은 컨텍스트 코딩된 빈(bin)들을 이용할 수 있다. 예를 들어, N은 3일 수 있다. 나머지 빈들은 우회 빈들에서 코딩된다. 컨텍스트들은 팔레트 런 코딩과 공유될 수 있다. 예를 들어, 컨텍스트들은 확장된 상부-복사 런 모드와 공유될 수 있다.
num_copy_pixel_row가 CU_width 및 0과 동일할 확률들은 num_copy_pixel_row가 다른 수들일 확률보다 더 높으므로, 코드 2진화는 CU_width와 동일한 num_copy_pixel_row의 코드워드를 감소시키기 위하여 수정된다. 예를 들어, CU_width에 대한 값은 코드워드 테이블에서 수 M(예컨대, 1) 전에 삽입될 수 있다. M 이상인 num_copy_pixel_row의 값은 인코더 측에서 1만큼 증가될 것이다. 디코더 측에서는, 파싱된 코드워드가 M일 경우, 그것은 num_copy_pixel_row가 CU_width와 동일하다는 것을 의미한다. 파싱된 코드워드가 M보다 더 작을 경우, num_copy_pixel_row는 파싱된 코드워드와 동일하다. 파싱된 코드워드가 M보다 더 클 경우, num_copy_pixel_row는 (파싱된 코드워드 마이너스(-) 1)과 동일하다.
또 다른 실시형태에서, 2 개의 추가적인 비트들은 num_copy_pixel_row가 0, CU_width, 또는 다른 수인지 여부를 표시하기 위하여 이용된다. 예를 들어, "0"는 num_copy_pixel_row가 0과 동일하다는 것을 의미하고, "10"은 num_copy_pixel_row가 CU_width와 동일하다는 것을 의미하고, "11 + 코드워드-L"은 num_copy_pixel_row가 L+1과 동일하다는 것을 의미한다. 또 다른 예에서, "0"는 num_copy_pixel_row가 CU_width와 동일하다는 것을 의미하고, "10"은 num_copy_pixel_row가 0과 동일하다는 것을 의미하고, "11 + 코드워드-L"은 num_copy_pixel_row가 L+1과 동일하다는 것을 의미한다.
CU에 걸친 예측 섹션에서 언급된 방법 4 내지 방법 7에 대하여, num_copy_pixel_row는 팔레트 테이블 코딩 후에 시그널링될 수 있다. num_copy_pixel_row의 2진화는 팔레트 테이블 코딩의 디코딩된 정보에 따라 수정될 수 있다. 예를 들어, NumPredictedPaletteEntries 및 num_signaled_palette_entries가 모두 0일 경우, 그것은 샘플들의 적어도 하나의 행/열이 정상 팔레트 모드로 코딩된다는 것을 의미한다. num_copy_pixel_row는 CU_width와 동일하지 않아야 한다. 그러므로, num_copy_pixel_row의 코드워드 범위는 0으로부터 (CU_width -1)까지인 것으로 제한된다. 예를 들어, 차수-K를 갖는 절단된 지수-골롬 코드(절단된 EG-K 코드), N-비트 절단된 1진 코드 + EG-K 코드, 또는 (즉, palette_run_msb_id_plus1 및 palette_run_refinement_bits로 2진화되는) 팔레트 런에서 이용된 동일한 2진화 방법이 num_copy_pixel_row를 코딩하기 위하여 이용될 경우, cMax, MaxPaletteRun, 또는 최대 가능한 값은 CU_width - 1인 것으로 설정된다.
이 섹션에서, 위에서 언급된 CU_width는 이웃하는 방법으로부터의 픽셀의 CU-레벨 또는 PU-레벨 행-기반 복사을 위하여, CU_height, PU_width, 또는 PU_height에 의해 대체될 수 있다.
인덱스들의 수 코딩
SCM-4.0 팔레트 인덱스 맵 코딩에서는, 인덱스들의 수가 먼저 시그널링된다. 인덱스들의 수를 시그널링하기 위하여, 변수 "인덱스들의 수-팔레트 크기"가 먼저 유도된다. 그 다음으로, 맵핑 프로세스는 "인덱스들의 수-팔레트 크기"를 "맵핑된 값"으로 맵핑하기 위하여 수행된다. 맵핑된 값은 "coeff_abs_level_remaining"에 대한 것과 같은 동일한 2진화 방법으로 2진화되고 시그널링된다. 프리픽스(prefix) 부분은 절단된 라이스 코드(Tunrated Rice code)에 의해 표현된다. 서픽스(suffix) 부분은 지수-골롬 코드에 의해 표현된다. 이 2진화 프로세스는 입력 cParam을 가지는 것으로 고려될 수 있고, cParam은 (2+indexMax/6)으로 설정된다. 그러나, indexMax/6은 제산(division) 또는 룩업 테이블(lookup table) 연산을 요구한다. 그러므로, 본 발명의 실시형태에 따르면, cParam은 (2+indexMax/M)로 설정되고, M은 2의 제곱(power-of-2) 정수(예컨대, 2n 및 n은 정수)이다. 그러므로, indexMax/M은 indexMax를 n 비트들만큼 우측-시프트(right-shift)함으로써 구현될 수 있다. 예를 들어, cParam은, indexMax를 각각 2 또는 3 비트들만큼 우측-시프트함으로써 구현될 수 있는 (2+indexMax/4) 또는 (2+indexMax/8)인 것으로 설정된다.
팔레트 인덱스 맵을 인코딩/ 파싱하기 전의 모든 이스케이프 컬러들의 그룹화
현재의 HEVC SCC 사양 또는 이전의 버전들에서, 팔레트 코딩에서의 이스케이프 픽셀들의 값들은 인덱스 맵의 코딩 동안에 다른 규칙적인 인덱스들과의 인터리빙된 방식으로 시그널링되거나, 또는 픽셀들 값들이 인덱스 맵의 코딩이 완료된 후에 함께 그룹화된다. 본 발명의 하나의 실시형태에 따르면, 모든 이스케이프 픽셀 값들은 인덱스 맵 코딩의 전방에서 그룹화된다.
현재의 코딩 블록 내의 상이한 로케이션들에서 N 이스케이프 픽셀들이 있는 것으로 가정하고, 여기서, N은 양의 정수이다. 하나의 실시형태에서, 이 이스케이프 픽셀들의 모든 컬러 값들은 이 코딩 블록의 팔레트 인덱스 맵을 인코딩/디코딩하기 전에 함께 인코딩/디코딩된다. 이러한 방법으로, 인덱스가 이스케이프 인덱스로서 디코딩될 때, 그 대응하는 픽셀 값은 더 이상 디코딩될 필요가 없다. 이스케이프 픽셀들의 일부는 동일한 컬러 값을 가질 수도 있다는 것에 주목한다. 하나의 실시형태에서, 각각의 이스케이프 픽셀 발생의 픽셀 값은 비트스트림 내로 여전히 기입된다.
도 16에서, N = 5인 이 방법의 실시형태에 따라 이스케이프 컬러들을 디코딩하는 예로서, 여기서, 각각의 이스케이프 픽셀 발생의 픽셀 값은 여전히 비트스트림으로 기입된다. 이 예에서는, 수평 횡단 스캔이 이용된다. 각각의 이스케이프 픽셀은 디코딩 순서에 따라, 디코딩된 테이블에서 그 대응하는 컬러를 발견할 수 있다.
또 다른 실시형태에서, 비-복제된 컬러 값들만이 비트스트림 내로 기입되고, 그 기입된 컬러들의 인덱스는 각각의 이스케이프 픽셀 발생에 대하여 시그널링된다.
도 17은 N = 5인 이 방법의 실시형태에 따라 이스케이프 컬러들을 디코딩하는 예를 예시하고, 여기서, 비-복제된 컬러 값들만이 비트스트림 내로 기입된다. 이 예에서는, 수평 횡단 스캔이 이용된다. 비-복제된 컬러들만이 디코딩되고(예컨대, M = 3), 각각의 이스케이프 픽셀 발생에 대한 이 컬러 테이블에서의 인덱스가 시그널링된다(예컨대, N = 5). 각각의 이스케이프 픽셀은 디코딩 순서에 따라, 디코딩된 테이블에서 그 대응하는 컬러를 발견할 수 있다.
이스케이프 컬러 시그널링의 종료
하나의 실시형태에서, 인코딩된/디코딩된 이스케이프 컬러들의 수가 시그널링된다. 예를 들어, 각각의 이스케이프 컬러가 인코딩되거나 디코딩된 후, 1-비트 플래그 "end_of_escape_color_flag"는 이것이 코딩되거나 디코딩되어야 할 최후 컬러인지를 시그널링하기 위하여 이용된다. 디코딩된 end_of_escape_color_flag가 1일 때, 더 많은 이스케이프 컬러들이 디코딩될 필요가 없다. 현재의 코딩 블록에서 N 이스케이프 컬러들이 있는 것으로 가정하면, 최후 M 픽셀들은 동일한 컬러 값을 가지고, 여기서, M 및 N은 정수들이고, M <= N이다. 또 다른 실시형태에서는, 이 M 픽셀들의 하나의 컬러 값만이 전송될 필요가 있고, end_of_escape_color_flag는 1로 설정된다. 최후 (M-1) 이스케이프 픽셀들은 최후 디코딩된 이스케이프 컬러 값을 공유하기 위하여 추론된다. 이 방법의 예는 N = 5 및 M = 3에 대하여 표 23에 도시되어 있다.
표 23
Figure pct00037
또 다른 실시형태에서, 이스케이프 컬러들의 총 수는 컬러 값들을 인코딩/디코딩하기 전에 명시적으로 시그널링된다. 또한, end_of_escape_color_flag는 우회 코딩될 수 있거나 컨텍스트 코딩될 수 있다.
코딩 블록에서 허용된 이스케이프 컬러들의 총 수에 관한 제약
디코딩된 이스케이프 컬러들의 총 수는 시퀀스 레벨, 픽처 레벨, 또는 슬라이스 레벨에서와 같은 높은 레벨 헤더에서 최대 허용된 수를 설정함으로써 제약될 수 있다.
이 최대 수에 도달될 경우, 잔여 이스케이프 픽셀들은 하나의 실시형태에 따라 최후 디코딩된 이스케이프 컬러의 값을 공유하기 위하여 추론된다. 또 다른 실시형태에서, 잔여 이스케이프 픽셀들은 가장 빈번하게 이용된 컬러와 같은 특정 디코딩된 이스케이프 컬러의 값을 공유하기 위하여 추론된다.
CU 외부로부터의 픽셀들의 복사
SCM 3.0에서, 컬러 인덱스 값 범위는 팔레트 크기 및 이스케이프 플래그에 의존한다. 이스케이프 플래그가 오프일 경우, 최대 인덱스 값은 팔레트 크기와 동일하다. 이스케이프 플래그가 온일 경우, 최대 인덱스 값은 (팔레트 크기 + 1)과 동일하다. 최대 인덱스 값이 N과 동일할 경우, 가능한 인덱스 값 범위는 0으로부터 (N-1)까지이다. SCM 3.0에서는, 0과 동일한 최대 인덱스 값이 금지된다. 최대 인덱스 값이 1과 동일할 경우, CU에서의 모든 컬러 인덱스들은 0으로서 추론될 것이다. 그것은 하나의 가능한 인덱스 값만이 있을 경우에, 모든 컬러 인덱스들이 0이어야 하는 것을 가정한다.
이전의 개시내용에 따르면, 픽셀은 COPY_ABOVE에 의해 시그널링될 수 있다. 이 경우, 그것은 상부 픽셀들의 픽셀 인덱스들뿐만 아니라, 상부 픽셀들의 픽셀 값들을 복사할 것이다. 디코더는 팔레트를 참조하지 않으면서, 복사된 픽셀 값으로부터 COPY_ABOVE에서의 픽셀을 재구성할 수 있다. 이전의 개시내용에 따라, 상부 픽셀이 CU 경계에 걸쳐 있을 경우, N으로서 나타낸 이웃하는 CU의 이웃하는 구성된 픽셀(NCP들)에 대한 특수한 인덱스가 이전의 개시내용에 따라 할당된다. 픽셀이 COPY_ABOVE에 의해 시그널링될 때, 그것은 상부 픽셀의 픽셀 인덱스(N)뿐만 아니라, 도 18에서의 도트-충전된 영역에 의해 표시된 상부 픽셀의 픽셀 값을 복사할 것이고, 여기서, CU 경계(1810)가 도시되어 있다.
NCP들의 픽셀 값을 복사하는 방법에 기초하여, 제로/1 인덱스 값으로 팔레트-코딩된-CU를 핸들링하는 가정은 참이 아니다. 최소 인덱스 값이 0과 동일한 경우에 대하여, CU에서의 모든 픽셀은 도 19에 도시된 바와 같이, NCP들로부터 예측될 수 있다.
최대 인덱스 값이 1과 동일할 경우, 모든 컬러 인덱스들이 0인 것은 아닐 수도 있다. 도 20에 도시된 바와 같이, 픽셀들의 일부는 0일 수도 있고 픽셀들의 일부는 NCP로부터 예측될 수도 있다.
도 19 및 도 20에 도시된 예들에서는, SCM3.0에서 시그널링될 수 없는 대응하는 신택스가 없다. 따라서, 이 경우들을 시그널링하기 위한 새로운 신택스는 다음과 같이 개시되어 있다.
CU에 걸친 인덱스 예측을 위한 신택스 엘리먼트들
SCM3.0에서, 팔레트 코딩된 CU는 다음의 신택스를 포함한다:
● 1과 동일한 Palette_share_flag는, 팔레트 크기가 이전의 previousPaletteEntries와 동일하고 전체 팔레트 엔트리들이 이전의 팔레트 엔트리들과 동일하다는 것을 특정한다.
● 1과 동일한 Palette_transpose_flag는, 전치 프로세스가 현재의 CU의 연관된 팔레트 인덱스들에 적용된다는 것을 특정한다. 0과 동일한 Palette_transpose_flag는, 전치 프로세스가 현재의 CU의 연관된 팔레트 인덱스들에 적용되지 않는다는 것을 특정한다.
Palette_escape_val_present_flag는 이스케이프 코딩된 샘플 값을 특정한다.
Palette_prediction_run[ i ]는 다음의 예외들을 갖는 이전의 팔레트 previousPaletteEntries로부터의 현재의 재이용된, 그리고 다음의 재이용된 팔레트 엔트리들의 인덱스들 사이의 차이를 특정하고: 0과 동일한 palette_prediction_run은 현재 및 다음 재이용된 엔트리들의 인덱스들 사이의 차이가 1이라는 것을 표시하고, 1과 동일한 palette_prediction_run은 이전의 팔레트 previousPaletteEntries로부터의 더 많은 엔트리들이 재이용되지 않는다는 것을 표시한다.
Num _signaled_palette_entries는 현재의 코딩 유닛에 대하여 명시적으로 시그널링되는 팔레트에서 엔트리들의 수를 특정한다.
Palette_entries는 컬러 컴포넌트 cIdx에 대한 팔레트에서 i 번째 엘리먼트를 특정한다.
Palette_run_coding()은 인덱스 맵의 런 코딩 패턴을 특정한다.
CU에 걸친 인덱스 예측을 위한 신택스를 제공하기 위하여, 다음의 신택스 예들은 본 발명의 실시형태에 따라 개시되어 있다:
신택스 예 1: 새로운 플래그 all_pixel_from_ NCP _flag가 추가된다. all _pixel_from_NCP_flag가 오프일 경우, 다른 신택스는 SCM3.0과 동일하다. 최초 행에서, 복사 런 모드는 CU에 걸친 예측을 허용하기 위하여 시그널링될 수 있다. all_pixel_from_ NCP _flag가 온일 경우, 모든 픽셀들은 NCP들로부터 예측되도록 암시된다. Palette _transpose_flag는 좌측 NCP들 또는 상부 NCP들로부터의 예측을 암시하기 위하여 시그널링될 수 있다. 다른 예측 방향이 또한 시그널링될 수 있다. all_pixel_from_ NCP _flag가 온일 경우, palette_share_flag, palette_escape_val_present_flag, palette_prediction_run, num_signaled_palette_entries, palette_entries, 또는 palette_run_coding()을 시그널링하는 것은 스킵될 수 있다.
도 21은 상기 예에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다. 단계(2110)에서는, all_pixel_from_ NCP _flag가 1과 동일한지 여부가 테스트된다. 결과가 "예"일 경우, 단계(2130)가 수행된다. 결과가 "아니오"일 경우, 단계(2120)가 수행된다. 단계(2130)에서, palette_transpose_flag는 좌측 NCP들 또는 상부 NCP들로부터의 예측을 암시하기 위하여 시그널링된다. 단계(2120)에서, SCM3.0에 기초한 신택스는 CU에 걸친 인덱스 예측을 위하여 이용된다.
신택스 예 2: 새로운 플래그 any_pixel_from_ NCP _flag가 추가된다. any _pixel_from_NCP_flag가 오프일 경우, 다른 신택스는 SCM3.0과 동일하다. 최초 행에서, 복사 런 모드는 시그널링되지 않는다(CU에 걸친 예측 없음). any _pixel_from_NCP_flag가 온일 경우, 픽셀들의 부분들은 NCP들로부터 예측되도록 암시된다. 인코더는 palette_share_flag, palette_prediction_run, num_signaled_palette_entries, palette_escape_val_present_flag를 시그널링할 수 있고, 디코더는 정보에 기초하여 최대 인덱스 값을 계산할 수 있다. 최대 인덱스 값이 0과 동일할 경우, 모든 픽셀들은 NCP들로부터 예측되고, palette_run_coding()은 스킵될 수 있다. 최대 인덱스 값이 0보다 더 클 경우, 픽셀들의 일부는 NCP들로부터 예측되고, palette_run_coding()은 스킵될 수 있다.
도 22는 상기 예에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다. 단계(2210)에 도시된 바와 같이, any_pixel_from_ NCP _flag가 1과 동일한지 여부가 테스트된다. 결과가 "예"일 경우, 단계(2230)가 수행된다. 결과가 "아니오"일 경우, 단계(2220)가 수행된다. 단계(2220)에서, SCM3.0에 기초한 신택스는 CU에 걸친 예측 없는 인덱스 예측을 위하여 이용된다. 단계(2230)에서, palette_share_flag, palette_prediction_run, num_signaled_palette_entries, 및 palette_escape_val_present_flag를 포함하는 다양한 신택스 엘리먼트들이 시그널링된다. 디코더는 정보에 기초하여 최대 인덱스 값을 계산하고, 단계(2240)에서, 최대 인덱스 값이 0과 동일한지를 검사한다. 결과가 "예"일 경우, 단계(2260)가 수행된다. 결과가 "아니오"일 경우, 단계(2250)가 수행된다. 단계(2250)에서는, palette_transpose_flagpalette_run_coding()이 시그널링된다. 단계(2260)에서는, palette_transpose_flag가 시그널링되고, palette_run_coding()이 스킵된다(즉, 모든 픽셀들은 NCP들로부터 예측됨).
신택스 예 3: 새로운 플래그 any_pixel_from_ NCP _flag가 추가된다. any _pixel_from_NCP_flag가 오프일 경우, 다른 신택스는 SCM3.0에 대해 동일하다. 최초 행에서, 복사 런 모드는 시그널링되지 않는다(CU에 걸친 예측 없음). any _pixel_from_NCP_flag가 온일 경우, 픽셀들의 부분들은 NCP들로부터 예측되도록 암시된다. 인코더는 palette_share_flag, palette_prediction_run, num_signaled_palette_entries, palette_escape_val_present_flag를 시그널링할 수 있고, 디코더는 정보에 기초하여 최대 인덱스 값을 계산할 수 있다. 최대 인덱스 값이 0과 동일할 경우, 도 2에서와 같이, 모든 픽셀들은 NCP들로부터 예측되고, palette_run_coding()은 스킵될 수 있다. 그렇지 않을 경우, 다른 신택스는 SCM3.0에 대해 동일하다. 최초 행에서는, 복사 런 모드가 시그널링된다(CU에 걸친 예측). 최대 인덱스 값이 1과 동일할 경우, palette_run_coding()palette_transpose_flag는 스킵될 수 있다.
도 23은 상기 예에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 시그널링의 예시적인 플로우차트를 예시한다. 플로우차트는 최대 인덱스가 0이 아닐 경우(즉, 단계(2240)로부터의 "아니오" 경로)를 제외하고는, 도 22에서의 그것과 실질적으로 동일하다. 이 경우, SCM3.0에 따른 신택스는 단계(2310)에 도시된 바와 같이 CU에 걸친 예측을 위하여 이용된다.
신택스 예 4: 신택스 예 1에서의 "all_pixel_from_ NCP _flag" 및 신택스 예 2 또는 3에서의 "any_pixel_from_ NCP _flag"는 palette_prediction_run으로 조합될 수 있다. SCM3.0에서, palette_prediction_run은 런-길이 코딩이다. 최초 런(즉, palette_prediction_run[0])이 고정되거나 유도된 값과 동일할 경우, all_pixel_from_NCP_flag 또는 any_pixel_from_ NCP _flag는 온으로서 추론된다. 값은 0 또는 1일 수 있다.
신택스 예 5: 인코더는 도 24의 단계(2410)에 도시된 바와 같이, palette_share_flag, palette_prediction_run, 및 num _signaled_palette_entries를 시그널링할 수 있다. 그 다음으로, 팔레트 크기는 정보에 따라 유도될 수 있다.
팔레트 크기는 단계(2420)에 도시된 바와 같이, 그것이 0과 동일한지 여부를 결정하기 위하여 검사된다. 팔레트 크기가 0보다 더 클 경우(즉, 단계(2420)로부터의 "아니오" 경로), 다른 신택스는 단계(2430)에 도시된 바와 같이 SCM3.0과 동일하다. 최초 행에서, 복사 런 모드는 예측이 CU에 걸쳐 있는지 아닌지의 여부에 따라 시그널링될 수 있거나 시그널링되지 않을 수 있다.
팔레트 크기가 0과 동일할 경우(즉, 단계(2420)로부터의 "예" 경로), any_pixel_from_NCP_flag가 시그널링된다. any _pixel_from_ NCP _flag가 온인지 여부는 단계(2440)에서 검사된다. any _pixel_from_ NCP _flag가 오프일 경우(즉, 단계(2440)로부터의 "아니오" 경로), palette_escape_val_present_flag는 단계(2450)에 도시된 바와 같이 온으로서 추론되고, SCM3.0에 기초한 신택스는 CU에 걸친 예측 없는 인덱스 예측을 위하여 이용된다. any _pixel_from_ NCP _flag가 온일 경우, palette_escape_val_present_flag가 시그널링된다. any_pixel_from_NCP_flag가 온이고(즉, 단계(2440)로부터의 "예" 경로) palette_escape_val_present_flag가 오프일(즉, 단계(2460)로부터의 "아니오" 경로) 경우, 모든 픽셀들은 NCP들로부터 예측되고, palette_run_coding()은 단계(2470)에 도시된 바와 같이 스킵될 수 있다. any _pixel_from_ NCP _flag가 온이고(즉, 단계(2440)로부터의 "예" 경로) palette_escape_val_present_flag가 온일 경우, 픽셀들의 일부는 NCP들로부터 예측되고, palette_run_coding()은 단계(2480)에 도시된 바와 같이 시그널링될 수 있다.
신택스 예 6: 이 예는 any_pixel_from_ NCP _flag가 온이고(즉, 단계(2440)로부터의 "예" 경로) palette_escape_val_present_flag가 온인(즉, 단계(2460)로부터의 "예" 경로) 경우를 제외하고는, 신택스 예 5와 실질적으로 동일하다. 이 경우, 모든 픽셀들은 도 25의 단계(2510)에 도시된 바와 같이 이스케이프 인덱스이다.
신택스 예 7: 인코더는 도 26의 단계(2610)에 도시된 바와 같이, palette_share_flag, palette_prediction_run, num _signaled_palette_entries를 시그널링할 수 있다. 그 다음으로, 팔레트 크기는 정보에 따라 유도될 수 있다.
팔레트 크기는 그것이 0과 동일한지 여부를 결정하기 위하여 단계(2620)에서 검사된다. 팔레트 크기가 0과 동일할 경우(즉, 단계(2620)로부터의 "예"), all_pixel_from_ NCP _flag가 시그널링되고, all_pixel_from_ NCP _flag가 온인지 여부는 단계(2640)에서 검사된다. all _pixel_from_ NCP _flag가 온일 경우(즉, 단계(2640)로부터의 "예" 경로), 모든 픽셀들은 단계(2660)에 도시된 바와 같이 NCP들로부터 예측되도록 암시된다. 이 경우, palette_transpose_flag는 좌측 NCP들 또는 상부 NCP들로부터의 예측을 암시하기 위하여 시그널링될 수 있다. 다른 예측 방향이 또한 시그널링될 수 있다. 그렇지 않을 경우, 신택스는 단계(2650)에 도시된 바와 같이, SCM3.0에 대해 동일하다. 최초 행에서는, 복사 런 모드가 시그널링될 수 있다(즉, CU에 걸친 예측).
신택스 예 8: 신택스 예 8에서, 런 코딩은 도 27에서의 경우를 표시하기 위하여 시그널링될 수 있다. 도 27에서의 플로우차트는 도 26에서의 것과 유사하다. 그러나, 도 26에서의 단계(2630) 및 단계(2650)는 단계(2710) 및 단계(2720)에 의해 대체된다(즉, palette_escape_val_Present_flag, palette_transcope_flag, 및 palette_run_coding()을 시그널링함).
신택스 예 9: 인코더는 도 28a의 단계(2810)에 도시된 바와 같이, palette_share_flag, palette_reuse_flag(), num _signaled_palette_entries, palette_escape_val_present_flag를 시그널링할 수 있고, 디코더는 정보에 기초하여 최대 인덱스 값을 계산할 수 있다. 최대 인덱스 값이 0 또는 1과 동일할 경우(즉, 단계(2820)로부터의 "아니오" 경로), palette_run_coding()은 스킵될 수 있다. 최대 인덱스 값이 0과 동일할 경우(즉, 단계(2830)로부터의 "아니오" 경로), 모든 픽셀들은 단계(2850)에 도시된 바와 같이, NCP들로부터 예측된다. 최대 인덱스 값이 1보다 더 클 경우(즉, 단계(2820)로부터의 "예" 경로), palette_transpose_flag는 단계(2840)에 도시된 바와 같이, 좌측 NCP들 또는 상부 NCP들로부터의 예측을 암시하기 위하여 시그널링될 수 있다. 다른 예측 방향이 또한 시그널링될 수 있다. 최대 인덱스 값이 1과 동일할 경우(즉, 단계(2830)로부터의 "예" 경로), CU에서의 모든 컬러 인덱스들은 단계(2860)에 도시된 바와 같이, 0 또는 이스케이프로서 추론될 것이다.
신택스 예 10: 인코더는 도 28b의 단계(2812)에 도시된 바와 같이, palette_share_flag, palette_reuse_flag(), num _signaled_palette_entries, palette_escape_val_present_flag를 시그널링할 수 있고, 디코더는 정보에 기초하여 최대 인덱스 값을 계산할 수 있다. 최대 인덱스 값이 0과 동일할 경우(즉, 단계(2822)로부터의 "아니오" 경로), 모든 픽셀들은 단계(2832)에 도시된 바와 같이, NCP들로부터 예측된다. 최대 인덱스 값이 0보다 더 클 경우(즉, 단계(2822)로부터의 "예" 경로), palette_transpose_flag는 단계(2842)에 도시된 바와 같이, 좌측 NCP들 또는 상부 NCP들로부터의 예측을 암시하기 위하여 시그널링될 수 있다. 다른 예측 방향이 또한 시그널링될 수 있다. Palette _run_coding()은 스킵될 수 있다. 최대 인덱스 값이 0보다 더 클 경우, palette_transpose_flagpalette_run_coding()은 도 20에서와 같이 시그널링될 수 있다.
상기 신택스 예들에서, NCP들은 가장 근처의 상부 행 또는 가장 근처의 좌측 열일 수 있다. NCP들 라인의 수가 1보다 더 클 경우(예컨대, 2 개의 가장 근처의 상부 행들 또는 2 개의 가장 근처의 좌측 열들), 추가적인 시그널링은 어느 NCP들 라인이 예측을 위하여 이용되는지를 표시하기 위하여 필요하게 될 수도 있다. 신택스 예들에서의 "모든 픽셀들이 NCP들로부터 예측됨"의 경우에는, NCP들이 가장 근처의 상부 행 또는 가장 근처의 좌측 열로 제한될 수 있다.
특정 신택스 엘리먼트들은 본 발명의 실시형태들에 따라 CU에 걸친 인덱스 예측을 지원하기 위한 신택스 예들을 예시하기 위하여 이용되지만, 이 특정 신택스 엘리먼트들은 본 발명의 제한들로서 해석되지 않을 것이다. 당해 분야의 당업자는 본 발명의 사상으로부터 이탈하지 않으면서, CU에 걸친 인덱스 예측을 실시하기 위하여 다른 신택스 엘리먼트들 및 시맨틱들을 이용할 수도 있다.
CU에 걸친 인덱스 예측을 인에이블하기 위한 신택스 엘리먼트
CU에 걸친 인덱스 예측을 위하여, 인에이블 플래그(enabling flag)는 PPS(픽처 파라미터 세트) 또는 SPS(시퀀스 파라미터 세트)에서 시그널링될 수 있다. 또한, 플래그는 SPS에서의 palette_mode_enabled_flag가 참일 때에만 시그널링될 수 있다. 그렇지 않을 경우에는, 그것은 거짓(false)으로서 추론될 것이다. CU에 걸친 인덱스 예측을 위한 인에이블 플래그가 거짓일 때, CU에 걸친 인덱스 예측은 디스에이블된다. 다른 실시형태에서, CU에 걸친 인덱스 예측을 위한 인에이블 플래그가 거짓일 때, 이웃하는 인덱스들 또는 값들은 미리 정의된 값들로서 추론될 수 있다. 예를 들어, 이웃하는 인덱스들은 0으로 설정될 수 있고, 이웃하는 값들은 각각의 컬러 컴포넌트에 대하여 128로 설정될 수 있다. 이 발명에서, 블록에서 인덱스들 또는 값들을 예측하기 위한 방법은 이웃하는 픽셀들(또는 블록들)의 정보로 제한되지 않는다.
모드에 대한 컨텍스트 선택: SCM 3.0에서, 인덱스 맵 코딩을 위한 신택스 엘리먼트, palette_mode는 컨텍스트 인코딩된다. palette _mode에 대한 2 개의 컨텍스트들이 있다. 컨텍스트는 상부 인덱스의 palette_mode에 따라 선택된다. 그러나, 최초 행에서의 인덱스에 대하여, 상부 인덱스가 없다.
몇몇 방법들은 이 경우에 컨텍스트 선택을 처리하기 위하여 개시되어 있다.
1. 최초 행의 컨텍스트가 컨텍스트로 고정된다. 컨텍스트는 상부 인덱스가 INDEX-RUN에 의해 코딩될 때에 제 1 컨텍스트, 또는 상부 인덱스가 COPY-RUN 모드에 의해 코딩될 때에 제 2 컨텍스트일 수 있다.
2. 최초 행의 인덱스에 대한 제 3 컨텍스트가 있을 수 있다.
3. CU에서의 모든 인덱스들은 palette_mode를 인코딩하기 위하여 동일한 컨텍스트를 이용한다. 컨텍스트는 CU 크기에 따라 선택될 수 있고, CU에서의 모든 인덱스들은 palette_mode를 인코딩하기 위하여 동일한 컨텍스트를 이용한다. 이 경우에 2 개의 컨텍스트들이 있을 수 있다. CU 크기가 고정되거나 유도된 문턱보다 더 클 경우, 제 1 컨텍스트가 이용된다. 그렇지 않을 경우에는, 다른 컨텍스트가 이용된다. 다른 예에서, 컨텍스트의 수는 1로 감소될 수 있다. 이 경우, 컨텍스트는 모든 CU 크기들에 대하여 동일하다.
수정된 인트라 예측 방식
또 다른 실시형태에서는, 도 19 및 도 20에서 개시된 바와 같은 예측 방식의 동일한 효과를 달성하기 위한 것이다. HEVC, HEVC 범위 확장, 또는 HEVC SCC에서의 기존의 인트라 예측에 기초하여, 신택스 엘리먼트, rqt_root_cbf는 현재의 CU로부터 제곱근으로 된(rooted) TU(transform unit; 변환 유닛)가 잔차를 가지는지 아닌지의 여부를 표시하기 위하여 시그널링된다. rqt_root_cbf의 시그널링은 HEVC에서의 인터 CU 잔차 코딩을 위한 rqt_root_cbf와 동일할 수 있다.
본 발명의 실시형태에 따른 rqt_root_cbf에 의한 인트라 예측에 기초하여, rqt_root_cbf는 루마 및 크로마 인트라 예측 모드들을 포함하는 인트라 예측 모드들의 서브세트에 선택적으로 적용될 수 있다. rqt_root_cbf만이 서브세트에서의 그 인트라 예측 모드들에 대하여 시그널링된다. 하나의 예에서, 수정된 방식만이 수평 또는 수직 예측 모드들과 동일한 루마 인트라 예측 모드에 적용되는 반면, 크로마 인트라 예측 모드는 수정되지 않는다.
또 다른 실시형태에서, 하나의 CU-레벨 플래그는 이 인트라 CU를 코딩하기 위한 잔차 신호가 있는지를 표시하기 위하여 인트라 CU에 대하여 시그널링된다. 유사하게, 이 플래그는 인트라 예측 모드들의 서브세트에 선택적으로 적용될 수 있다.
인트라 블록 복사( IntraBC ) 검색
본 발명의 실시형태는 IntraBC의 소스 픽셀들을 변경한다. IntraBC 예측 및 보상을 위한 픽셀들은 픽셀들의 위치에 따라 비-필터링된 픽셀들(즉, 디블록킹(deblocking) 이전) 또는 필터링된 픽셀들(즉, 디블록킹 및 SAO(sample adaptive offset; 샘플 적응적 오프셋) 이후)일 수 있다.
예를 들어, IntraBC 예측 및 보상을 위한 픽셀들은 도 29에 도시된 바와 같이, 현재의 CTU(2910) 및 좌측 CTU(2920)에서의 픽셀들에 대한 비-필터링된 픽셀들에 기초할 수 있다. 다른 픽셀들은 필터링된 픽셀들을 여전히 이용한다. 도 29는 본 발명의 실시형태에 따라 소스 픽셀들의 예를 예시하고, 여기서, 도트-충전된 픽셀들은 비-필터링된 픽셀들로부터의 것들이고 깨끗한 픽셀들은 IntraBC에 대한 필터링된 픽셀들로부터의 것들이다.
또 다른 예에서, IntraBC 예측 및 보상을 위한 픽셀들은 도 30에 도시된 바와 같이, 현재의 CTU(3010), 좌측 CTU(3020), 상부 CTU(3030)의 4 개의 하부 라인들, 및 상부-좌측 CTU(3040)의 4 개의 하부 라인들에서의 픽셀들에 대한 비-필터링된 픽셀들이다. 다른 픽셀들은 필터링된 픽셀들을 이용하고 있다. 도 30에서, 도트-충전된 픽셀들은 비-필터링된 픽셀들로부터의 것들이고, 깨끗한 픽셀들은 IntraBC에 대한 필터링된 픽셀들로부터의 것들이다.
또 다른 예에서, IntraBC 예측 및 보상을 위한 픽셀들은 도 31에 도시된 바와 같이, 현재의 CTU, N 좌측 CTU들, 및 상부 CTU의 4 개의 하부 라인들, 및 N 상부-좌측 CTU들의 4 개의 하부 라인들에서의 픽셀들에 대한 비-필터링된 픽셀들이다. N은 양의 정수이다. 다른 픽셀들은 필터링된 픽셀들을 이용하고 있다. 도 31에서, 도트-충전된 픽셀들은 비-필터링된 픽셀들로부터의 것들이고, 깨끗한 픽셀들은 IntraBC에 대한 필터링된 픽셀들로부터의 것들이다.
또 다른 예에서, IntraBC 예측 및 보상을 위한 픽셀들은 현재의 CTU, 상부 CTU의 4 개의 하부 라인들, 및 좌측 CTU의 4 개의 우측 열들에서의 픽셀들에 대한 비-필터링된 픽셀들이다. 다른 픽셀들은 도 32에 도시된 바와 같이 필터링된 것을 이용하고 있다. 도 32에서, 도트-충전된 픽셀들은 비-필터링된 픽셀들로부터의 것들이고, 깨끗한 픽셀들은 IntraBC에 대한 필터링된 픽셀들로부터의 것들이다.
또 다른 예에서, IntraBC 예측 및 보상을 위한 픽셀들은 현재의 CTU, N 좌측 CTU들, 상부 CTU의 4 개의 하부 라인들 및 N 상부 CTU들의 4 개의 하부 라인들, 및 (N+1) 번째 좌측 CTU의 4 개의 우측 열들에서의 픽셀들에 대한 비-필터링된 픽셀들이다. N은 양의 정수 값이다. 다른 픽셀들은 필터링된 픽셀들을 이용하고 있다. 도 33에서, 도트-충전된 픽셀들은 비-필터링된 픽셀들로부터의 것들이고, 깨끗한 픽셀들은 IntraBC에 대한 필터링된 픽셀들로부터의 것들이다.
도 34는 변환 계수 버퍼를 공유하기 위하여 팔레트 코딩된 블록에 대한 본 발명의 실시형태를 통합시키는 시스템을 위한 예시적인 플로우차트를 예시한다. 시스템은 단계(3410)에서, 현재의 블록에 대한 현재의 예측 모드를 결정하고, 단계(3420)에서, 저장 영역을 변환 계수 버퍼로서 지정한다. 단계(3430)에서, 현재의 예측 모드가 인트라 예측 모드 또는 인터 예측일 경우, 인트라 예측 또는 인터 예측으로부터 기인된 현재의 블록의 예측 잔차에 대한 변환 계수들에 관련된 제 1 정보는 변환 계수 버퍼 내에 저장된다. 단계(3440)에서, 현재의 예측 모드가 팔레트 코딩 모드일 경우, 현재의 블록과 연관된 팔레트 데이터에 관련된 정보는 변환 계수 버퍼 내에 저장된다. 그 다음으로, 단계(3450)에서, 현재의 블록은 현재의 블록이 인트라 예측 모드 또는 인터 예측 모드에서 코딩될 경우에 변환 계수들에 관련된 정보, 또는 현재의 블록이 팔레트 코딩 모드에서 코딩될 경우에 변환 계수 버퍼 내에 저장된 팔레트 데이터에 관련된 정보에 기초하여 인코딩되거나 디코딩된다.
상기 설명은 당해 분야의 숙련자가 특별한 애플리케이션 및 그 요건의 문맥에서 제공된 바와 같이 본 발명을 실시하는 것을 가능하게 하도록 제시된다. 설명된 실시형태들에 대한 다양한 수정들은 당해 분야의 숙련자들에게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 다른 실시형태들에 적용될 수도 있다. 그러므로, 본 발명은 도시되고 설명된 특별한 실시형태들로 제한되도록 의도된 것이 아니라, 본원에서 개시된 원리들 및 신규한 특징들과 부합하는 가장 넓은 범위를 따르도록 하기 위한 것이다. 상기 상세한 설명에서는, 본 발명의 철저한 이해를 제공하기 위하여 다양한 특정 세부사항들이 예시된다. 그럼에도 불구하고, 본 발명이 실시될 수도 있다는 것은 당해 분야의 숙련자들에 의해 이해될 것이다.
위에서 설명된 바와 같은 본 발명의 실시형태들은 다양한 하드웨어, 소프트웨어 코드들, 또는 양자의 조합으로 구현될 수도 있다. 예를 들어, 본 발명의 실시형태는 본원에서 설명된 프로세싱을 수행하기 위하여, 비디오 압축 칩 내로 통합된 하나 이상의 전자 회로들, 또는 비디오 압축 소프트웨어 내로 통합된 프로그램 코드일 수 있다. 본 발명의 실시형태는 또한, 본원에서 설명된 프로세싱을 수행하기 위하여, 디지털 신호 프로세서(Digital Signal Processor; DSP) 상에서 실행되어야 할 프로그램 코드일 수도 있다. 발명은 또한, 컴퓨터 프로세서, 디지털 신호 프로세서, 마이크로프로세서, 또는 필드 프로그래밍가능 게이트 어레이(field programmable gate array; FPGA)에 의해 수행되어야 할 복수의 기능들을 포함할 수도 있다. 이 프로세서들은 발명에 의해 구체화된 특별한 방법들을 정의하는 머신-판독가능한(machine-readable) 소프트웨어 코드 또는 펌웨어 코드를 실행함으로써, 발명에 따라 특별한 작업들을 수행하도록 구성될 수 있다. 소프트웨어 코드 또는 펌웨어 코드는 상이한 프로그래밍 언어들 및 상이한 포맷들 또는 스타일들로 개발될 수도 있다. 소프트웨어 코드는 또한 상이한 타겟 플랫폼들에 대해 컴파일링될 수도 있다. 그러나, 발명에 따라 작업들을 수행하도록 코드를 구성하는 소프트웨어 코드들 및 다른 수단의 상이한 코드 포맷들, 스타일들 및 언어들은 발명의 사상 및 범위로부터 이탈하지 않을 것이다.
발명은 그 사상 또는 필수적인 특성들로부터 이탈하지 않으면서 다른 특정 형태들로 구체화될 수도 있다. 설명된 예들은 모든 점들에서 한정적인 것이 아니라 단지 예시적인 것으로서 간주되어야 한다. 그러므로, 발명의 범위는 상이한 설명에 의해서가 아니라, 첨부된 청구항들에 의해 표시된다. 청구항들의 등가성의 의미 및 범위 내에서 나오는 모든 변화들은 그 범위 내에 수용되어야 한다.

Claims (16)

  1. 팔레트 코딩 모드, 인트라 예측 모드, 및 인터 예측 모드를 포함하는 예측 모드들을 이용한 비디오 코딩 방법으로서,
    현재의 블록에 대한 현재의 예측 모드를 결정하는 단계와,
    하나의 저장 영역을 변환 계수 버퍼로서 지정하는 단계와,
    상기 현재의 예측 모드가 상기 인트라 예측 모드 또는 상기 인터 예측 모드일 경우, 인트라 예측 또는 인터 예측으로부터 기인된 상기 현재의 블록의 예측 잔차(residual)에 대한 변환 계수들에 관련된 제 1 정보를 상기 변환 계수 버퍼 내에 저장하는 단계와,
    상기 현재의 예측 모드가 상기 팔레트 코딩 모드일 경우, 상기 현재의 블록과 연관된 팔레트 데이터에 관련된 제 2 정보를 상기 변환 계수 버퍼 내에 저장하는 단계와,
    상기 현재의 블록이 상기 인트라 예측 모드 또는 상기 인터 예측 모드에서 코딩될 경우에 상기 변환 계수들에 관련된 상기 제 1 정보, 또는 상기 현재의 블록이 상기 팔레트 코딩 모드에서 코딩될 경우에 상기 변환 계수 버퍼 내에 저장된 상기 팔레트 데이터에 관련된 상기 제 2 정보에 기초하여 상기 현재의 블록을 인코딩하거나 디코딩하는 단계를 포함하는, 예측 모드들을 이용한 비디오 코딩 방법.
  2. 제 1 항에 있어서,
    상기 현재의 예측 모드가 상기 팔레트 코딩 코드일 경우, 상기 팔레트 데이터는 상기 현재의 블록과 연관된 팔레트 런 타입(palette run type), 팔레트 인덱스(palette index), 팔레트 런(palette run), 이스케이프 값(escape value)들, 이스케이프 플래그(escape flag)들, 팔레트 테이블(palette table), 또는 이들의 임의의 조합에 대응하는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  3. 제 2 항에 있어서,
    상기 팔레트 데이터에 관련된 상기 제 2 정보는 상기 팔레트 데이터, 파싱된(parsed) 팔레트 데이터, 또는 재구성된 팔레트 데이터에 대응하는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  4. 제 2 항에 있어서,
    상기 현재의 블록의 샘플들에 대한 파싱된 팔레트 인덱스들은 파싱 스테이지에서 재구성되고, 재구성된 팔레트 인덱스들 및 재구성된 이스케이프 값들은 디코더 측에서 상기 변환 계수 버퍼 내에 저장되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  5. 제 2 항에 있어서,
    상기 현재의 블록의 샘플들에 대한 파싱된 팔레트 인덱스들이 재구성되고, 재구성된 팔레트 인덱스들은 파싱 스테이지에서 팔레트 테이블을 이용하여 재구성된 픽셀 값들로 추가로 재구성되고, 상기 재구성된 픽셀 값들 및 재구성된 이스케이프 값들은 디코더 측에서 상기 변환 계수 버퍼 내에 저장되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  6. 제 5 항에 있어서,
    하나의 저장 영역은 상기 파싱 스테이지 동안에 상기 팔레트 테이블을 저장하기 위하여 지정되고, 상기 하나의 저장 영역은 재구성 스테이지 동안에 상기 팔레트 테이블에 의한 이용으로부터 해제되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  7. 제 5 항에 있어서,
    상기 이스케이프 플래그들은 상기 디코더 측에서 상기 변환 계수 버퍼 내에 저장되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  8. 제 2 항에 있어서,
    상기 이스케이프 플래그들은 상기 변환 계수 버퍼의 일부 내에 저장되고, 재구성된 픽셀 값들 또는 이스케이프 값들은 상기 변환 계수 버퍼의 또 다른 일부 내에 저장되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  9. 제 8 항에 있어서,
    상기 이스케이프 플래그들은 상기 변환 계수 버퍼의 최상위 비트(most significant bit; MSB) 부분 내에 저장되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  10. 팔레트 코딩 모드를 포함하는 예측 모드들을 이용한 비디오 코딩 방법으로서,
    현재의 블록의 코딩된 데이터 또는 상기 현재의 블록과 연관된 입력 데이터에 대응하는 비디오 비트스트림을 수신하는 단계와,
    현재의 예측 모드가 상기 팔레트 코딩 모드일 경우, 디코더 측에서 상기 비디오 비트스트림으로부터 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 이스케이프 값들을 파싱하고, 인코더 측에서 상기 동일한 컬러 컴포넌트에 대한 모든 이스케이프 값들을 함께 그룹화하는 단계와,
    상기 이스케이프 값들을 포함하는 정보를 이용하여 상기 현재의 블록을 디코딩하거나 인코딩하는 단계를 포함하는, 예측 모드들을 이용한 비디오 코딩 방법.
  11. 제 10 항에 있어서,
    상기 동일한 컬러 컴포넌트에 대한 상기 그룹화된 이스케이프 값들은 상기 현재의 블록에 대한 코딩된 팔레트 데이터의 종료부(end)에서 시그널링되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  12. 제 10 항에 있어서,
    상이한 컬러 컴포넌트들에 대한 상기 그룹화된 이스케이프 값들은 상기 현재의 블록에 대하여 별도로 시그널링되는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  13. 제 10 항에 있어서,
    상기 현재의 블록의 상기 동일한 컬러 컴포넌트에 대한 상기 그룹화된 이스케이프 값들을 변환 계수 버퍼 내에 저장하는 단계를 더 포함하는 예측 모드들을 이용한 비디오 코딩 방법.
  14. 제 13 항에 있어서,
    상이한 컬러 컴포넌트들에 대한 상기 그룹화된 이스케이프 값들은, 하나의 컬러 컴포넌트에 대한 상기 그룹화된 이스케이프 값들을 상기 변환 계수 버퍼 내에 한 번에 저장함으로써 상기 변환 계수 버퍼를 공유하는 것인 예측 모드들을 이용한 비디오 코딩 방법.
  15. 팔레트 코딩 모드를 포함하는 예측 모드들을 이용한 비디오 코딩 방법으로서,
    디코더 측에서 비디오 비트스트림의 시퀀스 파라미터 세트(sequence parameter set; SPS), 픽처 파라미터 세트(picture parameter set; PPS), 또는 슬라이스 헤더로부터 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 초기 팔레트 예측자 값들을 파싱하거나, 인코더 측에서 상기 동일한 컬러 컴포넌트에 대한 모든 초기 팔레트 예측자 값들을 함께 그룹화하는 단계와,
    상기 초기 팔레트 예측자 값들을 이용하여 대응하는 시퀀스, 픽처, 또는 슬라이스 내에서의 적어도 하나의 팔레트 코딩된 블록을 디코딩하거나 인코딩하는 단계를 포함하는, 예측 모드들을 이용한 비디오 코딩 방법.
  16. 팔레트 코딩 모드를 포함하는 예측 모드들을 이용한 비디오 코딩 방법으로서,
    디코더 측에서 비디오 비트스트림으로부터 현재의 블록에 대하여 함께 그룹화된 동일한 컬러 컴포넌트에 대한 모든 팔레트 예측자 엔트리들 또는 팔레트 엔트리들을 파싱하거나, 인코더 측에서 상기 동일한 컬러 컴포넌트에 대한 모든 팔레트 예측자 엔트리들 또는 팔레트 엔트리들을 함께 그룹화하는 단계와,
    모든 팔레트 예측자 엔트리들로 구성되는 팔레트 예측자, 또는 모든 팔레트 엔트리들로 구성되는 팔레트 테이블을 이용하여 상기 현재의 블록을 디코딩하거나 인코딩하는 단계를 포함하는, 예측 모드들을 이용한 비디오 코딩 방법.
KR1020177015255A 2014-11-12 2015-11-12 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들 KR102144154B1 (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201462078595P 2014-11-12 2014-11-12
US62/078,595 2014-11-12
US201462087454P 2014-12-04 2014-12-04
US62/087,454 2014-12-04
US201562119950P 2015-02-24 2015-02-24
US62/119,950 2015-02-24
US201562145578P 2015-04-10 2015-04-10
US62/145,578 2015-04-10
US201562162313P 2015-05-15 2015-05-15
US62/162,313 2015-05-15
US201562170828P 2015-06-04 2015-06-04
US62/170,828 2015-06-04
PCT/CN2015/094410 WO2016074627A1 (en) 2014-11-12 2015-11-12 Methods of escape pixel coding in index map coding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197024537A Division KR20190101495A (ko) 2014-11-12 2015-11-12 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들

Publications (2)

Publication Number Publication Date
KR20170094544A true KR20170094544A (ko) 2017-08-18
KR102144154B1 KR102144154B1 (ko) 2020-08-13

Family

ID=55953749

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197024537A KR20190101495A (ko) 2014-11-12 2015-11-12 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들
KR1020177015255A KR102144154B1 (ko) 2014-11-12 2015-11-12 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197024537A KR20190101495A (ko) 2014-11-12 2015-11-12 인덱스 맵 코딩에서의 이스케이프 픽셀 코딩의 방법들

Country Status (6)

Country Link
US (2) US10666974B2 (ko)
EP (1) EP3207712B1 (ko)
KR (2) KR20190101495A (ko)
CN (1) CN110519604B (ko)
AU (2) AU2015345649A1 (ko)
WO (1) WO2016074627A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123677A (ko) * 2015-03-18 2017-11-08 에이치에프아이 이노베이션 인크. 비디오 및 이미지 압축에서의 인덱스 맵 코딩을 위한 방법 및 장치
WO2021040459A1 (ko) * 2019-08-30 2021-03-04 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2021187946A1 (ko) * 2020-03-19 2021-09-23 엘지전자 주식회사 팔레트 모드에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872539B (zh) * 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
WO2016127889A1 (en) 2015-02-13 2016-08-18 Mediatek Inc. Method and apparatus for palette index coding in video and image compression
US10951895B2 (en) * 2018-12-31 2021-03-16 Alibaba Group Holding Limited Context model selection based on coding unit characteristics
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11202101B2 (en) * 2019-03-13 2021-12-14 Qualcomm Incorporated Grouped coding for palette syntax in video coding
US11252442B2 (en) * 2019-04-08 2022-02-15 Tencent America LLC Method and apparatus for video coding
WO2020207421A1 (en) * 2019-04-09 2020-10-15 Beijing Bytedance Network Technology Co., Ltd. Entry construction for palette mode coding
KR20200132761A (ko) * 2019-05-15 2020-11-25 현대자동차주식회사 동영상 데이터의 병렬 부호화 및 복호화를 위한 방법 및 장치
KR20220013938A (ko) 2019-05-31 2022-02-04 바이트댄스 아이엔씨 인트라 블록 복사 예측을 갖는 팔레트 모드
BR112021025916A2 (pt) 2019-06-28 2022-02-15 Bytedance Inc Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento e meio de gravação não transitórios legíveis por computador
KR102612765B1 (ko) 2019-06-28 2023-12-13 바이트댄스 아이엔씨 변환 스킵 모드에서 양자화 파라미터를 수정하는 기술
WO2021015537A1 (ko) * 2019-07-21 2021-01-28 엘지전자 주식회사 팔레트 모드의 적용 여부에 따라 크로마 성분 예측 정보를 시그널링 하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US11330306B2 (en) * 2019-08-07 2022-05-10 Tencent America LLC Method and apparatus for video coding
KR20240056669A (ko) * 2019-08-26 2024-04-30 엘지전자 주식회사 팔레트 코딩 기반 영상 또는 비디오 코딩
KR20210027175A (ko) * 2019-08-30 2021-03-10 주식회사 케이티 비디오 신호 처리 방법 및 장치
MX2022002617A (es) 2019-09-12 2022-03-25 Bytedance Inc Uso de predictor de paleta en codificacion de video.
US11451801B2 (en) * 2019-12-26 2022-09-20 Alibaba Group Holding Limited Methods for coding video data in palette mode
US11683514B2 (en) * 2020-12-22 2023-06-20 Tencent America LLC Method and apparatus for video coding for machine
US11463716B2 (en) * 2021-02-25 2022-10-04 Qualcomm Incorporated Buffers for video coding in palette mode

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140301474A1 (en) * 2013-04-05 2014-10-09 Qualcomm Incorporated Determining palettes in palette-based video coding

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3219403B2 (ja) * 1989-05-10 2001-10-15 キヤノン株式会社 画像記憶装置
US5446482A (en) * 1991-11-13 1995-08-29 Texas Instruments Incorporated Flexible graphics interface device switch selectable big and little endian modes, systems and methods
US6034667A (en) * 1992-01-21 2000-03-07 Radius Inc. Method and apparatus for displaying YUV color information on a pseudo-color RGB display
AU1727495A (en) * 1994-01-14 1995-08-01 Houston Advanced Research Center Boundary-spline-wavelet compression for video images
US5801665A (en) * 1995-10-30 1998-09-01 Industrial Technology Research Institute Format converter for the conversion of conventional color display format to field sequential
US5936606A (en) * 1996-04-15 1999-08-10 Winbond Electronics Corp. On-screen edit/display controller
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6208350B1 (en) * 1997-11-04 2001-03-27 Philips Electronics North America Corporation Methods and apparatus for processing DVD video
US6021196A (en) * 1998-05-26 2000-02-01 The Regents University Of California Reference palette embedding
US6347157B2 (en) * 1998-07-24 2002-02-12 Picsurf, Inc. System and method for encoding a video sequence using spatial and temporal transforms
US6441829B1 (en) * 1999-09-30 2002-08-27 Agilent Technologies, Inc. Pixel driver that generates, in response to a digital input value, a pixel drive signal having a duty cycle that determines the apparent brightness of the pixel
US7414632B1 (en) * 2000-01-07 2008-08-19 Intel Corporation Multi-pass 4:2:0 subpicture blending
US6940912B2 (en) * 2000-04-21 2005-09-06 Microsoft Corporation Dynamically adaptive multimedia application program interface and related methods
US7634011B2 (en) * 2000-04-21 2009-12-15 Microsoft Corporation Application program interface (API) facilitating decoder control of accelerator resources
US7649943B2 (en) * 2000-04-21 2010-01-19 Microsoft Corporation Interface and related methods facilitating motion compensation in media processing
US6891893B2 (en) * 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US7143353B2 (en) * 2001-03-30 2006-11-28 Koninklijke Philips Electronics, N.V. Streaming video bookmarks
US6937759B2 (en) * 2002-02-28 2005-08-30 Nokia Corporation Method and device for reducing image by palette modification
US7302006B2 (en) * 2002-04-30 2007-11-27 Hewlett-Packard Development Company, L.P. Compression of images and image sequences through adaptive partitioning
US7433526B2 (en) * 2002-04-30 2008-10-07 Hewlett-Packard Development Company, L.P. Method for compressing images and image sequences through adaptive partitioning
US7072512B2 (en) * 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
DE60315407D1 (de) * 2003-02-06 2007-09-20 St Microelectronics Srl Verfahren und Vorrichtung zum Komprimierung von Texturen
US7660516B2 (en) * 2004-02-17 2010-02-09 Panasonic Corporation Recording medium, reproduction device, program, and reproduction method
JP2008244981A (ja) * 2007-03-28 2008-10-09 Seiko Epson Corp 映像合成装置および映像出力装置
CN103098466B (zh) * 2010-09-13 2016-08-17 索尼电脑娱乐公司 图像处理装置和图像处理方法
WO2012112357A1 (en) * 2011-02-16 2012-08-23 Dolby Laboratories Licensing Corporation Methods and systems for generating filter coefficients and configuring filters
US9116634B2 (en) * 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
US8655086B1 (en) * 2011-11-01 2014-02-18 Zynga, Inc. Image compression with alpha channel data
US8615138B2 (en) * 2011-11-03 2013-12-24 Google Inc. Image compression using sub-resolution images
CN102523367B (zh) * 2011-12-29 2016-06-15 全时云商务服务股份有限公司 基于多调色板的实时图像压缩和还原方法
KR102101304B1 (ko) * 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9609336B2 (en) * 2013-04-16 2017-03-28 Fastvdo Llc Adaptive coding, transmission and efficient display of multimedia (acted)
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
CN104378644B (zh) * 2013-08-16 2020-12-04 上海天荷电子信息有限公司 定宽度变长度像素样值串匹配增强的图像压缩方法和装置
US9936213B2 (en) 2013-09-19 2018-04-03 Entropic Communications, Llc Parallel decode of a progressive JPEG bitstream
US20150110181A1 (en) * 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US9477423B2 (en) * 2013-11-26 2016-10-25 Seagate Technology Llc Eliminating or reducing programming errors when programming flash memory cells
US20150181208A1 (en) * 2013-12-20 2015-06-25 Qualcomm Incorporated Thermal and power management with video coding
EP3202150B1 (en) * 2014-09-30 2021-07-21 Microsoft Technology Licensing, LLC Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US10356440B2 (en) * 2014-10-01 2019-07-16 Qualcomm Incorporated Scalable transform hardware architecture with improved transpose buffer
US10687069B2 (en) * 2014-10-08 2020-06-16 Microsoft Technology Licensing, Llc Adjustments to encoding and decoding when switching color spaces

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140301474A1 (en) * 2013-04-05 2014-10-09 Qualcomm Incorporated Determining palettes in palette-based video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Gisquer et. al., "Non-SCCE3: memory reduction for palette mode software" 18th meeting: Sapporo, 2014.6.30.-7.9. *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123677A (ko) * 2015-03-18 2017-11-08 에이치에프아이 이노베이션 인크. 비디오 및 이미지 압축에서의 인덱스 맵 코딩을 위한 방법 및 장치
WO2021040459A1 (ko) * 2019-08-30 2021-03-04 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2021187946A1 (ko) * 2020-03-19 2021-09-23 엘지전자 주식회사 팔레트 모드에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체

Also Published As

Publication number Publication date
CN110519604A (zh) 2019-11-29
EP3207712A4 (en) 2017-12-20
AU2015345649A1 (en) 2017-06-08
CN110519604B (zh) 2022-04-01
KR20190101495A (ko) 2019-08-30
EP3207712B1 (en) 2021-06-09
US20190116380A1 (en) 2019-04-18
US10666974B2 (en) 2020-05-26
US11457237B2 (en) 2022-09-27
WO2016074627A1 (en) 2016-05-19
US20200288170A1 (en) 2020-09-10
AU2019201623A1 (en) 2019-04-04
AU2019201623B2 (en) 2020-10-22
BR112017009946A2 (pt) 2018-07-03
EP3207712A1 (en) 2017-08-23
KR102144154B1 (ko) 2020-08-13

Similar Documents

Publication Publication Date Title
AU2019201623B2 (en) Methods of escape pixel coding in index map coding
CN114630131B (zh) 索引映射编解码中的跳出像素编解码方法
US11265537B2 (en) Method for palette table initialization and management
KR101887798B1 (ko) 비디오 코딩에서의 신택스에 대한 이진화 및 컨텍스트 적응 코딩의 방법 및 장치
JP6417027B2 (ja) インデックスマップ符号化の予測器としてエスケープ画素を処理する方法
CA2934743C (en) Method and apparatus for syntax redundancy removal in palette coding
CN103563380B (zh) 减少用于视频处理的行缓冲的方法及装置
KR101982829B1 (ko) 팔레트 테이블 예측 및 시그널링을 위한 방법과 장치
CN108141621B (zh) 编解码视频数据的方法及装置
EP3085068A1 (en) Palette prediction and sharing in video coding
TW202329689A (zh) 基於矩陣之內部預測之高效實施技術
BR112017009946B1 (pt) Métodos de conversão de pixel de escape em código em conversão de mapa de indicador em código

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2019101002805; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20190821

Effective date: 20200414

GRNO Decision to grant (after opposition)
GRNT Written decision to grant