(57)【要約】  本明細書は、ビデオ・エンコーディングのためのスケーリング可能な動き推定技術に向けられている。動き推定技術にしたがえば、動きベクトル検索は、利用可能な計算リソースにしたがってスケーリングされる。例えば、検索の範囲は、利用可能な計算リソースにしたがって絶えず調節されることができる。より広範囲の検索は、計算リソースが許すときに実行されることができる。計算リソースが不足しているときには、検索は、もっと制限されることがある。このように、スケーリング可能な動き推定技術は、ビデオ品質と、計算オーバーヘッドそして電力消費とをバランスさせる。本スケーリング可能な動き推定技術は、一連の同心領域を、中央のアンカー点で始めそして複数の同心領域の全体にわたり外側に向けて移動するように検索することができる。特定のビデオ・フレーム又はマクロブロックに対して検索する同心領域の数は、計算リソースにしたがって調節される。アンカー点を検索すると、検索は、次の同心領域へ外側に進み、そして利用可能な計算リソースによって許されるとして継続する。
2009513068.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ・ブロックのアレイ内にアンカー点を定めること；
該アンカー点のところに中心を置く複数の同心領域を定めること；
エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価すること；及び
該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードすること
を具備する、ビデオ・エンコーディング方法。
【請求項２】
ビデオ・ブロックを評価することは、該アンカー点に関係するビデオ・ブロックを評価することをさらに具備する、請求項１の方法。
【請求項３】
該同心領域は、該アンカー点に最も近い第１の同心領域、及び該第１の同心領域の外側の第２の同心領域を含む、請求項１の方法。
【請求項４】
ビデオ・ブロックを評価することは、該アンカー点に関係するビデオ・ブロックを最初に評価すること、そして次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価することをさらに具備する、請求項３の方法。
【請求項５】
ビデオ・ブロックを評価することは、該アンカー点に関係するビデオ・ブロックを最初に評価すること、次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価すること、そして次に、該アンカー点と該第１の同心領域とに関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第２の同心領域に関係するビデオ・ブロックを評価することをさらに具備する、請求項３の方法。
【請求項６】
ビデオ・ブロックを評価することは、利用可能な計算能力の指示にしたがって選択される該同心領域の数に関係するビデオ・ブロックを評価することをさらに具備する、請求項１の方法。
【請求項７】
該同心領域を定めることは、利用可能な計算能力の指示にしたがって該同心領域の数を定めることを具備する、請求項１の方法。
【請求項８】
利用可能な計算能力の変化に基づいてエンコードされるように、異なるビデオ・ブロックに対して異なる数の同心領域を定めることをさらに具備する、請求項１の方法。
【請求項９】
ビデオ・ブロックを評価することは、該アンカー点に関係するビデオ・ブロックを最初に評価すること、そして次に、最も内側の同心領域から始めてそして外側の同心領域に関係するビデオ・ブロックへと外側に広げる順番で該同心領域に関係するビデオ・ブロックを評価することをさらに具備する、請求項１の方法。
【請求項１０】
ビデオ・ブロックを評価することは、利用可能な計算能力の指示にしたがって選択される該同心領域の数に関係するビデオ・ブロックを評価することをさらに具備する、請求項９の方法。
【請求項１１】
該アンカー点は、エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらす該ビデオ・ブロックの初期予測に対応する該ビデオ・ブロックのうちの１つのピクセル位置を示す、請求項１の方法。
【請求項１２】
該同心領域のそれぞれは、該それぞれの同心領域に関係する該ビデオ・ブロックのうちのあるもののピクセル位置を示す境界線を定める、請求項１の方法。
【請求項１３】
エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを最初に同定すること；
該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直すこと；及び
該定め直されたアンカー点のところに中心を置くように該同心領域を定め直すこと、
をさらに具備する、
ここにおいて、ビデオ・ブロックを評価することは、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックを評価することをさらに具備する、
請求項１の方法。
【請求項１４】
該同心領域の部分集合に関係するビデオ・ブロックを評価すること；
エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを該同心領域の該部分集合から最初に同定すること；
該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直すこと；及び
該定め直されたアンカー点のところに中心を置くように該同心領域を定め直すこと、
をさらに具備する、
ここにおいて、ビデオ・ブロックを評価することは、エンコードされようとしている現在のビデオ・ブロック、同定されたピクセル位置、及び該エンコードされたビデオ・フレームを送信する送信機と比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックを評価することをさらに具備する、
請求項１の方法。
【請求項１５】
該ビデオ・ブロックのうちの１つがしきい値を満足する差異値をもたらす場合に、該ビデオ・ブロックの該評価を終わらせることをさらに具備する、請求項１の方法。
【請求項１６】
ビデオ・ブロックのアレイを記憶するメモリ；及び
該ビデオ・ブロックの該アレイ内のアンカー点のところに中心を置く複数の同心領域を定め、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価し、そして該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードするプロセッサ、
を具備するビデオ・エンコーダ。
【請求項１７】
該プロセッサ・ユニットは、該アンカー点に関係するビデオ・ブロックを評価する、請求項１６のビデオ・エンコーダ。
【請求項１８】
該同心領域は、該アンカー点に最も近い第１の同心領域、及び該第１の同心領域の外側の第２の同心領域を含む、請求項１６のビデオ・エンコーダ。
【請求項１９】
該プロセッサは、該アンカー点に関係するビデオ・ブロックを最初に評価し、そして次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価する、請求項１８のビデオ・エンコーダ。
【請求項２０】
該プロセッサは、該アンカー点に関係するビデオ・ブロックを最初に評価し、次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価し、そして次に、該アンカー点と該第１の同心領域とに関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第２の同心領域に関係するビデオ・ブロックを評価する、請求項１８のビデオ・エンコーダ。
【請求項２１】
該プロセッサは、利用可能な計算能力の指示にしたがって選択される該同心領域の数に関係するビデオ・ブロックを評価する、請求項１６のビデオ・エンコーダ。
【請求項２２】
該プロセッサは、利用可能な計算能力の指示にしたがって該同心領域の数を定めることを具備する該同心領域を定める、請求項１６のビデオ・エンコーダ。
【請求項２３】
該プロセッサは、利用可能な計算能力の変化に基づいてエンコードされるように、異なるビデオ・ブロックに対して異なる数の同心領域を定める、請求項１６のビデオ・エンコーダ。
【請求項２４】
該プロセッサは、該アンカー点に関係するビデオ・ブロックを最初に評価し、そして次に、最も内側の同心領域から始めてそして外側の同心領域に関係するビデオ・ブロックへと外側に広げる順番で該同心領域に関係するビデオ・ブロックを評価する、請求項１６のビデオ・エンコーダ。
【請求項２５】
該プロセッサは、利用可能な計算能力の指示にしたがって選択される該同心領域の数に関係するビデオ・ブロックを評価する、請求項２４のビデオ・エンコーダ。
【請求項２６】
該アンカー点は、エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらす該ビデオ・ブロックの初期予測に対応する該ビデオ・ブロックのうちの１つのピクセル位置を示す、請求項１６のビデオ・エンコーダ。
【請求項２７】
該同心領域のそれぞれは、該それぞれの同心領域に関係する該ビデオ・ブロックのうちのあるもののピクセル位置を示す境界線を定める、請求項１６のビデオ・エンコーダ。
【請求項２８】
該プロセッサは、エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを最初に同定し、該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直し、そして該定め直されたアンカー点のところに中心を置くように該同心領域を定め直す、そしてここにおいて、ビデオ・ブロックを評価することは、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックを評価することをさらに具備する、請求項１６のビデオ・エンコーダ。
【請求項２９】
該プロセッサは、該同心領域の部分集合に関係するビデオ・ブロックを評価し、エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを該同心領域の該部分集合から最初に同定し、該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直し、そして該定め直されたアンカー点のところに中心を置くように該同心領域を定め直す、ここにおいて、ビデオ・ブロックの評価は、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックの評価をさらに具備する、請求項１６のビデオ・エンコーダ。
【請求項３０】
該プロセッサは、該ビデオ・ブロックのうちの１つがしきい値を満足する差異値をもたらす場合に、該ビデオ・ブロックの該評価を終わらせる、請求項１６のビデオ・エンコーダ。
【請求項３１】
ビデオ・ブロックのアレイ内にアンカー点を定めるための手段；
該アンカー点のところに中心を置く複数の同心領域を定めるための手段；
エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価するための手段；及び
該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードするための手段、
を具備する、ビデオ・エンコーダ。
【請求項３２】
該同心領域は、該アンカー点に最も近い第１の同心領域、及び該第１の同心領域の外側の第２の同心領域を含む、そしてここにおいて、該評価する手段は、該アンカー点に関係するビデオ・ブロックを最初に評価し、次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価し、そして次に、該アンカー点と該第１の同心領域とに関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第２の同心領域に関係するビデオ・ブロックを評価する、請求項３１のビデオ・エンコーダ。
【請求項３３】
該同心領域の数は、利用可能な計算能力の指示にしたがって定められる、請求項３１のビデオ・エンコーダ。
【請求項３４】
エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを最初に同定するための手段；
該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直すための手段；及び
該定め直されたアンカー点のところに中心を置くように該同心領域を定め直すための手段、
をさらに具備する、
ここにおいて、該評価する手段は、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックを評価する、
請求項３１のビデオ・エンコーダ。
【請求項３５】
プロセッサに：
ビデオ・ブロックのアレイ内にアンカー点を定めるように；
該アンカー点のところに中心を置く複数の同心領域を定めるように；
エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価するように；及び
該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードするように、
させる命令を具備する、コンピュータ読取り可能な媒体。
【請求項３６】
該同心領域は、該アンカー点に最も近い第１の同心領域、及び該第１の同心領域の外側の第２の同心領域を含む、そしてここにおいて、該ビデオ・ブロックの評価は、該アンカー点に関係するビデオ・ブロックを最初に評価すること、次に、該アンカー点に関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第１の同心領域に関係するビデオ・ブロックを評価すること、そして次に、該アンカー点と該第１の同心領域とに関係する該ビデオ・ブロックがしきい値よりも小さい差異値をもたらさない場合には、該第２の同心領域に関係するビデオ・ブロックを評価することをさらに具備する、請求項３５のコンピュータ読取り可能な媒体。
【請求項３７】
該同心領域の数は、利用可能な計算能力の指示にしたがって選択される、請求項３５のコンピュータ読取り可能な媒体。
【請求項３８】
プロセッサに：
エンコードされようとしている該現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを最初に同定するように；
該最初に同定されたビデオ・ブロックに対応するピクセル位置に該アンカー点を定め直すように；及び
該定め直されたアンカー点のところに中心を置くように該同心領域を定め直すように、
させる命令をさらに具備する、
ここにおいて、ビデオ・ブロックの評価は、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該定め直された同心領域に関係するビデオ・ブロックの評価をさらに具備する、
請求項３５のコンピュータ読取り可能な媒体。
【請求項３９】
利用可能な計算能力の指示に基づいてビデオ・ブロック検索空間内で同心領域の数を選択すること；
エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するためにビデオ・ブロック検索空間内で該選択された数の同心領域に関係するビデオ・ブロックを評価すること；及び
該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードすること
を具備する、ビデオ・エンコーディング方法。
【請求項４０】
該同心領域は、アンカー点のところに中心を置き、そしてビデオ・ブロックを評価することは、該アンカー点に関係するビデオ・ブロックを評価することをさらに具備する、請求項３９の方法。
【請求項４１】
ビデオ・ブロックを評価することは、最も内側の同心領域から始めてビデオ・ブロックを評価すること、そして他の同心領域へと外側に該評価を広げることをさらに具備する、請求項３９の方法。
【請求項４２】
該ビデオ・ブロックのうちの１つがしきい値を満足する差異値をもたらす場合に、該ビデオ・ブロックの該評価を終わらせることをさらに具備する、請求項３９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ディジタル・ビデオ・エンコーディングに係わり、特に、フレーム間動き推定のための技術に関する。
【背景技術】
【０００２】
複数の異なるビデオ・エンコーディング規格が、ディジタル・ビデオ系列をエンコードするために開発されてきている。例えば、映画エキスパート・グループ（ＭＰＥＧ：Moving Picture Experts Group）は、ＭＰＥＧ−１、ＭＰＥＧ−２及びＭＰＥＧ−４を含む複数の規格を既に開発している。別の例は、国際電気通信連合（ＩＴＵ：International Telecommunication Union）Ｈ．２６１規格、ＩＴＵ  Ｈ．２６３規格、及び新しいＩＴＵ  Ｈ．２６４規格を含む。これらのビデオ・エンコーディング規格は、一般にデータを圧縮方式でエンコードすることによってビデオ系列の伝送効率の向上をサポートする。圧縮は、ビデオ・フレームの効率的な伝送のために伝送されることが必要なデータの全体量を削減する。
【０００３】
例えば、ＭＰＥＧ−４，ＩＴＵ  Ｈ．２６１，ＩＴＵ  Ｈ．２６３及びＩＴＵ  Ｈ．２６４規格は、フレーム間圧縮を提供するために、時間的相関又はフレーム間相関と呼ばれる連続する複数のビデオ・フレーム間の類似性を利用するビデオ・エンコーディング技術をサポートする。フレーム間圧縮技術は、ビデオ・フレームのピクセルに基づく表示を動き表示、一般的に動きベクトルと呼ばれる、に変換することによって、複数のフレームにわたるデータの冗長性を活用する。フレーム間技術を使用してエンコードされるフレームは、Ｐ（“予測（predictive）”）フレーム又はＢ（“双方向（bi-directional）”）フレームと呼ばれる。複数のフレーム、又は１フレーム内の複数のマクロブロック（ＭＢ：macroblock）、は、非予測である空間圧縮、フレーム内圧縮を使用してエンコードされる。内部コード化されたフレームは、一般的にＩ（“内部（Intra）”）フレームと呼ばれる。
【０００４】
ビデオ・フレームをエンコードするために、エンコーダは、ビデオ・フレームを複数のマクロブロックへと分割し、そして隣接ビデオ・フレーム内の複数のマクロブロックを検索してもっとも類似するマクロブロックを同定する。動き推定と呼ばれるこのプロセスは、計算集約型である。エンコーダは、複数のマクロブロック間の差異をエンコードし、そして隣接ビデオ・フレームからマクロブロックを同定する動きベクトルを生成する。デコーダは、動きベクトルとエンコードされた差異を受け取り、そして動き補償を実行してビデオ・フレームの系列を生成する。
【発明の開示】
【サマリー】
【０００５】
本明細書は、ビデオ・エンコーディングのためのスケーリング可能な動き推定技術に向けられている。開示された動き推定技術にしたがえば、動きベクトル検索は、検索の時点で利用可能な計算リソースの量にしたがってスケーリングされる。例えば、動きベクトル検索の範囲は、利用可能な計算リソースにしたがって絶えず調節されることができる。より広範囲の検索は、計算リソースが許すときに実行されることができる。あるいは、計算リソースが不足しているときには、検索は、もっと制限されることがある。このように、スケーリング可能な動き推定技術は、ビデオ品質と、計算オーバーヘッドと、そして電力消費とをバランスさせることが可能である。
【０００６】
本スケーリング可能な動き推定技術は、一連の同心領域を、中央のアンカー点のところで始めそして外側に向けて移動するように検索するために構成されることができる。ある複数の実施形態では、同心領域は、ダイアモンドのような形にされることがある。特定のビデオ・フレーム又はマクロブロックに対して検索される同心領域の数は、利用可能な計算リソースの量にしたがって調節される。同心領域は、初期動きベクトル予測において固定される中央の点で始まる。中央アンカー点を評価すると、検索は、外側に次の同心領域へと進み、そして利用可能な計算リソースによって許される範囲へと続く。
【０００７】
上に記述された同心検索は、複数の方法で変形されることが可能である。１つの変形例は、検索の数を著しく増加させることなくより広い検索範囲をカバーするために同心領域を部分サンプリングすることである。例えば、第１ステージでは、最小値が見つかるまで、偶数番号領域が検索される。次に、第２ステージで、偶数番号領域と奇数番号領域との両者が、その最小値を中心として検索される。このタイプの検索方法は、複数解（multi-resolution）検索、同心領域検索と呼ばれることができる。最小値を見つけると、同心領域のアンカー点は、検索の各ステージにおいて現在の最小値を中心として複数の領域の中心を決めるように再設定されることができる。
【０００８】
１つの実施形態では、本明細書は、ビデオ・ブロックのアレイ内にアンカー点を定めること、該アンカー点のところに中心を置く複数の同心領域を定めること、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価すること、及び該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードすることを具備する、ビデオ・エンコーディング方法を提供する。
【０００９】
別の１つの実施形態では、本明細書は、ビデオ・ブロックのアレイを記憶するメモリ、及び該ビデオ・ブロックのアレイ内のアンカー点のところに中心を置く複数の同心領域を定め、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価し、そして該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードするプロセッサ、を具備するビデオ・エンコーダを提供する。
【００１０】
そのうえ１つの実施形態では、本明細書は、ビデオ・ブロックのアレイ内にアンカー点を定めるための手段、該アンカー点のところに中心を置く複数の同心領域を定めるための手段、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するために該同心領域に関係するビデオ・ブロックを評価するための手段、及び該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードするための手段、を具備する、ビデオ・エンコーダを提供する。
【００１１】
さらなる実施形態では、本明細書は、利用可能な計算能力の指示に基づいてビデオ・ブロック検索空間内で同心領域の数を選択すること、そしてエンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを同定するためにビデオ・ブロック検索空間内の該選択された数の同心領域に関係するビデオ・ブロックを評価すること、そして該同定されたビデオ・ブロックに基づき動きベクトルを用いて該現在のビデオ・ブロックをエンコードすることを具備する、ビデオ・エンコーディング方法を提供する。
【００１２】
本明細書は、しかも、本明細書中で説明するいずれかの技術の全て又は一部を実行するためのビデオ・エンコーダを形成する１又はそれより多くのプロセッサに行わせる命令を具備するコンピュータ読取り可能な媒体を考慮する。
【００１３】
１又はそれより多くの実施形態の詳細は、添付される図面及び下記の記載に説明される。その他の特徴、目的、及び利点は、説明と図面から、そして特許請求の範囲から明らかであろう。
【詳細な説明】
【００１４】
図１は、ビデオ・エンコーディング・システム１０を説明するブロック図である。図１に示されたように、システム１０は、ビデオ・ソース１２、ビデオ・エンコーダ１４、ビデオ・メモリ１６、及びビデオ・バッファ１８を含む。ビデオ・エンコーダ１４は、スケーリング可能な動き推定技術を実行する。説明されるように、ビデオ・エンコーダ１４は、検索の時点において利用可能な計算リソースの量にしたがって動きベクトル検索をスケーリングする。例えば、ビデオ・エンコーダ１４は、ビデオ・エンコーディング・システム１０に付随するデバイス内の利用可能な計算リソースにしたがって動きベクトル検索の範囲を調節する。より広範囲な検索は、計算リソースが許すときに実行されることができる。あるいは、計算リソースが不足するときには、検索は、さらに制限されることがある。このように、スケーリング可能な動き推定技術は、計算オーバーヘッドと電力消費に対してビデオ品質をバランスさせる。
【００１５】
ビデオ・ソース１２は、ビデオ系列を取得するカメラのようなビデオ取込みデバイス、又は事前に記録されたビデオ系列を記憶しているビデオ・アーカイブであり得る。ビデオ・エンコーダ１４は、ビデオ・ソース１２から得られるビデオ・データをビデオ・エンコーディング・プロセスの期間ビデオ・メモリ１６中に記憶する。ビデオ・エンコーダ１４は、各種のビデオ圧縮技術、例えば、ＭＰＥＧ−４，ＩＴＵ  Ｈ．２６１，ＩＴＵ  Ｈ．２６３及びＩＴＵ  Ｈ．２６４規格に概要を示されたもの、のうちのいずれかにしたがってビデオ・エンコーディングをサポートするように構成されることができる。ビデオ・コーディング・システム１０は、オーディオ・エンコーディング機能をさらに含むことができ、オーディオとビデオの両者のエンコーディングを可能にする。ビデオ・バッファ１８は、エンコードされたビデオ・データのための出力バッファを与える。
【００１６】
エンコードされたビデオ・データは、有線又は無線通信チャネルを経由して送信されることができる。ビデオ・エンコーディング・システム１０は、デバイス内に常駐することができ、それは有線又は無線通信をサポートするための適切な送信電子機器、受信電子機器、モデム、及び処理電子機器をさらに含む。例えば、ビデオ・エンコーディング・システム１０は、別の端末との通信のために装備された無線移動端末または有線端末内に常駐することができる。無線移動端末の例は、移動無線電話機、移動個人ディジタル補助装置（ＰＤＡ：personal digital assistants）、携帯型コンピュータ、又は無線通信能力をそしてビデオ・エンコーディング及び／又はデコーディング能力を装備したその他の移動デバイスを含む。有線端末の例は、デスクトップ・コンピュータ、テレビ電話機，ネットワーク機器、セット・トップ・ボックス、双方向テレビ、又はその他を含む。
【００１７】
ビデオ・エンコーダ１４は、スケーリング可能な動き推定技術を実行し、そこでは動きベクトル検索の範囲が検索の時点で利用可能な計算リソースの量にしたがってスケーリングされる。例えば、スケーリング可能な動き推定技術は、一連の同心領域を、中央領域で始めてそして外側に向けて移動するように検索するために構成されることができる。ある複数の実施形態では、同心領域は、同心のダイアモンドのような形にされることができる。ビデオ・エンコーダ１４は、利用可能な計算リソースの量にしたがって特定のビデオ・フレーム又はマクロブロックに対して検索する同心領域の数を調節することができる。このようにして、動きベクトル検索は、利用可能な計算リソースによって許される範囲へ連続する同心領域の全体にわたり外側に広がるように続く。品質しきい値を満足させる動きベクトルを同定すると、又は利用可能な計算リソースにしたがって決定される検索限度に達すると、ビデオ・エンコーダ１４は、動きベクトル検索を終了させる。
【００１８】
ビデオ・エンコーダ１４は、ハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合わせで実装されることができる。例えば、ビデオ・エンコーダ１４の様々な態様は、１又はそれより多くのディジタル信号プロセッサ（ＤＳＰ：digital signal processor）、マイクロプロセッサ、用途特定集積回路（ＡＳＩＣ：application specific integrated circuit）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field programmable gate array）、又はいずれかの別の同等の論理集積回路又は個別論理回路、同様にそのような構成素子の任意の組み合わせの中に実装されることができる。用語“プロセッサ”は、一般に上記の論理回路のいずれかを、単独で又は別の論理回路との組み合わせで呼ぶことができる。ソフトウェアで実装されるとき、ビデオ・エンコーダ１４に帰する機能は、例えば、ランダム・アクセス・メモリ（ＤＲＡＭ：random access memory）、読み出し専用メモリ（ＲＯＭ：read only memory）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ：non-volatile RAM）、電気的消去書き込み可能読み出し専用メモリ（ＥＥＰＲＯＭ：electrically erasable programmable ROM）、フラッシュ・メモリ、磁気媒体、光学的媒体、及びその他のようなコンピュータ読み取り可能な媒体上の命令として組み込まれることができる。その命令は、本明細書中で説明される機能の１又はそれより多くの態様をサポートするために実行される。
【００１９】
ビデオ・エンコーダ１４は、ビデオ・フレーム内のビデオ・ブロックにスケーリング可能な動き推定技術を適用する。各ビデオ・ブロックは、ビデオ・データをエンコードするピクセルのアレイを含む。ある複数の実施形態では、ビデオ・ブロックは、例えば、ＭＰＥＧ−４準拠ビデオ・エンコーディングに規定されるようなマイクロブロック又はマクロブロックであり得る。マクロブロックは、ピクセルの１６×１６アレイである。マイクロブロックは、ピクセルの８×８アレイである。しかしながら、他のビデオ・ブロック・サイズが使用されることが可能である。マイクロブロック又はマクロブロック中の各ピクセルは、ｎ−ビット値、例えば、８ビット、により表わされることができ、それは色と強度、例えば、クロミナンスとルミナンス、のようなピクセルの視的特性を規定する。しかしながら、動き推定は、通常、人間の視覚が色よりもルミナンス（輝度）の変化により敏感であるために、ルミナンス成分にだけ実行される。したがって、動き推定の目的のために、全体のｎ−ビット値は、所定のピクセルに関するルミナンスを定量化することができる。
【００２０】
現在のビデオ・フレーム中の各ビデオ・ブロックに対して、ビデオ・エンコーダ１４は、ビデオ・メモリ１６中に記憶された隣接する（前の又は次の）ビデオ・フレームに関するビデオ・ブロックを検索して、類似のビデオ・ブロックを同定する。ビデオ・エンコーダ１４は、同定したビデオ・ブロックとエンコードされようとしている現在のビデオ・ブロックとの間の差異を判断し、そして動きベクトルを使用して現在のビデオ・ブロックをエンコードし、その動きベクトルは現在のビデオ・ブロックと比較して最小の差異値をもたらすビデオ・ブロックを隣接フレームから同定する。最小の差異値は、現在のビデオ・ブロックに良く符合するビデオ・ブロックにより生成されるはずの絶対的な最小の差異値である必要は必ずしもなく、むしろ実際に評価されるこれらのビデオ・ブロック間での最小の差異値である。現在のビデオ・ブロックと動き推定を通して同定される予測ブロックとの間の差異をエンコードするプロセスは、一般に動き補償と呼ばれ、そしてこれらのエンコードされた差異の結果は、残差（residual）と呼ばれる。このようにして、独立した画像として各フレームをエンコードする代わりに、ビデオ・エンコーダ１４は、複数の隣接フレーム間の差異をエンコードする。動き推定は、現在のフレーム中のビデオ・ブロックと最もぴったりと符合する隣接フレーム中のビデオ・ブロックの同定を包含する。動きベクトルを使用してビデオ・ブロックをエンコードすることにより、ビデオ・データを伝送するために必要な帯域幅は、著しく削減されることが可能である。しかしながら、動きベクトル検索は、計算集約的であり、そして計算リソースへの相当な負荷と電力消費をもたらす。
【００２１】
図２は、スケーリング可能な動き推定技術を使用するビデオ・エンコーダ１４を説明するブロック図である。図２に示されるように、ビデオ・エンコーダ１４は、差異ユニット３２、動き推定（ＭＥ）ユニット３４、動き補償（ＭＣ）ユニット３６、変換（Ｔ）ユニット３８、量子化（Ｑ）ユニット４０、逆量子化（Ｑ−１）ユニット４２、逆変換（Ｔ−１）ユニット４４、及び総和器４６を含む。様々な実施形態において、上記のビデオ・エンコーダ１４の種々の構成要素は、上記のような、１又はそれより多くのプログラム可能なプロセッサの機能モジュール、ユニット、又は特徴点（feature）として実現されることができる。これから説明されるように、ＭＥユニット３４は、スケーリング可能な動き推定技術を適用するように構成される。スケーリング可能な動き推定技術は、本明細書中に説明されるような同心領域検索を利用することができる。
【００２２】
図２をさらに参照して、差異ユニット３６は、入力ディジタル・ビデオ・フレームＦｎから相互（inter）予測又は内部（intra）予測Ｐを引き算して、差異Ｄｎを生成する。相互予測又は内部予測Ｐは、ＭＣユニット３６から得られる。モード選択ユニット（図示されず）は、相互コーディングまたは内部コーディングが現在のビデオ・フレームＦｎに適用されるべきであるかどうかを判断する。変換ユニット３８は、標準圧縮変換、例えば、離散余弦変換（ＤＣＴ：discrete cosine transform）を適用して、差異ユニット３６の出力３２を周波数成分へと変換する。量子化ユニット４０は、変換された出力を量子化して、量子化された変換係数の集合であるＸを生成する。
【００２３】
ＭＥユニット３４とＭＣユニット３６は、例えば、ＭＰＥＧ−４，ＩＴＵ  Ｈ．２６３又はＩＴＵ  Ｈ．２６４圧縮法にしたがって、フレームＦｎの相互コーディングを実行するために協力する。ＭＥユニット３４とＭＣユニット３６は、１又はそれより多くの前にエンコードされたフレームＦ＾ｎ−１と比較して入力フレームＦｎの標準相互コーディングをサポートする。特に、ＭＣユニット３６は、１又はそれより多くの前のフレームＦ＾ｎ−１から動き補償された予測により相互予測Ｐを形成する。前のフレームは、逆量子化ユニット４２、逆変換ユニット４４、及び総和器４６によってエンコードされそして再生されて、再生されたフレームＦ＾ｎ−１を生成する。
【００２４】
ＭＥユニット３４は、現在のフレームＦｎ中のビデオ・ブロックを最もきっちりと近似するビデオ・ブロックに関する再生されたフレームＦ＾ｎ−１の少なくとも一部を検索し、そしてＭＣユニット３６による使用のために動きベクトル（ＭＶ）を生成する。図２にさらに示されるように、ＭＥユニット３４は、しかも利用可能な計算能力の指示を受け取り、そしてこの指示を動きベクトル検索の範囲を制御するために使用する。このようにして、ＭＥユニット３４は、計算能力の利用可能な量に敏感であり、そして計算オーバーヘッドと電力消費に対してビデオ品質をバランスさせるように検索を制御する。ＭＣユニット３６は、現在のビデオ・ブロックとＭＥユニット３４によって生成された動きベクトルにより同定される予測ブロックとの間の差異をエンコードする。
【００２５】
図３は、図２のＭＥユニット３４を非常に詳細に説明するブロック図である。ＭＥユニット３４は、本明細書中に説明されるような、スケーリング可能な動き推定技術を実行するために構成される。図３の例では、ＭＥユニット３４は、検索コントローラ４８、検索ユニット５０、ビデオ・メモリ５２、検索メモリ５４、及びメモリ制御ユニット５６を含む。検索ユニット５０は、現在エンコードされるフレームを有するビデオ・ブロックに類似する前にエンコードされたフレーム内のビデオ・ブロックを同定するために検索を実行する。検索に基づいて、検索ユニット５０は、エンコードされようとしている現在のフレームとその現在のフレームに最もぴったりと符合する前にエンコードされたフレームとの間の差異を特徴づける動きベクトルの集合を生成する。
【００２６】
検索コントローラ４８は、利用可能な計算能力に基づいて検索ユニット５０により実行される検索の範囲を制御する。検索ユニット５０により実行される検索は、計算集約型である。検索コントローラ４８は、計算オーバーヘッドと電力消費に対するビデオ品質をバランスさせるために検索の範囲を制御する。もし、利用可能な計算能力が比較的高い場合には、例えば、検索コントローラ４８は、ビデオ品質を高める拡大検索を認める。もし利用可能な計算能力が比較的低い場合には、しかしながら、検索コントローラは、過剰な計算負荷と関係する過剰な電力消費とを回避するために検索の範囲を制限する。
【００２７】
検索ユニット５０は、本明細書中で説明されるような、同心領域検索を適用することができる。同心領域検索にしたがえば、検索ユニット５０は、検索空間中のビデオ・ブロックのアレイ内にアンカー点を定め、そしてアンカー点を中心にする複数の同心領域を定める。同心領域の数は、利用可能な処理能力の指示にしたがって選択されることができる。検索ユニット５０は、エンコードされようとしている現在のビデオ・ブロックと比較した差異に関して、同心領域に関係するビデオ・ブロックを評価するために同心領域を検索する。この評価に基づいて、検索ユニット５０は、エンコードされようとしている現在のビデオ・ブロックと比較して最小の差異値を生み出すビデオ・ブロックを同定し、そしてその同定したビデオ・ブロックに基づいて動きベクトルを生成する。再び、より小さな差異値が評価されていないビデオ・ブロックにより生成されることがあり得るとはいえ、最小差異値は、検索ユニット５０により評価された複数のビデオ・ブロックの間で最も小さい差異値を呼ぶ。ビデオ・エンコーダ１４は、動き推定ユニット３４により生成される動きベクトルを使用して現在のビデオ・ブロックをエンコードする。特に、現在のビデオ・ブロックと動きベクトルにより同定された予測ブロックとの間の差異は、動き補償ユニット３６によりエンコードされる。
【００２８】
検索ユニット５０は、中央領域から始めて、そして次に一連の候補領域全体にわたり検索を適用するために外側に拡大する。再び、検索コントローラ４８は、利用可能な計算能力に基づいて検索ユニット５０により検索される領域の数を制御する。検索コントローラ４８は、利用可能な計算能力が変化するにつれて検索ユニット５０により検索される領域数を絶えず調節することができる。検索ユニット５０により検索される同心領域の数は、そのビデオ・ブロックに対して検索が始められる時点における利用可能な計算能力に基づいてエンコードされようとしている各ビデオ・ブロックに対して検索コントローラ４８により事前に設定されることができる。
【００２９】
代案として、検索ユニット５０により検索される同心領域の数は、検索の過程の間に制御されることができる。このケースでは、利用可能な計算能力が増加する又は減少する場合には、検索される同心領域の数は、その検索の過程の間にそれぞれ増加される又は減少されることができる。ある複数の実施形態では、検索ユニット５０により検索される領域の数が利用可能な計算能力のレベルに基づいて決定される限度を超えるまで、検索は続けられることができる。検索ユニット５０により検索される領域の数は、しかも、利用可能な計算リソースが少ない場合でさえ、ビデオ品質の少なくとも最低レベルを確保するための最小数の領域に行われることができる。
【００３０】
ビデオ・メモリ５２は、ビデオ取込みデバイス又はビデオ・アーカイブのようなビデオ・ソースにより得られるビデオ・データを記憶する。検索メモリ５４は、最も類似している現在と前にエンコードされたビデオ・フレーム中のビデオ・ブロックの同定のために検索ユニット５０により検索されようとしている候補ビデオ・ブロックのアレイを記憶する。検索メモリ５４は、候補ビデオ・ブロックの全体又はフレームの一部を記憶することができる。候補ビデオ・ブロックは、参照フレームからのビデオ・ブロックであり、それはエンコードされようとしている現在のフレームに先立つものか引き続くもののどちらかである前にエンコードされたフレームであり得る。
【００３１】
検索ユニット５０は、アンカー点と同心領域とに関係するビデオ・ブロックを評価して、エンコードされようとしている現在のビデオ・ブロックと比較して差異値を決定する。候補ビデオ・ブロックと現在のビデオ・ブロックとの間の類似性は、差異値、例えば、差異の絶対値の和（ＳＡＤ：sum of absolute difference）メトリック又は二乗差の和（ＳＳＤ：sum of squared difference）メトリック、として表わされることができ、それは現在と前にエンコードされたビデオ・フレーム中のビデオ・ブロックとの間のピクセル差異を定量化する。ピクセル差異は、例えば、ルミナンスの差異として表わされることができる。
【００３２】
検索ユニット５０は、検索メモリをアクセスして、現在のフレーム内の候補ビデオ・ブロックと前にエンコードされたフレームの同心領域内のビデオ・ブロックとを取り出す。検索ユニット５０により検索されたビデオ・ブロックは、例えば、マクロブロック又はマイクロブロックのような大きさに分けられることができる。メモリ制御ユニット５６は、検索コントローラ４８の制御の下で動作し、候補ビデオ・ブロックを評価する際に検索ユニット５０による使用のためにビデオ・データをビデオ・メモリ５２から検索メモリ５４へと転送する。例えば、検索コントローラ４８は、メモリ制御ユニット５６を制御することができ、その結果、検索ユニット５０により検索されようとしている同心領域に関係するビデオ・ブロックは検索メモリ５４に転送される。前にエンコードされたフレーム内のビデオ・ブロックに対する現在のフレームからのビデオ・ブロックの比較に基づいて、検索ユニット５０は、前にエンコードされたフレーム中の最も類似するビデオ・ブロック、すなわち、評価した複数のビデオ・ブロックの間で最小の差異値を有するビデオ・ブロック、を同定し、そして現在エンコードされるビデオ・フレームと比較して前のビデオ・ブロックの位置を同定する動きベクトル（ＭＶ）を生成する。
【００３３】
検索コントローラ４８により受け取られる計算能力の指示は、様々な方法で表現されることができる。例えば、検索コントローラ４８は、所定のフレーム又はビデオ・ブロックの動き推定の際に使用するためにプロセッサ・コアから利用可能なサイクル数として表わされる計算能力指示を受け取ることができる。サイクル数は、単位時間当たりのサイクル数、若しくはあるフレームに対する又はそのフレームを有するビデオ・ブロックに対する動き推定のために利用可能なサイクルの絶対数を指定することができる。あるいは、検索コントローラ４８は、利用可能な処理サイクル数に比例するインデックス値を受け取ることができる。例えば、検索コントローラ４８は、０からｎのスケールで計算能力インデックス値を受け取ることができる、ここで、０は動き推定のために利用可能な計算能力が無いことを表し、そしてｎは計算能力の最大利用可能性を表す。さらに代わりのものとして、検索コントローラ４８は、動き推定のために利用可能な最大の計算能力の割合を指示する割合の値を受け取ることができる。
【００３４】
計算能力指示は、頻繁なインターバルで絶えず更新されることができる。例えば、最新の計算能力指示は、周期的インターバルで検索コントローラ４８にプロセッサ・コアによって与えられることができる。別のケースでは、検索コントローラ４８は、周期的インターバルで又は動き推定プロセス内の異なる段階で計算能力指示を要請することができる。特に、検索コントローラ４８は、ビデオ・フレームに対する動き推定の始めにおいて計算能力指示を要請することができる。あるいは、検索コントローラ４８は、ビデオ・フレーム内の各ビデオ・ブロックの動き推定の始めにおいて計算能力指示を要請することができる。検索コントローラ４８は、レジスタ又は他の記憶素子をアクセスすることができ、計算能力指示を取り出すことができる。このケースでは、プロセッサ・コアは、検索コントローラ４８による取り出しのために計算能力指示を記憶素子に継続的に又は定期的に書き込むことができる。
【００３５】
別の代わりのものとして、検索コントローラ４８は、定常状態計算能力に対して調節の増分／減少分として計算能力指示を受け取ることができる。例えば、絶対値、インデックス値、又は割合の値の代わりに、検索コントローラ４８は、動き推定のための計算能力が１つの一定量だけそれぞれ増加されようとしているか減少されようとしているかを指示する増加（１）値又は減少（０）値のいずれかを受け取ることができる。時間の期間全体にわたって受け取られる増加／減少調節に基づいて、検索コントローラ４８は、動き推定のために利用可能な計算能力の推定値を維持管理し、そしてその推定値を検索ユニット５０により実行される検索の範囲を制御するために使用する。
【００３６】
これゆえ、検索コントローラ４８によって使用される計算能力指示は、様々な形式のうちのいずれかをとることができ、与えられた指示は、ＭＥユニット３４によって実行される動き推定プロセスに向けられることが可能な計算能力を表すために一般に働く。それぞれのケースでは、検索コントローラ４８は、検索ユニット５０によって実行されるように検索の範囲まで利用可能な計算能力をマッピングする。同心領域検索のケースでは、検索の範囲は、検索されようとしている領域の数として表わされることができ、中央の領域から始まり、それから同心領域のそれぞれを横切って外側へ広がる。同心領域は、その同心領域に関係するビデオ・ブロックがエンコードされようとしている現在のビデオ・ブロックと比較して別の値を決定するために評価されるという意味で、検索される。
【００３７】
低いレベルの計算能力が利用可能なときには、例えば、同心領域検索は、限られた範囲まで外側に広げられるだけである。言い換えると、検索ユニット５０は、利用可能な計算能力と釣り合う数の同心領域に関係するビデオ・ブロックを評価するだけである。高いレベルの計算能力が利用可能なときには、同心領域検索は、利用可能な計算能力と釣り合う数の同心領域によりもっともっと外へと広がることができ、又はもし最大の計算能力が利用可能である場合には、おそらく最大数の同心領域へと広がることができる。
【００３８】
図４Ａ、図４Ｂ及び図４Ｃは、本明細書にしたがったスケーリング可能な動き推定技術の一部を形成する同心領域検索を説明する検索空間図である。図４Ａ、図４Ｂ及び図４Ｃでは、検索空間は、エンコードされようとしているビデオ・フレーム内のビデオ・ブロックの少なくとも一部を規定する。図４Ａでは、参照番号５７は、一連の隣接するビデオ・ブロックを示す。そのビデオ・ブロックは、検索空間内で２次元アレイに配置され、そしてマクロブロック、マイクロブロック、又は他のブロック・サイズのような大きさに区切られることができる。アンカー点Ｄ０と一連の同心領域Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５は、繰り返しの検索ウィンドウを定める。図４の例では、領域Ｄ１−Ｄ５は、同心ダイアモンドとして形作られる。アンカー点Ｄ０は、初期に予測した動きベクトル位置に対応する。同心ダイアモンド領域は、予測したＭＶ位置を中心として中心を決められる。このように、同心ダイアモンド検索は、検索がその順番で進む順番を設定する。
【００３９】
検索ウィンドウ内では、検索ユニット５０は、現在エンコードされるフレーム内のビデオ・ブロックに最もぴったりと符合する前にエンコードされたフレームからビデオ・ブロックを検索する。前にエンコードされたフレームは、参照フレームとして呼ばれることができる。一般に、検索ユニット５０は、エンコードされようとしているフレーム中のビデオ・ブロックと検索ウィンドウ内のビデオ・ブロックとの間の差異値を計算して、最も類似するビデオ・ブロックを同定する。動作では、検索は、アンカー点Ｄ０で始まる。アンカー点Ｄ０は、エンコードされようとしているビデオ・ブロックと位置が合わせられている、すなわち、そのビデオ・ブロックのフレームと同じ位置にある参照フレーム中のビデオ・ブロックを同定する。あるいは、ある複数の実施形態では、アンカー点Ｄ０は、ビデオ・フレーム・コンテント解析に基づいて別の位置に置かれることができる。いずれのケースでも、アンカー点Ｄ０は、エンコードされようとしている現在のフレーム中のビデオ・ブロックと比較されようとしている参照フレーム中の第１のビデオ・ブロックを同定する。
【００４０】
アンカー点Ｄ０は、評価されようとしているビデオ・ブロックの左上のピクセル座標を同定することができる。例えば、各ビデオ・ブロックは、それぞれがＸ−Ｙ座標によってアドレスを呼び出せるピクセルのアレイを含む。アンカー点Ｄ０は、ビデオ・ブロック５９の左上のピクセルのＸ−Ｙ座標を同定する。ビデオ・ブロック５９は、図４Ａでは灰色に暗くされている。差異値、例えば、ＳＡＤ又はＳＳＤ、が参照フレームのビデオ・ブロック５９と現在のフレーム中でエンコードされようとしているビデオ・ブロックとの間で一旦決定されると、検索ユニット５０は、第１の同心ダイアモンドＤ１によって同定されるビデオ・ブロックを取り囲むように外側に検索ウィンドウを広げる。
【００４１】
ダイアモンドＤ１は、アンカー点Ｄ０と中心を合わせられる。ダイアモンドＤ１の周囲は、複数のビデオ・ブロックの左上のＸ−Ｙ座標を横切る又は含む。十分な計算能力が与えられると、検索ユニット５１は、既に検索したいずれかのビデオ・ブロック、例えば、アンカー点Ｄ０によって同定されるビデオ・ブロック５９、を除いて、ダイアモンドＤ１の周囲上に又はその内部に左上Ｘ−Ｙ座標を有するビデオ・ブロックを次に評価する。ダイアモンドＤ１の周囲上に又はその内部に左上Ｘ−Ｙ座標を有するビデオ・ブロック６１は、図４Ｂでは灰色に暗くされている。検索ユニット５０は、複数のビデオ・ブロック６１間の最小の差異値を検索する。
【００４２】
一旦、検索がダイアモンドＤ１に対して完了すると、十分な計算能力が与えられると、検索は、同心ダイアモンドＤ２によって同定されるビデオ・ブロックに向かって外側に広がる。図４Ｃの例では、検索ユニット５０は、ダイアモンドＤ２の周囲によって指定されるビデオ・ブロックを検索する。ダイアモンドＤ１のケースにおけるように、ダイアモンドＤ２の周囲は、ビデオ・ブロックの集合の左上ピクセル座標を横切るか囲まれるかのどちらかである。検索ユニット５０は、アンカー点Ｄ０と同心ダイアモンドＤ１によって定められる検索ウィンドウの一部として既に検索されたビデオ・ブロックを除いて、ダイアモンドＤ２の周囲の上の又はその内部のビデオ・ブロックを検索する。ダイアモンドＤ２内部で検索されたビデオ・ブロックは、灰色に暗くされ、そして参照番号６３によって識別される。
【００４３】
プロセスは、利用可能な計算能力によりサポートされる範囲へと、残りの同心ダイアモンドＤ３，Ｄ４，Ｄ５の全体にわたり同様の方法で外へと続く。もし、十分な計算能力がないと検索コントローラ４８が判断する場合には、検索は、同心領域検索のどのようなレベルであっても検索ユニット５０によって終らせられることがある。ある複数のケースでは、例えば、検索は、アンカー点Ｄ０によって同定されるビデオ・ブロックにだけ広がることがある。別のケースでは、より大きな計算能力を用いて、検索は、その検索の時点において利用可能な計算能力のレベルに応じて、同心ダイアモンドＤ１，Ｄ２，Ｄ３，Ｄ４，又はＤ５に関係するビデオ・ブロックの評価に広がることができる。同様に、検索ユニット５０は、他の制約、例えば、差異値しきい値の満足、最大繰り返し制約、又は最小変化制約、に基づいて検索を終わらせることができる。
【００４４】
例えば、検索ユニット５０は、もしビデオ・ブロックのうちの１つが所望の差異しきい値、例えば、ＳＡＤしきい値、を満足する差異値を生成する場合には、検索を終わらせることができる。言い換えると、もし、ビデオ・ブロックのうちの１つが、差異しきい値と比較して十分に小さい差異値、例えば、ＳＡＤ値、を生成する場合には、検索は終わらせられる。さらなるオプションとして、もし連続する同心領域において得られる複数の最小差異値間の差異値の変化が適用可能なしきい値よりも小さい場合には、検索ユニット５０は、検索を終わらせることができる。この制約は、複数の同心領域間の改善が小さいときにより良いビデオ・ブロックが得られる可能性がありそうもないという仮定に基づくことができる。
【００４５】
図４Ａ−図４Ｃに示された領域は、各領域が共通のアンカー点Ｄ０に関して中心を置くという点で同心である。それに加えて、各同心領域Ｄ１−Ｄ５は、異なるサイズであるが同様の形を有することができる。図４Ａ−図４Ｃがアンカー点Ｄ０と５つの同心領域Ｄ１−Ｄ５を示すとはいえ、より少数の又はより多数の同心領域があり得る。したがって、図４Ａ−図４Ｃに示された領域の数は、説明の目的のために与えられ、そして限定と考えられるべきではない。しかも、異なる形を有する同心領域が、使用されることができる。ある複数の実施形態では、例えば、円形、三角形、矩形又は非対称な形が、使用されることができる。
【００４６】
図５は、代わりのスケーリング可能な動き推定技術の一部を形成する同心、可動ダイアモンド検索を説明する検索空間図である。図５に図示されるダイアモンド検索は、動き推定のための検索ウィンドウを定めるために同心領域の漸進的な外側への検索に依存するという意味で図４Ａ−図４Ｃに示された検索に一般的に対応する。しかしながら、図５は、検索結果にしたがう同心ダイアモンドの動きをさらに説明する。検索が初期アンカー点Ｄ０から同心ダイアモンドＤ１へそして次に同心ダイアモンドＤ２へと進んだ後で、アンカー点は再設定される。特に、２つの同心ダイアモンドＤ１，Ｄ２が検索された後で、アンカー点Ｄ０は、アンカー点Ｄ０’に再設定される。
【００４７】
新たなアンカー点Ｄ０’は、ダイアモンドＤ１，Ｄ２の検索の間に最小の差異値をもたらしたビデオ・ブロックの左上ピクセル座標を同定する。同心ダイアモンドＤ１’とＤ２’は、次にさらに検索するために新たなアンカー点Ｄ０’のまわりに固定される。プロセスは、新たな同心ダイアモンドＤ１’とＤ２’が検索された後で、新たなアンカー点Ｄ０’を別のアンカー点Ｄ０”に再設定することにより継続することができる。このように、検索ウィンドウは、同心的に外側に広がるだけでなく、検索の選択されたステージにおいてビデオ・フレーム内の新たなアンカー点へ移動する。
【００４８】
２つのダイアモンド毎の検索の後でアンカー点Ｄ０の移動は、説明の目的のために上に記述され、そして限定するように考えられるべきではない。むしろ、アンカー点は、任意の数の同心ダイアモンドが検索された後で移動されることができる。例えば、アンカー点は、３つの、４つの、又はそれより多くの同心ダイアモンドが検索された後で、移動されることができる。それに加えて、アンカー点Ｄ０において検索されるビデオ・ブロックは、最小の差異値を生み出すことがあり、そのケースでは、検索ウィンドウを新たなアンカー点Ｄ０’に移動させる必要がない。
【００４９】
検索ウィンドウの移動及び各アンカー点を中心として検索される同心ダイアモンドの数は、本明細書中に説明されるように、検索の開始において又は検索の進行の間に利用可能な計算能力の量にしたがって検索コントローラ４８による制御を受けることがある。例えば、検索コントローラ４８は、特定のフレーム又はビデオ・ブロックに関する動き推定の開始における利用可能な計算能力の指示に基づいて、アンカー点の移動の最大数、及び各アンカー点において検索されようとしている同心ダイアモンドの最大数を指定することができる。あるいは、検索コントローラ４８は、利用可能な計算能力の変化の指示として動きベクトル検索の進行の間の移動の数又は同心ダイアモンドの数を絶えず制御することができる。いずれのケースでも、同心ダイアモンド検索の範囲は、利用可能な計算能力にしたがって拡大縮小可能である。
【００５０】
最適な動きベクトル（ＭＶ：motion vector）を見出すことの確率は、初期に予測された動きベクトル位置からの距離が増加するにつれて一般的に減少する。一般的に、予測されるＭＶは、エンコードされようとしているビデオ・ブロックの位置に相対的に、左と上に隣接するビデオ・ブロックの中間値として計算される。網羅的な検索を使用する少数のビデオ系列から抽出される動きベクトルの分布は、予測される動きベクトルが最適である最も可能性の高い候補であることを示す。本明細書中に記載された動き推定技術は、この認識（realization）を利用する。さらに多くの計算リソースが利用可能であるので、動きベクトル検索は、最初に予測された動きベクトル候補から始まり、そして同心ダイアモンド中で外へと移動する。これゆえ、検索は、最も可能性のある候補、すなわち、最初の予測、で始まり、そして利用可能な計算能力により許される範囲へと同心ダイアモンド領域を横切って外側へと移動する。
【００５１】
利用可能な計算能力の量は、実行されることが可能である動きベクトル検索の数に影響を及ぼす。下記の表は、図４Ａ−図４Ｃに示された同心ダイアモンドＤ０−Ｄ５の集合全体にわたる具体例のスケーリング可能な検索系列を説明する。特に、表１は、異なる量の計算能力によって可能にされる異なる数の検索に対する検索系列を示す。
【表１】
2009513068.tif 000003
【００５２】
表１に示されたように、不十分な計算能力のために検索が利用可能でないとき、検索は実行されない。その代りに、検索ユニット５０は、アンカー点Ｄ０によって同定される動きベクトル（ＭＶ）を単純に選択する。もし、５から１２の検索が利用可能である場合に、検索ユニット５０は、アンカー点Ｄ０とダイアモンド領域Ｄ１との両方を検索する。このケースでは、アンカー点Ｄ０は、１つの検索として数えられ、そしてダイアモンドＤ１により指定される４つのビデオ・ブロックは、４つの検索として数えられ、合計５つの検索になる。もし、１３から２５の検索が利用可能である場合には、検索ユニット５０は、アンカー点Ｄ０と、第１の同心ダイアモンドＤ１と、そして第２の同心ダイアモンドＤ２を検索する。もし、さらなる検索が利用可能である場合には、検索は上へと拡大されることが可能であり、その結果、より外側の同心ダイアモンド、例えば、Ｄ３，Ｄ４，Ｄ５、が同様に検索されることができる。
【００５３】
図４Ａ−図４Ｃに図示された、基本的な検索プロセスは、多くの方法で変形されることができる。１つの変形は、図５に示されるような、移動検索ウィンドウを与えることである。別の１つの変形は、検索の数を著しく増加させることなく、より広い検索範囲をカバーするために、同心ダイアモンドを部分サンプリングすることである。例えば、第１ステージでは、検索ユニット５０は、偶数番号のダイアモンド、例えば、Ｄ０，Ｄ２，Ｄ４、だけを検索することができる。一旦、第１ステージが最小の差異値を生成すると、偶数と奇数のダイアモンドがその最小値に対応するアンカー点を中心として再び中心を決められることができる。次に、第２ステージでは、偶数と奇数の両方のダイアモンドがもっと良い動きベクトルを同定するための試みで検索される。このタイプの検索は、それが最初にダイアモンドの部分サンプリングを含み、そのダイアモンドが一旦中心を決め直されると、ダイアモンドの全体の検索が続くという点で、複数解（multi-resolution）ダイアモンド検索と呼ばれることができる。上に記載された変形は、例の目的で与えられる。しかしながら、別の変形が、本明細書中に説明されるように、同心ダイアモンド検索の一般的な枠組みの範囲内で可能である。
【００５４】
図６は、同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。図６は、図４Ａ−図４Ｃの検索空間図に示されたプロセスを一般的に説明する。図６に示されたように、検索ユニット５０は、初期動きベクトル予測に対応するＸ−Ｙ座標のところに同心ダイアモンドの集合を固定する（６０）。初期アンカー点に対応する初期動きベクトル予測は、エンコードされようとしているビデオ・ブロックに隣接して位置する左と上に隣接するビデオ・ブロックの中間値に基づくことができる。初期アンカー点を決めるための他の技術が、使用されることができる。例えば、初期アンカー点は、エンコードされようとしている現在のビデオ・ブロックに相対的に定められた場所に位置するビデオ・ブロックの動きベクトルに基づいて線形関数又は非線形関数を使用して選択されることができる。例えば、ビデオ・ブロックの動きベクトルに基づくメディアン関数、平均関数、又は重み付け関数が、使用されることができる。検索ユニット５０は、アンカー点により同定されるビデオ・ブロックとエンコードされようとしているビデオ・ブロックとの間の差異値を決定する。もし差異値が適用可能なしきい値、例えば、ＳＡＤしきい値、よりも小さい場合には（６２）、検索は終了されることができる。このケースでは、動きベクトルは、アンカー点から選択されることができる（６４）。
【００５５】
もし差異値が差異しきい値を超える場合には（６２）、しかしながら、第１の同心ダイアモンド領域へと外側に検索を拡大するために十分な計算能力があるかどうかを、検索コントローラ４８は判断する（６６）。もし拡大をサポートするために十分な計算能力がない場合には、動きベクトルは、アンカー点から、すなわち、初期予測から、選択されることができる（６４）。しかしながら、もし十分なコンピュータ能力が利用可能である場合には（６６）、検索コントローラ４８は、検索ユニット５０が検索を外側に拡大し、そして次のダイアモンドの動きベクトルを検索することを可能にする（６８）。もし検索ユニット５０がそのダイアモンド内に満足する差異値を有するビデオ・ブロックを見出す場合には（７０）、検索ユニットは、検索からの最善の動きベクトルとしてその直接関係するビデオ・ブロッに付随する動きベクトルを選択する（７６）。
【００５６】
もし差異しきい値が満足されず（７０）、そして最後のダイアモンドに未だ達せず（７２）、そして十分な計算能力がある場合には（７４）、検索ユニット５０は、次の同心ダイアモンドに検索を外側に広げる（７８）。上記の条件（７０）、（７２）、（７４）の１つも満足されない場合には、検索ユニット５０は、その点までの検索で見出された最善の動きベクトルを選択する（７６）。検索を外側に広げると（７８）、検索ユニット５０は、次のダイアモンドを検索し（６８）、そして条件（７０）、（７２）、（７４）のうちの１つが満足されるまで繰り返して動き推定プロセスを継続し、その満足された時点で、検索は終了し、そして最善の動きベクトルが選択される（７６）。
【００５７】
もし不十分な計算リソースしか利用可能でない場合には、検索は、同心ダイアモンドを十分にカバーできないことがある。このケースでは、次善の動きベクトルが求められることが、可能である。しかしながら、多くのケースでは、最善の又は満足される動きベクトルは、アンカー点から又は初めのいくつかの同心ダイアモンドから明らかにすることができる。いずれのケースでも、同心ダイアモンド・アプローチは、ビデオ品質と消費電力及び計算リソースとの間のトレードオフを与える。
【００５８】
図７は、可動アンカー点を有する同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。図７に説明される技術は、一般に図６に説明された技術に対応する。しかしながら、図７は、例えば、図５の検索空間図に図示されたような同心ダイアモンドのアンカー点の動きをさらに説明する。図７に示されたように、検索ユニット５０は、同心ダイアモンドに対するアンカー点を初期予測から決定される座標に設定する（８０）。検索ユニット５０は、次に、そのアンカー点を中心として同心ダイアモンドの中心を決める（８４）。
【００５９】
検索ユニット５０は、アンカー点により同定されたビデオ・ブロックとエンコードされようとしているビデオ・ブロックとの間の差異値を決定する。もし差異値が適用可能なしきい値、例えば、ＳＡＤしきい値、よりも小さい場合には（８６）、検索は終了されることができる。このケースでは、動きベクトルは、アンカー点から選択されることができる（８８）。しかしながら、もし差異値が差異しきい値を超える場合には（８６）、第１の同心ダイアモンド領域へと外側に検索を拡大するために十分な計算能力があるかどうかを、検索コントローラ４８は判断する（９０）。もし拡張をサポートするために十分な計算能力がない場合には、動きベクトルは、アンカー点から、すなわち、初期予測から、選択されることができる（８８）。
【００６０】
しかしながら、もし十分なコンピュータ能力が利用可能である場合には（９０）、検索コントローラ４８は、検索ユニット５０が検索を外側に拡大し、そして次のダイアモンドの動きベクトルを検索することを可能にする（９２）。もし検索ユニット５０がそのダイアモンド内に満足する差異値を有するビデオ・ブロックを見出す場合には（９４）、検索ユニットは、検索からの最善の動きベクトルとしてその直接関係するビデオ・ブロックに付随する動きベクトルを選択する（９８）。もし差異しきい値が満足されず（９４）、そして十分な計算能力があり（９６）、そして最後の（外側の境界の）ダイアモンドに未だ到達していない場合には（１００）、検索ユニット５０は、次の同心ダイアモンドに検索を外側に広げる（１０２）。上記の条件（９４）、（９６）のいずれも満足されない場合には、検索ユニット５０は、その点までの検索で見出された最善の動きベクトルを選択する（９８）。
【００６１】
もし、条件（９４）、（９６）が満足されるが、最大のダイアモンドに到達している場合には、検索ユニット５０は、その点までの検索から返される最小差異値でアンカー点を再設定する。図５を参照して説明したように、新たなアンカー点は、ビデオ・ブロックの左上ピクセル座標を同定することができ、それはそのダイアモンドの検索の間に最小の差異値をもたらす。同心ダイアモンドは、次にさらに検索するために再設定されたアンカー点を中心として固定される、すなわち、再び中心を決められる（８４）。このようにして、検索は、同心的に外側に広がるだけでなく、検索の選択されたステージでビデオ・フレーム内の新たなアンカー点に同様に移動する。アンカー点を再設定する前に検索されるダイアモンドの数は、変化することがある。再設定した後で、検索は、再設定したアンカー点で始まり、同心ダイアモンドの終わりまで継続する。
【００６２】
アンカー点が再設定されないときには、検索ユニット５０は、検索を外側へ広げ（１０２）、そして次のダイアモンドを検索する（９２）。拡大と検索プロセスは、条件（９４）、（９６）、（１００）のうちの１つが満足されるまで繰り返し継続する。ある複数の実施形態では、繰り返しの限度が、同様に適用されることができ、その結果、さらなる計算能力が利用可能である場合でさえ、プロセスは終了する。このように、検索コントローラ４８は、過度に長い検索又は無限の検索、そして特により良い結果を生み出す可能性が低い特異な検索を回避する。図６と図７の例では、検索コントローラ４８は、検索の過程の間に利用可能な計算リソースをモニタし、そして計算リソースが使い切られたときに検索を終了するように検索ユニット５０を管理する。別の実施形態では、検索コントローラ４８は、検索が始まる前に事前に決められた数を指定することができる。このケースでは、同心ダイアモンド検索が検索の事前に決められた数を使い切ってしまったときに、検索は終了される。検索の数は、エンコードされようとしている各ビデオ・ブロック、例えば、マクロブロック又はマイクロブロック、に対して又は全体のフレームに対して設定されることができる。
【００６３】
図８は、複数解同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。図８に示されたように、検索ユニット５０は、参照フレーム中のビデオ・ブロックの初期予測に基づいて同心領域検索のためにアンカー点を設定する（１０４）、その参照フレームはエンコードされようとしている現在のフレーム中のビデオ・ブロックを最もぴったりと近似する。検索ユニット５０は、そのアンカー点において同心ダイアモンドの集合を固定し（１０６）、そして次に、奇数ダイアモンドの動きベクトルの検索を管理する（１０８）。もし中央のアンカー点がＤ０を指定され、そして引き続くダイアモンド領域がＤ１−Ｄｎを指定される場合には、奇数番号のダイアモンドの検索は、ダイアモンドＤ１，Ｄ３，Ｄ５等々へ広がるはずである。
【００６４】
奇数番号のダイアモンド検索において考慮される複数のビデオ・ブロック間の最小差異値を同定すると、検索ユニット５０は、最小の結果にしたがってアンカー点を再設定する（１１０）、そしてその再設定されたアンカー点のところに同心ダイアモンドを固定する（１１２）。検索ユニット５０は、次に、奇数番号と偶数番号両方の動きベクトルを検索する（１１４）、そして検索から最善の動きベクトル、すなわち、エンコードされようとしているビデオ・ブロックに対して最小の差異値をもたらすビデオ・ブロックに関係する動きベクトル、を選択する（１１６）。図８により説明される複数解同心ダイアモンド検索は、ダイアモンドの部分サンプルされた検索を、すなわち、奇数ダイアモンドだけを最初にサンプリングすることにより、引き続いてより正確に調整されたアンカー点を中心として中心を決められている全体の検索によって、可能にする。
【００６５】
様々な実施形態が説明されてきた。これらの実施形態そしてその他の実施形態は、特許請求の範囲の範囲内である。
【図面の簡単な説明】
【００６６】
【図１】ビデオ・エンコーディング・システムを説明するブロック図である。
【図２】スケーリング可能な動き推定技術を利用するビデオ・エンコーダを説明するブロック図である。
【図３】スケーリング可能な動き推定技術を実行するように構成された動き推定ユニットを説明するブロック図である。
【図４Ａ】スケーリング可能な動き推定技術の一部を形成する同心領域検索を説明する検索空間図である。
【図４Ｂ】スケーリング可能な動き推定技術の一部を形成する同心領域検索を説明する検索空間図である。
【図４Ｃ】スケーリング可能な動き推定技術の一部を形成する同心領域検索を説明する検索空間図である。
【図５】代わりのスケーリング可能な動き推定技術の一部を形成する同心、可動領域検索を説明する検索空間図である。
【図６】同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。
【図７】可動アンカー点を有する同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。
【図８】複数解同心領域検索を使用するスケーリング可能な動き推定技術を説明するフロー図である。
【図１】
2009513068.tif 000004
【図２】
2009513068.tif 000005
【図３】
2009513068.tif 000006
【図４Ａ】
2009513068.tif 000007
【図４Ｂ】
2009513068.tif 000008
【図４Ｃ】
2009513068.tif 000009
【図５】
2009513068.tif 000010
【図６】
2009513068.tif 000011
【図７】
2009513068.tif 000012
【図８】
2009513068.tif 000013
【国際調査報告】
2009513068.tif 000014
2009513068.tif 000015
2009513068.tif 000016