(57)【要約】【課題】現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法を提供する。【解決手段】双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定し、同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとしてlist 0動きベクトルを選択し、選択された動きベクトルに基づいて双予測ピクチャのダイレクトモード動きベクトルを求め、現在のピクチャと第１レファランスピクチャとの間の第１の時間間隔を求め、第１レファランスピクチャと第２レファランスピクチャとの間の第２の時間間隔を求め、第１及び第２の時間間隔に基づいてレファランスピクチャの同一位置にあるブロックの選択された動きベクトルをスケーリングし、双予測ピクチャのダイレクトモード動きベクトルにビット演算を行なうことを特徴とする。【選択図】図６
2008182746.tif 000002
【特許請求の範囲】
【請求項１】
双予測ピクチャにおける位置と同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、
双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定するステップと、
前記同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに関して同一位置にあるブロックのlist 0動きベクトルを選択するステップと、
前記同一位置にあるブロックの選択された前記動きベクトルに基づいて、双予測ピクチャのダイレクトモード動きベクトルを求めるステップと、
現在のピクチャと第１レファランスピクチャとの間の第１の時間間隔を求めるステップと、
第１レファランスピクチャと第２レファランスピクチャとの間の第２の時間間隔を求めるステップと、
前記第１及び第２の時間間隔に基づいて、レファランスピクチャの同一位置にあるブロックの選択された動きベクトルをスケーリングするステップと、を有し、
双予測ピクチャのダイレクトモード動きベクトルを求めるステップは、前記双予測ピクチャの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有するダイレクトモード動きベクトルの導出方法。
【請求項２】
ダイレクトモードのためのlist 1レファランスピクチャの同一位置のブロックが、list 1動きベクトルのみを有する場合には、前記ダイレクトモード動きベクトルを求めるための動きベクトルとしてlist 1動きベクトルを用いるステップと、
前記list 1動きベクトルによって指し示されたレファランスピクチャをダイレクトモードのためのlist 0レファランスピクチャと決定するステップをさらに有する、請求項１に記載のダイレクトモード動きベクトルの導出方法。
【請求項３】
ダイレクトモードのためのlist 1レファランスピクチャの同一位置のブロックが、list 1動きベクトルのみを有する場合には、前記同一位置のブロックは動き0を有すると見なすステップと、
時間的に前記双予測ピクチャの直前に位置するデコードされたピクチャをダイレクトモードのためのlist 0レファランスピクチャと決定するステップとをさらに有する、請求項１に記載のダイレクトモード動きベクトルの導出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像コーディング方法に関し、特に、次世代動画像圧縮技術において定義されたＢ(Bi-predictive)ピクチャにおけるダイレクトモード動きベクトルの導出方法に関する。
【背景技術】
【０００２】
従来のＢピクチャは、順方向、逆方向、両方向、ダイレクト、そしてイントラモードといった５種類の予測モードを持っている。ここで、順方向、逆方向、両方向モードは、モード名に方向情報を内包していることから、それらのモード名により動きベクトルの方向性が把握できる。そして、特に、ダイレクトモードは、隣接した二つのピクチャの間に動きの連続性が一定に保持されるという時間的冗長性(temporal redundancy)の特性を用いて、隣接ピクチャにある同一位置のブロックが持つ動きから両方向の動きベクトル二つを誘導する。このダイレクトモードは、動き情報をデコーダに伝送しないので、ビット率を減少させることができる利点がある。
【０００３】
一方、H.264またはMPEG-4 part 10 のような次世代動画像圧縮技術におけるＢピクチャは、自分がレファランスピクチャ(reference picture)として使用されるのを許容するため、レファランスピクチャバッファに格納されるという特徴がある。また、Ｂピクチャの予測モードには list 0 、 list 1、双予測、ダイレクト、そしてイントラなどの各モードがある。
【０００４】
ここで、list 0 モードは、従来の順方向モードに似たモードであって、動き情報であるレファランスピクチャインデックスと動きベクトル差はそれぞれ‘ref_idx_l0 ’と‘mvd_l0 ’として表示される。また、list 1モードは、従来の逆方向モードに似たモードであって、動き情報はそれぞれ‘ref_idx_l1’と‘mvd_l1’として表示される。双予測モードは二つのレファランスピクチャを有するが、二つのレファランスピクチャともＢピクチャに比べて時間的に前に位置してもよく、後に位置してもよい。また、Ｂピクチャを中心に前、後に存在してもよい。このとき二つのレファランスピクチャインデックスと動きベクトル差はそれぞれ、‘ref_idx_l0 ’、‘ref_idx_l1’、‘mvd_l0 ’、‘mvd_l1’として表示され、各レファランスピクチャは時間的位置情報のＰＯＣ(picture order count)というデータを持っている。
【０００５】
そして、ダイレクトモードは動きベクトルを得るために空間的手法と時間的手法のうちいずれかが選ばれる。空間的手法は、コーディング（符号化）したいマクロブロックの周辺ブロックから list 0 および list 1 のレファランスピクチャインデックスと動きベクトルを誘導する手法である。一方、時間的手法は、従来のＢピクチャにおいて使用される方法であって、ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロック(co-located block)が持っている list 0 動きベクトルをスケーリングして list 0 動きベクトル(MVF)と list 1 動きベクトル(MVB)を誘導する。ここで、ダイレクトモードの list 1 レファランスピクチャは list 1 予測のためのインデックスが０であるピクチャであり、ダイレクトモードの list 0 レファランスピクチャは、 list 1 レファランスピクチャにある同一位置のブロックが持つ list 0 レファランスピクチャを使用する。
【０００６】
図１の（Ａ）から（Ｃ）は、利用可能なlist 0およびlist 1レファランスピクチャの数(または、short-term bufferの大きさ)が６のとき、ＩＢＢＢＰパターンにおける各Ｂピクチャに対する list 0 予測のためのデフォルトインデックス、 list 1 予測のためのデフォルトインデックス、およびダイレクトモードの list 1 レファランスピクチャをそれぞれ示している。ここで list 0 予測のためのデフォルトインデックスと list 1 予測のためのデフォルトインデックスは、デコーディング順序に関わらず既にデコーディングされたレファランスピクチャの出力順序(output order)、すなわちＰＯＣ値に基づいてインデックシングが行われる。図１では、全てのＢピクチャが時間的に後に続くＰピクチャをダイレクトモードの list 1 レファランスピクチャとして使用している。
【０００７】
一方、図２は、Ｂピクチャのみを使用するＩＢＢＢパターンにおける各Ｂピクチャに対する list 0 予測のためのデフォルトインデックス、 list 1 予測のためのデフォルトインデックスおよびダイレクトモードの list 1 レファランスピクチャをそれぞれ示す。図２の(Ａ)は、コーディングするＢピクチャがＢ８のとき、 list 1 のインデックス０を有する時間的に前に位置するＢ５がダイレクトモードの list 1 レファランスピクチャとなり、(Ｂ)のように次のデコーディング順序であるＢ７に対するダイレクトモードの list 1 レファランスピクチャは時間的に後に位置したＢ８となる。最後に、(Ｃ)のように次のデコーディング順序であるＢ９に対するダイレクトモードの list 1 レファランスピクチャは時間的に前に位置したＢ７となる。
【０００８】
要するに、図１および図２によれば、ダイレクトモードの list 1 レファランスピクチャは、コーディングしようとするＢピクチャより時間的に後に位置したＰまたはＢピクチャにもなり得、また時間的に前に位置したＢピクチャにもなり得る。
【０００９】
図３は、ダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置する場合、同一位置のブロックが持つことのできるモードを示している。このとき、 list 1 レファランスピクチャはＰピクチャまたはＢピクチャになり得るので、 list 1 レファランスピクチャの同一位置にあるブロックは一つまたは二つの動きベクトルを持つか、イントラモードを持つことになる。H.264またはMPEG-4 part 10 のような次世代動画像圧縮技術は、スライスレベルでレファランスピクチャインデックスをリオーダリング(reordering)することが許容されるので、 list 1 予測のためのインデックス０をＢピクチャの直ぐ後にあるピクチャに割り当てることができる。すなわち、 list 1 レファランスピクチャがＢピクチャの直ぐ後に存在することができることから、同一位置のブロックが持つ動きベクトルは前または後方向に向けられる。
【００１０】
さらに、図４は、ダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置する場合、同一位置のブロックが持つことのできるモードを示している。前述のように同一位置のブロックは一つまたは二つの動きベクトルを持つか、イントラモードを持つ。このとき list 1 レファランスピクチャとＢピクチャとの間に異なるレファランスピクチャが存在し得ることから、動きベクトル方向は時間的に前と後に向けられる。
【００１１】
図３および図４に示すように、ダイレクトモードの list 1 レファランスピクチャは様々な予測モードを持つことができ、したがって、それら様々な場合に応じたダイレクトモードの動きベクトル演算方法が求められているというのが現状である。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、次世代動画像圧縮技術に定義されたＢピクチャにおいてダイレクトモード動きベクトル抽出手法を提示することによって、ダイレクトモードがマクロブロックの予測モードとして選ばれる可能性を高め、Ｂピクチャコーディング効率(coding efficiency)を向上させることができるＢピクチャのダイレクトモード動きベクトル演算方法を提供することが目的である。
【課題を解決するための手段】
【００１３】
本発明のダイレクトモード動きベクトルの導出方法は、双予測ピクチャにおける位置と同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに関して同一位置にあるブロックのlist 0動きベクトルを選択するステップと、同一位置にあるブロックの選択された前記動きベクトルに基づいて、双予測ピクチャのダイレクトモード動きベクトルを求めるステップと、現在のピクチャと第１レファランスピクチャとの間の第１の時間間隔を求めるステップと、第１レファランスピクチャと第２レファランスピクチャとの間の第２の時間間隔を求めるステップと、第１及び第２の時間間隔に基づいて、レファランスピクチャの同一位置にあるブロックの選択された動きベクトルをスケーリングするステップと、を有し、双予測ピクチャのダイレクトモード動きベクトルを求めるステップは、前記双予測ピクチャの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有することを特徴とする。
【００１４】
本発明のダイレクトモード動きベクトルの導出方法は、双予測ピクチャにおける位置と同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1動きベクトルのみを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに対する同一位置にあるブロックのlist 1動きベクトルを選択するステップと、同一位置にあるブロックの選択された前記動きベクトルに基づいて、双予測ピクチャのダイレクトモード動きベクトルを求めるステップと、現在のピクチャと第１レファランスピクチャとの間の第１の時間間隔を求めるステップと、第１レファランスピクチャと第２レファランスピクチャとの間の第２の時間間隔を求めるステップと、第１及び第２の時間間隔に基づいて、レファランスピクチャの同一位置にあるブロックの選択された動きベクトルをスケーリングするステップと、を有し、双予測ブロックのダイレクトモード動きベクトルを求めるステップは、双予測ブロックの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有することを特徴とする。
【００１５】
本発明のダイレクトモード動きベクトルの導出方法は、双予測ピクチャにおける位置と同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに関して同一位置にあるブロックのlist 0動きベクトルを選択するステップと、同一位置にあるブロックがlist 1動きベクトルのみを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに関して同一位置にあるブロックのlist 1動きベクトルを選択するステップとを有し、双予測ピクチャのダイレクトモード動きベクトルを求めるステップは、双予測ブロックの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有することを特徴とする。
【００１６】
本発明のダイレクトモード動きベクトルの導出方法は、双予測画像の同一位置にあるブロックを用いた、双予測ピクチャのダイレクトモード動きベクトルの導出方法であって、双予測画像の同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ピクチャの動きベクトルを求めるための動きベクトルとして、双予測ピクチャに関して同一位置にあるブロックのlist 0動きベクトルを選択するステップと、を有し、双予測ブロックのダイレクトモード動きベクトルを求めるステップは、双予測ピクチャの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有することを特徴とする。
【００１７】
本発明のダイレクトモード動きベクトルの導出方法は、双予測画像の同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、双予測画像の同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1動きベクトルのみを有しているときは、双予測ピクチャの動きベクトルを求めるための動きベクトルとして、双予測ピクチャに関して同一位置にあるブロックのlist 1動きベクトルを選択するステップと、同一位置にあるブロックの選択された動きベクトルに基づいて、双予測ピクチャのダイレクトモード動きベクトルを求めるステップと、双予測ブロックの前記ダイレクトモード動きベクトルにビット演算を行なうステップをさらに有することを特徴とする。
【００１８】
本発明のダイレクトモード動きベクトルの導出方法は、双予測ピクチャにおける位置と同一位置にあるブロックを用いた、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、双予測ピクチャにおける位置と同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックがlist 1及びlist 0動きベクトルを有しているときは、双予測ピクチャの動きベクトルを求めるための動きベクトルとして、双予測ピクチャに関して同一位置にあるブロックのlist 0動きベクトルを選択するステップと、同一位置にあるブロックがlist 1動きベクトルのみを有しているときは、双予測ブロックの動きベクトルを求めるための動きベクトルとして、双予測ブロックに関して同一位置にあるブロックのlist 1動きベクトルを選択するステップと、現在のピクチャと第１レファランスピクチャとの間の第１の時間間隔を求めるステップと、第１レファランスピクチャと第２レファランスピクチャとの間の第２の時間間隔を求めるステップと、第１及び第２の時間間隔に基づいて、レファランスピクチャの同一位置にあるブロックの選択された動きベクトルをスケーリングするステップと、同一位置にあるブロックの選択された動きベクトルに基づいて、双予測ピクチャのダイレクトモード動きベクトルを求めるステップと、を有することを特徴とする。
【００１９】
本発明のダイレクトモード動きベクトルの導出方法は、現在のピクチャの双予測ブロックのダイレクトモード動きベクトルの導出方法であって、list 0 及びlist 1動きベクトルの両方を有する、双予測ピクチャの同一位置にあるブロックのlist 0動きベクトルを決定するステップと、同一位置にあるブロックのlist 0及びlist 1動きベクトルからlist 0動きベクトルを選択するステップと、現在のピクチャと第１レファランスピクチャとの差分から、第１の時間間隔を求めるステップと、第１レファランスピクチャと第２レファランスピクチャとの差分から、第２の時間間隔を求めるステップと、第１及び第２の時間間隔に基づいて、レファランスピクチャの同一位置にあるブロックのlist 0動きベクトルをスケーリングするステップと、同一位置にあるブロックのスケーリングされた動きベクトルに基づいて、双予測ブロックの動きベクトルを求めるステップと、を有することを特徴とする。
【００２０】
前記の目的を達成する本発明によるＢピクチャのダイレクトモード動きベクトル演算方法は、 list 1 レファランスピクチャにある同一位置のブロックが list 0 、 list 1 動きベクトルを持っていると、ダイレクトモードの動きベクトルを誘導するために使用される動きベクトルは、二つの方法によって list 0 または list 1 動きベクトルを選んでダイレクトモードの動きベクトルを誘導する点に特徴がある。
【００２１】
ここで、本発明によれば、 list 0 、 list 1 動きベクトルのうち同一位置のブロックが存在する list 1 レファランスピクチャから時間的距離の短い動きベクトルをダイレクトモードの動きベクトルを誘導する動きベクトルとして選び、仮に、二つの動きベクトルが同一レファランスピクチャを指すと list 0 動きベクトルをダイレクトモードの動きベクトルを誘導する動きベクトルとして選んで、その選択された動きベクトルの指しているレファランスピクチャをダイレクトモードの list 0 レファランスピクチャと決定する方法があり、また、時間的距離に関わらず無条件に list 0 動きベクトルをダイレクトモードの動きベクトルを誘導する動きベクトルとして選び、前記 list 0 動きベクトルの指しているレファランスピクチャをダイレクトモードの list 0 レファランスピクチャと決定する他の方法がある。
【００２２】
また、本発明では、ダイレクトモードの動きベクトルは同一位置のブロックが持つ list 0 動きベクトルから誘導されるという従来手法を、 list 1 レファランスピクチャの同一位置にあるブロックが list 1 動きベクトルのみを持っている場合に適用すると、同一位置のブロックの list 0 動きベクトルは０であるためにダイレクトモードの動きベクトルはいずれも０となる問題点を解決するために、同一位置のブロックが持つモード種類に関わらず、そのブロックの持っている動きベクトルを用いてダイレクトモードの動きベクトルを誘導する。
【００２３】
ここで、本発明は、 list 1 レファランスピクチャにある同一位置のブロックが list 1 動きベクトルのみを持っている場合、ダイレクトモード動きベクトルを求め得る方法を提示する。１番目の方法は、ダイレクトモード動きベクトル計算に使用される動きベクトル値を０にし、ダイレクトモードの list 0 レファランスピクチャ(list 0 reference picture for direct mode)は時間的にＢピクチャの直ぐ前の位置に存在するデコーディングされたピクチャと定義することを特徴とする。２番目の方法は、ダイレクトモード動きベクトル計算に使用される動きベクトル値は同一位置のブロックの持っている list 1 動きベクトルをそのまま利用し、その代わり、ダイレクトモードの list 0 レファランスピクチャは時間的にＢピクチャの直ぐ前の位置に存在するデコーディングされたピクチャと定義することを特徴とする。３番目の方法は、ダイレクトモード動きベクトル計算に使用される動きベクトル値は同一位置のブロックの持っている list 1 動きベクトルをそのまま利用し、 list 1 動きベクトルの指しているレファランスピクチャをダイレクトモードの list 0 レファランスピクチャと決定することを特徴とする。
【００２４】
また、本発明によれば、従来の手法におけると同様にダイレクトモードの list 1 レファランスピクチャを list 1 予測に使用されるインデックスが０のピクチャと定義する場合、Ｂピクチャとインデックス０のピクチャとの間に他のピクチャがデコーディングされるときインデックス０のピクチャの動き情報およびレファランスピクチャ情報が保持されなければならないことから追加的なメモリ使用が必須とされているが、本発明ではダイレクトモードの list 1 レファランスピクチャを最近にデコーディングされたピクチャと定義することによって追加的なメモリ使用を節約することができる。
【００２５】
また、本発明は、動画像コーディングシステムでＢピクチャのダイレクトモード動きベクトルを抽出する際に、Ｂピクチャのダイレクトモードの list 1 レファランスピクチャが前記Ｂピクチャより時間的に前に位置する場合、前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルをスケーリングし、 list 0 動きベクトル(MVF)と list 1 動きベクトル(MVB)を誘導してＢピクチャのダイレクトモード動きベクトルを演算する点が特徴である。
【００２６】
ここで、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは下記の式によって算出される。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
または、
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００２７】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【００２８】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは下記の式によって算出される。
MVF = -TDB×MV/TDD
MVB = -(TDB + TDD)×MV/TDD
または、
Z = -TDB×256/TDD          MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００２９】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【００３０】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
または、
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【００３１】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【００３２】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = -TDB,i×MVi/TDD,i
MVB,i = -(TDB,i + TDD,i)×MVi/TDD,i
または、
Z = -TDB,i×256/TDD,i        MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【００３３】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【００３４】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
または、
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【００３５】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【００３６】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = -TDB,i×MV/TDD
MVB,i = -(TDB,i + TDD)×MV/TDD
または、
Z = -TDB,i×256/TDD         MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【００３７】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される 。ここで、 list 1 基準フレームのフィールド１にある同一位置のブロックの持つ動き情報が、ダイレクトモードの動きベクトルを求めるのに使用される。
MVF = TDB×MV1/TDD,1
MVB = (TDB - TDD,1)×MV1/TDD,1
または、
Z = TDB×256/TDD,1          MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【００３８】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,1は list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であり、MV1は前記 list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【００３９】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。ここで、 list 1 基準フレームのフィールド１にある同一位置のブロックの持つ動き情報が、ダイレクトモードの動きベクトルを求めるのに使用される。
MVF = -TDB×MV1/TDD,1
MVB = -(TDB + TDD,1)×MV1/TDD,1
または、
Z = -TDB×256/TDD,1         MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【００４０】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD、1は list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であり、MV1は前記 list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【００４１】
また、本発明によれば、前記Ｂピクチャのダイレクトモードの list 1 レファランスピクチャの同一位置にあるマクロブロックが二つの動きベクトルを持つ場合には、一つの動きベクトル( list 0 または list 1 動きベクトル)を選び、この選ばれた動きベクトルからＢピクチャのダイレクトモードの動きベクトルを誘導する。
【００４２】
また、前記の目的を達成する、本発明によるＢピクチャのダイレクトモード動きベクトル演算方法の他の実施態様は、動画像コーディングシステムでＢピクチャのダイレクトモード動きベクトルを抽出する際に、Ｂピクチャのダイレクトモードの list 0 レファランスピクチャと list 1 レファランスピクチャとも前記Ｂピクチャより時間的に後に存在する場合、前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルをスケーリングし、 list 0 動きベクトル(MVF)と list 1 動きベクトル(MVB)を誘導してＢピクチャのダイレクトモード動きベクトルを演算することが特徴である。
【００４３】
ここで、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に後に存在する場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
または、
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００４４】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【００４５】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に前に存在する場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。
MVF = -TDB×MV/TDD
MVB = -(TDB + TDD)×MV/TDD
または、
Z = -TDB×256/TDD          MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００４６】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【００４７】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に後に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
【００４８】
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
または、
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【００４９】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【００５０】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に前に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = -TDB,i×MVi/TDD,i
MVB,i = -(TDB,i + TDD,i)×MVi/TDD,i
または、
Z= -TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【００５１】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【００５２】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に後に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは下記の式によって算出される。
MVF,i = TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
または、
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【００５３】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【００５４】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に前に存在する場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = -TDB,i×MV/TDD
MVB,i = -(TDB,i + TDD)×MV/TDD
または、
Z = -TDB,i×256/TDD        MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【００５５】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【００５６】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に後に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。ここで、 list 1 基準フレームのフィールド０にある同一位置のブロックの持つ動き情報が、ダイレクトモードの動きベクトルを求めるのに使用される。
【００５７】
MVF = TDB×MV0/TDD,0 
MVB = (TDB - TDD,0)×MV0/TDD,0 
または、
Z = TDB×256/TDD,0          MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【００５８】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,0は list 1 基準フレームのフィールド０と list 0 レファランスフィールドとの間の時間的距離であり、MV0 は前記ダイレクトモードのための list 1 基準フレームのフィールド０にある同一位置のブロックが持っている動きベクトルである。
【００５９】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、前記Ｂピクチャのダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャに比べて時間的に前に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。ここで、 list 1 基準フレームのフィールド０にある同一位置のブロックの持つ動き情報が、ダイレクトモードの動きベクトルを求めるのに使用される。
MVF = -TDB×MV0/TDD,0 
MVB = -(TDB + TDD,0)×MV0 /TDD,0 
または、
Z = -TDB×256/TDD,0         MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【００６０】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,0 は list 1 基準フレームのフィールド０と list 0 レファランスフィールドとの間の時間的距離であり、MV0 は前記ダイレクトモード list 1 基準フレームのフィールド０にある同一位置のブロックが持っている動きベクトルである。
【００６１】
また、本発明によれば、前記Ｂピクチャのダイレクトモードの list 1 レファランスピクチャの同一位置にあるブロックが二つの動きベクトルを持つ場合は、一つの動きベクトル(MV1またはMV2)を選び、この選ばれた動きベクトルからＢピクチャのダイレクトモードの動きベクトルを誘導する。
【００６２】
また、前記目的を達成する本発明によるＢピクチャのダイレクトモード動きベクトル演算方法のさらに他の実施態様は、動画像コーディングシステムにおいてＢピクチャのダイレクトモード動きベクトルを抽出する際に、ダイレクトモード動きベクトルを求めるのに使用する数式を単純化するためにピクチャ間の時間的距離を符号付きの値で表すことによって、Ｂピクチャのダイレクトモードの list 0 レファランスピクチャと list 1 レファランスピクチャの位置に関わらず前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルをスケーリングし、 list 0 動きベクトル(MVF)と list 1 動きベクトル(MVB)を誘導してＢピクチャのダイレクトモード動きベクトルを演算することが特徴である。
【００６３】
ここで、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフレームモードである場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは、下記の式によって算出される。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
または、
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００６４】
ここで、TDBは、現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であって、 list 1 基準フレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【００６５】
また、本発明によれば、前記Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックともフィールドモードである場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
または、
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【００６６】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であって、Ｂフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であって、 list 1 レファランスフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【００６７】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードである場合、前記Ｂフレームの各フィールドiに対するダイレクトモードの動きベクトルMVF,i、MVB,iは、下記の式によって算出される。
MVF,i = TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
または、
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【００６８】
ここで、TDB,i は現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であって、Ｂフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であって、 list 1 基準フレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【００６９】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、 list 1 レファランスピクチャが前記Ｂピクチャより時間的に後に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、 list 1 基準フレームのフィールド０にある同位置のマクロブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される下記の式によって算出される。
MVF = TDB×MV0/TDD,0 
MVB = (TDB - TDD,0)×MV0/TDD,0 
または、
Z = TDB×256/TDD,0          MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【００７０】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDD,0 は list 1 基準フレームのフィールド０と list 0 レファランスフィールドとの間の時間的距離であって、 list 1 基準フレームのフィールド０から計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MV0 は前記ダイレクトモードの list 1 基準フレームのフィールド０にある同一位置のブロックが持っている動きベクトルである。
【００７１】
また、本発明によれば、前記Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、 list 1 レファランスピクチャが前記Ｂピクチャより時間的に前に存在する場合、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、 list 1 基準フレームのフィールド１にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される下記の式によって算出される。
MVF = TDB×MV1/TDD,1
MVB = (TDB - TDD,1)×MV1/TDD,1
または、
Z = TDB×256/TDD,1          MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【００７２】
ここで、TDBは、現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDD,1は、 list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であって、 list 1 基準フレームのフィールド１から計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MV1は前記ダイレクトモードの list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【００７３】
また、前記の目的を達成する本発明によるＢピクチャのダイレクトモード動きベクトル演算方法のさらに他の実施態様は、動画像コーディングシステムでＢピクチャのダイレクトモード動きベクトルを抽出する際に、Ｂピクチャのダイレクトモードの list 1 レファランスピクチャにある同位置のマクロブロックがイントラモードの場合には、空間的冗長性を用いて、前記Ｂピクチャのコーディングしようとするマクロブロックの周辺ブロックから list 0 、 list 1 レファランスピクチャと各 list に対する動きベクトルを予測し、算出し、Ｂピクチャのダイレクトモード動きベクトルを演算することが特徴である。
【００７４】
ここで、本発明によれば、前記 list 1 レファランスピクチャを選ぶに際して、前記コーディングしようとするマクロブロックの周辺マクロブロックＡ、Ｂ、Ｃがレファランスするレファランスピクチャが異なっている場合には、最も小さいインデックスを有するレファランスピクチャを list 1 レファランスピクチャとして選ぶ。
【００７５】
また、本発明によれば、前記 list 1 レファランスピクチャを選ぶに際して、前記コーディングしようとするマクロブロックの周辺マクロブロックのうち二つ以上のマクロブロックがレファランスするレファランスピクチャが同一のインデックスを持っていると、そのインデックスを有するレファランスピクチャを list 1 レファランスピクチャとして選ぶ。
【００７６】
また、本発明によれば、前記各 list に対する動きベクトルを予測するに際して、周辺マクロブロックＡ、Ｂ、Ｃのうちイントラモードを有するマクロブロックがあれば、そのマクロブロックの list 0 と list 1 の動きベクトルをそれぞれ０と設定し、前記各 list レファランスピクチャの時間的位置と同一の方向を有する動きベクトルを周辺マクロブロックから選び、メディアン演算を通じて各 listの動きベクトルを求めるか、または、仮に周辺マクロブロックが同一の方向の動きベクトルを二つ持っていると、そのマクロブロックのうち一つのみを選んでメディアン演算に含ませて各 listの動きベクトルを求める。
【００７７】
また、本発明によれば、前記各 list に対する有効なレファランスピクチャインデックスをいずれも誘導できないなら、 list 0 、 list 1 のレファランスピクチャインデックスはそれぞれ０となり、各 list に対する動きベクトルは０と設定する。
【発明の効果】
【００７８】
以上の説明の如く、本発明によるＢピクチャのダイレクトモード動きベクトル演算方法によれば、次世代動画像圧縮技術に定義されたＢピクチャにおいてダイレクトモード動きベクトル抽出手法は、ダイレクトモードがマクロブロックの予測モードとして選ばれる可能性が高められるため、Ｂピクチャのコーディング効率を向上させることができる。
【発明を実施するための最良の形態】
【００７９】
本発明は、ダイレクトモードの list 1 レファランスピクチャにある同位置のマクロブロックがイントラモードのときにダイレクトモード動きベクトルを誘導する方法と、 list 1 レファランスピクチャがＢピクチャより時間的に後に位置する場合およびＢピクチャより時間的に前に位置する場合に対してダイレクトモード動きベクトルを求める方法を提示する。
【００８０】
そして、ダイレクトモード動きベクトルを求めるのに使用する数式を単純化するためにピクチャ間の時間的距離を符号付きの値で表すことによって、ダイレクトモードのための list 0 、 list 1 レファランスピクチャ位置に関わらずにダイレクトモード動きベクトルを求める方法に対してそれぞれ区分して説明する。
【００８１】
一方、ピクチャレベルでフレームモードとフィールドモードがスイッチングされるのでＢピクチャと list 1 レファランスピクチャはフレーム構造またはフィールド構造にコーディングされることができる。したがって、Ｂピクチャのマクロブロックと list 1 レファランスピクチャにある同位置のマクロブロックは四つの場合のフレーム／フィールドコーディング組合せを持つことになる。
【００８２】
[１] list 1 レファランスピクチャにある同位置のマクロブロックがイントラモードを有する場合
図３の(Ｆ)および図４の(Ｆ)に示すように、ダイレクトモードの list 1 レファランスピクチャにある同位置のマクロブロックは、レファランスピクチャの時間的位置に関わらずイントラモードを持つことができる。このようなモードを有するマクロブロックは動き情報を持っていないため、従来手法では単にダイレクトモード動きベクトルを０とし、 list 0 レファランスピクチャは最近にデコーディングされたピクチャと定義した。しかし、従来手法は高いコーディング効率が保障できなかったため、本発明ではＢピクチャのコーディングしようとするマクロブロックの周辺ブロックから list 0 、 list 1 レファランスピクチャと各 list に対する動きベクトルを空間的冗長性を用いて予測し、算出する。
【００８３】
各 list に対するレファランスピクチャインデックスは、下記のような方法によって求める。図５は一般の空間的冗長性を考慮し、周辺ブロックＡ、Ｂ、Ｃの動きベクトルを用いてブロックＥの予測動きベクトルを演算することを説明するための図である。
【００８４】
仮に、周辺マクロブロックＡ、Ｂ、Ｃのレファランスピクチャインデックスが異なっている場合には、その中で最も小さいレファランスピクチャインデックスがダイレクトモードのレファランスピクチャインデックスとして決定される。
【００８５】
仮に、周辺マクロブロックのうち、二つのブロックが同一のレファランスピクチャインデックスを持っていると、そのインデックスがダイレクトモードのレファランスピクチャインデックスとして決定される。
【００８６】
仮に、周辺マクロブロックとも同一のレファランスピクチャインデックスを持っていると、そのインデックスがダイレクトモードのレファランスピクチャインデックスとして決定される。
【００８７】
また、各 list に対する動きベクトルは下記のような動きベクトル予測を通じて求める。このとき、周辺マクロブロックＡ、Ｂ、Ｃのうちイントラモードを有するマクロブロックがあれば、そのマクロブロックの list 0 と list 1 の動きベクトルをそれぞれ‘０’と設定する。
【００８８】
上で求めた各 listのレファランスピクチャの時間的位置と同一の方向を有する動きベクトルを周辺マクロブロックから選び、メディアン演算を通じて各 listの動きベクトルを求める。
【００８９】
仮に、周辺マクロブロックが同一方向の動きベクトルを二つ持っていると、そのマクロブロックでは一つのみを選んでメディアン演算に含ませる。
【００９０】
一方、仮に周辺ブロックから list 0 、 list 1に対する有効なレファランスピクチャインデックスをいずれも誘導できなかったら、 list 0 、 list 1 のレファランスピクチャインデックスはそれぞれ‘０’となり、各 list に対する動きベクトルは‘０’と設定する。
【００９１】
[２]ダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置する場合
ケース１：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフレームモードのとき
【００９２】
図３の(Ａ)〜(Ｈ)から分かるように、 list 1 レファランスピクチャの同一位置にあるブロックは一つの動きベクトルを持つか、二つの動きベクトルを持つことができる。本発明では、同一位置のブロックが二つの動きベクトルを持つ場合には一つの動きベクトル(L0 MVまたはL1 MV)を選び、この選ばれた動きベクトルからダイレクトモードの動きベクトルを誘導する(以下では、L0 MV(list 0 動きベクトル)が選ばれた場合を基準に説明するものとする)。
【００９３】
したがって、図３の(Ａ)(Ｃ)は図６の(Ａ)と同様になり、図３の(Ｂ)(Ｄ)(Ｅ)は図６の(Ｃ)、図３の(Ｇ)(Ｈ)は図６の(Ｂ)のように単純化して表示される。
【００９４】
仮に、ダイレクトモードの list 0 レファランスピクチャと list 1 レファランスピクチャがＢピクチャを中心に時間的に前、後に存在する場合(図６の(Ａ))、またはダイレクトモードの list 0、list 1 レファランスピクチャの両方ともＢピクチャより時間的に後に存在して list 0 レファランスピクチャが list 1 レファランスピクチャより後に存在する場合(図６の(Ｂ))、ダイレクトモードの動きベクトルMV、MVは下記のように計算される。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
【００９５】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離を表し、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離をそれぞれ表す。
【００９６】
そして、前記式は下記のように表すこともできるが、これは、実際の演算に際しての便利性のためにビット演算を適用する場合を示したのである。
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００９７】
仮に、ダイレクトモードの list 0 、 list 1 レファランスピクチャともＢピクチャより時間的に後に存在し、 list 0 レファランスピクチャが list 1 レファランスピクチャより前に存在する場合(図６の(Ｃ))、ダイレクトモードの動きベクトルMVF、MVBは、下記のように計算される。
MVF = -TDB×MV/TDD
MVB = -(TDB + TDD)×MV/TDD
【００９８】
または、下記のような式で表すこともできる。
Z = -TDB×256/TDD          MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【００９９】
ケース２：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードのとき
図７では、Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードの場合を示す。Ｂピクチャのマクロブロックの各ブロックにおける動きベクトルは同一パリティの list 1 レファランスフィールドにある同一位置の list 0 動きベクトルから誘導される。
【０１００】
仮に、ダイレクトモードの list 0 、 list 1 レファランスピクチャがＢピクチャを中心に時間的に前、後に存在する場合(図７の(Ａ))、またはダイレクトモードの list 0 、 list 1 レファランスピクチャともＢピクチャより時間的に後に存在して list 0 レファランスピクチャが list 1 レファランスピクチャより後に存在する場合(図７の(Ｂ))には、Ｂフレームの各フィールドｉ(ｉ=０は１番目のフィールド、ｉ=１は２番目のフィールドを意味)に対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iが下記のように計算される。
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
【０１０１】
ここで、MViは list 1 基準フレームのｉにある同一位置のブロックが持つ list 0 動きベクトル、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離をそれぞれ意味する。前記式は下記のように表すことができる。
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【０１０２】
仮に、 list 1 基準フレームのフィールドｉにある同一位置のブロックがＢピクチャより時間的に後に存在するフレームのフィールドを指す動きベクトルを持つことによって、ダイレクトモードの list 0 、 list 1 レファランスピクチャのいずれもＢピクチャより時間的に後に存在しながら list 0 レファランスピクチャが list 1 レファランスピクチャより前に存在する場合(図７の(Ｃ)および(Ｄ))、ダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは下記のように計算される。
MVF,i = -TDB,i×MVi/TDD,i
MVB,i = -(TDB,i + TDD,i)×MVi/TDD,i
【０１０３】
または、下記のような式で表すこともできる。
Z = -TDB,i×256/TDD,i        MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【０１０４】
ケース３：Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードのとき
【０１０５】
図８は、Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードの場合を示す。ここで、現在マクロブロックの垂直座標をycurrentとし、 list 1 レファランスピクチャの同位置のマクロブロック垂直座標をyco-locatedとすれば、両座標の間にはyco-located=2xycurrentの関係が成り立つ。そして list 0 、 list 1 レファランスフィールドはそれぞれの list 0 、 list 1 基準フレームの同一パリティに存在することになる。
【０１０６】
仮に、ダイレクトモードの list 0 、 list 1 レファランスピクチャがＢピクチャを中心に時間的に前、後に存在する場合(図８の(Ａ))、またはダイレクトモードの list 0 、 list 1 レファランスピクチャともＢピクチャより時間的に後に存在して list 0 レファランスピクチャが list 1 レファランスピクチャより後に存在する場合(図８の(Ｂ))、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは、下記のように計算される。
MVF,i = TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
【０１０７】
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【０１０８】
仮に、 list 1 基準フレームにある同一位置のブロックがＢピクチャより時間的に後に存在するフレームを指す動きベクトルを持つことによってダイレクトモードの list 0 、 list 1 レファランスピクチャのいずれもＢピクチャより時間的に後に存在しながら list 0 レファランスピクチャが list 1 レファランスピクチャより前に存在する場合(図８の(Ｃ))、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは、下記のように計算される。
MVF,i = -TDB,i×MV/TDD
MVB,i = -(TDB,i + TDD)×MV/TDD
【０１０９】
または、下記のような式で表すこともできる。
Z = -TDB,i×256/TDD         MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【０１１０】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【０１１１】
ケース４：Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードのとき
図９は、Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードの場合を示す。ここで、現在マクロブロックの垂直座標をycurrentとし、 list 1 レファランスピクチャの同位置のマクロブロック垂直座標をyco-locatedとすれば、両座標の間にはyco-located=ycurrent/2の関係が成り立つ。そして、 list 1 基準フレームのフィールド０がフィールド１よりＢピクチャに時間的距離が近いので、フィールド０にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される。
【０１１２】
仮に、ダイレクトモードの list 0 、 list 1 レファランスピクチャがＢピクチャを中心に時間的に前、後に存在する場合(図９の(Ａ))、またはダイレクトモードの list 0 、 list 1 レファランスピクチャのいずれもＢピクチャより時間的に後に存在しながら list 0 レファランスピクチャが list 1ピクチャより後に存在する場合(図９の(Ｂ))、Ｂフレームのダイレクトモードの list 0 、 list 1 動きベクトルMVF、MVBは下記のように計算される。
MVF = TDB×MV0 /TDD,0 
MVB = (TDB - TDD,0 )×MV0 /TDD,0
前記式は、下記のように表すことができる。
Z = TDB×256/TDD,0          MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【０１１３】
仮に、 list 1 基準フレームのフィールド０にある同一位置のブロックがＢピクチャより時間的に後に存在するフレームのフィールドを指す動きベクトルを持つことによってダイレクトモードの list 0 、 list 1 レファランスピクチャのいずれもＢピクチャより時間的に後に存在しながら list 0 レファランスピクチャが list 1 レファランスピクチャより前に存在する場合(図９の(Ｃ))、ダイレクトモードの list 0 、 list 1 動きベクトルMVF、MVBは下記のように計算される。
MVF = -TDB×MV0 /TDD,0
MVB = -(TDB + TDD,0 )×MV0 /TDD,0
または、下記のような式で表すこともできる。
Z = -TDB×256/TDD,0         MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【０１１４】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,0 は list 1 基準フレームのフィールド０と list 0 レファランスフィールドとの間の時間的距離であり、MV0 は前記ダイレクトモードの list 1 レファランスフレームのフィールド０にある同一位置のブロックが持っている動きベクトルである。
【０１１５】
[３]ダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置する場合
この場合には list 0 、 list 1 レファランスピクチャのいずれもＢピクチャより常に時間的に前に位置している。
【０１１６】
ケース１：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフレームモードのとき
図４に示すように、 list 1 レファランスピクチャの同一位置にあるブロックは一つの動きベクトルを持つか、二つの動きベクトルを持つことができる。本発明では、同一位置のブロックが二つの動きベクトルを持つ場合には一つの動きベクトル(L0 MVまたはL1 MV)を選び、この選ばれた動きベクトルからダイレクトモードの動きベクトルを誘導する(以下では、L0 MV( list 0 動きベクトル)が選ばれた場合を基準に説明するものとする)。
【０１１７】
したがって、図４の(Ａ)(Ｃ)(Ｅ)(Ｇ)(Ｈ)は図１０の(Ａ)と同様になり、図４の(Ｂ)(Ｄ)は図１０の(Ｂ)のように単純化して表示される。
【０１１８】
仮に、ダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、ダイレクトモードの動きベクトルMVF、MVBは下記のように計算される(図１０の(Ａ))。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
【０１１９】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
そして、前記式は下記のように表すことができる。
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【０１２０】
仮に、ダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、ダイレクトモードの動きベクトルMVF、MVBは下記のように計算される(図１０の(Ｂ))。
MVF = -TDB×MV/TDD
MVB = -(TDB + TDD)×MV/TDD
または、下記のような式で表すこともできる。
Z = -TDB×256/TDD          MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【０１２１】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【０１２２】
ケース２：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードのとき
仮に、ダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは下記のように計算される(図１１の(Ａ)および(Ｂ))。
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
前記式は、下記のように表すことができる。
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【０１２３】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【０１２４】
仮に、 list 1 基準フレームのフィールドｉにある同一位置のブロックが時間的に後に存在するフレームのフィールドを指す動きベクトルを持つことによってダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、ダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは下記のように計算される(図１１の(Ｃ)および(Ｄ))。
MVF,i = -TDB,i×MVi/TDD,i
MVB,i = -(TDB,i + TDD,i)×MVi/TDD,i
または、下記のような式で表すこともできる。
Z = -TDB,i×256/TDD,i        MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【０１２５】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であり、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【０１２６】
ケース３：Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードのとき
仮に、ダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは下記のように計算される(図１２の(Ａ))。
MVF,i=TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
前記式は下記のように表すことができる。
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【０１２７】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【０１２８】
仮に、 list 1 基準フレームにある同一位置のブロックが時間的に後に存在するフレームを指す動きベクトルを持つことによってダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF,i、MVB,iは下記のように計算される(図１２の(Ｂ))。
MVF,i = -TDB,i×MV/TDD
MVB,i = -(TDB,i + TDD)×MV/TDD
または、下記のような式で表すこともできる。
Z = -TDB,i×256/TDD         MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【０１２９】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であり、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であり、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【０１３０】
ケース４：Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードのとき
list 1 基準フレームのフィールド１(f1)がフィールド０(f0 )よりＢピクチャに時間的距離が近いので、フィールド１(f1)にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される。
【０１３１】
仮に、ダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に前に存在する場合、Ｂフレームの各フィールドｉに対するダイレクトモードの list 0 、 list 1 動きベクトルMVF、MVBは下記のように計算される(図１３の(Ａ))。
MVF = TDB×MV1/TDD,1
MVB = (TDB - TDD,1)×MV1/TDD,1
前記式は、下記のように表すことができる。
Z = TDB×256/TDD,1          MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【０１３２】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,1は list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であり、MV1は前記ダイレクトモードの list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【０１３３】
仮に、 list 1 基準フレームのフィールド１(f1)にある同一位置のブロックが時間的に後に存在するフレームのフィールドを指す動きベクトルを持つことによってダイレクトモードの list 0 レファランスピクチャが list 1 レファランスピクチャより時間的に後に存在する場合、ダイレクトモードの list 0 、 list 1 動きベクトルMVF、MVBは下記のように計算される(図１３の(Ｂ))。
MVF = -TDB×MV1/TDD,1
MVB = -(TDB + TDD,1)×MV1/TDD,1
または、下記のような式で表すこともできる。
Z = -TDB×256/TDD,1         MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【０１３４】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であり、TDD,1は list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であり、MV1は前記ダイレクトモードの list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【０１３５】
[４]ピクチャ間の時間的距離を符号付きの値で表現してダイレクトモード動きベクトルを演算する場合
前記ダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置するか、または後に位置する場合、各ケースに対して２種類の数式が存在することになるので、これを単純化するための方法でピクチャ間の時間的距離を符号付きの値で表すと、下記のように単純化して表される。
【０１３６】
ケース１：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフレームモードのとき
Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックのいずれもフレームモードである場合、前記Ｂピクチャのダイレクトモードの動きベクトルMVF、MVBは下記の式から求めることができる。
MVF = TDB×MV/TDD
MVB = (TDB - TDD)×MV/TDD
または、
Z = TDB×256/TDD           MVF = (Z×MV + 128)>>8
W = Z - 256               MVB = (W×MV + 128)>>8
【０１３７】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であって、 list 1 基準フレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、MVは前記ダイレクトモードの list 1 レファランスピクチャにある同一位置のブロックが持っている動きベクトルである。
【０１３８】
ケース２：Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードのとき
Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックのいずれもフィールドモードである場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは下記の式から求めることができる。
MVF,i = TDB,i×MVi/TDD,i
MVB,i = (TDB,i - TDD,i)×MVi/TDD,i
または、
Z = TDB,i×256/TDD,i         MVF,i = (Z×MVi + 128)>>8
W = Z - 256               MVB,i = (W×MVi + 128)>>8
【０１３９】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であって、Ｂフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、TDD,iは list 1 レファランスフィールドと list 0 レファランスフィールドとの間の時間的距離であって、 list 1 レファランスフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MViは前記ダイレクトモードの list 1 レファランスフィールドにある同一位置のブロックが持っている動きベクトルである。
【０１４０】
ケース３：Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードのとき
Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードである場合、前記Ｂフレームの各フィールドｉに対するダイレクトモードの動きベクトルMVF,i、MVB,iは下記の式から求めることができる。
MVF,i = TDB,i×MV/TDD
MVB,i = (TDB,i - TDD)×MV/TDD
または、
Z = TDB,i×256/TDD          MVF,i = (Z×MV + 128)>>8
W = Z - 256               MVB,i = (W×MV + 128)>>8
【０１４１】
ここで、TDB,iは現在のＢフィールドと list 0 レファランスフィールドとの間の時間的距離であって、Ｂフィールドから計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、TDDは list 1 基準フレームと list 0 基準フレームとの間の時間的距離であって、 list 1 基準フレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、MVは前記ダイレクトモードの list 1 基準フレームにある同一位置のブロックが持っている動きベクトルである。
【０１４２】
ケース４：Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードのとき
Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードであり、 list 1 レファランスピクチャが前記Ｂピクチャより時間的に後に存在する場合、 list 1 基準フレームのフィールド０がフィールド１よりＢピクチャに時間的距離が近いので、フィールド０にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される。したがって、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、 list 1 基準フレームのフィールド０にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される下記の式から求めることができる。
MVF = TDB×MV0 /TDD,0
MVB = (TDB - TDD,0 )×MV0 /TDD,0
または、
Z = TDB×256/TDD,0          MVF = (Z×MV0 + 128)>>8
W = Z - 256               MVB = (W×MV0 + 128)>>8
【０１４３】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDD,0 は list 1 基準フレームのフィールド0 と list 0 レファランスフィールドとの間の時間的距離であって、 list 1 基準フレームのフィールド０から計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MV0 は前記ダイレクトモードの list 1 基準フレームのフィールド０にある同一位置のブロックが持っている動きベクトルである。
【０１４４】
仮に、 list 1 レファランスピクチャが前記Ｂピクチャより時間的に前に存在する場合、 list 1 基準フレームのフィールド１がフィールド０よりＢピクチャに時間的距離が近いので、フィールド１にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される。したがって、前記Ｂフレームのダイレクトモードの動きベクトルMVF、MVBは、 list 1 基準フレームのフィールド１にある同一位置のブロックの動き情報がダイレクトモードの動きベクトルを求めるのに使用される下記の式から求めることができる。
MVF = TDB×MV1/TDD,1
MVB = (TDB - TDD,1)×MV1/TDD,1
または、
Z = TDB×256/TDD,1          MVF = (Z×MV1 + 128)>>8
W = Z - 256               MVB = (W×MV1 + 128)>>8
【０１４５】
ここで、TDBは現在のＢフレームと list 0 基準フレームとの間の時間的距離であって、Ｂフレームから計算された時間的距離は正（＋）の符号で表示され、 list 0 基準フレームから計算された時間的距離は負（−）の符号で表示され、TDD,1は list 1 基準フレームのフィールド１と list 0 レファランスフィールドとの間の時間的距離であって、 list 1 基準フレームのフィールド１から計算された時間的距離は正（＋）の符号で表示され、 list 0 レファランスフィールドから計算された時間的距離は負（−）の符号で表示され、MV1は前記ダイレクトモードの list 1 基準フレームのフィールド１にある同一位置のブロックが持っている動きベクトルである。
【図面の簡単な説明】
【０１４６】
【図１】一般のＩＢＢＢＰパターンにおけるダイレクトモードの list 1 レファランスピクチャを説明するための図である。
【図２】一般のＩＢＢＢパターンにおけるダイレクトモードの list 1 レファランスピクチャを説明するための図である。
【図３】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置する場合を示す図(L0 MV： list 0 動きベクトル、L1 MV： list 1 動きベクトル)である。
【図４】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置する場合を示す図(L0 MV： list 0 動きベクトル、L1 MV： list 1 動きベクトル)である。
【図５】一般の空間的冗長性を考慮し、周辺ブロックＡ、Ｂ、Ｃの動きベクトルを用いてブロックＥの予測動きベクトルを演算することを説明するための図である。
【図６】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置するとき、Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフレームモードである場合を示す図である。
【図７】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置するとき、Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードである場合を示す図である。
【図８】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置するとき、Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードである場合を示す図である。
【図９】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に後に位置するとき、Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードである場合を示す図である。
【図１０】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置するとき、Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフレームモードである場合を示す図である。
【図１１】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置するとき、Ｂピクチャのマクロブロックと list 1 レファランスピクチャの同一位置にあるマクロブロックの両方ともフィールドモードである場合を示す図である。
【図１２】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置するとき、Ｂピクチャのマクロブロックがフィールドモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフレームモードである場合を示す図である。
【図１３】一般のダイレクトモードの list 1 レファランスピクチャがＢピクチャより時間的に前に位置するとき、Ｂピクチャのマクロブロックがフレームモードであり、 list 1 レファランスピクチャの同一位置にあるマクロブロックがフィールドモードである場合を示す図である。
【図１】
2008182746.tif 000003
【図２】
2008182746.tif 000004
【図３】
2008182746.tif 000005
【図４】
2008182746.tif 000006
【図５】
2008182746.tif 000007
【図６】
2008182746.tif 000008
【図７】
2008182746.tif 000009
【図８】
2008182746.tif 000010
【図９】
2008182746.tif 000011
【図１０】
2008182746.tif 000012
【図１１】
2008182746.tif 000013
【図１２】
2008182746.tif 000014
【図１３】
2008182746.tif 000015