以下、本発明の実施の形態について、図面を参照しながら説明する。
[実施形態1]
図1は、本発明の実施形態1にかかる符号化装置1aの構成を示す概略ブロック図である。同図に示すように、符号化装置1aは、A/D(アナログディジタル変換回路)2、画面並べ替えバッファ3、減算回路4、直交変換回路7、量子化回路8、可逆符号化回路10、蓄積バッファ11、逆量子化回路13、逆直交変換回路14、デブロックフィルタ回路15、フレームメモリ16、加算回路17、アクティビティ算出回路42a、レート制御回路43、動き予測・補償回路44、イントラ・インター判定回路45a、イントラ予測回路46、領域情報設定回路51a、領域情報メモリ52aを含んで構成される。これらの各構成要素は、映像を符号化するための一連の処理を行うためのものである。
以下では、符号化のための一般的な構成についてまず説明し、その後、平坦領域におけるブロック毎の予測モードの切り換わりを制限するための構成について説明する。
A/D2は、ビデオ信号をアナログディジタル変換して画像データを出力する。
画面並べ替えバッファ3は、A/D2から出力される画像データを入力し、符号化処理に係るGOP(Group of Pictures)構造に応じて、画像データのフレームを並べ替えて出力する。
アクティビティ算出回路42aは、処理対象の画像データについて、ブロック(縦16画素、横16画素からなる矩形のブロックであるマクロブロック、またはマクロブロックを更に縦横2分割したサブマクロブロック)毎に画像の平坦度を示すパラメータ(アクティビティ)を計算、出力する。アクティビティの値は画像データの複雑さを示している。具体的なアクティビティとしては、例えばマクロブロック単位でアクティビティを導出する場合、式(1)に示すようなマクロブロックに含まれる画素値の分散が用いられる。ただし、式(1)における変数actが該分散である。また、Pkはk番目の画素の画素値であり、Pの上に線を引いてなる記号は、各Pkの平均値である。また、ここではkを、1から256までの自然数であるとしている。このようにしているのは、マクロブロックの画素数が16×16=256であるためである。
レート制御回路43は、アクティビティ算出回路42aにより得られるアクティビティと後述する蓄積バッファ11の空き容量とに基づき、レート制御の処理を実行する。レート制御回路43は、レート制御の処理結果に応じて量子化パラメータを取得し、出力する。
イントラ・インター判定回路45aは、後述するイントラ予測回路46から、ブロック毎に誤差値SA(T)D、オフセット値SA(T)D0の入力を受け付ける。そして、ブロック毎に、イントラ予測モードにかかる全ての予測モード(イントラ予測画像データ生成方法)について、それぞれコスト値Cost(Mode)を算出する。ここで、変数Modeは予測モードを示す。なお、イントラ・インター判定回路45aは、イントラ予測モードにかかる全ての予測モードではなく、その中から処理速度の観点などに基づいて選択された1以上の予測モードのみについて、それぞれコスト値Cost(Mode)を算出することとしてもよい。
また、イントラ・インター判定回路45aは、ブロック毎に、後述する動き予測・補償回路X44からコスト値Cost(Mode)の入力を受け付ける。こうして受け付けられるコスト値Cost(Mode)は、ブロック毎に、インター予測モードにかかる全ての予測モード(予測方向、参照画像、動きベクトル、及び分割方法の組み合わせ)又はその中から後述のようにして選択された1以上の予測モードについて、それぞれ算出されたコスト値Cost(Mode)のうち、その値が最も小さいものである。
イントラ・インター判定回路45aは、算出したコスト値Cost(Mode)と、動き予測・補償回路44から入力されたコスト値Cost(Mode)と、を比較し、最もコスト値Cost(Mode)が小さくなる予測モードをブロック毎に決定する。そして、決定した予測モードによる予測画像データを出力するよう、イントラ予測回路46又は動き予測・補償回路44に指示する。
なお、イントラ・インター判定回路45aは、式(2)により、各ブロックについてのコスト値Cost(Mode)を算出する。
なお、誤差値SA(T)Dは、各ブロックについて、画像データと予測モードModeにおける予測画像データとの画素値差分の絶対値誤差和(SAD)、又は該画素値差分を直交変換して得られる直交変換係数の絶対値和(SATD)のいずれかである。いずれであるにしても、誤差値SA(T)Dの値が小さいことは、画像データと予測画像データの差分が小さい、つまり、差分データの符号量が小さくなることを示唆し、ひいては、予測モードModeにおける符号化効率が高くなることを示唆する。
また、オフセット値SA(T)D0は、イントラ予測モード情報の符号化にかかるコスト(例えばイントラ予測モード情報の符号量)を示す。
動き予測・補償回路44は、イントラ・インター判定回路45aの制御により、ブロック毎に、インター予測モードにかかる全ての予測モード(予測方向、参照画像、動きベクトル、及び分割方法の組み合わせ)について、式(2)を用い、それぞれコスト値Cost(Mode)を算出する。ただし、この場合、オフセット値SA(T)D0は、インター予測モード情報の符号化にかかるコスト(例えばインター予測モード情報の符号量)を示す。なお、動き予測・補償回路44も、イントラ・インター判定回路45aと同様、インター予測モードにかかる全ての予測モードではなく、その中から処理速度の観点などに基づいて選択された1以上の予測モードのみについて、それぞれコスト値Cost(Mode)を算出することとしてもよい。
そして、算出した各コスト値Cost(Mode)を比較し、最もその値が小さいCost(Mode)をイントラ・インター判定回路45aに出力する。また、この出力に応じたイントラ・インター判定回路45aからの指示に応じて予測画像データを生成し、イントラ・インター判定回路45aを介して、減算回路4に出力する。
イントラ予測回路46は、イントラ・インター判定回路45aの制御により、イントラ予測モードにかかる全ての予測モード(イントラ予測画像データ生成方法)について、上記誤差値SA(T)D及びオフセット値SA(T)D0を算出し、イントラ・インター判定回路45aに出力する。また、この出力通知に応じたイントラ・インター判定回路45aからの指示に応じて予測画像データを生成し、イントラ・インター判定回路45aを介して、減算回路4に出力する。
減算回路4は、画面並べ替えバッファ3から画像データの入力を受け付け、イントラ予測回路46や動き予測・補償回路44により生成される予測画像との差分データを生成して出力する。
直交変換回路7は、減算回路4から差分データの入力を受け付け、離散コサイン変換などの直交変換処理を実行し、その処理結果として得られる変換係数データを出力する。
量子化回路8は、レート制御回路43から入力される量子化パラメータを用いて、直交変換回路7が出力する変換係数データを量子化して出力する。具体的には、変換係数データを量子化パラメータで決定される除数によって除算し、その結果を小数点以下を切り捨てることにより、量子化された変換係数データを取得し、出力する。この処理では、量子化パラメータの値が大きいほど、対応する上記除数も大きくなり、結果として切り捨てられる情報量も多くなる。
可逆符号化回路10は、量子化回路8の出力データを可変長符号化、算術符号化などにより可逆符号化処理する。また、可逆符号化回路10は、ブロック毎に、イントラ予測回路46や動き予測・補償回路44が生成する各予測モード情報などを、ヘッダ情報として設定する処理も行う。可逆符号化回路10は、以上の各処理の結果得られる符号化データを出力する。
蓄積バッファ11は、可逆符号化回路10が出力した符号化データを蓄積し、後続する伝送路の伝送速度に応じて出力する。こうして出力された符号化データは、その符号化データを読み出す装置又は受信する装置によって復号され、映像として再生される。これらの装置には、従来公知のものを使用して差し支えない。
逆量子化回路13は、量子化回路8の出力データを逆量子化処理し、これにより量子化回路8に入力された変換係数データを再生する。
逆直交変換回路14は、逆量子化回路13の出力データを逆直交変換処理し、直交変換回路7に入力された差分データを再生する。
加算回路17は、逆直交変換回路14から出力される再生差分データに、適宜、イントラ予測回路46や動き予測・補償回路44により生成される予測画像データを加算し、再生画像データとして出力する。
デブロックフィルタ回路15は、加算回路17が出力した再生画像データからブロック歪を除去して出力する。
フレームメモリ16は、デブロックフィルタ回路15が出力したブロック歪除去後の再生画像を、参照画像として用いるために記録する。
以下、平坦領域におけるブロック毎の予測モードの切り換わりを制限するための構成について説明する。
領域情報設定回路51aは、アクティビティ算出回路42aからアクティビティ、レート制御回路43から量子化パラメータ、イントラ予測回路46や動き予測・補償回路44から各予測モード情報、の入力をそれぞれ受け付ける。そして、そのうち上記アクティビティ及び量子化パラメータの値を用いて、画像データ中の平坦領域を抽出し、抽出した平坦領域を特定するための平坦領域情報と、該平坦領域についての代表的な予測モード(該平坦領域情報により示される平坦領域に属する各ブロックについて予測モードを決定する際の基準とする基準予測モード)を示す基準予測モード情報と、を対応付けてなる領域情報を生成し、出力する。この基準予測モードを決定するための処理については後述する。
領域情報メモリ52aは、領域情報設定回路51aが出力する領域情報を少なくとも1画像データ分格納する。
図2は、1画像データ分の領域情報の具体的な格納形式の一例を示すイメージ図である。同図に示す領域情報の格納形式においては、領域情報設定回路51aは、1画像データに含まれる平坦領域を1つの平坦領域として取り扱い、該1つの平坦領域についての基準予測モード情報を、そのまま領域情報として領域情報メモリ52aに格納する。なお、平坦領域が存在しない画像データについては、無効な予測モードに関する情報(無効予測モード情報)が領域情報として格納される。
イントラ・インター判定回路45aは、領域情報メモリ52aに格納される領域情報に基づいて動き予測・補償回路X44とイントラ予測回路X46を制御し、ブロック毎に予測モードを決定する。この場合において、イントラ・インター判定回路45aは、平坦領域に属するブロックの間で予測モードが統一されるよう、各ブロックについての予測モードを決定する。
以下、具体的に説明する。イントラ・インター判定回路45aは、画像データ中の各ブロックについて、所定の順序で順次予測モードを決定していく。領域情報設定回路51aは、こうして順次決定される予測モードを動き予測・補償回路44又はイントラ予測回路46を介して順次受け取り、平坦領域に属するブロックのうち、最初に予測モードが決定されるブロックについての予測モードを、基準予測モードとして決定する。領域情報設定回路51aは、こうして決定した基準予測モードに基づいて領域情報を生成し、領域情報メモリ52aに記憶させる。
イントラ・インター判定回路45aは、領域情報メモリ52aに基準予測モード情報が記憶されている場合に、平坦領域に属するブロックについて、該基準予測モード情報により示される基準予測モードに基づき、予測モードを決定する。より具体的には、基準予測モードを、該ブロックの予測モードとする。
以下、フローチャートを用いて、上述した予測モード決定の方法についてより詳細に説明する。
図3は、符号化装置1aが、領域情報の初期化を行う際の動作フローチャートの一例を示す図である。同図に示す動作フローチャートの処理は、1つの画像データの符号化処理の開始直前に呼び出される。
符号化処理開始後、領域情報設定回路51aは、領域情報メモリ52aの内容を初期化し(ステップSF01)、処理を終了する。なお、初期化とは、領域情報の初期値として上記無効予測モード情報を格納することを意味する。つまり、画像データの符号化の開始直前の時点では、平坦領域は存在しないものとして領域情報が設定される。
図4は、符号化装置1aが、各ブロックを符号化する際の動作フローチャートの一例を示す図である。
アクティビティ算出回路42aは、符号化対象のブロックについて、アクティビティを求める(ステップSF11)。続いて、レート制御回路43は、量子化パラメータを求める(ステップSF12)。
次に、領域情報設定回路51aは、ステップSF11で求められたアクティビティが所定の閾値THA1以下であるか否か、つまり、符号化対象のブロックが平坦であるか否かを、判定する(ステップSF13)。ここで、閾値THA1は、定数であってもよいし、量子化パラメータなどに依存する変数であってもよい。より具体的には、閾値THA1は、ステップSF12で求められた量子化パラメータの値が所定値以上の場合は所定の正の定数に設定され、該量子化パラメータの値が所定値未満の場合はゼロに設定される変数である。
アクティビティの値が閾値THA1以下でない場合は(ステップSF13における否定判定)、イントラ・インター判定回路45aは予測モードを決定し(ステップSF14)、符号化装置1aの処理は後述するステップSF19に移行する。ステップSF14における予測モードの決定動作は、イントラ予測モードにかかる全ての予測モード及びインター予測モードにかかる全ての予測モードを含む全ての予測モードの中から最適なものを決定するような動作であってもよいし、処理速度の観点などから限定された予測モードの中から最適なものを決定するような動作であってもよい。
一方、アクティビティの値が閾値THA1以下である場合には(ステップSF13における肯定判定)、イントラ・インター判定回路45aは、領域情報が初期値(無効予測モード情報)のままであるか否かを判定する(ステップSF15)。
領域情報が初期値のまま更新されていない場合には(ステップSF15における肯定判定)、イントラ・インター判定回路45aは、インター予測モードにかかる全ての予測モード又はそのうちの一部の中から最適なものを決定する(ステップSF16)。領域情報設定回路A51aは、決定された予測モードを示す予測モード情報で領域情報メモリ52a内の領域情報を更新し(ステップSF17)、符号化装置1aの処理は後述するステップSF19に移行する。つまり、1つの画像データを構成する全てのブロックを符号化する過程において、最初に平坦であると判定されたブロックについて決定された予測モードが、該画像データ内の平坦領域における代表的な予測モードとして、領域情報メモリ52aに保存されることとなる。
なお、ステップSF16において、インター予測モードのみに限定して予測モードを決定するのは、アクティビティの低い領域においてイントラ予測モードが選択されないようにすることで画質の劣化をより抑えることができるためであるが、ステップSF14同様、全ての予測モードの中から最適なものを決定するようにしても構わない。
なお、ステップSF16においては、決定する予測モードの候補をインター予測モードにかかる全ての予測モードのみに完全に限定するのではなく、イントラ予測モードにかかる全ての予測モードも含む全ての予測モードを候補とし、かつインター予測モードにかかる予測モード候補が選択され易くすることとしてもよい。以下、このための具体的な処理について説明する。
動き予測・補償回路44は、インター予測モードに関するオフセット値SA(T)D0を、式(3)によって計算する。ここで、QP0(QP)は、量子化パラメータQPを量子化スケールに変換する関数であり、オフセット値SA(T)D0のオーダーを誤差値SA(T)Dと揃える目的で導入されているものである。
他方、イントラ・インター判定回路45aは、イントラ予測モードに関するオフセット値SA(T)D0を、式(4)によって計算する。
ここで、MBactは、アクティビティ算出回路42aにより得られるアクティビティであり、f(MBact)は、アクティビティMBactを変数とする所定の単調減少関数である。この関数f(MBact)を適切に定義してオフセット値SA(T)D0を算出することで、アクティビティMBactの値が小さいときに、イントラ予測モードにかかるオフセット値SA(T)D0、更には、イントラ予測モードにかかるコスト値Cost(Mode)が大きくなるようにすることができる。一方、このようにしてもインター予測モードに関するオフセット値SA(T)D0には影響がないので、インター予測モードにかかるコスト値Cost(Mode)に変化はなく、結局、イントラ予測モードの選択頻度が下がることになる。すなわち、インター予測モードにかかる予測モード候補が選択され易くなる。
さて、領域情報がステップSF17の処理により既に更新されていた場合は(ステップSF15における否定判定)、イントラ・インター判定回路45aは、インター予測モードにかかる全ての予測モード又はそのうちの一部の中から領域情報の内容に応じた制限の下で予測モードを決定し(ステップSF18)、符号化装置1aの処理は後述するステップSF19に移行する。
ステップSF18における制限の具体的な内容としては、参照画像を、領域情報として保持されている基準予測モード情報により示される参照画像と同一に制限するというもの、予測方向を、領域情報として保持されている基準予測モード情報により示される予測方向と同一に制限するというもの、動きベクトルを、領域情報として保持されている基準予測モード情報により示される動きベクトルと同一に制限するというもの、分割方法を、領域情報として保持されている基準予測モード情報により示される分割方法と同一に制限するというもの、などが挙げられる。また、ステップSF17において領域情報として格納する情報は、必ずしも各予測モード情報の全てでなくともよく、必要に応じ、例えば参照画像を示す情報だけ、或いは動きベクトルを示す情報だけ(インター予測モード情報の場合)、というようにしてもよい。
なお、ステップSF18において、インター予測モードのみに限定して予測モードを決定するのは、ステップSF16と同様に理由によるが、ステップSF14同様、全ての予測モードの中から最適なものを決定するようにしても構わない。また、ステップSF18で決定された予測モードにかかるコスト値が所定の閾値THCOST1以上の場合は、予測モードの制限に伴う符号化効率の極端な低下を回避するために、制限を解除し、再度全ての予測モードの中から最適な予測モードを決定しなおすようにしてもよい。
そして最後に、符号化装置1aは、決定された予測モードを用いて符号化対象のブロックの符号化を行い(ステップSF19)、処理を終了する。
図5は、符号化対象である画像データの一例を示すイメージ図である。図5(a)に示すように、ここでは、画像データは横8×縦6の48ブロックに分割されて符号化されるものとする。図5(b)は、図5(a)に示す画像データを構成する各ブロックに付与されるアドレスを示すイメージ図である。符号化装置1aは、図5(b)に示すアドレスの値の小さいブロックから順に符号化を行う。図5(c)は、図5(a)に示す画像データについてのアクティビティのマップの一例を示すイメージ図である。図5(d)は、図5(a)に示す原画像を、符号化装置1aにより符号化する過程で検出される平坦領域の一例を示すイメージ図である。
例えば、上記閾値THA1が定数値10であるとすると、図5(c)に示すアクティビティのマップにおいて、アクティビティの値が3、5、7となるブロックが平坦であると判定される。結果、符号化装置1aは、図5(d)に示す領域ND01、領域ND02、領域ND03を1つの平坦領域とみなし、該平坦領域の中で最初に処理されるブロック(図5(d)において網掛けされている、アドレス9のブロック)のために決定された予測モードを、平坦領域における代表的な予測モード(基準予測モード)とする。そして、平坦領域に属する他のブロックの処理においては、参照画像や動きベクトルが、上記代表的な予測モードと同一なものとなるよう、予測モードの決定動作に制限を加えるのである。具体的には、基準予測モードを、平坦領域に属する他のブロックの予測モードとして決定するのである。
以上の説明から、符号化装置1aによると、アクティビティが上記閾値THA1以下である全てのブロックについて、参照画像や、予測方向、動きベクトル、分割方法の統一がなされる。結果、図18(d)に示す予測画像データに見られるようなブロック境界におけるギャップが軽減され、ひいては再生画像の主観的な画質が向上する。また、ステップSF16、ステップSF18においては、制限された予測モードの中から最適な予測モードを決定するため、常に全ての予測モードの中から予測モードを決定する場合と比べて、処理時間が短縮される。
[実施形態2]
図6は、本発明の実施形態2にかかる符号化装置1bの構成を示す概略ブロック図である。同図に示すように、符号化装置1bの構成は、符号化装置1aにおいて、イントラ・インター判定回路45a、領域情報設定回路51a、及び領域情報メモリ52aに代えてイントラ・インター判定回路45b、領域情報設定回路51b、及び領域情報メモリ52bを含むものとなっている。以下では、イントラ・インター判定回路45a、領域情報設定回路51a、及び領域情報メモリ52aと、イントラ・インター判定回路45b、領域情報設定回路51b、及び領域情報メモリ52bと、の相違点を中心に説明する。
領域情報設定回路51bは、アクティビティ算出回路42aから入力されるアクティビティ及びレート制御回路43から入力される量子化パラメータの値を用いて、画像データ中の平坦領域を抽出する。本実施形態では、平坦領域は空間的に連続する1又は複数のブロックにより構成される領域であり、場合により、領域情報設定回路51bは、1つの画像データにおいて複数の平坦領域を抽出する。ここで、2つのブロックA、Bが「空間的に連続する」とは、ブロックAの一辺とブロックBの一辺とが接している状況のことを指す。
領域情報設定回路51bは、こうして抽出した1又は複数の平坦領域をそれぞれ特定するための平坦領域情報と、該各平坦領域それぞれについての代表的な予測モード(該平坦領域情報により示される各平坦領域にそれぞれ属する各ブロックについて予測モードを決定する際の基準とする基準予測モード)を示す基準予測モード情報と、からなる領域情報を生成し、出力する。この基準予測モードを決定するための処理については後述する。
領域情報メモリ52bは、領域情報設定回路51bが出力する領域情報を少なくとも1画像データ分格納する。
図7は、1画像データ分の領域情報の具体的な格納形式の一例を示すイメージ図である。同図に示す領域情報の格納形式においては、平坦領域毎に識別子が割り当てられている。領域情報設定回路51bは、各ブロックに、いずれかの平坦領域に属する場合にはその平坦領域の識別子を、該ブロックがいずれの平坦領域にも属さない場合には無効な識別子を、対応付けてなる平坦領域情報(図中の領域MB01)と、各平坦領域それぞれについての代表的な予測モード(基準予測モード)を示す基準予測モード情報(図中の領域MB02)と、を領域情報メモリ52bに格納する。
イントラ・インター判定回路45bは、領域情報メモリ52bに格納される領域情報に基づいて動き予測・補償回路44とイントラ予測回路46を制御し、ブロック毎に予測モードを決定する。この場合において、イントラ・インター判定回路45bは、平坦領域毎に、該平坦領域に属するブロックの間で予測モードが統一されるよう、各ブロックについての予測モードを決定する。
以下、具体的に説明する。イントラ・インター判定回路45bは、画像データ中の各ブロックについて、所定の順序で順次予測モードを決定していく。領域情報設定回路51aは、こうして順次決定される予測モードを動き予測・補償回路44又はイントラ予測回路46を介して順次受け取り、平坦領域ごとに、各平坦領域に属するブロックのうち、最初に予測モードが決定されるブロックについての予測モードを、基準予測モードとして決定する。領域情報設定回路51bは、ある平坦領域について基準予測モードを決定すると、領域情報メモリ52bに記憶される領域情報において、該平坦領域についての基準予測モードを、決定した基準予測モードにより更新する。
イントラ・インター判定回路45bは、ある平坦領域に属するブロックについて予測モードを決定しようとする際、領域情報メモリ52bに該平坦領域についての基準予測モードが記憶されている場合、該基準予測モードに基づき、予測モードを決定する。より具体的には、該基準予測モードを、該ブロックの予測モードとする。
以下、フローチャートを用いて、上述した予測モード決定の方法についてより詳細に説明する。
図8は、符号化装置1bが、領域情報の初期化を行う際の動作フローチャートの一例を示す図である。同図に示す動作フローチャートの処理は、1つの画像データの符号化処理の開始直前に呼び出される。
符号化処理開始後、領域情報設定回路51bは、まず、処理対象ブロックのアドレスを示す変数ADDRをゼロに設定する(ステップSH01)。
次に、アクティビティ算出回路42aは、アドレスADDRのブロックについてアクティビティを求める(ステップSH02)。続いて、レート制御回路43は、量子化パラメータを求める(ステップSH03)。
次に、領域情報設定回路51bは、ステップSH02で求められたアクティビティが所定の閾値THA2以下であるか否か、つまり、アドレスADDRのブロックが平坦であるか否かを判定する。そして、平坦領域であると判定したブロックについては仮の識別子0を、平坦領域でないと判定したブロックについては無効であることを示す識別子−1を、それぞれ対応付けることにより、平坦領域情報(の一部分)を生成し、領域情報メモリ52bの領域MB01に保存する(ステップSH04)。ここで、閾値THA2は、定数であってもよいし、量子化パラメータなどに依存する変数であってもよい。より具体的には、閾値THA2は、ステップSH03で求められた量子化パラメータの値が所定値以上の場合は所定の正の定数に設定され、該量子化パラメータの値が所定値未満の場合はゼロに設定される変数である。
領域情報設定回路51bは、ステップSH04の処理が終了すると、変数ADDRの値が画像データに属する最後のブロックを指すか否かを判定する(ステップSH05)。そして、最後のブロックを指さない場合(ステップSH05における否定判定)、符号化装置1bは、変数ADDRの値を1増加した上で(ステップSH06)、その処理をステップSH02に戻す。
一方、変数ADDRの値が最後のブロックを指す場合(ステップSH05における肯定判定)、領域情報設定回路51bは、空間的に連続する平坦なブロック群毎に異なる識別子を付与し、領域情報メモリ52b内に、識別子毎の代表的な予測モードに関する情報(基準予測モード情報)を保持するための領域MB02を確保した上で、該領域MB02を初期化し(ステップSH07)、処理を終了する。なお、領域MB02の初期化とは、各識別子にそれぞれ無効予測モードを対応付ける基準予測モード情報を、領域MB02に記憶させることを意味する。
図9は、符号化装置1bが、各ブロックを符号化する際の動作フローチャートの一例である。
アクティビティ算出回路42aは、符号化対象のブロックについて、アクティビティを求める(ステップSI01)。続いて、レート制御回路43は、量子化パラメータを求める(ステップSI02)。なお、図8に示す動作フローチャートにおいても、結果的に画像データ内の全てのブロックについてのアクティビティと量子化パラメータを取得しているため、これらの値を保持しておくメモリを別途追加し、ステップSI01、SI02は、このメモリから値を読み出すだけの処理であるとしてもよい。
次に、イントラ・インター判定回路45bは、符号化対象のブロックが属する領域の識別子を領域情報メモリ52b内の領域MB01(平坦領域情報)から読み出し、読み出した識別子に基づいて、該ブロックが平坦領域に属するか否かを判定する(ステップSI03)。
符号化対象のブロックが平坦領域に属さないと判定された場合は(ステップSI03における否定判定)、イントラ・インター判定回路45bは、ステップSF14(図4)と同様の処理により予測モードを決定し(ステップSI04)、符号化装置1bの処理は後述するステップSI09に移行する。
一方、符号化対象のブロックが平坦領域に属すると判定された場合は(ステップSI03における肯定判定)、イントラ・インター判定回路45bは、該ブロックが属する平坦領域についての基準予測モードを領域情報メモリ52b内の領域MB02(基準予測モード情報)から読み出し、該基準予測モードが初期値(無効予測モード)のままであるか否かを判定する(ステップSI05)。
基準予測モードが初期値のまま更新されていない場合は(ステップSI05における肯定判定)、イントラ・インター判定回路45bは、ステップSF16(図4)と同様の処理により、インター予測モードにかかる全ての予測モード又はそのうちの一部の中から最適なものを決定する(ステップSI06)。領域情報設定回路A51bは、決定された予測モードにより、基準予測モード情報に含まれる基準予測モードを更新し(ステップSI07)、符号化装置1bの処理は後述するステップSI09に移行する。つまり、1つの平坦領域を構成するブロックのうち、最初に符号化されるマクロブロックについて決定された予測モードが、該平坦領域における代表的な予測モードとして、領域情報メモリ52b内の領域MB02に保存されることとなる。
一方、基準予測モードがステップSI07の処理により既に更新されていた場合は(ステップSI05における否定判定)、イントラ・インター判定回路45bは、ステップSF18(図4)と同様の処理により、インター予測モードにかかる全ての予測モード又はそのうちの一部の中から基準予測モードに応じた制限の下で予測モードを決定し(ステップSI08)、符号化装置1bの処理は後述するステップSI09に移行する。ここで、ステップSI08で決定された予測モードにかかるコスト値が所定の閾値THCOST2以上の場合は、予測モードの制限に伴う符号化効率の極端な低下を回避するために、制限を解除し、再度全ての予測モードの中から最適な予測モードを決定しなおすようにしてもよい。
そして最後に、符号化装置1bは、決定された予測モードを用いて符号化対象のブロックの符号化を行い(ステップSI09)、処理を終了する。
図10(a)は、図5(d)に示した平坦領域について、符号化装置1bにより付与される識別子を表示してなるイメージ図である。
例えば、閾値THA2が定数値10であるとすると、図5(c)に示すアクティビティのマップにおいて、アクティビティの値が3、5、7となるマクロブロックが平坦であると判定される。結果、符号化装置1bは、図10(a)に示す領域NE01、領域NE02、領域NE03を、それぞれ独立した平坦領域とみなし、各平坦領域の中でそれぞれ最初に処理されるブロック(図10(a)中、各平坦領域内において網掛けされている、アドレスが9、20、32のブロック)のために決定された予測モードを、それぞれ各平坦領域における代表的な予測モード(基準予測モード)とする。そして、各平坦領域に属する他のブロックの処理においては、参照画像や動きベクトルが、上記代表的な予測モードと同一なものとなるよう、予測モードの決定動作に制限を加えるのである。具体的には、基準予測モードを、平坦領域に属する他のブロックの予測モードとして決定するのである。
なお、図10(a)において、アドレスが32のブロックのみにより構成される領域NE03を1つの独立した平坦領域としているが、上下左右に隣接するブロックがいずれも平坦でないため、ブロック境界におけるギャップが画質劣化として問題となることはない。つまり、1つのブロックのみにより構成される領域を平坦領域として取り扱っても、再生画像の画質向上に資することはない。逆に、基準予測モードの決定等にかかる処理が必要となるため、符号化装置1bの処理量が増加してしまう。よって、単一のマクロブロックから構成される領域については、平坦領域として取り扱わないことが望ましい。具体的には、ステップSH07において、該ブロックに付与する識別子を無効な識別子とすることにより、事実上平坦領域でない領域として扱うようにしてもよい。図10(b)は、図10(a)に示した各平坦領域から、単一のブロックで構成される領域NE03を除外した状態を示している。
以上の説明から、符号化装置1bによると、空間的に連続する平坦領域毎に、参照画像や、予測方向、動きベクトル、分割方法を図ることができるようになる。結果、図18(d)に示す予測画像データに見られるようなマクロブロック境界におけるギャップが軽減され、ひいては再生画像の主観的な画質が向上する。また、ステップSI06、ステップSI08においては、制限された予測モードの中から最適な予測モードを決定するため、常に全ての予測モードの中から予測モードを決定する場合と比べて、処理時間が短縮される。
また、符号化装置1bは、空間的に不連続で、ブロック境界におけるギャップが発生し得ない平坦領域間では予測モードの統一を行わないため、符号化装置1aと比べて、符号化効率がさらに向上することが期待できる。
[実施形態例3]
図11は、本発明の実施形態3にかかる符号化装置1cの構成を示す概略ブロック図である。同図に示すように、符号化装置1cの構成は、符号化装置1bにおいて、A/D2、画面並べ替えバッファ3、アクティビティ算出回路42a、イントラ・インター判定回路45b、及び領域情報設定回路51bに代えて復号回路61、アクティビティ算出回路42c、イントラ・インター判定回路45c、及び領域情報設定回路51cを含むものとなっている。以下では、復号回路61について説明するとともに、アクティビティ算出回路42a、イントラ・インター判定回路45a、及び領域情報設定回路51aと、アクティビティ算出回路42c、イントラ・インター判定回路45c、及び領域情報設定回路51cと、の相違点を中心に説明する。
符号化装置1cは、例えば高ビットレートの入力符号化データ(画像データを、符号化装置1a、符号化装置1b、又は背景技術にかかる符号化装置により符号化したもの)を低ビットレートの出力符号化データに変換する、という目的で用いられる再符号化装置である。このような再符号化装置は、入力符号化データを一旦復号した後、該入力符号化データにおける符号化情報を原則として踏襲しつつ、量子化パラメータだけを大きし、ブロック単位で予測モードを切り換えて再度符号化することで発生符号量を削減し、出力符号化データを生成する。上述のように、平坦領域におけるブロック毎の予測モードの切り換わりによりブロック境界においてギャップが生ずる場合があるが、量子化パラメータが大きくなることにより、出力符号化データにおいて、このギャップが強調されてしまう場合がある。そこで、本実施形態では、再符号化装置である符号化装置1cにおいて、平坦領域におけるブロック毎の予測モードの切り換わりを制限する。
復号回路61は、外部から入力符号化データを受け取って所定の復号化処理を施し、符号化情報や復号画像データを出力する。ここで、この符号化情報には、GOP構造にかかるIピクチャ、Pピクチャ、Bピクチャなどのピクチャ種別情報、各ブロックの符号化に用いられている予測モードを示す予測モード情報、量子化パラメータの情報、変換係数の情報、ブロック毎の発生符号量など、入力符号化データの復号の過程で得られる情報が含まれる。復号回路61が出力する復号画像データには、後段の各回路により、符号化装置1aや符号化装置1bで行われるものと同様な符号化処理が施される。
また、復号回路61は、各ブロックにかかる復号画像データを、入力符号化データの符号化時における符号化の順に出力する。このようにしているので、符号化装置1cが、入力符号化データのGOP構造と同一のGOP構造を利用する符号化処理を行う限りにおいては、符号化装置1aや符号化装置1bに含まれる画面並べ替えバッファ3に相当する回路は不要である。ただし、画面並べ替えバッファ3を用いて、入力符号化データとは異なる任意のGOP構造で符号化を行うようにしても構わないのは勿論である。
アクティビティ算出回路42cは、処理対象の画像データについて、復号回路61から符号化情報を受け取り、ブロック毎にアクティビティを計算、出力する。具体的なアクティビティとしては、式(5)に示すように、量子化パラメータQPを量子化スケールに変換してなる値QP0(QP)と、ブロック毎の発生符号量MBbitsの値と、の積が用いられる。
なお、アクティビティ算出回路42cは、符号化情報の代わりに、復号画像データを受け取り、アクティビティ算出回路42aと同一の方法により、アクティビティを求めるようにしてもよい。
領域情報設定回路51cは、復号回路61から符号化情報、アクティビティ算出回路42cからアクティビティ、レート制御回路43から量子化パラメータ、イントラ予測回路46や動き予測・補償回路44により生成される各予測モード情報を受け取り、領域情報を生成、出力する。領域情報設定回路51aや領域情報設定回路51bとの主たる違いは、復号回路61が出力する符号化情報を領域情報の生成に利用する点にある。
具体的には、領域情報設定回路51cは、平坦領域に属するブロックそれぞれについて、入力符号化データが符号化された際に用いられた予測モードを取得する。そして、平坦領域ごとに最頻の予測モードを取得し、各平坦領域についての基準予測モードとして決定する。領域情報設定回路51cは、こうして決定した各基準予測モードを用い、領域情報設定回路51bと同様の処理により領域情報を生成し、領域情報メモリ52bに記憶させる。
イントラ・インター判定回路45cは、領域情報及び符号化情報に基づいて、動き予測・補償回路44とイントラ予測回路46を制御し、ブロック毎に予測モードを決定する。イントラ・インター判定回路45cの動作は、予測モードの決定の過程において符号化情報を利用する点で、イントラ・インター判定回路45aやイントラ・インター判定回路45bと異なる。すなわち、イントラ・インター判定回路45cは、例えば、符号化情報に含まれる動きベクトルを利用して動き予測に掛かる処理量を削減する。なお、符号化情報を利用せず、イントラ・インター判定回路45cはイントラ・インター判定回路45aと全く同一の動作をすることとしてもかまわない。
以下、フローチャートを用いて、上述した予測モード決定の方法についてより詳細に説明する。
図12は、符号化装置1cが、領域情報の設定を行う際の動作フローチャートの一例である。同図に示す動作フローチャートの処理は、1つの復号画像データの符号化の開始直前に呼び出される。
符号化処理開始後、領域情報設定回路51cは、まず、処理対象ブロックのアドレスを示す変数ADDRをゼロに設定する(ステップSK01)。
次に、アクティビティ算出回路42cは、アドレスADDRのマクロブロックについて、アクティビティを求める(ステップSK02)。続いて、レート制御回路43は、量子化パラメータを求める(ステップSK03)。
次に、領域情報設定回路51cは、ステップSK02で求められたアクティビティが所定の閾値THA3以下であるか否か、つまり、アドレスADDRのブロックが平坦であるか否かを判定する。そして、平坦領域であると判定したブロックについては仮の識別子0を、平坦領域でないと判定したブロックについては無効であることを示す識別子−1を、それぞれ対応付けることにより、平坦領域情報(の一部分)を生成し、領域情報メモリ52bに保存する(ステップSK04)。ここで、閾値THA3は、定数であってもよいし、量子化パラメータなどに依存する変数であってもよい。より具体的には、閾値THA3は、ステップSK03で求められた量子化パラメータの値が所定値以上の場合は所定の正の定数に設定され、該量子化パラメータの値が所定値未満の場合はゼロに設定される変数である。
領域情報設定回路51cは、ステップSK04の処理が終了すると、変数ADDRの値が復号画像データの最後のブロックを指すか否かを判定する(ステップSK05)。そして、最後のブロックを指さない場合(ステップSK05における否定判定)、符号化装置1cは、アドレスADDRの値を1増加した上で(ステップSK06)、その処理をステップSK02に戻す。
一方、変数ADDRの値が最後のブロックを指す場合(ステップSK05における肯定判定)、領域情報設定回路51cは、空間的に連続する平坦なブロック群毎に異なる識別子を付与し、領域情報メモリ52b内に、識別子毎の代表的な予測モードに関する情報(基準予測モード情報)を保持するための領域MB02を確保するとともに、平坦領域毎の基準予測モード(最頻の予測モード)を決定し、決定した各基準予測モードを示す基準予測モード情報を領域MB02内に記憶させて(ステップSK07)、処理を終了する。
ここで、基準予測モード(最頻の予測モード)の具体的な決定方法について例示する。ここでは、2通りの方法を示す。1つは、面積的に最も支配的な予測モードを最頻の予測モードとする方法である(決定方法1)。もう1つは、ブロックの個数が最多となる予測モードを最頻の予測モードとする方法(決定方法2)である。以下、予測モードを参照画像インデックスにより特定する場合を取り上げ、決定方法1、決定方法2について図を用いて詳しく説明する。
図13は、入力符号化データ内にある1つの平坦領域内に属するブロックを示す図である。同図に示す太い黒線は、マクロブロックを示している。マクロブロックQA01,QA02,QA07は、2つのブロックから構成される。また、マクロブロックQA03,QA04,QA05,QA08,QA09は、1つのブロックから構成される。また、マクロブロックQA06は、4つのブロックから構成される。結局、同図に示す平坦領域は、15個のブロックから構成されている。同図において、各ブロックに書き込まれている0または1の数値は、参照画像インデックスを示す値である。
決定方法1によると、仮に1マクロブロックあたりの面積を4とした場合、参照画像インデックス0で特定される参照画像を予測に用いる予測モード(予測モード0)を使用するブロックの総面積は19、参照画像インデックス1で特定される参照画像を予測に用いる予測モード(予測モード1)を使用するブロックの総面積は17であるため、最頻の予測モードは、予測モード0となる。
一方、決定方法2によると、予測モード0を使用するブロックの数は7、予測モード1を使用するブロックの数は8であるため、最頻の予測モードは、予測モード1となる。
図14は、符号化装置1cが、各ブロックを符号化する際の動作フローチャートの一例を示す図である。
アクティビティ算出回路42aは、符号化対象のブロックについて、アクティビティを求める(ステップSL01)。続いて、レート制御回路43は、量子化パラメータを求める(ステップSL02)。なお、図12に示す動作フローチャートにおいても、結果的に復号画像データ内の全てのマクロブロックについてのアクティビティと量子化パラメータを取得しているため、これらの値を保持しておくためのメモリを別途追加し、ステップSL01、SL02は、このメモリから値を読み出すだけの処理であるとしてもよい。
次に、イントラ・インター判定回路45cは、符号化対象のブロックが属する領域の識別子を領域情報メモリ52b内の領域MB01から読み出し、読み出した識別子に基づいて、該ブロックが平坦領域に属するか否かを判定する(ステップSL03)。
符号化対象のブロックが平坦領域に属さないと判定された場合は(ステップSL03における否定判定)、イントラ・インター判定回路45bは、ステップSF14(図4)と同様の処理により予測モードを決定し(ステップSL04)、符号化装置1cの処理は後述するステップSL06に移行する。なお、ステップSL04における予測モードの決定において、入力符号化データに含まれる符号化情報に応じて、決定される予測モードに所定の制限を加えてもよい。
一方、符号化対象のブロックが平坦領域に属すると判定された場合は(ステップSL03における肯定判定)、イントラ・インター判定回路45cは、該ブロックが属する平坦領域についての基準予測モードを領域情報メモリ52b内の領域MB02(基準予測モード情報)から読み出し、ステップSF18(図4)と同様の処理により、インター予測モードにかかる全ての予測モード又はそのうちの一部の中から該基準予測モードに応じた制限の下で予測モードを決定し(ステップSL05)、符号化装置1cの処理は後述するステップSL06に移行する。ここで、ステップSL05で決定された予測モードにかかるコスト値が所定の閾値THCOST3以上の場合は、予測モードの制限に伴う符号化効率の極端な低下を回避するために、制限を解除し、再度全ての予測モードの中から最適な予測モードを決定しなおすようにしてもよい。
そして最後に、符号化装置1cは、決定された予測モードを用いて符号化対象のブロックの符号化を行い(ステップSL06)、処理を終了する。
図15(a)は、図5(d)に示した平坦領域について、符号化装置1bにより付与される識別子を表示してなるイメージ図である。
例えば、閾値THA3が定数値10であるとすると、図5(c)に示すアクティビティのマップにおいて、アクティビティの値が3、5、7となるマクロブロックが平坦であると判定される。結果、符号化装置1cは、図15(a)に示す領域NG01、領域NG02、領域NG03を、それぞれ独立した平坦領域とみなし、各平坦領域の中で最頻の予測モードを、それぞれ各平坦領域における代表的な予測モード(基準予測モード)とする。そして、各平坦領域に属する他のブロックの処理においては、参照画像や動きベクトルが、上記代表的な予測モードと同一なものとなるよう、予測モードの決定動作に制限を加えるのである。具体的には、基準予測モードを、平坦領域に属する他のブロックの予測モードとして決定するのである。
なお、図15(a)において、アドレスが32のブロックのみにより構成される領域NG03を1つの独立した平坦領域としているが、上下左右に隣接するブロックがいずれも平坦でないため、ブロック境界におけるギャップが画質劣化として問題となることはない。よって、実施形態2でも説明したように、ステップSK07において、アドレス32のブロックに付与する識別子を無効な識別子とすることにより、事実上平坦領域でない領域として扱うようにしてもよい。図15(b)は、図15(a)に示した各平坦領域から、単一のブロックで構成される領域NE03を除外した状態を示している。
以上の説明から、符号化装置1cによると、空間的に連続する平坦領域毎に、参照画像や、予測方向、動きベクトル、分割方法の統一を図ることができるようになる。
また、ここでいうところの統一とは、入力符号化データにおける最頻の予測モードへの統一であるため、符号化装置1aや符号化装置1bのように、各平坦領域の最初に符号化されるマクロブロックについての予測モードに統一する場合と比べて基準予測モードが適切なものとなる可能性が高まり、符号化効率の観点で有利になる。
結果、特に高ビットレートから低ビットレートへの再符号化、つまり、入力符号化データより量子化パラメータが大きくなるような再符号化において、図P(d)に示す予測画像に見られるようなブロック境界におけるギャップが軽減され、ひいては再生画像の主観的な画質が向上する。
なお、本発明は上記各実施形態に限定されるものではない。例えば、上記実施形態2及び実施形態3で用いた領域情報(図7)に代えて、図16に示す領域情報を用いることも可能である。図16は、1画像データ分の領域情報の具体的な格納形式の一例を示すイメージ図である。同図に示す領域情報の格納形式においては、平坦領域毎に領域が割り当てられている。例えば、0番目の平坦領域には領域MC1が、1番目の平坦領域には領域MC2が、それぞれ割り当てられている。そして、各領域の先頭には、各平坦領域についての代表的な予測モード(基準予測モード)を示す基準予測モード情報が記憶されており、さらに各領域の残りの部分には、各平坦領域に属するブロックの数を示すブロック数情報及び各ブロックのアドレスが記憶されている。
また、実施形態3では、最頻の予測モードを基準予測モードとする実施形態を、復号画像データを符号化する再符号化装置をベースに説明したが、(非復号)画像データを符号化する符号化装置において、同様に最頻の予測モードを基準予測モードとすることも可能である。この場合、1つの画像データに属する全てのブロックについて一旦予測モードを仮決定した後、その結果に基づいて基準予測モードを決定し、再度全てのブロックについて予測モードの決定を行う、という処理を行うことが望ましい。
また、符号化装置1a乃至1cの各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、上記各処理を行ってもよい。
ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、この「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに、「コンピュータ読み取り可能な記録媒体」には、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
さらに、上記プログラムは、上述した各機能の一部を実現するためのものであってもよい。さらに、上述した各機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。