<第1実施形態>
以下、図1~図9を参照して、本発明の第1実施形態に係る画像処理システム10について説明する。図1は、本実施形態に係る画像処理システム10について示す図である。
図1に示すように、本実施形態に係る画像処理システム10は、画像符号化装置100及び画像復号装置200を有する。
画像符号化装置100は、入力画像信号を符号化することによって符号化データを生成するように構成されている。画像復号装置200は、符号化データを復号することによって出力画像信号を生成するように構成されている。
符号化データは、画像符号化装置100から画像復号装置200に対して伝送路を介して送信されてもよい。符号化データは、記憶媒体に格納された上で、画像符号化装置100から画像復号装置200に提供されてもよい。
(画像符号化装置100)
以下、図2を参照して、本実施形態に係る画像符号化装置100について説明する。図2は、本実施形態に係る画像符号化装置100の機能ブロックの一例について示す図である。
図2に示すように、画像符号化装置100は、インター予測部111と、イントラ予測部112と、減算器121と、加算器122と、変換・量子化部131と、逆変換・逆量子化部132と、符号化部140と、インループフィルタ処理部150と、フレームバッファ160とを有する。
インター予測部111は、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
具体的には、インター予測部111は、符号化対象のフレーム(以下、対象フレーム)とフレームバッファ160に格納される参照フレームとの比較によって、参照フレームに含まれる参照ブロックを特定し、特定された参照ブロックに対する予測動きベクトルを決定するように構成されている。
また、インター予測部111は、参照ブロック及び動きベクトルに基づいて予測ブロックに含まれる予測信号を予測ブロック毎に生成するように構成されている。インター予測部111は、予測信号を減算器121及び加算器122に出力するように構成されている。ここで、参照フレームは、対象フレームとは異なるフレームである。
イントラ予測部112は、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
具体的には、イントラ予測部112は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。また、イントラ予測部112は、予測信号を減算器121及び加算器122に出力するように構成されている。
ここで、参照ブロックは、予測対象のブロック(以下、対象ブロック)について参照されるブロックである。例えば、参照ブロックは、対象ブロックに隣接するブロックである。
減算器121は、入力画像信号から予測信号を減算し、予測残差信号を変換・量子化部131に出力するように構成されている。ここで、減算器121は、イントラ予測又はインター予測によって生成される予測信号と入力画像信号との差分である予測残差信号を生成するように構成されている。
加算器122は、逆変換・逆量子化部132から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、かかるフィルタ処理前復号信号をイントラ予測部112及びインループフィルタ処理部150に出力するように構成されている。
ここで、フィルタ処理前復号信号は、イントラ予測部112で用いる参照ブロックを構成する。
変換・量子化部131は、予測残差信号の変換処理を行うとともに、係数レベル値を取得するように構成されている。さらに、変換・量子化部131は、係数レベル値の量子化を行うように構成されていてもよい。
ここで、変換・量子化部131は、係数レベル値の量子化を行う場合は、量子化インデックスを出力するように構成されている。以降では、変換・量子化部131の出力を、量子化の適用の有無に関わらず、係数レベル値として記述する。
ここで、変換処理は、予測残差信号を周波数成分信号に変換する処理である。かかる変換処理では、離散コサイン変換(DCT;Discrete Cosine Transform)に対応する基底パターン(変換行列)が用いられてもよく、離散サイン変換(DST;Discrete Sine Transform)に対応する基底パターン(変換行列)が用いられてもよい。
なお、変換処理は、量子化が行われる前に複数回実施されてもよい。一例として、2回目の変換処理を行う二次変換について後述する。
逆変換・逆量子化部132は、変換・量子化部131から出力される係数レベル値の逆変換処理を行うように構成されている。ここで、逆変換・逆量子化部132は、逆変換処理に先立って、係数レベル値の逆量子化を行うように構成されていてもよい。
ここで、逆変換処理及び逆量子化は、変換・量子化部131で行われる変換処理及び量子化とは逆の手順で行われる。
符号化部140は、変換・量子化部131から出力された係数レベル値を符号化し、符号化データを出力するように構成されている。
ここで、例えば、符号化は、対象ブロック(符号化ブロック又は変換ブロック)の係数をカウントし、係数レベル値の発生確率に基づいて異なる長さの符号を割り当てるエントロピー符号化である。係数のカウント方法については後述する。
また、符号化部140は、係数レベル値に加えて、復号処理で用いる制御データを符号化するように構成されている。
ここで、制御データは、符号化ブロック(CU:Coding Unit)サイズ、予測ブロック(PU:Prediction Unit)サイズ、変換ブロック(TU:Transform Unit)サイズ等のサイズデータを含んでもよい。
インループフィルタ処理部150は、加算器122から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ160に出力するように構成されている。
ここで、例えば、フィルタ処理は、ブロック(符号化ブロック、予測ブロック又は変換ブロック)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ160は、インター予測部111で用いる参照フレームを蓄積するように構成されている。
ここで、フィルタ処理後復号信号は、インター予測部111で用いる参照フレームを構成する。
(変換・量子化部131)
以下、図3を参照して、本実施形態に係る画像符号化装置110の変換・量子化部131について説明する。図3は、本実施形態に係る画像符号化装置110の変換・量子化部131の機能ブロックの一例について示す図である。
図13に示すように、変換・量子化部131は、一次変換部131Aと、二次変換部131B、量子化部131Cとを有する。
変換・量子化部131は、変換・量子化によって予測残差信号から係数レベル値を生成するように構成されている変換・量子化部の一例である。
一次変換部131Aは、予測残差信号を入力として、対象ブロックの一次変換係数を生成するように構成されている。
ここで、一次変換処理に用いられる基底パターン(変換行列)は、複数の基底パターンから選択されてもよい。例えば、非特許文献1では、DCT2、DCT8、DST7に対応する基底パターンがそれぞれ用いられている。また、基底パターンの選択方法は、例えば、最も符号化コストが小さいものが画像符号化装置100で選択され、選択された基底パターンがサイド情報として画像復号装置200に伝送される方法がある。
二次変換部131Bは、一次変換部131Aからの一次変換係数を入力として、対象ブロックに対する二次変換の適用有無について判定するように構成されている。
ここで、二次変換部131Bは、二次変換を適用すると判定した場合には、一次変換係数に変換処理を施すことによって二次変換係数を生成し、かかる二次変換係数を量子化部131Cに出力するように構成されている。
一方、二次変換部131Bは、二次変換を適用しないと判定した場合には、一次変換係数を量子化部131Cにそのまま出力するように構成されている。
また、二次変換部131Bは、二次変換の適用有無に関する情報(以下、二次変換インデックス)を符号化部140に出力するように構成されている。
量子化部131Cは、変換係数(一次変換係数又は二次変換係数)を入力として、対象ブロックの変換係数に対する量子化の適用有無を判定するように構成されている。
ここで、量子化部131Cは、量子化を適用すると判定した場合には、量子化インデックスを生成するように構成されている。なお、量子化の適用有無の判定方法や量子化インデックスの生成方法は、公知の方法を用いることができるため、詳細は省略する。
(符号化部140)
符号化部140は、二次変換が適用される場合、二次変換の適用確率に最適化したコンテキストを用いて係数レベル値を符号化するように構成されていてもよい。
(逆変換・逆量子化部132)
逆変換・逆量子化部132は、後述する画像復号装置200における逆変換・逆量子化部220と同じ動作をするため、詳細は、逆変換・逆量子化部220の説明で後述し、以降は、逆変換・逆量子化部220と同一に扱うものとする。
(画像復号装置200)
以下、図4を参照して、本実施形態に係る画像復号装置200について説明する。図4は、本実施形態に係る画像復号装置200の機能ブロックの一例について示す図である。
図4に示すように、画像復号装置200は、復号部210と、逆変換・逆量子化部220と、加算器230と、インター予測部241と、イントラ予測部242と、インループフィルタ処理部250と、フレームバッファ260とを有する。
復号部210は、画像符号化装置100によって生成される符号化データを復号し、係数レベル値を復号するように構成されている。
ここで、復号は、例えば、係数の発生確率に基づく、異なる長さの符号を割り当てるエントロピー符号化されたデータの復号である。
復号は、符号化部140で行われるエントロピー符号化とは逆の手順のエントロピー復号である。
また、復号部210は、符号化データの復号処理によって制御データを取得するように構成されていてもよい。
なお、上述したように、制御データは、符号化ブロックサイズ、予測ブロックサイズ、変換ブロックサイズ等のサイズデータを含んでもよい。
逆変換・逆量子化部220は、復号部210から出力される量子化インデックスの逆量子化及び復号部210から出力される係数レベル値の逆変換処理を行うことによって、予測残差信号を生成するように構成されている。
加算器230は、逆変換・逆量子化部220から出力される予測残差信号に予測信号を加算してフィルタ処理前復号信号を生成し、フィルタ処理前復号信号をイントラ予測部242及びインループフィルタ処理部250に出力するように構成されている。
ここで、フィルタ処理前復号信号は、イントラ予測部242で用いる参照ブロックを構成する。
インター予測部241は、インター予測部111と同様に、インター予測(フレーム間予測)によって予測信号を生成するように構成されている。
具体的には、インター予測部241は、符号化データから復号した動きベクトルと参照フレームに含まれる参照信号とに基づいて予測信号を予測ブロック毎に生成するように構成されている。インター予測部241は、予測信号を加算器230に出力するように構成されている。
イントラ予測部242は、イントラ予測部112と同様に、イントラ予測(フレーム内予測)によって予測信号を生成するように構成されている。
具体的には、イントラ予測部242は、対象フレームに含まれる参照ブロックを特定し、特定された参照ブロックに基づいて予測信号を予測ブロック毎に生成するように構成されている。イントラ予測部242は、予測信号を加算器230に出力するように構成されている。
インループフィルタ処理部250は、インループフィルタ処理部150と同様に、加算器230から出力されるフィルタ処理前復号信号に対してフィルタ処理を行うとともに、フィルタ処理後復号信号をフレームバッファ260に出力するように構成されている。
ここで、例えば、フィルタ処理は、ブロック(符号化ブロック、予測ブロック、変換ブロック、あるいはそれらを分割したサブブロック)の境界部分で生じる歪みを減少するデブロッキングフィルタ処理である。
フレームバッファ260は、フレームバッファ160と同様に、インター予測部241で用いる参照フレームを蓄積するように構成されている。
ここで、フィルタ処理後復号信号は、インター予測部241で用いる参照フレームを構成する。
(逆変換・逆量子化部220)
以下、図5を参照して、本実施形態に係る画像復号装置200の逆変換・逆量子化部220について説明する。図5は、本実施形態に係る画像復号装置200の逆変換・逆量子化部220の機能ブロックの一例について示す図である。
図5に示すように、逆変換・逆量子化部220は、逆量子化部242Aと、逆二次変換部242Bと、逆一次変換部242Cとを有する。
逆量子化部220Aでは、量子化インデックスを入力信号として、対象ブロックの変換係数を生成するように構成されている。量子化インデックスから係数レベル値を生成する方法としては、公知の方法を用いることができるため、詳細は省略する。
逆二次変換部220Bは、係数レベル値を入力として、対象ブロックの逆二次変換の適用有無を判定するように構成されている。
ここで、逆二次変換部220Bは、逆二次変換を適用すると判定した場合には、入力された係数レベル値に対して逆変換処理を施すことによって一次変換係数を生成し、かかる一次変換係数を一次変換係数部220Cに出力するように構成されている。
一方、逆二次変換部220Bは、二次変換を適用しないと判定した場合には、入力された係数レベル値を一次変換係数として一次変換係数部220Cにそのまま出力するように構成されている。
以降では、記述を簡素化するため、二次変換及び逆二次変換を総じて二次変換と呼称し、逆二次変換部における二次変換は、逆二次変換と適宜読み替えることとする。
なお、逆二次変換部220Bによって二次変換を適用するか否かについての判定方法については、後述する。
逆一次変換部220Cは、一次変換係数を入力として、対象ブロックの予測残差信号を生成するように構成されている。
ここで、逆一次変換処理に用いる基底パターン(変換行列)は、画像符号化装置100の場合と同様に、複数の規定パターンから選択されてもよい。基底パターンの選択は、例えば、画像符号化装置100から伝送されるサイド情報(画像符号化装置100で選択された基底パターン情報)を用いて行われてもよい。
(二次変換の説明)
以下、図6を参照して、本実施形態に係る画像符号化装置100及び画像復号装置200によって行われる二次変換の一例について説明する。
二次変換とは、上述の通り、量子化前に、再度、対象ブロックの一次変換係数を変換する技術である。量子化前に、再度、一次変換係数を変換することで、係数レベル値が非ゼロの係数(以降、非ゼロ係数)が低周波領域により密集しやすくなり、後述する係数スキャン処理において、係数レベル値がゼロの係数(以降、ゼロ係数)が連続するようになるため、エントロピー符号化による更なる符号化向上効果が期待できる。
ここで、二次変換は、一次変換と同様に、複数の基底パターン(変換行列)が用いてもよい。例えば、非特許文献2のように、対象ブロックサイズ、イントラ予測モード、および二次変換インデックスによって、予め使用可能な基底パターンを設定してもよい。二次変換インデックスの値が0である場合は、二次変換が無効であることを示す。一方で、値が1以上である場合は、二次変換が有効であることを示す。また、かかる二次変換インデックスによって、例えば非特許文献2のように、2種類の基底パターンを適応的に選択してもよい。
また、二次変換の適用範囲は、対象ブロックのブロックサイズに応じて、適応的に設定されてもよい。例えば、図6は、非特許文献2における二次変換の適用範囲の一例を示す。
図6(a)に示すように、対象ブロックのブロックサイズが8×8画素である場合、二次変換の適用範囲R1は、64個の一次変換係数の全てが対象となり、さらに、二次変換後の非ゼロ係数の発生領域R2は、二次変換係数の低周波領域(4×2画素)に限定され、その他の領域は、全てゼロ係数とされている(以下、ゼロイング)。
一方、図6(b)に示すように、対象ブロックのブロックサイズがM×N(但し、M>8、N>8)画素である場合、二次変換の適用範囲R1は、48個の低周波領域の一次変換係数となっている。すなわち、48個の低周波領域以外の一次変換係数には、二次変換は適用されず、一次変換係数がそのまま扱われる。また、二次変換後の非ゼロ係数の発生領域は、二次変換係数の低周波領域(4×4画素)に限定され、その他の領域は、ゼロイングされる。
(係数の符号化方法)
以下、図7を参照して、係数レベル値の符号化方法について説明する。図7は、対象ブロックの係数レベル値のスキャン方法について示す図である。
係数のスキャン方法としては、例えば、非特許文献1にあるように、対象ブロックの最高周波成分の係数C1から最低周波成分の係数Cxへと、左上方向へスキャンする方法(以降、斜めスキャン)が用いられてもよい(図7参照)。
自然画像においては、高周波領域で非ゼロ係数が発生しにくい。そのため、高周波成分から低周波成分へと斜めスキャンすることで、ゼロ係数を連続的に並べることができ、エントロピー符号化による符号化性能向上効果が期待できるようになる。
また、斜めスキャンの実行単位を、非特許文献1のように、対象ブロックを4×4画素に分割したサブブロック単位で行ってもよい。また、画像符号化装置100は、サブブロック単位の非ゼロ係数の発生個数に応じて、非ゼロ係数の存在の有無を示すフラグ(coded#sub#block#flag)をから画像復号装置200に伝送してもよい。
ここで、かかるフラグ(coded#sub#block#flag)を用いる理由は、例えば、1ビットのフラグ(coded#sub#block#flag)を用いて、非ゼロ係数が皆無のサブブロックを符号化及び復号できる点にある。
また、画像符号化装置100は、かかるフラグ(coded#sub#block#flag)の符号化前に、スキャン順で、最初に非ゼロ係数が発生するサブブロックから、非ゼロ係数の発生の有無についての判定処理を行ってもよい。
ここで、画像符号化装置100は、最初に非ゼロ係数が発生する位置情報(last#coeff#pos)を画像復号装置200に伝送してもよい。これにより、最初の非ゼロ係数の発生前のサブブロックは、非ゼロ係数が皆無であることは確定であるため、上述のフラグ(coded#sub#block#flag)の伝送が不要となり、符号量を節約できる。
なお、画像符号化装置100は、例えば、非特許文献1のように、対象ブロックで最初に非ゼロ係数が発生する位置情報のx座標値及びy座標値を、プレフィックス部とサフィックス部とに分けて、符号化してもよい。
(二次変換適用有無判定方法と係数の復号方法)
図8及び図9は、画像復号装置200における二次変換適用有無判定方法及び係数の復号方法の一例について示すフローチャートである。以下、図8を参照して、二次変換適用有無判定方法の一例について説明し、図9を参照して、係数の復号方法の一例について説明する。
図8に示すように、ステップS61において、画像復号装置200は、対象ブロックの非ゼロ係数の存在の有無を示すフラグ(cbf)を復号する。ここで、cbfの値は、0、1のいずれかである。
ステップS62において、画像復号装置200は、cbfに基づいて、非ゼロ係数が存在するか否かについて判定する。
非ゼロ係数が存在しない(非ゼロ係数が0個である)と判定された場合(すなわち、cbf=0であると判定された場合)は、本処理は、終了する。
一方、非ゼロ係数が存在する(非ゼロ係数が1個以上である)と判定された場合(すなわち、cbf=1であると判定された場合)は、本処理は、ステップS63に進む。
ここで、cbfは、輝度信号(Y信号)及び色差信号(Cb信号及びCr信号)それぞれについて別のフラグとして復号されてもよい。この場合、画像復号装置200は、対象ブロックの輝度信号及び色差信号のブロック分割ツリー構造が異なる場合(Dual Tree)と両者が同じ場合(Single Tree)とで、以下のように判定してもよい。
画像復号装置200は、Dual Tree時のY信号では、Y信号のcbf=1の場合に、ステップS63へ進み、そうでないときは、本処理を終了すると判定してもよい。
画像復号装置200は、Dual Tree時のCb/Cr信号で且つCb/Cr信号の少なくともいずれか一つのcbfが1である場合は、ステップS63へ進み、そうでないときは、本処理を終了すると判定してもよい。
画像復号装置200は、Single Tree時のY信号、Cb信号及びCr信号の少なくともいずれか一つのcbfが1である場合は、ステップS63へ進み、そうでないときは、本処理を終了すると判定してもよい。
ステップS63において、画像復号装置200は、二次変換インデックス(lfnst#idx)を復号する。
ステップS64において、画像復号装置200は、スキャン順で、対象ブロックにおける最初の非ゼロ係数の発生位置を示す情報(last#coeff#pos)を復号する。
ステップS65において、画像復号装置200は、係数の復号処理を行う(図9参照)。なお、画像復号装置200は、上述の対象ブロックを分割したサブブロック単位で、かかる係数の復号処理を行う。
図9に示すように、ステップS641において、画像復号装置200は、最初に非ゼロ係数が発生したサブブロックが、対象ブロックの中のスキャン順で最初又は最後のサブブロックであるか否かについて判定する。
最初又は最後のサブブロックの何れかであると判定された場合、かかるサブブロックには非ゼロ係数が存在することは自明であるため、本処理は、ステップS645に進む。
最初又は最後のサブブロックの何れでもないと判定された場合、ステップS642において、画像復号装置200は、二次変換インデックス(st#idx)に基づいて、かかるサブブロックにおいて二次変換が適用されているか否について判定する。
かかるサブブロックにおいて二次変換が適用されている(二次変換が有効である)と判定された場合で、且つ、かかるサブブロックにおいて二次変換に伴い全係数がゼロであることが自明である(ゼロイングされている)場合、coded#sub#block#flagの復号が不要であるため、本処理は、ステップS646に進む。
一方、かかるサブブロックにおいて二次変換が適用されていない(二次変換が有効でない)と判定された場合、或いは、かかるサブブロックにおいて二次変換が適用されている場合でも非ゼロ係数が発生する可能性が残っている場合、本処理は、ステップS643に進む。
なお、ステップS641及びステップS642の順番は入れ替えられてもよい。
ステップS643において、画像復号装置200は、非ゼロ係数の存在の有無を示すフラグ(coded#sub#block#flag)を復号する。
ステップS644において、画像復号装置200は、coded#sub#block#flagに基づいて、かかるサブブロック内の非ゼロ係数の存在有無について判定する。
画像復号装置200は、coded#sub#block#flagの値が0である場合には、非ゼロ係数が存在しないと判定し、本処理は、ステップS646に進む。
一方、画像復号装置200は、coded#sub#block#flagの値が1である場合には、非ゼロ係数が存在すると判定し、本処理は、ステップS645に進む。
ステップS645において、画像復号装置200は、サブブロック内の各係数のレベル値を復号する。
ステップS646において、画像復号装置200は、本処理対象のサブブロックが、最終ブロックであるか否かについて判定する。
最終ブロックでないと判定された場合は、本処理は、ステップS641に進み、スキャン順で次のサブブロックに移って本処理を再開し、最終ブロックであると判定された場合は、本処理は、終了する。
上述の逆二次変換適用有無判定方法及び係数の復号方法を用いることで、以下2つの効果が期待できる。
1つ目の効果は、二次変換インデックスを対象ブロックの係数の復号処理前に実施することで、従来技術で二次変換の適用有無判定に必要であった係数の復号処理を省略することができるということである。
具体的には、従来技術では、二次変換の適用有無判定に、2つのカウンタ(対象ブロックで発生した非ゼロ係数の個数測定カウンタおよび二次変換が有効時にゼロ係数の発生が自明な領域に対して発生した非ゼロ係数の発生カウンタ)を用いる必要があったが、本実施形態に係る技術を導入することで、いずれも省略することができる。
2つ目の効果は、二次変換が有効な場合、従来技術では、二次変換対象ブロックで全係数ゼロが自明なサブブロックに対して、coded#sub#block#flagを冗長に復号又は符号化する必要があった。これに対して、本実施形態に係る技術を用いれば、かかる処理を省略することができるため、符号化性能の向上が期待できるということである。
<変更例1>
以下、図10を参照して、上述の第1実施形態の変更例1について、上述の第1実施形態との相違点に着目して説明する。
図10に示すフローチャートでは、図8に示すフローチャートに存在していなかったステップS66が、ステップS63の前に追加されている。
ここで、二次変換が明らかに有効ではない場合、二次変換インデックスの伝送が冗長になるため、図10では、かかるステップS66が追加されている。
例えば、二次変換の適用対象がイントラピクチャ或いはイントラブロックに限定される場合、所定条件に対象ブロックがイントラピクチャ或いはイントラブロックであるか否かについての判定を追加してもよい。
また、1つの符号化ブロックが、複数の予測ブロック又は変換ブロックに分割される場合は、二次変換の適用対象となる変換ブロックが増えるため、符号化性能の改善が期待できる一方で、符号化処理及び復号処理の遅延の増大が考えられる。
そのため、所定条件に、例えば、非特許文献1に記載の符号化ブロックを複数に分割してのイントラ予測(イントラ細分割予測)が有効時には、二次変換を無効として扱うことで、意図しない処理遅延の増大を抑制することができる。したがって、所定条件に、対象ブロックに対してイントラ細分割予測が適用されるか否かについての判定を追加してもよい。
<変更例2>
以下、上述の第1実施形態の変更例2について、上述の第1実施形態及び変更例1との相違点に着目して説明する。
上述の第1実施形態では、図8に示すように、二次変換インデックスの復号を符号化ブロック単位で行う例について説明した。
本変更例2では、符号化ブロックが複数の変換ブロックに分割される場合は、変換ブロック単位で二次変換インデックスの復号を行うように構成されていてもよい。
かかる構成によれば、二次変換インデックスを異なる変換ブロック単位で復号できることによって、二次変換の適用ブロック数が増大し、符号化性能の向上が期待できる。
<第2実施形態>
以下、図11を参照して、本発明の第2実施形態について、上述の第1実施形態との相違点に着目して説明する。
本実施形態では、図11に示すように、二次変換の適用有無に応じた対象ブロックの最初に非ゼロ係数が発生する位置情報(last#coeff#pos)の復号方法を制御するように構成されている。
本実施形態は、last#coeff#posの復号方法に関して上述の第1実施形態1と異なる(図8参照)。本実施形態は、それ以外の部分については上述の第1実施形態と同様の構成を有しているため、説明を省略する。
例えば、非特許文献2では、二次変換が有効なブロックで、対象ブロックサイズが4x4又は8x8である場合、二次変換の対象領域に対する非ゼロ係数の発生位置及び個数をそれぞれ最左上のサブブロック且つ8個と限定した。
このとき、非ゼロ係数の発生位置は、サブブロックのスキャン順を考慮すれば、図11のように特定できる。
言い換えれば、二次変換が有効な場合、last#coeff#posが、図11に記載のスキャン順8~15を示すことはあり得ない。
そのため、last#coeff#posは、通常、x座標値及びy座標値のプレフィックス及びサフィックスにより復号されるが、二次変換が有効な場合で且つ対象ブロックの非ゼロ係数発生位置及び個数が限定される場合は、last#coeff#posの復号方法を、以下のように修正してもよい。
例えば、last#coeff#posを係数のスキャン順で、非ゼロ係数が発生する可能性のある0~7を範囲として、3ビットのインデックスで伝送できる。
従来技術では、x座標値及びy座標値が、サブブロックに対してそれぞれ2ビットで表現されていたため、その分、符号量が節約でき、結果的に、符号化性能の向上効果が期待できる。
<第3実施形態>
以下、図12及び図13を参照して、本発明の第3実施形態について、上述の第1実施形態及び第2実施形態との相違点に着目して説明する。
本実施形態は、二次変換適用有無判定方法と係数の復号方法に関して第1実施形態1と異なる(図8参照)。本実施形態は、それ以外の部分については上述の第1実施形態と同様の構成を有しているため、説明を省略する。
図12及び図13は、本実施形態に係る画像復号装置200における二次変換適用有無判定方法及び係数の復号方法の一例を示すフローチャートである。以下、かかるフローチャートを用いて、本実施形態に係る画像復号装置200の動作の一例について説明する。
図12に示すように、ステップS61において、画像復号装置200は、図8に示すステップS61と同様に、対象ブロックの非ゼロ係数の存在有無を示すフラグ(cbf)を復号する。
ステップS62において、画像復号装置200は、図8に示すステップS62と同様に、cbfに基づいて、非ゼロ係数が存在するか否かについて判定する。
非ゼロ係数が存在しない(非ゼロ係数が0個である)と判定された場合(すなわち、cbf=0であると判定された場合)は、本処理は、ステップS91に進む。
一方、非ゼロ係数が存在する(非ゼロ係数が1個以上である)と判定された場合(すなわち、cbf=1であると判定された場合)は、本処理は、ステップS64に進む。
ステップS64において、画像復号装置200は、図8に示すステップS64と同様に、スキャン順で、対象ブロックにおける最初の非ゼロ係数の発生位置を示す情報(last#coeff#pos)を復号する。
ステップS93において、画像復号装置200は、図13に示す係数の復号処理を行う。図13に示す係数の復号処理は、図9に示すステップS642を含まない点を除いて、図9に示す係数の復号処理と同様である。
ステップS91において、画像復号装置200は、後述する所定条件が満たされているか否かについて判定する。かかる所定条件が満たされていると判定された場合、本動作は、ステップS92に進み、かかる所定条件が満たされていないと判定された場合、本動作は、終了する。
ここで、所定条件は、対象ブロックサイズによる二次変換インデックスの復号の有無という条件であってもよい。
例えば、画像復号装置200は、ステップS91において、対象の符号化ブロックの幅又は高さの少なくともいずれかが64より大きいと判定したとき、ステップS92において、二次変換インデックスを復号しないと判定してもよい。かかる判定による効果は、以下の通りである。
非特許文献3では、仮想パイプラインデータユニット(VPDU:Virtual Pipeline Data Units)と呼ばれるデコーダのパイプライン処理単位を維持するためのツールが採用されている。ここで、非特許文献3では、VPDUサイズは、64x64画素と設定されており、変換ブロックの幅及び高さの最大値は、64画素と設定されている。
そのため、仮に、対象の符号化ブロックの幅又は高さのいずれかが64画素よりも大きい場合は、変換ブロックの幅及び高さが64画素以下になるように分割される。
例えば、符号化ブロックサイズが128×128画素である場合は、当該符号化ブロック内に64x64画素の変換ブロックが4つ含まれることになる。変換ブロックの最大サイズ及びVPDUのサイズが同じ大きさに規定されているため、変換ブロック毎に処理を行うことで、VPDUで規定するパイプライン処理を維持することができる。
符号化ブロック内に複数の変換ブロックが含まれる場合、画像復号装置200は、全ての変換ブロックについて、図12に示すステップS61、S62、S64及びS93のそれぞれが実施した後、ステップS91を実施する。
したがって、符号化ブロックの幅又は高さの少なくともいずれかが64画素より大きいとき、二次変換インデックスの復号制御を行うために、対象ブロックを構成する全てのVPDUの処理が完了するのを待たなければならず、デコーダのパイプライン処理が遅延してしまう。
そこで、上述のように、二次変換インデックスの復号を制限しておけば、この処理遅延を回避できる効果が期待できる。
また、所定条件は、非ゼロ係数の発生位置情報(last#coeff#pos)又は対象サブブロックの非ゼロ係数の発生有無を示すフラグ(coded#sub#block#flag)を用いて判定される二次変換インデックスの復号の有無という条件であってもよい。
例えば、所定条件は、非特許文献2に示す対象ブロックが4×4画素や8×8画素である場合のように、二次変換適用時の非ゼロ係数の発生領域が限定される場合、非ゼロ係数が発生し得ない領域に対して、last#coeff#pos又はcoded#sub#block#flagが非ゼロ係数の存在を示していないことという条件を含んでもよい。
例えば、所定条件は、対象ブロックのcbfがゼロでないこと或いは対象ブロックのlast#coeff#posがDC成分(直流成分)を指していないことという条件を含んでもよい。
なお、last#coeff#pos及びcbfによる判定は、対象ブロックの輝度信号(Y信号)及び色差信号(Cb信号及びCr信号)のブロック分割ツリー構造が異なる場合(Dual Tree)と両者が同じ場合(Single Tree)とで、以下のように判定してもよい。
Dual Tree時のY信号で且つlast#coeff#posがDC成分又はcbfが0である場合、画像復号装置200は、二次変換インデックスについて復号しない。
Dual Tree時のCb/Cr信号で且つCb/Cr信号の両方についてlast#coeff#posがDC成分又はcbfが0である場合、画像復号装置200は、二次変換インデックスについて復号しない。
Single Tree時のY信号、Cb信号及びCr信号の全てについてlast#coeff#posがDC成分又はcbfが0である場合、画像復号装置200は、二次変換インデックスについて復号しない。
或いは、Single Tree時は、Y信号のlast#coeff#posがDC成分又はcbfが0である場合、画像復号装置200は、二次変換インデックスについて復号しないとしてもよい。
かかる構成によれば、Cb信号及びCr信号のcbf及びlast#coeff#posの値に依存せずに二次変換インデックスの復号の有無について判定することができる。
以上の判定において、二次変換インデックスが復号されない場合は、暗黙的に二次変換インデックスが0であるとして扱われる(すなわち、二次変換を適用しないと判定される)。
上述のように、二次変換が適用される時の非ゼロ係数の発生領域が限定される場合、非ゼロ係数が発生し得ない領域に対して、last#coeff#pos又はcoded#sub#block#flagが非ゼロ係数の存在を示す場合、対象ブロックに対して二次変換が適用されないことは明らかである。
そのため、例えば、所定条件の判定において、対象ブロックが4×4画素又は8×8画素である場合で、非ゼロ係数が発生し得ない領域に対して、last#coeff#pos又はcoded#sub#block#flagが非ゼロ係数の存在を示す場合は、二次変換インデックスを復号しないとすることで、二次変換インデックスの伝送にかかる符号量を節約でき、結果的に符号化性能の向上効果を期待することができる。
また、last#coeff#posが、対象ブロックのDC成分を指す場合、対象ブロック内の非ゼロ係数は、DC成分のみである。一方で、二次変換が効果を発揮するのは、二次変換が非ゼロの一次変換係数を密集させるという性質上、非ゼロの一次変換が高周波成分にも存在する場合であるため、非ゼロの一次変換係数がDC成分のみである場合には、二次変換を適用しなくてもよい。
そのため、例えば、last#coeff#posが、対象ブロック内のDC成分を指す場合、二次変換インデックスを復号しないと判定することで、二次変換インデックスの伝送にかかる符号量を節約でき、結果的に符号化性能の向上効果を期待することができる。
次に、対象ブロックのcbfが0である場合、上述の通り、対象ブロック内の非ゼロ係数は、皆無であることから、対象ブロックには、二次変換が適用されないことが自明であるため、二次変換インデックスを復号しないと判定することで、二次変換インデックスの伝送にかかる符号量を節約でき、結果的に符号化性能の向上効果を期待することができる。
ステップS92において、画像復号装置200は、二次変換インデックスを復号して、本動作を終了する。
<変更例3>
以下、変更例3について、上述の第3実施形態との相違点に着目して説明する。変更例3では、last#coeff#pos及びcoded#sub#block#flagを用いて二次変換インデックス復号の有無について判定するように構成されている。
上述の第3実施形態では、対象ブロックの二次変換インデックスの復号の有無について、last#coeff#pos及びcoded#sub#block#flagが、二次変換が適用される時に非ゼロ係数の発生が制限される領域に対して非ゼロ係数の存在を示す場合に、二次変換インデックスについて復号しないと判定していた。
一方、変更例3では、例えば、二次変換が適用される場合に、処理簡素化のために、対象ブロックの高周波成分が全てゼロになる(ゼロイングされる)場合は、coded#sub#block#flagによる判定は、明らかに不要であるため、last#coeff#posのみから二次変換の復号の有無について判定してもよい。
<変更例4>
以下、変更例4について、上述の第3実施形態との相違点に着目して説明する。
上述の実施例3では、二次変換インデックスの復号判定を符号化ブロック単位で行う例について説明した。
一方、変更例4では、符号化ブロックが複数の変換ブロックに分割される場合は、変換ブロック単位で、かかる判定を行ってもよい。かかる構成によれば、二次変換インデックスの復号を、変換ブロック単位で判定することによって、二次変換適用の可能性がある対象ブロック数が増大し、結果的に符号化性能の向上を期待することができる。
なお、上述の画像符号化装置100及び画像復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、上述の実施形態では、本発明を画像符号化装置100及び画像復号装置200への適用を例にして説明したが、本発明は、かかる例に限定されるものではなく、画像符号化装置100及び画像復号装置200の各機能を備えた画像符号化/復号システムにも同様に適用できる。
本発明によれば、従来方式では、係数の復号時に二次変換の適用有無を判定するために非ゼロ係数の個数をカウントする追加処理が必要であったが、本発明のような構成とすることで追加処理が不要となり、処理の高速化又は負荷低減が期待できる。
さらに、本発明によれば、二次変換が適用されていない又は効果が低いと判断できるブロックについて、二次変換インデックスの復号を省略できるため、符号化性能の向上が期待できる。