(57)【要約】      （修正有）【課題】ビデオエンコーダ又はビデオデコーダにおいて、動き推定が実行される場合の探索範囲を決定するのに使用可能なシステム、方法及びコンピュータープログラム物品を提供する。【解決手段】動き推定において、現在のブロックについて動きベクトルを決定するには、参照フレームに存在する、又は現在のブロックに空間的に若しくは時間的に隣接するすでに復号化されたブロックに存在する探索範囲内において探索を行う。この探索では、参照フレームにおける対応ブロック間で、差分絶対値和のような測定基準が、最小となる動きベクトルを探す。動きベクトル情報は、デコーダに送信され、動き補償に利用される。探索すべき範囲が限定されるように探索範囲が設定されれば、探索をより効率的に行うことができる。探索範囲は、ブロックレベル又はピクチャレベルにて決定される。【選択図】図１
2011091794.tif 000002
【特許請求の範囲】
【請求項１】
１つの現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定する段階と、
前記複数の動きベクトルの平均値（ｍｖ）を計算する段階と、
式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算する段階とを備え、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックについての動き推定の実行における動き探索の範囲を設定し、前記複数の動きベクトルのセットの決定、前記ｍｖの計算及び前記ＳＲの計算は、プロセッサによって行われる方法。
【請求項２】
α＝１．１及びβ＝（４，４）である請求項１に記載の方法。
【請求項３】
前記複数の動きベクトルは、参照フレームの対応するブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項１に記載の方法。
【請求項４】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項３に記載の方法。
【請求項５】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項３に記載の方法。
【請求項６】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから、前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項３に記載の方法。
【請求項７】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定の実行に使用される請求項１に記載の方法。
【請求項８】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項７に記載の方法。
【請求項９】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項７に記載の方法。
【請求項１０】
プロセッサと
前記プロセッサと通信可能であり、前記プロセッサに対する複数の処理命令を記憶するメモリと
を備えるシステムであって、
前記複数の処理命令は、前記プロセッサに、
現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定させ、
前記複数の動きベクトルの平均値（ｍｖ）を計算させ、
式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算させ、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックについての動き推定の実行における動き探索の範囲設定に使用されるシステム。
【請求項１１】
前記プロセッサ及び前記メモリは、ビデオエンコーダに組み込まれている請求項１０に記載のシステム。
【請求項１２】
前記プロセッサ及び前記メモリは、ビデオデコーダに組み込まれている請求項１０に記載のシステム。
【請求項１３】
α＝１．１及びβ＝（４，４）である請求項１０に記載のシステム。
【請求項１４】
前記複数の動きベクトルは、参照フレームのブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項１０に記載のシステム。
【請求項１５】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項１４に記載のシステム。
【請求項１６】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項１４に記載のシステム。
【請求項１７】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項１４に記載のシステム。
【請求項１８】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定の実行に使用される請求項１０に記載のシステム。
【請求項１９】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項１８に記載のシステム。
【請求項２０】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項１８に記載のシステム。
【請求項２１】
コンピュータプログラム論理を記憶するコンピュータ可読媒体を含むコンピュータプログラム物品であって、
前記コンピュータプログラム論理は、
プロセッサに、現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定させる論理と、
前記プロセッサに、前記複数の動きベクトルの平均値（ｍｖ）を計算させる論理と、
前記プロセッサに、式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算させる論理とを含み、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックに対する動き推定を実行する動き探索の範囲を設定するコンピュータプログラム物品。
【請求項２２】
α＝１．１及びβ＝（４，４）である請求項２１に記載のコンピュータプログラム物品。
【請求項２３】
前記複数の動きベクトルは、参照フレームの対応するブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項２１に記載のコンピュータプログラム物品。
【請求項２４】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項２３に記載のコンピュータプログラム物品。
【請求項２５】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項２３に記載のコンピュータプログラム物品。
【請求項２６】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから、前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項２３に記載のコンピュータプログラム物品。
【請求項２７】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定に使用される請求項２１に記載のコンピュータプログラム物品。
【請求項２８】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項２７に記載のコンピュータプログラム物品。
【請求項２９】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項２７に記載のコンピュータプログラム物品。
【発明の詳細な説明】
【背景技術】
【０００１】
動画フレーム間の時間冗長性を取り除く又は削減することにより動画圧縮性能を向上させるために、動画符号化における動き推定（Ｍｏｔｉｏｎ  Ｅｓｔｉｍａｔｉｏｎ）が採用されることがある。入力ブロックを符号化するのに、従来の動き推定は、エンコーダにおいて行われ、参照フレームの特定の探索領域を対象としている。そして、参照フレームにおける、入力ブロックと参照ブロックとの間の差分絶対値和（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅｓ：ＳＡＤ）を最小にする動きベクトルが決定される。動きベクトル情報は、デコーダに送信され、動き補償に利用される。動きベクトルは、部分画素単位で決定され、また、部分画素値を計算するのに、補間フィルタを使用することができる。
【０００２】
デコーダで、元の入力フレームを使用できない場合、デコーダにおける動き推定は、再構築された参照フレームを使用することにより行われる。予測フレーム（Ｐフレーム）を符号化する場合、前方参照バッファに、複数の参照フレームが存在していてもよい。双予測フレーム（Ｂフレーム）を符号化する場合、複数の参照フレームが前方参照バッファに存在し、また、少なくとも１つの参照フレームが後方参照バッファに存在してもよい。Ｂフレーム符号化の場合、ミラー動き推定又は射影動き推定を行って、動きベクトルを取得してもよい。Ｐフレーム符号化の場合、射影動き推定を行って、動きベクトルを取得してもよい。
【０００３】
また、１つ又は複数フレームのブロックについて、前に復号した利用可能な画素について動き推定を行い、ブロックベースの動きベクトルを、動画のデコーダにおいて算出するようにしてもよい。利用可能な画素としては、例えば、現在のフレームにおいてスキャン及び符号化される順に空間的に隣接する複数のブロック、前に復号されたフレームにおけるブロック、又は階層符号化が使用された場合、下位層においてダウンサンプリングされたフレームにおけるブロックが挙げられる。利用可能な画素は、上述のブロックの組み合わせであってもよい。
【図面の簡単な説明】
【０００４】
【図１】一実施形態による、デコーダでのミラー動き推定を示した図である。
【図２】一実施形態による、デコーダでの射影動き推定を示した図である。
【図３】一実施形態による、二つの異なる参照フレームの複数のブロックに基づいて動き探索が行われ、すでに復号されたブロックを使用して現在のフレームからの動きベクトルの導出を示した図である。
【図４】一実施形態による、前に復号された複数のブロックを使用して、前後に位置するフレームからの動きベクトル導出を示した図である。
【図５】一実施形態による、前に復号された１つのブロックを使用して、階層構造になっているコーディングの下位層からの動きベクトル導出を示した図である。
【図６】一実施形態による、ブロックレベルにおける探索範囲ベクトル決定を示したフローチャートである。
【図７】一実施形態による、ピクチャレベルにおける探索範囲ベクトル決定を示したフローチャートである。
【図８】ソフトウェア実施形態の例としてのコンピューティングコンテキストを示した図である。
【図９】一実施形態による、Ｈ．２６４エンコーダにおける自発動きベクトル導出モジュールを示したブロック図である。
【図１０】一実施形態による、Ｈ．２６４デコーダにおける自発動きベクトル導出モジュールを示したブロック図である。
【発明を実施するための形態】
【０００５】
例えば、ビデオエンコーダ又はビデオデコーダにおいて、動き推定が実行される場合の探索範囲（ＳＲ）ベクトルを決定するのに使用可能なシステム、方法及びコンピュータプログラム物品について、以下に記載する。動き推定において、現在のブロックの動きベクトルを決定するには、参照フレームに存在する、又は現在のブロックに空間的に若しくは時間的に隣接するすでに復号化されたブロックに存在する探索範囲内において探索を行う。この探索では、参照フレームにおける対応ブロック間で、ＳＡＤのような測定基準が、最小となる動きベクトルを探す。測定基準を最小化する動きベクトルは、動き推定で使用するのに適している場合がある。探索すべき範囲が限定されるように探索範囲が設定されれば、探索をより効率的に行うことができる。
【０００６】
ブロックレベル又はピクチャレベルで、探索を行ってもよい。探索範囲ベクトルを、ブロックレベルで決定する場合には、全フレームに渡って、異なるブロックに対して、異なる探索範囲ベクトルとなる。一方、探索範囲ベクトルを、ピクチャレベルで決定する場合には、１フレームにおける各ブロックに対して、同じ探索範囲ベクトルであってもよい。
【０００７】
一実施形態では、探索範囲ベクトルは、横方向及び縦方向それぞれの探索範囲成分を持つ。
【０００８】
本明細書において、"フレーム"及び"ピクチャ"という言葉は、同様な意味で使用されており、このことは、当業者にとって明らかである。
【０００９】
［ミラー動き推定］
ミラー動き推定は、前方参照フレーム及び後方参照フレームの双方を使用するので、通常、Ｂフレーム符号化に適用可能である。図１は、実施形態１００に従って、どのようにミラー動き推定が行われるかを示した図である。図１に示す実施形態では、前方参照フレーム１２０と後方参照フレーム１３０との間に、二つのＢフレーム１１０及び１１５が存在する。フレーム１１０は、現在、符号化を行っているフレームである。現在のブロック１４０が符号化される場合、参照フレーム１２０、１３０のそれぞれの探索範囲１６０、１７０で探索を行い、動きベクトルを取得するのに、ミラー動き推定を実行してもよい。上述したように、デコーダにおいて、現在の入力ブロックが利用可能でない場合、二つの参照フレームについてミラー動き推定を実行してもよい。
【００１０】
この場合における、動き推定の例を、以下に記載する。例えば、前方参照フレームに、探索範囲を指定する。この探索範囲は、エンコーダ及びデコーダの双方において同じであってもよい。また、探索経路は、前方参照フレームにおいて指定される。エンコーダ及びデコーダが同じ探索経路をたどる限り、全探索又はその他の高速探索スキームを使用可能である。探索経路に存在するベクトルＭＶ０に対して、ミラー動きベクトルＭＶ１が、後方探索範囲において取得される。ここでは、関連する期間が相対的に短い場合であって、その間における運動の軌道が、直線状である場合を示している。ＭＶ１は、以下に示すＭＶ０の関数から導くことができ、ここでｄ０及びｄ１は、現在のフレームと２つの参照フレームそれぞれとの間の距離である。
ＭＶ１＝（ｄ１／ｄ０）ＭＶ０
【００１１】
ＳＡＤのような測定基準は、（１）前方参照フレームにおいてＭＶ０によって示される参照ブロック、及び（２）後方参照フレームにおいてＭＶ１によって示される参照ブロックの間で、計算してもよい。これらの参照ブロックは、図１において、それぞれ、１５０及び１８０として示されている。算出は、探索経路に、更なる動きベクトルＭＶ０が存在するか否かを決定することにより行われてもよい。その場合、１つ以上のＭＶ０を取得してもよく、各ＭＶ０が、それぞれ関連付けられたＭＶ１を持つ。さらに、このような互いに関連付けられた組について、例えばＳＡＤのような測定基準が算出されるようにしてもよい。また、例えば、最小となるＳＡＤ値のような測定基準の最適値に対応するＭＶ０が選択される。
【００１２】
現在のブロックについて、取得された動きベクトルの組が、ＭＶ０及びＭＶ１であるとすると、前方予測Ｐ０（ＭＶ０）は、ＭＶ０を使用して取得することができ、後方予測Ｐ１（ＭＶ１）は、ＭＶ１を使用して取得することができる。双方向予測は、ＭＶ０及びＭＶ１の両方を使用することにより求めることができる。双方向予測は、例えば、Ｐ０（ＭＶ０）及びＰ１（ＭＶ１）の平均、又は加重平均（Ｐ０（ＭＶ０）＊ｄ１＋Ｐ１（ＭＶ１）＊ｄ０）／（ｄ０＋ｄ１）であってもよい。また、双方向予測を取得するのに、その他の関数を使用してもよい。ある実施形態では、エンコーダ及びデコーダが、同じ予測方法を採用してもよい。
【００１３】
図１に示すミラー動き推定は、隣接する二つのピクチャがそれぞれ、線形であると仮定している。ピクチャ１１０における現在のブロックの符号化を行う場合、二つの参照ピクチャＦＷＲｅｆ１２０及びＢＷＲｅｆ１３０が、参照バッファにおいて利用可能であってもよい。ブロックｉについて、ＢＷＲｅｆ１３０とＦＷＲｅｆ１２０との間で利用可能なブロックＭＶをＲｅｆＭＶｉとする（ここで、動きベクトルは、ピクチャの距離に従って設定される）と、探索範囲ベクトルは、全てのＲｅｆＭＶｉ、及び線形又は非線形関数ｆ（）を使用して、決定することができる。
ＳＲ＝ＳＲ＿Ｐｉｃ＝ｆ（Ｒｅｆ＿ＭＶｉ）
【００１４】
ある実施形態では、処理関数ｆ（）は、例えば、以下のようであってもよい。まず、ＲｅｆＭＶｉの絶対値の平均値を、ｉ個のブロックについて、取得する。その平均値を、ｍｖ＿ｒｅｆとする。次いで、ピクチャ１１０について、適応探索範囲を、以下のように算出する。α及びβを、予め定められた二つの（それぞれ、スカラーとベクトルである）定数とする。一実施形態として、これらを、それぞれ、１．１及び（４，４）に設定する。ここで、計算された適応探索範囲ＳＲ＿Ｐｉｃを以下に示す。これを、ピクチャレベル適応探索範囲ベクトルとして使用してもよい。
ＳＲ＝ＳＲ＿Ｐｉｃ＝α＊ｍｖ＿ｒｅｆ＋β
【００１５】
フレーム１１０の各ブロックについて、ブロックレベル探索範囲を、時間的に及び／又は空間的に隣接するブロックの動きベクトルに基づいて決定する。例えば、隣接するブロックｉの動きベクトルが、それぞれＮｂｒ＿ＭＶｉであるとする（ここで、動きベクトルは、ピクチャの距離に従って設定される）。そして、探索範囲ベクトルは、全てのＮｂｒ＿ＭＶｉ、及び線形又は非線形である関数ｇ（）を使用して次のように決定することができる。
ＳＲ＝ＳＲ＿Ｂｌｋ＝ｇ（Ｎｂｒ＿ＭＶｉ）
【００１６】
ある実施形態において、処理関数ｇ（）は、以下のようであってもよい。まず、Ｎｂｒ＿ＭＶｉの絶対値の平均値を求め、それをｍｖ＿ｎｂｒとする。次いで、ブロックレベル適応探索範囲ベクトルＳＲ＿Ｂｌｋを、以下のように算出することができる。ある実施形態において、α及びβの二つの定数を、それぞれ、１．１及び（４，４）に設定する。
ＳＲ＝ＳＲ＿Ｂｌｋ＝α＊ｍｖ＿ｎｂｒ＋β
【００１７】
また、ある実施形態では、探索範囲ベクトルの水平成分と垂直成分とが、同一でなければならない場合がある。この場合、この二つの成分のうち、大きな値の方を採用し、水平成分及び垂直成分の両方に使用するようにしてもよい。
【００１８】
［射影動き推定］
現在のブロックを符号化するための動きベクトル（ＭＶ）を導出するのに、射影動き推定を実行してもよい。図２は、射影動き推定の例を示しており、図示の例では、２つの前方参照フレーム、ＦＷＲｅｆ０（参照フレーム２２０）及びＦＷＲｅｆ１（参照フレーム２３０）が使用されている。これらの参照フレームを、現在のフレーム２１０における、目的のブロック２４０の動きベクトルを求めるのに使用してもよい。探索範囲２７０は、参照フレーム２２０に指定され、探索経路が、探索範囲２７０に指定されるようにしてもよい。探索経路における各動きベクトルＭＶ０について、その射影動きベクトルＭＶ１が、参照フレーム２３０の探索範囲２６０において決定される。動きベクトルの各組、すなわち、ＭＶ０とそれに関連付けられた動きベクトルＭＶ１について、ＳＡＤのような測定基準を、（１）参照フレーム２２０におけるＭＶ０によって指し示される参照ブロック２８０、及び（２）参照フレーム２３０におけるＭＶ１によって指し示される参照ブロック２５０の間で、計算してもよい。例えば、目的のブロック２４０に対する動きベクトルとして、最小となるＳＡＤ値のように、測定基準の最適値に対応する動きベクトルＭＶ０を選択してもよい。
【００１９】
射影動き推定は、次のようなプロセスで実行してもよい。探索範囲を、第１の前方参照フレームに指定する。この探索範囲は、エンコーダ及びデコーダ双方において同じであってもよい。探索経路を、この探索範囲に指定する。エンコーダ及びデコーダが同じ探索経路をたどるように、例えば、全探索又はその他の高速探査スキームを使用してもよい。探索経路における動きベクトルＭＶ０に対して、その射影動きベクトルＭＶ１が、第２の前方参照フレームにおける第２の探索範囲において取得される。ここでは、短時間の間の運動の軌道が、直線状であると仮定している。ＭＶ１は、以下に示すＭＶ０の関数から求められ、ここで、ｄ０及びｄ１は、現在のフレームと参照フレームそれぞれとの間の距離である。
ＭＶ１＝（ｄ１／ｄ０）ＭＶ０
【００２０】
ＳＡＤのような測定基準を、（１）第１の参照フレームにおけるＭＶ０によって指し示される参照ブロック、及び（２）第２の参照フレームにおけるＭＶ１によって指し示される参照ブロックの間で、計算してもよい。算出は、探索経路に、まだ考慮していない更なる動きベクトルＭＶ０が存在するか否かを決定することにより行ってもよい。少なくとも、１つのＭＶ０が残っている場合、それに対する射影動きベクトルＭＶ１が決定されてもよい。このようにして、一連の組になったＭＶ０及びＭＶ１が決定され、ＳＡＤのような測定基準が、各組について計算される。複数のＭＶ０の中から、例えば、最小ＳＡＤ値のような、測定基準における最適な値となるＭＶ０を１つ選択してもよい。そして、このＭＶ０を、現在のブロックの動き予測に使用してもよい。
【００２１】
現在のブロックに対しての予測は、様々な形式で取得することができる。例えば、そのような予測として、Ｐ０（ＭＶ０））、Ｐ１（ＭＶ１）、（Ｐ０（ＭＶ０）＋Ｐ１（ＭＶ１））／２、又は（Ｐ０（ＭＶ０）＊ｄ１＋Ｐ１（ＭＶ１）＊ｄ０）／（ｄ０＋ｄ１）他の実施形態では、他の関数を使用してもよい。エンコーダ及びデコーダの双方において、同じ方法を用いて予測を取得してもよい。
【００２２】
図２に示す射影動き推定では、２つの隣接するピクチャ間の動きは、線形であると仮定している。上述したミラー動き推定と同様な方法により、ＦＷＲｅｆ０（図２のフレーム２２０）とＦＷＲｅｆ１（フレーム４３０）との間でのブロック動きベクトルを利用して、ピクチャレベル探索範囲を求めてもよい。ミラー動き推定について上述したように、ブロックレベル探索範囲は、現在のブロックと時間的及び空間的に隣接するブロックの動きベクトル情報を使用して求めることができる。
【００２３】
［空間的に隣接したブロックに基づく動き推定］
図３は、現在のフレーム３１０における１つ又は複数の隣接するブロック３４０（ここでは、目的のブロック３３０の上方のブロック及び左に位置するブロックとして示されている）を利用する実施例３００を示している。前の参照フレーム３２０及び後の参照フレーム３６０における、１つ又は複数の対応するブロック３５０及び３５５に基づいて動きベクトルを生成してもよく、ここで、"前"及び"後"とは、時間的な順番を表している。このようにして求めた動きベクトルを、目的のブロック３３０に適用することができる。ある実施形態では、目的のブロックに空間的に上方、左側、左上方及び右上方に位置するブロックを決定するのに、ラスタスキャン符号化順を使用してもよい。この方法を、復号の際に前のフレーム及び後のフレームの両方を使用するＢフレームに適用してもよい。
【００２４】
順次スキャン符号化する順番として、目的のブロックより前に隣接するブロックが復号化される限り、図３に例示される方法を、現在のフレームで空間的に隣接するブロックの利用可能な画素に適用してもよい。また、この方法を、現在のフレームに対する参照フレームリストにおける複数の参照フレームについての動き探索に適用してもよい。
【００２５】
図３の実施形態の処理は、以下のように行ってもよい。まず、１つ又は複数の画素のブロックを、現在のフレームにおいて特定する。ここでは、現在のフレームの目的とするブロックに隣接する複数のブロックを特定する。そして、時間的に後に位置する参照フレームにおける対応ブロック、及び時間的に前に位置する参照フレームの複数の対応ブロックに基づいて、特定したブロックについての動き探索を実行してもよい。動き探索の結果は、特定のブロックの動きベクトルとして表されてもよい。または、これらのブロックを特定する以前に、隣接ブロックの動きベクトルを決定してもよい。目的のブロックに対する動きベクトルを求めるのに、これら隣接ブロックの動きベクトルを使用してもよく、また、目的のブロックに対する動き補償に使用してもよい。当業者によく知られた好適なプロセス使用して、この導出を行ってもよい。このようなプロセスとしては、これに限定されないが、例えば、重み付け平均又はメジアンフィルタが挙げられる。
【００２６】
現在のピクチャが、後方及び前方両方の参照ピクチャを参照バッファに持つ場合、ミラー動き推定に使用された方法と同じ方法を、ピクチャレベル適応探索範囲ベクトル及びブロックレベル適応探索範囲ベクトルの取得に適用してもよい。前方参照ピクチャのみが利用可能である場合には、射影動き推定に使用された方法を、ピクチャレベル及びブロックレベル適応探索範囲の取得に適用してもよい。
【００２７】
［時間的に隣接するブロックに基づく動き推定］
他の実施形態では、時間的に前に位置するフレーム及び後に位置する再構成されたフレームにおける対応ブロックを、時間的な順序で、動きベクトルの取得に利用してもよい。この方法を、実施形態４００として、図４に示す。現在のフレーム４１０の目的のブロック４３０を符号化するには、すでに復号化された画素を使用してもよく、これらの画素は、時間的に前に位置するフレーム４１５における対応ブロック４４０及び時間的に後に位置するフレーム４５５における対応ブロック４６５内に位置しているとする。参照フレーム４２０における１つ又は複数のブロック４５０について動き探索を実行することにより、対応するブロック４４０についての第１の動きベクトルを導出してもよい。１つ又は複数のブロック４５０は、前に位置するフレーム４１５のブロック４４０に対応する、参照フレーム４２０におけるブロックと隣接していてもよい。また、参照フレーム４６０における１つ又は複数のブロック４７０について動き探索を実行することにより、時間的に後に位置するフレーム４５５における対応ブロック４６５についての第２の動きベクトルを求めてもよい。１つ又は複数のブロック４７０は、後に位置するフレーム４５５のブロック４６５に対応する、参照フレーム４６０おけるブロックに隣接していてもよい。第１及び第２の動きベクトルに基づいて、目的とするブロック４３０についての前方及び／又は後方動ベクトルを決定してもよい。このようにして求められた動きベクトルを、目的とするブロックの動き補償に利用してもよい。
【００２８】
このような状況における動き推定プロセスは、以下のように行われる。まず、時間的に前に位置するフレームにおいて、１つのブロックを特定するが、この特定されるブロックは、現在のフレームの目的とするブロックに対応していてもよい。次いで、この時間的に前に位置するフレームにおいて特定されたブロックについて、第１の動きベクトルが決定されるが、この第１の動きベクトルを、第１の参照フレームの対応するブロックに対して規定してもよい。そして、時間的に後ろに位置するフレームにおいて、１つのブロックが特定されるが、このブロックは、現在のフレームの目的とするブロックに対応するブロックであってもよい。この後ろに位置するフレームにおける特定されたブロックについて、第２の動きベクトルが決定されるが、この第２の動きベクトルを、第２の参照フレームの対応するブロックに対して規定してもよい。上記の第１の動きベクトル及び第２の動きベクトルをそれぞれ使用して、目的とするブロック対して１つ又は２つの動きベクトルを決定してもよい。
【００２９】
現在のピクチャの符号化／復号化を行うには、時間的に前に位置するフレーム４１５と参照フレーム４２０との間のブロック動きベクトルを利用可能である。これらの動きベクトルを使用することにより、上記の射影動き推定で説明したような方法で、ピクチャレベル適応探索範囲を決定することができる。ミラー動き推定の場合のブロックレベル適応探索範囲を求めるのに、対応するブロック及び対応するブロックに空間的に隣接するブロックについての動きベクトルを使用することができる。
【００３０】
［ダウンサンプリングされた下位層におけるブロックに基づく動き推定］
ある実施形態では、目的のブロックの動きベクトルを決定するのに使用可能な画素は、スケーラブルビデオ符号化により、元の入力からダウンサンプリングされたビデオを持つ下位層における対応ブロックに位置していてもよい。図５は、現在のピクチャ５１０の目的のブロック５３０に対応する下位層のブロック５４０を利用した例５００を示す。ブロック５４０は、現在のピクチャ５１０に対応するピクチャ５１５に位置している。下位層の参照ピクチャ５２０及び５６０それぞれにおける１つ又は複数のブロック５５０及び５７０とすると、対応するブロック５４０を、動き探索を実行するのに使用可能である。下位層における参照ピクチャは、時間的な順番で前方又は後方の（時間的に前又は後に位置する）ピクチャであってもよい。ダウンサンプリングされた階層で動きベクトルが導出されるので、動きベクトルを目的の階層の目的とするブロック５３０に適用する前に、アップスケールしてもよい。
【００３１】
この方法は、現在のピクチャ５１０の目的のフレーム５３０に対応する下位層におけるブロック５４０に空間的に隣接し、すでに復号化されたブロックに適用してもよい。
【００３２】
この実施形態における処理は、以下のように行われる。現在のフレームに目的のブロックが存在する場合、下位層における対応するフレームにおいて、対応ブロックが特定される。この下位層おける対応ブロックについての動きベクトルが、下位層の１つ又は複数の参照フレームに対して決定される。そして、決定された動きベクトルを、現在のフレームの目的のブロックについての動き推定に使用してもよい。また、別の実施形態では、目的の階層の動き推定のために下位層のブロックを特定する前に、下位層において動きベクトルを決定する。
【００３３】
目的の階層における現在のピクチャの復号化を行うとき、下位層のピクチャはすでに復号化されており、下位層の現在のピクチャと下位層の参照ピクチャとの間のブロック動きベクトルが利用可能である。上述のミラー動き推定に関連して説明したピクチャレベル適応探索範囲の決定に、これらのブロック動きベクトルを使用することができる。また、下層の同一場所に位置するブロック及び当該下層の同一場所に位置するブロックに空間的に隣接する複数のブロックの動きベクトルを、上述のミラー動き推定のブロックレベル適応探索範囲の決定に使用することができる。
【００３４】
［探索範囲の適応決定の処理］
図６は、ある実施形態による、ブロックレベルにおいて、探索範囲ベクトルを適応的に決定するプロセス６００を示している。６１０では、現在のフレームの現在のブロックに隣接する複数のブロックのセットを対象とする。現在のフレームにおける各隣接ブロックｉについて、それぞれ動きベクトルＮｂｒ＿ＭＶｉを求める。ここで、隣接するブロックとは、空間的に隣接ブロックであってもよい。空間的に隣接するブロックは、現在のブロックに直接隣接したブロックであってもよいし、そうでなくてもよい。また、上述したように、隣接するブロックは、時間的に隣接したブロックであってもよい。
【００３５】
６２０において、動きベクトルＮｂｒ＿ＭＶｉの平均値を計算する。計算結果が、ベクトルｍｖ＿ｎｂｒであるとする。６３０において、ブロックレベルで、探索範囲ベクトルを求める。
ＳＲ＿Ｂｌｋ＝（α＊ｍｖ＿ｎｂｒ）＋β
【００３６】
ここで、α及びβは、実験的に求められる予め定められた定数であり、αは、スカラー値であり、βは、２次元のベクトルであってもよい。ある実施形態においては、α＝１．１であり、β＝（４，４）である。６４０において、プロセス６００は、完了する。
【００３７】
図７は、ある実施形態による、ピクチャレベルにおける探索範囲ベクトルを適応的に決定するプロセス７００を示している。７１０において、後方又は前方に位置するフレームの各ブロックｉについての、動きベクトルＲｅｆ＿ＭＶｉを取得する。このようなフレームは、例えば、参照フレームであってもよい。７２０において、ベクトルＲｅｆ＿ＭＶｉの平均値を計算する。計算された結果を、ベクトルｍｖ＿ｒｅｆとする。７３０において、ピクチャレベルで、探索範囲ベクトルを決定する。
ＳＲ＿Ｐｉｃ＝（α＊ｍｖ＿ｒｅｆ）＋β
【００３８】
上述したように、α及びβは、実験的に求められる予め定められた定数であり、αは、スカラー値であり、βは、２次元のベクトルであってもよい。ある実施形態においては、α＝１．１であり、β＝（４，４）である。７４０において、プロセス７００は、完了する。
【００３９】
［実装］
上述した処理を、ハードウェア、ファームウェア、若しくはソフトウェア、又はこれらの組み合わせに実装してもよい。また、上記に開示された１つ又は複数の特徴を、ディスクリート回路論理、集積回路論理、特定用途向け集積回路（ＡＳＩＣ）論理、及びマイクロコントローラを含むハードウェア、ファームウェア、若しくはソフトウェア、又はこれらの組み合わせに実装してもよい。また、領域特化型の集積回路パッケージの一部、又は集積回路パッケージの組み合わせとして実装してもよい。ここで使用されている、"ソフトウェア"という言葉は、コンピュータプログラム論理を記憶するコンピュータ可読媒体であって、コンピュータシステムに１つ又は複数の特徴及び／又はここに開示される特徴の組み合わせを実行させるコンピュータ可読媒体を含むコンピュータプログラム物品を指す。
【００４０】
上記の処理のソフトウェア又はファームウェアの実施形態を、図８に示す。システム８００は、プロセッサ８２０及びメモリ８１０の本体を含み、メモリ８１０は、コンピュータプログラム論理８４０を記憶する１つ又は複数のコンピュータ可読媒体を有する。メモリ８１０は、例えば、ハードディスク、ハードドライブ、コンパクトディスク若しくはコンパクトドライブのようなリムーバブルメディア、又は、リード・オンリ・メモリ（ＲＯＭ）デバイスとして実装されてもよい。バスのような、当業者にとってよく知られた技術を利用して、プロセッサ８２０及びメモリ８１０を互いに通信可能に構成してもよい。メモリ８１０に含まれる論理は、プロセッサ８２０によって読み出し及び実行されてもよい。図には、まとめてＩ／Ｏ８３０として示されているが、１つ又は複数のＩ／Ｏポート、及び／又は、１つ又は複数のＩ／Ｏデバイスを、プロセッサ８２０及びメモリ８１０に接続してもよい。
【００４１】
コンピュータプログラム論理８４０は、動き推定論理８６０を含んでもよい。動き推定論理８６０は、実行されると、上述した動き推定処理を行う。動き推定論理８６０は、例えば、実行されると、上述のオペレーションを行う射影動き推定論理を含んでもよい。論理８６０は、また、例えば、ミラー動き推定論理、現在のブロックに時間的に若しくは空間的に隣接するブロックに基づく動き推定のための論理、又は現在のブロックに対応する下位層ブロックに基づく動き補償を実行するための論理を、更に含む、又は替わりに含んでもよい。
【００４２】
動き推定論理８６０が、その処理を実行する前に、探索範囲ベクトルが生成されてもよい。これは、上述のように、探索範囲計算論理８５０によって行われてもよい。したがって、このモジュールは、図６及び図７に示すオペレーションを行う。探索範囲ベクトルが生成された後、このベクトルを使用して、動き推定論理８６０によって実施される探索の範囲を限定してもよい。
【００４３】
探索範囲ベクトルの決定を行う論理は、大きなコーデック・アーキテクチャで使用される自発動き（ｓｅｌｆ  ｍｏｔｉｏｎ）ベクトル導出モジュールに組み込まれていてもよい。図９は、自発動きベクトル導出モジュール９４０を含むＨ．２６４ビデオ符号化アーキテクチャ９００の例を示したものであり、ここで、Ｈ．２６４は、ビデオコーデック規格である。現在のビデオ情報は、複数のフレームのかたちで、現在のビデオブロック９１０から提供されてもよい。現在のビデオは、差分ユニット９１１に入力されてもよい。差分ユニット９１１は、差分パルス符号変調（ＤＰＣＭ）（コア・ビデオ・エンコーディングとも呼ばれる）ループの一部であってもよく、動き補償段階９２２と動き補償段階９１８とを含む。また、ループは、イントラ予測段階９２０及びイントラ補間段階９２４を含んでもよい。また、ある場合には、ループ内で、インループ非ブロック化フィルタ９２６を使用してもよい。
【００４４】
差分ユニット９１１及び動き推定段階９１８に、現在のビデオ９１０が提供されるようにしてもよい。動き補償段階９２２又はイントラ補間段階９２４では、スイッチ９２３を通じて出力を生成してもよく、この出力を現在のビデオ９１０から差し引いて、残差を生成する。残差は、変換／量子化段階９１２で、変換及び量子化された後、ブロック９１４において、エントロピー符号化される。そして、ブロック９１６において、チャネル出力が生成される。
【００４５】
動き補償段階９２２の出力、又は、イントラ補間段階９２４の出力が、加算器９３３に提供されてもよく、加算器は、逆量子化ユニット９３０及び逆変換ユニット９３２からの入力も受信するようしてもよい。逆量子化ユニット及び逆変換ユニットは、変換／量子化段階９１２で行われた変換及び量子化を元に戻す。逆変換ユニット９３２は、非量子化又は非変換化を行った情報を、ループに戻してもよい。
【００４６】
自発動きベクトル導出モジュール９４０は、上述した処理を実行して、動きベクトルを導き出してもよい。自発動きベクトル導出モジュール９４０は、インループ非ブロック化フィルタ９２６の出力を受信してもよく、また、出力を、動き補償段階９２２に提供してもよい。
【００４７】
図１０は、自発動きベクトル導出モジュール１０１０を持つＨ．２６４ビデオデコーダ１０００を示している。ここで、図９に示したエンコーダ９００のためのデコーダ１０００は、エントロピー復号化ユニット１０４０に接続されたチャネル入力１０３８を含んでもよい。復号化ユニット１０４０からの出力が、逆量子化ユニット１０４２、逆変換ユニット１０４４及び自発動きベクトル導出モジュール１０１０に提供されてもよい。自発動きベクトル導出モジュール１０１０は、動き補償ユニット１０４８に接続されていてもよい。また、エントロピー復号化ユニット１０４０の出力を、セレクタスイッチ１０２３に接続可能なイントラ補間ユニット１０５４に提供するようにしてもよい。逆変換ユニット１０４４からの情報と、スイッチ１０２３によって選択される動き補償ユニット１０４８又はイントラ補間ユニット１０５４のいずれかからの情報とを、足し合わせて、インループ非ブロック化ユニット１０４６に提供し、その出力をイントラ補間ユニット１０５４にフィードバックしてもよい。そして、インループ非ブロック化ユニット１０４６の出力は、自発動きベクトル導出モジュール１０１０に提供されてもよい。
【００４８】
自発動きベクトル導出モジュールは、ビデオエンコーダに配置されていてもよく、ビデオデコーダ側と同期していてもよい。また、自発動きベクトル導出モジュールを、一般的なビデオコーデックアーキテクチャに適用してもよく、Ｈ．２６４符号化アーキテクチャに限定されない。
【００４９】
［結び］
方法及びシステムが、上記に示したような機能構成ブロックと共に開示され、それらの機能、特徴及び関係が説明された。少なくともこれらの機能構成ブロックの境界のうち、いくつかは、説明を簡易にするために任意に設定されたものである。特定された機能及びそれらの関係が、適切に実行される限りにおいて、これらブロックについて、別の境界を規定してもよい。また、上述のプロセスを用いてビデオ信号を符号化し、符号化された信号を復号化するシステムそれぞれに、上記のエンコーダ及びデコーダを、組み込んでもよい。
【００５０】
様々な実施形態が開示されたが、これらは例示のために記載されたに過ぎず、これらに限定されない。また、ここに開示されたシステム及び方法の範囲内で、様々な形態及び詳細部分の変更が可能であることは、当業者にとって明らかである。したがって、特許請求の範囲は、ここに開示される実施形態によって限定されない。
【図１】
2011091794.tif 000003
【図２】
2011091794.tif 000004
【図３】
2011091794.tif 000005
【図４】
2011091794.tif 000006
【図５】
2011091794.tif 000007
【図６】
2011091794.tif 000008
【図７】
2011091794.tif 000009
【図８】
2011091794.tif 000010
【図９】
2011091794.tif 000011
【図１０】
2011091794.tif 000012
【手続補正書】
【提出日】平成22年11月5日(2010.11.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つの現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定する段階と、
前記複数の動きベクトルの平均値（ｍｖ）を計算する段階と、
式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算する段階とを備え、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックについての動き推定の実行における動き探索の範囲を設定し、前記複数の動きベクトルのセットの決定、前記ｍｖの計算及び前記ＳＲの計算は、プロセッサによって行われる方法。
【請求項２】
α＝１．１及びβ＝（４，４）である請求項１に記載の方法。
【請求項３】
前記複数の動きベクトルは、参照フレームの対応するブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項１に記載の方法。
【請求項４】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項３に記載の方法。
【請求項５】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項３に記載の方法。
【請求項６】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから、前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項３に記載の方法。
【請求項７】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定の実行に使用される請求項１に記載の方法。
【請求項８】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項７に記載の方法。
【請求項９】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項７に記載の方法。
【請求項１０】
プロセッサと
前記プロセッサと通信可能であり、前記プロセッサに対する複数の処理命令を記憶するメモリと
を備えるシステムであって、
前記複数の処理命令は、前記プロセッサに、
現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定させ、
前記複数の動きベクトルの平均値（ｍｖ）を計算させ、
式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算させ、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックについての動き推定の実行における動き探索の範囲設定に使用されるシステム。
【請求項１１】
前記プロセッサ及び前記メモリは、ビデオエンコーダに組み込まれている請求項１０に記載のシステム。
【請求項１２】
前記プロセッサ及び前記メモリは、ビデオデコーダに組み込まれている請求項１０に記載のシステム。
【請求項１３】
α＝１．１及びβ＝（４，４）である請求項１０に記載のシステム。
【請求項１４】
前記複数の動きベクトルは、参照フレームのブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項１０に記載のシステム。
【請求項１５】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項１４に記載のシステム。
【請求項１６】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項１４に記載のシステム。
【請求項１７】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項１４に記載のシステム。
【請求項１８】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定の実行に使用される請求項１０に記載のシステム。
【請求項１９】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項１８に記載のシステム。
【請求項２０】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項１８に記載のシステム。
【請求項２１】
コンピュータに、
現在のブロックに関連付けられた複数のブロックに対する複数の動きベクトルのセットを決定させる手段と、
前記複数の動きベクトルの平均値（ｍｖ）を計算させる手段と、
式  ＳＲ＝（α＊ｍｖ）＋βに従って、探索範囲ベクトルＳＲを計算させる手段と
を実行させるプログラムであって、
αは、予め定められた定数スカラー、βは、予め定められた定数ベクトルであって、
ＳＲは、前記現在のブロックに対する動き推定を実行する動き探索の範囲を設定する、プログラム。
【請求項２２】
α＝１．１及びβ＝（４，４）である請求項２１に記載のプログラム。
【請求項２３】
前記複数の動きベクトルは、参照フレームの対応するブロックにそれぞれ関連付けられ、前記探索範囲ベクトルＳＲは、現在のフレームの前記現在のブロック及び前記現在のフレームの他の全てのブロックについての動き推定の実行に使用される請求項２１に記載のプログラム。
【請求項２４】
前記複数の動きベクトル各々は、後方参照フレームのブロックそれぞれから前方参照フレームの対応するブロックへと延びる請求項２３に記載のプログラム。
【請求項２５】
前記複数の動きベクトル各々は、第１の前方参照フレームのブロックそれぞれから第２の前方参照フレームの対応するブロックへと延びる請求項２３に記載のコンピュータプログラム物品。
【請求項２６】
前記複数の動きベクトル各々は、
後方参照フレームにおけるそれぞれのブロックから、前記現在のフレームに対して時間的に前に位置するフレームへと延びるベクトル、又は
前方参照フレームにおけるそれぞれのブロックから前記現在のフレームに対して時間的に後ろに位置するフレームへと延びるベクトル
である請求項２３に記載のプログラム。
【請求項２７】
前記複数の動きベクトルは、前記現在のブロックに隣接する複数の隣接ブロックと関連付けられ、前記探索範囲ベクトルＳＲは、前記現在のブロックについての動き推定に使用される請求項２１に記載のプログラム。
【請求項２８】
前記現在のフレームにおいて、前記複数の隣接ブロックは、前記現在のブロックに空間的に隣接している請求項２７に記載のプログラム。
【請求項２９】
前記複数の隣接ブロックは、前記現在のフレームに対して時間的に隣接する複数のフレームに位置し、前記現在のブロックに対応している請求項２７に記載のプログラム。
【外国語明細書】
2011091794000001.pdf