JP2004208258A - 動きベクトル計算方法 - Google Patents
動きベクトル計算方法 Download PDFInfo
- Publication number
- JP2004208258A JP2004208258A JP2003112221A JP2003112221A JP2004208258A JP 2004208258 A JP2004208258 A JP 2004208258A JP 2003112221 A JP2003112221 A JP 2003112221A JP 2003112221 A JP2003112221 A JP 2003112221A JP 2004208258 A JP2004208258 A JP 2004208258A
- Authority
- JP
- Japan
- Prior art keywords
- motion vector
- picture
- block
- motion
- pictures
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける精度の良い時間方向および空間方向の動きベクトル予測方法を提供する。
【解決手段】直接モードにおいて動きベクトルを参照されるブロックMB22が複数の動きベクトルを有していた場合に、前記複数の動きベクトルの平均もしくはどちらか一方をとることによって得られる値に対してスケーリングを施すことにより、符号化対象のピクチャP23のピクチャ間予測に用いる2つの動きベクトルMV23および動きベクトルMV24を決定する。
【選択図】 図4
【解決手段】直接モードにおいて動きベクトルを参照されるブロックMB22が複数の動きベクトルを有していた場合に、前記複数の動きベクトルの平均もしくはどちらか一方をとることによって得られる値に対してスケーリングを施すことにより、符号化対象のピクチャP23のピクチャ間予測に用いる2つの動きベクトルMV23および動きベクトルMV24を決定する。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は、動画像の符号化方法および復号化方法に関するものであり、特に既に符号化済みの表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照して予測符号化を行う方法に関するものである。
【0002】
【従来の技術】
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで時間的な冗長性の削減を目的とするピクチャ間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および動き補償を行い、得られた予測画像と現在のピクチャとの差分値に対して符号化を行う。
【0003】
現在標準化中の動画像符号化方法であるH.26Lでは、ピクチャ内予測符号化をのみを行うピクチャ(Iピクチャ)、および1枚のピクチャを参照してピクチャ間予測符号化を行うピクチャ(以下、Pピクチャ)、さらに表示時間順で前方にある2枚のピクチャもしくは表示時間順で後方にある2枚のピクチャもしくは表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照してピクチャ間予測符号化を行うピクチャ(以下、Bピクチャ)が提案されている。
【0004】
図54は上記の動画像符号化方法における各ピクチャと、それによって参照されるピクチャとの参照関係の例を示す図である。
【0005】
ピクチャI1は参照ピクチャを持たずピクチャ内予測符号化を行い、ピクチャP10は表示時間順で前方にあるP7を参照しピクチャ間予測符号化を行っている。また、ピクチャB6は表示時間順で前方にある2つのピクチャを参照し、ピクチャB12は表示時間順で後方にある2つのピクチャを参照し、ピクチャB18は表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行っている。
【0006】
表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行う2方向予測の1つの予測モードとして直接モードがある。直接モードでは符号化対象のブロックに直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し予測画像を作成する。
【0007】
図55は直接モードにおいて動きベクトルを決定するために参照した符号化済みのピクチャが、表示時間順で前方にある1枚のピクチャのみを参照する動きベクトルを持っていた場合の例を示したものである。同図において、垂直方向の線分で示す「P」はピクチャタイプとは関係なく、単なるピクチャを示している。同図では、例えば、ピクチャP83が現在符号化の対象とされているピクチャでありピクチャP82およびピクチャP84を参照ピクチャとして2方向予測を行う。このピクチャP83において符号化を行うブロックをブロックMB81とすると、ブロックMB81の動きベクトルは、符号化済みの後方参照ピクチャであるピクチャP84の同じ位置にあるブロックMB82の持つ動きベクトルを用いて決定される。このブロックMB82は動きベクトルとして動きベクトルMV81の1つだけを有するため、求める2つの動きベクトルMV82および動きベクトルMV83は式1(a)および(b)に基づいて直接、動きベクトルMV81および時間間隔TR81に対してスケーリングを適用することによって算出される。
【0008】
MV82=MV81/TR81×TR82 ‥‥式1(a)
MV83=−MV81/TR81×TR83 ‥‥式1(b)
なお、このとき時間間隔TR81はピクチャP84からピクチャP82まで、つまり、ピクチャP84から、動きベクトルMV81が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔TR82は、ピクチャP83から、動きベクトルMV82が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔TR83は、ピクチャP83から、動きベクトルMV83が指し示す参照ピクチャまでの時間の間隔を示している。
【0009】
また、直接モードには、すでに説明した時間的予測と、空間的予測との2つの方法があるが、以下では、空間的予測について説明する。直接モードの空間的予測では、例えば、16画素×16画素で構成されるマクロブロックを単位として符号化を行い、符号化対象マクロブロックの周辺3マクロブロックの動きベクトルのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照して求められた動きベクトルの1つを選択し、選択された動きベクトルを符号化対象マクロブロックの動きベクトルとする。3つの動きベクトルがすべて同じピクチャを参照している場合はそれらの中央値を選択する。3つのうち2つが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合には残りの1つを「0」ベクトルとみなして、それらの中央値を選択する。また、1つだけが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合にはその動きベクトルを選択する。このように直接モードでは、符号化対象のマクロブロックに対して動きベクトルを符号化せず、他のマクロブロックが有する動きベクトルを用いて動き予測を行う。
【0010】
図56(a)は、従来の直接モードの空間的予測方法を用い、Bピクチャにおいて表示時間順で前方のピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。同図において、PはPピクチャ、BはBピクチャを示し、右側4ピクチャのピクチャタイプに付されている数字は各ピクチャが符号化された順番を示している。ここでは、ピクチャB4において斜線を付したマクロブロックが符号化対象となっているものとする。符号化対象マクロブロックの動きベクトルを、直接モードの空間的予測方法を用いて計算する場合、まず、符号化対象マクロブロックの周辺から、3つの符号化済みのマクロブロック(破線部)を選択する。ここでは、周辺3マクロブロックの選択方法は説明を省略する。符号化済みの3マクロブロックの動きベクトルはすでに計算され保持されている。この動きベクトルは同一ピクチャ中のマクロブロックであっても、マクロブロックごとに異なるピクチャを参照して求められている場合がある。この周辺3マクロブロックが、それぞれどのピクチャを参照したかは、各マクロブロックを符号化する際に用いた参照ピクチャの参照インデックスによって知ることができる。参照インデックスについての詳細は後述する。
【0011】
さて、例えば、図56(a)に示した符号化対象マクロブロックに対して、周辺3マクロブロックが選択され、各符号化済みマクロブロックの動きベクトルがそれぞれ動きベクトルa、動きベクトルbおよび動きベクトルcであったとする。これにおいて、動きベクトルaと動きベクトルbとはピクチャ番号11が「11」のPピクチャを参照して求められ、動きベクトルcはピクチャ番号11が「8」のPピクチャを参照して求められていたとする。この場合、これらの動きベクトルa、bおよびcのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照した動きベクトルである動きベクトルa、bの2つが符号化対象マクロブロックの動きベクトルの候補となる。この場合、動きベクトルcを「0」とみなし、動きベクトルa、動きベクトルbおよび動きベクトルcの3つのうちの中央値を選択し、符号化対象マクロブロックの動きベクトルとする。
【0012】
ただし、MPEG‐4などの符号化方式では、ピクチャ内の各マクロブロックを、インタレースを行うフィールド構造で符号化してもよいし、インタレースを行わないフレーム構造で符号化を行ってもよい。従って、MPEG‐4などでは、参照フレーム1フレーム中には、フィールド構造で符号化されたマクロブロックと、フレーム構造で符号化されたマクロブロックとが混在する場合が生じる。このような場合でも、符号化対象マクロブロックの周辺3マクロブロックがいずれも符号化対象マクロブロックと同じ構造で符号化されていれば、前述の直接モードの空間的予測方法を用いて問題なく符号化対象マクロブロックの動きベクトルを1つ導出することができる。すなわち、フレーム構造で符号化される符号化対象マクロブロックに対して、周辺3マクロブロックもまたフレーム構造で符号化されている場合、または、フィールド構造で符号化される符号化対象マクロブロックに対して、周辺3マクロブロックもまたフィールド構造で符号化されている場合である。前者の場合は、すでに説明した通りである。また、後者の場合は、符号化対象マクロブロックのトップフィールドに対応しては、周辺3マクロブロックのトップフィールドに対応した3つの動きベクトルを用いることにより、また、符号化対象マクロブロックのボトムフィールドに対応しては、周辺3マクロブロックのボトムフィールドに対応した3つの動きベクトルを用いることにより、トップフィールドとボトムフィールドとのそれぞれについて、前述の方法で、符号化対象マクロブロックの動きベクトルを導出することができる。
【0013】
【非特許文献1】
MPEG−4ビジュアル規格書(1999年、ISO/IEC 14496−2:1999 Information technology −− Coding of audio−visual objects −− Part2: Visual
【0014】
【発明が解決しようとする課題】
しかしながら、直接モードの時間的予測の場合、ピクチャ間予測符号化を行うブロックが直接モードによって動き補償を行う際に、動きベクトルを参照されるブロックが図54のB6のようなBピクチャに属していたとき、前記ブロックは複数の動きベクトルを有するため式1に基づいたスケーリングによる動きベクトルの算出を直接適用することができないという問題が発生する。また、動きベクトルの算出後に除算演算を行うことから、動きベクトル値の精度(例えば1/2画素や1/4画素精度)が、予め定められた精度に一致しない場合が生じる。
【0015】
また、空間的予測の場合、符号化対象マクロブロックと周辺マクロブロックのいずれかが異なる構造で符号化されている場合、符号化対象マクロブロックをフィールド構造およびフレーム構造のいずれの構造で符号化するかは規定されておらず、また、フィールド構造で符号化されたものとフレーム構造で符号化されたものとが混在するような周辺マクロブロックの動きベクトルのうちから、符号化対象マクロブロックの動きベクトルを選択する方法も規定されていない。
【0016】
本発明の第1の目的は、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける精度の良い時間方向の動きベクトル予測方法を提供することである。
【0017】
また、本発明の第2の目的は、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける精度の良い空間方向の動きベクトル予測方法を提供することである。
【0018】
【課題を解決するための手段】
上記目的を達成するために本発明の動きベクトル計算方法は、複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照することができる参照ステップと、ピクチャ間予測を行うブロックが属するピクチャとは別のピクチャの前記ブロックと同じ位置にあるブロックの動きベクトルを参照して、前記ピクチャ間予測を行うブロックの動き補償を行う場合に、前記動きベクトルを参照されるブロックに対してすでに求められている動きベクトルのうち、所定の条件を満足する少なくとも1つの動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する動き補償ステップとを含む。従って、動きベクトルを参照されるブロックが、複数のピクチャを参照してピクチャ間予測を行うBピクチャに属するブロックである場合であっても、前記所定の条件に従って、動きベクトルを参照されるブロックが有する複数の動きベクトルのうちから、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき1つを決定し、スケーリングによる動きベクトルの算出を適用することができる。これにより、本発明の第1の目的を達成することができる。
【0019】
また、本発明の前記動きベクトル計算方法において、前記参照ステップでは、表示時間順で前方にあるピクチャを優先して識別番号を昇順で付与された第1のピクチャの並びと、表示時間順で後方にあるピクチャを優先して識別番号を昇順で付与された第2のピクチャの並びとから、それぞれ1つのピクチャを参照することができ、前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて前記第1の並びにあるピクチャを参照する動きベクトルを用いるとしてもよい。これにおいて、動きベクトルを参照されるブロックが前記Bピクチャに属するブロックである場合でも、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき1つを、前記第1の並びにあるピクチャを参照する動きベクトルに決定し、スケーリングによる動きベクトルの算出を適用することができる。従って、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い時間方向の動きベクトル予測方法を提供することができる。
【0020】
さらに、本発明の他の動きベクトル計算方法は、記憶部に格納されている複数の符号化済ピクチャから符号化対象ピクチャ上のブロックを動き補償により求めるときに参照する第1の参照ピクチャと第2の参照ピクチャのうち少なくとも一方の参照ピクチャを選択するときに用いる第1参照インデックスまたは第2参照インデックスを前記符号化済ピクチャに対して付与する付与ステップと、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第1参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第1選択ステップと、前記第1選択ステップで選択された動きベクトルを用いて前記符号化対象ピクチャより表示時間順で、前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出する導出ステップとを含む。従って、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第1参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを用いて、前記符号化対象ピクチャ上のブロックの動きベクトルを導出することができる。これにより、本発明の第2の目的を達成することができる。
【0021】
また、本発明の前記動きベクトル計算方法において、前記第1選択ステップでは、第1参照インデックスを有する動きベクトルのうち、さらに、第1参照インデックスの値が最小のものの中央値を示す動きベクトルを選択するとしてもよい。これにより、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い空間方向の動きベクトル予測方法を提供することができる。
【0022】
【発明の実施の形態】
本発明は従来の技術の問題点を解決するものであり、直接モードにおいて、動きベクトルを参照するブロックがBピクチャに属する場合でも矛盾無く動き補償に用いる動きベクトルを決定することを可能とする動画像の符号化方法および復号化方法を提案することを目的とする。ここで、まず参照インデックスについて説明する。
【0023】
図56(b)は、各符号化対象ピクチャに作成される参照ピクチャリスト10の一例を示す図である。図56(b)に示す参照ピクチャリスト10には、1つのBピクチャを中心として、時間的にその前後に表示され、そのBピクチャが参照可能な周辺ピクチャと、それらのピクチャタイプ、ピクチャ番号11、第1参照インデックス12および第2参照インデックス13が示されている。ピクチャ番号11は、例えば、各ピクチャが符号化された順序を示す番号である。第1参照インデックス12は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第1のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で前方のピクチャを参照する場合のインデックスとして用いられる。この第1参照インデックス12のリストは、「参照インデックスリスト0(list0)」または「第1参照インデックスリスト」と呼ばれる。また、参照インデックスは相対インデックスとも呼ばれる。図56(b)の参照ピクチャリスト10では、第1参照インデックス12の値には、まず、符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より「0」から「1」ずつ繰り上がる整数値が割り当てられる。符号化対象ピクチャより前の表示時刻を持つ参照ピクチャすべてに対して「0」から「1」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。
【0024】
第2参照インデックス13は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第2のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で後方のピクチャを参照する場合のインデックスとして用いられる。この第2参照インデックス13のリストは、「参照インデックスリスト1(list1)」または「第2参照インデックスリスト」と呼ばれる。第2参照インデックス13の値には、まず、符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より、「0」から「1」ずつ繰り上がる整数値が割り当てられる。符号化対象より後の表示時刻を持つ参照ピクチャすべてに対し「0」から「1」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。従って、この参照ピクチャリスト10をみれば、第1参照インデックス12、第2参照インデックス13は、参照インデックスの値が小さい参照ピクチャほど符号化対象ピクチャに表示時間順で近接していることがわかる。以上では、参照インデックスの初期状態での番号の割り当て方について説明したが、参照インデックスの番号の割り当て方はピクチャ単位やスライス単位で変更することが可能である。参照インデックスの番号の割り当て方は、例えば、表示時間順で離れたピクチャに対して小さい番号を割り当てることもできるが、そのような参照インデックスは、例えば、表示時間順で離れたピクチャを参照する方が、符号化効率が向上するような場合に用いられる。すなわち、ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられているので、参照することにより符号化効率が向上するピクチャに対して、より小さな参照インデックスを割り当てることにより、参照インデックスの符号量を減らし、さらに符号化効率の向上を行うものである。
【0025】
図1はピクチャ番号と参照インデックスの説明図である。図1は参照ピクチャリストの例を示しており、中央のBピクチャ(破線のもの)を符号化する際に用いる参照ピクチャおよびそのピクチャ番号と参照インデックスを示したものである。図1(A)は、図56を用いて説明した、初期状態での参照インデックスの割り当て方により、参照インデックスを割り当てた場合を示している。
【0026】
図2は従来の画像符号化装置による画像符号化信号フォーマットの概念図である。Pictureは1ピクチャ分の符号化信号、Headerはピクチャ先頭に含まれるヘッダ符号化信号、Block1は直接モードによるブロックの符号化信号、Block2は直接モード以外の補間予測によるブロックの符号化信号、Ridx0,Ridx1はそれぞれ第1参照インデックスと第2参照インデックス、MV0,MV1はそれぞれ第1動きベクトルと第2動きベクトルを示す。符号化ブロックBlock2では、補間に使用する2つの参照ピクチャを示すため2つの参照インデックスRidx0,Ridx1を符号化信号中にこの順で有する。また、符号化ブロックBlock2の第1動きベクトルMV0と、第2動きベクトルMV1とは符号化ブロックBlock2の符号化信号内にこの順で符号化される。参照インデックスRidx0,Ridx1のいずれを使用するかはPredTypeにより判断することができる。また、第1動きベクトルMV0が参照するピクチャ(第1参照ピクチャ)を第1参照インデックスRidx0で示し、第2動きベクトルMV1が参照するピクチャ(第2参照ピクチャ)を第2参照インデックスRidx1で示す。例えば、動きベクトルMV0とMV1の2方向でピクチャを参照することが示される場合はRidx0とRidx1が用いられ、動きベクトルMV0またはMV1のいずれか1方向でピクチャを参照することが示される場合は、その動きベクトルに応じた参照インデックスであるRidx0またはRidx1が用いられ、直接モードが示されている場合はRidx0、Ridx1ともに用いられない。第1参照ピクチャは、第1参照インデックスにより指定され、一般的には符号化対象ピクチャより前の表示時刻を持つピクチャであり、第2参照ピクチャは、第2参照インデックスにより指定され、一般的には符号化対象ピクチャより後の表示時刻を持つピクチャである。ただし、図1の参照インデックスの付与方法例からわかるように、第1参照ピクチャが符号化対象ピクチャより後の表示時刻を持つピクチャであり、第2参照ピクチャが符号化対象ピクチャより前の表示時刻を持つピクチャである場合もある。第1参照インデックスRidx0は、ブロックBlock2の第1動きベクトルMV0が参照した第1参照ピクチャを示す参照インデックスであり、第2参照インデックスRidx1は、ブロックBlock2の第2動きベクトルMV1が参照した第2参照ピクチャを示す参照インデックスである。
【0027】
一方、符号化信号中のバッファ制御信号(図2 Header内のRPSL)を用いて明示的に指示することにより、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができる。この割り当ての変更により、第2参照インデックスが「0」の参照ピクチャを任意の参照ピクチャにすることも可能で、例えば、図1(B)に示すようにピクチャ番号に対する参照インデックスの割り当てを変更することができる。
【0028】
このように、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができるため、また、この参照インデックスに対する参照ピクチャの割り当ての変更は、通常、参照ピクチャとして選択することにより符号化効率が高くなるピクチャに対してより小さい参照インデックスを割り当てるため、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとすると符号化効率を高めることができる。
【0029】
(実施の形態1)
本発明の実施の形態1の動画像符号化方法を図3に示したブロック図を用いて説明する。
【0030】
符号化対象となる動画像は時間順にピクチャ単位でフレームメモリ101に入力され、さらに符号化が行われる順に並び替えられる。各々のピクチャはブロックと呼ばれる、例えば水平16×垂直16画素のグループに分割され、ブロック単位で以降の処理が行われる。
【0031】
フレームメモリ101から読み出されたブロックは動きベクトル検出部106に入力される。ここではフレームメモリ105に蓄積されている符号化済みのピクチャを復号化した画像を参照ピクチャとして用いて、符号化対象としているブロックの動きベクトル検出を行う。このときモード選択部107では、動きベクトル検出部106で得られた動きベクトルや、動きベクトル記憶部108に記憶されている符号化済みのピクチャで用いた動きベクトルを参照しつつ、最適な予測モードを決定する。モード選択部107で得られた予測モードとその予測モードで用いる動きベクトルによって決定された予測画像が差分演算部109に入力され、符号化対象のブロックとの差分をとることにより予測残差画像が生成され、予測残差符号化部102において符号化が行われる。また、モード選択部107で得られた予測モードで用いる動きベクトルは、後のブロックやピクチャの符号化で利用するために、動きベクトル記憶部108に記憶される。以上の処理の流れは、ピクチャ間予測符号化が選択された場合の動作であったが、スイッチ111によってピクチャ内予測符号化との切り替えがなされる。最後に、符号列生成部103によって、動きベクトル等の制御情報および予測残差符号化部102から出力される画像情報等に対し、可変長符号化を施し最終的に出力される符号列が生成される。
【0032】
以上符号化の流れの概要を示したが、動きベクトル検出部106およびモード選択部107における処理の詳細について以下で説明する。
【0033】
動きベクトルの検出は、ブロックごともしくはブロックを分割した領域ごとに行われる。符号化の対象としている画像に対して表示時間順で前方および後方に位置する符号化済みのピクチャを参照ピクチャとし、そのピクチャ内の探索領域において最適と予測される位置を示す動きベクトルおよび予測モードを決定することにより予測画像を作成する。
【0034】
表示時間順で前方および後方にある2枚のピクチャを参照し、ピクチャ間予測符号化を行う2方向予測の1つとして、直接モードがある。直接モードでは符号化対象のブロックに、直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し、予測画像を作成する。
【0035】
図4は、直接モードにおいて動きベクトルを決定するために参照した符号化済みのブロックが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在符号化の対象としているピクチャであり、ピクチャP22およびピクチャP24を参照ピクチャとして2方向予測を行うものである。符号化を行うブロックをブロックMB21とすると、このとき必要とされる2つの動きベクトルは符号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP24の同じ位置にあるブロックMB22の持つ動きベクトルを用いて決定される。このブロックMB22は動きベクトルとして動きベクトルMV21および動きベクトルMV22の2つを有するため、求める2つの動きベクトルMV23および動きベクトルMV24を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式2のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB22の持つ2つの動きベクトルの平均値から算出し、その時の時間間隔TR_REFを同様に平均値から算出する。そして、式3に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV23および動きベクトルMV24を算出する。このとき時間間隔TR21はピクチャP24からピクチャP21まで、つまり動きベクトルMV21が参照するピクチャまでの時間の間隔を示し、時間間隔TR22は動きベクトルMV22が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR23は動きベクトルMV23が参照するピクチャまでの時間の間隔を示し、時間間隔TR24は動きベクトルMV24が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図4の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0036】
MV_REF=(MV21+MV22)/2 ‥‥式2(a)
TR_REF=(TR21+TR22)/2 ‥‥式2(b)
MV23=MV_REF/TR_REF×TR23 ‥‥式3(a)
MV24=−MV_REF/TR_REF×TR24 ‥‥式3(b)
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV21と動きベクトルMV22との平均値および時間間隔TR21と時間間隔TR22との平均値をとる方法として、式2の替わりに式4を用いることも可能である。まず、式4(a)のように動きベクトルMV21に対して時間間隔が動きベクトルMV22と同じになるようにスケーリングを施し動きベクトルMV21’を算出する。そして動きベクトルMV21’と動きベクトルMV22との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR22をそのまま用いることになる。なお、動きベクトルMV21に対してスケーリングを施して動きベクトルMV21’とする替わりに動きベクトルMV22に対してスケーリングを施して動きベクトルMV22’とする場合も同様に扱うことが可能である。
【0037】
MV21’=MV21/TR21×TR22 ‥‥式4(a)
MV_REF=(MV21’+MV22)/2 ‥‥式4(b)
TR_REF=TR22 ‥‥式4(c)
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、式5のように動きベクトルを参照するピクチャP24に対する時間間隔の短い方のピクチャP22を参照する動きベクトルMV22および時間間隔TR22を直接用いることも可能である。同様に、式6のように時間間隔の長い方のピクチャP21を参照する動きベクトルMV21および時間間隔TR21を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0038】
MV_REF=MV22 ‥‥式5(a)
TR_REF=TR22 ‥‥式5(b)
MV_REF=MV21 ‥‥式6(a)
TR_REF=TR21 ‥‥式6(b)
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図5(a)は図4と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図5(b)では図3のフレームメモリ101において符号化される順番に並び替えられた一例を示している。なお、ピクチャP23が直接モードによって符号化を行うピクチャ、ピクチャP24がそのときに動きベクトルを参照されるピクチャを示している。図5(b)のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式5のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV22および時間間隔TR22が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式6のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV21および時間間隔TR21が直接適用される。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0039】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0040】
なお、式2(a)または式4(b)において、動きベクトルMV_REFを計算する際には、式2(a)または式4(b)の右辺を計算した後、所定の動きベクトルの精度(例えば、1/2画素精度の動きベクトルであれば、0.5画素単位の値)に丸めても良い。動きベクトルの精度としては、1/2画素精度に限るものではない。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式3(a)、式3(b)、式4(a)において、動きベクトルMV23、動きベクトルMV24、動きベクトルMV21’を計算する際には、式3(a)、式3(b)、式4(a)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【0041】
(実施の形態2)
図3に基づいた符号化処理の概要は実施の形態1と全く同等である。ここでは直接モードにおける2方向予測の動作について図6を用いてその詳細を説明する。
【0042】
図6は直接モードにおいて動きベクトルを決定するために参照したブロックが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP43が現在符号化の対象としているピクチャでありピクチャP42およびピクチャP44を参照ピクチャとして2方向予測を行うものである。符号化を行うブロックをブロックMB41とすると、このとき必要とされる2つの動きベクトルは符号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP44の同じ位置にあるブロックMB42の持つ動きベクトルを用いて決定される。このブロックMB42は動きベクトルとして動きベクトルMV45および動きベクトルMV46の2つを有するため、求める2つの動きベクトルMV43および動きベクトルMV44を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式7のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB42の持つ2つの動きベクトルの平均値から決定し、その時の時間間隔TR_REFを同様に平均値から決定する。そして、式8に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV43および動きベクトルMV44を算出する。このとき時間間隔TR45はピクチャP44からピクチャP45まで、つまり動きベクトルMV45が参照するピクチャまでの時間の間隔を示し、時間間隔TR46は動きベクトルMV46が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR43は動きベクトルMV43が参照するピクチャまでの時間の間隔を示し、時間間隔TR44は時間間隔MV44が参照するピクチャまでの時間の間隔を示すものである。これらのピクチャ間の時間間隔は、実施の形態1で説明したのと同様に、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図6の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0043】
MV_REF=(MV45+MV46)/2 ‥‥式7(a)
TR_REF=(TR45+TR46)/2 ‥‥式7(b)
MV43=−MV_REF/TR_REF×TR43 ‥‥式8(a)
MV44=MV_REF/TR_REF×TR44 ‥‥式8(b)
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
【0044】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV45と動きベクトルMV46との平均値および時間間隔TR45と時間間隔TR46との平均値をとる方法として、式7の替わりに式9を用いることも可能である。まず、式9(a)のように動きベクトルMV46に対して時間間隔が動きベクトルMV45と同じになるようにスケーリングを施し動きベクトルMV46’を算出する。そして動きベクトルMV46’と動きベクトルMV45との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR41をそのまま用いることになる。なお、動きベクトルMV46に対してスケーリングを施して動きベクトルMV46’とする替わりに動きベクトルMV45に対してスケーリングを施して動きベクトルMV45’とする場合も同様に扱うことが可能である。
【0045】
MV46’=MV46/TR46×TR45 ‥‥式9(a)
MV_REF=(MV46’+MV45)/2 ‥‥式9(b)
TR_REF=TR45 ‥‥式9(c)
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、式10のように動きベクトルを参照するピクチャP44に対して時間間隔の短い方のピクチャP45を参照する動きベクトルMV45および時間間隔TR45を直接用いることも可能である。同様に、式11のように時間間隔の長い方のピクチャP46を参照する動きベクトルMV46および時間間隔TR46を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0046】
MV_REF=MV45 ‥‥式10(a)
TR_REF=TR45 ‥‥式10(b)
MV_REF=MV46 ‥‥式11(a)
TR_REF=TR46 ‥‥式11(b)
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図7(a)は図6と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図7(b)では図3のフレームメモリ101において符号化される順番に並び替えられた一例を示している。なお、ピクチャP43が直接モードによって符号化を行うピクチャ、ピクチャP44がそのときに動きベクトルを参照されるピクチャを示している。図7(b)のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式11のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV46および時間間隔TR46が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式10のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV45および時間間隔TR45が直接適用される。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0047】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、求める2つの動きベクトルMV43および動きベクトルMV44を「0」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【0048】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、動きベクトルの参照を禁止し、直接モード以外の予測符号化のみを適用させることも可能である。図6のピクチャP44のように表示時間順で後方にある2枚のピクチャを参照する場合は、表示時間順で前方にあるピクチャとの相関が低い可能性が考えられるため、直接モードを禁止し別の予測方法を選択することにより、より正確な予測画像を生成することが可能となる。
【0049】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0050】
なお、式7(a)、式9(b)において、動きベクトルMV_REFを計算する際には、式7(a)、式9(b)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式8(a)、式8(b)、式9(a)において、動きベクトルMV43、動きベクトルMV44、動きベクトルMV46’を計算する際には、式8(a)、式8(b)、式9(a)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【0051】
(実施の形態3)
本発明の実施の形態3の動画像復号化方法を図8に示したブロック図を用いて説明する。ただし、実施の形態1の動画像符号化方法で生成された符号列が入力されるものとする。
【0052】
まず入力された符号列から符号列解析器601によって予測モード、動きベクトル情報および予測残差符号化データ等の各種の情報が抽出される。
【0053】
予測モードや動きベクトル情報は予測モード/動きベクトル復号化部608に対して出力され、予測残差符号化データは予測残差復号化部602に出力される。予測モード/動きベクトル復号化部608では、予測モードの復号化と、その予測モードで用いる動きベクトルの復号化とを行う。動きベクトルの復号化の際には、動きベクトル記憶部605に記憶されている復号化済みの動きベクトルを利用する。復号化された予測モードおよび動きベクトルは、動き補償復号部604に対して出力される。また、復号化された動きベクトルは、後のブロックの動きベクトルの復号化で利用するために、動きベクトル記憶部605に記憶される。動き補償復号部604ではフレームメモリ603に蓄積されている復号化済みのピクチャの復号化画像を参照ピクチャとし、入力された予測モードや動きベクトル情報に基づいて予測画像を生成する。このようにして生成された予測画像は加算演算部606に入力され、予測残差復号化部602において生成された予測残差画像との加算を行うことにより復号化画像が生成される。以上の実施の形態はピクチャ間予測符号化がなされている符号列に対する動作であったが、スイッチ607によってピクチャ内予測符号化がなされている符号列に対する復号化処理との切り替えがなされる。
【0054】
以上復号化の流れの概要を示したが、動き補償復号部604における処理の詳細について以下で説明する。
【0055】
動きベクトル情報はブロックごともしくはブロックを分割した領域ごとに付加されている。復号化の対象としているピクチャに対して表示時間順で前方および後方に位置する復号化済みのピクチャを参照ピクチャとし、復号化された動きベクトルによってそのピクチャ内から動き補償を行うための予測画像を作成する。
【0056】
表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行う2方向予測の1つとして直接モードがある。直接モードでは復号化対象のブロックが動きベクトルを直接持たない符号列を入力とするため、表示時間順で近傍にある復号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し予測画像を作成する。
【0057】
図4は直接モードにおいて動きベクトルを決定するために参照した復号化済みのピクチャが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在復号化の対象としているピクチャであり、ピクチャP22およびピクチャP24を参照ピクチャとして2方向予測を行うものである。復号化を行うブロックをブロックMB21とすると、このとき必要とされる2つの動きベクトルは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP24の同じ位置にあるブロックMB22の持つ動きベクトルを用いて決定される。このブロックMB22は動きベクトルとして動きベクトルMV21および動きベクトルMV22の2つを有するため、求める2つの動きベクトルMV23および動きベクトルMV24を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式2のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB22の持つ2つの動きベクトルの平均値から算出し、その時の時間間隔TR_REFを同様に平均値から算出する。そして、式3に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV23および動きベクトルMV24を算出する。このとき時間間隔TR21はピクチャP24からピクチャP21まで、つまり動きベクトルMV21が参照するピクチャまでの時間の間隔を示し、時間間隔TR22は動きベクトルMV22が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR23は動きベクトルMV23が参照するピクチャまでの時間の間隔を示し、時間間隔TR24は動きベクトルMV24が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図4の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0058】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【0059】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV21と動きベクトルMV22との平均値および時間間隔TR21と時間間隔TR22との平均値をとる方法として、式2の替わりに式4を用いることも可能である。まず、式4(a)のように動きベクトルMV21に対して時間間隔が動きベクトルMV22と同じになるようにスケーリングを施し動きベクトルMV21’を算出する。そして動きベクトルMV21’と動きベクトルMV22との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR22をそのまま用いることになる。なお、動きベクトルMV21に対してスケーリングを施して動きベクトルMV21’とする替わりに動きベクトルMV22に対してスケーリングを施して動きベクトルMV22’とする場合も同様に扱うことが可能である。
【0060】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、式5のように動きベクトルを参照するピクチャP24に対して時間間隔の短い方のピクチャP22を参照する動きベクトルMV22およびTR22を直接用いることも可能である。同様に、式6のように時間間隔の長い方のピクチャP21を参照する動きベクトルMV21および時間間隔TR21を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0061】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図5(a)は図4と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図5(b)では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャP23が直接モードによって復号化を行うピクチャ、ピクチャP24がそのときに動きベクトルを参照されるピクチャを示している。図5(b)のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式5のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV22および時間間隔TR22が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式6のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV21および時間間隔TR21が直接適用される。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0062】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0063】
(実施の形態4)
図8に基づいた復号化処理の概要は実施の形態3と全く同等である。ここでは直接モードにおける2方向予測の動作について図6を用いてその詳細を説明する。ただし、実施の形態2の動画像符号化方法で生成された符号列が入力されるものとする。
【0064】
図6は直接モードにおいて動きベクトルを決定するために参照したピクチャが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP43が現在復号化の対象としているピクチャであり、ピクチャP42およびピクチャP44を参照ピクチャとして2方向予測を行うものである。復号化を行うブロックをブロックMB41とすると、このとき必要とされる2つの動きベクトルは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP44の同じ位置にあるブロックMB42の持つ動きベクトルを用いて決定される。このブロックMB42は動きベクトルとして動きベクトルMV45および動きベクトルMV46の2つを有するため、求める2つの動きベクトルMV43および動きベクトルMV44を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式7のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFを動きベクトルMB42の持つ2つの動きベクトルの平均値から決定し、その時の時間間隔TR_REFを同様に平均値から決定する。そして、式8に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV43および動きベクトルMV44を算出する。このとき時間間隔TR45はピクチャP44からピクチャP45まで、つまり動きベクトルMV45が参照するピクチャまでの時間の間隔を、時間間隔TR46は動きベクトルMV46が参照するピクチャまでの時間の間隔を、時間間隔TR43は動きベクトルMV43が参照するピクチャまでの時間の間隔を、時間間隔TR44は動きベクトルMV44が参照するピクチャまでの時間の間隔を示すものである。なお、図6の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0065】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【0066】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV45と動きベクトルMV46との平均値および時間間隔TR45と時間間隔TR46との平均値をとる方法として、式7の替わりに式9を用いることも可能である。まず、式9(a)のように動きベクトルMV46に対して時間間隔が動きベクトルMV45と同じになるようにスケーリングを施し動きベクトルMV46’を算出する。そして動きベクトルMV46’と動きベクトルMV45との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR45をそのまま用いることになる。なお、動きベクトルMV46に対してスケーリングを施して動きベクトルMV46’とする替わりに動きベクトルMV45に対してスケーリングを施して動きベクトルMV45’とする場合も同様に扱うことが可能である。
【0067】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、式10のように動きベクトルを参照するピクチャP44に対して時間間隔の短い方のピクチャP45を参照する動きベクトルMV45および時間間隔TR45を直接用いることも可能である。同様に、式11のように時間間隔の長い方のピクチャP46を参照する動きベクトルMV46および時間間隔TR46を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0068】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図7(a)は図6と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図7(b)では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャP43が直接モードによって符号化を行うピクチャ、ピクチャP44がそのときに動きベクトルを参照されるピクチャを示している。図7(b)のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式11のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV46および時間間隔TR46が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式10のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV45および時間間隔TR45が直接適用される。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0069】
なお、直接モードにおいて動きベクトルを決定するために参照したブロックが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、求める2つの動きベクトルMV43および動きベクトルMV44を「0」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【0070】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0071】
(実施の形態5)
上記実施の形態1から実施の形態4までに示した符号化方法または復号化方法に限らず、以下に示す動きベクトル計算方法を用いて符号化方法または復号化方法を実現することができる。
【0072】
図9は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)P24の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図9において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV21と動きベクトルMV22とはブロックMB2を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャP21、ピクチャP22を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21はピクチャP21とピクチャP24との間の時間間隔、時間間隔TR22はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR24’はピクチャP23とピクチャP24との間の時間間隔を示す。
【0073】
動きベクトル計算方法としては、図9に示すように参照ピクチャP24におけるブロックMB2の動きベクトルのうち先に符号化または復号化された前方向動きベクトル(第1動きベクトル)MV21のみを用い、ブロックMB1の動きベクトルMV21’、動きベクトルMV24’は以下の式により計算される。
【0074】
MV21’ = MV21 × TR21’/TR21
MV24’ = −MV21 × TR24’/TR21
そして動きベクトルMV21’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。なお、動きベクトルMV21のみを用いてブロックMB1の動きベクトルMV21’と動きベクトルMV24’とを計算する代わりに、参照ピクチャP24におけるブロックMB2の動きベクトルのうち後に符号化または復号化された動きベクトル(第2動きベクトル)MV22のみを用いてブロックMB1の動きベクトルを計算してもよい。また、実施の形態1から実施の形態4で示したように、動きベクトルMV21と動きベクトルMV22との両者を用いて、ブロックMB1の動きベクトルを決定しても良い。いずれも動きベクトルMV21と動きベクトルMV22とのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されたブロックの動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置でいずれを選択するかあらかじめ任意に設定しておいてもよい。また、ピクチャP21が短時間メモリ(Short Term Buffer)にあっても長時間メモリ(Long TermBuffer)にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【0075】
図10は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP22が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照ピクチャ)P23の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図10において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV24と動きベクトルMV25はブロックMB2を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャP24、ピクチャP25を参照している。また、ピクチャP21、ピクチャP23、ピクチャP24、ピクチャP25は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR24’はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP22との間の時間間隔を示す。
【0076】
動きベクトル計算方法としては、図10に示すように参照ピクチャP23におけるブロックMB2のピクチャP24への動きベクトルMV24のみを用い、ブロックMB1の動きベクトルMV21’、動きベクトルMV24’は以下の式により計算される。
【0077】
MV21’ = −MV24 × TR21’/TR24
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV21’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0078】
なお、図11に示すように参照ピクチャP23におけるブロックMB2のピクチャP25への動きベクトルMV25のみを用いた場合、ブロックMB1の動きベクトルMV21’、動きベクトルMV25’は以下の式により計算される。なお、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR25’はピクチャP22とピクチャP25との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP22との間の時間間隔を示す。
【0079】
MV21’ = −MV25 × TR21’/TR25
MV25’ = MV25 × TR25’/TR25
そして動きベクトルMV21’、動きベクトルMV25’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0080】
図12は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある1枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23は、現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)P24の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図12において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックである。動きベクトルMV21Aと動きベクトルMV21BとはブロックMB2を符号化または復号化するときに用いた前方向動きベクトルであり、共にピクチャP21を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21A、時間間隔TR21BはピクチャP21とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR24’はピクチャP23とピクチャP24との間の時間間隔を示す。
【0081】
動きベクトル計算方法としては、図12に示すように参照ピクチャP24におけるブロックMB2のピクチャP21への前方向動きベクトルMV21Aのみを用い、ブロックMB1の動きベクトルMV21A’、MV24’は以下の式により計算される。
【0082】
MV21A’ = MV21A × TR21’/TR21A
MV24’ = −MV21A × TR24’/TR21A
そして動きベクトルMV21A’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0083】
なお、参照ピクチャP24におけるブロックMB2のピクチャP21への前方向動きベクトルMV21Bのみを用い、ブロックMB1の動きベクトルを計算してもよい。また、実施の形態1から実施の形態4で示したように、前方向動きベクトルMV21Aと前方向動きベクトルMV21Bとの両者を用いて、ブロックMB1に対する動きベクトルを決定しても良い。いずれも前方向動きベクトルMV21Aと前方向動きベクトルMV21Bとのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されている(符号列中に先に記述されている)動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置で任意に設定してもよい。ここで、時間的に先に符号化または復号化されている動きベクトルとは、第1動きベクトルのことを意味する。また、ピクチャP21が短時間メモリ(Short Term Buffer)にあっても長時間メモリ(Long Term Buffer)にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【0084】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0085】
なお、上記の動きベクトルMV21’、動きベクトルMV24’、動きベクトルMV25’および動きベクトルMV21A’の計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【0086】
(実施の形態6)
本実施の形態6においては、直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で前方にある2枚のピクチャを参照する2つの前方向動きベクトルを持っている場合に、2つの前方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる方法について図13から図15を用いて説明する。なお、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV21と動きベクトルMV22とはブロックMB2を符号化または復号化するときに用いた前方向動きベクトルであり、それぞれピクチャP21、ピクチャP22を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21はピクチャP21とピクチャP24との間の時間間隔、時間間隔TR22はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR22’はピクチャP22とピクチャP23との間の時間間隔を示す。
【0087】
第1の方法としては、図13に示すように参照ピクチャP24におけるブロックMB2が、ピクチャP21への前方向動きベクトルMV21と、ピクチャP22への前方向動きベクトルMV22との2つの前方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で近いピクチャP22への動きベクトルMV22のみを用い、ブロックMB1の動きベクトルMV22’は以下の式により計算される。
【0088】
MV22’ = MV22 × TR22’/TR22
そして動きベクトルMV22’を用いてピクチャP22から動き補償を行う。
【0089】
第2の方法としては、図14に示すように参照ピクチャP24におけるブロックMB2がピクチャP21への前方向動きベクトルMV21とピクチャP22への前方向動きベクトルMV22との2つの前方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で遠いピクチャP21への動きベクトルMV21のみを用い、ブロックMB1の動きベクトルMV21’は以下の式により計算される。
【0090】
MV21’ = MV21 × TR21’/TR21
そして動きベクトルMV21’を用いてピクチャP21から動き補償を行う。
【0091】
これら第1、第2の方法により、動きベクトルを参照される参照ピクチャP24に属するブロックMB2は、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0092】
なお、前方向動きベクトルMV21を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP22から動き補償を行うこともできる。その時に用いる動きベクトルMVN(図示せず)は以下の式により計算される。
【0093】
MVN = MV21× TR22’/TR21
なお、第3の方法として、図15に示すように上記で求めた動きベクトルMV21’と動きベクトルMV22’とを用いてそれぞれピクチャP21とピクチャP22とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【0094】
この第3の方法により、計算量は増加するが、動き補償の精度は向上する。
【0095】
さらに、上記動きベクトルMVNと動きベクトルMV22’とを用いてピクチャP22から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【0096】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0097】
なお、上記の動きベクトルMV21’、動きベクトルMV22’、動きベクトルMVNの計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【0098】
(実施の形態7)
上記実施の形態6では直接モードにおいて符号化または復号化対象ブロックの動きベクトルを決定するために用いた参照ピクチャが、表示時間順で前方にある2枚のピクチャを参照する2つの前方向動きベクトルを持っている場合について述べたが、表示時間順で後方にある2枚のピクチャを参照する2つの後方向動きベクトル(第2参照インデックスで参照ピクチャが指定される第2動きベクトル)を持っている場合についても同様に、2つの後方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる。以下、図16から図19を用いて説明する。なお、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV24と動きベクトルMV25とは、動きベクトルMB2を符号化または復号化するときに用いた後方向動きベクトル(第2参照インデックスで参照ピクチャが指定される第2動きベクトル)である。また、ピクチャP21、ピクチャP23、ピクチャP24およびピクチャP25は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR24’はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR25’はピクチャP22とピクチャP25との間の時間間隔を示す。
【0099】
第1の方法としては、図16に示すように参照ピクチャP23におけるブロックMB2がピクチャP24への後方向動きベクトルMV24とピクチャP25への後方向動きベクトルMV25との2つの後方向動きベクトルを有するとき、対象ピクチャP22に表示時間順で近いピクチャP24への後方向動きベクトルMV24のみを用い、ブロックMB1の動きベクトルMV24’は以下の式により計算される。
【0100】
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV24’を用いてピクチャP24から動き補償を行う。
【0101】
なお、後方向動きベクトルMV24を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN1(図示せず)は以下の式により計算される。
【0102】
MVN1 = MV24× TRN1/TR24
第2の方法としては、図17に示すように参照ピクチャP23におけるブロックMB2がピクチャP24への後方向動きベクトルMV24とピクチャP25への後方向動きベクトルMV25との2つの後方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で遠いピクチャP25への後方向動きベクトルMV25のみを用い、ブロックMB1の動きベクトルMV25’は以下の式により計算される。
【0103】
MV25’ = MV25 × TR25’/TR25
そして動きベクトルMV25’を用いてピクチャP25から動き補償を行う。
【0104】
これら第1、第2の方法により、動きベクトルを参照される参照ピクチャP23に属するブロックMB2は、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0105】
なお、後方向動きベクトルMV25を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN2(図示せず)は以下の式により計算される。
【0106】
MVN2 = MV25× TRN1/TR25
さらに、第3の方法として、図18に示すように上記で求めた動きベクトルMV24’と動きベクトルMV25’ を用いてそれぞれピクチャP24とピクチャP25とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【0107】
この第3の方法により、計算量は増加するが、対象ピクチャP22の精度は向上する。
【0108】
なお、上記動きベクトルMVN1と動きベクトルMVN2とを用いてピクチャP24から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【0109】
また、図19に示すように直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で後方にある1枚のピクチャを参照する1つの後方向動きベクトルを持っている場合は、例えば以下の式により動きベクトルMV24’は計算される。
【0110】
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV24’を用いてピクチャP24から動き補償を行う。
【0111】
なお、後方向動きベクトルMV25を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN3(図示せず)は以下の式により計算される。
【0112】
MVN3 = MV24× TRN1/TR24
なお、本実施の形態においては、図16から図19を用いて、表示時間順で後方にある2枚のピクチャを参照する2つの後方向動きベクトルを持っている場合、および表示時間順で後方にある1枚のピクチャを参照する1つの後方向動きベクトルを持っている場合に、その後方向動きベクトルをスケーリングして対象動きベクトルを計算する場合について説明したが、これは後方動きベクトルを用いず、同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良いし、ピクチャ内符号化が行われている場合に同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良い。まず、第1の計算方法について述べる。 図20は、その際に参照する動きベクトルと対象ブロックとの位置関係を示したものである。ブロックMB1が対象ブロックであり、A、B、Cの位置関係にある3つの画素を含むブロックの動きベクトルを参照する。ただし、画素Cの位置が画面外であったり、符号化/復号化が済んでいない状態であったりして参照不可となる場合には、画素Cを含むブロックの代わりに画素Dを含むブロックの動きベクトルを用いるものとする。参照の対象となったA、B、Cの画素を含む3つのブロックが持つ動きベクトルの中央値を取ることによって、実際に直接モードにおいて使用する動きベクトルとする。3つのブロックが持つ動きベクトルの中央値を取ることにより、3つの動きベクトルのうちどの動きベクトルを選択したかという付加情報を符号列中に記述する必要がなく、かつブロックMB1の実際の動きに近い動きを表現する動きベクトルを得ることができる。この場合、決定した動きベクトルを用いて、前方参照(第1参照ピクチャへの参照)のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照(第1参照ピクチャおよび第2参照ピクチャへの参照)で動き補償しても良い。
【0113】
次に、第2の計算方法について述べる。
【0114】
第2の計算方法では第1の計算方法のように中央値を取らずに、参照の対象となったA、B、Cの画素を含む3つのブロックが持つ動きベクトルの中から、符号化効率が一番高くなる動きベクトルを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、決定した動きベクトルを用いて、前方参照(第1参照ピクチャへの参照)のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照(第1参照ピクチャと第2参照ピクチャとを用いた参照)で動き補償しても良い。符号化効率の一番高い動きベクトルを示す情報は、例えば図21(a)に示すように、モード選択部107から出力される直接モードを示す情報とともに、符号列生成部103によって生成される符号列におけるブロックのヘッダ領域に付加される。なお、図21(b)に示すように符号化効率の一番高いベクトルを示す情報はマクロブロックのヘッダ領域に付加してもよい。また、符号化効率の一番高い動きベクトルを示す情報とは、例えば、参照の対象となった画素を含むブロックを識別する番号であって、ブロック毎に与えられる識別番号である。また、識別番号でブロックが識別されるとき、ブロック毎に与えた識別番号を1つだけ用いて、その1つの識別番号に対応するブロックを符号化したときに用いた動きベクトルのうち一方のみを用いて符号化効率が一番高くなる動きベクトルを示すようにしても、動きベクトルが複数あるときに複数の動きベクトルを用いて符号化効率が一番高くなる動きベクトルを示すようにしてもよい。または、2方向参照(第1参照ピクチャおよび第2参照ピクチャへの参照)のそれぞれの動きベクトル毎にブロック毎に与えられた識別番号を用いて、符号化効率が一番高くなる動きベクトルを示すようにしてもよい。このような動きベクトルの選択方法を用いることにより、必ず符号化効率が一番高くなる動きベクトルを取ることができる。ただし、どの動きベクトルを選択したかを示す付加情報を符号列中に記述しなければならないため、そのための符号量は余分に必要となる。さらに、第3の計算方法について述べる。
【0115】
第3の計算方法では、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとする。参照インデックスが最小であるということは、一般的には表示時間順で近いピクチャを参照している、または符号化効率が最も高くなる動きベクトルである。よって、このような動きベクトルの選択方法を用いることにより、表示時間順で最も近い、または符号化効率が最も高くなるピクチャを参照する動きベクトルを用いて、直接モードで用いる動きベクトルを生成することになり、符号化効率の向上を図ることができる。
【0116】
なお、3本の動きベクトルのうち3本とも同一の参照ピクチャを参照している場合は、3本の動きベクトルの中央値をとるようにすればよい。また、3本の動きベクトルのうち参照インデックスの値が一番小さい参照ピクチャを参照する動きベクトルが2本ある場合は、例えば、2本の動きベクトルのうち、どちらか一方を固定的に選択するようにすればよい。図20を用いて例を示すとすれば、画素A、画素Bおよび画素Cを含む3つのブロックが持つ動きベクトルのうち、画素Aおよび画素Bを含む2つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、画素Aを含むブロックが持つ動きベクトルをとるようにするとよい。ただし、それぞれ画素A、画素B、画素Cを含む3つのブロックが持つ動きベクトルのうち、画素A、画素Cを含む2つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、ブロックBL1に位置関係で近い画素Aを含むブロックが持つ動きベクトルをとるようにするとよい。
【0117】
なお、上記中央値は、各動きベクトルの水平方向成分と垂直方向成分それぞれに対して中央値をとるようにしてもよいし、各動きベクトルの大きさ(絶対値)に対して中央値をとるようにしてもよい。
【0118】
また、動きベクトルの中央値は図22に示すような場合、後方の参照ピクチャにおいてブロックBL1と同位置にあるブロックと、画素A,画素B、画素Cそれぞれを含むブロックと、さらに図22に示す画素Dを含むブロック、これら合計5つのブロックが有する動きベクトルの中央値を取るようにしてもよい。このように符号化対象画素の周囲に近い、後方の参照ピクチャにおいてブロックBL1と同位置にあるブロックを用いたときには、ブロック数を奇数にするために画素Dを含むブロックを用いると、動きベクトルの中央値を算出する処理を簡単にすることができる。なお、後方の参照ピクチャにおいてブロックBL1と同位置にある領域に複数のブロックがまたがっている場合、この複数のブロックのうちブロックBL1と重なる領域が最も大きいブロックにおける動きベクトルを用いてブロックBL1の動き補償をしてもよいし、あるいはブロックBL1を後方の参照ピクチャにおける複数のブロックの領域に対応して分けて、分けたブロック毎にブロックBL1を動き補償するようにしてもよい。
【0119】
さらに、具体的な例を挙げて説明する。
【0120】
図23や図24に示すように画素A,画素B,画素Cを含むブロック全てが符号化対象ピクチャより前方のピクチャを参照する動きベクトルの場合、上記第1の計算方法から第3の計算方法まで、いずれを用いてもよい。
【0121】
同様に、図25や図26に示すように画素A,画素B,画素Cを含むブロック全てが符号化対象ピクチャより後方のピクチャを参照する動きベクトルの場合、上記第1の計算方法から第3の計算方法まで、いずれを用いてもよい。
【0122】
次に、図27に示す場合について説明する。図27は、画素A,画素B,画素Cそれぞれを含むブロック全てが符号化対象ピクチャより前方と後方のピクチャを参照する動きベクトルを1本ずつ有する場合を示す。
【0123】
上記第1の計算方法によれば、ブロックBL1の動き補償に用いる前方の動きベクトルは動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの中央値により選択され、ブロックBL1の動き補償に用いる後方の動きベクトルは動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの中央値により選択される。なお、動きベクトルMVAfは画素Aを含むブロックの前方向動きベクトル、動きベクトルMVAbは画素Aを含むブロックの後方向動きベクトル、動きベクトルMVBfは画素Bを含むブロックの前方向動きベクトル、動きベクトルMVBbは画素Bを含むブロックの後方向動きベクトル、動きベクトルMVCfは画素Cを含むブロックの前方向動きベクトル、動きベクトルMVCbは画素Cを含むブロックの後方向動きベクトルである。また、動きベクトルMVAf等は、図示するようなピクチャを参照する場合に限られない。これらは以下の説明でも同様である。
【0124】
上記第2の計算方法によれば、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルと、動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの後方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルとを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルを用いて、前方参照のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照で動き補償しても良い。なお、符号化効率が一番高くなるように、前方参照と後方参照の動きベクトルそれぞれについて選択せず、1つのブロックを選択し、そのブロックが有する前方参照と後方参照の動きベクトルを用いて動き補償しても良い。このとき、符号化効率が一番高くなるように選択された前方参照の動きベクトルを有する画素を有するブロックと、符号化効率が一番高くなるように選択された後方参照の動きベクトルを有する画素を有するブロックとを示す情報を選択する場合に比べて、選択を示す情報が少なくて済むため、符号化効率を向上させることができる。また、この1つのブロックの選択は、▲1▼前方参照の動きベクトルが参照するピクチャの参照インデックスの値が一番小さくなる動きベクトルを有する画素を含むブロックとする、▲2▼各画素を有するブロックの前方参照の動きベクトルが参照するピクチャの参照インデックスの値と、後方参照の動きベクトルが参照するピクチャの参照インデックスの値とを加算し、加算した値が最小となるブロックとする、▲3▼前方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する前方参照の動きベクトルを有する画素を含むブロックとし、後方参照の動きベクトルは、このブロックの有する後方参照の動きベクトルとする、▲4▼後方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する後方参照の動きベクトルを有する画素を含むブロックとし、前方参照の動きベクトルは、このブロックの有する前方参照の動きベクトルとする、のいずれかを採用すればよい。なお、後方参照の動きベクトルが全て同一のピクチャを参照している場合は、上記▲1▼と▲3▼のブロックの選択方法が適している。
【0125】
上記第3の計算方法では、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する前方参照(第1の参照)の動きベクトルとする。または、動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの後方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する後方参照(第2の参照)の動きベクトルとする。なお、第3の計算方法では、参照ピクチャの参照インデックスの値が一番小さくなる前方参照の動きベクトルをブロックBL1の前方参照の動きベクトルとし、参照ピクチャの参照インデックスの値が一番小さくなる後方参照の動きベクトルをブロックBL1の後方参照の動きベクトルとしたが、参照ピクチャの参照インデックスの値が一番小さくなる前方または後方のいずれか一方を用いてブロックBL1の2つの動きベクトルを導出し、導出された動きベクトルを用いてブロックBL1を動き補償しても良い。
【0126】
次に、図28に示す場合について説明する。図28は、画素Aが前方と後方のピクチャを参照する動きベクトルを1本ずつ有し、画素Bが前方のピクチャを参照する動きベクトルのみを有し、画素Cが後方のピクチャを参照する動きベクトルのみを有する場合を示す。
【0127】
このように一方のピクチャを参照する動きベクトルのみ有する画素を含むブロックがあるとき、このブロックの他方のピクチャを参照する動きベクトルが0であるとして、動き補償するために上記図27での計算方法を用いれば良い。具体的には、図27での第1の計算方法または第3の計算方法を用い、MVCf=MVBb=0として計算すればよい。すなわち、第1の計算方法では、ブロックBL1の前方向動きベクトルを計算するときには、画素Cが前方のピクチャを参照する動きベクトルMVCfをMVCf=0として、動きベクトルMVAf、動きベクトルMVBfおよび動きベクトルMVCfの中央値を計算する。また、ブロックBL1の後方向動きベクトルを計算するときには、画素Bが後方のピクチャを参照する動きベクトルMVBbをMVBb=0として、動きベクトルMVAb、動きベクトルMVBbおよび動きベクトルMVCbの中央値を計算する。
【0128】
第3の計算方法では、画素Cが前方のピクチャを参照する動きベクトルMVCfと画素Bが後方のピクチャを参照する動きベクトルMVBbとをMVCf=MVBb=0として、ブロックBL1の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを計算する。例えば、画素Aを含むブロックが第1参照インデックス「0」のピクチャを参照し、画素Bを含むブロックが第1参照インデックス「1」のピクチャを参照している場合、最小の第1参照インデックスの値は「0」である。従って、画素Bを含むブロックの前方のピクチャを参照する動きベクトルMVBfだけが、最小の第1参照インデックスを有するピクチャを参照しているので、動きベクトルMVBfをブロックBL1の前方向動きベクトルとする。また、例えば、画素A、画素Cのいずれもが第2参照インデックスが最小の、例えば、第2参照インデックスが「0」の後方ピクチャを参照している場合、画素Bが後方のピクチャを参照する動きベクトルMVBbをMVBb=0として、動きベクトルMVAb、動きベクトルMVBbおよび動きベクトルMVCbの中央値を計算する。計算の結果得られた動きベクトルをブロックBL1の後方向動きベクトルとする。
【0129】
次に、図29に示す場合について説明する。図29は、画素Aが前方と後方のピクチャを参照する動きベクトルを1本ずつ有し、画素Bが前方のピクチャを参照する動きベクトルのみを有し、画素Cが動きベクトルを有さず、画面内符号化される場合を示す。
【0130】
このように、参照対象となった画素Cを含むブロックが画面内符号化されているとき、このブロックの前方と後方のピクチャを参照する動きベクトルを共に「0」であるとして、動き補償するために上記図27での計算方法を用いれば良い。具体的には、MVCf=MVCb=0として計算すればよい。なお、図27の場合は、MVBb=0である。
【0131】
最後に、図30に示す場合について説明する。図30は、画素Cが直接モードによって符号化されている場合について示している。
【0132】
このように、参照対象となった画素に、直接モードによって符号化されているブロックがあるとき、直接モードによって符号化されているブロックが符号化されるときに用いられた動きベクトルを用いた上で、上記図27での計算方法を用いてブロックBL1の動き補償をするとよい。
【0133】
なお、動きベクトルが前方参照と後方参照のどちらかであるかは、参照されるピクチャと符号化されるピクチャ、それぞれのピクチャが有する時間情報によって決まる。よって、前方参照と後方参照を区別した上で、動きベクトルを導出する場合は、それぞれのブロックが有する動きベクトルが、前方参照と後方参照のどちらかであるかを、それぞれのピクチャが有する時間情報によって判断する。
【0134】
さらに、上記で説明した計算方法を組み合わせた例について説明する。図31は直接モードにおいて使用する動きベクトルを決定する手順を示す図である。図31は参照インデックスを用いて動きベクトルを決定する方法の一例である。なお、図31に示すRidx0、Ridx1は上記で説明した参照インデックスである。図31(a)は第1参照インデックスRidx0によって動きベクトルを決定する手順を示しており、図31(b)は第2参照インデックスRidx1によって動きベクトルを決定する手順を示している。まず、図31(a)について説明する。
【0135】
ステップS3701において画素Aを含むブロック、画素Bを含むブロックおよび画素Cを含むブロックのうち、第1参照インデックスRidx0を用いてピクチャを参照するブロックの数を計算する。
【0136】
ステップS3701において計算されたブロックの数が「0」であれば、さらにステップS3702において第2参照インデックスRidx1を用いてピクチャを参照するブロックの数を計算する。ステップS3702において計算されたブロックの数が「0」であれば、S3703において符号化対象ブロックの動きベクトルを「0」として符号化対象ブロックを2方向で動き補償をする。一方ステップS3702において計算されたブロックの数が「1」以上であれば、S3704において第2参照インデックスRidx1が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第2参照インデックスRidx1が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【0137】
ステップS3701において計算されたブロックの数が「1」であれば、S3705において第1参照インデックスRidx0が存在するブロックの動きベクトルを使用する。
【0138】
ステップS3701において計算されたブロックの数が「2」であれば、S3706において第1参照インデックスRidx0が存在しないブロックについて仮に第1参照インデックスRidx0にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。
【0139】
ステップS3701において計算されたブロックの数が「3」であれば、S3707において3本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップS3704における動き補償は、1本の動きベクトルを用いて2方向の動き補償をしてもよい。ここでの2方向の動き補償は、1本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの1本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは1本の動きベクトルと同一方向の動きベクトルと動きベクトルが「0」の動きベクトルとを用いて行ってもよい。次に、図31(b)について説明する。
【0140】
ステップS3711において第2参照インデックスRidx1が存在するブロックの数を計算する。
【0141】
ステップS3711において計算されたブロックの数が「0」であれば、さらにステップS3712において第1参照インデックスRidx0が存在するブロックの数を計算する。ステップS3712において計算されたブロックの数が「0」であれば、S3713において符号化対象ブロックの動きベクトルを「0」として符号化対象ブロックを2方向で動き補償する。一方ステップS3712において計算されたブロックの数が「1」以上であれば、S3714において第1参照インデックスRidx0が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第1参照インデックスRidx0が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【0142】
ステップS3711において計算されたブロックの数が「1」であれば、S3715において第2参照インデックスRidx1が存在するブロックの動きベクトルを使用する。
【0143】
ステップS3711において計算されたブロックの数が「2」であれば、S3716において第2参照インデックスRidx1が存在しないブロックについて仮に第2参照インデックスRidx1にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。
【0144】
ステップS3711において計算されたブロックの数が「3」であれば、S3717において3本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップS3714における動き補償は、1本の動きベクトルを用いて2方向の動き補償をしてもよい。ここでの2方向の動き補償は、1本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの1本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは1本の動きベクトルと同一方向の動きベクトルと動きベクトルが「0」の動きベクトルとを用いて行ってもよい。
【0145】
なお、図31(a)と図31(b)それぞれについて説明したが、両方の処理を用いてもよいし、一方の処理のみを用いても良い。ただし、一方の処理を用いる場合、例えば、図31(a)に示すステップS3701から始まる処理を行う場合で、さらにステップS3704の処理に至る場合は、図31(b)に示すS3711の処理以下を行うと良い。また、このように、S3704の処理に至る場合は、ステップS3711以下の処理のうちステップS3712以下の処理を行うことが無いため、動きベクトルを一意に決定することができる。また、図31(a)と図31(b)の両方の処理を用いる場合、どちらの処理を先にしてもよく、また併せて行っても良い。また、符号化対象ブロックの周囲にあるブロックが直接モードによって符号化されているブロックであるとき、直接モードによって符号化されているブロックが符号化されたときに用いられた動きベクトルが参照していたピクチャの参照インデックスを、直接モードによって符号化されているブロックであって符号化対象ブロックの周囲にあるブロックが有しているものとしてもよい。
【0146】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について詳しく説明する。図32は符号化対象ブロックBL1が参照するブロックそれぞれが有する動きベクトルの種類を示す図である。図35(a)において、画素Aを有するブロックは画面内符号化されるブロックであり、画素Bを有するブロックは動きベクトルを1本有し、この1本の動きベクトルで動き補償されるブロックであり、画素Cを有するブロックは動きベクトルを2本有して2方向で動き補償されるブロックである。また、画素Bを有するブロックは第2参照インデックスRidx1に示される動きベクトルを有している。画素Aを有するブロックは画面内符号化されるブロックであるため、動きベクトルを有さず、すなわち参照インデックスも有さない。
【0147】
ステップS3701において第1参照インデックスRidx0が存在するブロックの数を計算する。図35に示すように第1参照インデックスRidx0が存在するブロックの数は2本であるため、ステップS3706において第1参照インデックスRidx0が存在しないブロックについて仮に第1参照インデックスRidx0にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。この動きベクトルのみを用いて符号化対象ブロックを2方向の動き補償をしてもよいし、または、以下に示すように第2参照インデックスRidx1を用いて別の動きベクトルを用いて、2方向の動き補償をしてもよい。
【0148】
ステップS3711において第2参照インデックスRidx1が存在するブロックの数を計算する。図35に示すように第2参照インデックスRidx1が存在するブロックの数は1本であるため、ステップS3715において第2参照インデックスRidx1が存在するブロックの動きベクトルを使用する。
【0149】
さらに、上記で説明した計算方法を組み合わせた別の例について説明する。図33は画素A、B、Cそれぞれを有するブロックが有する動きベクトルが参照するピクチャを示す参照インデックスの値によって、符号化対象ブロックの動きベクトルを決定する手順を示す図である。図33(a)(b)は第1参照インデックスRidx0を基準に動きベクトルを決定する手順を示す図であり、図33(c)(d)は第2参照インデックスRidx1を基準に動きベクトルを決定する手順を示す図である。また、図33(a)が第1参照インデックスRidx0を基準にした手順を示しているところを図33(c)は第2参照インデックスRidx1を基準にした手順を示しており、図33(b)が第1参照インデックスRidx0を基準にした手順を示しているところを図33(d)は第2参照インデックスRidx1を基準にした手順を示しているため、以下の説明では図33(a)と図33(b)のみについて説明する。まず図33(a)について説明する。
【0150】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0151】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3802において選択された動きベクトルを使用する。
【0152】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0が複数ある場合、ステップS3803において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Aを有するブロック、画素Bを有するブロック、画素Cを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。
【0153】
ステップS3801において有効な第1参照インデックスRidx0がない場合、ステップS3804においてS3802やS3803とは違う処理を行う。例えば、図31(b)で説明したステップS3711以下の処理をすればよい。次に、図33(b)について説明する。図33(b)が図33(a)と異なる点は、図33(a)におけるステップS3803とステップS3804における処理を図33(b)に示すステップS3813とした点である。
【0154】
ステップS3811において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0155】
ステップS3811において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3812において選択された動きベクトルを使用する。
【0156】
ステップS3811において有効な第1参照インデックスRidx0がない場合、ステップS3813においてS3812とは違う処理を行う。例えば、図31(b)で説明したステップS3711以下の処理をすればよい。
【0157】
なお、上記で示した有効な第1参照インデックスRidx0とは図32(b)で「○」が記されている第1参照インデックスRidx0のことであり、動きベクトルを有していることが示されている参照インデックスのことである。また、図32(b)中、「×」が記されているところは、参照インデックスが割り当てられていないことを意味する。また、図33(c)におけるステップS3824、図33(d)におけるステップS3833では、図31(a)で説明したステップS3701以下の処理をすればよい。
【0158】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について図32を用いて詳しく説明する。
【0159】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0160】
図32に示す場合、有効な第1参照インデックスRidx0は2つあるが、ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3802において選択された動きベクトルを使用する。
【0161】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0が複数ある場合、ステップS3803において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Aを有するブロック、画素Bを有するブロック、画素Cを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。画素Bを有するブロックと画素Cを有するブロックとで同一の第1参照インデックスRidx0を有する場合、優先順位により画素Bを有するブロックにおける第1参照インデックスRidx0が採用され、この画素Bを有するブロックにおける第1参照インデックスRidx0に対応した動きベクトルを用いて符号化対象ブロックBL1の動き補償がされる。このとき、決定された動きベクトルのみを用いて符号化対象ブロックBL1を2方向で動き補償してもよいし、以下に示すように第2参照インデックスRidx1を用いて別の動きベクトルを用いて、2方向の動き補償をしてもよい。
【0162】
ステップS3821において有効な第2参照インデックスRidx1の中で最小の第2参照インデックスRidx1を1つ選択できるか判断する。
【0163】
図32に示す場合、有効な第2参照インデックスRidx1は1つであるため、ステップS3822において画素Cを有するブロックにおける第2参照インデックスRidx1に対応した動きベクトルを使用する。
【0164】
なお、上記で参照インデックスを有さないブロックについて、動きベクトルの大きさが「0」の動きベクトルを有しているものとして、合計3つの動きベクトルの中央値をとるようにした点に関しては、動きベクトルの大きさが「0」の動きベクトルを有しているものとして、合計3つの動きベクトルの平均値をとるようにしても、参照インデックスを有するブロックが有する動きベクトルの平均値をとるようにしてもよい。
【0165】
なお、上記で説明した優先順位を、例えば画素Bを有するブロック、画素Aを有するブロック、画素Cを有するブロックの順とし、符号化対象ブロックの動き補償に使用する動きベクトルを決定するようにしてもよい。
【0166】
このように、参照インデックスを用いて符号化対象ブロックを動き補償をするときに用いる動きベクトルを決定することにより、動きベクトルを一意に決定することができる。また、上述の例に拠れば、符号化効率の向上も図ることが可能である。また、時刻情報を用いて動きベクトルが前方参照か後方参照かを判断する必要が無いため、動きベクトルを決定するための処理を簡略させることができる。また、ブロック毎の予測モード、動き補償で用いられる動きベクトル等を考慮すると多くのパターンが存在するが、上述のように一連の流れによって処理することができ有益である。
【0167】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0168】
なお、参照インデックスRidx0,Ridx1を用いた動きベクトルの計算方法は、中央値を用いた計算方法だけでなく、他の計算方法と組み合わせてもよい。例えば、前述の第3の計算方法において、それぞれ画素A、画素B、画素Cを含むブロックのうち、参照インデックスが最小となる同じピクチャを参照する動きベクトルが複数ある場合に、必ずしもそれらの動きベクトルの中央値を計算する必要はなく、それらの平均値を計算し、得られた動きベクトルを、ブロックBL1の直接モードにおいて用いる動きベクトルとしてもよい。あるいは、参照インデックスが最小となる複数の動きベクトルの中から、例えば、符号化効率が最も高くなる動きベクトルを1つ選択するとしてもよい。
【0169】
また、ブロックBL1の前方向動きベクトルと後方向動きベクトルとをそれぞれ独立して計算してもよいし、関連付けて計算してもよい。例えば、前方向動きベクトルと後方向動きベクトルとを同じ動きベクトルから計算してもよい。
【0170】
また、計算の結果得られた前方向動きベクトルと後方向動きベクトルとのいずれか一方をブロックBL1の動きベクトルとしてもよい。
【0171】
(実施の形態8)
本実施の形態では、参照ピクチャの参照ブロックMBが、長時間メモリに保存されている参照ピクチャを第1参照ピクチャとして参照する前方向(第1)動きベクトルと、短時間メモリに保存されている参照ピクチャを第2参照ピクチャとして参照する後方向(第2)動きベクトルとを有している。
【0172】
図34は長時間メモリに保存されているピクチャを参照する動きベクトルが1つだけの場合の直接モードにおける2方向予測を示す図である。
【0173】
実施の形態8がこれまでの複数の実施の形態と異なる点は、参照ピクチャのブロックMB2の前方向(第1)動きベクトルMV21が長時間メモリに保存されている参照ピクチャを参照している点である。
【0174】
短時間メモリは、一時的に参照ピクチャを保存するためのメモリであり、例えばピクチャがメモリに保存された順番(すなわち符号化または復号化の順序)でピクチャが保存されている。そして、ピクチャを短時間メモリに新しく保存する際にメモリ容量が足りない場合には、最も古くメモリに保存されたピクチャから順に削除する。
【0175】
長時間メモリでは、必ずしも短時間メモリのように時刻の順番でピクチャが保存されているとは限らない。例えば、画像を保存する順番としては画像の時刻の順番を対応させても良いし、画像が保存されているメモリのアドレスの順番を対応させても良い。したがって、長時間メモリに保存されているピクチャを参照する動きベクトルM21を時間間隔に基づいてスケーリングすることはできない。
【0176】
長時間メモリは短期間メモリのように一時的に参照ピクチャを保存するためのものではなく、継続的に参照ピクチャを保存するためのものである。したがって、長時間メモリに保存されている動きベクトルに対応する時間間隔は、短時間メモリに保存されている動きベクトルに対応する時間間隔より相当大きい。
【0177】
図34において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。ここでピクチャP23のブロックMB1が対象ブロックである。また、ブロックMB2はブロックMB1と参照ピクチャP24内において同じ位置にある参照ブロックである。参照ピクチャP24のブロックMB2の動きベクトルのうち前方向(第1)動きベクトルMV21は長時間メモリに保存されているピクチャP21を第1参照ピクチャとして参照する第1動きベクトルであり、後方向(第2)動きベクトルMV25は短時間メモリに保存されているピクチャP25を第2参照ピクチャとして参照する第2動きベクトルである。
【0178】
前述の通り、ピクチャP21とピクチャP24との時間間隔TR21は、長時間メモリに保存されているピクチャを参照する動きベクトルMV21に対応し、ピクチャP24とピクチャP25との時間間隔TR25は、短時間メモリに保存されているピクチャを参照する動きベクトルMV25に対応し、ピクチャP21とピクチャP24との時間間隔TR21は、ピクチャP24とピクチャP25との時間間隔TR25より相当大きいか、不定となることがある。
【0179】
したがって、これまでの実施の形態のように参照ピクチャP24のブロックMB2の動きベクトルをスケーリングして対象ピクチャP23のブロックMB1の動きベクトルを求めるのではなく、以下のような方法で対象ピクチャP23のブロックMB1の動きベクトルを計算する。
【0180】
MV21 = MV21’
MV24’ = 0
上の式は、参照ピクチャP24のブロックMB2の動きベクトルのうち長時間メモリに保存されている第1動きベクトルMN21をそのまま対象ピクチャの第1動きベクトルMV21’とするということを表している。
【0181】
下の式は、短時間メモリに保存されているピクチャP24への、対象ピクチャP23のブロックMB1の第2動きベクトルMV24’は、第1動きベクトルMV21’よりも十分小さいので、無視できるということを表している。第2動きベクトルMV24’は”0”として扱われる。
【0182】
以上のようにして、長時間メモリに保存されている参照ピクチャを第1参照ピクチャとして参照する1つの動きベクトルと短時間メモリに保存されている参照ピクチャを第2の参照ピクチャとして参照する1つの動きベクトルとを参照ブロックMBが有する場合、参照ピクチャのブロックの動きベクトルのうち、長時間メモリに保存された動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとして2方向予測をする。
【0183】
なお、長時間メモリに保存された参照ピクチャは、第1参照ピクチャまたは第2ピクチャのいずれのピクチャであってもよく、長時間メモリに保存された参照ピクチャを参照する動きベクトルMV21は後方向動きベクトルであってもよい。また、第2参照ピクチャが長時間メモリに保存され、第1参照ピクチャが短時間メモリに保存されている場合には、第1参照ピクチャを参照する動きベクトルにスケーリングを適用し、対象ピクチャの動きベクトルを計算する。
【0184】
これにより、長時間メモリの相当大きい、または不定となる時間を用いないで2方向予測の処理を行うことができる。
【0185】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して2方向予測をしても良い。
【0186】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0187】
(実施の形態9)
本実施の形態では、参照ピクチャの参照ブロックMBが、長時間メモリに保存されている参照ピクチャを参照する2つの前方向動きベクトルを有している場合の直接モードにおける2方向予測を示す。
【0188】
図35は、長時間メモリに保存されているピクチャを参照する動きベクトルが2つある場合の直接モードにおける2方向予測を示す図である。
【0189】
実施の形態9が実施の形態8と異なる点は、参照ピクチャのブロックMB2の動きベクトルMV21と動きベクトルMV22両方が長時間メモリに保存されているピクチャを参照する点である。
【0190】
図35において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。参照ピクチャP24のブロックMB2の動きベクトルMV21及び動きベクトルMV22は、2つとも長時間メモリに保存されたピクチャを参照している。参照ピクチャP21には動きベクトルMB21が対応し、参照ピクチャP22には動きベクトルMV22が対応している。
【0191】
長時間メモリに保存されているピクチャP22を参照する動きベクトルMV22に対応してピクチャP22とP24との時間間隔TR22は、短時間メモリに保存されているピクチャP24とピクチャP25との時間間隔TR25より相当大きい、または不定となることがある。
【0192】
図35において、動きベクトルMV22に対応するピクチャP22、動きベクトルMV21に対応するピクチャP21の順で順番が割り当てられて、ピクチャP21、ピクチャP22が長時間メモリに保存されている。図35では以下のように対象ピクチャのブロックMB1の動きベクトルを計算する。
【0193】
MV22’ = MV22
MV24’ = 0
上の式は、参照ピクチャP24のブロックMB2の動きベクトルのうち、最も割り当てられた順番が小さいピクチャP21を参照する動きベクトルMN22をそのまま対象ピクチャP23のブロックMB1の動きベクトルMV22’とするということを表している。
【0194】
下の式は、短時間メモリに保存されている対象ピクチャP23のブロックMB1の後方向動きベクトルMV24’は動きベクトルMV21’よりも十分小さいので、無視できるということを表している。後方向動きベクトルMV24’は”0”として扱われる。
【0195】
以上のようにして、長時間メモリに保存された参照ピクチャのブロックの動きベクトルのうち最も割り当てられた順番が小さいピクチャを参照する動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとすることで、長時間メモリの相当大きい、または不定となる時間を用いないで2方向予測の処理を行うことができる。
【0196】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して2方向予測をしても良い。
【0197】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0198】
さらに、参照ピクチャのブロックMB2の動きベクトルMV21と動きベクトルMV22との両方が長時間メモリに保存されているピクチャを参照する場合、第1参照ピクチャを参照する動きベクトルを選択するとしてもよい。例えば、MV21が第1参照ピクチャを参照する動きベクトルであり、MV22が第2参照ピクチャを参照する動きベクトルである場合、ブロックMB1の動きベクトルはピクチャP21に対する動きベクトルMV21とピクチャP24に対する動きベクトル”0”とを用いることになる。
【0199】
(実施の形態10)
本実施の形態では、実施の形態5から実施の形態9に記載された直接モードにおける動きベクトル計算方法について説明を行う。この動きベクトル計算方法は、画像の符号化または復号化の際いずれにも適用される。ここでは、符号化または復号化の対象のブロックを対象ブロックMBという。また、対象ブロックMBの参照ピクチャ中において対象ブロックと同じ位置にあるブロックを参照ブロックという。
【0200】
図36は、本実施の形態に係る動きベクトル計算方法の処理の流れを示す図である。
【0201】
まず、対象ブロックMBの後方の参照ピクチャ中の参照ブロックMBが動きベクトルを有するか否かが判定される(ステップS1)。参照ブロックMBが動きベクトルを有していなければ(ステップS1;No)、動きベクトルが”0”として2方向予測されて(ステップS2)動きベクトルを計算する処理が終了する。
【0202】
参照ブロックMBが動きベクトルを有していれば(ステップS1;Yes)、参照ブロックMBが前方向動きベクトルを有するか否かが判定される(ステップS3)。
【0203】
参照ブロックMBが前方向動きベクトルを有しない場合(ステップS3;No)、参照ブロックMBは後方向動きベクトルしか有していないので、その後方向動きベクトルの数が判定される(ステップS14)。参照ブロックMBの後方向動きベクトルの数が”2”の場合、図16、図17、図18および図19で記載されたいずれかの計算方法にしたがってスケーリングされた2つの後方向動きベクトルを用いて2方向予測が行われる(ステップS15)。
【0204】
一方、参照ブロックMBの後方向動きベクトルの数が”1”の場合、参照ブロックMBが有する唯一の後方向動きベクトルをスケーリングして、スケーリングされた後方向動きベクトルを用いて動き補償が行われる(ステップS16)。ステップS15またはステップS16の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0205】
また、参照ブロックMBが前方向動きベクトルを有する場合(ステップS3;Yes)、参照ブロックMBの前方向動きベクトルの数が判定される(ステップS4)。
【0206】
参照ブロックMBの前方向動きベクトルの数が”1”の場合、参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが長時間メモリまたは短時間メモリいずれに保存されているかが判定される(ステップS5)。
【0207】
参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが短時間メモリに保存されている場合、参照ブロックMBの前方向動きベクトルをスケーリングして、スケーリングされた前方向動きベクトルを用いて2方向予測が行われる(ステップS6)。
【0208】
参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが長時間メモリに保存されている場合、図34に示された動きベクトル計算方法にしたがって、参照ブロックMBの前方向動きベクトルがスケーリングされずずにそのまま用いられ、後方向動きベクトルゼロとして2方向予測が行われる(ステップS7)。ステップS6またはステップS7の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0209】
参照ブロックMBの前方向動きベクトルの数が”2”の場合、参照ブロックMBの前方向動きベクトルの内、長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数が判定される(ステップS8)。
【0210】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”0”の場合、図13に示した動きベクトル計算方法にしたがって、対象ブロックMBが属する対象ピクチャに表示時間順で近い動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて2方向予測が行われる(ステップS9)。
【0211】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”1”の場合、短時間メモリに保存されたピクチャを動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて2方向予測が行われる(ステップS10)。
【0212】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”2”の場合、2つの前方向動きベクトル両方によって、長時間メモリ内の同じピクチャが参照されているかが判定される(ステップS11)。2つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されている場合(ステップS11;Yes)、図12に記載した動きベクトル計算方法にしたがって、長時間メモリ内の2つの前方向動きベクトルに参照されているピクチャの内で先に符号化または復号化された動きベクトルを用いて2方向予測が行われる(ステップS12)。
【0213】
2つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されていない場合(ステップS11;No)、図35に記載された動きベクトル計算方法にしたがって、長時間メモリに保存されたピクチャに割り当てられた順番が小さいピクチャに対応する前方向動きベクトルを用いて2方向予測が行われる(ステップS13)。長時間メモリでは実際の画像の時刻とは関係なく参照ピクチャが保存されているので、各参照ピクチャに割り当てられた順番にしたがって2方向予測に用いられるべき前方向動きベクトルが選択されるようになっている。また、長時間メモリに保存される参照ピクチャの順番は画像の時刻と一致する場合もあるが、単にメモリのアドレスの順番と一致させても良い。つまり、長時間メモリに保存される画像の順序は必ずしも画像の時刻と一致していなくてもよい。ステップS12、13の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0214】
(実施の形態11)
以下、本発明の実施の形態11について図面を用いて詳細に説明する。
【0215】
図37は、本発明の実施形態11に係る動画像符号化装置100の構成を示すブロック図である。動画像符号化装置100は、フィールド構造で符号化されたブロックとフレーム構造で符号化されたブロックとが混在する場合にも直接モードの空間的予測方法を適用して動画像の符号化を行うことができる動画像符号化装置であって、フレームメモリ101、差分演算部102、予測誤差符号化部103、符号列生成部104、予測誤差復号化部105、加算演算部106、フレームメモリ107、動きベクトル検出部108、モード選択部109、符号化制御部110、スイッチ111、スイッチ112、スイッチ113、スイッチ114、スイッチ115および動きベクトル記憶部116を備える。
【0216】
フレームメモリ101は、入力画像をピクチャ単位で保持する画像メモリである。差分演算部102は、フレームメモリ101からの入力画像と、動きベクトルに基づいて復号化画像から求められた参照画像との差分である予測誤差を求めて出力する。予測誤差符号化部103は、差分演算部102で求められた予測誤差に周波数変換を施し、量子化して出力する。符号列生成部104は、予測誤差符号化部103からの符号化結果を可変長符号化した後、出力用の符号化ビットストリームのフォーマットに変換し、符号化された予測誤差の関連情報を記述したヘッダ情報などの付加情報を付して符号列を生成する。予測誤差復号化部105は、予測誤差符号化部103からの符号化結果を可変長復号化し、逆量子化した後、IDCT変換などの逆周波数変換を施し、予測誤差に復号化する。加算演算部106は、復号化結果である予測誤差に前記参照画像を加算して、符号化および復号化を経た画像データで入力画像と同じ1ピクチャの画像を表した参照画像を出力する。フレームメモリ107は、参照画像をピクチャ単位で保持する画像メモリである。
【0217】
動きベクトル検出部108は、符号化対象フレームの符号化単位ごとに、動きベクトルを検出する。モード選択部109は、動きベクトルを直接モードで計算するか他のモードで計算するかを選択する。符号化制御部110は、フレームメモリ101に入力された時間順で格納されている入力画像のピクチャを、符号化される順に入れ替える。さらに、符号化制御部110は、符号化対象フレームの所定の大きさの単位ごとに、フィールド構造で符号化を行うか、フレーム構造で符号化を行うかを判定する。ここでは、所定の大きさの単位はマクロブロック(例えば水平16画素、垂直16画素)を縦方向に2つ連結したもの(以下ではマクロブロックペアと呼ぶ)とする。フィールド構造で符号化するのであればフレームメモリ101からインタレースに対応して1水平走査線おきに画素値を読み出し、フレーム単位で符号化するのであればフレームメモリ101から順次、入力画像の各画素値を読み出して、読み出された各画素値がフィールド構造またはフレーム構造に対応した符号化対象マクロブロックペアを構成するようにメモリ上に配置する。動きベクトル記憶部116は、符号化済みマクロブロックの動きベクトルと、その動きベクトルが参照するフレームの参照インデックスとを保持する。参照インデックスについては、符号化済みマクロブロックペア中の各マクロブロックのそれぞれについて保持する。
【0218】
次に、以上のように構成された動画像符号化装置100の動作について説明する。入力画像は時間順にピクチャ単位でフレームメモリ101に入力される。図38(a)は、動画像符号化装置100に時間順にピクチャ単位で入力されるフレームの順序を示す図である。図38(b)は、図38(a)に示したピクチャの並びを符号化の順に並び替えた場合の順序を示す図である。図38(a)において、縦線はピクチャを示し、各ピクチャの右下に示す記号は、一文字目のアルファベットがピクチャタイプ(I、PまたはB)を示し、2文字目以降の数字が時間順のピクチャ番号を示している。また、図39は、実施の形態11を説明するための、参照フレームリスト300の構造を示す図である。フレームメモリ101に入力された各ピクチャは、符号化制御部110によって符号化順に並び替えられる。符号化順への並び替えは、ピクチャ間予測符号化における参照関係に基づいて行われ、参照ピクチャとして用いられるピクチャが、参照ピクチャとして用いるピクチャよりも先に符号化されるように並び替えられる。
【0219】
例えば、Pピクチャは、表示時間順で前方にある近傍のIまたはPピクチャ3枚のうち1枚を参照ピクチャとして用いるとする。また、Bピクチャは、表示時間順で前方にある近傍のIまたはPピクチャ3枚のうち1枚と、表示時間順で後方にある近傍のIまたはPピクチャの1枚とを参照ピクチャとして用いるものとする。具体的には、図38(a)ではピクチャB5およびピクチャB6の後方に入力されていたピクチャP7は、ピクチャB5およびピクチャB6によって参照されるため、ピクチャB5およびピクチャB6の前に並び替えられる。同様に、ピクチャB8およびピクチャB9の後方に入力されていたピクチャP10はピクチャB8およびピクチャB9の前方に、ピクチャB11およびピクチャB12の後方に入力されていたピクチャP13はピクチャB11およびピクチャB12の前方に並び替えられる。これにより、図38(a)のピクチャを並び替えた結果は、図38(b)のようになる。
【0220】
フレームメモリ101で並び替えが行われた各ピクチャは、マクロブロックを垂直方向に2つ連結したマクロブロックペアの単位で読み出されるものとし、各マクロブロックは水平16画素×垂直16画素の大きさであるとする。従って、マクロブロックペアは、水平16画素×垂直32画素の大きさとなる。以下、ピクチャB11の符号化処理について説明する。なお、本実施の形態における参照インデックスの管理、すなわち参照フレームリストの管理は符号化制御部110において行うものとする。
【0221】
ピクチャB11はBピクチャであるので、2方向参照を用いたピクチャ間予測符号化を行う。ピクチャB11は表示時間順で前方にあるピクチャP10、P7、P4と表示時間順で後方にあるピクチャP13のうちの2つのピクチャを参照ピクチャとして用いるものとする。これらの4つのピクチャのうち、いずれの2つのピクチャを選択するかは、マクロブロック単位で指定することができるとする。また、ここでは、参照インデックスは初期状態の方法で割り当てるものとする。すなわちピクチャB11の符号化時における参照フレームリスト300は図39に示す通りとなる。この場合の参照画像は、第1の参照ピクチャは図39の第1参照インデックスにより指定し、第2の参照ピクチャは図39の第2参照インデックスにより指定するものとなる。
【0222】
ピクチャB11の処理においては、符号化制御部110は、スイッチ113がオン、スイッチ114とスイッチ115とがオフになるように各スイッチを制御するものとする。よって、フレームメモリ101から読み出されたピクチャB11のマクロブロックペアは、動きベクトル検出部108、モード選択部109および差分演算部102に入力される。動きベクトル検出部108では、フレームメモリ107に蓄積されたピクチャP10、ピクチャP7、ピクチャP4およびピクチャP13の復号化画像データを参照ピクチャとして用いることにより、マクロブロックペアに含まれる各マクロブロックの第1の動きベクトルと第2の動きベクトルとの検出を行う。モード選択部109では、動きベクトル検出部108で検出された動きベクトルを用いてマクロブロックペアの符号化モードを決定する。ここで、Bピクチャの符号化モードは、例えば、ピクチャ内符号化、一方向動きベクトルを用いたピクチャ間予測符号化、二方向動きベクトルを用いたピクチャ間予測符号化および直接モードから選択することができるものとする。また、直接モード以外の符号化モードを選択する場合には、マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかも併せて決定する。
【0223】
ここでは、直接モードの空間的予測方法を用いて動きベクトルを計算する方法について説明する。図40(a)は、フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。図40(b)は、符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図40(c)は、符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図40(b)および図40(c)に斜線で示すマクロブロックペアは、符号化対象マクロブロックペアである。
【0224】
符号化対象マクロブロックペアが直接モードの空間的予測を用いて符号化される場合、当該符号化対象マクロブロックペアの周辺の3つの符号化済みマクロブロックペアが選択される。この場合、符号化対象マクロブロックペアは、フィールド構造またはフレーム構造のいずれで符号化されてもよい。従って、符号化制御部110は、まず、符号化対象マクロブロックペアをフィールド構造で符号化するか、フレーム構造で符号化するかを決定する。例えば、周辺マクロブロックペアのうちフィールド構造で符号化されたものが多い場合、符号化対象マクロブロックペアをフィールド構造で符号化し、フレーム構造で符号化されたものが多い場合、フレーム構造で符号化する。このように、符号化対象マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかを、周辺ブロックの情報を用いて決定することにより、符号化対象マクロブロックペアをいずれの構造で符号化したかを示す情報を符号列中に記述する必要がなくなり、かつ周囲のマクロブロックペアから構造を予測しているため、適した構造を選択することができる。
【0225】
次いで、動きベクトル検出部108は、符号化制御部110の決定に従って、符号化対象マクロブロックペアの動きベクトルを計算する。まず、動きベクトル検出部108は、符号化制御部110がフィールド構造で符号化すると決定したのか、フレーム構造で符号化すると決定したのかを調べ(S301)、フレーム構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフレーム構造で検出し(S302)、フィールド構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフィールド構造で検出する(S303)。
【0226】
図41は、フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。同図において、白丸は奇数水平走査線上の画素を示し、斜線でハッチングした黒丸は偶数水平走査線上の画素を示している。入力画像を表す各フレームからマクロブロックペアを切り出した場合、図41中央に示すように、奇数水平走査線上の画素と偶数水平走査線上の画素とは垂直方向に交互に配置されている。このようなマクロブロックペアをフレーム構造で符号化する場合、当該マクロブロックペアは2つのマクロブロックMB1およびマクロブロックMB2毎に処理され、マクロブロックペアを構成する2つのマクロブロックMB1とマクロブロックMB2とのそれぞれについて動きベクトルが求められる。また、フィールド構造で符号化する場合、当該マクロブロックペアは、水平走査線方向にインタレースした場合のトップフィールドを表すマクロブロックTFとボトムフィールドを表すマクロブロックBFとに分けられ、その動きベクトルは、マクロブロックペアを構成する2つのフィールドにそれぞれ1つ求められる。
【0227】
このようなマクロブロックペアを前提として、図40(b)に示すように、符号化対象マクロブロックペアをフレーム構造で符号化する場合について説明する。図42は、図40に示したステップS302における、より詳細な処理手順を示すフローチャートである。なお、同図において、マクロブロックペアをMBP、マクロブロックをMBと表記する。
【0228】
モード選択部109は、まず、符号化対象マクロブロックペアを構成する1つのマクロブロックMB1(上部のマクロブロック)について、1つの動きベクトルを直接モードの空間的予測を用いて計算する。まず、モード選択部109は、周辺マクロブロックペアが参照するピクチャのインデックスのうちの最小値を第1動きベクトルと第2動きベクトルのインデックスのそれぞれについて求める(S501)。ただしこの場合、周辺マクロブロックペアがフレーム構造で符号化されている場合には、符号化対象マクロブロックに隣接するマクロブロックのみを用いて決定する。次に、周辺マクロブロックペアがフィールド構造で符号化されているか否かを調べ(S502)、フィールド構造で符号化されている場合にはさらに、当該周辺マクロブロックペアを構成する2つのマクロブロックによって参照されたフィールドのうち、いくつのフィールドが最小のインデックスが付されたフィールドであるかを、図39の参照フレームリストから調べる(S503)。
【0229】
ステップS503において調べた結果、2つのマクロブロックによって参照されたフィールドがいずれも最小のインデックス(すなわち同じインデックス)が付されたフィールドである場合には、2つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする(S504)。これはインタレース構造で考えた場合、フレーム構造の符号化対象マクロブロックには、フィールド構造の周辺マクロブロックペアの2つのマクロブロックが隣接するためである。
【0230】
ステップS503において調べた結果、1つのマクロブロックによって参照されたフィールドのみが最小のインデックスが付されたフィールドである場合には、その1つのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする(S504A)。いずれも、参照されたフィールドが最小のインデックスが付されていないフィールドである場合には、当該周辺マクロブロックペアの動きベクトルを「0」とする(S505)。
【0231】
上記において、周辺マクロブロックの動きベクトルのうち、参照するフィールドが最小のインデックスが付されているフィールドの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。S505の処理は、予測に適した動きベクトルがないと判断していることを示している。
【0232】
ステップS502において調べた結果、当該周辺マクロブロックペアがフレーム構造で符号化されている場合には、当該周辺マクロブロックペアのうち、符号化対象マクロブロックに隣接するマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする(S506)。
【0233】
モード選択部109は、上記ステップS501からステップS506までの処理を、選択された3つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の1つのマクロブロック、例えば、マクロブロックMB1について、3つの周辺マクロブロックペアの動きベクトルがそれぞれ1つずつ求められたことになる。
【0234】
次いで、モード選択部109は、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照しているものが1つであるか否かを調べる(S507)。
【0235】
この場合、モード選択部109は、3つの周辺マクロブロックペアの参照インデックスを参照フレームインデックスまたは参照フィールドインデックスのいずれかに統一して比較する。図39に示した参照フレームリストには、フレームごとに参照インデックスが付されているだけであるが、この参照フレームインデックスと、フィールドごとにインデックスが付されている参照フィールドインデックスとは一定の関係にあるので、参照フレームリストまたは参照フィールドリストの一方から計算によって他方の参照インデックスに変換することができる。
【0236】
図43は、参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【0237】
この図43に示すように、参照フィールドリストには、第1フィールドf1及び第2フィールドf2により示されるフレームが時系列に沿って幾つか存在し、各フレームには、符号化対象ブロックを含むフレーム(図43中ので示すフレーム)を基準に、0,1,2,…といった参照フレームインデックスが割り当てられている。また、各フレームの第1フィールドf1及び第2フィールドf2には、符号化対象ブロックを含むフレームの第1フィールドf1を基準に(第1フィールドが符号化対象フィールドである場合)、0,1,2,…といった参照フィールドインデックスが割り当てられている。なお、この参照フィールドインデックスは、符号化対象フィールドに近いフレームの第1フィールドf1及び第2フィールドf2から、符号化対象ブロックが第1フィールドf1であれば第1フィールドf1を優先させて、符号化対象ブロックが第2フィールドf2であれば第2フィールドf2を優先させて割り当てられる。
【0238】
例えば、フレーム構造で符号化された周辺マクロブロックが参照フレームインデックス「1」のフレームを参照しており、フィールド構造で符号化された周辺ブロックが参照フィールドインデックス「2」の第1フィールドf1を参照しているときには、上記周辺マクロブロックはいずれも同一ピクチャを参照しているとして扱われる。すなわち、1つの周辺マクロブロックによって参照されるフレームの参照フレームインデックスが、他の1つの周辺マクロブロックの参照フィールドに割り当てられた参照フィールドインデックスの二分の一の値に等しい(小数点以下は切り捨て)という前提条件を満たすときに、その周辺マクロブロックは同一のピクチャを参照しているとして扱われる。
【0239】
例えば、図43中の△で示す第1フィールドf1に含まれる符号化対象ブロックが参照フィールドインデックス「2」の第1フィールドf1を参照しており、フレーム構造である周辺マクロブロックが参照フレームインデックス「1」のフレームを参照しているときには、上記前提条件を満たすため、上記周辺ブロックは同一のピクチャを参照しているとして扱われる。一方、ある周辺マクロブロックが参照フィールドインデックス「2」の第1フィールドを参照しており、他の周辺マクロブロックが参照フレームインデックス「3」のフレームを参照しているときには、上記前提条件を満たさないため、その周辺ブロックは同一のピクチャを参照していないとして扱われる。
【0240】
上記のように、ステップS507において調べた結果、1つであれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする(S508)。ステップS507で調べた結果、1つでなければ、さらに、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアが2つ以上あるか否かを調べ(S509)、2つ以上あれば、その中でさらにインデックスが最小のフレームまたはそのフレーム内のフィールドを参照していない周辺マクロブロックペアがあればその動きベクトルを「0」とした上(S510)、周辺マクロブロックペアの3つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする(S511)。また、ステップS509で調べた結果、2つ未満であれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの数は「0」なので、符号化対象マクロブロックの動きベクトルを「0」とする(S512)。
【0241】
以上の処理の結果、符号化対象マクロブロックペアを構成する1つのマクロブロック例えば、MB1について、1つの動きベクトルMV1が計算結果として得られる。モード選択部109は、上記処理を、第2の参照インデックスを有する動きベクトルについても行い、得られた2つの動きベクトルを用いて2方向予測により動き補償を行う。ただし、周辺マクロブロックペアのうち、第1または第2の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、1方向のみの動きベクトルにより動き補償を行う。また、符号化対象マクロブロックペア内のもう1つのマクロブロック、例えば、マクロブロックMB2についても同じ処理を繰り返す。この結果、1つの符号化対象マクロブロックペアにおける2つの各マクロブロックについて、直接モードによる動き補償を行ったことになる。
【0242】
次に、図40(c)のように、符号化対象マクロブロックペアをフィールド構造で符号化する場合について説明する。図44は、図40に示したステップS303における、より詳細な処理手順を示すフローチャートである。モード選択部109は、符号化対象マクロブロックペアを構成する1つのマクロブロック、例えば、当該マクロブロックペアのトップフィールドに対応するマクロブロックTFについて、1つの動きベクトルMVtを直接モードの空間的予測を用いて計算する。まず、モード選択部109は、周辺マクロブロックペアが参照するピクチャのインデックスのうち最小値を求める(S601)。ただし、周辺マクロブロックペアがフィールド構造で処理されている場合には、符号化対象マクロブロックと同一フィールド(トップフィールドまたはボトムフィールド)のマクロブロックについてのみ考える。次いで、周辺マクロブロックペアがフレーム構造で符号化されているか否かを調べ(S602)、フレーム構造で符号化されている場合にはさらに、当該周辺マクロブロックペア内の2つのマクロブロックによって参照されたフレームがいずれも最小のインデックスが付されたフレームであるか否かを、参照フレームリスト300によって各フレームに付与されたインデックスの値を基に判断する(S603)。
【0243】
ステップS603において調べた結果、2つのマクロブロックによって参照されたフレームがいずれも最小のインデックスである場合には、2つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする(S604)。ステップS603において調べた結果、一方または両方とも、参照したフレームが最小のインデックスを有しないフレームである場合には、さらに、いずれかのマクロブロックによって参照されたフレームが最小のインデックスを有しているか否かを調べ(S605)、調べた結果、いずれか一方のマクロブロックが参照したフレームに最小のインデックスが付されている場合には、そのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとし(S606)、ステップS605で調べた結果、いずれのマクロブロックも、参照したフレームに最小のインデックスが付されていない場合には、当該周辺マクロブロックペアの動きベクトルを「0」とする(S607)。上記において、周辺マクロブロックの動きベクトルのうち、参照するフレームが最小のインデックスが付されているフレームの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。S607の処理は、予測に適した動きベクトルがないと判断していることを示している。
【0244】
また、ステップS602において調べた結果、当該周辺マクロブロックペアがフィールド構造で符号化されている場合には、当該周辺マクロブロックペア全体の動きベクトルを、当該周辺マクロブロックペアにおいて、符号化対象マクロブロックペア内の対象マクロブロックに対応するマクロブロックの動きベクトルとする(S608)。モード選択部109は、上記ステップS601からステップS608までの処理を、選択された3つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の1つのマクロブロック、例えば、マクロブロックTFについて、3つの周辺マクロブロックペアの動きベクトルがそれぞれ1つずつ求められたことになる。
【0245】
次いで、動きベクトル検出部108は、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照しているものが1つであるか否かを調べ(S609)、1つであれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする(S610)。ステップS609で調べた結果、1つでなければ、さらに、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照した周辺マクロブロックペアが2つ以上あるか否かを調べ(S611)、2つ以上あれば、その中でさらにインデックスが最小のフレームを参照していない周辺マクロブロックペアの動きベクトルを「0」とした上(S612)、周辺マクロブロックペアの3つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする(S613)。また、ステップS611で調べた結果、2つ未満であれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの数は「0」なので、符号化対象マクロブロックの動きベクトルを「0」とする(S614)。
【0246】
以上の処理の結果、符号化対象マクロブロックペアを構成する1つのマクロブロック例えば、トップフィールドに対応するマクロブロックTFについて、1つの動きベクトルMVtが計算結果として得られる。モード選択部109は、上記処理を、第2の動きベクトル(第2の参照インデックスに対応)についても繰り返す。これにより、マクロブロックTFについて2つの動きベクトルが得られ、これらの動きベクトルを用いて2方向予測による動き補償を行う。ただし、周辺マクロブロックペアのうち、第1または第2の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、1方向のみの動きベクトルにより動き補償を行う。これは、周辺マクロブロックペアが一方向のみしか参照していないということは、符号化対象マクロブロックについても一方向のみを参照する方が、符号化効率が高くなると考えられるからである。
【0247】
また、符号化対象マクロブロックペア内のもう1つのマクロブロック、例えば、ボトムフィールドに対応するマクロブロックBFについても同じ処理繰り返す。この結果、1つの符号化対象マクロブロックペアにおける2つの各マクロブロック、例えば、マクロブロックTFとマクロブロックBFとについて、直接モードによる処理を行ったことになる。
【0248】
なお、ここでは符号化対象マクロブロックペアの符号化構造と周辺マクロブロックペアの符号化構造とが異なる場合には、周辺マクロブロックペア内の2つのマクロブロックの動きベクトルの平均値を求めるなどの処理を行って計算したが、本発明はこれに限定されず、例えば、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用い、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が異なる場合には、符号化構造が異なる周辺マクロブロックペアの動きベクトルを用いないとしてもよい。より具体的には、まず、▲1▼符号化対象マクロブロックペアがフレーム構造で符号化される場合、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「0」とする。また、周辺マクロブロックペアがフィールド構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「0」とする。次に▲2▼符号化対象マクロブロックペアがフィールド構造で符号化される場合、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「0」とする。また、周辺マクロブロックペアがフレーム構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「0」とする。このようにして各周辺マクロブロックペアの動きベクトルを計算した後、▲3▼これらの動きベクトルのうち、最小のインデックスを有するフレームまたはそのフィールドを参照して得られたものが1つだけの場合は、その動きベクトルを直接モードにおける符号化対象マクロブロックペアの動きベクトルとし、そうでない場合には、3つの動きベクトルの中央値を直接モードにおける符号化対象マクロブロックペアの動きベクトルとする。
【0249】
また、上記説明では、符号化対象マクロブロックペアをフィールド構造で符号化するかフレーム構造で符号化するかを、符号化済みの周辺マクロブロックペアの符号化構造の多数決で決定したが、本発明はこれに限定されず、例えば、直接モードでは、必ずフレーム構造で符号化する、または必ずフィールド構造で符号化するというように固定的に定めておいてもよい。この場合、例えば、符号化対象となるフレームごとにフィールド構造で符号化するかまたはフレーム構造で符号化するかを切り替える場合には、符号列全体のヘッダまたはフレームごとのフレームヘッダなどに記述するとしてもよい。切り替えの単位は、例えば、シーケンス、GOP、ピクチャ、スライスなどであってもよく、この場合には、それぞれ符号列中の対応するヘッダなどに記述しておけばよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。更に、パケット等で伝送する場合はヘッダ部とデータ部を分離して別に伝送してもよい。その場合は、ヘッダ部とデータ部が1つのビットストリームとなることはない。しかしながら、パケットの場合は、伝送する順序が多少前後することがあっても、対応するデータ部に対応するヘッダ部が別のパケットで伝送されるだけであり、1つのビットストリームとなっていなくても同じである。このように、フレーム構造を用いるのかフィールド構造を用いるのかを固定的に定めることにより、周辺ブロックの情報を用いて構造を決定する処理がなくなり、処理の簡略化を図ることができる。
【0250】
またさらには、直接モードにおいて、符号化対象マクロブロックペアをフレーム構造とフィールド構造の両者で処理し、符号化効率が高い構造を選択する方法を用いてもよい。この場合、フレーム構造とフィールド構造のいずれを選択したかは、符号列中のマクロブロックペアのヘッダ部に記述すればよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。このような方法を用いることにより、フレーム構造とフィールド構造のいずれを選択したかを示す情報が符号列中に必要となるが、動き補償の残差信号をより削減することが可能となり、符号化効率の向上を図ることができる。
【0251】
また上記の説明においては、周辺マクロブロックペアはマクロブロックの大きさを単位として動き補償されている場合について説明したが、これは異なる大きさを単位として動き補償されていてもよい。この場合、図45(a)、(b)に示すように、符号化対象マクロブロックペアのそれぞれのマクロブロックに対して、a、b、cに位置する画素を含むブロックの動きベクトルを周辺マクロブロックペアの動きベクトルとする。ここで図45(a)は、上部のマクロブロックを処理する場合を示し、図45(b)は下部のマクロブロックを処理する場合を示している。ここで、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、図46(a)、(b)に示すようなa、b、cの位置の画素を含むブロックと位置a’、b’、c’の画素を含むブロックとを用いて処理を行う。ここで位置a’、b’、c’は、画素a、b、cの位置に対応する同一マクロブロックペア内のもう一方のマクロブロックに含まれるブロックである。例えば図46(a)の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、BL1とBL2の動きベクトルを用いて決定する。また、図46(b)の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、BL3とBL4の動きベクトルを用いて決定する。このような処理方法を用いることにより、周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【0252】
また、周辺マクロブロックペアがマクロブロックの大きさとは異なる大きさを単位として動き補償されている場合には、マクロブロックに含まれるブロックの動きベクトルの平均値を求めることにより、そのマクロブロックの動きベクトルとしても良い。周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【0253】
さて、上記のように、動きベクトルが検出され、検出され動きベクトルに基づいてピクチャ間予測符号化が行われた結果、動きベクトル検出部108によって検出された動きベクトル、符号化された予測誤差画像は、マクロブロックごとに符号列中に格納される。ただし、直接モードで符号化されたマクロブロックの動きベクトルについては、単に直接モードで符号化されたことが記述されるだけで、動きベクトルおよび参照インデックスは符号列に記述されない。図47は、符号列生成部104によって生成される符号列700のデータ構成の一例を示す図である。同図のように、符号列生成部104によって生成された符号列700には、ピクチャPictureごとにヘッダHeaderが設けられている。このヘッダHeaderには、例えば、参照フレームリスト10の変更を示す項目RPSLおよび当該ピクチャのピクチャタイプを示す図示しない項目などが設けられており、項目RPSLには、参照フレームリスト10の第1参照インデックス12および第2参照インデックス13の値の割り当て方に初期設定から変更があった場合、変更後の割り当て方が記述される。
【0254】
一方、符号化された予測誤差は、マクロブロックごとに記録される。例えば、あるマクロブロックが直接モードの空間的予測を用いて符号化されている場合には、そのマクロブロックに対応する予測誤差を記述する項目Block1において、当該マクロブロックの動きベクトルは記述されず、当該マクロブロックの符号化モードを示す項目PredTypeに符号化モードが直接モードであることを示す情報が記述される。また、当該マクロブロックペアがフレーム構造またはフィールド構造のいずれで符号化するかを前述の符号化効率の観点から選択するような場合には、フレーム構造またはフィールド構造のいずれが選択されたかを示す情報が記述される。これに続いて、符号化された予測誤差が項目CodedResに記述される。また、別のマクロブロックがピクチャ間予測符号化モードで符号化されたマクロブロックである場合、そのマクロブロックに対応する予測誤差を記述する項目Block2の中の符号化モードを示す項目PredTypeに、当該マクロブロックの符号化モードがピクチャ間予測符号化モードであることが記述される。この場合、符号化モードのほか、さらに、当該マクロブロックの第1参照インデックス12が項目Ridx0に、第2参照インデックス13が項目Ridx1に書き込まれる。ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられている。また、続いて、当該マクロブロックの前方フレーム参照時の動きベクトルが項目MV0に、後方フレーム参照時の動きベクトルが項目MV1に記述される。これに続いて、符号化された予測誤差が項目CodedResに記述される。
【0255】
図48は、図47に示した符号列700を復号化する動画像復号化装置800の構成を示すブロック図である。動画像復号化装置800は、直接モードで符号化されたマクロブロックを含んだ予測誤差が記述されている符号列700を復号化する動画像復号化装置であって、符号列解析部701、予測誤差復号化部702、モード復号部703、動き補償復号部705、動きベクトル記憶部706、フレームメモリ707、加算演算部708、スイッチ709及びスイッチ710、動きベクトル復号化部711を備える。符号列解析部701は、入力された符号列700から各種データを抽出する。ここでいう各種データとは、符号化モードの情報および動きベクトルに関する情報などである。抽出された符号化モードの情報は、モード復号部703に出力される。また、抽出された動きベクトル情報は、動きベクトル復号化部711に出力される。さらに、抽出された予測誤差符号化データは、予測誤差復号化部702に対して出力される。予測誤差復号化部702は、入力された予測誤差符号化データの復号化を行い、予測誤差画像を生成する。生成された予測誤差画像はスイッチ709に対して出力される。例えば、スイッチ709が端子bに接続されているときには、予測誤差画像は加算器708に対して出力される。
【0256】
モード復号部703は、符号列から抽出された符号化モード情報を参照し、スイッチ709とスイッチ710との制御を行う。符号化モードがピクチャ内符号化である場合には、スイッチ709を端子aに接続し、スイッチ710を端子cに接続するように制御する。
符号化モードがピクチャ間符号化である場合には、スイッチ709を端子bに接続し、スイッチ710を端子dに接続するように制御する。さらに、モード復号部703では、符号化モードの情報を動き補償復号部705と動きベクトル復号化部711に対しても出力する。動きベクトル復号化部711は、符号列解析部701から入力された、符号化された動きベクトルに対して、復号化処理を行う。復号化された参照ピクチャ番号と動きベクトルは、動きベクトル記憶部706に保持されると同時に、動き補償復号部705に対して出力される。
【0257】
符号化モードが直接モードである場合には、モード復号部703は、スイッチ709を端子bに接続し、スイッチ710を端子dに接続するように制御する。さらに、モード復号部703では、符号化モードの情報を動き補償復号部705と動きベクトル復号化部711に対しても出力する。動きベクトル復号化部711は、符号化モードが直接モードである場合、動きベクトル記憶部706に記憶されている周辺マクロブロックペアの動きベクトルと参照ピクチャ番号とを用いて、直接モードで用いる動きベクトルを決定する。この動きベクトルの決定方法は、図37のモード選択部109の動作で説明した内容と同様であるので、ここでは説明は省略する。
【0258】
復号化された参照ピクチャ番号と動きベクトルとに基づいて、動き補償復号部705は、フレームメモリ707からマクロブロックごとに動き補償画像を取得する。取得された動き補償画像は加算演算部708に出力される。フレームメモリ707は、復号化画像をフレームごとに保持するメモリである。加算演算部708は、入力された予測誤差画像と動き補償画像とを加算し、復号化画像を生成する。生成された復号化画像は、フレームメモリ707に対して出力される。
【0259】
以上のように、本実施の形態によれば、直接モードの空間的予測方法において、符号化対象マクロブロックペアに対する符号化済み周辺マクロブロックペアに、フレーム構造で符号化されたものとフィールド構造で符号化されたものとが混在する場合においても、容易に動きベクトルを求めることができる。
【0260】
なお、上記の実施の形態においては、各ピクチャはマクロブロックを垂直方向に2つ連結したマクロブロックペアの単位で、フレーム構造またはフィールド構造のいずれかを用いて処理される場合について説明したが、これは、異なる単位、例えばマクロブロック単位でフレーム構造またはフィールド構造を切り替えて処理しても良い。
【0261】
また、上記の実施の形態においては、Bピクチャ中のマクロブロックを直接モードで処理する場合について説明したが、これはPピクチャでも同様の処理を行うことができる。Pピクチャの符号化・復号化時においては、各ブロックは1つのピクチャからのみ動き補償を行い、また参照フレームリストは1つしかない。そのため、Pピクチャでも本実施の形態と同様の処理を行うには、本実施の形態において符号化・復号化対象ブロックの2つの動きベクトル(第1の参照フレームリストと第2の参照フレームリスト)を求める処理を、1つの動きベクトルを求める処理とすれば良い。
【0262】
また、上記の実施の形態においては、3つの周辺マクロブロックペアの動きベクトルを用いて、直接モードで用いる動きベクトルを予測生成する場合について説明したが、用いる周辺マクロブロックペアの数は異なる値であっても良い。例えば、左隣の周辺マクロブロックペアの動きベクトルのみを用いるような場合が考えられる。
【0263】
(実施の形態12)
さらに、上記各実施の形態で示した画像符号化方法および画像復号化方法の構成を実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
【0264】
図49は、上記実施の形態1から実施の形態11の画像符号化方法および画像復号化方法をコンピュータシステムにより実現するためのプログラムを格納するための記憶媒体についての説明図である。
【0265】
図49(b)は、フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示し、図49(a)は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクFDはケースF内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。従って、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクFD上に割り当てられた領域に、上記プログラムとしての画像符号化方法および画像復号化方法が記録されている。
【0266】
また、図49(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsから上記プログラムとしての画像符号化方法および画像復号化方法をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記画像符号化方法および画像復号化方法をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
【0267】
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、CD−ROM、メモリカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
【0268】
さらにここで、上記実施の形態で示した画像符号化方法や画像復号化方法の応用例とそれを用いたシステムを説明する。
【0269】
図50は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
【0270】
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
【0271】
しかし、コンテンツ供給システムex100は図50のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
【0272】
カメラex113はディジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband−Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
【0273】
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラex116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はディジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画像符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
【0274】
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
【0275】
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画像符号化装置あるいは画像復号化装置を用いるようにすればよい。
【0276】
その一例として携帯電話について説明する。
【0277】
図51は、上記実施の形態で説明した画像符号化方法と画像復号化方法を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したものである。
【0278】
さらに、携帯電話ex115について図52を用いて説明する。携帯電話ex115は表示部ex202及び操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306及び音声処理部ex305が同期バスex313を介して互いに接続されている。
【0279】
電源回路部ex310は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ex115を動作可能な状態に起動する。
【0280】
携帯電話ex115は、CPU、ROM及びRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってディジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信データを増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声データに変換した後、これを音声出力部ex208を介して出力する。
【0281】
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
【0282】
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303及びLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
【0283】
画像符号化部ex312は、本願発明で説明した画像符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画像符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してディジタルの音声データとして多重分離部ex308に送出する。
【0284】
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。
【0285】
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信データを変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
【0286】
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データのビットストリームと音声データのビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
【0287】
次に、画像復号化部ex309は、本願発明で説明した画像復号化装置を備えた構成であり、画像データのビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声データに変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
【0288】
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図53に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報のビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置によりビットストリームを復号化してこれを再生する。また、記録媒体であるCDやDVD等の蓄積メディアex402に記録したビットストリームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画像復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画像復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画像復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
【0289】
更に、画像信号を上記実施の形態で示した画像符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある。更にSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画像復号化装置を備えていれば、DVDディスクex421やSDカードex422に記録した画像信号を再生し、モニタex408で表示することができる。
【0290】
なお、カーナビゲーションex413の構成は例えば図52に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
【0291】
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
【0292】
このように、上記実施の形態で示した動画像符号化方法あるいは動画像復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
【0293】
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
【0294】
本発明に係る画像符号化装置は、通信機能を備えるパーソナルコンピュータ、PDA、ディジタル放送の放送局および携帯電話機などに備えられる画像符号化装置として有用である。
【0295】
また、本発明に係る画像復号化装置は、通信機能を備えるパーソナルコンピュータ、PDA、ディジタル放送を受信するSTBおよび携帯電話機などに備えられる画像復号化装置として有用である。
【0296】
【発明の効果】
以上、本発明の動きベクトル計算方法によると、ピクチャ間予測符号化を行うブロックが符号化済みの別のピクチャの同じ位置にあるブロックの動きベクトルを参照して動き補償を行う際に、動きベクトルを参照されるブロックが複数の動きベクトルを有していた場合、前記複数の動きベクトルからスケーリングに用いるための1つの動きベクトルを生成することによって、前記動き補償を矛盾無く実現することを可能とする。また、動きベクトルのスケーリング時に除算演算が行われるが、除算結果が予め定められた動きベクトルの精度と一致するように演算を施すことが可能となる。
【図面の簡単な説明】
【図1】ピクチャ番号と参照インデックスの説明図である。
【図2】従来の画像符号化装置による画像符号化信号フォーマットの概念を示す図である。
【図3】本発明の実施の形態1および実施の形態2による符号化の動作を説明するためのブロック図である。
【図4】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図5】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図6】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図7】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図8】本発明の実施の形態5および実施の形態6による復号化の動作を説明するためのブロック図である。
【図9】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図10】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図11】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図12】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図13】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図14】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図15】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図16】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図17】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図18】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図19】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する1つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図20】直接モードにおいて周辺ブロックの動きベクトルを参照する場合の動作を説明するための模式図である。
【図21】符号化列を示す図である。
【図22】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図23】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図24】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図25】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図26】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図27】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図28】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図29】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図30】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図31】直接モードにおいて使用する動きベクトルを決定する手順を示す図である。
【図32】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図33】参照インデックスの値によって符号化対象ブロックの動きベクトルを決定する手順を示す図である。
【図34】長時間メモリに保存されているピクチャを参照する動きベクトルが1つだけの場合の直接モードにおける2方向予測を示す図である。
【図35】長時間メモリに保存されているピクチャを参照する動きベクトルが2つある場合の直接モードにおける2方向予測を示す図である。
【図36】動きベクトル計算方法の処理の流れを示す図である。
【図37】本発明の実施形態11に係る動画像符号化装置1100の構成を示すブロック図である。
【図38】(a)動画像符号化装置1100に時間順にピクチャ単位で入力されるフレームの順序を示す図である。
(b)図38(a)に示したフレームの並びを符号化の順に並び替えた場合の順序を示す図である。
【図39】第1の実施の形態を説明するための、参照ピクチャリストの構造を示す図である。
【図40】(a)フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。
(b)符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
(c)符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
【図41】フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。
【図42】図40に示したステップS302における、より詳細な処理手順を示すフローチャートである。
【図43】参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【図44】図40に示したステップS303における、より詳細な処理手順を示すフローチャートである。
【図45】第1の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図46】第1の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図47】符号列生成部1104によって生成される符号列700のデータ構成の一例を示す図である。
【図48】図47に示した符号列700を復号化する動画像復号化装置1800の構成を示すブロック図である。
【図49】(a)記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示す図である。
(b)フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示す図である。
(c)フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す図である。
【図50】コンテンツ配信サービスを実現するコンテンツ供給システムの全体構成を示すブロック図である。
【図51】携帯電話の外観の一例を示す図である。
【図52】携帯電話の構成を示すブロック図である。
【図53】上記実施の形態で示した符号化処理または復号化処理を行う機器、およびこの機器を用いたシステムを説明する図である。
【図54】従来例のピクチャの参照関係を説明するための模式図である。
【図55】従来例の直接モードの動作を説明するための模式図である。
【図56】(a)従来の直接モードの空間的予測方法を用い、Bピクチャにおいて時間的前方ピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。
(b)各符号化対象ピクチャに作成される参照ピクチャリストの一例を示す図である。
【符号の説明】
101、105 フレームメモリ
102 予測残差符号化部
103 符号化列生成部
104 予測残差復号化部
106 動きベクトル検出部
107 モード選択部
108 動きベクトル記憶部
109 差分演算部
110 加算演算部
111、112 スイッチ
601 符号列解析部
602 予測残差復号化部
603 フレームメモリ
604 動き補償復号部
605 動きベクトル記憶部
606 加算演算部
607 スイッチ
608 予測モード/動きベクトル復号化部
【発明の属する技術分野】
本発明は、動画像の符号化方法および復号化方法に関するものであり、特に既に符号化済みの表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照して予測符号化を行う方法に関するものである。
【0002】
【従来の技術】
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで時間的な冗長性の削減を目的とするピクチャ間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および動き補償を行い、得られた予測画像と現在のピクチャとの差分値に対して符号化を行う。
【0003】
現在標準化中の動画像符号化方法であるH.26Lでは、ピクチャ内予測符号化をのみを行うピクチャ(Iピクチャ)、および1枚のピクチャを参照してピクチャ間予測符号化を行うピクチャ(以下、Pピクチャ)、さらに表示時間順で前方にある2枚のピクチャもしくは表示時間順で後方にある2枚のピクチャもしくは表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照してピクチャ間予測符号化を行うピクチャ(以下、Bピクチャ)が提案されている。
【0004】
図54は上記の動画像符号化方法における各ピクチャと、それによって参照されるピクチャとの参照関係の例を示す図である。
【0005】
ピクチャI1は参照ピクチャを持たずピクチャ内予測符号化を行い、ピクチャP10は表示時間順で前方にあるP7を参照しピクチャ間予測符号化を行っている。また、ピクチャB6は表示時間順で前方にある2つのピクチャを参照し、ピクチャB12は表示時間順で後方にある2つのピクチャを参照し、ピクチャB18は表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行っている。
【0006】
表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行う2方向予測の1つの予測モードとして直接モードがある。直接モードでは符号化対象のブロックに直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し予測画像を作成する。
【0007】
図55は直接モードにおいて動きベクトルを決定するために参照した符号化済みのピクチャが、表示時間順で前方にある1枚のピクチャのみを参照する動きベクトルを持っていた場合の例を示したものである。同図において、垂直方向の線分で示す「P」はピクチャタイプとは関係なく、単なるピクチャを示している。同図では、例えば、ピクチャP83が現在符号化の対象とされているピクチャでありピクチャP82およびピクチャP84を参照ピクチャとして2方向予測を行う。このピクチャP83において符号化を行うブロックをブロックMB81とすると、ブロックMB81の動きベクトルは、符号化済みの後方参照ピクチャであるピクチャP84の同じ位置にあるブロックMB82の持つ動きベクトルを用いて決定される。このブロックMB82は動きベクトルとして動きベクトルMV81の1つだけを有するため、求める2つの動きベクトルMV82および動きベクトルMV83は式1(a)および(b)に基づいて直接、動きベクトルMV81および時間間隔TR81に対してスケーリングを適用することによって算出される。
【0008】
MV82=MV81/TR81×TR82 ‥‥式1(a)
MV83=−MV81/TR81×TR83 ‥‥式1(b)
なお、このとき時間間隔TR81はピクチャP84からピクチャP82まで、つまり、ピクチャP84から、動きベクトルMV81が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔TR82は、ピクチャP83から、動きベクトルMV82が指し示す参照ピクチャまでの時間の間隔を示している。さらに、時間間隔TR83は、ピクチャP83から、動きベクトルMV83が指し示す参照ピクチャまでの時間の間隔を示している。
【0009】
また、直接モードには、すでに説明した時間的予測と、空間的予測との2つの方法があるが、以下では、空間的予測について説明する。直接モードの空間的予測では、例えば、16画素×16画素で構成されるマクロブロックを単位として符号化を行い、符号化対象マクロブロックの周辺3マクロブロックの動きベクトルのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照して求められた動きベクトルの1つを選択し、選択された動きベクトルを符号化対象マクロブロックの動きベクトルとする。3つの動きベクトルがすべて同じピクチャを参照している場合はそれらの中央値を選択する。3つのうち2つが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合には残りの1つを「0」ベクトルとみなして、それらの中央値を選択する。また、1つだけが符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照している場合にはその動きベクトルを選択する。このように直接モードでは、符号化対象のマクロブロックに対して動きベクトルを符号化せず、他のマクロブロックが有する動きベクトルを用いて動き予測を行う。
【0010】
図56(a)は、従来の直接モードの空間的予測方法を用い、Bピクチャにおいて表示時間順で前方のピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。同図において、PはPピクチャ、BはBピクチャを示し、右側4ピクチャのピクチャタイプに付されている数字は各ピクチャが符号化された順番を示している。ここでは、ピクチャB4において斜線を付したマクロブロックが符号化対象となっているものとする。符号化対象マクロブロックの動きベクトルを、直接モードの空間的予測方法を用いて計算する場合、まず、符号化対象マクロブロックの周辺から、3つの符号化済みのマクロブロック(破線部)を選択する。ここでは、周辺3マクロブロックの選択方法は説明を省略する。符号化済みの3マクロブロックの動きベクトルはすでに計算され保持されている。この動きベクトルは同一ピクチャ中のマクロブロックであっても、マクロブロックごとに異なるピクチャを参照して求められている場合がある。この周辺3マクロブロックが、それぞれどのピクチャを参照したかは、各マクロブロックを符号化する際に用いた参照ピクチャの参照インデックスによって知ることができる。参照インデックスについての詳細は後述する。
【0011】
さて、例えば、図56(a)に示した符号化対象マクロブロックに対して、周辺3マクロブロックが選択され、各符号化済みマクロブロックの動きベクトルがそれぞれ動きベクトルa、動きベクトルbおよび動きベクトルcであったとする。これにおいて、動きベクトルaと動きベクトルbとはピクチャ番号11が「11」のPピクチャを参照して求められ、動きベクトルcはピクチャ番号11が「8」のPピクチャを参照して求められていたとする。この場合、これらの動きベクトルa、bおよびcのうち、符号化対象ピクチャから表示時間順で最も近い距離にあるピクチャを参照した動きベクトルである動きベクトルa、bの2つが符号化対象マクロブロックの動きベクトルの候補となる。この場合、動きベクトルcを「0」とみなし、動きベクトルa、動きベクトルbおよび動きベクトルcの3つのうちの中央値を選択し、符号化対象マクロブロックの動きベクトルとする。
【0012】
ただし、MPEG‐4などの符号化方式では、ピクチャ内の各マクロブロックを、インタレースを行うフィールド構造で符号化してもよいし、インタレースを行わないフレーム構造で符号化を行ってもよい。従って、MPEG‐4などでは、参照フレーム1フレーム中には、フィールド構造で符号化されたマクロブロックと、フレーム構造で符号化されたマクロブロックとが混在する場合が生じる。このような場合でも、符号化対象マクロブロックの周辺3マクロブロックがいずれも符号化対象マクロブロックと同じ構造で符号化されていれば、前述の直接モードの空間的予測方法を用いて問題なく符号化対象マクロブロックの動きベクトルを1つ導出することができる。すなわち、フレーム構造で符号化される符号化対象マクロブロックに対して、周辺3マクロブロックもまたフレーム構造で符号化されている場合、または、フィールド構造で符号化される符号化対象マクロブロックに対して、周辺3マクロブロックもまたフィールド構造で符号化されている場合である。前者の場合は、すでに説明した通りである。また、後者の場合は、符号化対象マクロブロックのトップフィールドに対応しては、周辺3マクロブロックのトップフィールドに対応した3つの動きベクトルを用いることにより、また、符号化対象マクロブロックのボトムフィールドに対応しては、周辺3マクロブロックのボトムフィールドに対応した3つの動きベクトルを用いることにより、トップフィールドとボトムフィールドとのそれぞれについて、前述の方法で、符号化対象マクロブロックの動きベクトルを導出することができる。
【0013】
【非特許文献1】
MPEG−4ビジュアル規格書(1999年、ISO/IEC 14496−2:1999 Information technology −− Coding of audio−visual objects −− Part2: Visual
【0014】
【発明が解決しようとする課題】
しかしながら、直接モードの時間的予測の場合、ピクチャ間予測符号化を行うブロックが直接モードによって動き補償を行う際に、動きベクトルを参照されるブロックが図54のB6のようなBピクチャに属していたとき、前記ブロックは複数の動きベクトルを有するため式1に基づいたスケーリングによる動きベクトルの算出を直接適用することができないという問題が発生する。また、動きベクトルの算出後に除算演算を行うことから、動きベクトル値の精度(例えば1/2画素や1/4画素精度)が、予め定められた精度に一致しない場合が生じる。
【0015】
また、空間的予測の場合、符号化対象マクロブロックと周辺マクロブロックのいずれかが異なる構造で符号化されている場合、符号化対象マクロブロックをフィールド構造およびフレーム構造のいずれの構造で符号化するかは規定されておらず、また、フィールド構造で符号化されたものとフレーム構造で符号化されたものとが混在するような周辺マクロブロックの動きベクトルのうちから、符号化対象マクロブロックの動きベクトルを選択する方法も規定されていない。
【0016】
本発明の第1の目的は、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける精度の良い時間方向の動きベクトル予測方法を提供することである。
【0017】
また、本発明の第2の目的は、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける精度の良い空間方向の動きベクトル予測方法を提供することである。
【0018】
【課題を解決するための手段】
上記目的を達成するために本発明の動きベクトル計算方法は、複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照することができる参照ステップと、ピクチャ間予測を行うブロックが属するピクチャとは別のピクチャの前記ブロックと同じ位置にあるブロックの動きベクトルを参照して、前記ピクチャ間予測を行うブロックの動き補償を行う場合に、前記動きベクトルを参照されるブロックに対してすでに求められている動きベクトルのうち、所定の条件を満足する少なくとも1つの動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する動き補償ステップとを含む。従って、動きベクトルを参照されるブロックが、複数のピクチャを参照してピクチャ間予測を行うBピクチャに属するブロックである場合であっても、前記所定の条件に従って、動きベクトルを参照されるブロックが有する複数の動きベクトルのうちから、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき1つを決定し、スケーリングによる動きベクトルの算出を適用することができる。これにより、本発明の第1の目的を達成することができる。
【0019】
また、本発明の前記動きベクトル計算方法において、前記参照ステップでは、表示時間順で前方にあるピクチャを優先して識別番号を昇順で付与された第1のピクチャの並びと、表示時間順で後方にあるピクチャを優先して識別番号を昇順で付与された第2のピクチャの並びとから、それぞれ1つのピクチャを参照することができ、前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて前記第1の並びにあるピクチャを参照する動きベクトルを用いるとしてもよい。これにおいて、動きベクトルを参照されるブロックが前記Bピクチャに属するブロックである場合でも、前記ピクチャ間予測を行うブロックの動き補償を行う場合に用いるべき1つを、前記第1の並びにあるピクチャを参照する動きベクトルに決定し、スケーリングによる動きベクトルの算出を適用することができる。従って、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い時間方向の動きベクトル予測方法を提供することができる。
【0020】
さらに、本発明の他の動きベクトル計算方法は、記憶部に格納されている複数の符号化済ピクチャから符号化対象ピクチャ上のブロックを動き補償により求めるときに参照する第1の参照ピクチャと第2の参照ピクチャのうち少なくとも一方の参照ピクチャを選択するときに用いる第1参照インデックスまたは第2参照インデックスを前記符号化済ピクチャに対して付与する付与ステップと、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第1参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第1選択ステップと、前記第1選択ステップで選択された動きベクトルを用いて前記符号化対象ピクチャより表示時間順で、前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出する導出ステップとを含む。従って、前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第1参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを用いて、前記符号化対象ピクチャ上のブロックの動きベクトルを導出することができる。これにより、本発明の第2の目的を達成することができる。
【0021】
また、本発明の前記動きベクトル計算方法において、前記第1選択ステップでは、第1参照インデックスを有する動きベクトルのうち、さらに、第1参照インデックスの値が最小のものの中央値を示す動きベクトルを選択するとしてもよい。これにより、動きベクトルを参照されるブロックがBピクチャに属するブロックである場合でも、直接モードにおける、より精度の良い空間方向の動きベクトル予測方法を提供することができる。
【0022】
【発明の実施の形態】
本発明は従来の技術の問題点を解決するものであり、直接モードにおいて、動きベクトルを参照するブロックがBピクチャに属する場合でも矛盾無く動き補償に用いる動きベクトルを決定することを可能とする動画像の符号化方法および復号化方法を提案することを目的とする。ここで、まず参照インデックスについて説明する。
【0023】
図56(b)は、各符号化対象ピクチャに作成される参照ピクチャリスト10の一例を示す図である。図56(b)に示す参照ピクチャリスト10には、1つのBピクチャを中心として、時間的にその前後に表示され、そのBピクチャが参照可能な周辺ピクチャと、それらのピクチャタイプ、ピクチャ番号11、第1参照インデックス12および第2参照インデックス13が示されている。ピクチャ番号11は、例えば、各ピクチャが符号化された順序を示す番号である。第1参照インデックス12は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第1のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で前方のピクチャを参照する場合のインデックスとして用いられる。この第1参照インデックス12のリストは、「参照インデックスリスト0(list0)」または「第1参照インデックスリスト」と呼ばれる。また、参照インデックスは相対インデックスとも呼ばれる。図56(b)の参照ピクチャリスト10では、第1参照インデックス12の値には、まず、符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より「0」から「1」ずつ繰り上がる整数値が割り当てられる。符号化対象ピクチャより前の表示時刻を持つ参照ピクチャすべてに対して「0」から「1」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。
【0024】
第2参照インデックス13は、符号化対象ピクチャに対する周辺ピクチャの相対的位置関係を示す第2のインデックスであって、例えば主に符号化対象ピクチャが表示時間順で後方のピクチャを参照する場合のインデックスとして用いられる。この第2参照インデックス13のリストは、「参照インデックスリスト1(list1)」または「第2参照インデックスリスト」と呼ばれる。第2参照インデックス13の値には、まず、符号化対象ピクチャより後の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順より、「0」から「1」ずつ繰り上がる整数値が割り当てられる。符号化対象より後の表示時刻を持つ参照ピクチャすべてに対し「0」から「1」ずつ繰り上がる値が割り当てられたら、次に符号化対象ピクチャより前の表示時刻を持つ参照ピクチャに対し、符号化対象ピクチャに表示時間順で近い順から続きの値が割り当てられる。従って、この参照ピクチャリスト10をみれば、第1参照インデックス12、第2参照インデックス13は、参照インデックスの値が小さい参照ピクチャほど符号化対象ピクチャに表示時間順で近接していることがわかる。以上では、参照インデックスの初期状態での番号の割り当て方について説明したが、参照インデックスの番号の割り当て方はピクチャ単位やスライス単位で変更することが可能である。参照インデックスの番号の割り当て方は、例えば、表示時間順で離れたピクチャに対して小さい番号を割り当てることもできるが、そのような参照インデックスは、例えば、表示時間順で離れたピクチャを参照する方が、符号化効率が向上するような場合に用いられる。すなわち、ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられているので、参照することにより符号化効率が向上するピクチャに対して、より小さな参照インデックスを割り当てることにより、参照インデックスの符号量を減らし、さらに符号化効率の向上を行うものである。
【0025】
図1はピクチャ番号と参照インデックスの説明図である。図1は参照ピクチャリストの例を示しており、中央のBピクチャ(破線のもの)を符号化する際に用いる参照ピクチャおよびそのピクチャ番号と参照インデックスを示したものである。図1(A)は、図56を用いて説明した、初期状態での参照インデックスの割り当て方により、参照インデックスを割り当てた場合を示している。
【0026】
図2は従来の画像符号化装置による画像符号化信号フォーマットの概念図である。Pictureは1ピクチャ分の符号化信号、Headerはピクチャ先頭に含まれるヘッダ符号化信号、Block1は直接モードによるブロックの符号化信号、Block2は直接モード以外の補間予測によるブロックの符号化信号、Ridx0,Ridx1はそれぞれ第1参照インデックスと第2参照インデックス、MV0,MV1はそれぞれ第1動きベクトルと第2動きベクトルを示す。符号化ブロックBlock2では、補間に使用する2つの参照ピクチャを示すため2つの参照インデックスRidx0,Ridx1を符号化信号中にこの順で有する。また、符号化ブロックBlock2の第1動きベクトルMV0と、第2動きベクトルMV1とは符号化ブロックBlock2の符号化信号内にこの順で符号化される。参照インデックスRidx0,Ridx1のいずれを使用するかはPredTypeにより判断することができる。また、第1動きベクトルMV0が参照するピクチャ(第1参照ピクチャ)を第1参照インデックスRidx0で示し、第2動きベクトルMV1が参照するピクチャ(第2参照ピクチャ)を第2参照インデックスRidx1で示す。例えば、動きベクトルMV0とMV1の2方向でピクチャを参照することが示される場合はRidx0とRidx1が用いられ、動きベクトルMV0またはMV1のいずれか1方向でピクチャを参照することが示される場合は、その動きベクトルに応じた参照インデックスであるRidx0またはRidx1が用いられ、直接モードが示されている場合はRidx0、Ridx1ともに用いられない。第1参照ピクチャは、第1参照インデックスにより指定され、一般的には符号化対象ピクチャより前の表示時刻を持つピクチャであり、第2参照ピクチャは、第2参照インデックスにより指定され、一般的には符号化対象ピクチャより後の表示時刻を持つピクチャである。ただし、図1の参照インデックスの付与方法例からわかるように、第1参照ピクチャが符号化対象ピクチャより後の表示時刻を持つピクチャであり、第2参照ピクチャが符号化対象ピクチャより前の表示時刻を持つピクチャである場合もある。第1参照インデックスRidx0は、ブロックBlock2の第1動きベクトルMV0が参照した第1参照ピクチャを示す参照インデックスであり、第2参照インデックスRidx1は、ブロックBlock2の第2動きベクトルMV1が参照した第2参照ピクチャを示す参照インデックスである。
【0027】
一方、符号化信号中のバッファ制御信号(図2 Header内のRPSL)を用いて明示的に指示することにより、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができる。この割り当ての変更により、第2参照インデックスが「0」の参照ピクチャを任意の参照ピクチャにすることも可能で、例えば、図1(B)に示すようにピクチャ番号に対する参照インデックスの割り当てを変更することができる。
【0028】
このように、参照インデックスに対する参照ピクチャの割り当てを任意に変更することができるため、また、この参照インデックスに対する参照ピクチャの割り当ての変更は、通常、参照ピクチャとして選択することにより符号化効率が高くなるピクチャに対してより小さい参照インデックスを割り当てるため、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとすると符号化効率を高めることができる。
【0029】
(実施の形態1)
本発明の実施の形態1の動画像符号化方法を図3に示したブロック図を用いて説明する。
【0030】
符号化対象となる動画像は時間順にピクチャ単位でフレームメモリ101に入力され、さらに符号化が行われる順に並び替えられる。各々のピクチャはブロックと呼ばれる、例えば水平16×垂直16画素のグループに分割され、ブロック単位で以降の処理が行われる。
【0031】
フレームメモリ101から読み出されたブロックは動きベクトル検出部106に入力される。ここではフレームメモリ105に蓄積されている符号化済みのピクチャを復号化した画像を参照ピクチャとして用いて、符号化対象としているブロックの動きベクトル検出を行う。このときモード選択部107では、動きベクトル検出部106で得られた動きベクトルや、動きベクトル記憶部108に記憶されている符号化済みのピクチャで用いた動きベクトルを参照しつつ、最適な予測モードを決定する。モード選択部107で得られた予測モードとその予測モードで用いる動きベクトルによって決定された予測画像が差分演算部109に入力され、符号化対象のブロックとの差分をとることにより予測残差画像が生成され、予測残差符号化部102において符号化が行われる。また、モード選択部107で得られた予測モードで用いる動きベクトルは、後のブロックやピクチャの符号化で利用するために、動きベクトル記憶部108に記憶される。以上の処理の流れは、ピクチャ間予測符号化が選択された場合の動作であったが、スイッチ111によってピクチャ内予測符号化との切り替えがなされる。最後に、符号列生成部103によって、動きベクトル等の制御情報および予測残差符号化部102から出力される画像情報等に対し、可変長符号化を施し最終的に出力される符号列が生成される。
【0032】
以上符号化の流れの概要を示したが、動きベクトル検出部106およびモード選択部107における処理の詳細について以下で説明する。
【0033】
動きベクトルの検出は、ブロックごともしくはブロックを分割した領域ごとに行われる。符号化の対象としている画像に対して表示時間順で前方および後方に位置する符号化済みのピクチャを参照ピクチャとし、そのピクチャ内の探索領域において最適と予測される位置を示す動きベクトルおよび予測モードを決定することにより予測画像を作成する。
【0034】
表示時間順で前方および後方にある2枚のピクチャを参照し、ピクチャ間予測符号化を行う2方向予測の1つとして、直接モードがある。直接モードでは符号化対象のブロックに、直接には動きベクトルを持たせず、表示時間順で近傍にある符号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し、予測画像を作成する。
【0035】
図4は、直接モードにおいて動きベクトルを決定するために参照した符号化済みのブロックが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在符号化の対象としているピクチャであり、ピクチャP22およびピクチャP24を参照ピクチャとして2方向予測を行うものである。符号化を行うブロックをブロックMB21とすると、このとき必要とされる2つの動きベクトルは符号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP24の同じ位置にあるブロックMB22の持つ動きベクトルを用いて決定される。このブロックMB22は動きベクトルとして動きベクトルMV21および動きベクトルMV22の2つを有するため、求める2つの動きベクトルMV23および動きベクトルMV24を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式2のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB22の持つ2つの動きベクトルの平均値から算出し、その時の時間間隔TR_REFを同様に平均値から算出する。そして、式3に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV23および動きベクトルMV24を算出する。このとき時間間隔TR21はピクチャP24からピクチャP21まで、つまり動きベクトルMV21が参照するピクチャまでの時間の間隔を示し、時間間隔TR22は動きベクトルMV22が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR23は動きベクトルMV23が参照するピクチャまでの時間の間隔を示し、時間間隔TR24は動きベクトルMV24が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図4の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0036】
MV_REF=(MV21+MV22)/2 ‥‥式2(a)
TR_REF=(TR21+TR22)/2 ‥‥式2(b)
MV23=MV_REF/TR_REF×TR23 ‥‥式3(a)
MV24=−MV_REF/TR_REF×TR24 ‥‥式3(b)
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV21と動きベクトルMV22との平均値および時間間隔TR21と時間間隔TR22との平均値をとる方法として、式2の替わりに式4を用いることも可能である。まず、式4(a)のように動きベクトルMV21に対して時間間隔が動きベクトルMV22と同じになるようにスケーリングを施し動きベクトルMV21’を算出する。そして動きベクトルMV21’と動きベクトルMV22との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR22をそのまま用いることになる。なお、動きベクトルMV21に対してスケーリングを施して動きベクトルMV21’とする替わりに動きベクトルMV22に対してスケーリングを施して動きベクトルMV22’とする場合も同様に扱うことが可能である。
【0037】
MV21’=MV21/TR21×TR22 ‥‥式4(a)
MV_REF=(MV21’+MV22)/2 ‥‥式4(b)
TR_REF=TR22 ‥‥式4(c)
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、式5のように動きベクトルを参照するピクチャP24に対する時間間隔の短い方のピクチャP22を参照する動きベクトルMV22および時間間隔TR22を直接用いることも可能である。同様に、式6のように時間間隔の長い方のピクチャP21を参照する動きベクトルMV21および時間間隔TR21を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0038】
MV_REF=MV22 ‥‥式5(a)
TR_REF=TR22 ‥‥式5(b)
MV_REF=MV21 ‥‥式6(a)
TR_REF=TR21 ‥‥式6(b)
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図5(a)は図4と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図5(b)では図3のフレームメモリ101において符号化される順番に並び替えられた一例を示している。なお、ピクチャP23が直接モードによって符号化を行うピクチャ、ピクチャP24がそのときに動きベクトルを参照されるピクチャを示している。図5(b)のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式5のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV22および時間間隔TR22が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式6のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV21および時間間隔TR21が直接適用される。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0039】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0040】
なお、式2(a)または式4(b)において、動きベクトルMV_REFを計算する際には、式2(a)または式4(b)の右辺を計算した後、所定の動きベクトルの精度(例えば、1/2画素精度の動きベクトルであれば、0.5画素単位の値)に丸めても良い。動きベクトルの精度としては、1/2画素精度に限るものではない。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式3(a)、式3(b)、式4(a)において、動きベクトルMV23、動きベクトルMV24、動きベクトルMV21’を計算する際には、式3(a)、式3(b)、式4(a)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【0041】
(実施の形態2)
図3に基づいた符号化処理の概要は実施の形態1と全く同等である。ここでは直接モードにおける2方向予測の動作について図6を用いてその詳細を説明する。
【0042】
図6は直接モードにおいて動きベクトルを決定するために参照したブロックが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP43が現在符号化の対象としているピクチャでありピクチャP42およびピクチャP44を参照ピクチャとして2方向予測を行うものである。符号化を行うブロックをブロックMB41とすると、このとき必要とされる2つの動きベクトルは符号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP44の同じ位置にあるブロックMB42の持つ動きベクトルを用いて決定される。このブロックMB42は動きベクトルとして動きベクトルMV45および動きベクトルMV46の2つを有するため、求める2つの動きベクトルMV43および動きベクトルMV44を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式7のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB42の持つ2つの動きベクトルの平均値から決定し、その時の時間間隔TR_REFを同様に平均値から決定する。そして、式8に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV43および動きベクトルMV44を算出する。このとき時間間隔TR45はピクチャP44からピクチャP45まで、つまり動きベクトルMV45が参照するピクチャまでの時間の間隔を示し、時間間隔TR46は動きベクトルMV46が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR43は動きベクトルMV43が参照するピクチャまでの時間の間隔を示し、時間間隔TR44は時間間隔MV44が参照するピクチャまでの時間の間隔を示すものである。これらのピクチャ間の時間間隔は、実施の形態1で説明したのと同様に、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図6の例では符号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0043】
MV_REF=(MV45+MV46)/2 ‥‥式7(a)
TR_REF=(TR45+TR46)/2 ‥‥式7(b)
MV43=−MV_REF/TR_REF×TR43 ‥‥式8(a)
MV44=MV_REF/TR_REF×TR44 ‥‥式8(b)
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測符号化を可能とする符号化方法を示した。
【0044】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV45と動きベクトルMV46との平均値および時間間隔TR45と時間間隔TR46との平均値をとる方法として、式7の替わりに式9を用いることも可能である。まず、式9(a)のように動きベクトルMV46に対して時間間隔が動きベクトルMV45と同じになるようにスケーリングを施し動きベクトルMV46’を算出する。そして動きベクトルMV46’と動きベクトルMV45との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR41をそのまま用いることになる。なお、動きベクトルMV46に対してスケーリングを施して動きベクトルMV46’とする替わりに動きベクトルMV45に対してスケーリングを施して動きベクトルMV45’とする場合も同様に扱うことが可能である。
【0045】
MV46’=MV46/TR46×TR45 ‥‥式9(a)
MV_REF=(MV46’+MV45)/2 ‥‥式9(b)
TR_REF=TR45 ‥‥式9(c)
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、式10のように動きベクトルを参照するピクチャP44に対して時間間隔の短い方のピクチャP45を参照する動きベクトルMV45および時間間隔TR45を直接用いることも可能である。同様に、式11のように時間間隔の長い方のピクチャP46を参照する動きベクトルMV46および時間間隔TR46を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0046】
MV_REF=MV45 ‥‥式10(a)
TR_REF=TR45 ‥‥式10(b)
MV_REF=MV46 ‥‥式11(a)
TR_REF=TR46 ‥‥式11(b)
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図7(a)は図6と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図7(b)では図3のフレームメモリ101において符号化される順番に並び替えられた一例を示している。なお、ピクチャP43が直接モードによって符号化を行うピクチャ、ピクチャP44がそのときに動きベクトルを参照されるピクチャを示している。図7(b)のように並び替えたとき、符号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式11のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV46および時間間隔TR46が直接適用される。同様に、符号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式10のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV45および時間間隔TR45が直接適用される。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となる。
【0047】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、求める2つの動きベクトルMV43および動きベクトルMV44を「0」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため符号化装置における動きベクトル記憶器の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【0048】
なお、直接モードにおいて動きベクトルを決定するために参照したピクチャが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、動きベクトルの参照を禁止し、直接モード以外の予測符号化のみを適用させることも可能である。図6のピクチャP44のように表示時間順で後方にある2枚のピクチャを参照する場合は、表示時間順で前方にあるピクチャとの相関が低い可能性が考えられるため、直接モードを禁止し別の予測方法を選択することにより、より正確な予測画像を生成することが可能となる。
【0049】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0050】
なお、式7(a)、式9(b)において、動きベクトルMV_REFを計算する際には、式7(a)、式9(b)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。また、式8(a)、式8(b)、式9(a)において、動きベクトルMV43、動きベクトルMV44、動きベクトルMV46’を計算する際には、式8(a)、式8(b)、式9(a)の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。
【0051】
(実施の形態3)
本発明の実施の形態3の動画像復号化方法を図8に示したブロック図を用いて説明する。ただし、実施の形態1の動画像符号化方法で生成された符号列が入力されるものとする。
【0052】
まず入力された符号列から符号列解析器601によって予測モード、動きベクトル情報および予測残差符号化データ等の各種の情報が抽出される。
【0053】
予測モードや動きベクトル情報は予測モード/動きベクトル復号化部608に対して出力され、予測残差符号化データは予測残差復号化部602に出力される。予測モード/動きベクトル復号化部608では、予測モードの復号化と、その予測モードで用いる動きベクトルの復号化とを行う。動きベクトルの復号化の際には、動きベクトル記憶部605に記憶されている復号化済みの動きベクトルを利用する。復号化された予測モードおよび動きベクトルは、動き補償復号部604に対して出力される。また、復号化された動きベクトルは、後のブロックの動きベクトルの復号化で利用するために、動きベクトル記憶部605に記憶される。動き補償復号部604ではフレームメモリ603に蓄積されている復号化済みのピクチャの復号化画像を参照ピクチャとし、入力された予測モードや動きベクトル情報に基づいて予測画像を生成する。このようにして生成された予測画像は加算演算部606に入力され、予測残差復号化部602において生成された予測残差画像との加算を行うことにより復号化画像が生成される。以上の実施の形態はピクチャ間予測符号化がなされている符号列に対する動作であったが、スイッチ607によってピクチャ内予測符号化がなされている符号列に対する復号化処理との切り替えがなされる。
【0054】
以上復号化の流れの概要を示したが、動き補償復号部604における処理の詳細について以下で説明する。
【0055】
動きベクトル情報はブロックごともしくはブロックを分割した領域ごとに付加されている。復号化の対象としているピクチャに対して表示時間順で前方および後方に位置する復号化済みのピクチャを参照ピクチャとし、復号化された動きベクトルによってそのピクチャ内から動き補償を行うための予測画像を作成する。
【0056】
表示時間順で前方および後方にあるそれぞれ1枚ずつのピクチャを参照しピクチャ間予測符号化を行う2方向予測の1つとして直接モードがある。直接モードでは復号化対象のブロックが動きベクトルを直接持たない符号列を入力とするため、表示時間順で近傍にある復号化済みピクチャ内の同じ位置にあるブロックの動きベクトルを参照することによって、実際に動き補償を行うための2つの動きベクトルを算出し予測画像を作成する。
【0057】
図4は直接モードにおいて動きベクトルを決定するために参照した復号化済みのピクチャが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在復号化の対象としているピクチャであり、ピクチャP22およびピクチャP24を参照ピクチャとして2方向予測を行うものである。復号化を行うブロックをブロックMB21とすると、このとき必要とされる2つの動きベクトルは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP24の同じ位置にあるブロックMB22の持つ動きベクトルを用いて決定される。このブロックMB22は動きベクトルとして動きベクトルMV21および動きベクトルMV22の2つを有するため、求める2つの動きベクトルMV23および動きベクトルMV24を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式2のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFをブロックMB22の持つ2つの動きベクトルの平均値から算出し、その時の時間間隔TR_REFを同様に平均値から算出する。そして、式3に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV23および動きベクトルMV24を算出する。このとき時間間隔TR21はピクチャP24からピクチャP21まで、つまり動きベクトルMV21が参照するピクチャまでの時間の間隔を示し、時間間隔TR22は動きベクトルMV22が参照するピクチャまでの時間の間隔を示している。また、時間間隔TR23は動きベクトルMV23が参照するピクチャまでの時間の間隔を示し、時間間隔TR24は動きベクトルMV24が参照するピクチャまでの時間の間隔を示している。これらのピクチャ間の時間間隔は、例えば各ピクチャに付される表示時間や表示順序を示す情報、またはその情報の差に基づいて決定することができる。なお、図4の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0058】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【0059】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV21と動きベクトルMV22との平均値および時間間隔TR21と時間間隔TR22との平均値をとる方法として、式2の替わりに式4を用いることも可能である。まず、式4(a)のように動きベクトルMV21に対して時間間隔が動きベクトルMV22と同じになるようにスケーリングを施し動きベクトルMV21’を算出する。そして動きベクトルMV21’と動きベクトルMV22との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR22をそのまま用いることになる。なお、動きベクトルMV21に対してスケーリングを施して動きベクトルMV21’とする替わりに動きベクトルMV22に対してスケーリングを施して動きベクトルMV22’とする場合も同様に扱うことが可能である。
【0060】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、式5のように動きベクトルを参照するピクチャP24に対して時間間隔の短い方のピクチャP22を参照する動きベクトルMV22およびTR22を直接用いることも可能である。同様に、式6のように時間間隔の長い方のピクチャP21を参照する動きベクトルMV21および時間間隔TR21を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0061】
なお、図4における2つの動きベクトルMV23および動きベクトルMV24を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式2のように2つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図5(a)は図4と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図5(b)では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャP23が直接モードによって復号化を行うピクチャ、ピクチャP24がそのときに動きベクトルを参照されるピクチャを示している。図5(b)のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式5のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV22および時間間隔TR22が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式6のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV21および時間間隔TR21が直接適用される。この方法により、動きベクトルを参照されるピクチャP24に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0062】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0063】
(実施の形態4)
図8に基づいた復号化処理の概要は実施の形態3と全く同等である。ここでは直接モードにおける2方向予測の動作について図6を用いてその詳細を説明する。ただし、実施の形態2の動画像符号化方法で生成された符号列が入力されるものとする。
【0064】
図6は直接モードにおいて動きベクトルを決定するために参照したピクチャが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP43が現在復号化の対象としているピクチャであり、ピクチャP42およびピクチャP44を参照ピクチャとして2方向予測を行うものである。復号化を行うブロックをブロックMB41とすると、このとき必要とされる2つの動きベクトルは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)であるピクチャP44の同じ位置にあるブロックMB42の持つ動きベクトルを用いて決定される。このブロックMB42は動きベクトルとして動きベクトルMV45および動きベクトルMV46の2つを有するため、求める2つの動きベクトルMV43および動きベクトルMV44を式1と同様に直接スケーリングを適用することによって算出することはできない。そこで式7のように、スケーリングを適用する動きベクトルとして動きベクトルMV_REFを動きベクトルMB42の持つ2つの動きベクトルの平均値から決定し、その時の時間間隔TR_REFを同様に平均値から決定する。そして、式8に基づいて動きベクトルMV_REFおよび時間間隔TR_REFに対してスケーリングを適用することによって動きベクトルMV43および動きベクトルMV44を算出する。このとき時間間隔TR45はピクチャP44からピクチャP45まで、つまり動きベクトルMV45が参照するピクチャまでの時間の間隔を、時間間隔TR46は動きベクトルMV46が参照するピクチャまでの時間の間隔を、時間間隔TR43は動きベクトルMV43が参照するピクチャまでの時間の間隔を、時間間隔TR44は動きベクトルMV44が参照するピクチャまでの時間の間隔を示すものである。なお、図6の例では復号化の対象とするピクチャは隣のピクチャを参照しているが、隣でないピクチャを参照した場合でも同様に扱うことが可能である。
【0065】
以上のように上記実施の形態では、直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルを用いて1つの動きベクトルを生成し、スケーリングを適用して実際に動き補償に使用するための2つの動きベクトルを決定することにより、直接モードにおいて動きベクトルを参照されるブロックがBピクチャに属する場合においても矛盾無く直接モードを用いたピクチャ間予測復号化を可能とする復号化方法を示した。
【0066】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を求める際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFを算出するために、動きベクトルMV45と動きベクトルMV46との平均値および時間間隔TR45と時間間隔TR46との平均値をとる方法として、式7の替わりに式9を用いることも可能である。まず、式9(a)のように動きベクトルMV46に対して時間間隔が動きベクトルMV45と同じになるようにスケーリングを施し動きベクトルMV46’を算出する。そして動きベクトルMV46’と動きベクトルMV45との平均をとることにより動きベクトルMV_REFが決定される。このとき時間間隔TR_REFは時間間隔TR45をそのまま用いることになる。なお、動きベクトルMV46に対してスケーリングを施して動きベクトルMV46’とする替わりに動きベクトルMV45に対してスケーリングを施して動きベクトルMV45’とする場合も同様に扱うことが可能である。
【0067】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、式10のように動きベクトルを参照するピクチャP44に対して時間間隔の短い方のピクチャP45を参照する動きベクトルMV45および時間間隔TR45を直接用いることも可能である。同様に、式11のように時間間隔の長い方のピクチャP46を参照する動きベクトルMV46および時間間隔TR46を動きベクトルMV_REFおよび時間間隔TR_REFとして直接用いることも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0068】
なお、図6における2つの動きベクトルMV43および動きベクトルMV44を算出する際に、スケーリングを施す対象となる動きベクトルMV_REFおよび時間間隔TR_REFとして、式7のように2つの動きベクトルの平均値を用いる替わりに、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることも可能である。図7(a)は図6と同じように動画像として表示される順番でのピクチャの並び方における参照関係を示したものであり、図7(b)では入力された符号列の順番、つまり復号化される順番の一例を示している。なお、ピクチャP43が直接モードによって符号化を行うピクチャ、ピクチャP44がそのときに動きベクトルを参照されるピクチャを示している。図7(b)のような並び順を考えたとき、復号化される順番が先であるピクチャを参照する動きベクトルを直接用いることから、式11のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV46および時間間隔TR46が直接適用される。同様に、復号化される順番が後であるピクチャを参照する動きベクトルを直接用いることも可能である。この場合は、式10のように動きベクトルMV_REFおよび時間間隔TR_REFとして動きベクトルMV45および時間間隔TR45が直接適用される。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0069】
なお、直接モードにおいて動きベクトルを決定するために参照したブロックが表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合、求める2つの動きベクトルMV43および動きベクトルMV44を「0」として動き補償を行うことも可能である。この方法により、動きベクトルを参照されるピクチャP44に属するそれぞれのブロックは、動きベクトルを記憶しておく必要が無いため復号化装置における動きベクトル記憶部の容量を小さく抑えることが可能となり、さらに動きベクトル算出のための処理を省略することが可能となる。
【0070】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0071】
(実施の形態5)
上記実施の形態1から実施の形態4までに示した符号化方法または復号化方法に限らず、以下に示す動きベクトル計算方法を用いて符号化方法または復号化方法を実現することができる。
【0072】
図9は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)P24の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図9において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV21と動きベクトルMV22とはブロックMB2を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャP21、ピクチャP22を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21はピクチャP21とピクチャP24との間の時間間隔、時間間隔TR22はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR24’はピクチャP23とピクチャP24との間の時間間隔を示す。
【0073】
動きベクトル計算方法としては、図9に示すように参照ピクチャP24におけるブロックMB2の動きベクトルのうち先に符号化または復号化された前方向動きベクトル(第1動きベクトル)MV21のみを用い、ブロックMB1の動きベクトルMV21’、動きベクトルMV24’は以下の式により計算される。
【0074】
MV21’ = MV21 × TR21’/TR21
MV24’ = −MV21 × TR24’/TR21
そして動きベクトルMV21’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。なお、動きベクトルMV21のみを用いてブロックMB1の動きベクトルMV21’と動きベクトルMV24’とを計算する代わりに、参照ピクチャP24におけるブロックMB2の動きベクトルのうち後に符号化または復号化された動きベクトル(第2動きベクトル)MV22のみを用いてブロックMB1の動きベクトルを計算してもよい。また、実施の形態1から実施の形態4で示したように、動きベクトルMV21と動きベクトルMV22との両者を用いて、ブロックMB1の動きベクトルを決定しても良い。いずれも動きベクトルMV21と動きベクトルMV22とのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されたブロックの動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置でいずれを選択するかあらかじめ任意に設定しておいてもよい。また、ピクチャP21が短時間メモリ(Short Term Buffer)にあっても長時間メモリ(Long TermBuffer)にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【0075】
図10は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で後方にある2枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP22が現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照ピクチャ)P23の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図10において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV24と動きベクトルMV25はブロックMB2を符号化または復号化するときに用いた動きベクトルであり、それぞれピクチャP24、ピクチャP25を参照している。また、ピクチャP21、ピクチャP23、ピクチャP24、ピクチャP25は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR24’はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP22との間の時間間隔を示す。
【0076】
動きベクトル計算方法としては、図10に示すように参照ピクチャP23におけるブロックMB2のピクチャP24への動きベクトルMV24のみを用い、ブロックMB1の動きベクトルMV21’、動きベクトルMV24’は以下の式により計算される。
【0077】
MV21’ = −MV24 × TR21’/TR24
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV21’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0078】
なお、図11に示すように参照ピクチャP23におけるブロックMB2のピクチャP25への動きベクトルMV25のみを用いた場合、ブロックMB1の動きベクトルMV21’、動きベクトルMV25’は以下の式により計算される。なお、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR25’はピクチャP22とピクチャP25との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP22との間の時間間隔を示す。
【0079】
MV21’ = −MV25 × TR21’/TR25
MV25’ = MV25 × TR25’/TR25
そして動きベクトルMV21’、動きベクトルMV25’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0080】
図12は直接モードにおいて動きベクトルを計算するために参照する符号化済みのブロックまたは復号化済みのブロックが、表示時間順で前方にある1枚のピクチャを参照する2つの動きベクトルを持っていた場合の動作を示したものである。ピクチャP23は、現在符号化または復号化の対象としているピクチャである。符号化または復号化を行うブロックをブロックMB1とすると、このとき必要とされる2つの動きベクトルは符号化済みのまたは復号化済みの後方参照ピクチャ(第2参照インデックスで指定される第2参照ピクチャ)P24の同じ位置にあるブロックMB2の持つ動きベクトルを用いて決定される。なお、図12において、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックである。動きベクトルMV21Aと動きベクトルMV21BとはブロックMB2を符号化または復号化するときに用いた前方向動きベクトルであり、共にピクチャP21を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21A、時間間隔TR21BはピクチャP21とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR24’はピクチャP23とピクチャP24との間の時間間隔を示す。
【0081】
動きベクトル計算方法としては、図12に示すように参照ピクチャP24におけるブロックMB2のピクチャP21への前方向動きベクトルMV21Aのみを用い、ブロックMB1の動きベクトルMV21A’、MV24’は以下の式により計算される。
【0082】
MV21A’ = MV21A × TR21’/TR21A
MV24’ = −MV21A × TR24’/TR21A
そして動きベクトルMV21A’、動きベクトルMV24’を用いてピクチャP21、ピクチャP24から2方向予測を行う。
【0083】
なお、参照ピクチャP24におけるブロックMB2のピクチャP21への前方向動きベクトルMV21Bのみを用い、ブロックMB1の動きベクトルを計算してもよい。また、実施の形態1から実施の形態4で示したように、前方向動きベクトルMV21Aと前方向動きベクトルMV21Bとの両者を用いて、ブロックMB1に対する動きベクトルを決定しても良い。いずれも前方向動きベクトルMV21Aと前方向動きベクトルMV21Bとのいずれか一方を選択する場合に、いずれを選択するかは、時間的に先に符号化または復号化されている(符号列中に先に記述されている)動きベクトルを選択するようにしてもよいし、符号化装置、復号化装置で任意に設定してもよい。ここで、時間的に先に符号化または復号化されている動きベクトルとは、第1動きベクトルのことを意味する。また、ピクチャP21が短時間メモリ(Short Term Buffer)にあっても長時間メモリ(Long Term Buffer)にあっても、どちらでも動き補償することは可能である。短時間メモリ、長時間メモリについては、後述する。
【0084】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0085】
なお、上記の動きベクトルMV21’、動きベクトルMV24’、動きベクトルMV25’および動きベクトルMV21A’の計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【0086】
(実施の形態6)
本実施の形態6においては、直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で前方にある2枚のピクチャを参照する2つの前方向動きベクトルを持っている場合に、2つの前方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる方法について図13から図15を用いて説明する。なお、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV21と動きベクトルMV22とはブロックMB2を符号化または復号化するときに用いた前方向動きベクトルであり、それぞれピクチャP21、ピクチャP22を参照している。また、ピクチャP21、ピクチャP22、ピクチャP24は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR21はピクチャP21とピクチャP24との間の時間間隔、時間間隔TR22はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR21’はピクチャP21とピクチャP23との間の時間間隔、時間間隔TR22’はピクチャP22とピクチャP23との間の時間間隔を示す。
【0087】
第1の方法としては、図13に示すように参照ピクチャP24におけるブロックMB2が、ピクチャP21への前方向動きベクトルMV21と、ピクチャP22への前方向動きベクトルMV22との2つの前方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で近いピクチャP22への動きベクトルMV22のみを用い、ブロックMB1の動きベクトルMV22’は以下の式により計算される。
【0088】
MV22’ = MV22 × TR22’/TR22
そして動きベクトルMV22’を用いてピクチャP22から動き補償を行う。
【0089】
第2の方法としては、図14に示すように参照ピクチャP24におけるブロックMB2がピクチャP21への前方向動きベクトルMV21とピクチャP22への前方向動きベクトルMV22との2つの前方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で遠いピクチャP21への動きベクトルMV21のみを用い、ブロックMB1の動きベクトルMV21’は以下の式により計算される。
【0090】
MV21’ = MV21 × TR21’/TR21
そして動きベクトルMV21’を用いてピクチャP21から動き補償を行う。
【0091】
これら第1、第2の方法により、動きベクトルを参照される参照ピクチャP24に属するブロックMB2は、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0092】
なお、前方向動きベクトルMV21を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP22から動き補償を行うこともできる。その時に用いる動きベクトルMVN(図示せず)は以下の式により計算される。
【0093】
MVN = MV21× TR22’/TR21
なお、第3の方法として、図15に示すように上記で求めた動きベクトルMV21’と動きベクトルMV22’とを用いてそれぞれピクチャP21とピクチャP22とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【0094】
この第3の方法により、計算量は増加するが、動き補償の精度は向上する。
【0095】
さらに、上記動きベクトルMVNと動きベクトルMV22’とを用いてピクチャP22から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【0096】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0097】
なお、上記の動きベクトルMV21’、動きベクトルMV22’、動きベクトルMVNの計算式においては、各式の右辺を計算した後、所定の動きベクトルの精度に丸めても良い。動きベクトルの精度としては、1/2画素、1/3画素、1/4画素精度等がある。またこの動きベクトルの精度は、例えば、ブロック単位、ピクチャ単位、シーケンス単位で決定することができる。
【0098】
(実施の形態7)
上記実施の形態6では直接モードにおいて符号化または復号化対象ブロックの動きベクトルを決定するために用いた参照ピクチャが、表示時間順で前方にある2枚のピクチャを参照する2つの前方向動きベクトルを持っている場合について述べたが、表示時間順で後方にある2枚のピクチャを参照する2つの後方向動きベクトル(第2参照インデックスで参照ピクチャが指定される第2動きベクトル)を持っている場合についても同様に、2つの後方向動きベクトルのうち一方のみをスケーリングして対象動きベクトルを計算することができる。以下、図16から図19を用いて説明する。なお、ブロックMB1が処理対象ブロックであり、ブロックMB1とブロックMB2とはピクチャ上で互いに同位置にあるブロックであり、動きベクトルMV24と動きベクトルMV25とは、動きベクトルMB2を符号化または復号化するときに用いた後方向動きベクトル(第2参照インデックスで参照ピクチャが指定される第2動きベクトル)である。また、ピクチャP21、ピクチャP23、ピクチャP24およびピクチャP25は符号化済みピクチャまたは復号化済みピクチャである。また、時間間隔TR24はピクチャP23とピクチャP24との間の時間間隔、時間間隔TR25はピクチャP23とピクチャP25との間の時間間隔、時間間隔TR24’はピクチャP22とピクチャP24との間の時間間隔、時間間隔TR25’はピクチャP22とピクチャP25との間の時間間隔を示す。
【0099】
第1の方法としては、図16に示すように参照ピクチャP23におけるブロックMB2がピクチャP24への後方向動きベクトルMV24とピクチャP25への後方向動きベクトルMV25との2つの後方向動きベクトルを有するとき、対象ピクチャP22に表示時間順で近いピクチャP24への後方向動きベクトルMV24のみを用い、ブロックMB1の動きベクトルMV24’は以下の式により計算される。
【0100】
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV24’を用いてピクチャP24から動き補償を行う。
【0101】
なお、後方向動きベクトルMV24を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN1(図示せず)は以下の式により計算される。
【0102】
MVN1 = MV24× TRN1/TR24
第2の方法としては、図17に示すように参照ピクチャP23におけるブロックMB2がピクチャP24への後方向動きベクトルMV24とピクチャP25への後方向動きベクトルMV25との2つの後方向動きベクトルを有するとき、対象ピクチャP23に表示時間順で遠いピクチャP25への後方向動きベクトルMV25のみを用い、ブロックMB1の動きベクトルMV25’は以下の式により計算される。
【0103】
MV25’ = MV25 × TR25’/TR25
そして動きベクトルMV25’を用いてピクチャP25から動き補償を行う。
【0104】
これら第1、第2の方法により、動きベクトルを参照される参照ピクチャP23に属するブロックMB2は、2つの動きベクトルのうちの片方のみを記憶しておくことで動き補償を実現することができるため、動きベクトル記憶部の容量を小さく抑えることが可能となる。
【0105】
なお、後方向動きベクトルMV25を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN2(図示せず)は以下の式により計算される。
【0106】
MVN2 = MV25× TRN1/TR25
さらに、第3の方法として、図18に示すように上記で求めた動きベクトルMV24’と動きベクトルMV25’ を用いてそれぞれピクチャP24とピクチャP25とから動き補償ブロックを取得し、その平均画像を動き補償における補間画像とする。
【0107】
この第3の方法により、計算量は増加するが、対象ピクチャP22の精度は向上する。
【0108】
なお、上記動きベクトルMVN1と動きベクトルMVN2とを用いてピクチャP24から動き補償ブロックを取得し、その平均画像を動き補償における補間画像とすることもできる。
【0109】
また、図19に示すように直接モードにおいて対象動きベクトルを決定するために用いた参照ピクチャが表示時間順で後方にある1枚のピクチャを参照する1つの後方向動きベクトルを持っている場合は、例えば以下の式により動きベクトルMV24’は計算される。
【0110】
MV24’ = MV24 × TR24’/TR24
そして動きベクトルMV24’を用いてピクチャP24から動き補償を行う。
【0111】
なお、後方向動きベクトルMV25を用いながら、実施の形態1と同様に表示時間順で近傍のピクチャであるピクチャP23から動き補償を行うこともできる。その時に用いる動きベクトルMVN3(図示せず)は以下の式により計算される。
【0112】
MVN3 = MV24× TRN1/TR24
なお、本実施の形態においては、図16から図19を用いて、表示時間順で後方にある2枚のピクチャを参照する2つの後方向動きベクトルを持っている場合、および表示時間順で後方にある1枚のピクチャを参照する1つの後方向動きベクトルを持っている場合に、その後方向動きベクトルをスケーリングして対象動きベクトルを計算する場合について説明したが、これは後方動きベクトルを用いず、同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良いし、ピクチャ内符号化が行われている場合に同一ピクチャ内の周辺ブロックの動きベクトルを参照して対象動きベクトルを計算しても良い。まず、第1の計算方法について述べる。 図20は、その際に参照する動きベクトルと対象ブロックとの位置関係を示したものである。ブロックMB1が対象ブロックであり、A、B、Cの位置関係にある3つの画素を含むブロックの動きベクトルを参照する。ただし、画素Cの位置が画面外であったり、符号化/復号化が済んでいない状態であったりして参照不可となる場合には、画素Cを含むブロックの代わりに画素Dを含むブロックの動きベクトルを用いるものとする。参照の対象となったA、B、Cの画素を含む3つのブロックが持つ動きベクトルの中央値を取ることによって、実際に直接モードにおいて使用する動きベクトルとする。3つのブロックが持つ動きベクトルの中央値を取ることにより、3つの動きベクトルのうちどの動きベクトルを選択したかという付加情報を符号列中に記述する必要がなく、かつブロックMB1の実際の動きに近い動きを表現する動きベクトルを得ることができる。この場合、決定した動きベクトルを用いて、前方参照(第1参照ピクチャへの参照)のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照(第1参照ピクチャおよび第2参照ピクチャへの参照)で動き補償しても良い。
【0113】
次に、第2の計算方法について述べる。
【0114】
第2の計算方法では第1の計算方法のように中央値を取らずに、参照の対象となったA、B、Cの画素を含む3つのブロックが持つ動きベクトルの中から、符号化効率が一番高くなる動きベクトルを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、決定した動きベクトルを用いて、前方参照(第1参照ピクチャへの参照)のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照(第1参照ピクチャと第2参照ピクチャとを用いた参照)で動き補償しても良い。符号化効率の一番高い動きベクトルを示す情報は、例えば図21(a)に示すように、モード選択部107から出力される直接モードを示す情報とともに、符号列生成部103によって生成される符号列におけるブロックのヘッダ領域に付加される。なお、図21(b)に示すように符号化効率の一番高いベクトルを示す情報はマクロブロックのヘッダ領域に付加してもよい。また、符号化効率の一番高い動きベクトルを示す情報とは、例えば、参照の対象となった画素を含むブロックを識別する番号であって、ブロック毎に与えられる識別番号である。また、識別番号でブロックが識別されるとき、ブロック毎に与えた識別番号を1つだけ用いて、その1つの識別番号に対応するブロックを符号化したときに用いた動きベクトルのうち一方のみを用いて符号化効率が一番高くなる動きベクトルを示すようにしても、動きベクトルが複数あるときに複数の動きベクトルを用いて符号化効率が一番高くなる動きベクトルを示すようにしてもよい。または、2方向参照(第1参照ピクチャおよび第2参照ピクチャへの参照)のそれぞれの動きベクトル毎にブロック毎に与えられた識別番号を用いて、符号化効率が一番高くなる動きベクトルを示すようにしてもよい。このような動きベクトルの選択方法を用いることにより、必ず符号化効率が一番高くなる動きベクトルを取ることができる。ただし、どの動きベクトルを選択したかを示す付加情報を符号列中に記述しなければならないため、そのための符号量は余分に必要となる。さらに、第3の計算方法について述べる。
【0115】
第3の計算方法では、動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する動きベクトルとする。参照インデックスが最小であるということは、一般的には表示時間順で近いピクチャを参照している、または符号化効率が最も高くなる動きベクトルである。よって、このような動きベクトルの選択方法を用いることにより、表示時間順で最も近い、または符号化効率が最も高くなるピクチャを参照する動きベクトルを用いて、直接モードで用いる動きベクトルを生成することになり、符号化効率の向上を図ることができる。
【0116】
なお、3本の動きベクトルのうち3本とも同一の参照ピクチャを参照している場合は、3本の動きベクトルの中央値をとるようにすればよい。また、3本の動きベクトルのうち参照インデックスの値が一番小さい参照ピクチャを参照する動きベクトルが2本ある場合は、例えば、2本の動きベクトルのうち、どちらか一方を固定的に選択するようにすればよい。図20を用いて例を示すとすれば、画素A、画素Bおよび画素Cを含む3つのブロックが持つ動きベクトルのうち、画素Aおよび画素Bを含む2つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、画素Aを含むブロックが持つ動きベクトルをとるようにするとよい。ただし、それぞれ画素A、画素B、画素Cを含む3つのブロックが持つ動きベクトルのうち、画素A、画素Cを含む2つのブロックが参照インデックスの値が一番小さく、かつ同一の参照ピクチャを参照する場合、ブロックBL1に位置関係で近い画素Aを含むブロックが持つ動きベクトルをとるようにするとよい。
【0117】
なお、上記中央値は、各動きベクトルの水平方向成分と垂直方向成分それぞれに対して中央値をとるようにしてもよいし、各動きベクトルの大きさ(絶対値)に対して中央値をとるようにしてもよい。
【0118】
また、動きベクトルの中央値は図22に示すような場合、後方の参照ピクチャにおいてブロックBL1と同位置にあるブロックと、画素A,画素B、画素Cそれぞれを含むブロックと、さらに図22に示す画素Dを含むブロック、これら合計5つのブロックが有する動きベクトルの中央値を取るようにしてもよい。このように符号化対象画素の周囲に近い、後方の参照ピクチャにおいてブロックBL1と同位置にあるブロックを用いたときには、ブロック数を奇数にするために画素Dを含むブロックを用いると、動きベクトルの中央値を算出する処理を簡単にすることができる。なお、後方の参照ピクチャにおいてブロックBL1と同位置にある領域に複数のブロックがまたがっている場合、この複数のブロックのうちブロックBL1と重なる領域が最も大きいブロックにおける動きベクトルを用いてブロックBL1の動き補償をしてもよいし、あるいはブロックBL1を後方の参照ピクチャにおける複数のブロックの領域に対応して分けて、分けたブロック毎にブロックBL1を動き補償するようにしてもよい。
【0119】
さらに、具体的な例を挙げて説明する。
【0120】
図23や図24に示すように画素A,画素B,画素Cを含むブロック全てが符号化対象ピクチャより前方のピクチャを参照する動きベクトルの場合、上記第1の計算方法から第3の計算方法まで、いずれを用いてもよい。
【0121】
同様に、図25や図26に示すように画素A,画素B,画素Cを含むブロック全てが符号化対象ピクチャより後方のピクチャを参照する動きベクトルの場合、上記第1の計算方法から第3の計算方法まで、いずれを用いてもよい。
【0122】
次に、図27に示す場合について説明する。図27は、画素A,画素B,画素Cそれぞれを含むブロック全てが符号化対象ピクチャより前方と後方のピクチャを参照する動きベクトルを1本ずつ有する場合を示す。
【0123】
上記第1の計算方法によれば、ブロックBL1の動き補償に用いる前方の動きベクトルは動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの中央値により選択され、ブロックBL1の動き補償に用いる後方の動きベクトルは動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの中央値により選択される。なお、動きベクトルMVAfは画素Aを含むブロックの前方向動きベクトル、動きベクトルMVAbは画素Aを含むブロックの後方向動きベクトル、動きベクトルMVBfは画素Bを含むブロックの前方向動きベクトル、動きベクトルMVBbは画素Bを含むブロックの後方向動きベクトル、動きベクトルMVCfは画素Cを含むブロックの前方向動きベクトル、動きベクトルMVCbは画素Cを含むブロックの後方向動きベクトルである。また、動きベクトルMVAf等は、図示するようなピクチャを参照する場合に限られない。これらは以下の説明でも同様である。
【0124】
上記第2の計算方法によれば、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルと、動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの後方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルとを取ることによって実際に直接モードにおいて使用する動きベクトルとする。この場合、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルの中から符号化効率が一番高くなる動きベクトルを用いて、前方参照のみで動き補償しても良いし、その決定した動きベクトルと平行な動きベクトルを用いて、2方向参照で動き補償しても良い。なお、符号化効率が一番高くなるように、前方参照と後方参照の動きベクトルそれぞれについて選択せず、1つのブロックを選択し、そのブロックが有する前方参照と後方参照の動きベクトルを用いて動き補償しても良い。このとき、符号化効率が一番高くなるように選択された前方参照の動きベクトルを有する画素を有するブロックと、符号化効率が一番高くなるように選択された後方参照の動きベクトルを有する画素を有するブロックとを示す情報を選択する場合に比べて、選択を示す情報が少なくて済むため、符号化効率を向上させることができる。また、この1つのブロックの選択は、▲1▼前方参照の動きベクトルが参照するピクチャの参照インデックスの値が一番小さくなる動きベクトルを有する画素を含むブロックとする、▲2▼各画素を有するブロックの前方参照の動きベクトルが参照するピクチャの参照インデックスの値と、後方参照の動きベクトルが参照するピクチャの参照インデックスの値とを加算し、加算した値が最小となるブロックとする、▲3▼前方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する前方参照の動きベクトルを有する画素を含むブロックとし、後方参照の動きベクトルは、このブロックの有する後方参照の動きベクトルとする、▲4▼後方参照の動きベクトルが参照するピクチャの参照インデックスの中央値をとり、中央値を有する後方参照の動きベクトルを有する画素を含むブロックとし、前方参照の動きベクトルは、このブロックの有する前方参照の動きベクトルとする、のいずれかを採用すればよい。なお、後方参照の動きベクトルが全て同一のピクチャを参照している場合は、上記▲1▼と▲3▼のブロックの選択方法が適している。
【0125】
上記第3の計算方法では、動きベクトルMVAf、動きベクトルMVBf、動きベクトルMVCfの前方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する前方参照(第1の参照)の動きベクトルとする。または、動きベクトルMVAb、動きベクトルMVBb、動きベクトルMVCbの後方参照の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを直接モードにおいて使用する後方参照(第2の参照)の動きベクトルとする。なお、第3の計算方法では、参照ピクチャの参照インデックスの値が一番小さくなる前方参照の動きベクトルをブロックBL1の前方参照の動きベクトルとし、参照ピクチャの参照インデックスの値が一番小さくなる後方参照の動きベクトルをブロックBL1の後方参照の動きベクトルとしたが、参照ピクチャの参照インデックスの値が一番小さくなる前方または後方のいずれか一方を用いてブロックBL1の2つの動きベクトルを導出し、導出された動きベクトルを用いてブロックBL1を動き補償しても良い。
【0126】
次に、図28に示す場合について説明する。図28は、画素Aが前方と後方のピクチャを参照する動きベクトルを1本ずつ有し、画素Bが前方のピクチャを参照する動きベクトルのみを有し、画素Cが後方のピクチャを参照する動きベクトルのみを有する場合を示す。
【0127】
このように一方のピクチャを参照する動きベクトルのみ有する画素を含むブロックがあるとき、このブロックの他方のピクチャを参照する動きベクトルが0であるとして、動き補償するために上記図27での計算方法を用いれば良い。具体的には、図27での第1の計算方法または第3の計算方法を用い、MVCf=MVBb=0として計算すればよい。すなわち、第1の計算方法では、ブロックBL1の前方向動きベクトルを計算するときには、画素Cが前方のピクチャを参照する動きベクトルMVCfをMVCf=0として、動きベクトルMVAf、動きベクトルMVBfおよび動きベクトルMVCfの中央値を計算する。また、ブロックBL1の後方向動きベクトルを計算するときには、画素Bが後方のピクチャを参照する動きベクトルMVBbをMVBb=0として、動きベクトルMVAb、動きベクトルMVBbおよび動きベクトルMVCbの中央値を計算する。
【0128】
第3の計算方法では、画素Cが前方のピクチャを参照する動きベクトルMVCfと画素Bが後方のピクチャを参照する動きベクトルMVBbとをMVCf=MVBb=0として、ブロックBL1の動きベクトルが参照する参照ピクチャの参照インデックスの値が一番小さくなる動きベクトルを計算する。例えば、画素Aを含むブロックが第1参照インデックス「0」のピクチャを参照し、画素Bを含むブロックが第1参照インデックス「1」のピクチャを参照している場合、最小の第1参照インデックスの値は「0」である。従って、画素Bを含むブロックの前方のピクチャを参照する動きベクトルMVBfだけが、最小の第1参照インデックスを有するピクチャを参照しているので、動きベクトルMVBfをブロックBL1の前方向動きベクトルとする。また、例えば、画素A、画素Cのいずれもが第2参照インデックスが最小の、例えば、第2参照インデックスが「0」の後方ピクチャを参照している場合、画素Bが後方のピクチャを参照する動きベクトルMVBbをMVBb=0として、動きベクトルMVAb、動きベクトルMVBbおよび動きベクトルMVCbの中央値を計算する。計算の結果得られた動きベクトルをブロックBL1の後方向動きベクトルとする。
【0129】
次に、図29に示す場合について説明する。図29は、画素Aが前方と後方のピクチャを参照する動きベクトルを1本ずつ有し、画素Bが前方のピクチャを参照する動きベクトルのみを有し、画素Cが動きベクトルを有さず、画面内符号化される場合を示す。
【0130】
このように、参照対象となった画素Cを含むブロックが画面内符号化されているとき、このブロックの前方と後方のピクチャを参照する動きベクトルを共に「0」であるとして、動き補償するために上記図27での計算方法を用いれば良い。具体的には、MVCf=MVCb=0として計算すればよい。なお、図27の場合は、MVBb=0である。
【0131】
最後に、図30に示す場合について説明する。図30は、画素Cが直接モードによって符号化されている場合について示している。
【0132】
このように、参照対象となった画素に、直接モードによって符号化されているブロックがあるとき、直接モードによって符号化されているブロックが符号化されるときに用いられた動きベクトルを用いた上で、上記図27での計算方法を用いてブロックBL1の動き補償をするとよい。
【0133】
なお、動きベクトルが前方参照と後方参照のどちらかであるかは、参照されるピクチャと符号化されるピクチャ、それぞれのピクチャが有する時間情報によって決まる。よって、前方参照と後方参照を区別した上で、動きベクトルを導出する場合は、それぞれのブロックが有する動きベクトルが、前方参照と後方参照のどちらかであるかを、それぞれのピクチャが有する時間情報によって判断する。
【0134】
さらに、上記で説明した計算方法を組み合わせた例について説明する。図31は直接モードにおいて使用する動きベクトルを決定する手順を示す図である。図31は参照インデックスを用いて動きベクトルを決定する方法の一例である。なお、図31に示すRidx0、Ridx1は上記で説明した参照インデックスである。図31(a)は第1参照インデックスRidx0によって動きベクトルを決定する手順を示しており、図31(b)は第2参照インデックスRidx1によって動きベクトルを決定する手順を示している。まず、図31(a)について説明する。
【0135】
ステップS3701において画素Aを含むブロック、画素Bを含むブロックおよび画素Cを含むブロックのうち、第1参照インデックスRidx0を用いてピクチャを参照するブロックの数を計算する。
【0136】
ステップS3701において計算されたブロックの数が「0」であれば、さらにステップS3702において第2参照インデックスRidx1を用いてピクチャを参照するブロックの数を計算する。ステップS3702において計算されたブロックの数が「0」であれば、S3703において符号化対象ブロックの動きベクトルを「0」として符号化対象ブロックを2方向で動き補償をする。一方ステップS3702において計算されたブロックの数が「1」以上であれば、S3704において第2参照インデックスRidx1が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第2参照インデックスRidx1が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【0137】
ステップS3701において計算されたブロックの数が「1」であれば、S3705において第1参照インデックスRidx0が存在するブロックの動きベクトルを使用する。
【0138】
ステップS3701において計算されたブロックの数が「2」であれば、S3706において第1参照インデックスRidx0が存在しないブロックについて仮に第1参照インデックスRidx0にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。
【0139】
ステップS3701において計算されたブロックの数が「3」であれば、S3707において3本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップS3704における動き補償は、1本の動きベクトルを用いて2方向の動き補償をしてもよい。ここでの2方向の動き補償は、1本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの1本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは1本の動きベクトルと同一方向の動きベクトルと動きベクトルが「0」の動きベクトルとを用いて行ってもよい。次に、図31(b)について説明する。
【0140】
ステップS3711において第2参照インデックスRidx1が存在するブロックの数を計算する。
【0141】
ステップS3711において計算されたブロックの数が「0」であれば、さらにステップS3712において第1参照インデックスRidx0が存在するブロックの数を計算する。ステップS3712において計算されたブロックの数が「0」であれば、S3713において符号化対象ブロックの動きベクトルを「0」として符号化対象ブロックを2方向で動き補償する。一方ステップS3712において計算されたブロックの数が「1」以上であれば、S3714において第1参照インデックスRidx0が存在するブロックの数によって符号化対象ブロックの動きベクトルを決定する。例えば、第1参照インデックスRidx0が存在するブロックの数によって決定された動きベクトルを用いて符号化対象ブロックの動き補償を行う。
【0142】
ステップS3711において計算されたブロックの数が「1」であれば、S3715において第2参照インデックスRidx1が存在するブロックの動きベクトルを使用する。
【0143】
ステップS3711において計算されたブロックの数が「2」であれば、S3716において第2参照インデックスRidx1が存在しないブロックについて仮に第2参照インデックスRidx1にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。
【0144】
ステップS3711において計算されたブロックの数が「3」であれば、S3717において3本の動きベクトルの中央値にあたる動きベクトルを使用する。なお、ステップS3714における動き補償は、1本の動きベクトルを用いて2方向の動き補償をしてもよい。ここでの2方向の動き補償は、1本の動きベクトルと同一方向の動きベクトルと反対方向の動きベクトルとをこの1本の動きベクトルを例えばスケーリングすることによって求めた上で行ってもよいし、あるいは1本の動きベクトルと同一方向の動きベクトルと動きベクトルが「0」の動きベクトルとを用いて行ってもよい。
【0145】
なお、図31(a)と図31(b)それぞれについて説明したが、両方の処理を用いてもよいし、一方の処理のみを用いても良い。ただし、一方の処理を用いる場合、例えば、図31(a)に示すステップS3701から始まる処理を行う場合で、さらにステップS3704の処理に至る場合は、図31(b)に示すS3711の処理以下を行うと良い。また、このように、S3704の処理に至る場合は、ステップS3711以下の処理のうちステップS3712以下の処理を行うことが無いため、動きベクトルを一意に決定することができる。また、図31(a)と図31(b)の両方の処理を用いる場合、どちらの処理を先にしてもよく、また併せて行っても良い。また、符号化対象ブロックの周囲にあるブロックが直接モードによって符号化されているブロックであるとき、直接モードによって符号化されているブロックが符号化されたときに用いられた動きベクトルが参照していたピクチャの参照インデックスを、直接モードによって符号化されているブロックであって符号化対象ブロックの周囲にあるブロックが有しているものとしてもよい。
【0146】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について詳しく説明する。図32は符号化対象ブロックBL1が参照するブロックそれぞれが有する動きベクトルの種類を示す図である。図35(a)において、画素Aを有するブロックは画面内符号化されるブロックであり、画素Bを有するブロックは動きベクトルを1本有し、この1本の動きベクトルで動き補償されるブロックであり、画素Cを有するブロックは動きベクトルを2本有して2方向で動き補償されるブロックである。また、画素Bを有するブロックは第2参照インデックスRidx1に示される動きベクトルを有している。画素Aを有するブロックは画面内符号化されるブロックであるため、動きベクトルを有さず、すなわち参照インデックスも有さない。
【0147】
ステップS3701において第1参照インデックスRidx0が存在するブロックの数を計算する。図35に示すように第1参照インデックスRidx0が存在するブロックの数は2本であるため、ステップS3706において第1参照インデックスRidx0が存在しないブロックについて仮に第1参照インデックスRidx0にMV=0の動きベクトルがあるものとして、3本の動きベクトルの中央値にあたる動きベクトルを使用する。この動きベクトルのみを用いて符号化対象ブロックを2方向の動き補償をしてもよいし、または、以下に示すように第2参照インデックスRidx1を用いて別の動きベクトルを用いて、2方向の動き補償をしてもよい。
【0148】
ステップS3711において第2参照インデックスRidx1が存在するブロックの数を計算する。図35に示すように第2参照インデックスRidx1が存在するブロックの数は1本であるため、ステップS3715において第2参照インデックスRidx1が存在するブロックの動きベクトルを使用する。
【0149】
さらに、上記で説明した計算方法を組み合わせた別の例について説明する。図33は画素A、B、Cそれぞれを有するブロックが有する動きベクトルが参照するピクチャを示す参照インデックスの値によって、符号化対象ブロックの動きベクトルを決定する手順を示す図である。図33(a)(b)は第1参照インデックスRidx0を基準に動きベクトルを決定する手順を示す図であり、図33(c)(d)は第2参照インデックスRidx1を基準に動きベクトルを決定する手順を示す図である。また、図33(a)が第1参照インデックスRidx0を基準にした手順を示しているところを図33(c)は第2参照インデックスRidx1を基準にした手順を示しており、図33(b)が第1参照インデックスRidx0を基準にした手順を示しているところを図33(d)は第2参照インデックスRidx1を基準にした手順を示しているため、以下の説明では図33(a)と図33(b)のみについて説明する。まず図33(a)について説明する。
【0150】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0151】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3802において選択された動きベクトルを使用する。
【0152】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0が複数ある場合、ステップS3803において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Aを有するブロック、画素Bを有するブロック、画素Cを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。
【0153】
ステップS3801において有効な第1参照インデックスRidx0がない場合、ステップS3804においてS3802やS3803とは違う処理を行う。例えば、図31(b)で説明したステップS3711以下の処理をすればよい。次に、図33(b)について説明する。図33(b)が図33(a)と異なる点は、図33(a)におけるステップS3803とステップS3804における処理を図33(b)に示すステップS3813とした点である。
【0154】
ステップS3811において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0155】
ステップS3811において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3812において選択された動きベクトルを使用する。
【0156】
ステップS3811において有効な第1参照インデックスRidx0がない場合、ステップS3813においてS3812とは違う処理を行う。例えば、図31(b)で説明したステップS3711以下の処理をすればよい。
【0157】
なお、上記で示した有効な第1参照インデックスRidx0とは図32(b)で「○」が記されている第1参照インデックスRidx0のことであり、動きベクトルを有していることが示されている参照インデックスのことである。また、図32(b)中、「×」が記されているところは、参照インデックスが割り当てられていないことを意味する。また、図33(c)におけるステップS3824、図33(d)におけるステップS3833では、図31(a)で説明したステップS3701以下の処理をすればよい。
【0158】
以下、具体的なブロックの例を用いて動きベクトルの決定方法について図32を用いて詳しく説明する。
【0159】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できるか判断する。
【0160】
図32に示す場合、有効な第1参照インデックスRidx0は2つあるが、ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0を1つ選択できる場合、ステップS3802において選択された動きベクトルを使用する。
【0161】
ステップS3801において有効な第1参照インデックスRidx0の中で最小の第1参照インデックスRidx0が複数ある場合、ステップS3803において優先順位によって選択されたブロックが有する動きベクトルを使用する。ここで、優先順位とは、例えば画素Aを有するブロック、画素Bを有するブロック、画素Cを有するブロックの順で符号化対象ブロックの動き補償に使用する動きベクトルを決定する。画素Bを有するブロックと画素Cを有するブロックとで同一の第1参照インデックスRidx0を有する場合、優先順位により画素Bを有するブロックにおける第1参照インデックスRidx0が採用され、この画素Bを有するブロックにおける第1参照インデックスRidx0に対応した動きベクトルを用いて符号化対象ブロックBL1の動き補償がされる。このとき、決定された動きベクトルのみを用いて符号化対象ブロックBL1を2方向で動き補償してもよいし、以下に示すように第2参照インデックスRidx1を用いて別の動きベクトルを用いて、2方向の動き補償をしてもよい。
【0162】
ステップS3821において有効な第2参照インデックスRidx1の中で最小の第2参照インデックスRidx1を1つ選択できるか判断する。
【0163】
図32に示す場合、有効な第2参照インデックスRidx1は1つであるため、ステップS3822において画素Cを有するブロックにおける第2参照インデックスRidx1に対応した動きベクトルを使用する。
【0164】
なお、上記で参照インデックスを有さないブロックについて、動きベクトルの大きさが「0」の動きベクトルを有しているものとして、合計3つの動きベクトルの中央値をとるようにした点に関しては、動きベクトルの大きさが「0」の動きベクトルを有しているものとして、合計3つの動きベクトルの平均値をとるようにしても、参照インデックスを有するブロックが有する動きベクトルの平均値をとるようにしてもよい。
【0165】
なお、上記で説明した優先順位を、例えば画素Bを有するブロック、画素Aを有するブロック、画素Cを有するブロックの順とし、符号化対象ブロックの動き補償に使用する動きベクトルを決定するようにしてもよい。
【0166】
このように、参照インデックスを用いて符号化対象ブロックを動き補償をするときに用いる動きベクトルを決定することにより、動きベクトルを一意に決定することができる。また、上述の例に拠れば、符号化効率の向上も図ることが可能である。また、時刻情報を用いて動きベクトルが前方参照か後方参照かを判断する必要が無いため、動きベクトルを決定するための処理を簡略させることができる。また、ブロック毎の予測モード、動き補償で用いられる動きベクトル等を考慮すると多くのパターンが存在するが、上述のように一連の流れによって処理することができ有益である。
【0167】
なお、本実施の形態においては、参照する動きベクトルに対してピクチャ間の時間的距離を用いてスケーリングすることにより、直接モードにおいて用いる動きベクトルを計算する場合について説明したが、これは参照する動きベクトルを定数倍して計算しても良い。ここで、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0168】
なお、参照インデックスRidx0,Ridx1を用いた動きベクトルの計算方法は、中央値を用いた計算方法だけでなく、他の計算方法と組み合わせてもよい。例えば、前述の第3の計算方法において、それぞれ画素A、画素B、画素Cを含むブロックのうち、参照インデックスが最小となる同じピクチャを参照する動きベクトルが複数ある場合に、必ずしもそれらの動きベクトルの中央値を計算する必要はなく、それらの平均値を計算し、得られた動きベクトルを、ブロックBL1の直接モードにおいて用いる動きベクトルとしてもよい。あるいは、参照インデックスが最小となる複数の動きベクトルの中から、例えば、符号化効率が最も高くなる動きベクトルを1つ選択するとしてもよい。
【0169】
また、ブロックBL1の前方向動きベクトルと後方向動きベクトルとをそれぞれ独立して計算してもよいし、関連付けて計算してもよい。例えば、前方向動きベクトルと後方向動きベクトルとを同じ動きベクトルから計算してもよい。
【0170】
また、計算の結果得られた前方向動きベクトルと後方向動きベクトルとのいずれか一方をブロックBL1の動きベクトルとしてもよい。
【0171】
(実施の形態8)
本実施の形態では、参照ピクチャの参照ブロックMBが、長時間メモリに保存されている参照ピクチャを第1参照ピクチャとして参照する前方向(第1)動きベクトルと、短時間メモリに保存されている参照ピクチャを第2参照ピクチャとして参照する後方向(第2)動きベクトルとを有している。
【0172】
図34は長時間メモリに保存されているピクチャを参照する動きベクトルが1つだけの場合の直接モードにおける2方向予測を示す図である。
【0173】
実施の形態8がこれまでの複数の実施の形態と異なる点は、参照ピクチャのブロックMB2の前方向(第1)動きベクトルMV21が長時間メモリに保存されている参照ピクチャを参照している点である。
【0174】
短時間メモリは、一時的に参照ピクチャを保存するためのメモリであり、例えばピクチャがメモリに保存された順番(すなわち符号化または復号化の順序)でピクチャが保存されている。そして、ピクチャを短時間メモリに新しく保存する際にメモリ容量が足りない場合には、最も古くメモリに保存されたピクチャから順に削除する。
【0175】
長時間メモリでは、必ずしも短時間メモリのように時刻の順番でピクチャが保存されているとは限らない。例えば、画像を保存する順番としては画像の時刻の順番を対応させても良いし、画像が保存されているメモリのアドレスの順番を対応させても良い。したがって、長時間メモリに保存されているピクチャを参照する動きベクトルM21を時間間隔に基づいてスケーリングすることはできない。
【0176】
長時間メモリは短期間メモリのように一時的に参照ピクチャを保存するためのものではなく、継続的に参照ピクチャを保存するためのものである。したがって、長時間メモリに保存されている動きベクトルに対応する時間間隔は、短時間メモリに保存されている動きベクトルに対応する時間間隔より相当大きい。
【0177】
図34において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。ここでピクチャP23のブロックMB1が対象ブロックである。また、ブロックMB2はブロックMB1と参照ピクチャP24内において同じ位置にある参照ブロックである。参照ピクチャP24のブロックMB2の動きベクトルのうち前方向(第1)動きベクトルMV21は長時間メモリに保存されているピクチャP21を第1参照ピクチャとして参照する第1動きベクトルであり、後方向(第2)動きベクトルMV25は短時間メモリに保存されているピクチャP25を第2参照ピクチャとして参照する第2動きベクトルである。
【0178】
前述の通り、ピクチャP21とピクチャP24との時間間隔TR21は、長時間メモリに保存されているピクチャを参照する動きベクトルMV21に対応し、ピクチャP24とピクチャP25との時間間隔TR25は、短時間メモリに保存されているピクチャを参照する動きベクトルMV25に対応し、ピクチャP21とピクチャP24との時間間隔TR21は、ピクチャP24とピクチャP25との時間間隔TR25より相当大きいか、不定となることがある。
【0179】
したがって、これまでの実施の形態のように参照ピクチャP24のブロックMB2の動きベクトルをスケーリングして対象ピクチャP23のブロックMB1の動きベクトルを求めるのではなく、以下のような方法で対象ピクチャP23のブロックMB1の動きベクトルを計算する。
【0180】
MV21 = MV21’
MV24’ = 0
上の式は、参照ピクチャP24のブロックMB2の動きベクトルのうち長時間メモリに保存されている第1動きベクトルMN21をそのまま対象ピクチャの第1動きベクトルMV21’とするということを表している。
【0181】
下の式は、短時間メモリに保存されているピクチャP24への、対象ピクチャP23のブロックMB1の第2動きベクトルMV24’は、第1動きベクトルMV21’よりも十分小さいので、無視できるということを表している。第2動きベクトルMV24’は”0”として扱われる。
【0182】
以上のようにして、長時間メモリに保存されている参照ピクチャを第1参照ピクチャとして参照する1つの動きベクトルと短時間メモリに保存されている参照ピクチャを第2の参照ピクチャとして参照する1つの動きベクトルとを参照ブロックMBが有する場合、参照ピクチャのブロックの動きベクトルのうち、長時間メモリに保存された動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとして2方向予測をする。
【0183】
なお、長時間メモリに保存された参照ピクチャは、第1参照ピクチャまたは第2ピクチャのいずれのピクチャであってもよく、長時間メモリに保存された参照ピクチャを参照する動きベクトルMV21は後方向動きベクトルであってもよい。また、第2参照ピクチャが長時間メモリに保存され、第1参照ピクチャが短時間メモリに保存されている場合には、第1参照ピクチャを参照する動きベクトルにスケーリングを適用し、対象ピクチャの動きベクトルを計算する。
【0184】
これにより、長時間メモリの相当大きい、または不定となる時間を用いないで2方向予測の処理を行うことができる。
【0185】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して2方向予測をしても良い。
【0186】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0187】
(実施の形態9)
本実施の形態では、参照ピクチャの参照ブロックMBが、長時間メモリに保存されている参照ピクチャを参照する2つの前方向動きベクトルを有している場合の直接モードにおける2方向予測を示す。
【0188】
図35は、長時間メモリに保存されているピクチャを参照する動きベクトルが2つある場合の直接モードにおける2方向予測を示す図である。
【0189】
実施の形態9が実施の形態8と異なる点は、参照ピクチャのブロックMB2の動きベクトルMV21と動きベクトルMV22両方が長時間メモリに保存されているピクチャを参照する点である。
【0190】
図35において、長時間メモリと短時間メモリの境界は図示した通り、縦の点線で示されており、これより左のピクチャに関する情報は長時間メモリに保存され、これより右のピクチャに対する情報は短時間メモリに保存される。参照ピクチャP24のブロックMB2の動きベクトルMV21及び動きベクトルMV22は、2つとも長時間メモリに保存されたピクチャを参照している。参照ピクチャP21には動きベクトルMB21が対応し、参照ピクチャP22には動きベクトルMV22が対応している。
【0191】
長時間メモリに保存されているピクチャP22を参照する動きベクトルMV22に対応してピクチャP22とP24との時間間隔TR22は、短時間メモリに保存されているピクチャP24とピクチャP25との時間間隔TR25より相当大きい、または不定となることがある。
【0192】
図35において、動きベクトルMV22に対応するピクチャP22、動きベクトルMV21に対応するピクチャP21の順で順番が割り当てられて、ピクチャP21、ピクチャP22が長時間メモリに保存されている。図35では以下のように対象ピクチャのブロックMB1の動きベクトルを計算する。
【0193】
MV22’ = MV22
MV24’ = 0
上の式は、参照ピクチャP24のブロックMB2の動きベクトルのうち、最も割り当てられた順番が小さいピクチャP21を参照する動きベクトルMN22をそのまま対象ピクチャP23のブロックMB1の動きベクトルMV22’とするということを表している。
【0194】
下の式は、短時間メモリに保存されている対象ピクチャP23のブロックMB1の後方向動きベクトルMV24’は動きベクトルMV21’よりも十分小さいので、無視できるということを表している。後方向動きベクトルMV24’は”0”として扱われる。
【0195】
以上のようにして、長時間メモリに保存された参照ピクチャのブロックの動きベクトルのうち最も割り当てられた順番が小さいピクチャを参照する動きベクトルをそのまま使用して対象ピクチャのブロックの動きベクトルとすることで、長時間メモリの相当大きい、または不定となる時間を用いないで2方向予測の処理を行うことができる。
【0196】
なお、参照する動きベクトルをそのまま使用するのではなく、その動きベクトルを定数倍して2方向予測をしても良い。
【0197】
また、定数倍に使用される定数は、複数ブロック単位または複数ピクチャ単位で符号化または復号化する場合に、変更可能としても良い。
【0198】
さらに、参照ピクチャのブロックMB2の動きベクトルMV21と動きベクトルMV22との両方が長時間メモリに保存されているピクチャを参照する場合、第1参照ピクチャを参照する動きベクトルを選択するとしてもよい。例えば、MV21が第1参照ピクチャを参照する動きベクトルであり、MV22が第2参照ピクチャを参照する動きベクトルである場合、ブロックMB1の動きベクトルはピクチャP21に対する動きベクトルMV21とピクチャP24に対する動きベクトル”0”とを用いることになる。
【0199】
(実施の形態10)
本実施の形態では、実施の形態5から実施の形態9に記載された直接モードにおける動きベクトル計算方法について説明を行う。この動きベクトル計算方法は、画像の符号化または復号化の際いずれにも適用される。ここでは、符号化または復号化の対象のブロックを対象ブロックMBという。また、対象ブロックMBの参照ピクチャ中において対象ブロックと同じ位置にあるブロックを参照ブロックという。
【0200】
図36は、本実施の形態に係る動きベクトル計算方法の処理の流れを示す図である。
【0201】
まず、対象ブロックMBの後方の参照ピクチャ中の参照ブロックMBが動きベクトルを有するか否かが判定される(ステップS1)。参照ブロックMBが動きベクトルを有していなければ(ステップS1;No)、動きベクトルが”0”として2方向予測されて(ステップS2)動きベクトルを計算する処理が終了する。
【0202】
参照ブロックMBが動きベクトルを有していれば(ステップS1;Yes)、参照ブロックMBが前方向動きベクトルを有するか否かが判定される(ステップS3)。
【0203】
参照ブロックMBが前方向動きベクトルを有しない場合(ステップS3;No)、参照ブロックMBは後方向動きベクトルしか有していないので、その後方向動きベクトルの数が判定される(ステップS14)。参照ブロックMBの後方向動きベクトルの数が”2”の場合、図16、図17、図18および図19で記載されたいずれかの計算方法にしたがってスケーリングされた2つの後方向動きベクトルを用いて2方向予測が行われる(ステップS15)。
【0204】
一方、参照ブロックMBの後方向動きベクトルの数が”1”の場合、参照ブロックMBが有する唯一の後方向動きベクトルをスケーリングして、スケーリングされた後方向動きベクトルを用いて動き補償が行われる(ステップS16)。ステップS15またはステップS16の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0205】
また、参照ブロックMBが前方向動きベクトルを有する場合(ステップS3;Yes)、参照ブロックMBの前方向動きベクトルの数が判定される(ステップS4)。
【0206】
参照ブロックMBの前方向動きベクトルの数が”1”の場合、参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが長時間メモリまたは短時間メモリいずれに保存されているかが判定される(ステップS5)。
【0207】
参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが短時間メモリに保存されている場合、参照ブロックMBの前方向動きベクトルをスケーリングして、スケーリングされた前方向動きベクトルを用いて2方向予測が行われる(ステップS6)。
【0208】
参照ブロックMBの前方向動きベクトルに対応する参照ピクチャが長時間メモリに保存されている場合、図34に示された動きベクトル計算方法にしたがって、参照ブロックMBの前方向動きベクトルがスケーリングされずずにそのまま用いられ、後方向動きベクトルゼロとして2方向予測が行われる(ステップS7)。ステップS6またはステップS7の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0209】
参照ブロックMBの前方向動きベクトルの数が”2”の場合、参照ブロックMBの前方向動きベクトルの内、長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数が判定される(ステップS8)。
【0210】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”0”の場合、図13に示した動きベクトル計算方法にしたがって、対象ブロックMBが属する対象ピクチャに表示時間順で近い動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて2方向予測が行われる(ステップS9)。
【0211】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”1”の場合、短時間メモリに保存されたピクチャを動きベクトルをスケーリングして、スケーリングされた動きベクトルを用いて2方向予測が行われる(ステップS10)。
【0212】
長時間メモリに保存されている参照ピクチャに対応する前方向動きベクトルの数がステップS8において”2”の場合、2つの前方向動きベクトル両方によって、長時間メモリ内の同じピクチャが参照されているかが判定される(ステップS11)。2つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されている場合(ステップS11;Yes)、図12に記載した動きベクトル計算方法にしたがって、長時間メモリ内の2つの前方向動きベクトルに参照されているピクチャの内で先に符号化または復号化された動きベクトルを用いて2方向予測が行われる(ステップS12)。
【0213】
2つの前方向動きベクトル両方によって長時間メモリ内の同じピクチャが参照されていない場合(ステップS11;No)、図35に記載された動きベクトル計算方法にしたがって、長時間メモリに保存されたピクチャに割り当てられた順番が小さいピクチャに対応する前方向動きベクトルを用いて2方向予測が行われる(ステップS13)。長時間メモリでは実際の画像の時刻とは関係なく参照ピクチャが保存されているので、各参照ピクチャに割り当てられた順番にしたがって2方向予測に用いられるべき前方向動きベクトルが選択されるようになっている。また、長時間メモリに保存される参照ピクチャの順番は画像の時刻と一致する場合もあるが、単にメモリのアドレスの順番と一致させても良い。つまり、長時間メモリに保存される画像の順序は必ずしも画像の時刻と一致していなくてもよい。ステップS12、13の2方向予測が終了すると、動きベクトルの計算方法の処理が終了する。
【0214】
(実施の形態11)
以下、本発明の実施の形態11について図面を用いて詳細に説明する。
【0215】
図37は、本発明の実施形態11に係る動画像符号化装置100の構成を示すブロック図である。動画像符号化装置100は、フィールド構造で符号化されたブロックとフレーム構造で符号化されたブロックとが混在する場合にも直接モードの空間的予測方法を適用して動画像の符号化を行うことができる動画像符号化装置であって、フレームメモリ101、差分演算部102、予測誤差符号化部103、符号列生成部104、予測誤差復号化部105、加算演算部106、フレームメモリ107、動きベクトル検出部108、モード選択部109、符号化制御部110、スイッチ111、スイッチ112、スイッチ113、スイッチ114、スイッチ115および動きベクトル記憶部116を備える。
【0216】
フレームメモリ101は、入力画像をピクチャ単位で保持する画像メモリである。差分演算部102は、フレームメモリ101からの入力画像と、動きベクトルに基づいて復号化画像から求められた参照画像との差分である予測誤差を求めて出力する。予測誤差符号化部103は、差分演算部102で求められた予測誤差に周波数変換を施し、量子化して出力する。符号列生成部104は、予測誤差符号化部103からの符号化結果を可変長符号化した後、出力用の符号化ビットストリームのフォーマットに変換し、符号化された予測誤差の関連情報を記述したヘッダ情報などの付加情報を付して符号列を生成する。予測誤差復号化部105は、予測誤差符号化部103からの符号化結果を可変長復号化し、逆量子化した後、IDCT変換などの逆周波数変換を施し、予測誤差に復号化する。加算演算部106は、復号化結果である予測誤差に前記参照画像を加算して、符号化および復号化を経た画像データで入力画像と同じ1ピクチャの画像を表した参照画像を出力する。フレームメモリ107は、参照画像をピクチャ単位で保持する画像メモリである。
【0217】
動きベクトル検出部108は、符号化対象フレームの符号化単位ごとに、動きベクトルを検出する。モード選択部109は、動きベクトルを直接モードで計算するか他のモードで計算するかを選択する。符号化制御部110は、フレームメモリ101に入力された時間順で格納されている入力画像のピクチャを、符号化される順に入れ替える。さらに、符号化制御部110は、符号化対象フレームの所定の大きさの単位ごとに、フィールド構造で符号化を行うか、フレーム構造で符号化を行うかを判定する。ここでは、所定の大きさの単位はマクロブロック(例えば水平16画素、垂直16画素)を縦方向に2つ連結したもの(以下ではマクロブロックペアと呼ぶ)とする。フィールド構造で符号化するのであればフレームメモリ101からインタレースに対応して1水平走査線おきに画素値を読み出し、フレーム単位で符号化するのであればフレームメモリ101から順次、入力画像の各画素値を読み出して、読み出された各画素値がフィールド構造またはフレーム構造に対応した符号化対象マクロブロックペアを構成するようにメモリ上に配置する。動きベクトル記憶部116は、符号化済みマクロブロックの動きベクトルと、その動きベクトルが参照するフレームの参照インデックスとを保持する。参照インデックスについては、符号化済みマクロブロックペア中の各マクロブロックのそれぞれについて保持する。
【0218】
次に、以上のように構成された動画像符号化装置100の動作について説明する。入力画像は時間順にピクチャ単位でフレームメモリ101に入力される。図38(a)は、動画像符号化装置100に時間順にピクチャ単位で入力されるフレームの順序を示す図である。図38(b)は、図38(a)に示したピクチャの並びを符号化の順に並び替えた場合の順序を示す図である。図38(a)において、縦線はピクチャを示し、各ピクチャの右下に示す記号は、一文字目のアルファベットがピクチャタイプ(I、PまたはB)を示し、2文字目以降の数字が時間順のピクチャ番号を示している。また、図39は、実施の形態11を説明するための、参照フレームリスト300の構造を示す図である。フレームメモリ101に入力された各ピクチャは、符号化制御部110によって符号化順に並び替えられる。符号化順への並び替えは、ピクチャ間予測符号化における参照関係に基づいて行われ、参照ピクチャとして用いられるピクチャが、参照ピクチャとして用いるピクチャよりも先に符号化されるように並び替えられる。
【0219】
例えば、Pピクチャは、表示時間順で前方にある近傍のIまたはPピクチャ3枚のうち1枚を参照ピクチャとして用いるとする。また、Bピクチャは、表示時間順で前方にある近傍のIまたはPピクチャ3枚のうち1枚と、表示時間順で後方にある近傍のIまたはPピクチャの1枚とを参照ピクチャとして用いるものとする。具体的には、図38(a)ではピクチャB5およびピクチャB6の後方に入力されていたピクチャP7は、ピクチャB5およびピクチャB6によって参照されるため、ピクチャB5およびピクチャB6の前に並び替えられる。同様に、ピクチャB8およびピクチャB9の後方に入力されていたピクチャP10はピクチャB8およびピクチャB9の前方に、ピクチャB11およびピクチャB12の後方に入力されていたピクチャP13はピクチャB11およびピクチャB12の前方に並び替えられる。これにより、図38(a)のピクチャを並び替えた結果は、図38(b)のようになる。
【0220】
フレームメモリ101で並び替えが行われた各ピクチャは、マクロブロックを垂直方向に2つ連結したマクロブロックペアの単位で読み出されるものとし、各マクロブロックは水平16画素×垂直16画素の大きさであるとする。従って、マクロブロックペアは、水平16画素×垂直32画素の大きさとなる。以下、ピクチャB11の符号化処理について説明する。なお、本実施の形態における参照インデックスの管理、すなわち参照フレームリストの管理は符号化制御部110において行うものとする。
【0221】
ピクチャB11はBピクチャであるので、2方向参照を用いたピクチャ間予測符号化を行う。ピクチャB11は表示時間順で前方にあるピクチャP10、P7、P4と表示時間順で後方にあるピクチャP13のうちの2つのピクチャを参照ピクチャとして用いるものとする。これらの4つのピクチャのうち、いずれの2つのピクチャを選択するかは、マクロブロック単位で指定することができるとする。また、ここでは、参照インデックスは初期状態の方法で割り当てるものとする。すなわちピクチャB11の符号化時における参照フレームリスト300は図39に示す通りとなる。この場合の参照画像は、第1の参照ピクチャは図39の第1参照インデックスにより指定し、第2の参照ピクチャは図39の第2参照インデックスにより指定するものとなる。
【0222】
ピクチャB11の処理においては、符号化制御部110は、スイッチ113がオン、スイッチ114とスイッチ115とがオフになるように各スイッチを制御するものとする。よって、フレームメモリ101から読み出されたピクチャB11のマクロブロックペアは、動きベクトル検出部108、モード選択部109および差分演算部102に入力される。動きベクトル検出部108では、フレームメモリ107に蓄積されたピクチャP10、ピクチャP7、ピクチャP4およびピクチャP13の復号化画像データを参照ピクチャとして用いることにより、マクロブロックペアに含まれる各マクロブロックの第1の動きベクトルと第2の動きベクトルとの検出を行う。モード選択部109では、動きベクトル検出部108で検出された動きベクトルを用いてマクロブロックペアの符号化モードを決定する。ここで、Bピクチャの符号化モードは、例えば、ピクチャ内符号化、一方向動きベクトルを用いたピクチャ間予測符号化、二方向動きベクトルを用いたピクチャ間予測符号化および直接モードから選択することができるものとする。また、直接モード以外の符号化モードを選択する場合には、マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかも併せて決定する。
【0223】
ここでは、直接モードの空間的予測方法を用いて動きベクトルを計算する方法について説明する。図40(a)は、フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。図40(b)は、符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図40(c)は、符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。図40(b)および図40(c)に斜線で示すマクロブロックペアは、符号化対象マクロブロックペアである。
【0224】
符号化対象マクロブロックペアが直接モードの空間的予測を用いて符号化される場合、当該符号化対象マクロブロックペアの周辺の3つの符号化済みマクロブロックペアが選択される。この場合、符号化対象マクロブロックペアは、フィールド構造またはフレーム構造のいずれで符号化されてもよい。従って、符号化制御部110は、まず、符号化対象マクロブロックペアをフィールド構造で符号化するか、フレーム構造で符号化するかを決定する。例えば、周辺マクロブロックペアのうちフィールド構造で符号化されたものが多い場合、符号化対象マクロブロックペアをフィールド構造で符号化し、フレーム構造で符号化されたものが多い場合、フレーム構造で符号化する。このように、符号化対象マクロブロックペアをフレーム構造で符号化するか、フィールド構造で符号化するかを、周辺ブロックの情報を用いて決定することにより、符号化対象マクロブロックペアをいずれの構造で符号化したかを示す情報を符号列中に記述する必要がなくなり、かつ周囲のマクロブロックペアから構造を予測しているため、適した構造を選択することができる。
【0225】
次いで、動きベクトル検出部108は、符号化制御部110の決定に従って、符号化対象マクロブロックペアの動きベクトルを計算する。まず、動きベクトル検出部108は、符号化制御部110がフィールド構造で符号化すると決定したのか、フレーム構造で符号化すると決定したのかを調べ(S301)、フレーム構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフレーム構造で検出し(S302)、フィールド構造で符号化すると決定されている場合は、符号化対象マクロブロックペアの動きベクトルをフィールド構造で検出する(S303)。
【0226】
図41は、フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。同図において、白丸は奇数水平走査線上の画素を示し、斜線でハッチングした黒丸は偶数水平走査線上の画素を示している。入力画像を表す各フレームからマクロブロックペアを切り出した場合、図41中央に示すように、奇数水平走査線上の画素と偶数水平走査線上の画素とは垂直方向に交互に配置されている。このようなマクロブロックペアをフレーム構造で符号化する場合、当該マクロブロックペアは2つのマクロブロックMB1およびマクロブロックMB2毎に処理され、マクロブロックペアを構成する2つのマクロブロックMB1とマクロブロックMB2とのそれぞれについて動きベクトルが求められる。また、フィールド構造で符号化する場合、当該マクロブロックペアは、水平走査線方向にインタレースした場合のトップフィールドを表すマクロブロックTFとボトムフィールドを表すマクロブロックBFとに分けられ、その動きベクトルは、マクロブロックペアを構成する2つのフィールドにそれぞれ1つ求められる。
【0227】
このようなマクロブロックペアを前提として、図40(b)に示すように、符号化対象マクロブロックペアをフレーム構造で符号化する場合について説明する。図42は、図40に示したステップS302における、より詳細な処理手順を示すフローチャートである。なお、同図において、マクロブロックペアをMBP、マクロブロックをMBと表記する。
【0228】
モード選択部109は、まず、符号化対象マクロブロックペアを構成する1つのマクロブロックMB1(上部のマクロブロック)について、1つの動きベクトルを直接モードの空間的予測を用いて計算する。まず、モード選択部109は、周辺マクロブロックペアが参照するピクチャのインデックスのうちの最小値を第1動きベクトルと第2動きベクトルのインデックスのそれぞれについて求める(S501)。ただしこの場合、周辺マクロブロックペアがフレーム構造で符号化されている場合には、符号化対象マクロブロックに隣接するマクロブロックのみを用いて決定する。次に、周辺マクロブロックペアがフィールド構造で符号化されているか否かを調べ(S502)、フィールド構造で符号化されている場合にはさらに、当該周辺マクロブロックペアを構成する2つのマクロブロックによって参照されたフィールドのうち、いくつのフィールドが最小のインデックスが付されたフィールドであるかを、図39の参照フレームリストから調べる(S503)。
【0229】
ステップS503において調べた結果、2つのマクロブロックによって参照されたフィールドがいずれも最小のインデックス(すなわち同じインデックス)が付されたフィールドである場合には、2つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする(S504)。これはインタレース構造で考えた場合、フレーム構造の符号化対象マクロブロックには、フィールド構造の周辺マクロブロックペアの2つのマクロブロックが隣接するためである。
【0230】
ステップS503において調べた結果、1つのマクロブロックによって参照されたフィールドのみが最小のインデックスが付されたフィールドである場合には、その1つのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする(S504A)。いずれも、参照されたフィールドが最小のインデックスが付されていないフィールドである場合には、当該周辺マクロブロックペアの動きベクトルを「0」とする(S505)。
【0231】
上記において、周辺マクロブロックの動きベクトルのうち、参照するフィールドが最小のインデックスが付されているフィールドの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。S505の処理は、予測に適した動きベクトルがないと判断していることを示している。
【0232】
ステップS502において調べた結果、当該周辺マクロブロックペアがフレーム構造で符号化されている場合には、当該周辺マクロブロックペアのうち、符号化対象マクロブロックに隣接するマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとする(S506)。
【0233】
モード選択部109は、上記ステップS501からステップS506までの処理を、選択された3つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の1つのマクロブロック、例えば、マクロブロックMB1について、3つの周辺マクロブロックペアの動きベクトルがそれぞれ1つずつ求められたことになる。
【0234】
次いで、モード選択部109は、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照しているものが1つであるか否かを調べる(S507)。
【0235】
この場合、モード選択部109は、3つの周辺マクロブロックペアの参照インデックスを参照フレームインデックスまたは参照フィールドインデックスのいずれかに統一して比較する。図39に示した参照フレームリストには、フレームごとに参照インデックスが付されているだけであるが、この参照フレームインデックスと、フィールドごとにインデックスが付されている参照フィールドインデックスとは一定の関係にあるので、参照フレームリストまたは参照フィールドリストの一方から計算によって他方の参照インデックスに変換することができる。
【0236】
図43は、参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【0237】
この図43に示すように、参照フィールドリストには、第1フィールドf1及び第2フィールドf2により示されるフレームが時系列に沿って幾つか存在し、各フレームには、符号化対象ブロックを含むフレーム(図43中ので示すフレーム)を基準に、0,1,2,…といった参照フレームインデックスが割り当てられている。また、各フレームの第1フィールドf1及び第2フィールドf2には、符号化対象ブロックを含むフレームの第1フィールドf1を基準に(第1フィールドが符号化対象フィールドである場合)、0,1,2,…といった参照フィールドインデックスが割り当てられている。なお、この参照フィールドインデックスは、符号化対象フィールドに近いフレームの第1フィールドf1及び第2フィールドf2から、符号化対象ブロックが第1フィールドf1であれば第1フィールドf1を優先させて、符号化対象ブロックが第2フィールドf2であれば第2フィールドf2を優先させて割り当てられる。
【0238】
例えば、フレーム構造で符号化された周辺マクロブロックが参照フレームインデックス「1」のフレームを参照しており、フィールド構造で符号化された周辺ブロックが参照フィールドインデックス「2」の第1フィールドf1を参照しているときには、上記周辺マクロブロックはいずれも同一ピクチャを参照しているとして扱われる。すなわち、1つの周辺マクロブロックによって参照されるフレームの参照フレームインデックスが、他の1つの周辺マクロブロックの参照フィールドに割り当てられた参照フィールドインデックスの二分の一の値に等しい(小数点以下は切り捨て)という前提条件を満たすときに、その周辺マクロブロックは同一のピクチャを参照しているとして扱われる。
【0239】
例えば、図43中の△で示す第1フィールドf1に含まれる符号化対象ブロックが参照フィールドインデックス「2」の第1フィールドf1を参照しており、フレーム構造である周辺マクロブロックが参照フレームインデックス「1」のフレームを参照しているときには、上記前提条件を満たすため、上記周辺ブロックは同一のピクチャを参照しているとして扱われる。一方、ある周辺マクロブロックが参照フィールドインデックス「2」の第1フィールドを参照しており、他の周辺マクロブロックが参照フレームインデックス「3」のフレームを参照しているときには、上記前提条件を満たさないため、その周辺ブロックは同一のピクチャを参照していないとして扱われる。
【0240】
上記のように、ステップS507において調べた結果、1つであれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする(S508)。ステップS507で調べた結果、1つでなければ、さらに、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアが2つ以上あるか否かを調べ(S509)、2つ以上あれば、その中でさらにインデックスが最小のフレームまたはそのフレーム内のフィールドを参照していない周辺マクロブロックペアがあればその動きベクトルを「0」とした上(S510)、周辺マクロブロックペアの3つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする(S511)。また、ステップS509で調べた結果、2つ未満であれば、インデックスが最小のフレームまたはそのフレーム内のフィールドを参照した周辺マクロブロックペアの数は「0」なので、符号化対象マクロブロックの動きベクトルを「0」とする(S512)。
【0241】
以上の処理の結果、符号化対象マクロブロックペアを構成する1つのマクロブロック例えば、MB1について、1つの動きベクトルMV1が計算結果として得られる。モード選択部109は、上記処理を、第2の参照インデックスを有する動きベクトルについても行い、得られた2つの動きベクトルを用いて2方向予測により動き補償を行う。ただし、周辺マクロブロックペアのうち、第1または第2の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、1方向のみの動きベクトルにより動き補償を行う。また、符号化対象マクロブロックペア内のもう1つのマクロブロック、例えば、マクロブロックMB2についても同じ処理を繰り返す。この結果、1つの符号化対象マクロブロックペアにおける2つの各マクロブロックについて、直接モードによる動き補償を行ったことになる。
【0242】
次に、図40(c)のように、符号化対象マクロブロックペアをフィールド構造で符号化する場合について説明する。図44は、図40に示したステップS303における、より詳細な処理手順を示すフローチャートである。モード選択部109は、符号化対象マクロブロックペアを構成する1つのマクロブロック、例えば、当該マクロブロックペアのトップフィールドに対応するマクロブロックTFについて、1つの動きベクトルMVtを直接モードの空間的予測を用いて計算する。まず、モード選択部109は、周辺マクロブロックペアが参照するピクチャのインデックスのうち最小値を求める(S601)。ただし、周辺マクロブロックペアがフィールド構造で処理されている場合には、符号化対象マクロブロックと同一フィールド(トップフィールドまたはボトムフィールド)のマクロブロックについてのみ考える。次いで、周辺マクロブロックペアがフレーム構造で符号化されているか否かを調べ(S602)、フレーム構造で符号化されている場合にはさらに、当該周辺マクロブロックペア内の2つのマクロブロックによって参照されたフレームがいずれも最小のインデックスが付されたフレームであるか否かを、参照フレームリスト300によって各フレームに付与されたインデックスの値を基に判断する(S603)。
【0243】
ステップS603において調べた結果、2つのマクロブロックによって参照されたフレームがいずれも最小のインデックスである場合には、2つのマクロブロックの動きベクトルの平均値を求め、当該周辺マクロブロックペアの動きベクトルとする(S604)。ステップS603において調べた結果、一方または両方とも、参照したフレームが最小のインデックスを有しないフレームである場合には、さらに、いずれかのマクロブロックによって参照されたフレームが最小のインデックスを有しているか否かを調べ(S605)、調べた結果、いずれか一方のマクロブロックが参照したフレームに最小のインデックスが付されている場合には、そのマクロブロックの動きベクトルを当該周辺マクロブロックペアの動きベクトルとし(S606)、ステップS605で調べた結果、いずれのマクロブロックも、参照したフレームに最小のインデックスが付されていない場合には、当該周辺マクロブロックペアの動きベクトルを「0」とする(S607)。上記において、周辺マクロブロックの動きベクトルのうち、参照するフレームが最小のインデックスが付されているフレームの動きベクトルのみを用いることにより、より符号化効率の高い動きベクトルを選択することができる。S607の処理は、予測に適した動きベクトルがないと判断していることを示している。
【0244】
また、ステップS602において調べた結果、当該周辺マクロブロックペアがフィールド構造で符号化されている場合には、当該周辺マクロブロックペア全体の動きベクトルを、当該周辺マクロブロックペアにおいて、符号化対象マクロブロックペア内の対象マクロブロックに対応するマクロブロックの動きベクトルとする(S608)。モード選択部109は、上記ステップS601からステップS608までの処理を、選択された3つの周辺マクロブロックペアについて繰り返す。この結果、符号化対象マクロブロックペア内の1つのマクロブロック、例えば、マクロブロックTFについて、3つの周辺マクロブロックペアの動きベクトルがそれぞれ1つずつ求められたことになる。
【0245】
次いで、動きベクトル検出部108は、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照しているものが1つであるか否かを調べ(S609)、1つであれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの動きベクトルを、符号化対象マクロブロックの動きベクトルとする(S610)。ステップS609で調べた結果、1つでなければ、さらに、3つの周辺マクロブロックペアのうち、インデックスが最小のフレームを参照した周辺マクロブロックペアが2つ以上あるか否かを調べ(S611)、2つ以上あれば、その中でさらにインデックスが最小のフレームを参照していない周辺マクロブロックペアの動きベクトルを「0」とした上(S612)、周辺マクロブロックペアの3つの動きベクトルの中央値を符号化対象マクロブロックの動きベクトルとする(S613)。また、ステップS611で調べた結果、2つ未満であれば、インデックスが最小のフレームを参照した周辺マクロブロックペアの数は「0」なので、符号化対象マクロブロックの動きベクトルを「0」とする(S614)。
【0246】
以上の処理の結果、符号化対象マクロブロックペアを構成する1つのマクロブロック例えば、トップフィールドに対応するマクロブロックTFについて、1つの動きベクトルMVtが計算結果として得られる。モード選択部109は、上記処理を、第2の動きベクトル(第2の参照インデックスに対応)についても繰り返す。これにより、マクロブロックTFについて2つの動きベクトルが得られ、これらの動きベクトルを用いて2方向予測による動き補償を行う。ただし、周辺マクロブロックペアのうち、第1または第2の動きベクトルを有する周辺マクロブロックが存在しない場合には、その方向の動きベクトルは用いず、1方向のみの動きベクトルにより動き補償を行う。これは、周辺マクロブロックペアが一方向のみしか参照していないということは、符号化対象マクロブロックについても一方向のみを参照する方が、符号化効率が高くなると考えられるからである。
【0247】
また、符号化対象マクロブロックペア内のもう1つのマクロブロック、例えば、ボトムフィールドに対応するマクロブロックBFについても同じ処理繰り返す。この結果、1つの符号化対象マクロブロックペアにおける2つの各マクロブロック、例えば、マクロブロックTFとマクロブロックBFとについて、直接モードによる処理を行ったことになる。
【0248】
なお、ここでは符号化対象マクロブロックペアの符号化構造と周辺マクロブロックペアの符号化構造とが異なる場合には、周辺マクロブロックペア内の2つのマクロブロックの動きベクトルの平均値を求めるなどの処理を行って計算したが、本発明はこれに限定されず、例えば、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用い、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が異なる場合には、符号化構造が異なる周辺マクロブロックペアの動きベクトルを用いないとしてもよい。より具体的には、まず、▲1▼符号化対象マクロブロックペアがフレーム構造で符号化される場合、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フレーム構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「0」とする。また、周辺マクロブロックペアがフィールド構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「0」とする。次に▲2▼符号化対象マクロブロックペアがフィールド構造で符号化される場合、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのみを用いる。この際に、フィールド構造で符号化されている周辺マクロブロックペアの動きベクトルのうち、インデックスが最小のフレームを参照したものがない場合、符号化対象マクロブロックペアの動きベクトルを「0」とする。また、周辺マクロブロックペアがフレーム構造で符号化されている場合、その周辺マクロブロックペアの動きベクトルを「0」とする。このようにして各周辺マクロブロックペアの動きベクトルを計算した後、▲3▼これらの動きベクトルのうち、最小のインデックスを有するフレームまたはそのフィールドを参照して得られたものが1つだけの場合は、その動きベクトルを直接モードにおける符号化対象マクロブロックペアの動きベクトルとし、そうでない場合には、3つの動きベクトルの中央値を直接モードにおける符号化対象マクロブロックペアの動きベクトルとする。
【0249】
また、上記説明では、符号化対象マクロブロックペアをフィールド構造で符号化するかフレーム構造で符号化するかを、符号化済みの周辺マクロブロックペアの符号化構造の多数決で決定したが、本発明はこれに限定されず、例えば、直接モードでは、必ずフレーム構造で符号化する、または必ずフィールド構造で符号化するというように固定的に定めておいてもよい。この場合、例えば、符号化対象となるフレームごとにフィールド構造で符号化するかまたはフレーム構造で符号化するかを切り替える場合には、符号列全体のヘッダまたはフレームごとのフレームヘッダなどに記述するとしてもよい。切り替えの単位は、例えば、シーケンス、GOP、ピクチャ、スライスなどであってもよく、この場合には、それぞれ符号列中の対応するヘッダなどに記述しておけばよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。更に、パケット等で伝送する場合はヘッダ部とデータ部を分離して別に伝送してもよい。その場合は、ヘッダ部とデータ部が1つのビットストリームとなることはない。しかしながら、パケットの場合は、伝送する順序が多少前後することがあっても、対応するデータ部に対応するヘッダ部が別のパケットで伝送されるだけであり、1つのビットストリームとなっていなくても同じである。このように、フレーム構造を用いるのかフィールド構造を用いるのかを固定的に定めることにより、周辺ブロックの情報を用いて構造を決定する処理がなくなり、処理の簡略化を図ることができる。
【0250】
またさらには、直接モードにおいて、符号化対象マクロブロックペアをフレーム構造とフィールド構造の両者で処理し、符号化効率が高い構造を選択する方法を用いてもよい。この場合、フレーム構造とフィールド構造のいずれを選択したかは、符号列中のマクロブロックペアのヘッダ部に記述すればよい。このようにした場合でも、符号化対象マクロブロックペアと周辺マクロブロックペアとで符号化構造が同じ場合にのみ、その周辺マクロブロックペアの動きベクトルを用いる方法で、直接モードにおける符号化対象マクロブロックペアの動きベクトルを計算することができることはいうまでもない。このような方法を用いることにより、フレーム構造とフィールド構造のいずれを選択したかを示す情報が符号列中に必要となるが、動き補償の残差信号をより削減することが可能となり、符号化効率の向上を図ることができる。
【0251】
また上記の説明においては、周辺マクロブロックペアはマクロブロックの大きさを単位として動き補償されている場合について説明したが、これは異なる大きさを単位として動き補償されていてもよい。この場合、図45(a)、(b)に示すように、符号化対象マクロブロックペアのそれぞれのマクロブロックに対して、a、b、cに位置する画素を含むブロックの動きベクトルを周辺マクロブロックペアの動きベクトルとする。ここで図45(a)は、上部のマクロブロックを処理する場合を示し、図45(b)は下部のマクロブロックを処理する場合を示している。ここで、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、図46(a)、(b)に示すようなa、b、cの位置の画素を含むブロックと位置a’、b’、c’の画素を含むブロックとを用いて処理を行う。ここで位置a’、b’、c’は、画素a、b、cの位置に対応する同一マクロブロックペア内のもう一方のマクロブロックに含まれるブロックである。例えば図46(a)の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、BL1とBL2の動きベクトルを用いて決定する。また、図46(b)の場合、符号化対象マクロブロックペアと周辺マクロブロックペアとのフレーム/フィールド構造が異なる場合、上部の符号化対象マクロブロックの左側のブロックの動きベクトルは、BL3とBL4の動きベクトルを用いて決定する。このような処理方法を用いることにより、周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【0252】
また、周辺マクロブロックペアがマクロブロックの大きさとは異なる大きさを単位として動き補償されている場合には、マクロブロックに含まれるブロックの動きベクトルの平均値を求めることにより、そのマクロブロックの動きベクトルとしても良い。周辺マクロブロックがマクロブロックの大きさとは異なる単位で動き補償されている場合でも、フレーム・フィールドの差を考慮した直接モードの処理を行うことが可能となる。
【0253】
さて、上記のように、動きベクトルが検出され、検出され動きベクトルに基づいてピクチャ間予測符号化が行われた結果、動きベクトル検出部108によって検出された動きベクトル、符号化された予測誤差画像は、マクロブロックごとに符号列中に格納される。ただし、直接モードで符号化されたマクロブロックの動きベクトルについては、単に直接モードで符号化されたことが記述されるだけで、動きベクトルおよび参照インデックスは符号列に記述されない。図47は、符号列生成部104によって生成される符号列700のデータ構成の一例を示す図である。同図のように、符号列生成部104によって生成された符号列700には、ピクチャPictureごとにヘッダHeaderが設けられている。このヘッダHeaderには、例えば、参照フレームリスト10の変更を示す項目RPSLおよび当該ピクチャのピクチャタイプを示す図示しない項目などが設けられており、項目RPSLには、参照フレームリスト10の第1参照インデックス12および第2参照インデックス13の値の割り当て方に初期設定から変更があった場合、変更後の割り当て方が記述される。
【0254】
一方、符号化された予測誤差は、マクロブロックごとに記録される。例えば、あるマクロブロックが直接モードの空間的予測を用いて符号化されている場合には、そのマクロブロックに対応する予測誤差を記述する項目Block1において、当該マクロブロックの動きベクトルは記述されず、当該マクロブロックの符号化モードを示す項目PredTypeに符号化モードが直接モードであることを示す情報が記述される。また、当該マクロブロックペアがフレーム構造またはフィールド構造のいずれで符号化するかを前述の符号化効率の観点から選択するような場合には、フレーム構造またはフィールド構造のいずれが選択されたかを示す情報が記述される。これに続いて、符号化された予測誤差が項目CodedResに記述される。また、別のマクロブロックがピクチャ間予測符号化モードで符号化されたマクロブロックである場合、そのマクロブロックに対応する予測誤差を記述する項目Block2の中の符号化モードを示す項目PredTypeに、当該マクロブロックの符号化モードがピクチャ間予測符号化モードであることが記述される。この場合、符号化モードのほか、さらに、当該マクロブロックの第1参照インデックス12が項目Ridx0に、第2参照インデックス13が項目Ridx1に書き込まれる。ブロック中の参照インデックスは可変長符号語により表現され、値が小さいほど短い符号長のコードが割り当てられている。また、続いて、当該マクロブロックの前方フレーム参照時の動きベクトルが項目MV0に、後方フレーム参照時の動きベクトルが項目MV1に記述される。これに続いて、符号化された予測誤差が項目CodedResに記述される。
【0255】
図48は、図47に示した符号列700を復号化する動画像復号化装置800の構成を示すブロック図である。動画像復号化装置800は、直接モードで符号化されたマクロブロックを含んだ予測誤差が記述されている符号列700を復号化する動画像復号化装置であって、符号列解析部701、予測誤差復号化部702、モード復号部703、動き補償復号部705、動きベクトル記憶部706、フレームメモリ707、加算演算部708、スイッチ709及びスイッチ710、動きベクトル復号化部711を備える。符号列解析部701は、入力された符号列700から各種データを抽出する。ここでいう各種データとは、符号化モードの情報および動きベクトルに関する情報などである。抽出された符号化モードの情報は、モード復号部703に出力される。また、抽出された動きベクトル情報は、動きベクトル復号化部711に出力される。さらに、抽出された予測誤差符号化データは、予測誤差復号化部702に対して出力される。予測誤差復号化部702は、入力された予測誤差符号化データの復号化を行い、予測誤差画像を生成する。生成された予測誤差画像はスイッチ709に対して出力される。例えば、スイッチ709が端子bに接続されているときには、予測誤差画像は加算器708に対して出力される。
【0256】
モード復号部703は、符号列から抽出された符号化モード情報を参照し、スイッチ709とスイッチ710との制御を行う。符号化モードがピクチャ内符号化である場合には、スイッチ709を端子aに接続し、スイッチ710を端子cに接続するように制御する。
符号化モードがピクチャ間符号化である場合には、スイッチ709を端子bに接続し、スイッチ710を端子dに接続するように制御する。さらに、モード復号部703では、符号化モードの情報を動き補償復号部705と動きベクトル復号化部711に対しても出力する。動きベクトル復号化部711は、符号列解析部701から入力された、符号化された動きベクトルに対して、復号化処理を行う。復号化された参照ピクチャ番号と動きベクトルは、動きベクトル記憶部706に保持されると同時に、動き補償復号部705に対して出力される。
【0257】
符号化モードが直接モードである場合には、モード復号部703は、スイッチ709を端子bに接続し、スイッチ710を端子dに接続するように制御する。さらに、モード復号部703では、符号化モードの情報を動き補償復号部705と動きベクトル復号化部711に対しても出力する。動きベクトル復号化部711は、符号化モードが直接モードである場合、動きベクトル記憶部706に記憶されている周辺マクロブロックペアの動きベクトルと参照ピクチャ番号とを用いて、直接モードで用いる動きベクトルを決定する。この動きベクトルの決定方法は、図37のモード選択部109の動作で説明した内容と同様であるので、ここでは説明は省略する。
【0258】
復号化された参照ピクチャ番号と動きベクトルとに基づいて、動き補償復号部705は、フレームメモリ707からマクロブロックごとに動き補償画像を取得する。取得された動き補償画像は加算演算部708に出力される。フレームメモリ707は、復号化画像をフレームごとに保持するメモリである。加算演算部708は、入力された予測誤差画像と動き補償画像とを加算し、復号化画像を生成する。生成された復号化画像は、フレームメモリ707に対して出力される。
【0259】
以上のように、本実施の形態によれば、直接モードの空間的予測方法において、符号化対象マクロブロックペアに対する符号化済み周辺マクロブロックペアに、フレーム構造で符号化されたものとフィールド構造で符号化されたものとが混在する場合においても、容易に動きベクトルを求めることができる。
【0260】
なお、上記の実施の形態においては、各ピクチャはマクロブロックを垂直方向に2つ連結したマクロブロックペアの単位で、フレーム構造またはフィールド構造のいずれかを用いて処理される場合について説明したが、これは、異なる単位、例えばマクロブロック単位でフレーム構造またはフィールド構造を切り替えて処理しても良い。
【0261】
また、上記の実施の形態においては、Bピクチャ中のマクロブロックを直接モードで処理する場合について説明したが、これはPピクチャでも同様の処理を行うことができる。Pピクチャの符号化・復号化時においては、各ブロックは1つのピクチャからのみ動き補償を行い、また参照フレームリストは1つしかない。そのため、Pピクチャでも本実施の形態と同様の処理を行うには、本実施の形態において符号化・復号化対象ブロックの2つの動きベクトル(第1の参照フレームリストと第2の参照フレームリスト)を求める処理を、1つの動きベクトルを求める処理とすれば良い。
【0262】
また、上記の実施の形態においては、3つの周辺マクロブロックペアの動きベクトルを用いて、直接モードで用いる動きベクトルを予測生成する場合について説明したが、用いる周辺マクロブロックペアの数は異なる値であっても良い。例えば、左隣の周辺マクロブロックペアの動きベクトルのみを用いるような場合が考えられる。
【0263】
(実施の形態12)
さらに、上記各実施の形態で示した画像符号化方法および画像復号化方法の構成を実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
【0264】
図49は、上記実施の形態1から実施の形態11の画像符号化方法および画像復号化方法をコンピュータシステムにより実現するためのプログラムを格納するための記憶媒体についての説明図である。
【0265】
図49(b)は、フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示し、図49(a)は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクFDはケースF内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。従って、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクFD上に割り当てられた領域に、上記プログラムとしての画像符号化方法および画像復号化方法が記録されている。
【0266】
また、図49(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsから上記プログラムとしての画像符号化方法および画像復号化方法をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記画像符号化方法および画像復号化方法をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
【0267】
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、CD−ROM、メモリカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
【0268】
さらにここで、上記実施の形態で示した画像符号化方法や画像復号化方法の応用例とそれを用いたシステムを説明する。
【0269】
図50は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
【0270】
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
【0271】
しかし、コンテンツ供給システムex100は図50のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
【0272】
カメラex113はディジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband−Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
【0273】
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラex116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はディジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画像符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
【0274】
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
【0275】
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画像符号化装置あるいは画像復号化装置を用いるようにすればよい。
【0276】
その一例として携帯電話について説明する。
【0277】
図51は、上記実施の形態で説明した画像符号化方法と画像復号化方法を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したものである。
【0278】
さらに、携帯電話ex115について図52を用いて説明する。携帯電話ex115は表示部ex202及び操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306及び音声処理部ex305が同期バスex313を介して互いに接続されている。
【0279】
電源回路部ex310は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ex115を動作可能な状態に起動する。
【0280】
携帯電話ex115は、CPU、ROM及びRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってディジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信データを増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声データに変換した後、これを音声出力部ex208を介して出力する。
【0281】
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
【0282】
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303及びLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
【0283】
画像符号化部ex312は、本願発明で説明した画像符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画像符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してディジタルの音声データとして多重分離部ex308に送出する。
【0284】
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。
【0285】
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信データを変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
【0286】
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データのビットストリームと音声データのビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
【0287】
次に、画像復号化部ex309は、本願発明で説明した画像復号化装置を備えた構成であり、画像データのビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声データに変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
【0288】
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図53に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画像符号化装置または画像復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報のビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置によりビットストリームを復号化してこれを再生する。また、記録媒体であるCDやDVD等の蓄積メディアex402に記録したビットストリームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画像復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画像復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画像復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
【0289】
更に、画像信号を上記実施の形態で示した画像符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある。更にSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画像復号化装置を備えていれば、DVDディスクex421やSDカードex422に記録した画像信号を再生し、モニタex408で表示することができる。
【0290】
なお、カーナビゲーションex413の構成は例えば図52に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
【0291】
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
【0292】
このように、上記実施の形態で示した動画像符号化方法あるいは動画像復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
【0293】
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
【0294】
本発明に係る画像符号化装置は、通信機能を備えるパーソナルコンピュータ、PDA、ディジタル放送の放送局および携帯電話機などに備えられる画像符号化装置として有用である。
【0295】
また、本発明に係る画像復号化装置は、通信機能を備えるパーソナルコンピュータ、PDA、ディジタル放送を受信するSTBおよび携帯電話機などに備えられる画像復号化装置として有用である。
【0296】
【発明の効果】
以上、本発明の動きベクトル計算方法によると、ピクチャ間予測符号化を行うブロックが符号化済みの別のピクチャの同じ位置にあるブロックの動きベクトルを参照して動き補償を行う際に、動きベクトルを参照されるブロックが複数の動きベクトルを有していた場合、前記複数の動きベクトルからスケーリングに用いるための1つの動きベクトルを生成することによって、前記動き補償を矛盾無く実現することを可能とする。また、動きベクトルのスケーリング時に除算演算が行われるが、除算結果が予め定められた動きベクトルの精度と一致するように演算を施すことが可能となる。
【図面の簡単な説明】
【図1】ピクチャ番号と参照インデックスの説明図である。
【図2】従来の画像符号化装置による画像符号化信号フォーマットの概念を示す図である。
【図3】本発明の実施の形態1および実施の形態2による符号化の動作を説明するためのブロック図である。
【図4】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図5】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図6】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図7】表示の順番および符号化の順番におけるピクチャの参照関係を比較するための模式図である。
【図8】本発明の実施の形態5および実施の形態6による復号化の動作を説明するためのブロック図である。
【図9】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図10】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図11】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図12】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図13】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図14】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図15】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で前方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図16】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図17】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図18】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する2つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図19】直接モードにおいて動きベクトルを参照されるブロックが表示時間順で後方を参照する1つの動きベクトルを持っていた場合の動作を説明するための模式図である。
【図20】直接モードにおいて周辺ブロックの動きベクトルを参照する場合の動作を説明するための模式図である。
【図21】符号化列を示す図である。
【図22】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図23】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図24】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図25】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図26】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図27】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図28】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図29】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図30】符号化対象ブロックの周囲のブロックが有する動きベクトルを示す図である。
【図31】直接モードにおいて使用する動きベクトルを決定する手順を示す図である。
【図32】符号化対象ブロックと符号化対象ブロックの周囲のブロックとの関係を示す図である。
【図33】参照インデックスの値によって符号化対象ブロックの動きベクトルを決定する手順を示す図である。
【図34】長時間メモリに保存されているピクチャを参照する動きベクトルが1つだけの場合の直接モードにおける2方向予測を示す図である。
【図35】長時間メモリに保存されているピクチャを参照する動きベクトルが2つある場合の直接モードにおける2方向予測を示す図である。
【図36】動きベクトル計算方法の処理の流れを示す図である。
【図37】本発明の実施形態11に係る動画像符号化装置1100の構成を示すブロック図である。
【図38】(a)動画像符号化装置1100に時間順にピクチャ単位で入力されるフレームの順序を示す図である。
(b)図38(a)に示したフレームの並びを符号化の順に並び替えた場合の順序を示す図である。
【図39】第1の実施の形態を説明するための、参照ピクチャリストの構造を示す図である。
【図40】(a)フィールド構造で符号化されるマクロブロックペアとフレーム構造で符号化されるマクロブロックペアとが混在する場合の直接モード空間的予測方法を用いた動きベクトル計算手順の一例を示すフローチャートである。
(b)符号化対象マクロブロックペアがフレーム構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
(c)符号化対象マクロブロックペアがフィールド構造で符号化される場合において本発明が適用される周辺マクロブロックペアの配置の一例を示す図である。
【図41】フレーム構造で符号化する場合のマクロブロックペアのデータ構成とフィールド構造で符号化する場合のマクロブロックペアのデータ構成とを示す図である。
【図42】図40に示したステップS302における、より詳細な処理手順を示すフローチャートである。
【図43】参照フィールドインデックスと参照フレームインデックスとの関係を示す関係表示図である。
【図44】図40に示したステップS303における、より詳細な処理手順を示すフローチャートである。
【図45】第1の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図46】第1の実施の形態を説明するための、符号化対象マクロブロックペアと周辺マクロブロックペアの位置関係を示す図である。
【図47】符号列生成部1104によって生成される符号列700のデータ構成の一例を示す図である。
【図48】図47に示した符号列700を復号化する動画像復号化装置1800の構成を示すブロック図である。
【図49】(a)記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示す図である。
(b)フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示す図である。
(c)フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す図である。
【図50】コンテンツ配信サービスを実現するコンテンツ供給システムの全体構成を示すブロック図である。
【図51】携帯電話の外観の一例を示す図である。
【図52】携帯電話の構成を示すブロック図である。
【図53】上記実施の形態で示した符号化処理または復号化処理を行う機器、およびこの機器を用いたシステムを説明する図である。
【図54】従来例のピクチャの参照関係を説明するための模式図である。
【図55】従来例の直接モードの動作を説明するための模式図である。
【図56】(a)従来の直接モードの空間的予測方法を用い、Bピクチャにおいて時間的前方ピクチャを参照する場合の動きベクトル予測方法の一例を示す図である。
(b)各符号化対象ピクチャに作成される参照ピクチャリストの一例を示す図である。
【符号の説明】
101、105 フレームメモリ
102 予測残差符号化部
103 符号化列生成部
104 予測残差復号化部
106 動きベクトル検出部
107 モード選択部
108 動きベクトル記憶部
109 差分演算部
110 加算演算部
111、112 スイッチ
601 符号列解析部
602 予測残差復号化部
603 フレームメモリ
604 動き補償復号部
605 動きベクトル記憶部
606 加算演算部
607 スイッチ
608 予測モード/動きベクトル復号化部
Claims (19)
- 複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、
表示時間順で前方にある複数のピクチャもしくは表示時間順で後方にある複数のピクチャもしくは表示時間順で前方および後方の両方にある複数のピクチャを参照することができる参照ステップと、
ピクチャ間予測を行うブロックが属するピクチャとは別のピクチャの前記ブロックと同じ位置にあるブロックの動きベクトルを参照して、前記ピクチャ間予測を行うブロックの動き補償を行う場合に、前記動きベクトルを参照されるブロックに対してすでに求められている動きベクトルのうち、所定の条件を満足する少なくとも1つの動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する動き補償ステップとを含む
ことを特徴とする動きベクトル計算方法。 - 前記参照ステップでは、表示時間順で前方にあるピクチャを優先して識別番号を昇順で付与された第1のピクチャの並びと、表示時間順で後方にあるピクチャを優先して識別番号を昇順で付与された第2のピクチャの並びとから、それぞれ1つのピクチャを参照することができ、
前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて前記第1の並びにあるピクチャを参照する動きベクトルを用いる
ことを特徴とする請求項1記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記第2の並びにあるピクチャのうち最小の識別番号を有するピクチャを前記別のピクチャとし、前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項2記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、長時間メモリに保存されるピクチャを参照する動きベクトルを複数有する時、ピクチャ間予測を行うブロックの動きベクトルとして、前記長時間メモリに保存されるピクチャを参照する動きベクトルのうち、前記第1の並びにあるピクチャを参照する動きベクトルを用いる
ことを特徴とする請求項2記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックにおいて表示時間順で前方にあるピクチャを参照する動きベクトルのうち、少なくとも1つを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項1記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックが1または複数の動きベクトルを有する時、先に符号化または復号化された動きベクトル、または先に符号列に記述された動きベクトルを用いて前記ピクチャ間予測を行うブロックの動きベクトルを計算する
ことを特徴とする請求項1記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、表示時間順で前方または後方にあるピクチャを参照する複数の動きベクトルを有する時、前記複数の動きベクトルのうちの少なくとも1つを用いて前記ピクチャ間予測を行うブロックの1つの動きベクトルを計算する
ことを特徴とする請求項1記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックが表示時間順で前方または後方にあるピクチャを参照する複数の動きベクトルを有する場合に、前記複数の動きベクトルのうちピクチャ間予測を行うピクチャに表示時間順で近いピクチャを参照する1つの動きベクトルまたは表示時間順で遠いピクチャを参照する1つの動きベクトルを用いて、動き補償を行うための動きベクトルを計算する
ことを特徴とする請求項1記載の動きベクトル計算方法。 - 前記動き補償ステップでは、前記動きベクトルを参照されるブロックが、長時間メモリに保存されているピクチャを参照する動きベクトルを1つ有する時、前記ピクチャ間予測を行うブロックの動きベクトルとして、前記長時間メモリに保存されているピクチャを参照する動きベクトルを割り当てる
ことを特徴とする請求項1〜8のいずれか1項に記載の動きベクトル計算方法。 - 前記動き補償ステップでは、
前記動きベクトルを参照されるブロックが、長時間メモリに保存されているピクチャを参照する動きベクトルを少なくとも1つ有する時、前記長時間メモリに保存されているピクチャを参照する動きベクトルが、前記動きベクトルを参照されるブロックのピクチャより表示時間順で前方にあるピクチャを参照する動きベクトルである場合、その動きベクトルを前記ピクチャ間予測を行うブロックの動きベクトルとする
ことを特徴とする請求項1〜8のいずれか1項に記載の動きベクトル計算方法。 - 前記動き補償ステップでは、さらに、前記ピクチャ間予測を行うブロックの動きベクトルの計算を行う途中段階、または最終結果に対して、所定の動きベクトルの精度への丸め演算を行う
ことを特徴とする請求項1〜8のいずれか1項に記載の動きベクトル計算方法。 - 複数のピクチャを参照してピクチャ間予測を行う際の動きベクトルの計算方法であって、
記憶部に格納されている複数の符号化済ピクチャから符号化対象ピクチャ上のブロックを動き補償により求めるときに参照する第1の参照ピクチャと第2の参照ピクチャのうち少なくとも一方の参照ピクチャを選択するときに用いる第1参照インデックスまたは第2参照インデックスを前記符号化済ピクチャに対して付与する付与ステップと、
前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第1参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第1選択ステップと、
前記第1選択ステップで選択された動きベクトルを用いて前記符号化対象ピクチャより表示時間順で、前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出する導出ステップと
を含むことを特徴とする動きベクトル計算方法。 - 前記第1選択ステップでは、第1参照インデックスを有する動きベクトルのうち、さらに、第1参照インデックスの値が最小のものの中央値を示す動きベクトルを選択する
ことを特徴とする請求項12記載の動きベクトル計算方法。 - 前記第1選択ステップは、さらに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち第2参照インデックスを有する動きベクトルが複数あるとき、それらの中央値を示す動きベクトルを選択する第2選択ステップを含む
ことを特徴とする請求項13記載の動きベクトル計算方法。 - 前記第2選択ステップでは、第2参照インデックスを有する動きベクトルのうち、さらに、第2参照インデックスの値が最小のものの中央値を示す動きベクトルを選択する
ことを特徴とする請求項14記載の動きベクトル計算方法。 - 前記導出ステップでは、前記第1選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記符号化対象ピクチャより表示時間順で前方にあるピクチャを参照する際の動きベクトルとし、前記第2選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記符号化対象ピクチャより表示時間順で後方にあるピクチャを参照する際の動きベクトルとする
ことを特徴とする請求項15記載の動きベクトル計算方法。 - 前記導出ステップでは、前記第1選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記第1の参照ピクチャを参照する際の動きベクトルとし、前記第2選択ステップにおいて選択された動きベクトルを、前記符号化対象ピクチャ上のブロックが前記第2の参照ピクチャを参照する際の動きベクトルとする
ことを特徴とする請求項15記載の動きベクトル計算方法。 - 前記周辺ブロックが他のブロックが有する動きベクトルを用いて符号化する直接モードのブロックであるとき、前記他のブロックを符号化または復号化するときに実質的に用いた動きベクトルを前記直接モードのブロックの動きベクトルとする
ことを特徴とする請求項12記載の動きベクトル計算方法。 - 前記動きベクトル計算方法では、前記第1選択ステップに代えて、
前記符号化対象ピクチャ上のブロックを動き補償するときに、前記符号化対象ピクチャ上のブロックの周囲にある周辺ブロックの動きベクトルのうち最小の第1参照インデックスを有する動きベクトルの数に応じて動きベクトルの導出方法を決定する判断ステップを含み、
前記導出ステップでは、前記選択された動きベクトルの代わりに、決定された動きベクトル導出方法を用いて前記符号化対象ピクチャより表示時間順で前方にあるピクチャまたは後方にあるピクチャまたは前方と後方にあるピクチャを参照する動きベクトルを導出すると
を含むことを特徴とする請求項12記載の動きベクトル計算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003112221A JP2004208258A (ja) | 2002-04-19 | 2003-04-16 | 動きベクトル計算方法 |
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002118598 | 2002-04-19 | ||
JP2002121053 | 2002-04-23 | ||
US37864302P | 2002-05-09 | 2002-05-09 | |
US37895402P | 2002-05-10 | 2002-05-10 | |
JP2002156266 | 2002-05-29 | ||
JP2002177889 | 2002-06-19 | ||
JP2002193027 | 2002-07-02 | ||
JP2002204713 | 2002-07-12 | ||
JP2002262151 | 2002-09-06 | ||
JP2002290542 | 2002-10-02 | ||
JP2002323096 | 2002-11-06 | ||
JP2003112221A JP2004208258A (ja) | 2002-04-19 | 2003-04-16 | 動きベクトル計算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004208258A true JP2004208258A (ja) | 2004-07-22 |
Family
ID=32831298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003112221A Withdrawn JP2004208258A (ja) | 2002-04-19 | 2003-04-16 | 動きベクトル計算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004208258A (ja) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004023458A (ja) * | 2002-06-17 | 2004-01-22 | Toshiba Corp | 動画像符号化/復号化方法及び装置 |
WO2006019093A1 (ja) * | 2004-08-16 | 2006-02-23 | Nippon Telegraph And Telephone Corporation | 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,画像符号化プログラムおよび画像復号プログラム |
JP2006191652A (ja) * | 2002-10-04 | 2006-07-20 | Lg Electronics Inc | ダイレクトモード動きベクトルを誘導する方法 |
WO2007132647A1 (ja) * | 2006-05-12 | 2007-11-22 | Panasonic Corporation | 動画像復号化装置 |
WO2010085064A2 (ko) * | 2009-01-23 | 2010-07-29 | 에스케이텔레콤 주식회사 | 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법 |
JP2010219983A (ja) * | 2009-03-18 | 2010-09-30 | Sony Corp | 画像処理装置および方法 |
WO2012046637A1 (ja) * | 2010-10-06 | 2012-04-12 | 株式会社エヌ・ティ・ティ・ドコモ | 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム |
WO2012073481A1 (ja) * | 2010-11-29 | 2012-06-07 | パナソニック株式会社 | 動画像符号化方法および動画像復号化方法 |
WO2012117728A1 (ja) * | 2011-03-03 | 2012-09-07 | パナソニック株式会社 | 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、及び動画像符号化復号装置 |
WO2012124497A1 (ja) * | 2011-03-11 | 2012-09-20 | ソニー株式会社 | 画像処理装置および方法 |
JP2013005168A (ja) * | 2011-06-15 | 2013-01-07 | Fujitsu Ltd | 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム |
JP2013517669A (ja) * | 2010-01-14 | 2013-05-16 | サムスン エレクトロニクス カンパニー リミテッド | 動きベクトルを符号化/復号化する方法及び装置 |
JP2013526142A (ja) * | 2010-04-22 | 2013-06-20 | 聯發科技股▲ふん▼有限公司 | 動き予測方法 |
JP2014030241A (ja) * | 2011-10-28 | 2014-02-13 | Panasonic Corp | 画像符号化方法および画像符号化装置 |
JP2014042307A (ja) * | 2011-01-12 | 2014-03-06 | Panasonic Corp | 動画像符号化方法および動画像符号化装置 |
JP2014112947A (ja) * | 2014-02-25 | 2014-06-19 | Fujitsu Ltd | 動画像符号化方法、動画像符号化装置、及び動画像符号化プログラム |
JP2014112946A (ja) * | 2014-02-25 | 2014-06-19 | Fujitsu Ltd | 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム |
JP2014514811A (ja) * | 2011-03-21 | 2014-06-19 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
JPWO2012114694A1 (ja) * | 2011-02-22 | 2014-07-07 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
JP2014135744A (ja) * | 2014-02-25 | 2014-07-24 | Fujitsu Ltd | 動画像復号方法、動画像復号装置、及び動画像復号プログラム |
JP2014521243A (ja) * | 2011-07-02 | 2014-08-25 | サムスン エレクトロニクス カンパニー リミテッド | コロケーティッド映像を利用したインター予測を伴うビデオ符号化方法及びその装置、ビデオ復号化方法及びその装置 |
US9036692B2 (en) | 2010-01-18 | 2015-05-19 | Mediatek Inc. | Motion prediction method |
US9300961B2 (en) | 2010-11-24 | 2016-03-29 | Panasonic Intellectual Property Corporation Of America | Motion vector calculation method, picture coding method, picture decoding method, motion vector calculation apparatus, and picture coding and decoding apparatus |
JP2016154395A (ja) * | 2010-01-19 | 2016-08-25 | サムスン エレクトロニクス カンパニー リミテッド | 以前ブロックの動きベクトルを現在ブロックの動きベクトルとして用いる映像符号化/復号化方法及び装置 |
JP2017011746A (ja) * | 2010-12-28 | 2017-01-12 | サン パテント トラスト | 画像復号化方法および画像復号化装置 |
JP2017060189A (ja) * | 2011-01-25 | 2017-03-23 | サン パテント トラスト | 動画像復号化方法および動画像復号化装置 |
US9743102B2 (en) | 2010-01-19 | 2017-08-22 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
-
2003
- 2003-04-16 JP JP2003112221A patent/JP2004208258A/ja not_active Withdrawn
Cited By (145)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004023458A (ja) * | 2002-06-17 | 2004-01-22 | Toshiba Corp | 動画像符号化/復号化方法及び装置 |
US8351507B2 (en) | 2002-10-04 | 2013-01-08 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8351506B2 (en) | 2002-10-04 | 2013-01-08 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8432969B2 (en) | 2002-10-04 | 2013-04-30 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8638856B2 (en) | 2002-10-04 | 2014-01-28 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US7558321B2 (en) | 2002-10-04 | 2009-07-07 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a list 1 motion vector of a co-located block in a reference picture |
US7570691B2 (en) | 2002-10-04 | 2009-08-04 | Lg Electronics Inc. | Method of determining a motion vector for deriving motion vectors of a bi-predictive image block |
US7606307B2 (en) | 2002-10-04 | 2009-10-20 | Lg Electronics Inc. | Method of determining a motion vector for deriving motion vectors of a bi-predictive image block |
US7627035B2 (en) | 2002-10-04 | 2009-12-01 | Lg Electronics Inc. | Method of determining a motion vector for deriving motion vectors of a bi-predictive image block |
US9042452B2 (en) | 2002-10-04 | 2015-05-26 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US7643557B2 (en) | 2002-10-04 | 2010-01-05 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive image block based on a list 0 motion vector of a co-located block using a bit operation |
US8422556B2 (en) | 2002-10-04 | 2013-04-16 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8416853B2 (en) | 2002-10-04 | 2013-04-09 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8891624B2 (en) | 2002-10-04 | 2014-11-18 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US8891623B2 (en) | 2002-10-04 | 2014-11-18 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US9042453B2 (en) | 2002-10-04 | 2015-05-26 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US8416854B2 (en) | 2002-10-04 | 2013-04-09 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US9042451B2 (en) | 2002-10-04 | 2015-05-26 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US8411748B2 (en) | 2002-10-04 | 2013-04-02 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US7634007B2 (en) | 2002-10-04 | 2009-12-15 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive image block based on a list 1 motion vector of a co-located block using a bit operation |
US8428134B2 (en) | 2002-10-04 | 2013-04-23 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8351505B2 (en) | 2002-10-04 | 2013-01-08 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8345758B2 (en) | 2002-10-04 | 2013-01-01 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US8345757B2 (en) | 2002-10-04 | 2013-01-01 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a list o motion vector of a co-located block in a reference picture |
US9066106B2 (en) | 2002-10-04 | 2015-06-23 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US8351503B2 (en) | 2002-10-04 | 2013-01-08 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on temporal distances associated with a co-located block in a reference picture |
US8396128B2 (en) | 2002-10-04 | 2013-03-12 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
US9743108B2 (en) | 2002-10-04 | 2017-08-22 | Lg Electronics Inc. | Method to derive at least one motion vector of a bi-predictive block in a current picture |
US8351504B2 (en) | 2002-10-04 | 2013-01-08 | Lg Electronics Inc. | Method of deriving a motion vector of a bi-predictive image block by applying a bit operation |
JP2006191652A (ja) * | 2002-10-04 | 2006-07-20 | Lg Electronics Inc | ダイレクトモード動きベクトルを誘導する方法 |
US8385417B2 (en) | 2002-10-04 | 2013-02-26 | Lg Electronics, Inc. | Method of deriving a motion vector of a bi-predictive block based on a motion vector of a co-located block in a reference picture |
JP5052134B2 (ja) * | 2004-08-16 | 2012-10-17 | 日本電信電話株式会社 | 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,画像符号化プログラムおよび画像復号プログラム |
US9402087B2 (en) | 2004-08-16 | 2016-07-26 | Nippon Telegraph And Telephone Corporation | Picture encoding method, picture decoding method, picture encoding apparatus, picture decoding apparatus, picture encoding program, and picture decoding program |
WO2006019093A1 (ja) * | 2004-08-16 | 2006-02-23 | Nippon Telegraph And Telephone Corporation | 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,画像符号化プログラムおよび画像復号プログラム |
KR100941495B1 (ko) * | 2004-08-16 | 2010-02-10 | 니폰덴신뎅와 가부시키가이샤 | 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치 및 화상 복호 장치 |
JPWO2006019093A1 (ja) * | 2004-08-16 | 2008-05-08 | 日本電信電話株式会社 | 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,画像符号化プログラムおよび画像復号プログラム |
JP5155157B2 (ja) * | 2006-05-12 | 2013-02-27 | パナソニック株式会社 | 動画像復号化装置 |
US8270492B2 (en) | 2006-05-12 | 2012-09-18 | Panasonic Corporation | Moving picture decoding device |
WO2007132647A1 (ja) * | 2006-05-12 | 2007-11-22 | Panasonic Corporation | 動画像復号化装置 |
WO2010085064A3 (ko) * | 2009-01-23 | 2010-09-23 | 에스케이텔레콤 주식회사 | 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법 |
US9363531B2 (en) | 2009-01-23 | 2016-06-07 | Sk Telecom Co., Ltd. | Apparatus and method for motion vector encoding/decoding, and apparatus and method for image encoding/decoding using same |
US9070179B2 (en) | 2009-01-23 | 2015-06-30 | Sk Telecom Co., Ltd | Method and apparatus for selectively encoding/decoding syntax elements, and apparatus and method for image encoding/decoding using same |
WO2010085064A2 (ko) * | 2009-01-23 | 2010-07-29 | 에스케이텔레콤 주식회사 | 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법 |
US9445118B2 (en) | 2009-01-23 | 2016-09-13 | Sk Telecom Co., Ltd. | Apparatus and method for motion vector encoding/decoding, and apparatus and method for image encoding/decoding using same |
US8908981B2 (en) | 2009-01-23 | 2014-12-09 | Sk Telecom Co., Ltd. | Method and apparatus for selectively encoding/decoding syntax elements, and apparatus and method for image encoding/decoding using same |
US9420304B2 (en) | 2009-01-23 | 2016-08-16 | Sk Telecom Co., Ltd. | Apparatus and method for motion vector encoding/decoding, and apparatus and method for image encoding/decoding using same |
JP2010219983A (ja) * | 2009-03-18 | 2010-09-30 | Sony Corp | 画像処理装置および方法 |
US8699581B2 (en) | 2009-03-18 | 2014-04-15 | Sony Corporation | Image processing device, image processing method, information processing device, and information processing method |
JP2013517669A (ja) * | 2010-01-14 | 2013-05-16 | サムスン エレクトロニクス カンパニー リミテッド | 動きベクトルを符号化/復号化する方法及び装置 |
US9729897B2 (en) | 2010-01-18 | 2017-08-08 | Hfi Innovation Inc. | Motion prediction method |
US9036692B2 (en) | 2010-01-18 | 2015-05-19 | Mediatek Inc. | Motion prediction method |
US10218998B2 (en) | 2010-01-19 | 2019-02-26 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
US9924192B2 (en) | 2010-01-19 | 2018-03-20 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
JP2016154395A (ja) * | 2010-01-19 | 2016-08-25 | サムスン エレクトロニクス カンパニー リミテッド | 以前ブロックの動きベクトルを現在ブロックの動きベクトルとして用いる映像符号化/復号化方法及び装置 |
US9743102B2 (en) | 2010-01-19 | 2017-08-22 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
KR20170098959A (ko) * | 2010-04-22 | 2017-08-30 | 에이치에프아이 이노베이션 인크. | 모션 예측 방법 |
KR101772252B1 (ko) * | 2010-04-22 | 2017-08-29 | 에이치에프아이 이노베이션 인크. | 모션 예측 방법 |
JP2013526142A (ja) * | 2010-04-22 | 2013-06-20 | 聯發科技股▲ふん▼有限公司 | 動き予測方法 |
JP2013528992A (ja) * | 2010-04-22 | 2013-07-11 | 聯發科技股▲ふん▼有限公司 | 動き予測方法 |
JP2014103698A (ja) * | 2010-04-22 | 2014-06-05 | Mediatek Inc | 動きベクトル予測方法 |
KR101865011B1 (ko) * | 2010-04-22 | 2018-06-05 | 에이치에프아이 이노베이션 인크. | 모션 예측 방법 |
JP2019205189A (ja) * | 2010-10-06 | 2019-11-28 | 株式会社Nttドコモ | 画像予測復号方法 |
JP2021122148A (ja) * | 2010-10-06 | 2021-08-26 | 株式会社Nttドコモ | 画像予測復号方法 |
WO2012046637A1 (ja) * | 2010-10-06 | 2012-04-12 | 株式会社エヌ・ティ・ティ・ドコモ | 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム |
JP7085044B2 (ja) | 2010-10-06 | 2022-06-15 | 株式会社Nttドコモ | 画像予測復号方法 |
US10440383B2 (en) | 2010-10-06 | 2019-10-08 | Ntt Docomo, Inc. | Image predictive encoding and decoding system |
RU2580942C2 (ru) * | 2010-10-06 | 2016-04-10 | Нтт Докомо, Инк. | Устройство прогнозирующего кодирования изображений, способ прогнозирующего кодирования изображений, программа прогнозирующего кодирования изображений, устройство прогнозирующего декодирования изображений, способ прогнозирующего декодирования изображений и программа прогнозирующего декодирования изображений |
US10554998B2 (en) | 2010-10-06 | 2020-02-04 | Ntt Docomo, Inc. | Image predictive encoding and decoding system |
JP5575910B2 (ja) * | 2010-10-06 | 2014-08-20 | 株式会社Nttドコモ | 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム |
US8873874B2 (en) | 2010-10-06 | 2014-10-28 | NTT DoMoCo, Inc. | Image predictive encoding and decoding system |
JP2018207525A (ja) * | 2010-10-06 | 2018-12-27 | 株式会社Nttドコモ | 画像予測復号方法 |
JP2020162174A (ja) * | 2010-10-06 | 2020-10-01 | 株式会社Nttドコモ | 画像予測復号方法 |
TWI562608B (ja) * | 2010-10-06 | 2016-12-11 | Ntt Docomo Inc | |
US10778996B2 (en) | 2010-11-24 | 2020-09-15 | Velos Media, Llc | Method and apparatus for decoding a video block |
US9877038B2 (en) | 2010-11-24 | 2018-01-23 | Velos Media, Llc | Motion vector calculation method, picture coding method, picture decoding method, motion vector calculation apparatus, and picture coding and decoding apparatus |
US10218997B2 (en) | 2010-11-24 | 2019-02-26 | Velos Media, Llc | Motion vector calculation method, picture coding method, picture decoding method, motion vector calculation apparatus, and picture coding and decoding apparatus |
US9300961B2 (en) | 2010-11-24 | 2016-03-29 | Panasonic Intellectual Property Corporation Of America | Motion vector calculation method, picture coding method, picture decoding method, motion vector calculation apparatus, and picture coding and decoding apparatus |
WO2012073481A1 (ja) * | 2010-11-29 | 2012-06-07 | パナソニック株式会社 | 動画像符号化方法および動画像復号化方法 |
JP2017011746A (ja) * | 2010-12-28 | 2017-01-12 | サン パテント トラスト | 画像復号化方法および画像復号化装置 |
JP2017204882A (ja) * | 2011-01-12 | 2017-11-16 | サン パテント トラスト | 動画像復号方法、動画像復号装置、動画像符号化方法、および動画像符号化装置 |
JP2014042307A (ja) * | 2011-01-12 | 2014-03-06 | Panasonic Corp | 動画像符号化方法および動画像符号化装置 |
US11838534B2 (en) | 2011-01-12 | 2023-12-05 | Sun Patent Trust | Moving picture coding method and moving picture decoding method using a determination whether or not a reference block has two reference motion vectors that refer forward in display order with respect to a current picture |
JPWO2012096173A1 (ja) * | 2011-01-12 | 2014-06-09 | パナソニック株式会社 | 動画像符号化方法 |
US11317112B2 (en) | 2011-01-12 | 2022-04-26 | Sun Patent Trust | Moving picture coding method and moving picture decoding method using a determination whether or not a reference block has two reference motion vectors that refer forward in display order with respect to a current picture |
US9083981B2 (en) | 2011-01-12 | 2015-07-14 | Panasonic Intellectual Property Corporation Of America | Moving picture coding method and moving picture decoding method using a determination whether or not a reference block has two reference motion vectors that refer forward in display order with respect to a current picture |
US10237569B2 (en) | 2011-01-12 | 2019-03-19 | Sun Patent Trust | Moving picture coding method and moving picture decoding method using a determination whether or not a reference block has two reference motion vectors that refer forward in display order with respect to a current picture |
US10904556B2 (en) | 2011-01-12 | 2021-01-26 | Sun Patent Trust | Moving picture coding method and moving picture decoding method using a determination whether or not a reference block has two reference motion vectors that refer forward in display order with respect to a current picture |
JP2016187204A (ja) * | 2011-01-12 | 2016-10-27 | サン パテント トラスト | 動画像復号方法および動画像復号装置 |
JP2018129808A (ja) * | 2011-01-25 | 2018-08-16 | サン パテント トラスト | 動画像復号化方法および動画像復号化装置 |
JP2017060189A (ja) * | 2011-01-25 | 2017-03-23 | サン パテント トラスト | 動画像復号化方法および動画像復号化装置 |
US10404998B2 (en) | 2011-02-22 | 2019-09-03 | Sun Patent Trust | Moving picture coding method, moving picture coding apparatus, moving picture decoding method, and moving picture decoding apparatus |
JPWO2012114694A1 (ja) * | 2011-02-22 | 2014-07-07 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
JP6108309B2 (ja) * | 2011-02-22 | 2017-04-05 | サン パテント トラスト | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
JP2014014141A (ja) * | 2011-03-03 | 2014-01-23 | Panasonic Corp | 動画像符号化復号装置 |
US10771804B2 (en) | 2011-03-03 | 2020-09-08 | Sun Patent Trust | Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus |
US10237570B2 (en) | 2011-03-03 | 2019-03-19 | Sun Patent Trust | Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus |
US11284102B2 (en) | 2011-03-03 | 2022-03-22 | Sun Patent Trust | Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus |
WO2012117728A1 (ja) * | 2011-03-03 | 2012-09-07 | パナソニック株式会社 | 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、及び動画像符号化復号装置 |
JP2014003694A (ja) * | 2011-03-03 | 2014-01-09 | Panasonic Corp | 動画像復号方法、動画像復号装置及びプログラム |
US9210440B2 (en) | 2011-03-03 | 2015-12-08 | Panasonic Intellectual Property Corporation Of America | Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus |
US9832480B2 (en) | 2011-03-03 | 2017-11-28 | Sun Patent Trust | Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus |
US9177392B2 (en) | 2011-03-11 | 2015-11-03 | Sony Corporation | Image processing apparatus and image processing method |
WO2012124497A1 (ja) * | 2011-03-11 | 2012-09-20 | ソニー株式会社 | 画像処理装置および方法 |
JP2012191513A (ja) * | 2011-03-11 | 2012-10-04 | Sony Corp | 画像処理装置および方法 |
JP2014514811A (ja) * | 2011-03-21 | 2014-06-19 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
JP2017085637A (ja) * | 2011-03-21 | 2017-05-18 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
JP2015208033A (ja) * | 2011-03-21 | 2015-11-19 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
US9319709B2 (en) | 2011-03-21 | 2016-04-19 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
JP7293464B2 (ja) | 2011-03-21 | 2023-06-19 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
JP2022121603A (ja) * | 2011-03-21 | 2022-08-19 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
JP7098709B2 (ja) | 2011-03-21 | 2022-07-11 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
US9667992B2 (en) | 2011-03-21 | 2017-05-30 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
JP2020014254A (ja) * | 2011-03-21 | 2020-01-23 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
US9936221B2 (en) | 2011-03-21 | 2018-04-03 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
JP2021052437A (ja) * | 2011-03-21 | 2021-04-01 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
US9374598B2 (en) | 2011-03-21 | 2016-06-21 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
US10999598B2 (en) | 2011-03-21 | 2021-05-04 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
US10575012B2 (en) | 2011-03-21 | 2020-02-25 | Lg Electronics Inc. | Method for selecting motion vector predictor and device using same |
JP2018137810A (ja) * | 2011-03-21 | 2018-08-30 | エルジー エレクトロニクス インコーポレイティド | 動きベクトル予測子の選択方法及び動きベクトル予測子の選択方法を利用する装置 |
US9973774B2 (en) | 2011-06-15 | 2018-05-15 | Fujitsu Limited | Video coding/decoding system, video coding/decoding method, and storage medium |
EP3151556A1 (en) * | 2011-06-15 | 2017-04-05 | Fujitsu Limited | Video decoding apparatus |
EP3151557A1 (en) * | 2011-06-15 | 2017-04-05 | Fujitsu Limited | Video coding apparatus, video coding method, and storage medium |
EP3151555A1 (en) * | 2011-06-15 | 2017-04-05 | Fujitsu Limited | Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium |
EP3148191A1 (en) * | 2011-06-15 | 2017-03-29 | Fujitsu Limited | Video coding apparatus |
US9426488B2 (en) | 2011-06-15 | 2016-08-23 | Fujitsu Limited | Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium |
JP2013005168A (ja) * | 2011-06-15 | 2013-01-07 | Fujitsu Ltd | 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム |
US9426489B2 (en) | 2011-06-15 | 2016-08-23 | Fujitsu Limited | Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium |
US9491481B2 (en) | 2011-06-15 | 2016-11-08 | Fujitsu Limited | Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium |
EP2536146A3 (en) * | 2011-06-15 | 2016-05-11 | Fujitsu Limited | Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium |
CN104539963A (zh) * | 2011-06-15 | 2015-04-22 | 富士通株式会社 | 由视频解码装置执行的方法 |
JP2015156702A (ja) * | 2011-07-02 | 2015-08-27 | サムスン エレクトロニクス カンパニー リミテッド | ビデオ復号化方法及びビデオ復号化装置 |
US9253488B2 (en) | 2011-07-02 | 2016-02-02 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
JP2015130708A (ja) * | 2011-07-02 | 2015-07-16 | サムスン エレクトロニクス カンパニー リミテッド | ビデオ復号化方法及びビデオ復号化装置 |
US10397601B2 (en) | 2011-07-02 | 2019-08-27 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
US9232229B2 (en) | 2011-07-02 | 2016-01-05 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
JP2014521243A (ja) * | 2011-07-02 | 2014-08-25 | サムスン エレクトロニクス カンパニー リミテッド | コロケーティッド映像を利用したインター予測を伴うビデオ符号化方法及びその装置、ビデオ復号化方法及びその装置 |
US10034014B2 (en) | 2011-07-02 | 2018-07-24 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
US9762924B2 (en) | 2011-07-02 | 2017-09-12 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
US9118926B2 (en) | 2011-07-02 | 2015-08-25 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
US9253502B2 (en) | 2011-07-02 | 2016-02-02 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
US9313517B2 (en) | 2011-07-02 | 2016-04-12 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video, and method and apparatus for decoding video accompanied by inter prediction using collocated image |
JP2014030241A (ja) * | 2011-10-28 | 2014-02-13 | Panasonic Corp | 画像符号化方法および画像符号化装置 |
JP2014112946A (ja) * | 2014-02-25 | 2014-06-19 | Fujitsu Ltd | 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム |
JP2014135744A (ja) * | 2014-02-25 | 2014-07-24 | Fujitsu Ltd | 動画像復号方法、動画像復号装置、及び動画像復号プログラム |
JP2014112947A (ja) * | 2014-02-25 | 2014-06-19 | Fujitsu Ltd | 動画像符号化方法、動画像符号化装置、及び動画像符号化プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004208259A (ja) | 動きベクトル計算方法 | |
KR101011849B1 (ko) | 움직임 벡터 계산방법 | |
KR101031423B1 (ko) | 움직임 벡터 계산방법 | |
JP2004208258A (ja) | 動きベクトル計算方法 | |
JP2004048632A (ja) | 動画像符号化方法および動画像復号化方法 | |
BRPI0304534B1 (pt) | método e aparelho para determinar o vetor de movimento |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060220 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070614 |