JP2016529783A - パレットベースのビデオコーディングにおけるパレット予測 - Google Patents

パレットベースのビデオコーディングにおけるパレット予測 Download PDF

Info

Publication number
JP2016529783A
JP2016529783A JP2016525816A JP2016525816A JP2016529783A JP 2016529783 A JP2016529783 A JP 2016529783A JP 2016525816 A JP2016525816 A JP 2016525816A JP 2016525816 A JP2016525816 A JP 2016525816A JP 2016529783 A JP2016529783 A JP 2016529783A
Authority
JP
Japan
Prior art keywords
palette
current
block
entry
coding
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016525816A
Other languages
English (en)
Other versions
JP6246920B2 (ja
JP2016529783A5 (ja
Inventor
グオ、リウェイ
カークゼウィックズ、マルタ
ソル・ロジャルス、ジョエル
ジョシ、ラジャン・ラクスマン
キム、ウォ−シク
プ、ウェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016529783A publication Critical patent/JP2016529783A/ja
Publication of JP2016529783A5 publication Critical patent/JP2016529783A5/ja
Application granted granted Critical
Publication of JP6246920B2 publication Critical patent/JP6246920B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • H04N1/644Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor using a reduced set of representative colours, e.g. each representing a particular range in a colour space
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

パレットベースのコーディングでは、ビデオコーダは、所与のブロックのビデオデータを表す色のテーブルとして、いわゆる「パレット」を形成することができる。ビデオコーダは、ビデオデータの現在のブロックの1つまたは複数のピクセル値についてのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すパレット中のエントリーを示す。本技法によれば、ビデオデコーダは、現在のパレットにコピーされる予測パレット中の1つまたは複数のパレットエントリーと、現在のパレットに含まれる、予測パレット中にはない新たなパレットエントリーの数とを決定する。ビデオコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成する。

Description

[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、2013年7月12日に出願された米国仮出願第61/845,824号、2013年11月1日に出願された米国仮出願第61/899,048号、および2013年12月6日に出願された米国仮出願第61/913,040号の利益を主張する。
[0002]本開示は、ビデオの符号化および復号に関する。
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、携帯電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4,Part 10,Advanced Video Coding(AVC)、現在開発中のHigh Efficiency Video Coding(HEVC)規格によって定義された規格、およびそのような規格の拡張に記載されているもののような、ビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実施することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶することができる。
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(イントラピクチャ)予測および/または時間的(インターピクチャ)予測を実行する。ブロックベースのビデオコーディングの場合、ビデオスライス(すなわち、ビデオフレームまたはビデオフレームの一部分)がビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライスにおけるビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間的予測、または他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
[0005]空間的予測または時間的予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データ(residual data)は、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差を示す残差データに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に2次元アレイで構成される量子化された係数は、係数の1次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコーディングが適用されてよい。
[0006]マルチビューコーディングビットストリームは、たとえば、複数の視点からのビューを符号化することによって生成され得る。マルチビューコーディング態様を利用するいくつかの3次元(3D)ビデオ規格が開発されている。たとえば、異なるビューは、3Dビデオをサポートするために左目のビューと右目のビューとを伝えることができる。あるいは、いくつかの3Dビデオコーディング処理は、いわゆるマルチビュープラス深度コーディング(multiview plus depth coding)を適用することができる。マルチビュープラス深度コーディングでは、3Dビデオビットストリームは、テクスチャビュー成分だけではなく深度ビュー成分も含み得る。たとえば、各ビューは、1つのテクスチャビュー成分と1つの深度ビュー成分とを備え得る。
[0007]本開示の技法は、パレットベースのビデオコーディングに関する。パレットベースのコーディングでは、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、特定の領域(たとえば、所与のブロック)のビデオデータを表す色またはピクセル値のテーブルとして、いわゆる「パレット(palette)」を形成することができる。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の1つまたは複数のためのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。ビデオデータの現在のブロックのための現在のパレットは、明示的に符号化されてビデオデコーダに送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
[0008]現在のブロックのための現在のパレットを生成するための本開示で説明される技法によれば、ビデオデコーダはまず、現在のパレットにコピーされる予測パレット中の1つまたは複数のパレットエントリーを決定し、次いで、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、ビデオデコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダは、現在のブロックのための現在のパレットを生成するために、同様の技法を実行することができる。加えて、ビデオエンコーダは、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダに送ることができる。本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、1つまたは複数の様々な組合せのための技法を含み得る。
[0009]一例では、本開示はビデオデータをコーディングする方法を対象とし、この方法は、ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定することと、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定することと、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算することと、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成することとを備える。方法はさらに、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定することを備える。
[0010]別の例では、本開示はビデオデータをコーディングするための装置を対象とし、この装置は、ビデオデータを記憶するメモリと、1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、ピクセル値を示すパレットエントリーを含む予測パレットを生成し、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定し、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定し、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成するように構成される。プロセッサはさらに、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定するように構成される。
[0011]別の例では、本開示はビデオデータをコーディングするための装置を対象とし、この装置は、ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定するための手段と、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定するための手段と、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算するための手段と、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成するための手段と、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定するための手段とを備える。
[0012]さらなる例では、本開示は命令を記憶した非一時的コンピュータ可読媒体を対象とし、この命令は、実行されると、1つまたは複数のプロセッサに、ピクセル値を示すパレットエントリーを含む予測パレットを生成させ、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定させ、現在のブロックのための現在のパレットに含まれる、予測パレット中にない新たなパレットエントリーの数を決定させ、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算させ、コピーされたパレットエントリーと新たなパレットエントリーとを含む現在のパレットを生成させ、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定させる。
[0013]本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
[0014]本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。 [0015]本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。 [0016]本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。 [0017]本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図。 [0018]本開示の技法に従った、ビデオブロックのためのパレットに対するインデックスを決定する例を示す概念図。 [0019]本開示の技法に従った、クロマ成分のために適応的にダウンサンプリングされたルーマ成分に対するパレットインデックスのランを使用してビデオブロックの幾何学的エッジを決定することの例を示す、概念図。 [0020]本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを符号化するための例示的なプロセスを示すフローチャート。 [0021]本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを復号するための例示的なプロセスを示すフローチャート。 [0022]本開示の技法に従った、パレットベースのコーディングのためのパレットを生成するための例示的なプロセスを示すフローチャート。
[0023]本開示は、ビデオコーディングおよび圧縮のための技法を含む。具体的には、本開示は、ビデオデータのパレットベースのコーディングのための技法を説明する。従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
[0024]しかしながら、リモートデスクトップ、協調作業、およびワイヤレスディスプレイのような用途では、コンピュータにより生成されたスクリーンコンテンツ(たとえば、テキストまたはコンピュータグラフィックスのような)は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
[0025]本開示は、スクリーンにより生成されたコンテンツのコーディングに特に好適であり得る、パレットベースのコーディングを説明する。たとえば、ビデオデータのある特定の領域が、比較的少数の色を有すると仮定すると、ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、特定の領域(たとえば、所与のブロック)のビデオデータを表す色またはピクセル値のテーブルとして、いわゆる「パレット」を形成することができる。たとえば、パレットは、所与のブロック中の最も支配的なピクセル値を含み得る。いくつかの場合、最も支配的なピクセル値は、ブロック内で最も頻繁に現れる1つまたは複数のピクセル値を含み得る。加えて、いくつかの場合、あるピクセル値がブロック中の最も支配的なピクセル値の1つとして含まれるかどうかを定義するために、閾値が適用され得る。本開示によれば、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の1つまたは複数を示すインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。
[0026]たとえば、ビデオエンコーダは、ブロックのためのパレットを決定し(たとえば、パレットを明示的にコーディングする、パレットを予測する、またはこれらの組合せ)、ピクセル値の1つまたは複数を表すためのパレット中のエントリーを見つけ、ブロックのピクセル値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。いくつかの例では、ビデオエンコーダは、符号化されたビットストリーム中でインデックス値をシグナリングすることができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
[0027]上の例は、パレットベースのコーディングの全般的な説明を与えることが意図されている。様々な例では、本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、または、パレットベースのコーディングマップと他のシンタックス要素とを送信することの、1つまたは複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコーディングの効率を改善することができ、たとえば、スクリーンにより生成されたコンテンツを表すためにより少数のビットしか必要としない。
[0028]たとえば、ビデオデータの現在のブロックのための現在のパレットは、明示的に符号化されてビデオデコーダに送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。現在のブロックのための現在のパレットを生成するための本開示で説明される技法によれば、ビデオデコーダはまず、現在のパレットにコピーされる予測パレット中の1つまたは複数のパレットエントリーを決定し、次いで、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、ビデオデコーダは、現在のパレットのサイズを、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダは、現在のブロックのための現在のパレットを生成するために、同様の技法を実行することができる。加えて、ビデオエンコーダは、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダに送ることができる。
[0029]本開示のいくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、ビデオデータのインター予測コーディングまたはイントラ予測コーディングのための技法のような、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。いくつかの例では、パレットベースのコーディング技法は、High Efficiency Video Coding(HEVC)の1つまたは複数のコーディングユニット(CU)モードにおいて使用するために構成され得る。他の例では、パレットベースのコーディング技法は、独立に、あるいは、他の既存のまたは今後のシステムまたは規格の一部として使用され得る。
[0030]High Efficiency Video Coding(HEVC)は、ITU-T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって開発された新しいビデオコーディング規格である。「HEVC Draft 10」または「WD10」と呼ばれるHEVC規格の最近のドラフトは、
http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipから入手可能である、文書JCTVC−L1003v34、Bross他、「High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Last Call)」、Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記述されている。
[0031]HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、PUに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
[0032]図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム10のビデオエンコーダ20およびビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
[0033]図1に示されるように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は、符号化されたビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス14は、ソースデバイス12によって生成された符号化されたビデオデータを復号することができる。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0034]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0035]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化されたビデオデータを受信することができる。チャネル16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備え得る。この例では、ソースデバイス12は、ワイヤレス通信プロトコルのような通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先デバイス14に送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路のような、ワイヤレスおよび/または有線の通信媒体を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)のような、パケットベースネットワークの一部を形成し得る。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
[0036]別の例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体のような、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
[0037]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化されたビデオデータを記憶する、ファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブを含む。
[0038]宛先デバイス14は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0039]本開示の技法は、ワイヤレスの用途または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0040]図1に示されるビデオコーディングシステム10は例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間の任意のデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶することができ、および/または、ビデオ復号デバイスはメモリからデータを取り出し、復号することができる。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0041]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0042]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために、記憶媒体またはファイルサーバに記憶され得る。
[0043]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化されたビデオデータを受信することができる。ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、またはその外部にあってよい。一般に、ディスプレイデバイス32は、復号されたビデオデータを表示する。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような様々なディスプレイデバイスを備え得る。
[0044]本開示は全般に、ビデオエンコーダ20が、ある情報をビデオデコーダ30のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時に符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生し得るなど、ある時間の長さにわたって発生することがあり、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。したがって、ビデオデコーダ30は、ある情報を「受信する」ものとして呼ばれ得るが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで発生するとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
[0045]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアのような、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実行することができる。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれもが、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれることがあり、両者のいずれかがそれぞれのデバイス中の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれることがある。
[0046]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、上で言及されHEVCドラフト10に記載されるHEVC規格のような、ビデオ圧縮規格に従って動作する。基本的なHEVC規格に加えて、HEVCのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および3Dコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、HEVC規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ITU−T−H.264/AVC規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、HEVCコーデックにおけるコーディングユニット(CU)または予測ユニット(PU)のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
[0047]HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルとも呼ばれ得る。他の例では、ピクチャは、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
[0048]ピクチャの符号化された表現を生成するために、ビデオエンコーダ20はコーディングツリーユニット(CTU)のセットを生成し得る。各CTUは、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするのに使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのN×Nのブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU)とも呼ばれることもある。HEVCのCTUは、H.264/AVCのような、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のCTUを含み得る。コーディングされたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコーディングされたCTUを含み得る。
[0049]本開示は、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用される1つまたは複数のサンプルブロックとシンタックス構造とを指すために、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用し得る。例示的なタイプのビデオユニットまたはブロックは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかの状況では、PUの論述は、マクロブロックまたはマクロブロック区分の論述と交換され得る。
[0050]コーディングされたCTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイと、CbサンプルアレイおよびCrサンプルアレイと、コーディングブロックのサンプルをコーディングするのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの1つのコーディングブロックおよびクロマサンプルの2つの対応するコーディングブロックであり得る。ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの2つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックのために、予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0051]ビデオエンコーダ20は、PUのための予測ブロックを生成するために、イントラ予測またはインター予測を使用することができる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成することができる。
[0052]ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成することができる。ビデオエンコーダ20は、PUの予測ブロックを生成するために単予測または双予測を使用することができる。ビデオエンコーダ20が、PUのための予測ブロックを生成するために単予測を使用するとき、PUは単一の動きベクトル(MV)を有し得る。ビデオエンコーダ20が、PUのための予測ブロックを生成するために双予測を使用するとき、PUは2つのMVを有し得る。
[0053]ビデオエンコーダ20がCUの1つまたは複数のPUのための予測ブロック(たとえば、予測ルーマブロック、Cbブロック、およびCrブロック)を生成した後で、ビデオエンコーダ20は、CUのための残差ブロックを生成することができる。CUの残差ブロック中の各サンプルは、CUのPUの予測ブロック中のサンプルと、CUのコーディングブロック中の対応するサンプルとの差を示し得る。たとえば、ビデオエンコーダ20は、CUのためのルーマ残差ブロックを生成することができる。CUのルーマ残差ブロック中の各サンプルは、CUの予測ルーマブロックの1つの中のルーマサンプルとCUの元のルーマコーディングブロック中の対応するサンプルとの差を示す。さらに、ビデオエンコーダ20はCUのCb残差ブロックを生成することができる。CUのCb残差ブロック中の各サンプルは、CUの予測Cbブロックの1つの中のCbサンプルと、CUの元のCbコーディングブロック中の対応するサンプルとの差を示し得る。ビデオエンコーダ20はまた、CUのCr残差ブロックを生成することができる。CUのCr残差ブロック中の各サンプルは、CUの予測Crブロックの1つの中のCrサンプルと、CUの元のCrコーディングブロック中の対応するサンプルとの差を示し得る。
[0054]さらに、ビデオエンコーダ20は、4分木区分を使用して、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を、1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に分解することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するのに使用されるシンタックス構造であり得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロックと関連付けられ得る。TUと関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。
[0055]ビデオエンコーダ20は、変換ブロックに1回または複数回の変換を適用して、TUの係数ブロックを生成することができる。係数ブロックは変換係数の2次元アレイであり得る。変換係数はスカラー量であり得る。たとえば、ビデオエンコーダ20は、TUのためのルーマ係数ブロックを生成するために、1つまたは複数の変換をTUのルーマ変換ブロックに適用することができる。ビデオエンコーダ20は、TUのCb変換ブロックに1回または複数回の変換を適用して、TUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、TUのCr変換ブロックに1回または複数回の変換を適用して、TUのCr係数ブロックを生成することができる。
[0056]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後に、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化することができる。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。ビットストリームはまた、エントロピー符号化されないシンタックス要素を含み得る。
[0057]ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コーディングされたピクチャおよび関連付けられるデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ(NAL)ユニットを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの例では、RBSPは0ビットを含む。
[0058]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPをカプセル化することができ、第2のタイプのNALユニットはコーディングされたスライスのためのRBSPをカプセル化することができ、第3のタイプのNALユニットは補足エンハンスメント情報(SEI)のためのRBSPをカプセル化することができ、以下同様である。(パラメータセットおよびSEIメッセージのためのRBSPではなく)ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれ得る。
[0059]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得することができる。たとえば、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームからシンタックス要素を復号することができる。ビデオデコーダ30は、ビットストリームから取得された(たとえば、復号された)シンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築することができる。ビデオデータを再構築するための処理は、全般に、ビデオエンコーダ20によって実行される処理の逆であり得る。たとえば、ビデオデコーダ30は、PUのMVを使用して、現在のCUのPUの予測サンプルブロック(すなわち、予測ブロック)を決定することができる。加えて、ビデオデコーダ30は、現在のCUのTUと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ30は、現在のCUのTUと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ30は、現在のCUのPUの予測サンプルブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構築することができる。ピクチャの各CUのコーディングブロックを再構築することによって、ビデオデコーダ30はピクチャを再構築することができる。
[0060]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定の領域(たとえば、所与のブロック)のビデオデータを表す色またはピクセル値のテーブルとして、いわゆるパレットをコーディングすることができる。このようにして、ビデオデータの現在のブロックの実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、現在のブロックのピクセル値の1つまたは複数のためのインデックス値をコーディングすることができ、インデックス値は、現在のブロックのピクセル値を表すために使用されるパレット中のエントリーを示す。
[0061]一例では、ビデオエンコーダ20は、ブロックのためのパレットを決定し、ブロックの1つまたは複数のピクセルの値を表す値を有するパレット中のエントリーを見つけ、ブロックの1つまたは複数のピクセル値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。いくつかの例では、ビデオエンコーダ20は、符号化されたビットストリームにおいてインデックス値をシグナリングすることができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得することができる。ビデオデコーダは、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリーに関連付けることができる。
[0062]別の例では、ビデオエンコーダ20は、ブロックのための予測残差値を決定し、ブロックのためのパレットを決定し、予測残差値の1つまたは複数の値を表す値を有するパレット中のエントリーを見つけ、ブロックのための予測残差値を表すために使用されるパレット中のエントリーを示すインデックス値を伴うブロックを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ30は、符号化されたビットストリームから、ブロックのためのパレット、さらにはブロックの予測残差値のためのインデックス値を取得することができる。ビデオデコーダ30は、ブロックの予測残差値を再構築するために、予測残差値のインデックス値をパレットのエントリーと関連付けることができる。予測残差値は、ブロックのピクセル値を再構築するために、(たとえば、イントラ予測またはインター予測を使用して取得された)予測値に加算され得る。
[0063]以下でより詳細に説明されるように、パレットベースのコーディングの基本的な考えは、コーディングされるべきビデオデータの所与のブロックについて、現在のブロック中の最も支配的なピクセル値を含むパレットが導出されるというものである。たとえば、パレットは、現在のCUに対して支配的である、および/またはそれを表すと考えられる、いくつかのピクセル値を指し得る。ビデオエンコーダ20はまず、パレットのサイズと要素とをビデオデコーダ30に送信することができる。ビデオエンコーダ20は、ある走査順序に従って、所与のブロック中のピクセル値を符号化することができる。所与のブロック中の各ピクセルロケーションについて、ビデオエンコーダ20は、そのピクセルロケーションにおけるピクセル値がパレットに含まれるかどうかを示すために、フラグまたは他のシンタックス要素を送信することができる。そのピクセル値がパレット中にある(すなわち、そのピクセル値を規定するパレットエントリーが存在する)場合、ビデオエンコーダ20は、所与のブロック中のピクセルロケーションのためのピクセル値と関連付けられるインデックス値を、またそれに続いて、所与のブロック中の同様の値の連続的なピクセル値の「ラン(run)」をシグナリングすることができる。この場合、ビデオエンコーダ20は、「ラン(run)」によって包含される後続のピクセルロケーションのためのフラグまたはパレットインデックスを送信せず、それは、それらがすべて同じピクセル値を有するからである。
[0064]ピクセル値がパレット中にない(すなわち、ピクセル値を規定するパレットエントリーが存在しない)場合、ビデオエンコーダ20は、所与のブロック中の所与のピクセルロケーションのためのピクセル値または残差値(またはそれらの量子化されたバージョン)を送信することができる。ビデオデコーダ30はまず、ビデオエンコーダ20から受け取られた情報に基づいてパレットを決定することができる。ビデオデコーダ30は次いで、所与のブロックのピクセル値を再構築するために、所与のブロック中のピクセルロケーションと関連付けられる受け取られたインデックス値をパレットのエントリーにマッピングすることができる。
[0065]パレットベースのコーディングは、ある量のシグナリングオーバーヘッドを有し得る。たとえば、パレットのサイズのようなパレットの特性、さらにはパレット自体をシグナリングするために、いくつかのビットが必要とされ得る。加えて、ブロックのピクセルのインデックス値をシグナリングするために、いくつかのビットが必要とされ得る。本開示の技法は、いくつかの例では、そのような情報をシグナリングするために必要とされるビットの数を減らすことができる。たとえば、本開示で説明される技法は、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、または、パレットベースのコーディングマップと他のシンタックス要素とを送信することの、1つまたは複数の様々な組合せのための技法を含み得る。本開示の特定の技法は、ビデオエンコーダ20および/またはビデオデコーダ30において実施され得る。
[0066]本開示の態様はパレット予測を対象とする。たとえば、本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のピクセル値を示す第1のセットのエントリーを有する第1のパレットを決定することができる。ビデオエンコーダ20および/またはビデオデコーダ30は次いで、第1のパレットの第1のセットのエントリーに基づいて、第2のパレットの第2のピクセル値を示す第2のセットのエントリーを決定することができる。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第2のパレットを使用して(たとえば、ピクセル値の第2のセットを使用して)ビデオデータのブロックのピクセルをコーディングすることができる。
[0067]第1のセットのエントリーに基づいて第2のパレットの第2のセットのエントリーを決定するとき、ビデオエンコーダ20は、第2のパレットを再構築するためにビデオデコーダ30によって使用され得る、様々なシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、パレット全体(または、別々のパレットを有するビデオデータの各々の色成分、たとえば、Y、Cb、Cr、またはY、U、V、またはR、G、Bの場合、複数のパレット)が現在コーディングされているブロックの1つまたは複数の隣接ブロックから予測される(たとえば、コピーされる)ことを示すように、ビットストリーム中の1つまたは複数のシンタックス要素を符号化することができる。
[0068]現在のブロックの現在のパレットのエントリーが予測される際に元となる(たとえば、コピー元の)パレットは、予測パレットと呼ばれ得る。予測パレットは、空間的に隣接するブロックおよび/またはブロックの特定の走査順序で隣接するブロックを含む、1つまたは複数の隣接ブロックからのパレットのエントリーを含み得る。たとえば、隣接ブロックは、現在コーディングされているブロックの左(左の隣接ブロック)または上(上の隣接ブロック)に空間的に位置し得る。別の例では、ビデオエンコーダ20は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコーディングするために使用される特定の走査順序に従って、現在コーディングされているブロックに隣接し得る。すなわち、隣接ブロックは、走査順序において現在のブロックの前にコーディングされる1つまたは複数のブロックであり得る。ビデオエンコーダ20は、パレットがコピーされる際に元となる隣接ブロックのロケーションを示すように、1つまたは複数のシンタックス要素を符号化することができる。
[0069]いくつかの例では、パレット予測はエントリーごとに実行され得る。たとえば、ビデオエンコーダ20は、予測パレットの各エントリーについて、所与のパレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20が現在のブロックのための現在のパレットのエントリーを埋めるために予測を使用しない場合、ビデオエンコーダ20は、現在のブロックのための現在のパレット中の予測されないエントリー、さらにはそのようなエントリーの数を規定するために、1つまたは複数の追加のシンタックス要素を符号化することができる。
[0070]上で説明されたように、現在のブロック、たとえばCUまたはPUについて、そのパレット中のエントリーは、1つまたは複数の以前にコーディングされた隣接ブロックからのパレットエントリーを含む予測パレット中のエントリーから予測され得る。本開示は、現在のブロックのためのパレットを予測するためのいくつかの代替的な技法を説明する。
[0071]一例では、予測パレットは、ある数の、すなわちN個のエントリーを含む。この例では、ビデオエンコーダ20はまず、予測パレットと同じサイズを有するバイナリベクトルV、すなわちサイズNのベクトルを、ビデオデコーダ30に送信する。バイナリベクトル中の各エントリーは、予測パレット中の対応するエントリーが現在のブロックのための現在のパレットに対して再使用またはコピーされるかどうかを示す。たとえば、ビデオエンコーダ20は、バイナリベクトルを含む1つまたは複数のシンタックス要素を符号化することができる。いくつかの場合には、ビデオエンコーダ20は、それぞれのパレットエントリーが現在のパレットにコピーされるかどうかを示す予測パレット中のパレットエントリーの各々に対する1ビットのフラグを含む、バイナリベクトルを符号化する。他の場合には、ビデオエンコーダ20は、バイナリベクトル中のエントリーに関するインジケーションが1ビットフラグとして個々に送られる代わりに一緒に圧縮または結合される、無損失で圧縮されたバイナリベクトルを符号化する。このようにして、ビデオデコーダ30は、現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定する。
[0072]加えて、ビデオエンコーダ20は、どれだけの新たなエントリーが現在のブロックのためのパレットに含まれるかを示す数Mを送信し、次いで、新たなエントリーのためのピクセル値をビデオデコーダ30に送信する。たとえば、ビデオエンコーダ20は、単進コード(unary codes)、切り捨てられた単進コード(truncated unary codes)、指数ゴロム符号(Exponential-Golomb codes)、またはゴロムライス符号(Golomb-Rice codes)のうちの1つを使用して、現在のパレットに含まれる新たなパレットエントリーの数を示す1つまたは複数のシンタックス要素を符号化することができる。このようにして、ビデオデコーダ30は、予測パレットには含まれないが現在のブロックのための現在のパレットには含まれる新たなパレットエントリーの数を決定する。
[0073]この例では、現在のブロックのための現在のパレットの最終的なサイズは、M+Sに等しいものとして導出されてよく、Sは現在のブロックのためのパレットにおいて再使用される予測パレット中のエントリーの数である。ビデオデコーダ30は、コピーされるパレットエントリーの数と新たなパレットエントリーの数との合計に等しいものとして、現在のパレットのサイズを計算することができる。現在のパレットのサイズが決定されると、ビデオデコーダ30は、予測パレットからのコピーされたパレットエントリーとビデオエンコーダ20から明示的にシグナリングされる新たなエントリーとを含む現在のパレットを生成する。
[0074]現在のブロックのためのパレットを生成するために、ビデオデコーダ30は、受け取られたM個の新たなパレットエントリーと、予測パレットから再使用されているS個のコピーされたパレットエントリーとを統合することができる。いくつかの場合には、この統合はピクセル値に基づき得るので、たとえば別々のパレットが各成分について使用されるときには、現在のブロックのためのパレット中のエントリーはパレットインデックスとともに増大(または減少)し得る。他の場合には、この統合は、エントリーの2つのセット、すなわちコピーされたパレットエントリーおよび新たなパレットエントリーの連結であってよい。
[0075]別の例では、ビデオエンコーダ20はまず、現在のブロックのためのパレットのサイズNのインジケーションをビデオデコーダ30に送信する。ビデオエンコーダ20は次いで、現在のブロックのためのパレットと同じサイズを有するベクトルV、すなわちサイズNのベクトルを、ビデオデコーダ30に送信する。ベクトル中の各エントリーは、現在のブロックのためのパレット中の対応するエントリーがビデオエンコーダ20によって明示的に送信されるかどうか、または予測パレットからコピーされるかどうかを示す。予測パレットからコピーされるエントリーについて、ビデオエンコーダ20は、予測パレット中のどのエントリーが現在のブロックのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用することができる。いくつかの場合には、ビデオエンコーダ20は、現在のブロックのためのパレットへと予測パレットからコピーされるべきエントリーを示す、パレットインデックスをシグナリングすることができる。他の場合には、ビデオエンコーダ20はインデックスオフセットをシグナリングすることができ、インデックスオフセットは、現在のブロックのためのパレット中のインデックスと予測パレット中のインデックスとの差である。
[0076]2つの上の例では、現在のブロックのための現在のパレットの予測のために使用される予測パレットが形成される元である、1つまたは複数の以前にコーディングされた隣接ブロックは、現在のブロックの空間的な隣接ブロックおよび/またはブロックの特定の走査順序における現在のブロックの隣接ブロックであり得る。たとえば、隣接ブロックは、現在のブロックの上(すなわち、上の隣接ブロック)または左(すなわち、左の隣接ブロック)に空間的に位置し得る。いくつかの例では、隣接ブロックの候補リストが構築されてよく、ビデオエンコーダ20は候補隣接ブロックの1つまたは複数を示すためにインデックスを送信し、関連付けられるパレットが予測パレットを形成するために使用される。
[0077]いくつかのブロック、たとえば、スライスの始端もしくは他のスライス境界にあるCU、またはビデオデータのスライスもしくはピクチャの最も左のCUについて、パレット予測は無効にされ得る。たとえば、ビデオデータの現在のブロックが、ビデオデータのスライス中の最初のブロック、またはビデオデータのスライスもしくはピクチャの最も左のブロックのうちの1つを備えるときには、ビデオエンコーダ20および/またはビデオデコーダ30は、現在のブロックのための現在のパレットへの予測パレット中のパレットエントリーのコピーを無効にすることができる。
[0078]追加の例では、ビデオエンコーダ20は、現在のブロックのためのパレットに含まれるエントリーの数のインジケーションをビデオデコーダ30に送信する。次いで、パレットエントリーの各々について、ビデオエンコーダ20は、現在のブロックのためのパレットのパレットエントリーがビデオエンコーダ20によって明示的に送信されるかどうか、またはパレットエントリーが以前に再構築されたピクセルから導出されるかどうかを示すために、フラグまたは他のシンタックス要素を送信する。以前に再構築されたピクセルから導出される現在のブロックのためのパレットのパレットエントリーの各々について、ビデオエンコーダ20は、現在のブロック中の再構築されたピクセルのピクセルロケーションまたはパレットエントリーに対応する隣接ブロック中の再構築されたピクセルのピクセルロケーションに関する別のインジケーションを送信する。いくつかの場合には、再構築されたピクセルロケーションのインジケーションは、現在のブロックの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーションのインジケーションは、現在のブロックのためのパレットエントリーを規定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、HEVCにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
[0079]いくつかの例では、パレット全体を予測するための技法は、パレットの1つまたは複数のエントリーを予測するための技法と組み合わされ得る。たとえば、ビデオエンコーダ20は、現在のパレットが予測パレット(たとえば、最後のパレットコーディングされたブロックのためのパレット)から完全にコピーされるかどうかを示すように、ビットストリーム中の1つまたは複数のシンタックス要素を符号化することができる。これが当てはまらない場合、ビデオエンコーダ20は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の1つまたは複数のシンタックス要素を符号化することができる。
[0080]いくつかの例では、パレットのサイズは、ビデオエンコーダ20およびビデオデコーダ30によって適用されるビデオコーディング規格において規定される不変の値であってよく、または、ビデオエンコーダ20からビデオデコーダ30にシグナリングされてよい。色成分の各々が別々のパレットを有する場合、ビデオエンコーダ20は異なるパレットのサイズを別々にシグナリングすることができる。すべての色成分に対する単一のパレットの場合、ビデオエンコーダ20はその単一のパレットの単一のサイズを符号化することができる。別の例では、エントリーの数とパレット値とをシグナリングする代わりに、ビデオエンコーダ20は、各パレット値をシグナリングした後で、シグナリングされたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すために、フラグをシグナリングすることができる。ビデオエンコーダ20は、パレットがすでにある最大のサイズに達している場合、そのような「エンドオブパレット(end of palette)」フラグをシグナリングしなくてよい。
[0081]ビデオエンコーダ20は、パレット予測が有効にされるかどうか、および/またはアクティブであるかどうかを示すように、1つまたは複数のシンタックス要素を符号化することができる。例示を目的とする例では、ビデオエンコーダ20は、各ブロック(たとえば、CUまたはPU)について、ビデオエンコーダ20がそれぞれのブロックのためのパレットを予測するためにパレット予測を使用するかどうかを示すように、pred_palette_flagを符号化することができる。いくつかの例では、ビデオエンコーダは、各々の色成分について別々のフラグ(たとえば、各ブロックについて3つのフラグ)をシグナリングすることができる。他の例では、ビデオエンコーダ20は、ブロックのすべての色成分に適用可能である単一のフラグをシグナリングすることができる。
[0082]ビデオデコーダ30は、符号化されたビットストリームから上で特定された情報を取得することができ、その情報を使用してパレットを再構築することができる。たとえば、ビデオデコーダ30は、特定のパレットが別のパレットから予測されるかどうかを示すデータと、さらには、ビデオデコーダ30が適切な予測パレットのエントリーを使用することを可能にする情報とを受信することができる。
[0083]いくつかの例では、追加で、または代替的に、ビデオエンコーダ20および/またはビデオデコーダ30は、「オンザフライ(on-the-fly)」で、すなわち動的に、パレットを構築することができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、コーディングの間にエントリーを空のパレットに追加することができる。すなわち、ビデオエンコーダ20は、ピクセル値がブロック中の位置のために生成され送信されるにつれて、ピクセル値をパレットに追加することができる。ブロック中で相対的により後でコーディングされるピクセル(たとえば、以前に追加されパレット内でインデックスを付けられた値を有するピクセル)は、パレットのより前に追加されたエントリーを指してよく、たとえば、インデックス値はピクセル値を送信する代わりにピクセル値と関連付けられる。同様に、ブロック中のある位置のための新たなピクセル値を受信すると、ビデオデコーダ30は、ビデオエンコーダ20と同じプロセスをたどり、ピクセル値をパレットに含めることができる。このようにして、ビデオデコーダ30は、ビデオエンコーダ20と同じパレットを構築する。ビデオデコーダ30は、パレットにすでに含まれている値を有するピクセルについて、ピクセル値を特定するインデックス値を受信することができる。ビデオデコーダ30は、受信された情報、たとえばパレットに対するピクセル値とインデックス値とを使用して、ブロックのピクセルを再構築することができる。
[0084]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、固定されたサイズのパレットを保持し得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、最新の再構築されたピクセル値をパレットに追加することができる。パレットに追加される各エントリーについて、最も早くパレットに追加されたエントリーは棄却される。これは、First-in-First-out(FIFO)と呼ばれることがある。パレットを更新するこのプロセスは、パレットモードを使用してコーディングされるブロックのみに対して、または、コーディングモードとは無関係にすべてのブロックに対して適用され得る。
[0085]上で説明された技法は一般に、ビデオエンコーダ20およびビデオデコーダ30がパレットベースのコーディングのためのパレットを構築および/または送信することに関する。本開示の他の態様は、ビデオエンコーダ20および/またはビデオデコーダ30がピクセル値を決定することを可能にするマップを構築および/または送信することに関する。たとえば、本開示の他の態様は、ビデオデータのブロックのピクセル値を規定するパレット中のエントリーを示すインデックスのマップを構築および/または送信することに関する。
[0086]いくつかの例では、ビデオエンコーダ20は、ブロックのピクセルがパレット中の対応する値を有するかどうかを示し得る。例示を目的とする例において、マップの(i,j)のエントリーがビデオデータのブロック中の(i,j)のピクセル位置に対応すると仮定する。この例では、ビデオエンコーダ20は、ブロックの各ピクセル位置についてのフラグを符号化することができる。ビデオエンコーダ20は、(i,j)ロケーションにおけるピクセル値がパレット中の値の1つであることを示すように、(i,j)のエントリーに対して1に等しいフラグを設定することができる。ピクセル値がパレットに含まれる(すなわち、フラグが1に等しい)とき、ビデオエンコーダ20はまた、ピクセル値を規定するパレット中の対応するエントリーを特定する、(i,j)のエントリーに対するパレットインデックスを示すデータを符号化することができる。ピクセル値がパレットに含まれていない(すなわち、フラグが0に等しい)とき、ビデオエンコーダ20はまた、ピクセルに対する(場合によっては量子化された)サンプル値を示すデータを符号化することができる。いくつかの場合には、パレットに含まれないピクセルは「エスケープピクセル(escape pixel)」と呼ばれる。
[0087]ビデオデコーダ30は、符号化されたビットストリームから上で説明されたデータを取得し、そのデータを使用して、ブロック中の特定のロケーションに対するパレットインデックスおよび/またはピクセル値を決定することができる。たとえば、ビデオデコーダ30は、現在のブロックのピクセル値の各々が現在のパレット中に対応するピクセル値を有するかどうかを示す1つまたは複数のシンタックス要素を復号し、現在のパレット中に対応するピクセル値を有する現在のブロックの1つまたは複数のピクセル値のためのインデックス値を示す1つまたは複数のシンタックス要素を復号し、現在のパレット中に対応するピクセル値を有しない現在のブロックの1つまたは複数のピクセル値のためのピクセル値を示す1つまたは複数のシンタックス要素を復号することができる。
[0088]いくつかの例では、所与の位置におけるピクセルがマッピングされるパレットインデックスと、隣接ピクセルが同じパレットインデックスにマッピングされる確率との相関であり得る。すなわち、ピクセルが特定のパレットインデックスにマッピングされるとき、1つまたは複数の(空間的なロケーションに関する)隣接ピクセルが同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
[0089]本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのあるブロックの1つまたは複数のインデックスを、ビデオデータの同じブロックの1つまたは複数のインデックスに対して、決定しコーディングすることができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロック中の第1のピクセルと関連付けられる第1のインデックス値を決定するように構成されてよく、第1のインデックス値は、第1のピクセルの値をパレットのエントリーに関連付ける。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第1のインデックス値に基づいて、ビデオデータのブロック中の1つまたは複数の第2のピクセルと関連付けられる1つまたは複数の第2のインデックス値を決定し、ビデオデータのブロックの第1のピクセルと1つまたは複数の第2のピクセルとをコーディングするように構成され得る。したがって、この例では、マップのインデックスは、マップの1つまたは複数の他のインデックスに対してコーディングされ得る。
[0090]いくつかの例では、ビデオエンコーダ20は、同じインデックス値にマッピングされる所与の走査順序の連続するピクセルの数を示す1つまたは複数のシンタックス要素を符号化することができる。同様の値のインデックス値の列は、本明細書では「ラン(run)」と呼ばれ得る。いくつかの例では、ピクセル値は、パレット中のちょうど1つのインデックス値と関連付けられ得る。したがって、いくつかの例では、値のランは、同様の値のピクセル値の列も指し得る。他の例では、下で有損失コーディングに関して説明されるように、2つ以上のピクセル値が、パレット中の同じインデックス値にマッピングされ得る。そのような例では、値のランは、同様の値のインデックス値を指す。このシナリオでは、デコーダ側で、同様の値のインデックス値のランが、インデックス値に対応するランのピクセル値のランに対応し得る。
[0091]例示を目的とする例では、所与の走査順序の2つの連続するインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続するインデックスが同じ値を有するが、その走査順序の3番目のインデックスが異なる値を有する場合、ランは1に等しい。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得することができ、シンタックス要素によって示されるデータを使用して、同じインデックス値を有する連続するピクセルロケーションの数を決定することができる。
[0092]いくつかの例では、現在のブロックのためのパレット中にあるピクセル値を有する現在のブロック中のすべてのピクセルロケーションは、連続的なピクセルロケーションにおいてピクセル値の「ラン」が後に続くパレットインデックスとともに符号化される。パレット中に1つのエントリーしかない場合、パレットインデックスまたは「ラン」の送信は、現在のブロックについては飛ばされ得る。現在のブロック中のピクセルロケーションの1つにおけるピクセル値がパレット中のピクセル値に対して厳密に一致しない場合、ビデオエンコーダ20は、最も近いピクセル値を有するパレットエントリーの1つを選択し、元のピクセル値とパレットに含まれる予測ピクセル値との間の予測誤差または残差値を計算することができる。ビデオエンコーダ20は、そのピクセルロケーションのための残差値を量子化し、符号化し、ビデオデコーダ30に送信することができる。
[0093]ビデオデコーダ30は次いで、対応する受け取られたパレットインデックスに基づいて、そのピクセルロケーションにおけるピクセル値を導出することができる。導出されたピクセル値および(ビデオエンコーダ20から受け取られた)残差値は次いで、現在のブロック中のそのピクセルロケーションにおけるピクセル値を予測するために使用される。一例では、残差値は、HEVC draft 10によって規定されるHEVC方法を使用して、たとえば、残差4分木(RQT)を適用して残差値を変換し、変換係数を量子化し、量子化された変換係数をエントロピー符号化して、符号化される。いくつかの場合には、残差値は変換を適用することなく直接量子化され得る。ある例として、ビデオデコーダ30は、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を示す1つまたは複数のシンタックス要素を復号することができ、インデックス値は、予測ピクセル値として現在のパレット中の対応するピクセル値を特定し、現在のブロックの1つまたは複数のピクセル値と現在のパレット中の特定された予測ピクセル値との間の残差値を示す1つまたは複数のシンタックス要素を復号する。いくつかの場合には、上の例は有損失コーディングと呼ばれ得る。
[0094]追加で、または代替的に、本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、マップの1つまたは複数のエントリーに対して線のコピーを実行することができる。エントリーはまた、マップのエントリーとブロックのピクセル位置との関係により、「位置(positions)」とも呼ばれ得る。線のコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ20は、ブロック中の特定の位置に対するピクセル値またはインデックスマップ値が、(水平方向の走査では)その特定の位置の上の(たとえば、先行する)線における、または(垂直方向の走査では)その特定の位置の左の(たとえば、先行する)列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定の位置の線の上または左の列のピクセル値もしくはインデックスに等しい、走査順序の中のピクセル値またはインデックスの数を、ランとして示すことができる。この例では、ビデオエンコーダ20およびまたはビデオデコーダ30は、規定された隣接する線(または垂直方向の走査のための列)から、および、現在コーディングされているブロックの線(または垂直方向の走査のための列)に対する規定された数のエントリーのために、ピクセル値またはインデックス値をコピーすることができる。
[0095]いくつかの例では、値のコピー元の線(または垂直方向の走査のための列)は、現在コーディングされている位置の線(または垂直方向の走査のための列)に直接隣接していてよく、たとえばその線の上または左にあってよい。他の例では、ブロックのある数の線が、ビデオエンコーダ20および/またはビデオデコーダ30によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コーディングされているマップの線のための予測値として使用され得る。同様の技法が、垂直方向の走査について、前の列に適用され得る。例示を目的とする例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ピクセルの現在の行をコーディングする前に、インデックスまたはピクセル値の以前の4つの行を記憶するように構成され得る。この例では、予測行(インデックスまたはピクセル値のコピー元の行)は、切り捨てられた単進コードまたは単進コードのような他のコードによって、ビットストリームにおいて示され得る。切り捨てられた単進コードに関して、ビデオエンコーダ20および/またはビデオデコーダ30は、水平方向の走査のための最大の行の計算値(たとえば、row_index−1)または垂直方向の走査のための最大の列の計算値(たとえば、column_index−1)に基づいて、切り捨てられた単進コードの最大値を決定することができる。加えて、コピーされる予測行からの位置の数のインジケーションも、ビットストリームに含まれ得る。いくつかの例では、現在の位置の予測元の線(または垂直方向の走査の場合は列)が別のブロック(たとえば、CUまたCTU)に属する場合、そのような予測は無効にされ得る。
[0096]別の例として、ビデオエンコーダ20は、「上の線の左半分からコピー」または「上の線の右半分からコピー」のような、現在コーディングされているマップの線にコピーすべき、隣接する線と隣接する線のエントリーの数または部分とを示す、命令をシグナリングすることができる。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、90度、180度、もしくは270度回転されてよく、または上下もしくは左右が反転されてよい。したがって、ピクセル値またはインデックス値の2次元配列を1次元配列に変換するために、任意の走査が使用され得る。
[0097]エントリーのいわゆるランをコーディングするための技法が、上で説明された線のコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ20は、マップ中のエントリーの値がパレットから取得されるかどうか、または、マップ中のエントリーの値がマップ中の以前にコーディングされた線から取得されるかどうかを示す、1つまたは複数のシンタックス要素(たとえば、フラグ)を符号化することができる。ビデオエンコーダ20はまた、パレットのインデックス値または線(行または列)の中のエントリーのロケーションを示す1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、同じ値を共有する連続するエントリーの数を示す1つまたは複数のシンタックス要素を符号化することができる。ビデオデコーダ30は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップとピクセル値とを再構築することができる。
[0098]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)であり得る。いくつかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する1つまたは複数のシンタックス要素を符号化することができる。加えて、または代替的に、走査方向は、一定値であり得るか、または、たとえばブロックサイズ、色空間、および/または色成分のようないわゆるサイド情報に基づいてシグナリングまたは推測され得る。ビデオエンコーダ20は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックのすべての色成分に適用され得る。
[0099]いくつかの例では、ビデオエンコーダ20は、所与の走査順序で同様の値のインデックス値のランをビデオデコーダ30に送信しなくてよい。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップのエントリーを決定するために、ランの値を暗黙的に導出することができる。この場合、ビデオエンコーダ20は、所与のインデックス値のランが現れることをビデオデコーダ30にシグナリングすることができるが、ランの値はシグナリングしなくてよい。たとえば、ランの値は定数値であってよく、または、たとえばブロックサイズのようなコーディングされているビデオデータの現在のブロックのサイド情報に基づいて導出され得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分(高さの半分)、現在のブロックの幅および/もしくは高さの分数、または現在のブロックの幅および/もしくは高さの倍数に等しくてよい。いくつかの例では、ビデオエンコーダ20は、高レベルのシンタックスを使用して、ランの値をビデオデコーダ30にシグナリングすることができる。いくつかの例では、「高レベルのシンタックス」という語句は、たとえば、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、およびビデオパラメータセット(VPS)のようなパラメータセット中のシンタックス、ならびにスライスヘッダ中のシンタックスを指す。
[0100]加えて、または代替的に、ビデオエンコーダ20は、マップをビデオデコーダ30に送信する必要もないことがある。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップに含まれるインデックス値の各々のランの開始の位置またはロケーションを暗黙的に導出することができる。一例では、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されるビデオコーディング規格は、ランがある特定のロケーションにおいてのみ開始し得ると決定することができる。たとえば、ランは、各行の始端、または現在のブロックのN行ごとの始端においてのみ開始してよい。開始ロケーションは、異なる走査順序に対しては異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在のブロックのN列ごとの始端においてのみ開始してよい。別の例では、開始ロケーションは、現在のブロックのサイド情報に依存して導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、現在のブロックの各行および/もしくは各列の中間点、または現在のブロックの各行および/もしくは各列の分数であり得る。いくつかの例では、ビデオエンコーダ20は、高レベルのシンタックスを使用して、開始位置をビデオデコーダ30にシグナリングすることができる。
[0101]いくつかの例では、各々上で説明された、暗黙的な開始位置の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップ中の同様の値のインデックス値のランが2つの隣接する開始位置の間の距離に等しいと決定することができる。開始位置が現在のブロックの各行の始端(すなわち、最初の位置)である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの長さが現在のブロックの全体の行の長さに等しいと決定することができる。
[0102]以下でより詳細に説明されるいくつかの場合には、1つのパレットが、現在のブロック中の複数の色成分に対して生成され共有される。たとえば、現在のブロック中の各ピクセルロケーションについて、3つの色成分(たとえば、Yルーマ成分とUクロマ成分およびVクロマ成分の両方)中のピクセル値がベクトル(すなわち、色ベクトル)を形成し得る。次いで、現在のブロックを表すためにある数のベクトルを選択することによって、パレットが形成され得る。ルーマ成分のためにピクセル値のあるパレットを有し、クロマ成分のためにピクセル値の別のパレットを有することが可能であり得る。上でより詳細に説明された線のコピーも、単一のパレットとともに機能し得る。共有されたパレットによって、パレットエントリーは、(Y,U,V)または(Y,Cb,Cr)または(R,G,B)という3つの要素からなる組であり得る。この場合、各ピクセルロケーションのためのパレットインデックスは、走査が水平方向であれば上の行の、または走査が垂直方向であれば左の列のパレットインデックスと等しいものとしてシグナリングされ、そして、関連付けられる数のパレットインデックスがランに基づいて前の行または列からコピーされる。
[0103]2つ以上の色空間に対してパレットが共有される場合、または色空間の各々に対してパレットが別個である場合のいずれでも、色空間の間で幾何学的情報が共有され得る。クロマ成分は、4:2:2または4:2:0のサンプリングのような、事前に定義された方法でルーマ成分からダウンサンプリングされている可能性があるので、通常は、異なる色成分の中のコロケートされた(collocated)ブロックのエッジロケーションの間には高い相関がある。
[0104]たとえば、パレットベースのコーディングでは、現在のブロックのエッジがランを乱す(break the run)ので、現在のブロックの幾何学的情報を示すために、ランコーディング(run coding)が使用され得る。4:4:4のクロマフォーマットの場合、ランは1度だけ生成され、すべての色成分に対して使用され得る。ランは色成分の1つに基づいて生成されてよく、またはランは色成分の2つ以上を使用して生成されてよい。4:2:2のクロマフォーマットまたは4:2:0のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のためにダウンサンプリングされ得る。
[0105]本開示の技法はまた、パレットベースのコーディングの他の態様を含む。たとえば、本開示の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットコーディングモードを使用してブロックがコーディングされることを示すように、各ブロックに対する1つまたは複数のシンタックス要素をコーディングすることができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30が、パレットベースのコーディングモードが特定のブロックをコーディングするために使用されるべきかどうかを示すように、パレットモードフラグ(PLT_Mode_flag)をコーディングすることができる。この例では、ビデオエンコーダ20は、現在符号化されているブロック(「現在のブロック」)がパレットモードを使用して符号化されることを規定するために、1に等しいPLT_Mode_flagを符号化することができる。0に等しいPLT_Mode_flagの値は、現在のブロックがパレットモードを使用して符号化されないことを規定する。この場合、ビデオデコーダ30は、符号化されたビットストリームからPLT_Mode_flagを取得し、パレットベースのコーディングモードを適用してブロックを復号することができる。2つ以上の利用可能なパレットベースのコーディングモードがある(たとえば、コーディングのために利用可能な2つ以上のパレットベースの技法がある)例では、1つまたは複数のシンタックス要素は、ブロックのために複数の異なるパレットモードの1つを示すことができる。
[0106]いくつかの例では、ビデオエンコーダ20は、現在のブロックがパレットモードを使用して符号化されないことを規定するために、0に等しいPLT_Mode_flagを符号化することができる。そのような例では、ビデオエンコーダ20は、様々なインター予測モード、イントラ予測モード、または他のコーディングモードのいずれかを使用して、ブロックを符号化することができる。PLT_Mode_flagが0に等しいとき、ビデオエンコーダ20は、それぞれのブロックを符号化するために使用される特定のモードを示すために、追加の情報(たとえば、シンタックス要素)を送信することができる。いくつかの例では、以下で説明されるように、モードは、HEVCコーディングモード、たとえばHEVC規格における通常のインター予測モードまたはイントラ予測モードであり得る。PLT_Mode_flagの使用が、例を目的に説明される。他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコーディングモードが1つまたは複数のブロックのために使用されるべきかどうかを示すために、または、複数のモードのいずれが使用されるべきかを示すために、使用され得る。
[0107]パレットベースのコーディングモードが使用されるとき、パレットは、たとえば、本明細書で説明される技法の1つまたは複数を使用して、ビデオデコーダ30による使用のために、符号化されたビデオデータビットストリームの中で、ビデオエンコーダ20によって送信される。パレットは、各ブロックについて送信されてよく、またはいくつかのブロックの間で共有されてよい。パレットは、ブロックについて支配的な、および/またはブロックを表現する、いくつかのピクセル値を指し得る。
[0108]たとえば、パレットに含まれるピクセル値の数によるパレットのサイズは、固定されていてよく、または、符号化されたビットストリーム中の1つまたは複数のシンタックス要素を使用してシグナリングされてよい。下でより詳細に説明されるように、ピクセル値は、たとえばコーディングのために使用される色空間に応じて、いくつかのサンプルから構成され得る。たとえば、ピクセル値は、ルーマサンプルとクロミナンスサンプル(たとえば、ルーマ、UクロミナンスおよびVクロミナンス(YUV)サンプル、または、ルーマ、Cbクロミナンス、およびCrクロミナンス(YCbCr)サンプル)とを含み得る。別の例では、ピクセル値は、赤、緑、および青(RGB)のサンプルを含み得る。本明細書で説明されるように、ピクセル値という用語は一般に、ピクセルに寄与するサンプルの1つまたは複数を指し得る。すなわち、ピクセル値という用語は、ピクセルに寄与するすべてのサンプルを必ずしも指すとは限らず、ピクセルに寄与する単一のサンプル値を記述するために使用され得る。
[0109]いくつかの例では、パレットは、特定のブロックの各々の色成分に対して別々に送信され得る。たとえば、YUV色空間では、Y成分(Y値を表す)に対するパレット、U成分(U値を表す)に対する別のパレット、およびV成分(V値を表す)に対するさらに別のパレットがあってよい。別の例では、パレットは、特定のブロックのすべての成分を含み得る。この例では、パレット中のi番目のエントリーは3つの値(たとえば、Yi、Ui、Vi)を含み得る。本開示の態様によれば、1つまたは複数のシンタックス要素は、各成分(たとえば、Y、U、Vなど)に対するパレットのサイズを別々に示し得る。他の例では、1つまたは複数のシンタックス要素がすべての成分のサイズを示すように、すべての成分に対して単一のサイズが使用され得る。
[0110]ビデオエンコーダ20および/またはビデオデコーダ30は、有損失または無損失の方式で、パレットベースのコーディングを実行することができる。すなわち、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ブロックのピクセル値と一致するパレットのエントリーを使用して(または、ピクセル値がパレットの中に含まれていない場合、実際のピクセル値を送ることによって)、ブロックのためのビデオデータを無損失でコーディングすることができる。他の例では、下で図5に関してより詳細に説明されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、ブロックのピクセル値と厳密に一致しないパレットのエントリーを使用して、ブロックのためのビデオデータをコーディングすることができる(有損失コーディング)。同様に、実際のピクセル値がパレットに含まれない場合、実際のピクセル値は有損失の方式で量子化され得る。
[0111]本開示で説明される技法によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、予測されるビデオブロックのパレットベースのコーディングを実行することができる。一例では、ビデオエンコーダ20はまず、現在のブロック中のピクセル値に基づいて現在のブロックのためのパレットを導出し、現在のブロック中のピクセル値を符号化のためのパレットインデックスにマッピングする。このマッピングは、1対1(すなわち、無損失コーディングの場合)または複数対1(すなわち、有損失コーディングの場合)であってよい。ビデオエンコーダ20はまた、現在のブロック中のピクセル値を予測するために使用される、以前にコーディングされたブロック中の参照ピクセル値をマッピングする。現在のブロックのピクセル値がパレットインデックスにマッピングされると、ビデオエンコーダ20は、通常の符号化方法、たとえばHEVC規格における通常のイントラコーディングを使用して、パレットインデックスを伴う現在のブロックを符号化することができる。
[0112]上の例では、パレットインデックスを伴う現在のブロックは、ピクセル値を伴う元のブロックであるかのように扱われる。同様に、参照ピクセルのパレットインデックスは、パレットインデックスを伴う現在のブロックに対して通常のイントラ予測を実行するために使用される。ビデオエンコーダ20は、予測誤差または残差値をビデオデコーダ30に送信する。現在のブロックを符号化した後で、ビデオエンコーダ20は、参照ピクセル、予測ピクセル、および残差値のインデックスを、現在のブロックの再構築および今後のブロックの普通の予測のために、ピクセル値へと変換し戻す。ビデオデコーダ30は、ビットストリームから現在のブロックのための符号化された残差値を取得し、パレットインデックスを伴う現在のブロックを取得するために通常の復号方法を使用して現在のブロックを復号することができる。ビデオデコーダ30は次いで、パレットインデックスと関連付けられるパレット中のピクセル値に基づいて、現在のブロックのピクセル値を決定することができる。
[0113]別の例では、ビデオエンコーダ20は、現在のブロックのためのパレットを生成することができ、このパレットは、所与のブロックのための予測残差値を示すエントリーを含む。所与のブロックのための予測残差値は、任意の予測モード、たとえばHEVC規格における通常のインター予測またはイントラ予測を使用して生成され得る。所与のブロックのための予測残差値は、残差ピクセル値または残差変換係数値であり得る。いずれの場合でも、予測残差値は量子化され得る。この例では、ビデオエンコーダ20は、現在のブロックのための予測残差値を、現在のブロックのための予測残差値を表すために使用される現在のブロックのためのパレット中のエントリーを示すインデックス値にマッピングし、インデックス値を使用して予測残差値を符号化する。ビデオデコーダ30は、ビットストリームからインデックス値のブロックを取得し、インデックス値によって特定されるパレット中の対応する予測残差値に基づいて、現在のブロックのための予測残差値を決定することができる。ビデオデコーダ30は次いで、予測残差値および以前にコーディングされた参照ピクセル値に基づいて、通常の復号方法を使用して現在のブロックのピクセル値を再構築することができる。
[0114]いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、イントラ予測モードを適用することによって、ビデオブロック予測を伴うパレットベースのビデオコーディングを実行することができる(すなわち、予測は現在のピクチャ中の以前にコーディングされたピクセル情報のみを使用する)。他の場合には、ビデオエンコーダ20および/またはビデオデコーダ30は、インター予測モードを適用することができる(すなわち、予測は以前にコーディングされたピクチャ中のピクセルからのものである)。いくつかの場合には、ビデオエンコーダ20および/またはビデオデコーダ30は、インター予測モードとイントラ予測モードのいずれかに対する予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。
[0115]別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、現在のブロックのための予測を実行しなくてよい。この場合、ビデオエンコーダ20は代わりに、ピクセル値をパレットインデックスにマッピングし、予測を伴わずにエントロピーコーディングを使用してインデックスを符号化する。追加の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックス値にマッピングされる現在のブロックのピクセル値を使用して、残差差分パルス符号変調(RDPCM)を実行することができる。この例では、現在のブロックの外側のピクセルからの予測は使用されず、水平方向または垂直方向の予測が現在のCU内のインデックス値を線コピーするために使用され得る。
[0116]いくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
[0117]図2は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図2は、説明のために提供されるものであり、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングの状況においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0118]ビデオエンコーダ20は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ20は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ20は、一例では、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、ビデオエンコーダ20は、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すために、パレット中のピクセル値を選択することができる。この例では、ビデオエンコーダ20は、ビデオデータのブロックの位置の少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングすることができる。ビデオデコーダ30は、ビデオデータを復号するために、シグナリングされた情報を使用することができる。
[0119]図2の例では、ビデオエンコーダ20は、ビデオデータメモリ98と、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構築ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニットと、動き補償ユニット(図示されず)とを含む。ビデオエンコーダ20はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
[0120]ビデオデータメモリ98は、ビデオエンコーダ20のコンポーネントによって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ98に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ116は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ98および復号ピクチャバッファ116は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ98および復号ピクチャバッファ116は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ98は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
[0121]ビデオエンコーダ20はビデオデータを受信することができる。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化することができる。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB)と、ピクチャの対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割することができる。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUと関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
[0122]ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(すなわち、コーディングされたCU)を生成することができる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間でCUと関連付けられたコーディングブロックを区分することができる。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上で示されたように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズを2N×2Nと仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合は2N×2NまたはN×NのPUサイズをサポートすることができ、インター予測の場合は2N×2N、2N×N、N×2N、N×N、または同様の対称のPUサイズをサポートすることができる。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測のために、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称区分化をサポートすることができる。
[0123]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成することができる。PUの予測データは、PUの1つまたは複数の予測サンプルブロックと、PUの動き情報とを含み得る。インター予測ユニット121は、PUがIスライス中にあるか、Pスライス中にあるか、Bスライス中にあるかに応じて、CUのPUに対して異なる動作を実行することができる。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測ユニット121は、PUに対してインター予測を実行しない。したがって、Iモードで符号化されるブロックでは、予測ブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
[0124]PUがPスライス中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUの参照領域について参照ピクチャリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索することができる。PUの参照領域は、PUのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、PUの参照領域を含んでいる参照ピクチャのRefPicList0中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、PUのコーディングブロックと、参照領域と関連付けられた参照ロケーションとの間の空間変位を示すMVを生成することができる。たとえば、MVは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として、参照インデックスとMVとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測サンプルブロックを生成することができる。
[0125]PUがBスライス中にある場合、動き推定ユニットは、PUについての単予測または双予測を実行することができる。PUについての単予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを探索することができる。動き推定ユニットは、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUのサンプルブロックと参照領域と関連付けられた参照ロケーションとの間の空間変位を示すMVと、参照ピクチャがRefPicList0中にあるかRefPicList1中にあるかを示す1つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも一部基づいて、PUの予測サンプルブロックを生成することができる。
[0126]PUについての双方向インター予測を実行するために、動き推定ユニットは、PUの参照領域についてRefPicList0中の参照ピクチャを探索することができ、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照ロケーションとPUのサンプルブロックとの間の空間変位を示すMVを生成することができる。PUの動き情報は、PUの参照インデックスとMVとを含み得る。動き補償ユニットは、PUの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成することができる。
[0127]本開示の技法によれば、ビデオエンコーダ20は、パレットベースのコーディングを実行するように構成され得る。HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードとして使用されるように構成され得る。したがって、CUの状況において(本開示全体で)本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、PUモードに適用され得る。しかしながら、これらのHEVCベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム/規格もしくはまだ開発されていないシステム/規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
[0128]パレットベースの符号化ユニット122は、たとえば、パレットベースの符号化モードがたとえばCUまたはPUのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの符号化ユニット122は、ピクセル値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリーと関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベースの符号化ユニット122によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0129]パレットベースの符号化ユニット122は、本明細書で説明される様々なシンタックス要素のいずれをも生成するように構成され得る。したがって、ビデオエンコーダ20は、本開示で説明されるようなパレットベースのコードモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化し、または、たとえばHEVCインター予測コーディングモードまたはイントラ予測コーディングモードのような異なるモードを使用してビデオデータのブロックを符号化することができる。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオエンコーダ20は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードによっていくつかのブロックを符号化し、パレットベースのコーディングモードによって他のブロックを復号することができる。
[0130]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUの予測データを生成することができる。PUの予測データは、PUの予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実行することができる。
[0131]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUの予測データの複数のセットを生成することができる。PUのための予測データのセットを生成するためにいくつかのイントラ予測モードを使用するとき、イントラ予測処理ユニット126は、そのイントラ予測モードと関連付けられた方向へ、PUの予測ブロック全体にわたって、隣接するPUのサンプルブロックからのサンプルの値を延ばすことができる。隣接PUは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば33個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はPUと関連付けられた領域のサイズに依存し得る。
[0132]予測処理ユニット100は、PUのためにインター予測処理ユニット120によって生成された予測データ、またはPUのためにイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUの予測データを選択することができる。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪みの尺度に基づいて、CUのPUの予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれ得る。
[0133]残差生成ユニット102は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)、ならびにCUのPUの選択された予測サンプルブロック(たとえば、予測ルーマブロック、Cbブロック、およびCrブロック)に基づいて、CUの残差ブロック(たとえば、ルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を生成することができる。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルがCUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差に等しい値を有するように、CUの残差ブロックを生成することができる。
[0134]変換処理ユニット104は、4分木区分を実行して、CUと関連付けられた残差ブロックをCUのTUと関連付けられた変換ブロックに区分することができる。したがって、いくつかの例では、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックと関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。「残差4分木(residual quad-tree)」(RQT)として知られる4分木構造は、各領域と関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
[0135]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUの各TUに対して変換係数ブロックを生成することができる。変換処理ユニット104は、TUと関連付けられた変換ブロックに様々な変換を適用することができる。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用することができる。いくつかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
[0136]量子化ユニット106は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数のいくつかまたはすべてと関連付けられたビット深度を低減することができる。たとえば、nビット変換係数は量子化の間にmビットの変換係数に切り捨てられてよく、ただし、nはmよりも大きい。量子化ユニット106は、CUと関連付けられた量子化パラメータ(QP)値に基づいて、CUのTUと関連付けられた係数ブロックを量子化することができる。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらすことがあり、したがって、量子化された変換係数は、元の係数よりも低い精度を有することがある。
[0137]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化と逆変換とを適用して、係数ブロックから残差ブロックを再構築することができる。再構築ユニット112は、再構築された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測サンプルブロックからの対応するサンプルに追加して、TUと関連付けられる再構築された変換ブロックを生成することができる。ビデオエンコーダ20は、このようにCUの各TUのための変換ブロックを再構築することによって、CUのコーディングブロックを再構築することができる。
[0138]フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUと関連付けられたコーディングブロック中のブロッキングアーティファクトを低減することができる。復号ピクチャバッファ116は、フィルタユニット114が、再構築されたコーディングブロックに対して1つまたは複数のデブロッキング動作を実行した後、再構築されたコーディングブロックを記憶することができる。インター予測処理ユニット120は、再構築されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行することができる。加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116中の再構築されたコーディングブロックを使用して、CUと同じピクチャ中の他のPUに対してイントラ予測を実行することができる。
[0139]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受け取ることができる。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受け取ることができ、予測処理ユニット100からシンタックス要素を受け取ることができる。エントロピー符号化ユニット118は、このデータに対して1つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット118は、CABAC演算、コンテキスト適応型可変長コーディング(CAVLC)演算、変数−変数(V2V:variable-to-variable)レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。たとえば、ビットストリームはCUのRQTを表すデータを含み得る。
[0140]いくつかの例では、残差コーディングはパレットコーディングとともに実行されない。したがって、ビデオエンコーダ20は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を実行しなくてよい。加えて、ビデオエンコーダ20は、残差データとは別に、パレットコーディングモードを使用して生成されたデータをエントロピー符号化することができる。
[0141]本開示の技法の1つまたは複数によれば、ビデオエンコーダ20、および具体的にはパレットベースの符号化ユニット122は、予測されたビデオブロックのパレットベースのビデオコーディングを実行することができる。上で説明されたように、ビデオエンコーダ20によって生成されたパレットは、明示的に符号化されてビデオデコーダ30に送られてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
[0142]一例では、ビデオエンコーダ20のパレットベースの符号化ユニット122は、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中の1つまたは複数のパレットエントリーを決定し、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。この情報に基づいて、パレットベースのビデオエンコーダ20は、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオエンコーダ20は、コピーされたパレットエントリーおよび新たなパレットエントリーに関する決定された情報をビデオデコーダ30に送信することができる。加えて、ビデオエンコーダ20は、新たなパレットエントリーのためのピクセル値を明示的に符号化し、ビデオデコーダ30に送信することができる。ビデオエンコーダ20のパレットベースの符号化ユニット122は次いで、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定することによって、現在のブロックを符号化することができる。
[0143]本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、1つまたは複数の様々な組合せのための技法を含み得る。
[0144]図3は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図3は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明の目的で、本開示は、HEVCコーディングの状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0145]ビデオデコーダ30は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオデコーダ30は、パレットベースのコーディングと非パレットベースのコーディングのいずれかを使用して、HEVCコーディングにおけるCUまたはPUのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。一例では、ビデオデコーダ30は、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、ビデオデコーダ30は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリーと関連付ける情報を受信し得る。この例では、ビデオデコーダ30は、情報に基づいてパレット中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構築し得る。
[0146]図3の例では、ビデオデコーダ30は、ビデオデータメモリ148と、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構築ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。ビデオデコーダ30はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実行するように構成される、パレットベースの復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
[0147]ビデオデータメモリ148は、ビデオエンコーダ30のコンポーネントによって復号されるべき、符号化されたビデオビットストリームのようなビデオデータを記憶することができる。ビデオデータメモリ148に記憶されたビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラのようなローカルビデオソースから、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ148は、符号化されたビデオビットストリームからの符号化ビデオデータを記憶するコーディング済ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ162は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ148および復号ピクチャバッファ162は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ148および復号ピクチャバッファ162は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ148は、ビデオデコーダ30の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
[0148]ビデオデータメモリ148、すなわち、CPBは、ビットストリームの符号化されたビデオデータ(たとえば、NALユニット)を受け取り、記憶することができる。エントロピー復号ユニット150は、ビデオデータメモリ148から符号化されたビデオデータ(たとえば、NALユニット)を受け取ることができ、NALユニットを解析してシンタックス要素を復号することができる。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構築ユニット158、およびフィルタユニット160は、ビットストリームから取得された(たとえば、抽出された)シンタックス要素に基づいて、復号されたビデオデータを生成することができる。
[0149]ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出し、エントロピー復号することができる。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたPPSを識別するシンタックス要素を含み得る。
[0150]ビデオデコーダ30は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないCUに対して再構築動作を実行することができる。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構築動作を実行することができる。CUの各TUに対して再構築動作を実行することによって、ビデオデコーダ30はCUの残差ブロックを再構築することができる。
[0151]CUのTUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)することができる。逆量子化ユニット154は、TUのCUと関連付けられたQPの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコーディングの方法に依存し得る。
[0152]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUと関連付けられた残差ブロックを生成するために、係数ブロックに1つまたは複数の逆変換を適用することができる。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用することができる。
[0153]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUの予測ブロックを生成することができる。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUのイントラ予測モードを決定することができる。
[0154]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを構築することができる。さらに、PUがインター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUの動き情報を抽出することができる。動き補償ユニット164は、PUの動き情報に基づいて、PUのための1つまたは複数の参照領域を決定することができる。動き補償ユニット164は、PUの1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUの予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を生成することができる。
[0155]再構築ユニット158は、CUのTUと関連付けられた変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)、ならびにCUのPUの予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)を、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築することができる。たとえば、再構築ユニット158は、変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)のサンプルを予測ブロック(たとえば、予測ルーマブロック、予測Cbブロック、および予測Crブロック)の対応するサンプルに加算して、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を再構築することができる。
[0156]フィルタユニット160は、デブロッキング動作を実行して、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)と関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ30は、CUのコーディングブロック(たとえば、ルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック)を、復号ピクチャバッファ162に記憶することができる。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32のようなディスプレイデバイス上での提示のために、参照ピクチャを提供することができる。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のブロック(たとえば、ルーマブロック、Cbブロック、およびCrブロック)に基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実行することができる。このようにして、ビデオデコーダ30は、有意な係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力することができる。
[0157]本開示の様々な例によれば、ビデオデコーダ30は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット165は、たとえば、パレットベースの復号モードがたとえばCUまたはPUのために選択されるとき、パレットベースの復号を実行することができる。たとえば、パレットベースの復号ユニット165は、ピクセル値を示すエントリーを有するパレットを生成するように構成され得る。さらに、この例では、パレットベースの復号ユニット165は、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリーと関連付ける情報を受け取ることができる。この例では、パレットベースの復号ユニット165は、その情報に基づいてパレット中のピクセル値を選択することができる。加えて、この例では、パレットベースの復号ユニット165は、選択されたピクセル値に基づいてブロックのピクセル値を再構築することができる。様々な機能がパレットベースの復号ユニット165によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
[0158]パレットベースの復号ユニット165は、パレットコーディングモード情報を受け取り、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上の動作を実行することができる。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または、他のモード情報が異なるモードの使用を示すとき、パレットベースの復号ユニット165は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、HEVCインター予測コーディングモードまたはイントラ予測コーディングモードのような非パレットベースのコーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されるCUまたはPUであり得る。ビデオデコーダ30は、インター予測時間予測コーディングモードまたはイントラ予測空間コーディングモードによっていくつかのブロックを復号し、パレットベースのコーディングモードによって他のブロックを復号することができる。パレットベースのコーディングモードは、複数の異なるパレットベースのコーディングモードの1つを備えてよく、または単一のパレットベースのコーディングモードがあってよい。
[0159]本開示の技法の1つまたは複数によれば、ビデオデコーダ30、および具体的にはパレットベースの復号ユニット165は、予測されたビデオブロックのパレットベースのビデオ復号を実行することができる。上で説明されたように、ビデオデコーダ30によって生成されたパレットは、ビデオエンコーダ20によって明示的に符号化されてよく、以前のパレットエントリーから予測されてよく、以前のピクセル値から予測されてよく、またはこれらの組合せであってよい。
[0160]一例では、ビデオデコーダ30のパレットベースの復号ユニット165は、ビデオデータの現在のブロックのための現在のパレットにコピーされる予測パレット中の1つまたは複数のパレットエントリーを決定し、予測パレット中にはないが現在のパレットには含まれる新たなパレットエントリーの数を決定する。ビデオデコーダ30は、コピーされたパレットエントリーおよび新たなパレットエントリーに関する情報をビデオエンコーダ20から受信することができる。加えて、ビデオデコーダ30は、ビデオエンコーダ20から送信される、新たなパレットエントリーのための明示的に符号化されたピクセル値を受信することができる。この情報に基づいて、パレットベースの復号ユニット165は、現在のパレットのサイズを、コピーされたパレットエントリーの数と新たなパレットエントリーの数の合計と等しくなるように計算し、コピーされたパレットエントリーと新たなパレットエントリーとを含む、決定されたサイズの現在のパレットを生成する。ビデオデコーダ30のパレットベースの復号ユニット165は次いで、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定することによって、現在のブロックを復号することができる。
[0161]本開示で説明される技法はまた、パレットベースのコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、またはパレットベースのコーディングマップと他のシンタックス要素とを送信することの、1つまたは複数の様々な組合せのための技法を含み得る。
[0162]上で説明されたように、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、予測されたビデオブロックのパレットベースのコーディングを実行することができる。一例では、ビデオエンコーダ20はまず、現在のブロック中のピクセル値に基づいて現在のブロックのためのパレットを導出し、現在のブロック中のピクセル値を符号化のためのパレットインデックスにマッピングする。このマッピングは、1対1(すなわち、無損失コーディングの場合)または複数対1(すなわち、有損失コーディングの場合)であってよい。ビデオエンコーダ20はまた、現在のブロック中のピクセル値を予測するために使用され得る、以前にコーディングされたブロック中の参照ピクセル値をマッピングすることができる。ビデオエンコーダ20が現在のブロックのピクセル値をパレットインデックスにマッピングすると、ビデオエンコーダ20は、通常の符号化方法、たとえばHEVC規格における通常のイントラコーディングを使用して、現在のブロックを符号化する。
[0163]上の例では、パレットインデックスを伴う現在のブロックは、ピクセル値を伴う元のブロックであるかのように扱われる。同様に、参照ピクセルのパレットインデックスは、パレットインデックスを伴う現在のブロックに対して通常のイントラ予測を実行するために使用される。ビデオエンコーダ20は、予測誤差または残差値をビデオデコーダ30に送信することができる。いくつかの場合には、予測誤差または残差値は、変換されてよく、量子化されてよく、ビットストリームにエントロピー符号化されてよい。他の場合には、変換および量子化はパレットコーディングモードでは無効にされることも可能である。現在のブロックを符号化した後で、ビデオエンコーダ20は、参照ピクセル、予測ピクセル、および/または残差値のインデックスを、現在のブロックの再構築および今後のブロックの普通の予測のために、ピクセル値へと変換し戻すことができる。ビデオデコーダ30は、ビットストリームから現在のブロックのための符号化された残差値を取得することができる。さらに、ビデオデコーダ30は、パレットインデックスを伴う現在のブロックを取得するための通常の復号方法を使用して、現在のブロックを復号することができる。ビデオデコーダ30は次いで、パレットインデックスと関連付けられるパレット中のピクセル値に基づいて、現在のブロックのピクセル値を決定することができる。
[0164]別の例では、ビデオエンコーダ20は、現在のブロックのためのパレットを生成することができる。パレットは、所与のブロックのための予測残差値を示すエントリーを含み得る。所与のブロックのための予測残差値は、任意の予測モード、たとえばHEVC規格における通常のインター予測またはイントラ予測を使用して生成され得る。所与のブロックのための予測残差値は、残差ピクセル値(場合によっては量子化された)または残差変換係数値(場合によっては量子化された)であり得る。この例では、ビデオエンコーダ20は、現在のブロックのための予測残差値を、現在のブロックのための予測残差値を表すために使用される現在のブロックのためのパレット中のエントリーを示すインデックス値にマッピングする。この例では、ビデオエンコーダ20は、現在のブロック中の1つまたは複数の位置に対するインデックス値を符号化することができ、このインデックス値は、現在のブロックのための予測残差値を規定する現在のブロックのためのパレット中のエントリーを示す。ビデオデコーダ30は、ビットストリームからインデックス値の符号化されたブロックを取得し、インデックス値によって特定されるパレット中の対応する予測残差値に基づいて、現在のブロックのための予測残差値を決定することができる。ビデオデコーダ30は次いで、予測残差値および以前にコーディングされた参照ピクセル値に基づいて、通常の復号方法を使用して現在のブロックのピクセル値を再構築することができる。
[0165]いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、イントラ予測モードを適用することによって、ビデオブロック予測を伴うパレットベースのビデオコーディングを実行することができる(すなわち、予測は現在のピクチャ中の以前にコーディングされたピクセル情報のみを使用する)。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、インター予測モードを適用することができる(すなわち、予測は以前にコーディングされたピクチャ中のピクセルからのものである)。一例では、現在のブロックのための予測残差値は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から計算される現在のブロックのための残差ピクセル値であり得る。この残差ピクセル値は量子化され得る。別の例では、現在のブロックのための予測残差値は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から計算され、次いで変換され場合によっては量子化される、現在のブロックのための残差変換係数値であり得る。
[0166]いくつかの場合には、ビデオエンコーダ20および/またはビデオデコーダ30は、インター予測モードとイントラ予測モードのいずれかに対する予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。たとえば、イントラ予測モードの場合、DC予測プロセス、水平方向の予測プロセス、および/または垂直方向の予測プロセスが有効にされ得るが、他のイントラ予測モードプロセスは無効にされ得る。この無効にされたプロセスは、イントラ予測モードにおけるフィルタリング、たとえば、モード依存イントラ平滑化(MDIS:mode-dependent intra-smoothing)、1/32ペル双線形補間、エッジフィルタ、および/またはDCフィルタの1つまたは複数を含んでよく(背景の紹介は、「Adaptive Filter Control for Intra Prediction in Video Coding」という表題の、2013年10月14日に出願された米国仮出願第61/890,844号、出願人参照番号1212−671USP3/134960P3において見出され得る)、この例では無効にされる。さらなる例として、インター予測モードの場合、ピクセルの平均化のプロセス、たとえば、加重予測、双予測、またはサブペル補間の1つまたは複数が無効にされ得る。
[0167]別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、現在のブロックのための予測を実行しなくてよい。この場合、ビデオエンコーダ20は代わりに、ピクセル値をパレットインデックスにマッピングし、予測を伴わずにエントロピーコーディングを使用してインデックスを符号化する。追加の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックス値にマッピングされる現在のブロックのピクセル値を使用して、残差差分パルス符号変調(RDPCM)を実行することができる。この場合、現在のブロックの外側のピクセルからの予測は使用されず、水平方向または垂直方向の予測が現在のCU内のインデックス値を線コピーするために使用され得る。たとえば、垂直方向の予測を使用するとき、現在のブロックの最初の行の中のロケーションは予測されず、後続の行の中のロケーションは以前の行の中の値を使用して予測されてよく、たとえば、x(i,j)に等しい行i(i>0)の中の値はx(i−1,j)を使用して予測される。水平方向の予測を使用するとき、現在のブロックの第1の列の中のロケーションは予測されず、後続の列の中のロケーションは以前の列の中の値を使用して予測され得る。
[0168]いくつかの例では、ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、エンコーダまたはデコーダ、または組み合わされたエンコーダ−デコーダ(コーデック)は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実行するように構成され得る。
[0169]図4は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図4の例は、第1のセットのパレット(すなわち、第1のパレット184)と関連付けられる第1のコーディングユニット(CU)180と第2のセットのパレット(すなわち、第2のパレット192)と関連付けられる第2のCU 188とを有するピクチャ178を含む。下でより詳細に説明されるように、本開示の技法のうちの1つまたは複数によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードによりコーディングされるブロック196と、インター予測コーディングモードによりコーディングされるブロック200とを含む。
[0170]図4の技法は、ビデオエンコーダ20(図1および図2)とビデオデコーダ30(図1および図3)の状況において、説明を目的としてHEVCビデオコーディング規格に関して説明される。HEVCフレームワークに関して、例として、パレットベースのコーディング技法は、CUモードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、HEVCのフレームワークにおいてPUモードまたはTUモードとして使用されるように構成され得る。したがって、CUモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、PUまたはTUに適用され得る。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを、理解されたい。
[0171]一般に、パレットは、現在コーディングされているCU(たとえば、図4の例ではCU 188)について支配的である、および/またはそのCUを表現する、いくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、CUの各々の色成分について別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分のためのパレットと、CUのクロマ(U)成分のための別のパレットと、CUのクロマ(V)成分のためのさらに別のパレットとを符号化することができる。この例では、YパレットのエントリーはCUのピクセルのYの値を表すことができ、UパレットのエントリーはCUのピクセルのUの値を表すことができ、VパレットのエントリーはCUのピクセルのVの値を表すことができる。
[0172]他の例では、ビデオエンコーダ20は、CUのすべての色成分について単一のパレットを符号化することができる。この例では、ビデオエンコーダ20は、Yiと、Uiと、Viとを含む、三重の値であるi番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず、限定することは意図されない。
[0173]図4の例では、第1のパレット184の各々は、エントリーインデックス値1、エントリーインデックス値2、およびエントリーインデックス値3をそれぞれ有する、3つのエントリー202〜206を含む。エントリー202〜206は、ピクセル値A、ピクセル値B、およびピクセル値Cをそれぞれ含むピクセル値に、インデックス値を関連付ける。第1のパレット184の各々は実際にはインデックスと列ヘッダとを含まず、ピクセル値A、B、およびCのみを含み、インデックスはパレット中のエントリーを特定するために使用されることに留意されたい。
[0174]本明細書で説明されるように、第1のCU 180の実際のピクセル値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30のような)は、パレットベースのコーディングを使用して、インデックス1〜3を使用してブロックのピクセルをコーディングすることができる。すなわち、第1のCU 180の各ピクセル位置について、ビデオエンコーダ20はピクセルのインデックス値を符号化することができ、インデックス値は、第1のパレット184の1つまたは複数の中のピクセル値と関連付けられる。ビデオデコーダ30は、ビットストリームからインデックス値を取得することができ、インデックス値と第1のパレット184の1つまたは複数とを使用してピクセル値を再構築することができる。言い換えると、ブロックのための各々のそれぞれのインデックス値について、ビデオデコーダ30は、第1のパレット184の1つの中のエントリーを決定することができる。ビデオデコーダ30は、ブロック中のそれぞれのインデックス値を、パレット中の決定されたエントリーによって規定されるピクセル値によって置き換えることができる。ビデオエンコーダ20は、パレットベースの復号におけるビデオデコーダ30による使用のために、符号化されたビデオデータビットストリーム中で第1のパレット184を送信することができる。一般に、1つまたは複数のパレットは、各CUについて送信されてよく、または異なるCUの間で共有されてよい。
[0175]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定することができる。たとえば、ビデオエンコーダ20は、(空間的に、または走査順序に基づいて)隣接するCUまたは原因となる隣接物の最頻のサンプルのような、1つまたは複数の他のCUと関連付けられる1つまたは複数のパレットからCUのためのパレットが予測されるかどうかを示すために、各CU(例として、第2のCU 188を含む)のためのpred_palette_flagを符号化することができる。たとえば、そのようなフラグの値が1に等しいとき、ビデオデコーダ30は、第2のCU 188のための第2のパレット192が1つまたは複数のすでに復号されているパレットから予測され、したがって第2のCU 188のための新たなパレットがpred_palette_flagを含むビットストリームに含まれないと、決定することができる。そのようなフラグが0に等しいとき、ビデオデコーダ30は、第2のCU 188のためのパレット192が新たなパレットとしてビットストリームに含まれると決定することができる。いくつかの例では、pred_palette_flagは、CUの各々の異なる色成分について別々にコーディングされ得る(たとえば、YUVビデオにおけるCUについては、Yについて1つ、Uについて1つ、およびVについて1つの3つのフラグ)。他の例では、単一のpred_palette_flagは、CUのすべての色成分に対しコーディングされ得る。
[0176]上の例では、現在のブロックのためのパレットのエントリーのいずれかが予測されるかどうかを示すために、pred_palette_flagがCUごとにシグナリングされる。これは、第2のパレット192が第1のパレット184と同一であり追加の情報がシグナリングされないことを意味する。他の例では、1つまたは複数のシンタックス要素は、エントリーごとにシグナリングされ得る。すなわち、現在のパレット中にエントリーが存在するかどうかを示すために、フラグがパレット予測子の各エントリーについてシグナリングされ得る。上で述べられたように、パレットのエントリーが予測されない場合、パレットのエントリーは明示的にシグナリングされ得る。他の例では、これらの2つの方法は組み合わされ得る。たとえば、最初にpred_palette_flagがシグナリングされる。フラグが0である場合、エントリーごとの予測フラグがシグナリングされ得る。加えて、新たなエントリーの数およびそれらの明示的な値がシグナリングされ得る。
[0177]第1のパレット184に対して第2のパレット192を決定する(たとえば、pred_palette_flagが1に等しい)ときには、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では第1のパレット184が決定される際に元となる、1つまたは複数のブロックを位置特定することができる。予測パレットは、現在コーディングされているCUの1つまたは複数の隣接CU(たとえば、(空間的に、または走査順序に基づいて)隣接するCU、または原因となる隣接物の最頻のサンプル)、すなわち第2のCU 188と関連付けられ得る。1つまたは複数の隣接CUのパレットは、予測パレットと関連付けられ得る。いくつかの例では、図4に示される例のように、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU 188のための予測パレットを決定するとき、左の隣接CUである第1のCU 180を位置特定することができる。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のCUであるCU 196のような、第2のCU 188に対して他の位置にある1つまたは複数のCUを位置特定することができる。別の例では、パレットモードを使用した走査順序中の最後のCUのためのパレットが、予測パレットとして使用され得る。
[0178]ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づいて、パレット予測のためのCUを決定することができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は最初に、パレット予測のために、左の隣接CUである第1のCU 180を特定することができる。左の隣接CUが予測のために利用可能ではない場合(たとえば、左の隣接CUが、イントラ予測モードもしくはイントラ予測モードのようなパレットベースのコーディングモード以外のモードによりコーディングされる、またはピクチャもしくはスライスの最も左端に位置する)、ビデオエンコーダ20および/またはビデオデコーダ30は、上の隣接CUであるCU 196を特定することができる。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUを位置特定するまで、所定のロケーション順序に従って利用可能なCUを探し続けることができる。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロックおよび/または隣接ブロックの再構築されたサンプルに基づいて予測パレットを決定することができる。
[0179]図4の例は単一のCU(すなわち、第1のCU 180)からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接CUの組合せから予測のためのパレットを位置特定することができる。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、複数の(空間的に、または走査順序において)隣接するCUの1つまたは組合せのパレットに基づいて予測パレットを生成するために、1つまたは複数の式、関数、規則などを適用することができる。
[0180]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの可能性のある候補含む候補リストを構築することができる。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在のCUが選択される(パレットをコピーする)際に元となるリスト中のCUの候補を示すために、候補リストに対するインデックスを符号化することができる。ビデオデコーダ30は、同じ方式で候補リストを構築し、インデックスを復号し、復号されたインデックスを使用して現在のCUとともに使用するための対応するCUのパレットを選択することができる。別の例では、リスト中の示された候補CUのパレットは、現在のCUのための現在のパレットのエントリーごとの予測のための予測パレットとして使用され得る。
[0181]例示を目的とする例では、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているCUの上に配置されている1つのCUと、現在コーディングされているCUの左に配置されている1つのCUとを含む、候補リストを構築することができる。この例では、ビデオエンコーダ20は、候補の選択を示すように1つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの左に配置されているCUからコピーされることを示すために、0という値を有するフラグを符号化することができる。ビデオエンコーダ20は、現在のCUのためのパレットが現在のCUの上に配置されているCUからコピーされることを示すために、1という値を有するフラグを符号化することができる。ビデオデコーダ30は、フラグを復号し、パレット予測のために適切なCUを選択する。別の例では、フラグは、上のまたは左の隣接CUのパレットが予測パレットとして使用されるかどうかを示し得る。次いで、予測パレット中の各エントリーについて、エントリーが現在のCUのためのパレットにおいて使用されるかどうかが示され得る。
[0182]さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレットに含まれるサンプル値が1つまたは複数の隣接CUの中で現れる頻度に基づいて、現在コーディングされているCUのためのパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のCUのコーディングの間に最も頻繁に使用されるインデックス値と関連付けられる色を記録することができる。ビデオエンコーダ20および/またはビデオデコーダ30は、現在のコーディングされているCUのためのパレットに、その最も頻繁に使用される色を含めることができる。
[0183]上で述べられたように、いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダは、現在のCUをコーディングするために、隣接CUからパレット全体をコピーすることができる。追加で、または代替的に、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリーごとのパレット予測を実行することができる。たとえば、ビデオエンコーダ20は、予測パレット(たとえば、別のCUのパレット)に基づいて、それぞれのエントリーが予測されるかどうかを示す、パレットの各エントリーのための1つまたは複数のシンタックス要素を符号化することができる。この例では、ビデオエンコーダ20は、エントリーが予測パレットからの予測された値(たとえば、隣接CUと関連付けられるパレットの対応するエントリー)であるとき、所与のエントリーについて1の値を有するフラグを符号化することができる。ビデオエンコーダ20は、特定のエントリーが別のCUのパレットから予測されないことを示すために、その特定のエントリーについて0の値を有するフラグを符号化することができる。この例では、ビデオエンコーダ20は、予測されないパレットのエントリーの値を示す追加のデータも符号化することができる。
[0184]本開示は、現在のCUのためのパレットを予測するためのいくつかの代替的な技法を説明する。一例では、1つまたは複数の以前にコーディングされた隣接CUからのパレットエントリーを含む予測パレットは、ある数の、すなわちN個のエントリーを含む。この場合、ビデオエンコーダ20はまず、予測パレットと同じサイズ、すなわちサイズNを有するバイナリベクトルVを、ビデオデコーダ30に送信する。バイナリベクトル中の各エントリーは、予測パレット中の対応するエントリーが現在のCUのためのパレットに対して再使用またはコピーされるかどうかを示す。たとえば、V(i)=1は、隣接CUのための予測パレット中のi番目のエントリーが、現在のCUにおいて異なるインデックスを有し得る現在のCUのためのパレットに対して再使用またはコピーされることを意味する。
[0185]加えて、ビデオエンコーダ20は、どれだけの新たなパレットエントリーが現在のCUのためのパレットに含まれるかを示す数Mを送信し、次いで、新たなパレットエントリーの各々についてのピクセル値をビデオデコーダ30に送信することができる。この例では、現在のCUのためのパレットの最終的なサイズは、M+Sに等しいものとして導出されてよく、Sは現在のCUのためのパレットに対して再使用またはコピーされ得る(すなわち、V(i)=1)予測パレット中のエントリーの数である。現在のCUのためのパレットを生成するために、ビデオデコーダ30は、送信された新たなパレットエントリーと、予測パレットから再使用されるコピーされたパレットエントリーとを統合することができる。いくつかの場合には、この統合はピクセル値に基づき得るので、現在のCUのためのパレット中のエントリーはパレットインデックスとともに増大(または減少)し得る。他の場合には、この統合は、エントリーの2つのセット、すなわち新たなパレットエントリーおよびコピーされたパレットエントリーの連結であってよい。
[0186]別の例では、ビデオエンコーダ20はまず、現在のCUのためのパレットのサイズNのインジケーションをビデオデコーダ30に送信する。ビデオエンコーダ20は次いで、現在のCUのためのパレットと同じサイズ、すなわちサイズNを有するベクトルVを、ビデオデコーダ30に送信する。ベクトル中の各エントリーは、現在のCUのためのパレット中の対応するエントリーがビデオエンコーダ20によって明示的に送信されるか、または予測パレットからコピーされるかを示す。たとえば、V(i)=1はビデオエンコーダ20がパレット中のi番目のエントリーをビデオデコーダ30に送信することを意味し、V(i)=0はパレット中のi番目のエントリーが予測パレットからコピーされることを意味する。予測パレットからコピーされる(すなわち、V(i)=0)エントリーについて、ビデオエンコーダ20は、予測パレット中のどのエントリーが現在のCUのためのパレットにおいて使用されるかをシグナリングするために、異なる方法を使用することができる。いくつかの場合には、ビデオエンコーダ20は、現在のCUのためのパレットに予測パレットからコピーされるべきエントリーのパレットインデックスをシグナリングすることができる。他の場合には、ビデオエンコーダ20はインデックスオフセットをシグナリングすることができ、インデックスオフセットは、現在のCUのためのパレット中のインデックスと予測パレット中のインデックスとの差である。
[0187]2つの上の例では、現在のCUのためのパレットの予測のために使用される予測パレットを生成するために使用される1つまたは複数の以前にコーディングされた隣接CUは、現在のCUに対して上の隣接する(すなわち、上側の)CUまたは左の隣接するCUであり得る。いくつかの例では、隣接CUの候補リストが構築されてよく、ビデオエンコーダ20は、どの候補隣接CUおよび関連付けられるパレットが現在のCUに対するパレット予測のために使用されるかを示すために、インデックスを送信する。特定のCU、たとえば、スライスの始端もしくは他のスライス境界に配置されるCU、またはビデオデータのスライスもしくはピクチャ中の最も左のCUについて、パレット予測は無効にされ得る。
[0188]追加の例では、ビデオエンコーダ20は、現在のCUのためのパレットに含まれるエントリーの数のインジケーションをビデオデコーダ30に送信する。次いで、パレットエントリーの各々について、ビデオエンコーダ20は、パレットエントリーがビデオエンコーダ20によって明示的に送信されるかどうか、またはパレットエントリーが以前に再構築されたピクセルから導出されるかどうかを示すために、フラグまたは他のシンタックス要素を送信する。たとえば、1に等しく設定された1ビットのフラグは、ビデオエンコーダ20が明示的にパレットエントリーを送ることを意味してよく、0に等しく設定された1ビットのフラグは、パレットエントリーが以前に再構築されたピクセルから導出されることを意味してよい。以前に再構築されたピクセルから導出されるパレットエントリーの各々について、ビデオエンコーダ20は、現在のCU中の再構築されたピクセルのピクセルロケーションまたはパレットエントリーに対応する隣接CUに関する別のインジケーションを送信する。いくつかの場合には、再構築されたピクセルロケーションのインジケーションは、現在のCUの左上の位置に対する変位ベクトルであり得る。他の場合には、再構築されたピクセルロケーションのインジケーションは、現在のCUのためのパレットエントリーを規定するために使用され得る再構築されたピクセルのリストへのインデックスであり得る。たとえば、このリストは、HEVCにおいて通常のイントラ予測のために使用され得るすべての参照ピクセルを含み得る。
[0189]図4の例では、第2のパレット192は、エントリーインデックス値1、エントリーインデックス値2、エントリーインデックス値3、およびエントリーインデックス値4をそれぞれ有する、4つのエントリー208〜214を含む。エントリー208〜214は、ピクセル値A、ピクセル値B、ピクチャ値C、およびピクセル値Dをそれぞれ含むピクセル値に、インデックス値を関連付ける。本開示の1つまたは複数の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、上で説明された技法のいずれかを使用して、パレット予測の目的で第1のCU 180を位置特定し、第1のパレット184のエントリー1〜3を、第2のCU 188をコーディングするための第2のパレット192のエントリー1〜3にコピーすることができる。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定することができる。加えて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含まれるべきエントリー4のためのデータをコーディングすることができる。そのような情報は、予測パレットから予測されないパレットのエントリーの数と、それらのパレットのエントリーに対応するピクセル値とを含み得る。
[0190]いくつかの例では、本開示の態様によれば、1つまたは複数のシンタックス要素は、第2のパレット192のようなパレットが予測パレット(図4では第1のパレット184として示されるが、1つまたは複数のブロックからのエントリーから構成されていてよい)から完全に予測されるかどうか、または第2のパレット192の特定のエントリーが予測されるかどうかを示し得る。たとえば、初期シンタックス要素は、エントリーのすべてが予測されるかどうかを示し得る。エントリーのすべてが予測されるのではないことを初期シンタックス要素が示す(たとえば、フラグが0という値を有する)場合、1つまたは複数の追加のシンタックス要素が、第2のパレット192のどのエントリーが予測パレットから予測されるかを示し得る。
[0191]本開示のいくつかの態様によれば、パレット予測と関連付けられるいくつかの情報は、コーディングされているデータの1つまたは複数の特性から推測され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化するのではなく(およびビデオデコーダ30がそのようなシンタックス要素を復号するのではなく)、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいて、パレット予測を実行することができる。
[0192]ある例では、例示を目的として、上で説明されたpred_palette_flagの値は、例として、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidの1つまたは複数から推測され得る。すなわち、例としてCUのサイズに関して、ビデオエンコーダ20および/またはビデオデコーダ30は、上で説明されたpred_palette_flagが所定のサイズを超えるまたは所定のサイズよりも小さい任意のCUについて1に等しいと、決定することができる。この例では、pred_palette_flagは、符号化されるビットストリームにおいてシグナリングされる必要はない。
[0193]上ではpred_palette_flagに関して説明されたが、ビデオエンコーダ20および/またはビデオデコーダ30は、加えて、または代替的に、パレットが予測のために使用される際に元となるCUの候補、またはパレット予測の候補を構築するための規則のような、パレット予測と関連付けられる他の情報を、コーディングされているデータの1つまたは複数の特性に基づいて推測することができる。
[0194]本開示の他の態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、オンザフライでパレットを構築することができる。たとえば、第2のCU 188を最初にコーディングするとき、パレット192にはエントリーはない。ビデオエンコーダ20およびビデオデコーダ30が第2のCU 188のピクセルの新たな値をコーディングするにつれて、各々の新たな値がパレット192に含められる。すなわち、たとえば、ビデオエンコーダ20は、ピクセル値がCU 188の中の位置のために生成されシグナリングされるにつれて、ピクセル値をパレット192に追加する。ビデオエンコーダ20はCUにおいて相対的により後でピクセルを符号化するので、ビデオエンコーダ20は、ピクセル値をシグナリングするのではなくインデックス値を使用して、パレットにすでに含まれているものと同じ値を有するピクセルを符号化することができる。同様に、ビデオデコーダ30が第2のCU 188の中の位置に対する新たなピクセル値(たとえば、ビデオエンコーダ20によってシグナリングされる)を受け取るとき、ビデオデコーダ30は、ピクセル値をパレット192に含める。第2のCU 188において相対的により後で復号されるピクセル位置が、第2のパレット192に追加されているピクセル値を有するとき、ビデオデコーダ30は、第2のCU 188のピクセル値の再構築のために第2のパレット192の中の対応するピクセル値を特定する情報、たとえばインデックス値などを受け取ることができる。
[0195]いくつかの例では、下でより詳細に説明されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット184と192とを最大パレットサイズ以下に維持することができる。本開示の態様によれば、最大パレットサイズに達すると、たとえば、第2のパレット192がオンザフライで動的に構築されるにつれて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192のエントリーを除去するために同じプロセスを実行する。パレットのエントリーを除去するための1つの例示的なプロセスは、ビデオエンコーダ20およびビデオデコーダ30がパレットの最も古いエントリーを除去するfirst−in−first−out(FIFO)技法である。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットから最も使用頻度の低いパレットのエントリーを除去することができる。さらに別の例では、ビデオエンコーダ20およびビデオデコーダ30は、どのエントリーを除去するかを決定するために、FIFOプロセスと使用頻度のプロセスの両方を重視することができる。すなわち、エントリーの除去は、エントリーがどれだけ古いか、およびエントリーがどれだけ頻繁に使用されるかに基づき得る。
[0196]いくつかの態様によれば、エントリー(ピクセル値)がパレットから除去され、ピクセル値がコーディングされているCU中のより後の位置において再び現れる場合、ビデオエンコーダ20は、パレットにエントリーを含めてインデックスを符号化する代わりに、ピクセル値を符号化することができる。追加で、または代替的に、ビデオエンコーダ20は、たとえばビデオエンコーダ20およびビデオデコーダ30がCUの中の位置を走査するにつれて、エントリーを除去された後でパレットに再び入れることができる。
[0197]いくつかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための1つまたは複数の他の技法と組み合わされ得る。具体的には、例として、ビデオエンコーダ20およびビデオデコーダ30は、(たとえば、パレット184から第2のパレット192を予測するためにパレット予測を使用して)第2のパレット192を最初にコーディングすることができ、第2のCU 188のピクセルをコーディングするときに第2のパレット192を更新することができる。たとえば、初期パレットを送信すると、ビデオエンコーダ20は、CUの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加し、または初期パレット中の値を変更することができる。同様に、初期パレットを受信すると、ビデオデコーダ30は、CUの中の追加のロケーションのピクセル値が走査されるにつれて、値を初期パレットに追加する(すなわち、含める)か、または初期パレット中の値を変更することができる。
[0198]ビデオエンコーダ20は、いくつかの例では、現在のCUがパレット全体の送信を使用するか、またはオンザフライのパレット生成を使用するか、または、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかを、シグナリングすることができる。いくつかの例では、初期パレットは最大パレットサイズにある満杯のパレットであることがあり、この場合、初期パレット中の値は変更され得る。他の例では、初期パレットは最大パレットサイズより小さいことがあり、この場合、ビデオエンコーダ20およびビデオデコーダ30は、初期パレットの値に値を追加し、および/または初期パレットの値を変更することができる。
[0199]本開示の1つまたは複数の態様によれば、たとえばパレットに含まれるピクセル値の数による、第1のパレット184および第2のパレット192のようなパレットのサイズは、固定されていてよく、または、符号化されたビットストリーム中の1つまたは複数のシンタックス要素を使用してシグナリングされてよい。たとえば、いくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、単進コードまたは切り捨てられた単進コード(たとえば、最大限のパレットサイズにおいて切り捨てるコード)を使用することができる。他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットサイズをコーディングするために、指数ゴロム符号またはライスゴロム符号を使用することができる。
[0200]さらに他の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットの各エントリーの後でパレットのサイズを示すデータをコーディングすることができる。例として、第2のパレットの192に関して、ビデオエンコーダ20は、エントリー208〜214の各々の後で停止フラグを符号化することができる。この例では、1に等しい停止フラグは、現在コーディングされているエントリーが第2のパレット192の最後のエントリーであることを規定し得るが、0に等しい停止フラグは、第2のパレット192に追加のエントリーがあることを示し得る。したがって、ビデオエンコーダ20は、エントリー208〜212の各々の後で0という値を有する停止フラグを符号化し、エントリー214の後で1という値を有する停止フラグを符号化することができる。いくつかの例では、停止フラグは、構築されたパレットが最大パレットサイズの限度に達すると、ビットストリームに含まれなくてよい。上の例はパレットのサイズを明示的にシグナリングするための技法を開示するが、他の例では、パレットのサイズはまた、いわゆるサイド情報(たとえば、上で述べられたような、コーディングされているCUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidのような特性情報)に基づいて、条件的に送信または推測され得る。
[0201]本開示の技法は、無損失で、または代替的にはいくらかの損失を伴って(有損失コーディング)、データをコーディングすることを含む。たとえば、有損失コーディングに関して、ビデオエンコーダ20は、パレットのピクセル値を厳密にCU中の実際のピクセル値と厳密に照合することなく、CUのピクセルをコーディングすることができる。本開示の技法が有損失コーディングに適用されるとき、いくつかの制約がパレットに適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184および第2のパレット192のようなパレットを量子化することができる。すなわち、ビデオエンコーダ20およびビデオデコーダ30は、エントリーのピクセル値が互いに所定の範囲内にあるとき、パレットのエントリーを統合するまたは組み合わせる(すなわち、量子化する)ことができる。言い換えると、新たなパレット値の誤差の限度内にあるパレット値がすでにある場合、新たなパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なるピクセル値が、単一のパレットのエントリーに、または等価的に、単一のパレットのピクセル値にマッピングされ得る。
[0202]ビデオデコーダ30は、特定のパレットが無損失であるか有損失であるかにかかわらず、同じ方式でピクセル値を復号することができる。一例として、ビデオデコーダ30は、コーディングされたブロック中の所与のピクセル位置のためにビデオエンコーダ20によって送信されるインデックス値を使用して、パレットが無損失であるか有損失であるかに関係なく、そのピクセル位置のためのパレット中のエントリーを選択することができる。この例では、パレットのエントリーのピクセル値は、それが元のピクセル値と厳密に一致するかどうかにかかわらず、コーディングされたブロック中のピクセル値として使用される。
[0203]例示を目的として、有損失コーディングの例では、ビデオエンコーダ20は、デルタ値と呼ばれる誤差の限界を決定することができる。ピクセル値のエントリーの候補Plt_candは、CUまたはPUのようなコーディングされるべきブロック中のある位置におけるピクセル値に対応し得る。パレットの構築の間、ビデオエンコーダ20は、ピクセル値のエントリーの候補Plt_candとパレット中の既存のピクセル値のエントリーのすべてとの間の、絶対的な差を決定する。ピクセル値のエントリーの候補Plt_candとパレット中の既存のピクセル値のエントリーとの間の絶対的な差のすべてがデルタ値より大きい場合、ビデオエンコーダ20はピクセル値の候補をエントリーとしてパレットに追加することができる。ピクセル値のエントリーPlt_candとパレット中の少なくとも1つの既存のピクセル値のエントリーとの間の絶対的な差がデルタ値以下である場合、ビデオエンコーダ20は、ピクセル値のエントリーの候補Plt_candをパレットに追加しなくてよい。したがって、ピクセル値のエントリーPlt_candをコーディングするとき、ビデオエンコーダ20は、ピクセル値のエントリーPlt_candに最も近いピクセル値を伴うエントリーを選択することができ、これによっていくらかの損失をシステムにもたらす。パレットが複数の成分(たとえば、3つの色成分)から構成されるとき、個々の成分値の絶対的な差の合計が、デルタ値との比較のために使用され得る。代替的に、または追加で、各成分値の絶対的な差は、第2のデルタ値に対して比較され得る。
[0204]いくつかの例では、上で述べられたパレット中の既存のピクセル値のエントリーが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存のピクセル値が、他のプロセスを使用して追加されていることがある。たとえば、1つまたは複数の初期ピクセル値のエントリーが、パレットを構築するデルタ比較プロセスを開始するために(デルタ比較を伴わずに)パレットに追加され得る。上で説明されたプロセスは、ルーマパレットおよび/またはクロマパレットを生成するために、ビデオエンコーダ20および/またはビデオデコーダ30によって実施され得る。
[0205]パレット構築に関して上で説明された技法も、ピクセルコーディングの間にビデオエンコーダ20およびビデオデコーダ30によって使用され得る。たとえば、ピクセル値を符号化するとき、ビデオエンコーダ20は、ピクセルの値をパレット中のエントリーのピクセル値と比較することができる。ピクセルの値とパレット中のエントリーの1つとの間の絶対的なピクセル値の差がデルタ値以下である場合、ビデオエンコーダ20は、パレットのエントリーとしてピクセル値を符号化することができる。すなわち、この例では、ビデオエンコーダ20は、ピクセル値がパレットのエントリーに対して十分に小さい(たとえば、所定の範囲内にある)絶対的な差を生成するとき、パレットのエントリーの1つを使用してピクセル値を符号化する。
[0206]いくつかの例では、ビデオエンコーダ20は、ピクセル値を符号化するために、最小の絶対的なピクセル値の差(コーディングされているピクセル値と比較した)を生むパレットのエントリーを選択することができる。ある例として、ビデオエンコーダ20は、ピクセル値のために使用されるパレットのエントリー、たとえば、ビデオデコーダ30においてコーディングされたピクセル値を再構築するために使用されるパレットのピクセル値のエントリーを示すために、インデックスを符号化することができる。ピクセルの値とパレット中のエントリーのすべてとの間の絶対的なピクセル値の差がデルタより大きい場合、エンコーダは、ピクセル値を符号化するためにパレットのエントリーの1つを使用しなくてよく、代わりに、(場合によっては量子化後に)ピクセルのピクセル値をビデオデコーダ30に送信する(および場合によってはピクセル値をエントリーとしてパレットに追加する)ことができる。
[0207]別の例では、ビデオエンコーダ20は、ピクセル値を符号化するためにパレットのエントリーを選択することができる。ビデオエンコーダ20は、予測ピクセル値として選択されたエントリーを使用することができる。すなわち、ビデオエンコーダ20は、実際のピクセル値と選択されたエントリーとの差を表す残差値を決定し、残差を符号化することができる。ビデオエンコーダ20は、パレットのエントリーによって予測されるブロック中のピクセルに対する残差値を生成することができ、ピクセルのブロックに対するそれぞれの残差ピクセル値を含む残差ブロックを生成することができる。ビデオエンコーダ20はその後、(図2に関して上で述べられたような)送信と量子化とを残差ブロックに適用することができる。このようにして、ビデオエンコーダ20は、量子化された残差変換係数を生成することができる。別の例では、残差は無損失で(変換および量子化を伴わずに)、または変換を伴わずにコーディングされ得る。
[0208]ビデオデコーダ30は、残差ブロックを再生成するために、変換係数を逆変換し逆量子化することができる。ビデオデコーダ30は次いで、予測パレットのエントリー値とピクセル値に対する残差値とを使用して、ピクセル値を再構築することができる。たとえば、ビデオデコーダ30は、残差値をパレットのエントリー値と組み合わせて、コーディングされたピクセル値を再構築することができる。
[0209]いくつかの例では、デルタ値は、異なるCUサイズ、ピクチャサイズ、色空間、または異なる色成分に対しては異なり得る。デルタ値は、様々なコーディング条件に基づいて事前に決定されてよく、または決定されてよい。たとえば、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、デルタ値をビデオデコーダ30にシグナリングすることができる。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、同じ固定されたデルタ値を使用するように事前に構成され得る。さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、サイド情報(たとえば、上で述べられたような、CUサイズ、色空間、色成分などのような)に基づいて、デルタ値を適応的に導出することができる。
[0210]いくつかの例では、有損失コーディングパレットモードはHEVCコーディングモードとして含まれ得る。たとえば、コーディングモードは、イントラ予測モードと、インター予測モードと、無損失コーディングパレットモードと、有損失コーディングパレットモードとを含み得る。HEVCコーディングでは、図2および図3に関して上で述べられたように、量子化パラメータ(QP)が、許容される歪みを制御するために使用される。パレットベースのコーディングのためのデルタの値は、QPの関数として計算されてよく、または別様に決定されてよい。たとえば、上で説明されたデルタ値は、1<<(QP/6)または1<<((QP+d)/6)であってよく、ここでdは定数であり、「<<」はビットごとの左シフトの演算子を表す。
[0211]本開示で説明される有損失コーディング技法を使用したパレットの生成は、ビデオエンコーダ20、ビデオデコーダ30、または両方によって実行され得る。たとえば、ビデオエンコーダ20は、上で説明されたデルタ比較技法を使用してCUのためのパレット中のエントリーを生成し、ビデオデコーダ30による使用のためにパレットの構築のための情報をシグナリングすることができる。すなわち、ビデオエンコーダ20は、CUのためのパレット中のエントリーに対するピクセル値を示す情報をシグナリングし、次いで、そのようなパレットのエントリーと関連付けられるピクセル値を使用してピクセル値を符号化するように構成され得る。ビデオデコーダ30は、そのような情報を使用してパレットを構築することができ、次いで、エントリーを使用してコーディングされたブロックのピクセル値を復号することができる。いくつかの例では、ビデオエンコーダ20は、コーディングされたブロックの1つまたは複数のピクセル位置に対するパレットのエントリーを特定するインデックス値をシグナリングすることができ、ビデオデコーダ30は、インデックス値を使用して、パレットから関連するピクセル値のエントリーを取り出すことができる。
[0212]他の例では、ビデオデコーダ30は、上で説明されたデルタ比較技法を適用することによって、パレットを構築するように構成され得る。たとえば、ビデオデコーダ30は、コーディングされたブロック内の位置に対するピクセル値を受け取ることができ、ピクセル値とパレット中の既存のピクセル値のエントリーとの間の絶対的な差がデルタ値より大きいかどうかを決定することができる。大きい場合、ビデオデコーダ30は、たとえば、ビデオエンコーダ20によってシグナリングされた対応するインデックス値を使用したブロックの他のピクセル位置に対するピクセル値のパレットベースの復号において後で使用するために、ピクセル値をエントリーとしてパレットに追加することができる。この場合、ビデオエンコーダ20およびビデオデコーダ30は、パレットを生成するために同じまたは同様のプロセスを適用することができる。大きくない場合、ビデオデコーダ30は、ピクセル値をパレットに追加しなくてよい。
[0213]例示を目的とする例では、ビデオデコーダ30は、ブロック中の様々なピクセル位置に対するインデックス値またはピクセル値を受け取ることができる。インデックス値がピクセル位置について受け取られる場合、たとえば、ビデオデコーダ30は、パレット中のエントリーを特定するためにインデックス値を使用し、そのピクセル位置についてのパレットのエントリーのピクセル値を使用することができる。ピクセル値がそのピクセル値について受け取られる場合、ビデオデコーダ30は、ピクセル位置について受け取られたピクセル値を使用することができ、また、デルタ比較を適用して、ピクセル値がパレットに追加され次いでパレットのコーディングのために後で使用されるべきかどうかを決定することができる。
[0214]エンコーダ側では、ブロック中の位置に対するピクセル値が、デルタ値以下の、そのピクセル値とパレット中の既存のピクセル値のエントリーとの間の絶対的な差を生成する場合、ビデオエンコーダ20は、その位置に対するピクセル値を再構築する際に使用するためのパレット中のエントリーを特定するために、インデックス値を送ることができる。ブロック中の位置に対するピクセル値が、すべてがデルタ値より大きい、そのピクセル値とパレット中の既存のピクセル値のエントリーとの間の絶対的な差の値を生成する場合、ビデオエンコーダ20は、そのピクセル値を送ることができ、そのピクセル値をパレット中の新たなエントリーとして追加することができる。パレットを構築するために、ビデオデコーダ30は、たとえば上で説明されたように、エンコーダによってシグナリングされるデルタ値を使用し、固定されたまたは既知のデルタ値に依存し、または、デルタ値を推測もしくは導出することができる。
[0215]上で述べられたように、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータをコーディングするとき、イントラ予測モードと、インター予測モードと、無損失コーディングパレットモードと、有損失コーディングパレットモードとを含む、コーディングモードを使用することができる。本開示のいくつかの態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースのコーディングが有効にされるかどうかを示す1つまたは複数のシンタックス要素をコーディングすることができる。たとえば、各CUにおいて、ビデオエンコーダ20は、フラグPLT_Mode_flagのようなシンタックス要素を符号化することができる。PLT_Mode_flagまたは他のシンタックス要素は、パレットベースのコーディングモードが所与のCU(または他の例ではPU)のために使用されるべきかどうかを示し得る。たとえば、このフラグは、CUレベルで符号化されたビデオビットストリームの中でシグナリングされてよく、次いで、符号化されたビデオビットストリームを復号するとビデオデコーダ30によって受け取られ得る。
[0216]この例では、1に等しいこのPLT_Mode_flagの値は、パレットベースのコーディングモードを使用して現在のCUが符号化されることを規定し得る。この場合、ビデオデコーダ30は、パレットベースのコーディングモードを適用してCUを復号することができる。いくつかの例では、シンタックス要素は、CUのための複数の異なるパレットベースのコーディングモードの1つ(たとえば、有損失または無損失)を示し得る。0に等しいこのPLT_Mode_flagの値は、パレットモード以外のモードを使用して現在のCUが符号化されることを規定し得る。たとえば、様々なインター予測コーディングモード、イントラ予測コーディングモード、または他のコーディングモードのいずれもが使用され得る。PLT_Mode_flagの値が0であるとき、ビデオエンコーダ20はまた、それぞれのCUを符号化するために使用される特定のモード(たとえば、HEVCコーディングモード)を示すように、追加のデータを符号化することができる。PLT_Mode_flagの使用が、例を目的に説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコーディングモードがCU(または他の例ではPU)のために使用されるべきかどうかを示すために、または、複数のモードのいずれがコーディングのために使用されるべきかを示すために、使用され得る。
[0217]いくつかの例では、上で説明されたフラグまたは他のシンタックス要素は、CU(またはPU)レベルよりも高いレベルで送信され得る。たとえば、ビデオエンコーダ20は、そのようなフラグをスライスレベルでシグナリングすることができる。この場合、1に等しい値は、スライス中のCUのすべてがパレットモードを使用して符号化されることを示す。この例では、たとえばパレットモードまたは他のモードのために、追加のモード情報はCUレベルでシグナリングされない。別の例では、ビデオエンコーダ20は、そのようなフラグを、PPS、SPS、またはVPSにおいてシグナリングすることができる。
[0218]本開示のいくつかの態様によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットモードが特定のスライス、ピクチャ、シーケンスなどのために有効にされるか無効にされるかを規定する1つまたは複数のシンタックス要素(たとえば、上で説明されたフラグのような)を、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルの1つにおいてコーディングすることができ、一方、PLT_Mode_flagは、パレットベースのコーディングモードが各CUのために使用されるかどうかを示す。この場合、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが無効にされることを示す場合、いくつかの例では、各CUのためにPLT_Mode_flagをシグナリングする必要はないことがある。あるいは、スライスレベル、PPSレベル、SPSレベル、またはVPSレベルで送られたフラグまたは他のシンタックス要素が、パレットコーディングモードが有効にされることを示す場合、パレットベースのコーディングモードが各CUのために使用されるべきかどうかを示すために、PLT_Mode_flagがさらにシグナリングされ得る。やはり、上で言及されたように、CUのパレットベースのコーディングを示すためのこれらの技法の適用は、追加で、または代替的に、PUのパレットベースのコーディングを示すために使用され得る。
[0219]いくつかの例では、上で説明されたシンタックス要素は、ビットストリーム中で条件的にシグナリングされ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、シンタックス要素をそれぞれ符号化するだけでよく、または復号するだけでよい。
[0220]上で説明された例は、たとえばビットストリーム中の1つまたは複数のシンタックス要素を伴う明示的なシグナリングに関するが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットコーディングモードがアクティブであるかどうか、および/または特定のブロックをコーディングするために使用されるかどうかを暗黙的に決定することができる。ビデオエンコーダ20およびビデオデコーダ30は、たとえば、CUのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤid、またはマルチビューコーディングにおけるビューidに基づいて、パレットベースのコーディングがブロックのために使用されるかどうかを決定することができる。
[0221]図4の技法はCU(HEVC)の状況において上で説明されるが、この技法は、予測ユニット(PU)にも、または、他のビデオコーディングプロセスおよび/または規格においても適用され得ることを理解されたい。
[0222]図5は、本開示の技法に従った、ビデオブロックのためのパレットに対するインデックスを決定する例を示す概念図である。たとえば、図5は、インデックス値と関連付けられるピクセルのそれぞれの位置をパレット244のエントリーに関連付ける、インデックス値(値1,2,および3)のマップ240を含む。パレット244は、図4に関して上で説明された第1のパレット184および第2のパレット192と同様の方式で決定され得る。
[0223]やはり、図5の技法は、ビデオエンコーダ20(図1および図2)とビデオデコーダ30(図1および図3)の状況において、説明を目的としてHEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび/または規格において他のビデオコーディングプロセッサおよび/またはデバイスによって適用され得ることを、理解されたい。
[0224]マップ240は、各ピクセル位置に対するインデックス値を含むものとして図5の例において示されるが、他の例では、すべてのピクセル位置がブロックのピクセル値を規定するパレット244のエントリーを示すインデックス値と関連付けられ得るとは限らないことを理解されたい。すなわち、上で述べられたように、いくつかの例では、ビデオエンコーダ20は、ピクセル値がパレット244に含まれない場合、マップ240の中のある位置に対する実際のピクセル値(またはその量子化されたバージョン)のインジケーションを符号化することができる(および、ビデオデコーダ30は、符号化されたビットストリームからそのインジケーションを取得することができる)。
[0225]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値と関連付けられるかを示す追加のマップをコーディングするように構成され得る。たとえば、マップ中の(i,j)のエントリーがCUの(i,j)の位置に対応すると仮定する。ビデオエンコーダ20は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー(すなわち、各ピクセル位置)のための1つまたは複数のシンタックス要素を符号化することができる。たとえば、ビデオエンコーダ20は、CU中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値の1つであることを示すように、1という値を有するフラグを符号化することができる。そのような例では、ビデオエンコーダ20はまた、パレット中のそのピクセル値を示し、ビデオデコーダがピクセル値を再構築することを可能にするように、パレットインデックス(値1〜3として図5の例では示される)を符号化することができる。パレット244が単一のエントリーと関連付けられるピクセル値とを含む例では、ビデオエンコーダ20は、インデックス値のシグナリングを飛ばすことができる。ビデオエンコーダ20は、CU中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値の1つではないことを示すように、0という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ20はまた、ピクセル値を再構築する際にビデオデコーダ30によって使用するために、ピクセル値のインジケーションを符号化することができる。いくつかの例では、ピクセル値は有損失の方式でコーディングされ得る。
[0226]CUの1つの位置におけるピクセルの値は、CUの他の位置における1つまたは複数の他のピクセルの値のインジケーションを提供することができる。たとえば、CUの隣接ピクセル位置が同じピクセル値を有すること、または、(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る、有損失コーディングの場合において)CUの隣接ピクセル位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
[0227]したがって、本開示の態様によれば、ビデオエンコーダ20は、同じピクセル値またはインデックス値を有する、所与の走査順序の連続するピクセルの数またはインデックス値を示す1つまたは複数のシンタックス要素を符号化することができる。上で述べられたように、同様の値のピクセル値またはインデックス値の列は、本明細書ではランと呼ばれ得る。例示を目的とする例では、所与の走査順序の2つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序の2つの連続するピクセルまたはインデックスが同じ値を有するが、その走査順序の3番目のピクセルまたはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を伴う3つの連続するインデックスまたはピクセルでは、ランは2であり、以下同様である。ビデオデコーダ30は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じピクセル値またはインデックス値を有する連続するロケーションの数を決定することができる。
[0228]いくつかの例では、現在のCUのためのパレット中にあるピクセル値を有する現在のCU中のすべてのピクセルロケーションは、連続的なピクセル場所においてピクセル値の「ラン」が後に続くパレットインデックスとともに符号化される。パレット中に1つのエントリーしかない場合、パレットインデックスまたは「ラン」の送信は、現在のCUについては飛ばされ得る。現在のCU中のピクセルロケーションの1つにおけるピクセル値がパレット中のピクセル値に対して厳密に一致しない場合、ビデオエンコーダ20は、最も近いピクセル値を有するパレットエントリーの1つを選択することができ、元のピクセル値とパレットに含まれる予測ピクセル値との間の予測誤差または残差値を計算することができる。ビデオエンコーダ20は、そのピクセルロケーションのための残差値を符号化し、ビデオデコーダに送信する。ビデオデコーダ30は次いで、対応する受け取られたパレットインデックスに基づいて、ピクセルロケーションにおけるピクセル値を導出することができ、導出されたピクセル値および残差値は次いで、現在のCU中のピクセルロケーションにおける元のピクセル値を予測するために使用される。一例では、残差値は、HEVC draft 10によって規定されるHEVC方法を使用して、たとえば、RQTを適用して残差値を変換し、変換係数を量子化し、量子化された変換係数をエントロピー符号化して、符号化される。いくつかの場合には、上の例は有損失コーディングと呼ばれ得る。
[0229]例示を目的とする例では、マップ240の線248を考える。水平方向の左から右への走査方向を仮定すると、線248は、「2」という5個のインデックス値と「3」という3個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、走査方向にある線248の第1の位置のために2というインデックス値を符号化することができる。加えて、ビデオエンコーダ20は、シグナリングされたインデックス値と同じインデックス値を有する、同じ方向にある連続する値のランを示す1つまたは複数のシンタックス要素を符号化することができる。線248の例では、ビデオエンコーダ20は4というランをシグナリングすることができ、これによって、走査方向にある後続の4つの位置のインデックス値がシグナリングされたインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ20は、線248の中の次の異なるインデックス値について同じプロセスを実行することができる。すなわち、ビデオエンコーダ20は、3というインデックス値と、2というランを示す1つまたは複数のシンタックス要素とを符号化することができる。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数(ラン)とを示す、シンタックス要素を取得することができる。
[0230]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、または対角方向(たとえば、ブロックにおいて対角方向に45度または135度)であり得る。いくつかの例では、ビデオエンコーダ20は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する1つまたは複数のシンタックス要素を符号化することができる。加えて、または代替的に、走査方向は、たとえばブロックサイズ、色空間、および/または色成分のようないわゆるサイド情報に基づいてシグナリングまたは推測され得る。ビデオエンコーダ20は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックのすべての色成分に適用され得る。
[0231]たとえば、列ベースの走査に関して、マップ240の列252を考える。垂直方向の上から下への走査方向を仮定すると、列252は、「1」という1個のインデックス値と、「2」という5個のインデックス値と、「3」という2個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ20は、(列252の相対的な上部における)走査方向にある線の第1の位置のために1というインデックス値を符号化することができる。加えて、ビデオエンコーダ20は0のランをシグナリングすることができ、これによって、走査方向で後続の位置のインデックス値が異なることを示す。ビデオエンコーダ20は次いで、走査方向において次の位置について2というインデックス値と、4のランを、すなわち、走査方向において後続の4つの位置のインデックス値がシグナリングされたインデックス値と同じインデックス値を共有することを示す1つまたは複数のシンタックス要素とを符号化することができる。次いで、ビデオエンコーダ20は、走査方向の次の異なるインデックス値について3というインデックス値と、1というランを示す1つまたは複数のシンタックス要素とを符号化することができる。ビデオデコーダ30は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数(ラン)とを示す、シンタックス要素を取得することができる。
[0232]本開示の態様によれば、ビデオエンコーダ20およびビデオデコーダ30は、追加で、または代替的に、マップ240の1つまたは複数のエントリーについて線のコピー(line copying)を実行することができる。線のコピーは、いくつかの例では、走査方向に依存し得る。たとえば、ビデオエンコーダ20は、マップ中の特定のエントリーに対するピクセル値またはインデックス値が、(水平方向の走査では)その特定のエントリーの上の線における、または(垂直方向の走査では)その特定のエントリーの左の列における、ピクセル値またはインデックス値に等しいことを示し得る。ビデオエンコーダ20はまた、特定のエントリーの上の線、または特定のエントリーの左の列の中のエントリーに等しい、走査順序の中のピクセル値またはインデックス値の数を、ランとして示すことができる。この例では、ビデオエンコーダ20およびまたはビデオデコーダ30は、規定された隣接する線から、および、現在コーディングされているマップの線に対する規定された数のエントリーから、ピクセル値またはインデックス値をコピーすることができる。
[0233]例示を目的とする例では、マップ240の列256と260とを考える。垂直方向の上から下への走査方向を仮定すると、列256は、「1」という3個のインデックス値と、「2」という3個のインデックス値と、「3」という2個のインデックス値とを含む。列260は、走査方向に同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ20は、列260の全体が列256からコピーされることを示す、列260のための1つまたは複数のシンタックス要素を符号化することができる。1つまたは複数のシンタックス要素は、マップ240の相対的な上部(relative top)において列260の第1のエントリーと関連付けられ得る。ビデオデコーダ30は、線のコピーを示すシンタックス要素を取得し、列260を復号するときに列260のための列256のインデックス値をコピーすることができる。
[0234]本開示の態様によれば、エントリーのいわゆるランをコーディングするための技法が、上で説明された線のコピーのための技法とともに使用され得る。たとえば、ビデオエンコーダ20は、マップ中のエントリーの値がパレットから取得されるかどうか、または、マップ中のエントリーの値がマップ240中の以前にコーディングされた線から取得されるかどうかを示す、1つまたは複数のシンタックス要素(たとえば、フラグ)を符号化することができる。ビデオエンコーダ20はまた、パレットのインデックス値または線(行または列)の中のエントリーのロケーションを示す1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、同じ値を共有する連続するエントリーの数を示す1つまたは複数のシンタックス要素を符号化することができる。ビデオデコーダ30は、符号化されたビットストリームからそのような情報を取得することができ、その情報を使用して、ブロックに対するマップとピクセル値とを再構築することができる。
[0235]例示を目的とする例では、マップ240の行264と268とを考える。水平方向の左から右への走査方向を仮定すると、行264は、「1」という5個のインデックス値と、「3」という3個のインデックス値とを含む。行268は、「1」という3個のインデックス値と、「2」という2個のインデックス値と、「3」という3個のインデックス値とを含む。この例では、ビデオエンコーダ20は、行268のためのデータを符号化するときにランの前にある行264の特定のエントリーを特定することができる。たとえば、ビデオエンコーダ20は、行268の第1の位置(行268の一番左の位置)が行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。ビデオエンコーダ20はまた、行268の中の走査方向の2つの連続するエントリーの次のランが行264の第1の位置と同じであることを示す、1つまたは複数のシンタックス要素を符号化することができる。
[0236]いくつかの例では、ビデオエンコーダ20はまた、別の行(または列)の中のある位置に対する現在のピクセル値もしくはインデックス値をコーディングするかどうか、または、ランシンタックス要素を使用して現在のピクセル値もしくはインデックス値をコーディングするかどうかを決定することができる。たとえば、(上で述べられたように)行264の第1の位置と2つのエントリーのランとを示す1つまたは複数の要素を符号化した後で、ビデオエンコーダ20は、行268の中の第4の位置および第5の位置について(左から右に)、第4の位置に対する2という値と、1というランを示す1つまたは複数のシンタックス要素とを示す、1つまたは複数のシンタックス要素を符号化することができる。したがって、ビデオエンコーダ20は、別の線(または列)を参照することなくこれらの2つの位置を符号化する。ビデオエンコーダ20は次いで、上の行264に対する、行268の中の3というインデックス値を有する第1の位置をコーディングすることができる(たとえば、上の行264からのコピーと、同じインデックス値を有する、走査順序の連続する位置のランとを示す)。したがって、本開示の態様によれば、ビデオエンコーダ20は、たとえばランを使用して線(または列)のピクセル値またはインデックス値を線(または列)の他の値に対してコーディングすること、線(または列)のピクセル値またはインデックス値を別の線(または列)の値に対してコーディングすること、またはこれらの組合せの中から選択することができる。いくつかの例では、ビデオエンコーダ20は、この選択を行うために、レート/歪みの最適化を実行することができる。
[0237]ビデオデコーダ30は、上で説明されたシンタックス要素を受け取ることができ、行268を再構築することができる。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置に対する関連付けられるインデックス値をコピーする際に元となる、隣接する行の中の特定のロケーションを示すデータを取得することができる。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序の連続する位置の数を示すデータを取得することができる。
[0238]いくつかの例では、エントリーのコピー元の線は、(図5の例において示されるように)現在コーディングされている線のエントリーに直接隣接していてよい。しかしながら、他の例では、ある数の線が、ビデオエンコーダ20および/またはビデオデコーダ30によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コーディングされているマップの線のための予測エントリーとして使用され得る。したがって、いくつかの例では、エントリーに対するピクセル値は、現在の行のすぐ上の行(もしくはすぐ左の列)、または現在の行の2つ以上上の行(もしくは2つ以上左の列)の中のエントリーのピクセル値に等しくなるようにシグナリングされ得る。
[0239]例示を目的とする例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリーの現在の行をコーディングする前に、エントリーの以前のn個の行を記憶するように構成され得る。この例では、ビデオエンコーダ20は、切り捨てられた単進コードまたは他のコードによって、ビットストリーム中で予測行(エントリーのコピー元の行)を示すことができる。別の例では、ビデオエンコーダ20は、現在の線と、現在の線をコーディングするために参照として使用されるマップ240の予測線との間の、変位値を符号化することができる(およびビデオデコーダ30は変位値を復号することができる)。すなわち、ビデオエンコーダ20は、インデックス値のコピー元の特定の線(または列)のインジケーションを符号化することができる。いくつかの例では、変位値は変位ベクトルであり得る。すなわち、c[0]、c[1]、...、を、マップ240の現在の線のインデックスを示すものとし、u[0]、u[1]、u[2]、...、を、上の隣接線のようなマップ240の予測線のインデックスを示すものとする。この例では、変位ベクトルがdであるとすると、c[i]に対するインデックス値は、dが負の値となることを避けるために、u[i+d]またはu[i−d]から予測され得る。dの値は、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号を使用してコーディングされ得る。
[0240]別の例として、ビデオエンコーダ20は、「上の線の左半分からコピー」または「上の線の右半分からコピー」のような、現在コーディングされているマップの線にコピーすべき、隣接する線と隣接する線のエントリーの数または部分とを示す、命令をシグナリングすることができる。追加の例として、インデックス値のマップは、コーディングの前に再び順序付けられ得る。たとえば、インデックス値のマップは、コーディング効率を改善するために、90度、180度、もしくは270度回転されてよく、または上下もしくは左右が反転されてよい。
[0241]他の例では、ビデオエンコーダ20は、マップ240の同様の値のインデックス値のランをビデオデコーダ30に送信しなくてよい。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの値を暗黙的に導出することができる。一例では、ランの値は、定数値、たとえば4,8,16などであってよい。別の例では、ランの値は、たとえば、ブロックサイズ、量子化パラメータ(QP)、フレームタイプ、色成分、カラーフォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在のブロックのための他のタイプの特性情報のような、コーディングされているビデオデータの現在のブロックのサイド情報に依存し得る。ランの値がブロックサイズに依存する場合、ランは、現在のブロックの幅、現在のブロックの高さ、現在のブロックの幅の半分(高さの半分)、現在のブロックの幅および/もしくは高さの分数、または現在のブロックの幅および/もしくは高さの倍数に等しくてよい。別の例では、ビデオエンコーダ20は、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、および/またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、ランの値をビデオデコーダ30にシグナリングすることができる。
[0242]加えて、または代替的に、ビデオエンコーダ20は、マップ240をビデオデコーダ30に送信する必要もないことがある。代わりに、ビデオエンコーダ20および/またはビデオデコーダ30は、マップ240に含まれるインデックス値の各々のランの開始の位置またはロケーションを暗黙的に導出することができる。一例では、ビデオエンコーダ20および/またはビデオデコーダ30によって適用されるビデオコーディング規格は、ランがあるロケーションにおいてのみ開始し得ると決定することができる。たとえば、ランは、各行の始端、またはコーディングされている現在のブロックのN行ごとの始端においてのみ開始してよい。開始ロケーションは、異なる走査順序に対しては異なり得る。たとえば、垂直方向の走査が使用される場合、ランは、列の始端、または現在のブロックのN列ごとの始端においてのみ開始してよい。
[0243]別の例では、開始ロケーションは、ブロックサイズ、QP、フレームタイプ、色成分、カラーフォーマット(たとえば、4:4:4、4:2:2、または4:2:0)、色空間(たとえば、YUVまたはRGB)、走査方向、および/または現在のブロックのための他のタイプの特性情報のような、現在のブロックのサイド情報に依存して導出され得る。ランの開始ロケーションがブロックサイズに依存する場合、開始ロケーションは、各行および/もしくは各列の中間点、または各行および/もしくは各列の分数(たとえば、1/n、2/n、...(n−1)/n)であり得る。別の例では、ビデオエンコーダ20は、PPS、SPS、VPS、および/またはスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、開始位置をビデオデコーダ30にシグナリングすることができる。
[0244]いくつかの例では、各々上で説明された、暗黙的な開始位置の導出および暗黙的なランの導出は、組み合わされ得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップの同様の値のインデックス値のランが2つの隣接する開始位置の間の距離に等しいと決定することができる。開始位置が現在のブロックの各行の始まり(すなわち、最初の位置)である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランの長さが現在のブロックの各行の長さに等しいと決定することができる。
[0245]図6は、本開示の技法に従った、クロマ成分のために適応的にダウンサンプリングされたルーマ成分に対するパレットインデックスのランを使用してビデオブロックの幾何学的エッジ270、272、または274を決定することの例を示す、概念図である。図6において、ルーマサンプルは中空の丸として示されており、クロマサンプルはx記号が重畳されたルーマサンプルの1つとして示されている。図6は、ビデオブロックの幾何学的エッジ270、272、または274のロケーションに基づく、ルーマ成分およびクロマ成分に対する異なるランの値の例を示す。
[0246]いくつかの場合、1つのパレットは現在のブロック中の複数の色成分について生成および共有され、他の場合には、別々のパレットが色成分の1つまたは複数に生成される。ある場合には、あるパレットはルーマ成分について生成されてよく、別のパレットは両方のクロマ成分について生成されてよい。いずれの場合でも、幾何学的な情報は複数の色成分の間で共有され得る。クロマ成分は、4:2:2または4:2:0のサンプリングのような、事前に定義された方法でルーマ成分からダウンサンプリングされている可能性があるので、通常は、異なる色成分の中のコロケートされたブロックのエッジロケーションの間には高い相関がある。
[0247]たとえば、パレットベースのコーディングでは、現在のブロックのエッジがランを乱すので、現在のブロックの幾何学的情報を示すために、ランコーディングが使用され得る。4:4:4のクロマフォーマットの場合、ランは1度だけ生成され、すべての成分について使用され得る。ランは色成分の1つに基づいて生成されてよく、またはランは色成分の2つ以上を使用して生成されてよい。4:2:2のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のために、2という係数によって水平方向にダウンサンプリングされ得る。4:2:0のクロマフォーマットの場合、ルーマ成分のために使用されるランは、クロマ成分への適用のために、2という係数によって水平方向および垂直方向にダウンサンプリングされ得る。
[0248]いくつかの場合には、ランのダウンサンプリング方法は、クロマのダウンサンプリング方法に適応性があり得る。この場合、クロマ成分のためのダウンサンプリングされたランの値は、図6に示されるビデオブロックのエッジ、たとえばエッジ270、272、または274のロケーションに従って、異なるように計算され得る。第1の例では、図6は、ルーマ成分のためのランが左側のブロックにおいて値「1」を有し右側のブロックにおいて「3」という値を有するように配置される、2つの隣接ビデオブロックの間の幾何学的エッジ270を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックと右側のブロックの両方において「1」という値を有する。第2の例では、図6は、ルーマ成分のためのランが左側のブロックと右側のブロックの両方において値「2」を有するように配置される、2つの隣接ビデオブロックの間の幾何学的エッジ272を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックと右側のブロックの両方において「1」という値を有する。第3の例では、図6は、ルーマ成分のためのランが左側のブロックにおいて値「3」を有し右側のブロックにおいて「1」という値を有するように配置される、2つの隣接ビデオブロックの間の幾何学的エッジ274を示す。この場合、クロマ成分のためのダウンサンプリングされたランは、左側のブロックにおいて「2」という値を有し、右側のブロックにおいて「0」という値を有する。
[0249]幾何学的な情報に加えて、すべての色成分のピクセル値について単一のパレットを有することも可能であり得る。たとえば、現在のブロック中の各ピクセルロケーションについて、3つの色成分(たとえば、Yルーマ成分とUクロマ成分およびVクロマ成分の両方)中のピクセル値がベクトル(すなわち、色ベクトル)を形成し得る。次いで、現在のブロックを表すためにある数のベクトルを選択することによって、パレットが形成され得る。ルーマ成分のためにピクセル値のあるパレットを有し、クロマ成分のためにピクセル値の別のパレットを有することが可能であり得る。いくつかの場合には、幾何学的な情報を共有し、色ベクトルを使用してピクセル値の単一のパレットを有する2つの方法を組み合わせることも可能であり得る。
[0250]いくつかの例では、本開示の他の箇所でより詳細に説明された線のコピーも、単一のパレットとともに機能し得る。この場合、各ピクセルロケーションのためのパレットインデックスは、走査が水平方向であれば上の行の、または走査が垂直方向であれば左の列のパレットインデックスと等しいものとしてシグナリングされ、そして、パレットインデックスの関連付けられるランが前の行または列からコピーされる。共有されたパレットによって、パレットエントリーは(Y,U,V)という3つの要素からなる組となり得るので、後のY、U、Vの値はパレットインデックスから再構築され得る。再構築された値は、復号されたピクセル値として機能してよく、または、復号されたピクセル値を導出するために残差値と組み合わされる予測値として機能してよい。4:2:2のクロマフォーマットおよび4:2:0のクロマフォーマットでは、クロマ成分は、ルーマ成分と比較してダウンサンプリングされている。2:1のダウンサンプリングの例では、ルーマの位置は0,1,2であってよく、クロマの位置は1,3,5,...であってよく、または0,2,4,...であってよい。クロマ成分が存在しない位置については、パレットエントリー中のU成分およびV成分は廃棄され得る。
[0251]図7は、本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを符号化するための例示的なプロセスを示すフローチャートである。図7に示される例示的なプロセスは、図2からのビデオデコーダ20のパレットベースの符号化ユニット122に関して本明細書では説明される。他の例では、1つまたは複数の他のまたは追加のコンポーネントが、図7に示される例示的なプロセスを実行することができる。
[0252]ビデオエンコーダ20は、予測されるビデオブロックのパレットベースのビデオコーディングを使用して符号化されるべき現在のビデオブロックのビデオデータを受け取り、そのビデオデータをパレットベースの符号化ユニット122に送る。パレットベースの符号化ユニット122は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値に基づいて、現在のブロックのための予測残差値を決定する(280)。
[0253]パレットベースの符号化ユニット122は、任意の予測モード、たとえば、HEVC規格のインター予測モードまたはイントラ予測モードを使用して、予測残差値を計算することができる。一例では、パレットベースの符号化ユニット122は、参照ブロック中の以前にコーディングされたピクセル値を使用して現在のブロックのピクセル値を予測するために、インター予測処理ユニット120を使用することができる。別の例では、パレットベースの符号化ユニット122は、現在のブロック中の以前にコーディングされたピクセル値を使用して現在のブロックのピクセル値を予測するために、イントラ予測処理ユニット126を使用することができる。
[0254]いくつかの場合には、パレットベースの符号化ユニット122は、予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。たとえば、イントラ予測モードの場合、DC予測プロセス、水平方向の予測プロセス、および/または垂直方向の予測プロセスが有効にされ得るが、他のイントラ予測モードプロセスは無効にされ得る。無効にされたプロセスは、イントラ予測モード、たとえば、MDIS、1/32ペル双線形補間、エッジフィルタ、またはDCフィルタの1つまたは複数におけるフィルタリングを含み得る。さらなる例として、インター予測モードの場合、ピクセルの平均化のプロセス、たとえば、加重予測、双予測、またはサブペル補間の1つまたは複数が無効にされ得る。
[0255]一例では、現在のブロックのための予測残差値は、現在のブロックのための予測残差値であり得る。この例では、パレットベースの符号化ユニット122は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から現在のブロックのための残差ピクセル値を計算する。パレットベースの符号化ユニット122は次いで、以下のステップで説明されるように、パレットベースのビデオコーディングを使用して現在のブロックのための残差ピクセル値を符号化することに進む。
[0256]別の例では、現在のブロックのための予測残差値は、現在のブロックのための残差量子化された変換係数値であり得る。この例では、パレットベースの符号化ユニット122は、現在のブロックのピクセル値および以前にコーディングされた参照ピクセル値から現在のブロックのための残差ピクセル値を計算し、次いで、現在のブロックのための残差量子化された変換係数値へと変換され量子化されるように、残差ピクセル値を変換処理ユニット104および量子化ユニット106に送る。パレットベースの符号化ユニット122は次いで、以下のステップで説明されるように、パレットベースのビデオコーディングを使用して現在のブロックのための残差量子化された変換係数値を符号化することに進む。
[0257]パレットベースの符号化ユニット122は、現在のブロックのための予測残差値を示す1つまたは複数のエントリーを含む、現在のブロックのためのパレットを生成する(282)。パレットベースの符号化ユニット122は、現在のブロックのためのパレット中の予測残差値を表すために使用されるパレット中のエントリーを特定するインデックス値へ、現在のブロックのための予測残差値の1つまたは複数をマッピングする(284)。パレットベースの符号化ユニット122は、現在のブロック中の1つまたは複数の位置のためのインデックス値を符号化する(286)。符号化されたインデックス値は、現在のブロックのための予測残差値を表すために使用される、現在のブロックのためのパレットに含まれる予測残差値を示す。ビデオエンコーダ20は次いで、現在のブロック中の1つまたは複数の位置のためのインデックス値を送信する。
[0258]図8は、本開示の技法に従った、パレットベースのコーディングモードを使用して予測残差ビデオデータを復号するための例示的なプロセスを示すフローチャートである。図8に示される例示的なプロセスは、図3からのビデオデコーダ30のパレットベースの復号ユニット165に関して本明細書では説明される。他の例では、1つまたは複数の他のまたは追加のコンポーネントが、図8に示される例示的なプロセスを実行することができる。
[0259]ビデオデコーダ30は、パレットベースのコーディングを使用してコーディングされたビデオデータを表すビットストリームを受け取り、エントロピー復号されたビデオデータをパレットベースの復号ユニット165を送る。復号されたビットストリームに含まれる1つまたは複数のシンタックス要素に基づいて、パレットベースの復号ユニット165は、現在のブロックのための予測残差値を示す1つまたは複数のエントリーを含む、ビデオデータの現在のブロックのためのパレットを生成する(290)。パレットベースの復号ユニット165は次いで、現在のブロック中の1つまたは複数の位置のためのインデックス値を復号する(292)。復号されたインデックス値は、現在のブロックのための予測残差値を表すために使用される、現在のブロックのためのパレットに含まれる予測残差値を示す。
[0260]パレットベースの復号ユニット165は、現在のブロックのための予測残差値を表すパレット中のエントリーを特定するインデックス値に基づいて、現在のブロックのための予測残差値の1つまたは複数を決定する(294)。パレットベースの復号ユニット165は、任意の予測モード、たとえば、HEVC規格のインター予測モードまたはイントラ予測モードを使用して、予測残差値を決定することができる。一例では、パレットベースの復号ユニット165は、参照ブロック中の以前にコーディングされたピクセル値を使用して現在のブロックのピクセル値を予測するために、動き補償処理ユニット164を使用することができる。別の例では、パレットベースの復号ユニット165は、現在のブロック中の以前にコーディングされたピクセル値を使用して現在のブロックのピクセル値を予測するために、イントラ予測処理ユニット166を使用することができる。
[0261]いくつかの場合には、パレットベースの復号ユニット165は、予測モードプロセスのサブセットのみを使用して、現在のブロックのための予測残差値を決定することができる。たとえば、イントラ予測モードの場合、DC予測プロセス、水平方向の予測プロセス、および/または垂直方向の予測プロセスが有効にされ得るが、他のイントラ予測モードプロセスは無効にされ得る。無効にされたプロセスは、イントラ予測モード、たとえば、MDIS、1/32ペル双線形補間、エッジフィルタ、またはDCフィルタの1つまたは複数におけるフィルタリングを含み得る。さらなる例として、インター予測モードの場合、ピクセルの平均化のプロセス、たとえば、加重予測、双予測、またはサブペル補間の1つまたは複数が無効にされ得る。
[0262]ビデオデコーダ30は次いで、現在のブロックのための予測残差値および以前にコーディングされた参照ピクセル値に基づいて、現在のブロックのためのピクセル値を決定する(296)。一例では、現在のブロックのための予測残差値は、現在のブロックのための予測残差値であり得る。この場合、ビデオデコーダ30は、残差ピクセル値と以前にコーディングされた参照ピクセル値とを使用して、現在のブロックのピクセル値を再構築する。別の例では、現在のブロックのための予測残差値は、現在のブロックのための残差量子化された変換係数値であり得る。この場合、パレットベースの復号ユニット165はまず、現在のブロックのための残差ピクセル値へと逆量子化され逆変換されるように、残差量子化された変換係数値を逆量子化ユニット154および逆変換処理ユニット156に送る。ビデオデコーダ30は次いで、残差ピクセル値と以前にコーディングされた参照ピクセル値とを使用して、現在のブロックのピクセル値を再構築する。
[0263]図9は、本開示の技法に従った、パレットベースのコーディングのためのパレットを生成するための例示的なプロセスを示すフローチャートである。図9に示される例示的なプロセスは、図3からのビデオデコーダ30のパレットベースの復号ユニット165に関して本明細書では説明される。他の例では、プロセスはまた、図2からのビデオエンコーダ20のパレットベースの符号化ユニット122によって実行され得る。パレットベースのコーディングのためのパレットを生成するための例示的なプロセスは、ピクセル値を示すパレットエントリーを含むパレットを生成するために使用され得る。他の例では、同様のプロセスが、予測残差値を示すパレットエントリーを含むパレットを生成するために使用され得る。
[0264]ビデオデコーダ30は、パレットベースのコーディングを使用してコーディングされたビデオデータを表すビットストリームを受け取り、エントロピー復号されたビデオデータをパレットベースの復号ユニット165を送る。パレットベースの復号ユニット165は、ピクセル値を示すパレットエントリーを含む予測パレットを生成する(300)。いくつかの例では、パレットベースの復号ユニット165は、ビデオデータの1つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含むように予測パレットを生成する。以前にコーディングされたブロックは、空間的に隣接するブロックおよび/またはブロックの特定の走査順序で隣接するブロックを含む、現在のブロックの隣接ブロックを含み得る。
[0265]パレットベースの復号ユニット165は次に、エントロピー復号されたビデオデータから、現在のブロックのための現在のパレットにコピーされる予測パレット中のパレットエントリーの1つまたは複数を決定する(302)。より具体的には、パレットベースの復号ユニット165は、予測パレット中のパレットエントリーの各々が現在のパレットにコピーされるかどうかを示す、1つまたは複数のシンタックス要素を復号することができる。一例では、1つまたは複数のシンタックス要素は、それぞれのパレットエントリーが現在のパレットにコピーされるかどうかを示す予測パレット中のパレットエントリーの各々についてのフラグを含む、バイナリベクトルを備える。別の例では、1つまたは複数のシンタックス要素は、バイナリベクトルの無損失で圧縮されたバージョンを備え、バイナリベクトルの圧縮されていないバージョンは、それぞれのパレットエントリーが現在のパレットにコピーされるかどうかを示す予測パレット中のパレットエントリーの各々に対するフラグを含む。
[0266]パレットベースの復号ユニット165はまた、エントロピー復号されたビデオデータから、現在のブロックのための現在のパレットに含まれる予測パレット中にない新たなパレットエントリーの数を決定する(304)。パレットベースの復号ユニット165は、現在のパレットに含まれる新たなパレットエントリーの数を示す、1つまたは複数のシンタックス要素を復号することができる。いくつかの例では、パレットベースの復号ユニット165は、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの1つを使用して、シンタックス要素を復号する。現在のパレットに含まれる新たなパレットエントリーの数を決定した後で、パレットベースの復号ユニット165は、新たなパレットエントリーの各々についてのピクセル値を示す1つまたは複数のシンタックス要素を復号する。
[0267]エントロピー復号されたビデオデータから決定された情報に基づいて、パレットベースの復号ユニット165は、コピーされたパレットエントリーの数と新たなパレットエントリーの数との合計に等しいものとして、現在のパレットのサイズを計算する(306)。現在のパレットのサイズを決定した後で、パレットベースの復号ユニット165は、コピーされたパレットエントリーと新たなパレットエントリーとを含むように現在のパレットを生成する(308)。一例では、パレットベースの復号ユニット165は、コピーされたパレットエントリーと新たなパレットエントリーとを連結することによって、現在のパレットを生成する。
[0268]パレットベースの復号ユニット165は次いで、現在のパレットを使用して現在のブロックのパレットベースのコーディングを実行することが可能である。たとえば、パレットベースの復号ユニット165は、現在のブロックのピクセル値を表すために使用される現在のパレット中のパレットエントリーを特定する、現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定する(310)。現在のブロックの1つまたは複数のピクセル値が現在のパレット中の対応するピクセル値を有しない場合、ビデオエンコーダ20は、ピクセル値のいずれが現在のパレットに含まれないかを示し、それらのピクセル値を明示的に送信するために、エスケープピクセルという概念を使用することができる。ビデオデコーダ30中のパレットベースの復号ユニット165は次いで、現在のパレット中の対応するピクセル値を有しない1つまたは複数のピクセル値のためのピクセル値を示す、1つまたは複数のシンタックス要素を復号することができる。
[0269]別の例では、ビデオエンコーダ20はエスケープピクセルの概念を使用しなくてよく、代わりに、現在のブロックの1つまたは複数のピクセル値の各々についての予測ピクセル値として現在のパレットに含まれるピクセル値を特定し、現在のブロックのピクセル値と現在のパレット中の予測ピクセル値との間の残差値を送信することができる。ビデオデコーダ30中のパレットベースの復号ユニット165は次いで、現在のパレットに含まれる対応する予測ピクセル値を特定するインデックス値を示す1つまたは複数のシンタックス要素と、現在のブロックの1つまたは複数のピクセル値と現在のパレット中の特定された予測ピクセル値との間の残差値とを復号することができる。
[0270]本開示はまた、パレットベースのコーディングのためのパレットを生成するためのいくつかの代替的な技法を説明し、これは、インデックス値を現在のブロックのためのピクセル値と予測残差値のいずれかと関連付けるエントリーを有するパレットを生成するために使用され得る。一例では、パレットベースの復号ユニット165は、現在のブロックのためのパレットのサイズのインジケーションを復号し、現在のブロックのためのパレットと同じサイズを有するベクトルを復号し、ここで、ベクトル中の各エントリーは、関連付けられるパレットエントリーが送信されるか、または予測パレットからコピーされるかを示しており、パレットベースの復号ユニット165は、また、予測パレットからコピーされた1つまたは複数のパレットエントリーについて、予測パレット中のエントリーの位置のインジケーションを復号する。別の例では、パレットベースの復号ユニット165は、現在のブロックのためのパレット中のエントリーの数のインジケーションを復号し、パレットエントリーが明示的に送られるか、または以前に再構築されたピクセルから導出されるかを示すパレットエントリーの各々についての1ビットのフラグを復号し、以前に再構築されたピクセルから導出された1つまたは複数のパレットエントリーの各々について、それぞれのパレットエントリーに対応する再構築されたピクセルの位置のインジケーションを復号する。その例では、再構築されたピクセルの位置のインジケーションは、現在のブロックの左上の位置に対する変位ベクトルであってよく、または、通常のイントラ予測のために使用されるすべての参照ピクセルを含み得る再構築されたピクセルのリストへのインデックスであってよい。
[0271]別の例では、パレットベースの復号ユニット165は、所与のサイズを有する隣接ブロックのための予測パレットで開始し、予測パレットと同じサイズを有するバイナリベクトルを復号し、ベクトル中の各エントリーは、関連付けられるパレットエントリーが予測パレットから再使用されるかどうかを示す。パレットベースの復号ユニット165はまた、送信されるべき新たなエントリーの数のインジケーションを復号し、ビデオエンコーダ20から新たなエントリーを受け取る。パレットベースの復号ユニット165は次いで、現在のブロックのための新たなパレットを生成するために、再使用されたエントリーと新たなエントリーを統合する。
[0272]例に応じて、本明細書で説明される技法のいずれものいくつかの動作またはイベントは、異なる順序で実行されてよく、全体的に追加され、結合され、または除外されてよいことが、認識されるべきである(たとえば、説明される活動または事象のすべてが、この技法の実践のために必要であるとは限らない)。その上、いくつかの例では、動作またはイベントは、連続的にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて実行され得る。さらに、本開示のいくつかの態様は、明快にするために単一のモジュールまたはユニットによって実行されるものとして説明されているが、本開示の技法はビデオコーダと関連付けられるユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
[0273]本開示のいくつかの態様が、説明のために開発中のHEVC規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格またはまだ開発されていないプロプライエタリビデオコーディング処理を含む、他のビデオコーディング処理のために有用であり得る。
[0274]上で説明された技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、ビデオエンコーダ20とビデオデコーダ30の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコーディングは、適宜、ビデオ符号化またはビデオ復号を指し得る。
[0275]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
[0276]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、たとえば、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体または(2)信号またはキャリア波のような通信媒体に相当し得る。データ記憶媒体は、本開示で説明される技法の実施のために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによって、命令、コードおよび/またはデータ構造を取り出すためにアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0277]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(compact disc)(CD)、レーザーディスク(登録商標)(laser disc)、光ディスク(optical disc)、デジタル多用途ディスク(digital versatile disc)(DVD)、フロッピー(登録商標)ディスク(floppy disk)、およびBlu−rayディスク(Blu-ray disc)を含み、ここでディスク(disk)は通常、磁気的にデータを再生するが、ディスク(disc)はレーザを用いて光学的にデータを再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。
[0278]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造または本明細書で説明される技法の実装形態に適した任意の他の構造のいずれをも指し得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内に設けられてよく、または複合コーデックに組み込まれてよい。また、技法は、1つまたは複数の回路または論理素子の中で完全に実施され得る。
[0279]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む多種多様なデバイスまたは装置において実施され得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を実行するように構成されるデバイスの機能上の態様を強調するために、本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で述べられたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、または、上で説明された1つまたは複数のプロセッサを含む、適切なソフトウェアおよび/またはファームウェアとともに相互動作可能なハードウェアユニットの集合体よって提供され得る。
[0280]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
[0280]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定することとを備える、方法。
[C2]
前記予測パレットを生成することが、前記ビデオデータの1つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成することを備える、上記C1に記載の方法。
[C3]
前記1つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序において隣接するブロックとのうちの少なくとも1つを含む、前記現在のブロックの隣接ブロックを備える、上記C2に記載の方法。
[C4]
前記現在のパレットにコピーされる前記予測パレット中の前記1つまたは複数のパレットエントリーを決定することが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す1つまたは複数のシンタックス要素をコーディングすることを備える、上記C1に記載の方法。
[C5]
前記1つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、上記C4に記載の方法。
[C6]
前記1つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、上記C4に記載の方法。
[C7]
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を決定することが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す1つまたは複数のシンタックス要素をコーディングすることを備え、前記1つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの1つを使用してコーディングされる、上記C1に記載の方法。
[C8]
前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることをさらに備える、上記C1に記載の方法。
[C9]
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することが、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結することを備える、上記C1に記載の方法。
[C10]
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの1つを備え、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記1つまたは複数のパレットエントリーのコピーを無効にすることをさらに備える、上記C1に記載の方法。
[C11]
前記現在のブロックの前記1つまたは複数のピクセル値のための前記インデックス値を決定することが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中に対応するピクセル値を有するかどうかを示す1つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記1つまたは複数のピクセル値についての前記ピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることとを備える、上記C1に記載の方法。
[C12]
前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を決定することが、
前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記1つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す1つまたは複数のシンタックス要素をコーディングすることとを備える、上記C1に記載の方法。
[C13]
ビデオデータをコーディングする前記方法がビデオデータを復号する方法を備え、前記方法が、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を受け取ることとを備える、上記C1に記載の方法。
[C14]
ビデオデータをコーディングする前記方法がビデオデータを符号化する方法を備え、前記方法が、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を送信することとを備える、上記C1に記載の方法。
[C15]
ビデオデータをコーディングするための装置であって、
ビデオデータを記憶するメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定することと、
を行うように構成される、装置。
[C16]
前記プロセッサが、前記ビデオデータの1つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成するように構成される、上記C15に記載の装置。
[C17]
前記1つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序で隣接するブロックとのうちの少なくとも1つを含む、前記現在のブロックの隣接ブロックを備える、上記C16に記載の装置。
[C18]
前記プロセッサが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す、1つまたは複数のシンタックス要素をコーディングするように構成される、上記C15に記載の装置。
[C19]
前記1つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、上記C18に記載の装置。
[C20]
前記1つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、上記C18に記載の装置。
[C21]
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す1つまたは複数のシンタックス要素をコーディングするように構成され、前記1つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの1つを使用してコーディングされる、上記C15に記載の装置。
[C22]
前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す1つまたは複数のシンタックス要素をコーディングするように構成される、上記C15に記載の装置。
[C23]
前記プロセッサが、前記現在のパレットを生成するために、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結するように構成される、上記C15に記載の装置。
[C24]
前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの1つを備え、前記プロセッサが、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記1つまたは複数のパレットエントリーのコピーを無効にするように構成される、上記C15に記載の装置。
[C25]
前記プロセッサが、
前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中の対応するピクセル値を有するかどうかを示す1つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、
前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記1つまたは複数のピクセル値についての前記ピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、上記C15に記載の装置。
[C26]
前記プロセッサが、
前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
前記現在のブロックの前記1つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す1つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、上記C15に記載の装置。
[C27]
前記装置が、ビデオデータを復号するためのビデオ復号デバイスを備え、前記プロセッサが、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを受け取ることと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を受け取ることと、を行うように構成される、上記C15に記載の装置。
[C28]
ビデオデータを符号化するためのビデオ符号化デバイスを備え、前記プロセッサが、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを送信することと、
前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を送信することと、を行うように構成される、上記C15に記載の装置。
[C29]
ビデオデータをコーディングするための装置であって、
ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定するための手段と、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定するための手段と、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算するための手段と、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成するための手段と、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定するための手段とを備える、装置。
[C30]
非一時的コンピュータ可読媒体であって、実行されたときに、1つまたは複数のプロセッサに、
ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定することと、
を実行させる命令を記憶している、非一時的コンピュータ可読媒体。

Claims (30)

  1. ビデオデータをコーディングする方法であって、
    ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
    前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
    前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
    前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値のためのインデックス値を決定することとを備える、方法。
  2. 前記予測パレットを生成することが、前記ビデオデータの1つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成することを備える、請求項1に記載の方法。
  3. 前記1つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序において隣接するブロックとのうちの少なくとも1つを含む、前記現在のブロックの隣接ブロックを備える、請求項2に記載の方法。
  4. 前記現在のパレットにコピーされる前記予測パレット中の前記1つまたは複数のパレットエントリーを決定することが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す1つまたは複数のシンタックス要素をコーディングすることを備える、請求項1に記載の方法。
  5. 前記1つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項4に記載の方法。
  6. 前記1つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項4に記載の方法。
  7. 前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を決定することが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す1つまたは複数のシンタックス要素をコーディングすることを備え、前記1つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの1つを使用してコーディングされる、請求項1に記載の方法。
  8. 前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることをさらに備える、請求項1に記載の方法。
  9. 前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することが、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結することを備える、請求項1に記載の方法。
  10. 前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの1つを備え、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記1つまたは複数のパレットエントリーのコピーを無効にすることをさらに備える、請求項1に記載の方法。
  11. 前記現在のブロックの前記1つまたは複数のピクセル値のための前記インデックス値を決定することが、
    前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中に対応するピクセル値を有するかどうかを示す1つまたは複数のシンタックス要素をコーディングすることと、
    前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、
    前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記1つまたは複数のピクセル値についての前記ピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることとを備える、請求項1に記載の方法。
  12. 前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を決定することが、
    前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
    前記現在のブロックの前記1つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す1つまたは複数のシンタックス要素をコーディングすることとを備える、請求項1に記載の方法。
  13. ビデオデータをコーディングする前記方法がビデオデータを復号する方法を備え、前記方法が、
    前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを受け取ることと、
    前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
    前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
    前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を受け取ることとを備える、請求項1に記載の方法。
  14. ビデオデータをコーディングする前記方法がビデオデータを符号化する方法を備え、前記方法が、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを送信することと、
    前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
    前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を送信することとを備える、請求項1に記載の方法。
  15. ビデオデータをコーディングするための装置であって、
    ビデオデータを記憶するメモリと、
    1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
    ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
    前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
    前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
    前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定することと、
    を行うように構成される、装置。
  16. 前記プロセッサが、前記ビデオデータの1つまたは複数の以前にコーディングされたブロックからのパレットエントリーを含む前記予測パレットを生成するように構成される、請求項15に記載の装置。
  17. 前記1つまたは複数の以前にコーディングされたブロックが、空間的に隣接するブロックと、前記ブロックの特定の走査順序で隣接するブロックとのうちの少なくとも1つを含む、前記現在のブロックの隣接ブロックを備える、請求項16に記載の装置。
  18. 前記プロセッサが、前記予測パレット中の前記パレットエントリーの各々が前記現在のパレットにコピーされるかどうかを示す、1つまたは複数のシンタックス要素をコーディングするように構成される、請求項15に記載の装置。
  19. 前記1つまたは複数のシンタックス要素が、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含むバイナリベクトルを備える、請求項18に記載の装置。
  20. 前記1つまたは複数のシンタックス要素が、バイナリベクトルの無損失で圧縮されたバージョンを備え、前記バイナリベクトルの圧縮されていないバージョンが、それぞれのパレットエントリーが前記現在のパレットにコピーされるかどうかを示す前記予測パレット中の前記パレットエントリーの各々についてのフラグを含む、請求項18に記載の装置。
  21. 前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を示す1つまたは複数のシンタックス要素をコーディングするように構成され、前記1つまたは複数のシンタックス要素が、単進コード、切り捨てられた単進コード、指数ゴロム符号、またはゴロムライス符号のうちの1つを使用してコーディングされる、請求項15に記載の装置。
  22. 前記プロセッサが、前記現在のパレットに含まれる前記新たなパレットエントリーの各々についてのピクセル値を示す1つまたは複数のシンタックス要素をコーディングするように構成される、請求項15に記載の装置。
  23. 前記プロセッサが、前記現在のパレットを生成するために、前記コピーされたパレットエントリーと前記新たなパレットエントリーとを連結するように構成される、請求項15に記載の装置。
  24. 前記現在のブロックが、前記ビデオデータのスライス中の最初のブロック、または前記ビデオデータの前記スライスもしくはピクチャの最も左のブロックのうちの1つを備え、前記プロセッサが、前記現在のブロックのための前記現在のパレットへの前記予測パレット中の前記1つまたは複数のパレットエントリーのコピーを無効にするように構成される、請求項15に記載の装置。
  25. 前記プロセッサが、
    前記現在のブロックの前記ピクセル値の各々が前記現在のパレット中の対応するピクセル値を有するかどうかを示す1つまたは複数のシンタックス要素をコーディングすることと、
    前記現在のパレット中に対応するピクセル値を有する前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、
    前記現在のパレット中に対応するピクセル値を有しない前記現在のブロックの前記1つまたは複数のピクセル値についての前記ピクセル値を示す1つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項15に記載の装置。
  26. 前記プロセッサが、
    前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を示す1つまたは複数のシンタックス要素をコーディングすることと、ここにおいて、前記インデックス値は前記現在のパレット中の対応するピクセル値を予測ピクセル値として特定する、
    前記現在のブロックの前記1つまたは複数のピクセル値と前記現在のパレット中の前記特定された予測ピクセル値との間の残差値を示す1つまたは複数のシンタックス要素をコーディングすることと、を行うように構成される、請求項15に記載の装置。
  27. 前記装置が、ビデオデータを復号するためのビデオ復号デバイスを備え、前記プロセッサが、
    前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを受け取ることと、
    前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を受け取ることと、
    前記新たなパレットエントリーの各々についてのピクセル値を受け取ることと、
    前記コピーされたパレットエントリーと前記受け取られた新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を受け取ることと、を行うように構成される、請求項15に記載の装置。
  28. ビデオデータを符号化するためのビデオ符号化デバイスを備え、前記プロセッサが、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの前記1つまたは複数の、インジケーションを送信することと、
    前記現在のパレットに含まれる前記新たなパレットエントリーの前記数を送信することと、
    前記新たなパレットエントリーの各々についてのピクセル値を送信することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの前記1つまたは複数のピクセル値についての前記インデックス値を送信することと、を行うように構成される、請求項15に記載の装置。
  29. ビデオデータをコーディングするための装置であって、
    ピクセル値を示すパレットエントリーを含む予測パレットを生成するための手段と、
    前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定するための手段と、
    前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定するための手段と、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
    前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算するための手段と、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成するための手段と、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定するための手段とを備える、装置。
  30. 非一時的コンピュータ可読媒体であって、実行されたときに、1つまたは複数のプロセッサに、
    ピクセル値を示すパレットエントリーを含む予測パレットを生成することと、
    前記ビデオデータの現在のブロックのための現在のパレットにコピーされる前記予測パレット中の前記パレットエントリーの1つまたは複数を決定することと、
    前記現在のブロックのための前記現在のパレットに含まれる新たなパレットエントリーの数を決定することと、ここにおいて、前記新たなパレットエントリーは前記予測パレット中にない、
    前記コピーされたパレットエントリーの数と前記新たなパレットエントリーの前記数との合計に等しい、前記現在のパレットのサイズを計算することと、
    前記コピーされたパレットエントリーと前記新たなパレットエントリーとを含む前記現在のパレットを生成することと、
    前記現在のブロックの前記ピクセル値を表すために使用される前記現在のパレット中の前記パレットエントリーを特定する、前記現在のブロックの1つまたは複数のピクセル値についてのインデックス値を決定することと、
    を実行させる命令を記憶している、非一時的コンピュータ可読媒体。
JP2016525816A 2013-07-12 2014-07-11 パレットベースのビデオコーディングにおけるパレット予測 Active JP6246920B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361845824P 2013-07-12 2013-07-12
US61/845,824 2013-07-12
US201361899048P 2013-11-01 2013-11-01
US61/899,048 2013-11-01
US201361913040P 2013-12-06 2013-12-06
US61/913,040 2013-12-06
US14/328,502 US9558567B2 (en) 2013-07-12 2014-07-10 Palette prediction in palette-based video coding
US14/328,502 2014-07-10
PCT/US2014/046402 WO2015006724A2 (en) 2013-07-12 2014-07-11 Palette prediction in palette-based video coding

Publications (3)

Publication Number Publication Date
JP2016529783A true JP2016529783A (ja) 2016-09-23
JP2016529783A5 JP2016529783A5 (ja) 2017-08-17
JP6246920B2 JP6246920B2 (ja) 2017-12-13

Family

ID=52277073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525816A Active JP6246920B2 (ja) 2013-07-12 2014-07-11 パレットベースのビデオコーディングにおけるパレット予測

Country Status (21)

Country Link
US (1) US9558567B2 (ja)
EP (1) EP3020198B1 (ja)
JP (1) JP6246920B2 (ja)
KR (1) KR101821069B1 (ja)
CN (1) CN105556974B (ja)
AU (1) AU2014286986B2 (ja)
BR (1) BR112016000465B1 (ja)
CA (1) CA2913615C (ja)
CL (1) CL2016000057A1 (ja)
DK (1) DK3020198T3 (ja)
ES (1) ES2633947T3 (ja)
HK (1) HK1219372A1 (ja)
HU (1) HUE032104T2 (ja)
MX (1) MX353756B (ja)
MY (1) MY182937A (ja)
PH (1) PH12016500079B1 (ja)
RU (1) RU2641252C2 (ja)
SA (1) SA516370356B1 (ja)
SG (1) SG11201509667TA (ja)
SI (1) SI3020198T1 (ja)
WO (1) WO2015006724A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019022129A (ja) * 2017-07-19 2019-02-07 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像復号装置、動画像復号方法、及び動画像符号化用コンピュータプログラムならびに動画像復号用コンピュータプログラム
JP2022546439A (ja) * 2019-08-26 2022-11-04 エルジー エレクトロニクス インコーポレイティド パレットモードに基づく画像またはビデオコーディング

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US11109036B2 (en) 2013-10-14 2021-08-31 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
AU2013403224B2 (en) 2013-10-14 2018-10-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
CN105659606B (zh) 2013-10-14 2019-06-18 微软技术许可有限责任公司 用于视频和图像编码和解码的方法、***和介质
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
KR20150059269A (ko) * 2013-11-22 2015-06-01 삼성디스플레이 주식회사 영상 데이터 인코딩 장치 및 방법
GB201321850D0 (en) * 2013-12-10 2014-01-22 Canon Kk Palette Prediction
WO2015086717A2 (en) * 2013-12-10 2015-06-18 Canon Kabushiki Kaisha Improved palette mode in hevc
RU2689189C2 (ru) * 2013-12-10 2019-05-24 Кэнон Кабусики Кайся Способ и устройство для кодирования или декодирования блока пикселов
WO2015094711A1 (en) * 2013-12-18 2015-06-25 Mediatek Inc. Palette prediction and sharing in video coding
WO2015090217A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette table prediction
WO2015090219A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette initialization and management
WO2015091879A2 (en) * 2013-12-19 2015-06-25 Canon Kabushiki Kaisha Improved encoding process using a palette mode
GB2523076B (en) * 2013-12-19 2016-08-10 Canon Kk Improved palette mode in HEVC for the encoding process
WO2015096812A1 (en) 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for palette coding with cross block prediction
EP3087742B1 (en) * 2013-12-27 2020-09-23 HFI Innovation Inc. Method and apparatus for syntax redundancy removal in palette coding
WO2015096647A1 (en) * 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for major color index map coding
EP3090559A2 (en) * 2014-01-02 2016-11-09 VID SCALE, Inc. Two-dimensional palette coding for screen content coding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US10484696B2 (en) * 2014-01-07 2019-11-19 Mediatek Inc. Method and apparatus for color index prediction
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
CN104853209B (zh) * 2014-02-16 2020-09-29 同济大学 图像编码、解码方法及装置
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US10291915B2 (en) * 2014-03-06 2019-05-14 Samsung Electronics Co., Ltd. Video decoding method and apparatus and video encoding method and apparatus
US9826242B2 (en) 2014-03-14 2017-11-21 Qualcomm Incorporated Palette-based video coding
WO2015135509A1 (en) * 2014-03-14 2015-09-17 Mediatek Inc. Method for palette table initialization and management
CN106105229B (zh) * 2014-03-14 2019-03-15 寰发股份有限公司 使用调色板编码来编码视频数据的块的方法及装置
JP6164360B2 (ja) * 2014-03-14 2017-07-19 富士通株式会社 画像符号化装置、画像復号装置、画像符号化方法、及び画像復号方法
KR102494913B1 (ko) * 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
EP3120548B1 (en) * 2014-03-17 2019-12-11 Nokia Technologies Oy Decoding of video using a long-term palette
BR112016021413A2 (pt) * 2014-03-17 2017-08-15 Nokia Technologies Oy Método, e aparelho
WO2015143351A1 (en) * 2014-03-21 2015-09-24 Futurewei Technologies, Inc. Advanced screen content coding with improved color table and index map coding methods
US10362336B2 (en) 2014-03-25 2019-07-23 Qualcomm Incorporated Palette predictor signaling with run length code for video coding
US10264285B2 (en) 2014-05-22 2019-04-16 Qualcomm Incorporated Coding runs in palette-based video coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US10091512B2 (en) 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
CA2948683C (en) 2014-05-23 2019-05-21 Hfi Innovation Inc. Methods for palette size signaling and conditional palette escape flag signaling
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
CA2950964C (en) * 2014-06-19 2018-10-30 Hfi Innovation Inc. Method and apparatus of candidate generation for single sample mode in video coding
JP6328277B2 (ja) * 2014-06-20 2018-05-23 寰發股▲ふん▼有限公司HFI Innovation Inc. ビデオ符号化(coding)のパレット予測器シグナリング方法
WO2015194187A1 (en) * 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding
US10313684B2 (en) 2014-06-20 2019-06-04 Qualcomm Incorporated Copy from previous rows for palette mode coding
US9955157B2 (en) 2014-07-11 2018-04-24 Qualcomm Incorporated Advanced palette prediction and signaling
US11330297B2 (en) 2014-08-19 2022-05-10 Qualcomm Incorporated Methods incorporating extensions to copy-above mode for palette mode coding
US10469870B2 (en) * 2014-09-26 2019-11-05 Kt Corporation Method and apparatus for predicting and restoring a video signal using palette entry
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
CN105491379A (zh) * 2014-10-01 2016-04-13 财团法人工业技术研究院 解码器、编码器、解码方法、编码方法与编解码***
US9807402B2 (en) 2014-10-06 2017-10-31 Industrial Technology Research Institute Method of color palette coding applicable to electronic device and electronic device using the same
GB2531005A (en) * 2014-10-06 2016-04-13 Canon Kk Improved encoding process using a palette mode
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
US20160112724A1 (en) * 2014-10-15 2016-04-21 Qualcomm Incorporated Hrd descriptor and buffer model of data streams for carriage of hevc extensions
KR102470832B1 (ko) * 2014-10-20 2022-11-28 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10666974B2 (en) * 2014-11-12 2020-05-26 Hfi Innovation Inc. Methods of escape pixel coding in index map coding
US9961351B2 (en) 2014-11-26 2018-05-01 Qualcomm Incorporated Palette mode coding
US10097839B2 (en) * 2014-12-19 2018-10-09 Qualcomm Incorporated Palette mode for subsampling format
KR101724555B1 (ko) * 2014-12-22 2017-04-18 삼성전자주식회사 부호화 방법 및 장치와 복호화 방법 및 장치
CN107211143B (zh) * 2015-01-15 2020-08-18 株式会社Kt 用于处理视频信号的方法和设备
US9854201B2 (en) 2015-01-16 2017-12-26 Microsoft Technology Licensing, Llc Dynamically updating quality to higher chroma sampling rate
US9749646B2 (en) * 2015-01-16 2017-08-29 Microsoft Technology Licensing, Llc Encoding/decoding of high chroma resolution details
JP6122516B2 (ja) 2015-01-28 2017-04-26 財團法人工業技術研究院Industrial Technology Research Institute エンコーディング方法及びエンコーダ
CN111601110B (zh) * 2015-01-29 2023-11-07 Vid拓展公司 用于调色编码模式的逃逸色彩编码
CN107431817B (zh) * 2015-01-29 2020-03-24 Vid拓展公司 用于调色板译码的方法及装置
CN111970515B (zh) * 2015-01-29 2024-03-29 株式会社Kt 对视频信号进行编解码的方法
KR102422485B1 (ko) * 2015-01-29 2022-07-20 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN107211122B (zh) * 2015-01-29 2020-05-05 佳能株式会社 对自包含式编码结构进行编码或解码时的调色板预测结果初始化程序
US9986248B2 (en) * 2015-01-29 2018-05-29 Qualcomm Incorporated Palette mode coding for video coding
US10425659B2 (en) * 2015-01-30 2019-09-24 Qualcomm Incorporated Coding escape pixels for palette coding
US10212434B2 (en) 2015-01-30 2019-02-19 Qualcomm Incorporated Palette entries coding in video coding
US10057587B2 (en) * 2015-01-31 2018-08-21 Qualcomm Incorporated Coding escape pixels for palette mode coding
US9900624B2 (en) * 2015-02-05 2018-02-20 Mediatek Inc. Methods and apparatus of decoding process for palette syntax
CN105872539B (zh) * 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
US20160234494A1 (en) * 2015-02-10 2016-08-11 Qualcomm Incorporated Restriction on palette block size in video coding
CN107431826B (zh) 2015-02-16 2020-06-02 寰发股份有限公司 视频数据编解码方法及其装置
US9460365B1 (en) 2015-03-24 2016-10-04 Intel Corporation Clustered palette compression
US10484713B2 (en) 2015-04-02 2019-11-19 Kt Corporation Method and device for predicting and restoring a video signal using palette entry and palette escape mode
EP3262839B1 (en) * 2015-04-08 2021-06-16 HFI Innovation Inc. Methods for palette mode context coding and binarization in video coding
US10178412B2 (en) * 2015-04-08 2019-01-08 Hfi Innovation Inc. Methods of palette mode coding in video coding
WO2016169020A1 (en) * 2015-04-23 2016-10-27 Mediatek Singapore Pte. Ltd. A simplified coding method for palette coding
US20180213222A1 (en) * 2015-05-27 2018-07-26 Kt Corporation Method and device for processing video signal
US20160360205A1 (en) * 2015-06-08 2016-12-08 Industrial Technology Research Institute Video encoding methods and systems using adaptive color transform
WO2016197314A1 (en) * 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
EP3273692A4 (en) * 2015-06-10 2018-04-04 Samsung Electronics Co., Ltd. Method and apparatus for encoding or decoding image using syntax signaling for adaptive weight prediction
US11146788B2 (en) 2015-06-12 2021-10-12 Qualcomm Incorporated Grouping palette bypass bins for video coding
GB2539488B8 (en) * 2015-06-18 2020-08-19 Gurulogic Microsystems Oy Encoder, decoder and method employing palette utilization and compression
GB2539486B (en) 2015-06-18 2019-07-31 Gurulogic Microsystems Oy Encoder, decoder and method employing palette compression
JP6545570B2 (ja) * 2015-08-18 2019-07-17 株式会社東芝 符号化装置、復号装置および画像処理装置
JP6613842B2 (ja) * 2015-11-24 2019-12-04 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
JP6662123B2 (ja) * 2016-03-14 2020-03-11 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
CN113727109B (zh) * 2016-05-28 2023-12-29 寰发股份有限公司 用于彩***数据的调色板模式编解码的方法及装置
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
CN106713921B (zh) * 2016-11-29 2019-07-23 西安万像电子科技有限公司 文字块的压缩方法和装置以及图像压缩方法和装置
KR102458642B1 (ko) * 2016-12-23 2022-10-24 후아웨이 테크놀러지 컴퍼니 리미티드 지향성 인트라 예측 모드의 세트 내에서 확장 지향성 인트라 예측 모드를 시그널링하는 인코딩 장치
CN109788290A (zh) * 2017-11-13 2019-05-21 慧荣科技股份有限公司 影像处理装置及利用帧内预测的无损影像压缩方法
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10262451B1 (en) * 2018-04-09 2019-04-16 8i Limited View-dependent color compression
US10848787B2 (en) 2018-08-28 2020-11-24 Google Llc Lossy image compression using palettization of locally mixed colors
US11695919B2 (en) 2018-08-28 2023-07-04 Google Llc Lossy image compression using palettization of locally mixed colors
US11412260B2 (en) * 2018-10-29 2022-08-09 Google Llc Geometric transforms for image compression
FR3088511B1 (fr) * 2018-11-09 2021-05-28 Fond B Com Procede de decodage d’au moins une image, procede de codage, dispositifs, signal et programmes d’ordinateur correspondants.
WO2020141984A2 (en) * 2018-12-31 2020-07-09 Huawei Technologies Co., Ltd. Method and apparatus of mode- and size-dependent block-level restrictions for position dependent prediction combination
US11134258B2 (en) 2019-02-11 2021-09-28 Qualcomm Incorporated Predictive coefficient coding
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11503311B2 (en) * 2019-03-08 2022-11-15 Sony Group Corporation Hybrid palette-DPCM coding for image compression
US11252442B2 (en) * 2019-04-08 2022-02-15 Tencent America LLC Method and apparatus for video coding
WO2020219737A1 (en) 2019-04-24 2020-10-29 Bytedance Inc. Constraints on quantized residual differential pulse code modulation representation of coded video
CN117857783A (zh) 2019-05-01 2024-04-09 字节跳动有限公司 使用量化残差差分脉冲码调制编解码的帧内编解码视频
JP7288083B2 (ja) 2019-05-02 2023-06-06 バイトダンス インコーポレイテッド 符号化ツリー構造タイプに基づく符号化モード
WO2020261313A1 (ja) * 2019-06-24 2020-12-30 日本電信電話株式会社 画像符号化方法、及び画像復号方法
US11206413B2 (en) * 2019-08-13 2021-12-21 Qualcomm Incorporated Palette predictor updates for local dual trees
CN116684634A (zh) * 2019-08-26 2023-09-01 Lg电子株式会社 编码设备、解码设备和比特流发送设备
KR102660881B1 (ko) * 2019-08-26 2024-04-25 엘지전자 주식회사 팔레트 이스케이프 코딩 기반 영상 또는 비디오 코딩
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.
US11323711B2 (en) * 2019-09-20 2022-05-03 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
US11240507B2 (en) * 2019-09-24 2022-02-01 Qualcomm Incorporated Simplified palette predictor update for video coding
CN117939165A (zh) * 2019-10-05 2024-04-26 Lg电子株式会社 解码设备、编码设备和发送设备
KR20220050968A (ko) * 2019-10-05 2022-04-25 엘지전자 주식회사 변환 스킵 및 팔레트 코딩 관련 정보 기반 영상 또는 비디오 코딩
CN114762339B (zh) * 2019-10-05 2023-10-27 Lg电子株式会社 基于变换跳过和调色板编码相关高级语法元素的图像或视频编码
JP2023504407A (ja) * 2019-12-03 2023-02-03 アリババ グループ ホウルディング リミテッド パレットモードを使用するための映像処理方法及び機器
CN116437086B (zh) * 2019-12-30 2023-11-17 阿里巴巴(中国)有限公司 用于在调色板模式下对视频数据进行编码的方法和装置
US11595665B2 (en) * 2021-02-11 2023-02-28 Qualcomm Incorporated Upsampling reference pixels for intra-prediction in video coding
US11463716B2 (en) * 2021-02-25 2022-10-04 Qualcomm Incorporated Buffers for video coding in palette mode
JP2024516366A (ja) * 2021-04-13 2024-04-15 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ブロック重要性マッピング
US11937070B2 (en) 2021-07-01 2024-03-19 Tencent America LLC Layered description of space of interest
WO2024081012A1 (en) * 2022-10-13 2024-04-18 Google Llc Inter-prediction with filtering

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369011A (ja) * 2001-06-06 2002-12-20 Canon Inc 画像処理装置、画像処理方法及び画像処理プログラム
US20040213469A1 (en) * 2002-04-30 2004-10-28 Apostolopoulos John G. Method for compressing images and image sequences through adaptive partitioning
WO2006022741A1 (en) * 2004-08-23 2006-03-02 Marger Johnson & Mccollom, P.C. Image compression usable with animated images
US7343037B1 (en) * 2004-02-04 2008-03-11 Microsoft Corporation Dynamic, locally-adaptive, lossless palettization of color and grayscale images
US20080144952A1 (en) * 2006-11-30 2008-06-19 Canon Kabushiki Kaisha Method and Apparatus For Hybrid Image Compression

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5686961A (en) * 1992-01-27 1997-11-11 Harris Corporation Automatic video image data reduction and prioritization system and method
US5408542A (en) 1992-05-12 1995-04-18 Apple Computer, Inc. Method and apparatus for real-time lossless compression and decompression of image data
MX9700385A (es) * 1994-07-14 1998-05-31 Johnson Grace Company Metodo y aparato para comprimir imagenes.
US5930390A (en) * 1996-03-28 1999-07-27 Intel Corporation Encoding/decoding signals using a remap table
US6008816A (en) 1996-04-25 1999-12-28 Microsoft Corporation Method and system for managing color specification using attachable palettes and palettes that refer to other palettes
US6157746A (en) * 1997-02-12 2000-12-05 Sarnoff Corporation Apparatus and method for encoding wavelet trees generated by a wavelet-based coding method
US6064771A (en) * 1997-06-23 2000-05-16 Real-Time Geometry Corp. System and method for asynchronous, adaptive moving picture compression, and decompression
US6256415B1 (en) 1998-06-10 2001-07-03 Seiko Epson Corporation Two row buffer image compression (TROBIC)
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
BR0009255A (pt) * 1999-12-22 2002-02-19 Neomtel Co Ltd Método e sistema, para transmissão de dados binários de figura em movimento e de mensagem para estação móvel
US6909804B2 (en) * 2000-01-27 2005-06-21 Marger Johnson & Mccollom, P.C. Image compression usable with animated images
US6819793B1 (en) 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US6748116B1 (en) 2000-08-22 2004-06-08 Airzip, Inc. Apparatus and method for compressing and decompressing image files
AUPR212600A0 (en) * 2000-12-18 2001-01-25 Canon Kabushiki Kaisha Efficient video coding
US7319720B2 (en) * 2002-01-28 2008-01-15 Microsoft Corporation Stereoscopic video
US6898313B2 (en) * 2002-03-06 2005-05-24 Sharp Laboratories Of America, Inc. Scalable layered coding in a multi-layer, compound-image data transmission system
US7302006B2 (en) * 2002-04-30 2007-11-27 Hewlett-Packard Development Company, L.P. Compression of images and image sequences through adaptive partitioning
GB2388502A (en) * 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
AU2003275440A1 (en) * 2002-10-07 2004-05-04 Summus, Inc. System for graphics compression and display
US20040151394A1 (en) * 2003-01-31 2004-08-05 Mikael Soderberg Symmetrical, highly deterministic, low complexity, temporal transform video codec and vehicle distribution system incorporating same
US8073275B2 (en) * 2005-02-09 2011-12-06 Mobixell Networks Ltd. Image adaptation with target size, quality and resolution constraints
US8848789B2 (en) * 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US7343837B1 (en) 2006-09-15 2008-03-18 James Anthony Domanico Multi-plane flexible handle for ratchets and wrenches
US8170101B2 (en) * 2006-10-27 2012-05-01 Sharp Laboratories Of America, Inc. Methods and systems for low-complexity data compression
US8213511B2 (en) * 2007-04-30 2012-07-03 Texas Instruments Incorporated Video encoder software architecture for VLIW cores incorporating inter prediction and intra prediction
WO2010022002A1 (en) * 2008-08-19 2010-02-25 Marvell World Trade Ltd Systems and methods for perceptually lossless video compression
RU2420021C2 (ru) * 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
US20110110416A1 (en) * 2009-11-12 2011-05-12 Bally Gaming, Inc. Video Codec System and Method
CN107425855B (zh) * 2011-01-14 2021-02-02 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
US20120294353A1 (en) * 2011-05-16 2012-11-22 Mediatek Inc. Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components
US20130101033A1 (en) * 2011-10-14 2013-04-25 Qualcomm Incorporated Coding non-symmetric distributions of data
EP2837185B1 (en) * 2012-04-13 2019-09-04 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
WO2015090219A1 (en) 2013-12-18 2015-06-25 Mediatek Inc. Method and apparatus for palette initialization and management
EP3090559A2 (en) * 2014-01-02 2016-11-09 VID SCALE, Inc. Two-dimensional palette coding for screen content coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002369011A (ja) * 2001-06-06 2002-12-20 Canon Inc 画像処理装置、画像処理方法及び画像処理プログラム
US20040213469A1 (en) * 2002-04-30 2004-10-28 Apostolopoulos John G. Method for compressing images and image sequences through adaptive partitioning
US7343037B1 (en) * 2004-02-04 2008-03-11 Microsoft Corporation Dynamic, locally-adaptive, lossless palettization of color and grayscale images
WO2006022741A1 (en) * 2004-08-23 2006-03-02 Marger Johnson & Mccollom, P.C. Image compression usable with animated images
US20080144952A1 (en) * 2006-11-30 2008-06-19 Canon Kabushiki Kaisha Method and Apparatus For Hybrid Image Compression

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019022129A (ja) * 2017-07-19 2019-02-07 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像復号装置、動画像復号方法、及び動画像符号化用コンピュータプログラムならびに動画像復号用コンピュータプログラム
JP2022546439A (ja) * 2019-08-26 2022-11-04 エルジー エレクトロニクス インコーポレイティド パレットモードに基づく画像またはビデオコーディング
JP7400082B2 (ja) 2019-08-26 2023-12-18 エルジー エレクトロニクス インコーポレイティド パレットモードに基づく画像またはビデオコーディング

Also Published As

Publication number Publication date
JP6246920B2 (ja) 2017-12-13
KR20160031495A (ko) 2016-03-22
SA516370356B1 (ar) 2019-07-21
PH12016500079A1 (en) 2016-04-18
CL2016000057A1 (es) 2016-08-19
BR112016000465A2 (ja) 2017-07-25
MY182937A (en) 2021-02-05
WO2015006724A3 (en) 2015-03-26
BR112016000465B1 (pt) 2023-04-18
EP3020198A2 (en) 2016-05-18
CA2913615A1 (en) 2015-01-15
HK1219372A1 (zh) 2017-03-31
SI3020198T1 (sl) 2017-08-31
AU2014286986A1 (en) 2016-02-11
MX2016000358A (es) 2016-05-05
US20150016501A1 (en) 2015-01-15
DK3020198T3 (en) 2017-06-06
RU2016104535A (ru) 2017-08-16
WO2015006724A2 (en) 2015-01-15
EP3020198B1 (en) 2017-04-26
CA2913615C (en) 2019-03-05
HUE032104T2 (en) 2017-08-28
AU2014286986B2 (en) 2018-03-15
MX353756B (es) 2018-01-26
KR101821069B1 (ko) 2018-01-22
CN105556974A (zh) 2016-05-04
PH12016500079B1 (en) 2016-04-18
RU2641252C2 (ru) 2018-01-16
SG11201509667TA (en) 2016-01-28
CN105556974B (zh) 2019-03-12
ES2633947T3 (es) 2017-09-26
US9558567B2 (en) 2017-01-31

Similar Documents

Publication Publication Date Title
JP6246920B2 (ja) パレットベースのビデオコーディングにおけるパレット予測
KR102546382B1 (ko) 비디오 코딩을 위한 가변 수의 인트라 모드들
JP6297671B2 (ja) パレットベースのビデオコード化におけるパレットインデックスの決定
US10097842B2 (en) Restriction of escape pixel signaled values in palette mode video coding
JP6571162B2 (ja) パレットモード符号化および復号の設計
JP6749925B2 (ja) ビデオコーディングにおけるパレットブロックサイズに対する制限
EA035170B1 (ru) Система и способ кодирования и декодирования видеоданных в режиме палитры
KR20160136338A (ko) 비디오 코딩을 위한 런 길이 코드를 이용한 팔레트 예측자 시그널링
JP2018507615A (ja) ビデオコーディングのためのパレットインデックスのグループ化
JP2017532896A (ja) パレットインデックスのコーディングのためのパースの依存性の低減
JP2018507613A (ja) ビデオコーディングにおけるパレットエントリのコーディング
US9848198B2 (en) Diagonal copy for palette mode coding

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170616

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170707

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171006

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171010

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171115

R150 Certificate of patent or registration of utility model

Ref document number: 6246920

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250