本願は、2017年6月13日に国家知識産権局に提出され発明の名称が「MOTION VECTOR PREDICTION METHOD AND DEVICE」である中国特許出願第201710445873.7号に基づく優先権を主張する。当該中国特許出願は、その全体が参照により本明細書に組み込まれる。
本願は、ピクチャ処理技術の分野に関し、特に動きベクトル予測方法およびデバイスに関する。
動きベクトル(motion vector,MV)関連の情報伝送におけるデータ量を削減しコーディング効率を向上させるよう、高効率ビデオコーディング(high efficiency video coding,HEVC)規格におけるフレーム間コーディングに関して、MV予測コーディング技術が用いられる。HEVC規格におけるフレーム間予測コーディングは具体的には、2つのモード、フレーム間(inter)モードと、マージ(merge)/スキップ(skip)モードとに分けられる。現在のブロックに関してinterモードが用いられるとき、現在のブロックのMVの基準フレームインデックス(reference index)、動きベクトル予測子インデックス(motion vector predictor index,MVP index)、および動きベクトルの差分(motion vector difference,MVD)がビットストリーム内で特定される。現在のブロックのMVが指す基準フレームは基準フレームインデックスに基づき決定され、動きベクトル予測子インデックスは、動きベクトル予測子(motion vector predictor,MVP)候補リスト内の候補が現在のブロックのMVの予測子として用いられることを示し、現在のブロックのMVは、MVPをMVDに追加することにより取得される。merge/skipモードが現在のブロックに関して用いられるとき、動きベクトルの差分も基準フレームインデックスもビットストリーム内で特定されず、MVP indexのみが特定される。MVP indexに基づきMVP候補リストから対応するMVと、MVに対応する基準フレームとが選択され、現在のブロックのMVと、現在のブロックのMVに対応する基準フレームとして用いられる。
2つの解決法では、現在のブロックの空間的に隣接するブロックおよび時間的に隣接するブロックの動きベクトルを用いることにより動きベクトル予測子リスト(motion vector predictor list)を構築する必要がある。動きベクトルのうちそれぞれが、MVP候補(MVP candidate)と呼ばれる。それから、ビットストリームで送信されるMVP indexに基づき動きベクトル予測子リストから対応するMVP候補が見つけられ、その対応するMVP候補が、ピクチャブロックの動きベクトル予測子として決定される。前方予測、後方予測、および双方向予測のうちいずれか1つにより、interモードの現在のブロックに対してフレーム間予測が実施されてよい。interモードのいずれのブロックも1つまたは2つのMVを有しており、MVPリストは、そのブロック内の各MVに関して構築される必要がある。
現在のブロックの各空間的に隣接するブロックまたは時間的に隣接するブロックに対して単方向予測が実施されるとき、その空間的に隣接するブロックまたは時間的に隣接するブロックは1つのMVのみを含む。現在のブロックに対して双方向予測が実施されるとき、含まれる2つのMVは同じタイプのものであり得る。interモードにおいて、隣接するブロックのMVのタイプが、現在のブロックのMVのタイプと異なる(具体的には、一方のMVがロングターム動きベクトルであり、他方のMVがショートターム動きベクトルである)場合、そのMVはMVPリストに追加されない。結果として、MVPリスト内のゼロ動きベクトル(zero motion vector,Zero MV)の数が増え、MV予測効率が低いものとなる。
本願の実施形態は動きベクトル予測方法を提供する。現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの動きベクトルの動きベクトルタイプと異なるとき、当該方法が用いられて、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する動きベクトルで現在のブロックの動きベクトル予測子リストが補われ、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
本願の実施形態の第1の態様は、動きベクトル予測方法であって、
デバイスがビットストリームから、現在のブロックの動きベクトルに対応する基準フレームを取得する段階と、
それから、デバイスは、基準フレームの基準フレームタイプを決定し、基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定する段階であって、基準フレームの基準フレームタイプはロングターム基準フレームとショートターム基準フレームとを含み、現在のブロックの動きベクトルの動きベクトルタイプはロングターム動きベクトルとショートターム動きベクトルとを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、段階と、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、デバイスが、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる第1の動きベクトルから少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得する段階と、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、デバイスが、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と
を含む動きベクトル予測方法を提供する。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
考えられる設計において、本願の本実施形態の第1の態様の第1の実施例では、方法は、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルが現在のブロックの動きベクトル予測子として決定される。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第2の実施例では、方法はさらに、
現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定する段階であって、仮想基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、段階と、
仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いる段階と
を含む。本願の本実施形態では、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが動きベクトル予測子を決定する処理が本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第3の実施例では、
現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、デバイスが空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階であって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、段階と、第1の基準ブロックと画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階と、さらに、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階とを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する処理が具体的に説明される。
考えられる設計において、本願の本実施形態の第1の態様の第4の実施例では、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階と、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階であって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、段階と、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階とは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階と、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階であって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、段階と、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階とを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第5の実施例では、
現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階を有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する処理が具体的に説明される。
考えられる設計において、本願の本実施形態の第1の態様の第6の実施例では、
少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と
を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第7の実施例では、 少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する別の具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第8の実施例では、方法は、候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロック(co−located block)の少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、同位置ブロックの第1の動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第9の実施例では、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる段階の後、方法は、候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、ゼロ動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願発明の本実施形態の第1の態様の第10の実施例では、方法は、現在のブロックに関してコーディング方法で、または現在のブロックに関してデコード方法で用いられてよい。
本願の実施形態の第2の態様は、
動きベクトル予測デバイスであって、
現在のブロックの動きベクトルに対応する基準フレームを取得するよう構成された第1の取得ユニットと、
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定するよう構成された決定ユニットであって、動きベクトルタイプは、ショートターム動きベクトルとロングターム動きベクトルとを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、決定ユニットと、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得するよう構成された第2の取得ユニットであって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、第2の取得ユニットと、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第1のプロセシングユニットと
を含む動きベクトル予測デバイスを提供する。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
考えられる設計において、本願の本実施形態の第2の態様の第1の実施例では、デバイスは、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングユニットをさらに含む。本願の本実施形態では、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルが現在のブロックの動きベクトル予測子として決定される。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第2の実施例では、デバイスは、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成された第3のプロセシングユニットをさらに含む。本願の本実施形態では、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが動きベクトル予測子を決定する処理が本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第3の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、第1のプロセシングユニットは、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングモジュールを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する処理が具体的に説明される。
考えられる設計において、本願の本実施形態の第2の態様の第4の実施例では、第1のプロセシングモジュールは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングサブモジュールを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第5の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、第1のプロセシングユニットは、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュールを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する処理が具体的に説明される。
考えられる設計において、本願の本実施形態の第2の態様の第6の実施例では、
第2のプロセシングモジュールは、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングサブモジュールと、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第3のプロセシングサブモジュールと
を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第7の実施例では、
第2のプロセシングモジュールは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第4のプロセシングサブモジュールを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する別の具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第8の実施例では、デバイスは、候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いるよう構成された第4のプロセシングユニットをさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、同位置ブロックの第1の動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第9の実施例では、デバイスは、候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いるよう構成された第5のプロセシングユニットをさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、ゼロ動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願発明の本実施形態の第2の態様の第10の実施例では、デバイスは、現在のブロックをコーディングするためにエンコーダで、または現在のブロックをデコードするためにデコーダで用いられてよい。
本願の第3の態様は、プロセッサと、プロセッサに連結されたメモリとを含む動きベクトル予測デバイスを提供し、
プロセッサは、
現在のブロックの動きベクトルに対応する基準フレームを取得することと
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定することであって、動きベクトルタイプは、ショートターム動きベクトルとロングターム動きベクトルとを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、ことと、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得することであって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、ことと、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることと
を実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第1の実施例では、プロセッサはさらに、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第2の実施例では、プロセッサはさらに、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第3の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、プロセッサは、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、プロセッサは、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第4の実施例では、プロセッサは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第5の態様の第5の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、プロセッサは、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第6の実施例では、
プロセッサは、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる
よう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第7の実施例では、
プロセッサは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第8の実施例では、デバイスは、現在のブロックをコーディングするためにエンコーダで、または現在のブロックをデコードするためにデコーダで用いられてよい。
本願の第4の態様はコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は命令を格納する。命令がコンピュータ上で実行されたとき、コンピュータは、先述の態様の方法を実施することが可能となる。
本願の第5の態様は、命令を含むコンピュータプログラムプロダクトを提供する。コンピュータプログラムプロダクトがコンピュータ上で実行されたとき、コンピュータは、先述の態様の方法を実施することが可能となる。
先述の技術的解決法から、本願の実施形態は以下の利点を有していることが分かる。
本願の実施形態で提供される技術的解決法において、
現在のブロックの動きベクトルに対応する基準フレームが取得され
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプが決定され、動きベクトルタイプは、ショートターム動きベクトルとロングターム動きベクトルとを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得され、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプが取得され、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられ、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルが決定され、第2の動きベクトル、または第2の動きベクトルのスケーリング値が現在のブロックの候補動きベクトル予測子として用いられる。本願の実施形態では、動きベクトル予測子リストが充実化し、動きベクトル予測効率が向上するよう、隣接するブロックの動きベクトルのタイプが現在のブロックの動きベクトルのタイプと異なるとき隣接するブロックから動きベクトル予測子を取得できない問題が解決される。
本願の実施形態が適用されるシステムフレームワークの概略図である。
本願の実施形態に係る隣接するL字型エリア内の再構築済画素の概略図である。
本願の実施形態に係る動きベクトル予測方法の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測方法の別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測方法の別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係るコーデック装置の概略ブロック図である。
本願の実施形態に係るコーデック装置の概略図である。
本願の実施形態は動きベクトル予測方法を提供する。現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの動きベクトルの動きベクトルタイプと異なるとき、当該方法が用いられて、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する動きベクトルで現在のブロックの動きベクトル予測子リストが補われ、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
本願内の解決法を当業者がより理解出来るよう、本願の実施形態における添付図面を参照し本願の実施形態を以下に説明する。
本願の明細書、請求項、および添付図面において「第1」、「第2」、「第3」、「第4」などの用語(これらが存在する場合)は、同様のもの同士を区別することが意図されており、具体的な順または順序を必ずしも示さない。そのように用いられるデータは、本明細書で説明されている実施形態が、本明細書で例示または説明されている順とは他の順で実装され得るよう、適切な状況において互いに入れ替え可能であることが理解されるべきである。加えて、「含む」、「有する」、およびそれらの変形の用語は非排他的な包含を網羅するよう意図されており、例えば、列挙されたステップまたはユニットを含む処理、方法、システム、プロダクト、またはデバイスは必ずしもそれら明示的に列挙されたステップまたはユニットに限定されず、明示的に列挙されていない、またはそのような処理、方法、プロダクト、またはデバイスに固有ではない他のステップまたはユニットを含んでよい。
本願の実施形態において提供される方法は、図1に示されるシステムフレームワークに適用されてよい。ネットワークフレームワークにおいて、現在のブロックの、空間的に隣接する予測ブロックおよび同位置ブロックに基づき動きベクトル予測子が決定される。現在のブロックの空間的に隣接する予測ブロックは、左側の空間的に隣接する予測ブロックと上側の空間的に隣接する予測ブロックとに分類されてよい。空間的に隣接する予測ブロックは異なる方式で分類されてよく、例えば、図1に示されるように、左側の空間的に隣接する予測ブロックが、現在のブロックの、左下のブロックA0および左隣のブロックA1を含み、上側の空間的に隣接する予測ブロックが、現在のブロックの、右上のブロックB0、真上のブロックB1、および左上のブロックB2を含み、同位置ブロック(co−located block)が右下のブロックC0および中央のブロックC1を含むように分類されてよい。現在のブロックの隣接する再構築済画素に基づき現在のブロックの動きベクトル予測子が取得されるとき、現在のブロックの隣接するエリアの一部で再構築済画素が選択される。同位置ブロックは図2に示されるように分類されてよく、再構築済画素は、現在のブロック周りのL字型エリアで選択される。本願の実施形態において、現在のブロックの隣接するブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるかが決定される必要があり、実際のシチュエーションに基づき、隣接するブロックの動きベクトル、または動きベクトルのスケーリング値が現在のブロックの動きベクトル予測子として決定されて、動きベクトル予測効率を向上させる。
理解を容易にするために、本願の実施形態における具体的な手順を以下に説明する。図3を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の実施形態は以下のステップを含む。
301.現在のブロックの動きベクトルに対応する基準フレームを取得。
デバイスが、現在のブロックの動きベクトルに対応する基準フレームを取得する。デバイスは、H.265ビデオコーディング規格に従って同じ仕様で、ピクチャを複数のピクチャブロックにセグメント分けする。デバイスはまず、コーディング/デコードされているピクチャブロックを現在のブロックとして選択し、それから、選択された現在のブロックの動きベクトル(motion vector,MV)に対応する基準フレームインデックスを取得し、続いて、インデックス情報に基づき、現在のブロックの動きベクトルに対応する基準フレームを決定する。
留意すべきことは、ピクチャブロックが予測されるとき、現在のブロックが位置するピクチャが現在のフレームと呼ばれ、現在のフレームがコーディング/デコードされる前にコーディング/デコード済みのフレームが再構築済フレームと呼ばれるということである。現在のフレームは、単方向予測フレームまたは双方向予測フレームであってよい。現在のフレームが単方向予測フレームである場合、現在のフレームは1つの基準フレームリストL0を有する。現在のフレームが双方向予測フレームである場合、現在のフレームは2つの基準フレームリストを有する。それら2つのリストはそれぞれL0およびL1と呼ばれる。各リストは、現在のフレームの基準フレームと呼ばれる少なくとも1つの再構築済フレームを含む。基準フレームは、現在のフレーム内のフレーム間予測のための基準画素を提供する。デバイスは、基準フレームインデックスに基づき、現在のブロックの動きベクトルが指す基準フレームを決定する。
理解されてよいのは、フレーム間予測は、前方予測、後方予測、または双方向予測によってinterモードの現在のブロックに対して実施されてよいということである。前方予測が実施されるとき、現在のブロックは、1つの前方基準フレームリスト(L0)と1つの前方動きベクトル(L0_MV)とを有する。後方予測が実施されるとき、現在のブロックは、1つの後方基準フレームリスト(L1)と1つの後方MV(L1_MV)とを有する。双方向予測が実施されるとき、現在のブロックは、2つの基準フレームリストL0およびL1を有し、また1つのL0_MVおよび1つのL1_MVを有する。言い換えれば、interモードのどのブロックも1つまたは2つのMVを有する。動きベクトル予測子(motion vector predictor,MVP)リストは、ブロック内の各MVに関して構築されてよい。基準フレームインデックスはビットストリーム内で特定される。例えば、高効率ビデオコーディング(high efficiency video coding,HEVC)における構文要素ref_idx_l0およびref_idx_l1はそれぞれ、基準フレームリストL0およびL1内の基準フレームインデックスを指す。本願の本実施形態では、各現在のブロックが処理されてMVPを決定してよい。各現在のブロックは、1つまたは2つのMVPリストを有してよい。このことは本明細書において限定されない。
302.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
基準フレームを取得した後、デバイスは、基準フレームから関連する情報を取得し、基準フレームの基準フレームタイプを決定する。基準フレームの基準フレームタイプは、ロングターム基準フレームとショートターム基準フレームとを含む。それから、デバイスは、基準フレームの基準フレームタイプおよび対応関係に基づき現在のブロックの動きベクトルの動きベクトルタイプを決定する。基準フレームがロングターム基準フレームであるとき、現在のブロックの、ロングターム基準フレームに対応する動きベクトルはロングターム動きベクトルである。基準フレームがショートターム基準フレームであるとき、現在のブロックの、ショートターム基準フレームに対応する動きベクトルはショートターム動きベクトルである。
303.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
基準フレームの基準フレームタイプと現在のブロックの動きベクトルの基準フレームタイプとを決定した後、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、デバイスは、予め設定された順で現在のブロックの少なくとも1つの空間的に隣接する予測ブロックにアクセスする。デバイスは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックから第1の動きベクトルを取得し、現在のブロックの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを決定し、つまり、第1の動きベクトルがロングターム動きベクトルである、またはショートターム動きベクトルであると決定する。
留意すべきことは、第1の動きベクトルは、フレーム間予測コーディングが用いられる空間的に隣接するブロックに対して動き補償が実施されるときに用いられる動きベクトルであるということである。言い換えれば、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる。例えば、第1の動きベクトルはL0_MVおよび/またはL1_MVであってよい。
理解されてよいのは、基準フレームの基準フレームタイプと現在のブロックの動きベクトルの基準フレームタイプとを決定した後、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスはまず、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定し、それから、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いるということである。仮想基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである。
304.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、左側の予め設定された位置にある空間的に隣接する予測ブロックは、全ての左側の空間的に隣接する予測ブロックであってよい。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、左側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、左側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定し、左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するタイプとしては2つのタイプがあってよいということである。タイプ1においては、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルがロングターム動きベクトルであり、現在のブロックの動きベクトルの動きベクトルタイプがショートターム動きベクトルである。タイプ2においては、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルがショートターム動きベクトルであり、現在のブロックの動きベクトルの動きベクトルタイプがロングターム動きベクトルである。
理解されてよいのは、ブロックの動きベクトルが利用可能である場合、少なくとも2つの条件が満たされる必要があるということである。第1の条件は次の通りである:このブロックがピクチャ内にあり、このブロックおよび現在のブロックが同じスライスまたは同じスライスセグメントに属する。第2の条件は次の通りである:フレーム間予測コーディングがこのブロックに関して用いられる。他の制約もさらにあってよい。例えば、このブロックおよび現在のブロックが同じタイル(tile)などに属する。これら制約は異なる規格で異なる。このことは本明細書において具体的に限定されない。
例えば、デバイスが、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、3ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウント(picture order count,POC)を有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして用いる。スクリーニングの第2のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリングは、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。どの第1の動きベクトルも条件2を満たさないとき、スクリーニングの第3のラウンドが実施される。スクリーニングの第3のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第2の動きベクトルに、予め設定された順2で連続的にアクセスし、左側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定する。アクセス順2は、アクセス順1と同じであっても異なってもよい。例えば、アクセス順2は左下のブロックA0から左隣のブロックA1への順であってよい。
305.現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、上側の予め設定された位置にある空間的に隣接する予測ブロックは、全ての上側の空間的に隣接する予測ブロックであってよい。
デバイスは、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、上側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、上側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定し、上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
例えば、デバイスが、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、3ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウントを有する」を満たすかを決定する。デバイスはまず、条件1を満たす第1の動きベクトルを候補MVPとして決定し、それから、上側の空間的に隣接する予測ブロックが条件3「左側の空間的に隣接する予測ブロックのうち左隣のブロックおよび左下のブロックの両方のMVが利用不可能である」を満たすかを決定する。条件3が満たされるとき、スクリーニングの第2のラウンドが実施される。スクリーニングの第2のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリングは、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。どの第1の動きベクトルも条件2を満たさないとき、スクリーニングの第3のラウンドが実施される。スクリーニングの第3のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第2の動きベクトルに、予め設定された順4で連続的にアクセスし、上側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定する。アクセス順4は、アクセス順3と同じであっても異なってもよい。例えば、アクセス順4は右下のブロックB0から真上のブロックB1、そして左上のブロックB2への順であってよい。
留意すべきことは、選択された第2の動きベクトルがショートターム動きベクトルであり、第2の動きベクトルに対応するPOC差分が、現在のブロックの動きベクトルに対応するPOC差分と異なるとき、第2の動きベクトルが、スケーリングされた後に候補MVPとして用いられるということである。選択された第2の動きベクトルがロングターム動きベクトルであるか、または第2の動きベクトルに対応するPOC差分が、現在のブロックの動きベクトルに対応するPOC差分と同じであるとき、第2の動きベクトルがスケーリングされる必要はなく、そのまま候補MVPとして用いられ、MVPリストに追加される。
理解されてよいのは、このケースで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
306.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
307.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの候補動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
オプションで、先述の空間的に隣接する画素ブロックに関して第2の動きベクトル(および第1の動きベクトル)を導出するための方法が提供される。(隣接するブロックと短く呼ばれる)空間的に隣接する画素ブロックが再構築され、再構築済画素が取得された後、隣接するブロックの予測コーディングモードと、隣接するブロックに対して動き補償が実施されるときに用いられるMVのタイプとに基づき、隣接するブロックの再構築済画素を用いることにより、基準フレーム内で動きサーチが実施されて、第2の動きベクトルを取得する(そして、隣接するブロックがフレーム内予測ブロックである場合、第1の動きベクトルを取得する)。隣接するブロックのタイプには以下の4つがあってよく、隣接するブロックの全てのタイプの処理方式が別々に提供される。
(A)隣接するブロックに関してフレーム間予測が用いられ、ショートターム動きベクトル(short−term motion vector,SMV)のみが動き補償に関して用いられる(言い換えれば、隣接するブロックの第1の動きベクトルがSMVのみを含む)場合、ロングターム基準フレーム内で動きサーチが実施されてロングターム動きベクトル(long−term motion vector,LMV)を第2の動きベクトルとして導出し、隣接するブロックに対して実施された動き補償に関して用いられるSMVが第1の動きベクトルとして用いられる。より具体的には以下の処理が含まれる:動きサーチの始点がまず決定される。隣接するブロックの空間的に隣接する予測ブロック(オプションで、同位置ブロックがさらに含まれてよい)内の全てのLMVが見つけられる(LMVは、これらのブロックの第1の動きベクトルおよび第2の動きベクトルからのものである)。特に、利用可能なLMVがない場合、第2の動きベクトルは利用不可能である。隣接するブロックの再構築済画素をテンプレートとして用いて、および各LMVを動きベクトルとして用いて現在のフレーム内のテンプレートエリアと、LMVが指す基準フレーム内の対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第1の差分ピクチャ)を取得することにより動き補償が実施される。エネルギーが最も低い第1の差分ピクチャに対応するLMVが指す位置が、動きサーチの次のステップにおけるサーチ始点LMV_startとして用いられる。第1の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和(sum of squared difference,SSD)、差分ピクチャ内の全ての画素の絶対差分和(sum of absolute difference,SAD)、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和(sum of absolute hadamard transformed differences,SATD)。隣接するブロックの再構築済画素は、隣接するブロックの全ての再構築済画素であってよく、右下の四辺形を成す画素と、右側の複数の列内の画素と、下側の複数の行の画素とを組み合わせることにより形成されるL字型エリア内の再構築済画素であってよく、またはその他であってよい。このことは本明細書において具体的に限定されない。
それから、始点に基づき動きサーチが実施され、導出されたLMVが決定される。隣接するブロックの再構築済画素をテンプレートとして用いることにより、およびLMV_startを始点として用いることにより、LMV_startに対応するロングターム基準フレーム内で、サーチ範囲[−X1,X1]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第2の差分ピクチャ)の最も低いエネルギーをもたらす。この最適なMVが、導出されたLMVとして決定される。サーチ精度は1/4画素精度または1/2画素精度であってよく、サーチ方法は、フルサーチ、ダイアモンドクイックサーチ(diamond search)、またはヘキサゴンクイックサーチ(hexagon search)であってよい。X1は、1以上の正の整数である。例えば、X1は1、2、3または4に等しい。第2の差分ピクチャのエネルギーは、以下の3つの方式のうち1つで計算されてよい:SAD、SSD、およびSATD。第2の差分ピクチャのエネルギーを計算するための方法は、第1の差分ピクチャのエネルギーを計算するためのものと同じであっても異なってもよい。好ましくは、第1の差分ピクチャのエネルギーおよび第2の差分ピクチャのエネルギーの両方に関してSADが用いられる。代替的に、第1の差分ピクチャのエネルギーに関してSADが用いられ、第2の差分ピクチャのエネルギーに関してSATDが用いられる。
(B)隣接するブロックに関してフレーム間予測が用いられ、LMVのみが動き補償に関して用いられる(言い換えれば、隣接するブロックの第1の動きベクトルがLMVのみを含む)場合、ショートターム基準フレーム内で動きサーチが実施されてSMVを第2の動きベクトルとして導出し、隣接するブロックのLMVが第1の動きベクトルとして用いられる。以下の2つの方法のうちいずれかが実装のために用いられてよい。方法1は次の通りである:各ショートターム基準フレーム内の動きサーチの始点がまず決定される。基準フレームリスト内のM個のショートフレーム基準フレームのうち各基準フレームFsに関して、隣接するブロックの空間的に隣接する予測ブロック(オプションで、同位置ブロックがさらに含まれてよい)内の全てのSMVが、基準フレームFsを指すSMVとなるようスケーリングされる(SMVは、これらのブロックの第1の動きベクトルおよび第2の動きベクトルからのものである)。特に、利用可能なSMVがない場合、第2の動きベクトルは利用不可能である。隣接するブロックの再構築済画素をテンプレートとして用いることにより、および各SMVを動きベクトルとして用いることにより基準フレームFs内で動き補償が実施され、エネルギーが最も低い第1の差分ピクチャに対応するSMVが、ショートターム基準フレームFs内の動きサーチの始点SMV_startとして用いられる。先述の処理は、全てのショートターム基準フレーム内で実施されて、各ショートターム基準フレーム内の動きサーチの始点を決定する。ショートターム基準フレーム内の各基準フレームに関して、ショートターム基準フレーム内の最適なMVが決定される。M個の基準フレームのうち各基準フレームFsに関して、隣接するブロックの再構築済画素をテンプレートとして用いることにより、および基準フレームFsに対応するSMV_startを動きサーチの始点として用いることによりサーチ範囲[−X2,X2]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の第2の差分ピクチャの最も低いエネルギーをもたらす。X2は、1以上の正の整数である。例えば、X2は1、2、3または4に等しく、または別の値であってよい。このことは本明細書において具体的に限定されない。先述の処理は、全てのショートターム基準フレーム内で実施されて、各ショートターム基準フレーム内の最適なMVを決定する。最終的に、導出されたSMVが決定される。M個のショートターム基準フレーム内の最適なMVに対応する第2の差分エネルギーが比較され、最も低い第2の差分エネルギーに対応する最適なMVが最終的に導出されたSMVとして決定される。方法2は次の通りである:動きサーチの始点がまず決定される:隣接するブロックの空間的に隣接する予測ブロック内の全てのSMVが見つけられ、隣接するブロックの再構築済画素をテンプレートとして用いることにより、および各SMVを動きベクトルとして用いることにより、各SMVに対応する基準フレーム内で動き補償が実施され、エネルギーが最も低い第1の差分ピクチャに対応するSMVが、動きサーチの始点SMV_startとして用いられる。それから、導出されたSMVが決定される。隣接するブロックの再構築済画素をテンプレートとして用いることにより、およびSMV_startを動きサーチの始点として用いることにより、SMV_startに対応するショートターム基準フレーム内で、サーチ範囲[−X2,X2]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の第2の差分ピクチャの最も低いエネルギーをもたらす。
(C)隣接するブロックに関してフレーム間予測が用いられ、動き補償に関してSMVおよびLMVが用いられた場合(言い換えれば、隣接するブロックの第1の動きベクトルがSMVおよびLMVを含む場合)、隣接するブロックに関して第2の動きベクトルが導出される必要はなく、隣接するブロックの第2の動きベクトルは利用不可能である。
(D)隣接するブロックに関してフレーム内予測が用いられる場合、(A)に示される方法に従ってLMVが導出され、(B)に示される方法に従ってSMVが導出される。SMVとLMVとに対応する第2の差分ピクチャのエネルギーが比較され、エネルギーがより低い第2の差分ピクチャに対応するMVが第1の動きベクトルとして用いられ、エネルギーがより高い第2の差分ピクチャに対応するMVが第2の動きベクトルとして用いられる。オプションで、代替的に、SMVが常に第1の動きベクトルとして用いられ、LMVが常に第2の動きベクトルとして用いられる。
オプションで、実施例において、フレームがコーディング/デコードされるとき、フレーム内の全てのブロックの第1の動きベクトルが4×4ブロックの形態で動きベクトルフィールドに格納される。これはHEVCの動きベクトル格納方式と同様である。第2の動きベクトルは、4×4ブロックの形態で別の動きベクトルフィールドに格納される。よって、対応する動きベクトルフィールド内で空間的に隣接する予測ブロックの2つのタイプのMVが取得されてよい。フレームのコーディング/デコードが完了した後、第1の動きベクトルフィールドのみをメモリに保存する必要があり、第2の動きベクトルフィールドは保存および格納がされなくてよい。
オプションで、計算の複雑さを減らすべく、再構築済ブロックに関してフレーム間コーディングモードが用いられ、再構築済ブロックの第1の動きベクトルが1つのタイプのMVのみを含むとき、再構築済ブロックに関して、再構築済ブロックの空間的に隣接する予測ブロックの全ての第1の動きベクトルが再構築済ブロックの第1の動きベクトルと同じタイプを有する場合、再構築済ブロックに対して動きサーチを実施して再構築済ブロックの第2の動きベクトルを導出する先述の処理は実施されず、ブロックの第2の動きベクトルは利用不可能である。
オプションで、計算の複雑さを減らすべく、コーディングツリーユニット(coding tree unit,CTU)インデックスStart_CTU_indexがスライスヘッダに追加されてよく、再構築済ブロックに対して動きサーチを実施して再構築済ブロックの第2の動きベクトルを導出する(および、再構築済ブロックがフレーム内コードブロックである場合に第1の動きベクトルを導出する)先述の処理は、CTU番号がピクチャ内のStart_CTU_index未満であるCTU内のブロックに対して実施されない。これらのブロックの第2の動きベクトルは利用不可能であり、これらのブロック内のフレーム内コードブロックの第1の動きベクトルも利用不可能である。
図4を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の別の実施形態は以下のステップを含む。
401.現在のブロックの動きベクトルに対応する基準フレームを取得。
402.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
403.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
本実施形態のステップ401からステップ403は、図3に示される実施形態のステップ301からステップ303と同様である。詳細はここで改めて説明しない。
404.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、左側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、現在のブロックの全ての上側の空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと同じ動きベクトルタイプを有するかを決定する。現在のブロックの全ての上側の空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと同じ動きベクトルタイプを有する場合、デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定し、現在のブロックの、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つが利用可能であるとき、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つ、または左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つのスケーリング値を候補動きベクトル予測子として用いる。
例えば、デバイスが、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、2ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウント(picture order count,POC)を有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして決定する。スクリーニングの第2のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリングは、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。
デバイスが、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、2ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウントを有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして決定する。スクリーニングの第2のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、隣接するブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリングは、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定し、現在のブロックの、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能である場合、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つ、または左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定する前に、デバイスはさらに、MVPリストが空である(言い換えれば、現在のブロックの空間的に隣接するブロックの第1の動きベクトルがどれも現在のブロックの動きベクトルと同じ動きベクトルタイプを有さない)かを決定する必要があるということである。MVPリストが空でないとき、MVPリストには少なくとも1つの候補がある。MVPリストが空であるとき、デバイスは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルに予め設定された順5で連続的にアクセスし、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内のK個の利用可能な第2の動きベクトル、またはそれらK個の第2の動きベクトルのスケーリング値をMVPとして用いる。Kは、MVPリストの長さN(すなわち、予め定められた値)以下の正の整数である。例えば、K=1またはK=2である。
理解されてよいのは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、現在のブロックの左側および上側に位置するブロックを含むということである。好ましくは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、左隣のブロック、真上のブロック、右上のブロックB0、および左上のブロックB2を含み、アクセス順5は、左隣のブロックA1から真上のブロックB1、左下のブロックA0、右上のブロックB0、そして左上のブロックB2という順であってよく、または左下のブロックA0から左隣のブロックA1、右上のブロックB0、真上のブロックB1、そして左上のブロックB2という順であってよい。代替的に、好ましくは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、左隣のブロック、真上のブロック、および左上のブロックを含み、アクセス順5は、左隣のブロックA1から真上のブロックB1、そして左上のブロックB2という順であってよい。オプションで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
405.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
406.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの候補動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
図5を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックの、予め設定された範囲内の少なくとも1つの画素ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の別の実施形態は以下のステップを含む。
501.現在のブロックの動きベクトルに対応する基準フレームを取得。
502.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
503.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
本実施形態のステップ501からステップ503は、図4に示される実施形態のステップ401からステップ403と同様である。詳細はここで改めて説明しない。
504.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、現在のブロックの空間的に隣接する画素ブロックの第1の基準フレーム内で、現在のブロックの空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定し、第1の基準ブロックと現在のブロックの空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用い、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、画素ブロックの第1の基準フレーム内で、画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定し、第1の基準ブロックと画素ブロックとの間の動きベクトルを第2の動きベクトルとして用い、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックの画素ブロックに基づき第2の動きベクトルを生成する前に、MVPリストが空(言い換えれば、現在のブロックの空間的に隣接する予測ブロックの第1の動きベクトルがどれも現在のブロックの動きベクトルと同じ動きベクトルタイプを有さない)かをさらに決定する必要がある。MVPリストが空でないとき、MVPリストには少なくとも1つの候補MVPがある。MVPリストが空であるとき、デバイスは現在のブロックの画素ブロックをテンプレートとして用い、テンプレートマッチング方式で、現在のブロックの動きベクトルが指す基準フレーム内の最適なマッチング位置を見つける。最適なマッチング位置と現在のブロックのテンプレートエリアとの間の変位ベクトルが第2の動きベクトルとして用いられ、第2の動きベクトルが候補MVPとして用いられる。
例えば、第2の動きベクトルを決定する処理は具体的には2つのステップに分けられてよい。ステップ1:「候補動きベクトルセット」内のMVが比較されて動きサーチの始点を決定する。候補動きベクトルセットは以下の2つのタイプのMVのうち少なくとも1つを含む:ゼロベクトル(0,0)およびグローバル動きベクトル。現在のブロックの、予め設定された範囲内の画素ブロックをテンプレートとして用いて、および候補動きベクトルセット内の各MVを動きベクトルとして用いて現在のフレームのテンプレートエリアと基準フレーム内の対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第1の差分ピクチャ)を取得することにより、現在のブロックのMVの基準フレーム内で動き補償が実施される。デバイスは、エネルギーが最も低い第1の差分ピクチャに対応するMVが指す位置を、動きサーチの次のステップにおけるサーチ始点MV_startとして用いる。第1の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和、差分ピクチャ内の全ての画素の絶対差分和、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和。現在のブロックの隣接する再構築済画素は、現在のブロックの上側の再構築済画素、現在のブロックの左側の再構築済画素、現在のブロック左側の再構築済画素および上側の再構築済画素を組み合わせることにより形成されるL字型エリア内の画素などであってよい。このことは本明細書において具体的に限定されない。
1または複数のグローバル動きベクトルがあってよい。グローバル動きベクトルは、ビットストリーム内で特定され(例えば、現在のフレームのスライスヘッダ内で特定され)、現在のフレームからロングターム基準フレームを指すMVを示す。好ましくは、1つのロングターム基準フレームが少なくとも1つのグローバル動きベクトルを有してよく、ショートターム基準フレームはグローバル動きベクトルを有さない。現在のブロックのMVがショートタームMVである場合、候補動きベクトルセットはゼロベクトルのみを含む。現在のブロックのMVがロングタームMVである場合、現在のブロックの候補動きベクトルセットはゼロベクトルを含み、少なくとも1つのグローバル動きベクトルをさらに含んでよい。グローバル動きベクトルは、現在のフレーム内の各エリア内にあり、ロングターム基準フレームと相対的な動きベクトルを分析することによりエンコーダにより導出されてよい。例えば、全てのエリア内の動きベクトルのうち出現頻度が最も高い1つまたは2つの動きベクトルがグローバル動きベクトルとして選択される。デコードデバイスは、ビットストリーム(例えば、スライスヘッダ)をパースすることにより現在のフレームのロングターム基準フレームのグローバル動きベクトルを取得する。オプションで、ロングターム基準フレームのグローバル動きベクトルの数情報がビットストリームで送信されてよい。グローバル動きベクトル数が0であることを数情報が示すとき、候補動きベクトルセットはグローバル動きベクトルを含まずゼロベクトルのみを含む。
ステップ2:始点に基づき動きサーチを実施して第2の動きベクトルを決定する。現在のブロックの、予め設定された範囲内の画素ブロックをテンプレートとして用いることにより、およびMV_startを始点として用いることにより現在のブロックのMVの基準フレーム内のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第2の差分ピクチャ)の最も低いエネルギーをもたらす。この最適なMVが、第2の動きベクトルとして決定される。
サーチ精度は1/4画素精度または1/2画素精度であってよく、サーチ方法は、フルサーチ、ダイアモンドクイックサーチ(diamond search)、またはヘキサゴンクイックサーチ(hexagon search)であってよい。サーチウィンドウサイズは8×8または16×16に固定されてよく、またはMV_startのタイプに基づき適応的に設定されてよい。例えば、MV_startが(0,0)であるとき、サーチウィンドウサイズは16×16である。MV_startが(0,0)でないとき、サーチウィンドウサイズは8×8である。第2の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和、差分ピクチャ内の全ての画素の絶対差分和、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和。第2の差分ピクチャのエネルギーを計算するための方法は、第1の差分ピクチャのエネルギーを計算するためのものと必ずしも同じではない。例えば、第1の差分ピクチャのエネルギーおよび第2の差分ピクチャのエネルギーの両方に関して、差分ピクチャ内の全ての画素の絶対差分和が用いられる。代替的に、第1の差分エネルギーに関して差分ピクチャ内の全ての画素の絶対差分和が用いられ、第2の差分エネルギーに関して、差分ピクチャ内の全ての画素の差分二乗和が用いられる。このことは本明細書において具体的に限定されない。
理解されてよいのは、このケースで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
505.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
506.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、第2の動きベクトルは、現在のブロックの、予め設定された範囲内の画素ブロックに基づき導出され、第2の動きベクトルは、現在のブロックの候補動きベクトル予測子として決定される。第2の動きベクトルは、現在のブロックの動きベクトルと同じタイプを有する。よって、動きベクトル予測子リストが充実化され、動きベクトル予測効率が向上する。
理解されるべきことは、先述の動きベクトル予測方法のそれぞれが現在のブロックに関してコーディング方法で用いられてよく、または現在のブロックに関してデコード方法で用いられてよいということである。
ここまでは、本願の実施形態における動きベクトル予測方法が説明され、以下には、本願の実施形態における動きベクトル予測デバイスが説明される。図6を参照すると、本願の実施形態に係る動きベクトル予測デバイスの実施形態は、
動きベクトル予測デバイスであって、
現在のブロックの動きベクトルに対応する基準フレームを取得するよう構成された第1の取得ユニット601と、
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定するよう構成された決定ユニット602であって、動きベクトルタイプは、ショートターム動きベクトルとロングターム動きベクトルとを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、決定ユニット602と、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得するよう構成された第2の取得ユニット603であって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、第2の取得ユニット603と、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第1のプロセシングユニット604と
を含む。
オプションで、デバイスは、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングユニット605をさらに含んでよい。
オプションで、デバイスは、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成された第3のプロセシングユニット606をさらに含んでよい。
オプションで、第1のプロセシングユニット604は、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングモジュール6041をさらに含んでよい。
オプションで、第1のプロセシングモジュール6041は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングサブモジュール60411をさらに含んでよい。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルが現在のブロックの候補動きベクトル予測子として用いられて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
図7を参照すると、本願の実施形態に係る動きベクトル予測デバイスの別の実施形態は、図6に対応する実施形態における第1の取得ユニット601と、決定ユニット602と、第2の取得ユニット603と、第1のプロセシングユニット604とを含む。
オプションで、第1のプロセシングユニット604は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュール6042をさらに含んでよい。
オプションで、第2のプロセシングモジュール6042は、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングサブモジュール60421と、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第3のプロセシングサブモジュール60422と
をさらに含んでよい。
図8を参照すると、本願の実施形態に係る動きベクトル予測デバイスの別の実施形態は、図6に対応する実施形態における第1の取得ユニット601と、決定ユニット602と、第2の取得ユニット603と、第1のプロセシングユニット604とを含む。
オプションで、第1のプロセシングユニット604は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュール6042をさらに含んでよい。
オプションで、第2のプロセシングモジュール6042は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接するブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第4のプロセシングサブモジュール60423をさらに含んでよい。
理解されるべきことは、先述の動きベクトル予測デバイスは、現在のブロックをコーディングするためにエンコーダで用いられてよく、または現在のブロックをデコードするためにデコーダで用いられてよいということである。
ここまでは、本願の実施形態における動きベクトル予測デバイスが詳細に別々に、図6から図8のモジュール機能エンティティの観点から説明されてきた。以下では、本願の実施形態における動きベクトル予測デバイスを詳細にハードウェア処理の観点から説明する。
図9は、本願の実施形態に係る動きベクトル予測デバイスの概略構造図である。図9は、統合されたユニットが用いられるときの、先述の実施形態におけるデバイスの考えられる構造の概略図を示す。デバイス900は、プロセシングユニット902と通信ユニット903とを含む。プロセシングユニット902は、デバイスの動作を制御し管理するよう構成されている。例えば、プロセシングユニット902はデバイスが、図3におけるステップ301からステップ307、および/または本明細書において説明されている技術の別の処理を実施するのをサポートするよう構成されている。通信ユニット903は、デバイスが別のデバイスと通信するのをサポートするよう構成されている。デバイスは、デバイスのプログラムコードおよびデータを格納するよう構成されたストレージユニット901をさらに含んでよい。
プロセシングユニット902はプロセッサまたはコントローラであってよく、例えば、中央処理装置(central processing unit,CPU)、汎用プロセッサ、デジタル信号プロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application−specific integrated circuit,ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)若しくは別のプログラマブルロジックデバイス、トランジスタロジックデバイス、ハードウェアコンポーネント、またはこれらの任意の組み合わせであってよい。プロセシングユニット902は、本願に開示されている内容を参照して説明される様々な例示的なロジックブロック、モジュール、および回路を実装または実行してよい。代替的に、プロセッサは、コンピューティング機能を実装するプロセッサの組み合わせ、例えば、1または複数のマイクロプロセッサの組み合わせ、DSPとマイクロプロセッサとの組み合わせなどであってよい。通信ユニット903は、通信インタフェース、トランシーバ、トランシーバ回路などであってよい。通信インタフェースは総称的な用語であり、トランシーバインタフェースなどの1または複数のインタフェースを含んでよい。ストレージユニット901はメモリであってよい。
プロセシングユニット902がプロセッサであり、通信ユニット903が通信インタフェースであり、ストレージユニット901がメモリであるとき、本願の本実施形態におけるデバイスは図10に示されるデバイスであってよい。
図10を参照すると、デバイス1010は、プロセッサ1012と、通信インタフェース1013と、メモリ1011とを含む。オプションで、デバイス1010はバス1014をさらに含んでよい。通信インタフェース1013、プロセッサ1012、およびメモリ1011は、バス1014を用いることにより互いに接続されてよい。バス1014は、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect,PCI)バス、エクステンデッドインダストリスタンダードアーキテクチャ(extended industry standard architecture,EISA)バスなどであってよい。バス1014は、アドレスバス、データバス、制御バスなどに分類されてよい。表示を容易にするために、1つの太い線のみが図10内の表示に用いられている。しかしこのことは、1つのバスのみ、または1つのタイプのバスのみがあることを意味しない。
実現可能な実施例において、図11および図12は、本願の実施形態に係るコーデック装置50を示す。コーデック装置50は、無線通信システムにおけるモバイル端末またはユーザ機器であってよい。理解されるべきことは、本願の本実施形態が、ビデオピクチャをコーディングおよび/またはデコードする必要があってよい任意の電子デバイスまたは装置において実装されてよいということである。
コーデック装置50は、デバイスを内蔵し保護するのに用いられる筐体30、(具体的には液晶ディスプレイであってよい)ディスプレイ32、およびキーパッド34を含んでよい。コーデック装置50は、マイク36または任意の適切な音声入力部を含んでよく、音声入力部はデジタルまたはアナログ信号入力部であってよい。コーデック装置50は、以下の音声出力デバイスをさらに含んでよく、本願の本実施形態では、音声出力デバイスは、イヤホン38、拡声器、アナログ音声出力接続部、またはデジタル音声出力接続部のいずれか1つであってよい。コーデック装置50はバッテリ40も含んでよい。本願の別の実施形態において、デバイスは、太陽電池、燃料電池、またはクロックメカニズムジェネレータなどの任意の適切なモバイルエネルギーデバイスにより電力供給されてよい。装置は、別のデバイスとの近距離見通し内通信のために用いられる赤外線ポート42をさらに含んでよい。別の実施形態において、コーデック装置50は、Bluetooth(登録商標)無線接続またはUSB有線接続などの任意の適切な近距離通信ソリューションをさらに含んでよい。
コーデック装置50は、コントローラ56、またはコーデック装置50を制御するよう構成されたプロセッサを含んでよい。コントローラ56は、メモリ58に接続されてよい。本願の本実施形態では、メモリは、ピクチャの形態のデータ、および音声の形態のデータを格納してよく、および/またはコントローラ56により実装されることになる命令を格納してよい。コントローラ56はさらに、音声および/またはビデオデータのコーディングおよびデコードを実装するために、またはコントローラ56により実装される補助を受けたコーディングまたはデコードのために適したコーデック54に接続されてよい。
コーデック装置50は、カードリーダ48およびスマートカード46をさらに含んでよい。カードリーダ48およびスマートカード46は、ユーザ情報を提供するよう構成され、ネットワーク内でユーザの認証および権限付与を実施するのに用いられる認証情報を提供するのに適しており、例えば、集積回路カード(universal integrated circuit card,UICC)およびUICCリーダである。
コーデック装置50は、無線インタフェース回路52をさらに含んでよい。無線インタフェース回路はコントローラに接続され、セルラー通信ネットワーク、無線通信システム、または無線ローカルエリアネットワークとの通信のために用いられる無線通信信号を例えば生成するのに適している。コーデック装置50はアンテナ44をさらに含んでよい。アンテナは無線インタフェース回路52に接続され、別の装置(または複数の装置)へ、無線インタフェース回路52で生成された無線周波数信号を送信し、別の装置(または複数の装置)から無線周波数信号を受信するよう構成されている。
本願の一部の実施形態において、コーデック装置50は、単一のフレームそれぞれを記録または検出出来るカメラを含み、コーデック54またはコントローラはこれら単一のフレームを受信し処理する。本願の一部の実施形態において、コーデック装置50は、送信および/または格納の前に別のデバイスから処理対象のビデオピクチャデータを受信してよい。本願の一部の実施形態において、コーデック装置50は、無線または有線接続を通じて、コーディング/デコードされることになるピクチャを受信してよい。
先述の実施形態の全てまたは一部は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組み合わせを用いることにより実装されてよい。実施形態を実装するのにソフトウェアが用いられるとき、実施形態は、完全に、または部分的にコンピュータプログラムプロダクトの形態で実装されてよい。
コンピュータプログラムプロダクトは1または複数のコンピュータ命令を含む。コンピュータプログラム命令がロードされコンピュータ上で実行されたとき、本願の実施形態に係る手順または機能が全てまたは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブルデバイスであってよい。コンピュータ命令は、コンピュータ可読記憶媒体に格納されてよく、またはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体へ送信されてよい。例えば、コンピュータ命令はウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタへ有線(例えば、同軸ケーブル、光ファイバ、またはデジタル加入者線(digital subscriber line, DSL)または無線(例えば、赤外線、電波、またはマイクロ波)方式で送信されてよい。コンピュータ可読記憶媒体は、コンピュータがアクセス可能な任意の使用可能な媒体であってよく、または1または複数の使用可能な媒体を組み込んだサーバまたはデータセンタなどのデータ記憶デバイスであってよい。使用可能な媒体は、磁気媒体(例えば、フロッピディスク、ハードディスク、または磁気テープ)、光媒体(例えば、DVD)、半導体媒体(例えば、ソリッドステートドライブ(solid− state disk,SSD)などであってよい。
当業者が明らかに理解してよいのは、説明を簡便にするために、先述のシステム、デバイス、およびユニットの詳細な作動処理については、先述の方法の実施形態における対応する処理を参照されたいということである。詳細はここで説明しない。
本願で提供される実施形態において理解されるべきことは、開示されているシステム、デバイス、および方法が他の方式で実装されてよいということである。例えば、説明されているデバイスの実施形態は単に例である。例えば、ユニットの区分は単にロジック的な機能の区分である。実際の実装においては別の区分方式があってよい。例えば、複数のユニットまたはコンポーネントが組み合わされてよく、若しくは別のシステムに組み込まれてよく、または一部の特徴は無視されてよく、若しくは実施されなくてよい。加えて、表示されている、または論じられている相互の連結または直接的な連結若しくは通信接続は、一部のインタフェースを用いることによって実装されてよい。デバイスまたはユニット間の間接的な連結または通信接続は、電子的形態、機械的形態、または他の形態で実装されてよい。
別々の部分として説明されているユニットは、物理的に別々であってもなくてもよく、ユニットとして表示されている部分は、物理的なユニットであってもなくてもよく、1つの位置にあってよく、または複数のネットワークユニット上で分散させられてよい。ユニットのうち一部または全ては、実施形態における解決法の目的を達成するための実際の要求事項に基づき選択されてよい。
加えて、本願の実施形態における機能ユニットは、1つのプロセシングユニットに統合されてよく、またはユニットのうちそれぞれは、物理的に単独で存在してよく、または2つまたはそれ以上のユニットが1つのユニットに統合されてよい。統合されたユニットはハードウェアの形態で実装されてよく、またはソフトウェア機能ユニットの形態で実装されてよい。
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立したプロダクトとして販売される、または用いられるとき、統合されたユニットはコンピュータ可読記憶媒体に格納されてよい。そのような理解に基づき、本願の技術的解決法は本質的に、または従来技術に貢献する部分、または技術的解決法の全てまたは一部は、ソフトウェアプロダクトの形態で実装されてよい。コンピュータソフトウェアプロダクトは記憶媒体に格納され、本願の実施形態で説明されている方法のステップの全てまたは一部を実施するよう(パーソナルコンピュータ、サーバ、またはネットワークデバイスであってよい)コンピュータデバイスに命令するためのいくつかの命令を含む。記憶媒体は、プログラムコードを格納出来る任意の媒体、例えば、USBフラッシュドライブ、リムーバブルハードディスク、読み取り専用メモリ(read−only memory,ROM)、ランダムアクセスメモリ(random access memory,RAM)、磁気ディスク、またはコンパクトディスクを含む。
結論として、先述の実施形態は単に、本願を限定するのではなく、本願の技術的解決法を説明することが意図されている。先述の実施形態を参照して本願が詳細に説明されているが、当業者が理解すべきことは、彼らが依然として、本願の実施形態の技術的解決法の思想および態様から逸脱することなく、先述の実施形態に記録されている技術的解決法に対して変更を加えてよく、またはそれらの一部の技術的特徴に対して同等の置き換えを行ってよいということである。
本願は、2017年6月13日に国家知識産権局に提出され発明の名称が「MOTION VECTOR PREDICTION METHOD AND DEVICE」である中国特許出願第201710445873.7号に基づく優先権を主張する。当該中国特許出願は、その全体が参照により本明細書に組み込まれる。
本願は、ピクチャ処理技術の分野に関し、特に動きベクトル予測方法およびデバイスに関する。
動きベクトル(motion vector,MV)関連の情報伝送におけるデータ量を削減しコーディング効率を向上させるよう、高効率ビデオコーディング(high efficiency video coding,HEVC)規格におけるフレーム間コーディングに関して、MV予測コーディング技術が用いられる。HEVC規格におけるフレーム間予測コーディングは、2つのモード、フレーム間(inter)モードと、マージ(merge)/スキップ(skip)モードとに分けられる。現在のブロックに関してinterモードが用いられるとき、現在のブロックのMVの基準フレームインデックス(reference frame index)、動きベクトル予測子インデックス(motion vector predictor index,MVP index)、および動きベクトルの差分(motion vector difference,MVD)がビットストリーム内で特定される。現在のブロックのMVが指す基準フレームは基準フレームインデックスに基づき決定され、動きベクトル予測子インデックスは、動きベクトル予測子(motion vector predictor,MVP)候補リスト内の候補が現在のブロックのMVの予測子として用いられることを示し、現在のブロックのMVは、MVPをMVDに追加することにより取得される。merge/skipモードが現在のブロックに関して用いられるとき、動きベクトルの差分も基準フレームインデックスもビットストリーム内で特定されず、MVP indexのみが特定される。MVP indexに基づきMVP候補リストから対応するMVと、MVに対応する基準フレームとが選択され、現在のブロックのMVと、現在のブロックのMVに対応する基準フレームとして用いられる。
2つの解決法では、現在のブロックの空間的に隣接するブロックおよび時間的に隣接するブロックの動きベクトルを用いることにより動きベクトル予測子リスト(motion vector predictor list)を構築する必要がある。動きベクトルのうちそれぞれが、MVP候補(MVP candidate)と呼ばれる。それから、ビットストリームで送信されるMVP indexに基づき動きベクトル予測子リストから対応するMVP候補が見つけられ、その対応するMVP候補が、現在のブロックの動きベクトル予測子として決定される。前方予測、後方予測、および双方向予測のうちいずれか1つにより、interモードの現在のブロックに対してフレーム間予測が実施されてよい。interモードのいずれのブロックも1つまたは2つのMVを有しており、MVPリストは、そのブロック内の各MVに関して構築される必要がある。
現在のブロックの各空間的に隣接するブロックまたは時間的に隣接するブロックに対して単方向予測が実施されるとき、その空間的に隣接するブロックまたは時間的に隣接するブロックは1つのMVのみを含む。現在のブロックに対して双方向予測が実施されるとき、含まれる2つのMVは同じタイプのものであり得る。interモードにおいて、隣接するブロックのMVのタイプが、現在のブロックのMVのタイプと異なる(具体的には、一方のMVがロングターム動きベクトルであり、他方のMVがショートターム動きベクトルである)場合、隣接するブロックのそのMVはMVPリストに追加されない。結果として、MVPリスト内のゼロ動きベクトル(zero motion vector,Zero MV)の数が増え、MV予測効率が低いものとなる。
本願の実施形態は動きベクトル予測方法を提供する。現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの動きベクトルの動きベクトルタイプと異なるとき、当該方法が用いられて、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する動きベクトルで現在のブロックの動きベクトル予測子リストが補われ、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
本願の実施形態の第1の態様は、動きベクトル予測方法であって、
デバイスがビットストリームから、現在のブロックの動きベクトルに対応する基準フレームを取得する段階と、
それから、デバイスは、基準フレームの基準フレームタイプを決定し、基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定する段階であって、基準フレームの基準フレームタイプはロングターム基準フレームまたはショートターム基準フレームを含み、現在のブロックの動きベクトルの動きベクトルタイプはロングターム動きベクトルまたはショートターム動きベクトルを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、段階と、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、デバイスが、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる第1の動きベクトルから少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得する段階と、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、デバイスが、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と
を含む動きベクトル予測方法を提供する。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
考えられる設計において、本願の本実施形態の第1の態様の第1の実施例では、方法は、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルが現在のブロックの動きベクトル予測子として決定される。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第2の実施例では、方法はさらに、
現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定する段階であって、仮想基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、段階と、
仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いる段階と
を含む。本願の本実施形態では、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが動きベクトル予測子を決定する処理が本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第3の実施例では、
現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、デバイスが空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階であって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、段階と、第1の基準ブロックと画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階と、さらに、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階とを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する処理が説明される。
考えられる設計において、本願の本実施形態の第1の態様の第4の実施例では、デバイスが、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階と、第1の基準ブロックと画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階と、さらに、第2の動きベクトルを現在のブロックの候補動きベクトル予測子として用いる段階とは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定する段階と、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いる段階であって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、段階と、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階とを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第5の実施例では、
現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階を有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する処理が説明される。
考えられる設計において、本願の本実施形態の第1の態様の第6の実施例では、
少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階と
を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第7の実施例では、 少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる段階を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する別の具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第1の態様の第8の実施例では、方法は、候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロック(co−located block)の少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、同位置ブロックの第1の動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第1の態様の第9の実施例では、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる段階の後、方法は、候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる段階をさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、ゼロ動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願発明の本実施形態の第1の態様の第10の実施例では、方法は、現在のブロックに関してコーディング方法で、または現在のブロックに関してデコード方法で用いられてよい。
本願の実施形態の第2の態様は、
動きベクトル予測デバイスであって、
現在のブロックの動きベクトルに対応する基準フレームを取得するよう構成された第1の取得ユニットと、
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定するよう構成された決定ユニットであって、動きベクトルタイプは、ショートターム動きベクトルまたはロングターム動きベクトルを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、決定ユニットと、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得するよう構成された第2の取得ユニットであって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、第2の取得ユニットと、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第1のプロセシングユニットと
を含む動きベクトル予測デバイスを提供する。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
考えられる設計において、本願の本実施形態の第2の態様の第1の実施例では、デバイスは、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングユニットをさらに含む。本願の本実施形態では、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルが現在のブロックの動きベクトル予測子として決定される。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第2の実施例では、デバイスは、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成された第3のプロセシングユニットをさらに含む。本願の本実施形態では、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスが動きベクトル予測子を決定する処理が本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第3の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、第1のプロセシングユニットは、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングモジュールを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する処理が説明される。
考えられる設計において、本願の本実施形態の第2の態様の第4の実施例では、第1のプロセシングモジュールは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングサブモジュールを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、画素ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第5の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、第1のプロセシングユニットは、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュールを有する。本願の本実施形態では、本願の本実施形態がより処理可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する処理が説明される。
考えられる設計において、本願の本実施形態の第2の態様の第6の実施例では、
第2のプロセシングモジュールは、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングサブモジュールと、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第3のプロセシングサブモジュールと
を含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第7の実施例では、
第2のプロセシングモジュールは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第4のプロセシングサブモジュールを含む。本願の本実施形態では、本願の本実施形態がより処理可能および実行可能であるよう、空間的に隣接する予測ブロックに基づき動きベクトル予測子を決定する別の具体的な処理が提供される。
考えられる設計において、本願の本実施形態の第2の態様の第8の実施例では、デバイスは、候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いるよう構成された第4のプロセシングユニットをさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、同位置ブロックの第1の動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願の本実施形態の第2の態様の第9の実施例では、デバイスは、候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いるよう構成された第5のプロセシングユニットをさらに含む。本願の本実施形態では、候補動きベクトル予測子の数が予め定められた値より少ないとき、ゼロ動きベクトルが現在のブロックの動きベクトル予測子として用いられる。このことは本願の本実施形態の実施例を追加する。
考えられる設計において、本願発明の本実施形態の第2の態様の第10の実施例では、デバイスは、現在のブロックをコーディングするためにエンコーダで、または現在のブロックをデコードするためにデコーダで用いられてよい。
本願の第3の態様は、プロセッサと、プロセッサに連結されたメモリとを含む動きベクトル予測デバイスを提供し、
プロセッサは、
現在のブロックの動きベクトルに対応する基準フレームを取得することと
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定することであって、動きベクトルタイプは、ショートターム動きベクトルまたはロングターム動きベクトルを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、ことと、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得することであって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、ことと、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることと
を実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第1の実施例では、プロセッサはさらに、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第2の実施例では、プロセッサはさらに、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第3の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックに空間的に隣接し、予め設定された範囲内の少なくとも1つの画素ブロックの画素再構築値を含み、対応して、プロセッサは、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、プロセッサは、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第4の実施例では、プロセッサは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第5の実施例では、現在のブロックの空間的に隣接する画素ブロックは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含み、対応して、現在のブロックの空間的に隣接する画素ブロックのデコード情報は、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルを含み、第2の動きベクトルの動きベクトルタイプは第1の動きベクトルの動きベクトルタイプと異なり、対応して、プロセッサは、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第6の実施例では、
プロセッサは、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる
よう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第7の実施例では、
プロセッサは、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成されている。
考えられる設計において、本願の本実施形態の第3の態様の第8の実施例では、デバイスは、現在のブロックをコーディングするためにエンコーダで、または現在のブロックをデコードするためにデコーダで用いられてよい。
本願の第4の態様はコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は命令を格納する。命令がコンピュータ上で実行されたとき、コンピュータは、先述の態様の方法を実施することが可能となる。
本願の第5の態様は、命令を含むコンピュータプログラムプロダクトを提供する。コンピュータプログラムプロダクトがコンピュータ上で実行されたとき、コンピュータは、先述の態様の方法を実施することが可能となる。
先述の技術的解決法から、本願の実施形態は以下の利点を有していることが分かる。
本願の実施形態で提供される技術的解決法において、
現在のブロックの動きベクトルに対応する基準フレームが取得され
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプが決定され、動きベクトルタイプは、ショートターム動きベクトルまたはロングターム動きベクトルを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得され、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプが取得され、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられ、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルが決定され、第2の動きベクトル、または第2の動きベクトルのスケーリング値が現在のブロックの候補動きベクトル予測子として用いられる。本願の実施形態では、動きベクトル予測子リストが充実化し、動きベクトル予測効率が向上するよう、隣接するブロックの動きベクトルのタイプが現在のブロックの動きベクトルのタイプと異なるとき隣接するブロックから動きベクトル予測子を取得できない問題が解決される。
本願の実施形態が適用されるシステムフレームワークの概略図である。
本願の実施形態に係る隣接するL字型エリア内の再構築済画素の概略図である。
本願の実施形態に係る動きベクトル予測方法の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測方法の別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測方法の別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係る動きベクトル予測デバイスの別の実施形態の概略図である。
本願の実施形態に係るコーデック装置の概略ブロック図である。
本願の実施形態に係るコーデック装置の概略図である。
本願の実施形態は動きベクトル予測方法を提供する。現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの動きベクトルの動きベクトルタイプと異なるとき、当該方法が用いられて、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する動きベクトルで現在のブロックの動きベクトル予測子リストが補われ、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
本願内の解決法を当業者がより理解出来るよう、本願の実施形態における添付図面を参照し本願の実施形態を以下に説明する。
本願の明細書、請求項、および添付図面において「第1」、「第2」、「第3」、「第4」などの用語(これらが存在する場合)は、同様のもの同士を区別することが意図されており、具体的な順または順序を必ずしも示さない。そのように用いられるデータは、本明細書で説明されている実施形態が、本明細書で例示または説明されている順とは他の順で実装され得るよう、適切な状況において互いに入れ替え可能であることが理解されるべきである。加えて、「含む」、「有する」、およびそれらの変形の用語は非排他的な包含を網羅するよう意図されており、例えば、列挙されたステップまたはユニットを含む処理、方法、システム、プロダクト、またはデバイスは必ずしもそれら明示的に列挙されたステップまたはユニットに限定されず、明示的に列挙されていない、またはそのような処理、方法、システム、プロダクト、またはデバイスに固有ではない他のステップまたはユニットを含んでよい。
本願の実施形態において提供される方法は、図1に示されるシステムフレームワークに適用されてよい。システムフレームワークにおいて、現在のブロックの、空間的に隣接する予測ブロックおよび同位置ブロックに基づき動きベクトル予測子が決定される。現在のブロックの空間的に隣接する予測ブロックは、左側の空間的に隣接する予測ブロックと上側の空間的に隣接する予測ブロックとに分類されてよい。空間的に隣接する予測ブロックは異なる方式で分類されてよく、例えば、図1に示されるように、左側の空間的に隣接する予測ブロックが、現在のブロックの、左下のブロックA0および左隣のブロックA1を含み、上側の空間的に隣接する予測ブロックが、現在のブロックの、右上のブロックB0、真上のブロックB1、および左上のブロックB2を含み、同位置ブロック(co−located block)が右下のブロックC0および中央のブロックC1を含むように分類されてよい。現在のブロックの隣接するエリア内の再構築済画素に基づき現在のブロックの動きベクトル予測子が取得されるとき、現在のブロックの隣接するエリアの一部で再構築済画素が選択される。同位置ブロックは図2に示されるように分類されてよく、再構築済画素は、現在のブロック周りのL字型エリアで選択される。本願の実施形態において、現在のブロックの隣接するブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるかが決定される必要があり、実際のシチュエーションに基づき、隣接するブロックの動きベクトル、または動きベクトルのスケーリング値が現在のブロックの動きベクトル予測子として決定されて、動きベクトル予測効率を向上させる。
理解を容易にするために、本願の実施形態における具体的な手順を以下に説明する。図3を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の実施形態は以下のステップを含む。
301.現在のブロックの動きベクトルに対応する基準フレームを取得。
デバイスが、現在のブロックの動きベクトルに対応する基準フレームを取得する。デバイスは、H.265ビデオコーディング規格に従って同じ仕様で、ピクチャを複数のピクチャブロックにセグメント分けする。デバイスはまず、コーディング/デコードされているピクチャブロックを現在のブロックとして選択し、それから、選択された現在のブロックの動きベクトル(motion vector,MV)に対応する基準フレームインデックスを取得し、続いて、インデックス情報に基づき、現在のブロックの動きベクトルに対応する基準フレームを決定する。
留意すべきことは、ピクチャブロックが予測されるとき、現在のブロックが位置するピクチャが現在のフレームと呼ばれ、現在のフレームがコーディング/デコードされる前にコーディング/デコード済みのフレームが再構築済フレームと呼ばれるということである。現在のフレームは、単方向予測フレームまたは双方向予測フレームであってよい。現在のフレームが単方向予測フレームである場合、現在のフレームは1つの基準フレームリストL0を有する。現在のフレームが双方向予測フレームである場合、現在のフレームは2つの基準フレームリストを有する。それら2つのリストはそれぞれL0およびL1と呼ばれる。各リストは、現在のフレームの基準フレームと呼ばれる少なくとも1つの再構築済フレームを含む。基準フレームは、現在のフレーム内のフレーム間予測のための基準画素を提供する。デバイスは、基準フレームインデックスに基づき、現在のブロックの動きベクトルが指す基準フレームを決定する。
理解されてよいのは、フレーム間予測は、前方予測、後方予測、または双方向予測によってinterモードの現在のブロックに対して実施されてよいということである。前方予測が実施されるとき、現在のブロックは、1つの前方基準フレームリスト(L0)と1つの前方動きベクトル(L0_MV)とを有する。後方予測が実施されるとき、現在のブロックは、1つの後方基準フレームリスト(L1)と1つの後方MV(L1_MV)とを有する。双方向予測が実施されるとき、現在のブロックは、2つの基準フレームリストL0およびL1を有し、また1つのL0_MVおよび1つのL1_MVを有する。言い換えれば、interモードのどのブロックも1つまたは2つのMVを有する。動きベクトル予測子(motion vector predictor,MVP)リストは、ブロック内の各MVに関して構築されてよい。基準フレームインデックスはビットストリーム内で特定される。例えば、高効率ビデオコーディング(high efficiency video coding,HEVC)における構文要素ref_idx_l0およびref_idx_l1はそれぞれ、基準フレームリストL0およびL1内の基準フレームインデックスを指す。本願の本実施形態では、各現在のブロックが処理されてMVPを決定してよい。各現在のブロックは、1つまたは2つのMVPリストを有してよい。このことは本明細書において限定されない。
302.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
基準フレームを取得した後、デバイスは、基準フレームから関連する情報を取得し、基準フレームの基準フレームタイプを決定する。基準フレームの基準フレームタイプは、ロングターム基準フレームまたはショートターム基準フレームを含む。それから、デバイスは、基準フレームの基準フレームタイプおよび対応関係に基づき現在のブロックの動きベクトルの動きベクトルタイプを決定する。基準フレームがロングターム基準フレームであるとき、現在のブロックの、ロングターム基準フレームに対応する動きベクトルはロングターム動きベクトルである。基準フレームがショートターム基準フレームであるとき、現在のブロックの、ショートターム基準フレームに対応する動きベクトルはショートターム動きベクトルである。
303.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
基準フレームの基準フレームタイプと現在のブロックの動きベクトルの動きベクトルタイプとを決定した後、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、デバイスは、予め設定された順で現在のブロックの少なくとも1つの空間的に隣接する予測ブロックにアクセスする。デバイスは、現在のブロックの少なくとも1つの空間的に隣接する予測ブロックから第1の動きベクトルを取得し、現在のブロックの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを決定し、つまり、第1の動きベクトルがロングターム動きベクトルである、またはショートターム動きベクトルであると決定する。
留意すべきことは、第1の動きベクトルは、フレーム間予測コーディングが用いられる空間的に隣接する予測ブロックに対して動き補償が実施されるときに用いられる動きベクトルであるということである。言い換えれば、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる。例えば、第1の動きベクトルはL0_MVおよび/またはL1_MVであってよい。
理解されてよいのは、基準フレームの基準フレームタイプと現在のブロックの動きベクトルの動きベクトルタイプとを決定した後、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、デバイスはまず、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定し、それから、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いるということである。仮想基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである。
304.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、左側の予め設定された位置にある空間的に隣接する予測ブロックは、全ての左側の空間的に隣接する予測ブロックであってよい。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、左側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、左側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定し、左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するタイプとしては2つのタイプがあってよいということである。タイプ1においては、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルがロングターム動きベクトルであり、現在のブロックの動きベクトルの動きベクトルタイプがショートターム動きベクトルである。タイプ2においては、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルがショートターム動きベクトルであり、現在のブロックの動きベクトルの動きベクトルタイプがロングターム動きベクトルである。
理解されてよいのは、ブロックの動きベクトルが利用可能である場合、少なくとも2つの条件が満たされる必要があるということである。第1の条件は次の通りである:このブロックがピクチャ内にあり、このブロックおよび現在のブロックが同じスライスまたは同じスライスセグメントに属する。第2の条件は次の通りである:フレーム間予測コーディングがこのブロックに関して用いられる。他の制約もさらにあってよい。例えば、このブロックおよび現在のブロックが同じタイル(tile)などに属する。これら制約は異なる規格で異なる。このことは本明細書において限定されない。
例えば、デバイスが、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、3ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウント(picture order count,POC)を有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして用いる。スクリーニングの第2のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリング値は、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。どの第1の動きベクトルも条件2を満たさないとき、スクリーニングの第3のラウンドが実施される。スクリーニングの第3のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第2の動きベクトルに、予め設定された順2で連続的にアクセスし、左側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定する。アクセス順2は、アクセス順1と同じであっても異なってもよい。例えば、アクセス順2は左下のブロックA0から左隣のブロックA1への順であってよい。
305.現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、上側の予め設定された位置にある空間的に隣接する予測ブロックは、全ての上側の空間的に隣接する予測ブロックであってよい。
デバイスは、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、上側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、上側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定し、上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
例えば、デバイスが、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、3ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウントを有する」を満たすかを決定する。デバイスはまず、条件1を満たす第1の動きベクトルを候補MVPとして決定し、それから、上側の空間的に隣接する予測ブロックが条件3「左側の空間的に隣接する予測ブロックのうち左隣のブロックおよび左下のブロックの両方のMVが利用不可能である」を満たすかを決定する。条件3が満たされるとき、スクリーニングの第2のラウンドが実施される。スクリーニングの第2のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリング値は、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。どの第1の動きベクトルも条件2を満たさないとき、スクリーニングの第3のラウンドが実施される。スクリーニングの第3のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第2の動きベクトルに、予め設定された順4で連続的にアクセスし、上側の空間的に隣接する予測ブロックの第2の動きベクトルが利用可能であるかを決定する。アクセス順4は、アクセス順3と同じであっても異なってもよい。例えば、アクセス順4は右上のブロックB0から真上のブロックB1、そして左上のブロックB2への順であってよい。
留意すべきことは、選択された第2の動きベクトルがショートターム動きベクトルであり、第2の動きベクトルに対応するPOC差分が、現在のブロックの動きベクトルに対応するPOC差分と異なるとき、第2の動きベクトルが、スケーリングされた後に候補MVPとして用いられるということである。選択された第2の動きベクトルがロングターム動きベクトルであるか、または第2の動きベクトルに対応するPOC差分が、現在のブロックの動きベクトルに対応するPOC差分と同じであるとき、第2の動きベクトルがスケーリングされる必要はなく、そのまま候補MVPとして用いられ、MVPリストに追加される。
理解されてよいのは、このケースで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
306.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
307.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの候補動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
オプションで、先述の空間的に隣接する画素ブロックに関して第2の動きベクトル(および第1の動きベクトル)を導出するための方法が提供される。(隣接するブロックと短く呼ばれる)空間的に隣接する画素ブロックが再構築され、再構築済画素が取得された後、隣接するブロックの予測コーディングモードと、隣接するブロックに対して動き補償が実施されるときに用いられるMVのタイプとに基づき、隣接するブロックの再構築済画素を用いることにより、基準フレーム内で動きサーチが実施されて、第2の動きベクトルを取得する(そして、隣接するブロックがフレーム内予測ブロックである場合、第1の動きベクトルを取得する)。隣接するブロックのタイプには以下の4つがあってよく、隣接するブロックの全てのタイプの処理方式が別々に提供される。
(A)隣接するブロックに関してフレーム間予測が用いられ、ショートターム動きベクトル(short−term motion vector,SMV)のみが動き補償に関して用いられる(言い換えれば、隣接するブロックの第1の動きベクトルがSMVのみを含む)場合、ロングターム基準フレーム内で動きサーチが実施されてロングターム動きベクトル(long−term motion vector,LMV)を第2の動きベクトルとして導出し、隣接するブロックに対して実施された動き補償に関して用いられるSMVが第1の動きベクトルとして用いられる。例として、以下の処理が含まれる:動きサーチの始点がまず決定される。隣接するブロックの空間的に隣接する予測ブロック(オプションで、同位置ブロックがさらに含まれてよい)内の全てのLMVが見つけられる(LMVは、これらのブロックの第1の動きベクトルおよび第2の動きベクトルからのものである)。特に、利用可能なLMVがない場合、第2の動きベクトルは利用不可能である。隣接するブロックの再構築済画素をテンプレートとして用いて、および各LMVを動きベクトルとして用いて現在のフレーム内のテンプレートエリアと、LMVが指す基準フレーム内の対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第1の差分ピクチャ)を取得することにより動き補償が実施される。エネルギーが最も低い第1の差分ピクチャに対応するLMVが指す位置が、動きサーチの次のステップにおけるサーチ始点LMV_startとして用いられる。第1の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和(sum of squared difference,SSD)、差分ピクチャ内の全ての画素の絶対差分和(sum of absolute difference,SAD)、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和(sum of absolute Hadamard transformed differences,SATD)。隣接するブロックの再構築済画素は、隣接するブロックの全ての再構築済画素であってよく、右下の四辺形を成す画素と、右側の複数の列内の画素と、下側の複数の行の画素とを組み合わせることにより形成されるL字型エリア内の再構築済画素であってよく、またはその他であってよい。このことは本明細書において限定されない。
それから、始点に基づき動きサーチが実施され、導出されたLMVが決定される。隣接するブロックの再構築済画素をテンプレートとして用いることにより、およびLMV_startを始点として用いることにより、LMV_startに対応するロングターム基準フレーム内で、サーチ範囲[−X1,X1]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第2の差分ピクチャ)の最も低いエネルギーをもたらす。この最適なMVが、導出されたLMVとして決定される。サーチ精度は1/4画素精度または1/2画素精度であってよく、サーチ方法は、フルサーチ、ダイアモンドクイックサーチ(diamond search)、またはヘキサゴンクイックサーチ(hexagon search)であってよい。X1は、1以上の正の整数である。例えば、X1は1、2、3または4に等しい。第2の差分ピクチャのエネルギーは、以下の3つの方式のうち1つで計算されてよい:SAD、SSD、およびSATD。第2の差分ピクチャのエネルギーを計算するための方法は、第1の差分ピクチャのエネルギーを計算するためのものと同じであっても異なってもよい。例として、第1の差分ピクチャのエネルギーおよび第2の差分ピクチャのエネルギーの両方に関してSADが用いられる。代替的に、第1の差分ピクチャのエネルギーに関してSADが用いられ、第2の差分ピクチャのエネルギーに関してSATDが用いられる。
(B)隣接するブロックに関してフレーム間予測が用いられ、LMVのみが動き補償に関して用いられる(言い換えれば、隣接するブロックの第1の動きベクトルがLMVのみを含む)場合、ショートターム基準フレーム内で動きサーチが実施されてSMVを第2の動きベクトルとして導出し、隣接するブロックのLMVが第1の動きベクトルとして用いられる。以下の2つの方法のうちいずれかが実装のために用いられてよい。方法1は次の通りである:各ショートターム基準フレーム内の動きサーチの始点がまず決定される。基準フレームリスト内のM個のショートフレーム基準フレームのうち各基準フレームFsに関して、隣接するブロックの空間的に隣接する予測ブロック(オプションで、同位置ブロックがさらに含まれてよい)内の全てのSMVが、基準フレームFsを指すSMVとなるようスケーリングされる(SMVは、これらのブロックの第1の動きベクトルおよび第2の動きベクトルからのものである)。特に、利用可能なSMVがない場合、第2の動きベクトルは利用不可能である。隣接するブロックの再構築済画素をテンプレートとして用いることにより、および各SMVを動きベクトルとして用いることにより基準フレームFs内で動き補償が実施され、エネルギーが最も低い第1の差分ピクチャに対応するSMVが、ショートターム基準フレームFs内の動きサーチの始点SMV_startとして用いられる。先述の処理は、全てのショートターム基準フレーム内で実施されて、各ショートターム基準フレーム内の動きサーチの始点を決定する。ショートターム基準フレーム内の各基準フレームに関して、ショートターム基準フレーム内の最適なMVが決定される。M個の基準フレームのうち各基準フレームFsに関して、隣接するブロックの再構築済画素をテンプレートとして用いることにより、および基準フレームFsに対応するSMV_startを動きサーチの始点として用いることによりサーチ範囲[−X2,X2]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の第2の差分ピクチャの最も低いエネルギーをもたらす。X2は、1以上の正の整数である。例えば、X2は1、2、3または4に等しく、または別の値であってよい。このことは本明細書において限定されない。先述の処理は、全てのショートターム基準フレーム内で実施されて、各ショートターム基準フレーム内の最適なMVを決定する。最終的に、導出されたSMVが決定される。M個のショートターム基準フレーム内の最適なMVに対応する第2の差分エネルギーが比較され、最も低い第2の差分エネルギーに対応する最適なMVが最終的に導出されたSMVとして決定される。方法2は次の通りである:動きサーチの始点がまず決定される:隣接するブロックの空間的に隣接する予測ブロック内の全てのSMVが見つけられ、隣接するブロックの再構築済画素をテンプレートとして用いることにより、および各SMVを動きベクトルとして用いることにより、各SMVに対応する基準フレーム内で動き補償が実施され、エネルギーが最も低い第1の差分ピクチャに対応するSMVが、動きサーチの始点SMV_startとして用いられる。それから、導出されたSMVが決定される。隣接するブロックの再構築済画素をテンプレートとして用いることにより、およびSMV_startを動きサーチの始点として用いることにより、SMV_startに対応するショートターム基準フレーム内で、サーチ範囲[−X2,X2]のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の第2の差分ピクチャの最も低いエネルギーをもたらす。
(C)隣接するブロックに関してフレーム間予測が用いられ、動き補償に関してSMVおよびLMVが用いられた場合(言い換えれば、隣接するブロックの第1の動きベクトルがSMVおよびLMVを含む場合)、隣接するブロックに関して第2の動きベクトルが導出される必要はなく、隣接するブロックの第2の動きベクトルは利用不可能である。
(D)隣接するブロックに関してフレーム内予測が用いられる場合、(A)に示される方法に従ってLMVが導出され、(B)に示される方法に従ってSMVが導出される。SMVとLMVとに対応する第2の差分ピクチャのエネルギーが比較され、エネルギーがより低い第2の差分ピクチャに対応するMVが第1の動きベクトルとして用いられ、エネルギーがより高い第2の差分ピクチャに対応するMVが第2の動きベクトルとして用いられる。オプションで、代替的に、SMVが常に第1の動きベクトルとして用いられ、LMVが常に第2の動きベクトルとして用いられる。
オプションで、実施例において、フレームがコーディング/デコードされるとき、フレーム内の全てのブロックの第1の動きベクトルが4×4ブロックの形態で動きベクトルフィールドに格納される。これはHEVCの動きベクトル格納方式と同様である。第2の動きベクトルは、4×4ブロックの形態で別の動きベクトルフィールドに格納される。よって、対応する動きベクトルフィールド内で空間的に隣接する予測ブロックの2つのタイプのMVが取得されてよい。フレームのコーディング/デコードが完了した後、第1の動きベクトルフィールドのみをメモリに保存する必要があり、第2の動きベクトルフィールドは保存および格納がされなくてよい。
オプションで、計算の複雑さを減らすべく、再構築済ブロックに関してフレーム間コーディングモードが用いられ、再構築済ブロックの第1の動きベクトルが1つのタイプのMVのみを含むとき、再構築済ブロックに関して、再構築済ブロックの空間的に隣接する予測ブロックの全ての第1の動きベクトルが再構築済ブロックの第1の動きベクトルと同じタイプを有する場合、再構築済ブロックに対して動きサーチを実施して再構築済ブロックの第2の動きベクトルを導出する先述の処理は実施されず、ブロックの第2の動きベクトルは利用不可能である。
オプションで、計算の複雑さを減らすべく、コーディングツリーユニット(coding tree unit,CTU)インデックスStart_CTU_indexがスライスヘッダに追加されてよく、再構築済ブロックに対して動きサーチを実施して再構築済ブロックの第2の動きベクトルを導出する(および、再構築済ブロックがフレーム内コードブロックである場合に第1の動きベクトルを導出する)先述の処理は、CTU番号がピクチャ内のStart_CTU_index未満であるCTU内のブロックに対して実施されない。これらのブロックの第2の動きベクトルは利用不可能であり、これらのブロック内のフレーム内コードブロックの第1の動きベクトルも利用不可能である。
図4を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックの少なくとも1つの空間的に隣接する予測ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の別の実施形態は以下のステップを含む。
401.現在のブロックの動きベクトルに対応する基準フレームを取得。
402.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
403.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
本実施形態のステップ401からステップ403は、図3に示される実施形態のステップ301からステップ303と同様である。詳細はここで改めて説明しない。
404.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在する場合、デバイスは、左側の空間的に隣接する予測ブロックから、少なくとも1つの第1の動きベクトル、またはその第1の動きベクトルのスケーリング値を候補MVPとして選択し、候補MVPをMVPリストへ追加する。第1の動きベクトルのうちその少なくとも1つの第1の動きベクトルが存在しない場合、言い換えれば、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、デバイスは、現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと同じ動きベクトルタイプを有するかを決定する。現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと同じ動きベクトルタイプを有する場合、デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定し、現在のブロックの、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つが利用可能であるとき、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つ、または左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つのスケーリング値を候補動きベクトル予測子として用いる。
例えば、デバイスが、現在のブロックの左側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、2ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウント(picture order count,POC)を有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして決定する。スクリーニングの第2のラウンドは次の通りである:デバイスが、左側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順1で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、空間的に隣接する予測ブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリング値は、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。
デバイスが、現在のブロックの上側の空間的に隣接する予測ブロックの第1の動きベクトルのうち、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する少なくとも1つの第1の動きベクトルが存在するかを決定する処理は、2ラウンドのスクリーニングを含む。スクリーニングの第1のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件1「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じピクチャ順カウントを有する」を満たすかを決定し、まず、条件1を満たす第1の動きベクトルを候補MVPとして決定する。スクリーニングの第2のラウンドは次の通りである:デバイスが、上側の空間的に隣接する予測ブロックの第1の動きベクトルに、予め設定された順3で連続的にアクセスし、第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。2つの基準フレームのタイプがショートターム基準フレームであり、同じフレームではないとき、隣接するブロックの第1の動きベクトルが、候補MVPとして用いられる前にスケーリングされる必要がある。動きベクトルのスケーリング値は、2つのPOC群の差分間の割合に基づき取得される。例えば、HEVCにおける動きベクトルスケーリング処理が実施される。
デバイスは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定し、現在のブロックの、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能である場合、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つ、または左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルのうち少なくとも1つのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックの左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルが利用可能であるかを決定する前に、デバイスはさらに、MVPリストが空である(言い換えれば、現在のブロックの空間的に隣接する予測ブロックの第1の動きベクトルがどれも現在のブロックの動きベクトルと同じ動きベクトルタイプを有さない)かを決定する必要があるということである。MVPリストが空でないとき、MVPリストには少なくとも1つの候補がある。MVPリストが空であるとき、デバイスは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内の第2の動きベクトルに予め設定された順5で連続的にアクセスし、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロック内のK個の利用可能な第2の動きベクトル、またはそれらK個の第2の動きベクトルのスケーリング値をMVPとして用いる。Kは、MVPリストの長さN(すなわち、予め定められた値)以下の正の整数である。例えば、K=1またはK=2である。
理解されてよいのは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、現在のブロックの左側および上側に位置するブロックを含むということである。好ましくは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、左隣のブロックA 1 、真上のブロックB 1 、左下のブロックA 0 、右上のブロックB 0 、および左上のブロックB2を含み、アクセス順5は、左隣のブロックA1から真上のブロックB1、左下のブロックA0、右上のブロックB0、そして左上のブロックB2という順であってよく、または左下のブロックA0から左隣のブロックA1、右上のブロックB0、真上のブロックB1、そして左上のブロックB2という順であってよい。代替的に、好ましくは、左側の空間的に隣接する予測ブロックおよび上側の空間的に隣接する予測ブロックは、左隣のブロックA 1 、真上のブロックB 1 、および左上のブロックB 2 を含み、アクセス順5は、左隣のブロックA1から真上のブロックB1、そして左上のブロックB2という順であってよい。オプションで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
405.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
406.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの候補動きベクトル予測子が決定され、つまり、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルで現在のブロックの動きベクトル予測子リストが補われて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
図5を参照すると、現在のブロックの空間的に隣接する画素ブロックが現在のブロックに空間的に隣接する、予め設定された範囲内の少なくとも1つの画素ブロックを含むとき、本願の実施形態に係る動きベクトル予測方法の別の実施形態は以下のステップを含む。
501.現在のブロックの動きベクトルに対応する基準フレームを取得。
502.基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定。
503.現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得。
本実施形態のステップ501からステップ503は、図4に示される実施形態のステップ401からステップ403と同様である。詳細はここで改めて説明しない。
504.現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、現在のブロックの空間的に隣接する画素ブロックの第1の基準フレーム内で、現在のブロックの空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定し、第1の基準ブロックと現在のブロックの空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用い、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
実現可能な実施例において、現在のブロックの全ての左側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックの全ての上側の空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、画素ブロックの第1の基準フレーム内で、画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定し、第1の基準ブロックと画素ブロックとの間の動きベクトルを第2の動きベクトルとして用い、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いる。
留意すべきことは、現在のブロックに空間的に隣接する画素ブロックに基づき第2の動きベクトルを生成する前に、MVPリストが空(言い換えれば、現在のブロックの空間的に隣接する予測ブロックの第1の動きベクトルがどれも現在のブロックの動きベクトルと同じ動きベクトルタイプを有さない)かをさらに決定する必要がある。MVPリストが空でないとき、MVPリストには少なくとも1つの候補MVPがある。MVPリストが空であるとき、デバイスは現在のブロックに空間的に隣接する画素ブロックをテンプレートとして用い、テンプレートマッチング方式で、現在のブロックの動きベクトルが指す基準フレーム内の最適なマッチング位置を見つける。最適なマッチング位置と現在のブロックのテンプレートエリアとの間の変位ベクトルが第2の動きベクトルとして用いられ、第2の動きベクトルが候補MVPとして用いられる。
例えば、第2の動きベクトルを決定する処理は2つのステップに分けられてよい。ステップ1:「候補動きベクトルセット」内のMVが比較されて動きサーチの始点を決定する。候補動きベクトルセットは以下の2つのタイプのMVのうち少なくとも1つを含む:ゼロベクトル(0,0)およびグローバル動きベクトル。現在のブロックに空間的に隣接する、予め設定された範囲内の画素ブロックをテンプレートとして用いて、および候補動きベクトルセット内の各MVを動きベクトルとして用いて現在のフレームのテンプレートエリアと基準フレーム内の対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第1の差分ピクチャ)を取得することにより、現在のブロックのMVの基準フレーム内で動き補償が実施される。デバイスは、エネルギーが最も低い第1の差分ピクチャに対応するMVが指す位置を、動きサーチの次のステップにおけるサーチ始点MV_startとして用いる。第1の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和、差分ピクチャ内の全ての画素の絶対差分和、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和。現在のブロックの隣接する再構築済画素は、現在のブロックの上側の再構築済画素、現在のブロックの左側の再構築済画素、現在のブロック左側の再構築済画素および上側の再構築済画素を組み合わせることにより形成されるL字型エリア内の画素などであってよい。このことは本明細書において限定されない。
1または複数のグローバル動きベクトルがあってよい。グローバル動きベクトルは、ビットストリーム内で特定され(例えば、現在のフレームのスライスヘッダ内で特定され)、現在のフレームからロングターム基準フレームを指すMVを示す。好ましくは、1つのロングターム基準フレームが少なくとも1つのグローバル動きベクトルを有してよく、ショートターム基準フレームはグローバル動きベクトルを有さない。現在のブロックのMVがショートタームMVである場合、候補動きベクトルセットはゼロベクトルのみを含む。現在のブロックのMVがロングタームMVである場合、現在のブロックの候補動きベクトルセットはゼロベクトルを含み、少なくとも1つのグローバル動きベクトルをさらに含んでよい。グローバル動きベクトルは、現在のフレーム内の各エリア内にあり、ロングターム基準フレームと相対的な動きベクトルを分析することによりエンコーダにより導出されてよい。例えば、全てのエリア内の動きベクトルのうち出現頻度が最も高い1つまたは2つの動きベクトルがグローバル動きベクトルとして選択される。デコードデバイスは、ビットストリーム(例えば、スライスヘッダ)をパースすることにより現在のフレームのロングターム基準フレームのグローバル動きベクトルを取得する。オプションで、ロングターム基準フレームのグローバル動きベクトルの数情報がビットストリームで送信されてよい。グローバル動きベクトル数が0であることを数情報が示すとき、候補動きベクトルセットはグローバル動きベクトルを含まずゼロベクトルのみを含む。
ステップ2:始点に基づき動きサーチを実施して第2の動きベクトルを決定する。現在のブロックに空間的に隣接する、予め設定された範囲内の画素ブロックをテンプレートとして用いることにより、およびMV_startを始点として用いることにより現在のブロックのMVの基準フレーム内のサーチウィンドウで最適なMVがサーチされる。この最適なMVは、現在のフレーム内のテンプレートエリアと、MVが指すサーチ位置に対応するテンプレートエリアとの間の差分ピクチャ(すなわち、第2の差分ピクチャ)の最も低いエネルギーをもたらす。この最適なMVが、第2の動きベクトルとして決定される。
サーチ精度は1/4画素精度または1/2画素精度であってよく、サーチ方法は、フルサーチ、ダイアモンドクイックサーチ(diamond search)、またはヘキサゴンクイックサーチ(hexagon search)であってよい。サーチウィンドウサイズは8×8または16×16に固定されてよく、またはMV_startのタイプに基づき適応的に設定されてよい。例えば、MV_startが(0,0)であるとき、サーチウィンドウサイズは16×16である。MV_startが(0,0)でないとき、サーチウィンドウサイズは8×8である。第2の差分ピクチャのエネルギーは、以下の3つの方式のうちいずれか1つによって計算されてよい:差分ピクチャ内の全ての画素の差分二乗和、差分ピクチャ内の全ての画素の絶対差分和、アダマール変換が差分ピクチャに対して実施された後に取得される絶対アダマール変換差分和。第2の差分ピクチャのエネルギーを計算するための方法は、第1の差分ピクチャのエネルギーを計算するためのものと必ずしも同じではない。例えば、第1の差分ピクチャのエネルギーおよび第2の差分ピクチャのエネルギーの両方に関して、差分ピクチャ内の全ての画素の絶対差分和が用いられる。代替的に、第1の差分ピクチャのエネルギーに関して差分ピクチャ内の全ての画素の絶対差分和が用いられ、第2の差分ピクチャのエネルギに関して、差分ピクチャ内の全ての画素の差分二乗和が用いられる。このことは本明細書において限定されない。
理解されてよいのは、このケースで、MVPリストが同じ候補MVPを含む場合、繰り返される候補MVPはMVPリストから取り除かれ、候補MVP数が更新されるということである。
505.候補動きベクトル予測子の数が予め定められた値より少なく、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルが利用可能であり、現在のブロックの同位置ブロックの少なくとも1つの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
オプションで、候補動きベクトル予測子の数が予め定められた値より少なく、デバイスが、現在のブロックの同位置ブロックの第1の動きベクトルが利用可能であると決定し、現在のブロックの同位置ブロックの第1の動きベクトルの動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであると決定するとき、デバイスは、同位置ブロックの少なくとも1つの第1の動きベクトル、または同位置ブロックの少なくとも1つの第1の動きベクトルのスケーリング値を候補動きベクトル予測子として用いる。
留意すべきことは、空間的に隣接する予測ブロックから選択される候補MVPの数がNより小さい(言い換えれば、MVPリストが完全に埋まっておらず、MVPリストの長さがNである)とき、MVPは、同位置ブロックの第1の動きベクトルから選択され、MVPリストに追加されるということである。例えば、Nの値に関しては、N=2またはN=3であってよい。
例えば、デバイスは、同位置ブロック内の右下のブロックC0および中央のブロックC1の第1の動きベクトルに連続的にアクセスし、同位置ブロックから取得された第1の動きベクトルが条件2「第1の動きベクトルが利用可能であり、第1の動きベクトルの基準フレームが、現在のブロックの動きベクトルの基準フレームと同じタイプを有する」を満たすかを決定する。条件2を満たす第1の動きベクトルに関して、第1の動きベクトル、または第1の動きベクトルのスケーリング値が候補MVPとして用いられる。
506.候補動きベクトル予測子の数が予め定められた値より少ないとき、候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを候補動きベクトル予測子として用いる。
候補動きベクトル予測子の数が予め定められた値より依然として少ない場合、デバイスは、現在のブロックの候補動きベクトル予測子の数が予め定められた値に達するよう、少なくとも1つのゼロ動きベクトルを動きベクトル予測子として用いる。本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、第2の動きベクトルは、現在のブロックに隣接する、予め設定された範囲内の画素ブロックに基づき導出され、第2の動きベクトルは、現在のブロックの候補動きベクトル予測子として決定される。第2の動きベクトルは、現在のブロックの動きベクトルと同じタイプを有する。よって、動きベクトル予測子リストが充実化され、動きベクトル予測効率が向上する。
理解されるべきことは、先述の動きベクトル予測方法のそれぞれが現在のブロックに関してコーディング方法で用いられてよく、または現在のブロックに関してデコード方法で用いられてよいということである。
ここまでは、本願の実施形態における動きベクトル予測方法が説明され、以下には、本願の実施形態における動きベクトル予測デバイスが説明される。図6を参照すると、本願の実施形態に係る動きベクトル予測デバイスの実施形態は、
動きベクトル予測デバイスであって、
現在のブロックの動きベクトルに対応する基準フレームを取得するよう構成された第1の取得ユニット601と、
基準フレームの基準フレームタイプに基づき現在のブロックの動きベクトルの動きベクトルタイプを決定するよう構成された決定ユニット602であって、動きベクトルタイプは、ショートターム動きベクトルまたはロングターム動きベクトルを含み、ショートターム動きベクトルはショートターム基準フレームから取得され、ロングターム動きベクトルはロングターム基準フレームから取得される、決定ユニット602と、
現在のブロックの少なくとも1つの空間的に隣接する予測ブロックがフレーム間予測ブロックであるとき、少なくとも1つの空間的に隣接する予測ブロックの第1の動きベクトルの動きベクトルタイプを取得するよう構成された第2の取得ユニット603であって、第1の動きベクトルは、空間的に隣接する予測ブロックに対してフレーム間予測を実施するのに用いられる、第2の取得ユニット603と、
第1の動きベクトルの取得した動きベクトルタイプが、現在のブロックの動きベクトルの全ての動きベクトルタイプと異なるとき、現在のブロックの空間的に隣接する画素ブロックのデコード情報に基づき空間的に隣接する画素ブロックの第2の動きベクトルを決定し、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第1のプロセシングユニット604と
を含む。
オプションで、デバイスは、少なくとも1つの第1の動きベクトルの取得した動きベクトルタイプが現在のブロックの動きベクトルの動きベクトルタイプと同じであるとき、少なくとも1つの第1の動きベクトルを現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングユニット605をさらに含んでよい。
オプションで、デバイスは、現在のブロックの全ての空間的に隣接する予測ブロックがフレーム内予測ブロックであるとき、空間的に隣接する予測ブロックのうち少なくとも1つの仮想基準フレーム内で、空間的に隣接する予測ブロックとの画素差分が最も小さい仮想基準ブロックを決定することと、仮想基準ブロックと空間的に隣接する予測ブロックとの間の動きベクトルを現在のブロックの動きベクトル予測子として用いることであって、仮想基準フレームの基準フレームタイプが現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じであり、仮想基準フレームは再構築済フレームである、こととを実行するよう構成された第3のプロセシングユニット606をさらに含んでよい。
オプションで、第1のプロセシングユニット604は、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは、現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングモジュール6041をさらに含んでよい。
オプションで、第1のプロセシングモジュール6041は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有するとき、空間的に隣接する画素ブロックの第1の基準フレーム内で、空間的に隣接する画素ブロックとの画素差分が最も小さい第1の基準ブロックを決定することと、第1の基準ブロックと空間的に隣接する画素ブロックとの間の動きベクトルを第2の動きベクトルとして用いることであって、第1の基準フレームの基準フレームタイプは現在のブロックの動きベクトルに対応する基準フレームの基準フレームタイプと同じである、ことと、第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いることとを実行するよう構成された第1のプロセシングサブモジュール60411をさらに含んでよい。
本願の本実施形態では、現在のブロックの動きベクトルの動きベクトルタイプが隣接するブロックの第1の動きベクトルの動きベクトルタイプと異なるとき、現在のブロックの動きベクトルと同じ動きベクトルタイプを有する第2の動きベクトルが現在のブロックの候補動きベクトル予測子として用いられて、動きベクトル予測子リストを充実化させ、動きベクトル予測効率を向上させる。
図7を参照すると、本願の実施形態に係る動きベクトル予測デバイスの別の実施形態は、図6に対応する実施形態における第1の取得ユニット601と、決定ユニット602と、第2の取得ユニット603と、第1のプロセシングユニット604とを含む。
オプションで、第1のプロセシングユニット604は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュール6042をさらに含んでよい。
オプションで、第2のプロセシングモジュール6042は、
現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングサブモジュール60421と、
現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第3のプロセシングサブモジュール60422と
をさらに含んでよい。
図8を参照すると、本願の実施形態に係る動きベクトル予測デバイスの別の実施形態は、図6に対応する実施形態における第1の取得ユニット601と、決定ユニット602と、第2の取得ユニット603と、第1のプロセシングユニット604とを含む。
オプションで、第1のプロセシングユニット604は、少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトル、または少なくとも1つの空間的に隣接する予測ブロックの第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第2のプロセシングモジュール6042をさらに含んでよい。
オプションで、第2のプロセシングモジュール6042は、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有し、現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの第1の動きベクトルが現在のブロックの動きベクトルと異なる動きベクトルタイプを有する場合、現在のブロックと相対的に左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、左側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用い、または現在のブロックと相対的に上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトルが利用可能であるとき、上側の予め設定された位置にある空間的に隣接する予測ブロックの少なくとも1つの第2の動きベクトル、または第2の動きベクトルのスケーリング値を現在のブロックの候補動きベクトル予測子として用いるよう構成された第4のプロセシングサブモジュール60423をさらに含んでよい。
理解されるべきことは、先述の動きベクトル予測デバイスは、現在のブロックをコーディングするためにエンコーダで用いられてよく、または現在のブロックをデコードするためにデコーダで用いられてよいということである。
ここまでは、本願の実施形態における動きベクトル予測デバイスが詳細に別々に、図6から図8のモジュール機能エンティティの観点から説明されてきた。以下では、本願の実施形態における動きベクトル予測デバイスを詳細にハードウェア処理の観点から説明する。
図9は、本願の実施形態に係る動きベクトル予測デバイスの概略構造図である。図9は、統合されたユニットが用いられるときの、先述の実施形態におけるデバイスの考えられる構造の概略図を示す。デバイス900は、プロセシングユニット902と通信ユニット903とを含む。プロセシングユニット902は、デバイス900の動作を制御し管理するよう構成されている。例えば、プロセシングユニット902はデバイス900が、図3におけるステップ301からステップ307、および/または本明細書において説明されている技術の別の処理を実施するのをサポートするよう構成されている。通信ユニット903は、デバイス900が別のデバイスと通信するのをサポートするよう構成されている。デバイス900は、デバイスのプログラムコードおよびデータを格納するよう構成されたストレージユニット901をさらに含んでよい。
プロセシングユニット902はプロセッサまたはコントローラであってよく、例えば、中央処理装置(central processing unit,CPU)、汎用プロセッサ、デジタル信号プロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application−specific integrated circuit,ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)若しくは別のプログラマブルロジックデバイス、トランジスタロジックデバイス、ハードウェアコンポーネント、またはこれらの任意の組み合わせであってよい。プロセシングユニット902は、本願に開示されている内容を参照して説明される様々な例示的なロジックブロック、モジュール、および回路を実装または実行してよい。代替的に、プロセッサは、コンピューティング機能を実装するプロセッサの組み合わせ、例えば、1または複数のマイクロプロセッサの組み合わせ、DSPとマイクロプロセッサとの組み合わせなどであってよい。通信ユニット903は、通信インタフェース、トランシーバ、トランシーバ回路などであってよい。通信インタフェースは総称的な用語であり、トランシーバインタフェースなどの1または複数のインタフェースを含んでよい。ストレージユニット901はメモリであってよい。
プロセシングユニット902がプロセッサであり、通信ユニット903が通信インタフェースであり、ストレージユニット901がメモリであるとき、本願の本実施形態におけるデバイスは図10に示されるデバイスであってよい。
図10を参照すると、デバイス1010は、プロセッサ1012と、通信インタフェース1013と、メモリ1011とを含む。オプションで、デバイス1010はバス1014をさらに含んでよい。通信インタフェース1013、プロセッサ1012、およびメモリ1011は、バス1014を用いることにより互いに接続されてよい。バス1014は、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect,PCI)バス、エクステンデッドインダストリスタンダードアーキテクチャ(extended industry standard architecture,EISA)バスなどであってよい。バス1014は、アドレスバス、データバス、制御バスなどに分類されてよい。表示を容易にするために、1つの太い線のみが図10内の表示に用いられている。しかしこのことは、1つのバスのみ、または1つのタイプのバスのみがあることを意味しない。
実現可能な実施例において、図11および図12は、本願の実施形態に係るコーデック装置50を示す。コーデック装置50は、無線通信システムにおけるモバイル端末またはユーザ機器であってよい。理解されるべきことは、本願の本実施形態が、ビデオピクチャをコーディングおよび/またはデコードする必要があってよい任意の電子デバイスまたは装置において実装されてよいということである。
コーデック装置50は、コーデック装置50を内蔵し保護するのに用いられる筐体30、(液晶ディスプレイであってよい)ディスプレイ32、およびキーパッド34を含んでよい。コーデック装置50は、マイク36または任意の適切な音声入力部を含んでよく、音声入力部はデジタルまたはアナログ信号入力部であってよい。コーデック装置50は、以下の音声出力デバイスをさらに含んでよく、本願の本実施形態では、音声出力デバイスは、イヤホン38、拡声器、アナログ音声出力接続部、またはデジタル音声出力接続部のいずれか1つであってよい。コーデック装置50はバッテリ40も含んでよい。本願の別の実施形態において、コーデック装置50は、太陽電池、燃料電池、またはクロックメカニズムジェネレータなどの任意の適切なモバイルエネルギーデバイスにより電力供給されてよい。コーデック装置50は、別のデバイスとの近距離見通し内通信のために用いられる赤外線ポート42をさらに含んでよい。別の実施形態において、コーデック装置50は、Bluetooth(登録商標)無線接続またはUSB有線接続などの任意の適切な近距離通信ソリューションをさらに含んでよい。
コーデック装置50は、コントローラ56、またはコーデック装置50を制御するよう構成されたプロセッサを含んでよい。コントローラ56は、メモリ58に接続されてよい。本願の本実施形態では、メモリは、ピクチャの形態のデータ、および音声の形態のデータを格納してよく、および/またはコントローラ56により実装されることになる命令を格納してよい。コントローラ56はさらに、音声および/またはビデオデータのコーディングおよびデコードを実装するために、またはコントローラ56により実装される補助を受けたコーディングまたはデコードのために適したコーデック54に接続されてよい。
コーデック装置50は、カードリーダ48およびスマートカード46をさらに含んでよい。カードリーダ48およびスマートカード46は、ユーザ情報を提供するよう構成され、ネットワーク内でユーザの認証および権限付与を実施するのに用いられる認証情報を提供するのに適しており、例えば、ユニバーサル集積回路カード(universal integrated circuit card,UICC)およびUICCリーダである。
コーデック装置50は、無線インタフェース回路52をさらに含んでよい。無線インタフェース回路はコントローラに接続され、セルラー通信ネットワーク、無線通信システム、または無線ローカルエリアネットワークとの通信のために用いられる無線通信信号を例えば生成するのに適している。コーデック装置50はアンテナ44をさらに含んでよい。アンテナは無線インタフェース回路52に接続され、別の装置(または複数の装置)へ、無線インタフェース回路52で生成された無線周波数信号を送信し、別の装置(または複数の装置)から無線周波数信号を受信するよう構成されている。
本願の一部の実施形態において、コーデック装置50は、単一のフレームそれぞれを記録または検出出来るカメラを含み、コーデック54またはコントローラはこれら単一のフレームを受信し処理する。本願の一部の実施形態において、コーデック装置50は、送信および/または格納の前に別のデバイスから処理対象のビデオピクチャデータを受信してよい。本願の一部の実施形態において、コーデック装置50は、無線または有線接続を通じて、コーディング/デコードされることになるピクチャを受信してよい。
先述の実施形態の全てまたは一部は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組み合わせを用いることにより実装されてよい。実施形態を実装するのにソフトウェアが用いられるとき、実施形態は、完全に、または部分的にコンピュータプログラムプロダクトの形態で実装されてよい。
コンピュータプログラムプロダクトは1または複数のコンピュータ命令を含む。コンピュータプログラム命令がロードされコンピュータ上で実行されたとき、本願の実施形態に係る手順または機能が全てまたは部分的に生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブルデバイスであってよい。コンピュータ命令は、コンピュータ可読記憶媒体に格納されてよく、またはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体へ送信されてよい。例えば、コンピュータ命令はウェブサイト、コンピュータ、サーバ、またはデータセンタから別のウェブサイト、コンピュータ、サーバ、またはデータセンタへ有線(例えば、同軸ケーブル、光ファイバ、またはデジタル加入者線(digital subscriber line, DSL)または無線(例えば、赤外線、電波、またはマイクロ波)方式で送信されてよい。コンピュータ可読記憶媒体は、コンピュータがアクセス可能な任意の使用可能な媒体であってよく、または1または複数の使用可能な媒体を組み込んだサーバまたはデータセンタなどのデータ記憶デバイスであってよい。使用可能な媒体は、磁気媒体(例えば、フロッピディスク、ハードディスク、または磁気テープ)、光媒体(例えば、DVD)、半導体媒体(例えば、ソリッドステートドライブ(solid− state disk,SSD)などであってよい。
当業者が明らかに理解してよいのは、説明を簡便にするために、先述のシステム、デバイス、およびユニットの詳細な作動処理については、先述の方法の実施形態における対応する処理を参照されたいということである。詳細はここで説明しない。
本願で提供される実施形態において理解されるべきことは、開示されているシステム、デバイス、および方法が他の方式で実装されてよいということである。例えば、説明されているデバイスの実施形態は単に例である。例えば、ユニットの区分は単にロジック的な機能の区分である。実際の実装においては別の区分方式があってよい。例えば、複数のユニットまたはコンポーネントが組み合わされてよく、若しくは別のシステムに組み込まれてよく、または一部の特徴は無視されてよく、若しくは実施されなくてよい。加えて、表示されている、または論じられている相互の連結または直接的な連結若しくは通信接続は、一部のインタフェースを用いることによって実装されてよい。デバイスまたはユニット間の間接的な連結または通信接続は、電子的形態、機械的形態、または他の形態で実装されてよい。
別々の部分として説明されているユニットは、物理的に別々であってもなくてもよく、ユニットとして表示されている部分は、物理的なユニットであってもなくてもよく、1つの位置にあってよく、または複数のネットワークユニット上で分散させられてよい。ユニットのうち一部または全ては、実施形態における解決法の目的を達成するための実際の要求事項に基づき選択されてよい。
加えて、本願の実施形態における機能ユニットは、1つのプロセシングユニットに統合されてよく、またはユニットのうちそれぞれは、物理的に単独で存在してよく、または2つまたはそれ以上のユニットが1つのユニットに統合されてよい。統合されたユニットはハードウェアの形態で実装されてよく、またはソフトウェア機能ユニットの形態で実装されてよい。
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立したプロダクトとして販売される、または用いられるとき、統合されたユニットはコンピュータ可読記憶媒体に格納されてよい。そのような理解に基づき、本願の技術的解決法は本質的に、または従来技術に貢献する部分、または技術的解決法の全てまたは一部は、ソフトウェアプロダクトの形態で実装されてよい。コンピュータソフトウェアプロダクトは記憶媒体に格納され、本願の実施形態で説明されている方法のステップの全てまたは一部を実施するよう(パーソナルコンピュータ、サーバ、またはネットワークデバイスであってよい)コンピュータデバイスに命令するためのいくつかの命令を含む。記憶媒体は、プログラムコードを格納出来る任意の媒体、例えば、USBフラッシュドライブ、リムーバブルハードディスク、読み取り専用メモリ(read−only memory,ROM)、ランダムアクセスメモリ(random access memory,RAM)、磁気ディスク、またはコンパクトディスクを含む。
結論として、先述の実施形態は単に、本願を限定するのではなく、本願の技術的解決法を説明することが意図されている。先述の実施形態を参照して本願が詳細に説明されているが、当業者が理解すべきことは、彼らが依然として、本願の実施形態の技術的解決法の思想および態様から逸脱することなく、先述の実施形態に記録されている技術的解決法に対して変更を加えてよく、またはそれらの一部の技術的特徴に対して同等の置き換えを行ってよいということである。