(57)【要約】【課題】動きベクトルを表す符号量を抑制させることができる動画像符号化方法及び動画像符号化装置を提供する。【解決手段】マクロブロックの動きベクトルを評価し（ステップ３１ｂ）、その結果に基づいて（ステップ３１ｃ）、マクロブロックの動き補償つきのフレーム間符号化（ステップ３１ｎ、３１ｏ）またはブロックの動き補償つきフレーム間符号化（ステップ３１ｇ、３１ｈ）のいずれかを選択し、実行することにより、動きベクトルを表す符号量の発生を抑制することができる。【選択図】  図２
2004201150.tif 000002
【特許請求の範囲】
【請求項１】
フレームを複数のマクロブロックに分割し、前記マクロブロックを動き補償つきフレーム間符号化する動画像符号化方法であって、
前記マクロブロックの動きベクトルを評価し、
前記評価結果に基づいて、前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化、または前記マクロブロックを複数のブロックに分割し、前記複数のブロック毎の動きベクトルを用いた動き補償つきフレーム間符号化のいずれかを選択して実行することを特徴とする動画像符号化方法。
【請求項２】
前記選択の後に前記複数のブロックの動き検出を行うことを特徴とする請求項１記載の動画像符号化方法。
【請求項３】
前記マクロブロックの動きベクトルの評価は、前記マクロブロックの動きベクトルとその予測値との差分ベクトルの評価であり、
前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化は、前記マクロブロックの動きベクトルとその予測値との差分ベクトルの符号化を含み、
前記複数のブロック毎の動きベクトルを用いた動き補償つきフレーム間符号化は、前記ブロック毎の動きベクトルとその予測値との差分ベクトルの符号化を含むことを特徴とする請求項１記載の動画像符号化方法。
【請求項４】
前記差分ベクトルの評価は、その各要素の絶対値の和によって行い、前記和が所定数より大きい場合に、前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化を選択することを特徴とする請求項３記載の動画像符号化方法。
【請求項５】
前記選択の後に前記複数のブロックの動き検出を行うことを特徴とする請求項４記載の動画像符号化方法。
【請求項６】
前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化は、前記マクロブロックと前記マクロブロックの動きベクトルの示す参照フレーム中の予測マクロブロックとの差分の前記ブロックごとの符号化を含むことを特徴とする請求項１乃至請求項５いずれか１項記載の動画像符号化方法。
【請求項７】
フレームを複数のマクロブロックに分割し、前記マクロブロックを動き補償つきフレーム間符号化する動画像符号化装置であって、
前記マクロブロックの動きベクトルを評価する評価手段と、
前記評価手段の評価結果に基づいて、前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化、または前記マクロブロックを複数のブロックに分割し、前記複数のブロック毎の動きベクトルを用いた動き補償つきフレーム間符号化のいずれかを選択して実行する符号化手段とを
具備することを特徴とする動画像符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動き補償処理を用いて高い圧縮率による符号化を行う動画像符号化方法及び動画像符号化装置に関する。
【０００２】
【従来の技術】
ＭＰＥＧ方式などにおける動画像の符号化は、フレームと呼ばれる時間的に連続する静止画を所定の大きさのブロックに分割し、それぞれのブロックを符号化することによって行なわれている。ブロックの符号化は、それを直交変換、例えば、離散コサイン変換し、得られた離散コサイン変換係数を量子化した上で符号に置きかえることによって行われている。
【０００３】
ここで、あるブロックを符号化するには、そのブロックのみを用いて符号化する、即ち、イントラ符号化も行われる。また、参照フレーム、例えば、符号化対象フレームの直前のフレームのブロックとの差を符号化する、即ち、フレーム間符号化も行われている。あるフレームとそれの直前のフレームとは類似した画像であることが多いため、このフレーム間符号化によって符号量の減少が可能である。
【０００４】
しかし、符号化対象フレームのあるブロックは、参照フレームの同じ位置の画像と必ずしも類似しているとは限らず、それとは異なる位置の画像と類似していることも多い。
【０００５】
そこで、動き補償つきのフレーム間符号化が行われている。即ち、それぞれのブロックについて以下のように符号化を行う。まず、動き検出処理によって、符号化を行っている対象ブロックに最も類似した予測ブロックを参照フレームから検出する。次に、対象ブロックから予測ブロックへの動きを表す動きベクトルと、対象ブロックと予測ブロックとの差を符号化する。ベクトルの符号化は、ベクトルの値を符号に置きかえることによって行われ、ベクトルの値が小さい程、短い符号が割当てられている。
【０００６】
なお、フレーム間符号化として、動きベクトルをブロックごとに求めるインター４Ｖ符号化の他に、位置的に連続する複数個のブロックを統合したマクロブロックと呼ばれる単位ごとに動きベクトルを求めるインター符号化を行うこともできる。
【０００７】
動き補償を加えることによって画像を表す符号量の減少が可能であるが、動きベクトルを表す符号量が加わるため、それの抑制が必要となる。そのため、動きベクトルの予測値を計算し、動きベクトルの符号化に代えて、動きベクトルと動きベクトルの予測値の差を符号化することが行われている。また、動きベクトルを表す符号量と画像を表す符号量の合計を最小化する動きベクトルを求める処理が行われている（例えば、特許文献１参照。）。
【０００８】
【特許文献１】
特開平１１−２４３５５１号公報（第２−４、１４頁、図１３、１４）
【０００９】
【発明が解決しようとする課題】
しかしながら、上述した従来の方法では、動きベクトルを表す符号量の一層の抑制が必要となる問題点があった。
【００１０】
本発明は、上記問題点を解決するためになされたもので、動きベクトルを表す符号量を抑制させることができる動画像符号化方法及び動画像符号化装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明の動画像符号化方法は、フレームを複数のマクロブロックに分割し、前記マクロブロックを動き補償つきフレーム間符号化する動画像符号化方法であって、前記マクロブロックの動きベクトルを評価し、前記評価結果に基づいて、前記マクロブロックの動きベクトルを用いた動き補償つきフレーム間符号化、または前記マクロブロックを複数のブロックに分割し、前記複数のブロック毎の動きベクトルを用いた動き補償つきフレーム間符号化のいずれかを選択して実行することを特徴とする。
【００１２】
本発明によれば、マクロブロックの動きベクトルを評価し、その結果によって、マクロブロックの動き補償つきのフレーム間符号化とブロックの動き補償つきフレーム間符号化のいずれかを選択し、実行することにより、動きベクトルを表す符号量の発生を抑制することができる。
【００１３】
【発明の実施の形態】
以下に、本発明による動画像符号化装置の実施の形態を、図面を参照して説明する。
【００１４】
図１は、本発明の実施形態に係る動画像符号化装置を示すブロック図である。この装置は、装置の動作の制御を行う制御部１９と、参照フレームが記憶される参照フレーム記憶部１１と、ブロック及びマクロブロックの動きを検出する動き検出部１２と、ブロックの離散コサイン変換を行う離散コサイン変換部１３と、離散コサイン変換係数を量子化する量子化部１４と、量子化された離散コサイン変換係数を逆量子化する逆量子化部１５と、離散コサイン変換係数を逆離散コサイン変換する逆離散コサイン変換部１６と、離散コサイン変換係数と動きベクトルに可変長の符号を割当てて出力符号２０を出力する可変長符号化部１７とにより構成される。
【００１５】
上記のように構成された、本発明の実施形態に係る動画像符号化装置の動作を説明する。動画像符号化装置は、入力フレーム１０を入力し、それを符号化した出力符号２０を出力する装置であって、１フレームの入力ごとに、以下に説明する動作を行う。
【００１６】
まず、制御部１９は、入力フレーム１０が１６×１６画素に分割されたマクロブロックを、そのフレームの左上のマクロブロックからラスタスキャン順に符号化処理を行う。また、同じ行のマクロブロックについては、左のマクロブロックから符号化処理を行う。また、マクロブロックを、４つの８×８画素のブロックに分割して扱う。
【００１７】
図２は、１つのマクロブロックを符号化する際の制御部１９の制御動作のフローチャートを示す。あるマクロブロックの符号化を開始し（ステップ３１ａ）、まず、動き検出部１２に入力フレーム１０が入力されると、動き検出部１２はそのマクロブロックの動き検出を行う（ステップ３１ｂ）。図３は、マクロブロックの動き検出の概念を示す。
【００１８】
即ち、動き検出部１２は、符号化対象のマクロブロック１０ａ（以下、対象マクロブロックと称する）の１６×１６画素の信号値と、参照フレーム記憶部１１に記憶された参照フレーム４１の１６×１６画素の信号値との差分を求める。
【００１９】
その際、参照フレーム４１の対象マクロブロック１０ａと同じ位置にあるマクロブロック４１ａの１６×１６画素のみならず、そのマクロブロック４１ａから水平及び垂直の正負方向に所定の画素数の範囲内でずらした１６×１６画素の信号値との差分も求める。
【００２０】
そして、それらの画素の中で最も差分の小さいマクロブロックを求め、その画素を予測マクロブロック４１ｂとして検出する。また、マクロブロック４１ａと予測マクロブロック４１ｂの間の画素数（ずれた量）をマクロブロックの動きベクトル４１ｃ（例えば、Ｘａとする）として検出する。
【００２１】
ここで、１６×１６画素の信号値同士の差分は、それぞれ対応する位置の信号値の差であり、その差分の大小は、上記信号値の差の絶対値の総和（これをＳＡＤ、Sum of absolute differenceと呼ぶ）の大小によって評価する。
【００２２】
続いて、制御部１９は、マクロブロックの動きベクトルの予測値Ｘｂを求め、ステップ３１ｂで求めたマクロブロックの動きベクトル４１ｃ（Ｘａ）と上記予測値Ｘｂとの差分ベクトルＸｃ＝Ｘａ−Ｘｂを求め、その大きさ｜Ｘｃ｜と、所定値Ｃｘとの大小比較を行う（ステップ３１ｃ）。
【００２３】
ここで、マクロブロックの動きベクトルの予測値Ｘｂは、そのマクロブロックに隣接するマクロブロック中のブロックの動きベクトルに基づいて求める。図４は、マクロブロックの動きベクトルの予測値Ｘｂを求める際に参照する、そのマクロブロックに隣接するマクロブロック中のブロックを示す。
【００２４】
即ち、対象マクロブロック１０ａの動きベクトルの予測値は、対象マクロブロック１０ａの左に隣接するマクロブロックの右上のブロック４１ｄ１と、対象マクロブロック１０ａの上に隣接するマクロブロックの左下のブロック４１ｄ２と、対象マクロブロック１０ａの右上に隣接するマクロブロックの左下のブロック４１ｄ３のそれぞれの動きベクトルの対応する各要素毎に中央値を求め、それらの中央値を要素とするベクトルとして求める。
【００２５】
なお、上記隣接するマクロブロックの一部、または、全部について、ブロックの動きベクトルが求められていない場合には、求められていないブロックの動きベクトルに代えて、それの属するマクロブロックの動きベクトルを用いる。
【００２６】
更に、対象マクロブロック１０ａが入力フレーム１０の上端、または、左端のマクロブロックであり、上記隣接するマクロブロックの一部または全部が入力フレーム１０に存在しない場合で、存在しないマクロブロックが１つ、または、３つの際には、存在しないマクロブロック中ブロックの動きベクトルに代えて、０ベクトルを用いる。ここで、０ベクトルとは、全ての要素が０のベクトルである。
【００２７】
また、存在しないマクロブロックが２つの際には、存在しないマクロブロック中のブロックの動きベクトルに代えて、存在するマクロブロックの所定ブロックの動きベクトルを用いる。
【００２８】
このようにして求めたマクロブロックの動きベクトル４１ｃ（Ｘａ）とその予測値Ｘｂの差分ベクトルの大きさ｜Ｘｃ｜が所定値Ｃｘより大きいと、それを可変長符号化部１７が可変長符号に置きかえた場合、出力符号２０の符号長が長くなることが明らかである。その結果、制御部１９は、｜Ｘｃ｜＞Ｃｘではインター４Ｖ符号化は不適当と判断する。
【００２９】
なぜなら、インター符号化では、１つのマクロブロックあたり、マクロブロックの動きベクトルとその予測値の差分１組を符号化すればよいのに、インター４Ｖ符号化では、ブロックの動きベクトルとその予測値の差分４組を符号化する必要があるからである。
【００３０】
制御部１９は、ステップ３１ｃで差分ベクトルの大きさ｜Ｘｃ｜が所定値Ｃｘより小さい場合（｜Ｘｃ｜≦Ｃｘ）、即ち、インター符号化もインター４Ｖ符号化も可と判断される場合には、続けて、動き検出部１２に対象マクロブロック１０ａ内の各ブロックについての動き検出を行わせる（ステップ３１ｄ）。図５は、ブロックの動き検出の概念を示す。
【００３１】
即ち、動き検出部１２は、対象マクロブロック１０ａ（１６×１６画素）を４分割した対象ブロック１０ｂ（１０ｂ１〜１０ｂ４）それぞれの８×８画素の信号値と、参照フレーム記憶部１１に記憶された参照フレーム４１の８×８画素の信号値との差分を求める。
【００３２】
その際、参照フレーム４１の対象ブロック１０ｂと同じ位置にあるブロック４２ａの８×８画素のみならず、そのブロック４２ａから水平及び垂直の正負方向に所定の画素数の範囲内でずらした画素の信号値との差分を求める。
【００３３】
そして、対象ブロック１０ｂ１〜１０ｂ４の画素毎に対応する参照フレームの画素の中で最も差分の小さいブロック４２ｂを求め、その画素を予測ブロック４２ｂ１〜４２ｂ４として検出する。また、ブロック４２ａの４ブロックと予測ブロック４２ｂ１〜４２ｂ４の間の画素数（ずれた量）をブロックの動きベクトル４２ｃ１〜４２ｃ４（例えば、Ｙａ１〜Ｙａ４とする）として検出する。
【００３４】
続いて、制御部１９は、フレーム間符号化を行うと仮定して、インター符号化とインター４Ｖ符号化の適・不適を、画素を符号化した符号長の観点から評価する（ステップ３１ｅ）。即ち、対象マクロブロック１０ａと予測マクロブロック４１ｂとの差分ΔＸを符号化した場合の符号長Ｌｘと、対象ブロック１０ｂ（１０ｂ１〜１０ｂ４）と予測ブロック４２ｂ（４２ｂ１〜４２ｂ４）の差分ΔＹ１〜ΔＹ４を符号化した場合の符号長の総和Ｌｙとの長短を、それぞれの符号化を行うことなく、少ない計算量で評価する。
【００３５】
具体的には、対象マクロブロック１０ａと予測マクロブロック４１ｂとのＳＤＡをＳＡＤ１、各対象ブロック１０ｂとそれに対応する予測ブロック４２ｂとのＳＡＤの総和をＳＡＤ２とし、
ＳＡＤ２＜ＳＡＤ１−（Ｎ／２＋１）
が成立する場合には、インター４Ｖ符号化が適当であると判断する。また、上式が成立しない場合には、インター符号化が適当であると判断する。ここで、Ｎは、マクロブロック内の画素数で、この場合の画素数は２５６である。
【００３６】
ステップ３１ｅでフレーム間符号化を行うならインター４Ｖ符号化が適当と判断される場合には、インター４Ｖ符号化とイントラ符号化のいずれが適当かを判断する（ステップ３１ｆ）。即ち、
Ａ＜ＳＡＤ２−２×Ｎ
が成立する場合には、イントラ符号化が適当であると判断する。また、上式が成立しない場合には、インター４Ｖ符号化が適当であると判断する。ここで、Ａは、対象マクロブロック１０ａの全画素の信号値とそれらの平均値との差を求め、それらの絶対値の総和である。また、ＳＡＤ２は、ステップ３１ｅで説明したものである。
【００３７】
インター４Ｖ符号化が適当と判断された場合には、動き検出部１２は、まず、ブロックの動きベクトル４２ｃ１〜４２ｃ４（ベクトルＹａ１〜Ｙａ４）とその予測値Ｙｂ（Ｙｂ１〜Ｙｂ４）との差分ベクトルＹｃ（Ｙｃ１＝Ｙａ１−Ｙｂ１〜Ｙｃ４＝Ｙａ４−Ｙｂ４）を、動き検出部１２から可変長符号化部１７へ送って、可変長符号化部１７で可変長符号化させる（ステップ３１ｇ）。可変長符号化部１７は、作成した可変長符号を出力符号２０として出力する。
【００３８】
ここで、ブロックの動きベクトルの予測値Ｙｂ（Ｙｂ１〜Ｙｂ４）は、そのブロックが属するマクロブロック、乃至、それに隣接するマクロブロック中のブロックの動きベクトルに基づいて求める。その詳細を、図６を参照して説明する。
【００３９】
まず、図６（ａ）は、対象マクロブロック１０ａの左上の位置にある対象ブロック１０ｂ１の動きベクトルの予測値（Ｙｂ１）を求める際に参照する、対象マクロブロック１０ａに隣接するマクロブロック中のブロックを示す。
【００４０】
即ち、対象ブロック１０ｂ１の動きベクトルの予測値は、対象マクロブロック１０ａの左に隣接するマクロブロックの右上のブロック４２ｄ１と、対象マクロブロック１０ａの上に隣接するマクロブロックの左下のブロック４２ｄ２と、対象マクロブロック１０ａの右上に隣接するマクロブロックの左下のブロック４２ｄ３のそれぞれの動きベクトルの対応する各要素毎に中央値を求め、それらの中央値を要素とするベクトルとして求める。
【００４１】
次に、図６（ｂ）は、対象マクロブロック１０ａの右上の位置にある対象ブロック１０ｂ２の動きベクトルの予測値（Ｙｂ２）を求める際に参照する、対象マクロブロック１０ａ、乃至、それに隣接するマクロブロック中のブロックを示す。
【００４２】
即ち、対象ブロック１０ｂ２の動きベクトルの予測値は、対象マクロブロック１０ａの左上のブロック４２ｅ１（１０ｂ１）と、対象マクロブロック１０ａの上に隣接するマクロブロックの右下のブロック４２ｅ２と、対象マクロブロック１０ａの右上に隣接するマクロブロックの左下のブロック４２ｅ３のそれぞれの動きベクトルの対応する各要素毎に中央値を求め、それらの中央値を要素とするベクトルとして求める。
【００４３】
次に、図６（ｃ）は、対象マクロブロック１０ａの左下の位置にある対象ブロック１０ｂ３の動きベクトルの予測値（Ｙｂ３）を求める際に参照する、対象マクロブロック１０ａ、乃至、それに隣接するマクロブロック中のブロックを示す。
【００４４】
即ち、対象ブロック１０ｂ３の動きベクトルの予測値は、対象マクロブロック１０ａの左に隣接するマクロブロックの右下のブロック４２ｆ１と、対象マクロブロック１０ａの左上のブロック４２ｆ２（１０ｂ１）と、対象マクロブロック１０ａの右上のブロック４２ｆ３（１０ｂ２）のそれぞれの動きベクトルの対応する各要素毎に中央値を求め、それらの中央値を要素とするベクトルとして求める。
【００４５】
次に、図６（ｄ）は、対象マクロブロック１０ａの右下の位置にある対象ブロック１０ｂ４の動きベクトルの予測値（Ｙｂ４）を求める際に参照する、対象マクロブロック１０ａ中のブロックを示す。
【００４６】
即ち、対象ブロック１０ｂ４の動きベクトルの予測値は、対象マクロブロック１０ａの左下のブロック４２ｇ１（１０ｂ３）と、同じく、左上のブロック４２ｇ２（１０ｂ１）と、同じく、右上のブロック４２ｇ３（１０ｂ２）のそれぞれの動きベクトルの対応する各要素毎に中央値を求め、それらの中央値を要素とするベクトルとして求める。
【００４７】
なお、対象ブロック１０ｂ（１０ｂ１〜１０ｂ３）が対象マクロブロック１０ａのどの位置であるかに係らず、上記隣接するマクロブロックの一部、または、全部について、ブロックの動きベクトルが求められていない場合にそれに代えて用いるベクトルは、ステップ３１ｃで説明した、マクロブロックの動きベクトルの予測値を求める際に説明したものと同じである。
【００４８】
更に、対象マクロブロック１０ａが入力フレーム１０の上端、または、左端のマクロブロックであり、上記隣接するマクロブロックの一部または全部が入力フレーム１０に存在しない場合に、それらの中のブロックの動きベクトルに代えて用いるベクトルも、ステップ３１ｃで説明した、マクロブロックの動きベクトルの予測値を求める際に説明したものと同じである。
【００４９】
続けて、各対象ブロック１０ｂ（１０ｂ１〜１０ｂ４）とそれに対応する予測ブロック４２ｂ（４２ｂ１〜４２ｂ４）の差分ΔＹ（ΔＹ１〜ΔＹ４）を可変長符号化部１７で符号化する（ステップ３１ｈ）。この時の、１つの対象ブロック（例えば、１０ｂ１）に対する差分の符号化処理の詳細を図７に示す。
【００５０】
即ち、開始（ステップ５１ａ）後、まず、動き検出部１２から対象ブロック１０ｂ１とその予測ブロック４２ｂ１の差分ΔＹ１を離散コサイン変換部１３へ送って、離散コサイン変換させる（ステップ５１ｂ）。続いて、離散コサイン変換部１３が作成した離散コサイン係数を量子化部１４へ送って、量子化させる（ステップ５１ｃ）。
【００５１】
続いて、量子化部１４が作成した量子化された離散コサイン変換係数を可変長符号化部１７へ送って、可変長符号化させる（ステップ５１ｄ）。可変長符号化部１７は、作成した可変長符号を出力符号２０として出力する。
【００５２】
また、量子化部１４が作成した量子化された離散コサイン変換係数を逆量子化部１５へも送って、逆量子化させる（ステップ５１ｅ）。続いて、逆量子化部１５が作成した逆量子化された離散コサイン変換係数を逆離散コサイン変換部１６へ送って、逆離散コサイン変換させる（ステップ５１ｆ）。
【００５３】
逆離散コサイン変換部１６が作成した画像は、次のフレームの符号化に際して用いる参照フレームのブロックとなるので、仮参照フレーム記憶部（図示せず）に格納する（ステップ５１ｇ）。符号化を行っている入力フレーム１０の全マクロブロックの符号化後、仮参照フレーム記憶部に記憶された参照フレームを参照フレーム記憶部１１へ移す。
【００５４】
１つの対象ブロック１０ｂ１について以上の処理が終了する（ステップ５１ｈ）と、他の３つの対象ブロック１０ｂ２〜１０ｂ４についても同じ処理を繰返し、ステップ３１ｈの各対象ブロック１０ｂとその予測ブロック４２ｂとの差分ΔＹ２〜ΔＹ４の符号化を終了し、対象マクロブロック１０ａの符号化を終了する（ステップ３１ｉ）。
【００５５】
一方、ステップ３１ｆでイントラ符号化が適当と判断された場合には、まず、イントラ符号化を示す信号を可変長符号化部１７へ送って、可変長符号化部１７は、それを符号化して出力符号２０に出力する（ステップ３１ｊ）。続いて、各対象ブロック１０ｂ（１０ｂ１〜１０ｂ４）を符号化する（ステップ３１ｋ）。この処理は、予測ブロック４２ｂ（４２ｂ１〜４２ｂ４）を用いないことが特徴であるが、ステップ３１ｈで説明した処理と同様で、詳細を図７に示した１つの対象ブロック１０ｂに対する符号化処理を４回繰返す。
【００５６】
ステップ３１ｃ及びステップ３１ｅで、フレーム間符号化を行うならインター符号化が適当と判断された場合には、まず、イントラ符号化が適当か、インター符号化が適当かを判断する（ステップ３１ｍ）。
【００５７】
即ち、
Ａ＜ＳＡＤ１−２×Ｎ
が成立する場合には、イントラ符号化が適当と判断する。また、上式が成立しない場合には、インター符号化が適当と判断する。ここで、Ａは、対象マクロブロック１０ａの全画素の信号値とその平均値との差を求め、それらの絶対値の総和である。また、ＳＡＤ１は、ステップ３１ｅで説明したものである。
【００５８】
イントラ符号化が適当と判断された場合には、既に説明したステップ３１ｊ、３１ｋの処理を行う。一方、インター符号化が適当と判断された場合には、マクロブロックの動きベクトル４１ｃ（Ｘａ）とその予測値Ｘｂの差分ベクトルＸｃを動き検出部１２から可変長符号化部１７へ送って、可変長符号化部１７で可変長符号化させる（ステップ３１ｎ）。可変長符号化部１７は、作成した可変長符号を出力符号２０として出力する。
【００５９】
続いて、対象マクロブロック１０ａと予測マクロブロック４１ｂの差分ΔＸを符号化する（ステップ３１ｏ）。この処理は、対象マクロブロック１０ａと予測マクロブロック４１ｂをそれぞれ４つのブロックに分割し、対象マクロブロック１０ａ内の１つブロックとそれに対応する位置の予測マクロブロック４１ｂ内のブロックとの差分の符号化を４回繰返すことによって行う。対象マクロブロック１０ａ内の１つブロックとそれに対応する位置の予測マクロブロック４１ｂ内のブロックとの差分の符号化の処理は、ステップ３１ｈで説明した通りであって、その詳細は図７に示す通りである。
【００６０】
以上に説明した、マクロブロックの動きベクトル４１ｃとその予測値の差分を評価し、それが大きいと判断される場合のフレーム間符号化にはマクロブロックの動き補償が適当と判断する、即ち、フレーム間符号化には、インター４Ｖ符号化を避け、インター符号化が適当と判断する処理により、動きベクトルを表す符号量の発生を抑制することができる。
【００６１】
即ち、動き検出部１２は、インター符号化による場合とインター４Ｖ符号化による場合に対応して、対象マクロブロック１０ａ、または、対象ブロック１０ｂと、所定の画素数の範囲内でずらした画素の信号値との差分を求めることによって、マクロブロックの動きベクトル４１ｃ、または、ブロックの動きベクトル４２ｃを求めるため、これらの動きベクトルはほぼ同じことが多い。
【００６２】
更に、マクロブロックの動きベクトルの予測値Ｘｂとマクロブロックの左上のブロック１０ｂ１の動きベクトルの予測値Ｙａ１とは同じベクトルとなるため、マクロブロック１０ａの動きベクトルを表す符号量とマクロブロックの左上のブロック１０ｂ１の動きベクトルを表す符号量はほぼ等しいことが多い。ここで、動きベクトルを表す符号量は、動きベクトルとその予測値との差分を符号化した際の符号量であって、以下の説明についても同じである。
【００６３】
また、マクロブロックの左下のブロック１０ｂ３と、右下のブロック１０ｂ４のそれぞれの動きベクトルの予測値は、主にそれらの属するマクロブロック１０ａ内のブロックの動きベクトルから予測するため、それぞれの動きベクトルに近い予測値が得られ、その結果、それらの動きベクトルを表す符号量は比較的小さい。
【００６４】
そこで、インター４Ｖ符号化による動きベクトルを表す符号量は、インター符号化による動きベクトルを表す符号量と比較して、ほぼ、マクロブロックの右上のブロック１０ｂ２の動きベクトルを表す符号量だけ、大きいと考えることができる。
【００６５】
一方、マクロブロックの右上のブロック１０ｂ２の動きベクトルの予測値は、主に、そのマクロブロックの範囲外のブロックの動きベクトルから求めるので、マクロブロックの左上のブロック１０ｂ１の動きベクトルの予測値とほぼ等しいことが多い。そこで、マクロブロックの右上のブロック１０ｂ２の動きベクトルを表す符号量は、マクロブロックの左上のブロック１０ｂ１の動きベクトルを表す符号量とほぼ等しいことが多く、それは大きな符号量となり、それを以上に説明した処理により抑制することができる。
【００６６】
また、以上に説明した、マクロブロックの動きベクトル４１ｃとその予測値の差分を評価し、それが大きいと判断される場合のフレーム間符号化にはマクロブロックの動き補償が適当と判断する処理により、併せて、その場合にステップ３１ｄのブロック単位の動き検出の処理を省くことができる。
【００６７】
以上の説明では、参照フレーム記憶部１１には、符号化を行う入力フレーム１０の直前の参照フレーム４１が記憶されているとしたが、最初のフレームの符号化の際は参照フレーム４１が存在しない。その場合には、入力フレーム１０の全てのマクロブロックに対してイントラ符号化を行う。また、所定時間間隔で入力フレーム１０の全てのマクロブロックに対してイントラ符号化を行っても良い。
【００６８】
本実施形態では、参照フレーム４１は直前のフレームとしたが、直前のフレームと直後のフレームの双方を用いても良い。更に、静止画が複数の任意形状の画像の集まりとして定義されていてもよい。その場合には、上記各任意形状をフレームとみなして本発明を適用できる。本発明は以上の構成に限定されるものではなく、種々の変形が可能である。
【００６９】
【発明の効果】
以上述べたように、本発明によれば、マクロブロックの動きベクトルを評価し、その結果によって、マクロブロックの動き補償つきのフレーム間符号化とブロックの動き補償つきフレーム間符号化のいずれかを選択し、実行することにより、動きベクトルを表す符号量の発生を抑制することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る動画像符号化装置を示すブロック図。
【図２】本発明の実施形態に係る動画像符号化装置がマクロブロックを符号化する動作を示すフローチャート。
【図３】マクロブロックの動き補償を示す概念図。
【図４】マクロブロックの動きベクトルの予測値を求める際に参照するブロックを示す図。
【図５】ブロックの動き補償を示す概念図。
【図６】ブロックの動きベクトルの予測値を求める際に参照するブロックを示す図。
【図７】本発明の実施形態に係る動画像符号化装置がブロックの画素の信号値を符号化する動作を示すフローチャート。
【符号の説明】
１０  入力フレーム
１０ａ  対象マクロブロック
１０ｂ  対象ブロック
１１  参照フレーム記憶部
１２  動き検出部
１９  制御部
２０  出力符号
４１  参照フレーム
４１ｂ  予測マクロブロック
４１ｃ  マクロブロックの動きベクトル
４２ｂ  予測ブロック
４２ｃ  ブロックの動きベクトル
【図１】
2004201150.tif 000003
【図２】
2004201150.tif 000004
【図３】
2004201150.tif 000005
【図４】
2004201150.tif 000006
【図５】
2004201150.tif 000007
【図６】
2004201150.tif 000008
【図７】
2004201150.tif 000009