(57)【要約】【課題】動きベクトルを参照されるブロックがＢピクチャに属するブロックである場合でも、直接モードにおける精度の良い時間方向および空間方向の動きベクトル予測方法を提供する。【解決手段】直接モードにおいて動きベクトルを参照されるブロックＭＢ２２が複数の動きベクトルを有していた場合に、前記複数の動きベクトルの平均もしくはどちらか一方をとることによって得られる値に対してスケーリングを施すことにより、符号化対象のピクチャＰ２３のピクチャ間予測に用いる２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を決定する。【選択図】    図４
2004208258.tif 000002
【特許請求の範囲】
【請求項１】
複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、
表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照することができる参照ステップと、
ピクチャ間予測を行うブロックが属するピクチャとは別のピクチャの前記ブロックと同じ位置にあるブロックの動きベクトルを参照して、前記ピクチャ間予測を行うブロックの動き補償を行う場合に、前記動きベクトルを参照されるブロックに対してすでに求められている動きベクトルのうち、所定の条件を満足する少なくとも１つの動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する動き補償ステップとを含む
ことを特徴とする動きベクトル計算方法。
【請求項２】
前記参照ステップでは、表示時間順で前方にあるピクチャを優先して識別番号を昇順で付与された第１のピクチャの並びと、表示時間順で後方にあるピクチャを優先して識別番号を昇順で付与された第２のピクチャの並びとから、それぞれ１つのピクチャを参照することができ、
前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて前記第１の並びにあるピクチャを参照する動きベクトルを用いる
ことを特徴とする請求項１記載の動きベクトル計算方法。
【請求項３】
前記動き補償ステップでは、前記第２の並びにあるピクチャのうち最小の識別番号を有するピクチャを前記別のピクチャとし、前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項２記載の動きベクトル計算方法。
【請求項４】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、長時間メモリに保存されるピクチャを参照する動きベクトルを複数有する時、ピクチャ間予測を行うブロックの動きベクトルとして、前記長時間メモリに保存されるピクチャを参照する動きベクトルのうち、前記第１の並びにあるピクチャを参照する動きベクトルを用いる
ことを特徴とする請求項２記載の動きベクトル計算方法。
【請求項５】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて表示時間順で前方にあるピクチャを参照する動きベクトルのうち、少なくとも１つを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項１記載の動きベクトル計算方法。
【請求項６】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックが１または複数の動きベクトルを有する時、先に符号化または復号化された動きベクトル、または先に符号列に記述された動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項１記載の動きベクトル計算方法。
【請求項７】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、表示時間順で前方または後方にあるピクチャを参照する複数の動きベクトルを有する時、前記複数の動きベクトルのうちの少なくとも１つを用いて前記ピクチャ間予測を行うブロックの１つの動きベクトルを計算する
ことを特徴とする請求項１記載の動きベクトル計算方法。
【請求項８】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックが表示時間順で前方または後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルのうちピクチャ間予測を行うピクチャに表示時間順で近いピクチャを参照する１つの動きベクトルまたは表示時間順で遠いピクチャを参照する１つの動きベクトルを用いて、動き補償を行うための動きベクトルを計算する
ことを特徴とする請求項１記載の動きベクトル計算方法。
【請求項９】
前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、長時間メモリに保存されているピクチャを参照する動きベクトルを１つ有する時、前記ピクチャ間予測を行うブロックの動きベクトルとして、前記長時間メモリに保存されているピクチャを参照する動きベクトルを割り当てる
ことを特徴とする請求項１〜８のいずれか１項に記載の動きベクトル計算方法。
【請求項１０】
前記動き補償ステップでは、
前記動きベクトルを参照されるブロックが、長時間メモリに保存されているピクチャを参照する動きベクトルを少なくとも１つ有する時、前記長時間メモリに保存されているピクチャを参照する動きベクトルが、前記動きベクトルを参照されるブロックのピクチャより表示時間順で前方にあるピクチャを参照する動きベクトルである場合、その動きベクトルを前記ピクチャ間予測を行うブロックの動きベクトルとする
ことを特徴とする請求項１〜８のいずれか１項に記載の動きベクトル計算方法。
【請求項１１】
前記動き補償ステップでは、さらに、前記ピクチャ間予測を行うブロックの動きベクトルの計算を行う途中段階、または最終結果に対して、所定の動きベクトルの精度への丸め演算を行う
ことを特徴とする請求項１〜８のいずれか１項に記載の動きベクトル計算方法。
【請求項１２】
複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、
記憶部に格納されている複数の符号化済ピクチャから符号化対象ピクチャ上のブロックを動き補償により求めるときに参照する第１の参照ピクチャと第２の参照ピクチャのうち少なくとも一方の参照ピクチャを選択するときに用いる第１参照インデックスまたは第２参照インデックスを前記符号化済ピクチャに対して付与する付与ステップと、
前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第１参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第１選択ステップと、
前記第１選択ステップで選択された動きベクトルを用いて前記符号化対象ピクチャより表示時間順で、前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出する導出ステップと
を含むことを特徴とする動きベクトル計算方法。
【請求項１３】
前記第１選択ステップでは、第１参照インデックスを有する動きベクトルのうち、さらに、第１参照インデックスの値が最小のものの中央値を示す動きベクトルを選択する
ことを特徴とする請求項１２記載の動きベクトル計算方法。
【請求項１４】
前記第１選択ステップは、さらに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第２参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第２選択ステップを含む
ことを特徴とする請求項１３記載の動きベクトル計算方法。
【請求項１５】
前記第２選択ステップでは、第２参照インデックスを有する動きベクトルのうち、さらに、第２参照インデックスの値が最小のものの中央値を示す動きベクトルを選択する
ことを特徴とする請求項１４記載の動きベクトル計算方法。
【請求項１６】
前記導出ステップでは、前記第１選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記符号化対象ピクチャより表示時間順で前方にあるピクチャを参照する際の動きベクトルとし、前記第２選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記符号化対象ピクチャより表示時間順で後方にあるピクチャを参照する際の動きベクトルとする
ことを特徴とする請求項１５記載の動きベクトル計算方法。
【請求項１７】
前記導出ステップでは、前記第１選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記第１の参照ピクチャを参照する際の動きベクトルとし、前記第２選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記第２の参照ピクチャを参照する際の動きベクトルとする
ことを特徴とする請求項１５記載の動きベクトル計算方法。
【請求項１８】
前記周辺ブロックが他のブロックが有する動きベクトルを用いて符号化する直接モードのブロックであるとき、前記他のブロックを符号化または復号化するときに実質的に用いた動きベクトルを前記直接モードのブロックの動きベクトルとする
ことを特徴とする請求項１２記載の動きベクトル計算方法。
【請求項１９】
前記動きベクトル計算方法では、前記第１選択ステップに代えて、
前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち最小の第１参照インデックスを有する動きベクトルの数に応じて動きベクトルの導出方法を決定する判断ステップを含み、
前記導出ステップでは、前記選択された動きベクトルの代わりに、決定された動きベクトル導出方法を用いて前記符号化対象ピクチャより表示時間順で前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出すると
を含むことを特徴とする請求項１２記載の動きベクトル計算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動画像の符号化方法および復号化方法に関するものであり、特に既に符号化済みの表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照して予測符号化を行う方法に関するものである。
【０００２】
【従来の技術】
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで時間的な冗長性の削減を目的とするピクチャ間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および動き補償を行い、得られた予測画像と現在のピクチャとの差分値に対して符号化を行う。
【０００３】
現在標準化中の動画像符号化方法であるＨ．２６Ｌでは、ピクチャ内予測符号化をのみを行うピクチャ（Ｉピクチャ）、および１枚のピクチャを参照してピクチャ間予測符号化を行うピクチャ（以下、Ｐピクチャ）、さらに表示時間順で前方にある２枚のピクチャもしくは表示時間順で後方にある２枚のピクチャもしくは表示時間順で前方および後方にあるそれぞれ１枚ずつのピクチャを参照してピクチャ間予測符号化を行うピクチャ（以下、Ｂピクチャ）が提案されている。
【０００４】
図５４は上記の動画像符号化方法における各ピクチャと、それによって参照されるピクチャとの参照関係の例を示す図である。
【０００５】
ピクチャＩ１は参照ピクチャを持たずピクチャ内予測符号化を行い、ピクチャＰ１０は表示時間順で前方にあるＰ７を参照しピクチャ間予測符号化を行っている。また、ピクチャＢ６は表示時間順で前方にある２つのピクチャを参照し、ピクチャＢ１２は表示時間順で後方にある２つのピクチャを参照し、ピクチャＢ１８は表示時間順で前方および後方にあるそれぞれ１枚ずつのピクチャを参照しピクチャ間予測符号化を行っている。
【０００６】
表示時間順で前方および後方にあるそれぞれ１枚ずつのピクチャを参照しピクチャ間予測符号化を行う２方向予測の１つの予測モードとして直接モードがある。直接モードでは符号化対象のブロックに直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための２つの動きベクトルを算出し予測画像を作成する。
【０００７】
図５５は直接モードにおいて動きベクトルを決定するために参照した符号化済みのピクチャが、表示時間順で前方にある１枚のピクチャのみを参照する動きベクトルを持っていた場合の例を示したものである。同図において、垂直方向の線分で示す「Ｐ」はピクチャタイプとは関係なく、単なるピクチャを示している。同図では、例えば、ピクチャＰ８３が現在符号化の対象とされているピクチャでありピクチャＰ８２およびピクチャＰ８４を参照ピクチャとして２方向予測を行う。このピクチャＰ８３において符号化を行うブロックをブロックＭＢ８１とすると、ブロックＭＢ８１の動きベクトルは、符号化済みの後方参照ピクチャであるピクチャＰ８４の同じ位置にあるブロックＭＢ８２の持つ動きベクトルを用いて決定される。このブロックＭＢ８２は動きベクトルとして動きベクトルＭＶ８１の１つだけを有するため、求める２つの動きベクトルＭＶ８２および動きベクトルＭＶ８３は式１（ａ）および（ｂ）に基づいて直接、動きベクトルＭＶ８１および時間間隔ＴＲ８１に対してスケーリングを適用することによって算出される。
【０００８】
ＭＶ８２＝ＭＶ８１／ＴＲ８１×ＴＲ８２                ‥‥式１（ａ）
ＭＶ８３＝−ＭＶ８１／ＴＲ８１×ＴＲ８３              ‥‥式１（ｂ）
なお、このとき時間間隔ＴＲ８１はピクチャＰ８４からピクチャＰ８２まで、つまり、ピクチャＰ８４から、動きベクトルＭＶ８１が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔ＴＲ８２は、ピクチャＰ８３から、動きベクトルＭＶ８２が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔ＴＲ８３は、ピクチャＰ８３から、動きベクトルＭＶ８３が指し示す参照ピクチャまでの時間の間隔を示している。
【０００９】
また、直接モードには、すでに説明した時間的予測と、空間的予測との２つの方法があるが、以下では、空間的予測について説明する。直接モードの空間的予測では、例えば、１６画素×１６画素で構成されるマクロブロックを単位として符号化を行い、符号化対象マクロブロックの周辺３マクロブロックの動きベクトルのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照して求められた動きベクトルの１つを選択し、選択された動きベクトルを符号化対象マクロブロックの動きベクトルとする。３つの動きベクトルがすべて同じピクチャを参照している場合はそれらの中央値を選択する。３つのうち２つが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合には残りの１つを「０」ベクトルとみなして、それらの中央値を選択する。また、１つだけが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合にはその動きベクトルを選択する。このように直接モードでは、符号化対象のマクロブロックに対して動きベクトルを符号化せず、他のマクロブロックが有する動きベクトルを用いて動き予測を行う。
【００１０】
図５６（ａ）は、従来の直接モードの空間的予測方法を用い、Ｂピクチャにおいて表示時間順で前方のピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。同図において、ＰはＰピクチャ、ＢはＢピクチャを示し、右側４ピクチャのピクチャタイプに付されている数字は各ピクチャが符号化された順番を示している。ここでは、ピクチャＢ４において斜線を付したマクロブロックが符号化対象となっているものとする。符号化対象マクロブロックの動きベクトルを、直接モードの空間的予測方法を用いて計算する場合、まず、符号化対象マクロブロックの周辺から、３つの符号化済みのマクロブロック（破線部）を選択する。ここでは、周辺３マクロブロックの選択方法は説明を省略する。符号化済みの３マクロブロックの動きベクトルはすでに計算され保持されている。この動きベクトルは同一ピクチャ中のマクロブロックであっても、マクロブロックごとに異なるピクチャを参照して求められている場合がある。この周辺３マクロブロックが、それぞれどのピクチャを参照したかは、各マクロブロックを符号化する際に用いた参照ピクチャの参照インデックスによって知ることができる。参照インデックスについての詳細は後述する。
【００１１】
さて、例えば、図５６（ａ）に示した符号化対象マクロブロックに対して、周辺３マクロブロックが選択され、各符号化済みマクロブロックの動きベクトルがそれぞれ動きベクトルａ、動きベクトルｂおよび動きベクトルｃであったとする。これにおいて、動きベクトルａと動きベクトルｂとはピクチャ番号１１が「１１」のＰピクチャを参照して求められ、動きベクトルｃはピクチャ番号１１が「８」のＰピクチャを参照して求められていたとする。この場合、これらの動きベクトルａ、ｂおよびｃのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照した動きベクトルである動きベクトルａ、ｂの２つが符号化対象マクロブロックの動きベクトルの候補となる。この場合、動きベクトルｃを「０」とみなし、動きベクトルａ、動きベクトルｂおよび動きベクトルｃの３つのうちの中央値を選択し、符号化対象マクロブロックの動きベクトルとする。
【００１２】
ただし、ＭＰＥＧ‐４などの符号化方式では、ピクチャ内の各マクロブロックを、インタレースを行うフィールド構造で符号化してもよいし、インタレースを行わないフレーム構造で符号化を行ってもよい。従って、ＭＰＥＧ‐４などでは、参照フレーム１フレーム中には、フィールド構造で符号化されたマクロブロックと、フレーム構造で符号化されたマクロブロックとが混在する場合が生じる。このような場合でも、符号化対象マクロブロックの周辺３マクロブロックがいずれも符号化対象マクロブロックと同じ構造で符号化されていれば、前述の直接モードの空間的予測方法を用いて問題なく符号化対象マクロブロックの動きベクトルを１つ導出することができる。すなわち、フレーム構造で符号化される符号化対象マクロブロックに対して、周辺３マクロブロックもまたフレーム構造で符号化されている場合、または、フィールド構造で符号化される符号化対象マクロブロックに対して、周辺３マクロブロックもまたフィールド構造で符号化されている場合である。前者の場合は、すでに説明した通りである。また、後者の場合は、符号化対象マクロブロックのトップフィールドに対応しては、周辺３マクロブロックのトップフィールドに対応した３つの動きベクトルを用いることにより、また、符号化対象マクロブロックのボトムフィールドに対応しては、周辺３マクロブロックのボトムフィールドに対応した３つの動きベクトルを用いることにより、トップフィールドとボトムフィールドとのそれぞれについて、前述の方法で、符号化対象マクロブロックの動きベクトルを導出することができる。
【００１３】
【非特許文献１】
ＭＰＥＧ−４ビジュアル規格書（１９９９年、ＩＳＯ／ＩＥＣ  １４４９６−２：１９９９  Ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ  −−  Ｃｏｄｉｎｇ  ｏｆ  ａｕｄｉｏ−ｖｉｓｕａｌ  ｏｂｊｅｃｔｓ  −−  Ｐａｒｔ２：  Ｖｉｓｕａｌ
【００１４】
【発明が解決しようとする課題】
しかしながら、直接モードの時間的予測の場合、ピクチャ間予測符号化を行うブロックが直接モードによって動き補償を行う際に、動きベクトルを参照されるブロックが図５４のＢ６のようなＢピクチャに属していたとき、前記ブロックは複数の動きベクトルを有するため式１に基づいたスケーリングによる動きベクトルの算出を直接適用することができないという問題が発生する。また、動きベクトルの算出後に除算演算を行うことから、動きベクトル値の精度（例えば１／２画素や１／４画素精度）が、予め定められた精度に一致しない場合が生じる。
【００１５】
また、空間的予測の場合、符号化対象マクロブロックと周辺マクロブロックのいずれかが異なる構造で符号化されている場合、符号化対象マクロブロックをフィールド構造およびフレーム構造のいずれの構造で符号化するかは規定されておらず、また、フィールド構造で符号化されたものとフレーム構造で符号化されたものとが混在するような周辺マクロブロックの動きベクトルのうちから、符号化対象マクロブロックの動きベクトルを選択する方法も規定されていない。
【００１６】
本発明の第１の目的は、動きベクトルを参照されるブロックがＢピクチャに属するブロックである場合でも、直接モードにおける精度の良い時間方向の動きベクトル予測方法を提供することである。
【００１７】
また、本発明の第２の目的は、動きベクトルを参照されるブロックがＢピクチャに属するブロックである場合でも、直接モードにおける精度の良い空間方向の動きベクトル予測方法を提供することである。
【００１８】
【課題を解決するための手段】
上記目的を達成するために本発明の動きベクトル計算方法は、複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照することができる参照ステップと、ピクチャ間予測を行うブロックが属するピクチャとは別のピクチャの前記ブロックと同じ位置にあるブロックの動きベクトルを参照して、前記ピクチャ間予測を行うブロックの動き補償を行う場合に、前記動きベクトルを参照されるブロックに対してすでに求められている動きベクトルのうち、所定の条件を満足する少なくとも１つの動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する動き補償ステップとを含む。従って、動きベクトルを参照されるブロックが、複数のピクチャを参照してピクチャ間予測を行うＢピクチャに属するブロックである場合であっても、前記所定の条件に従って、動きベクトルを参照されるブロックが有する複数の動きベクトルのうちから、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき１つを決定し、スケーリングによる動きベクトルの算出を適用することができる。これにより、本発明の第１の目的を達成することができる。
【００１９】
また、本発明の前記動きベクトル計算方法において、前記参照ステップでは、表示時間順で前方にあるピクチャを優先して識別番号を昇順で付与された第１のピクチャの並びと、表示時間順で後方にあるピクチャを優先して識別番号を昇順で付与された第２のピクチャの並びとから、それぞれ１つのピクチャを参照することができ、前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて前記第１の並びにあるピクチャを参照する動きベクトルを用いるとしてもよい。これにおいて、動きベクトルを参照されるブロックが前記Ｂピクチャに属するブロックである場合でも、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき１つを、前記第１の並びにあるピクチャを参照する動きベクトルに決定し、スケーリングによる動きベクトルの算出を適用することができる。従って、動きベクトルを参照されるブロックがＢピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い時間方向の動きベクトル予測方法を提供することができる。
【００２０】
さらに、本発明の他の動きベクトル計算方法は、記憶部に格納されている複数の符号化済ピクチャから符号化対象ピクチャ上のブロックを動き補償により求めるときに参照する第１の参照ピクチャと第２の参照ピクチャのうち少なくとも一方の参照ピクチャを選択するときに用いる第１参照インデックスまたは第２参照インデックスを前記符号化済ピクチャに対して付与する付与ステップと、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第１参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第１選択ステップと、前記第１選択ステップで選択された動きベクトルを用いて前記符号化対象ピクチャより表示時間順で、前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出する導出ステップとを含む。従って、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第１参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを用いて、前記符号化対象ピクチャ上のブロックの動きベクトルを導出することができる。これにより、本発明の第２の目的を達成することができる。
【００２１】
また、本発明の前記動きベクトル計算方法において、前記第１選択ステップでは、第１参照インデックスを有する動きベクトルのうち、さらに、第１参照インデックスの値が最小のものの中央値を示す動きベクトルを選択するとしてもよい。これにより、動きベクトルを参照されるブロックがＢピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い空間方向の動きベクトル予測方法を提供することができる。
【００２２】
【発明の実施の形態】
本発明は従来の技術の問題点を解決するものであり、直接モードにおいて、動きベクトルを参照するブロックがＢピクチャに属する場合でも矛盾無く動き補償に用いる動きベクトルを決定することを可能とする動画像の符号化方法および復号化方法を提案することを目的とする。ここで、まず参照インデックスについて説明する。
【００２３】
図５６（ｂ）は、各符号化対象ピクチャに作成される参照ピクチャリスト１０の一例を示す図である。図５６（ｂ）に示す参照ピクチャリスト１０には、１つのＢピクチャを中心として、時間的にその前後に表示され、そのＢピクチャが参照可能な周辺ピクチャと、それらのピクチャタイプ、ピクチャ番号１１、第１参照インデックス１２および第２参照インデックス１３が示されている。ピクチャ番号１１は、例えば、各ピクチャが符号化された順序を示す番号である。第１参照インデックス１２は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第１のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で前方のピクチャを参照する場合のインデックスとして用いられる。この第１参照インデックス１２のリストは、「参照インデックスリスト０（ｌｉｓｔ０）」または「第１参照インデックスリスト」と呼ばれる。また、参照インデックスは相対インデックスとも呼ばれる。図５６（ｂ）の参照ピクチャリスト１０では、第１参照インデックス１２の値には、まず、符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より「０」から「１」ずつ繰り上がる整数値が割り当てられる。符号化対象ピクチャより前の表示時刻を持つ参照ピクチャすべてに対して「０」から「１」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。
【００２４】
第２参照インデックス１３は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第２のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で後方のピクチャを参照する場合のインデックスとして用いられる。この第２参照インデックス１３のリストは、「参照インデックスリスト１（ｌｉｓｔ１）」または「第２参照インデックスリスト」と呼ばれる。第２参照インデックス１３の値には、まず、符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より、「０」から「１」ずつ繰り上がる整数値が割り当てられる。符号化対象より後の表示時刻を持つ参照ピクチャすべてに対し「０」から「１」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。従って、この参照ピクチャリスト１０をみれば、第１参照インデックス１２、第２参照インデックス１３は、参照インデックスの値が小さい参照ピクチャほど符号化対象ピクチャに表示時間順で近接していることがわかる。以上では、参照インデックスの初期状態での番号の割り当て方について説明したが、参照インデックスの番号の割り当て方はピクチャ単位やスライス単位で変更することが可能である。参照インデックスの番号の割り当て方は、例えば、表示時間順で離れたピクチャに対して小さい番号を割り当てることもできるが、そのような参照インデックスは、例えば、表示時間順で離れたピクチャを参照する方が、符号化効率が向上するような場合に用いられる。すなわち、ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられているので、参照することにより符号化効率が向上するピクチャに対して、より小さな参照インデックスを割り当てることにより、参照インデックスの符号量を減らし、さらに符号化効率の向上を行うものである。
【００２５】
図１はピクチャ番号と参照インデックスの説明図である。図１は参照ピクチャリストの例を示しており、中央のＢピクチャ（破線のもの）を符号化する際に用いる参照ピクチャおよびそのピクチャ番号と参照インデックスを示したものである。図１（Ａ）は、図５６を用いて説明した、初期状態での参照インデックスの割り当て方により、参照インデックスを割り当てた場合を示している。
【００２６】
図２は従来の画像符号化装置による画像符号化信号フォーマットの概念図である。Ｐｉｃｔｕｒｅは１ピクチャ分の符号化信号、Ｈｅａｄｅｒはピクチャ先頭に含まれるヘッダ符号化信号、Ｂｌｏｃｋ１は直接モードによるブロックの符号化信号、Ｂｌｏｃｋ２は直接モード以外の補間予測によるブロックの符号化信号、Ｒｉｄｘ０，Ｒｉｄｘ１はそれぞれ第１参照インデックスと第２参照インデックス、ＭＶ０，ＭＶ１はそれぞれ第１動きベクトルと第２動きベクトルを示す。符号化ブロックＢｌｏｃｋ２では、補間に使用する２つの参照ピクチャを示すため２つの参照インデックスＲｉｄｘ０，Ｒｉｄｘ１を符号化信号中にこの順で有する。また、符号化ブロックＢｌｏｃｋ２の第１動きベクトルＭＶ０と、第２動きベクトルＭＶ１とは符号化ブロックＢｌｏｃｋ２の符号化信号内にこの順で符号化される。参照インデックスＲｉｄｘ０，Ｒｉｄｘ１のいずれを使用するかはＰｒｅｄＴｙｐｅにより判断することができる。また、第１動きベクトルＭＶ０が参照するピクチャ（第１参照ピクチャ）を第１参照インデックスＲｉｄｘ０で示し、第２動きベクトルＭＶ１が参照するピクチャ（第２参照ピクチャ）を第２参照インデックスＲｉｄｘ１で示す。例えば、動きベクトルＭＶ０とＭＶ１の２方向でピクチャを参照することが示される場合はＲｉｄｘ０とＲｉｄｘ１が用いられ、動きベクトルＭＶ０またはＭＶ１のいずれか１方向でピクチャを参照することが示される場合は、その動きベクトルに応じた参照インデックスであるＲｉｄｘ０またはＲｉｄｘ１が用いられ、直接モードが示されている場合はＲｉｄｘ０、Ｒｉｄｘ１ともに用いられない。第１参照ピクチャは、第１参照インデックスにより指定され、一般的には符号化対象ピクチャより前の表示時刻を持つピクチャであり、第２参照ピクチャは、第２参照インデックスにより指定され、一般的には符号化対象ピクチャより後の表示時刻を持つピクチャである。ただし、図１の参照インデックスの付与方法例からわかるように、第１参照ピクチャが符号化対象ピクチャより後の表示時刻を持つピクチャであり、第２参照ピクチャが符号化対象ピクチャより前の表示時刻を持つピクチャである場合もある。第１参照インデックスＲｉｄｘ０は、ブロックＢｌｏｃｋ２の第１動きベクトルＭＶ０が参照した第１参照ピクチャを示す参照インデックスであり、第２参照インデックスＲｉｄｘ１は、ブロックＢｌｏｃｋ２の第２動きベクトルＭＶ１が参照した第２参照ピクチャを示す参照インデックスである。
【００２７】
一方、符号化信号中のバッファ制御信号（図２  Ｈｅａｄｅｒ内のＲＰＳＬ）を用いて明示的に指示することにより、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができる。この割り当ての変更により、第２参照インデックスが「０」の参照ピクチャを任意の参照ピクチャにすることも可能で、例えば、図１（Ｂ）に示すようにピクチャ番号に対する参照インデックスの割り当てを変更することができる。
【００２８】
このように、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができるため、また、この参照インデックスに対する参照ピクチャの割り当ての変更は、通常、参照ピクチャとして選択することにより符号化効率が高くなるピクチャに対してより小さい参照インデックスを割り当てるため、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとすると符号化効率を高めることができる。
【００２９】
（実施の形態１）
本発明の実施の形態１の動画像符号化方法を図３に示したブロック図を用いて説明する。
【００３０】
符号化対象となる動画像は時間順にピクチャ単位でフレームメモリ１０１に入力され、さらに符号化が行われる順に並び替えられる。各々のピクチャはブロックと呼ばれる、例えば水平１６×垂直１６画素のグループに分割され、ブロック単位で以降の処理が行われる。
【００３１】
フレームメモリ１０１から読み出されたブロックは動きベクトル検出部１０６に入力される。ここではフレームメモリ１０５に蓄積されている符号化済みのピクチャを復号化した画像を参照ピクチャとして用いて、符号化対象としているブロックの動きベクトル検出を行う。このときモード選択部１０７では、動きベクトル検出部１０６で得られた動きベクトルや、動きベクトル記憶部１０８に記憶されている符号化済みのピクチャで用いた動きベクトルを参照しつつ、最適な予測モードを決定する。モード選択部１０７で得られた予測モードとその予測モードで用いる動きベクトルによって決定された予測画像が差分演算部１０９に入力され、符号化対象のブロックとの差分をとることにより予測残差画像が生成され、予測残差符号化部１０２において符号化が行われる。また、モード選択部１０７で得られた予測モードで用いる動きベクトルは、後のブロックやピクチャの符号化で利用するために、動きベクトル記憶部１０８に記憶される。以上の処理の流れは、ピクチャ間予測符号化が選択された場合の動作であったが、スイッチ１１１によってピクチャ内予測符号化との切り替えがなされる。最後に、符号列生成部１０３によって、動きベクトル等の制御情報および予測残差符号化部１０２から出力される画像情報等に対し、可変長符号化を施し最終的に出力される符号列が生成される。
【００３２】
以上符号化の流れの概要を示したが、動きベクトル検出部１０６およびモード選択部１０７における処理の詳細について以下で説明する。
【００３３】
動きベクトルの検出は、ブロックごともしくはブロックを分割した領域ごとに行われる。符号化の対象としている画像に対して表示時間順で前方および後方に位置する符号化済みのピクチャを参照ピクチャとし、そのピクチャ内の探索領域において最適と予測される位置を示す動きベクトルおよび予測モードを決定することにより予測画像を作成する。
【００３４】
表示時間順で前方および後方にある２枚のピクチャを参照し、ピクチャ間予測符号化を行う２方向予測の１つとして、直接モードがある。直接モードでは符号化対象のブロックに、直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための２つの動きベクトルを算出し、予測画像を作成する。
【００３５】
図４は、直接モードにおいて動きベクトルを決定するために参照した符号化済みのブロックが、表示時間順で前方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ２３が現在符号化の対象としているピクチャであり、ピクチャＰ２２およびピクチャＰ２４を参照ピクチャとして２方向予測を行うものである。符号化を行うブロックをブロックＭＢ２１とすると、このとき必要とされる２つの動きベクトルは符号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）であるピクチャＰ２４の同じ位置にあるブロックＭＢ２２の持つ動きベクトルを用いて決定される。このブロックＭＢ２２は動きベクトルとして動きベクトルＭＶ２１および動きベクトルＭＶ２２の２つを有するため、求める２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を式１と同様に直接スケーリングを適用することによって算出することはできない。そこで式２のように、スケーリングを適用する動きベクトルとして動きベクトルＭＶ＿ＲＥＦをブロックＭＢ２２の持つ２つの動きベクトルの平均値から算出し、その時の時間間隔ＴＲ＿ＲＥＦを同様に平均値から算出する。そして、式３に基づいて動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦに対してスケーリングを適用することによって動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する。このとき時間間隔ＴＲ２１はピクチャＰ２４からピクチャＰ２１まで、つまり動きベクトルＭＶ２１が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ２２は動きベクトルＭＶ２２が参照するピクチャまでの時間の間隔を示している。また、時間間隔ＴＲ２３は動きベクトルＭＶ２３が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ２４は動きベクトルＭＶ２４が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図４の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【００３６】
ＭＶ＿ＲＥＦ＝（ＭＶ２１＋ＭＶ２２）／２              ‥‥式２（ａ）
ＴＲ＿ＲＥＦ＝（ＴＲ２１＋ＴＲ２２）／２              ‥‥式２（ｂ）
ＭＶ２３＝ＭＶ＿ＲＥＦ／ＴＲ＿ＲＥＦ×ＴＲ２３        ‥‥式３（ａ）
ＭＶ２４＝−ＭＶ＿ＲＥＦ／ＴＲ＿ＲＥＦ×ＴＲ２４      ‥‥式３（ｂ）
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて１つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための２つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがＢピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を求める際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦを算出するために、動きベクトルＭＶ２１と動きベクトルＭＶ２２との平均値および時間間隔ＴＲ２１と時間間隔ＴＲ２２との平均値をとる方法として、式２の替わりに式４を用いることも可能である。まず、式４（ａ）のように動きベクトルＭＶ２１に対して時間間隔が動きベクトルＭＶ２２と同じになるようにスケーリングを施し動きベクトルＭＶ２１’を算出する。そして動きベクトルＭＶ２１’と動きベクトルＭＶ２２との平均をとることにより動きベクトルＭＶ＿ＲＥＦが決定される。このとき時間間隔ＴＲ＿ＲＥＦは時間間隔ＴＲ２２をそのまま用いることになる。なお、動きベクトルＭＶ２１に対してスケーリングを施して動きベクトルＭＶ２１’とする替わりに動きベクトルＭＶ２２に対してスケーリングを施して動きベクトルＭＶ２２’とする場合も同様に扱うことが可能である。
【００３７】
ＭＶ２１’＝ＭＶ２１／ＴＲ２１×ＴＲ２２              ‥‥式４（ａ）
ＭＶ＿ＲＥＦ＝（ＭＶ２１’＋ＭＶ２２）／２            ‥‥式４（ｂ）
ＴＲ＿ＲＥＦ＝ＴＲ２２                                ‥‥式４（ｃ）
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式２のように２つの動きベクトルの平均値を用いる替わりに、式５のように動きベクトルを参照するピクチャＰ２４に対する時間間隔の短い方のピクチャＰ２２を参照する動きベクトルＭＶ２２および時間間隔ＴＲ２２を直接用いることも可能である。同様に、式６のように時間間隔の長い方のピクチャＰ２１を参照する動きベクトルＭＶ２１および時間間隔ＴＲ２１を動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャＰ２４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００３８】
ＭＶ＿ＲＥＦ＝ＭＶ２２                                ‥‥式５（ａ）
ＴＲ＿ＲＥＦ＝ＴＲ２２                                ‥‥式５（ｂ）
ＭＶ＿ＲＥＦ＝ＭＶ２１                                ‥‥式６（ａ）
ＴＲ＿ＲＥＦ＝ＴＲ２１                                ‥‥式６（ｂ）
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式２のように２つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図５（ａ）は図４と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図５（ｂ）では図３のフレームメモリ１０１において符号化される順番に並び替えられた一例を示している。なお、ピクチャＰ２３が直接モードによって符号化を行うピクチャ、ピクチャＰ２４がそのときに動きベクトルを参照されるピクチャを示している。図５（ｂ）のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式５のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ２２および時間間隔ＴＲ２２が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式６のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ２１および時間間隔ＴＲ２１が直接適用される。この方法により、動きベクトルを参照されるピクチャＰ２４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【００３９】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００４０】
なお、式２（ａ）または式４（ｂ）において、動きベクトルＭＶ＿ＲＥＦを計算する際には、式２（ａ）または式４（ｂ）の右辺を計算した後、所定の動きベクトルの精度（例えば、１／２画素精度の動きベクトルであれば、０．５画素単位の値）に丸めても良い。動きベクトルの精度としては、１／２画素精度に限るものではない。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式３（ａ）、式３（ｂ）、式４（ａ）において、動きベクトルＭＶ２３、動きベクトルＭＶ２４、動きベクトルＭＶ２１’を計算する際には、式３（ａ）、式３（ｂ）、式４（ａ）の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【００４１】
（実施の形態２）
図３に基づいた符号化処理の概要は実施の形態１と全く同等である。ここでは直接モードにおける２方向予測の動作について図６を用いてその詳細を説明する。
【００４２】
図６は直接モードにおいて動きベクトルを決定するために参照したブロックが、表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ４３が現在符号化の対象としているピクチャでありピクチャＰ４２およびピクチャＰ４４を参照ピクチャとして２方向予測を行うものである。符号化を行うブロックをブロックＭＢ４１とすると、このとき必要とされる２つの動きベクトルは符号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）であるピクチャＰ４４の同じ位置にあるブロックＭＢ４２の持つ動きベクトルを用いて決定される。このブロックＭＢ４２は動きベクトルとして動きベクトルＭＶ４５および動きベクトルＭＶ４６の２つを有するため、求める２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を式１と同様に直接スケーリングを適用することによって算出することはできない。そこで式７のように、スケーリングを適用する動きベクトルとして動きベクトルＭＶ＿ＲＥＦをブロックＭＢ４２の持つ２つの動きベクトルの平均値から決定し、その時の時間間隔ＴＲ＿ＲＥＦを同様に平均値から決定する。そして、式８に基づいて動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦに対してスケーリングを適用することによって動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する。このとき時間間隔ＴＲ４５はピクチャＰ４４からピクチャＰ４５まで、つまり動きベクトルＭＶ４５が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ４６は動きベクトルＭＶ４６が参照するピクチャまでの時間の間隔を示している。また、時間間隔ＴＲ４３は動きベクトルＭＶ４３が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ４４は時間間隔ＭＶ４４が参照するピクチャまでの時間の間隔を示すものである。これらのピクチャ間の時間間隔は、実施の形態１で説明したのと同様に、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図６の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【００４３】
ＭＶ＿ＲＥＦ＝（ＭＶ４５＋ＭＶ４６）／２              ‥‥式７（ａ）
ＴＲ＿ＲＥＦ＝（ＴＲ４５＋ＴＲ４６）／２              ‥‥式７（ｂ）
ＭＶ４３＝−ＭＶ＿ＲＥＦ／ＴＲ＿ＲＥＦ×ＴＲ４３      ‥‥式８（ａ）
ＭＶ４４＝ＭＶ＿ＲＥＦ／ＴＲ＿ＲＥＦ×ＴＲ４４        ‥‥式８（ｂ）
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて１つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための２つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがＢピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
【００４４】
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を求める際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦを算出するために、動きベクトルＭＶ４５と動きベクトルＭＶ４６との平均値および時間間隔ＴＲ４５と時間間隔ＴＲ４６との平均値をとる方法として、式７の替わりに式９を用いることも可能である。まず、式９（ａ）のように動きベクトルＭＶ４６に対して時間間隔が動きベクトルＭＶ４５と同じになるようにスケーリングを施し動きベクトルＭＶ４６’を算出する。そして動きベクトルＭＶ４６’と動きベクトルＭＶ４５との平均をとることにより動きベクトルＭＶ＿ＲＥＦが決定される。このとき時間間隔ＴＲ＿ＲＥＦは時間間隔ＴＲ４１をそのまま用いることになる。なお、動きベクトルＭＶ４６に対してスケーリングを施して動きベクトルＭＶ４６’とする替わりに動きベクトルＭＶ４５に対してスケーリングを施して動きベクトルＭＶ４５’とする場合も同様に扱うことが可能である。
【００４５】
ＭＶ４６’＝ＭＶ４６／ＴＲ４６×ＴＲ４５              ‥‥式９（ａ）
ＭＶ＿ＲＥＦ＝（ＭＶ４６’＋ＭＶ４５）／２            ‥‥式９（ｂ）
ＴＲ＿ＲＥＦ＝ＴＲ４５                                ‥‥式９（ｃ）
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式７のように２つの動きベクトルの平均値を用いる替わりに、式１０のように動きベクトルを参照するピクチャＰ４４に対して時間間隔の短い方のピクチャＰ４５を参照する動きベクトルＭＶ４５および時間間隔ＴＲ４５を直接用いることも可能である。同様に、式１１のように時間間隔の長い方のピクチャＰ４６を参照する動きベクトルＭＶ４６および時間間隔ＴＲ４６を動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【００４６】
ＭＶ＿ＲＥＦ＝ＭＶ４５                              ‥‥式１０（ａ）
ＴＲ＿ＲＥＦ＝ＴＲ４５                              ‥‥式１０（ｂ）
ＭＶ＿ＲＥＦ＝ＭＶ４６                              ‥‥式１１（ａ）
ＴＲ＿ＲＥＦ＝ＴＲ４６                              ‥‥式１１（ｂ）
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式７のように２つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図７（ａ）は図６と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図７（ｂ）では図３のフレームメモリ１０１において符号化される順番に並び替えられた一例を示している。なお、ピクチャＰ４３が直接モードによって符号化を行うピクチャ、ピクチャＰ４４がそのときに動きベクトルを参照されるピクチャを示している。図７（ｂ）のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式１１のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ４６および時間間隔ＴＲ４６が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式１０のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ４５および時間間隔ＴＲ４５が直接適用される。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【００４７】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合、求める２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を「０」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【００４８】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合、動きベクトルの参照を禁止し、直接モード以外の予測符号化のみを適用させることも可能である。図６のピクチャＰ４４のように表示時間順で後方にある２枚のピクチャを参照する場合は、表示時間順で前方にあるピクチャとの相関が低い可能性が考えられるため、直接モードを禁止し別の予測方法を選択することにより、より正確な予測画像を生成することが可能となる。
【００４９】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００５０】
なお、式７（ａ）、式９（ｂ）において、動きベクトルＭＶ＿ＲＥＦを計算する際には、式７（ａ）、式９（ｂ）の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、１／２画素、１／３画素、１／４画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式８（ａ）、式８（ｂ）、式９（ａ）において、動きベクトルＭＶ４３、動きベクトルＭＶ４４、動きベクトルＭＶ４６’を計算する際には、式８（ａ）、式８（ｂ）、式９（ａ）の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【００５１】
（実施の形態３）
本発明の実施の形態３の動画像復号化方法を図８に示したブロック図を用いて説明する。ただし、実施の形態１の動画像符号化方法で生成された符号列が入力されるものとする。
【００５２】
まず入力された符号列から符号列解析器６０１によって予測モード、動きベクトル情報および予測残差符号化データ等の各種の情報が抽出される。
【００５３】
予測モードや動きベクトル情報は予測モード／動きベクトル復号化部６０８に対して出力され、予測残差符号化データは予測残差復号化部６０２に出力される。予測モード／動きベクトル復号化部６０８では、予測モードの復号化と、その予測モードで用いる動きベクトルの復号化とを行う。動きベクトルの復号化の際には、動きベクトル記憶部６０５に記憶されている復号化済みの動きベクトルを利用する。復号化された予測モードおよび動きベクトルは、動き補償復号部６０４に対して出力される。また、復号化された動きベクトルは、後のブロックの動きベクトルの復号化で利用するために、動きベクトル記憶部６０５に記憶される。動き補償復号部６０４ではフレームメモリ６０３に蓄積されている復号化済みのピクチャの復号化画像を参照ピクチャとし、入力された予測モードや動きベクトル情報に基づいて予測画像を生成する。このようにして生成された予測画像は加算演算部６０６に入力され、予測残差復号化部６０２において生成された予測残差画像との加算を行うことにより復号化画像が生成される。以上の実施の形態はピクチャ間予測符号化がなされている符号列に対する動作であったが、スイッチ６０７によってピクチャ内予測符号化がなされている符号列に対する復号化処理との切り替えがなされる。
【００５４】
以上復号化の流れの概要を示したが、動き補償復号部６０４における処理の詳細について以下で説明する。
【００５５】
動きベクトル情報はブロックごともしくはブロックを分割した領域ごとに付加されている。復号化の対象としているピクチャに対して表示時間順で前方および後方に位置する復号化済みのピクチャを参照ピクチャとし、復号化された動きベクトルによってそのピクチャ内から動き補償を行うための予測画像を作成する。
【００５６】
表示時間順で前方および後方にあるそれぞれ１枚ずつのピクチャを参照しピクチャ間予測符号化を行う２方向予測の１つとして直接モードがある。直接モードでは復号化対象のブロックが動きベクトルを直接持たない符号列を入力とするため、表示時間順で近傍にある復号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための２つの動きベクトルを算出し予測画像を作成する。
【００５７】
図４は直接モードにおいて動きベクトルを決定するために参照した復号化済みのピクチャが、表示時間順で前方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ２３が現在復号化の対象としているピクチャであり、ピクチャＰ２２およびピクチャＰ２４を参照ピクチャとして２方向予測を行うものである。復号化を行うブロックをブロックＭＢ２１とすると、このとき必要とされる２つの動きベクトルは復号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）であるピクチャＰ２４の同じ位置にあるブロックＭＢ２２の持つ動きベクトルを用いて決定される。このブロックＭＢ２２は動きベクトルとして動きベクトルＭＶ２１および動きベクトルＭＶ２２の２つを有するため、求める２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を式１と同様に直接スケーリングを適用することによって算出することはできない。そこで式２のように、スケーリングを適用する動きベクトルとして動きベクトルＭＶ＿ＲＥＦをブロックＭＢ２２の持つ２つの動きベクトルの平均値から算出し、その時の時間間隔ＴＲ＿ＲＥＦを同様に平均値から算出する。そして、式３に基づいて動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦに対してスケーリングを適用することによって動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する。このとき時間間隔ＴＲ２１はピクチャＰ２４からピクチャＰ２１まで、つまり動きベクトルＭＶ２１が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ２２は動きベクトルＭＶ２２が参照するピクチャまでの時間の間隔を示している。また、時間間隔ＴＲ２３は動きベクトルＭＶ２３が参照するピクチャまでの時間の間隔を示し、時間間隔ＴＲ２４は動きベクトルＭＶ２４が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図４の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【００５８】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて１つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための２つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがＢピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【００５９】
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を求める際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦを算出するために、動きベクトルＭＶ２１と動きベクトルＭＶ２２との平均値および時間間隔ＴＲ２１と時間間隔ＴＲ２２との平均値をとる方法として、式２の替わりに式４を用いることも可能である。まず、式４（ａ）のように動きベクトルＭＶ２１に対して時間間隔が動きベクトルＭＶ２２と同じになるようにスケーリングを施し動きベクトルＭＶ２１’を算出する。そして動きベクトルＭＶ２１’と動きベクトルＭＶ２２との平均をとることにより動きベクトルＭＶ＿ＲＥＦが決定される。このとき時間間隔ＴＲ＿ＲＥＦは時間間隔ＴＲ２２をそのまま用いることになる。なお、動きベクトルＭＶ２１に対してスケーリングを施して動きベクトルＭＶ２１’とする替わりに動きベクトルＭＶ２２に対してスケーリングを施して動きベクトルＭＶ２２’とする場合も同様に扱うことが可能である。
【００６０】
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式２のように２つの動きベクトルの平均値を用いる替わりに、式５のように動きベクトルを参照するピクチャＰ２４に対して時間間隔の短い方のピクチャＰ２２を参照する動きベクトルＭＶ２２およびＴＲ２２を直接用いることも可能である。同様に、式６のように時間間隔の長い方のピクチャＰ２１を参照する動きベクトルＭＶ２１および時間間隔ＴＲ２１を動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャＰ２４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００６１】
なお、図４における２つの動きベクトルＭＶ２３および動きベクトルＭＶ２４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式２のように２つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図５（ａ）は図４と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図５（ｂ）では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャＰ２３が直接モードによって復号化を行うピクチャ、ピクチャＰ２４がそのときに動きベクトルを参照されるピクチャを示している。図５（ｂ）のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式５のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ２２および時間間隔ＴＲ２２が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式６のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ２１および時間間隔ＴＲ２１が直接適用される。この方法により、動きベクトルを参照されるピクチャＰ２４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００６２】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００６３】
（実施の形態４）
図８に基づいた復号化処理の概要は実施の形態３と全く同等である。ここでは直接モードにおける２方向予測の動作について図６を用いてその詳細を説明する。ただし、実施の形態２の動画像符号化方法で生成された符号列が入力されるものとする。
【００６４】
図６は直接モードにおいて動きベクトルを決定するために参照したピクチャが、表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ４３が現在復号化の対象としているピクチャであり、ピクチャＰ４２およびピクチャＰ４４を参照ピクチャとして２方向予測を行うものである。復号化を行うブロックをブロックＭＢ４１とすると、このとき必要とされる２つの動きベクトルは復号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）であるピクチャＰ４４の同じ位置にあるブロックＭＢ４２の持つ動きベクトルを用いて決定される。このブロックＭＢ４２は動きベクトルとして動きベクトルＭＶ４５および動きベクトルＭＶ４６の２つを有するため、求める２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を式１と同様に直接スケーリングを適用することによって算出することはできない。そこで式７のように、スケーリングを適用する動きベクトルとして動きベクトルＭＶ＿ＲＥＦを動きベクトルＭＢ４２の持つ２つの動きベクトルの平均値から決定し、その時の時間間隔ＴＲ＿ＲＥＦを同様に平均値から決定する。そして、式８に基づいて動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦに対してスケーリングを適用することによって動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する。このとき時間間隔ＴＲ４５はピクチャＰ４４からピクチャＰ４５まで、つまり動きベクトルＭＶ４５が参照するピクチャまでの時間の間隔を、時間間隔ＴＲ４６は動きベクトルＭＶ４６が参照するピクチャまでの時間の間隔を、時間間隔ＴＲ４３は動きベクトルＭＶ４３が参照するピクチャまでの時間の間隔を、時間間隔ＴＲ４４は動きベクトルＭＶ４４が参照するピクチャまでの時間の間隔を示すものである。なお、図６の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【００６５】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて１つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための２つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがＢピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【００６６】
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を求める際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦを算出するために、動きベクトルＭＶ４５と動きベクトルＭＶ４６との平均値および時間間隔ＴＲ４５と時間間隔ＴＲ４６との平均値をとる方法として、式７の替わりに式９を用いることも可能である。まず、式９（ａ）のように動きベクトルＭＶ４６に対して時間間隔が動きベクトルＭＶ４５と同じになるようにスケーリングを施し動きベクトルＭＶ４６’を算出する。そして動きベクトルＭＶ４６’と動きベクトルＭＶ４５との平均をとることにより動きベクトルＭＶ＿ＲＥＦが決定される。このとき時間間隔ＴＲ＿ＲＥＦは時間間隔ＴＲ４５をそのまま用いることになる。なお、動きベクトルＭＶ４６に対してスケーリングを施して動きベクトルＭＶ４６’とする替わりに動きベクトルＭＶ４５に対してスケーリングを施して動きベクトルＭＶ４５’とする場合も同様に扱うことが可能である。
【００６７】
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式７のように２つの動きベクトルの平均値を用いる替わりに、式１０のように動きベクトルを参照するピクチャＰ４４に対して時間間隔の短い方のピクチャＰ４５を参照する動きベクトルＭＶ４５および時間間隔ＴＲ４５を直接用いることも可能である。同様に、式１１のように時間間隔の長い方のピクチャＰ４６を参照する動きベクトルＭＶ４６および時間間隔ＴＲ４６を動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００６８】
なお、図６における２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を算出する際に、スケーリングを施す対象となる動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして、式７のように２つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図７（ａ）は図６と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図７（ｂ）では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャＰ４３が直接モードによって符号化を行うピクチャ、ピクチャＰ４４がそのときに動きベクトルを参照されるピクチャを示している。図７（ｂ）のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式１１のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ４６および時間間隔ＴＲ４６が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式１０のように動きベクトルＭＶ＿ＲＥＦおよび時間間隔ＴＲ＿ＲＥＦとして動きベクトルＭＶ４５および時間間隔ＴＲ４５が直接適用される。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００６９】
なお、直接モードにおいて動きベクトルを決定するために参照したブロックが表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合、求める２つの動きベクトルＭＶ４３および動きベクトルＭＶ４４を「０」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャＰ４４に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【００７０】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００７１】
（実施の形態５）
上記実施の形態１から実施の形態４までに示した符号化方法または復号化方法に限らず、以下に示す動きベクトル計算方法を用いて符号化方法または復号化方法を実現することができる。
【００７２】
図９は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ２３が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックＭＢ１とすると、このとき必要とされる２つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）Ｐ２４の同じ位置にあるブロックＭＢ２の持つ動きベクトルを用いて決定される。なお、図９において、ブロックＭＢ１が処理対象ブロックであり、ブロックＭＢ１とブロックＭＢ２とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルＭＶ２１と動きベクトルＭＶ２２とはブロックＭＢ２を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャＰ２１、ピクチャＰ２２を参照している。また、ピクチャＰ２１、ピクチャＰ２２、ピクチャＰ２４は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔ＴＲ２１はピクチャＰ２１とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２２はピクチャＰ２２とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２１’はピクチャＰ２１とピクチャＰ２３との間の時間間隔、時間間隔ＴＲ２４’はピクチャＰ２３とピクチャＰ２４との間の時間間隔を示す。
【００７３】
動きベクトル計算方法としては、図９に示すように参照ピクチャＰ２４におけるブロックＭＢ２の動きベクトルのうち先に符号化または復号化された前方向動きベクトル（第１動きベクトル）ＭＶ２１のみを用い、ブロックＭＢ１の動きベクトルＭＶ２１’、動きベクトルＭＶ２４’は以下の式により計算される。
【００７４】
ＭＶ２１’  ＝    ＭＶ２１  ×  ＴＲ２１’／ＴＲ２１
ＭＶ２４’  ＝  −ＭＶ２１  ×  ＴＲ２４’／ＴＲ２１
そして動きベクトルＭＶ２１’、動きベクトルＭＶ２４’を用いてピクチャＰ２１、ピクチャＰ２４から２方向予測を行う。なお、動きベクトルＭＶ２１のみを用いてブロックＭＢ１の動きベクトルＭＶ２１’と動きベクトルＭＶ２４’とを計算する代わりに、参照ピクチャＰ２４におけるブロックＭＢ２の動きベクトルのうち後に符号化または復号化された動きベクトル（第２動きベクトル）ＭＶ２２のみを用いてブロックＭＢ１の動きベクトルを計算してもよい。また、実施の形態１から実施の形態４で示したように、動きベクトルＭＶ２１と動きベクトルＭＶ２２との両者を用いて、ブロックＭＢ１の動きベクトルを決定しても良い。いずれも動きベクトルＭＶ２１と動きベクトルＭＶ２２とのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されたブロックの動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置でいずれを選択するかあらかじめ任意に設定しておいてもよい。また、ピクチャＰ２１が短時間メモリ（Ｓｈｏｒｔ  Ｔｅｒｍ  Ｂｕｆｆｅｒ）にあっても長時間メモリ（Ｌｏｎｇ  ＴｅｒｍＢｕｆｆｅｒ）にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【００７５】
図１０は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で後方にある２枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ２２が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックＭＢ１とすると、このとき必要とされる２つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ（第２参照ピクチャ）Ｐ２３の同じ位置にあるブロックＭＢ２の持つ動きベクトルを用いて決定される。なお、図１０において、ブロックＭＢ１が処理対象ブロックであり、ブロックＭＢ１とブロックＭＢ２とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルＭＶ２４と動きベクトルＭＶ２５はブロックＭＢ２を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャＰ２４、ピクチャＰ２５を参照している。また、ピクチャＰ２１、ピクチャＰ２３、ピクチャＰ２４、ピクチャＰ２５は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔ＴＲ２４はピクチャＰ２３とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２５はピクチャＰ２３とピクチャＰ２５との間の時間間隔、時間間隔ＴＲ２４’はピクチャＰ２２とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２１’はピクチャＰ２１とピクチャＰ２２との間の時間間隔を示す。
【００７６】
動きベクトル計算方法としては、図１０に示すように参照ピクチャＰ２３におけるブロックＭＢ２のピクチャＰ２４への動きベクトルＭＶ２４のみを用い、ブロックＭＢ１の動きベクトルＭＶ２１’、動きベクトルＭＶ２４’は以下の式により計算される。
【００７７】
ＭＶ２１’  ＝  −ＭＶ２４  ×  ＴＲ２１’／ＴＲ２４
ＭＶ２４’  ＝    ＭＶ２４  ×  ＴＲ２４’／ＴＲ２４
そして動きベクトルＭＶ２１’、動きベクトルＭＶ２４’を用いてピクチャＰ２１、ピクチャＰ２４から２方向予測を行う。
【００７８】
なお、図１１に示すように参照ピクチャＰ２３におけるブロックＭＢ２のピクチャＰ２５への動きベクトルＭＶ２５のみを用いた場合、ブロックＭＢ１の動きベクトルＭＶ２１’、動きベクトルＭＶ２５’は以下の式により計算される。なお、時間間隔ＴＲ２４はピクチャＰ２３とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２５はピクチャＰ２３とピクチャＰ２５との間の時間間隔、時間間隔ＴＲ２５’はピクチャＰ２２とピクチャＰ２５との間の時間間隔、時間間隔ＴＲ２１’はピクチャＰ２１とピクチャＰ２２との間の時間間隔を示す。
【００７９】
ＭＶ２１’  ＝  −ＭＶ２５  ×  ＴＲ２１’／ＴＲ２５
ＭＶ２５’  ＝    ＭＶ２５  ×  ＴＲ２５’／ＴＲ２５
そして動きベクトルＭＶ２１’、動きベクトルＭＶ２５’を用いてピクチャＰ２１、ピクチャＰ２４から２方向予測を行う。
【００８０】
図１２は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある１枚のピクチャを参照する２つの動きベクトルを持っていた場合の動作を示したものである。ピクチャＰ２３は、現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックＭＢ１とすると、このとき必要とされる２つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ（第２参照インデックスで指定される第２参照ピクチャ）Ｐ２４の同じ位置にあるブロックＭＢ２の持つ動きベクトルを用いて決定される。なお、図１２において、ブロックＭＢ１が処理対象ブロックであり、ブロックＭＢ１とブロックＭＢ２とはピクチャ上で互いに同位置にあるブロックである。動きベクトルＭＶ２１Ａと動きベクトルＭＶ２１ＢとはブロックＭＢ２を符号化または復号化するときに用いた前方向動きベクトルであり、共にピクチャＰ２１を参照している。また、ピクチャＰ２１、ピクチャＰ２２、ピクチャＰ２４は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔ＴＲ２１Ａ、時間間隔ＴＲ２１ＢはピクチャＰ２１とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２１’はピクチャＰ２１とピクチャＰ２３との間の時間間隔、時間間隔ＴＲ２４’はピクチャＰ２３とピクチャＰ２４との間の時間間隔を示す。
【００８１】
動きベクトル計算方法としては、図１２に示すように参照ピクチャＰ２４におけるブロックＭＢ２のピクチャＰ２１への前方向動きベクトルＭＶ２１Ａのみを用い、ブロックＭＢ１の動きベクトルＭＶ２１Ａ’、ＭＶ２４’は以下の式により計算される。
【００８２】
ＭＶ２１Ａ’  ＝    ＭＶ２１Ａ  ×  ＴＲ２１’／ＴＲ２１Ａ
ＭＶ２４’    ＝  −ＭＶ２１Ａ  ×  ＴＲ２４’／ＴＲ２１Ａ
そして動きベクトルＭＶ２１Ａ’、動きベクトルＭＶ２４’を用いてピクチャＰ２１、ピクチャＰ２４から２方向予測を行う。
【００８３】
なお、参照ピクチャＰ２４におけるブロックＭＢ２のピクチャＰ２１への前方向動きベクトルＭＶ２１Ｂのみを用い、ブロックＭＢ１の動きベクトルを計算してもよい。また、実施の形態１から実施の形態４で示したように、前方向動きベクトルＭＶ２１Ａと前方向動きベクトルＭＶ２１Ｂとの両者を用いて、ブロックＭＢ１に対する動きベクトルを決定しても良い。いずれも前方向動きベクトルＭＶ２１Ａと前方向動きベクトルＭＶ２１Ｂとのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されている（符号列中に先に記述されている）動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置で任意に設定してもよい。ここで、時間的に先に符号化または復号化されている動きベクトルとは、第１動きベクトルのことを意味する。また、ピクチャＰ２１が短時間メモリ（Ｓｈｏｒｔ  Ｔｅｒｍ  Ｂｕｆｆｅｒ）にあっても長時間メモリ（Ｌｏｎｇ  Ｔｅｒｍ  Ｂｕｆｆｅｒ）にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【００８４】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００８５】
なお、上記の動きベクトルＭＶ２１’、動きベクトルＭＶ２４’、動きベクトルＭＶ２５’および動きベクトルＭＶ２１Ａ’の計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、１／２画素、１／３画素、１／４画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【００８６】
（実施の形態６）
本実施の形態６においては、直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で前方にある２枚のピクチャを参照する２つの前方向動きベクトルを持っている場合に、２つの前方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる方法について図１３から図１５を用いて説明する。なお、ブロックＭＢ１が処理対象ブロックであり、ブロックＭＢ１とブロックＭＢ２とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルＭＶ２１と動きベクトルＭＶ２２とはブロックＭＢ２を符号化または復号化するときに用いた前方向動きベクトルであり、それぞれピクチャＰ２１、ピクチャＰ２２を参照している。また、ピクチャＰ２１、ピクチャＰ２２、ピクチャＰ２４は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔ＴＲ２１はピクチャＰ２１とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２２はピクチャＰ２２とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２１’はピクチャＰ２１とピクチャＰ２３との間の時間間隔、時間間隔ＴＲ２２’はピクチャＰ２２とピクチャＰ２３との間の時間間隔を示す。
【００８７】
第１の方法としては、図１３に示すように参照ピクチャＰ２４におけるブロックＭＢ２が、ピクチャＰ２１への前方向動きベクトルＭＶ２１と、ピクチャＰ２２への前方向動きベクトルＭＶ２２との２つの前方向動きベクトルを有するとき、対象ピクチャＰ２３に表示時間順で近いピクチャＰ２２への動きベクトルＭＶ２２のみを用い、ブロックＭＢ１の動きベクトルＭＶ２２’は以下の式により計算される。
【００８８】
ＭＶ２２’  ＝  ＭＶ２２  ×  ＴＲ２２’／ＴＲ２２
そして動きベクトルＭＶ２２’を用いてピクチャＰ２２から動き補償を行う。
【００８９】
第２の方法としては、図１４に示すように参照ピクチャＰ２４におけるブロックＭＢ２がピクチャＰ２１への前方向動きベクトルＭＶ２１とピクチャＰ２２への前方向動きベクトルＭＶ２２との２つの前方向動きベクトルを有するとき、対象ピクチャＰ２３に表示時間順で遠いピクチャＰ２１への動きベクトルＭＶ２１のみを用い、ブロックＭＢ１の動きベクトルＭＶ２１’は以下の式により計算される。
【００９０】
ＭＶ２１’  ＝  ＭＶ２１  ×  ＴＲ２１’／ＴＲ２１
そして動きベクトルＭＶ２１’を用いてピクチャＰ２１から動き補償を行う。
【００９１】
これら第１、第２の方法により、動きベクトルを参照される参照ピクチャＰ２４に属するブロックＭＢ２は、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【００９２】
なお、前方向動きベクトルＭＶ２１を用いながら、実施の形態１と同様に表示時間順で近傍のピクチャであるピクチャＰ２２から動き補償を行うこともできる。その時に用いる動きベクトルＭＶＮ（図示せず）は以下の式により計算される。
【００９３】
ＭＶＮ    ＝    ＭＶ２１×  ＴＲ２２’／ＴＲ２１
なお、第３の方法として、図１５に示すように上記で求めた動きベクトルＭＶ２１’と動きベクトルＭＶ２２’とを用いてそれぞれピクチャＰ２１とピクチャＰ２２とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【００９４】
この第３の方法により、計算量は増加するが、動き補償の精度は向上する。
【００９５】
さらに、上記動きベクトルＭＶＮと動きベクトルＭＶ２２’とを用いてピクチャＰ２２から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【００９６】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【００９７】
なお、上記の動きベクトルＭＶ２１’、動きベクトルＭＶ２２’、動きベクトルＭＶＮの計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、１／２画素、１／３画素、１／４画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【００９８】
（実施の形態７）
上記実施の形態６では直接モードにおいて符号化または復号化対象ブロックの動きベクトルを決定するために用いた参照ピクチャが、表示時間順で前方にある２枚のピクチャを参照する２つの前方向動きベクトルを持っている場合について述べたが、表示時間順で後方にある２枚のピクチャを参照する２つの後方向動きベクトル（第２参照インデックスで参照ピクチャが指定される第２動きベクトル）を持っている場合についても同様に、２つの後方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる。以下、図１６から図１９を用いて説明する。なお、ブロックＭＢ１が処理対象ブロックであり、ブロックＭＢ１とブロックＭＢ２とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルＭＶ２４と動きベクトルＭＶ２５とは、動きベクトルＭＢ２を符号化または復号化するときに用いた後方向動きベクトル（第２参照インデックスで参照ピクチャが指定される第２動きベクトル）である。また、ピクチャＰ２１、ピクチャＰ２３、ピクチャＰ２４およびピクチャＰ２５は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔ＴＲ２４はピクチャＰ２３とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２５はピクチャＰ２３とピクチャＰ２５との間の時間間隔、時間間隔ＴＲ２４’はピクチャＰ２２とピクチャＰ２４との間の時間間隔、時間間隔ＴＲ２５’はピクチャＰ２２とピクチャＰ２５との間の時間間隔を示す。
【００９９】
第１の方法としては、図１６に示すように参照ピクチャＰ２３におけるブロックＭＢ２がピクチャＰ２４への後方向動きベクトルＭＶ２４とピクチャＰ２５への後方向動きベクトルＭＶ２５との２つの後方向動きベクトルを有するとき、対象ピクチャＰ２２に表示時間順で近いピクチャＰ２４への後方向動きベクトルＭＶ２４のみを用い、ブロックＭＢ１の動きベクトルＭＶ２４’は以下の式により計算される。
【０１００】
ＭＶ２４’  ＝  ＭＶ２４  ×  ＴＲ２４’／ＴＲ２４
そして動きベクトルＭＶ２４’を用いてピクチャＰ２４から動き補償を行う。
【０１０１】
なお、後方向動きベクトルＭＶ２４を用いながら、実施の形態１と同様に表示時間順で近傍のピクチャであるピクチャＰ２３から動き補償を行うこともできる。その時に用いる動きベクトルＭＶＮ１（図示せず）は以下の式により計算される。
【０１０２】
ＭＶＮ１    ＝  ＭＶ２４×  ＴＲＮ１／ＴＲ２４
第２の方法としては、図１７に示すように参照ピクチャＰ２３におけるブロックＭＢ２がピクチャＰ２４への後方向動きベクトルＭＶ２４とピクチャＰ２５への後方向動きベクトルＭＶ２５との２つの後方向動きベクトルを有するとき、対象ピクチャＰ２３に表示時間順で遠いピクチャＰ２５への後方向動きベクトルＭＶ２５のみを用い、ブロックＭＢ１の動きベクトルＭＶ２５’は以下の式により計算される。
【０１０３】
ＭＶ２５’  ＝  ＭＶ２５  ×  ＴＲ２５’／ＴＲ２５
そして動きベクトルＭＶ２５’を用いてピクチャＰ２５から動き補償を行う。
【０１０４】
これら第１、第２の方法により、動きベクトルを参照される参照ピクチャＰ２３に属するブロックＭＢ２は、２つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【０１０５】
なお、後方向動きベクトルＭＶ２５を用いながら、実施の形態１と同様に表示時間順で近傍のピクチャであるピクチャＰ２３から動き補償を行うこともできる。その時に用いる動きベクトルＭＶＮ２（図示せず）は以下の式により計算される。
【０１０６】
ＭＶＮ２    ＝  ＭＶ２５×  ＴＲＮ１／ＴＲ２５
さらに、第３の方法として、図１８に示すように上記で求めた動きベクトルＭＶ２４’と動きベクトルＭＶ２５’  を用いてそれぞれピクチャＰ２４とピクチャＰ２５とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【０１０７】
この第３の方法により、計算量は増加するが、対象ピクチャＰ２２の精度は向上する。
【０１０８】
なお、上記動きベクトルＭＶＮ１と動きベクトルＭＶＮ２とを用いてピクチャＰ２４から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【０１０９】
また、図１９に示すように直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で後方にある１枚のピクチャを参照する１つの後方向動きベクトルを持っている場合は、例えば以下の式により動きベクトルＭＶ２４’は計算される。
【０１１０】
ＭＶ２４’  ＝  ＭＶ２４  ×  ＴＲ２４’／ＴＲ２４
そして動きベクトルＭＶ２４’を用いてピクチャＰ２４から動き補償を行う。
【０１１１】
なお、後方向動きベクトルＭＶ２５を用いながら、実施の形態１と同様に表示時間順で近傍のピクチャであるピクチャＰ２３から動き補償を行うこともできる。その時に用いる動きベクトルＭＶＮ３（図示せず）は以下の式により計算される。
【０１１２】
ＭＶＮ３    ＝  ＭＶ２４×  ＴＲＮ１／ＴＲ２４
なお、本実施の形態においては、図１６から図１９を用いて、表示時間順で後方にある２枚のピクチャを参照する２つの後方向動きベクトルを持っている場合、および表示時間順で後方にある１枚のピクチャを参照する１つの後方向動きベクトルを持っている場合に、その後方向動きベクトルをスケーリングして対象動きベクトルを計算する場合について説明したが、これは後方動きベクトルを用いず、同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良いし、ピクチャ内符号化が行われている場合に同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良い。まず、第１の計算方法について述べる。  図２０は、その際に参照する動きベクトルと対象ブロックとの位置関係を示したものである。ブロックＭＢ１が対象ブロックであり、Ａ、Ｂ、Ｃの位置関係にある３つの画素を含むブロックの動きベクトルを参照する。ただし、画素Ｃの位置が画面外であったり、符号化／復号化が済んでいない状態であったりして参照不可となる場合には、画素Ｃを含むブロックの代わりに画素Ｄを含むブロックの動きベクトルを用いるものとする。参照の対象となったＡ、Ｂ、Ｃの画素を含む３つのブロックが持つ動きベクトルの中央値を取ることによって、実際に直接モードにおいて使用する動きベクトルとする。３つのブロックが持つ動きベクトルの中央値を取ることにより、３つの動きベクトルのうちどの動きベクトルを選択したかという付加情報を符号列中に記述する必要がなく、かつブロックＭＢ１の実際の動きに近い動きを表現する動きベクトルを得ることができる。この場合、決定した動きベクトルを用いて、前方参照（第１参照ピクチャへの参照）のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、２方向参照（第１参照ピクチャおよび第２参照ピクチャへの参照）で動き補償しても良い。
【０１１３】
次に、第２の計算方法について述べる。
【０１１４】
第２の計算方法では第１の計算方法のように中央値を取らずに、参照の対象となったＡ、Ｂ、Ｃの画素を含む３つのブロックが持つ動きベクトルの中から、符号化効率が一番高くなる動きベクトルを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、決定した動きベクトルを用いて、前方参照（第１参照ピクチャへの参照）のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、２方向参照（第１参照ピクチャと第２参照ピクチャとを用いた参照）で動き補償しても良い。符号化効率の一番高い動きベクトルを示す情報は、例えば図２１（ａ）に示すように、モード選択部１０７から出力される直接モードを示す情報とともに、符号列生成部１０３によって生成される符号列におけるブロックのヘッダ領域に付加される。なお、図２１（ｂ）に示すように符号化効率の一番高いベクトルを示す情報はマクロブロックのヘッダ領域に付加してもよい。また、符号化効率の一番高い動きベクトルを示す情報とは、例えば、参照の対象となった画素を含むブロックを識別する番号であって、ブロック毎に与えられる識別番号である。また、識別番号でブロックが識別されるとき、ブロック毎に与えた識別番号を１つだけ用いて、その１つの識別番号に対応するブロックを符号化したときに用いた動きベクトルのうち一方のみを用いて符号化効率が一番高くなる動きベクトルを示すようにしても、動きベクトルが複数あるときに複数の動きベクトルを用いて符号化効率が一番高くなる動きベクトルを示すようにしてもよい。または、２方向参照（第１参照ピクチャおよび第２参照ピクチャへの参照）のそれぞれの動きベクトル毎にブロック毎に与えられた識別番号を用いて、符号化効率が一番高くなる動きベクトルを示すようにしてもよい。このような動きベクトルの選択方法を用いることにより、必ず符号化効率が一番高くなる動きベクトルを取ることができる。ただし、どの動きベクトルを選択したかを示す付加情報を符号列中に記述しなければならないため、そのための符号量は余分に必要となる。さらに、第３の計算方法について述べる。
【０１１５】
第３の計算方法では、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとする。参照インデックスが最小であるということは、一般的には表示時間順で近いピクチャを参照している、または符号化効率が最も高くなる動きベクトルである。よって、このような動きベクトルの選択方法を用いることにより、表示時間順で最も近い、または符号化効率が最も高くなるピクチャを参照する動きベクトルを用いて、直接モードで用いる動きベクトルを生成することになり、符号化効率の向上を図ることができる。
【０１１６】
なお、３本の動きベクトルのうち３本とも同一の参照ピクチャを参照している場合は、３本の動きベクトルの中央値をとるようにすればよい。また、３本の動きベクトルのうち参照インデックスの値が一番小さい参照ピクチャを参照する動きベクトルが２本ある場合は、例えば、２本の動きベクトルのうち、どちらか一方を固定的に選択するようにすればよい。図２０を用いて例を示すとすれば、画素Ａ、画素Ｂおよび画素Ｃを含む３つのブロックが持つ動きベクトルのうち、画素Ａおよび画素Ｂを含む２つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、画素Ａを含むブロックが持つ動きベクトルをとるようにするとよい。ただし、それぞれ画素Ａ、画素Ｂ、画素Ｃを含む３つのブロックが持つ動きベクトルのうち、画素Ａ、画素Ｃを含む２つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、ブロックＢＬ１に位置関係で近い画素Ａを含むブロックが持つ動きベクトルをとるようにするとよい。
【０１１７】
なお、上記中央値は、各動きベクトルの水平方向成分と垂直方向成分それぞれに対して中央値をとるようにしてもよいし、各動きベクトルの大きさ（絶対値）に対して中央値をとるようにしてもよい。
【０１１８】
また、動きベクトルの中央値は図２２に示すような場合、後方の参照ピクチャにおいてブロックＢＬ１と同位置にあるブロックと、画素Ａ，画素Ｂ、画素Ｃそれぞれを含むブロックと、さらに図２２に示す画素Ｄを含むブロック、これら合計５つのブロックが有する動きベクトルの中央値を取るようにしてもよい。このように符号化対象画素の周囲に近い、後方の参照ピクチャにおいてブロックＢＬ１と同位置にあるブロックを用いたときには、ブロック数を奇数にするために画素Ｄを含むブロックを用いると、動きベクトルの中央値を算出する処理を簡単にすることができる。なお、後方の参照ピクチャにおいてブロックＢＬ１と同位置にある領域に複数のブロックがまたがっている場合、この複数のブロックのうちブロックＢＬ１と重なる領域が最も大きいブロックにおける動きベクトルを用いてブロックＢＬ１の動き補償をしてもよいし、あるいはブロックＢＬ１を後方の参照ピクチャにおける複数のブロックの領域に対応して分けて、分けたブロック毎にブロックＢＬ１を動き補償するようにしてもよい。
【０１１９】
さらに、具体的な例を挙げて説明する。
【０１２０】
図２３や図２４に示すように画素Ａ，画素Ｂ，画素Ｃを含むブロック全てが符号化対象ピクチャより前方のピクチャを参照する動きベクトルの場合、上記第１の計算方法から第３の計算方法まで、いずれを用いてもよい。
【０１２１】
同様に、図２５や図２６に示すように画素Ａ，画素Ｂ，画素Ｃを含むブロック全てが符号化対象ピクチャより後方のピクチャを参照する動きベクトルの場合、上記第１の計算方法から第３の計算方法まで、いずれを用いてもよい。
【０１２２】
次に、図２７に示す場合について説明する。図２７は、画素Ａ，画素Ｂ，画素Ｃそれぞれを含むブロック全てが符号化対象ピクチャより前方と後方のピクチャを参照する動きベクトルを１本ずつ有する場合を示す。
【０１２３】
上記第１の計算方法によれば、ブロックＢＬ１の動き補償に用いる前方の動きベクトルは動きベクトルＭＶＡｆ、動きベクトルＭＶＢｆ、動きベクトルＭＶＣｆの中央値により選択され、ブロックＢＬ１の動き補償に用いる後方の動きベクトルは動きベクトルＭＶＡｂ、動きベクトルＭＶＢｂ、動きベクトルＭＶＣｂの中央値により選択される。なお、動きベクトルＭＶＡｆは画素Ａを含むブロックの前方向動きベクトル、動きベクトルＭＶＡｂは画素Ａを含むブロックの後方向動きベクトル、動きベクトルＭＶＢｆは画素Ｂを含むブロックの前方向動きベクトル、動きベクトルＭＶＢｂは画素Ｂを含むブロックの後方向動きベクトル、動きベクトルＭＶＣｆは画素Ｃを含むブロックの前方向動きベクトル、動きベクトルＭＶＣｂは画素Ｃを含むブロックの後方向動きベクトルである。また、動きベクトルＭＶＡｆ等は、図示するようなピクチャを参照する場合に限られない。これらは以下の説明でも同様である。
【０１２４】
上記第２の計算方法によれば、動きベクトルＭＶＡｆ、動きベクトルＭＶＢｆ、動きベクトルＭＶＣｆの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルと、動きベクトルＭＶＡｂ、動きベクトルＭＶＢｂ、動きベクトルＭＶＣｂの後方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルとを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、動きベクトルＭＶＡｆ、動きベクトルＭＶＢｆ、動きベクトルＭＶＣｆの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルを用いて、前方参照のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、２方向参照で動き補償しても良い。なお、符号化効率が一番高くなるように、前方参照と後方参照の動きベクトルそれぞれについて選択せず、１つのブロックを選択し、そのブロックが有する前方参照と後方参照の動きベクトルを用いて動き補償しても良い。このとき、符号化効率が一番高くなるように選択された前方参照の動きベクトルを有する画素を有するブロックと、符号化効率が一番高くなるように選択された後方参照の動きベクトルを有する画素を有するブロックとを示す情報を選択する場合に比べて、選択を示す情報が少なくて済むため、符号化効率を向上させることができる。また、この１つのブロックの選択は、▲１▼前方参照の動きベクトルが参照するピクチャの参照インデックスの値が一番小さくなる動きベクトルを有する画素を含むブロックとする、▲２▼各画素を有するブロックの前方参照の動きベクトルが参照するピクチャの参照インデックスの値と、後方参照の動きベクトルが参照するピクチャの参照インデックスの値とを加算し、加算した値が最小となるブロックとする、▲３▼前方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する前方参照の動きベクトルを有する画素を含むブロックとし、後方参照の動きベクトルは、このブロックの有する後方参照の動きベクトルとする、▲４▼後方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する後方参照の動きベクトルを有する画素を含むブロックとし、前方参照の動きベクトルは、このブロックの有する前方参照の動きベクトルとする、のいずれかを採用すればよい。なお、後方参照の動きベクトルが全て同一のピクチャを参照している場合は、上記▲１▼と▲３▼のブロックの選択方法が適している。
【０１２５】
上記第３の計算方法では、動きベクトルＭＶＡｆ、動きベクトルＭＶＢｆ、動きベクトルＭＶＣｆの前方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する前方参照（第１の参照）の動きベクトルとする。または、動きベクトルＭＶＡｂ、動きベクトルＭＶＢｂ、動きベクトルＭＶＣｂの後方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する後方参照（第２の参照）の動きベクトルとする。なお、第３の計算方法では、参照ピクチャの参照インデックスの値が一番小さくなる前方参照の動きベクトルをブロックＢＬ１の前方参照の動きベクトルとし、参照ピクチャの参照インデックスの値が一番小さくなる後方参照の動きベクトルをブロックＢＬ１の後方参照の動きベクトルとしたが、参照ピクチャの参照インデックスの値が一番小さくなる前方または後方のいずれか一方を用いてブロックＢＬ１の２つの動きベクトルを導出し、導出された動きベクトルを用いてブロックＢＬ１を動き補償しても良い。
【０１２６】
次に、図２８に示す場合について説明する。図２８は、画素Ａが前方と後方のピクチャを参照する動きベクトルを１本ずつ有し、画素Ｂが前方のピクチャを参照する動きベクトルのみを有し、画素Ｃが後方のピクチャを参照する動きベクトルのみを有する場合を示す。
【０１２７】
このように一方のピクチャを参照する動きベクトルのみ有する画素を含むブロックがあるとき、このブロックの他方のピクチャを参照する動きベクトルが０であるとして、動き補償するために上記図２７での計算方法を用いれば良い。具体的には、図２７での第１の計算方法または第３の計算方法を用い、ＭＶＣｆ＝ＭＶＢｂ＝０として計算すればよい。すなわち、第１の計算方法では、ブロックＢＬ１の前方向動きベクトルを計算するときには、画素Ｃが前方のピクチャを参照する動きベクトルＭＶＣｆをＭＶＣｆ＝０として、動きベクトルＭＶＡｆ、動きベクトルＭＶＢｆおよび動きベクトルＭＶＣｆの中央値を計算する。また、ブロックＢＬ１の後方向動きベクトルを計算するときには、画素Ｂが後方のピクチャを参照する動きベクトルＭＶＢｂをＭＶＢｂ＝０として、動きベクトルＭＶＡｂ、動きベクトルＭＶＢｂおよび動きベクトルＭＶＣｂの中央値を計算する。
【０１２８】
第３の計算方法では、画素Ｃが前方のピクチャを参照する動きベクトルＭＶＣｆと画素Ｂが後方のピクチャを参照する動きベクトルＭＶＢｂとをＭＶＣｆ＝ＭＶＢｂ＝０として、ブロックＢＬ１の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを計算する。例えば、画素Ａを含むブロックが第１参照インデックス「０」のピクチャを参照し、画素Ｂを含むブロックが第１参照インデックス「１」のピクチャを参照している場合、最小の第１参照インデックスの値は「０」である。従って、画素Ｂを含むブロックの前方のピクチャを参照する動きベクトルＭＶＢｆだけが、最小の第１参照インデックスを有するピクチャを参照しているので、動きベクトルＭＶＢｆをブロックＢＬ１の前方向動きベクトルとする。また、例えば、画素Ａ、画素Ｃのいずれもが第２参照インデックスが最小の、例えば、第２参照インデックスが「０」の後方ピクチャを参照している場合、画素Ｂが後方のピクチャを参照する動きベクトルＭＶＢｂをＭＶＢｂ＝０として、動きベクトルＭＶＡｂ、動きベクトルＭＶＢｂおよび動きベクトルＭＶＣｂの中央値を計算する。計算の結果得られた動きベクトルをブロックＢＬ１の後方向動きベクトルとする。
【０１２９】
次に、図２９に示す場合について説明する。図２９は、画素Ａが前方と後方のピクチャを参照する動きベクトルを１本ずつ有し、画素Ｂが前方のピクチャを参照する動きベクトルのみを有し、画素Ｃが動きベクトルを有さず、画面内符号化される場合を示す。
【０１３０】
このように、参照対象となった画素Ｃを含むブロックが画面内符号化されているとき、このブロックの前方と後方のピクチャを参照する動きベクトルを共に「０」であるとして、動き補償するために上記図２７での計算方法を用いれば良い。具体的には、ＭＶＣｆ＝ＭＶＣｂ＝０として計算すればよい。なお、図２７の場合は、ＭＶＢｂ＝０である。
【０１３１】
最後に、図３０に示す場合について説明する。図３０は、画素Ｃが直接モードによって符号化されている場合について示している。
【０１３２】
このように、参照対象となった画素に、直接モードによって符号化されているブロックがあるとき、直接モードによって符号化されているブロックが符号化されるときに用いられた動きベクトルを用いた上で、上記図２７での計算方法を用いてブロックＢＬ１の動き補償をするとよい。
【０１３３】
なお、動きベクトルが前方参照と後方参照のどちらかであるかは、参照されるピクチャと符号化されるピクチャ、それぞれのピクチャが有する時間情報によって決まる。よって、前方参照と後方参照を区別した上で、動きベクトルを導出する場合は、それぞれのブロックが有する動きベクトルが、前方参照と後方参照のどちらかであるかを、それぞれのピクチャが有する時間情報によって判断する。
【０１３４】
さらに、上記で説明した計算方法を組み合わせた例について説明する。図３１は直接モードにおいて使用する動きベクトルを決定する手順を示す図である。図３１は参照インデックスを用いて動きベクトルを決定する方法の一例である。なお、図３１に示すＲｉｄｘ０、Ｒｉｄｘ１は上記で説明した参照インデックスである。図３１（ａ）は第１参照インデックスＲｉｄｘ０によって動きベクトルを決定する手順を示しており、図３１（ｂ）は第２参照インデックスＲｉｄｘ１によって動きベクトルを決定する手順を示している。まず、図３１（ａ）について説明する。
【０１３５】
ステップＳ３７０１において画素Ａを含むブロック、画素Ｂを含むブロックおよび画素Ｃを含むブロックのうち、第１参照インデックスＲｉｄｘ０を用いてピクチャを参照するブロックの数を計算する。
【０１３６】
ステップＳ３７０１において計算されたブロックの数が「０」であれば、さらにステップＳ３７０２において第２参照インデックスＲｉｄｘ１を用いてピクチャを参照するブロックの数を計算する。ステップＳ３７０２において計算されたブロックの数が「０」であれば、Ｓ３７０３において符号化対象ブロックの動きベクトルを「０」として符号化対象ブロックを２方向で動き補償をする。一方ステップＳ３７０２において計算されたブロックの数が「１」以上であれば、Ｓ３７０４において第２参照インデックスＲｉｄｘ１が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第２参照インデックスＲｉｄｘ１が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【０１３７】
ステップＳ３７０１において計算されたブロックの数が「１」であれば、Ｓ３７０５において第１参照インデックスＲｉｄｘ０が存在するブロックの動きベクトルを使用する。
【０１３８】
ステップＳ３７０１において計算されたブロックの数が「２」であれば、Ｓ３７０６において第１参照インデックスＲｉｄｘ０が存在しないブロックについて仮に第１参照インデックスＲｉｄｘ０にＭＶ＝０の動きベクトルがあるものとして、３本の動きベクトルの中央値にあたる動きベクトルを使用する。
【０１３９】
ステップＳ３７０１において計算されたブロックの数が「３」であれば、Ｓ３７０７において３本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップＳ３７０４における動き補償は、１本の動きベクトルを用いて２方向の動き補償をしてもよい。ここでの２方向の動き補償は、１本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの１本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは１本の動きベクトルと同一方向の動きベクトルと動きベクトルが「０」の動きベクトルとを用いて行ってもよい。次に、図３１（ｂ）について説明する。
【０１４０】
ステップＳ３７１１において第２参照インデックスＲｉｄｘ１が存在するブロックの数を計算する。
【０１４１】
ステップＳ３７１１において計算されたブロックの数が「０」であれば、さらにステップＳ３７１２において第１参照インデックスＲｉｄｘ０が存在するブロックの数を計算する。ステップＳ３７１２において計算されたブロックの数が「０」であれば、Ｓ３７１３において符号化対象ブロックの動きベクトルを「０」として符号化対象ブロックを２方向で動き補償する。一方ステップＳ３７１２において計算されたブロックの数が「１」以上であれば、Ｓ３７１４において第１参照インデックスＲｉｄｘ０が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第１参照インデックスＲｉｄｘ０が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【０１４２】
ステップＳ３７１１において計算されたブロックの数が「１」であれば、Ｓ３７１５において第２参照インデックスＲｉｄｘ１が存在するブロックの動きベクトルを使用する。
【０１４３】
ステップＳ３７１１において計算されたブロックの数が「２」であれば、Ｓ３７１６において第２参照インデックスＲｉｄｘ１が存在しないブロックについて仮に第２参照インデックスＲｉｄｘ１にＭＶ＝０の動きベクトルがあるものとして、３本の動きベクトルの中央値にあたる動きベクトルを使用する。
【０１４４】
ステップＳ３７１１において計算されたブロックの数が「３」であれば、Ｓ３７１７において３本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップＳ３７１４における動き補償は、１本の動きベクトルを用いて２方向の動き補償をしてもよい。ここでの２方向の動き補償は、１本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの１本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは１本の動きベクトルと同一方向の動きベクトルと動きベクトルが「０」の動きベクトルとを用いて行ってもよい。
【０１４５】
なお、図３１（ａ）と図３１（ｂ）それぞれについて説明したが、両方の処理を用いてもよいし、一方の処理のみを用いても良い。ただし、一方の処理を用いる場合、例えば、図３１（ａ）に示すステップＳ３７０１から始まる処理を行う場合で、さらにステップＳ３７０４の処理に至る場合は、図３１（ｂ）に示すＳ３７１１の処理以下を行うと良い。また、このように、Ｓ３７０４の処理に至る場合は、ステップＳ３７１１以下の処理のうちステップＳ３７１２以下の処理を行うことが無いため、動きベクトルを一意に決定することができる。また、図３１（ａ）と図３１（ｂ）の両方の処理を用いる場合、どちらの処理を先にしてもよく、また併せて行っても良い。また、符号化対象ブロックの周囲にあるブロックが直接モードによって符号化されているブロックであるとき、直接モードによって符号化されているブロックが符号化されたときに用いられた動きベクトルが参照していたピクチャの参照インデックスを、直接モードによって符号化されているブロックであって符号化対象ブロックの周囲にあるブロックが有しているものとしてもよい。
【０１４６】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について詳しく説明する。図３２は符号化対象ブロックＢＬ１が参照するブロックそれぞれが有する動きベクトルの種類を示す図である。図３５（ａ）において、画素Ａを有するブロックは画面内符号化されるブロックであり、画素Ｂを有するブロックは動きベクトルを１本有し、この１本の動きベクトルで動き補償されるブロックであり、画素Ｃを有するブロックは動きベクトルを２本有して２方向で動き補償されるブロックである。また、画素Ｂを有するブロックは第２参照インデックスＲｉｄｘ１に示される動きベクトルを有している。画素Ａを有するブロックは画面内符号化されるブロックであるため、動きベクトルを有さず、すなわち参照インデックスも有さない。
【０１４７】
ステップＳ３７０１において第１参照インデックスＲｉｄｘ０が存在するブロックの数を計算する。図３５に示すように第１参照インデックスＲｉｄｘ０が存在するブロックの数は２本であるため、ステップＳ３７０６において第１参照インデックスＲｉｄｘ０が存在しないブロックについて仮に第１参照インデックスＲｉｄｘ０にＭＶ＝０の動きベクトルがあるものとして、３本の動きベクトルの中央値にあたる動きベクトルを使用する。この動きベクトルのみを用いて符号化対象ブロックを２方向の動き補償をしてもよいし、または、以下に示すように第２参照インデックスＲｉｄｘ１を用いて別の動きベクトルを用いて、２方向の動き補償をしてもよい。
【０１４８】
ステップＳ３７１１において第２参照インデックスＲｉｄｘ１が存在するブロックの数を計算する。図３５に示すように第２参照インデックスＲｉｄｘ１が存在するブロックの数は１本であるため、ステップＳ３７１５において第２参照インデックスＲｉｄｘ１が存在するブロックの動きベクトルを使用する。
【０１４９】
さらに、上記で説明した計算方法を組み合わせた別の例について説明する。図３３は画素Ａ、Ｂ、Ｃそれぞれを有するブロックが有する動きベクトルが参照するピクチャを示す参照インデックスの値によって、符号化対象ブロックの動きベクトルを決定する手順を示す図である。図３３（ａ）（ｂ）は第１参照インデックスＲｉｄｘ０を基準に動きベクトルを決定する手順を示す図であり、図３３（ｃ）（ｄ）は第２参照インデックスＲｉｄｘ１を基準に動きベクトルを決定する手順を示す図である。また、図３３（ａ）が第１参照インデックスＲｉｄｘ０を基準にした手順を示しているところを図３３（ｃ）は第２参照インデックスＲｉｄｘ１を基準にした手順を示しており、図３３（ｂ）が第１参照インデックスＲｉｄｘ０を基準にした手順を示しているところを図３３（ｄ）は第２参照インデックスＲｉｄｘ１を基準にした手順を示しているため、以下の説明では図３３（ａ）と図３３（ｂ）のみについて説明する。まず図３３（ａ）について説明する。
【０１５０】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できるか判断する。
【０１５１】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できる場合、ステップＳ３８０２において選択された動きベクトルを使用する。
【０１５２】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０が複数ある場合、ステップＳ３８０３において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Ａを有するブロック、画素Ｂを有するブロック、画素Ｃを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。
【０１５３】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０がない場合、ステップＳ３８０４においてＳ３８０２やＳ３８０３とは違う処理を行う。例えば、図３１（ｂ）で説明したステップＳ３７１１以下の処理をすればよい。次に、図３３（ｂ）について説明する。図３３（ｂ）が図３３（ａ）と異なる点は、図３３（ａ）におけるステップＳ３８０３とステップＳ３８０４における処理を図３３（ｂ）に示すステップＳ３８１３とした点である。
【０１５４】
ステップＳ３８１１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できるか判断する。
【０１５５】
ステップＳ３８１１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できる場合、ステップＳ３８１２において選択された動きベクトルを使用する。
【０１５６】
ステップＳ３８１１において有効な第１参照インデックスＲｉｄｘ０がない場合、ステップＳ３８１３においてＳ３８１２とは違う処理を行う。例えば、図３１（ｂ）で説明したステップＳ３７１１以下の処理をすればよい。
【０１５７】
なお、上記で示した有効な第１参照インデックスＲｉｄｘ０とは図３２（ｂ）で「○」が記されている第１参照インデックスＲｉｄｘ０のことであり、動きベクトルを有していることが示されている参照インデックスのことである。また、図３２（ｂ）中、「×」が記されているところは、参照インデックスが割り当てられていないことを意味する。また、図３３（ｃ）におけるステップＳ３８２４、図３３（ｄ）におけるステップＳ３８３３では、図３１（ａ）で説明したステップＳ３７０１以下の処理をすればよい。
【０１５８】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について図３２を用いて詳しく説明する。
【０１５９】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できるか判断する。
【０１６０】
図３２に示す場合、有効な第１参照インデックスＲｉｄｘ０は２つあるが、ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０を１つ選択できる場合、ステップＳ３８０２において選択された動きベクトルを使用する。
【０１６１】
ステップＳ３８０１において有効な第１参照インデックスＲｉｄｘ０の中で最小の第１参照インデックスＲｉｄｘ０が複数ある場合、ステップＳ３８０３において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Ａを有するブロック、画素Ｂを有するブロック、画素Ｃを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。画素Ｂを有するブロックと画素Ｃを有するブロックとで同一の第１参照インデックスＲｉｄｘ０を有する場合、優先順位により画素Ｂを有するブロックにおける第１参照インデックスＲｉｄｘ０が採用され、この画素Ｂを有するブロックにおける第１参照インデックスＲｉｄｘ０に対応した動きベクトルを用いて符号化対象ブロックＢＬ１の動き補償がされる。このとき、決定された動きベクトルのみを用いて符号化対象ブロックＢＬ１を２方向で動き補償してもよいし、以下に示すように第２参照インデックスＲｉｄｘ１を用いて別の動きベクトルを用いて、２方向の動き補償をしてもよい。
【０１６２】
ステップＳ３８２１において有効な第２参照インデックスＲｉｄｘ１の中で最小の第２参照インデックスＲｉｄｘ１を１つ選択できるか判断する。
【０１６３】
図３２に示す場合、有効な第２参照インデックスＲｉｄｘ１は１つであるため、ステップＳ３８２２において画素Ｃを有するブロックにおける第２参照インデックスＲｉｄｘ１に対応した動きベクトルを使用する。
【０１６４】
なお、上記で参照インデックスを有さないブロックについて、動きベクトルの大きさが「０」の動きベクトルを有しているものとして、合計３つの動きベクトルの中央値をとるようにした点に関しては、動きベクトルの大きさが「０」の動きベクトルを有しているものとして、合計３つの動きベクトルの平均値をとるようにしても、参照インデックスを有するブロックが有する動きベクトルの平均値をとるようにしてもよい。
【０１６５】
なお、上記で説明した優先順位を、例えば画素Ｂを有するブロック、画素Ａを有するブロック、画素Ｃを有するブロックの順とし、符号化対象ブロックの動き補償に使用する動きベクトルを決定するようにしてもよい。
【０１６６】
このように、参照インデックスを用いて符号化対象ブロックを動き補償をするときに用いる動きベクトルを決定することにより、動きベクトルを一意に決定することができる。また、上述の例に拠れば、符号化効率の向上も図ることが可能である。また、時刻情報を用いて動きベクトルが前方参照か後方参照かを判断する必要が無いため、動きベクトルを決定するための処理を簡略させることができる。また、ブロック毎の予測モード、動き補償で用いられる動きベクトル等を考慮すると多くのパターンが存在するが、上述のように一連の流れによって処理することができ有益である。
【０１６７】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【０１６８】
なお、参照インデックスＲｉｄｘ０，Ｒｉｄｘ１を用いた動きベクトルの計算方法は、中央値を用いた計算方法だけでなく、他の計算方法と組み合わせてもよい。例えば、前述の第３の計算方法において、それぞれ画素Ａ、画素Ｂ、画素Ｃを含むブロックのうち、参照インデックスが最小となる同じピクチャを参照する動きベクトルが複数ある場合に、必ずしもそれらの動きベクトルの中央値を計算する必要はなく、それらの平均値を計算し、得られた動きベクトルを、ブロックＢＬ１の直接モードにおいて用いる動きベクトルとしてもよい。あるいは、参照インデックスが最小となる複数の動きベクトルの中から、例えば、符号化効率が最も高くなる動きベクトルを１つ選択するとしてもよい。
【０１６９】
また、ブロックＢＬ１の前方向動きベクトルと後方向動きベクトルとをそれぞれ独立して計算してもよいし、関連付けて計算してもよい。例えば、前方向動きベクトルと後方向動きベクトルとを同じ動きベクトルから計算してもよい。
【０１７０】
また、計算の結果得られた前方向動きベクトルと後方向動きベクトルとのいずれか一方をブロックＢＬ１の動きベクトルとしてもよい。
【０１７１】
（実施の形態８）
本実施の形態では、参照ピクチャの参照ブロックＭＢが、長時間メモリに保存されている参照ピクチャを第１参照ピクチャとして参照する前方向（第１）動きベクトルと、短時間メモリに保存されている参照ピクチャを第２参照ピクチャとして参照する後方向（第２）動きベクトルとを有している。
【０１７２】
図３４は長時間メモリに保存されているピクチャを参照する動きベクトルが１つだけの場合の直接モードにおける２方向予測を示す図である。
【０１７３】
実施の形態８がこれまでの複数の実施の形態と異なる点は、参照ピクチャのブロックＭＢ２の前方向（第１）動きベクトルＭＶ２１が長時間メモリに保存されている参照ピクチャを参照している点である。
【０１７４】
短時間メモリは、一時的に参照ピクチャを保存するためのメモリであり、例えばピクチャがメモリに保存された順番（すなわち符号化または復号化の順序）でピクチャが保存されている。そして、ピクチャを短時間メモリに新しく保存する際にメモリ容量が足りない場合には、最も古くメモリに保存されたピクチャから順に削除する。
【０１７５】
長時間メモリでは、必ずしも短時間メモリのように時刻の順番でピクチャが保存されているとは限らない。例えば、画像を保存する順番としては画像の時刻の順番を対応させても良いし、画像が保存されているメモリのアドレスの順番を対応させても良い。したがって、長時間メモリに保存されているピクチャを参照する動きベクトルＭ２１を時間間隔に基づいてスケーリングすることはできない。
【０１７６】
長時間メモリは短期間メモリのように一時的に参照ピクチャを保存するためのものではなく、継続的に参照ピクチャを保存するためのものである。したがって、長時間メモリに保存されている動きベクトルに対応する時間間隔は、短時間メモリに保存されている動きベクトルに対応する時間間隔より相当大きい。
【０１７７】
図３４において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。ここでピクチャＰ２３のブロックＭＢ１が対象ブロックである。また、ブロックＭＢ２はブロックＭＢ１と参照ピクチャＰ２４内において同じ位置にある参照ブロックである。参照ピクチャＰ２４のブロックＭＢ２の動きベクトルのうち前方向（第１）動きベクトルＭＶ２１は長時間メモリに保存されているピクチャＰ２１を第１参照ピクチャとして参照する第１動きベクトルであり、後方向（第２）動きベクトルＭＶ２５は短時間メモリに保存されているピクチャＰ２５を第２参照ピクチャとして参照する第２動きベクトルである。
【０１７８】
前述の通り、ピクチャＰ２１とピクチャＰ２４との時間間隔ＴＲ２１は、長時間メモリに保存されているピクチャを参照する動きベクトルＭＶ２１に対応し、ピクチャＰ２４とピクチャＰ２５との時間間隔ＴＲ２５は、短時間メモリに保存されているピクチャを参照する動きベクトルＭＶ２５に対応し、ピクチャＰ２１とピクチャＰ２４との時間間隔ＴＲ２１は、ピクチャＰ２４とピクチャＰ２５との時間間隔ＴＲ２５より相当大きいか、不定となることがある。
【０１７９】
したがって、これまでの実施の形態のように参照ピクチャＰ２４のブロックＭＢ２の動きベクトルをスケーリングして対象ピクチャＰ２３のブロックＭＢ１の動きベクトルを求めるのではなく、以下のような方法で対象ピクチャＰ２３のブロックＭＢ１の動きベクトルを計算する。
【０１８０】
ＭＶ２１  ＝  ＭＶ２１’
ＭＶ２４’  ＝  ０
上の式は、参照ピクチャＰ２４のブロックＭＢ２の動きベクトルのうち長時間メモリに保存されている第１動きベクトルＭＮ２１をそのまま対象ピクチャの第１動きベクトルＭＶ２１’とするということを表している。
【０１８１】
下の式は、短時間メモリに保存されているピクチャＰ２４への、対象ピクチャＰ２３のブロックＭＢ１の第２動きベクトルＭＶ２４’は、第１動きベクトルＭＶ２１’よりも十分小さいので、無視できるということを表している。第２動きベクトルＭＶ２４’は”０”として扱われる。
【０１８２】
以上のようにして、長時間メモリに保存されている参照ピクチャを第１参照ピクチャとして参照する１つの動きベクトルと短時間メモリに保存されている参照ピクチャを第２の参照ピクチャとして参照する１つの動きベクトルとを参照ブロックＭＢが有する場合、参照ピクチャのブロックの動きベクトルのうち、長時間メモリに保存された動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとして２方向予測をする。
【０１８３】
なお、長時間メモリに保存された参照ピクチャは、第１参照ピクチャまたは第２ピクチャのいずれのピクチャであってもよく、長時間メモリに保存された参照ピクチャを参照する動きベクトルＭＶ２１は後方向動きベクトルであってもよい。また、第２参照ピクチャが長時間メモリに保存され、第１参照ピクチャが短時間メモリに保存されている場合には、第１参照ピクチャを参照する動きベクトルにスケーリングを適用し、対象ピクチャの動きベクトルを計算する。
【０１８４】
これにより、長時間メモリの相当大きい、または不定となる時間を用いないで２方向予測の処理を行うことができる。
【０１８５】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して２方向予測をしても良い。
【０１８６】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【０１８７】
（実施の形態９）
本実施の形態では、参照ピクチャの参照ブロックＭＢが、長時間メモリに保存されている参照ピクチャを参照する２つの前方向動きベクトルを有している場合の直接モードにおける２方向予測を示す。
【０１８８】
図３５は、長時間メモリに保存されているピクチャを参照する動きベクトルが２つある場合の直接モードにおける２方向予測を示す図である。
【０１８９】
実施の形態９が実施の形態８と異なる点は、参照ピクチャのブロックＭＢ２の動きベクトルＭＶ２１と動きベクトルＭＶ２２両方が長時間メモリに保存されているピクチャを参照する点である。
【０１９０】
図３５において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。参照ピクチャＰ２４のブロックＭＢ２の動きベクトルＭＶ２１及び動きベクトルＭＶ２２は、２つとも長時間メモリに保存されたピクチャを参照している。参照ピクチャＰ２１には動きベクトルＭＢ２１が対応し、参照ピクチャＰ２２には動きベクトルＭＶ２２が対応している。
【０１９１】
長時間メモリに保存されているピクチャＰ２２を参照する動きベクトルＭＶ２２に対応してピクチャＰ２２とＰ２４との時間間隔ＴＲ２２は、短時間メモリに保存されているピクチャＰ２４とピクチャＰ２５との時間間隔ＴＲ２５より相当大きい、または不定となることがある。
【０１９２】
図３５において、動きベクトルＭＶ２２に対応するピクチャＰ２２、動きベクトルＭＶ２１に対応するピクチャＰ２１の順で順番が割り当てられて、ピクチャＰ２１、ピクチャＰ２２が長時間メモリに保存されている。図３５では以下のように対象ピクチャのブロックＭＢ１の動きベクトルを計算する。
【０１９３】
ＭＶ２２’  ＝  ＭＶ２２
ＭＶ２４’    ＝    ０
上の式は、参照ピクチャＰ２４のブロックＭＢ２の動きベクトルのうち、最も割り当てられた順番が小さいピクチャＰ２１を参照する動きベクトルＭＮ２２をそのまま対象ピクチャＰ２３のブロックＭＢ１の動きベクトルＭＶ２２’とするということを表している。
【０１９４】
下の式は、短時間メモリに保存されている対象ピクチャＰ２３のブロックＭＢ１の後方向動きベクトルＭＶ２４’は動きベクトルＭＶ２１’よりも十分小さいので、無視できるということを表している。後方向動きベクトルＭＶ２４’は”０”として扱われる。
【０１９５】
以上のようにして、長時間メモリに保存された参照ピクチャのブロックの動きベクトルのうち最も割り当てられた順番が小さいピクチャを参照する動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとすることで、長時間メモリの相当大きい、または不定となる時間を用いないで２方向予測の処理を行うことができる。
【０１９６】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して２方向予測をしても良い。
【０１９７】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【０１９８】
さらに、参照ピクチャのブロックＭＢ２の動きベクトルＭＶ２１と動きベクトルＭＶ２２との両方が長時間メモリに保存されているピクチャを参照する場合、第１参照ピクチャを参照する動きベクトルを選択するとしてもよい。例えば、ＭＶ２１が第１参照ピクチャを参照する動きベクトルであり、ＭＶ２２が第２参照ピクチャを参照する動きベクトルである場合、ブロックＭＢ１の動きベクトルはピクチャＰ２１に対する動きベクトルＭＶ２１とピクチャＰ２４に対する動きベクトル”０”とを用いることになる。
【０１９９】
（実施の形態１０）
本実施の形態では、実施の形態５から実施の形態９に記載された直接モードにおける動きベクトル計算方法について説明を行う。この動きベクトル計算方法は、画像の符号化または復号化の際いずれにも適用される。ここでは、符号化または復号化の対象のブロックを対象ブロックＭＢという。また、対象ブロックＭＢの参照ピクチャ中において対象ブロックと同じ位置にあるブロックを参照ブロックという。
【０２００】
図３６は、本実施の形態に係る動きベクトル計算方法の処理の流れを示す図である。
【０２０１】
まず、対象ブロックＭＢの後方の参照ピクチャ中の参照ブロックＭＢが動きベクトルを有するか否かが判定される（ステップＳ１）。参照ブロックＭＢが動きベクトルを有していなければ（ステップＳ１；Ｎｏ）、動きベクトルが”０”として２方向予測されて（ステップＳ２）動きベクトルを計算する処理が終了する。
【０２０２】
参照ブロックＭＢが動きベクトルを有していれば（ステップＳ１；Ｙｅｓ）、参照ブロックＭＢが前方向動きベクトルを有するか否かが判定される（ステップＳ３）。
【０２０３】
参照ブロックＭＢが前方向動きベクトルを有しない場合（ステップＳ３；Ｎｏ）、参照ブロックＭＢは後方向動きベクトルしか有していないので、その後方向動きベクトルの数が判定される（ステップＳ１４）。参照ブロックＭＢの後方向動きベクトルの数が”２”の場合、図１６、図１７、図１８および図１９で記載されたいずれかの計算方法にしたがってスケーリングされた２つの後方向動きベクトルを用いて２方向予測が行われる（ステップＳ１５）。
【０２０４】
一方、参照ブロックＭＢの後方向動きベクトルの数が”１”の場合、参照ブロックＭＢが有する唯一の後方向動きベクトルをスケーリングして、スケーリングされた後方向動きベクトルを用いて動き補償が行われる（ステップＳ１６）。ステップＳ１５またはステップＳ１６の２方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【０２０５】
また、参照ブロックＭＢが前方向動きベクトルを有する場合（ステップＳ３；Ｙｅｓ）、参照ブロックＭＢの前方向動きベクトルの数が判定される（ステップＳ４）。
【０２０６】
参照ブロックＭＢの前方向動きベクトルの数が”１”の場合、参照ブロックＭＢの前方向動きベクトルに対応する参照ピクチャが長時間メモリまたは短時間メモリいずれに保存されているかが判定される（ステップＳ５）。
【０２０７】
参照ブロックＭＢの前方向動きベクトルに対応する参照ピクチャが短時間メモリに保存されている場合、参照ブロックＭＢの前方向動きベクトルをスケーリングして、スケーリングされた前方向動きベクトルを用いて２方向予測が行われる（ステップＳ６）。
【０２０８】
参照ブロックＭＢの前方向動きベクトルに対応する参照ピクチャが長時間メモリに保存されている場合、図３４に示された動きベクトル計算方法にしたがって、参照ブロックＭＢの前方向動きベクトルがスケーリングされずずにそのまま用いられ、後方向動きベクトルゼロとして２方向予測が行われる（ステップＳ７）。ステップＳ６またはステップＳ７の２方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【０２０９】
参照ブロックＭＢの前方向動きベクトルの数が”２”の場合、参照ブロックＭＢの前方向動きベクトルの内、長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数が判定される（ステップＳ８）。
【０２１０】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップＳ８において”０”の場合、図１３に示した動きベクトル計算方法にしたがって、対象ブロックＭＢが属する対象ピクチャに表示時間順で近い動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて２方向予測が行われる（ステップＳ９）。
【０２１１】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップＳ８において”１”の場合、短時間メモリに保存されたピクチャを動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて２方向予測が行われる（ステップＳ１０）。
【０２１２】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップＳ８において”２”の場合、２つの前方向動きベクトル両方によって、長時間メモリ内の同じピクチャが参照されているかが判定される（ステップＳ１１）。２つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されている場合（ステップＳ１１；Ｙｅｓ）、図１２に記載した動きベクトル計算方法にしたがって、長時間メモリ内の２つの前方向動きベクトルに参照されているピクチャの内で先に符号化または復号化された動きベクトルを用いて２方向予測が行われる（ステップＳ１２）。
【０２１３】
２つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されていない場合（ステップＳ１１；Ｎｏ）、図３５に記載された動きベクトル計算方法にしたがって、長時間メモリに保存されたピクチャに割り当てられた順番が小さいピクチャに対応する前方向動きベクトルを用いて２方向予測が行われる（ステップＳ１３）。長時間メモリでは実際の画像の時刻とは関係なく参照ピクチャが保存されているので、各参照ピクチャに割り当てられた順番にしたがって２方向予測に用いられるべき前方向動きベクトルが選択されるようになっている。また、長時間メモリに保存される参照ピクチャの順番は画像の時刻と一致する場合もあるが、単にメモリのアドレスの順番と一致させても良い。つまり、長時間メモリに保存される画像の順序は必ずしも画像の時刻と一致していなくてもよい。ステップＳ１２、１３の２方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【０２１４】
（実施の形態１１）
以下、本発明の実施の形態１１について図面を用いて詳細に説明する。
【０２１５】
図３７は、本発明の実施形態１１に係る動画像符号化装置１００の構成を示すブロック図である。動画像符号化装置１００は、フィールド構造で符号化されたブロックとフレーム構造で符号化されたブロックとが混在する場合にも直接モードの空間的予測方法を適用して動画像の符号化を行うことができる動画像符号化装置であって、フレームメモリ１０１、差分演算部１０２、予測誤差符号化部１０３、符号列生成部１０４、予測誤差復号化部１０５、加算演算部１０６、フレームメモリ１０７、動きベクトル検出部１０８、モード選択部１０９、符号化制御部１１０、スイッチ１１１、スイッチ１１２、スイッチ１１３、スイッチ１１４、スイッチ１１５および動きベクトル記憶部１１６を備える。
【０２１６】
フレームメモリ１０１は、入力画像をピクチャ単位で保持する画像メモリである。差分演算部１０２は、フレームメモリ１０１からの入力画像と、動きベクトルに基づいて復号化画像から求められた参照画像との差分である予測誤差を求めて出力する。予測誤差符号化部１０３は、差分演算部１０２で求められた予測誤差に周波数変換を施し、量子化して出力する。符号列生成部１０４は、予測誤差符号化部１０３からの符号化結果を可変長符号化した後、出力用の符号化ビットストリームのフォーマットに変換し、符号化された予測誤差の関連情報を記述したヘッダ情報などの付加情報を付して符号列を生成する。予測誤差復号化部１０５は、予測誤差符号化部１０３からの符号化結果を可変長復号化し、逆量子化した後、ＩＤＣＴ変換などの逆周波数変換を施し、予測誤差に復号化する。加算演算部１０６は、復号化結果である予測誤差に前記参照画像を加算して、符号化および復号化を経た画像データで入力画像と同じ１ピクチャの画像を表した参照画像を出力する。フレームメモリ１０７は、参照画像をピクチャ単位で保持する画像メモリである。
【０２１７】
動きベクトル検出部１０８は、符号化対象フレームの符号化単位ごとに、動きベクトルを検出する。モード選択部１０９は、動きベクトルを直接モードで計算するか他のモードで計算するかを選択する。符号化制御部１１０は、フレームメモリ１０１に入力された時間順で格納されている入力画像のピクチャを、符号化される順に入れ替える。さらに、符号化制御部１１０は、符号化対象フレームの所定の大きさの単位ごとに、フィールド構造で符号化を行うか、フレーム構造で符号化を行うかを判定する。ここでは、所定の大きさの単位はマクロブロック（例えば水平１６画素、垂直１６画素）を縦方向に２つ連結したもの（以下ではマクロブロックペアと呼ぶ）とする。フィールド構造で符号化するのであればフレームメモリ１０１からインタレースに対応して１水平走査線おきに画素値を読み出し、フレーム単位で符号化するのであればフレームメモリ１０１から順次、入力画像の各画素値を読み出して、読み出された各画素値がフィールド構造またはフレーム構造に対応した符号化対象マクロブロックペアを構成するようにメモリ上に配置する。動きベクトル記憶部１１６は、符号化済みマクロブロックの動きベクトルと、その動きベクトルが参照するフレームの参照インデックスとを保持する。参照インデックスについては、符号化済みマクロブロックペア中の各マクロブロックのそれぞれについて保持する。
【０２１８】
次に、以上のように構成された動画像符号化装置１００の動作について説明する。入力画像は時間順にピクチャ単位でフレームメモリ１０１に入力される。図３８（ａ）は、動画像符号化装置１００に時間順にピクチャ単位で入力されるフレームの順序を示す図である。図３８（ｂ）は、図３８（ａ）に示したピクチャの並びを符号化の順に並び替えた場合の順序を示す図である。図３８（ａ）において、縦線はピクチャを示し、各ピクチャの右下に示す記号は、一文字目のアルファベットがピクチャタイプ（Ｉ、ＰまたはＢ）を示し、２文字目以降の数字が時間順のピクチャ番号を示している。また、図３９は、実施の形態１１を説明するための、参照フレームリスト３００の構造を示す図である。フレームメモリ１０１に入力された各ピクチャは、符号化制御部１１０によって符号化順に並び替えられる。符号化順への並び替えは、ピクチャ間予測符号化における参照関係に基づいて行われ、参照ピクチャとして用いられるピクチャが、参照ピクチャとして用いるピクチャよりも先に符号化されるように並び替えられる。
【０２１９】
例えば、Ｐピクチャは、表示時間順で前方にある近傍のＩまたはＰピクチャ３枚のうち１枚を参照ピクチャとして用いるとする。また、Ｂピクチャは、表示時間順で前方にある近傍のＩまたはＰピクチャ３枚のうち１枚と、表示時間順で後方にある近傍のＩまたはＰピクチャの１枚とを参照ピクチャとして用いるものとする。具体的には、図３８（ａ）ではピクチャＢ５およびピクチャＢ６の後方に入力されていたピクチャＰ７は、ピクチャＢ５およびピクチャＢ６によって参照されるため、ピクチャＢ５およびピクチャＢ６の前に並び替えられる。同様に、ピクチャＢ８およびピクチャＢ９の後方に入力されていたピクチャＰ１０はピクチャＢ８およびピクチャＢ９の前方に、ピクチャＢ１１およびピクチャＢ１２の後方に入力されていたピクチャＰ１３はピクチャＢ１１およびピクチャＢ１２の前方に並び替えられる。これにより、図３８（ａ）のピクチャを並び替えた結果は、図３８（ｂ）のようになる。
【０２２０】
フレームメモリ１０１で並び替えが行われた各ピクチャは、マクロブロックを垂直方向に２つ連結したマクロブロックペアの単位で読み出されるものとし、各マクロブロックは水平１６画素×垂直１６画素の大きさであるとする。従って、マクロブロックペアは、水平１６画素×垂直３２画素の大きさとなる。以下、ピクチャＢ１１の符号化処理について説明する。なお、本実施の形態における参照インデックスの管理、すなわち参照フレームリストの管理は符号化制御部１１０において行うものとする。
【０２２１】
ピクチャＢ１１はＢピクチャであるので、２方向参照を用いたピクチャ間予測符号化を行う。ピクチャＢ１１は表示時間順で前方にあるピクチャＰ１０、Ｐ７、Ｐ４と表示時間順で後方にあるピクチャＰ１３のうちの２つのピクチャを参照ピクチャとして用いるものとする。これらの４つのピクチャのうち、いずれの２つのピクチャを選択するかは、マクロブロック単位で指定することができるとする。また、ここでは、参照インデックスは初期状態の方法で割り当てるものとする。すなわちピクチャＢ１１の符号化時における参照フレームリスト３００は図３９に示す通りとなる。この場合の参照画像は、第１の参照ピクチャは図３９の第１参照インデックスにより指定し、第２の参照ピクチャは図３９の第２参照インデックスにより指定するものとなる。
【０２２２】
ピクチャＢ１１の処理においては、符号化制御部１１０は、スイッチ１１３がオン、スイッチ１１４とスイッチ１１５とがオフになるように各スイッチを制御するものとする。よって、フレームメモリ１０１から読み出されたピクチャＢ１１のマクロブロックペアは、動きベクトル検出部１０８、モード選択部１０９および差分演算部１０２に入力される。動きベクトル検出部１０８では、フレームメモリ１０７に蓄積されたピクチャＰ１０、ピクチャＰ７、ピクチャＰ４およびピクチャＰ１３の復号化画像データを参照ピクチャとして用いることにより、マクロブロックペアに含まれる各マクロブロックの第１の動きベクトルと第２の動きベクトルとの検出を行う。モード選択部１０９では、動きベクトル検出部１０８で検出された動きベクトルを用いてマクロブロックペアの符号化モードを決定する。ここで、Ｂピクチャの符号化モードは、例えば、ピクチャ内符号化、一方向動きベクトルを用いたピクチャ間予測符号化、二方向動きベクトルを用いたピクチャ間予測符号化および直接モードから選択することができるものとする。また、直接モード以外の符号化モードを選択する場合には、マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかも併せて決定する。
【０２２３】
ここでは、直接モードの空間的予測方法を用いて動きベクトルを計算する方法について説明する。図４０（ａ）は、フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。図４０（ｂ）は、符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図４０（ｃ）は、符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図４０（ｂ）および図４０（ｃ）に斜線で示すマクロブロックペアは、符号化対象マクロブロックペアである。
【０２２４】
符号化対象マクロブロックペアが直接モードの空間的予測を用いて符号化される場合、当該符号化対象マクロブロックペアの周辺の３つの符号化済みマクロブロックペアが選択される。この場合、符号化対象マクロブロックペアは、フィールド構造またはフレーム構造のいずれで符号化されてもよい。従って、符号化制御部１１０は、まず、符号化対象マクロブロックペアをフィールド構造で符号化するか、フレーム構造で符号化するかを決定する。例えば、周辺マクロブロックペアのうちフィールド構造で符号化されたものが多い場合、符号化対象マクロブロックペアをフィールド構造で符号化し、フレーム構造で符号化されたものが多い場合、フレーム構造で符号化する。このように、符号化対象マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかを、周辺ブロックの情報を用いて決定することにより、符号化対象マクロブロックペアをいずれの構造で符号化したかを示す情報を符号列中に記述する必要がなくなり、かつ周囲のマクロブロックペアから構造を予測しているため、適した構造を選択することができる。
【０２２５】
次いで、動きベクトル検出部１０８は、符号化制御部１１０の決定に従って、符号化対象マクロブロックペアの動きベクトルを計算する。まず、動きベクトル検出部１０８は、符号化制御部１１０がフィールド構造で符号化すると決定したのか、フレーム構造で符号化すると決定したのかを調べ（Ｓ３０１）、フレーム構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフレーム構造で検出し（Ｓ３０２）、フィールド構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフィールド構造で検出する（Ｓ３０３）。
【０２２６】
図４１は、フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。同図において、白丸は奇数水平走査線上の画素を示し、斜線でハッチングした黒丸は偶数水平走査線上の画素を示している。入力画像を表す各フレームからマクロブロックペアを切り出した場合、図４１中央に示すように、奇数水平走査線上の画素と偶数水平走査線上の画素とは垂直方向に交互に配置されている。このようなマクロブロックペアをフレーム構造で符号化する場合、当該マクロブロックペアは２つのマクロブロックＭＢ１およびマクロブロックＭＢ２毎に処理され、マクロブロックペアを構成する２つのマクロブロックＭＢ１とマクロブロックＭＢ２とのそれぞれについて動きベクトルが求められる。また、フィールド構造で符号化する場合、当該マクロブロックペアは、水平走査線方向にインタレースした場合のトップフィールドを表すマクロブロックＴＦとボトムフィールドを表すマクロブロックＢＦとに分けられ、その動きベクトルは、マクロブロックペアを構成する２つのフィールドにそれぞれ１つ求められる。
【０２２７】
このようなマクロブロックペアを前提として、図４０（ｂ）に示すように、符号化対象マクロブロックペアをフレーム構造で符号化する場合について説明する。図４２は、図４０に示したステップＳ３０２における、より詳細な処理手順を示すフローチャートである。なお、同図において、マクロブロックペアをＭＢＰ、マクロブロックをＭＢと表記する。
【０２２８】
モード選択部１０９は、まず、符号化対象マクロブロックペアを構成する１つのマクロブロックＭＢ１（上部のマクロブロック）について、１つの動きベクトルを直接モードの空間的予測を用いて計算する。まず、モード選択部１０９は、周辺マクロブロックペアが参照するピクチャのインデックスのうちの最小値を第１動きベクトルと第２動きベクトルのインデックスのそれぞれについて求める（Ｓ５０１）。ただしこの場合、周辺マクロブロックペアがフレーム構造で符号化されている場合には、符号化対象マクロブロックに隣接するマクロブロックのみを用いて決定する。次に、周辺マクロブロックペアがフィールド構造で符号化されているか否かを調べ（Ｓ５０２）、フィールド構造で符号化されている場合にはさらに、当該周辺マクロブロックペアを構成する２つのマクロブロックによって参照されたフィールドのうち、いくつのフィールドが最小のインデックスが付されたフィールドであるかを、図３９の参照フレームリストから調べる（Ｓ５０３）。
【０２２９】
ステップＳ５０３において調べた結果、２つのマクロブロックによって参照されたフィールドがいずれも最小のインデックス（すなわち同じインデックス）が付されたフィールドである場合には、２つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする（Ｓ５０４）。これはインタレース構造で考えた場合、フレーム構造の符号化対象マクロブロックには、フィールド構造の周辺マクロブロックペアの２つのマクロブロックが隣接するためである。
【０２３０】
ステップＳ５０３において調べた結果、１つのマクロブロックによって参照されたフィールドのみが最小のインデックスが付されたフィールドである場合には、その１つのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする（Ｓ５０４Ａ）。いずれも、参照されたフィールドが最小のインデックスが付されていないフィールドである場合には、当該周辺マクロブロックペアの動きベクトルを「０」とする（Ｓ５０５）。
【０２３１】
上記において、周辺マクロブロックの動きベクトルのうち、参照するフィールドが最小のインデックスが付されているフィールドの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。Ｓ５０５の処理は、予測に適した動きベクトルがないと判断していることを示している。
【０２３２】
ステップＳ５０２において調べた結果、当該周辺マクロブロックペアがフレーム構造で符号化されている場合には、当該周辺マクロブロックペアのうち、符号化対象マクロブロックに隣接するマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする（Ｓ５０６）。
【０２３３】
モード選択部１０９は、上記ステップＳ５０１からステップＳ５０６までの処理を、選択された３つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の１つのマクロブロック、例えば、マクロブロックＭＢ１について、３つの周辺マクロブロックペアの動きベクトルがそれぞれ１つずつ求められたことになる。
【０２３４】
次いで、モード選択部１０９は、３つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照しているものが１つであるか否かを調べる（Ｓ５０７）。
【０２３５】
この場合、モード選択部１０９は、３つの周辺マクロブロックペアの参照インデックスを参照フレームインデックスまたは参照フィールドインデックスのいずれかに統一して比較する。図３９に示した参照フレームリストには、フレームごとに参照インデックスが付されているだけであるが、この参照フレームインデックスと、フィールドごとにインデックスが付されている参照フィールドインデックスとは一定の関係にあるので、参照フレームリストまたは参照フィールドリストの一方から計算によって他方の参照インデックスに変換することができる。
【０２３６】
図４３は、参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【０２３７】
この図４３に示すように、参照フィールドリストには、第１フィールドｆ１及び第２フィールドｆ２により示されるフレームが時系列に沿って幾つか存在し、各フレームには、符号化対象ブロックを含むフレーム（図４３中ので示すフレーム）を基準に、０，１，２，…といった参照フレームインデックスが割り当てられている。また、各フレームの第１フィールドｆ１及び第２フィールドｆ２には、符号化対象ブロックを含むフレームの第１フィールドｆ１を基準に（第１フィールドが符号化対象フィールドである場合）、０，１，２，…といった参照フィールドインデックスが割り当てられている。なお、この参照フィールドインデックスは、符号化対象フィールドに近いフレームの第１フィールドｆ１及び第２フィールドｆ２から、符号化対象ブロックが第１フィールドｆ１であれば第１フィールドｆ１を優先させて、符号化対象ブロックが第２フィールドｆ２であれば第２フィールドｆ２を優先させて割り当てられる。
【０２３８】
例えば、フレーム構造で符号化された周辺マクロブロックが参照フレームインデックス「１」のフレームを参照しており、フィールド構造で符号化された周辺ブロックが参照フィールドインデックス「２」の第１フィールドｆ１を参照しているときには、上記周辺マクロブロックはいずれも同一ピクチャを参照しているとして扱われる。すなわち、１つの周辺マクロブロックによって参照されるフレームの参照フレームインデックスが、他の１つの周辺マクロブロックの参照フィールドに割り当てられた参照フィールドインデックスの二分の一の値に等しい（小数点以下は切り捨て）という前提条件を満たすときに、その周辺マクロブロックは同一のピクチャを参照しているとして扱われる。
【０２３９】
例えば、図４３中の△で示す第１フィールドｆ１に含まれる符号化対象ブロックが参照フィールドインデックス「２」の第１フィールドｆ１を参照しており、フレーム構造である周辺マクロブロックが参照フレームインデックス「１」のフレームを参照しているときには、上記前提条件を満たすため、上記周辺ブロックは同一のピクチャを参照しているとして扱われる。一方、ある周辺マクロブロックが参照フィールドインデックス「２」の第１フィールドを参照しており、他の周辺マクロブロックが参照フレームインデックス「３」のフレームを参照しているときには、上記前提条件を満たさないため、その周辺ブロックは同一のピクチャを参照していないとして扱われる。
【０２４０】
上記のように、ステップＳ５０７において調べた結果、１つであれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする（Ｓ５０８）。ステップＳ５０７で調べた結果、１つでなければ、さらに、３つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアが２つ以上あるか否かを調べ（Ｓ５０９）、２つ以上あれば、その中でさらにインデックスが最小のフレームまたはそのフレーム内のフィールドを参照していない周辺マクロブロックペアがあればその動きベクトルを「０」とした上（Ｓ５１０）、周辺マクロブロックペアの３つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする（Ｓ５１１）。また、ステップＳ５０９で調べた結果、２つ未満であれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの数は「０」なので、符号化対象マクロブロックの動きベクトルを「０」とする（Ｓ５１２）。
【０２４１】
以上の処理の結果、符号化対象マクロブロックペアを構成する１つのマクロブロック例えば、ＭＢ１について、１つの動きベクトルＭＶ１が計算結果として得られる。モード選択部１０９は、上記処理を、第２の参照インデックスを有する動きベクトルについても行い、得られた２つの動きベクトルを用いて２方向予測により動き補償を行う。ただし、周辺マクロブロックペアのうち、第１または第２の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、１方向のみの動きベクトルにより動き補償を行う。また、符号化対象マクロブロックペア内のもう１つのマクロブロック、例えば、マクロブロックＭＢ２についても同じ処理を繰り返す。この結果、１つの符号化対象マクロブロックペアにおける２つの各マクロブロックについて、直接モードによる動き補償を行ったことになる。
【０２４２】
次に、図４０（ｃ）のように、符号化対象マクロブロックペアをフィールド構造で符号化する場合について説明する。図４４は、図４０に示したステップＳ３０３における、より詳細な処理手順を示すフローチャートである。モード選択部１０９は、符号化対象マクロブロックペアを構成する１つのマクロブロック、例えば、当該マクロブロックペアのトップフィールドに対応するマクロブロックＴＦについて、１つの動きベクトルＭＶｔを直接モードの空間的予測を用いて計算する。まず、モード選択部１０９は、周辺マクロブロックペアが参照するピクチャのインデックスのうち最小値を求める（Ｓ６０１）。ただし、周辺マクロブロックペアがフィールド構造で処理されている場合には、符号化対象マクロブロックと同一フィールド（トップフィールドまたはボトムフィールド）のマクロブロックについてのみ考える。次いで、周辺マクロブロックペアがフレーム構造で符号化されているか否かを調べ（Ｓ６０２）、フレーム構造で符号化されている場合にはさらに、当該周辺マクロブロックペア内の２つのマクロブロックによって参照されたフレームがいずれも最小のインデックスが付されたフレームであるか否かを、参照フレームリスト３００によって各フレームに付与されたインデックスの値を基に判断する（Ｓ６０３）。
【０２４３】
ステップＳ６０３において調べた結果、２つのマクロブロックによって参照されたフレームがいずれも最小のインデックスである場合には、２つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする（Ｓ６０４）。ステップＳ６０３において調べた結果、一方または両方とも、参照したフレームが最小のインデックスを有しないフレームである場合には、さらに、いずれかのマクロブロックによって参照されたフレームが最小のインデックスを有しているか否かを調べ（Ｓ６０５）、調べた結果、いずれか一方のマクロブロックが参照したフレームに最小のインデックスが付されている場合には、そのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとし（Ｓ６０６）、ステップＳ６０５で調べた結果、いずれのマクロブロックも、参照したフレームに最小のインデックスが付されていない場合には、当該周辺マクロブロックペアの動きベクトルを「０」とする（Ｓ６０７）。上記において、周辺マクロブロックの動きベクトルのうち、参照するフレームが最小のインデックスが付されているフレームの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。Ｓ６０７の処理は、予測に適した動きベクトルがないと判断していることを示している。
【０２４４】
また、ステップＳ６０２において調べた結果、当該周辺マクロブロックペアがフィールド構造で符号化されている場合には、当該周辺マクロブロックペア全体の動きベクトルを、当該周辺マクロブロックペアにおいて、符号化対象マクロブロックペア内の対象マクロブロックに対応するマクロブロックの動きベクトルとする（Ｓ６０８）。モード選択部１０９は、上記ステップＳ６０１からステップＳ６０８までの処理を、選択された３つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の１つのマクロブロック、例えば、マクロブロックＴＦについて、３つの周辺マクロブロックペアの動きベクトルがそれぞれ１つずつ求められたことになる。
【０２４５】
次いで、動きベクトル検出部１０８は、３つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照しているものが１つであるか否かを調べ（Ｓ６０９）、１つであれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする（Ｓ６１０）。ステップＳ６０９で調べた結果、１つでなければ、さらに、３つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照した周辺マクロブロックペアが２つ以上あるか否かを調べ（Ｓ６１１）、２つ以上あれば、その中でさらにインデックスが最小のフレームを参照していない周辺マクロブロックペアの動きベクトルを「０」とした上（Ｓ６１２）、周辺マクロブロックペアの３つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする（Ｓ６１３）。また、ステップＳ６１１で調べた結果、２つ未満であれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの数は「０」なので、符号化対象マクロブロックの動きベクトルを「０」とする（Ｓ６１４）。
【０２４６】
以上の処理の結果、符号化対象マクロブロックペアを構成する１つのマクロブロック例えば、トップフィールドに対応するマクロブロックＴＦについて、１つの動きベクトルＭＶｔが計算結果として得られる。モード選択部１０９は、上記処理を、第２の動きベクトル（第２の参照インデックスに対応）についても繰り返す。これにより、マクロブロックＴＦについて２つの動きベクトルが得られ、これらの動きベクトルを用いて２方向予測による動き補償を行う。ただし、周辺マクロブロックペアのうち、第１または第２の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、１方向のみの動きベクトルにより動き補償を行う。これは、周辺マクロブロックペアが一方向のみしか参照していないということは、符号化対象マクロブロックについても一方向のみを参照する方が、符号化効率が高くなると考えられるからである。
【０２４７】
また、符号化対象マクロブロックペア内のもう１つのマクロブロック、例えば、ボトムフィールドに対応するマクロブロックＢＦについても同じ処理繰り返す。この結果、１つの符号化対象マクロブロックペアにおける２つの各マクロブロック、例えば、マクロブロックＴＦとマクロブロックＢＦとについて、直接モードによる処理を行ったことになる。
【０２４８】
なお、ここでは符号化対象マクロブロックペアの符号化構造と周辺マクロブロックペアの符号化構造とが異なる場合には、周辺マクロブロックペア内の２つのマクロブロックの動きベクトルの平均値を求めるなどの処理を行って計算したが、本発明はこれに限定されず、例えば、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用い、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が異なる場合には、符号化構造が異なる周辺マクロブロックペアの動きベクトルを用いないとしてもよい。より具体的には、まず、▲１▼符号化対象マクロブロックペアがフレーム構造で符号化される場合、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「０」とする。また、周辺マクロブロックペアがフィールド構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「０」とする。次に▲２▼符号化対象マクロブロックペアがフィールド構造で符号化される場合、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「０」とする。また、周辺マクロブロックペアがフレーム構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「０」とする。このようにして各周辺マクロブロックペアの動きベクトルを計算した後、▲３▼これらの動きベクトルのうち、最小のインデックスを有するフレームまたはそのフィールドを参照して得られたものが１つだけの場合は、その動きベクトルを直接モードにおける符号化対象マクロブロックペアの動きベクトルとし、そうでない場合には、３つの動きベクトルの中央値を直接モードにおける符号化対象マクロブロックペアの動きベクトルとする。
【０２４９】
また、上記説明では、符号化対象マクロブロックペアをフィールド構造で符号化するかフレーム構造で符号化するかを、符号化済みの周辺マクロブロックペアの符号化構造の多数決で決定したが、本発明はこれに限定されず、例えば、直接モードでは、必ずフレーム構造で符号化する、または必ずフィールド構造で符号化するというように固定的に定めておいてもよい。この場合、例えば、符号化対象となるフレームごとにフィールド構造で符号化するかまたはフレーム構造で符号化するかを切り替える場合には、符号列全体のヘッダまたはフレームごとのフレームヘッダなどに記述するとしてもよい。切り替えの単位は、例えば、シーケンス、ＧＯＰ、ピクチャ、スライスなどであってもよく、この場合には、それぞれ符号列中の対応するヘッダなどに記述しておけばよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。更に、パケット等で伝送する場合はヘッダ部とデータ部を分離して別に伝送してもよい。その場合は、ヘッダ部とデータ部が１つのビットストリームとなることはない。しかしながら、パケットの場合は、伝送する順序が多少前後することがあっても、対応するデータ部に対応するヘッダ部が別のパケットで伝送されるだけであり、１つのビットストリームとなっていなくても同じである。このように、フレーム構造を用いるのかフィールド構造を用いるのかを固定的に定めることにより、周辺ブロックの情報を用いて構造を決定する処理がなくなり、処理の簡略化を図ることができる。
【０２５０】
またさらには、直接モードにおいて、符号化対象マクロブロックペアをフレーム構造とフィールド構造の両者で処理し、符号化効率が高い構造を選択する方法を用いてもよい。この場合、フレーム構造とフィールド構造のいずれを選択したかは、符号列中のマクロブロックペアのヘッダ部に記述すればよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。このような方法を用いることにより、フレーム構造とフィールド構造のいずれを選択したかを示す情報が符号列中に必要となるが、動き補償の残差信号をより削減することが可能となり、符号化効率の向上を図ることができる。
【０２５１】
また上記の説明においては、周辺マクロブロックペアはマクロブロックの大きさを単位として動き補償されている場合について説明したが、これは異なる大きさを単位として動き補償されていてもよい。この場合、図４５（ａ）、（ｂ）に示すように、符号化対象マクロブロックペアのそれぞれのマクロブロックに対して、ａ、ｂ、ｃに位置する画素を含むブロックの動きベクトルを周辺マクロブロックペアの動きベクトルとする。ここで図４５（ａ）は、上部のマクロブロックを処理する場合を示し、図４５（ｂ）は下部のマクロブロックを処理する場合を示している。ここで、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム／フィールド構造が異なる場合、図４６（ａ）、（ｂ）に示すようなａ、ｂ、ｃの位置の画素を含むブロックと位置ａ’、ｂ’、ｃ’の画素を含むブロックとを用いて処理を行う。ここで位置ａ’、ｂ’、ｃ’は、画素ａ、ｂ、ｃの位置に対応する同一マクロブロックペア内のもう一方のマクロブロックに含まれるブロックである。例えば図４６（ａ）の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム／フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、ＢＬ１とＢＬ２の動きベクトルを用いて決定する。また、図４６（ｂ）の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム／フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、ＢＬ３とＢＬ４の動きベクトルを用いて決定する。このような処理方法を用いることにより、周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【０２５２】
また、周辺マクロブロックペアがマクロブロックの大きさとは異なる大きさを単位として動き補償されている場合には、マクロブロックに含まれるブロックの動きベクトルの平均値を求めることにより、そのマクロブロックの動きベクトルとしても良い。周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【０２５３】
さて、上記のように、動きベクトルが検出され、検出され動きベクトルに基づいてピクチャ間予測符号化が行われた結果、動きベクトル検出部１０８によって検出された動きベクトル、符号化された予測誤差画像は、マクロブロックごとに符号列中に格納される。ただし、直接モードで符号化されたマクロブロックの動きベクトルについては、単に直接モードで符号化されたことが記述されるだけで、動きベクトルおよび参照インデックスは符号列に記述されない。図４７は、符号列生成部１０４によって生成される符号列７００のデータ構成の一例を示す図である。同図のように、符号列生成部１０４によって生成された符号列７００には、ピクチャＰｉｃｔｕｒｅごとにヘッダＨｅａｄｅｒが設けられている。このヘッダＨｅａｄｅｒには、例えば、参照フレームリスト１０の変更を示す項目ＲＰＳＬおよび当該ピクチャのピクチャタイプを示す図示しない項目などが設けられており、項目ＲＰＳＬには、参照フレームリスト１０の第１参照インデックス１２および第２参照インデックス１３の値の割り当て方に初期設定から変更があった場合、変更後の割り当て方が記述される。
【０２５４】
一方、符号化された予測誤差は、マクロブロックごとに記録される。例えば、あるマクロブロックが直接モードの空間的予測を用いて符号化されている場合には、そのマクロブロックに対応する予測誤差を記述する項目Ｂｌｏｃｋ１において、当該マクロブロックの動きベクトルは記述されず、当該マクロブロックの符号化モードを示す項目ＰｒｅｄＴｙｐｅに符号化モードが直接モードであることを示す情報が記述される。また、当該マクロブロックペアがフレーム構造またはフィールド構造のいずれで符号化するかを前述の符号化効率の観点から選択するような場合には、フレーム構造またはフィールド構造のいずれが選択されたかを示す情報が記述される。これに続いて、符号化された予測誤差が項目ＣｏｄｅｄＲｅｓに記述される。また、別のマクロブロックがピクチャ間予測符号化モードで符号化されたマクロブロックである場合、そのマクロブロックに対応する予測誤差を記述する項目Ｂｌｏｃｋ２の中の符号化モードを示す項目ＰｒｅｄＴｙｐｅに、当該マクロブロックの符号化モードがピクチャ間予測符号化モードであることが記述される。この場合、符号化モードのほか、さらに、当該マクロブロックの第１参照インデックス１２が項目Ｒｉｄｘ０に、第２参照インデックス１３が項目Ｒｉｄｘ１に書き込まれる。ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられている。また、続いて、当該マクロブロックの前方フレーム参照時の動きベクトルが項目ＭＶ０に、後方フレーム参照時の動きベクトルが項目ＭＶ１に記述される。これに続いて、符号化された予測誤差が項目ＣｏｄｅｄＲｅｓに記述される。
【０２５５】
図４８は、図４７に示した符号列７００を復号化する動画像復号化装置８００の構成を示すブロック図である。動画像復号化装置８００は、直接モードで符号化されたマクロブロックを含んだ予測誤差が記述されている符号列７００を復号化する動画像復号化装置であって、符号列解析部７０１、予測誤差復号化部７０２、モード復号部７０３、動き補償復号部７０５、動きベクトル記憶部７０６、フレームメモリ７０７、加算演算部７０８、スイッチ７０９及びスイッチ７１０、動きベクトル復号化部７１１を備える。符号列解析部７０１は、入力された符号列７００から各種データを抽出する。ここでいう各種データとは、符号化モードの情報および動きベクトルに関する情報などである。抽出された符号化モードの情報は、モード復号部７０３に出力される。また、抽出された動きベクトル情報は、動きベクトル復号化部７１１に出力される。さらに、抽出された予測誤差符号化データは、予測誤差復号化部７０２に対して出力される。予測誤差復号化部７０２は、入力された予測誤差符号化データの復号化を行い、予測誤差画像を生成する。生成された予測誤差画像はスイッチ７０９に対して出力される。例えば、スイッチ７０９が端子ｂに接続されているときには、予測誤差画像は加算器７０８に対して出力される。
【０２５６】
モード復号部７０３は、符号列から抽出された符号化モード情報を参照し、スイッチ７０９とスイッチ７１０との制御を行う。符号化モードがピクチャ内符号化である場合には、スイッチ７０９を端子ａに接続し、スイッチ７１０を端子ｃに接続するように制御する。
符号化モードがピクチャ間符号化である場合には、スイッチ７０９を端子ｂに接続し、スイッチ７１０を端子ｄに接続するように制御する。さらに、モード復号部７０３では、符号化モードの情報を動き補償復号部７０５と動きベクトル復号化部７１１に対しても出力する。動きベクトル復号化部７１１は、符号列解析部７０１から入力された、符号化された動きベクトルに対して、復号化処理を行う。復号化された参照ピクチャ番号と動きベクトルは、動きベクトル記憶部７０６に保持されると同時に、動き補償復号部７０５に対して出力される。
【０２５７】
符号化モードが直接モードである場合には、モード復号部７０３は、スイッチ７０９を端子ｂに接続し、スイッチ７１０を端子ｄに接続するように制御する。さらに、モード復号部７０３では、符号化モードの情報を動き補償復号部７０５と動きベクトル復号化部７１１に対しても出力する。動きベクトル復号化部７１１は、符号化モードが直接モードである場合、動きベクトル記憶部７０６に記憶されている周辺マクロブロックペアの動きベクトルと参照ピクチャ番号とを用いて、直接モードで用いる動きベクトルを決定する。この動きベクトルの決定方法は、図３７のモード選択部１０９の動作で説明した内容と同様であるので、ここでは説明は省略する。
【０２５８】
復号化された参照ピクチャ番号と動きベクトルとに基づいて、動き補償復号部７０５は、フレームメモリ７０７からマクロブロックごとに動き補償画像を取得する。取得された動き補償画像は加算演算部７０８に出力される。フレームメモリ７０７は、復号化画像をフレームごとに保持するメモリである。加算演算部７０８は、入力された予測誤差画像と動き補償画像とを加算し、復号化画像を生成する。生成された復号化画像は、フレームメモリ７０７に対して出力される。
【０２５９】
以上のように、本実施の形態によれば、直接モードの空間的予測方法において、符号化対象マクロブロックペアに対する符号化済み周辺マクロブロックペアに、フレーム構造で符号化されたものとフィールド構造で符号化されたものとが混在する場合においても、容易に動きベクトルを求めることができる。
【０２６０】
なお、上記の実施の形態においては、各ピクチャはマクロブロックを垂直方向に２つ連結したマクロブロックペアの単位で、フレーム構造またはフィールド構造のいずれかを用いて処理される場合について説明したが、これは、異なる単位、例えばマクロブロック単位でフレーム構造またはフィールド構造を切り替えて処理しても良い。
【０２６１】
また、上記の実施の形態においては、Ｂピクチャ中のマクロブロックを直接モードで処理する場合について説明したが、これはＰピクチャでも同様の処理を行うことができる。Ｐピクチャの符号化・復号化時においては、各ブロックは１つのピクチャからのみ動き補償を行い、また参照フレームリストは１つしかない。そのため、Ｐピクチャでも本実施の形態と同様の処理を行うには、本実施の形態において符号化・復号化対象ブロックの２つの動きベクトル（第１の参照フレームリストと第２の参照フレームリスト）を求める処理を、１つの動きベクトルを求める処理とすれば良い。
【０２６２】
また、上記の実施の形態においては、３つの周辺マクロブロックペアの動きベクトルを用いて、直接モードで用いる動きベクトルを予測生成する場合について説明したが、用いる周辺マクロブロックペアの数は異なる値であっても良い。例えば、左隣の周辺マクロブロックペアの動きベクトルのみを用いるような場合が考えられる。
【０２６３】
（実施の形態１２）
さらに、上記各実施の形態で示した画像符号化方法および画像復号化方法の構成を実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
【０２６４】
図４９は、上記実施の形態１から実施の形態１１の画像符号化方法および画像復号化方法をコンピュータシステムにより実現するためのプログラムを格納するための記憶媒体についての説明図である。
【０２６５】
図４９（ｂ）は、フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示し、図４９（ａ）は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクＦＤはケースＦ内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックＴｒが形成され、各トラックは角度方向に１６のセクタＳｅに分割されている。従って、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクＦＤ上に割り当てられた領域に、上記プログラムとしての画像符号化方法および画像復号化方法が記録されている。
【０２６６】
また、図４９（ｃ）は、フレキシブルディスクＦＤに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクＦＤに記録する場合は、コンピュータシステムＣｓから上記プログラムとしての画像符号化方法および画像復号化方法をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記画像符号化方法および画像復号化方法をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
【０２６７】
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ＣＤ−ＲＯＭ、メモリカード、ＲＯＭカセット等、プログラムを記録できるものであれば同様に実施することができる。
【０２６８】
さらにここで、上記実施の形態で示した画像符号化方法や画像復号化方法の応用例とそれを用いたシステムを説明する。
【０２６９】
図５０は、コンテンツ配信サービスを実現するコンテンツ供給システムｅｘ１００の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ｅｘ１０７〜ｅｘ１１０が設置されている。
【０２７０】
このコンテンツ供給システムｅｘ１００は、例えば、インターネットｅｘ１０１にインターネットサービスプロバイダｅｘ１０２および電話網ｅｘ１０４、および基地局ｅｘ１０７〜ｅｘ１１０を介して、コンピュータｅｘ１１１、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）ｅｘ１１２、カメラｅｘ１１３、携帯電話ｅｘ１１４、カメラ付きの携帯電話ｅｘ１１５などの各機器が接続される。
【０２７１】
しかし、コンテンツ供給システムｅｘ１００は図５０のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ｅｘ１０７〜ｅｘ１１０を介さずに、各機器が電話網ｅｘ１０４に直接接続されてもよい。
【０２７２】
カメラｅｘ１１３はディジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、ＰＤＣ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）方式、ＣＤＭＡ（Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式、Ｗ−ＣＤＭＡ（Ｗｉｄｅｂａｎｄ−Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式、若しくはＧＳＭ（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）方式の携帯電話機、またはＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）等であり、いずれでも構わない。
【０２７３】
また、ストリーミングサーバｅｘ１０３は、カメラｅｘ１１３から基地局ｅｘ１０９、電話網ｅｘ１０４を通じて接続されており、カメラｅｘ１１３を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラｅｘ１１３で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラｅｘ１１６で撮影した動画データはコンピュータｅｘ１１１を介してストリーミングサーバｅｘ１０３に送信されてもよい。カメラｅｘ１１６はディジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラｅｘ１１６で行ってもコンピュータｅｘ１１１で行ってもどちらでもよい。また、符号化処理はコンピュータｅｘ１１１やカメラｅｘ１１６が有するＬＳＩｅｘ１１７において処理することになる。なお、画像符号化・復号化用のソフトウェアをコンピュータｅｘ１１１等で読み取り可能な記録媒体である何らかの蓄積メディア（ＣＤ−ＲＯＭ、フレキシブルディスク、ハードディスクなど）に組み込んでもよい。さらに、カメラ付きの携帯電話ｅｘ１１５で動画データを送信してもよい。このときの動画データは携帯電話ｅｘ１１５が有するＬＳＩで符号化処理されたデータである。
【０２７４】
このコンテンツ供給システムｅｘ１００では、ユーザがカメラｅｘ１１３、カメラｅｘ１１６等で撮影しているコンテンツ（例えば、音楽ライブを撮影した映像等）を上記実施の形態同様に符号化処理してストリーミングサーバｅｘ１０３に送信する一方で、ストリーミングサーバｅｘ１０３は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータｅｘ１１１、ＰＤＡｅｘ１１２、カメラｅｘ１１３、携帯電話ｅｘ１１４等がある。このようにすることでコンテンツ供給システムｅｘ１００は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
【０２７５】
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画像符号化装置あるいは画像復号化装置を用いるようにすればよい。
【０２７６】
その一例として携帯電話について説明する。
【０２７７】
図５１は、上記実施の形態で説明した画像符号化方法と画像復号化方法を用いた携帯電話ｅｘ１１５を示す図である。携帯電話ｅｘ１１５は、基地局ｅｘ１１０との間で電波を送受信するためのアンテナｅｘ２０１、ＣＣＤカメラ等の映像、静止画を撮ることが可能なカメラ部ｅｘ２０３、カメラ部ｅｘ２０３で撮影した映像、アンテナｅｘ２０１で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ｅｘ２０２、操作キーｅｘ２０４群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ｅｘ２０８、音声入力をするためのマイク等の音声入力部ｅｘ２０５、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアｅｘ２０７、携帯電話ｅｘ１１５に記録メディアｅｘ２０７を装着可能とするためのスロット部ｅｘ２０６を有している。記録メディアｅｘ２０７はＳＤカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）の一種であるフラッシュメモリ素子を格納したものである。
【０２７８】
さらに、携帯電話ｅｘ１１５について図５２を用いて説明する。携帯電話ｅｘ１１５は表示部ｅｘ２０２及び操作キーｅｘ２０４を備えた本体部の各部を統括的に制御するようになされた主制御部ｅｘ３１１に対して、電源回路部ｅｘ３１０、操作入力制御部ｅｘ３０４、画像符号化部ｅｘ３１２、カメラインターフェース部ｅｘ３０３、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）制御部ｅｘ３０２、画像復号化部ｅｘ３０９、多重分離部ｅｘ３０８、記録再生部ｅｘ３０７、変復調回路部ｅｘ３０６及び音声処理部ｅｘ３０５が同期バスｅｘ３１３を介して互いに接続されている。
【０２７９】
電源回路部ｅｘ３１０は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ｅｘ１１５を動作可能な状態に起動する。
【０２８０】
携帯電話ｅｘ１１５は、ＣＰＵ、ＲＯＭ及びＲＡＭ等でなる主制御部ｅｘ３１１の制御に基づいて、音声通話モード時に音声入力部ｅｘ２０５で集音した音声信号を音声処理部ｅｘ３０５によってディジタル音声データに変換し、これを変復調回路部ｅｘ３０６でスペクトラム拡散処理し、送受信回路部ｅｘ３０１でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナｅｘ２０１を介して送信する。また携帯電話機ｅｘ１１５は、音声通話モード時にアンテナｅｘ２０１で受信した受信データを増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ｅｘ３０６でスペクトラム逆拡散処理し、音声処理部ｅｘ３０５によってアナログ音声データに変換した後、これを音声出力部ｅｘ２０８を介して出力する。
【０２８１】
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーｅｘ２０４の操作によって入力された電子メールのテキストデータは操作入力制御部ｅｘ３０４を介して主制御部ｅｘ３１１に送出される。主制御部ｅｘ３１１は、テキストデータを変復調回路部ｅｘ３０６でスペクトラム拡散処理し、送受信回路部ｅｘ３０１でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナｅｘ２０１を介して基地局ｅｘ１１０へ送信する。
【０２８２】
データ通信モード時に画像データを送信する場合、カメラ部ｅｘ２０３で撮像された画像データをカメラインターフェース部ｅｘ３０３を介して画像符号化部ｅｘ３１２に供給する。また、画像データを送信しない場合には、カメラ部ｅｘ２０３で撮像した画像データをカメラインターフェース部ｅｘ３０３及びＬＣＤ制御部ｅｘ３０２を介して表示部ｅｘ２０２に直接表示することも可能である。
【０２８３】
画像符号化部ｅｘ３１２は、本願発明で説明した画像符号化装置を備えた構成であり、カメラ部ｅｘ２０３から供給された画像データを上記実施の形態で示した画像符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ｅｘ３０８に送出する。また、このとき同時に携帯電話機ｅｘ１１５は、カメラ部ｅｘ２０３で撮像中に音声入力部ｅｘ２０５で集音した音声を音声処理部ｅｘ３０５を介してディジタルの音声データとして多重分離部ｅｘ３０８に送出する。
【０２８４】
多重分離部ｅｘ３０８は、画像符号化部ｅｘ３１２から供給された符号化画像データと音声処理部ｅｘ３０５から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ｅｘ３０６でスペクトラム拡散処理し、送受信回路部ｅｘ３０１でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナｅｘ２０１を介して送信する。
【０２８５】
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナｅｘ２０１を介して基地局ｅｘ１１０から受信した受信データを変復調回路部ｅｘ３０６でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ｅｘ３０８に送出する。
【０２８６】
また、アンテナｅｘ２０１を介して受信された多重化データを復号化するには、多重分離部ｅｘ３０８は、多重化データを分離することにより画像データのビットストリームと音声データのビットストリームとに分け、同期バスｅｘ３１３を介して当該符号化画像データを画像復号化部ｅｘ３０９に供給すると共に当該音声データを音声処理部ｅｘ３０５に供給する。
【０２８７】
次に、画像復号化部ｅｘ３０９は、本願発明で説明した画像復号化装置を備えた構成であり、画像データのビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号することにより再生動画像データを生成し、これをＬＣＤ制御部ｅｘ３０２を介して表示部ｅｘ２０２に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ｅｘ３０５は、音声データをアナログ音声データに変換した後、これを音声出力部ｅｘ２０８に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
【０２８８】
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図５３に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局ｅｘ４０９では映像情報のビットストリームが電波を介して通信または放送衛星ｅｘ４１０に伝送される。これを受けた放送衛星ｅｘ４１０は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナｅｘ４０６で受信し、テレビ（受信機）ｅｘ４０１またはセットトップボックス（ＳＴＢ）ｅｘ４０７などの装置によりビットストリームを復号化してこれを再生する。また、記録媒体であるＣＤやＤＶＤ等の蓄積メディアｅｘ４０２に記録したビットストリームを読み取り、復号化する再生装置ｅｘ４０３にも上記実施の形態で示した画像復号化装置を実装することが可能である。この場合、再生された映像信号はモニタｅｘ４０４に表示される。また、ケーブルテレビ用のケーブルｅｘ４０５または衛星／地上波放送のアンテナｅｘ４０６に接続されたセットトップボックスｅｘ４０７内に画像復号化装置を実装し、これをテレビのモニタｅｘ４０８で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画像復号化装置を組み込んでも良い。また、アンテナｅｘ４１１を有する車ｅｘ４１２で衛星ｅｘ４１０からまたは基地局ｅｘ１０７等から信号を受信し、車ｅｘ４１２が有するカーナビゲーションｅｘ４１３等の表示装置に動画を再生することも可能である。
【０２８９】
更に、画像信号を上記実施の形態で示した画像符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、ＤＶＤディスクｅｘ４２１に画像信号を記録するＤＶＤレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダｅｘ４２０がある。更にＳＤカードｅｘ４２２に記録することもできる。レコーダｅｘ４２０が上記実施の形態で示した画像復号化装置を備えていれば、ＤＶＤディスクｅｘ４２１やＳＤカードｅｘ４２２に記録した画像信号を再生し、モニタｅｘ４０８で表示することができる。
【０２９０】
なお、カーナビゲーションｅｘ４１３の構成は例えば図５２に示す構成のうち、カメラ部ｅｘ２０３とカメラインターフェース部ｅｘ３０３、画像符号化部ｅｘ３１２を除いた構成が考えられ、同様なことがコンピュータｅｘ１１１やテレビ（受信機）ｅｘ４０１等でも考えられる。
【０２９１】
また、上記携帯電話ｅｘ１１４等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の３通りの実装形式が考えられる。
【０２９２】
このように、上記実施の形態で示した動画像符号化方法あるいは動画像復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
【０２９３】
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
【０２９４】
本発明に係る画像符号化装置は、通信機能を備えるパーソナルコンピュータ、ＰＤＡ、ディジタル放送の放送局および携帯電話機などに備えられる画像符号化装置として有用である。
【０２９５】
また、本発明に係る画像復号化装置は、通信機能を備えるパーソナルコンピュータ、ＰＤＡ、ディジタル放送を受信するＳＴＢおよび携帯電話機などに備えられる画像復号化装置として有用である。
【０２９６】
【発明の効果】
以上、本発明の動きベクトル計算方法によると、ピクチャ間予測符号化を行うブロックが符号化済みの別のピクチャの同じ位置にあるブロックの動きベクトルを参照して動き補償を行う際に、動きベクトルを参照されるブロックが複数の動きベクトルを有していた場合、前記複数の動きベクトルからスケーリングに用いるための１つの動きベクトルを生成することによって、前記動き補償を矛盾無く実現することを可能とする。また、動きベクトルのスケーリング時に除算演算が行われるが、除算結果が予め定められた動きベクトルの精度と一致するように演算を施すことが可能となる。
【図面の簡単な説明】
【図１】ピクチャ番号と参照インデックスの説明図である。
【図２】従来の画像符号化装置による画像符号化信号フォーマットの概念を示す図である。
【図３】本発明の実施の形態１および実施の形態２による符号化の動作を説明するためのブロック図である。
【図４】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図５】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図６】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図７】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図８】本発明の実施の形態５および実施の形態６による復号化の動作を説明するためのブロック図である。
【図９】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１０】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１１】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１２】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１３】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１４】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１５】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１６】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１７】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１８】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する２つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図１９】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する１つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図２０】直接モードにおいて周辺ブロックの動きベクトルを参照する場合の動作を説明するための模式図である。
【図２１】符号化列を示す図である。
【図２２】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図２３】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２４】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２５】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２６】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２７】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２８】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図２９】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図３０】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図３１】直接モードにおいて使用する動きベクトルを決定する手順を示す図である。
【図３２】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図３３】参照インデックスの値によって符号化対象ブロックの動きベクトルを決定する手順を示す図である。
【図３４】長時間メモリに保存されているピクチャを参照する動きベクトルが１つだけの場合の直接モードにおける２方向予測を示す図である。
【図３５】長時間メモリに保存されているピクチャを参照する動きベクトルが２つある場合の直接モードにおける２方向予測を示す図である。
【図３６】動きベクトル計算方法の処理の流れを示す図である。
【図３７】本発明の実施形態１１に係る動画像符号化装置１１００の構成を示すブロック図である。
【図３８】（ａ）動画像符号化装置１１００に時間順にピクチャ単位で入力されるフレームの順序を示す図である。
（ｂ）図３８（ａ）に示したフレームの並びを符号化の順に並び替えた場合の順序を示す図である。
【図３９】第１の実施の形態を説明するための、参照ピクチャリストの構造を示す図である。
【図４０】（ａ）フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。
（ｂ）符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
（ｃ）符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
【図４１】フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。
【図４２】図４０に示したステップＳ３０２における、より詳細な処理手順を示すフローチャートである。
【図４３】参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【図４４】図４０に示したステップＳ３０３における、より詳細な処理手順を示すフローチャートである。
【図４５】第１の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図４６】第１の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図４７】符号列生成部１１０４によって生成される符号列７００のデータ構成の一例を示す図である。
【図４８】図４７に示した符号列７００を復号化する動画像復号化装置１８００の構成を示すブロック図である。
【図４９】（ａ）記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示す図である。
（ｂ）フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示す図である。
（ｃ）フレキシブルディスクＦＤに上記プログラムの記録再生を行うための構成を示す図である。
【図５０】コンテンツ配信サービスを実現するコンテンツ供給システムの全体構成を示すブロック図である。
【図５１】携帯電話の外観の一例を示す図である。
【図５２】携帯電話の構成を示すブロック図である。
【図５３】上記実施の形態で示した符号化処理または復号化処理を行う機器、およびこの機器を用いたシステムを説明する図である。
【図５４】従来例のピクチャの参照関係を説明するための模式図である。
【図５５】従来例の直接モードの動作を説明するための模式図である。
【図５６】（ａ）従来の直接モードの空間的予測方法を用い、Ｂピクチャにおいて時間的前方ピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。
（ｂ）各符号化対象ピクチャに作成される参照ピクチャリストの一例を示す図である。
【符号の説明】
１０１、１０５    フレームメモリ
１０２            予測残差符号化部
１０３            符号化列生成部
１０４            予測残差復号化部
１０６            動きベクトル検出部
１０７            モード選択部
１０８            動きベクトル記憶部
１０９            差分演算部
１１０            加算演算部
１１１、１１２    スイッチ
６０１            符号列解析部
６０２            予測残差復号化部
６０３            フレームメモリ
６０４            動き補償復号部
６０５            動きベクトル記憶部
６０６            加算演算部
６０７            スイッチ
６０８            予測モード／動きベクトル復号化部
【図１】
2004208258.tif 000003
【図２】
2004208258.tif 000004
【図３】
2004208258.tif 000005
【図４】
2004208258.tif 000006
【図５】
2004208258.tif 000007
【図６】
2004208258.tif 000008
【図７】
2004208258.tif 000009
【図８】
2004208258.tif 000010
【図９】
2004208258.tif 000011
【図１０】
2004208258.tif 000012
【図１１】
2004208258.tif 000013
【図１２】
2004208258.tif 000014
【図１３】
2004208258.tif 000015
【図１４】
2004208258.tif 000016
【図１５】
2004208258.tif 000017
【図１６】
2004208258.tif 000018
【図１７】
2004208258.tif 000019
【図１８】
2004208258.tif 000020
【図１９】
2004208258.tif 000021
【図２０】
2004208258.tif 000022
【図２１】
2004208258.tif 000023
【図２２】
2004208258.tif 000024
【図２３】
2004208258.tif 000025
【図２４】
2004208258.tif 000026
【図２５】
2004208258.tif 000027
【図２６】
2004208258.tif 000028
【図２７】
2004208258.tif 000029
【図２８】
2004208258.tif 000030
【図２９】
2004208258.tif 000031
【図３０】
2004208258.tif 000032
【図３１】
2004208258.tif 000033
【図３２】
2004208258.tif 000034
【図３３】
2004208258.tif 000035
【図３４】
2004208258.tif 000036
【図３５】
2004208258.tif 000037
【図３６】
2004208258.tif 000038
【図３７】
2004208258.tif 000039
【図３８】
2004208258.tif 000040
【図３９】
2004208258.tif 000041
【図４０】
2004208258.tif 000042
【図４１】
2004208258.tif 000043
【図４２】
2004208258.tif 000044
【図４３】
2004208258.tif 000045
【図４４】
2004208258.tif 000046
【図４５】
2004208258.tif 000047
【図４６】
2004208258.tif 000048
【図４７】
2004208258.tif 000049
【図４８】
2004208258.tif 000050
【図４９】
2004208258.tif 000051
【図５０】
2004208258.tif 000052
【図５１】
2004208258.tif 000053
【図５２】
2004208258.tif 000054
【図５３】
2004208258.tif 000055
【図５４】
2004208258.tif 000056
【図５５】
2004208258.tif 000057
【図５６】
2004208258.tif 000058