【解決手段】動画像復号装置は、変換ユニット毎に変換係数を逆変換する画像復号装置であって、復号した変換係数に対してスケーリングする第1のスケーリング部と前記変換係数に対して逆セカンダリ変換を適用する第2の変換部と、前記第2の変換部による変換後の変換係数に対してスケーリングする第2のスケーリング部と、前記第1のスケーリング部もしくは第2のスケーリング部によるスケーリング後の変換係数に対して逆コア変換を適用する第1の変換部とを備えていることを特徴とする。
上述の第1のスケーリング部は、セカンダリ変換が有効な場合に、変換ユニットのサイズを用いるシフト値、それ以外の場合に、変換ユニットのサイズを用いない所定の値のシフト値を導出し、量子化パラメータを用いるスケールファクタを導出し、
上記シフト値と上記スケールファクタを用いて変換係数に対して第1のスケーリングを行い、
上記第2のスケーリング部は、セカンダリ変換が有効な場合に、変換ユニットのサイズを用いない所定の値のシフト値、それ以外の場合に、変換ユニットのサイズを用いるシフト値を導出し、
量子化マトリックスが有効な場合には、量子化マトリックスを用いたスケールファクタ、それ以外の場合に、所定の値のスケールファクタを導出し、
上記スケールファクタを用いて、変換係数に対して第2のスケーリングを行うことを特徴とする請求項2に記載の画像復号装置。
【発明を実施するための形態】
【0017】
〔実施形態1〕
以下、図面を参照しながら本発明の実施形態について説明する。
【0018】
図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
【0019】
画像伝送システム1は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム1は、動画像符号化装置(画像符号化装置)11、ネットワーク21、動画像復号装置(画像復号装置)31、及び画像表示装置(画像表示装置)41を含んで構成される。
【0020】
動画像符号化装置11には画像Tが入力される。
【0021】
ネットワーク21は、動画像符号化装置11が生成した符号化ストリームTeを動画像復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であってもよい。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blue-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されてもよい。
【0022】
動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1又は複数の復号画像Tdを生成する。
【0023】
画像表示装置41は、動画像復号装置31が生成した1又は複数の復号画像Tdの全部又は一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
【0024】
<演算子>
本明細書で用いる演算子を以下に記載する。
【0025】
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、|=はOR代入演算子であり、||は論理和を示す。
【0026】
x?y:zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
【0027】
Clip3(a,b,c) は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
【0028】
abs(a)はaの絶対値を返す関数である。
【0029】
Int(a)はaの整数値を返す関数である。
【0030】
floor(a)はa以下の最小の整数を返す関数である。
【0031】
ceil(a)はa以上の最大の整数を返す関数である。
【0032】
a/dはdによるaの除算(小数点以下切り捨て)を表す。
【0033】
<符号化ストリームTeの構造>
本実施形態に係る動画像符号化装置11及び動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
【0034】
図4は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、及びシーケンスを構成する複数のピクチャを含む。
図4には、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図が示されている。
【0035】
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、
図4の符号化ビデオシーケンスに示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
【0036】
ビデオパラメータセットVPSは、複数のレイヤから構成されている画像において、複数の画像に共通する符号化パラメータの集合及び画像に含まれる複数のレイヤ及び個々のレイヤに関連する符号化パラメータの集合が規定されている。
【0037】
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
【0038】
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)及びスケーリングリスト(量子化マトリックス)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
【0039】
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、
図4の符号化ピクチャに示すように、スライス0〜スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)。
【0040】
なお、以下、スライス0〜スライスNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
【0041】
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスは、
図4の符号化スライスに示すように、スライスヘッダ、及び、スライスデータを含んでいる。
【0042】
スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。
【0043】
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライス等が挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
【0044】
なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいてもよい。
【0045】
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータは、
図4の符号化スライスヘッダに示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
【0046】
(符号化ツリーユニット)
図4の符号化ツリーユニットには、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
【0047】
CTは、CT情報として、QT分割を行うか否かを示すQT分割フラグ(cu_split_flag)、MT分割の有無を示すMT分割フラグ(split_mt_flag)、MT分割の分割方向を示すMT分割方向(split_mt_dir)、MT分割の分割タイプを示すMT分割タイプ(split_mt_type)を含む。cu_split_flag、split_mt_flag、split_mt_dir、split_mt_type は符号化ノード毎に伝送される。
【0048】
cu_split_flagが1の場合、符号化ノードは4つの符号化ノードに分割される(
図5のQT)。
【0049】
cu_split_flagが0の時、split_mt_flagが0の場合に符号化ノードは分割されず1つのCUをノードとして持つ(
図5の分割なし)。CUは符号化ノードの末端ノードであり、これ以上分割されない。CUは、符号化処理の基本的な単位となる。
【0050】
split_mt_flagが1の場合に符号化ノードは以下のようにMT分割される。split_mt_typeが0の時、split_mt_dirが1の場合に符号化ノードは2つの符号化ノードに水平分割され(
図5のBT(水平分割))、split_mt_dirが0の場合に符号化ノードは2つの符号化ノードに垂直分割される(
図5のBT(垂直分割))。また、split_mt_typeが1の時、split_mt_dirが1の場合に符号化ノードは3つの符号化ノードに水平分割され(
図5のTT(水平分割))、split_mt_dirが0の場合に符号化ノードは3つの符号化ノードに垂直分割される(
図5のTT(垂直分割))。これらを
図5のCT情報に示す。
【0051】
また、CTUのサイズが64x64画素の場合には、CUのサイズは、64x64画素、64x32画素、32x64画素、32x32画素、64x16画素、16x64画素、32x16画素、16x32画素、16x16画素、64x8画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、8x8画素、64x4画素、4x64画素、32x4画素、4x32画素、16x4画素、4x16画素、8x4画素、4x8画素、及び、4x4画素の何れかをとり得る。
【0052】
(符号化ユニット)
図4の符号化ユニットに示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
【0053】
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。例えばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
【0054】
予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
【0055】
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位でエントロピー符号化してもよい。
【0056】
(予測パラメータ)
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
【0057】
以下、イントラ予測の予測パラメータについて説明する。イントラ予測パラメータは、輝度予測モードIntraPredModeY、色差予測モードIntraPredModeCから構成される。
図6は、イントラ予測モードの種類(モード番号)を示す概略図である。
図6に示すように、イントラ予測モードは、例えば67種類(0〜66)存在する。例えば、プレーナ予測(0)、DC予測(1)、Angular予測(2〜66)である。さらに、色差ではLMモード(67〜72)を追加してもよい。
【0058】
イントラ予測パラメータを導出するためのシンタックス要素には、例えば、intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_mpm_remainder等がある。
【0059】
(MPM)
intra_luma_mpm_flagは、対象ブロックのIntraPredModeYとMPM(Most Probable Mode)とが一致するか否かを示すフラグである。MPMは、MPM候補リストmpmCandList[]に含まれる予測モードである。MPM候補リストは、隣接ブロックのイントラ予測モード及び所定のイントラ予測モードから、対象ブロックに適用される確率が高いと推定される候補を格納したリストである。intra_luma_mpm_flagが1の場合、MPM候補リストとインデックスintra_luma_mpm_idxを用いて、対象ブロックのIntraPredModeYを導出する。
【0060】
IntraPredModeY = mpmCandList[intra_luma_mpm_idx]
(REM)
intra_luma_mpm_flagが0の場合、イントラ予測モード全体からMPM候補リストに含まれるイントラ予測モードを除いた残りのモードRemIntraPredModeからイントラ予測モードを選択する。RemIntraPredModeとして選択可能なイントラ予測モードは、「非MPM」又は「REM」と呼ばれる。RemIntraPredModeはintra_luma_mpm_remainderを用いて導出される。
【0061】
(動画像復号装置の構成)
本実施形態に係る動画像復号装置31(
図7)の構成について説明する。
【0062】
動画像復号装置31は、エントロピー復号部301、パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312を含んで構成される。なお、後述の動画像符号化装置11に合わせ、動画像復号装置31にループフィルタ305が含まれない構成もある。
【0063】
パラメータ復号部302は、さらに、ヘッダ復号部3020、CT情報復号部3021、及びCU復号部3022(予測モード復号部)を備えており、CU復号部3022はTU復号部3024を備えている。これらを総称して復号モジュールと呼んでもよい。ヘッダ復号部3020は、符号化データからVPS、SPS、PPS等のパラメータセット情報、スライスヘッダ(スライス情報)を復号する。CT情報復号部3021は、符号化データからCTを復号する。CU復号部3022は符号化データからCUを復号する。TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号する。
【0064】
TU復号部3024は、符号化データからセカンダリ変換の利用及び変換基底を示す値stIdxを復号する。具体的には、TU復号部3024は、CUの幅と高さが4以上であり、且つ、予測モードがイントラモードであり、且つ、CU内の変換係数の数numSigCoeffが所定の数THSt(例えば、SINGLE_TREEでは2、それ以外は1)より大きい場合にstIdxを復号する。なお、stIdxは0の場合、セカンダリ変換の非適用を示し、1の場合、セカンダリ変換基底のセット(ペア)のうち一方の変換を示し、2の場合、上記ペアのうち他方の変換を示す。
【0065】
また、パラメータ復号部302は、図示しないインター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
【0066】
また、以降では処理の単位としてCTU、CUを使用した例を記載するが、この例に限らず、サブCU単位で処理をしてもよい。あるいはCTU、CUをブロック、サブCUをサブブロックと読み替え、ブロックあるいはサブブロック単位の処理としてもよい。
【0067】
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。エントロピー符号化には、シンタックス要素の種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックス要素を可変長符号化する方式と、予め定められた表、あるいは計算式を用いてシンタックス要素を可変長符号化する方式がある。前者のCABAC(Context Adaptive Binary Arithmetic Coding)は、符号化あるいは復号したピクチャ(スライス)毎に更新した確率モデルをメモリに格納する。そして、Pピクチャ、あるいはBピクチャのコンテキストの初期状態として、メモリに格納された確率モデルの中から、同じスライスタイプ、同じスライスレベルの量子化パラメータを使用したピクチャの確率モデルを設定する。この初期状態を符号化、復号処理に使用する。分離された符号には、予測画像を生成するための予測情報及び、差分画像を生成するための予測誤差等がある。
【0068】
エントロピー復号部301は、分離した符号をパラメータ復号部302に出力する。分離した符号とは、例えば、予測モードpredModeである。どの符号を復号するかの制御は、パラメータ復号部302の指示に基づいて行われる。
【0069】
(基本フロー)
図8、動画像復号装置31の概略的動作を説明するフローチャートである。
【0070】
(S1100:パラメータセット情報復号)ヘッダ復号部3020は、符号化データからVPS、SPS、PPS等のパラメータセット情報を復号する。
【0071】
(S1200:スライス情報復号)ヘッダ復号部3020は、符号化データからスライスヘッダ(スライス情報)を復号する。
【0072】
以下、動画像復号装置31は、対象ピクチャに含まれる各CTUについて、S1300からS5000の処理を繰り返すことにより各CTUの復号画像を導出する。
【0073】
(S1300:CTU情報復号)CT情報復号部3021は、符号化データからCTUを復号する。
【0074】
(S1400:CT情報復号)CT情報復号部3021は、符号化データからCTを復号する。
【0075】
(S1500:CU復号)CU復号部3022はS1510、S1520を実施して、符号化データからCUを復号する。
【0076】
(S1510:CU情報復号)CU復号部3022は、符号化データからCU情報、予測情報、TU分割フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を復号する。
【0077】
(S1520:TU情報復号)TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値である。
【0078】
(S2000:予測画像生成)予測画像生成部308は、対象CUに含まれる各ブロックについて、予測情報に基づいて予測画像を生成する。
【0079】
(S3000:逆量子化・逆変換)逆量子化・逆変換部311は、対象CUに含まれる各TUについ
て、逆量子化・逆変換処理を実行する。
【0080】
(S4000:復号画像生成)加算部312は、予測画像生成部308より供給される予測画像と、逆量子化・逆変換部311より供給される予測誤差とを加算することによって、対象CUの復号画像を生成する。
【0081】
(S5000:ループフィルタ)ループフィルタ305は、復号画像にデブロッキングフィルタ、SAO、ALF等のループフィルタをかけ、復号画像を生成する。
【0082】
(量子化マトリックス)
量子化マトリックスは、変換係数の位置ごとに異なる量子化・逆量子化を行う方法、及び、量子化に用いるマトリックスを意味する。量子化・逆量子化はスケーリングとも呼ばれ、量子化マトリックスは、スケーリングリスト、スケーリングファクタとも呼ばれる。量子化マトリックスを用いることで、高周波数成分をより小さく(0になりやすく)して、主観画質の低下を抑えながら符号化レートを削減することができる。また、高周波数成分と低周波数成分の比率や、水平成分、垂直成分、斜め成分の比率を調整して画質を調整することができる。
【0083】
パラメータ復号部302は、図示しないスケーリングリスト復号部を含んで構成される。
【0084】
図18は、量子化マトリックス(スケーリングリスト、スケーリングファクター)の例を示す。ここでは8x8の変換係数配列d[x][y]用のScalingFactor2[8][8][0][x][y]、x=0..7、y=0..7の例を示す。
【0085】
図19は、スケーリングリストのシンタックス構成を示す。
【0086】
スケーリングリスト復号部は、符号化データから、量子化マトリックスを用いるか否かを示すscaling_list_enabled_flagを復号する。scaling_list_enabled_flagが1の場合には、後述するスケーリング処理においてスケーリングリストを用いる。
【0087】
スケーリングリスト復号部は、符号化データから、scaling_list_data()と呼ぶスケーリングリスト情報を復号し、量子化マトリックスを導出する。また、スケーリングリスト復号部は、符号化データから復号せずに、予め定められたマトリックス(デフォルトマトリックス)を用いてもよい。
【0088】
スケーリングリスト復号部は、サイズsizeId、マトリックス識別子matrixIdで表されるスケーリングリストScalingList[sizeId][matrixId][i]を復号する。sizeId=0,1,2,3,4,5,6は各々、1x1, 2x2, 4x4, 8x8, 16x16, 32x32, 64x64に対応する。matrixId=0, 1, 2, 3, 4, 5は各々、イントラ予測の輝度(cIdx==0)、イントラ予測のCb(cIdx==1) 、イントラ予測のCr(cIdx==2) 、インター予測の輝度(cIdx==0)、インター予測のCb(cIdx==1) 、インター予測のCr(cIdx==2)に対応してもよい。例えば、スケーリングリスト復号部は、スケーリングリストを予測するか復号するかを示すフラグscaling_list_pred_mode_flag[sizeId][matrixId]を復号する。スケーリングリストを予測する場合、スケーリングリストの差分値scaling_list_dc_coef_minus8[sizeId-4][matrixId]を復号し、スケーリングリストを復号する場合、スケーリングリストの係数値scaling_list_dc_coef_minus8[sizeId-4][matrixId]を復号してもよい。
【0089】
スケーリングリスト復号部は、復号したシンタックス値から、nextCoefを導出し、sizeId、matrixId、及び変換係数の配列d[][]中の位置iごとの、ScalingList[sizeId][matrixId][i]を導出する。
【0090】
nextCoef = scaling_list_dc_coef_minus8[sizeId-4][matrixId] + 8
nextCoef = (nextCoef + scaling_list_delta_coef + 256) % 256
ScalingList[sizeId][matrixId][i] = nextCoef
また、スケーリングリスト復号部は、scaling_list_pred_mode_flagが1の場合、以下のようにrefMatrixIdで参照される既存のスケーリングリストを参照して、予測してもよい。
【0091】
refMatrixId=matrixId - scaling_list_pred_matrix_id_delta[sizeId][matrixId]
ScalingList[sizeId][matrixId][i] = ScalingList[sizeId][refMatrixId][i]
ここで、i = 0..Min(63, (1 << (sizeId << 1)) - 1)
スケーリングリスト復号部は、導出したScalingList[sizeId][matrixId][i]を用いて、さらに、sizeId、matrixId、及び変換係数の配列d[x][y]中の位置(x,y)ごとの、ScalingFactor[sizeId][matrixId][x][y]を導出してもよい。例えば4x4の場合、以下で導出する。
【0092】
ScalingFactor[2][matrixId][x][y] = ScalingList[2][matrixId][i]
x = DiagScanOrder[2][2][i][0]
y = DiagScanOrder[2][2][i][1]
ここで、i = 0..15, matrixId = 0..5である。
【0093】
例えば、8x8の場合、以下で導出する。
【0094】
ScalingFactor[3][matrixId][x][y] = ScalingList[3][matrixId][i]
x = DiagScanOrder[3][3][i][0]
y = DiagScanOrder[3][3][i][1]
ここで、i = 0..63, matrixId = 0..5である。
【0095】
DiagScanOrder[sizeId][sizeId][i][j]は、幅が1<<sizeId、高さが1<<sizeIdのブロック(配列)におけるスキャン順を示す配列である。
【0096】
さらに、スケーリングリスト復号部は、正方形以外の変換係数ブロック(TU)のスケーリングに用いる量子化マトリックスScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y]を以下の式で導出する。sizeIdW、sizeIdHは、変換係数ブロックの幅(1<<sizeIdW)、高さ(1<<sizeIdH)を示す。
【0097】
ScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y] = ScalingFactor[sizeId][matrixId][x * ratioW][y * ratioH]
sizeId = max( sizeIdW, sizeIdH )
ratioW = ( 1 << sizeId ) / ( 1 << sizeIdW )
ratioH = ( 1 << sizeId ) / ( 1 << sizeIdH )
ここで、sizeIdW = 0..6, sizeIdH = 0..6, matrixId = 0..5, x = 0..(1<<sizeIdW)-1, y = 0..(1<<sizeIdH)-1である。なお、(sizeIdW, sizeIdH) = (0, 0)は使用しない。
【0098】
また、パラメータ復号部302は、図示しないインター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、図示しないインター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
【0099】
(イントラ予測パラメータ復号部304の構成)
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測
パラメータ、例えば、イントラ予測モードIntraPredModeを復号する。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出してもよい。
【0100】
図9は、パラメータ復号部302のイントラ予測パラメータ復号部304の構成を示す概略図である。
図9に示すように、イントラ予測パラメータ復号部304は、パラメータ復号制御部3041と、輝度イントラ予測パラメータ復号部3042と、色差イントラ予測パラメータ復号部3043とを含んで構成される。
【0101】
パラメータ復号制御部3041は、エントロピー復号部301にシンタックス要素の復号を指示し、エントロピー復号部301からシンタックス要素を受け取る。その中のintra_luma_mpm_flagが1の場合、パラメータ復号制御部3041は、輝度イントラ予測パラメータ復号部3042内のMPMパラメータ復号部30422にintra_luma_mpm_idxを出力する。また、intra_luma_mpm_flagが0の場合、パラメータ復号制御部3041は、輝度イントラ予測パラメータ復号部3042の非MPMパラメータ復号部30423にintra_luma_mpm_remainderを出力する。また、パラメータ復号制御部3041は、色差イントラ予測パラメータ復号部3043に色差のイントラ予測パラメータのシンタックス要素を出力する。
【0102】
輝度イントラ予測パラメータ復号部3042は、MPM候補リスト導出部30421と、MPMパラメータ復号部30422と、非MPMパラメータ復号部30423(復号部、導出部)とを含んで構成される。
【0103】
MPMパラメータ復号部30422は、MPM候補リスト導出部30421によって導出されたmpmCandList[]とintra_luma_mpm_idxを参照して、IntraPredModeYを導出し、イントラ予測画像生成部310に出力する。
【0104】
非MPMパラメータ復号部30423は、mpmCandList[]とintra_luma_mpm_remainderからRemIntraPredModeを導出し、IntraPredModeYをイントラ予測画像生成部310に出力する。
【0105】
色差イントラ予測パラメータ復号部3043は、色差のイントラ予測パラメータのシンタックス要素からIntraPredModeCを導出し、イントラ予測画像生成部310に出力する。
【0106】
ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
【0107】
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた位置に記憶する。
【0108】
予測パラメータメモリ307は、復号対象のCTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及びエントロピー復号部301が分離したpredMode等を記憶する。
【0109】
予測画像生成部308には、predMode、予測パラメータ等が入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、predModeが示す予測モードで、予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてブロック若しくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロック
と呼ぶ)であり、予測画像を生成するために参照する領域である。
【0110】
(イントラ予測画像生成部310)
predModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと参照ピクチャメモリ306から読み出した参照画素を用いてイントラ予測を行う。
【0111】
具体的には、イントラ予測画像生成部310は、対象ピクチャ上の、対象ブロックから予め定めた範囲にある隣接ブロックを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、対象ブロックの左、左上、上、右上の隣接ブロックであり、イントラ予測モードによって参照する領域は異なる。
【0112】
イントラ予測画像生成部310は、読み出した復号画素値とIntraPredModeが示す予測モードを参照して、対象ブロックの予測画像を生成する。イントラ予測画像生成部310は生成したブロックの予測画像を加算部312に出力する。
【0113】
イントラ予測モードに基づく予測画像の生成について以下で説明する。Planar予測、DC予測、Angular予測では、予測対象ブロックに隣接(近接)する復号済みの周辺領域を参照領域Rとして設定する。そして、参照領域R上の画素を特定の方向に外挿することで予測画像を生成する。例えば、参照領域Rは、予測対象ブロックの左と上(あるいは、さらに、左上、右上、左下)を含むL字型の領域(例えば
図10の参照領域の例1の斜線の丸印の画素で示される領域)として設定してもよい。
【0114】
(予測画像生成部の詳細)
次に、
図11を用いてイントラ予測画像生成部310の構成の詳細を説明する。イントラ予測画像生成部310は、予測対象ブロック設定部3101、未フィルタ参照画像設定部3102(第1の参照画像設定部)、フィルタ済参照画像設定部3103(第2の参照画像設定部)、イントラ予測部3104、及び、予測画像補正部3105(予測画像補正部、フィルタ切替部、重み係数変更部)を備える。
【0115】
参照領域R上の各参照画素(未フィルタ参照画像)、参照画素フィルタ(第1のフィルタ)を適用して生成したフィルタ済参照画像、イントラ予測モードに基づいて、イントラ予測部3104は予測対象ブロックの仮予測画像(補正前予測画像)を生成し、予測画像補正部3105に出力する。予測画像補正部3105は、イントラ予測モードに応じて仮予測画像を修正し、予測画像(補正済予測画像)を生成し、出力する。
【0116】
以下、イントラ予測画像生成部310が備える各部について説明する。
【0117】
(予測対象ブロック設定部3101)
予測対象ブロック設定部3101は、対象CUを予測対象ブロックに設定し、予測対象ブロックに関する情報(予測対象ブロック情報)を出力する。予測対象ブロック情報には、予測対象ブロックのサイズ、位置、輝度か色差かを示すインデックスが少なくとも含まれる。
【0118】
(未フィルタ参照画像設定部3102)
未フィルタ参照画像設定部3102は、予測対象ブロックのサイズと位置に基づいて、予測対象ブロックの隣接周辺領域を参照領域Rとして設定する。続いて、参照領域R内の各画素値(未フィルタ参照画像、境界画素)に、参照ピクチャメモリ306上で対応する位置の各復号画素値をセットする。
図10の参照領域の例1に示す予測対象ブロック上辺に隣接する復号画素のラインr[x][-1]、及び、予測対象ブロック左辺に隣接する復号画素の列r[-1][y]が未フィルタ参照画像である。
【0119】
(フィルタ済参照画像設定部3103)
フィルタ済参照画像設定部3103は、イントラ予測モードに応じて、未フィルタ参照画像に参照画素フィルタ(第1のフィルタ)を適用して、参照領域R上の各位置(x,y)のフィルタ済参照画像s[x][y]を導出する。具体的には、位置(x,y)とその周辺の未フィルタ参照画像にローパスフィルタを適用し、フィルタ済参照画像(
図10の参照領域の例2)を導出する。なお、必ずしも全イントラ予測モードにローパスフィルタを適用する必要はなく、一部のイントラ予測モードに対してローパスフィルタを適用してもよい。なお、フィルタ済参照画像設定部3103において参照領域R上の未フィルタ参照画像に適用するフィルタを「参照画素フィルタ(第1のフィルタ)」と呼称するのに対し、後述の予測画像補正部3105において仮予測画像を補正するフィルタを「バウンダリフィルタ(第2のフィルタ)」と呼称する。
【0120】
(イントラ予測部3104の構成)
イントラ予測部3104は、イントラ予測モードと、未フィルタ参照画像、フィルタ済参照画素値に基づいて予測対象ブロックの仮予測画像(仮予測画素値、補正前予測画像)を生成し、予測画像補正部3105に出力する。イントラ予測部3104は、内部にPlanar予測部31041、DC予測部31042、Angular予測部31043、及びLM予測部31044を備えている。イントラ予測部3104は、イントラ予測モードに応じて特定の予測部を選択して、未フィルタ参照画像、フィルタ済参照画像を入力する。イントラ予測モードと対応する予測部との関係は次の通りである。
・Planar予測 ・・・Planar予測部31041
・DC予測 ・・・DC予測部31042
・Angular予測 ・・・Angular予測部31043
・LM予測 ・・・LM予測部31044
(Planar予測)
Planar予測部31041は、予測対象画素位置と参照画素位置との距離に応じて、複数のフィルタ済参照画像を線形加算して仮予測画像を生成し、予測画像補正部3105に出力する。
【0121】
(DC予測)
DC予測部31042は、フィルタ済参照画像s[x][y]の平均値に相当するDC予測値を導出し、DC予測値を画素値とする仮予測画像q[x][y]を出力する。
【0122】
(Angular予測)
Angular予測部31043は、イントラ予測モードの示す予測方向(参照方向)のフィルタ済参照画像s[x][y]を用いて仮予測画像q[x][y]を生成し、予測画像補正部3105に出力する。
【0123】
(LM予測)
LM予測部31044は、輝度の画素値に基づいて色差の画素値を予測する。具体的には、復号した輝度画像をもとに、線形モデルを用いて、色差画像(Cb、Cr)の予測画像を生成する方式である。LM予測の1つであるCCLM(Cross-Component Linear Model prediction)予測は、1つのブロックに対し、輝度から色差を予測するための線形モデルを使用する予測方式である。
【0124】
(予測画像補正部3105の構成)
予測画像補正部3105は、イントラ予測モードに応じて、イントラ予測部3104から出力された仮予測画像を修正する。具体的には、予測画像補正部3105は、仮予測画像の各画素に対し、参照領域Rと対象予測画素との距離に応じて、未フィルタ参照画像と仮予測画像を重み付け加算(加重平均)することで、仮予測画像を修正した予測画像(補正済予測画像)Predを導出する。なお、一部のイントラ予測モードでは、予測画像補正部3105で仮予測画
像を補正せず、イントラ予測部3104の出力をそのまま予測画像としてもよい。
【0125】
(逆量子化・逆変換部311)
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数qd[ ][ ]を逆量子化して変換係数d[ ][ ]を求める。この量子化変換係数qd[ ][ ]は、符号化処理において、予測誤差に対してDCT(Discrete Cosine Transform、離散コサイン変換)、DST(Discrete Sine Transform、離散サイン変換)等の周波数変換を行い量子化して得られる係数である。逆量子化・逆変換部311は、求めた変換係数について逆DCT、逆DST等の逆周波数変換を行い、予測誤差を算出する。逆量子化・逆変換部311は予測誤差を加算部312に出力する。
【0126】
以下、逆量子化・逆変換部311の構成例について、
図12を参照して説明する。
図12は、逆量子化・逆変換部311の構成例について示す機能ブロック図である。
図12に示すように、量子化・逆変換部311は、逆量子化部3111と、逆変換部3112とを備えている。逆量子化部3111は、TU復号部3024において復号した量子化変換係数qd[ ][ ]を逆量子化し、変換係数d[ ][ ]を導出する。逆量子化部3111は、導出した変換係数d[ ][ ]を逆変換部3112に出力する。
【0127】
逆変換部3112は、変換ユニットTU毎に、受信した変換係数d[ ][ ]を逆変換して、予測誤差r[ ][ ]を復元する。逆変換部3112は、復元された予測誤差r[ ][ ]を加算部312に出力する。
【0128】
逆変換部3112は、逆セカンダリ変換部(第2の変換部)31121と、スケーリング部31122と、逆コア変換部(第1の変換部)31123と、を備えている。
【0129】
なお、逆変換及び変換は、対になる処理であるため、変換と逆変換とを互いに置き換えて解釈してもよい。あるいは、逆変換を変換と呼ぶ場合には、変換を順変換と呼んでもよい。例えば、逆セカンダリ変換をセカンダリ変換と呼ぶ場合、セカンダリ変換は順セカンダリ変換と呼んでもよい。また、コア変換を単に変換と呼ぶ。
【0130】
(逆セカンダリ変換部31121)
逆セカンダリ変換部(第2の変換部)31121は、逆量子化の後、逆コア変換の前に、変換係数d[ ][ ]に対して逆セカンダリ変換を適用する。
【0131】
逆セカンダリ変換部31121は、逆量子化部3111から受信した変換係数d[ ][ ]を逆セカンダリ変換することにより、修正変換係数(第2の変換部による変換後の変換係数)d[ ][ ]を復元する。逆セカンダリ変換部31121は、復元された修正変換係数d[ ][ ]を逆コア変換部31123に出力する。
【0132】
逆コア変換部31123は、変換係数d[ ][ ]、又は逆セカンダリ変換部31121によって復元された修正変換係数d[ ][ ]を取得して、逆コア変換を行い予測誤差r[][]を導出する。逆コア変換部31123は、予測誤差r[][]を加算部312に出力する。
【0133】
逆セカンダリ変換部31121は、変換ユニットTU毎に所定の単位の変換係数d[ ][ ]に対して 逆セカンダリ変換を適用する。逆セカンダリ変換は、イントラCUにおいてのみ適用され、変換基底はイントラ予測モードを参照して決定される。変換基底の選択については後述する。
【0134】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例1)
以下、
図13を用いて逆セカンダリ変換部31121による逆セカンダリ変換の適用例1につい
て説明する。
図13は、本実施形態における逆セカンダリ変換の対象となる領域の一例を説明するための図である。
【0135】
逆セカンダリ変換部31121は、TUが8×8以上である場合に、TUに含まれる変換係数のうち、最低周波数成分を含むNUMSTC個以内の変換係数に対してのみ逆セカンダリ変換を適用する。
【0136】
ここで、本実施形態における逆セカンダリ変換部31121による逆セカンダリ変換の詳細を説明する前提として、まず、セカンダリ変換及び逆セカンダリ変換について説明する。
【0137】
(セカンダリ変換及び逆セカンダリ変換の説明)
セカンダリ変換は、動画像符号化装置11において、TUのコア変換(DCT2及びDST7等)後の一部又は全領域の変換係数に対して適用される。セカンダリ変換では、変換係数に残る相関を除去しエネルギーを一部の変換係数に集中させる。逆セカンダリ変換は、動画像復号装置31において、TUの一部又は全領域の変換係数に対して適用される。逆セカンダリ変換が適用された後、逆セカンダリ変換後の変換係数に対して、逆コア変換(DCT2及びDST7等)が適用される。また、TUを4x4のサブブロックに分割した場合において、左上の所定のサブブロックのみにセカンダリ変換及び逆セカンダリ変換が適用される。TUの幅W、高さHのうち、一方が4であるTUのサイズは、例えば、4×4、8×4、4×8、L×4及び4×L(Lは16以上の自然数)が挙げられる。
【0138】
セカンダリ変換及び逆セカンダリ変換では、TUのサイズ及びイントラ予測モードに応じて以下の処理を行う。以下、逆セカンダリ変換の処理を順に説明する。
【0139】
(S1:変換サイズ及び入出力サイズの設定)
逆セカンダリ変換では、TUのサイズ(幅W, 高さH)に応じて、逆セカンダリ変換のサイズ(4x4又は8x8)、出力の変換係数の数(nStOutSize)、適用する変換係数(入力の変換係数)の数nonZeroSize及び逆セカンダリ変換を適用するサブブロックの数(numStX, numStY)を導出する。4x4、8x8の逆セカンダリ変換のサイズをnStSize=4、8で示す。また、4x4、8x8の逆セカンダリ変換のサイズは、各々RST4x4、RST8x8と呼んでもよい。
【0140】
逆セカンダリ変換では、TUが所定のサイズ以上の場合、RST8x8の逆セカンダリ変換により、48の変換係数を出力する。それ以外の場合、RST4x4の逆セカンダリ変換により、16の変換係数を出力する。TUが4x4の場合、8の変換係数からRST4x4を用いて16の変換係数を導出し、TUが8x8の場合には、8の変換係数からRST8x8を用いて48の変換係数を導出する。それ以外の場合には、TUのサイズに応じて16の変換係数から16もしくは48の変換係数を出力する。
【0141】
W及びHが両方とも8以上の場合、log2StSize = 3、nStOutSize=48
上記以外の場合、log2StSize = 2、nStOutSize=16
nStSize = 1<<log2StSize
W及びHが両方とも4の場合、又は8x8の場合、nonZeroSize = 8
上記以外の場合、nonZeroSize = 16
numStX = (nTbH == 4 && nTbW > 8) ? 2 : 1
numStY = (nTbW == 4 && nTbH > 8) ? 2 : 1
(S2:1次元信号に並び替え)
逆セカンダリ変換では、TUの一部の変換係数d[][]を一度、1次元配列u[]に並び替えて処理する。具体的には、逆セカンダリ変換では、
図13の点線の矩形ブロックである領域RUによって示される対象TUの2次元の変換係数d[][]から、x = 0.. nonZeroSize-1の変換係数を参照して、u[]を導出する。xC, yCはTU上の位置であり、スキャン順を示す配列DiagS
canOrderとサブブロック中の変換係数の位置xから導出する。
【0142】
xC = (xSbIdx<<log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][0]
yC = (ySbIdx<<log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][1]
u[x] = d[ xC ][ yC ]
なお、1次元配列にコピーされる範囲を領域RUと呼ぶ。
【0143】
(S3:変換処理の適用)
逆セカンダリ変換では、長さがnonZeroSizeのu[](ベクトルF')に対して、第1種の変換基底(行列)T1を用いた変換を行い、出力として長さがnStOutSizeの一次元配列の係数v'[](ベクトルV')を導出する。
【0144】
この変換は、行列演算では以下の式によって表すことができる。
【0145】
V'=T1×F'
ここで、変換サイズが4x4の場合(RST4x4)の変換基底を第1種の変換基底T1と呼ぶ。変換サイズが8x8の場合(RST8x8)の変換基底を第2種の変換基底T2と呼ぶ。T1は16×16(16行16列)行列であって、変換は16x16行列F'と、16x1(16行1列)ベクトルF'との積として16×1(16行1列)ベクトルV'、すなわち、長さ16の係数v'[]を導出する。T2は、48×16(48行16列)行列であって、変換は48x16行列F'と、16x1ベクトルF'との積として48×1(48行1列、長さ48)ベクトルV'、すなわち、長さ48の係数v'[]を導出する。
【0146】
具体的には、逆セカンダリ変換では、イントラ予測モードIntraPredModeから導出されるセカンダリ変換のセット番号(stTrSetId)と、符号化データから復号されるセカンダリ変換の変換基底を示すstIdxと、セカンダリ変換サイズnStSize(nTrS)から、対応する変換マトリックスsecTranMatrix[][](変換基底T1 or T2)とを導出する。さらに、逆セカンダリ変換では、以下の式に示すように、変換マトリックスと一次元変数u[]との積和演算を行う。
v[i] = Clip3( CoeffMin, CoeffMax,ΣsecTransMatrix[j][i]*u[j])
ここで、Σはj=0..nonZeroSize-1までの和である。また、iは0..nStSize-1に対して処理を行う。CoeffMin、CoeffMaxは変換係数の値の範囲を示す。
【0147】
(S4:変換処理後の1次元信号の2次元配置)
逆セカンダリ変換では、変換された一次元配列の係数v'[]を再度TU内の所定の位置(例えば
図13の領域R1)に配置する。
【0148】
RST4x4の場合には、長さ16の係数v'[]を4×4サブブロックとしてTU内に配置する。得られたTUは逆コア変換される。配置方法は、イントラ予測モード(イントラ予測方向)に応じて、変更してもよい。例えば、イントラ予測方向が
図6に示す左下対角方向から左上対角方向までの間の方向(イントラ予測モードが34以下)である場合、左から右に4係数ずつ、上から下に4回繰り返し、長さ16の係数v'[]を配置する。また、イントラ予測方向が
図6に示す左上対角方向から右上対角方向までの間の方向(イントラ予測モードが35以上)である場合、上から下に4係数ずつ、左から右に4回繰り返し、長さ16の係数v'[]を配置する。これにより、コア変換前の4×4サブブロックが得られる。
【0149】
また、RST8x8の場合には、例えば、イントラ予測方向が
図6に示す左下対角方向から左上対角方向までの間の方向(イントラ予測モードが34以下)である場合、逆セカンダリ変換部は、左から右に8係数ずつ配置し、これを上から下に4回繰り返す。次に、左から右に4係数ずつ配置し、これを上から下に4回繰り返す。また、
図6に示す左上対角方向から右上対角方向までの間の方向(イントラ予測モードが35以上)である場合、逆セカンダリ
変換では、上から下に8係数ずつ配置し、これを左から右に4回繰り返す。次に、上から下に4係数ずつ配置し、これを左から右に4回繰り返す。
【0150】
図13の逆量子化後の変換残差の例は、処理S4において、変換された1次元配列の係数v'[]を配置する変換残差の例を示している。これは、処理S2において、1次元配列u[]として一部が参照される逆量子化後の変換残差の例(参照される範囲が領域RU)でもある。逆セカンダリ変換では、変換係数の配列d[][]の左上側の領域RU内に、上述の処理S3によって得られた長さがnStOutSizeの係数v'[]を配置する。
【0151】
逆セカンダリ変換では、x = 0..nStSize - 1, y = 0..nStSize - 1に対して以下の処理を行う。
【0152】
具体的には、逆セカンダリ変換では、PredModeIntra <= 34 or INTRA_LT_CCLM, INTRA_T_CCLM, or INTRA_L_CCLMの場合、以下の式を適用する。
【0153】
d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y] =
(y < 4) ? v[x+(y<<log2StSize)] : ((x < 4) ? v[32 + x + ((y - 4) << 2)] :
d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y])
それ以外の場合、逆セカンダリ変換では、以下の式を適用する。
d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y] =
(y < 4) ? v[x+(y<<log2StSize)] : ((x < 4) ? v[32 + (y - 4) + (x << 2)] : d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y])
上述の処理では、RST4×4(16×16行列)によって表される第1種の変換基底T1を保持するためのテーブルを複数個(例えばセカンダリ変換のセットの数とセカンダリインデックスstIdxの数の積、例えば8個)利用してもよい。同様に、上述の処理では、RST8×8(48×16行列)によって表される第2種の変換基底T2を保持するためのテーブルを複数個(例えば8個)利用してもよい。この場合、セカンダリ変換及び逆セカンダリ変換に必要なメモリ量は、約8Kbyte(16×16×8+48×16×8=8192byte)と巨大となっており、好適にセカンダリ変換及び逆セカンダリ変換を適用することができない。
【0154】
(逆セカンダリ変換部31121による逆セカンダリ変換の説明)
以下では、逆セカンダリ変換の対象となる変換係数の個数(上記説明のnStOutSize)がNUMSTC(NUMSTCは48未満)である例について説明する。逆セカンダリ変換部31121は、TUが8×8以上である場合に、TUに含まれる変換係数のうち、最低周波数成分を含むNUMSTC個の変換係数に対して逆セカンダリ変換を適用する。具体的には、逆セカンダリ変換部31121は、
図13の逆量子化後の変換残差の例に示す、逆量子化後の変換残差の左上側の領域RUに含まれる最低周波数成分を含むNUMSTC個の変換係数に対して逆セカンダリ変換を適用する。NUMSTCは、43個以内であればよいが、例えば、36であってもよいし、32であってもよい。
【0155】
逆セカンダリ変換部31121は、処理S1において、一つのケースとして、log2StSize=3、StSize=8、nStOutSize=NUMSTCに設定し、処理S3において、nStOutSize=NUMSTCの配列u[]を導出した上で、処理S4において、長さがnStOutSize=NUMSTCの配列uを領域に配置してもよい。
【0156】
これにより、セカンダリ変換及び逆セカンダリ変換に必要なテーブルのメモリを大幅に削減することができる。その結果、好適にセカンダリ変換及び逆セカンダリ変換を適用することができる。
【0157】
なお、セカンダリ変換部(不図示)及び逆セカンダリ変換部31121は、選択する変換係
数の位置及び個数以外は、上述の例と同様にセカンダリ変換及び逆セカンダリ変換を適用する。
【0158】
以下、逆セカンダリ変換部31121による逆セカンダリ変換の適用例1の詳細について説明する。
【0159】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例1-1)
図13の変換係数の選択例1を参照して、逆セカンダリ変換部31121による逆セカンダリ変換の適用例1について詳細に説明する。
【0160】
例えば、逆セカンダリ変換部31121は、処理S1において、一つのケースとして、log2StSize=3、StSize=8、nStOutSize=NUMSTCに設定し、処理S3において、nStOutSize=NUMSTCの配列u[]を導出した上で、処理S4において、長さがnStOutSize=NUMSTCの配列uを領域R2に配置してもよい。ここでNUMSTC=36や43としてもよい。
【0161】
この場合、まず、セカンダリ変換部は、TUが8×8以上である場合に、変換係数の選択例1の最低周波数成分を含む、3角形状の領域R2に含まれるNUMSTC個、例えば36個の変換係数を1次元ベクトルVに並び替えて、セカンダリ変換を適用し、長さ16の配列u[]を導出する。逆セカンダリ変換部31121は、u[]に量子化、逆量子化を施したu'[]に逆セカンダリ変換を適用し、係数v'[]を導出する。そして、逆セカンダリ変換部31121は、係数v'[]を並び替えて領域R2に配置する。この場合、セカンダリ変換部及び逆セカンダリ変換部31121は、RST8×8として、NUMSTC×16行列、例えば36×16行列によって表される第2種の変換基底T2を適用する。領域RUのうち領域R2に含まれない変換係数は保持しておいてもよいし、ゼロアウトしてもよい。
【0162】
これにより、セカンダリ変換及び逆セカンダリ変換に必要なテーブルのメモリは、約6.7Kbyte(16×16×8+36×16×8=6656byte)となり、当該メモリを大幅に(ここでは約20%)削減することができる。その結果、好適にセカンダリ変換及び逆セカンダリ変換を適用することができる。
【0163】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例1-2)
図13の変換係数の選択例2及び3を参照して、逆セカンダリ変換部31121による逆セカンダリ変換の適用例2について適用例1との相違点のみ説明する。
【0164】
図13の変換係数の選択例2に示すように、逆セカンダリ変換部31121は、NUMSTC=32とし、処理S4において、長さがnStOutSize=NUMSTCの一次元配列の係数v'[]を領域R3に配置してもよい。
PredModeIntra <= 34 or INTRA_LT_CCLM, INTRA_T_CCLM, or INTRA_L_CCLMの場合、以下を適用する。
d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y] = v[x+(y<<log2StSize)]
それ以外の場合、以下を適用する。
d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y] =
(y < 4) ? v[x+(y<<log2StSize)] : ((x < 4) ? v[32 + (y - 4) + (x << 2)] : d[(xSbIdx<<log2StSize)+x][(ySbIdx<<log2StSize)+y])
また、
図13の変換係数の選択例3に示すように、逆セカンダリ変換部31121は、NUMSTC=32とし、処理S4において、長さがnStOutSize=NUMSTCの一次元配列の係数v'[]を領域R4に配置してもよい。
【0165】
適用例2では、変換の対象領域は矩形(最低周波数成分を含む、8×4領域R3又は4×8領域R4)になる。そして変換係数の個数NUMSTCが32に設定される。この場合、セカンダリ変
換部及び逆セカンダリ変換部31121は、RST8×8として32×16行列によって表される第2種の変換基底T2を適用する。
【0166】
これにより、セカンダリ変換及び逆セカンダリ変換に必要なテーブルのメモリは、約6.1Kbyte(16×16×8+32×16×8=6144byte)となり、当該メモリを大幅に(ここでは約25%)削減することができる。その結果、好適にセカンダリ変換及び逆セカンダリ変換を適用することができる。
【0167】
逆セカンダリ変換部31121は、条件に応じて、
図13の変換係数の選択例2に示す8×4領域R3、及び、
図13の変換係数の選択例3に示す4×8領域R4のうち、何れに対して逆セカンダリ変換を適用するのかを決定してもよい。
【0168】
例えば、逆セカンダリ変換部31121は、TUの形状に応じて、領域R3及びR4のうち、何れに対して逆セカンダリ変換を適用するのかを決定してもよい。より具体的には、逆セカンダリ変換部31121は、TUの形状がW≧Hである場合に、領域R3に対して逆セカンダリ変換を適用するように決定してもよい。また、逆セカンダリ変換部31121は、TUの形状がW<Hである場合に、領域R4に対して逆セカンダリ変換を適用するように決定してもよい。
【0169】
また、逆セカンダリ変換部31121は、イントラ予測モードに応じて、領域R3及びR4のうち、何れに対して逆セカンダリ変換を適用するのかを決定してもよい。より具体的には、逆セカンダリ変換部31121は、
図6に示す左上対角方向から右上対角方向までの間の方向(イントラ予測モードが35以上)である場合に、領域R3に対して逆セカンダリ変換を適用するように決定してもよい。また、逆セカンダリ変換部31121は、
図6に示す左下対角方向から左上対角方向までの間の方向(イントラ予測モードが34以下)である場合に、領域R4に対して逆セカンダリ変換を適用するように決定してもよい。
【0170】
セカンダリ変換部は、上述の逆セカンダリ変換部31121と同様の方法によって、係数v'[]を(ベクトルVを設定する)を領域R3及び領域R4の何れに配置するかを決定してもよい。
【0171】
このように、条件に応じて、領域R3及び領域R4のうち、何れの領域に対してセカンダリ変換及び逆セカンダリ変換を適用するのかを決定することにより、最低周波数成分を含む領域に含まれる変換係数を好適に選択することができる。その結果、より好適にセカンダリ変換及び逆セカンダリ変換を適用することができる。
【0172】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例2)
以下、
図14を用いて逆セカンダリ変換部31121による逆セカンダリ変換の適用例2について説明する。
図14は、本実施形態における逆セカンダリ変換部31121による逆セカンダリ変換の一例を説明するための図である。
【0173】
逆セカンダリ変換部31121は、TUが8×8未満である場合に適用される第1種の変換基底T1、及び、TUが8×8以上である場合に適用される第2種の変換基底T2の何れかを用いて逆セカンダリ変換を行う。また、逆セカンダリ変換部31121は、第1種の変換基底T1を、第2種の変換基底T2から導出する。
【0174】
例えば、
図14に示す例では、逆セカンダリ変換部31121は、
図14のRST8×8の例に示すように、48×16行列によって表される第2種の変換基底T2から、4行おきに4×16の4つの行列T1a、T1b、T1c及びT1dを抽出する。続いて、逆セカンダリ変換部31121は、
図14のRST4×4の例に示すように、抽出したこれらの行列から16×16行列によって表される第1種の変換基底T1を導出する。
【0175】
上述の構成によれば、RST8×8として適用する48×16行列等を保持するためのテーブルがあればよく、RST4×4として適用する16×16行列を保持するためのテーブルを必要としない。そのため、逆セカンダリ変換に必要なテーブルのメモリは、約6.1Kbyte(48×16×8=6144byte)となり、当該メモリを大幅に(ここでは約25%)削減することができる。その結果、好適に逆セカンダリ変換を適用することができる。
【0176】
なお、セカンダリ変換部においても、RST8×8として適用する48×16行列から、RST4×4として適用する16×16行列を上述の逆セカンダリ変換部31121と同様の方法によって、導出することができる。
【0177】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例3)
逆セカンダリ変換部31121は、逆セカンダリ変換後の各係数の1次元配列のベクトル(1次元ベクトル)V'を2次元配列のベクトル(2次元配列)d[]に並べ替える(変換する)処理において、イントラ予測をする際に所定の方向の画素を参照するか否かに応じて、並べ替える(変換する)方法を切り替える。また、また、上述の所定の方向にはCCLM予測が参照する画素の方向が含まれる。
【0178】
一例として、逆セカンダリ変換部31121は、逆セカンダリ変換によって導出される1次元ベクトルV'を、
図13の逆量子化後の変換残差の例に示す変換残差の左上側の領域RU内に2次元配列d[]に並び替えて配置する。
【0179】
まず、所定の条件(If IntraPredMode is less than or equal to 34, or equal to INTRA_LT_CCLM, INTRA_L_CCLM)を満たす場合における上述の逆セカンダリ変換部31121による配置処理について説明する。この場合、逆セカンダリ変換部31121は、1次元ベクトルV'を以下の式に従って2次元配列d[][]に配置する。
【0180】
次に、所定の条件を満たさない場合(If IntraPredMode is more than 35, or equal to INTRA_T_CCLMである場合)における逆セカンダリ変換部31121による配置処理について説明する。この場合、逆セカンダリ変換部31121は、1次元ベクトルV'を以下の式に従って2次元配列d[]に配置する。
【0181】
if (IntraPredMode<=34 || IntraPredMode==INTRA_LT_CCLM || IntraPredMode==INTRA_L_CCLM)
d[x][y] = v'[x+(y<<log2(RW))]
else // if (IntraPredMode>34 || IntraPredMode==INTRA_T_CCLM)
d[x][y] = v'[y+(x<<log2(RH))]
ここで、RW及びRHは領域R2、R3及びR4における幅及び高さ(例えばnStSize)である。INTRA_LT_CCLM、INTRA_L_CCLM及びINTRA_T_CCLMはCCLM予測モードを表す。CCLM予測モードは、各々、対象ブロックの左及び上の画素を参照して予測パラメータ(スケーリング係数及びオフセット)を導出するモード、対象ブロックの左の画素を参照して予測パラメータを導出するモード、並びに、対象ブロックの上の画素を参照して予測パラメータを導出するモードである。
【0182】
したがって、所定の条件を満たす場合には、CCLM予測モードは、対象ブロックの左側ブロックの画素を参照する予測モードであり、2次元配列d[][]に1次元ベクトルV'を左から右に、上から下に配置する。そうでない場合には、CCLM予測モードは、対象ブロックの左側ブロックの画素を参照しない予測モードであり、2次元配列d[][]に1次元ベクトルV'を上から下に、左から右に配置する。
【0183】
逆セカンダリ変換部31121は、逆セカンダリ変換後の1次元ベクトルV'を2次元配列d[][]
に並べ替える処理において、イントラ予測において所定の方向の画素を参照するか否かに応じて、並べ替える(変換する)方法を切り替える。また、上述の所定の方向にはCCLM予測が参照する画素の方向が含まれる。これにより、1次元ベクトルV'を、2次元配列d[][]に並び替えて上述の領域RU内等に配置する際に、当該1次元ベクトルV'をより好適に配置することができる。その結果、より好適に逆セカンダリ変換を適用することができる。
【0184】
(スケーリング部31122)
スケーリング部31122は、逆セカンダリ変換部31121による変換後の係数(変換係数)に対して係数単位の重みを用いてスケーリングする。
【0185】
本実施形態におけるスケーリング部31122によるスケーリングの詳細を説明する前提として、まず、通常適用されるスケーリングについて説明する。
【0186】
(スケーリングの説明)
通常のスケーリングは、逆量子化と共に(同時に)、量子化マトリックスを用いて変換係数をスケーリングする。しかし、量子化マトリックスは、コア変換係数に対応するため、セカンダリ変換の係数をスケーリングするのは適切ではない。
【0187】
(スケーリング部31122によるスケーリングの説明)
本実施形態におけるスケーリング部31122は、逆量子化後の係数を逆セカンダリ変換部31121によって変換後の係数(変換係数)をスケーリングする。これにより、量子化マトリックスの各値が、逆セカンダリ変換後の係数、すなわち、コア変換係数に対応することになるため、適切にスケーリングすることができる。結果として、逆セカンダリ変換を好適に適用することができる。
【0188】
なお、スケーリング部31122は、スケーリングする際に、右シフト量を減らしてもよい。これにより、スケーリングする際の計算の精度を保つことができる。
【0189】
(スケーリング部を2つ有する構成)
逆セカンダリ変換を行う動画像復号装置においては、逆セカンダリ変換部31121の前に適用するスケーリング部と、逆セカンダリ変換部31121の後に適用するスケーリング部の2つのスケーリング部を備えてもよい。逆セカンダリ変換部31121によって変換後の係数に対してスケーリングを行う係数スケーリング部31122は、以下の構成では、第2スケーリング部31112として説明される。
【0190】
<逆量子化・逆変換部311の構成例1>
図20は、本実施形態の逆量子化・逆変換部311の構成を示すブロック図である。逆量子化・逆変換部311は、第1スケーリング部31111、逆セカンダリ変換部31121、第2スケーリング部31112(スケーリング部31122)、逆コア変換部31123から構成される。
【0191】
図21は、本実施形態の逆量子化・逆変換部311の概略処理を示すフローチャートである。
【0192】
S100:第1スケーリング部31111は、変換係数に第1のスケーリングを行う。第1スケーリング部31111は、後述の量子化パラメータスケールファクタ導出を含む
S111:セカンダリ変換が有効であるか否かを判定する。
【0193】
S112:セカンダリ変換が有効である場合、逆セカンダリ変換を行う。
【0194】
S120:セカンダリ変換が有効ではあるか否かによらず、第2のスケーリングを行う。第
2スケーリング部31112は、後述の量子化マトリックススケールファクタ導出を含む
S130:逆コア変換を行う。
【0195】
stIdx!=0の場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を逆セカンダリ変換部31121に伝達する。逆セカンダリ変換部31121は変換係数に第2の変換(逆セカンダリ変換)を行い、変換後の変換係数d[][]を第2スケーリング部31112に出力する。第2スケーリング部31112は入力された変換係数d[][]に第2のスケーリングを行い、逆コア変換部31123に伝達する。逆コア変換部31123は、第2のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0196】
stIdx==0の場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を第2スケーリング部31112に出力する。第2スケーリング部31112は入力された変換係数d[][]に第2のスケーリングを行い、逆コア変換部31123に伝達する。逆コア変換部31123は、第2のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0197】
図22は、本実施形態の逆量子化・逆変換部311の詳細処理を示すフローチャートである。
【0198】
第1スケーリング部31111は、TU復号部が復号した変換係数に対して、量子化係数qPとTUのサイズ(nTbW, nTbH)に応じて以下のスケーリングを行う。
【0199】
S101:量子化パラメータ設定(図示せず)
第1スケーリング部31111は、色コンポーネントcIdxに応じて、量子化パラメータqPを設定する。
【0200】
qP = QP_Y (cIdx == 0)
qP = QP_Cb (cIdx == 1)
qP = QP_Cr (cIdx == 2)
S102:第1シフト値導出
S102A:TUサイズ依存シフト値導出
第1スケーリング部31111は、セカンダリ変換がオンの場合(stIdx != 0)には、TUサイズに依存したシフト値を導出する。
【0201】
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2) - 5 + dep_quant_enabled_flag 式(A−1A)
bdOffset = (1 << bdShift) >> 1
なお、bdShiftは、変換に関するシフト値であり、TUサイズと形状に応じて変換前後でのエネルギーの変化を整合させるための値である。ここでrectNormは、TU形状に応じた補正項である。第1スケーリング部31111は、以下の式で導出する。
【0202】
rectNonTsFlag = (((Log2(nTbW) + Log2(nTbH)) & 1) == 1 &&
transform_skip_flag[xTbY][yTbY] == 0)
rectNorm = rectNonTsFlag ? 181 : 1
つまり、TUの形状が、非正方形((Log2(nTbW) + Log2(nTbH)) & 1)、かつ、変換スキップを用いない場合(transform_skip_flag[ xTbY ][ yTbY ] == 0)に、rectNonTsFlagを1、それ以外の場合に0を設定する。そして、上記非正方形フラグrectNonTsFlagが1の場合、rectNormを181、それ以外の場合に1を設定する。
【0203】
S102B:コア変換シフト値導出
第1スケーリング部31111は、セカンダリ変換がオフの場合(stIdx == 0)には、逆コア変換用のシフト値を導出する。
【0204】
bdShift = 0 式(A−1B)
bdOffset = 0
S102をまとめると、第1スケーリング部31111は、セカンダリ変換が有効でないか否か(stIdx==0)に応じて、シフト値bdShiftとbdOffsetを以下の式で導出する。
【0205】
stIdx == 0の場合、bdShift = 0、bdOffset = 0
stIdx != 0の場合、
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2)
- 5 + dep_quant_enabled_flag
bdOffset = (1 << bdShift) >> 1
第1スケーリング部31111は、セカンダリ変換が有効ではない場合(stIdx == 0)、変換に関するシフト演算を第2スケーリング部31112で行うため、ここでは、スケーリングファクタlsの乗算後にかける、変換に関するシフト値bdShiftを0とする。つまり、第2スケーリング部で行うスケーリングファクタ乗算後(量子化マトリックス処理後)に、変換に関するシフト処理を行う。セカンダリ変換が有効な場合(stIdx != 0)には、逆セカンダリ変換処理の前に、変換に関するスケーリング処理を完了させる必要があるのでここでシフト処理を行うための値を設定する。
【0206】
S103:第1スケーリングファクタ設定
第1スケーリング部31111は、第1の中間スケーリングファクタmを導出する。
【0207】
セカンダリ変換が有効ではない場合(stIdx == 0)、スケーリングファクタ(量子化マトリックスに関わる中間スケーリングファクタ)の処理と変換に関わるスケーリング処理を第2スケーリング部31112で行うので、m=1とする。
【0208】
S103C:セカンダリ変換スケールファクタ導出
セカンダリ変換が有効な場合(stIdx != 0)、固定値mLFNST(例えば16)を設定する。
【0209】
m = (stIdx == 0) ? 1 : mLFNST
mLFNSTは、セカンダリ変換のスケーリングに用いられる定数であり、2,4,8,16,32,64などでもよい。
【0210】
S103D:量子化パラメータスケールファクタ導出
第1スケーリング部31111は、第1の中間スケーリングファクタと、量子化パラメータqPに応じたlevelScaleから、以下の式で第1のスケーリングファクタlsを導出する。dep_quant_enabled_flagが1の場合には以下の式で導出する。
【0211】
ls = (m * levelScale[(qP+1)%6]) << (qP/6)
dep_quant_enabled_flag==0の場合には、以下の式で導出してもよい。
【0212】
ls = (m * levelScale[qP%6]) << (qP/6)
ここでlevelScale[] = { 40, 45, 51, 57, 64, 72 }である。
【0213】
なお、本実施形態の第1スケーリング部で用いる中間スケーリングファクタmは変換係数の位置(x,y)によらないスカラー値である。構成によっては配列m[][]として処理してもよい。
【0214】
第1スケーリングファクタはqPに応じて導出するので、量子化パラメータスケールファクタ導出と呼んでもよい。
【0215】
S104:第1スケーリング処理
第1スケーリング部31111は、TU内の復号された変換係数TransCoeffLevelと、スケーリングファクタlsと形状補正項rectNormの積をシフト値bsShiftだけ右シフトすることにより、第1のスケーリング(第1の逆量子化)を行い、dnc[][]を導出する。
【0216】
dnc[x][y] = (TransCoeffLevel[xTbY][yTbY][cIdx][x][y] * ls * rectNorm + bdOffset) >> bdShift
最後に、第1スケーリング部31111は、逆量子化された変換係数をクリップしd[x][y]を導出してもよい。
【0217】
d[x][y] = Clip3( CoeffMin, CoeffMax, dnc[x][y] )
導出された変換係数は、第2スケーリング部31112、もしくは、逆セカンダリ変換部31121に出力される。
【0218】
S112:逆セカンダリ変換
セカンダリ変換が有効であるか否かを判定し(S111)、stIdx!=0の場合には、逆セカンダリ変換を行う(S112)
第2スケーリング部31112は、第1スケーリング部31111もしくは逆セカンダリ変換部31121から入力された変換係数に対して、量子化マトリックスScalingFactor2[][]に応じて以下のスケーリングを行う。以下、ScalingFactor2[][]とは、ScalingFactor2[sizeIdW][sizeIdH][matridId][][]の略である。
【0219】
S122:第2シフト値設定
S122C:セカンダリ変換シフト値導出
第2スケーリング部31112は、セカンダリ変換がオンの場合(stIdx != 0)には、セカンダリ変換用のシフト値を導出する。
【0220】
bdShift = Log2(mLFNST) 式(A−2C)
S122A:TUサイズ依存シフト値導出
第2スケーリング部31112は、セカンダリ変換がオフの場合(stIdx == 0)には、TUサイズに依存したシフト値を導出する。
【0221】
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2) - 5 + dep_quant_enabled_flag 式(A−2A)
bdOffset = (1 << bdShift) >> 1
この式は、式(A−1A)と等しい。
【0222】
S122をまとめると、第2スケーリング部31112は、セカンダリ変換が有効でないか否か(stIdx==0)に応じて、ビットシフトbdShiftとbdOffsetを以下の式で導出する。
stIdx == 0の場合、
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2)
- 5 + dep_quant_enabled_flag
stIdx != 0の場合、
bdShift = Log2(mLFNST)
これらを用いてbdOffsetを導出する。
【0223】
bdOffset = ( 1 << bdShift ) >> 1
なお、bdShiftは、変換に関するシフト処理(TUサイズに依存するシフト処理)、もしくは、セカンダリ変換用のシフト処理(mLFNST)である。
【0224】
上記に示すように、第2スケーリング部31112は、セカンダリ変換が有効ではない場合(stIdx == 0)には、第1スケーリング部31111で行わなかった変換に関するシフト処理を行うため値bdShiftをTUサイズに応じて設定する。セカンダリ変換が有効な場合(stIdx != 0)には、第1スケーリングにおいて、中間スケーリングファクタmとして乗算したmLFNSTを、元に戻すために値Log2(mLFNST)での右シフトを行う。
【0225】
S123:第2スケーリングファクタ設定
第2スケーリング部31112は、量子化マトリックスScalingFactor2[][]に応じた第2の中間スケーリングファクタm[][]を導出する。以下でscaling_list_enabled_flagは量子化マトリックスを使うか否かを示すフラグである。
【0226】
S123A:デフォルトスケーリングファクタ導出
scaling_list_enabled_flag==0、もしくは、transform_skip_flag==1かつcIdx==0の場合、下記を第2スケーリングファクタに設定する。
【0227】
m[x][y]=16 (x=0..nTbW-1,y=0..nTbH-1)
S123B:量子化マトリックススケールファクタ導出
それ以外の場合には、量子化マトリックスScalingFactor2[][]を第2スケーリングファクタに設定する。
【0228】
m[x][y] = ScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y]
sizeIdW=Log2(nTbW)
sizeIdH=Log2(nTbH)
ここで、x=0..nTbW-1,y=0..nTbH-1であり、matrixIdはMax(sizeIdW, sizeIdH)と予測モードpredModeから導出される変数である。
【0229】
S124:第2スケーリング処理
第2スケーリング部31112は、入力された変換係数d[][]と第2スケーリングファクタm[][]との積にオフセットbdOffsetを加算し、第2シフト値bsShiftだけ右シフトすることにより、第2のスケーリング(第2の逆量子化)を行い、dnc[][]を導出する。
【0230】
dnc[x][y] = (d[x][y] * m[x][y] + bdOffset) >> bdShift
最後に、第2スケーリング部31112は、逆量子化された変換係数をクリップし、d[x][y]を導出してもよい。
【0231】
d[x][y] = Clip3( CoeffMin, CoeffMax, dnc[x][y] )
導出された変換係数は、逆コア変換部31123に出力される。
【0232】
上記構成によれば、量子化マトリックス処理を逆セカンダリ変換の後に行うため、変換係数位置ごとに適切な変換係数の重みつけを行うことができる。また、逆セカンダリ変換の前に、逆量子化を行う効果を奏する。
【0233】
<逆量子化・逆変換部311の構成例2>
図23は、本実施形態の別の構成の逆量子化・逆変換部311の構成を示すブロック図である。逆量子化・逆変換部311は、第1スケーリング部31111、逆セカンダリ変換部31121、第2スケーリング部31112、逆コア変換部31123から構成される。
【0234】
図24、
図25は、本実施形態の逆量子化・逆変換部311の概略処理を示すフローチャートである。
【0235】
S200:第1スケーリング部31111は、変換係数に第1のスケーリングを行う。第1スケーリング部31111は、後述の量子化パラメータスケールファクタ導出を含む
S211:セカンダリ変換が有効であるか否かを判定する。
【0236】
S212:セカンダリ変換が有効である場合、逆セカンダリ変換を行う。
【0237】
S220:セカンダリ変換が有効である場合、第2のスケーリングを行う。第2スケーリング部31112は、後述の量子化マトリックススケールファクタ導出を含む
S230:逆コア変換を行う。
【0238】
図25は第2スケーリングS220を説明する図である。S220は下記からなる。
【0239】
S221:量子化マトリックスが有効か否かを判定する。
【0240】
S222:量子化マトリックスが有効な場合、第2のスケーリングを行う。
【0241】
stIdx!=0の場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を逆セカンダリ変換部31121に伝達する。逆セカンダリ変換部31121は変換係数に第2の変換(逆セカンダリ変換)を行い、変換係数d[][]を第2スケーリング部31112に出力する。第2スケーリング部31112は入力された変換係数d[][]に第2のスケーリングを行い逆コア変換部31123に伝達する。逆コア変換部31123は、第2のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0242】
stIdx==0の場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を逆コア変換部31123に伝達する。逆コア変換部31123は、第1のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0243】
本構成では、stIdx==0の場合、逆コア変換前の第1のスケーリング処理だけでスケーリング処理が完了し、stIdx!=0の場合のみ、逆セカンダリ変換前の第1のスケーリング処理と逆セカンダリ変換後の第2のスケーリング処理を行う。
【0244】
図26は、本実施形態の逆量子化・逆変換部311の詳細処理を示すフローチャートである。
【0245】
第1スケーリング部31111は、TU復号部が復号した変換係数に対して、量子化係数qPとTUのサイズ(nTbW, nTbH)に応じて以下のスケーリングを行う。
【0246】
S201:量子化パラメータ設定(図示せず)
第1スケーリング部31111は、色コンポーネントcIdxに応じて、量子化パラメータqPを設定する。
【0247】
qP = QP_Y (cIdx == 0)
qP = QP_Cb (cIdx == 1)
qP = QP_Cr (cIdx == 2)
S202:第1シフト値導出
S202A:TUサイズ依存シフト値導出
第1スケーリング部31111は、TUサイズ(nTbW, nTbH)を用いて、ビットシフトbdShiftと
bdOffsetを以下の式で導出する。
【0248】
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2)
- 5 + dep_quant_enabled_flag
bdOffset = (1 << bdShift) >> 1
ここでrectNormは以下で導出する。
【0249】
rectNonTsFlag = (((Log2(nTbW) + Log2(nTbH)) & 1) == 1 && transform_skip_flag[xTbY][yTbY] == 0)
rectNorm = rectNonTsFlag ? 181 : 1
S203:第1スケーリングファクタ設定
第1スケーリング部31111は、第1の中間スケーリングファクタm[][]を導出する。
【0250】
S203C:セカンダリ変換スケールファクタ導出
セカンダリ変換が有効かつスケーリングリストを用いる場合(stIdx!=0 && scaling_list_enabled_flag==1)には、第1の中間スケーリングファクタm[x][y]を固定値mLFNST (例えば16)に設定する。
【0251】
m[x][y] = mLFNST
S203A:デフォルトスケールファクタ導出
それ以外で、scaling_list_enabled_flag==0(スケーリングリストを用いない)、もしくは、transform_skip_flag==1かつcIdx==0の場合、m[x][y]を16に設定する。
【0252】
m[x][y]=16 (x=0..nTbW-1,y=0..nTbH-1)
S203B:量子化マトリックススケールファクタ導出
それ以外の場合、中間スケーリングファクタを量子化マトリックスScalingFactor2[][]に設定する。
【0253】
m[x][y] = ScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y]
S203D:量子化パラメータスケーリングファクタ導出
第1スケーリング部31111は、第1の中間スケーリングファクタと、量子化パラメータqPに応じたlevelScaleから、以下の式で第1のスケーリングファクタls[][]を導出する。
dep_quant_enabled_flagが1の場合には以下の式で導出する。
【0254】
ls[x][y] = (m[x][y] * levelScale[(qP+1)%6]) << (qP/6)
dep_quant_enabled_flag==0の場合には、以下の式で導出してもよい。
【0255】
ls[x][y] = (m[x][y] * levelScale[qP%6]) << (qP/6)
ここでlevelScale[] = { 40, 45, 51, 57, 64, 72 }である。
【0256】
S204:第1スケーリング処理
第1スケーリング部31111は、TU内の復号された変換係数TransCoeffLevelと、スケーリングファクタls[][]と形状補正項rectNormの積をシフト値bsShiftだけ右シフトすることにより、第1のスケーリング(第1の逆量子化)を行い、dnc[][]を導出する。
【0257】
dnc[x][y] = (TransCoeffLevel[xTbY][yTbY][cIdx][x][y] * ls[x][y] * rectNorm + bdOffset) >> bdShift
最後に、第1スケーリング部31111は、逆量子化された変換係数をクリップしd[x][y]を導出してもよい。
【0258】
d[x][y] = Clip3( CoeffMin, CoeffMax, dnc[x][y] )
導出された変換係数d[][]は、逆セカンダリ変換部31121(stIdx!=0の場合)もしくは逆コア変換部31123(stIdx==0の場合)に出力される。stIdx==0の場合には、スケーリングリスト(量子化マトリックス)を用いた逆量子化処理を第1スケーリング部で行い、逆コア変換部31123に、スケーリング後の変換係数を出力する。stIdx!=0の場合は、量子化パラメータに関わる固定値mLFNSTによるスケーリングを第1スケーリング部で行い、スケーリングリストを用いた逆量子化を第2スケーリング部で行う。
【0259】
第2スケーリング部31112は、スケーリングリストを用いた逆量子化を行う場合(scaling_list_enabled_flag!=0)、逆セカンダリ変換部31121から入力された変換係数に対して、量子化マトリックスScalingFactor2[][]に応じて以下のスケーリングを行う。
【0260】
S222:第2シフト値設定
S222C:セカンダリ変換シフト値導出
第2スケーリング部31112はビットシフトbdShiftとbdOffsetを以下の式で導出する。
【0261】
bdShift = Log2(mLFNST)
bdOffset = (1 << bdShift) >> 1
なお、bdShiftは、後述のスケーリングファクタm[][]を乗算した後に変換係数を適当な大きさに変換するための右シフトに利用される。第1スケーリング部でmLFSNT倍した値を元に戻す処理である。
【0262】
S223:第2スケーリングファクタ設定
S222C:量子化マトリックススケールファクタ導出
第2スケーリング部31112は、量子化マトリックスScalingFactor2[][]に応じた第2の中間スケーリングファクタm[][]を導出する。
【0263】
量子化マトリックスScalingFactor2[][]を中間スケーリングファクタに設定する。
【0264】
m[x][y] = ScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y]
sizeIdW=Log2(nTbW)
sizeIdH=Log2(nTbH)
ここで、x=0..nTbW-1,y=0..nTbH-1であり、matrixIdはMax(sizeIdW, sizeIdH)と予測モードpredModeから導出される変数である。
【0265】
S204:第2スケーリング処理
第2スケーリング部31112は、入力された変換係数d[][]と第2スケーリングファクタls[][]を、第2シフト値bsShiftだけ右シフトすることにより、第2のスケーリング(第2の逆量子化)を行い、dnc[][]を導出する。
【0266】
dnc[x][y] = (d[x][y] * m[x][y] + bdOffset) >> bdShift
最後に、第2スケーリング部31112は、逆量子化された変換係数をクリップしd[x][y]を導出してもよい。
【0267】
d[x][y] = Clip3( CoeffMin, CoeffMax, dnc[x][y] )
導出された変換係数は、逆コア変換部31121に出力される。
【0268】
上記構成によれば、量子化マトリックス処理を逆セカンダリ変換の後に行うため、変換係数位置ごとに適切な変換係数の重みつけを行うことができる。また、逆セカンダリ変換の前に、逆量子化を行う効果を奏する。
【0269】
上記の別の構成によれば、stIdx==0の場合には、第1のスケーリング処理だけで完了するため、処理が簡易になるという効果を奏する。
【0270】
<逆量子化・逆変換部311の構成例3>
図27は、本実施形態の別の構成の逆量子化・逆変換部311の構成を示すブロック図である。逆量子化・逆変換部311は、第1スケーリング部31111、第3スケーリング部31113、逆セカンダリ変換部31121、第2スケーリング部31112、逆コア変換部31123から構成される。
【0271】
図28は、本実施形態の逆量子化・逆変換部311の概略処理を示すフローチャートである。
【0272】
S300ST:逆量子化・逆変換部311はセカンダリ変換が有効(stIdx!=0)か否かを判定する。
【0273】
S300:セカンダリ変換が有効(stIdx!=0)の場合に、第1スケーリング部31111は、変換係数に第1のスケーリングを行う。第1スケーリング部31111は、セカンダリ変換スケールファクタ導出と、量子化パラメータスケールファクタ導出の処理をを含む
S300B:セカンダリ変換が有効でない(stIdx==0)場合、第3スケーリング部31113は、変換係数に第3のスケーリングを行う。第3スケーリング部31113は、デフォルトスケールファクタ導出と、量子化マトリックススケールファクタ導出と、量子化パラメータスケールファクタ導出処理を含む。
【0274】
S312:セカンダリ変換が有効である場合、逆セカンダリ変換を行う。
【0275】
S320:セカンダリ変換が有効(stIdx!=0)かつ量子化マトリックスが有効(scaling_list_enabled_flag==1)が真である場合、第2のスケーリングを行う。第2スケーリング部31112は後述の量子化マトリックススケールファクタ導出の処理を含む
S330:逆コア変換を行う。
【0276】
stIdx!=0かつ量子化マトリックスが有効の場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を逆セカンダリ変換部31121に伝達する。逆セカンダリ変換部31121は変換係数に第2の変換(逆セカンダリ変換)を行い、変換係数d[][]を第2スケーリング部31112に出力する。第2スケーリング部31112は入力された変換係数d[][]に第2のスケーリングを行い逆コア変換部31123に伝達する。逆コア変換部31123は、第2のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0277】
stIdx!=0かつ量子化マトリックスが有効ではない場合、第1スケーリング部31111は、変換係数に第1のスケーリングを行い、変換係数d[][]を逆セカンダリ変換部31121に伝達する。逆セカンダリ変換部31121は変換係数に第2の変換(逆セカンダリ変換)を行い、変換係数d[][]を逆コア変換部31123に伝達する。逆コア変換部31123は第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0278】
stIdx==0の場合、第3スケーリング部31113は、変換係数に第3のスケーリングを行い、変換係数d[][]を逆コア変換部31123に伝達する。逆コア変換部31123は、第3のスケーリング後の変換係数に第1の変換(逆コア変換)を行い、変換係数d[][]を得る。
【0279】
本構成では、stIdx==0もしくは量子化マトリックスが有効ではない場合、逆コア変換前
の第1あるいは第3のスケーリング処理だけでスケーリング処理が完了し、stIdx!=0かつ量子化マトリックスが有効の場合のみ、逆セカンダリ変換後の第2のスケーリング処理を行う。
【0280】
図29は、本実施形態の逆量子化・逆変換部311の詳細処理を示すフローチャートである。
【0281】
第1スケーリング部31111は、セカンダリ変換が有効(stIdx!=0)の場合に、TU復号部が復号した変換係数に対して、量子化係数qPとTUのサイズ(nTbW, nTbH)に応じて以下のスケーリングを行い、スケーリング後の変換係数d[][]を逆セカンダリ変換部31121に出力する。
【0282】
S301:量子化パラメータ設定(図示せず)
第1スケーリング部31111は、色コンポーネントcIdxに応じて、量子化パラメータqPを設定する。
【0283】
qP = QP_Y (cIdx == 0)
qP = QP_Cb (cIdx == 1)
qP = QP_Cr (cIdx == 2)
S302:第1シフト値導出
S302A:TUサイズ依存シフト値導出
第1スケーリング部31111は、TUサイズ(nTbW, nTbH)を用いて、ビットシフトbdShiftとbdOffsetを以下の式で導出する。
【0284】
bdShift = bitDepth + ((rectNonTsFlag ? 8 : 0) + (Log2(nTbW) + Log2(nTbH)) / 2)
- 5 + dep_quant_enabled_flag
bdOffset = (1 << bdShift) >> 1
ここでrectNormは以下で導出する。
【0285】
rectNonTsFlag = (((Log2(nTbW) + Log2(nTbH)) & 1) == 1 && transform_skip_flag[xTbY][yTbY] == 0)
rectNorm = rectNonTsFlag ? 181 : 1
S303:第1スケーリングファクタ設定
第1スケーリング部31111は、第1の中間スケーリングファクタm[][]を導出する。
【0286】
S303C:セカンダリ変換スケールファクタ導出
セカンダリ変換が有効かつスケーリングリストを用いる場合(stIdx!=0 && scaling_list_enabled_flag==1)には、第1の中間スケーリングファクタm[x][y]を固定値mLFNST (例えば16)に設定する。
【0287】
m[x][y] = mLFNST
S303D:量子化パラメータスケーリングファクタ導出
第1スケーリング部31111は、第1の中間スケーリングファクタと、量子化パラメータqPに応じたlevelScaleから、以下の式で第1のスケーリングファクタls[][]を導出する。
dep_quant_enabled_flagが1の場合には以下の式で導出する。
【0288】
ls[x][y] = (m[x][y] * levelScale[(qP+1)%6]) << (qP/6)
dep_quant_enabled_flag==0の場合には、以下の式で導出してもよい。
【0289】
ls[x][y] = (m[x][y] * levelScale[qP%6]) << (qP/6)
ここでlevelScale[] = { 40, 45, 51, 57, 64, 72 }である。
【0290】
S304:第1スケーリング処理
第1スケーリング部31111は、TU内の復号された変換係数TransCoeffLevelと、スケーリングファクタls[][]と形状補正項rectNormの積をシフト値bsShiftだけ右シフトすることにより、スケーリング(逆量子化)を行い、dnc[][]を導出する。
【0291】
dnc[x][y] = (TransCoeffLevel[xTbY][yTbY][cIdx][x][y] * ls[x][y] * rectNorm + bdOffset) >> bdShift
最後に、第1スケーリング部31111は、逆量子化された変換係数をクリップしd[x][y]を導出してもよい。
【0292】
d[x][y] = Clip3( CoeffMin, CoeffMax, dnc[x][y] )
導出された変換係数d[][]は、逆セカンダリ変換部31121に出力される。逆セカンダリ変換部31121は変換係数に第2の変換(逆セカンダリ変換)を行い、変換係数d[][]を第2スケーリング部31112に出力する。第2スケーリング部31112は入力された変換係数d[][]に第2のスケーリングを行い逆コア変換部31123に伝達する。第2のスケーリングS320の処理は、
図26の第2スケーリングS220と同じであり、説明を省略する。
【0293】
第3スケーリング部31113は、セカンダリ変換が有効でない(stIdx==0)場合に、TU復号部が復号した変換係数に対して、量子化係数qPとTUのサイズ(nTbW, nTbH)に応じて以下のスケーリングを行う。第1スケーリング部31111と同一の符号を設定した処理については、第3スケーリング部31113において、第1スケーリング部31111と同一の処理を行うので説明を省略する。
【0294】
S301:量子化パラメータ設定
S302:第1シフト値導出
S302A:TUサイズ依存シフト値導出
S303:第1スケーリングファクタ設定
第3スケーリング部31113は、第3の中間スケーリングファクタm[][]を導出する。
【0295】
S303A:デフォルトスケールファクタ導出
スケーリングリストを用いない場合(scaling_list_enabled_flag==0)、もしくは、transform_skip_flag==1かつcIdx==0の場合、m[x][y]を16に設定する。
【0296】
m[x][y]=16 (x=0..nTbW-1,y=0..nTbH-1)
S303B:量子化マトリックススケールファクタ導出
それ以外の場合、m[x][y]を量子化マトリックスScalingFactor2[][]に設定する。
【0297】
m[x][y] = ScalingFactor2[sizeIdW][sizeIdH][matrixId][x][y]
S303D:量子化パラメータスケーリングファクタ導出
S304:第1スケーリング処理
導出された変換係数d[][]は、逆コア変換部31123に出力される。
【0298】
上記構成によれば、量子化マトリックス処理を逆セカンダリ変換の後に行うため、変換係数位置ごとに適切な変換係数の重みつけを行うことができる。また、逆セカンダリ変換の前に、逆量子化を行う効果を奏する。
【0299】
上記の別の構成によれば、stIdx==0の場合には、第1のスケーリング処理だけで完了するため、処理が簡易になるという効果を奏する。
【0300】
(逆コア変換部31123)
逆コア変換部31123は、逆セカンダリ変換部31121による変換後の係数(変換係数)に対して逆コア変換を適用する。逆コア変換部31123は、逆セカンダリ変換部31121によって変換された変換係数が、スケーリング部31122によるスケーリング後の係数(変換係数)に対して、逆コア変換を適用してもよい。逆コア変換部31123は、垂直方向、水平方向の2回の1次元変換を行う手段であり、通例は変換部と呼ばれる。なお、逆コア変換部31123は、垂直方向、水平方向の一方又は両方をスキップし、変換係数の大きさ変換(スケーリング)のみをする場合を備えていてもよい。
【0301】
逆コア変換部31123は、垂直方向1次元変換により、修正変換係数d[ ][ ](例えば逆セカンダリ変換後の変換係数)を中間値e[ ][ ]に変換し、中間値e[ ][ ]をクリップする。逆コア変換部31123は、中間値g[ ][ ]を予測残差r[ ][ ]に変換し、予測残差r[ ][ ]は加算部312に送られる。
【0302】
より具体的には、逆コア変換部31123は、以下の式で第1の中間値e[ x ][ y ]を導出する。
【0303】
e[ x ][ y ] = Σ (transMatrix[ y ][ j ]×d[ x ][ j ]) (j = 0..nTbS - 1)
ここで、transMatrix[ ][ ](=transMatrixV [ ][ ])は、trTypeVerを用いて導出したnTbS × nTbSの行列で表された変換基底である。nTbSはTUの高さnTbHである。trType==0のDCT2の4 × 4変換(nTbS=4)の場合には、例えばtransMatrix ={{29, 55, 74, 84}{74, 74, 0, -74}{84, -29, -74, 55}{55, -84, 74, -29}}を用いる。Σの記号は、 j = 0.. nTbS - 1までの添え字jについて、行列transMatrix[ y ][ j ]と変換係数d[ x ][ j ]の積を加算する処理を意味する。つまり、e[ x ][ y ]は、d[ x ][ y ]の各列(column)であるd[ x ][ j ](j = 0.. nTbS - 1)からなるベクトルx[ j ] (j = 0.. nTbS - 1)と行列の要素transMatrix[ y ][ j ] の積から得られる列を並べて得られる。
【0304】
逆コア変換部31123は、以下の式で、第1の中間値e[ x ][ y ]をクリップし、第2の中間値g[ x ][ y ]を導出する。
【0305】
g[ x ][ y ] = Clip3( coeffMin, coeffMax, ( e[ x ][ y ] + 64 ) >> 7 )
上式の64、7は変換基底のビット深度から決まる数値で、上式では変換基底を7bitと仮定している。またcoeffMin、coeffMaxはクリッピングの最小値と最大値である。
【0306】
逆コア変換部31123は、trTypeHorを用いて導出したnTbS × nTbSの行列で表された変換基底transMatrix[ ][ ] (=transMatrixH [ ][ ])である。nTbSはTUの高さnTbHである。水平変換部152123は、水平方向1次元変換により、中間値g[ x ][ y ]を予測残差r[ x ][
y ]に変換する。
【0307】
r[ x ][ y ] =Σ transMatrix[ x ][ j ]×g[ j ][ y ] (j = 0..nTbS - 1)
上記記号Σは、 j = 0.. nTbS - 1までの添え字jについて、行列transMatrix[ x ][j]とg[j][ y ]の積を加算する処理を意味する。つまり、r[ x ][ y ]は、g[ x ][ y ]の各行(row)であるg[ j ][ y ](j = 0.. nTbS - 1)と行列transMatrixの積から得られる行を並べて得られる。
【0308】
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
【0309】
〔変形例〕
上述の例では、セカンダリ変換部は、TUが8×8以上である場合に、TUに含まれる変換係数のうち最低周波数成分を含むNUMSTC個の変換係数に対してのみセカンダリ変換を適用し、ベクトルFを導出する。そして、逆セカンダリ変換部31121は、ベクトルFに量子化及び逆量子化を施したベクトルF'を逆セカンダリ変換した後、最低周波数成分を含む領域に配置する。また、セカンダリ変換部及び逆セカンダリ変換部31121は、TUが8×8未満である場合に適用される第1種の変換基底T1、及び、TUが8×8以上である場合に適用される第2種の変換基底T2の何れかを用いてセカンダリ変換及び逆セカンダリ変換を行っている。また、セカンダリ変換部及び逆セカンダリ変換部31121は、第1種の変換基底T1を、第2種の変換基底T2から導出している。
【0310】
ただし、本実施形態では、セカンダリ変換部及び逆セカンダリ変換部31121は、これらの機能の代わりに、以下の機能を備えていてもよい。すなわち、TUが8×8より大きい場合に、TUに含まれる変換係数のうち、最低周波数成分を含む8×8領域から、水平方向及び垂直方向が共に高周波数成分である一部の領域に含まれる変換係数を、セカンダリ変換及び逆セカンダリ変換の対象から外してもよい。また、低周波数成分を含む8×8領域を水平方向に拡張した領域、及び、最低周波数成分を含む8×8領域を垂直方向に拡張した領域の少なくとも何れかを、セカンダリ変換及び逆セカンダリ変換の対象に含めてもよい。TUのサイズとしては、16×16、8×16及び16×8等、8×8より大きいサイズが挙げられる。
【0311】
(逆セカンダリ変換部31121による逆セカンダリ変換の適用例4)
以下、
図15を用いて逆セカンダリ変換部31121による逆セカンダリ変換の適用例4について説明する。
図15は、変形例における逆セカンダリ変換の対象となる領域の一例を説明するための図である。
【0312】
(逆セカンダリ変換の説明)
逆セカンダリ変換では、TUが8×8より大きい場合に、逆量子化後の変換残差の左上の8×8領域RUの変換係数に対し、RST8×8として、64×16行列によって表される第2種の変換基底T2を適用してもよい。この場合、セカンダリ変換では、
図13に示す逆量子化後の変換残差から領域RUを除く領域に含まれる変換係数をゼロアウトする。ここでは、逆量子化後の変換残差における左上の8×8領域RUに含まれる変換係数を保持している。しかしながら、変換係数の分布を考慮すると、左上の8×8領域RUに含まれる変換係数のみを保持して、それ以外の領域をゼロアウトするのは好ましくない。
【0313】
(逆セカンダリ変換部31121による逆セカンダリ変換の説明)
これに対し、本実施形態では、逆セカンダリ変換部31121は、
図15の変換係数の選択例4に示すように、最低周波数成分を含む8×8領域RUから、高周波数成分を含む一部の領域R5に含まれる変換係数を、逆セカンダリ変換の対象から外してもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域RUを水平方向に拡張した領域R6を、逆セカンダリ変換の対象に含めてもよい。換言すれば、逆セカンダリ変換部31121は、逆量子化後の1次元ベクトルF'に逆セカンダリ変換を施した1次元ベクトルX'を、最低周波数成分を含む8×8領域RUに配置する場合に、高周波数成分に属する一部の領域R5に配置しなくてもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域RUを水平方向に拡張した領域R6に1次元ベクトルX'を格納してもよい。
【0314】
また、逆セカンダリ変換部31121は、
図15の変換係数の選択例5に示すように、最低周波数成分を含む8×8領域RUから、高周波数成分を含む一部の領域R7に含まれる変換係数を、セカンダリ変換の対象から外してもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域RUを垂直方向に拡張した領域R8を、逆セカンダリ変換の対象に含め
てもよい。換言すれば、逆セカンダリ変換部31121は、逆量子化後の1次元ベクトルF'に逆セカンダリ変換を施した1次元ベクトルV'を、
図15の最低周波数成分を含む8×8領域RUに配置する場合に、高周波数成分に属する一部の領域R7に配置しなくてもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域RUを垂直方向に拡張した領域R8に1次元ベクトルV'を格納してもよい。
【0315】
また、逆セカンダリ変換部31121は、
図15の変換係数の選択例6に示すように、最低周波数成分を含む8×8領域RUから、高周波数成分を含む一部の領域R9に含まれる変換係数を、セカンダリ変換の対象から外してもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域Rを水平方向に拡張した領域R6、及び、最低周波数成分を含む8×8領域Rを垂直方向に拡張した領域R8を、セカンダリ変換の対象に含めてもよい。換言すれば、逆セカンダリ変換部31121は、逆量子化後の1次元ベクトルF'に逆セカンダリ変換を施した1次元ベクトルV'を、
図15の最低周波数成分を含む8×8領域RUに配置する場合に、高周波数成分に属する一部の領域R9に配置しなくてもよい。また、逆セカンダリ変換部31121は、最低周波数成分を含む8×8領域RUを水平方向に拡張した領域R6、及び、最低周波数成分を含む8×8領域RUを垂直方向に拡張した領域R8に1次元ベクトルV'を格納してもよい。
【0316】
このように、本実施形態では、逆セカンダリ変換部31121は、領域RUに対して水平方向に拡張した領域及び垂直方向に拡張した領域の少なくとも何れかを、逆セカンダリ変換の対象に含める。これにより、コア変換係数の情報の損失を抑え、効率的且つ好適に逆セカンダリ変換を適用することができる。
【0317】
なお、逆セカンダリ変換部31121は、選択する変換係数の位置及び数以外は、上述の例と同様に逆セカンダリ変換を適用する。
【0318】
また、セカンダリ変換部も、上述の例と同様にセカンダリ変換を適用してもよい。
【0319】
(動画像符号化装置の構成)
次に、本実施形態に係る動画像符号化装置11の構成について説明する。
図16は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、エントロピー符号化部104を含んで構成される。
【0320】
予測画像生成部101は画像Tの各ピクチャを分割した領域であるCU毎に予測画像を生成する。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
【0321】
減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103に出力する。
【0322】
変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、量子化変換係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
【0323】
変換・量子化部103は、コア変換部(第1の変換部、不図示)と、第2スケーリング部(不図示)と、セカンダリ変換部(第2の変換部、不図示)と、を備えている。
【0324】
コア変換部は、予測誤差に対してコア変換を適用する。第2スケーリング部は、コア変換部による変換後の変換係数(コア変換係数)に対して、量子化マトリックスによるスケーリングを行う。セカンダリ変換部は、スケーリング後のコア変換係数に対して、セカンダリ変換を適用する。これにより、量子化マトリックスの各重みがコア変換係数値に対応するため、適切にスケーリングすることができる。結果として、セカンダリ変換を好適に適用することができる。
【0325】
<変換・量子化部103の構成例1>
図30は、
図20で説明した本実施形態の逆量子化・逆変換部311に対応する変換・量子化部103の概略処理を示すフローチャートである。
【0326】
S1100: 変換・量子化部103はコア変換を行う。
【0327】
S1110:変換・量子化部103は第2の順スケーリングを行う。第2の順スケーリングは、量子化マトリックスを用いたスケーリング処理を含む。
【0328】
S1121:セカンダリ変換が有効であるか否かを判定する。
【0329】
S1122:セカンダリ変換が有効である場合、セカンダリ変換(順セカンダリ変換)を行う。
【0330】
S1130:変換・量子化部103は第1の順スケーリングを行う。第1の順スケーリングは、TUサイズを用いるスケーリング処理を含む。
【0331】
以下、順スケーリングとは変換係数d[][]を入力して変換係数d[][]をスケーリング処理により導出する処理を示す。スケーリング処理とは、入力信号の積にオフセットを加算して右シフトをする処理であり、途中の処理でクリップ処理を行ってもよい。
【0332】
<変換・量子化部103の構成例2>
図31は、
図23で説明した本実施形態の逆量子化・逆変換部311に対応する変換・量子化部103の概略処理を示すフローチャートである。
【0333】
S1200: 変換・量子化部103はコア変換を行う。
【0334】
S1211:変換・量子化部103は、セカンダリ変換が有効(stIdx!=0)か否かを判定する。
【0335】
S1212:セカンダリ変換が有効(stIdx!=0)である場合、第2順スケーリングを行う。第2の順スケーリングは、量子化マトリックスを用いたスケーリング処理を含む。
【0336】
S1222:セカンダリ変換(順セカンダリ変換)を行う。
【0337】
S1230:変換・量子化部103は第1の順スケーリングを行う。第1の順スケーリングは、TUサイズを用いるスケーリング処理を含む。
【0338】
<変換・量子化部103の構成例3>
図32は、
図27で説明した本実施形態の逆量子化・逆変換部311に対応する変換・量子化部103の概略処理を示すフローチャートである。
【0339】
S1300: 変換・量子化部103はコア変換を行う。
【0340】
S1311:変換・量子化部103は、セカンダリ変換が有効(stIdx!=0)かつ量子化マトリックスが有効(scaling_list_enabled_flag==1)か否かを判定する。
【0341】
S1312:セカンダリ変換が有効(stIdx!=0)かつ量子化マトリックスが有効(scaling_list_enabled_flag==1)が真である場合、第2順スケーリングを行う。第2の順スケーリングは、量子化マトリックスを用いたスケーリング処理を含む。
【0342】
S1321:セカンダリ変換が有効であるか否かを判定する。
【0343】
S1322:セカンダリ変換が有効である場合、セカンダリ変換(順セカンダリ変換)を行う。
【0344】
S1332:セカンダリ変換が有効(stIdx!=0)である場合、第1の順スケーリングを行う。第1の順スケーリングは、TUサイズを用いるスケーリング処理を含む。
【0345】
S1332B:それ以外の場合、第3のスケーリングを行う。第3の順スケーリングは、TUサイズを用いるスケーリング処理を含む。
【0346】
動画像符号化装置11において適用する(順)セカンダリ変換では、動画像復号装置31に適用する逆セカンダリ変換の処理S1-S4を処理S1、S4、S3、S2の順で逆に適用する以外はほぼ等しい処理を行う。
【0347】
処理S1において、セカンダリ変換部は、セカンダリ変換の入力及び出力が各々、長さnStOutSize及びnonZeroSizeとなる以外は、逆セカンダリ変換部31121と同様の処理を行う。
【0348】
処理S4において、セカンダリ変換部は、TU内の所定の位置の変換係数d[][]から、nStOutSize(もしくはnStSize*nStSize)の一次元配列の係数v[]を導出する。
【0349】
処理S3において、セカンダリ変換部は、nStOutSizeの一次元配列の係数v[](ベクトルV)及び変換基底T[][]から、以下の変換により、nonZeroSizeの一次元係数u[](ベクトルF)を得る。
【0350】
F=trans(T)×V
ここで、trans(T)はTの転置行列である。セカンダリ変換部は、以下の式によって、一次元係数u[](ベクトルF)を導出してもよい。
【0351】
F=Tinv×V
ここで、Tinvは、第1種の変換基底T1及び第2種の変換基底T2から構成される変換基底Tの逆行列である。なお、セカンダリ変換部は、変換基底Tに対し、直交行列を用いることにより、変換基底Tのtrans(T)をTinvとしてもよい。
【0352】
なお、実際の処理では、Tは整数値の行列であるため、T×Tinv=I(単位行列)ではなく、単位行列の定数倍になる(T×Tinv=K2×I、K2は定数)。この場合、セカンダリ変換部は、Tinvとして逆行列の定数倍の行列を用いるが、転置行列に関してははそのまま用いてもよい。
【0353】
処理S2において、セカンダリ変換部は、nonZeroSizeの一次元係数u[]を2次元配列に並べ変えて、変換係数d[][]を導出する。
【0354】
xC = (xSbIdx<<log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][0]
yC = (ySbIdx<<log2StSize) + DiagScanOrder[log2StSize][log2StSize][x][1]
d[ xC ][yC ] = u[x]
また、セカンダリ変換部は、TUが8×8以上である場合に、コア変換係数のうち、最低周波数成分を含むNUMSTC個以内の係数に対してのみセカンダリ変換を適用する。NUMSTCは、36個以内であればよい。例えば、36であってもよいし、32であってもよい。また、セカンダリ変換部はTUが8×8未満である場合に適用される第1種の変換基底T1、及び、TUが8×8以上である場合に適用される第2種の変換基底T2の何れかを用いてセカンダリ変換を行う。また、セカンダリ変換部は、第1種の変換基底T1を、第2種の変換基底T2から導出する。これらの何れによっても、セカンダリ変換に必要なテーブルのメモリを大幅に削減することができる。その結果、好適にセカンダリ変換を適用することができる。
【0355】
また、セカンダリ変換部は、コア変換後の各係数の2次元配列を1次元配列に並べ替える(変換する)処理において、イントラ予測の際に所定の方向の画素を参照するか否かに応じて、並び替える(変換する)方法を切り替える。また、所定の方向には、CCLM予測が参照する画素の方向が含まれる。これにより、2次元配列を1次元ベクトルV'に並べ替える際に、当該2次元配列をより好適に1次元ベクトルV'に並び替えることができる。その結果、より好適にセカンダリ変換を適用することができる。
【0356】
逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311(
図15)と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
【0357】
エントロピー符号化部104には、変換・量子化部103から量子化変換係数が入力され、パラメータ符号化部111から符号化パラメータが入力される。符号化パラメータは、例えば、predModeである。
【0358】
エントロピー符号化部104は、分割情報、予測パラメータ、量子化変換係数等をエントロピー符号化して符号化ストリームTeを生成し、出力する。
【0359】
パラメータ符号化部111は、図示しないヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112(予測モード符号化部)、及びインター予測パラメータ符号化部112とイントラ予測パラメータ符号化部113を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。
【0360】
以下、各モジュールの概略動作を説明する。パラメータ符号化部111はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
【0361】
CT情報符号化部1111は、符号化データからQT、MT(BT、TT)分割情報等を符号化する。
【0362】
CU符号化部1112はCU情報、予測情報、TU分割フラグ、CU残差フラグ等を符号化する。
【0363】
TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を符号化する。
【0364】
CT情報符号化部1111、CU符号化部1112は、インター予測パラメータ、イントラ予測パラメータ(intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_mpm_remainder)、量子化変換係数等のシンタックス要素をエントロピー符号化部104に供給する。
【0365】
(イントラ予測パラメータ符号化部113の構成)
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたIn
traPredModeから、符号化するための形式(例えばintra_luma_mpm_idx、intra_luma_mpm_remainder等)を導出する。イントラ予測パラメータ符号化部113は、イントラ予測パラメータ復号部304がイントラ予測パラメータを導出する構成と、一部同一の構成を含む。
【0366】
図17は、パラメータ符号化部111のイントラ予測パラメータ符号化部113の構成を示す概略図である。イントラ予測パラメータ符号化部113は、パラメータ符号化制御部1131、輝度イントラ予測パラメータ導出部1132、色差イントラ予測パラメータ導出部1133とを含んで構成される。
【0367】
パラメータ符号化制御部1131には、符号化パラメータ決定部110からIntraPredModeY及びIntraPredModeCが入力される。パラメータ符号化制御部1131はMPM候補リスト導出部30421のmpmCandList[]を参照して、intra_luma_mpm_flagを決定する。そして、intra_luma_mpm_flagとIntraPredModeYを、輝度イントラ予測パラメータ導出部1132に出力する。また、IntraPredModeCを色差イントラ予測パラメータ導出部1133に出力する。
【0368】
輝度イントラ予測パラメータ導出部1132は、MPM候補リスト導出部30421(候補リスト導出部)と、MPMパラメータ導出部11322と、非MPMパラメータ導出部11323(符号化部、導出部)とを含んで構成される。
【0369】
MPM候補リスト導出部30421は、予測パラメータメモリ108に格納された隣接ブロックのイントラ予測モードを参照して、mpmCandList[]を導出する。MPMパラメータ導出部11322は、intra_luma_mpm_flagが1の場合に、IntraPredModeYとmpmCandList[]からintra_luma_mpm_idxを導出し、エントロピー符号化部104に出力する。非MPMパラメータ導出部11323は、intra_luma_mpm_flagが0の場合に、IntraPredModeYとmpmCandList[]からRemIntraPredModeを導出し、intra_luma_mpm_remainderをエントロピー符号化部104に出力する。
【0370】
色差イントラ予測パラメータ導出部1133は、IntraPredModeYとIntraPredModeCからintra_chroma_pred_modeを導出し、出力する。
【0371】
加算部106は、予測画像生成部101から入力されたブロックの予測画像の画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
【0372】
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
【0373】
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0374】
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0375】
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
【0376】
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すRDコスト値を算出する。符号化パラメータ決定部110は、算出したコスト値が
最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
【0377】
〔変形例〕
上述の例では、セカンダリ変換部は、TUが8×8以上である場合に、コア変換係数のうち、最低周波数成分を含むNUMSTC個以内の係数に対してのみセカンダリ変換を適用している。また、セカンダリ変換部は、TUが8×8未満である場合に適用される第1種の変換基底T1、及び、TUが8×8以上である場合に適用される第2種の変換基底T2の何れかを用いてセカンダリ変換を行っている。また、セカンダリ変換部は、第1種の変換基底T1を、第2種の変換基底T2から導出するように構成されている。
【0378】
ただし、本実施形態では、セカンダリ変換部は、これらの機能の代わりに、以下の機能を備えていてもよい。すなわち、セカンダリ変換部は、TUが8×8より大きいサイズである場合に、TUに含まれる変換係数のうち、最低周波数成分を含む8×8の領域から、水平方向及び垂直方向が共に高周波数成分に属する一部の領域に含まれる変換係数を、セカンダリ変換の対象から外してもよい。また、セカンダリ変換部は、最低周波数成分を含む8×8の領域を水平方向に拡張した領域、及び、最低周波数成分を含む8×8の領域を垂直方向に拡張した領域の少なくとも何れかを、セカンダリ変換の対象に含めてもよい。これにより、コア変換係数が符号化されないことによる情報の損失を抑え、効率的且つ好適にセカンダリ変換を適用することができる。
【0379】
なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31の何れかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0380】
また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、又は全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0381】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0382】
〔応用例〕
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CG及びGUIを含む)であってもよい。
【0383】
まず、上述した動画像符号化装置11及び動画像復号装置31を、動画像の送信及び受信に利用できることを、
図2を参照して説明する。
【0384】
図2には、動画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図が示されている。図に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_A1として利用される。
【0385】
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成又は加工する画像処理部A7を更に備えていてもよい。図においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
【0386】
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
【0387】
また、
図2には、動画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図が示されている。図に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した動画像復号装置31は、この復号部PROD_B3として利用される。
【0388】
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
【0389】
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
【0390】
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
【0391】
例えば、地上デジタル放送の放送局(放送設備等)/受信局(テレビジョン受像機等)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備等)/受信局(テレビジョン受像機等)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
【0392】
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービス等のサーバ(ワークステーション等)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォン等)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
【0393】
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
【0394】
次に、上述した動画像符号化装置11及び動画像復号装置31を、動画像の記録及び再生に利用できることを、
図3を参照して説明する。
【0395】
図3には、上述した動画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図が示されている。図に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_C1として利用される。
【0396】
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)等のように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリ等のように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc:登録商標)やBD(Blu-ray Disc:登録商標)等のように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0397】
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成又は加工する画像処理部PROD_C6を更に備えていてもよい。図においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
【0398】
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
【0399】
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダ等が挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5又は画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受信部PROD_C5が動画像の主な供給源となる)等も、このような記録装置PROD_Cの一例である。
【0400】
また、
図3には、上述した動画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロック図が示されている。図に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置31は、この復号部PROD_D2として利用される。
【0401】
なお、記録媒体PROD_Mは、(1)HDDやSSD等のように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリ等のように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBD等のように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
【0402】
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
【0403】
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
【0404】
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤ等が挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)等も、このような再生装置PROD_Dの一例である。
【0405】
(ハードウェア的実現及びソフトウェア的実現)
また、上述した動画像復号装置31及び動画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
【0406】
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記
プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random
Access Memory)、上記プログラム及び各種データを格納するメモリ等の記憶装置(記録媒体)等を備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(又はCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【0407】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc:登録商標)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類等を用いることができる。
【0408】
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成又は種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【0409】
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。