【文献】
Liwei Guo, Joel Sole, Rajan Joshi, Peisong Chen, Xianglin Wang, Marta Karczewicz,Non-Square Transform for 2NxN and Nx2N Motion Partitions,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting: Torino,2011年 7月16日,JCTVC-F563(version 5),pp.1-8,URL,http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=3043
【文献】
A. Fuldseth, G. Bjontegaard, M. Sadafale, M. Budagavi,CE10: Core transform design for HEVC, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting: Torino, IT,2011年 7月15日,[JCTVC-F446],pp.1-13
(58)【調査した分野】(Int.Cl.,DB名)
前記第1の逆量子化アルゴリズムを適用することは、前記変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、
前記第2の逆量子化アルゴリズムを適用することは、前記変換係数のブロックを生成するために使用される1組の第2の定数を計算するために第2のマッピングテーブルを使用することを含む、
請求項1に記載の方法。
前記第1の逆量子化アルゴリズムを適用することは、前記変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、
前記第2の逆量子化アルゴリズムを適用することは、前記変換係数のブロックを生成するために使用される1組の第2の定数を計算するために、シフトされた第1のマッピングテーブルを使用することを含む、
請求項1に記載の方法。
前記第1の量子化アルゴリズムを適用することは、前記量子化済み変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、
前記第2の量子化アルゴリズムを適用することは、前記量子化済み変換係数のブロックを生成するために使用される1組の第2の定数を計算するために第2のマッピングテーブルを使用することを含む、
請求項8に記載の方法。
前記第1の量子化アルゴリズムを適用することは、前記量子化済み変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、
前記第2の量子化アルゴリズムを適用することは、前記量子化済み変換係数のブロックを生成するために使用される1組の第2の定数を計算するために、シフトされた第1のマッピングテーブルを使用することを含む、
請求項8に記載の方法。
【発明を実施するための形態】
【0009】
図中の要素は簡単且つ明瞭にするために示しており、必ずしも縮尺通りに描かれているとは限らないことを当業者なら理解されよう。例えば、本発明の実施形態を理解する一助となるように、図中の一部の要素の寸法を他の要素に比べて拡大することがある。
【0010】
図中、機器及び方法のコンポーネントを必要に応じて従来の記号によって示しており、本明細書の説明の利益を有する当業者にとって容易に明らかな詳細によって本開示を不明瞭にしないために、本発明の実施形態の理解に関連がある具体的詳細だけを図示した。
【0011】
一般的に言えば、様々な実施形態に従い、本開示は係数の矩形ブロックを量子化及び逆量子化するための方法及び機器を提供する。例えば、量子化済み変換係数の矩形ブロックについて逆量子化を行うための方法は、量子化済み変換係数のWxHのブロックを受け取ることであって、Wはブロックの行幅でありHはブロックの列の高さであることと、量子化済み変換係数のWxHのブロックに逆量子化処理を施し、量子化済み変換係数のWxHのブロックに対応するピクチャを生成するために使用される変換係数のブロックを生成することとを含む。逆量子化処理は、関数
【0013】
の出力Mが整数値に等しい場合に第1の逆量子化アルゴリズムを適用すること、及び出力Mが非整数値に等しい場合に第2の逆量子化アルゴリズムを適用することを含む。
変換係数の矩形ブロックについて量子化を行うための方法は、ピクチャから生成される変換係数のWxHのブロックを受け取ることであって、Wは、ブロックの行幅でありHは、ブロックの列の高さであることと、変換係数のWxHのブロックに量子化処理を施し、ピクチャを再構築するために用いられるビットシーケンスを生成するために使用される量子化済み変換係数のブロックを生成することとを含む。量子化処理は、関数
【0015】
の出力Mが整数値に等しい場合に第1の量子化アルゴリズムを適用すること、及び出力Mが非整数値に等しい場合に第2の量子化アルゴリズムを適用することを含む。一実施形態では、量子化を行うための方法は更に、出力Mが整数値に等しい場合に1組の第1の定数を使用して量子化済み変換係数のエントロピ符号化を実行するか否か判定することと、さもなければ1組の第2の定数を使用して量子化済み変換係数のエントロピ符号化を実行するか否か判定することとを含む。
【0016】
システムは、逆量子化ブロックを有する復号器と、量子化ブロックを有する符号器とを含む。逆量子化ブロックは、量子化済み変換係数のWxHの第1のブロックであって、Wはブロックの行幅でありHはブロックの列の高さである、第1のブロックを受け取り、量子化済み変換係数の第1のブロックに逆量子化処理を施し、量子化済み変換係数のWxHの第1のブロックに対応する第1のピクチャを生成するために使用される変換係数の第1のブロックを生成するように構成される。逆量子化処理は、関数
【0018】
の出力Mが整数値に等しい場合に第1の逆量子化アルゴリズムを適用すること、及び出力Mが非整数値に等しい場合に第2の逆量子化アルゴリズムを適用することを含む。
一実施形態では、逆量子化ブロックは更に、第1の逆量子化アルゴリズムを適用する一方で、第1のマッピングテーブルを用いて1組の第1の定数を計算することであって、1組の第1の定数は量子化済み変換係数の第1のブロックから変換係数の第1のブロックを生成するために逆量子化関数内で使用されること;及び第2の逆量子化アルゴリズムを適用する一方で、第2のマッピングテーブルを用いて1組の第2の定数を計算することであって、1組の第2の定数は量子化済み変換係数の第1のブロックから変換係数の第1のブロックを生成するために逆量子化関数内で使用されることを行うように、構成される。代替的実施形態では、逆量子化ブロックは更に、第1の逆量子化アルゴリズムを適用する一方で、第1のマッピングテーブルを用いて1組の第1の定数を計算することであって、1組の第1の定数は量子化済み変換係数の第1のブロックから変換係数の第1のブロックを生成するために逆量子化関数内で使用されること、及び第2の逆量子化アルゴリズムを適用する一方で、シフトされた第1のマッピングテーブルを用いて1組の第2の定数を計算することであって、1組の第2の定数は量子化済み変換係数の第1のブロックから変換係数の第1のブロックを生成するために逆量子化関数内で使用されることを行うように、構成される。
【0019】
本システムの量子化ブロックは、第2のピクチャから生成される変換係数のWxHの第2のブロックを受け取ることであって、Wは変換係数の第2のブロックの行幅でありHは変換係数の第2のブロックの列の高さであること、及び変換係数の第2のブロックに量子化処理を施し、第2のピクチャを再構築するために用いられるビットシーケンスを生成するために使用される量子化済み変換係数の第2のブロックを生成することを行うように構成される。量子化処理は、関数
【0021】
の出力Mが整数値に等しい場合に第1の量子化アルゴリズムを適用すること、及び出力Mが非整数値に等しい場合に第2の量子化アルゴリズムを適用することを含む。
次に図面、具体的には
図1を参照し、一部の実施形態による係数の矩形ブロックを量子化及び逆量子化するための方法を実施する符号器の例示的簡略ブロック図が示されており、その全体を100で表示する。符号器100は、変換ブロック102、量子化ブロック104、エントロピ符号化ブロック106、逆量子化ブロック108、逆変換ブロック110、ループフィルタ112、空間予測ブロック114、基準バッファ116、時間予測ブロック118、及びスイッチ120を含む。
【0022】
一実施形態では符号器100がHEVC符号器であり、そのため、高効率映像符号化(HEVC:High Efficiency Video Coding)ドラフト規格(H.265及びMPEG−H Part2としても知られる)に従って動作するように構成される。例えば符号器は、HEVCドラフト規格の少なくとも一部又はまだ発行されていない将来のHEVC規格(本明細書では一括してHEVC、HEVC規格、又はHEVC仕様と呼ぶ)に準拠してデータ(例えば映像データ)処理を行う。但し代替的実施形態では、符号器100は、他の規格又は独占権下にあるメディア圧縮技法に準拠するデータ(例えば映像、音声、又は他のメディア)処理を実施する。更に、符号器100のブロック図は、本教示の実施形態を理解するのに必要なブロックしか示していない点で「単純化」されている。市販の符号器の実施形態の他の要素は説明図を簡略化するために省いている。
【0023】
変換ブロック102、量子化ブロック104、エントロピ符号化ブロック106、逆量子化ブロック108、逆変換ブロック110、空間予測ブロック114、及び時間予測ブロック118は、符号器100が、本教示に関して説明する機能、例えば残りの
図2〜
図5に関して以下で説明する機能を含む自らの機能を実行するために使用する異なるアルゴリズムを表す。本文脈で使用する「ブロック」は、ハードウェア装置によって実行される機能の論理的表現を含む。
【0024】
一実施形態では、アルゴリズム102〜110、114、及び118、並びにループフィルタ112、基準バッファ116、及びスイッチ120が集積回路チップ上のハードウェアによって完全に実装される。代替的実施形態では、アルゴリズム102〜110、114、及び118が適切な記憶装置(即ちメモリ)上にソフトウェア又はファームウェアコードとして記憶され、符号器が、メモリ内に記憶されたアルゴリズムを実行するようにプログラムされた処理装置としてハードウェアによって部分的に実装される。本明細書で使用するとき、「アルゴリズム」は、符号器100又は復号器の機能ブロック、例えば102〜110及び114内で実行される処理の全て又は一部を表す。しかしながら、「関数」は任意の等式又は公式を意味する。
【0025】
HEVCとは、ブロックベースの空間及び時間予測的ハイブリッド符号化方式である。HEVCでは、入力ピクチャが、最大符号化単位(LCU:largest coding unit)として定義される正方形ブロックにまず分割される。本文脈で使用するとき(画像処理に関し)、「ブロック」は、特定の種類のブロック及びそのブロックがかけられた処理に応じた、画素、変換係数、量子化済み変換係数などの要素又はサンプルの二次元アレイ若しくは行列として定義される。そのため、本明細書ではブロック、アレイ、及び行列という用語を区別なく使用する。基本符号化単位が16x16画素のマクロブロック(MB)である他の映像符号化規格とは異なり、HEVCでは、基本符号化単位CUは128x128画素規模とすることができ、かかる基本符号化単位は、圧縮及び予測を画像の特性に適合させるためのより優れた柔軟性を符号化プロセス中にもたらす。
【0026】
HEVCでは、LCUを符号化単位(CU:coding unit)として定義される4つの正方形ブロックに分割する(即ち分ける又は区分する)ことができ、各正方形ブロックはLCUの4分の1の大きさである。各CUは、より小さい、それぞれがCUの4分の1の大きさの、4つのCUへと更に分割することができる。この分割プロセスは、深度レベル基準やレート−歪み(RD:rate distortion)基準など、一定の基準が満たされるまで繰り返されることができる。例えば、LCUの区分化として、最も低いRDコストを与える区分化が選択される。従ってHEVCでは、CUが複数領域へのピクチャの区分化を定め、マクロブロック構造に取って代わり、以下でより詳細に説明する予測単位(PU:prediction unit)及び変換単位(TU:transform unit)として定義される1つ又は幾つかのブロックを含む。
【0027】
HEVCでは、LCUがCUへと分割される方法のLCU区分を示すために、4分木データ表現を使用する。具体的には4分木の各ノードにおいて、そのノードが4つのサブノードに更に分割される場合はビット「1」が割り当てられ、さもなければビット「0」が割り当てられる。バイナリデータの4分木表現は、CUと共に符号化され、復号プロセスで使用するためにオーバヘッドとして伝送される。4分木の各葉において、2Lx2Lの寸法を有する最終CUは(2Lは最終CUの行幅及び列の高さの両方に等しい)、あり得る4つのブロック寸法のうちの1つを有することができ、各CUパターン内の2Lx2L、2LxL、Lx2L、及びLxLのブロック寸法は予測単位(PU)として定義される。従って、最も大きいPUの大きさはCUの大きさに等しく、他の認められたPUの大きさは予測の種類、即ちイントラ予測又はインター予測に依存する。
【0028】
本明細書では予測単位を、符号化プロセス中の予測のための基本単位として定める。CUのレベルでは、イントラ(空間)予測又はインター(時間)予測のいずれかが符号器のコントローラ(
図1には図示せず)によって選択され、コントローラは制御信号を(
図1の)スイッチ120に与えて選択された予測の種類を知らせる。その後、選択された予測の種類は、CU内の全PUに適用される。符号化モード(即ちイントラモード又はインターモード)を示すデータ及びイントラモードに関するイントラ予測方向は、記憶するための又は復号器へのビットストリーム内で伝送するための映像データに付随する。更に、符号化モード及びイントラ予測方向データは符号化(及び復号)アルゴリズムにとって、例えば符号器のコントローラ(図示せず)によってアクセス可能である。
【0029】
より具体的には、HEVCは、イントラピクチャ(即ちIピクチャ又はフレーム)及びインターピクチャ(例えばB及びPピクチャ又はフレーム)をサポートする。イントラピクチャは他の如何なるピクチャも参照することなしに独立に符号化され、それにより復号を開始できる可能な箇所を提供する。従って、イントラピクチャ内のCUを(対応するTUを符号化することによって)イントラ符号化するには空間予測しか認められない。本明細書で使用するとき、イントラ符号化(又はイントラモードでの符号化)は、イントラ(空間)予測アルゴリズム(例えば
図1の114)を用いたブロックの符号化を意味し、空間予測はピクチャ内の空間相関を利用することでピクチャを表現するのに必要な伝送データの量を減らす。本明細書ではイントラ符号化されたブロックをイントラブロックと呼ぶ。予測モードは、前に符号化されたデータ(即ち空間又は時間)から信号を生成するための、予測とオリジナルとの間の残差を最小限にする方法を定める。
【0030】
対照的に、インターピクチャはインター予測を用いて符号化され、インター予測は現在のピクチャ以外の基準ピクチャのデータ要素に由来する予測である。本明細書では時間(インター)予測アルゴリズム(例えば
図1の118)を用いたブロックの符号化として定義するインター符号化(又はインターモードでの符号化)は、映像圧縮の殆どを行う。その理由は、インター符号化では、時間予測アルゴリズムを使用してピクチャから動き情報を抽出することにより、ピクチャと時間的基準との差だけが符号化されるからである。時間的基準とは、前に符号化されたイントラピクチャ又はインターピクチャである。インターピクチャは、イントラ予測及びインター予測の両方をサポートする。本明細書ではインター符号化されたブロックをインターブロックと呼ぶ。
【0031】
上記で暗に示したように、CUは、(イントラモードで)空間的に符号化するか、又は(インターモードで)時間的に予測符号化することができる。CUがイントラモードで符号化される場合、CUの各PUは、独自の空間予測方向を有することができる。CUがインターモードで符号化される場合、CUの各PUは、独自の動きベクトル及び関連する基準ピクチャを有することができる。
図1の説明に再び戻り、HEVC符号器100は、CUの符号化を実施するために慨して以下のように動作する。一実施形態では、映像データに対応する現在の画素のPUブロックxを所与として、スイッチ120の配置に応じた、空間予測ブロック114を用いる空間予測又は時間予測ブロック118を用いる時間予測により、予測PU,x’がまず得られる。次いで予測PUが現在のPUから引かれ、残差PU,eがもたらされる。
【0032】
HEVCは、これだけに限定されないが、水平、垂直、斜め45度、斜め135度、DC等を含む35個の可能な角度の空間予測方向をPUごとに提供する。予測方向は、+/−[0,2,5,9,13,17,21,26,32,33,34]の角度を有する。PUごとの空間予測方向を示すために、任意の適切な構文を使用することができる。時間予測は、動き推定演算によって行われる。動き推定演算では、符号器100内の復号プロセス(本明細書では復号器とも呼ぶ)(即ち逆量子化器108、逆変換110、及びループフィルタ112)を使用して生成され、基準バッファ116内に記憶される基準ピクチャに関し、現在のPUのベストマッチの予測を探す。ベストマッチの時間予測は、動きベクトル(MV:motion vector)及び関連する基準ピクチャ(refIdx)によって記述される。Bピクチャ内のPUは、最大2つのMVを有することができる。適切な構文に従い、MV及びrefIdxの両方が、時間予測ブロック118によって提供される。
【0033】
画素(残差PU,e及びPUを含むCUに対応する)の変換単位ブロック(TU)は、変換ブロック102内で変換演算にかけられ、それぞれが映像データに対応する複数の変換係数を含む、変換領域内のTU,Eがもたらされる。HEVCでは、様々な大きさの1組のブロック変換(TU)をCUに適用することができる。より具体的には、TUは、PUと同じ大きさとすることができ、又はPUの大きさを超えても良いがCUにはそれが当てはまらず、又はPUが複数のTUを含み得る。更に、TUは、正方形ブロック(即ちブロックの縦横が等しい)とすることも矩形ブロック(即ちブロックの縦横が等しくない)とすることもできる。CU内の各TUの大きさ及び位置は、RQTと呼ばれる別の4分木によって識別され、RQTは、記憶するための又は復号器へのビットストリーム内で伝送するための符号化済みCUに付随する。RQT内に含まれるデータは、符号化(及び復号)アルゴリズムにとって、例えば符号器のコントローラ(図示せず)によってアクセス可能である。
【0034】
より具体的には、HEVCはブロック変換演算を使用し、このブロック変換演算は、TUブロック内の画素の相関を失わせ、低次の変換係数にブロックのエネルギを圧縮する傾向がある。低次の変換係数は、周波数領域内にあると考えられるスカラ量として定められる。一実施形態では、変換ブロック102は、TUブロック内の画素の離散コサイン変換(DCT:Discreet Cosign Translform)を行う。本明細書ではTUを、変換、量子化、及びエントロピ符号化演算中に処理されるブロック単位若しくは要素ブロックとして定義する。
【0035】
変換ブロック102の出力Eは、高さH及び幅Wを有する、変換係数の二次元アレイ又は行列(WxH)を含む変換単位ブロックである。残差の変換係数TU,Eが量子化ブロック104内で量子化され、量子化済み変換係数の二次元行列(WxH)を含む変換単位ブロックが生成される。本明細書では、変換係数及び量子化済み変換係数の両方を慨して係数と呼ぶ。量子化は、データ圧縮において非常に重要な役割を果たす。HEVCでは、量子化が、高精度の変換係数を有限数の可能な値に変換する。量子化は、不可逆の演算であり、量子化による損失を回復することはできない。
【0036】
量子化済み変換係数がエントロピ符号化され、符号器100からの最終的な圧縮ビットストリーム122(本明細書では一次元「ビットシーケンス」とも呼ぶ)がもたらされる。HEVCでは、エントロピ符号化が、コンテキスト適応型二値算術符号化方式(CABAC:context−adaptive binary−arithmetic coding)を使用して実行される。他の映像圧縮技法では、CABAC並びにコンテキスト適応型可変長符号化方式(CAVLC:context−adaptive variable−length coding)などの他のエントロピ符号化アルゴリズムを使用する。或る映像圧縮技法がCAVLC及びCABACの両方を提供する場合、これらのエントロピ符号化技法の両方を実施することができる符号器(又は復号器)は、2つの構成に従って動作すると言える。その2つの構成とはつまり、CAVLCエントロピ符号化を実施する場合の低複雑度構成と、CABACエントロピ符号化を実施する場合の高効率構成である。
【0037】
符号器100内の復号プロセスでは、残差の量子化済み変換係数TUが逆量子化ブロック108内で逆量子化され(量子化ブロック104の(厳密にではないが)逆の演算)、残差の逆量子化済み変換係数TU,E’がもたらされる。残差の逆量子化済み変換係数TU,E’は逆変換ブロック110内で逆変換され(変換ブロック102の逆)、再構築された残差TU,e’がもたらされる。次いで、再構築された残差TU,e’が対応する空間又は時間予測x’に追加され、再構築されたPU,x’’が形成される。HEVCでは、再構築されたLCUにわたって適応ループフィルタ112が実行され、適応ループフィルタ112は、ブロックの境界を平滑化し、入力ピクチャと出力ピクチャとの間の符号化歪みを最小限にする。再構築されたピクチャが基準ピクチャである場合、それらのピクチャは、将来の時間予測用に基準バッファ116内に時間的基準として記憶される。
【0038】
外部の復号器(図示せず)は、符号器のエントロピ符号化ブロック106の逆のアルゴリズムを実行するエントロピ復号ブロックを含み、そのため、ビットストリームを受け取り、量子化済み変換係数のブロック(TU)を生成する。復号器は更に、符号器100内で復号プロセスを実行する要素と同じ要素を含み、それらの要素は、エントロピ復号ブロックから量子化済み変換係数を受け取り、対応する映像のピクチャを生成する。つまり復号器内の復号プロセスは更に、上記のように動作する逆量子化器108、逆変換110、ループフィルタ112、空間予測ブロック114、基準バッファ116、時間予測ブロック118、及びスイッチ120を含む。
【0039】
残りの
図2〜
図5は、本開示の様々な実施形態を示す。より具体的には、
図2及び
図4は、一部の実施形態による変換係数の矩形ブロックを量子化する方法200及び400をそれぞれ示す。例えば、符号器100が、方法200及び400の機能の少なくとも一部を量子化ブロック104内で実行する。従って、量子化ブロックは、
図2及び
図4に関して図示するように処理を実行するように構成される。
図3及び
図5は、一部の実施形態による量子化済み変換係数の矩形ブロックを逆量子化する方法300及び500をそれぞれ示す。例えば、(符号器100内外の)復号器は、方法300及び500の機能の少なくとも一部を逆量子化ブロック108内で実行する。従って、逆量子化ブロックは、
図3及び
図5に関して図示するように処理を実行するように構成される。
【0040】
HEVCを用いて実施するための方法200〜500について以下で説明し、符号器及び復号器は、高効率映像符号化規格に従って動作するように構成される。従って、本明細書に記載する関数(等式)及びマッピングテーブルは、HEVCのために最適化される。但し他の実施形態では、方法200〜500は、異なる映像圧縮規格を使って又は独占権下にある映像圧縮技法を使って実施されうる。従って、本明細書に記載する関数及びマッピングテーブルは、使用される特定の映像圧縮技法に少なくとも部分的に応じて異なり得る。
【0041】
次に、符号器100内で実行される方法200の詳細に移る。202で、量子化ブロック104が、或るピクチャから生成された変換係数のWxHのブロックを受け取り、Wは、ブロックの行幅でありHはブロックの列の高さである。W及びHは任意の正値とすることができるが、一実施形態ではW及びHの両方が正の整数である。量子化ブロックは、本教示に従ってこのWxHのブロックに量子化処理を施し、ピクチャを再構築するために用いられるビットシーケンスを生成するために使用される量子化済み変換係数のブロックを生成するように動作可能である。
【0042】
204で、量子化ブロックはブロックの大きさ(即ちW及びHの値)に応じて、(「はい」の分岐の後に続く)第1の量子化アルゴリズムを適用するか、(「いいえ」の分岐の後に続く)第2の量子化アルゴリズムを適用するかを決定する。一実施形態では、整数Xと共にWxH=X
2が成立する場合、又は関数
【0044】
の出力Mが整数値(即ち整数)に等しい場合、符号器は、第1の量子化アルゴリズムを適用する。従って、上記の基準を満たす全ての正方形TUブロック及び一部の矩形ブロックに、第1の量子化アルゴリズムが適用される。
【0045】
さもなければ、(WxH=2X
2が成立するHEVCにおいてなど)WxH≠X
2が成立するか、又は
【0047】
が非整数値に等しい場合、符号器は、第2の量子化アルゴリズムを適用する。第1の量子化アルゴリズムとは対照的に、第2の量子化アルゴリズムは矩形ブロックにのみ適用される。複数の量子化アルゴリズム間のこの選択は、今までに無いものである。従来、単一の量子化アルゴリズムが変換係数の各ブロックに適用され、そのアルゴリズムは正方形のTU向けに最適化されていた。
【0048】
概して、
図2に関して示す実施形態では、第1の量子化アルゴリズムを適用することは、量子化済み変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、第2の量子化アルゴリズムを適用することは、量子化済み変換係数のブロックを生成するために使用される1組の第2の定数を計算するために第2のマッピングテーブルを使用することを含む。本明細書で定義するとき、マッピングテーブルとは、処理されている所与の変換係数の選択された量子化パラメータから定数Qを計算する際に使用される値、又は処理されている所与の量子化済み変換係数の復号された量子化パラメータから定数IQを計算する際に使用される値のテーブルである。「シフトされた」マッピングテーブルは、1対のQ計算関数又は1対のIQ計算関数内で使用される同じマッピングテーブルを指し、以下でより詳細に説明するように、対の中の関数の一方は、対の中の他方の関数の出力値をシフトする演算を含む。
【0049】
より具体的には、量子化済み変換係数のブロックは、ブロック内の各変換係数に適用される以下の量子化関数(1)を用いて生成される。高価な除算演算又は乗算演算の代わりに、2^nによる除算又は乗算のそれぞれに相当する、ビット数nによる右シフト又は左シフト(>>又は<<としてそれぞれ示す)を使用することが好ましく、広く受け入れられている。
【0050】
量子化関数(1)は、
level=(coeff*Q+offset)>>Qbits (1)
として定義され、
ここでcoeffは、量子化関数(1)に入力されるWxHのブロックの変換係数からの所与の変換係数であり、
levelは、量子化関数(1)から出力される対応する量子化済み変換係数であり、
Qは、出力Mが整数値に等しい場合に第1のマッピングテーブルから得られる定数であり、さもなければQは第2のマッピングテーブルによって得られ、
Qbitsは、量子化関数内の除算演算に相当する右シフトを実行する際に使用される幾つかのビットを含む計算可能な定数であり、
offsetは、Qbitsの値を用いて得られる計算可能な定数である。
【0051】
第1の量子化アルゴリズムを適用する際(判定ブロック204の「はい」の分岐に関して示す)、符号器は(206〜208で)関数(1)を用いてシーケンス内のブロックの中の各変換係数、即ちcoeffを処理し、(210で)対応する量子化済み変換係数、即ちlevelを(210で)求める。量子化処理の説明を簡単にするために、「第1の」変換係数の処理だけを示す。しかし、同様の処理が、ブロック内の残りの変換係数についても行われる。
【0052】
より具体的には、206及び208で、量子化器は、第1の変換係数について、関数(1)への入力として必要なQ、Qbits、Offsetなどの全ての変数を計算する。つまり206で、量子化器は、Qを計算する。この事例ではWxH=X
2なので、Q=Q
1である。Q
1は、
Q=f1(QP%6)、即ちモジュロ演算 (2)
として第1のマッピングテーブル(2)を用いて計算され、ここでf1(x=0,1,2,3,4,5)={26214,23302,20560,18396,16384,14564}である。従ってこの(WxH=X
2が成立する)場合、変換係数のWxHのブロックを量子化する際に使用するために、この第1のマッピングテーブルに基づいて1組の第1の定数Qが求められる。
【0053】
208で、量子化器が、現在処理されている第1の変換係数coeffについて、Qbitsを計算し、Qbitsを用いてオフセットを計算し、QPを使用する。一実施形態では、量子化パラメータQPは、入力構成ファイルによって予め定められ、又はレート歪み最適化やレート制御メカニズムなどの一定の規則に基づき符号器によって決定される。QPは、符号化プロセスの一環として生成されるビットストリーム内に符号化される。以下の関数/等式(3)及び(4)をそれぞれ使い、Qbits及びoffsetが計算され、求められ、又は得られる。
【0054】
Qbits=(21+QP/6−IntegerM−DB+RoundingShift) (3)
ここでDB=B−8(8ビット入力での内部ビット深度増加)であり、
【0056】
であり、
IntegerM=Ceil(M)であり、ここでCeil(M)は、
【0058】
について最も近くて最も大きい整数値であり、
ここで、WxH=X
2についてはIntegerM=Mであり、又は
【0060】
は整数値に等しく、
IntegerM=Mの場合、RoundingShift=0であり、さもなければRoundingShift=(QP%6+3)/6、ここで(HEVC実装では)IntegerM=M−0.5であり、
B=ソースビット幅(例えば8又は10)である。
【0061】
offset=1<<(Qbits−1) (4)
上記のように、Qbits、Q
1、及びoffsetが求められると、量子化器は、量子化関数(1)を用いて(210で)対応する第1の量子化済み変換係数を求める。量子化済み変換係数のブロックWxHが求められると、そのブロックは、エントロピ符号化され、記憶され又は復号器に与えられる最終的な圧縮ビットストリーム122が、214でもたらされる。HEVCに適合する一実施形態では、符号器がレート歪み最適化による量子化(RDOQ:Rate Distortion Optimized Quantization)と呼ばれる機能を使用する。RDOQが使用可能にされる場合、符号器は、levelを符号化するコストとlevelを符号化しないでおくコストとを比較することによって、各量子化済み変換係数をエントロピ符号化するか否か(212で)判定する。より具体的には、符号器は、値Q
1及びQbitsを使用し(WxH=X
2が成立する場合)、及び以下の関数(5)、(6)、(7)、(8)、及び(9)を使用し、第1の量子化済み変換係数levelのエントロピ符号化を行うか否か判定する。
【0062】
UncodedCost=uncodedError
2・errScale (5)
CodedCost=codedError
2・errScale+rateCost (6)
ここで、uncodedError=coeff×Q (7)
codedError=coeff×Q−(level<<Qbits) (8)
【0064】
が成立する。
UncodedCost>CodedCostが成立する場合、levelは、符号化される。さもなければlevelは、符号化されないままである。
【0065】
判定関数204に戻り、WxH≠X
2が成立するか、又は
【0067】
が非整数に等しい場合、方法200のブロック216及び208〜214に関して図示するように、符号器は第2の量子化アルゴリズムを実行する。HEVC符号器構成では、第2の量子化アルゴリズムは、WxH=2X
2が成立する場合(例えばLx2L及び2LxLの矩形型のTUと共に)に、適用される。第2の量子化アルゴリズムを適用する際、符号器は、量子化関数(1)を用いてシーケンス内のブロックの中の各変換係数、即ちcoeffを処理し、対応する量子化済み変換係数、即ちlevelを求める。量子化処理の説明を簡単にするために、「第1の」変換係数の処理だけを示す。しかし、同様の処理が、ブロック内の残りの変換係数についても行われる。
【0068】
より具体的には、216で、量子化器がQを計算する。この事例では、(WxH≠X
2なので)Q=Q
2であり、Q
2は、
Q=f2(QP%6) (10)
として第2のマッピングテーブル(10)を用いて計算され、ここで、HEVCの実施形態ではf2(x=0,1,2,3,4,5)={18536,16477,14538,13007,11585,10298}である。従って、この(WxH≠X
2が成立する)場合、変換係数のWxHのブロックを量子化する際に使用するために、この第2のマッピングテーブルに基づいて1組の第2の定数Qが求められる。方法200は、続けて上記のようにブロック208〜214の機能を実行し、変換係数のWxHのブロックに対応するビットシーケンスを生成する。
【0069】
次に、復号器内で実行される
図3の方法300の詳細に移る。302で、逆量子化ブロック(例えば104)は、量子化済み変換係数のWxHのブロックを受け取り、Wは、ブロックの行幅でありHはブロックの列の高さである。W及びHは、任意の正値とすることができるが、一実施形態ではW及びHの両方が、正の整数である。逆量子化ブロックは、本教示に従ってこのWxHのブロックに逆量子化処理を施し、量子化済み変換係数のWxHのブロックに対応するピクチャを生成するために用いられる(逆量子化済み)変換係数のブロックを生成するように動作可能である。
【0070】
304で、逆量子化ブロックは、ブロックの大きさ(即ちW及びHの値)に応じて、(「はい」の分岐の後に続く)第1の逆量子化アルゴリズムを適用するか、(「いいえ」の分岐の後に続く)第2の逆量子化アルゴリズムを適用するかを決定する。一実施形態では、整数Xと共にWxH=X
2が成立する場合、又は関数
【0072】
の出力Mが整数値(即ち整数)に等しい場合、復号器は、第1の逆量子化アルゴリズムを適用する。従って、上記の基準を満たす全ての正方形TUブロック及び一部の矩形ブロックに第1の逆量子化アルゴリズムが適用される。
【0073】
さもなければ、(WxH=2X
2が成立するHEVCにおいてなど)WxH≠X
2が成立するか、又は
【0075】
が非整数値に等しい場合、復号器は、第2の逆量子化アルゴリズムを適用する。第1の逆量子化アルゴリズムとは対照的に、第2の逆量子化アルゴリズムは、矩形ブロックにのみ適用される。複数の逆量子化アルゴリズム間のこの選択は、今までに無いものである。従来、単一の逆量子化アルゴリズムが量子化済み変換係数の各ブロックに適用され、そのアルゴリズムは正方形のTU向けに最適化されていた。
【0076】
概して、
図3に関して示す実施形態では、第1の逆量子化アルゴリズムを適用することは、変換係数のブロックを生成するために使用される1組の第1の定数を計算するために第1のマッピングテーブルを使用することを含み、第2の逆量子化アルゴリズムを適用することは、変換係数のブロックを生成するために使用される1組の第2の定数を計算するために第2のマッピングテーブルを使用することを含む。より具体的には、変換係数のブロックは、以下の逆量子化関数(11)を用いて生成され、
coeffQ=((levelxIQ<<(QP/6))+offset)>>IQbits (11)
levelは、逆量子化関数(11)に入力される、量子化済み変換係数のWxHのブロックからの第1の量子化済み変換係数であり、
coeffQは、逆量子化関数(11)から出力される対応する第1の変換係数であり、
IQは、出力Mが整数値に等しい場合に第1のマッピングテーブルから得られる定数であり、さもなければIQは、第2のマッピングテーブルから得られ、
QPは、復号された量子化パラメータであり、
IQbitsは、第1の関数内で右シフトを行う際に使用される幾つかのビットを含む計算可能な定数であり、
offsetは、IQBits又はWxHに由来する計算可能な定数である。
【0077】
第1の逆量子化アルゴリズムを適用する際(判定ブロック304の「はい」の分岐に関して示す)、復号器は、(306〜308で)関数(11)を用いてシーケンス内のブロックの中の各量子化済み変換係数、即ちlevelを処理し、(310で)対応する変換係数、即ちcoeffQを求める。逆量子化処理の説明を簡単にするために、「第1の」量子化済み変換係数の処理だけを示す。しかし、同様の処理が、ブロック内の残りの量子化済み変換係数についても行われる。
【0078】
より具体的には、306及び308で、逆量子化器は、第1の量子化済み変換係数について、関数(11)への入力として必要なIQ、offset、IQbitsなどの全ての変数を計算する。つまり306で、逆量子化器は、IQを計算する。この事例ではWxH=X
2なので、IQ=IQ
1が成立する。IQ
1は、
IQ=g1(QP%6)、即ちモジュロ演算 (12)
として第1のマッピングテーブル(12)を用いて計算され、ここでg1(x=0,1,2,3,4,5)={40,45,51,57,64,72}である。従って、この(WxH=X
2が成立する)場合、量子化済み変換係数のWxHのブロックを逆量子化する際に使用するために、この第1のマッピングテーブルに基づいて1組の第1の定数IQが求められる。
【0079】
308で、逆量子化器は、現在処理されている第1の量子化済み変換係数levelについて、IQbits及びoffsetを計算し、QPを復号し、QPは、第1の量子化済み変換係数のために符号器によって選択される量子化パラメータである。第1の逆量子化アルゴリズムを適用する一方で、以下の関数(13)及び(14)のそれぞれを使用し、IQbits及びoffsetが計算される。
【0080】
IQbits=(IntegerM−1+DB−RoundingShift) (13)
ここでDB=B−8(8ビット入力での内部ビット深度増加)であり、
B=ソースビット幅であり、
【0082】
であり、
IntegerM=Ceil(M)であり、ここでCeil(M)は
【0084】
について最も近くて最も大きい整数値であり、
ここで、WxH=X
2についてはIntegerM=Mであり、又は
【0086】
は整数値に等しく、
IntegerM=Mの場合、RoundingShift=0であり、さもなければRoundingShift=(QP%6+3)/6、ここで(HEVC実装では)IntegerM=M−0.5である。
【0087】
offset=1<<(IntegerM−2+DB) (14)
上記のように、IQbits、IQ、及びoffsetが求められると、逆量子化器は、逆量子化関数(11)を用いて(310で)対応する第1の変換係数を求める。一実施形態では、この逆量子化済み変換係数は、クリッピング(312)関数にかけられ、以下の関数(15)に従って(−32768,32768)の範囲まで縮められる。
【0088】
coeffQ=min(32767,max(−32768,coeffQ)) (15)
314で、復号器は、逆量子化済み変換係数のブロックを用いて対応するピクチャを生成する。
【0089】
判定関数304に戻り、WxH≠X
2が成立するか、又は
【0091】
が非整数値に等しい場合、方法300のブロック316及び308〜314に関して図示するように、復号器は、第2の逆量子化アルゴリズムを実行する。HEVC復号器構成では、第2の逆量子化アルゴリズムは、WxH=2X
2が成立する場合(例えばLx2L及び2LxLの矩形型のTUと共に)に適用される。第2の逆量子化アルゴリズムを適用する際、復号器は逆量子化関数(11)を用いてシーケンス内のブロックの中の各量子化済み変換係数、即ちlevelを処理し、対応する(逆量子化済み)変換係数、即ちcoeffQを求める。逆量子化処理の説明を簡単にするために、「第1の」量子化済み変換係数の処理だけを示す。しかし、同様の処理は、ブロック内の残りの量子化済み変換係数についても行われる。
【0092】
より具体的には、316で、逆量子化器がIQを計算する。この事例では、(WxH≠X
2なので)IQ=IQ
2が成立し、IQ
2は、
IQ=g2(QP%6) (16)
として第2のマッピングテーブル(16)を用いて計算され、ここで、HEVCの実施形態ではg2(x=0,1,2,3,4,5)={56,63,72,80,90,101}である。従ってこの(WxH≠X
2が成立する)場合、量子化済み変換係数のWxHのブロックを逆量子化する際に使用するために、この第2のマッピングテーブルに基づいて1組の第2の定数IQが求められる。方法300は、続けて上記のようにブロック308〜314の機能を実行し、変換係数のWxHのブロックに対応するピクチャを生成する。
【0093】
次に、符号器100内で実行される
図4の方法400の詳細に移る。方法400は、符号器内で実行される方法200に似ており、上記で説明したが簡潔にするためにここでは繰り返し説明しない同様のブロック202〜214を含む。従ってこの実施形態では、判定ブロック204の「はい」の分岐の間に適用される第1の量子化アルゴリズムは、方法200と方法400とで同じである。しかし、ブロック204の「いいえ」の判定分岐で(ブロック402から始まり)実行される第2の量子化アルゴリズムは、方法400内では異なる。
【0094】
概して、
図4に関して示す実施形態では、第1の量子化アルゴリズムを適用することは、量子化済み変換係数のブロックを生成するために使用される1組の第1の定数(Q)を計算するために第1のマッピングテーブルを使用することを含み、第2の量子化アルゴリズムを適用することは、量子化済み変換係数のブロックを生成するために使用される1組の第2の定数(Q)を計算するために、シフトされた第1のマッピングテーブルを使用することを含む。より具体的には、WxH=X
2が成立する場合、Q=Q
1が第1のマッピングテーブルQ=f(QP%6)を用いて上記のように計算され、ここで、f(x=0,1,2,3,4,5)={26214,23302,20560,18396,16384,14564}である。他方で、402では、(WxH≠X
2が成立するので)Q=Q
2であり、Q
2は、以下のように定めるシフトされた第1のマッピングテーブル
Q=f1((QP+3)%6) (17)
を用いて計算され、ここで、f(x=0,1,2,3,4,5)={26214,23302,20560,18396,16384,14564}である。従ってこの(WxH≠X
2が成立する)場合、変換係数のWxHのブロックを量子化する際に使用するために、シフトされた第1のマッピングテーブルに基づいて1組の第2の定数Qが求められる。
【0095】
次に、復号器内で実行される
図5の方法500の詳細に移る。方法500は、復号器内で実行される方法300に似ており、上記で説明したが簡潔にするためにここでは繰り返し説明しない同様のブロック302〜314を含む。従ってこの実施形態では、判定ブロック304の「はい」の分岐の間に適用される第1の逆量子化アルゴリズムは、方法300と方法400とで同じである。しかし、ブロック304の「いいえ」の判定分岐で(ブロック502から始まり)実行される第2の逆量子化アルゴリズムは、方法500内では異なる。
【0096】
概して、
図5に関して示す実施形態では、第1の逆量子化アルゴリズムを適用することは、(逆量子化済み)変換係数のブロックを生成するために使用される1組の第1の定数(IQ)を計算するために第1のマッピングテーブルを使用することを含み、第2の逆量子化アルゴリズムを適用することは、変換係数のブロックを生成するために使用される1組の第2の定数(IQ)を計算するために、シフトされた第1のマッピングテーブルを使用することを含む。より具体的には、上記のようにWxH=X
2が成立する場合、IQ=IQ
1は、第1のマッピングテーブルIQ=g1(QP%6)を用いて上記のように計算され、ここで、g1(x=0,1,2,3,4,5)={40,45,51,57,64,72}である。但しこの事例では、502において、(WxH≠X
2が成立するので)IQ=IQ
2であり、IQ
2は、第1のマッピングテーブルのシフトされたバージョンを用いて計算される。従って、HEVCにあるようにM=IntegerM−0.5の場合、シフトされたマッピングテーブルは以下の通りであり、
IQ=g1((QP+3)%6) (18)
ここでg1(x=0,1,2,3,4,5)={40,45,51,57,64,72}である。従ってこの(WxH≠X
2が成立する)場合、量子化済み変換係数のWxHのブロックを逆量子化する際に使用するために、シフトされた第1のマッピングテーブルに基づいて1組の第2の定数IQが求められる。更に、HEVCの実施形態では、変換係数を求めるために使用されるoffsetは、以下のように関数(19)を用いて求められる。
【0097】
offset=1<<(IQbits−1) (19)
上記の明細書で特定の実施形態について説明してきた。但し、添付の特許請求の範囲に記載する本発明の範囲から逸脱することなしに、様々な修正及び変更を加えても良いことを当業者なら理解されよう。従って、本明細書及び図面は限定的な意味ではなく例示的な意味として考えるべきであり、そのようなあらゆる修正形態は本教示の範囲に含まれることを意図する。
【0098】
これらの利益、利点、問題に対する解決策、及び何らかの利益、利点、若しくは解決策をもたらし得る、又はより顕著にし得る如何なる要素も、何れかの又は全ての請求項の重大な、所要の、又は不可欠な特徴若しくは要素として解釈すべきでない。本発明は、本願の係属中に加えられる任意の補正を含む添付の特許請求の範囲、及び発行されるそれらの請求項のあらゆる等価物によってのみ定められる。
【0099】
概してこれらの教示では、
図2〜
図5に関して上記で詳述した本開示の実施形態による機能によって装置が構成され又は適合される。本明細書で使用するとき、「適合される(adapted)」、「構成される(configured)」、「動作可能である(operable)」、又は「する能力がある(capable of)」は、所望の機能を実行するためのソフトウェア及び/又はファームウェアでプログラムされた、ハードウェア又はハードウェアと処理装置との組合せを用いて示した装置が実装されることを意味する。
【0100】
更に本明細書では、第1のと第2の、上部と下部などの関係語は、或るエンティティ又は行為を別のエンティティ又は行為と単に区別するために、かかるエンティティ又は行為間のそのような如何なる実際の関係又は順序を必ずしも必要とすることなしに、若しくは暗に示すことなしに使用することができる。用語「備える(comprises)」、「備えている(comprising)」、「有する(has)」、「有している(having)」、「含む(includes)」、「含んでいる(including)」、「含有する(contains)」、「含有している(containing)」、又はそれらの他の任意の変化形は、非排他的な包含を保護することを意図とし、それにより、列挙の要素を備え、有し、含み、含有するプロセス、方法、物品、又は機器はそれらの要素だけを含むのではなく、明確に列挙していない他の要素又はかかるプロセス、方法、物品、若しくは機器に固有でない他の要素を含んでも良い。「〜を備える(comprises...a)」、「〜を有する(has...a)」、「〜を含む(includes...a)」、「〜を含有する(contains...a)」が前に来る要素は、より多くの制約を受けることなしに、その要素を備え、有し、含み、含有するプロセス、方法、物品、又は機器において、同一の要素が更に存在することを排除するものではない。用語「a」及び「an」は、本明細書で明示的に別段の定めをした場合を除き1つ又は複数として定義する。用語「ほぼ(substantially)」、「事実上(essentially)」、「おおよそ(approximately)」、「約(about)」、又はそれらの他の任意の変型は、当業者なら理解するように近いものとして定義し、非限定的な一実施形態では、この用語は10%以内、別の実施形態では5%以内、別の実施形態では1%以内、別の実施形態では0.5%以内であると定義される。本明細書で使用するとき、「結合される(coupled)」という用語は、必ずしも直接的にではなく、且つ必ずしも機械的にではないが接続されているものとして定義する。特定の方法で「構成される(configured)」装置又は構造は、少なくともその方法で構成されるが、列挙されていない方法で構成することもできる。
【0101】
一部の実施形態が、マイクロプロセッサ、デジタル信号プロセッサ、特注プロセッサ、書替え可能ゲートアレイ(FPGA:field programmable gate array)などの、1個又は複数の汎用プロセッサ若しくは専用プロセッサ(又は「処理装置」)、並びに本明細書に記載の方法及び/又は機器の機能の一部、大部分、若しくは全てを特定の非プロセッサ回路と共に実施するためにその1個又は複数のプロセッサを制御する、記憶された固有のプログラム命令(ソフトウェア及びファームウェアの両方を含む)から成り得ることが理解されよう。或いは一部の又は全ての機能を、記憶されたプログラム命令を有しない状態機械によって、又は1つ若しくは複数の特定用途向け集積回路(ASIC:application specific integrated circuit)内に実装することができ、各機能又は機能の幾つかの一部の組合せはカスタムロジックとして実装される。当然ながら、この2つの手法の組合せを使用することもできる。
【0102】
更に、本明細書に記載し権利を主張する方法を実行するように(例えばプロセッサを含む)コンピュータをプログラムするためのコンピュータ可読コードが記憶された、コンピュータ可読記憶媒体として一実施形態を実施することができる。そのようなコンピュータ可読記憶媒体の例には、これだけに限定されないが、ハードディスク、CD−ROM、光学記憶装置、磁気記憶装置、ROM(読取専用メモリ(Read Only Memory))、PROM(プログラム可能読取専用メモリ(Programmable Read Only Memory))、EPROM(消去可能プログラム可能読取専用メモリ(Erasable Programmable Read Only Memory))、EEPROM(電気的消去可能プログラム可能読取専用メモリ(Electrically Erasable Programmable Read Only Memory))、及びフラッシュメモリが含まれる。更に、例えば可用時間、最新技術、及び経済的配慮によって動機付けられる、場合によってはかなりの労力及び多くの設計上の選択があったとしても、本明細書に開示した概念及び原理によって導かれるとき、当業者はそうしたソフトウェア命令、プログラム、及びICを最小限の実験で容易に作り出せることが予想される。
【0103】
本開示の要約は、技術的開示の性質を読者がすぐに確認できるようにするために提供する。要約は、特許請求の範囲又はその意味を解釈若しくは限定するために使用されないという理解の下で提出する。更に上記の詳細な説明では、本開示を簡素化するために様々な実施形態で様々な機能をまとめていることが分かる。この開示方法は、権利を主張する実施形態が、それぞれの請求項の中で明確に列挙するよりも多くの特徴を必要とするという意図を反映するものだと解釈すべきでない。むしろ、以下の請求項が反映するように、本発明の主題は開示した単一の実施形態の全ての特徴よりも少ない特徴にある。このため、各請求項が別々に権利を主張される主題として独立した状態で、以下の特許請求の範囲を詳細な説明の中に援用する。