(57)【要約】      （修正有）【課題】ビデオ圧縮システムにおいて動き推定を実行する方法を改善する。【解決手段】ビデオプロセッサは、プログラム可能な動き推定器と、コントローラと、を具備する。プログラム可能な動き推定器は、以前のフレームにおける一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するのに用いられる。コントローラは、特定の探索を実行するために前記動き推定器をプログラムするのに用いられる。【選択図】図３
2011160438.tif 000002
【特許請求の範囲】
【請求項１】
ビデオプロセッサであって、
以前のフレームにおける一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行することが可能なプログラマブル動き推定器と、
前記探索の１つを実行するために前記動き推定器をプログラムするように構成されたコントローラと、
を具備することを特徴とするビデオプロセッサ。
【請求項２】
前記動き推定器はさらに、前記動きベクトルを推定するように構成されたＳＡＤ計算エンジンを具備する請求項１に記載のビデオプロセッサ。
【請求項３】
前記ＳＡＤエンジンは、ツリーアーキテクチャを具備する請求項２に記載のビデオプロセッサ。
【請求項４】
前記推定器はメモリを含み、前記コントローラは、前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成された請求項１に記載のビデオプロセッサ。
【請求項５】
前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することによって前記動きベクトルを推定するように構成され、評価されるマクロブロックの数は、前記コントローラによって前記メモリにロードされる１つまたはそれ以上の指令によってプログラム可能である請求項４に記載のビデオプロセッサ。
【請求項６】
評価される前記マクロブロックの各々間の距離は、前記１つまたはそれ以上の指令によってプログラム可能である請求項５に記載のビデオプロセッサ。
【請求項７】
前記アンカーポイントに関して評価されたミクロブロックの１つの位置は前記指令の１つまたはそれ以上によってプログラム可能である請求項５に記載のビデオプロセッサ。
【請求項８】
前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価して、前記コントローラによって前記メモリにロードされた１つまたはそれ以上の指令に応答して評価されるマクロブロックの１つを選択することによって、前記動きベクトルを推定するように構成された請求項４に記載のビデオプロセッサ。
【請求項９】
前記動き推定器はさらに、前記現在のフレームにおけるマクロブロックに最も近い一致をもつと評価されたマクロブロックの前記１つを選択するように構成された請求項８に記載のビデオプロセッサ。
【請求項１０】
前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームにおいて評価されたマクロブロックの各々間のＳＡＤを計算するように構成された請求項９に記載のビデオプロセッサ。
【請求項１１】
ビデオプロセッサであって、
メモリを有するプログラマブル動き推定器であって、以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、前記探索は前記以前のフレームのアンカーポイントから離れた複数のマクロブロックの評価を含むプログラマブル動き推定器と、
前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成されたコントローラであって、評価されるマクロブロックの数と、前記アンカーポイントに関して評価されるマクロブロックの１つの位置と、評価されるマクロブロックの各々間の距離とは、前記メモリにロードされる１つまたはそれ以上の指令によってプログラムされるコントローラと、
を具備するビデオプロセッサ。
【請求項１２】
前記動き推定器はさらに、前記動きベクトルを推定するように構成されたＳＡＤ計算エンジンを具備する請求項１１に記載のビデオプロセッサ。
【請求項１３】
前記ＳＡＤ計算エンジンは、ツリーアーキテクチャを具備する請求項１２に記載のビデオプロセッサ。
【請求項１４】
前記動き推定器はさらに、前記コントローラによって前記メモリにロードされた１つまたはそれ以上の指令に応答して、前記評価されたマクロブロックの１つを選択することによって前記動きベクトルを推定するように構成された請求項１１に記載のビデオプロセッサ。
【請求項１５】
前記動き推定器はさらに、前記現在のフレームのマクロブロックに最も近い一致を有する評価されたマクロブロックの前記１つを選択するように構成された請求項１４に記載のビデオプロセッサ。
【請求項１６】
前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤを計算するように構成されたＳＡＤ計算エンジンを具備する請求項１５に記載のビデオプロセッサ。
【請求項１７】
ビデオ処理方法であって、
指令を受信することと、
以前のフレームにおける一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することと、を具備し、
前記受信した指令の１つまたはそれ以上は、評価されたマクロブロックの数と、前記アンカーポイントに関して評価されたマクロブロックの１つの位置と、前記評価されたマクロブロックの各々間の距離と、を含むビデオ処理方法。
【請求項１８】
前記動きベクトルの推定は、前記受信した指令の１つまたはそれ以上に応答して評価されたマクロブロックの１つを選択することをさらに具備する請求項１７に記載の方法。
【請求項１９】
評価されたマクロブロックの前記選択された１つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項１８に記載の方法。
【請求項２０】
評価されたマクロブロックの前記１つの選択は、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤ計算に基づく請求項１８に記載の方法。
【請求項２１】
前記動きベクトルの推定はさらに、前記１つまたはそれ以上の受信した指令に応答して、第２のアンカーポイントから離れた複数のマクロブロックを評価することを具備し、前記第２のアンカーポイントは前記第１のアンカーポイントから離れたマクロブロックの選択された１つである請求項１８に記載の方法。
【請求項２２】
前記第２のアンカーポイントから離れた前記マクロブロックの評価に対する１つまたはそれ以上の受信された指令は、前記第２のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離を含み、前記第２のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離は、前記アンカーポイントから離れた前記評価されたマクロブロックの各々間の距離よりも小さい請求項２１に記載の方法。
【請求項２３】
ビデオプロセッサであって、
以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するための動き推定手段であって、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行可能である動き推定手段と、
前記探索の１つを実行するために前記動き推定手段をプログラムするための制御手段と、
を具備するビデオプロセッサ。
【請求項２４】
前記動き推定手段はさらに、前記以前のフレームのアンカーポイントから離れた複数のマクロブロックを評価することによって前記動きベクトルを評価するように構成され、評価されるマクロブロックの数は、前記コントロール手段によってプログラム可能である請求項２３に記載のビデオプロセッサ。
【請求項２５】
評価された前記マクロブロックの各々間の距離は、前記コントロール手段によってプログラム可能である請求項２４に記載のビデオプロセッサ。
【請求項２６】
前記アンカーポイントに関して評価された前記マクロブロックの１つの位置は、前記コントロール手段によってプログラム可能である請求項２４に記載のビデオプロセッサ。
【請求項２７】
ビデオ処理方法を実行するためにコンピュータによって実行可能な指令からなるプログラムを具現化するコンピュータ読み取り可能な媒体であって、
前記方法は、
指令を受信することと、
以前のフレームの一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することを含むことと、を具備し、
前記受信した指令の１つまたはそれ以上は、評価されたマクロブロックの数と、前記アンカーポイントに関して評価された前記マクロブロックの１つの位置と、評価された前記マクロブロックの各々間の距離とを含むコンピュータ読み取り可能な媒体。
【請求項２８】
前記動きベクトルの前記推定はさらに、前記受信した指令の１つまたはそれ以上に応答して評価された前記マクロブロックの１つを選択することを具備する請求項２７に記載のコンピュータ読み取り可能な媒体。
【請求項２９】
評価されたマクロブロックの前記選択された１つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３０】
評価された前記マクロブロックの前記１つの評価は、現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤ計算に基づく請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３１】
前記動きベクトルの推定はさらに、前記受信した指令の１つまたはそれ以上に応答して第２のアンカーポイントから離れた複数のマクロブロックを評価することをさらに具備し、前記第２のアンカーポイントは前記第１のアンカーポイントから離れたマクロブロックの前記選択された１つである請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３２】
前記第２のアンカーポイントから離れたマクロブロックの評価に対する受信した指令の１つまたはそれ以上は、前記第２のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離を含み、前記第２のアンカーポイントから離れた前記評価されたマクロブロックの各々間の距離は、前記アンカーポイントから離れた前記評価されたマクロブロックの各々間の距離よりも小さい請求項３１に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、米国仮出願第６０／５８５２３１号（出願日：２００４年７月２日、名称：動き推定のための探索アルゴリズムを選択するときの柔軟性を可能にする指令セット）の利益を請求するものであり、参照によりその全体がここに組み込まれている。
【０００２】
本開示は概して遠隔通信に関し、より詳細には、ビデオ圧縮システムにおける動きを推定する技術に関する。
【背景技術】
【０００３】
帯域が本質的な制限となる遠隔通信の世界においてビデオ圧縮はマルチメディア応用において重要な役割を演じる。ビデオ圧縮は、冗長かつ本質的でない材料を除去することによってイメージを表わすのに必要な情報を大幅に減らすのに用いることができる。これは、ビデオシーケンスにおいて隣接する２つのフレーム間にはほとんど違いがないという事実を利用することによって達成される。しばしばただ１つの違いはイメージの一部がフレーム間でわずかに変位したことである。ビデオ圧縮は現在のフレームをマクロブロック（すなわち画素ブロック）に分割して、各ブロックがどこから来たのかを決定するために以前のフレームを探索する。現在のフレームにおけるマクロブロックのコンテンツが以前のフレーム内で探索された場合には再生の必要はない。当該コンテンツは、以前のフレームにおける位置からの現在のフレーム内での変位を示す“動きベクトル”によって表わされる。
【０００４】
“動き推定”として知られるプロセスは、現在のフレーム内の各マクロブロックに対する動きベクトルを決定するために用いられる。当該プロセスは、現在のフレーム内のマクロブロックと、以前のフレームからの画素ブロック間の最善の一致を探索する探索アルゴリズムを含む。探索アルゴリズムは概して当業界でよく知られた絶対差分の和（ＳＡＤ）計算を用いて実行される。特に、動き推定は、現在のフレーム内の各マクロブロックと以前のフレーム内のその周囲エリアとを比較して、最小のＳＡＤによって示される一致を見つけようとするものである。当該周囲エリアは“探索空間”と呼ばれ、特定の応用と全体の設計上の制限に応じた任意のサイズである。
【０００５】
以前のフレーム内の全部の探索空間を探索するのに動き推定が用いられるときに最大のビデオ圧縮が達成される。特殊な場合においては、探索空間内のそれぞれの想定されるマクロブロック位置を比較することがある。この種の探索は概して“徹底的な探索”と呼ばれる。徹底的な探索は計算の複雑さとハードウェアの観点から高価であるので、動き推定においてそれほど徹底的でない探索アルゴリズムが過去に提案された。これらのそれほど徹底的でない探索アルゴリズムすなわち“限定された探索”アルゴリズムは、圧縮度を犠牲にして、はるかに少ない数のマクロブロック位置を探索する。
【０００６】
多くの既存の動き推定処理は、ハードウェアで実現される単一の限定された探索アルゴリズムを用いる。この方法は、動き推定のパフォーマンスが選択するアルゴリズムによる制限を受け、高度に動的なマルチメディア環境では不十分なものとなってしまう。したがって、ビデオ圧縮システムにおいて動き推定を実行する方法を改善することが当業界において求められている。
【発明の概要】
【０００７】
本開示の一側面において、ビデオプロセッサは、以前のフレーム内の一致するマクロブロックを探索することによって、現在のフレーム内のマクロブロックに対する動きベクトルを推定するように構成され、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行可能なプログラマブル動き推定器と、前記探索の１つを実行すべく前記動き推定器をプログラムするように構成されたコントローラと、を含む。
【０００８】
本開示の他の側面において、ビデオプロセッサは、メモリを有するプログラマブル動き推定器であって、以前のフレーム内の一致するマクロブロックを探索することによって、現在のフレーム内のマクロブロックに対する動きベクトルを推定するように構成され、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックの評価を含むプログラマブル動き推定器と、指令を前記メモリにロードすることによって前記動き推定器をプログラムするように構成され、評価されるマクロブロックの数と、前記アンカーポイントに関して評価されるマクロブロックの１つの位置と、評価されるマクロブロックの各々間の距離とは、前記メモリにロードされる１つまたはそれ以上の指令によってプログラムされるコントローラとを含む。
【０００９】
本開示のさらなる側面において、ビデオ処理方法は、指令を受信することと、以前のフレームにおける一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定すること、とを含み、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することを含み、前記受信された指令の１つまたはそれ以上は、評価されたマクロブロックの数と、アンカーポイントに関して評価されたマクロブロックの１つの位置と、評価された各マクロブロック間の距離とを含む。
【００１０】
本開示のさらなる側面において、ビデオプロセッサは、以前のフレームにおける一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するとともに、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行可能な動き推定手段と、前記探索の１つを実行すべく前記動き推定手段をプログラムするコントローラと、を含む。
【００１１】
本開示のさらなる側面において、コンピュータによって実行可能な指令からなるプログラムを具現化するコンピュータ読み取り可能な記録媒体がビデオ処理方法を実行するものであり、前記ビデオ処理方法は、指令を受信することと、以前のフレームにおける一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定すること、とを含み、前記探索は、前記以前のフレームにおけるアンカーポイントから離れた複数のマクロブロックを評価することを含み、前記受信された指令の１つまたはそれ以上は、評価されたマクロブロックの数と、アンカーポイントに関して評価されたマクロブロックの１つの位置と、評価された各マクロブロック間の距離とを含む。
【００１２】
ビデオプロセッサの種々の側面が添付の図面を参照して例を用いて説明されるが、これらの説明に限定されるものではない。
【図面の簡単な説明】
【００１３】
【図１】図１はビデオプロセッサの一例を示すブロック概念図である。
【図２】図２はビデオプロセッサ内のビデオエンコーダの一例を示すブロック概念図である。
【図３】図３はビデオエンコーダ内の動き推定器の一例を示すブロック概念図である。
【図４】図４はビデオエンコーダにおける動き推定に用いられるＳＡＤ計算の一例を示すブロック図である。
【図５】図５はビデオエンコーダにおける動き推定のための３ステップ探索の一例を示すグラフである。
【図６】図６は動き推定におけるＳＡＤ計算エンジンの機能を示すフロー図である。
【発明を実施するための形態】
【００１４】
添付の図面に関連して以下に記述される詳細な説明は、ビデオプロセッサの種々の実施形態を説明するためのものであり、ビデオプロセッサが実行されるただ１つの実施形態のみを説明することを意図しているわけではない。詳細な説明はビデオプロセッサの完全な理解を提供するための特殊な説明を含む。しかしながら、当業者ならば、ビデオプロセッサがこれらの特殊な説明なしに実行されることを理解するであろう。ある場合には、ビデオプロセッサの概念がぼけるのを避けるために、既知の構造及び要素はブロック図で示される。
【００１５】
図１は、遠隔通信装置と一体化するのに適したビデオプロセッサの一例を示すブロック図である。遠隔通信装置は、ビデオ放送、ビデオ会議、ビデオ電話、ビデオ伝送を伴う他の任意の応用を支持する。ここでの開示全体にわたって記述される種々の概念は、特に、サイズとバッテリ電力が永久的な問題である移動端末に特に好適する。移動端末は、無線電話、パーソナルデジタルアシスタント（ＰＤＡ）、ラップトップコンピュータ、他の任意の移動体装置である。
【００１６】
ビデオプロセッサ１００は、イメージをセンサ１０４に集束させるレンズ１０２を含む。センサ１０４は電荷結合デバイス（ＣＣＤ）、相補的金属酸化物半導体（ＣＭＯＳ）イメージセンサ、あるいは他の任意のセンサである。ビデオフロントエンド（ＶＦＥ）１０６はセンサ１０４によって獲得されたイメージを処理するのに用いられる。ＶＦＥ１０６によって実行される処理は、ホワイトバランス、カラー補正、ガンマ調整、及び／または他の処理機能を含む。処理されたビデオイメージは観察のために表示装置１１０に供給及び／または圧縮のためにビデオエンコーダ１１２に供給される。圧縮されたビデオイメージはメモリ１１４に格納及び／またはネットワークまたは遠隔通信リンクを介して送信するためにトランスミッタ１１６に供給される。コントローラ１１８は、ビデオプロセッサ１００の動作を同期させるとともに制御するのに用いられる。コントローラ１１８は、埋め込まれた通信ソフトウエアを備えたデジタルシグナルプロセッサ（ＤＳＰ）として記述されるが、他のアーキテクチャでも実行可能である。
【００１７】
図２は、ビデオプロセッサ内のビデオエンコーダの一例を示すブロック図である。ビデオエンコーダ１１２は、種々のマルチメディア環境においてビデオデータの効率のよい記憶、送信及び操作のために用いられる。ビデオ符号化処理は、以前のフレームからの最善一致マクロブロックを現在のフレームからの対応するマクロブロックから減算することによって開始され、これによって二者間の相違のみが符号化される。このことは、背景などの変化しないフレーム領域は符号化されないことを意味する。
【００１８】
動き推定器２０２は、以前のフレームの当該位置からのマクロブロックの変位を表すために、現在のフレームの各マクロブロックに対する動きベクトルを決定するのに用いられる。動き推定器２０２は、最善一致を見つけるために、現在のフレームの各マクロブロックを以前のフレームの周囲の領域と比較することによってこの機能を実行する。動き補償器２０４は、動きベクトルに基づいて以前のフレームの最善一致マクロブロックを取り込むのに用いられる。減算器２０６は、以前のフレームからの動き補償されたマクロブロックと、現在のフレームからのマクロブロックの相違を計算するのに用いられる。
【００１９】
離散コサイン変換、整数変換（Integer Transform）あるいは他の任意の変換２０８が、減算器２０６からの残余情報を離散的な空間周波数の係数に変換するのに用いられる。ここでの変換動作は、当該変換が１次元信号ではなく２次元マクロブロックに関して実行される点を除いて、高速フーリエ変換（ＦＦＴ）を用いて時間領域の信号を周波数領域の信号に変換することと類似している。この変換動作は、マクロブロックのエネルギを小さな数の係数に圧縮するのに特に好適する。量子化モジュール２１０は変換器２０８によって生成された係数をさらに減らすのに用いられる。量子化モジュール２１０は、ゼロに近い係数をゼロに設定してわずかな非ゼロの係数のみを残すことによって当該係数の精度（precision）を減らす。これは、整数で各係数を割り算し、それ結果を切り捨てることによって実行される。
【００２０】
エンコーダ２１２は、量子化された変換係数をメモリに格納あるいはネットワークあるいは遠隔通信リンクを介して送信するに先立って、当該変換係数を圧縮するのに用いられる。多くの既知の圧縮アルゴリズムを使用可能である。しばしば使用されている方法としては、発生頻度の高い係数を短い二進符号で置き換えるとともに、発生頻度の低い係数を長い二進符号で置き換える方法がある。これらの符号は、同期及び制御情報と組み合わされて、符号化されたビットストリームとなる。ここでの制御情報は、受信側で動き補償されたフレームを再構成するのに必要となる動きベクトルを含む。
【００２１】
現在のフレームは、次のフレームが符号化されるときの基準フレームとして用いるために記憶される。現在のフレームを単純にメモリにコピーするのではなく、量子化された変換係数は、逆量子化器２１４によって逆量子化されて、逆変換器２１６を用いて逆変換された後、加算器２１８で動き補償されたフレームに加算される。これによって再構成されたフレームが生成されてメモリ２２０に記憶される。この処理は、メモリ２２０に記憶されるフレームのコンテンツが受信器で再構成されるフレームと同一であることを保証する。次のフレームが符号化されるときに、動き推定器２０２は、メモリ２２０に記憶されているフレームのコンテンツを以前のフレームとして使用して動き補償のための最善一致領域を決定する。
【００２２】
ビデオ符号化処理における多くの機能は、計算能力及びメモリ帯域の点において汎用プロセッサ（ＧＰＰ）の実行能力を超える。一方、ビデオ符号化のみに専用されるアーキテクチャは高いパフォーマンスを発揮するが、柔軟性の点で劣る。例として、ハードウェアで実現される動き補償は、単一の探索アルゴリズムに制限される。パフォーマンスと柔軟性との間の適度のバランスを維持するために、デジタルシグナルプロセッサ（ＤＳＰ）あるいは他の処理装置がプログラマブルハードウェアと組み合わせて用いられる。この構成において、ＤＳＰは種々のハードウェア要素のプログラミングと実行とを制御する。
【００２３】
このようなアーキテクチャの一例を動き推定に関連して以下に説明する。図３において、ＤＳＰ１１８は、動き推定器２０２を実装するのに用いられるハードウェアをプログラムするのに用いられる。ハードウェアは動き推定を実行するのに要する計算能力を提供し、ＤＳＰはマルチメディア環境に応じて任意の探索アルゴリズムをプログラムすることに対する柔軟性を保持する。ＤＳＰ１１８は、指令をメモリ３０２にロードすることによって動き推定器２０２をプログラムする。デコーダ３０４は、メモリ３０２内の指令を復号するのに用いられ、サーチャ３０６は、一連のフレームにわたってマクロブロックの動きを推定するのに用いられる。サーチャ３０６は、ツリーアーキテクチャを備えたＳＡＤエンジンとして実装される。ツリーアーキテクチャは、メモリ２０２内の指令によって記述される限定された探索のための探索位置を選択するのに良好な柔軟性を提供する。
【００２４】
図４は、ＳＡＤ計算エンジンのためのツリーアーキテクチャの一例を示している。ツリーアーキテクチャは、入力において、任意の数の絶対差（ＡＤ）モジュールによって構成され、ここでは８個である。８個のＡＤモジュール４０２ａ−４０２ｈは、現在のフレームに対するマクロブロック内の８個のピクセル（画素）からの情報と、以前のフレームにおけるマクロブロック内の８個のピクセルからの情報とを各サイクルごとに受信するように構成される。各ＡＤモジュールは、入力された２つの対応するピクセル間の相違の絶対値を計算する。加算器４０４は、８つの絶対差の値の和を求めるのに用いられ、アキュムレータ４０６は、２つのマクロブロック内のすべての対応するピクセルにわたって絶対差の値を計算するのに十分な多数のクロックサイクルにわたる結果を蓄積するのに用いられる。１６×１６ピクセルのアレイからなるマクロブロックにおいて、加算器４０４の出力は、現在のフレーム内のマクロブロックと、以前のフレーム内のマクロブロック間の絶対差の値を計算するのに３２回蓄積される。
【００２５】
動き推定処理の柔軟性を増加するために、新たな指令セットが定義される。ハードウェアの要求を減らすとともに、指令が高速なフレームレートで大きなフレームに対してリアルタイムで復号かつ実行されることを保証するために、指令の数を制限されなければならない。ビデオエンコーダの一実施形態において、ＤＳＰは４つの異なるタイプの指令を使用し、これらは動き推定器にプログラムされる。当該指令は、“探索タスク”指令、“ループ”指令、“新たな繰り返し”指令、“探索の終了”指令を含む。以下に詳細に説明するように、これらの指令は、動き推定のための任意の探索アルゴリズムをプログラムするのに十分な柔軟性を有する。
【００２６】
探索タスク指令は、動き推定器がそのフレームの同じ水平、垂直または対角線に沿って対応する位置をもつ探索空間内の任意の数のマクロブロック位置を探索することを可能にする。探索タスク指令は、探索すべきマクロブロックの数を識別するNUM_STEPと、アンカーポイント(anchor point)に関して探索すべき第１のマクロブロックの位置を識別する(OFFSET_X,OFFSET_Y)座標と、探索すべき残りのマクロブロックの位置を計算するための(STEP_X, STEP_Y)座標とを含む。探索される各マクロブロック位置ごとにサーチャはＳＡＤを計算する。
【００２７】
ループ指令は、以前の探索タスク指令に戻る（ループバックする）ために用いられる。この指令は、新たなアンカーポイントを除いてサーチャが以前に実行された一ブロックの指令を反復することを行わせる。特に、当該ポイントまで計算された最低のＳＡＤは、新たなアンカーポイントとして用いられる。ループ指令は、サーチャがどの指令に戻るべきであるかを識別するループバックアドレス“LOOP_ADDR”を含む。ループ指令が実行される最大の回数は、ループ指令内の“MAX_NUM_LOOP”コードによって制御される。サーチャがいったん前のブロックの指令を最大の回数だけ反復すると、当該ループを抜け出て次の指令を実行する。
【００２８】
サーチャの一実施形態において、新たなアンカーポイントと前のアンカーポイント間の距離がしきい値を超えたならば、ループ指令のみが実行される。新たなアンカーポイントと前のアンカーポイント間の距離が小さすぎるならば、サーチャはループを抜け出て次の指令を実行する。
【００２９】
新たな反復指令は、探索タスク指令またはループ指令に従う。それは、当該ポイントまで計算された最低のＳＡＤに対する座標を、次の探索タスク指令に対する新たなアンカーポイントして選択するのに用いられる。
【００３０】
新たな反復指令に続く、新たな探索タスク指令は、探索空間の限られた領域内でより徹底的な探索を実行するのに用いられる。これは、（１）第１のマクロブロック探索及びＳＡＤ計算を実行するために新たなアンカーポイント(OFFSET_X,OFFSET_Y)からのオフセットを減らすことによって、及び（２）残りのマクロブロック探索とＳＡＤ計算(STEP_X, STEP_Y)間の距離を減らすことによって達成される。
【００３１】
図５は、３ステップ探索アルゴリズムの一例を示すグラフ図であり、当該探索を実行するべく動き推定器内のメモリにプログラムされた指令が以下の表１に示されている。最初の探索タスク指令のためのｘ、ｙ座標に対するアンカーポイントはいずれも０に設定される。
【００３２】
【表１】
2011160438.tif 000003
この例において、ＤＳＰによって１２の指令が動き推定器内のメモリにロードされる。指令は、デコーダによって順次メモリから読み出される。各指令における２ビットのTASK_KEYは、指令の種類（すなわち、探索タスク指令、ループ指令、新たな反復指令、あるいは探索指令の終了）を識別するのに用いられる。各探索は復号され、続いて動き推定器内のサーチャによって実行される。各探索タスク指令ごとに、ＳＡＤ計算エンジンは、現在のフレームのマクロブロックと、当該指令において識別された以前のフレームのすべてのマクロブロック間のＳＡＤを計算するとともに、最小のＳＡＤ値と対応するマクロブロック位置とを維持する。
【００３３】
探索の第１のステップにおいて、９個のピクセル５０２ａ−５０２ｉからなるグリッドを形成するために、３つの探索タスク指令が使用される。ここで、グリッドの各ピクセルは探索すべき１つのマクロブロックに対応する(locate)。ピクセル５０２ａ−５０２ｉは、水平方向及び垂直方向において隣接するピクセルから３ピクセルだけ離間される。メモリアドレス“０”からの第１の指令のNUM_STEP部は、３つのマクロブロック探索を開始する。第１の指令の(OFFSET_X,OFFSET_Y)座標は、探索すべき第１のマクロブロック５０２ａを探索する。この例において、第１のマクロブロック５０２ａは、初期のアンカーポイント（０，０）から、（−３，−３）（すなわち、負の水平方向に３ピクセル位置及び負の垂直方向に３ピクセル位置）だけずれている（offset）。第１の指令における(STEP_X, STEP_Y)座標は、探索すべき残りのマクロブロックを探索する。特に、探索すべき残りのマクロブロック５０２ｂ、５０２ｃの各々は、前のマクロブロックから（＋３，０）ステップで探索される。すなわち、第２のマクロブロック５０２ｂは、第１のマクロブロック５０２ａと同じ垂直位置でかつ右に３ピクセル離れた位置で探索される。
【００３４】
次に、メモリアドレス“１”での第２の指令が復号されて実行される。第２の指令のNUM_STEP部はここでも３つのマクロブロックが探索されることを示しているが、今度は各マクロブロックは、探索された第１の３個のマクロブロックから真下に３ピクセル離れた位置で探索される。第２の指令の(OFFSET_X,OFFSET_Y)座標は、初期のアンカーポイント（０，０）から（−３，０）ステップ（すなわち、負の水平方向に３ピクセル離れた位置）で探索すべき第４のマクロブロック５０２ｄを探索する。第２の指令の(OFFSET_X,OFFSET_Y)座標は、探索すべき残りのマクロブロックを探索する。特に、探索すべき残りのマクロブロック５０２ｅ、５０２ｆの各々は、前のマクロブロックから（＋３，０）ステップで探索される。すなわち、第５のマクロブロック５０２ｅは、第４のマクロブロック５０２ｄと同じ垂直位置でかつ右に３ピクセル離れた位置で探索されるとともに、第６のマクロブロック５０２ｆは、第５のマクロブロック５０２ｅと同じ垂直位置でかつ右に３ピクセル離れた位置で探索される。
【００３５】
次に、メモリアドレス“２”の第３の指令が復号されて実行される。この指令は、水平方向において３ピクセルだけ離れている３つのマクロブロック５０２ｇ−５０２ｉが探索されるという点において、先立つ２つと類似している。この情報は、NUM_STEP部及び第３の指令の(STEP_X, STEP_Y)座標内に含まれる。この指令の相違は、３つのマクロブロック５０２ｇ−５０２ｉが第４、第５、第６のマクロブロック５０２ｄ−５０２ｆから３ピクセルだけ真下で探索されることである。これらの３つのマクロブロック５０２ｇ−５０２ｉの位置は、初期のアンカーポイント（０，０）から（＋３，−３）ステップ（すなわち、負の水平方向に３ピクセル位置かつ正の水平方向に３ピクセル位置）で探索すべき第７のマクロブロック５０２ｇを探索する第３の指令における(OFFSET_X,OFFSET_Y)座標によって駆動される。
【００３６】
第２の探索ステップを開始する前に、新たな反復(iteration)が実行される。この新たな反復は、メモリアドレス“３”からの第４の指令によって促される。それを新たな反復指令として識別する、第４の指令に対するTASK_KEYは、ＳＡＤ計算エンジンが最小のＳＡＤをもつ以前のフレームにおけるマクロブロックで新たなアンカーポイントを生成することを行わせる。
【００３７】
前の反復から最低のＳＡＤをもつマクロブロックの周りで第２の反復のマクロブロック探索を実行するために次の３つの指令が用いられる。マクロブロック探索位置の第２の反復は、８ピクセル５０４ａ−５０４ｈからなるグリッドによって図５に示される。ここで各ピクセル５０４ａ−５０４ｈは、探索すべき１つのマクロブロックを示している。探索の第２の反復は、水平及び垂直方向に隣接ピクセルから２ピクセルだけ離れている各ピクセル５０４ａ−５０４ｈにより焦点が当てられている。
【００３８】
メモリアドレス“４”からの第５の指令は、３つのマクロブロック探索を行う。ここで、第１のマクロブロック５０４ａは、負の水平及び垂直方向に新たなアンカーポイント（＋３，−３）から２ピクセルだけずれた位置で探索される。探索すべき残りの２つのマクロブロック５０４ｂ、５０４ｃは、直前に探索されたマクロブロックから水平方向に２ピクセル位置だけ離れた位置にある。すなわち、探索される第２のマクロブロック５０４ｂは、探索される第１のマクロブロック５０４ａの右から２つのピクセル位置にあり、探索される第３のマクロブロック５０４ｃは、探索される第２のマクロブロック５０４ｂの右から２つのピクセル位置にある。
【００３９】
メモリアドレス“５”からの第６の指令は、第１及び第３のマクロブロック５０４ａ、５０４ｃから垂直方向に２ピクセルだけ真下の２つのマクロブロック５０４ｄ、５０４ｅの探索を行う。同様にして、メモリアドレス“６”からの第７の指令は、第１、第２、第３のマクロブロック５０４ａ−５０４ｃから垂直方向に４ピクセルだけ真下の３つのマクロブロック５０４ｆ−５０４ｈの探索を行う。
【００４０】
第２の反復から最低のＳＡＤをもつマクロブロックの周りで最後の反復のマクロブロック探索を促すために次の４つの指令が用いられる。マクロブロック探索位置の最後の反復は、８ピクセル５０４ａ−５０４ｉからなるグリッドによって図５に示される。ここで各ピクセル５０４ａ−５０４ｉは、探索すべき１つのマクロブロックを示している。探索の最後の反復は第２の反復よりも、水平及び垂直方向に隣接ピクセルから１ピクセルだけ離れている各ピクセル５０４ａ−５０４ｉにより焦点が当てられている。
【００４１】
メモリアドレス“１１”の最後の指令は、探索指令の終了である。探索指令の終了は、当該探索を停止する。探索の終了位置で、動きベクトルは、最低のＳＡＤをもつマクロブロック位置から計算される。
【００４２】
図６は、ＳＡＤ計算エンジンの動作を示すフローチャートである。この例において、２ビットのTASK_KEYは、符号“００”を探索タスク指令に、“０１”を新たな反復指令に、“１０”をループ指令に、“１１”を探索指令の終了に割り当てる。これらのビット割り当ては、ＳＡＤ計算エンジンの動作を示すために行われる。実際の応用において、ビット割り当ては、設計者の嗜好によって変化する。
【００４３】
ステップ６０２において、最初のアンカーポイントが選択される。当該アンカーポイントの位置は、現在のフレームのマクロブロックに対応するように選択されるか、あるいは知的に選択される。以前のフレームのマクロブロックの位置の知的な選択は、任意の数の前のビデオフレームにわたる現在のフレームのマクロブロックの動きを観察することに基づいている。どのような場合においても、現在のフレームのマクロブロックと以前のフレームのマクロブロック間の、選択されたアンカーポイントでのＳＡＤがステップ６０４で計算されて記憶される。
【００４４】
次に、ステップ６０６において、メモリから指令が取り出されて復号される。ＳＡＤ計算エンジンは、ステップ６０８でTASK_KEYをチェックして、実行すべき指令のタイプを決定する。TASK_KEY符号が“００”ならば、ＳＡＤ計算エンジンは、当該指令を探索タスク指令として識別する。ＳＡＤ計算エンジンは、ステップ６１０で指令内の（OFFSET_X,OFFSET_Y）座標を使用して、探索すべき第１のマクロブロックを探索することによって、探索タスク指令を実行し、ステップ６１２でＳＡＤを計算する。計算されたＳＡＤが記憶されているＳＡＤよりも小さいならば、記憶されているＳＡＤは棄却されて計算されたＳＡＤが記憶される。計算されたＳＡＤが記憶されているＳＡＤよりも大きいならば、計算されたＳＡＤが棄却される。この動作は、ステップ６１４において実行される。ＳＡＤ計算エンジンは、当該反復において識別されたすべてのマクロブロックがステップ６１６で探索されたか否かを調べるために、指令のNUM_STEP部を調べる。そうでないならば、ＳＡＤ計算エンジンは、ステップ６１８において指令の(STEP_X, STEP_Y)座標を用いて次のマクロブロックを探索し、ＳＡＤを計算するためにステップ６１２に戻る。一方、ＳＡＤ計算エンジンは、取り込むべき次の指令を促してステップ６０６で復号する。
【００４５】
次の指令に対するTASK_KEY符号が“０１”ならば、ＳＡＤ計算エンジンは、新たな反復を開始する。特に、ステップ６１９において、ＳＡＤ計算エンジンは、以前の反復から最低のＳＡＤをもつマクロブロック位置（すなわち、記憶されたＳＡＤに対するマクロブロック位置）で新たなアンカーポイントを設定する。次にＳＡＤ計算エンジンは、ステップ６０６に戻って次の指令を取り込んで復号する。
【００４６】
次の指令に対するTASK_KEY符号が“１０”ならば、ＳＡＤ計算エンジンは、ステップ６２０で以前の反復から最低のＳＡＤをもつマクロブロック位置で新たなアンカーポイントを設定する。次に、ＳＡＤ計算エンジンは、ステップ６２２で新たなアンカーポイントと以前の反復からのアンカーポイント間の距離を比較する。ＳＡＤ計算エンジンが当該距離は小さすぎると決定したならば、処理はループを抜け出してステップ６０６で取り込むべき次の指令を促して復号する。一方、ＳＡＤ計算指令は、ステップ６２４でLOOP_ADDRによって示された指令に戻って新たなアンカーポイントから指令を実行する。ＳＡＤ計算エンジンは、それがループ指令に到達するまで指令の実行を順次継続して行う。その時点で、ＳＡＤ計算エンジンはステップ６２６で、MAX_NUM_LOOP符号において示されるように、以前のブロックの指令が最大回数だけ実行されたか否かを決定する。ＳＡＤ計算エンジンが最大回数だけMAX_NUM_LOOP符号において示される以前の指令に戻らなかったならば、ステップ６２４において当該指令に再び戻る。さもなければ、ループを抜け出てステップ６０６で次の指令が取り込まれて復号されるのを促す。
【００４７】
次の指令に対するTASK_KEY符号が“１１”ならば、ＳＡＤ計算エンジンは、当該指令を探索指令の終了として識別する。この場合、ＳＡＤ計算エンジンすなわち他のエンティティは、ステップ６３０で以前のフレームのマクロブロック位置からの現在のフレームのマクロブロックのずれを表す動きベクトルを計算する。以前のフレームのマクロブロックの位置は、記憶されたＳＡＤに対応する。
【００４８】
ここに開示された実施形態に関連して記述された種々の例示的な論理ブロック、モジュール、回路、要素、及び／または成分は、汎用プロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）あるいは他のプログラマブルロジック要素、離散ゲートまたはトランジスタロジック、離散ハードウェア要素、あるいはここに記述された機能を実行するように設計された上記の任意の組み合わせ、によって実現あるいは実行される。汎用プロセッサは、マイクロプロセッサであり、その代わりに、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステートマシンである。プロセッサは、計算要素の組み合わせとして実現される。例えばプロセッサは、ＤＳＰと、１つのマイクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つまたはそれ以上のマイクロプロセッサあるいは他の任意の構成との組み合わせとして実現される。
【００４９】
ここに開示された実施形態に関連して記述された方法またはアルゴリズムは、ハードウェアによって直接あるいは、プロセッサによって実行されるソフトウエアモジュールあるいは前記２つの組み合わせによって実現される。ソフトウエアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、あるいは当業界で既知の任意の形態の記憶媒体に常駐される。記憶媒体は、プロセッサが記憶媒体から情報を読み出すことができるとともに、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。あるいは、記憶媒体はプロセッサと一体化される。
【００５０】
上記した説明は、当業者がここに記述された種々の実施形態を実施できるようになされたものである。これらの実施形態に対する種々の変形例は当業者が容易に着想できるものであり、ここで定義された一般的な考えは他の実施形態にも適用される。すなわち、特許請求の範囲は、ここに示された実施形態に限定されるべきではなく、クレームの文言に相応する最大の権利範囲が与えられるべきである。単数形で記述された要素に対する参照は、特にそのように記述されない限りにおいて“１つ及びただ１つ”を意味することを意図しているのではなく、“１つまたはそれ以上”を意味することを意図している。当業者に知られたあるいは知られることになる、ここでの開示全体にわたって記述された種々の実施形態の要素に対してすべての構造上及び機能上の同等物は、参照によってここに組み込まれ、特許請求の範囲に含まれるものである。さらに、そのような開示が特許請求の範囲に明示的に記述されているか否かとは無関係に、ここに開示された内容はどんなものであっても公に公開されることを意図していない。当該要素が“手段”を用いて明示的に記載されているかあるいは方法クレームならば要素が“ステップ”の文言を用いて記述されているのでないならば、どのようなクレーム要素であっても米国特許法第１１２条、第６パラグラフの規定のもとに解釈されるべきではない。
【図１】
2011160438.tif 000004
【図２】
2011160438.tif 000005
【図３】
2011160438.tif 000006
【図４】
2011160438.tif 000007
【図５】
2011160438.tif 000008
【図６】
2011160438.tif 000009
【手続補正書】
【提出日】平成23年3月29日(2011.3.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオプロセッサであって、
以前のフレームにおける一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行することが可能なプログラマブル動き推定器であって、前記限定された探索は第１の探索と第２の探索とを具備し、前記第１の探索はその一部に第１のステップ値を持つループ指令を反復的に実行することを具備し、前記第１の探索は前記以前のフレームにおけるピクセルの第１のセットを分析し、前記第２の探索はピクセルの第２のセットを分析し、前記第２の探索は前記一部に第２のステップ値を持つ前記ループ指令を反復的に実行することを具備し、前記第２の探索は前記以前のフレームの前記第２の探索のためのアンカーポイントとして前記ピクセルの第１のセットにおけるピクセルのうちの１つを使用し、前記第１のステップ値は前記第１の探索におけるピクセル間の第１の間隔を示し、前記第２のステップ値は前記第２の探索におけるピクセル間の第２の間隔を示し、前記第１の間隔は前記第２の間隔よりも大きい、プログラマブル動き推定器と、
前記複数の探索の１つを実行するために前記動き推定器をプログラムするように構成されたコントローラと、
を具備することを特徴とするビデオプロセッサ。
【請求項２】
前記動き推定器はさらに、前記動きベクトルを推定するように構成されたＳＡＤ計算エンジンを具備する請求項１に記載のビデオプロセッサ。
【請求項３】
前記ＳＡＤエンジンは、ツリーアーキテクチャを具備する請求項２に記載のビデオプロセッサ。
【請求項４】
前記推定器はメモリを含み、前記コントローラは、前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成された請求項１に記載のビデオプロセッサ。
【請求項５】
前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントからずれた複数のマクロブロックを評価することによって前記動きベクトルを推定し、前記コントローラによって前記メモリにロードされる１つまたはそれ以上の指令によってプログラム可能であるマクロブロックの数を識別するように構成された請求項４に記載のビデオプロセッサ。
【請求項６】
前記アンカーポイントに関する前記マクロブロックのうちの１つのマクロブロックのずれは、第１のマクロブロックに対応する第１のポイントを識別し、前記第１のポイントからの変位量は、第２のマクロブロックに対応する第２のポイントを識別し、評価される前記マクロブロックの各々間の変位量は、前記１つまたはそれ以上の指令によってプログラム可能である請求項５に記載のビデオプロセッサ。
【請求項７】
前記アンカーポイントに関するマクロブロックのうちの１つのマクロブロックのずれは前記指令の１つまたはそれ以上によってプログラム可能である請求項５に記載のビデオプロセッサ。
【請求項８】
前記動き推定器はさらに、前記以前のフレームにおけるアンカーポイントからずれた複数のマクロブロックを評価して、前記コントローラによって前記メモリにロードされた１つまたはそれ以上の指令に応答して評価されるマクロブロックの１つを選択することによって、前記動きベクトルを推定するように構成された請求項４に記載のビデオプロセッサ。
【請求項９】
前記動き推定器はさらに、前記現在のフレームにおけるマクロブロックに最も近い一致をもつと評価されたマクロブロックの前記１つを選択するように構成された請求項８に記載のビデオプロセッサ。
【請求項１０】
前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームにおいて評価されたマクロブロックの各々間のＳＡＤを計算するように構成された請求項９に記載のビデオプロセッサ。
【請求項１１】
ビデオプロセッサであって、
メモリを有するプログラマブル動き推定器であって、以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するように構成され、前記探索は第１の探索と第２の探索とを具備し、前記第１の探索はその一部に第１のステップ値を持つループ指令を反復的に実行することを具備し、前記第１の探索は前記以前のフレームにおけるピクセルの第１のセットを分析し、前記第２の探索は前記第２の探索のためのアンカーポイントとして前記ピクセルの第１のセットにおけるピクセルのうちの１つを使用してピクセルの第２のセットを分析し、前記第２の探索は前記一部に第２のステップ値を持つ前記ループ指令を反復的に実行することを具備し、前記第１のステップ値は前記第１の探索におけるピクセル間の第１の間隔を示し、前記第２のステップ値は前記第２の探索におけるピクセル間の第２の間隔を示し、前記第１の間隔は前記第２の間隔よりも大きい、プログラマブル動き推定器と、
前記メモリに指令をロードすることによって前記動き推定器をプログラムするように構成されたコントローラと、
を具備するビデオプロセッサ。
【請求項１２】
前記動き推定器はさらに、前記動きベクトルを推定するように構成されたＳＡＤ計算エンジンを具備する請求項１１に記載のビデオプロセッサ。
【請求項１３】
前記ＳＡＤ計算エンジンは、ツリーアーキテクチャを具備する請求項１２に記載のビデオプロセッサ。
【請求項１４】
前記第１の探索は、前記以前のフレームにおけるアンカーポイントからずれた複数のマクロブロックの評価を含み、前記動き推定器はさらに、前記コントローラによって前記メモリにロードされた１つまたはそれ以上の指令に応答して、前記評価されたマクロブロックの１つを選択することによって前記動きベクトルを推定するように構成された請求項１１に記載のビデオプロセッサ。
【請求項１５】
前記動き推定器はさらに、前記現在のフレームのマクロブロックに最も近い一致を有する評価されたマクロブロックの前記１つを選択するように構成された請求項１４に記載のビデオプロセッサ。
【請求項１６】
前記動き推定器はさらに、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤを計算するように構成されたＳＡＤ計算エンジンを具備する請求項１５に記載のビデオプロセッサ。
【請求項１７】
電子装置におけるビデオ処理方法であって、
メモリから指令を受信することと、
以前のフレームにおける一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は第１の探索と第２の探索とを具備し、前記第１の探索はその一部に第１のステップ値を持つループ指令を反復的に実行することを具備し、前記第１の探索は前記以前のフレームにおけるピクセルの第１のセットを分析し、前記第２の探索はピクセルの第２のセットを分析し、前記第２の探索は前記一部に第２のステップ値を持つ前記ループ指令を反復的に実行することを具備し、前記第２の探索は前記以前のフレームの前記第２の探索のためのアンカーポイントとして前記ピクセルの第１のセットにおけるピクセルのうちの１つを使用し、前記第１のステップ値は前記第１の探索におけるピクセル間の第１の間隔を示し、前記第２のステップ値は前記第２の探索におけるピクセル間の第２の間隔を示し、前記第１の間隔は前記第２の間隔よりも大きい、動きベクトルを推定することと、を具備し、
前記受信した指令の１つまたはそれ以上は、評価されたマクロブロックを表すピクセルの数と、前記アンカーポイントに関するずれと、前記評価されたマクロブロックの各々間の変位量と、を含むビデオ処理方法。
【請求項１８】
前記動きベクトルの推定は、前記受信した指令の１つまたはそれ以上に応答して評価されたマクロブロックの１つを選択することをさらに具備する請求項１７に記載の方法。
【請求項１９】
評価されたマクロブロックの前記選択された１つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項１８に記載の方法。
【請求項２０】
評価されたマクロブロックの前記１つの選択は、前記現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤ計算に基づく請求項１８に記載の方法。
【請求項２１】
前記動きベクトルの推定はさらに、前記１つまたはそれ以上の受信した指令に応答して、第２のアンカーポイントからずれた複数のマクロブロックを評価することを具備し、前記第２のアンカーポイントは絶対差の値の和の小ささに基づいて選択される請求項１８に記載の方法。
【請求項２２】
前記第２のアンカーポイントからずれた前記マクロブロックの評価に対する１つまたはそれ以上の受信された指令は、前記第２のアンカーポイントからずれた前記評価されたマクロブロックの各々間の第２の変位量を含み、前記第２のアンカーポイントからずれた前記評価されたマクロブロックの各々間の前記第２の変位量は、前記アンカーポイントからずれた前記評価されたマクロブロックの各々間の前記変位量よりも小さい請求項２１に記載の方法。
【請求項２３】
ビデオプロセッサであって、
以前のフレームの一致するマクロブロックを探索することによって、現在のフレームのマクロブロックに対する動きベクトルを推定するための動き推定手段であって、徹底的な探索と１つまたはそれ以上の限定された探索とを含む複数の探索の各々を実行可能であり、前記限定された探索は第１の探索と第２の探索とを具備し、前記第１の探索はその一部に第１のステップ値を持つループ指令を反復的に実行することを具備し、前記第１の探索は前記以前のフレームにおけるピクセルの第１のセットを分析し、前記第２の探索はピクセルの第２のセットを分析し、前記第２の探索は前記一部に第２のステップ値を持つ前記ループ指令を反復的に実行することを具備し、前記第２の探索は前記以前のフレームの前記第２の探索のためのアンカーポイントとして前記ピクセルの第１のセットにおけるピクセルのうちの１つを使用し、前記第１のステップ値は前記第１の探索におけるピクセル間の第１の間隔を示し、前記第２のステップ値は前記第２の探索におけるピクセル間の第２の間隔を示し、前記第１の間隔は前記第２の間隔よりも大きい、動き推定手段と、
前記複数の探索の１つを実行するために前記動き推定手段をプログラムするための制御手段と、
を具備するビデオプロセッサ。
【請求項２４】
前記動き推定手段はさらに、前記以前のフレームのアンカーポイントからずれた複数のマクロブロックを評価することによって前記動きベクトルを評価するように構成され、評価されるマクロブロックの数は、前記制御手段によってプログラム可能である請求項２３に記載のビデオプロセッサ。
【請求項２５】
前記制御手段によってプログラム可能である評価された前記マクロブロックの各々間の変位量をさらに具備する請求項２４に記載のビデオプロセッサ。
【請求項２６】
前記アンカーポイントに関して評価された前記マクロブロックの１つの前記ずれは、前記制御手段によってプログラム可能である請求項２４に記載のビデオプロセッサ。
【請求項２７】
ビデオ処理方法を実行するためにコンピュータによって実行可能な指令からなるプログラムを具現化するコンピュータ読み取り可能な媒体であって、
前記方法は、
指令を受信することと、
以前のフレームの一致するマクロブロックを探索することによって現在のフレームのマクロブロックに対する動きベクトルを推定することであって、前記探索は第１の探索と第２の探索とを具備し、前記第１の探索はその一部に第１のステップ値を持つループ指令を反復的に実行することを具備し、前記第１の探索は前記以前のフレームにおけるピクセルの第１のセットを分析し、前記第２の探索はピクセルの第２のセットを分析し、前記第２の探索は前記一部に第２のステップ値を持つ前記ループ指令を反復的に実行することを具備し、前記第２の探索は前記第２の探索のためのアンカーポイントとして前記ピクセルの第１のセットにおけるピクセルのうちの１つを使用し、前記第１のステップ値は前記第１の探索におけるピクセル間の第１の間隔を示し、前記第２のステップ値は前記第２の探索におけるピクセル間の第２の間隔を示し、前記第１の間隔は前記第２の間隔よりも大きい、動きベクトルを推定することと、を具備し、
前記受信した指令の１つまたはそれ以上は、評価されたマクロブロックを表すピクセルの数と、前記アンカーポイントに関するオフセットと、評価された前記マクロブロックの各々間の変位量とを含むコンピュータ読み取り可能な媒体。
【請求項２８】
前記動きベクトルの前記推定はさらに、前記受信した指令の１つまたはそれ以上に応答して評価された前記マクロブロックの１つを選択することを具備する請求項２７に記載のコンピュータ読み取り可能な媒体。
【請求項２９】
評価されたマクロブロックの前記選択された１つは、前記現在のフレームのマクロブロックに対して最も近い一致をもつマクロブロックである請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３０】
評価された前記マクロブロックの前記１つの評価は、現在のフレームのマクロブロックと、前記以前のフレームの評価されたマクロブロックの各々間のＳＡＤ計算に基づく請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３１】
前記動きベクトルの推定はさらに、前記受信した指令の１つまたはそれ以上に応答して第２のアンカーポイントからずれた複数のマクロブロックを評価することをさらに具備し、前記第２のアンカーポイントは絶対差の値の和の小ささに基づいて選択される請求項２８に記載のコンピュータ読み取り可能な媒体。
【請求項３２】
前記第２のアンカーポイントからずれたマクロブロックの評価に対する受信した指令の１つまたはそれ以上は、前記第２のアンカーポイントからずれた前記評価されたマクロブロックの各々間の第２の変位量を含み、前記第２のアンカーポイントからずれた前記評価されたマクロブロックの各々間の前記第２の変位量は、前記アンカーポイントからずれた前記評価されたマクロブロックの各々間の前記変位量よりも小さい請求項３１に記載のコンピュータ読み取り可能な媒体。
【請求項３３】
前記第１及び第２の探索の両方で実行される指令ブロックをさらに具備する請求項１に記載のビデオプロセッサ。
【請求項３４】
前記指令ブロックは、ループ指令、探索タスク指令、新たな繰り返し指令、又は、探索の終了指令のうちの少なくとも１つを具備する請求項３３に記載のビデオプロセッサ。
【請求項３５】
前記第２のセットは、前記第１のセットよりも少なくないピクセルを具備する請求項１に記載のビデオプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
第２の反復から最低のＳＡＤをもつマクロブロックの周りで最後の反復のマクロブロック探索を促すために次の４つの指令が用いられる。マクロブロック探索位置の最後の反復は、８ピクセル５０６ａ−５０６ｈからなるグリッドによって図５に示される。ここで各ピクセル５０６ａ−５０６ｈは、探索すべき１つのマクロブロックを示している。探索の最後の反復は第２の反復よりも、水平及び垂直方向に隣接ピクセルから１ピクセルだけ離れている各ピクセル５０６ａ−５０６ｈにより焦点が当てられている。
【外国語明細書】
2011160438000001.pdf