JP2017536724A - パレットモードを用いる改良された符号化プロセス - Google Patents

パレットモードを用いる改良された符号化プロセス Download PDF

Info

Publication number
JP2017536724A
JP2017536724A JP2017516935A JP2017516935A JP2017536724A JP 2017536724 A JP2017536724 A JP 2017536724A JP 2017516935 A JP2017516935 A JP 2017516935A JP 2017516935 A JP2017516935 A JP 2017516935A JP 2017536724 A JP2017536724 A JP 2017536724A
Authority
JP
Japan
Prior art keywords
block
palette
indices
index
pixels
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
JP2017516935A
Other languages
English (en)
Other versions
JP2017536724A5 (ja
JP6584501B2 (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.)
Canon Inc
Original Assignee
Canon 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 Canon Inc filed Critical Canon Inc
Publication of JP2017536724A publication Critical patent/JP2017536724A/ja
Publication of JP2017536724A5 publication Critical patent/JP2017536724A5/ja
Application granted granted Critical
Publication of JP6584501B2 publication Critical patent/JP6584501B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

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

Abstract

本発明は、ビデオ符号化および復号に関し、さらに具体的には、パレット符号化モードを定義するHEVC SCCに関する。従来式のパレットモードでは、符号化ユニットとパレットとから構築されるレベルのブロックは、「Pred mode」要素、随意的な「Level」要素、ならびに、「Pred mode」要素および随意的な「Level」要素によって定義される演算にかかわるインデックスのブロックの連続するインデックスの数を定義する「Run」要素などの、シンタクス要素を使って符号化される。本発明の改良された実施形態では、符号化ユニットに対する最後の「Run」要素は、残りのブロック位置の数に関係なくインデックスのブロックの終端までの全ての残りのブロック位置にあるインデックスに対する演算を遂行することを示すために、連続するインデックスの定義された数に関連付けられた符号語の代わりに、固有の終端まで−符号語を使用する。【選択図】図17

Description

本発明はビデオ符号化および復号に関する。より正確には、本発明はパレットモード符号化の方法に関する。パレットモードは、HEVCレンジ拡張の範囲の中で提供された符号化方法であり、現在、HEVCのスクリーンコンテンツ符号化拡張のため検討中である。この符号化方法は、「スクリーンコンテンツ」ビデオシーケンスを対象としたビデオ符号化に対して効率的である。
本発明は、画素の現在のブロックが、インデックスのブロックを使って符号化される場合の符号化のモードに適用し、該インデックスのブロックは、いわゆるパレットから構築される。
本文書におけるパレットは、インデックスを画素の値に関連付けるエントリを有するルックアップテーブルとして定義される。必然ではないが、通常、画素の値は、その画素に関連付けられた各カラー成分の値で構成され、カラーパレットをもたらす。他方、画素の値を単一の画素成分で構成することもでき、白黒のパレットがもたらされる。
画素ブロックの符号化のこのモードは、一般に、パレット符号化モードと言われる。このモードを、例えば、高効率ビデオ符号化(HEVC(High Efficiency Video Coding):ISO/IEC 23008−2 MPEG−Hパート2/ITU−T H.265)国際規格のレンジ拡張に採用することが考慮された。このモードは、HEVCのスクリーンコンテンツ符号化(SCC:Screen Content Coding)拡張のドラフトスペシフィケーションで現在検討中である。
ビデオシーケンス中の画像を符号化するとき、画像は、最初に、符号化ツリーブロック(CTB:Coding Tree Block)と言われる、等サイズの画素の符号化エンティティに分割される。符号化ツリーブロックのサイズは、通常、64×64画素である。次いで、各符号化ツリーブロックは、より小さなブロックの階層ツリーに分解することができ、そのサイズは変わり得て、符号化対象の実際の画素ブロックとなる。これら符号化対象のより小さなブロックは符号化ユニット(CU:Coding Unit)と言われる。
個別の符号化ユニットの符号化は、通常、予測される。このことは、最初に予測因子ブロックが算定されることを意味する。次に、予測因子ブロックと符号化ユニットとの間の差異が計算される。この差は、残差または残差ブロックと呼ばれる。次に、この残差が圧縮される。符号化ユニットの実際の符号化情報は、予測因子ブロックおよび圧縮残差を算定の方法を示すためのいくつかの情報で構成される。最良の予測因子ブロックは、効率的に圧縮可能で小さな残差を得るために、符号化ユニットにできるだけ類似したブロックである。
符号化モードは、符号化ユニットの予測符号化方法のための予測因子ブロックを算定するのに使われる方法に基づいて定義される。
第一の符号化モードはINTRA(イントラ)モードと言われる。INTRAモードによれば、予測因子ブロックは、現在の画像内の符号化ユニットを直接的に取り囲む画素の値に基づいて構築される。予測因子ブロックは、現在の画像のブロックでなく構成材であることに留意すべきである。予測因子ブロックを構築するため、境界のどの画素群を実際に使い、それらをどのように使うのかを決めるために、1つの方向が用いられる。INTRAモードの背景にある考え方は、自然画像の一般的一貫性に起因して、符号化ユニットを直接に取り囲む画素は現在の符号化ユニットの画素と類似している可能性が高い、ということである。したがって、これら周囲の画素に基づく予測因子ブロックを用いて、符号化ユニットの画素の値の良好な予測を得ることが可能である。
第二の符号化モードは、INTER(インター)モードと言われる。INTERモードによれば、予測因子ブロックは別の画像のブロックである。INTERモードの背景にある考え方は、シーケンスにおいて次に続く画像は一般に非常に近似している、ということである。主な差異は、通常、カメラの視野移動に起因するまたはシーン中の被写体の動きに起因する、これらの画像の間での動きからくる。予測因子ブロックは、現在の画像内の符号化ユニットの或る位置に対し、ベクトルが、参照画像中の当該位置を示すことによって算定される。このベクトルは動きベクトルと言われる。このモードによれば、本モードを使うかかる符号化ユニットの符号化は、動きベクトルおよび圧縮残差を含む動き情報を含む。
本文書では、パレットモードと呼ばれる第三の符号化モードに焦点を当てる。パレットモードの旧バージョンによれば、予測因子ブロックは、所与の符号化ブロックに対しパレットからのインデックスのブロックとして定義され、予測因子ブロックは、予測因子ブロック中の各画素の位置に対し、符号化ユニット中で同じ位置を有する(すなわち同一場所配置の)画素の値に最も近い、パレット中の画素値に関連付けられたインデックスを包含する。予測因子ブロックは、しかして、符号化ユニットと同じサイズを有する。(画素ドメインにおける)予測因子ブロックと符号化ユニットとの間の差を表す残差が次いで計算される。また、残差も、符号化ユニットと予測因子ブロックとで同じサイズを有する。
パレット中へのエントリインデックスは、「レベル」と呼ばれることもある。
HEVC SCCにおいて検討中のパレットモードの最新のバージョンでは、残差は(図7中で後に説明するように)形成されずにデコーダに送信されることもない。パレットを使って形成されたインデックスのブロックだけが、画素の現在のブロックを表すためにビットストリーム中にコード化される。
一部の画素は、最良のパレットエントリによっても劣悪に表現されることがある。すなわち、これらの画素と最良のパレットエントリとの間の差は大きい。かかる画素を表すためにインデックスを使う価値がないことがある。
しかして、該パレットモードは、かかる画素を識別し、近似のインデックスを用いる代わりに、それらの明示的な画素値を符号化することを可能にする。かかるアプローチは、(パレットエントリによって行われた近似を表す)残差が送信されない場合、特に重要である。画素値が明示的に符号化された、かかる画素は「エスケープ画素」と名付けられ、パレット中の画素値に関連付けられたインデックスのブロックの中には対応するインデックスが設けられない。HEVCの現行の実装では、「エスケープ画素」は、画素値に関連付けられていないパレットのエントリインデックスを用いて、インデックスのブロック中でシグナリングされる。
パレットモードのかかる実装において、エスケープ画素値を格納するために、インデックスのブロックおよびパレットに加えて、エスケープ画素値のブロックが構築される。
符号化済みの現在の符号化ユニットを表すビットストリームに加えるため、予測因子ブロック(すなわち、インデックスのブロック)、エスケープ画素値のブロック、ならびに、場合によって残差およびパレットが符号化される。
パレットモードに対するインデックスのブロックを符号化するために、シンタクス要素の複数のセットが用いられ、各セットは、インデックスのブロック中に連続したブロック位置を有する、対応インデックスのグループを生成するための演算を設定する。
HEVCのスクリーンコンテンツ符号化拡張の現在のドラフトスペシフィケーションでは、ブロックマトリックス中の上側またはその左側のインデックスを参照してインデックスのブロックの各インデックスを符号化する、「上側コピー」予測および「左側値」予測が提案されている。
「Pred mode」と言われる1つのシンタクス要素は、上で定義されたRunが終了しない限り、インデックスのブロック中のインデックスの対応グループに対して、すなわちブロックの各現在のインデックスに対して、選択された演算または予測モードを指定する。「Level」と言われる、随意的な(「Pred mode」の関数)第二のシンタクス要素は、「左側値」予測モードにおいてのみ、対応するインデックスのグループに対する新規インデックス値を指定する。さらに、「Run」と言われる、第三のそして最後のシンタクス要素は、「Pred mode」シンタクス要素によって定義された演算が、どのくらいの多くの連続するブロック位置に適用されるかを指定する。言い換えれば、このシンタクス要素は、対応するインデックスのグループ中の(連続するブロック位置を有する)インデックスの数を定義する。
本発明の諸実施形態は、パレットモードの符号化効率を向上する。
第一態様において、本発明は、ビットストリームからの画像中の画素の現在のブロックを復号する方法を提供し、本方法は、
インデックスのブロック、エスケープ画素値、およびパレットを得るステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該得るステップと、
インデックスのブロック、エスケープ画素値、およびパレットから画素の復号された現在のブロックを形成するステップと、
を含み、
インデックスのブロックを得るステップが、
インデックスのブロック中に、連続するブロック位置を有するインデックスのグループを生成するため、ビットストリームからシンタクス要素を取得するステップと、
そのシンタクス要素に基づいて、インデックスのブロックのインデックスを生成するステップと、
を含み、
取得されたシンタクス要素は、インデックスのグループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までの全ての残りのブロック位置にあるインデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む。
第二態様において、本発明は、画像中の画素の現在のブロックを符号化する方法を提供し、本方法は、
画素の現在のブロックおよびパレットから、インデックスのブロックおよびエスケープ画素値を生成するステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該生成するステップと、
インデックスのブロックおよびエスケープ画素値を符号化するステップと、
を含み、
インデックスのブロックを符号化するステップは、
インデックスのブロック中に連続するブロック位置を有するインデックスのグループを生成するためのシンタクス要素を生成するステップ、
を含み、
該シンタクス要素は、インデックスのグループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までの全ての残りのブロック位置にあるインデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む。
第一および第二態様の実施形態において、終端まで−符号語はフラグを含むことが可能である。エスケープ画素値は、かかるエスケープ画素値のブロックを含んでよい。
諸実施形態において、これらシンタクス要素が、インデックスの定義された数に関連付けられ、インデックスのブロックのインデックスの1グループに対応する、所定符号語を使用し、インデックスのブロック中の最後のブロック位置群に対応するシンタクス要素が、終端まで−符号語を使用する。
インデックスの定義された数に関連付けられた所定符号語は短縮符号語とすることができ、インデックスの他の定義された数に関連付けられた他の所定符号語は、共通の符号語接頭辞と可変の符号語接尾辞とで構成することが可能で、終端まで−符号語はこの共通の符号語接頭辞を含んでよい。例えば、終端まで−符号語は、共通の符号語接頭辞に加え、1ビットの接尾辞を含めればよい。
諸実施形態において、シンタクス要素はセットとして設けられ、シンタクス要素の或るセットに対応するインデックスのグループの生成は、そのセットの第一シンタクス要素により決まり、インデックスを生成するために使われる演算は、
真上のブロック位置にあるインデックスを繰り返すこと、および
セットの第二シンタクス要素中に符号化されたインデックスを繰り返すこと、
のうちの1つである。
さらなる態様において、プログラムを格納した非一時的コンピュータ可読媒体が提供され、該プログラムは、デバイス中のマイクロプロセッサまたはコンピュータシステムによって実行されると、そのデバイスに前述の態様および実施形態のいずれかの方法を遂行させる。
別の態様において、実行されるといずれかの前述の態様または実施形態の方法を遂行させる、コンピュータプログラムが提供される。本コンピュータプログラムは、マシン可読媒体などの担体上に具現化することが可能である。
他の態様において、第二の態様またはその実施形態を用いて生成されるビットストリーム、および前記ビットストリームを格納するストレージ媒体が提供される。かかるストレージ媒体は、例えば、Blu−Rayディスク、DVD、CD−ROM、または別のデバイス可読の媒体の形をとることができよう。
別の態様において、前述の態様または実施形態のいずれかの方法を実行するようになされた手段を含むデバイスが提供される。
本発明のさらなる態様において、ビットストリームからの画像中の画素の現在のブロックを復号するための復号デバイスが提供され、本復号デバイスは、
インデックスのブロック、エスケープ画素値、およびパレットを得るための手段であって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該得るための手段と、
インデックスのブロック、エスケープ画素値、およびパレットから画素の復号された現在のブロックを形成するための手段と、
を含み、
インデックスのブロックを得るステップが、
インデックスのブロック中に、連続するブロック位置を有するインデックスのグループを生成するため、ビットストリームからシンタクス要素を取得するステップと、
そのシンタクス要素に基づいて、インデックスのブロックのインデックスを生成するステップと、
を含み、
取得されたシンタクス要素は、インデックスのグループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までの全ての残りのブロック位置にあるインデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む。
本発明のさらに別の態様において、画像中の画素の現在のブロックを符号化するための符号化デバイスが提供され、本符号化デバイスは、
画素の現在のブロックおよびパレットから、インデックスのブロックおよびエスケープ画素値を生成するための手段であって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該生成するための手段と、
インデックスのブロックおよびエスケープ画素値を符号化するための手段と、
を含み、
インデックスのブロックを符号化するステップは、
インデックスのブロック中に連続するブロック位置を有するインデックスのグループを生成するためのシンタクス要素を生成するステップ、
を含み、
該シンタクス要素は、インデックスの対応するグループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までの全ての残りのブロック位置にあるインデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む。
別の態様において、本発明は、ビットストリームからの画像中の画素の現在のブロックを復号する方法を提供し、本方法は、
インデックスのブロック、エスケープ画素値、およびパレットを得るステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該得るステップと、
インデックスのブロック、エスケープ画素値、およびパレットから画素の復号された現在のブロックを形成するステップと、
を含み、
インデックスのブロックを得るステップが、
インデックスのブロック中に、連続するブロック位置を有するインデックスのグループを生成するため、ビットストリームからシンタクス要素を取得するステップであって、連続するブロック位置の数がランによって示される、該取得するステップと、
そのシンタクス要素に基づいて、インデックスのブロックのインデックスを生成するステップと、
を含み、
取得されたシンタクス要素は、インデックスのグループのランが復号されているブロック中の最後のランであるときを示す、ビットストリーム中のフラグを含む。さらなる態様において、前記復号の方法を遂行するための手段、または遂行するよう構成されたプロセッサを有するデバイス、ならびに実行されると前記復号の方法を遂行させるコンピュータプログラムが提供される。
第二態様において、本発明は、画像中の画素の現在のブロックを符号化する方法を提供し、本方法は、
画素の現在のブロックおよびパレットから、インデックスのブロックおよびエスケープ画素値を生成するステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値は、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該生成するステップと、
インデックスのブロックおよびエスケープ画素値を符号化するステップと、
を含み、
インデックスのブロックを符号化するステップは、
インデックスのブロック中に連続するブロック位置を有するインデックスのグループを生成するためのシンタクス要素を生成するステップであって、インデックスのグループの連続するブロック位置の数はランによって示される、該生成するステップ、
を含み、
シンタクス要素は、ビットストリーム中のフラグを含み、該フラグは、復号されているブロック中のインデックスのグループのランが最後のランであるときを示す。さらなる態様において、前記復号の方法を遂行するための手段、または遂行するよう構成されたプロセッサを有するデバイス、ならびに実行されると前記方法を遂行させるコンピュータプログラムが提供される。
シンタクス要素の最後のセット(すなわち、符号化ユニット中の最後の画素群に対するセット)は、多くの場合、多数の画素(インデックス)に対し、特に、画像の終端部は通常単調なので画像の最後の符号化ユニットに対して適用される。しかして、かかる「終端まで」値またはフラグの使用は、それが、最後の「Run」にかかわる多数のインデックスを表す値を符号化するための大量のビットの使用を回避できるので、符号化の効率を向上する。
さらに、(特に復号ループ中の)シンタクス要素の最後のセットに対し処理されるインデックスの数の制御も回避が可能である。これは、「終端まで」値またはフラグのおかげで、全ての残りのインデックスが含まれることが分かっているからである。
或る態様において、本発明は、ビットストリームからの画像中の画素の現在のブロックを復号する方法を提供し、本方法は、
インデックスのブロック、エスケープ画素値のブロック、およびパレットを得るステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値のブロックは、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該得るステップと、
インデックスのブロック、エスケープ画素値のブロック、およびパレットから画素の復号された現在のブロックを形成するステップと、
を含み、
インデックスのブロックを得るステップが、
インデックスのブロック中に、連続するブロック位置を有するインデックスの対応グループを生成するため、ビットストリームから、各セットが演算を設定するシンタクス要素の複数のセットを得るステップと、
そのシンタクス要素のセットに基づいて、インデックスのブロックのインデックスを生成するステップと、
を含み、
各セット中に与えられた或るシンタクス要素(例えば、HEVCのスクリーンコンテンツ符号化のドラフトスペシフィケーション中のRun要素)は、インデックスの対応グループを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までのかかる全ての残りのブロック位置にあるインデックスであることを示す、終端まで−符号語を含め、少なくとも2つ利用可能な符号語から選択された符号語を使用する。
符号語の使用とは、かかる符号語が与えられたシンタクス要素中に設定されることを意味する。
また、画像中の画素の現在のブロックを符号化する方法も提供され、本方法は、
画素の現在のブロックおよびパレットから、インデックスのブロック、エスケープ画素値のブロックを生成するステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値のブロックは、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該生成するステップと、
インデックスのブロックおよびエスケープ画素値のブロックを符号化するステップと、
を含み、
インデックスのブロックを符号化するステップは、
シンタクス要素の複数のセットを生成するステップであって、各セットは、デコーダが、インデックスのブロック中に連続するブロック位置を有するインデックスの対応グループを生成するための演算を設定する、該生成するステップ、
を含み、
各セット中に与えられた或るシンタクス要素は、インデックスの対応グループを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までのかかる全ての残りのブロック位置にあるインデックスであることを示す、終端まで−符号語を含め、少なくとも2つ利用可能な符号語のセットから選択された符号語を使用する。
上記に応じて、本発明の前述の実施形態は、ビットストリームからの画像中の画素の現在のブロックを復号するための復号デバイスを提供し、本復号デバイスは、
インデックスのブロック、エスケープ画素値のブロック、およびパレットを得るステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値のブロックは、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該得るステップと、
インデックスのブロック、エスケープ画素値のブロック、およびパレットから画素の復号された現在のブロックを形成するステップと、
を実行するよう構成された少なくとも1つのマイクロプロセッサを含み、
インデックスのブロックを得るステップが、
ビットストリームからシンタクス要素の複数のセットを得るステップであって、各セットは、インデックスのブロック中に連続するブロック位置を有するインデックスの対応グループを生成するための演算を設定する、該得るステップと、
シンタクス要素のセットに基づいて、インデックスのブロックのインデックスを生成するステップと、
を含み、
各セット中に設けられた或るシンタクス要素は、インデックスの対応グループを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までのかかる全ての残りのブロック位置にあるインデックスであることを示す、終端まで−符号語を含め、少なくとも2つ利用可能な符号語から選択された符号語を使用する。
さらに、画像中の画素の現在のブロックを符号化するための符号化デバイスが提供され、本符号化デバイスは、
画素の現在のブロックおよびパレットから、インデックスのブロック、およびエスケープ画素値のブロックを生成するステップであって、パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、エスケープ画素値のブロックは、パレット中の画素値に関連付けられたインデックスのブロックの中に対応するインデックスを持たない画素に対する画素値を含む、該生成するステップと、
インデックスのブロックおよびエスケープ画素値のブロックを符号化するステップと、
を実行するよう構成された少なくとも1つのマイクロプロセッサを含み、
インデックスのブロックを符号化するステップは、
シンタクス要素の複数のセットを生成するステップであって、各セットは、デコーダがインデックスのブロック中に連続するブロック位置を有するインデックスの対応グループを生成するための演算を設定する、該生成するステップ、
を含み、
各セット中に与えられた或るシンタクス要素は、インデックスの対応グループを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までのかかる全ての残りのブロック位置にあるインデックスであることを示す、終端まで−符号語を含め、少なくとも2つ利用可能な符号語のセットから選択された符号語を使用する。
これらの実施形態の随意的特徴が従属請求項に定義されている。これらの特徴のいくつかは、本明細書で方法を参照しながら以下に説明され、それらは、本発明の実施形態によるデバイスに専用のシステム特徴に転用することが可能である。
いくつかの実施形態において、設定シンタクス要素に対する少なくとも2つの利用可能な符号語のセットは、インデックスの定義された数に関連付けられた所定符号語を含み、該設定シンタクス要素は、インデックスのブロック中の最後のブロック位置に対応する最後セットと言われるセットを除き、インデックスのブロックのインデックスのグループに対応する各セットに対し、かかる所定符号語の1つを使用し、該最後セットの設定シンタクス要素は、終端まで−符号語を使用する。
この設定は、既知のシンタクス要素に対し追加の符号語(終端まで−符号語)を挿入することにより符号化効率を節約する。
特定の実施形態によれば、インデックスの定義された数に関連付けられたいくつかの所定符号語は短縮符号語であり、インデックスの他の定義された数に関連付けられた他の所定符号語は、共通の符号語接頭辞と、所定符号語相互の間で異なる符号語接尾辞とで構成され、終端まで−符号語はこの共通の符号語接頭辞を含む。
これらの短縮符号語は、通常、(ビットに関して)共通符号語接頭辞以下の長さである。
この構成は効率的な符号化を提供する。これは、終端まで−符号語が、符号化ユニット(画素のブロック)中で多くて1回は使われるので、インデックスの最頻度の数に対し、短縮符号語を保つことがより効率的であることによる。
ある特定の実施形態において、終端まで−符号語は、共通の符号語接頭辞に加え1ビットの接尾辞を含む。言い換えれば、共通の符号語接頭辞を有する最短の符号語が、「終端まで」符号語に用いられる。これは符号化効率を維持することを意図している。
共通符号語接頭辞と1つの接尾辞とで構成された終端まで−符号語の使用に換えて、終端まで−符号語は、特定の短縮符号語(すなわち共通符号語接頭辞なし)としてもよい。
諸実施形態において、シンタクス要素のセットに対応するインデックスのグループを生成するための演算は、該セットの第一シンタクス要素(例えば、Pred_mode要素)によって決まり、これらインデックスを生成するために使われる演算は、
真上部のブロック位置にあるインデックスを繰り返すこと、これは、HEVCの「上側コピー」または「上部コピー」モードである、および
当該セットの第二シンタクス要素(例えば、Level要素)中に符号化されたインデックスを繰り返すこと、これは、HEVC規格中の「左側コピーモード」または「左側予測モード」または「インデックスモード」として知られるモード、
のうちの1つである。
本発明の他の実施形態は、画像中の画素の現在のブロックを符号化するための方法を対象としており、本方法は、
パレット符号化モードを含め、2つ以上の符号化モードの各々に対し、画素の現在のブロックの符号化を評価するステップ(またはテストするステップ、すなわちテストされた符号化モードのうちから最良のものを選択するため、符号化のコストを見積もるステップ)であって、該パレット符号化モードは、インデックスのブロック(ビットストリーム中に画素の現在のブロックを符号化するために使われる)を構成するために現在のパレットを用い、該現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該評価するステップと、
上記の評価に基づいて、画素の現在のブロックを符号化するため、2つ以上の符号化モードから1つの符号化モードを選択するステップと、
を含み、
パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップが、現在のブロックの画素を引き続き検討し、各検討された画素に対し、
パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付かった場合、エントリインデックスを用いて検討された画素を符号化するステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付からなかった場合、検討された画素をエスケープ符号化するステップであって、該エスケープ符号化は、検討された画素の値の明示的符号化を含む、該エスケープ符号化するステップと、
を含み、
エスケープ符号化された画素の数が画素の現在のブロックに対する所定の閾値を超えた場合、パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップは中止される。
上記に応じ、画像中の画素の現在のブロックを符号化するための符号化デバイスは、
パレット符号化モードを含め、2つ以上の符号化モードの各々に対し、画素の現在のブロックの符号化を評価するステップであって、該パレット符号化モードは、インデックスのブロックを構築するために現在のパレットを用い、該現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該評価するステップと、
上記の評価に基づいて、画素の現在のブロックを符号化するため、2つ以上の符号化モードから1つの符号化モードを選択するステップと、
を実行するよう構成された少なくとも1つのマイクロプロセッサを含み、
パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップが、現在のブロックの画素を引き続き検討し、各検討された画素に対し、
パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付かった場合、エントリインデックスを用いて検討された画素を符号化するステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付からなかった場合、検討された画素をエスケープ符号化するステップであって、該エスケープ符号化は、検討された画素の値の明示的符号化を含む、該エスケープ符号化するステップと、
を含み、
エスケープ符号化された画素の数が画素の現在のブロックに対する所定の閾値を超えた場合、パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップは中止される。
この設定のおかげで処理時間を節減することができる。というのは、多数にわたるエスケープ符号化画素は、他の符号化モードに比べて、パレット符号化モードの効率を非常に低くするからである。結果として、この数の多さが判明次第、現在の符号化ユニットの符号化のために無駄な演算を処理する浪費時間を省くことになる。
これらの実施形態の随意的特徴が従属請求項に定義されている。これらの特徴のいくつかは、本明細書で、方法を参照しながら以下に説明されており、それらは、本発明の実施形態によるデバイスに専用のシステム特徴に転用することが可能である。
諸実施形態において、所定の閾値は、例えば30%など、画素の現在のブロック中の画素の数によって決まる。
他の実施形態において、この処理は、画素がエスケープ符号化される都度カウンタをインクリメントするステップをさらに含み、パレット符号化モードを用いる、画素の現在のブロックの符号化の評価は、カウンタが所定の閾値に達し次第に中止される。処理時間を節減するためのこのアプローチは最適である。
さらに他の実施形態において、パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップは、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付からなかった場合、パレット中に、検討された画素を新規エントリとして加えるステップと、
画素のブロックの全ての画素が検討されたならば、パレットから少なくとも1つのパレットエントリを除去するステップと、
をさらに含む。
この設定は、現在の符号化ユニットの画素を反映しながらメモリ要件を満たすパレットの動的な構築を可能にする。
或る特定の実施形態において、パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップは、
パレットエントリを見付けた、または新規パレットエントリを加える際に、見付かったまたは新規のパレットエントリに関連付けられた発生カウンタをインクリメントするステップと、
評価を中止するかしないかを決めるために、除去パレットエントリの発生カウンタの合計を所定の閾値と比較するステップと、
をさらに含む。
本発明の他の発明的な(且つ独立的な)実施形態は、パレット符号化モードを用いて画像中の画素の現在のブロックを符号化する方法を対象としており、本方法は、
画素の現在のブロックと現在のパレットとからインデックスのブロックを構築するステップであって、現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該構築するステップと、
インデックスのブロックを符号化するステップと、
を含み、
画素の現在のブロックに対するインデックスのブロックを構築するステップは、画素の現在のブロックの各画素に対し、パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、見付かったパレットエントリのエントリインデックスをインデックスのブロックに加えるステップと、現在の画素および見付かったパレットエントリのエントリインデックスをメモリ中に格納するステップと、
現在の画素の値が、画素の現在のブロック中の先行の画素の値に等しい場合、メモリ中に格納されたその先行の画素に対するエントリインデックスを読み出すステップと、読み出されたインデックスを、現在の画素に対するエントリインデックスとしてインデックスの予測因子ブロックに加えるステップと、
を含む。
上記に応じ、画像中の画素の現在のブロックを符号化するための符号化デバイスは、
画素の現在のブロックおよび現在のパレットからインデックスのブロックを構築するステップであって、現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該構築するステップと、
インデックスのブロックを符号化するステップと、
を実行するよう構成された少なくとも1つのマイクロプロセッサを含み、
画素の現在のブロックに対するインデックスのブロックを構築するステップは、画素の現在のブロックの各画素に対し、パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、見付かったパレットエントリのエントリインデックスをインデックスのブロックに加えるステップと、現在の画素および見付かったパレットエントリのエントリインデックスをメモリに格納するステップと、
現在の画素の値が、画素の現在のブロック中の先行の画素の値に等しい場合、メモリ中に格納されたその先行の画素に対するエントリインデックスを読み出すステップと、読み出されたインデックスを、現在の画素に対するエントリインデックスとしてインデックスのブロックに加えるステップと、
を含む。
これらの発明的実施形態は、パレット中でインデックスに対する網羅的な探索遂行の回避を可能にする。画像(特に、スクリーンコンテンツ画像)は、多くの場合、高レベルの画素冗長度を有するので、画素間の相等性をテストするための追加処理コストは、平均的に、網羅的探索をしないことにより節減される処理コストより小さい。
「先行の画素」は符号化ユニット中のすでに処理された画素のいずれでもよいが、画素比較の量を制限し、先行の画素を保存するのに必要なメモリを制限するために、対象とする「先行の画素」の数を制限する価値はあり得る。好適な実施形態において、この先行の画素は、画素の現在のブロック中の、現在の画素の直前に先行する画素である。言い換えれば、パレット中にある最後のインデックスは、それが直前に処理されたものと同じであれば、次の画素に対して再使用するためにメモリ中に保持される。別形において、現在の画素の直ぐ前に先行する2つ以上の画素を検討することも可能である。
なお、望ましくは、何時においても、1つだけのエントリインデックスおよび1つだけの「先行」の画素がメモリ中に格納される。これはメモリの必要度を低減する。
現在の画素に直前に先行する画素の検討の別形において、先行の画素は、パレットエントリインデックスがインデックスのブロックに加えられた、画素の現在のブロックの直近の画素である。この設定は、パレットエントリを見付けることができず、したがってレベルのブロックにエントリインデックスが加えられなかった、エスケープ画素を考慮に入れることを可能にする
別の変形において、先行の画素は、画素の現在のブロックの中の現在の画素の上側に位置する画素である。
いくつかの実施形態において、本方法は、現在の画素の値が先行の画素の値と等しいかどうかを判定するため、現在の画素の値と、先行の画素に対してメモリ中に格納された値とを比較するステップをさらに含む。
なお、通常、現在の画素に対するインデックスのブロック中のインデックスとして対応するエントリインデックスを提供するために、(閾値を所与として)最も近いパレットエントリが選択される。
本発明の他の発明的な(且つ独立的な)実施形態は、パレット符号化モードを用いて画像中の画素の現在のブロックを符号化する方法を対象としており、該パレット符号化モードは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む現在のパレットを用い、本方法は、
現在のパレットを予測するための2つ以上のパレット予測モードを用い、画素の現在のブロックの符号化を評価するステップ(またはテストするステップ、すなわちテストされた符号化モードのうちから最良のものを選択するため、符号化コストを見積もるステップ)であって、第一パレット予測モードは、画素の現在のブロック符号化するため、現在のパレットよりはむしろ画像中の画素の先行ブロックの先行パレットを使用する、該評価するステップ、
を含み、
本方法は、
現在のパレット中で再使用される先行パレットのパレットエントリの量を判定するステップと、
再使用されるパレットエントリの量が所定の閾値より低いと判定された場合には、第一パレット予測モードを使う画素の現在のブロックの符号化の評価をスキップするステップと、
をさらに含む。
上記に応じ、画像中の画素の現在のブロックを符号化するための符号化デバイスは、パレット符号化モードを用い、該パレット符号化モードは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む現在のパレットを使用し、本デバイスは、
現在のパレットを予測するために2つ以上のパレット予測モードを用いて、画素の現在のブロックの符号化を評価するステップであって、第一パレット予測モードは、画素の現在のブロックを符号化するために、現在のパレットよりもむしろ画像中の画素の先行ブロックの先行パレットを使用する、該評価するステップと、
現在のパレット中で再使用される、先行パレットのパレットエントリの量を判定するステップと、
再使用されるパレットエントリの量が所定の閾値より低いと判定された場合には、第一パレット予測モードを使う画素の現在のブロックの符号化の評価をスキップするステップと、
を実行するよう構成された少なくとも1つのマイクロプロセッサを含む。
このアプローチは、パレット共用の評価に効果がない状況を早期に検出し、しかして該評価をできるだけ早くスキップすることを可能にする。
本発明の別の態様は、プログラムを格納した非一時的コンピュータ可読媒体に関し、該プログラムは、デバイス中のマイクロプロセッサまたはコンピュータシステムによって実行されると、そのデバイスに上記で定義されたいずれかの方法を遂行させる。
本非一時的コンピュータ可読媒体は、方法およびデバイスに関して上記で述べ下記で述べるものと、特にパレット符号化モードの符号化効率の向上の点で、類似の特徴および利点を有し得る。
本発明のさらに別の態様は、上記で定義されたいずれかの方法の各ステップを実行するようになされた手段を含むデバイスに関する。
本発明のさらなる他の態様は、実質的に本明細書で、添付図面の図17または18または19または20または21を参照して説明され、これらの図中に示されるような、画像中の画素の現在のブロックを符号化または復号する方法に関する。
本発明による方法の少なくとも部分は、コンピュータ実装が可能である。したがって、本発明は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書中で全て一般的に「回路」、「モジュール」、または「システム」と称する場合もある、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形を取ることができる。さらに、本発明は、媒体中に具現化されたコンピュータ可用プログラムコードを有する任意の有形の表現媒体中に具現化されたコンピュータプログラム製品の形を取ることも可能である。
本発明はソフトウェアとして実装可能なので、本発明は、任意の適した搬送媒体上に、プログラム可能装置に提供するためのコンピュータ可読コードとして具現化することが可能である。有形の搬送媒体は、フロッピディスク、CD−ROM、ハードディスクドライブ、磁気テープデバイス、または固体メモリデバイスなどのストレージ媒体を含み得る。一時的搬送媒体は、電気信号、電子信号、光信号、音響信号、磁気信号、もしくは、例えばマイクロ波などの電磁気信号、またはRF信号を含み得る。
本発明の諸実施形態を、単なる例示として、下記の図面を参照して以下に説明することとする。
HEVCエンコーダのアーキテクチャを示す。 HEVCデコーダのアーキテクチャを示す。 基因領域の概念を示す。 HEVCのレンジおよびスクリーンコンテンツ符号化拡張にサポートされた彩度フォーマットを示す。 符号化ツリーブロックの符号化ユニットへの分割、およびこれら符号化ユニットの復号スキャン順序を示す。 HEVCのスクリーンコンテンツ符号化拡張において調査中の、デコーダ側でのパレット符号化モードの原理を示す。 残差を含まない、デコーダ側でのパレット符号化モードの別形を示す。 符号化ユニットの例を、その対応するレベルのブロックおよび関連するパレットとともに示す。 レベルの同じブロック、およびレベルのこのブロックを符号化するのに使われたシンタクス要素のセットを示す。 パレットモードに関連するシンタクス要素の復号プロセスを示す。 復号側で、レベルのブロックを構築するための再構築プロセスを示す。 エンコーダでの、例示的なパレット判定のアルゴリズムを示す。 パレットモードに対する、エンコーダでのPred mode、Level、およびRunの選択のシンタクス要素、ならびにエスケープ符号化モードを示す。 本発明の1つ以上の実施形態の実装のためのコンピューティングデバイスの概略ブロック図を示す。 「Run」シンタクス要素を符号化するためのアルゴリズムを示す。 「Run」要素を符号化するための別のアルゴリズムを示す。 図15と比べて改良された、「Run」シンタクス要素を符号化するためのアルゴリズムを示す。 図16と比べて改良された、「Run」シンタクス要素を符号化するためのアルゴリズムを示す。 エスケープ符号化された画素のシグナリングを含め、パレット符号化モードを使って符号化ユニットをレベルのブロックに変換するための改良されたアルゴリズムを示す。 パレット符号化モードに対するパレットを構築するための改良されたアルゴリズムを示す。 パレット符号化モードを評価するための改良されたアルゴリズムを示す。
図1は、HEVCエンコーダのアーキテクチャを示す。このビデオエンコーダでは、当初のシーケンス101は、画素のブロック102に分割される。次いで各ブロックに符号化モードが反映される。HEVCで通常使用される符号化モードの2つのファミリがある。すなわち、空間的予測に基づくモード(INTRAモード)103、ならびに動き推定104および動き補償105に基づいた、時間的予測に基づくモード(INTER、両方向性、スキップモード)である。HEVCスクリーンコンテンツ符号化拡張として知られる、現在設計中のHEVCの拡張は、追加の符号化モード、すなわち、画素のブロックの符号化について、INTRAおよびINTER符号化モードに匹敵するパレット符号化モードを加える。このパレット符号化モードについては、以降で特に図6〜13、15、および16を参照してさらに詳しく説明する。
INTRA符号化ユニットは、INTRA予測と呼ばれるプロセスによって、その因果境界にある符号化済み画素から一般に予測される。
INTER符号化モードの時間的予測は、最初に、動き推定ステップ104において、符号化ユニットに最も近い参照領域中で参照フレーム116と呼ばれる以前のまたは今後のフレームを見出すことにある。この参照領域は予測因子ブロックを構成する。次に、この符号化ユニットが、動き補償ステップ105で残差を計算するため予測因子ブロックを用いて予測される。
空間的および時間的予測の双方の場合において、当初の予測因子ブロックから符号化ユニットを差し引くことによって、残差が計算される。
INTRA予測では、予測方向が符号化される。時間的予測では、少なくとも1つの動きベクトルが符号化される。但し、動きベクトル符号化に関するビットレートコストをさらに低減するために、動きベクトルは直接には符号化されない。実際は、動きが一様であると仮定すれば、動きベクトルを、その動きベクトルとその周囲の動きベクトルとの間の差として符号化するのがとりわけ有利である。例えば、H.264/AVC符号化規格では、動きベクトルは、現在のブロックの上側および左側に位置する3つのブロックの間で計算されたメディアンベクトルに対して符号化される。このメディアンベクトルと現在のブロックの動きベクトルとの間で計算される残差動きベクトルとも呼ばれる差異だけが、ビットストリーム中に符号化される。これは、モジュール「Mv予測および符号化」117において処理される。各符号化ベクトルの値は、動きベクトルフィールド118に格納される。予測に使われる隣接の動きベクトルは、動きベクトルフィールド118から抽出される。
次いで、モジュール106で、例えば、D+λ.Rなどのラムダベースの基準を用いて、レート歪みパフォーマンスが最適になるモードが選択される。前式のDは歪みであり、λはラムダまたはラグランジュ係数であり、Rはレートである)。冗長部をさらに低減するために、モジュール107で、一般にはDCTである変換が、残差ブロックに適用され、モジュール108でその係数に量子化が適用される。係数の量子化ブロックは、次いでモジュール109で、エントロピー符号化され、その結果がビットストリーム110に挿入される。
エンコーダは、次いでモジュール111〜116で、将来の動き推定のため、符号化されたフレームの復号を行う。これはエンコーダにおける復号ループである。これらのステップは、エンコーダとデコーダとが同じ参照フレームを有することを可能にする。符号化フレームを再構築するために、残差は、モジュール111で逆量子化され、画素ドメイン中に「再構築された」残差を供するために、モジュール112で逆変換される。符号化モード(INTERまたはINTRA)に従って、この残差はINTER予測因子114またはINTRA予測因子113に加えられる。
次いで、この最初の再構築が、モジュール115で、1つまたはいくつかの種類のポストフィルタリングによってフィルタされる。これらのポストフィルタは、この復号ループに組み込まれている。このことは、エンコーダとデコーダとで同じ参照フレームを用いるために、これらフィルタが、エンコーダとデコーダとで再構築フレームに適用される必要があることを意味する。このポストフィルタリングの目的は、圧縮のアーチファクトを除去することである。
例えば、H.264/AVCはデブロッキングフィルタを使用する。このフィルタは、残差のDCT量子化およびブロック動き補償に起因するブロッキングアーチファクトを除去することができる。現在のHEVC規格では、デブロッキングフィルタ、サンプル適応オフセット(SAO:sample adaptive offset)の2種類のループフィルタが使われている。
HEVCデコーダの原理が図2に表されている。最初にビデオストリーム201が、モジュール202でエントロピー復号される。次いで、残差データが、モジュール203で逆量子化され、残差を形成する画素値を得るためにモジュール204で逆変換される。また、モードデータもエントロピー復号され、そのモードの機能で、INTRA型の復号またはINTER型の復号が行われる。INTRAモードの場合、ビットストリームからINTRA予測方向が復号される。次いで、参照領域を探すためにその予測方向が使われる205。モードがINTERの場合、ビットストリームから動き情報が復号される202。該情報は、参照フレームのインデックスおよび動きベクトル残差で構成される。動きベクトルを得るために、動きベクトル予測因子が動きベクトル残差に加えられる210。次いで、参照フレーム中の参照領域が見付けるために動きベクトルが使われる206。復号フレームを再構築するために、その参照領域が残差に加えられる。なお、次の復号動きベクトルの予測に用いるために、復号動きベクトルを使って動きベクトルフィールドデータ211が更新される。復号フレームのこの最初の再構築は、次いで、エンコーダ側で使われたのと全く同じポストフィルタを使ってポストフィルタリングされる207。デコーダの出力は、圧縮解除されたビデオ209である。
図3は、HEVCにおけるように、ブロック毎の符号化からもたらされる因果原理を示す。
画像は、ハイレベルで符号化ユニットに分割され、ラスタスキャン順に符号化される。しかして、ブロック3.1を符号化するとき、領域3.3の全てのブロックは既に符号化されており、エンコーダにより利用可能であると見なすことができる。同様に、デコーダにおいてブロック3.1を復号するとき、領域3.3の全てのブロックが既に復号され、しかして再構築されており、デコーダにより利用可能であると見なすことができる。領域3.3は、符号化ユニット3.1の基因領域と呼ばれる。符号化ユニット3.1が符号化されたならば、該ユニットは、次の符号化ユニットに対する基因領域に属することになる。次の符号化ユニットならびに全ての次に来るユニットは、打点域で示された領域3.4に属し、現在の符号化ユニット3.1を符号化するために使用することはできない。基因領域が再構築されたブロックによって構成されていることに注目すべきである。所与の符号化ユニットを符号化するために使われる情報は、この情報が復号で利用できないという理由で、画像の当初のブロックではない。復号で利用可能な情報は、基因領域中の画素のブロックの再構築バージョン、すなわち、これらのブロックの復号バージョンだけである。この理由で、符号化において、基因領域の前に符号化されたブロックが、これらブロックのこの再構築済みバージョンを提供するために復号される。
ブロック3.1を符号化する際に、基因領域中のブロック3.2からの情報を用いることが可能である。HEVCスクリーンコンテンツ符号化のドラフトスペシフィケーションでは、変位ベクトル3.5によってこのブロック3.2を示すことが可能であり、該ベクトルはビットストリーム中で送信することができる。
図5は、符号化ツリーブロックの符号化ユニットへの分割、およびこれら符号化ユニットの逐次処理の例示的なスキャン順序を示す。HEVC規格では、ブロック構造体は、符号化ツリーブロック(CTB)に編成される。フレームは、いくつかのオーバーラップのない正方形の符号化ツリーブロックを包含する。符号化ツリーブロックのサイズは、64画素×64画素〜16×16に等しくすることができる。このサイズは、シーケンスのレベルで決定される。符号化効率の点から最も効率的なサイズは、最大の64×64である。なお、画像境界を除き、全ての符号化ツリーブロックは同じサイズであり、これは、これらブロックが列を成して配置されることを意味する。境界のCTBのサイズは、残りの画素の量に合わせて変えられる。
各符号化ツリーブロックは、1つ以上の正方形の符号化ユニット(CU)を包含する。符号化ツリーブロックは、四分ツリー構造に基づいていくつかの符号化ユニットに分割される。符号化ツリーブロック中の各符号化ユニットの処理(符号化または復号)の順序は、ラスタスキャン順序に基づき四分ツリー構造に従う。図5は、1つの符号化ツリーブロック中の符号化ユニットの処理順序の一例を示す。この図で、各符号化ユニット中の数字は、この符号化ツリーブロックの各対応符号化ユニットの処理順序を表す。
一般にHEVC RExtとも呼ばれるHEVCレンジ拡張は、拡張型ビデオフォーマットを取り扱うための新規ビデオ符号化規格HEVCの拡張版である。
この拡張の目的は、追加のカラーフォーマットおよびビット深度によって、およびできる限りロスなく、ビデオシーケンスを符号化するためのさらなるツールを提供することである。具体的には、この拡張版は、4:2:2カラーフォーマット、ならびに4:2:0ビデオフォーマットに加え4:4:4ビデオフォーマットをサポートするため設計されている(図4参照)。カラー画像は、一般に、3つのカラー成分R、G、およびBで構成される。これらの成分は、一般に相関付けられており、画像およびビデオ圧縮において、画像を処理する前にこれらカラー成分を相関解除するのが一般的である。カラー成分を相関解除する最も一般的なフォーマットは、YUVカラーフォーマットである。YUV信号は、通常、3つの入力R、G、およびBの入力フレームに線形変換を適用することによって、画像のRGB表現から生成される。Yは、通常輝度成分と呼ばれ、UおよびVは一般に彩度成分と呼ばれる。また、用語「YUV」の代わりに用語「YCbCr」も一般的に使われている。
3つのカラー成分に対し、相異なるサンプリング比率がよく使われる。サブサンプリングスキームは、一般に、三連比J:a:b(例えば、4:2:2)で表現され、これは、J画素の幅および2画素の高さの概念領域における輝度および彩度サンプルの数を表す。これらの部分は(それぞれの順に):
J:水平方向サンプリング基準(概念領域の幅)(通常4)、
a:J画素の第一行中の彩度サンプル(Cr、Cb)の数、
b:J画素の第二行中の(追加の)彩度サンプル(Cr、Cb)の数。
図4は、HEVC RExtにおける各種の検討対象の彩度フォーマットを示す。これらのフォーマットは、3つのカラー成分の相異なるピクチャサイズ、およびカラー成分の相異なる型の点で異なっている。
4:2:0YUV彩度フォーマットにおいて、Y成分領域が、W画素に等しい幅とH画素に等しい高さとを有する場合、UおよびV成分領域は、両方とも、W/2画素に等しい幅とH/2画素に等しい高さとを有する。
4:2:2YUV彩度フォーマットにおいて、Y成分領域が、W画素に等しい幅とH画素に等しい高さとを有する場合、UおよびV成分領域は、両方とも、W/2画素に等しい幅とH画素に等しい高さとを有する。
4:4:4YUVまたはRGB彩度フォーマットにおいて、3つのカラー成分に対する各領域は、同じ幅Wおよび高さHを有する。
ピクチャが白黒の場合、そのフォーマットは4:0:0に指定される。
画素の各カラー成分を符号化するために使われるビットの数であるビット深度に関し、現在のHEVC規格が、8および10ビットのビット深度を有する4:2:0のカラーフォーマット(すなわち、256〜1,024の可能なカラー)を取り扱うことが可能な場合、HEVC RExtは、8ビット〜16ビット範囲の拡張されたビット深度を備えた4:2:2および4:4:4ビデオフォーマット(すなわち、最大65,536の可能なカラー)を追加してサポートするように設計されることになっている。これは、カラー成分のより大きなダイナミックレンジを備えるために特に有用である。
また、HEVC RExtは、入力シーケンスのロスのない符号化を提供するようにも設計されており、これは入力101と正確に同一の復号出力209を有するためである。これを達成するために、従来型のHEVCのロスの多いコーデックに比べて、いくつかのツールが修正または追加された。ロスなしに動作するための例示的な修正または追加の非包括的なリストを以下に提示する:
− 量子化ステップ108(デコーダでは203)の除去、
− 通常の余弦/正弦変形107(デコーダでは204)はエラーを生じる可能性があるので、バイパス変換の強制起動、
− ポストフィルタリング115(デコーダでは207)など、量子化ノイズの補償に特別に設えられたツールの除去。
標準化が検討されている、HEVCのスクリーンコンテンツ符号化(SCC)と呼ばれる新規の拡張において、普通のシーケンスに加え、「スクリーンコンテンツ」ビデオシーケンスを効率的に符号化するための追加のツールが現在設計されている。この「スクリーンコンテンツ」ビデオシーケンスとは、例えば、テキスト、パワーポイントプレゼンテーション、グラフィカルユーザインタフェース、テーブル(例えば、スクリーンショット)などを包含するパーソナルコンピュータまたは任意の他のデバイスから取り込まれたビデオに対応する、非常に特定的なコンテンツを有する特有のビデオシーケンスを指す。一般に4:4:4フォーマット中のこれら特有のビデオシーケンスは、普通のビデオシーケンスに比べて、全く異なる統計データを有する。ビデオ符号化において、HEVCを含めて従来式のビデオ符号化ツールのパフォーマンスは、かかる「スクリーンコンテンツ」シーケンスを処理する際に、時として、きわめて不十分な結果を示す。
「スクリーンコンテンツ」ビデオシーケンスを処理するためHEVC SCCで現在検討されているツールは、イントラブロックコピーモードおよびパレットモードを含む。これらのモードのプロトタイプは、普通のビデオシーケンスを対象としている従来式の方法に比べて良好な符号化効率を示している。本文書では、このパレット符号化モードに焦点を当てる。
HEVC SCCのパレットモードの実装は予測に基づいている。これは、任意の他のロスのないまたはロスのある符号化方法に変わりなく適用が可能である。これは、動き予測(インターの場合)またはイントラ予測によって行われる予測と同様に、所与の符号化ユニットの符号化のための予測因子を構築するのに、パレット手法が使われることを意味する。予測因子の生成の後、残差符号化ユニットが、変換され、量子化され、符号化される。言い換えれば、図1および2を参照して前述したのと同じプロセスが適用される。
図7を参照して以下に説明する別の実装において、パレットモードを使って構築されたブロックは、いかなる残差も包含することなくビットストリーム中に直接に符号化される。
パレットは、一般に、カラーのNタプルの有限セットを包含するテーブルによって表され、各カラーは、所与のカラー空間中のその成分によって定義される(例えば、YUVカラー空間に基づく、図8中の803を参照のこと)。例えば、典型的な4:4:4RGBフォーマットにおいて、パレットはNタプルのP要素のリストから成る(RGBに対してN=3)。さらに正確には、各要素は、RGBフォーマットでのカラー成分の或る一定のトリプレットに対応する。当然ながら、これはRGBまたはYUVカラーフォーマットに限定はされない。任意の他のカラーフォーマットがパレットによって表現でき、より少ないまたはより大きな数のカラー成分を用いることが可能、すなわちNは3以外とすることができる。
エンコーダ側で、SCCにおいて検討中のパレットモードは、所与の入力符号化ユニットの画素値を、関連するパレット中のエントリを識別する、レベルと呼ばれるインデックスに変換することにある。変換の後、得られた符号化ユニットまたはインデックスのブロックは、レベルから成り、次いで関連するパレットとともにデコーダに送信され、パレットは一般に、符号化ユニットを表すため使われる、有限数のカラートリプレットを有するテーブルである。パレットは有限数のカラーを定義しているので、インデックスブロックへの変換は、通常、当初の入力符号化ユニットへの近似化である。
エンコーダ側でパレットモードを適用するために、画素の符号化ユニットを変換するための典型的仕方は、次のように行われる。
− 例えば全体的歪み最小化して符号化するために、画素の符号化ユニットを最良に表すP個のトリプレットを見出す;
− 次いで、符号化ユニットの各画素を、Pのトリプレット中で最も近いカラーに関連付ける:このとき、符号化する値(またはレベル)は、関連付けられた最も近いカラーのエントリに対応するインデックスである。
− さらに、現在処理されている画素値がパレットのどのエントリからも離れている場合は、パレットを使わない方がよいことがある。かかる状況で、SCCはその画素のエスケープ符号化を用意しており、これは、量子化ステップを適用した後での、ビットストリーム中の画素値の明示的符号化(エスケープ符号化画素)を意味する。
各符号化ユニットに対し、パレット(すなわち、見出されたPのトリプレット)、インデックスまたはレベルのブロック、エスケープ符号化画素(「エスケープ画素」のブロックに格納されている)、および、随意的に、当初の符号化ユニットとカラー空間中のインデックスのブロック(これはブロック予測因子である)との間の差を表す残差がビットストリーム110中に符号化され、デコーダに送信される。
デコーダでは、パレットモードは逆方向に変換を演算することにある。これは、符号化ユニットの各画素に対する対応カラーを生成するために、符号化ユニットの各画素に関連付けられた各復号インデックスが、ビットストリームから復号されたパレットの対応カラーによって、または(エスケープ符号化が適用されたかどうかにより)エスケープ画素値によって置き換えられることを意味する。これは、デコーダでのカラー空間におけるインデックスのブロックの構築である。
図6は、デコーダでのパレット符号化モードの第一実装の原理をさらに示す。ステップ602で、現在の符号化ユニットに対する符号化モードがビットストリーム601から抽出される。現在のところ、パレットモードは、ビットストリーム中のスキップフラグの前に配置されたフラグによって識別されている(他の符号化モードについては、図1および2を参照して上記で説明した)。このフラグは、単一コンテキストを使って符号化されたCABACである。このモードがパレットモードの場合603、パレットモードの関連シンタクス605、すなわちパレット上の情報、レベルのブロック、エスケープ画素のブロック、および随意的に残差、がビットストリーム601から抽出され復号される604。
次いで、ステップ606の過程で、2つの要素、すなわちパレット607およびレベルのブロック608が、復号されたデータから構築される。レベルのこのブロックおよび関連付けられたパレットから、画素ドメイン中の符号化ユニット予測因子610が構築される609。これは、レベルのブロックの各レベルに対し、カラー(RGBまたはYUV)が各画素に関連付けられることを意味する。
次いで、符号化ユニットの残差がビットストリーム601から復号される611。パレットモードの現在の実装では、パレットモードに関連付けられた残差は、一般的HEVCインター残差符号化方法を使って、すなわちゴロム符号化を使って符号化される。符号化ユニットの残差612を得るために、従来式の逆量子化および逆変換が行われる。再構築された符号化ユニット614を形成するために、ブロック予測因子610が、この符号化ユニットの残差612に加えられる613。
図6のパレットモード予測のHEVC SCCの別形を、図7を参照して以下に説明する。図7の701〜708は、601〜608とほとんど同様である。
この別形では、本質的に残差および予測はない。すなわち、パレットによって適正に表現可能な画素だけが、パレットモードの対応エントリを用いて符号化される。
この特定のコンテキストにおいて、パレットによって適正に表現できない画素は、パレットのカラーエントリを参照せず別途に符号化される。パレットのエントリを使う代わりに、量子化された画素値が明示的に送信される。かかる画素は、前述したように、「エスケープ値」または「エスケープ符号化画素」として知られる。このエスケープモードは、非常に稀な画素をシグナリングするためにいずれかのパレットエントリを用いしかしてパレットエントリを浪費(パレットのサイズには限度があり得る)することなく、取り扱う効率的な方法を提供する。
画素がエスケープ値として符号化される場合、デコーダが、符号化ユニットのどの画素がエスケープ符号化され、同じ符号化ユニットのどの画素がパレットエントリを使って符号化されているのかを識別できるように、後記で説明するようにエスケープフラグが所定の値に設定される。
これらの画素のシグナリングの一例は、「Pred mode」要素の前に「エスケープ」フラグを加え、或る画素がパレット符号化されているか(パレットエントリからのレベルを使って符号化されているか)あるいはエスケープ符号化(したがって明示的画素値を使って符号化)されているかを示すことである。「エスケープ」フラグの後には明示的画素値が続く(この画素に対しては、「Pred mode」、「Level」および「Run」要素は設けられない)。
或る別形において、どの画素が「エスケープ符号化」画素であるかをシグナリングするために、「エスケープ」情報として、インデックスのブロック中で(「エスケープ符号化」画素に専用の)特定のレベル値を使うことも可能である。
いずれかの実施形態において、明示的画素値は、可変長符号化を使ってまたは使わないで、予測的に(例えば、隣接の画素値との差として)符号化する、またはしないことができ、エントロピー符号化に対する可能な結果(コンテキスト、およびビット数など)を使い、量子化するまたはしないことができる。
図6と比べて、いくつかのステップが修正されている。
残差が符号化されないためシンタクスが僅かに変更されるので、ステップ704は、605と比べて異なる特定のシンタクス705を抽出する。これは、図7のパレットモードでは、パレットエントリによって適正に表現されている場合、パレットモードだけを用いて画素値が符号化されることによる。それ以外の場合、すなわち、(例えば、画素値がパレットエントリによって適正に表現できないため、またはパレットがその最大サイズに達してしまい新規の値を加えることができないため)パレットモードを用いて画素値を符号化できない場合、その画素値はエスケープ値として符号化される。
ステップ706で、図6中のステップ606と同様に、復号データから3つの要素、すなわち、パレット707、レベルのブロック708、およびエスケープ画素値のブロックが構築される。これら全てのデータに基づいて、デコーダは、具体的には非エスケープ画素に対してはパレットを使って符号化ユニットの画素値を再生成し、符号化された明示的画素値からエスケープ画素値を復号することによって、現在の符号化ユニット714を生成すること709が可能である。
図8は、エンコーダでのパレットモードの原理を示す。現在の符号化ユニット801は、3つのカラー値(Y、U、V)または(R、G、B)の代わりに、各画素に対するレベルを包含する、同じサイズのブロック802に変換される。このレベルのブロックに関連付けられたパレット803が、符号化ユニットの全体的歪みの最小化に基づいて構築され、各エントリに、対応する画素カラー値を有するエントリインデックスまたはレベルを関連付ける。なお、白黒アプリケーションに対しては、画素値は1つだけの成分を包含すればよい。
図6および7に関連して述べたように、各符号化ユニットに対し、パレット(および、図6だけについて残差)が符号化され、ビットストリーム中に挿入される。同様に、レベルのブロックまたはインデックスのブロックも符号化されてビットストリーム中に挿入され、この符号化の一例を、図9を参照しながら以下に説明する。この例では、レベルのブロックはラスタスキャン順に処理される。
レベルのブロック91は、802を参照して図8中で示されたものと全く同じである。テーブル92および93は、レベルのブロック91を符号化するために使われる連続のシンタクス要素を表す。テーブル93は、テーブル92の続きとして読み取るものとする。本テーブル中のこれらのシンタクス要素は、ブロック91中の太線によって囲まれたレベルのグループの符号化に対応する。
このレベルのブロックは、ラスタスキャン順に、連続する画素のグループ毎に符号化される。各グループは、予測方向(すなわち、グループのインデックスを再構築するために使われる予測または再構築モード)を表す第一シンタクス要素、画素または画素群の値すなわちレベルを示す随意的な第二シンタクス要素、繰り返しを示す第三シンタクス要素を用いて符号化される。この繰り返しは、グループ中の画素の数に対応する。
これら2つのテーブルは、パレットモードに関連付けられた現在のシンタクスを表す。これらのシンタクス要素は、ビットストリーム中で、レベルのブロック91に関連付けられた符号化情報に相当する。これらのテーブルにおいて、3つの主要シンタクス要素が、パレットモードの演算を完全に表すために用いられ、レベルのブロック91のレベルを連続して検討する際に、以下のように用いられる。
「Pred mode」と呼ばれる第一シンタクス要素は、2つの符号化モードを区別することを可能にする。「0」に等しい「Pred mode」フラグに対応する第一モードでは、現在の画素に対し新規のレベルが使われる。このレベルは、ビットストリーム中で、このフラグの直後にシグナリングされる。「1」に等しい「Pred mode」フラグに対応する第二モードでは、「上側コピー」モードが使われる。さらに具体的には、このことは、現在の画素のレベルが、同じ位置から開始してラスタスキャン順に、直ぐ上の行に位置する画素レベルに対応することを意味する。「1」に等しい「Pred mode」フラグの場合、レベルの値は、レベルのブロック91中の真上の画素のレベルの値を参照することによって判明しているので、フラグの直後にレベルをシグナリングする必要はない。
「Level」と呼ばれる第二シンタクス要素は、「Pred mode」の第一モードにおいてだけ、現在の画素に対するパレットのレベル値を示す。
「Run」と呼ばれる第三シンタクス要素は、「Pred mode」の両方のモードにおいて繰り返し値を符号化するために使われる。レベルのブロック91が、最上部左コーナーから底部右コーナーまで、行毎に左から右へ、最上部から底部へスキャンされると見なせば、Runシンタクス要素は、同じ符号化を有する、ブロック91中の連続する画素の数、すなわち、現在のシンタクス要素が適用されるインデックスのグループ中のインデックスの数を示す。
この「Run」シンタクス要素は、「pred mode」フラグの如何によって異なる意味を有する。Pred modeが0の場合、「Run」要素は、同じレベル値を有するブロックの連続する画素の数である。例えば、Run=8の場合、これは、現在の「Level」が現在の画素と後続の8つの画素に適用され、ラスタスキャン順に9つの同一の連続するサンプルに対応することを意味する。
Pred modeが1の場合、「Run」要素は、ブロック91中の上側の画素のレベル値に一致するレベル値を有する、ブロックの連続する画素の数であり、この場合「上側コピー」モードが適用される。例えば、Run=31の場合、これは、現在の画素のレベルおよび後続の31の画素が上側の行の画素からコピーされ、該コピーが合計32の画素に対応することを意味する。
テーブル92および93に関して、これらは、パレットモードを用いてブロック91を符号化するための8つのステップを表している。各ステップは、「Pred mode」フラグの符号化で開始され、「Pred mode」フラグが「0」に等しい場合、その後に「Level」シンタクス要素が続き、または「Pred mode」フラグが「1」に等しい場合、その後に「Run」シンタクス要素が続く。「Level」シンタクス要素の後には常に「Run」シンタクス要素が続く。
現在のブロックに対し復号される符号化モードがパレットモードの場合、デコーダは、最初に、このブロックに関するシンタクスを復号し、その後符号化ユニットに対する再構築プロセスを適用する。
図10は、パレットモードに関するシンタクス要素の復号プロセス(上記のステップ605〜606または705〜706)を示す。最初に、ビットストリーム1001からパレットのサイズが抽出され、復号される1002。ステップ1002で復号されたこのサイズの値に1を加えることによって、パレットの正確なサイズ(Palette_size)が得られる。実際は、このサイズは、値0が最小のビット数(1ビット)を有する単進コードを使って符号化され、パレットのサイズが0に等しくなることはあり得ず、0の場合は、ブロック予測因子を構築するために画素値を使うことはできない。
次いで、パレット値の復号に対応する処理が始まる。ステップ1004で、パレットのインデックスに対応する変数iが0に等しく設定され、次にステップ1005で、iがパレットサイズ(Palette_size)に等しいかどうかをチェックするためのテストが行われる。等しくない場合は、ビットストリーム1001から1つのパレット要素が抽出されて復号され1006、次いで、iに相応する関連レベル/インデックスとともにパレットに加えられる。その後、変数iはステップ1007でインクリメントされる。iがパレットサイズに等しい場合1005、パレットの復号が完了したことになる。
次に、レベルのブロック91の復号に対応する処理が行われる。最初に、画素カウンタに対応する変数j、および変数シンタクスiが0に設定される1008。次いで、画素カウンタが、ブロック中に包含される画素の数(デコーダは、符号化ツリーブロックの符号化ブロックへの分割を知っているのでこれは既知である−図5参照)に一致するかどうかを知るためにチェックが行われる。ステップ1009で回答が然りであれば、本処理はステップ1017で終了し、そうでない場合は、1つの予測モードに対応するフラグ「Pred mode」の値がビットストリーム1001から抽出され復号される1010。
「Pred mode」の値が、復号済みの全ての「Pred mode」値を包含するテーブルのインデックスシンタクスiのところに加えられる。この「Pred mode」の値が0に等しい場合、ステップ1011で、ビットストリーム1001から「Level」に対応するシンタクス要素が抽出されて復号される1012。この変数「Level」が、復号済みの全てのレベルを包含するテーブルのインデックスシンタクスiのところに加えられる。画素カウンタに対応する変数jが1つインクリメントされる1013。
次に、ステップ1014で「Run」シンタクス要素が復号される。ステップ1011で、シンタクス要素「Pred mode」が1に等しい場合は、「Run」値もステップ1014で復号される。このシンタクス要素「Run」が、復号済みの全てのランを包含するテーブルのインデックスシンタクスiのところに加えられる。
次にステップ1015で、値jが、ステップ1014で復号されたRunの値の分だけインクリメントされる。変数シンタクスiが、シンタクス要素の次のセットを検討するため、1つインクリメントされる。カウンタjがブロック中の画素の数に等しい(すなわち、現在の符号化ユニットに対するシンタクス要素の最後のセットが処理済みである)場合、レベルのブロック91を構築するためのシンタクスは終了されている1017。パレットに関するこの処理終了点で、デコーダは、パレット、ならびに、この符号化ユニットのパレットモードに関連する全ての「Pred mode」、「Level」、および「Run」シンタクス要素を包含するテーブルを知る。この後、デコーダは、図6または図7を通して説明したように、符号化ユニットの再構築プロセスに進むことができる。
ここで、インデックスのブロック中の(インデックスが関連付けられた画素値を持たないパレットエントリに対応する)特定のインデックス値が、エスケープ符号化画素をフラグするのに使用でき、明示的エスケープ符号化値がビットストリームから抽出されることを想起する。
単なる例示として、各シンタクス要素に関連付けることの可能な符号語を以下に示す。当然のことながら、より良好な符号化効率を得るために、他の符号語を使用することも可能である。
前述の例における3つの値(YUVまたはRGB)で構成される各パレット要素は、一般に、(ステップ1016で復号された)3つのバイナリコードを使って符号化される。このバイナリコードの長さは、各カラー成分のビット深度に相当する(256の値を表現するためには8ビット)。
ステップ1002で復号されるパレットサイズは、通常、単進コードを使って符号化される。
「Pred mode」要素は1ビットを使って符号化される。
「Level」要素はバイナリコードまたは切削型バイナリコードを使って符号化される。
本発明の諸実施形態において、「Run」要素は可変長コードを使って符号化される。例えば、Run要素に対する一部の値は、短縮符号語を使って符号化され、他の値は、共通の符号語接頭辞と、互いに異なる符号語接尾辞とから成る他の符号語を使って符号化される。
下記のテーブルは、Run要素に対する符号語の例を示す。
Figure 2017536724
図15は、上記テーブルによって「Run」要素を符号化するためのアルゴリズムを示し、「Run」値を符号化するため使われる符号語は前記値により決まる。
この例において、Run要素に対する最初の3つの可能値、すなわち、0、1、および2は、短縮符号語を用いて符号化され(当然ながら、程度の差はあれ第一の可能値には短縮符号化値が関わり得る)、Run要素に対する他の(後続する)可能値は、共通の符号語接頭辞と、相互の符号語の間で異なる符号語接尾辞とで構成された他の符号語を用いて符号化される。
符号語のこの設計は、Run要素に対する最初の3つの値(0、1、および2)に優先度を与え、これらは、通常、パレットモードでは非常に頻度が高い。結果として、Run要素に対する他の高い値は、相当に長い符号語を用いる。
この図に示されるように、ステップ1501で最初のチェックが行われ、当該値が0と対比される。この値が0に等しい場合、ステップ1502で、符号語「0」が生成され、現在のRun要素の符号化はステップ1509で終了する。
ステップ1501での回答が否定の場合、Run値が1に等しいかどうかを知るために、ステップ1503で第二のテストが行われる。応答が肯定の場合、ステップ1504で符号語「10」が生成され、次のステップは1509である。
Run値が1に等しくない場合、ステップ1505でさらなるテストが行われ、Run値が2と対比される。Run値が2に等しい場合、ステップ1506で符号語「110」が生成され、次のステップは1509である。
ステップ1505での応答が否定の場合、接頭辞コード「111」が生成され、ステップ1508で、Run値の値が次数3の切削型ライスコードを用いて符号化される(ここでは、符号化のための記号はRun要素マイナス3の値である)。次いで、ステップ1508の後にステップ1509が続き、ここでRun値の符号化が完了する。
符号語(短縮符号語「0」、「10」、「110」、および接頭辞+接尾辞型符号語「111x…x」双方とも)は、ビットストリームに直接挿入することができ、あるいは、Run値の符号化に関する情報の最終的サイズを低減するために、CABACのような算術エントロピーコーダを用いて符号化することも可能である。
図16は、Run値「0」に対してだけ短縮符号語を提供する、「Run」要素を符号化するための別のアルゴリズムであり、しかして図15よりも少ないステップを含む。
このプロセスは、ステップ1601で開始され、この過程でRun値が0と対比される。回答が肯定の場合、ステップ1602で符号語「0」が生成され、現在のRun要素の符号化はステップ1605で終了する。
ステップ1601での回答が否定の(Run値が0と異なる)場合、「0」と異なる全てのRun値に共通の接頭辞コード「1」を形成するため、ステップ1603で「1」の符号語が生成される。次に、ステップ1604で、k次数の切削型Exp−Golombコードを用いてRun値が符号化され、コードのための記号はRun要素マイナス1の値であり、次数kは、符号化ユニットのサイズおよび現在のRun要素の現在のスキャン位置を考慮に入れて計算される。次いでステップ1605で、現在のRun要素の符号化が終了する。
図11は、レベルのブロック91および次いでカラー空間中の対応ブロック(これは、パレットモードの最初の実装のための予測因子として使われることになるか、またはこれは、パレットモードの他の実装のための復号済み現在の符号化ユニットである)を構築するための再構築プロセスを示す。このプロセスの入力データは、前述の図10の処理で得られたテーブルであり、「Pred mode」、「Level」、および「Run」のリストを包含している。さらなる入力データは、ビットストリーム中でシグナリングされた四分ツリー(図5)から分かった、符号化ユニット801のサイズである(これはレベルのブロック802/91と同じサイズである)。
最初のステップ1101で、画素カウンタを表す変数iが0に等しく設定され、シンタクス要素の各セットを連続して検討するために、変数jも同様に0に等しく設定される。ステップ1104で、インデックスjの「Pred mode」のテーブルから抽出された要素Pred_mode[j]が0に対してチェックされる。
これが0に等しい場合、現在の画素iに対して新規のレベルが符号化される。結果として、位置iの画素の値が、レベルのテーブルからのインデックスjのレベルに等しい値に設定される;Block[i]=Level[j]。これがステップ1105である。次の画素を検討するため、ステップ1106で変数iが1つインクリメントされ、ステップ1107で、現在のRun中の既に処理された画素のカウント専用の変数kが0に等しく設定される。
ステップ1108で、kが、ランのテーブルのインデックスjの「Run」要素に等しいかどうかを判定するためのチェックが行われる:k=Run[j]?。等しくない場合、位置iの画素のレベルが、位置i−1の画素のレベル値に等しく設定される:Block[i]=Block[i−1]。これがステップ1109である。次いで、変数iおよび変数kが、それぞれステップ1110および1111で1つインクリメントされる。ステップ1108でk=Run[j]であれば、左側レベル値の伝搬は完了し、ステップ1120が実施される(以下で説明)。
ステップ1104で、Pred_mode[j]が0と異なる場合、ステップ1112で変数kが0に設定されて「上側コピー」モードが開始される。次に、ステップ1113は、(k−1)がランのテーブルのインデックスjの「Run」要素に等しいかどうかをチェックする:k=Run[j]+1?。等しくない場合、位置iの画素のレベル値が、上側行の位置iの画素のレベル値に等しく設定され:Block[i]=Block[i−width]、この「width」は、符号化ユニットの入力サイズから推定されたレベルのブロック(符号化ユニットと同じ)の幅である。これがステップ1114である。次に、変数iおよび変数kが、それぞれステップ1115および1116で各々1つインクリメントされる。ステップ1113で、k=Run[j]+1の場合、予測モード「上側コピー」は完了し、プロセスはステップ1120に進む。
ステップ1120で、変数iがブロック91/CU801中の画素の量に等しいかどうかを判定するためのチェックが行われる。等しくない場合、シンタクス要素の次のセットを検討するために、ステップ1121で、変数jが1つインクリメントとされ、プロセスは、前述したステップ1104にループバックする。
ステップ1120で、全ての画素が処理済みとなったならば、ステップ1122で最終のレベルのブロック91が得られている:これはテーブルBlock[]に対応する。次いで最終ステップ1123(例えば、ステップ709に該当する)は、図10のプロセスを用いて復号されたパレット803を使って、各レベルをカラー値に変換することにある。この最終ステップは、ブロック中のこの位置のレベルおよびパレット中の対応エントリに従い、各ブロック位置の画素値(Y、U、V)または(R、G、B)に対して行われる
なお、エスケープ画素がそれらの正確な画素値に変換されるのは、このステップ1123の過程である。エスケープモードは、レベルテーブルの特定の値を用いてシグナリングすることができる。例えば、パレットが32の要素を包含する場合、最後の値(31)を使ってエスケープモードをシグナリングすることが可能で、この特定の値には、パレットエントリは関連付けされず、これは、エスケープ画素が、パレット中の画素値に関連付けられていない値(最後尾の値)を使って、レベルのブロック中に定義されることを意味する。
しかして、エスケープ画素を識別するために、ステップ1123は、Block[j]を、エスケープ画素をシグナリングするために割り当てられた特定の値と対比する。ステップ1123は、これらエスケープ画素の各々に対し、エスケープ画素の符号化ユニット710から対応する正確な画素値を読み出す。
諸実施形態において、特定のレベル値を用いてエスケープモードをシグナリングすることが可能で、この値には、当該画素の正確な値を定義している3つのカラー成分の値が後続する。
さらに、エスケープ画素がエンコーダで量子化されている場合は、ステップ1123で量子化解除ステップが実施される。
HEVC SCCに導入されたパレットモードの他の態様は、エンコーダによる、現在の符号化ユニットを符号化するために使われるパレットの決定(下記の図12を参照)ならびにエンコーダでのPred mode、Level、およびRunシンタクス要素の選択(下記の図13を参照)に関する。
図12は、エンコーダでの例示的なパレット決定アルゴリズムを示す。このプロセスの入力データは、画素の当初の符号化ユニットおよびその符号化ユニットサイズである。この例ではYUVパレットが構築されているが、他の実装では、同様な仕方で構築されたRGBパレットを得ることも可能である。
ステップ1201で、画素カウンタを表す変数jが0に設定され、パレットが構築される際にその発達度を追跡するための変数「Palletteサイズ」も同様に0に設定され、例えば、ロスの多い符号化に対しては9またはロスのない符号化の場合は0に設定される、閾値を表す「TH」が定義される。実際は、ロスのない符号化では、量子化は完全にスキップされ、QPは、人為的に例えば0に設定される。ロスのない特性は、CUレベルで定義することができる(ピクチャパラメータセットレベル(PPS−level:Picture Parameter Set−level)のシンタクス要素transquant_bypass_enabled_flagが1に設定されている場合、シンタクス要素cu_transquant_bypass_flagが存在し、1に設定される。)
いずれの場合も、符号化ユニットCUがロスなしに符号化されると、ここでの目標は、レベルがいかなるミスマッチもなく画素を表現するのを保証することなのでエラーの限度が0に設定される。次いでステップ1203で、画素p、すなわちスキャン順に従ったインデックスiを有する画素が当初の符号化ユニット1204から読み取られる。次いで、変数jが1205で0に等しく設定され、ステップ1206で、パレットサイズが変数「j」に等しいかどうか(すなわち、構築中のパレットの全てのパレット要素の検討が済んだかどうか)を判定するためのチェックが行われる。
パレットサイズがjに等しい場合、ステップ1209で、インデックス「j」のパレットが画素値pに等しく設定される。このことは、現在の画素pが、それに関連付けられたインデックスjとともに、パレット中の新規要素になることを意味する。さらに正確には、次の割り当てが行われる:
PAL[j]=(Yi)
PAL[j]=(Ui)
PAL[j]=(Vi)
前式のPALY,U,Vはカラー値を格納するための3つのテーブルである。
ステップ1210でパレットサイズ(Palette_size)が1つインクリメントされ、ステップ1211で、発生テーブルカウンタが、該インデックス「Paletteサイズ」に対して1に等しく設定される。次いで、ステップ1213で、現在の符号化ユニットの次の画素「i」を検討するために、変数iが1つインクリメントされる。その後ステップ1214で、現在の符号化ユニットの全ての画素が処理済みかどうかを判定するためのチェックが行われる。それらが全て処理済みの場合、このプロセスは、後記で説明する順序付けステップ1215で完了し、それ以外の場合は、前述したステップ1203で次の画素が検討される。
ステップ1203〜1206、および1209〜1211で構成されるプロセス分岐は、ブロックの各画素を反復的に検討し、検討されている画素が、構築中のパレットに既存の全ての要素または要素群からあまりに遠く隔たっている都度、検討された画素の値を有する新規の要素をパレットに加える(テスト1207)。
ステップ1206に戻って、jがpalette_sizeと異なる場合、ステップ1207が実施され、各カラー成分に対し、pとインデックスjのパレット要素との間の差の絶対値が計算される。この算式が本図に示されている。全ての絶対差が、所定の閾値THより真に小さければ、ステップ1212で、パレット中の要素「j」に関する発生カウンタが1つインクリメントされる。ステップ1207は、構築中のパレットの各要素に対するクラスを生成し、かかるクラスは、TH限度を前提として、要素のカラーに隣接するカラー群を網羅する。しかして、ステップ1212は各々のクラスの発生をカウントする。ステップ1212の後には、既に説明したステップ1213が続く。
ステップ1203〜1207、および1212で構成されるプロセス分岐は、ブロックの各画素を反復的に検討し、検討された画素に十分近いパレット要素に関連付けられたカウンタをインクリメントする。
ステップ1207の条件に合致しない場合、構築中のパレット中の次のパレット要素を検討するために、ステップ1208で変数jが1つインクリメントされる。これは、ステップ1207の新規発生を通して、他のパレットカラー要素と現在の画素とを比較するためである。パレット中のどの要素もステップ1207の基準を満たさない場合、前述のように、ステップ1209、1210、および1211を参照して新規要素がパレットに加えられる。
なお、判定モジュール1207は、4:4:4(YUVまたはRGB)シーケンスに対する各カラー成分を対比することができ、4:2:0シーケンスに対しては、輝度カラー成分もしくは彩度カラー成分のどちらかだけを対比することが可能である。
図12のプロセスの終端において、テーブル「Counter」は、それぞれのパレット要素によって定義されるクラスの発生の数を包含する。次いでステップ1215で、パレット要素は、最も頻度の高い要素がパレット中の最初の位置(最も低いインデックスまたは「レベル」を有するエントリ)になるように、それらの発生に従って順序付けされる。
また、パレットのサイズは、例えば24エントリなど、最大サイズに制限することができることに留意する。かかる状況において、ステップ1215から得られるパレットのサイズが24を超える場合、そのパレットは、順序付けされたパレット中の25番目位置からの要素(エントリ)を除去することによって低減される。これにより構築されたパレットがもたらされる。
ここで、エンコーダでのPred mode、Level、およびRunシンタクス要素の選択を見ると、図13のプロセスの入力データは、画素の当初の符号化ユニット、図12のプロセスを通して構築されたパレット、および符号化ユニットのサイズである。具体的には、INTRA符号化、INTER符号化、およびパレット符号化の間でどの符号化モードを使うべきかを決める際に、この選択評価が行われる。
最初のステップ1301で、画素カウンタを表す変数「i」が0に設定される。以下に説明するプロセスは、iから始まる画素に対するシンタクス要素を決めるためのものである。予測の2つのモードが、別々に評価される:本図の右側部分では「Pred mode」=0であり、本図の左側部分では「Pred mode」=1である。
また一方、これらの予測モードが不成功の場合、1つまたは複数の画素値を明示的に符号化するために、前述で紹介したエスケープモードが用いられる。
「上側コピー」予測(「Pred mode」=1に対応する)に対し、現在のRun中のレベルの数をカウントするのに使われる変数「icopy」が、ステップ1303で0に等しく設定される。次いでステップ1304で、画素位置i+icopy:Block[i+icopy]の現在のレベルが、上側行中の真上:Block[i+icopy−width]に位置する画素のレベルと対比される。この「width」は現在の符号化ユニットの幅に相当する。
なお、符号化ユニットの各画素のレベルのBlock[i+icopy]は、ステップ1308で並行して判定される。このステップは、上記で既に説明したように、位置i+icopyの画素に、最も近いパレット要素(実際上はそのインデックスまたはレベルの)を関連付けることにある。或る別形では、このステップは、位置iの画素との距離が所定の閾値より小さな最初のパレット要素を選択することにある。このステップは、位置i、パレット1306、および当初の符号化ユニット1307を使用する。
また一方、現在の画素値がパレットのどのエントリからも「遠い」場合、この画素に対しエスケープモードを起動することをシグナリングするため、ステップ1350が実施される。エスケープモードは、例えば、或る画素のカラー成分値とパレット中の最も近いエントリとの間の差が所与の閾値を超える場合に用いられる。ステップ1350の次に、ステップ1319にループする前に、ステップ1351で画素カウンタiが1つインクリメントされる。
僅かな変形において、上記で定義された特定のレベル値をエスケープ画素に割り当てるステップ1350は、ステップ1308の内部にありステップ1351は削除される。このアプローチは、エスケープ画素をシグナリングするのに使われる特定の値の発生を効率的に符号化しながら、「上側コピー」および「左側値」予測モードを用いることを可能にする。
ステップ1304で、Block[i+icopy]=Block[i+icopy−width]であれば、画素のブロックの次の画素値を検討するため、且つ位置i+icopyの現在の画素レベルを現在の「上側コピー」Runに含めることが可能であることを示すために、変数「icopy」が1つインクリメントされる。ステップ1304で、Block[i+icopy]がBlock[i+icopy−width]と異なる場合、すなわち、「上側コピー」Runの現在の評価が終了した場合は、変数「icopy」が判定モジュール1314に送られる。プロセスのこの段階において、変数「icopy」は、真上の行からコピーされた値の数に相当する。
左側値予測(「Pred mode」=0に対応する)に対し、Run値(ileft)を判算定するループは、並行してまたは逐次に処理される。最初に、現在の画素のインデックスiを格納するのに使われる変数「iStart」が「i」に設定され、また、インデックス「i」に続く画素のレベルを連続して検討するために使われる変数「j」も「i」に等しく設定され、且つ構築中の現在のRunをカウントするのに使われる「ileft」は0に等しく設定される。これがステップ1309である。次に、ステップ1310は、j!=0、且つ「Pred_mode[j−1]」=0、且つBlock[j]=Block[j−1]であるかどうかを判定することにある。Pred_mode[]は、予測モード(「上側コピー」予測および左側値予測それぞれに対し1または0)を格納するためにエンコーダによって使われるテーブルである。該テーブルが、引き続く画素が処理されるにつれ、以下に説明するステップ1317で漸進的に書き入れられ、このテーブルは、例えばステップ1301でゼロ値に初期化されている:任意のkに対しPred_mode[k]=0。
ステップ1310で条件が合致すると、位置jの現在の画素レベルを現在の「左側値」Runに含めることが可能なことを示すために、ステップ1311で変数「ileft」が1つインクリメントされ、画素のブロックの次の画素値を検討するために、ステップ1312で変数jが1つインクリメントされる。
ステップ1310の条件が満たされない場合、変数「j」が、それが現在の「左側値」Runに対する検討対象の最初の画素値かどうかを判定するために、「iStart」と対比される。これがステップ1313である。「j」が「iStart」以下の場合、すなわち、それが現在のRunに対する検討対象の最初の画素値である場合は、それにより現在のRunが開始され、前述のステップ1312で次の画素値が検討される。「j」が「iStart」より真に高い場合、すなわち、現在の「左側値」Runの画素値とは異なる最初の画素値が検出された場合は、現在の「左側値」Runの長さに対応する変数「ileft」が判定モジュール1314に送られる。なお、「上側コピー」予測に対するループとして、インデックスiのレベルのBlock[i]が、同じループのステップ1308で判定される。
「左側値予測」および「上側コピー」モードに対する最大ランを計算した後、ステップ1314で、変数「ileft」と「icopy」とが比較される。これは、「icopy」!=0で、且つ「icopy」+2が「ileft」より高いかどうかを判定するためである。これは、上側コピーモードもしくは左側値予測モードを選択するための例示的な基準である。具体的には、左側値予測モードのレベルのレートコストを補償するのに使われるパラメータ「2」は、若干変更することが可能である。とりわけ、追加されるパラメータ(この例では2)は、パレットのサイズ(Palette_size)がレベルのコストに直接関連しているので、該サイズに応じて設定するとよい。1つの実施形態において、ステップ1314の比較で、演算「+2」は除外され、「icopy!=0&&icopy>ileft」がチェックされる。この実施形態は符号化効率を向上させる。
ステップ1314の条件は、「icopy」が0に等しいか、またはileft−2以下である場合、ステップ1315で「左側予測」モードが選択されることを意味する。この場合、同じステップ1315で「PredMode」変数が0に等しく設定され、Run変数が「ileft」に等しく設定される。他方、「icopy」が0と異なり且つ「ileft−2」より真に高い場合、ステップ1316で「上側コピー」モードが選択される。この場合、ステップ1316で「PredMode」変数は1に等しく、Run変数はicopy−1に等しく設定される。
次いで、エンコーダでの「Pred_mode」および「Run」を包含するテーブルがステップ1317で、現在値の「Pred_mode」および「Run」によって更新される。その後にステップ1318で、画素のブロック中の検討対象の次の位置が計算され、これは「ラン」値+1によってインクリメントされた現在の位置iに相当する。次いでステップ1319で、符号化ユニットの最後の画素が処理されたかどうかを判定するためのチェックが行われる。最後の画素であれば、このプロセスはステップ1320で終了し、それ以外の場合は、シンタクス要素の新しいセットを得るため、次の画素位置に対する2つの予測モード「左側予測」および「上側コピー」の評価が、ステップ1303および1309から始まって評価される。
このプロセスの終了点において、エンコーダは、符号化ユニットの各サンプルまたは画素に対するレベルを知り、3つのテーブルPred_mode[]、Block[]、およびRun[]の内容に基づいて、レベルのブロックの対応シンタクスを符号化することが可能である。
次いで、ブロックの予測因子を決めるために、エンコーダは、パレットを用い、また、1350でエスケープ画素としてシグナリングされた画素のリストも用いて、レベルの定義されたブロックを変換する。
図17および18は、それぞれ図15および16におけるものと同じ表現によって、パレットモードでのRunシンタクス要素を符号化するための、エンコーダでの例示的なアルゴリズムを示す。したがって、入力データは同じである。
これらのアルゴリズムの例では、1つのフラグ(例えば、Run要素に対する「終端まで」符号語を介して)が、現在の「Run」が最後のものであって、残りのインデックスの数に関係なく、すなわち現在のおよび最後のシンタクス要素のセットに対応するインデックスのグループを形成するこれら残りのインデックスの数を指定せずに、現在の符号化ユニットの終端までの全ての残りのインデックスに適用されること、を示すために使われる。このアプローチは、最後のグループ(多くの場合、画像の底部は通常単調なので、少なくとも画像の最後の符号化ユニット対してこのグループは大きくなる)に対するインデックスの正確な数を符号化するために、より長い符号語が必要とされる状況と比べて、一部のビットを節減することを可能にする。
このアプローチによれば、各セットに設けられるRunシンタクス要素は、インデックスの対応グループを形成するインデックスが、残りのブロック位置の数に関係なくインデックスのブロックの終端までのかかる全ての残りのブロック位置にあるインデックスであることを示す、終端まで−符号語を含め、少なくとも2つの利用可能な符号語から選択された符号語を使用する。しかして、この終端まで−符号語は、符号化ユニットを構成する最後のセット中のRun要素に対して設定することが可能である。但し、これは必須ではなく、一部の符号化ユニットに対しては、前述した従来式のアプローチをなお実装することが可能である。
なお、終端まで−アプローチをシグナリングするために、従来式のRun要素とは別個の、終端まで−バイナリフラグを設けることができる。また一方、Run要素に対する何らかの従来式符号語と組み合わされたかかるバイナリフラグは、組み込みのRun要素の符号語を形成する。これは、本明細書がRun要素に対する可能な符号語に重点を置いていることによる。
図17と18とは、Run値を符号化するのに使われる符号語によって相互に異なる。これらの図に示されるように、現在の符号化ユニットに対する最後のセット中のRunシンタクス要素は、シンタクス要素の現在のセットに対し「終端まで」オプションを可能にするステップをシグナリングするため、終端まで−符号語を使用する。
図17の実施形態において、ステップ1701〜1707は図15の対応するステップ(ステップ1501〜1507)と同一であり、したがって再述はしない。
ステップ1707(プロセスのこの位置では、符号化対象のRun値は2よりも大きい)での符号語「111」の生成に続き、ステップ1708は、現在のRunが現在の符号化ユニットに対する最後のものかどうか(すなわち、シンタクス要素の現在のセットが最後のものなのかどうか)を判定することから成る。この最後のRunとは、プロセスが符号化ユニットの一番後の画素(実際にはレベルのブロックの一番後のインデックス)に到達したので、この最後のRunの符号化の後は、この符号化ユニットに対しては他の演算(「上側コピー」または「左側値」)が行われることはないことを意味する。
例えば、最後のRunは、図13のプロセスの過程で、テスト1319が肯定であるときに検出することができる。かかる場合、ステップ1317でメモリ中に格納された最後のRunが、現在の符号化ユニットに対する最後のものである。
現在のRunが最後のものである場合、本実施形態の着想は、ステップ1710で、最後のRunが処理されていることを示すために、ビットストリーム中に或るフラグ「1」を符号化することによって、Runの値(これは、多くの場合大きく、しかして相当に長い符号語に繋がりかねない)のシグナリングを回避することである。
ステップ1708での応答が否定の場合、次のステップはステップ1709であり、このステップで、現在のRunが最後のものでないことを告げる或るフラグ「0」が、ビットストリーム中に符号化される。次に、ステップ1711で、ステップ1508と同様に、Runマイナス3の値が符号化される。
この構成において、Run要素の高い値(ステップ1709と組み合わせてステップ1707からもたらされる「111」)に対して使用される共通の符号語接頭辞が、終端まで−符号語を形成するために用いられる。次に、終端まで−符号語の接尾辞部分が最小に、すなわち単一ビットに短縮され(ステップ1710)、この終端まで−符号語は、共通の符号語接頭辞を含み、その共通符号語接頭辞に加えて1ビットの接尾辞を含む。
なお、本発明によって記述された方法の符号化効率を向上するために、ステップ1709および1710で述べた「終端まで」フラグを、CABACのような算術エントロピーコーダを用いて符号化することも可能である。
また、図18の実施形態において、終端まで−符号語は、「他の」Run値(すなわち短縮符号語のないもの)を符号化するのに使われる共通符号語接頭辞も含み、この共通接頭辞バイナリ値に加えて1ビットの接尾辞を含む。ステップ1801〜1803は、図16の対応するステップ(ステップ1601〜1607)と同じであり、したがって再述はしない。
ステップ1803での符号語「1」の生成(すなわち、現在のRun値は0とは異なる)に続いて、ステップ1804は、(ステップ1708と同様に)現在のRunが現在の符号化ユニットに対する最後のものかどうかを判定することにある。
現在のRunが最後のものである場合、本実施形態の着想は、最後のRunが処理されていることを示すために、ステップ1805で、ビットストリーム中にフラグ「1」を符号化することによって、Run長さの値(これは、多くの場合大きく、しかして相当に長い符号語に繋がりかねない)のシグナリングを回避することである。
ステップ1804での応答が否定の場合、次のステップはステップ1806であり、このステップで、現在のRunが最後のものでないことを告げるフラグ「0」が、ビットストリーム中に符号化される。次に、ステップ1807で、ステップ1604と同様に、Runの値が符号化される。
図17および18は、エンコーダの視点からのプロセスを示す。当業者は、デコーダにおける対応する復号プロセスを直接に推定できるであろう。これは、ビットストリームからのビットを解析し、インデックスの定義された数に関連付けられた所定符号語、もしくは本発明による「終端まで」符号語いずれかの、Run要素に対する符号語を得ることを意味する。例えば、復号プロセスのステップ1014で、「終端まで」符号語が検出されたとき、考慮対象のRun値は、プロセスを、それを終了するステップ1017に導くために、Pixels_in_Block−jとすることができる。
これら2つの図の例は、Run要素に対する第一の(且つ最も頻度の高い)可能な値(すなわち、図17に対しては0、1、および2、ならびに図18に対しては0)への優先度を保持する。これは、ステップ1707および1803それぞれの後に、最後のRunをシグナリングするための終端まで−符号語を設けることを意味する。
他の変形では、ステップ1703と1705との間に(この場合、終端まで−符号語は例えば「110」である)、またはステップ1701と1703との間に(この場合、終端まで−符号語は例えば「10」である)、さらには、ステップ1701の前に(この場合、終端まで−符号語は例えば「0」である)ステップ1708を設けることが可能である。同様に、図18に対する別の変形では、ステップ1801の前に(この場合、終端まで−符号語は例えば「0」である)ステップ1804を設けることも可能である。これらの変形において、最後のRunをシグナリングするためRun要素に対し用いられる終端まで−符号語は短縮符号語である。
ステップ1708および1804が、それぞれステップ1701および1801の前にある状況は、「終端まで」フラグがRun要素から分離されており、Run要素の直前に配置されている実施形態と見なせばよい。
HEVC SCCの他の発明的改良は、最後のRunをシグナリングするために「終端まで」フラグを用いるという前述の着想に依存しないので説明しないが、パレットモードを使う符号化の効率を向上するために、該着想と組み合わせることは可能である。
前述から、一部の画素がどのパレットエントリによっても適正に表現できない場合、それらは異なって符号化される、すなわち「エスケープ符号化」され、現在の符号化ユニット中で、エスケープ画素とパレット符号化画素とを区別するために、特定のシグナリングが設けられることが分かる。
エスケープ符号化モードは、明示的画素値の符号化を必要とし、しかして多くのビットの使用を必要とするので、非常に高コストとなる。これは符号化効率に悪影響をもたらすことがある。
さらに、図13に戻って参照すると、エンコーダによるパレットモードの評価は、符号化ユニットの各画素に対するインデックス(レベル)を、パレット中に見出すことを必要とする。これがステップ1308である。このステップの処理コストは高いことが判明することがある。
かかる短所を制限するために、エスケープ画素の数が所定の閾値に達したとき、パレットモードの評価を中止するという第一の発明的改良が提案される。かかる評価に対する処理コストは、しかして、(各エスケープ画素がビットストリーム中で多くのビットを必要とするので)圧縮率が低くされるとすぐに劇的に低減される。実際上、パレットモードを用いて現在の符号化ユニットを符号化するため多数のエスケープ画素が必要となる場合、符号化ユニットに対する同時符号化モード(イントラまたはインター)がレート歪みのより良好な妥協点を有し、その結果エンコーダによって選択されることになる、高い可能性がある。
しかして、第一の発明的改良によるプロセスは、
パレット符号化モードを含め、2つ以上の符号化モードの各々に対し、画素の現在のブロックの符号化を評価するステップであって、該パレット符号化モードは、インデックスのブロックを構築するために現在のパレットを用い、該現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該評価するステップと、
上記の評価に基づいて、画素の現在のブロックを符号化するため、2つ以上の符号化モードから1つの符号化モードを選択するステップと、
を含み、
パレット符号化モードを用いる画素の現在のブロックの符号化を評価するステップが、現在のブロックの画素を引き続き検討し、各検討された画素に対し、
パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付かった場合、エントリインデックスを用いて検討された画素を符号化するステップと、
パレット中に、距離閾値を所与として、検討されている画素に十分に近いパレットエントリが見付からなかった場合、検討された画素をエスケープ符号化するステップであって、該エスケープ符号化は、検討された画素の値の明示的符号化(すなわち、この画素に対する予測なし)を含む、該エスケープ符号化するステップと、
を含み、
エスケープ符号化された画素の数が画素の現在のブロックに対する所定の閾値を超えた場合、パレット符号化モードを用いて画素の現在のブロックの符号化を評価するステップは中止される。
連続する画素の間の冗長性に対して、格納された情報の低コストでの再使用を選好するため、処理された最後の画素および対応するパレットレベルを格納することによって、パレットの評価をスピードアップする第二の発明的改良が提案される。これにより、各画素に対するインデックスの網羅的な探索を回避することができる。
しかして、第二の発明的改良によるプロセスは、
画素の現在のブロックおよび現在のパレットからインデックスのブロックを構築するステップであって、現在のパレットは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む、該構築するステップと、
インデックスのブロックを符号化するステップと、
を含み、
画素の現在のブロックに対するインデックスのブロックを構築するステップは、画素の現在のブロックの各画素に対し、パレット中で、距離閾値を所与として、検討されている画素に十分に近い対応画素値を有するパレットエントリを探すステップと、見付かったパレットエントリのエントリインデックスをインデックスのブロックに加えるステップと、現在の画素および見付かったパレットエントリのエントリインデックスをメモリに格納するステップと、
現在の画素の値が、画素の現在のブロック中の先行の画素の値に等しい場合、メモリ中に格納されたその先行の画素に対するエントリインデックスを読み出すステップと、読み出されたインデックスを、現在の画素に対するエントリインデックスとしてインデックスのブロックに加えるステップと、
を含む。
第一および第二の発明的改良は、パレット符号化モードを用いる際に、組み合わせてまたは別個に使用することが可能である。
図19は、パレット符号化モードに対するこれら2つの発明的改良の組み合わせを示す。
エンコーダは、現在のパレットを知っており、画素に対応するレベル(またはインデックス)を判断する。これが、例えば前述したステップ1308である。
ステップ1909、1910、および1914は、エスケープ符号化される画素が多過ぎる場合、処理時間を浪費しないために、パレット符号化モードの評価を中止することにある第一の発明的改良を実装する。しかして、パレット符号化モードに対しては、制限された数のエスケープ画素だけが受容される。
ステップ1920、1921、および1922は、少なくとも見出された最後のインデックスを把握することにある第二の発明的改良を実装する。本図の例において、見出された最後のインデックスだけがメモリに保持されるが、最後の1つ前に見出されたインデックスにも同じことが適用できようし、そのまた前も同様である。
開始ステップ1901で、現在の符号化ユニット中の各画素を連続して検討するための画素カウンタを表す変数「i」、および現在の符号化ユニット中のエスケープ画素の数をカウントするのに使われる変数「Count」が0に初期化される。さらに、カウントの閾値を定義する変数「TH」が、理想的には、ステップ108(図1)で使われた量子化パラメータQPにより決まる値に設定される。最後になるが、画素値変数「Last」およびインデックス変数「LIDX」がメモリ中の「未定義」値に設定される。
次にステップ1903で、当初の符号化ユニット1904から、現在の画素Piが読み取られる。現在の画素値が処理済みの最後の画素に等しいかどうかを知るために、現在の画素Piと、ステップ1920でLastの現在の値とが対比される。
これらが同一の場合、ステップ1921で現在の画素に対するインデックスがLIDXに設定され、これは、現在の画素が処理済みの最後の画素と同じインデックスを有することを意味する。
その他の場合は、ステップ1906で、従来式の探索アルゴリズムを用いて、パレット中の最良のインデックスが探索される。例として、この探索は、例えば、最大成分絶対誤差、絶対誤差の和、平方誤差の和などに基として、Piと比べて最小の誤差を生じるインデックスを見付けることに基づくことが可能である。
次に、ステップ1907は、見出されたインデックスに対応する(探索アルゴリズムによってもしくはLIDXを使って得られた)パレットエントリがPiを十分に表現しているかどうかをチェックする。このチェックは、上記で定義された閾値THに基づけばよく、(探索1906の過程で計算された)前述の誤差をTHと比較することが可能である(LIDXが使われた場合、チェック1907は常に正となることを意味する)。誤差がTHよりも低い場合、パレットエントリインデックスは、表現していると認められる。
見出されたインデックスに対応するパレットエントリが、Piを十分に表現している場合、見出されたインデックスをステップ1911でPiに対して用いる、すなわち、レベルのブロックに加えることができる。次いで、プロセスはステップ1922に続く。
その他の場合は、前に説明したように、現在の画素Piはステップ1908でエスケープ符号化される。これは、画素Piが「エスケープしている」とシグナリングされ、その値が明示的に符号化されることを意味する。次いでステップ1909で、エスケープカウントCountがインクリメントされる。
ステップ1909に続いて、エンコーダは、エスケープカウントCountが高過ぎる値に到達しているかどうかをチェックする。これを行うために、ステップ1910でエンコーダは、Countと、有利には現在の符号化ユニット中の画素の数によって決まる閾値と、を比較する。
実施形態において、閾値の値は、例えば10%、20%、25%、または30%など、現在の符号化ユニット中の画素の数のパーセントを表す。
閾値の値が高過ぎることが判明した場合、ステップ1912で、パレット評価は中止され、一切のさらなるパレット処理(パレット化、ラン判定、符号化レート評価など)はスキップされる。
高過ぎると認められない場合、プロセスはステップ1922に続く。
インデックス探索を加速するために、次のステップ1922は、現在の画素値Piおよび対応する見出されたインデックスをメモリ中のLastおよびLIDXにそれぞれ格納することにある。
次いでステップ1913で、現在の符号化ユニットの次の画素「i」を検討するために、変数iがインクリメントされる。
次に、現在の符号化ユニットの全ての画素が処理されたかどうかを知るために、ステップ1914でチェックが行われる。全て処理されている場合、符号化ユニット全体が「パレット化」されており、本プロセスはステップ1915で終了する。それ以外の場合は、既に述べたように、ステップ1903で次の画素が検討される。
図19の実施形態の別形において、ステップ1920および1922に対して、画素の現在のブロック中の現在の画素の上側に位置する画素を、上記で定義された「Last」画素の代わりに用いることが可能である。これを行うために、符号化ユニットの1つの行全体に対し、画素とインデックスとの間の関連付けを、メモリ中に格納する(すなわち、ステップ1922の過程で書き入れる)ことができる。その後、ステップ1920は、現在の画素の上側の画素に対応する関連付けを、それが存在する場合読み出せばよい。
図20は、パレット算定アルゴリズムの過程で生じるパレット符号化モードに対する2つの発明的改良の、別の組み合わせを示す。
エンコーダへの入力は、現在の符号化ユニットおよびそのサイズである。本図の例では、YUVパレットが生成される。当然ながら、当業者は、この例をRGBパレットの構築に容易に適合させることができよう。
このアルゴリズムは、図19のものと非常に類似している。ステップ2003、2004、2006、2007、2013、2014、2020、2021、および2022は、それぞれ、ステップ1903、1904、1906、1907、1913、1914、1920、1921、および1922と同様である。ステップ2001は、変数「Palette_size」が0に初期化され、変数Countがもはや存在しないことを除いて、ステップ1901と同様である。
ステップ2016および2018は、第一の発明的改良を実装する。ステップ2020、2021、および2022は、第二の発明的改良を実装する。
図19で行われたように、インデックス探索を加速するために、ステップ2020で、現在の画素がLastの現在の値と対比される。これらが同一である場合、ステップ2021で現在の画素に対するインデックスがLIDXに設定される。その他の場合は、ステップ2006で、パレットの中で最良のインデックスが探索される。
図20のプロセスは、ステップ2007の後が図19のものとは異なり、エンコーダが、見出されたインデックスに対応するパレットエントリがPiを十分に表現しているかどうかをチェックする。
パレットが算定されているので(図20のプロセスはパレット算定アルゴリズムに属する)、ステップ2007のチェックが否定である場合、ステップ2009で、現在の画素Piが新規パレットエントリとしてパレットに加えられる。
言い換えれば、距離閾値を所与として、パレット中に画素Piに十分近いパレットエントリが見付からない場合、検討された画素Piが、新規パレットエントリとしてパレット中に加えられ、対応するエントリインデックスが、検討される画素に対するインデックスのブロックに加わる。これは、新規パレット要素が画素値Piに等しく設定され、現在の画素Piがパレットの1エントリになることを意味する。さらに正確には、以下の割り当てが行われる:
PALY[j]=(Yi);PALU[j]=(Ui);PALV[j]=(Vi)、前式のYi、Ui、Viは、PiのYUVカラー成分を表す。
次にステップ2010で、この新規パレットエントリの発生の数が1に設定される:Counter[Palette_size]=1。次いでステップ2011で、変数Palette_sizeが1つインクリメントされ、その後ステップ2022に続く。
インデックスが当該画素を表現している場合(チェック2007が肯定)、ステップ2002で、パレットを算定するため必要な一切の情報が更新される。具体的には、インデックスに対応するエントリに対するカウンタ(Counter[index])がインクリメントされる。プロセスはステップ2022に続く。
ステップ2022で、画素値と見出されたインデックスとの間の関連付けが、変数LastおよびLIDXを更新することによって、メモリ中に格納される。
次に、現在の符号化ユニットの次の画素「i」を検討するために、ステップ2013で変数iがインクリメントされる。現在の符号化ユニットの全ての画素が処理されたかどうかを知るために、ステップ2014でチェックが行われる。
全部が処理されていない場合、プロセスは、既に説明したステップ2003に続く。
全部が処理されていれば、構築されたパレットの後処理のステップ2015に続く。プロセスのこの時点で、テーブル「Counter」は、各パレット要素の発生を包含する。
この後処理には、これらの発生および統計データを考慮に入れることが可能である。
後処理の例は、ステップ1215を参照して前述されている:例えば、パレット要素は、最も頻度の高い要素がパレット中の最初の位置(最小のインデックスまたは「レベル」を備えるエントリ)になるように、それらの発生度(Counter[])に従って順序付けされる。
次に、最初のN個のパレット要素を保持することができ、他のパレット要素は削除してもよい。例えば、パレットのサイズが、例えば24エントリなど或る最大サイズに制限されている場合、24より多いエントリを有する構築済みパレットは、順序付けされたパレット中の25番目の位置以降の要素(エントリ)を削除することによって縮小される。
ステップ2015の次に、ステップ2016は、パレットを使って符号化される対象となる、現在の符号化ユニットの画素の数の見積もり、または、対応するパレットエントリがステップ2015で削除されてしまったので、ビットストリーム中の明示的に符号化(エスケープ符号化画素)される対象の画素の数の見積もりを算定することにある。これらの見積もりは、対応する(保持または削除された)パレットエントリに対する(Counter[]中の)発生の数を合計することによって容易に得ることができる。
また、ステップ2016は、そのエスケープ画素に対して得られた見積もりを所定の閾値(例えば、符号化ユニット中の画素の数のパーセント)と対比することにもある。得られた見積もりが閾値を超える場合、多過ぎるエスケープ符号化画素が明らかにされて、ステップ2018でパレットモードの評価は中止される。その他の場合は、パレットモードの評価は、ステップ2017で正常に終了する。
HEVC SCCのさらに別の発明的改良は、関係がない場合に評価プロセスを中止することによっても、処理時間を節減することができる。この別の発明的改良は、前述した1つ以上の発明的改良とは別個に、あるいはそれらと組み合わせて実装することができる。
この改良は、現在のパレットの符号化が、パレット予測因子を用いてかかるパレットを予測することを含むコンテキストにおいて実施される。しかして、これは、パレット符号化モードを用いて画像の画素の現在のブロックを処理する方法に関してい、該パレット符号化モードは、それぞれのエントリインデックスを対応する画素値に関連付けるエントリのセットを含む現在のパレットを使用し、本方法は、少なくとも1つのパレット予測因子から現在のパレットを予測するステップを含む。例えば、このパレット予測因子は、画像中の画素のブロックを処理するため以前に使われた1つのパレットとしてもよく、その一例が同時係属出願GB1403823.6に記載されている。
通常、最良の1つを判定すべく、現在のパレットを予測するための2つ以上のパレット予測モードが評価される。
パレット予測モードは、前に使われたパレット(すなわち、パレット符号化モードで符号化された直近の符号化ユニットに対するもの)から現在のパレットを予測することから成る。この前に使われたパレットから再使用される各パレット要素/エントリは、エンコーダによって、どのエントリが再使用されるかを示すフラグのセットを介してビットストリーム中にシグナリングされる。このパレット予測モードはエンコーダ側で評価され、標準パレット評価と呼ばれる。
別のパレット予測モードは、画像中の画素の先行するブロックの先行パレットを、画素の現在のブロックを符号化するための現在のパレットとして、全面的に利用することから成る。言い換えれば、このパレットは、実際上、前に使われたパレットの全てのエントリを再使用する。かかる場合、当該符号化ユニットが前に使用されたパレット全体を再使用することを示すため、符号化ユニットレベルでフラグを使用することができ、この場合、明示的パレット要素は送信されず、当該パレットは、単に前にパレット符号化されたCUのものである。また、このパレット予測モードもエンコーダ側で評価され、これはパレット共用評価と呼ばれる。
エンコーダ側で、2つ以上のパレット予測モードを連続して実行するのは、非常に高コストの評価をもたらす可能性がある。パレット共用評価が非効果的な場合を検知して、それをできるだけ早期にスキップするのが、多くの場合望ましい。
これはこの第三の発明的改良の意図であって、その例が図21の発明的ステップ1802〜1808によって示されている。この改良によれば、パレット共用評価を実施する前に、現在のパレット中で再使用される先行パレットのパレットエントリの量が判定される。この判定に基づいてパレット共用評価をスキップすることができる、すなわち、再使用されるパレットエントリの量が所定の閾値より少ないと判定された場合、第一パレット予測モードを用いる、画素の現在のブロック符号化の評価がスキップされる。
図21のプロセスの入力は、完全に既知の現在のパレットである。標準パレット評価2101が終了したならば、それを現在のパレットとすることができる。
標準パレット評価が実施完了したならば(2101)、そのパレット要素群は既知となる。ステップ2102で、そのパレット符号化モードが、現在の符号化ユニットに対する最良の符号化モードであるかどうかがチェックされる。
最良でない場合、パレット共用を用いることで状況が改善される可能性は低い。結果的として、パレット評価プロセスはステップ2110で終了する。
最良の場合、現在のパレット中で再使用される前のパレットからの要素の数が、ステップ2103〜2106のループを介してカウントされる。
このカウントのループは、ステップ2103で、現在ののエントリインデックスを表す変数「i」および再使用されるパレット要素の数を表す変数「Count」の両方を0に設定することによって初期化される。次に、ステップ2104は、以前のパレットからのi番目のパレット要素が再使用されるかどうかをチェックすることから成る。再使用される場合、ステップ2105で再使用要素の数がインクリメントされ、プロセスはステップ2106に進む。それ以外の場合は、プロセスは直接にステップ2106に進む。
ステップ2106は、i番目のパレット要素が前のパレットの最後の要素かどうかをチェックすることから成る。最後でない場合、ステップ2104にループバックする前に、ステップ2107で「i」をインクリメントすることによって次のパレット要素が選択される。
ステップ2108は、対象パレットが前のパレットの最後のパレット要素のとき、パレット共用評価がスキップ可能かどうかを評価することから成る。
簡単なチェックは、パレット共用評価を可能にする前に、再使用される現在のパレット要素の最小比率を確実にするために、Countと現在のパレットのサイズとを比較することにあり得る。
最小比率に達していない場合(再使用される要素が過少)、パレット共用評価を遂行せずに、パレット評価はステップ2110で終了する。
その他の場合(最小比率に達している)は、ステップ2109で、パレット共用評価が従来の方式で遂行され、その後プロセスはステップ2110で終了する。
図14は、本発明の1つ以上の実施形態の実装のためのコンピューティングデバイス1400の概略ブロック図である。コンピューティングデバイス1400は、マイクロコンピュータ、ワークステーション、または軽量携帯デバイスなどのデバイスであってよい。コンピューティングデバイス1400は、以下の素子に接続された通信バスを含む:
− マイクロプロセッサなどの、CPUとも呼ばれる中央処理ユニット1401;
− 本発明の実施形態の方法の実行コード、ならびに本発明の実施形態よる方法を実装するために必要な変数およびパラメータを記録するようになされたレジスタを格納するための、RAMとも呼ばれるランダムアクセスメモリ1402であって、そのメモリ容量は、例えば拡張ポートに接続された随意的RAMによって拡張可能である;
− 本発明の実施形態を実装するためのコンピュータプログラムを格納するための、ROMとも呼ばれる読み取り専用メモリ1403;
− ネットワークインターフェース1404は、通常、通信ネットワークに接続され、それを介して処理対象のデジタルデータが送信または受信される。ネットワークインターフェース1404は単一のネットワークインターフェースとすることも、各種のネットワークインターフェース(例えば、有線およびワイヤレスインターフェース、または各種の有線またはワイヤレスインターフェース群)のセットで構成することも可能である。CPU1401中で実行されるソフトウェアアプリケーションの制御の下で、データパケットが、送信のためネットワークインターフェースに書き込まれ、あるいは受信のためネットワークインターフェースから読み取られる;
− ユーザインターフェース1405は、ユーザからの入力を受信するため、あるいはユーザに情報を表示するために使うことができる;
− HDとも呼ばれるハードディスク1406は、大量ストレージデバイスとして設けることが可能である。
− I/Oモジュール1407は、ビデオ源またはディスプレイなどの外部デバイスとの間でデータを受信/送信するために使うことができる。
実行可能コードは、読み取り専用メモリ1403中、ハードディスク1406上、または例えばディスクなどのリムーバブルデジタル媒体上のいずれかに格納することが可能である。別形によれば、プログラムの実行可能コードは、実行される前に、ハードディスク1406などの、通信デバイス1400のストレージ手段の1つの中に格納すべく、ネットワークインターフェース1404を介し、通信ネットワークを用いて受信することができる。
中央処理ユニット1401は、本発明の実施形態によるプログラムまたはプログラム群の命令またはソフトウェアコードの部分の実行を制御および命令するようになされており、これら命令は、前述のストレージ手段の1つの中に格納される。電源投入後、CPU1401は、当該命令が、例えばプログラムROM1403またはハードディスク(HD:hard−disc)1406などからロードされた後、ソフトウェアアプリケーションに関し、主RAMメモリ1402からの命令を実行することができる。かかるソフトウェアアプリケーションは、CPU1401に実行されると、図17〜21に示されたフローチャートのステップを遂行させる。
図17〜21中に示されたアルゴリズムの任意のステップを、PC(「Personal Computer(パーソナルコンピュータ)」)、DSP(「Digital Signal Processor(デジタル信号プロセッサ)」)、またはマイクロコントローラなどのプログラム可能コンピューティングマシンによる命令のセットまたはプログラムの実行によって、ソフトウェア中に実装すること、あるいは、FPGA(「Field−Programmable Gate Array(フィールドプログラマブルゲートアレイ)」)またはASIC(「Application−Specific Integrated Circuit(特定用途向け集積回路)」)などのマシンまたは専用部品によって、ハードウェアの中に別途に実装すること、が可能である。
特定の実施形態を参照しながら、本発明を上記で説明してきたが、本発明は、これら特定の実施形態に限定されるものでなく、当業者には諸修改が明白であろうが、それらの修改は本発明の範囲に含まれる。
当業者には、前述の例示的な実施形態を参照することにより、多くのさらなる修改および変形が浮かぶであろう。これらの実施形態は、例としてだけ提示されており本発明の範囲を限定するものでなく、発明の範囲は添付の特許請求の範囲によってのみ定められる。具体的には、適切な場合、各種実施形態からの各種の特徴は置き換えが可能である。
特許請求の範囲中の用語「含む(comprising)」は他の要素またはステップを排除せず、不定冠詞「或る(aまたはan)」は複数を排除しない。相異なる従属請求項において述べられる各種の特徴は、これらの特徴の組み合わせを有利に使用できないことを示すものではない。

Claims (14)

  1. ビットストリームからの画像中の画素の現在のブロックを復号する方法であって、前記方法は、
    インデックスのブロック、エスケープ画素値、およびパレットを得るステップであって、前記パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、前記エスケープ画素値は、前記パレット中の画素値に関連付けられた、インデックスの前記ブロックの中に対応するインデックスを持たない画素に対する画素値を含む、前記得るステップと、
    インデックスの前記ブロック、前記エスケープ画素値、および前記パレットから画素の復号された現在のブロックを形成するステップと、
    を含み、
    インデックスの前記ブロックを得るステップが、
    インデックスの前記ブロック中に、連続するブロック位置を有するインデックスのグループを生成するため、前記ビットストリームからシンタクス要素を取得するステップと、
    前記シンタクス要素に基づいて、インデックスの前記ブロックの前記インデックスを生成するステップと、
    を含み、
    取得された前記シンタクス要素は、インデックスの前記グループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスの前記ブロックの終端までの全ての残りのブロック位置にある前記インデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む、
    方法。
  2. 画像中の画素の現在のブロックを符号化する方法であって、前記方法は、
    画素の前記現在のブロックおよびパレットから、インデックスのブロックおよびエスケープ画素値を生成するステップであって、前記パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、前記エスケープ画素値は、前記パレット中の画素値に関連付けられたインデックスの前記ブロックの中に対応するインデックスを持たない画素に対する画素値を含む、前記生成するステップと、
    インデックスの前記ブロックおよび前記エスケープ画素値を符号化するステップと、
    を含み、
    インデックスの前記ブロックを符号化するステップが、
    インデックスの前記ブロック中に連続するブロック位置を有するインデックスのグループを生成するためのシンタクス要素を生成するステップ、
    を含み、
    前記シンタクス要素は、インデックスの前記グループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスの前記ブロックの終端までの全ての残りのブロック位置にある前記インデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む、
    方法。
  3. 前記シンタクス要素が、インデックスの定義された数に関連付けられインデックスの前記ブロックのインデックスの1グループに対応する、所定符号語を使用し、インデックスの前記ブロック中の最後のブロック位置群に対応するシンタクス要素が、前記終端まで−符号語を使用する、請求項1または2に記載の方法。
  4. インデックスの定義された数に関連付けられたいくつかの前記所定符号語は短縮符号語であり、インデックスの他の定義された数に関連付けられた他の所定符号語は、共通の符号語接頭辞と、可変の符号語接尾辞とで構成され、前記終端まで−符号語は前記共通の符号語接頭辞を含む、請求項3に記載の方法。
  5. 前記終端まで−符号語が、前記共通の符号語接頭辞に加えて、1ビットの接尾辞を含む、請求項4に記載の方法。
  6. 前記シンタクス要素が、セットとして設けられ、シンタクス要素の或るセットに対応するインデックスのグループの生成は、前記セットの第一シンタクス要素により決まり、前記インデックスを生成するために使われる演算は、
    真上の前記ブロック位置にあるインデックスを繰り返すこと、および
    前記セットの第二シンタクス要素中に符号化されたインデックスを繰り返すこと、
    のうちの1つである、
    請求項1〜5のいずれかに記載の方法。
  7. プログラムを格納した非一時的コンピュータ可読媒体であって、前記プログラムは、デバイス中のマイクロプロセッサまたはコンピュータシステムによって実行されると、前記デバイスに、いずれかの先行請求項に記載の前記方法を遂行させる、非一時的コンピュータ可読媒体。
  8. 実行されると請求項1〜6いずれかに記載の前記方法を遂行させる、コンピュータプログラム。
  9. 請求項8に記載のコンピュータプログラムが格納されているマシン可読媒体。
  10. 請求項2および請求項2に従属する場合の請求項3〜6、のいずれかに記載の前記符号化方法を用いて生成されるビットストリーム。
  11. 請求項10に記載のビットストリームが格納されたストレージ媒体。
  12. 請求項1〜6のいずれかに記載の前記方法を実行するようになされた手段を含むデバイス。
  13. ビットストリームからの画像中の画素の現在のブロックを復号するための復号デバイスであって、前記復号デバイスは、
    インデックスのブロック、エスケープ画素値、およびパレットを得るための手段であって、前記パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、前記エスケープ画素値は、前記パレット中の画素値に関連付けられたインデックスの前記ブロックの中に対応するインデックスを持たない画素に対する画素値を含む、前記得るための手段と、
    インデックスの前記ブロック、前記エスケープ画素値、および前記パレットから画素の復号された現在のブロックを形成するための手段と、
    を含み、
    インデックスの前記ブロックを得るステップが、
    インデックスの前記ブロック中に、連続するブロック位置を有するインデックスのグループを生成するため、前記ビットストリームからシンタクス要素を取得するステップと、
    前記シンタクス要素に基づいて、インデックスの前記ブロックの前記インデックスを生成するステップと、
    を含み、
    取得された前記シンタクス要素は、インデックスの前記グループの1つを形成する前記インデックスが、残りのブロック位置の数に関係なくインデックスの前記ブロックの終端までの全ての残りのブロック位置にある前記インデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む、
    復号デバイス。
  14. 画像中の画素の現在のブロックを符号化するための符号化デバイスであって、前記符号化デバイスは、
    画素の前記現在のブロックおよびパレットから、インデックスのブロックおよびエスケープ画素値を生成するための手段であって、前記パレットは、それぞれのエントリインデックスを対応画素値に関連付けるエントリのセットを含み、前記エスケープ画素値は、前記パレット中の画素値に関連付けられたインデックスの前記ブロックの中に対応するインデックスを持たない画素に対する画素値を含む、前記生成するための手段と、
    インデックスの前記ブロックおよび前記エスケープ画素値を符号化するための手段と、
    を含み、
    インデックスの前記ブロックを符号化するステップが、
    インデックスの前記ブロック中に連続するブロック位置を有するインデックスのグループを生成するためのシンタクス要素を生成するステップ、
    を含み、
    前記シンタクス要素は、インデックスの前記対応するグループの1つを形成するインデックスが、残りのブロック位置の数に関係なくインデックスの前記ブロックの終端までの全ての残りのブロック位置にある前記インデックスであることを表す、終端まで−符号語で示されるシンタクス要素を含む、
    符号化デバイス。
JP2017516935A 2014-10-06 2015-10-06 復号方法、符号化方法、復号装置、符号化方法、プログラム Active JP6584501B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1417652.3 2014-10-06
GB1417652.3A GB2531005A (en) 2014-10-06 2014-10-06 Improved encoding process using a palette mode
PCT/EP2015/073062 WO2016055486A1 (en) 2014-10-06 2015-10-06 Improved encoding process using a palette mode

Publications (3)

Publication Number Publication Date
JP2017536724A true JP2017536724A (ja) 2017-12-07
JP2017536724A5 JP2017536724A5 (ja) 2018-11-08
JP6584501B2 JP6584501B2 (ja) 2019-10-02

Family

ID=51946924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516935A Active JP6584501B2 (ja) 2014-10-06 2015-10-06 復号方法、符号化方法、復号装置、符号化方法、プログラム

Country Status (8)

Country Link
US (1) US10491907B2 (ja)
EP (1) EP3205108A1 (ja)
JP (1) JP6584501B2 (ja)
KR (2) KR102088605B1 (ja)
CN (1) CN106797483B (ja)
GB (1) GB2531005A (ja)
RU (1) RU2684202C2 (ja)
WO (1) WO2016055486A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108282655B (zh) * 2012-09-26 2021-09-10 威勒斯媒体国际有限公司 图像编码和/或解码装置及方法
US10097842B2 (en) 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
JP6613842B2 (ja) * 2015-11-24 2019-12-04 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
US11265579B2 (en) 2018-08-01 2022-03-01 Comcast Cable Communications, Llc Systems, methods, and apparatuses for video processing
WO2020096755A1 (en) * 2018-11-08 2020-05-14 Interdigital Vc Holdings, Inc. Quantization for video encoding or decoding based on the surface of a block
MX2021008911A (es) 2019-02-01 2021-08-24 Beijing Bytedance Network Tech Co Ltd Se?alizacion de informacion de reformacion en bucle utilizando conjuntos de parametros.
WO2020156529A1 (en) * 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Signaling of in-loop reshaping information using parameter sets
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11202101B2 (en) * 2019-03-13 2021-12-14 Qualcomm Incorporated Grouped coding for palette syntax in video coding
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
WO2020192612A1 (en) 2019-03-23 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Default in-loop reshaping parameters
US11309911B2 (en) 2019-08-16 2022-04-19 Advanced Micro Devices, Inc. Semi-sorting compression with encoding and decoding tables
CN116684633A (zh) * 2019-08-26 2023-09-01 Lg电子株式会社 图像编码方法、图像解码方法和比特流发送方法
JP2022532444A (ja) * 2019-09-07 2022-07-14 ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド ビデオデータを復号化する方法、コンピューティングデバイス、非一時的コンピュータ可読記憶媒体、デコーダ可読記憶媒体、およびコンピュータプログラム製品
US11076151B2 (en) * 2019-09-30 2021-07-27 Ati Technologies Ulc Hierarchical histogram calculation with application to palette table derivation
WO2021194283A1 (ko) * 2020-03-25 2021-09-30 주식회사 케이티 비디오 신호 처리 방법 및 장치
US11558625B2 (en) * 2020-06-24 2023-01-17 Electronics And Telecommunications Research Institute Method for generating residual image of multi-view video and apparatus using the same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
RU2420021C2 (ru) * 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
US8615138B2 (en) * 2011-11-03 2013-12-24 Google Inc. Image compression using sub-resolution images
US20140009576A1 (en) * 2012-07-05 2014-01-09 Alcatel-Lucent Usa Inc. Method and apparatus for compressing, encoding and streaming graphics
JP5632431B2 (ja) 2012-09-04 2014-11-26 株式会社東芝 画像符号化装置、及び画像符号化方法
CN103281538B (zh) 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
US9729875B2 (en) * 2013-07-08 2017-08-08 Sony Corporation Palette coding mode
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
WO2015091879A2 (en) * 2013-12-19 2015-06-25 Canon Kabushiki Kaisha Improved encoding process using a palette mode
GB2521606A (en) * 2013-12-20 2015-07-01 Canon Kk Method and apparatus for transition encoding in video coding and decoding
KR101845462B1 (ko) * 2014-03-14 2018-04-04 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
US9860560B2 (en) * 2014-07-02 2018-01-02 Qualcomm Incorporated Method for palette mode coding
JP2017532885A (ja) * 2014-09-26 2017-11-02 ヴィド スケール インコーポレイテッド 時間ブロックベクトル予測を用いたイントラブロックコピー符号化
US10158866B2 (en) * 2014-09-26 2018-12-18 Qualcomm Incorporated Parsing dependency reduction for palette index coding

Also Published As

Publication number Publication date
WO2016055486A1 (en) 2016-04-14
CN106797483A (zh) 2017-05-31
EP3205108A1 (en) 2017-08-16
KR102088605B1 (ko) 2020-03-12
KR20190041549A (ko) 2019-04-22
GB201417652D0 (en) 2014-11-19
RU2017115411A (ru) 2018-11-13
RU2017115411A3 (ja) 2018-11-13
JP6584501B2 (ja) 2019-10-02
KR101970903B1 (ko) 2019-04-19
US10491907B2 (en) 2019-11-26
GB2531005A (en) 2016-04-13
RU2684202C2 (ru) 2019-04-04
US20170310977A1 (en) 2017-10-26
KR20170066462A (ko) 2017-06-14
CN106797483B (zh) 2019-11-19

Similar Documents

Publication Publication Date Title
JP6584501B2 (ja) 復号方法、符号化方法、復号装置、符号化方法、プログラム
US10972742B2 (en) Encoding process using a palette mode
JP6465890B2 (ja) 画素ブロックの符号化または復号の方法および装置
JP6537511B2 (ja) Hevcにおける改良型パレットモード
JP6461355B2 (ja) 画像を符号化または復号する装置、方法、プログラム
JP6532467B2 (ja) ビデオ符号化および復号におけるシンタックス要素符号化方法および装置
JP2017522839A (ja) 整合パレット符号化
JP2018507625A (ja) パレットモードコード化のためのエスケープ画素をコード化すること
US10469842B2 (en) Encoder optimizations for palette lossless encoding of content with subsampled colour component
JP2023129533A (ja) ビデオ符号化方法、電子装置、記憶媒体及びプログラム
GB2528431A (en) Improved encoding process using a palette mode

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

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: 20190806

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190903

R151 Written notification of patent or utility model registration

Ref document number: 6584501

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151