(57)【要約】【課題】  本発明の課題は、縮小画像を用いる粗探索と元画像を用いる詳細探索による階層型の動き検出において、先行して行われる粗探索結果から外部メモリから読み出すべき領域をアクセス粒度で行うことにより効率よくメモリアクセスを行うことを目的とする。【解決手段】  上記課題は、外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路により達成される。【選択図】  図１
2011071622.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路。
【請求項２】
前記制御手段は、
縮小画像を用いて動き検出を行った粗探索結果に基づいて、元画像を用いる詳細探索の動き検出における詳細探索範囲を前記外部メモリからの読み込み単位のアクセス粒度でなる拡張領域に拡張する領域拡張手段と、
前記詳細探索範囲の拡張を複数回行った結果、前記外部メモリがアクセス粒度単位でアクセスされる回数をカウントして、複数の拡張領域において互いに重なる領域をアクセス粒度単位で管理する重なり管理手段と、
前記アクセスされる回数が０から１へと変化した前記拡張領域を、アクセス粒度単位で前記外部メモリから動き検出用バッファへ読み込む読込手段と、を有することを特徴とする請求項１記載の動き検出回路。
【請求項３】
前記制御手段は、
前記アクセスされる回数が０から１へと変化した複数の拡張領域を統合し、バースト長で読み込み要求できるように該統合した拡張領域を分割する領域統合分割手段を更に有し、
前記重なり管理手段は、前記アクセスされる回数が０から１へと変化した前記拡張領域をアクセス領域として指定した第一の読み込み要求を前記領域統合分割手段に送出し、
前記領域統合分割手段は、前記第一の読み込み要求を蓄積して複数の拡張領域を統合分割したバースト長による第二の読み込み要求を前記読込手段へ送出することを特徴とする請求項２記載の動き検出回路。
【請求項４】
前記領域統合分割手段は、前記外部メモリのラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする請求項３記載の動き検出回路。
【請求項５】
前記領域統合分割手段は、前記外部メモリの同一行に配置される前記拡張領域を優先して結合し、ラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする請求項３記載の動き検出回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像符号化に係る動き検出に関し、動き検出に伴う画像データの外部メモリから読み込みを効率的に行う動き検出回路に関する。
【背景技術】
【０００２】
近年、画像符号化技術において、ＳＤＲＡＭ（Synchronous DRAM）を用いて大容量の画像データの高速アクセスを可能とし、一方で、画像データのフレーム間の動きベクトル検出する際に、縮小画像を用いて動きベクトルを検出した周辺を探索範囲として、通常解像度の画像を用いて動きベクトルを決定する階層型の動き探索を適応することによって、メモリアクセスの回数を減らし動きベクトルの検出を効率的に行うことができるようになった（例えば、特許文献１、２、３を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２８１６３０号公報
【特許文献２】特開２００６−２３８０４６号公報
【特許文献３】特開平１１−２６２０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＳＤＲＡＭは一度のアクセスでより大量のデータの高速読み出しを可能としメモリアクセスの回数を低減可能とするが、一方でアクセス粒度が粗くなり、動き検出にかかるメモリアクセスは相対的に無駄読み量が多くなってきている。従って、画像データを格納するフレームメモリとしてＳＤＲＡＭを用いた場合、動き検出を行うためにＳＤＲＡＭから読み出した画像データを格納するためには、容量の大きなキャッシュメモリ又は潤沢なメモリ帯域幅を要求するという問題があった。
【課題を解決するための手段】
【０００５】
開示の動き検出回路は、外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段とを有するように構成される。
【発明の効果】
【０００６】
開示の動き検出回路では、縮小画像を用いる粗探索と元画像を用いる詳細探索による階層型の動き検出において、先行して行われる粗探索結果から外部メモリから読み出すべき領域をアクセス粒度で行うことにより効率よくメモリアクセスを行うことできる。
【図面の簡単な説明】
【０００７】
【図１】画像符号化装置における動き検出回路の回路構成例を示す図である。
【図２】一の探索範囲に対するアクセス粒度に対応した拡張領域の例を示す図である。
【図３】拡張領域を統合した例を示す図である。
【図４】アクセス粒度毎の探索範囲の重なり状態に基づく、読み込み要求の例を説明するための図である。
【図５】動き検出回路の全体動作を説明するためのフローチャート図である。
【図６】拡張領域の分割例を示す図である。
【図７】各回路部での処理フローを説明するための図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態を図面に基づいて説明する。静止画像又は動画像のデジタル画像を符号化する画像符号化装置における、フレームメモリを格納した外部メモリ素子から画像データを読み出して動き検出する動き検出回路は、例えば、図１に示すような回路構成を有する。ここで、デジタル画像は、例えばＨ．２６４規格に準拠した静止画像又は動画像であり、フレームメモリを格納する外部メモリ素子は、例えばＳＤＲＡＭ等である。
【０００９】
図１において、画像符号化装置へ入力された画像データは、外部メモリ３に格納され、動き検出回路１００によってフレーム間の動き検出が成された後、図示されない符号化回路によって符号化される。外部メモリ３は、例えば外部クロックに応じて高速読み出し可能なＳＤＲＡＭ等であり、比較的容量の大きい画像データの格納に利用される。
【００１０】
動き検出回路１００は、入力画像に対して所定の比率で間引いた縮小画像を用いて粗い動き検出を行い（以下、粗探索と言う）、その粗探索の結果得られた動きベクトルを用いて、外部メモリ３に格納されている元画像データを用いた動き検出（以下、詳細探索と言う）を行い、この詳細探索によって動きベクトルを決定する階層型動き探索を行う回路である。動き検出回路１００は、重なり管理部１０と、領域統合分割部１１と、データ読込バッファ管理部１２と、バッファ座標関連付けマップ１３と、動き検出詳細探索部１４と、動き検出用バッファ１５と、領域拡張部１６とを有する。
【００１１】
重なり管理部１０は、詳細探索に先行して行う粗探索の処理の進行に応じて、動き検出用バッファ１５を制御すると共に、動き検出詳細探索部１４による詳細探索の処理に応じて、マクロブロック毎に原画像から参照画像との差分において動きベクトルを取得するための探索範囲の重なりを、領域拡張部１６によって粗探索の結果を外部メモリ３への実アクセスによって読み出されるアクセス粒度単位で拡張された拡張領域に対して、アクセス粒度単位に参照カウンタを設けた重なりマップ１７を用いて管理する管理部である。また、重なり管理部１０は、データ読込バッファ管理部１２に対してバッファの初期化及び開放を指示する。
【００１２】
領域統合分割部１１は、重なり管理部１０からのメモリアクセスの要求に対して、外部メモリ３から効率的にデータ読み込みが行えるように、メモリアクセスで指定される領域を外部メモリ３に対するアクセス制御方法に応じて統合及び／又は分割した矩形領域を示すメモリアクセスにして、データ読込バッファ管理部１２へ要求発行する。
【００１３】
データ読込バッファ管理部１２は、領域統合分割部１１からのメモリアクセス要求に応じて外部メモリ３から画像データを動き検出用バッファ１５に読み込む制御を行うと共に、重なり管理部１０からのバッファ制御の指示に応じてバッファの開放及び初期化を行う。
【００１４】
バッファ座標関連付けマップ１３は、動き検出詳細探索部１４が動き検出用バッファ１５に格納された画像データを用いて詳細探索を行う際に参照するマップであって、データ読込バッファ管理部１２によって、動き検出用バッファ１５のアドレスとフレーム内の探索範囲の座標とが対応付けられている。
【００１５】
動き検出詳細探索部１４は、粗探索によって得られた粗探索動きベクトルを参照して、原画像内の探索対象マクロブロックに近似する参照画像内のマクロブロックを特定して、効率的に詳細探索を行う。
【００１６】
動き検出用バッファ１５は、外部メモリ３から動き検出用に読み出した画像データを一時的に格納しておくバッファであり、領域の一部は粗探索に用いられる縮小された原画像のマクロブロック及び参照画像、またその結果等を格納するために使用され、更に別の領域には詳細探索に用いられる原画像のマクロブロック及び参照画像、またその結果等を格納するために使用される。
【００１７】
領域拡張部１６は、動き検出用バッファ１５から得られる動きベクトルを含む粗探索結果に応じて、詳細探索用の探索範囲を外部メモリ３のアクセス粒度単位で拡張領域に拡張し、拡張粗探索結果として重なり管理部１０へ供給する。
【００１８】
重なり管理部１０と、領域統合分割部１１と、バッファ座標関連付けマップ１３と、領域拡張部１６とは、外部メモリ３から動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、外部メモリ３のアクセス粒度でなる領域に拡張して読み込むように制御する制御部２０として機能する。
【００１９】
このような構成によって、粗探索結果に応じて、詳細探索用の探索範囲を外部メモリ３のアクセス粒度を単位として示した領域に拡張し、更に、外部メモリ３に対するアクセス制御方法に応じた統合及び／又は分割した矩形領域で探索範囲を読み込むように制御することができる。従って、粗探索結果に基づいた探索範囲であるため、読み込まれた探索範囲の画像データは常に動き検出用バッファ１５に格納されるため、動き検出詳細探索部１４は、バッファ座標関連付けマップ１３のみを参照して探索範囲内の詳細探索を実行することができる。
【００２０】
上述した構成では、例えば、キャッシュメモリを用いた構成と比較して、動き検出詳細探索部１４は、キャッシュメモリに格納されていない探索範囲の一部又は全部を外部メモリ３から読み出す処理を行う必要がない。また、動き検出詳細探索部１４においては、キャッシュメモリや、外部メモリ３から探索範囲に不足している領域のデータを読み込むための仕組みを不要とすることができる。
【００２１】
また、重なりマップ１７を用いることによって、詳細探索での処理において今後重複して要求される探索範囲を予め重なり回数で示すことができる。よって、重なり管理部１０は、重なり回数に基づいてバッファ開放を制御できるようになり、外部メモリ３への読み出し要求を低減することができ、また効率的に動き検出用バッファ１５の領域を管理することができる。
【００２２】
次に、外部メモリ３のアクセス粒度と、詳細探索における探索範囲との関係について図２及び図３で説明する。図２は、一の探索範囲に対するアクセス粒度に対応した拡張領域の例を示す図である。図２中、１のアクセスアライメントがアクセス粒度を示し、１フレーム画像内における詳細探索における探索範囲が詳細探索範囲＃１から＃ｎで例示している。後述される図３においても同様である。
【００２３】
図２（Ａ）では、外部メモリ３がラスタ状のアクセスアライメント２ａでデータ読み出しが行われる場合について例示している。詳細探索範囲＃１に対して、詳細探索範囲＃１を含む５個のアクセスアライメント２ａでなる拡張領域ＥＸ１１が外部メモリ３から読み出されることを示している。
【００２４】
図２（Ｂ）では、外部メモリ３が格子状のアクセスアライメント２ｂでデータ読み出しが行われる場合について例示している。詳細探索範囲＃１に対して、詳細探索範囲＃１を含む９個のアクセスアライメント２ｂでなる拡張領域ＥＸ２１が外部メモリ３から読み出されることを示している。
【００２５】
図３は、拡張領域を統合した例を示す図である。図３（Ａ）では、ラスタ状の複数のアクセスアライメント２ａでなる拡張領域を結合した場合について例示している。各拡張領域ＥＸ１１〜ＥＸ１ｎは、各詳細探索範囲＃１〜＃ｎに対応する。重複するアクセスアライメント２ａに対するアクセス回数を低減させるため、詳細探索範囲＃１〜＃ｎを結合した領域で外部メモリ３をアクセスする。
【００２６】
図３（Ｂ）では、格子状の複数のアクセスアライメント２ｂでなる拡張領域を結合した場合について例示している。各拡張領域ＥＸ２１〜ＥＸ２ｎは、各詳細探索範囲＃１〜＃ｎに対応する。重複するアクセスアライメント２ｂに対するアクセス回数を低減させるため、詳細探索範囲＃１〜＃ｎを結合した領域で外部メモリ３をアクセスする。
【００２７】
重なりマップ１７を用いて、詳細探索範囲＃１〜＃ｎそのものの重なりを管理するのではなく、上述したような詳細探索範囲＃１〜＃ｎの各々を含む拡張領域ＥＸ１１〜ＥＸ１ｎ又は拡張領域ＥＸ２１〜ＥＸ２ｎの重なり回数を管理するものである。
【００２８】
従って、重なりマップ１７は、例えば、外部メモリ３の全アクセスアライメントに対して参照カウンタを要素とするデータ構造の２次元配列で管理される。又は、詳細探索用に読み込まれた動き検出用バッファ１５に存在する画像データに対して、１次元化したアドレスと参照カウンタとをセットとしてソート済み片方向リスト形式の配列とするデータ構造のアドレス連想型配列構造で管理しても良い。この場合、リストの長さがバッファの読込量を表すためバッファ量の空き容量カウンタとして利用することができる。
【００２９】
このような重なりマップ１７の配列要素となる参照カウンタは、データ読み出しが必要な拡張した領域に含まれる各アクセスアライメントに対して１カウント加算し、動き検出処理において動き検出用バッファ１５に格納されているアクセスアライメントを利用したら１カウント減算する。参照カウンタが０（ゼロ）を示す場合、対応するアクセスアライメントは無効であることを示す。また、参照カウンタがゼロから１に変化した場合に対応するアクセスアライメントを含む拡張領域が外部メモリ３から読み込まれることになる。
【００３０】
アクセス粒度で探索範囲の重なりが示され、外部メモリ３へのアクセス制御方法に従って領域を統合又は分割して動き検出用バッファ１５への読み込み要求がなされる例について図４で説明する。図４は、アクセス粒度毎の探索範囲の重なり状態に基づく、読み込み要求の例を説明するための図である。図４では、例えば、図２（Ｂ）や図３（Ｂ）を例として、外部メモリ３が格子状のアクセスアライメントでデータ読み出しが行われる場合で説明するが、ラスタ状のアクセスアライメントの場合でも同様の処理で実現できる。
【００３１】
図４において、重なりマップ１７が初期化された状態から、時刻Ｔ１において、粗探索結果の読み込みイベント（＃１）により、領域拡張部１６によって拡張された探索範囲＃１の登録が要求され、重なり管理部１０が、重なりマップ１７において探索範囲＃１を拡張した領域に対応するアクセス粒度毎の参照カウンタに１加算する。この時刻Ｔ１では、バッファ残量（空き容量）カウンタは、全容量（ＦＵＬＬ）からアクセス粒度６個分のデータ量（ビット数又はバイト数）が減算される。
【００３２】
重なりマップ１７内の探索範囲＃１の拡張領域においてアクセス粒度毎の参照カウンタが０から１に変化したことにより、詳細探索を行うための画像データの第一の読み込み要求が、重なり管理部１０によってなされる。第一の読み込み要求ではメモリアクセス領域が指定される。領域統合分割部１１によって、動き検出詳細探索部１４によって詳細探索が開示されるまで第一の読み込み要求によって指定されるメモリアクセス領域に係る情報を蓄積する。
【００３３】
時刻Ｔ２において、粗探索結果の読み込みイベント（＃２）により、領域拡張部１６によって拡張された探索範囲＃２の登録が要求され、重なり管理部１０が、重なりマップ１７において探索範囲＃２を拡張した領域に対応するアクセス粒度毎の参照カウンタに１加算する。この参照カウンタの加算によって、探索範囲＃１を拡張した領域と重なる領域に対してもアクセス粒度毎に更に１加算されるため、この例において重なる領域では参照カウンタが「２」となる。そして、バッファ残量カウンタは、全容量（ＦＵＬＬ）から、重なり部分を除くアクセス粒度４個分のデータ量が更に減算される。つまり、全容量（ＦＵＬＬ）から合計でアクセス粒度１０個分データ量が減算される。
【００３４】
時刻Ｔ２と同様に、重なりマップ１７の参照カウンタが０から１に変化した部分について、重なり管理部１０によって領域統合分割部１１に画像データの第一の読み込み要求がなされるが、この時点では、この第一の読み込み要求で指定されるメモリアクセス領域に係る情報は蓄積されるのみとなる。
【００３５】
時刻Ｔ３において、動き検出詳細探索部１４による動き検出開始イベント（＃１）がなされる。更に、時刻Ｔ４において、粗探索結果の読み込みイベント（＃３）により、領域拡張部１６によって拡張された探索範囲＃３の登録が要求され、重なり管理部１０が、重なりマップ１７において探索範囲＃３を拡張した領域に対してアクセス粒度毎に参照カウンタに１加算する。そして、バッファ残量カウンタは、全容量（ＦＵＬＬ）から、アクセス粒度４個分のデータ量が更に減算される。つまり、全容量（ＦＵＬＬ）から合計でアクセス粒度１４個分データ量が減算される。
【００３６】
ここで、領域統合分割部１１は、蓄積されたメモリアクセス領域に係る情報に基づいて、重なり管理部１０からの第一の読み込み要求毎のメモリアクセス領域の範囲とは別に、外部メモリ３のアクセス制御方法に従って効率的に画像データの読み込みができるメモリアクセス領域となるように領域の統合及び／又は分割を行い、読み込むべき画像データのメモリアクセス矩形領域を指定した第二の読み込み要求を発行する。アクセス制御方法に従った効率的な画像データの読み込みとは、例えば、連続的にアクセスできるようにバースト量を考慮する、また、ＲＯＷ（行）又はバンクなど外部メモリ３のメモリ領域の単位又は境界を考慮する等である。
【００３７】
この例では、探索範囲＃１と探索範囲＃２とが統合され、更に、探索範囲＃３を分割した部分を統合した領域をメモリアクセス矩形領域４ａとする。また、探索範囲＃３を分割した残り部分をメモリアクセス矩形領域４ｂとする。領域統合分割部１１は、メモリアクセス矩形領域４ａを指定した第二の読み込み要求をデータ読込バッファ管理部１２に発行し、更にメモリアクセス矩形領域４ｂを指定した別の第二の読み込み要求を発行する。メモリアクセス矩形領域４ａとメモリアクセス矩形領域４ｂとが検出量バッファ１５に格納され、バッファ座標関連付けマップ１３がデータ読込バッファ管理部１２によって更新される。
【００３８】
時刻Ｔ５において、動き検出詳細探索部１４は、バッファ座標関連付けマップ１３を参照することにより詳細探索に必要な画像データの格納済みを確認し、動き検出用バッファ１５に格納された画像データを用いて詳細探索による動き検出を行う。
【００３９】
時刻Ｔ６において、粗探索結果の読み込みイベント（＃４）により、領域拡張部１６によって拡張された探索範囲＃４の登録が要求され、重なり管理部１０が、重なりマップ１７において探索範囲＃４を拡張した領域に対してアクセス粒度毎に参照カウンタに１加算する。そして、バッファ残量カウンタは、全容量（ＦＵＬＬ）から、重なり部分を除くアクセス粒度４個分のデータ量が更に減算される。つまり、全容量（ＦＵＬＬ）から合計でアクセス粒度１８個分データ量が減算される。
【００４０】
その後、時刻Ｔ７において、動き検出詳細探索部１４による探索範囲＃１における詳細探索による動き検出終了イベント（＃１）に応じて、重なり管理部１０は、重なりマップ１７の探索範囲＃１を含む拡張領域に対してアクセス粒度毎に参照カウンタを１減算する。また、重なり管理部１０は、減算することにより参照カウンタが０になった動き検出用バッファ１５内の領域の開放をデータ読込バッファ管理部１２に指示する。バッファ開放されるのは、探索範囲＃１の拡張領域と重ならない参照カウンタが０になった領域＃１−２であり、アクセス粒度単位で開放される。データ読込バッファ管理部１２は、バッファ座標関連付けマップ１３を更新する。
【００４１】
上述した重なり管理及び領域統合分割を行う動き検出回路１００の全体動作について図５で説明する。図５は、動き検出回路の全体動作を説明するためのフローチャート図である。図５において、動き検出回路１００は、ステップＳ１１での初期化処理において、現在処理対象のマクロブロック（カレントＭＢ）のＭＢアドレス０，０の粗探索結果から開始し、動き検出を行うマクロブロック順序で処理を行う。重なり検出部１０は、重なりマップ１７を全てゼロに設定して初期化する。データ読込バッファ管理部１２は、バッファ座標関連付けマップ１３を初期化すると共に、詳細探索用のバッファ残量をフル状態にする。動き検出回路１００は、ＭＢ（マクロブロック）単位又はフレーム単位で粗探索を詳細探索に先行して行い。
【００４２】
ステップＳ１２での重なり検出処理において、動き検出回路１００は、粗探索の結果を詳細探索の動き検出を行うＭＢ順にリオーダーして処理する。拡張領域部１６は、粗探索の結果を一回り大きな実アクセスに相当する拡張領域に拡張させて拡張粗探索結果として重なり管理部１０に通知する。重なり管理部１０は、拡張領域に対応する重なりマップ１７の参照カウンタを１加算する。その際、参照カウンタが０から１になる時のみバッファ残量カウンタを減算して、領域統合管理部１１に第一の読み込み要求としてキューイングする。バッファ残量がゼロ（バッファフル）になるまで繰り返えした後、ステップＳ１３へと進む。この際、参照カウンタが、同じ領域を使う最大数を示す所定数を超えた場合には、バッファフルを待つことなくステップＳ１３へと進む。
【００４３】
ステップＳ１３での領域統合分割処理において、領域統合分割部１１は、重なり管理部１０からの第一の読み込み要求による拡張領域を統合し、２次元的にスキャンして第二の読み込み要求として、外部メモリ３に対するアクセス制御方法に従ったアクセス粒度単位に分割する。
【００４４】
アクセス粒度単位への分割は、連続的に読み込むことができるようにバースト長で分割する。例えば、
（ａ）ラスタスキャン方向に拡張領域が連続するように横長の矩形に分割する
（ｂ）外部メモリ３の同一ＲＯＷ（行）に配置される拡張領域を優先して結合し、
（ｂ−１）更に、ラスタスキャン方向に拡張領域が連続するように横長の矩形に分割する
（ｂ−２）若しくは、同一ＲＯＷ（行）の拡張領域については、一回り大きな矩形に拡張し、不要なデータは破棄してバッファに格納する
（ｂ−３）上記（ｂ−１）又は（ｂ−２）の処理をしたうえで、外部メモリ３のＢＡＮＫインターリーブアクセスが可能なように、バンクが異なるものと交互にメモリアクセスを発行するように制御する。つまり、同一バンクアドレスが連続しないようにリオーダーする。この場合のリオーダーの方法は、下記のいずれかを適用すればよい。
【００４５】
（１）バンクアドレスが連続する場合、その次以降のメモリアクセスのうちバンクアドレスが異なるものを挿入する。異なるものが無くなった場合は、同じバンクアドレスが連続することになるが、リオーダーを終了する。
【００４６】
（２）バンクアドレスが連続する場合、その次以降のメモリアクセスのうちバンクアドレスが異なるものを挿入する。異なるバンクが無くなった場合、前方向のメモリアクセスの二つの要素とも自身のバンクアドレスと異なっているものをサーチし見つけたら、間に挿入するように入れ替える。前方向にそのようなアクセスが無くなった場合はリオーダーを終了する。
【００４７】
一方で、結合や分割のないアクセス粒度毎に外部メモリ３へアクセスしてもよい。
【００４８】
領域統合分割部１１によって行われる蓄積された拡張領域の分割の例について図６で説明する。図６は、拡張領域の分割例を示す図である。図６中、アクセスアライメント２ｃを第一の読み込み要求で指定される拡張領域を構成するアクセス粒度単位の領域として示し、丸縁の実線で囲んだ矩形領域５ａから５ｅを第二の読み込み要求で指定する実アクセスによる領域を示す。
【００４９】
図６（Ａ）では、同一ＲＯＷ（行）に配置される拡張領域を優先して結合した後、矩形に分割した場合を示している。アクセスアライメント２ｃを結合した丸縁の実線で囲まれている矩形領域５ａ、５ｂ、５ｃ、及び５ｄが実アクセスで指定される。図６（Ｂ）では、同一ＲＯＷ（行）に配置される拡張領域について一回り大きな矩形領域５ｅに拡張し、不要なデータは破棄してバッファに格納する。
【００５０】
領域統合分割部１１は、重なり管理部１０からの第一の読み込み要求で指定されるアクセス粒度の整数倍でなる拡張領域の蓄積によって、効率的なデータ転送となるように外部メモリ３のアクセス制御方法に従った拡張領域の分割を行う。
【００５１】
図５に戻り、ステップＳ１４での画像データの読み出し処理において、データ読込バッファ管理部１２は、外部メモリ３のアクセス単位の矩形毎に外部メモリ３からデータを読み出し、閣僚領域単位に動き検出用バッファ１５の空き領域に格納する。そして、データ読込バッファ管理部１２は、格納した画像データの２次元座標とバッファのアドレスとを関連付けたバッファ座標関連付けマップ１３を作成する。
【００５２】
そして、ステップＳ１５での詳細探索の動き検出処理において、動き検出詳細探索部１４は、動き検出用バッファ１５の詳細探索範囲の画像データを使用して動き検出を行い、動き検出済みの詳細探索範囲に対する参照カウンタに対する操作指示を重なり管理部１０に対して行う。重なり管理部１０は、詳細探索の動き検出で使用した詳細探索範囲を含む拡張領域に対応する重なりマップ１７の参照カウンタを減算する。重なり管理部１０は、参照カウンタが０になるとバッファ残量カウンタを加算し、対応するバッファ領域を開放するようにデータ読込バッファ管理部１２に指示する。
【００５３】
ステップＳ１６での判断処理において、動き検出詳細探索部１４は、１の詳細探索範囲における動き検出処理を終了すると、次画面が在るか否かを判断する。次画面が在る場合は、ステップＳ１１に戻り、重なりマップ１７、及び動き検出用バッファ１５内の詳細探索用の領域を初期化して、上述同様の処理を繰り返す。一方、次画面が存在しない場合、この処理を終了する。
【００５４】
図７は、各回路部での処理フローを説明するための図である。図７において、先ず、領域拡張部１６での処理について説明する。領域拡張部１６は、動き検出用バッファ１５から粗探索結果を入力する（ステップＳ２１）。そして、重なり管理部１０がデータ受信できるか否かを判断し（ステップＳ２２）、データ受信できない場合は受信できるまで待ち状態となる。一方、データ受信できる場合、ステップＳ２１で入力した粗探索結果を領域拡張した拡張粗探索結果を重なり管理部１０へと出力する（ステップＳ２３）。その後、動き検出用バッファ１５の粗探索結果の全てのデータを処理したか否かを判断し（ステップＳ２４）、全てのデータを処理していない場合には、ステップＳ２１へと戻り上述同様の処理を繰り返す。一方、全てのデータを処理した場合、この処理を終了する。
【００５５】
次に、重なり管理部１０での処理について説明する。重なり管理部１０は、領域拡張部１６からの拡張粗探索結果の入力があるか否かを判断する（ステップＳ３１）。拡張粗探索結果の入力がない場合、動き検出詳細探索部１４から参照カウンタの参照済指示があるか否かを判断する（ステップＳ３１−２）。参照カウンタの参照済指示がある場合、参照済パラメータを入力し（ステップＳ３２−２）、参照済指示がなければ、ステップＳ３１へ戻り、拡張粗探索結果の入力又は参照カウンタの参照済指示が成されるまで待ち状態となる。一方、ステップＳ３１にて、拡張粗探索結果の入力があった場合、粗探索で用いた探索領域がアクセス粒度で拡張された領域に係る拡張領域データを入力する（ステップＳ３２）。
【００５６】
その後、重なり管理部１０は、重なりマップ１７を更新する（ステップＳ３３）。重なり管理部１０は、この更新によって、参照カウンタが０から１に変化したアクセスアライメントがあるか否かを判断する（ステップＳ３４）。０から１に変化したアクセスアライメントがない場合、重なり管理部１０は、参照カウンタが１から０に変化したアクセスアライメントがあるか否かを判断する（ステップＳ３４−２）。１から０に変化したアクセスアライメントがない場合、ステップＳ３７へと進む。一方、１から０に変化したアクセスアライメントがある場合、そのアクセスアライメントのデータを格納しているバッファ領域を開放するためにバッファ開放要求をデータ読込バッファ管理部１２に送出し（ステップＳ３６−２）、ステップＳ３７へと進む。
【００５７】
一方、ステップＳ３４において、参照カウンタが０から１に変化したアクセスアライメントが在る場合、重なり管理部１０は、領域統合分割部１１に対してメモリアクセス領域を指定した第一の読み込み要求を送出する（ステップＳ３６）。そして、重なり管理部１０は、全てのデータを処理したか否かを判断する（ステップＳ３７）。全てのデータを処理していない場合、ステップＳ３１へ戻り、上述した同様の処理を繰り返す。一方、全てのデータを処理した場合、この処理を終了する。
【００５８】
次に、領域統合分割部１１での処理について説明する。領域統合分割部１１は、重なり管理部１０からの第一の読み込み要求があるか否かを判断する（ステップＳ４１）。第一の読み込み要求がない場合、ステップＳ４３へと進む。一方、第一の読み込み要求がある場合、拡張領域データを入力する（ステップＳ４２）。
【００５９】
そして、領域統合分割部１１は、動き検出詳細探索部１４がデータ待ちであるか否かを判断する（ステップＳ４３）。バッファ残量が閾値以下であるか否かを判断する（ステップＳ４４）。閾値以下である場合、ステップＳ４１へ戻り、上述した同様の処理を行う。
【００６０】
一方、ステップＳ４４にて、バッファ残量が閾値を超える場合、領域統合分割部１１は、最も古い要求を含む領域を算出し（ステップＳ４５）、外部メモリ３から動き検出用バッファ１５への画像データの矩形領域を指定した第二の読み込み要求をデータ読込バッファ管理部１２へ送出する（ステップＳ４６）。そして、領域統合分割部１１は、全てのデータを処理したか否かを判断する（ステップＳ４７）。全てのデータを処理していない場合、ステップＳ４１へ戻り、上述した同様の処理を行い、全てのデータを処理した場合、この処理を終了する。
【００６１】
次に、データ読込バッファ管理部１２での処理について説明する。データ読込バッファ管理部１２は、領域統合分割部１１からの第二の読み込み要求があるか否かを判断する（ステップＳ５１）。第二の読み込み要求がない場合、データ読込バッファ管理部１２は、更に重なり管理部１０からのバッファ開放要求があるか否かを判断する（ステップＳ５１−２）。バッファ開放要求がない場合、ステップＳ５１へ戻り、領域統合分割部１１又はデータ読込バッファ管理部１２からの要求待ち状態となる。一方、バッファ開放要求がある場合、動き検証用バッファ１５の詳細探索用の領域からバッファ開放要求で指定された領域の画像データを削除して（ステップＳ５１−４）、ステップＳ５５へと進む。
【００６２】
一方、ステップＳ５１にて、第二の読み込み要求がある場合、データ読込バッファ管理部１２は、動き検出用バッファ１５への読み込み領域を確保する（ステップＳ５２）。そして、読み込んだ画像データの領域に関してバッファ座標関連付けマップを作成する（ステップＳ５３）。
【００６３】
続けて、データ読込バッファ管理部１２は、外部メモリ３へのデータ要求を行い、外部メモリ３から受信した画像データを動き検出用バッファ１５に格納する（ステップＳ５４）。その後、全てのデータを処理したか否かを判断し（ステップＳ５５）、全てのデータを処理していない場合、ステップＳ５１へ戻り、上述同様の処理を実行する。一方、全てのデータを処理した場合、この処理を終了する。
【００６４】
次に、動き検出詳細探索部１４は、バッファ座標関連付けマップ１３を参照して（ステップＳ６１）、詳細探索範囲が動き検出用バッファ１５に格納されているか否かをチェックすることにより、詳細探索による動き検出処理が可能か否かを判断する（ステップＳ６２）。処理が可能な状態でないと判断した場合、詳細探索範囲が格納されるまで待ち状態となる。処理が可能な状態であると判断した場合、動き検出詳細探索部１４は、参照画像の詳細探索範囲においてマクロブロック毎に動き検出処理を行う（ステップＳ６３）。
【００６５】
動き検出詳細探索部１４は、詳細探索による動き検出処理を完了すると、重なり管理部１０に対して、詳細探索範囲で利用した画像データを削除するために参照カウンタの参照済指示を送出する（ステップＳ６４）。そして、全てのデータを処理したか否かを判断し（ステップＳ６５）、全てのデータを処理していない場合、ステップＳ５１へ戻り、上述同様の処理を実行する。一方、全てのデータを処理した場合、この処理を終了する。
【００６６】
上述したように、本実施例に係る動き検出回路１００は、粗探索結果に基づいた元画像を用いる詳細探索の動き検出における詳細探索範囲を外部メモリ３の読み出し単位となるアクセス粒度を用いて拡張した拡張領域に対して、アクセス粒度毎に探索範囲の重なりを管理した上で、詳細探索における動き検出を行うための探索範囲の拡張領域を動き検出用バッファ１５に読み込む。そして、重なりが存在する間は、動き検出用バッファ１５に格納しておくため、外部メモリ３への読み込み回数を低減することができる。
【００６７】
また、動き検出用バッファ１５に格納した画像データの２次元座標とバッファのアドレスとを関連付けたバッファ座標関連付けマップ１３が作成されるため、動き検出詳細探索部１４は、常に、詳細探索の対象となる探索範囲が動き検出用バッファ１５に格納されていることを確認し、動き検出用バッファ１５に格納されている探索範囲で詳細探索の動き検出を行うことができる。従って、動き検出の処理中に外部メモリ３から不足分をその都度読み込むといった処理付加を削減することができ、キャッシュメモリを用いた場合に比べて、効率的に詳細探索の動き検出を行うことができる。
【００６８】
以上の説明に関し、更に以下の項を開示する。
（付記１）
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路。
（付記２）
前記制御手段は、
縮小画像を用いて動き検出を行った粗探索結果に基づいて、元画像を用いる詳細探索の動き検出における詳細探索範囲を前記外部メモリからの読み込み単位のアクセス粒度でなる拡張領域に拡張する領域拡張手段と、
前記詳細探索範囲の拡張を複数回行った結果、前記外部メモリがアクセス粒度単位でアクセスされる回数をカウントして、複数の拡張領域において互いに重なる領域をアクセス粒度単位で管理する重なり管理手段と、
前記アクセスされる回数が０から１へと変化した前記拡張領域を、アクセス粒度単位で前記外部メモリから動き検出用バッファへ読み込む読込手段と、を有することを特徴とする付記１記載の動き検出回路。
（付記３）
前記制御手段は、
前記アクセスされる回数が０から１へと変化した複数の拡張領域を統合し、バースト長で読み込み要求できるように該統合した拡張領域を分割する領域統合分割手段を更に有し、
前記重なり管理手段は、前記アクセスされる回数が０から１へと変化した前記拡張領域をアクセス領域として指定した第一の読み込み要求を前記領域統合分割手段に送出し、
前記領域統合分割手段は、前記第一の読み込み要求を蓄積して複数の拡張領域を統合分割したバースト長による第二の読み込み要求を前記読込手段へ送出することを特徴とする付記２記載の動き検出回路。
（付記４）
前記領域統合分割手段は、前記外部メモリのラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする付記３記載の動き検出回路。（４、図３）
（付記５）
前記領域統合分割手段は、前記外部メモリの同一行に配置される前記拡張領域を優先して結合し、ラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする付記３記載の動き検出回路。
（付記６）
前記領域統合分割手段は、前記外部メモリの同一行の前記拡張領域については、一回り大きな矩形に拡張することを特徴とする付記３記載の動き検出回路。
（付記７）
前記領域統合分割手段は、異なるバンクアドレスの順で前記第二の読み込み要求が連続して成されるように、前記外部メモリへの読み込み要求のバンクアドレスの順をリオーダーすることを特徴とする付記３又は４記載の動き検出回路。
（付記８）
前記動き検出回路は、前記領域拡張手段によって拡張された前記拡張領域を前記アクセス粒度毎に対応させた参照カウンタで前記アクセスされる回数を管理する重なりマップを記憶する記憶領域を更に有し、
前記重なり管理手段は、前記重なりマップを用いて、前記粗探索結果に基づく前記詳細探索範囲を前記アクセス粒度単位で前記参照カウンタを操作することを特徴とする付記１乃至７のいずれか一項記載の動き検出回路。
（付記９）
前記動き検出詳細探索手段は、前記詳細探索範囲を用いた前記詳細探索の動き検出を行うと、前記重なり管理手段へ該詳細探索範囲の参照済指示を送出し、
前記重なり管理手段は、前記参照済指示に応じて、前記重なりマップの前記詳細探索範囲に対応する前記拡張領域の前記参照カウンタを減算し、該参照カウンタがゼロとなった領域のバッファ開放指示を前記読込手段に送出し、
前記読込手段は、前記バッファ開放指示に応じて、前記動き検出用バッファの前記領域を開放することを特徴とする付記８記載の動き検出回路。
（付記１０）
前記読込手段は、前記アクセスされる回数が０から１へと変化した前記拡張領域に係る前記動き検出用バッファのアドレスと前記詳細探索範囲の座標とを関連付けた関連付けマップを作成し、
前記動き詳細探索手段は、前記関連付けマップを参照して、前記動き検出用バッファに格納された前記詳細探索範囲を用いて前記詳細探索の動き検出を行うことを特徴とする付記２乃至９のいずれか一項記載の動き検出回路。
（付記１１）
画像符号化においける動き検出方法であって、
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手順と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手順と、を有することを特徴とする動き検出方法。
【００６９】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００７０】
２ａ、２ｂ、２ｃ  アクセスアライメント
３          外部メモリ
５ａ、５ｂ、５ｃ、５ｄ、５ｅ  矩形領域
１０        重なり管理部
１１        領域統合分割部
１２        データ読込バッファ管理部
１３        バッファ座標関連付けマップ
１４        動き検出詳細探索部
１５        動き検出用バッファ
１６        領域拡張部
１７        重なりマップ
１００      動き検出回路
【図１】
2011071622.tif 000003
【図２】
2011071622.tif 000004
【図３】
2011071622.tif 000005
【図４】
2011071622.tif 000006
【図５】
2011071622.tif 000007
【図６】
2011071622.tif 000008
【図７】
2011071622.tif 000009