(実施の形態1)
以下、本発明の第1の実施の形態における動画像符号化装置について図面を参照しながら説明する。
図1は、本発明の第1の実施の形態における動画像符号化装置100のブロック図である。
この動画像符号化装置100は、動きベクトルの予測値の予測能力を高めることで符号化効率を向上したものであって、フレームメモリ101、差分演算部102、予測誤差符号化部103、符号列生成部104、予測誤差復号化部105、加算演算部106、フレームメモリ107、動きベクトル検出部108、モード選択部109、符号化制御部110、スイッチ111〜115、動きベクトル記憶部116、及び動きベクトル符号化部117を備える。
フレームメモリ101は、入力画像をピクチャ単位で保持する画像メモリであって、ピクチャ単位で時間順に取得された入力画像を符号化順に並び替えて出力する。その並び替えは、符号化制御部110により制御される。
図2の(a)は、フレームメモリ101に入力されるピクチャの様子を示す。
この図2の(a)において、縦線はピクチャを示し、各ピクチャの右下に示す記号のうち、1文字目のアルファベットがピクチャタイプ(I、PまたはB)を示し、2文字目以降の数字が時間順のピクチャ番号を示している。フレームメモリ101に入力された各ピクチャは、符号化順に並び替えられる。符号化順への並び替えは、ピクチャ間予測符号化における参照関係に基づいて行われ、参照ピクチャとして用いられるピクチャが、そのピクチャを参照ピクチャとして用いるピクチャよりも先に符号化されるように並び替えられる。例えば、ピクチャP7〜P13の各ピクチャの参照関係は、図2の(a)に示す矢印の通りとなる。図2の(a)において、矢印の始点は参照されるピクチャを示し、矢印の終点は参照するピクチャを示している。この場合、図2の(a)のピクチャを並び替えた結果は図2の(b)に示すようになる。
図2の(b)は、(a)のように入力されたピクチャが並び替えられた様子を示す。このようにフレームメモリ101で並び替えが行われた各ピクチャは、マクロブロックの単位で読み出される。ここでは、マクロブロックは水平16×垂直16画素の大きさである。
差分演算部102は、フレームメモリ101から、スイッチ111を介してマクロブロック単位で画像データを取得するとともに、モード選択部109から動き補償画像を取得する。そして差分演算部102は、マクロブロック単位の画像データと動き補償画像との差分を演算し、予測誤差画像を生成して出力する。
予測誤差符号化部103は、スイッチ112を介して、フレームメモリ101から取得した画像データ、または差分演算部102で求められた予測誤差画像に離散コサイン変換などの周波数変換や量子化などの符号化処理を施すことにより、符号化データを作成する。例えば、周波数変換や量子化の処理は、水平8×垂直8画素の単位で行われる。そして予測誤差符号化部103は、符号化データを符号列生成部104と予測誤差復号化部105に出力する。
符号列生成部104は、予測誤差符号化部103からの符号化データに対して可変長符号化を施して、出力用の符号化ビットストリームのフォーマットに変換して、さらに動きベクトル符号化部117から入力された動きベクトルの情報、モード選択部109から入力された符号化モードの情報、その他のヘッダ情報等を付加することにより符号列を生成する。
予測誤差復号化部105は、予測誤差符号化部103からの符号化データを、逆量子化した後、逆離散コサイン変換などの逆周波数変換を施し、予測誤差画像に復号化する。
加算演算部106は、復号化結果である予測誤差画像に前記動き補償画像を加算して、符号化および復号化を経た画像データであって1ピクチャの画像を示す復号化画像を出力する。
フレームメモリ107は、加算演算部106から出力された復号化画像のうち、他のピクチャの符号化時に参照ピクチャとして用いられるピクチャをピクチャ単位で保持する画像メモリである。
動きベクトル検出部108は、フレームメモリ107に蓄積された復号化画像を参照ピクチャとして用いて、符号化対象のマクロブロック内の各ブロックに対して、動きベクトルの検出を行う。検出された動きベクトルは、モード選択部109に対して出力される。
モード選択部109は、動きベクトル検出部108で検出された動きベクトルを用いて、マクロブロックの符号化モードを決定する。ここで符号化モードとは、マクロブロックをどのような方法で符号化するかを示すものである。例えば、モード選択部109は、符号化対象ピクチャがPピクチャの場合には、ピクチャ内符号化、動きベクトルを用いたピクチャ間予測符号化、及びスキップモード(他のブロックの動きベクトルから求めた動きベクトルを用いて予測符号化を行うことにより、動きベクトルを符号化せず、かつ予測誤差符号化の結果、係数値がすべて0となり、係数値を符号化しないピクチャ間予測符号化)の中から、いずれかを符号化モードとして決める。また、一般的には、所定のビット量で符号化誤差が最小となるような符号化モードが決定される。
そしてモード選択部109は、決定された符号化モードを符号列生成部104に、その符号化モードにおいて用いる動きベクトルを動きベクトル符号化部117に対して出力する。さらに、モード選択部109は、決定された符号化モードが動きベクトルを用いたピクチャ間予測符号化であるときには、そのピクチャ間予測符号化で用いられる動きベクトルと符号化モードを動きベクトル記憶部116に記憶させる。
また、モード選択部109は、決定された符号化モードと、動きベクトル検出部108で検出された動きベクトルとに基づいて動き補償を行って動き補償画像を作成し、その動き補償画像を差分演算部102と加算演算部106とに出力する。ただし、ピクチャ内符号化が選択された場合には、動き補償画像は出力されない。さらに、モード選択部109でピクチャ内符号化が選択された場合には、モード選択部109は、スイッチ111が端子aに接続するように、スイッチ112が端子cに接続するように両スイッチ111,112を制御し、ピクチャ間予測符号化が選択された場合には、スイッチ111が端子bに接続するように、スイッチ112が端子dに接続するように両スイッチ111,112を制御する。また、上述の動き補償はブロック単位(ここでは8×8画素の大きさとする)で行われる。
符号化制御部110は、入力されたピクチャをどのタイプのピクチャ(I、PまたはBピクチャ)で符号化するかを決定し、そのピクチャタイプにより、スイッチ113,114,115を制御する。ここで、ピクチャタイプの決定には、例えば、周期的にピクチャタイプを割り当てる方法が一般的に用いられる。
動きベクトル記憶部116は、ピクチャ間予測符号化で用いられる動きベクトルと符号化モードとをモード選択部109から取得してこれを記憶しておく。
動きベクトル符号化部117は、モード選択部109で動きベクトルを用いたピクチャ間予測符号化が選択されたときには、図20や図21を参照して説明した方法により、符号化対象ブロックの動きベクトルの符号化を行う。すなわち、動きベクトル符号化部117は、符号化対象ブロックの周辺にある3つの周辺ブロックを特定し、これらの周辺ブロックの動きベクトルから予測値を決定し、その予測値と符号化の対象となる現在のブロックの動きベクトルとの差分値を符号化する。
また、本実施の形態における動きベクトル符号化部117は、符号化対象ブロックの動きベクトルを符号化するときに、周辺ブロックがスキップモードやダイレクトモードなど、他のブロックの動きベクトルを用いて符号化されている場合には、その周辺ブロックの動きベクトルを従来例のように0とすることなく、その周辺ブロックの符号化の際に上記他のブロックの動きベクトルから求められた動きベクトルを、その周辺ブロックの動きベクトルとして扱う。
図3は、本実施の形態における動きベクトル符号化部117の一般的な動作を示すフロー図である。
まず、動きベクトル符号化部117は、符号化対象ブロックの周辺にある既に符号化済みの3つの周辺ブロックを特定する(ステップS100)。
そして動きベクトル符号化部117は、その特定された周辺ブロックのそれぞれが、他のブロックの動きベクトルを用いて符号化された周辺ブロックBaか、他のブロックの動きベクトルを用いずに符号化された周辺ブロックBbかを判別する(ステップS102)。
その結果、動きベクトル符号化部117は、特定された3つの周辺ブロックの中に周辺ブロックBaが含まれているか否かを判別する(ステップS104)。
ステップS104で周辺ブロックBaが含まれていると判別されたときには(ステップS104のY)、動きベクトル符号化部117は、周辺ブロックBaを符号化するために他のブロックの動きベクトルから求められた動きベクトルをその周辺ブロックBaの動きベクトルとして扱い、上述のように3つの周辺ブロックの動きベクトルから予測値を導出する(ステップS106)。
一方、ステップS104で周辺ブロックBaが含まれていないと判別されたときには(ステップS104のN)、動きベクトル符号化部117は、3つの周辺ブロックBbのそれぞれの動き検出およびモード選択結果に基づく動きベクトルから予測値を導出する(ステップS108)。
そして動きベクトル符号化部117は、符号化対象ブロックの動きベクトルと、ステップS106,S108で導出された予測値との差分を符号化する(ステップS110)。また、動きベクトル符号化部117は、このように符号化された動きベクトルを符号列生成部104に対して出力する。
ここで、上述のような動画像符号化装置100の符号化処理について、具体的に図2に示すピクチャP13及びピクチャB11の符号化を例に挙げて説明する。
<ピクチャP13の符号化処理>
ピクチャP13はPピクチャであるので、動画像符号化装置100は、ピクチャP13に対して符号化処理するときには、他の1つのピクチャを参照ピクチャとして用いるピクチャ間予測符号化を行う。この場合の参照ピクチャはピクチャP10となる。このピクチャP10に対しては、既に符号化が終了しており、そのピクチャP10の復号化画像がフレームメモリ107に蓄積されている。
符号化制御部110は、Pピクチャの符号化においては、スイッチ113、114、115がオンになるように各スイッチを制御する。したがって、フレームメモリ101から読み出されたピクチャP13のマクロブロックは、動きベクトル検出部108、モード選択部109、及び差分演算部102に取得される。
動きベクトル検出部108は、フレームメモリ107に蓄積されたピクチャP10の復号化画像を参照ピクチャとして用い、マクロブロック内の各ブロックに対して、動きベクトルの検出を行い、検出された動きベクトルをモード選択部109に対して出力する。
モード選択部109は、動きベクトル検出部108で検出された動きベクトルを用いて、ピクチャP13のマクロブロックの符号化モードを決定する。即ち、ピクチャP13はPピクチャであるので、モード選択部109は、上述のように、ピクチャ内符号化、動きベクトルを用いたピクチャ間予測符号化、及びスキップモード(他のブロックの動きベクトルから求めた動きベクトルを用いて動き補償を行うことにより、動きベクトルを符号化せず、かつ予測誤差符号化の結果、すべての係数値が0となり係数値を符号化しないピクチャ間予測符号化)の中から符号化モードを決める。
そして本実施の形態における動きベクトル符号化部117は、上述のようにモード選択部109で動きベクトルを用いたピクチャ間予測符号化が選択されたときには、図20を参照して説明した方法によりピクチャP13の符号化対象ブロックの動きベクトルを符号化するが、その符号化対象ブロックの周辺にある周辺ブロックがスキップモードで符号化されている場合には、その周辺ブロックの動きベクトルを0とはせずに、その周辺ブロックを符号化するために他のブロックから求められた動きベクトルを、その周辺ブロックの動きベクトルとして扱う。
このような周辺ブロックがスキップモードで符号化されている場合における符号化対象ブロックの動きベクトルの符号化方法を説明する。
図4は、周辺ブロックCがスキップモードで符号化される様子を説明するための説明図である。
この図4に示すように、ピクチャP13の周辺ブロックCがスキップモードで符号化されるときには、その周辺ブロックCの周りに位置する、ブロックEの動きベクトルMVeと、ブロックFの動きベクトルMVfと、ブロックGの動きベクトルMVgとの中央値が求められ、その中央値を示す動きベクトルMVcmを用いて周辺ブロックCが符号化されている。ここで、動きベクトルの中央値は、例えば水平成分と、垂直成分のそれぞれに対して中央値を求めることにより得られる。
動きベクトル符号化部117は、図4に示す符号化対象ブロックAの動きベクトルを符号化するときには、符号化対象ブロックAの周辺にある3つの周辺ブロックB,C,Dを特定し(ブロックB,C,Dの位置関係は、図20、図21を参照)、周辺ブロックB,C,Dのそれぞれが、他のブロックの動きベクトルを用いて符号化されたブロックか否かを判別する。その結果、動きベクトル符号化部117は、周辺ブロックCのみがスキップモードで符号化、つまり他のブロックを用いて符号化されたと判別すると、上述のように周辺ブロックCを符号化するために他のブロックであるブロックE,F,Gの動きベクトルから求められた中央値(動きベクトルMVcm)を周辺ブロックCの動きベクトルとして扱い、その動きベクトルMVcmと周辺ブロックB,Dのそれぞれの動きベクトルとの中央値を求め、この中央値を符号化対象ブロックAの動きベクトルの予測値とする。そして、動きベクトル符号化部117は、その予測値と符号化対象ブロックAの動きベクトルとの差分値を符号化する。
また、動きベクトル記憶部116は、符号化されたブロックの符号化モードを記憶しており、この動きベクトル記憶部116が記憶する符号化モードに基づき、動きベクトル符号化部117は、周辺ブロックB,C,Dのそれぞれが他のブロックの動きベクトルを用いて符号化されたブロックか否かを判別する。さらに、動きベクトル記憶部116は、他のブロックの動きベクトルを用いずに、参照ピクチャから検出された自らの動きベクトルを用いて符号化されたブロックに対しては、そのブロックの動きベクトルを記憶している。即ち、動きベクトル記憶部116は、ブロックE,F,Gのそれぞれの動きベクトルMVe,MVf,MVgを記憶しており、動きベクトル符号化部117は、符号化対象ブロックAの動きベクトルを符号化するときには、動きベクトル記憶部116が記憶するこれらの動きベクトルを用いて周辺ブロックCに対して上述の動きベクトルMVcmを求める。なお、動きベクトル記憶部116が、他のブロックの動きベクトルを用いて符号化されたブロックに対して、そのブロックを符号化するために中央値を取って求められた動きベクトルを予め記憶しておいても良い。この場合、動きベクトル記憶部116は、動きベクトルMVcmを予め記憶しているため、動きベクトル符号化部117は符号化対象ブロックAの動きベクトルを符号化するときに、周辺ブロックCに対して動きベクトルMVcmを求める必要がなく、動きベクトル記憶部116が予め記憶する動きベクトルMVcmをそのまま周辺ブロックCの動きベクトルとして用いることができる。
一方、ピクチャP13の符号化対象のマクロブロックと動き補償画像との差分を示す予測誤差画像が、予測誤差符号化部103及び符号列生成部104で符号化されて符号化データとして生成されており、上述のように符号化された動きベクトルの情報は、符号列生成部104でその符号化データに付加される。但し、スキップモードで符号化されたマクロブロックについては、マクロブロックと動き補償画像との差分が0であり、動きベクトルの情報も符号化データに付加されない。
以後、同様の処理により、ピクチャP13の残りのマクロブロックに対して、符号化処理が行われる。そして、ピクチャP13のすべてのマクロブロックについて処理が終わると、次にピクチャB11の符号化処理が行われる。
<ピクチャB11の符号化処理>
ピクチャB11はBピクチャであるので、動画像符号化装置100は、ピクチャB11に対して符号化処理するときには、他の2つのピクチャを参照ピクチャとして用いるピクチャ間予測符号化を行う。この場合の参照ピクチャは、図2に示すように、ピクチャB11の前方にあるピクチャP10と、ピクチャB11の後方にあるピクチャP13とである。これらのピクチャP10,P13に対しては、既に符号化が終了しており、そのピクチャP10,P13の復号化画像がフレームメモリ107に蓄積されている。
符号化制御部110は、Bピクチャの符号化においては、スイッチ113がオン、スイッチ114、115がオフになるように各スイッチを制御する。したがって、フレームメモリ101から読み出されたピクチャB11のマクロブロックは、動きベクトル検出部108、モード選択部109、及び差分演算部102に取得される。
動きベクトル検出部108は、フレームメモリ107に蓄積されたピクチャP10の復号化画像を前方参照ピクチャとして用い、ピクチャP13の復号化画像を後方参照ピクチャとして用いることにより、マクロブロック内の各ブロックに対して、前方動きベクトルと後方動きベクトルの検出を行い、検出された前方動きベクトル及び後方動きベクトルをモード選択部109に対して出力する。
モード選択部109は、動きベクトル検出部108で検出した前方動きベクトル及び後方動きベクトルを用いて、ピクチャB11のマクロブロックの符号化モードを決定する。即ち、ピクチャB11はBピクチャであるので、モード選択部109は、例えば、ピクチャ内符号化、前方動きベクトルを用いたピクチャ間予測符号化、後方動きベクトルを用いたピクチャ間予測符号化、双方向動きベクトルを用いたピクチャ間予測符号化、及びダイレクトモード(他のブロックの動きベクトルから求めた動きベクトルを用いて動き補償を行い、動きベクトルを符号化しないピクチャ間予測符号化)の中から符号化モードを決める。
そして本実施の形態における動きベクトル符号化部117は、上述のようにモード選択部109で動きベクトルを用いたピクチャ間予測符号化が選択されたときには、図20を参照して説明した方法によりピクチャB13の符号化対象ブロックの動きベクトルを符号化する。
具体的に、モード選択部109で双方向動きベクトルを用いたピクチャ間予測符号化が選択されたときには、動きベクトル符号化部117は、以下のようにして符号化対象ブロックの動きベクトルを符号化する。
図5は、双方向動きベクトルを用いたピクチャ間予測符号化を説明するための説明図である。
動きベクトル符号化部117は、符号化対象ブロックAの動きベクトルを符号化するときには、前方動きベクトルMVFと後方動きベクトルMVBとに対して符号化を行う。
つまり、動きベクトル符号化部117は、周辺ブロックB,C,Dのそれぞれの前方動きベクトルMVF1,MVF2,MVF3の中央値を、前方動きベクトルMVFの予測値とし、前方動きベクトルMVFとその予測値との差分値を符号化する。そして、動きベクトル符号化部117は、周辺ブロックB,C,Dのそれぞれの後方動きベクトルMVB1,MVB2,MVB3の中央値を、後方動きベクトルMVBの予測値とし、後方動きベクトルMVBとその予測値との差分値を符号化する。ここで動きベクトルの中央値は、例えば、水平成分、垂直成分の各成分ごとに中央値を取って求められる。
ここで本実施の形態における動きベクトル符号化部117は、Bピクチャの符号化対象ブロックの動きベクトルを符号化するときに、その周辺ブロックがダイレクトモードで符号化されている場合、その周辺ブロックの動きベクトルを0とはせずに、その周辺ブロックを符号化するために他のブロックから求められた動きベクトルを、その周辺ブロックの動きベクトルとする。また、ダイレクトモードには、時間的なダイレクトモードと空間的なダイレクトモードの2種類がある。
まず、周辺ブロックが時間的なダイレクトモードで符号化されている場合における符号化対象ブロックの動きベクトルの符号化方法について説明する。
図6は、周辺ブロックCが時間的なダイレクトモードで符号化される様子を説明するための説明図である。
この図6に示すように、ピクチャB11の周辺ブロックCがダイレクトモードで符号化されるときには、直前に符号化された後方参照ピクチャであるピクチャP13中の、周辺ブロックCと同じ位置にあるブロックXの動きベクトルMVpを利用する。動きベクトルMVpは、ブロックXが符号化された際に用いられた動きベクトルであり、動きベクトル記憶部116に記憶されている。この動きベクトルMVpは、ピクチャP10を参照している。周辺ブロックCの符号化に対しては、動きベクトルMVpと平行な動きベクトルを用いて、参照ピクチャであるピクチャP10とピクチャP13とから双方向予測が行われる。この場合の周辺ブロックCを符号化する際に用いられる動きベクトルは、ピクチャP10に対しては動きベクトルMVFc、ピクチャP13に対しては動きベクトルMVBcとなる。
ここで、前方向動きベクトルである動きベクトルMVFcの大きさをmvf、後方向動きベクトルである動きベクトルMVBcの大きさをmvb、動きベクトルMVpの大きさをmvp、符号化対象のピクチャ(ピクチャB11)の後方参照ピクチャ(ピクチャP13)と、その後方参照ピクチャのブロックが参照しているピクチャ(ピクチャP10)との時間的距離をTRD、符号化対象のピクチャ(ピクチャB11)と後方参照ピクチャのブロックが参照しているピクチャ(ピクチャP10)との時間的距離をTRBとすると、mvf、mvbは、それぞれ以下に示す(式1)及び(式2)で求められる。
mvf=mvp×TRB/TRD----(式1)
mvb=(TRB−TRD)×mvp/TRD----(式2)
ここで、mvf、mvbは、動きベクトルの水平成分、垂直成分のそれぞれを表現しているものとする。また、動きベクトルMVpの方向を正の値で示し、動きベクトルMVpと逆の方向を負の値で示すものとする。
周辺ブロックCはこのように求められた動きベクトルMVFc,MVBcを用いて符号化されている。
動きベクトル符号化部117は、図5に示す符号化対象ブロックAの動きベクトルMVF,MVBを符号化するときには、符号化対象ブロックAの周辺にある3つの周辺ブロックB,C,Dを特定し、周辺ブロックB,C,Dのそれぞれが、他のブロックの動きベクトルを用いて符号化されたブロックか否かを判別する。その結果、動きベクトル符号化部117は、周辺ブロックCのみが時間的なダイレクトモードで符号化、つまり他のブロックの動きベクトルを用いて符号化されていると判別すると、図6に示すように周辺ブロックCを符号化するために他のブロックであるブロックXの動きベクトルMVpから求められた動きベクトルMVFc,MVBcを周辺ブロックCの動きベクトルとして扱い、これらの動きベクトルMVFc,MVBcと周辺ブロックB,Dのそれぞれの動きベクトルとの中央値を求めることで、符号化対象ブロックAの動きベクトルの予測値を導出する。なお、このような予測値の導出は、前方向と後方向とに分けて行われる。そして、動きベクトル符号化部117は、その予測値と符号化対象ブロックAの動きベクトルMVF,MVBとの差分値を符号化する。
また、動きベクトル記憶部116は、符号化されたブロックの符号化モードを記憶しており、この動きベクトル記憶部116が記憶する符号化モードに基づき、動きベクトル符号化部117は、周辺ブロックB,C,Dのそれぞれが他のブロックの動きベクトルを用いて符号化されたブロックか否かを判別する。さらに、動きベクトル記憶部116は、他のブロックの動きベクトルを用いずに、参照ピクチャから検出された自らの動きベクトルを用いて符号化されたブロックに対しては、そのブロックの動きベクトルを記憶している。即ち、動きベクトル符号化部117は、符号化対象ブロックAの動きベクトルを符号化するときには、周辺ブロックB,Dに対しては、動きベクトル記憶部116が記憶する動きベクトルをそのまま用いるが、周辺ブロックCに対しては、動きベクトル記憶部116に記憶されているブロックXの動きベクトルMVpを読み出して動きベクトルMVFc,MVBcを求める。なお、動きベクトル記憶部116が、他のブロックの動きベクトルを用いて符号化されたブロックに対して、そのブロックを符号化するために他のブロックの動きベクトルから求められた動きベクトルを予め記憶しておいても良い。この場合、動きベクトル記憶部116は、動きベクトルMVFc,MVBcを予め記憶しているため、動きベクトル符号化部117は符号化対象ブロックAの動きベクトルを符号化するときに、周辺ブロックCに対して、ブロックXの動きベクトルMVpを読み出して(式1)および(式2)を用いて動きベクトルMVFc,MVBcを求める必要がなく、動きベクトル記憶部116が記憶する動きベクトルMVFc,MVBcをそのまま周辺ブロックCの動きベクトルとして用いることができる。
次に、周辺ブロックが空間的なダイレクトモードで符号化されている場合における符号化対象ブロックの動きベクトルの符号化方法について説明する。
図7は、周辺ブロックが空間的なダイレクトモードで符号化される様子を説明するための説明図である。
この図7に示すように、ピクチャB11の周辺ブロックCが空間的なダイレクトモードで符号化されるときには、周辺ブロックCの周辺にあるブロックEの動きベクトルMVFe,MVBeと、ブロックFの動きベクトルMVFf,MVBfと、ブロックGの動きベクトルMVFg,MVBgとからそれぞれ前後方向に分けて中央値を取って求められる動きベクトルMVFc,MVBcを用いて符号化される。
動きベクトル符号化部117は、図5に示す符号化対象ブロックAの動きベクトルMVF,MVBを符号化するときには、符号化対象ブロックAの周辺にある3つの周辺ブロックB,C,Dを特定し、周辺ブロックB,C,Dのそれぞれが、他のブロックの動きベクトルを用いて符号化されたブロックか否かを判別する。その結果、動きベクトル符号化部117は、周辺ブロックCのみが空間的なダイレクトモードで符号化、つまり他のブロックの動きベクトルを用いて符号化されていると判別すると、図7に示すように周辺ブロックCを符号化するために他のブロックであるブロックE,F,Cの動きベクトルから求められた動きベクトルMVFc,MVBcを周辺ブロックCの動きベクトルとして扱い、これらの動きベクトルと周辺ブロックB,Dのそれぞれの動きベクトルとの中央値を求めることで、符号化対象ブロックAの動きベクトルの予測値を導出する。そして、動きベクトル符号化部117は、その予測値と符号化対象ブロックAの動きベクトルMVF,MVBとの差分値を符号化する。
また、動きベクトル記憶部116は、他のブロックの動きベクトルを用いずに、参照ピクチャから検出された自らの動きベクトルを用いて符号化されたブロックに対しては、そのブロックの動きベクトルを記憶しているので、ブロックE,F,Gのそれぞれに対して前後方向の2つの動きベクトルを記憶しており、動きベクトル符号化部117は、符号化対象ブロックAの動きベクトルを符号化するときには、動きベクトル記憶部116が記憶するこれらの動きベクトルを用いて周辺ブロックCに対して動きベクトルMVFc,MVBcを求める。なお、動きベクトル記憶部116が、他のブロックの動きベクトルを用いて符号化されたブロックに対して、そのブロックを符号化するために中央値を取って求められた前後方向の2つの動きベクトルを予め記憶しておいても良い。この場合、動きベクトル記憶部116は、動きベクトルMVFc,MVBcを予め記憶しているため、動きベクトル符号化部117は、符号化対象ブロックAの動きベクトルを符号化するときに、周辺ブロックCに対して動きベクトルMVFc,MVBcを求める必要がなく、動きベクトル記憶部116が記憶する動きベクトルMVFc,MVBcをそのまま周辺ブロックCの動きベクトルとして用いることができる。
このように、前述の時間的なダイレクトモードで周辺ブロックCが符号化されているときには、符号化対象ピクチャの後方参照ピクチャ(上述の例では、ピクチャP13)の動きベクトルを動きベクトル記憶部116に記憶させておく必要があったが、空間的なダイレクトモードで周辺ブロックCが符号化されているときには、その記憶を省くことができる。
ここで、動画像符号化装置100は、符号化対象ブロックの動きベクトルを符号化するときに、その周辺にある周辺ブロックが上述のようなピクチャ間予測符号化ではなく、ピクチャ内符号化で処理されている場合には、例外的な処理を行う。
例えば、3つの周辺ブロック中にピクチャ内符号化で符号化されたブロックが1つ存在する場合には、動画像符号化装置100の動きベクトル符号化部117は、そのブロックの動きベクトルを0として処理を行う。また、ピクチャ内符号化で符号化された周辺ブロックが2つ存在する場合には、動きベクトル符号化部117は残りの1つの周辺ブロックの動きベクトルを、符号化対象ブロックの動きベクトルの予測値として用いる。さらに、3つの周辺ブロックの全てがピクチャ内符号化で符号化されている場合には、動きベクトル符号化部117は、符号化対象ブロックの動きベクトルの予測値を0としてその動きベクトルの符号化処理を行う。
一方、ピクチャB11の符号化対象のマクロブロックと動き補償画像との差分を示す予測誤差画像が、予測誤差符号化部103及び符号列生成部104で符号化されて符号化データとして生成されており、上述のように符号化された動きベクトルの情報は、符号列生成部104でその符号化データに付加される。ただし、ダイレクトモードで符号化されたマクロブロックについては、動きベクトルの情報は符号化データに付加されない。
以後、同様の処理により、ピクチャB11の残りのマクロブロックに対して、符号化処理が行われる。そして、ピクチャB11のすべてのマクロブロックについて処理が終わると、次にピクチャB12の符号化処理が行われる。
以上のように、本発明の動きベクトル符号化方法は、各ブロックの動きベクトルを符号化するときには、既に符号化済みの周辺ブロックの動きベクトルから予測値を導出し、その予測値と符号化対象ブロックの動きベクトルとを用いてその動きベクトルの符号化を行う。そして、周辺ブロックがスキップモードやダイレクトモードのように、他のブロックの動きベクトルから求められた動きベクトルを用いて符号化されているような場合には、その周辺ブロックの符号化の際に上記他のブロックの動きベクトルから求められた動きベクトルを、その周辺ブロックの動きベクトルとして用いて予測値を導出する。
これにより、符号化対象ブロックの動きベクトルを、周辺ブロックの動きベクトルから導出された予測値を用いて符号化するときに、その周辺ブロックが他のブロックの動きベクトルを用いて符号化されている場合、その周辺ブロックの動きベクトルを、従来例のように0とすることなく、上記他のブロックの動きベクトルから求められた動きベクトルとするため、上記予測値の予測能力を高めることができ、その結果、動きベクトルの符号化効率を向上することができる。
なお、本実施の形態においては、マクロブロックは水平16×垂直16画素の単位で、動き補償は水平8×垂直8画素のブロック単位で、ブロック予測誤差画像の符号化は水平8×垂直8画素の単位で処理する場合について説明したが、これらの単位は別の画素数でも良い。
また、本実施の形態においては、符号化済みの3つの周辺ブロックの動きベクトルから求められた中央値を動きベクトル符号化の際の予測値として用いる場合について説明したが、この周辺ブロック数は3つ以外の他の数であっても良く、予測値の決定方法は他の方法であっても良い。例えば、左隣のブロックの動きベクトルを予測値として用いる方法であっても良く、中央値ではなく平均値を用いる方法などであっても良い。
また、本実施の形態においては、図20、図21を用いて、動きベクトルの符号化における周辺ブロックの位置を説明したが、これは他の位置であっても良い。
また、本実施の形態においては、他のブロックの動きベクトルを利用して符号化対象のブロックを符号化する方法として、スキップモードや時間的及び空間的なダイレクトモードを例に挙げて説明したが、他の方法であっても良い。
また、本実施の形態においては、符号化対象ブロックの動きベクトルと、周辺ブロックの動きベクトルから得られた予測値との差分を取ることにより動きベクトルの符号化を行う場合について説明したが、これは差分以外の方法により動きベクトルの符号化を行っても良い。
また、本実施の形態においては、空間的なダイレクトモードで周辺ブロックが符号化されている場合、その周辺ブロックの周辺にある符号化済みの3つのブロックの動きベクトルの中央値を求め、その中央値を周辺ブロックの動きベクトルとして扱う場合について説明したが、そのブロック数は3つ以外の他の数であっても良く、動きベクトルの決定方法は他の方法であっても良い。例えば、左隣のブロックの動きベクトルを周辺ブロックの動きベクトルとして用いる方法であっても良く、中央値ではなく平均値を用いる方法などであっても良い。
また、本実施の形態においては、空間的なダイレクトモードでBピクチャのブロックを符号化するときには、そのブロックに対して前後方向の2つの動きベクトルを求めたが、前方向又は後方向の一方向の2つの動きベクトルを求めても良い。この場合、Bピクチャは、そのピクチャに対して前方又は後方の一方向にある2枚のピクチャを参照している。
また、本実施の形態においては、Pピクチャの符号化においては、予め定められた1つのピクチャを参照し(例えばピクチャP13の符号化においては、ピクチャP10を参照)、Bピクチャの符号化においては、予め定められた2つのピクチャを参照し(例えばピクチャB11の符号化においては、ピクチャP10とP13を参照)、符号化する場合について説明したが、これらは、複数のピクチャからマクロブロックやブロック毎に参照するピクチャを選択して符号化しても良い。このような場合に、動きベクトルの予測値を生成するには、図8に示すようにすればよい。
図8は、ブロック毎に参照ピクチャが選択される場合において、動きベクトル符号化部117が符号化対象ブロックの動きベクトルの予測値を導出してその動きベクトルを符号化する動作を示すフロー図である。
まず、動きベクトル符号化部117は、符号化対象ブロックの周辺にある既に符号化済みの3つの周辺ブロックを特定する(ステップS300)。
そして動きベクトル符号化部117は、その特定された周辺ブロックのそれぞれが、他のブロックの動きベクトルを用いて符号化された周辺ブロックBaか、他のブロックの動きベクトルを用いずに符号化された周辺ブロックBbかを判別する(ステップS302)。
ここで動きベクトル符号化部117は、周辺ブロックBaに対しては、その符号化で用いた動きベクトルと、その周辺ブロックBaがどの参照ピクチャを参照しているかを示す情報とを取得して、その符号化で用いた動きベクトルを周辺ブロックBaの動きベクトルとして扱い、周辺ブロックBbに対しては、その周辺ブロックBbの動きベクトルと、その周辺ブロックBbがどの参照ピクチャを参照しているかを示す情報とを取得する(ステップS304)。
次に動きベクトル符号化部117は、ステップS304で取得した情報に基づき、3つの周辺ブロックのうち符号化対象ブロックと同じピクチャを参照している周辺ブロックを特定し(ステップS306)、その特定された周辺ブロックの数を判別する(ステップS308)。
そして、動きベクトル符号化部117は、ステップS308で判別された周辺ブロックの数が1個であれば、同じピクチャを参照しているその1つの周辺ブロックの動きベクトルを、符号化対象ブロックの動きベクトルMVの予測値とする(ステップS310)。
また、ステップS308で判別された周辺ブロックの数が1個以外であれば、動きベクトル符号化部117は、3つの周辺ブロックのうち符号化対象ブロックと異なるピクチャを参照している周辺ブロックの動きベクトルを0として(ステップS312)、3つの周辺ブロックの動きベクトルの中央値を、符号化対象ブロックの動きベクトルMVの予測値とする(ステップS314)。
動きベクトル符号化部117は、このようにステップS310又はステップS314で導出された予測値を用い、その予測値と符号化対象ブロックの動きベクトルMVとの差分値を求め、その差分値を符号化する(ステップS316)。
また、本実施の形態のように、動きベクトルの符号化を空間的に隣接するブロックの動きベクトルを予測値として用いて行う場合、動きベクトルの符号化のために動きベクトル記憶部116に保持しておく動きベクトルの量は、動きベクトル記憶部116にスキップモードやダイレクトモードで実際に動き補償に利用した動きベクトルを保持しておく場合には、1マクロブロックライン(高さが1マクロブロックで横幅が画面の横幅に等しい領域)分のブロックの動きベクトルを保持しておけば良い。これは、動きベクトル記憶部116にスキップモードやダイレクトモードで実際に動き補償に利用した動きベクトルを保持しておく場合で、本実施の形態において図20や図21を用いて説明したような周辺ブロックを用いる場合、動きベクトルの符号化の際に周辺ブロックとして参照されるブロックは、現在のマクロブロックを起点として、過去1マクロブロックスライス分であるからである。
(実施の形態2)
以下、本発明の第2の実施の形態における動画像復号化装置700について図面を参照しながら説明する。
図9は、本発明の第2の実施の形態における動画像復号化装置700のブロック図である。
この図9に示す動画像復号化装置700は、実施の形態1の動画像符号化装置100により符号化された動画像を復号化するものであって、符号列解析部701、予測誤差復号化部702、モード復号部703、動き補償復号部705、動きベクトル記憶部706、フレームメモリ707、加算演算部708、スイッチ709,710及び動きベクトル復号化部711を備えている。
符号列解析部701は、入力された符号列から各種データを抽出する。ここでいう各種データとは、符号化モードの情報および動きベクトルに関する情報などである。抽出された符号化モードの情報は、モード復号部703に出力される。また、抽出された動きベクトルの情報は、動きベクトル復号化部711に出力される。さらに、抽出された予測誤差符号化データは、予測誤差復号化部702に対して出力される。
予測誤差復号化部702は、入力された予測誤差符号化データの復号化を行い、予測誤差画像を生成する。生成された予測誤差画像はスイッチ709に対して出力される。そして、スイッチ709が端子bに接続されているときには、予測誤差画像は加算演算部708に対して出力される。
モード復号部703は、符号列から抽出された符号化モードの情報を参照し、スイッチ709とスイッチ710との制御を行う。符号化モードがピクチャ内符号化である場合には、スイッチ709を端子aに接続するとともに、スイッチ710を端子cに接続するように制御し、符号化モードがピクチャ間符号化である場合には、スイッチ709を端子bに接続するとともに、スイッチ710を端子dに接続するように制御する。さらに、モード復号部703は、符号化モードの情報を動きベクトル復号化部711に対して出力する。
動きベクトル復号化部711は、符号列解析部701から出力された動きベクトルの情報に対して、復号化処理を行う。
即ち、動きベクトル復号化部711は、符号化モード情報が動きベクトルを用いたピクチャ間予測符号化を示す場合には、図20、図21を用いて説明したのと同様、復号化対象のブロックに対して、既に復号化された周辺ブロックの動きベクトルを用いて予測値を導出する。例えば図20に示すように、動きベクトル復号化部711は、復号化対象ブロックAに対して、周辺ブロックBの動きベクトルMVb、周辺ブロックCの動きベクトルMVc、及び周辺ブロックDの動きベクトルMVdから予測値を導出する。ここで予測値は、3つの復号化済みの動きベクトルMVb,MVc,MVdの水平成分、垂直成分毎に求めた中央値(メディアン)を取って求められる。そして、動きベクトル復号化部711は、符号列解析部701から出力された動きベクトルの情報である差分値に、その予測値を足し合わせて、復号化対象ブロックAの動きベクトルMVを決定する。
また、動きベクトル復号化部711は、符号化モード情報が例えば上述のスキップモードや時間的又は空間的なダイレクトモードの何れかである場合には、既に復号化された周辺ブロックの動きベクトルのみを用いて動きベクトルを決定する。
図10は、本実施の形態における動きベクトル復号化部711の一般的な動作を示すフロー図である。まず、動きベクトル符号化部711は、復号化対象ブロックの周辺にある既に復号化済みの3つの周辺ブロックを特定する(ステップS200)。
そして動きベクトル復号化部711は、その特定された周辺ブロックのそれぞれが、他の動きベクトルを用いて符号化されていた周辺ブロックBaか、他の動きベクトルを用いずに符号化されていた周辺ブロックBbかを判別する(ステップS202)。
その結果、動きベクトル復号化部711は、特定された3つの周辺ブロックの中に周辺ブロックBaが含まれているか否かを判別する(ステップS204)。
ステップS204で周辺ブロックBaが含まれていると判別されたときには(ステップS204のY)、動きベクトル復号化部711は、周辺ブロックBaを復号化するために他のブロックの動きベクトルから求められた動きベクトルをその周辺ブロックBbの動きベクトルとして扱い、上述のように3つの周辺ブロックの動きベクトルから予測値を導出する(ステップS206)。
一方、ステップS206で周辺ブロックBaが含まれていないと判別されたときには(ステップS204のN)、動きベクトル復号化部711は、3つの周辺ブロックBbのそれぞれの検出結果に基づく動きベクトルから予測値を導出する(ステップS208)。
そして動きベクトル復号化部711は、符号列解析部701から出力された動きベクトルの情報である差分値に、ステップS206,S208で導出された予測値を加算することで、復号化対象ブロックの符号化された動きベクトルを復号化する(ステップS210)。また、動きベクトル復号化部711は、このように復号化された動きベクトルを動き補償復号部705に対して出力する。
動きベクトル記憶部706は、動きベクトル復号化部711で復号化された動きベクトルとモード復号部703で得られた符号化モードを記憶しておく。
動き補償復号部705は、動きベクトル復号化部711で復号化された動きベクトルに基づいて、フレームメモリ707からマクロブロックごとに動き補償画像を取得する。そして動き補償復号部705は、その動き補償画像を加算演算部708に出力する。
加算演算部708は、入力された予測誤差画像と動き補償画像とを加算し、復号化画像を生成し、その生成された復号化画像をフレームメモリ707に対して出力する。
また、フレームメモリ707は、加算演算部708により生成された復号化画像をフレームごとに保持する。
このような動画像復号化装置700の動作について、まず一般的な概略動作から説明する。
図11は、動画像復号化装置700の入出力関係を説明するための説明図である。
動画像復号化装置700は、この図11の(a)に示すように、実施の形態1の動画像符号化装置100から出力された符号列をその出力順に取得して、その符号列中に含まれるピクチャを順に復号化する。そして動画像復号化装置700は、図11中の(b)に示すように、復号化されたピクチャを表示順に並び替えて出力する。
ここで、上述のような動画像復号化装置700の復号化処理について、具体的に図11に示すピクチャP13及びピクチャB11の復号化を例に挙げて説明する。
<ピクチャP13の復号化処理>
まず、動画像復号化装置700の符号列解析部701は、ピクチャP13の符号列を取得して、その符号列からモード選択情報及び動きベクトル情報並びに予測誤差符号化データを抽出する。
モード復号部703は、ピクチャP13の符号列から抽出されたモード選択情報を参照し、スイッチ709と710の制御を行う。
以下、モード選択情報がピクチャ間予測符号化を示す場合について説明する。
動きベクトル復号化部711は、モード復号部703からのピクチャ間予測符号化を示すモード選択情報に基づき、ピクチャP13の符号列から抽出された動きベクトルの情報に対して、ブロック毎に上述のような復号化処理を行う。
ここで、動きベクトル復号化部711は、ピクチャP13の復号化対象ブロックの動きベクトルを復号化するときに、その復号化対象ブロックの周辺にある既に復号化済みの3つの周辺ブロックを特定し、これらの周辺ブロックが他のブロックの動きベクトルを用いて符号化されていたか否かを判別した結果、何れかの周辺ブロックが他の動きベクトルを用いて符号化されていたブロック、つまりスキップモードで符号化されていたブロックの場合には、実施の形態1の動きベクトル符号化部117と同様、その周辺ブロックを復号化するために他のブロックの動きベクトルから求められた動きベクトルをその周辺ブロックの動きベクトルとして扱う。即ち、動きベクトル復号化部711は、その周辺ブロックの周辺にある既に復号化された3つのブロックの動きベクトルから中央値を求め、これをその周辺ブロックの動きベクトルとして扱う。
また、動きベクトル記憶部706は、モード復号部703からのモード選択情報を記憶しており、この動きベクトル記憶部706が記憶するモード選択情報に基づき、動きベクトル復号化部711は、周辺ブロックのそれぞれが他のブロックの動きベクトルを用いて符号化されていたブロックか否かを判別する。さらに、動きベクトル記憶部706は、周辺ブロックの復号化に用いられる他のブロックの動きベクトルを記憶している。即ち、動きベクトル記憶部706は、スキップモードで符号化されていた周辺ブロックの周辺にある3つのブロックのそれぞれの動きベクトルを記憶しており、動きベクトル復号化部711は、復号化対象ブロックの動きベクトルを復号化するときには、その周辺ブロックに対して、動きベクトル記憶部706が記憶する上記3つのブロックの動きベクトルから中央値を求める。なお、動きベクトル記憶部706が、他のブロックの動きベクトルを用いて符号化されていたブロックに対して、そのブロックを復号化するために中央値を取って求められた動きベクトルを予め記憶しておいても良い。この場合、動きベクトル復号化部711は、復号化対象ブロックの動きベクトルを復号化するときに、スキップモードで符号化されていた周辺ブロックに対して動きベクトルを求める必要がなく、動きベクトル記憶部706が記憶する動きベクトルをそのままその周辺ブロックの動きベクトルとして用いることができる。
一方、ピクチャP13の復号化対象のマクロブロックに対する予測誤差符号化データが予測誤差復号化部702で復号化されて予測誤差画像として生成されており、スイッチ709,710が加算演算部708に接続されているため、動きベクトル復号化部711で復号化された動きベクトルに基づいて生成された動き補償画像は、その予測誤差画像に加算されて、フレームメモリ707に対して出力される。
また、動きベクトル復号化部711は、Pピクチャに対して動きベクトルの復号化を行うときには、後のピクチャやブロックの復号化のため、その動きベクトルとモード復号部703から得られた符号化モードを動きベクトル記憶部706に記憶させている。
以後、同様の処理により、ピクチャP13の残りのマクロブロックが順に復号化される。そして、ピクチャP13のマクロブロックがすべて復号化されると、ピクチャB11の復号化が行われる。
<ピクチャB11の復号化処理>
まず、動画像復号化装置700の符号列解析部701は、ピクチャB11の符号列を取得して、その符号列からモード選択情報及び動きベクトル情報並びに予測誤差符号化データを抽出する。
モード復号部703は、ピクチャB11の符号列から抽出されたモード選択情報を参照し、スイッチ709と710の制御を行う。
以下、モード選択情報がピクチャ間予測符号化を示す場合について説明する。
動きベクトル復号化部711は、モード復号部703からのピクチャ間予測符号化を示すモード選択情報に基づき、ピクチャB11の符号列から抽出された動きベクトルの情報に対して、ブロック毎に上述のような復号化処理を行う。
ここで、動きベクトル復号化部711は、ピクチャB11の復号化対象ブロックの動きベクトルを復号化するときに、その復号化対象ブロックの周辺にある既に復号化済みの3つの周辺ブロックを特定し、これらの周辺ブロックが他のブロックの動きベクトルを用いて符号化されていたか否かを判別した結果、何れかの周辺ブロックが他のブロックの動きベクトルを用いて符号化されていたブロック、つまり時間的や空間的なダイレクトモードで符号化されていたブロックの場合には、実施の形態1の動きベクトル符号化部117と同様、その周辺ブロックを復号化するために他のブロックの動きベクトルを用いて求められた動きベクトルをその周辺ブロックの動きベクトルとして扱う。
具体的に、動きベクトル復号化部711は、周辺ブロックが時間的なダイレクトモードで符号化されていた場合、動きベクトル記憶部706から、直前に復号化された参照ピクチャ(ピクチャP13)中の、ダイレクトモードで符号化された周辺ブロックと同じ位置にあるブロックの動きベクトルを読み出す。例えば図6に示すように、周辺ブロックCが時間的なダイレクトモードで符号化されていたとすると、動きベクトル復号化部711は、動きベクトル記憶部706からピクチャP13のブロックXの復号化後の動きベクトルを読み出す。そして、(式1)および(式2)を用いて、周辺ブロックCを符号化するために用いる前方動きベクトルMVFcおよび後方動きベクトルMVBcを求め、この動きベクトルMVFc,MVBcを周辺ブロックCの動きベクトルとして用いる。
なお、上述の場合では、動きベクトル復号化部711は、ピクチャP13中の、ダイレクトモードで符号化されていた周辺ブロックCと同じ位置にあるブロックXの動きベクトルMVpを動きベクトル記憶部706から読み出したが、動きベクトル記憶部706が、他のブロックの動きベクトルを用いて符号化されていたブロックに対して、そのブロックを復号化するために他のブロックの動きベクトルから求められた動きベクトルを予め記憶しておいても良い。この場合、動きベクトル記憶部706は、動きベクトルMVFc,MVBcを予め記憶しているため、動きベクトル復号化部711は、符号化対象ブロックAの動きベクトルを符号化するときに、周辺ブロックCに対して、ブロックXの動きベクトルMVpを読み出して(式1)および(式2)を用いて動きベクトルMVFc,MVBcを求める必要がなく、動きベクトル記憶部706が記憶する動きベクトルMVFc,MVBcをそのまま周辺ブロックCの動きベクトルとして用いることができる。
一方、周辺ブロックが空間的なダイレクトモードで符号化されていた場合、動きベクトル復号化部711は、その周辺ブロックの周辺にある他のブロックの動きベクトルを用いて求められた動きベクトルを、その周辺ブロックの動きベクトルとして扱う。例えば、図7に示すような状況では、動きベクトル復号化部711は、空間的なダイレクトモードで符号化されていた周辺ブロックCに対して、その周辺にある既に復号化された3つのブロックE,F,Gの動きベクトルから中央値を求め、この中央値が示す前方動きベクトルMVFcと後方動きベクトルMVBcをその周辺ブロックCの動きベクトルとして扱う。
また、動きベクトル記憶部706は、他のブロックの動きベクトルを用いずに符号化されていたブロックに対しては、そのブロックの復号化に用いた動きベクトルを記憶しているため、図7に示すような状況では、空間的なダイレクトモードで符号化されていた周辺ブロックCの周辺にある3つのブロックE,F,Gのそれぞれの動きベクトルを記憶しており、動きベクトル復号化部711は、復号化対象のブロックAの動きベクトルを復号化するときには、その周辺ブロックCに対して、動きベクトル記憶部706が記憶する上記3つのブロックE,F,Gの動きベクトルから動きベクトルMVFc,MVBcを求める。
なお、動きベクトル記憶部706が、他のブロックの動きベクトルを用いて符号化されていたブロックに対して、そのブロックを復号化するために中央値を取って求められた動きベクトルを予め記憶しておいても良い。この場合には、図7に示すような状況において、動きベクトル記憶部706は、動きベクトルMVFc,MVBcを予め記憶しており、動きベクトル復号化部711は、復号化対象のブロックAの動きベクトルを復号化するときに、空間的なダイレクトモードで符号化されていた周辺ブロックCに対して動きベクトルを求める必要がなく、動きベクトル記憶部706が記憶する動きベクトルMVFc,MVBcをそのままその周辺ブロックCの動きベクトルとして用いることができる。
ここで、動画像復号化装置700は、復号化対象ブロックの動きベクトルを復号化するときに、その周辺にある既に復号化済みの周辺ブロックが上述のようなピクチャ間予測符号化ではなく、ピクチャ内符号化で処理されていた場合には、例外的な処理を行う。
例えば、3つの周辺ブロック中にピクチャ内符号化で符号化されていた周辺ブロックが1つ存在する場合には、動画像復号化装置700の動きベクトル復号化部711は、その周辺ブロックの動きベクトルを0として処理を行う。また、ピクチャ内符号化で符号化された周辺ブロックが2つ存在する場合には、動きベクトル復号化部711は残りの1つの周辺ブロックの動きベクトルを、復号化対象ブロックの動きベクトルの予測値として用いる。さらに、3つの周辺ブロックの全てがピクチャ内符号化で符号化されていた場合には、動きベクトル復号化部711は、復号化対象ブロックの動きベクトルの予測値を0としてその動きベクトルの復号化処理を行う。
一方、ピクチャB11の復号化対象のマクロブロックに対する予測誤差符号化データが予測誤差復号化部702で復号化されて予測誤差画像として生成されており、スイッチ709,710が加算演算部708に接続されているため、動きベクトル復号化部711で復号化された動きベクトルに基づいて生成された動き補償画像は、その予測誤差画像に加算されて、フレームメモリ707に対して出力される。
以後、同様の処理により、ピクチャB11の残りのマクロブロックが順に復号化される。そして、ピクチャB11のマクロブロックがすべて復号化されると、ピクチャB12の復号化が行われる。
以上のように、本発明の動きベクトル復号化方法は、各ブロックの動きベクトルを復号化するときには、既に復号化済みの周辺ブロックの動きベクトルから予測値を導出し、その予測値と差分値とを用いることにより、動きベクトルの復号化を行う。そして、周辺ブロックがスキップモードやダイレクトモードのように、他のブロックの動きベクトルを用いて符号化されていたような場合には、その周辺ブロックの復号化のために他のブロックの動きベクトルから求められた動きベクトルを、その周辺ブロックの動きベクトルとして用いて予測値を導出する。
これにより、実施の形態1のような方法で符号化が行われた動きベクトルを正しく復号化することができる。
なお、本実施の形態においては、復号化済みである3つの周辺ブロックの動きベクトルから求められた中央値を動きベクトル復号化の際の予測値として用いる場合について説明したが、この周辺ブロック数は3つ以外の他の数であっても良く、予測値の決定方法は他の方法であっても良い。例えば、左隣のブロックの動きベクトルを予測値として用いる方法であっても良く、中央値でなく平均値を用いる方法などであっても良い。
また、本実施の形態においては、図20、図21を用いて、動きベクトルの復号化における周辺ブロックの位置を説明したが、これは他の位置であっても良い。
また、本実施の形態においては、他のブロックの動きベクトルを利用してブロックを符号化する方法として、スキップモードや時間方法及び空間的なダイレクトモードを例に挙げて説明したが、これは他の方法であっても良い。
また、本実施の形態においては、周辺ブロックの動きベクトルから得られた予測値と、符号列により示される差分値との加算を行うことにより動きベクトルの復号化を行う場合について説明したが、これは加算以外の方法により動きベクトルの復号化を行っても良い。
また、本実施の形態においては、空間的なダイレクトモードで周辺ブロックが符号化されていた場合おいて、その周辺ブロックの周辺にある復号化済みの3つのブロックの動きベクトルの中央値を求め、その中央値を周辺ブロックの動きベクトルとして扱う場合について説明したが、そのブロック数は3つ以外の他の数であっても良く、動きベクトルの決定方法は他の方法であっても良い。例えば、左隣のブロックの動きベクトルを周辺ブロックの動きベクトルとして用いる方法であっても良く、中央値ではなく平均値を用いる方法などであっても良い。
また、本実施の形態においては、空間的なダイレクトモードで符号化されていた周辺ブロックがある場合、その周辺ブロックに対して前後方向の2つの動きベクトルを求めたが、前方向又は後方向の一方向の2つの動きベクトルを求めても良い。この場合、復号化対象のBピクチャは、そのピクチャに対して前方又は後方の一方向にある2枚のピクチャを参照している。
また、本実施の形態においては、Pピクチャの復号化においては、予め定められた1つのピクチャを参照し(例えばピクチャP13の復号化においては、ピクチャP10を参照)、Bピクチャの復号化においては、予め定められた2つのピクチャを参照し(例えばピクチャB11の復号化においては、ピクチャP10とP13を参照)、復号化する場合について説明したが、これらは、複数のピクチャからマクロブロックやブロック毎に参照するピクチャを選択して復号化しても良い。このような場合に、動きベクトルの予測値を生成するには、図12に示すようにすればよい。
図12は、ブロック毎に参照ピクチャが選択される場合において、動きベクトル復号化部711が復号化対象ブロックの動きベクトルの予測値を導出し、その予測値を用いて復号化する動作を示すフロー図である。
まず、動きベクトル復号化部711は、復号化対象ブロックの周辺にある既に復号化済みの3つの周辺ブロックを特定する(ステップS400)。
そして動きベクトル復号化部711は、その特定された周辺ブロックのそれぞれが、他のブロックの動きベクトルを用いて符号化されていた周辺ブロックBaか、他のブロックの動きベクトルを用いずに符号化されていた周辺ブロックBbかを判別する(ステップS402)。
ここで動きベクトル復号化部711は、周辺ブロックBaに対しては、その復号化で用いた動きベクトルと、その周辺ブロックBaがどの参照ピクチャを参照しているかを示す情報とを取得して、その復号化で用いた動きベクトルを周辺ブロックBaの動きベクトルとして扱い、周辺ブロックBbに対しては、その周辺ブロックBbの動きベクトルと、その周辺ブロックBbがどの参照ピクチャを参照しているかを示す情報とを取得する(ステップS404)。
次に動きベクトル復号化部711は、ステップS404で取得した情報に基づき、3つの周辺ブロックのうち復号化対象ブロックと同じピクチャを参照している周辺ブロックを特定し(ステップS406)、その特定された周辺ブロックの数を判別する(ステップS408)。
そして、動きベクトル復号化部711は、ステップS408で判別された周辺ブロックの数が1個であれば、同じピクチャを参照しているその1つの周辺ブロックの動きベクトルを、復号化対象ブロックの動きベクトルの予測値とする(ステップS410)。
また、ステップS408で判別された周辺ブロックの数が1個以外であれば、動きベクトル復号化部711は、3つの周辺ブロックのうち復号化対象ブロックと異なるピクチャを参照している周辺ブロックの動きベクトルを0として(ステップS412)、3つの周辺ブロックの動きベクトルの中央値を、復号化対象ブロックの動きベクトルの予測値とする(ステップS414)。
このようにステップS410又はステップS414で導出された予測値を用い、その予測値に差分値を加算してこれを復号化対象ブロックの動きベクトルに復号化する(ステップS416)。
また、本実施の形態のように、動きベクトルの復号化を空間的に隣接するブロックの動きベクトルを予測値として用いて行う場合、動きベクトルの復号化のために動きベクトル記憶部706に保持しておく動きベクトルの量は、動きベクトル記憶部706にスキップモードやダイレクトモードで実際に動き補償に利用した動きベクトルを保持しておく場合には、1マクロブロックライン(高さが1マクロブロックで横幅が画面の横幅に等しい領域)分のブロックの動きベクトルを保持しておけば良い。これは、動きベクトル記憶部706にスキップモードやダイレクトモードで実際に動き補償に利用した動きベクトルを保持しておく場合で、本実施の形態において図20や図21を用いて説明したような周辺ブロックを用いる場合、動きベクトルの復号化の際に周辺ブロックとして参照されるブロックは、現在のマクロブロックを起点として、過去1マクロブロックスライス分であるからである。
(実施の形態3)
さらに、上記各実施の形態で示した動きベクトル符号化方法または動きベクトル復号化方法を実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
図13は、実施の形態1及び実施の形態2の動画像符号化装置100及び動画像復号化装置200が実行する動きベクトル符号化方法および動きベクトル復号化方法をコンピュータシステムにより実現するためのプログラムを格納する記憶媒体についての説明図である。
図13中の(b)は、フレキシブルディスクFDの正面からみた外観、断面構造、及びディスク本体FD1を示し、図13中の(a)は、記録媒体の本体であるディスク本体FD1の物理フォーマットの例を示している。
ディスク本体FD1はケースF内に内蔵され、ディスク本体FD1の表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。従って、上記プログラムを格納したフレキシブルディスクFDでは、上記ディスク本体FD1上に割り当てられた領域に、上記プログラムとしての動きベクトル符号化方法や動きベクトル復号化方法が記録されている。
また、図13中の(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。
上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsが上記プログラムとしての動きベクトル符号化方法または動きベクトル復号化方法をフレキシブルディスクドライブFDDを介して書き込む。また、フレキシブルディスクFD内のプログラムにより上記動きベクトル符号化方法又は動きベクトル復号化方法をコンピュータシステムCs中に構築する場合は、フレキシブルディスクドライブFDDによりプログラムがフレキシブルディスクFDから読み出され、コンピュータシステムCsに転送される。
なお、上記説明では、記録媒体としてフレキシブルディスクFDを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ICカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
(実施の形態4)
さらにここで、上記実施の形態で示した動きベクトル符号化方法や動きベクトル復号化方法の応用例とそれを用いたシステムを説明する。
図14は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図14のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband-Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラex116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はデジタルカメラ等の静止画、動画が撮影可能な機器である。
この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画像符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した動画像符号化装置あるいは動画像復号化装置を用いるようにすればよい。
その一例として携帯電話について説明する。
図15は、上記実施の形態で説明した動きベクトル符号化方法と動きベクトル復号化方法を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したものである。
さらに、携帯電話ex115について図16を用いて説明する。携帯電話ex115は表示部ex202及び操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306及び音声処理部ex305が同期バスex313を介して互いに接続されている。
電源回路部ex310は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ex115を動作可能な状態に起動する。
携帯電話ex115は、CPU、ROM及びRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってディジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信信号を増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声信号に変換した後、これを音声出力部ex208を介して出力する。
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303及びLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
画像符号化部ex312は、本願発明で説明した画像符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画像符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してディジタルの音声データとして多重分離部ex308に送出する。
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信信号を変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データの符号化ビットストリームと音声データの符号化ビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
次に、画像復号化部ex309は、本願発明で説明した画像復号化装置を備えた構成であり、画像データの符号化ビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声信号に変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図17に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報の符号化ビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置により符号化ビットストリームを復号化してこれを再生する。
また、記録媒体であるCDやDVD等の蓄積メディアex402に記録した符号化ビットストリームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画像復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画像復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画像復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
更に、画像信号を上記実施の形態で示した画像符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある。更にSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画像復号化装置を備えていれば、DVDディスクex421やSDカードex422に記録した画像信号を再生し、モニタex408で表示することができる。
なお、カーナビゲーションex413の構成は例えば図16に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
このように、上記実施の形態で示した動きベクトル符号化方法あるいは動きベクトル復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。