以下、図面を参照して、本発明の一実施形態による映像符号化装置を説明する。以下で用いる「符号化ブロック」については、MPEG−2やH.264/AVC規格ではマクロブロックのことを示し、HEVCについてはコーディングユニット(CU)又はプレディクションユニット(PU)のことを指し示す。図1は同実施形態による映像符号化装置の構成を示すブロック図である。図1に示す映像符号化装置100において、インター予測処理102が従来技術と異なる部分であり、他の部分はH.264/AVCやHEVC等の映像符号化装置として用いられている従来の一般的な構成と同様である。
映像符号化装置100は、符号化対象の映像信号(原画像)を入力とし、入力映像信号のピクチャをブロックに分割してブロックごとに符号化し、そのビットストリームを符号化ストリームとして出力する。この符号化のため、予測残差信号生成部103は、入力映像信号とイントラ予測処理部あるいはインター予測処理部の出力である予測信号との差分を求め、それを予測残差信号として出力する。
変換・量子化処理部104は、予測残差信号を入力とし、入力された予測残差信号に対して離散コサイン変換等の直交変換を行い、変換係数を量子化し、その量子化された変換係数を出力する。エントロピー符号化処理部105は、量子化された変換係数を入力とし、入力された量子化された変換係数をエントロピー符号化し、符号化ストリームとして出力する。
一方、量子化された変換係数は、逆量子化・逆変換処理部106にも入力され、ここで逆量子化と逆直交変換され、予測残差復号信号を出力する。復号信号生成部107は、逆量子化・逆変換処理部106の出力である予測残差復号信号とイントラ予測処理部101またはインター予測処理部102の出力である予測信号とを加算し、符号化した符号化対象ブロックの復号信号を生成する。この復号信号は、インター予測処理部102で参照画像として用いるために、ループフィルタ処理部108に入力される。ループフィルタ処理部108では復号信号に対して符号化歪みを低減するフィルタリング処理を行い、このフィルタリング処理後の画像を参照画像としてインター予測処理部102に入力する。
本実施形態は、図1に示すインター予測処理部102において、ブロックサイズ候補を適切に絞り込んで動き探索処理を行うことで、符号化効率を低下させずにインター予測処理に要する処理量を削減するものである。
以下の説明は、HEVC規格に基づいた実施形態として説明する。以下の実施形態は、HEVCにおける64×64、32×32、16×16、8×8の4種類のブロックサイズ候補から、3種類のブロックサイズ候補に絞り込む手法である。実施形態における処理は64×64の領域単位で実行される。以下の実施形態の中で用いているコスト値とは、原画像と動きベクトルが指し示す参照画像との差分絶対値和(SAD)もしくは差分値に2次元アダマール変換を行った値の差分絶対値和(SATD)と、動きベクトルを符号化した際に生じる符号量を簡易的に見積もった動きベクトルコスト値の和で表される値を表している。
次に、図1に示すインター予測処理部102の構成と動作を説明する。図2は、図1に示すインター予測処理部102の構成の示すブロック図である。インター予測処理部102は、事前動きを予測する事前動き予測処理部201と、ブロックサイズ候補を決定するブロックサイズ候補決定部202と、動き探索を行う動き探索処理部203とを備える。
次に、図3を参照して、図2に示すインター予測処理部102の動作を説明する。図3は、図2に示すインター予測処理部102の動作を示すフローチャートである。まず、事前動き予測処理部201は、入力映像信号(原画像)とループフィルタ処理部108より入力される復号信号を入力とし、入力映像信号の大まかな動きを捕える事前動き探索を行う(ステップS1)。
事前動き予測処理部201は、入力映像信号中の対象となる64×64領域における各ブロックサイズそれぞれで動き探索を行い、各ブロックサイズごとの動きベクトル及びそれに伴うコスト値を算出し、出力する。64×64ブロックサイズのコスト値とは、対象の64×64領域を分割せずに64×64ブロックとして処理した場合のコスト値である。32×32ブロックサイズのコスト値とは、対象の64×64領域を縦横それぞれ2分割した際の、4つの32×32ブロックにおける各コスト値である。16×16ブロックサイズのコスト値とは、対象の64×64領域を縦横それぞれ4分割した際の、16つの16×16ブロックにおける各コスト値である。8×8ブロックサイズのコスト値とは、対象の64×64領域を縦横それぞれ8分割した際の、64つの8×8ブロックにおける各コスト値である。また、事前動き予測処理部201は、入力映像信号(原画像)のフレーム番号から、TemporalIDを算出して符号化情報とし、この符号化情報をブロックサイズ候補決定部202に出力する。
次に、ブロックサイズ候補決定部202は、事前動き予測処理部201で算出された各ブロックサイズのコスト値と、動き探索処理部203で算出される符号化済みの過去のフレームである符号化済みピクチャにおける特定の場合の動きベクトル統計値、及び当該ピクチャの符号化情報を入力とし、ブロックサイズ候補の絞り込み処理を行う(ステップS2)。絞り込み処理とは、候補数を減らす処理のことである。例えば、後述するように複数のブロックサイズ候補を2つの候補のグループにし、いずれかの候補に決定することを指す。後述する説明では2つの候補のグループにし、いずれかの候補に決定する例で説明するが、候補数を減らす処理であればよく、これに限るものではない。事前動き予測処理部201で探索した結果である、各ブロックサイズごとの動きベクトル、及びブロックサイズ候補決定部202で絞り込まれたブロックサイズ候補は、動き探索処理部203に対してそれぞれ出力する。
次に、動き探索処理部203は事前動き予測処理部201で探索した結果を基に、ブロックサイズ候補決定部202で絞り込まれた候補内のサイズで動き探索処理を行う(ステップS3)。最終的に決定した動きベクトル情報と予測差分画像は予測残差信号生成部103へと出力される。さらに当該符号化対象ピクチャが特定の場合のみ、動き探索処理部203は決定した動きベクトルの統計値を算出しブロックサイズ候補決定部202へ出力する。
以下、動き探索処理部203が決定した動きベクトルの統計値を算出しブロックサイズ候補決定部202へ出力する、特定の場合について説明する。HEVCにおけるランダム・アクセス符号化モードでは、時間軸上過去のピクチャだけでなく未来のピクチャからも予測可能とすることで、高い画面間符号化効率を得ることが可能である。図4は、ランダム・アクセス符号化モードにおける画面間参照構造を示す図である。図4では、各ピクチャが参照のパターンによって4つの階層に分類され、それぞれの階層にTemporalID(時間識別子)とよばれる値を割り振っている。TemporalID=0のピクチャから次のTemporalID=0のピクチャまでをGOP(Group of Picture)と呼ぶ。
図4は、GOPのサイズが8の場合のランダム・アクセス符号化モードの例を表している。動き探索処理部203では、当該符号化対象ピクチャの符号化順序がTemporalID=0のピクチャの1つ前の場合のみ、当該符号化対象ピクチャにおける全ての動きベクトルの分散を算出し、動きベクトル統計値としてブロックサイズ候補決定部202へ出力する。
ここでは動きベクトル統計値として動きベクトルの分散を算出したが、動きベクトルの算術平均や二乗和や絶対値和を動きベクトル統計値として出力する方法であってもよい。動きベクトル統計値として動きベクトルの分散を用いる場合は、画面間の動きが1ピクチャ内で均一的かばらけているかによって特定のブロックサイズ候補を選ばれやすくする効果が見込める。動きベクトル統計値として動きベクトルの絶対値和を用いる場合は、画面間の動きが全体的に大きいか小さいかによって特定のブロックサイズ候補が選ばれやすくする効果が見込める。
次に、図5を参照して、図2に示すブロックサイズ候補決定部202の構成を説明する。図5は、図2に示すブロックサイズ候補決定部202の構成を示すブロック図である。ブロックサイズ候補決定部202は、候補コスト生成部301、オフセット決定部302、候補コスト比較部303を備えている。
次に、図6を参照して、図5に示すブロックサイズ候補決定部202の動作を説明する。図6は、図5に示すブロックサイズ候補決定部202の動作を示すフローチャートである。まず、候補コスト生成部301は、各ブロックサイズのコストを入力とし、ブロックサイズ候補のコストを算出する(ステップS11)。候補コスト生成部301は、算出したコスト(候補コスト1、候補コスト2)を候補コスト比較部303へ出力する。
一方、オフセット決定部302は、動き探索処理部203で算出された符号化済みピクチャの動きベクトル統計値と、符号化対象ピクチャの符号化情報とを入力として、符号化済みピクチャの動きベクトル統計値と、符号化対象ピクチャの符号化情報に基づいて、コスト比較のオフセット値を算出する(ステップS12)。オフセット決定部302は、算出したコスト比較オフセット値を候補コスト比較部303へ出力する。
次に、候補コスト比較部303は、2つのコスト(候補コスト1、候補コスト2)とコスト比較オフセット値を入力とし、2つのコストに基づいて比較を行い、ブロックサイズ候補を決定する(ステップS13)。候補コスト比較部303は、決定したブロックサイズ候補を動き探索処理部203へ出力する。
次に、図7を参照して、図5に示す候補コスト生成部301の詳細な動作を説明する。図7は、図5に示す候補コスト生成部301の詳細な動作を示すフローチャートである。まず、候補コスト生成部301は、事前動き予測処理部201で算出された各ブロックサイズのコスト値を入力する(ステップS21)。そして、候補コスト生成部301は、ブロックサイズ候補1のコスト値(候補コスト1)を算出する(ステップS22)。ブロックサイズ候補1は64×64のブロックサイズのみとする。ブロックサイズ候補1のコスト値は、事前動き予測処理部201で算出された64×64ブロックサイズのコスト値とする。
続いて、候補コスト生成部301は、ブロックサイズ候補2のコスト値(候補コスト2)を算出する(ステップS23)。ブロックサイズ候補2は32×32、16×16、8×8の3つのブロックサイズとする。64×64領域を縦横4分割した際の16×16領域において、16×16ブロックサイズのコスト値と、16×16領域を縦横2分割した4つの8×8ブロックサイズのコスト値の和を比較し、16×16ブロックサイズのコスト値が小さい場合は16×16領域のコスト値を16×16ブロックサイズのコスト値とし、16×16ブロックサイズのコスト値が大きい場合は16×16領域のコスト値を4つの8×8ブロックサイズのコスト値の和とする。以上の16×16領域コスト算出処理を16つの16×16領域で行う。
64×64領域を縦横2分割した際の32×32領域において、32×32ブロックサイズのコスト値と、32×32領域を縦横2分割した4つの16×16領域コストの和を比較し、32×32ブロックサイズのコスト値が小さい場合は32×32領域のコスト値を32×32ブロックサイズのコスト値とし、32×32ブロックサイズのコスト値が大きい場合は32×32領域のコスト値を4つの16×16領域コストの和とする。対象の64×64領域を縦横2分割した4つの32×32領域全てで上記の32×32領域コスト算出手順を行い、4つの32×32領域コスト値の和をブロックサイズ候補2のコスト値とする。
最後に、候補コスト生成部301は、算出したブロックサイズ候補1、2のコスト値を出力する(ステップS24)。
次に、図8を参照して、図5に示すオフセット決定部302の詳細な動作を説明する。図8は、図5に示すオフセット決定部302の詳細な動作を示すフローチャートである。まず、動き探索処理部203が算出したピクチャ単位の動きベクトル分散の最新値σMV 2と、閾値THとを比較し、動きベクトル分散の最新値σMV 2が閾値THより小さいか否かを判定する(ステップS31)。この判定の結果、動きベクトル分散σMV 2が閾値THより小さい場合、すなわち物体の動きが1ピクチャ内で均一的な場合、コスト比較オフセット値λoffsetを0に設定する(ステップS32)。
一方、動きベクトル分散σMV 2が閾値THより大きい場合、すなわち物体の動きが1ピクチャ内でばらけている場合、コスト比較オフセット値λoffsetを0でない実数(例えば、α・TemporalID)に設定する(ステップS33)。この場合のλoffsetは負の実数を用いるとよい。これにより動きがばらけているピクチャではブロックサイズ候補1、すなわち64×64のブロックサイズが選ばれやすくなり、この結果としてブロックサイズが動きのばらけによって小さくなりすぎることを防ぎ、符号量削減が望める。
また、この場合のλoffsetの決定方法としては、符号化情報より当該符号化対象ピクチャのTemporalIDを取得し、コスト比較オフセット値λoffsetをTemporalIDの定数倍α・TemporalIDに設定するとよい。αは負の実数定数がよい。TemporalIDが大きいピクチャでは動き予測の精度が高い傾向があるが、コスト比較オフセット値λoffsetをTemporalIDの定数倍α・TemporalIDに設定することで、TemporalIDが大きいピクチャではブロックサイズ候補1、すなわち64×64のブロックサイズが選ばれやすくなり、より大きなブロックで動き予測が行われることで符号量削減が望める。
ここでは、動き探索処理部203で算出された動きベクトル統計値が閾値THより大きい場合のコスト比較オフセット値λoffsetをTemporalIDの定数倍α・TemporalIDとしたが、TemporalIDごとに適切なλoffsetを固定値として予め用意しておき、符号化対象ピクチャのTemporalIDに応じてλoffsetを切り替えるようにしてもよい。
また、ここでは動きベクトル統計値と閾値THの大小を比較してコスト比較オフセット値λoffsetの計算式の切り替えを行ったが、GOP構造を考慮するために動きベクトル統計値をGOPサイズで割った値と閾値THを比較してλoffsetの計算式を切り替えるようにしてもよい。これにより、動きベクトル統計値がGOPサイズと比較されたスケーリング済みの値となり、GOPサイズの大小によって閾値THを変化させる必要がなくなる。
候補コスト生成部301で算出された2つの候補コスト値とオフセット決定部302で算出されたコスト比較オフセット値は、候補コスト比較部303へ入力され、符号化ブロックのサイズ候補を2つのブロックサイズ候補の内のいずれかに決定する。
次に、図9を参照して、図5に示す候補コスト比較部303の詳細な動作を説明する。図9は、図5に示す候補コスト比較部303の詳細な動作を示すフローチャートである。まず、候補コスト比較部303は、ブロックサイズ候補1、2のコスト値とコスト比較オフセット値とを入力とする(ステップS41)。
次に、候補コスト比較部303は、ブロックサイズ候補1の候補コスト値とオフセット決定部302で決定されたコスト比較オフセット値の和と、ブロックサイズ候補2の候補コスト値とを比較し、ブロックサイズ候補1コスト値+コスト比較オフセット値<ブロックサイズ候補2コスト値であるか否かを判定する(ステップS42)。この判定の結果、ブロックサイズ候補2の候補コスト値が大きい場合はブロックサイズ候補を候補1に決定し(ステップS43)、ブロックサイズ候補2の候補コスト値が小さい場合はブロックサイズ候補を候補2に決定する(ステップS44)。
以上説明したように、符号化ブロックサイズ候補が複数存在するような動き予測部を有する映像符号化方式において、符号化対象ピクチャの参照構造における階層の深さ、すなわちTemporalIDと、符号化済みピクチャの動きベクトルの統計値情報に基づき、ブロックサイズ候補のコスト比較におけるオフセット値を決定し、コスト比較によりブロックサイズ候補を適切に絞り込むことで、動き探索に要する演算量を削減することが可能となる。
前述した実施形態における映像符号化装置100の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。