説明

動き検出回路

【課題】 本発明の課題は、縮小画像を用いる粗探索と元画像を用いる詳細探索による階層型の動き検出において、先行して行われる粗探索結果から外部メモリから読み出すべき領域をアクセス粒度で行うことにより効率よくメモリアクセスを行うことを目的とする。
【解決手段】 上記課題は、外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路により達成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像符号化に係る動き検出に関し、動き検出に伴う画像データの外部メモリから読み込みを効率的に行う動き検出回路に関する。
【背景技術】
【0002】
近年、画像符号化技術において、SDRAM(Synchronous DRAM)を用いて大容量の画像データの高速アクセスを可能とし、一方で、画像データのフレーム間の動きベクトル検出する際に、縮小画像を用いて動きベクトルを検出した周辺を探索範囲として、通常解像度の画像を用いて動きベクトルを決定する階層型の動き探索を適応することによって、メモリアクセスの回数を減らし動きベクトルの検出を効率的に行うことができるようになった(例えば、特許文献1、2、3を参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−281630号公報
【特許文献2】特開2006−238046号公報
【特許文献3】特開平11−262015号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、SDRAMは一度のアクセスでより大量のデータの高速読み出しを可能としメモリアクセスの回数を低減可能とするが、一方でアクセス粒度が粗くなり、動き検出にかかるメモリアクセスは相対的に無駄読み量が多くなってきている。従って、画像データを格納するフレームメモリとしてSDRAMを用いた場合、動き検出を行うためにSDRAMから読み出した画像データを格納するためには、容量の大きなキャッシュメモリ又は潤沢なメモリ帯域幅を要求するという問題があった。
【課題を解決するための手段】
【0005】
開示の動き検出回路は、外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段とを有するように構成される。
【発明の効果】
【0006】
開示の動き検出回路では、縮小画像を用いる粗探索と元画像を用いる詳細探索による階層型の動き検出において、先行して行われる粗探索結果から外部メモリから読み出すべき領域をアクセス粒度で行うことにより効率よくメモリアクセスを行うことできる。
【図面の簡単な説明】
【0007】
【図1】画像符号化装置における動き検出回路の回路構成例を示す図である。
【図2】一の探索範囲に対するアクセス粒度に対応した拡張領域の例を示す図である。
【図3】拡張領域を統合した例を示す図である。
【図4】アクセス粒度毎の探索範囲の重なり状態に基づく、読み込み要求の例を説明するための図である。
【図5】動き検出回路の全体動作を説明するためのフローチャート図である。
【図6】拡張領域の分割例を示す図である。
【図7】各回路部での処理フローを説明するための図である。
【発明を実施するための形態】
【0008】
以下、本発明の実施の形態を図面に基づいて説明する。静止画像又は動画像のデジタル画像を符号化する画像符号化装置における、フレームメモリを格納した外部メモリ素子から画像データを読み出して動き検出する動き検出回路は、例えば、図1に示すような回路構成を有する。ここで、デジタル画像は、例えばH.264規格に準拠した静止画像又は動画像であり、フレームメモリを格納する外部メモリ素子は、例えばSDRAM等である。
【0009】
図1において、画像符号化装置へ入力された画像データは、外部メモリ3に格納され、動き検出回路100によってフレーム間の動き検出が成された後、図示されない符号化回路によって符号化される。外部メモリ3は、例えば外部クロックに応じて高速読み出し可能なSDRAM等であり、比較的容量の大きい画像データの格納に利用される。
【0010】
動き検出回路100は、入力画像に対して所定の比率で間引いた縮小画像を用いて粗い動き検出を行い(以下、粗探索と言う)、その粗探索の結果得られた動きベクトルを用いて、外部メモリ3に格納されている元画像データを用いた動き検出(以下、詳細探索と言う)を行い、この詳細探索によって動きベクトルを決定する階層型動き探索を行う回路である。動き検出回路100は、重なり管理部10と、領域統合分割部11と、データ読込バッファ管理部12と、バッファ座標関連付けマップ13と、動き検出詳細探索部14と、動き検出用バッファ15と、領域拡張部16とを有する。
【0011】
重なり管理部10は、詳細探索に先行して行う粗探索の処理の進行に応じて、動き検出用バッファ15を制御すると共に、動き検出詳細探索部14による詳細探索の処理に応じて、マクロブロック毎に原画像から参照画像との差分において動きベクトルを取得するための探索範囲の重なりを、領域拡張部16によって粗探索の結果を外部メモリ3への実アクセスによって読み出されるアクセス粒度単位で拡張された拡張領域に対して、アクセス粒度単位に参照カウンタを設けた重なりマップ17を用いて管理する管理部である。また、重なり管理部10は、データ読込バッファ管理部12に対してバッファの初期化及び開放を指示する。
【0012】
領域統合分割部11は、重なり管理部10からのメモリアクセスの要求に対して、外部メモリ3から効率的にデータ読み込みが行えるように、メモリアクセスで指定される領域を外部メモリ3に対するアクセス制御方法に応じて統合及び/又は分割した矩形領域を示すメモリアクセスにして、データ読込バッファ管理部12へ要求発行する。
【0013】
データ読込バッファ管理部12は、領域統合分割部11からのメモリアクセス要求に応じて外部メモリ3から画像データを動き検出用バッファ15に読み込む制御を行うと共に、重なり管理部10からのバッファ制御の指示に応じてバッファの開放及び初期化を行う。
【0014】
バッファ座標関連付けマップ13は、動き検出詳細探索部14が動き検出用バッファ15に格納された画像データを用いて詳細探索を行う際に参照するマップであって、データ読込バッファ管理部12によって、動き検出用バッファ15のアドレスとフレーム内の探索範囲の座標とが対応付けられている。
【0015】
動き検出詳細探索部14は、粗探索によって得られた粗探索動きベクトルを参照して、原画像内の探索対象マクロブロックに近似する参照画像内のマクロブロックを特定して、効率的に詳細探索を行う。
【0016】
動き検出用バッファ15は、外部メモリ3から動き検出用に読み出した画像データを一時的に格納しておくバッファであり、領域の一部は粗探索に用いられる縮小された原画像のマクロブロック及び参照画像、またその結果等を格納するために使用され、更に別の領域には詳細探索に用いられる原画像のマクロブロック及び参照画像、またその結果等を格納するために使用される。
【0017】
領域拡張部16は、動き検出用バッファ15から得られる動きベクトルを含む粗探索結果に応じて、詳細探索用の探索範囲を外部メモリ3のアクセス粒度単位で拡張領域に拡張し、拡張粗探索結果として重なり管理部10へ供給する。
【0018】
重なり管理部10と、領域統合分割部11と、バッファ座標関連付けマップ13と、領域拡張部16とは、外部メモリ3から動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、外部メモリ3のアクセス粒度でなる領域に拡張して読み込むように制御する制御部20として機能する。
【0019】
このような構成によって、粗探索結果に応じて、詳細探索用の探索範囲を外部メモリ3のアクセス粒度を単位として示した領域に拡張し、更に、外部メモリ3に対するアクセス制御方法に応じた統合及び/又は分割した矩形領域で探索範囲を読み込むように制御することができる。従って、粗探索結果に基づいた探索範囲であるため、読み込まれた探索範囲の画像データは常に動き検出用バッファ15に格納されるため、動き検出詳細探索部14は、バッファ座標関連付けマップ13のみを参照して探索範囲内の詳細探索を実行することができる。
【0020】
上述した構成では、例えば、キャッシュメモリを用いた構成と比較して、動き検出詳細探索部14は、キャッシュメモリに格納されていない探索範囲の一部又は全部を外部メモリ3から読み出す処理を行う必要がない。また、動き検出詳細探索部14においては、キャッシュメモリや、外部メモリ3から探索範囲に不足している領域のデータを読み込むための仕組みを不要とすることができる。
【0021】
また、重なりマップ17を用いることによって、詳細探索での処理において今後重複して要求される探索範囲を予め重なり回数で示すことができる。よって、重なり管理部10は、重なり回数に基づいてバッファ開放を制御できるようになり、外部メモリ3への読み出し要求を低減することができ、また効率的に動き検出用バッファ15の領域を管理することができる。
【0022】
次に、外部メモリ3のアクセス粒度と、詳細探索における探索範囲との関係について図2及び図3で説明する。図2は、一の探索範囲に対するアクセス粒度に対応した拡張領域の例を示す図である。図2中、1のアクセスアライメントがアクセス粒度を示し、1フレーム画像内における詳細探索における探索範囲が詳細探索範囲#1から#nで例示している。後述される図3においても同様である。
【0023】
図2(A)では、外部メモリ3がラスタ状のアクセスアライメント2aでデータ読み出しが行われる場合について例示している。詳細探索範囲#1に対して、詳細探索範囲#1を含む5個のアクセスアライメント2aでなる拡張領域EX11が外部メモリ3から読み出されることを示している。
【0024】
図2(B)では、外部メモリ3が格子状のアクセスアライメント2bでデータ読み出しが行われる場合について例示している。詳細探索範囲#1に対して、詳細探索範囲#1を含む9個のアクセスアライメント2bでなる拡張領域EX21が外部メモリ3から読み出されることを示している。
【0025】
図3は、拡張領域を統合した例を示す図である。図3(A)では、ラスタ状の複数のアクセスアライメント2aでなる拡張領域を結合した場合について例示している。各拡張領域EX11〜EX1nは、各詳細探索範囲#1〜#nに対応する。重複するアクセスアライメント2aに対するアクセス回数を低減させるため、詳細探索範囲#1〜#nを結合した領域で外部メモリ3をアクセスする。
【0026】
図3(B)では、格子状の複数のアクセスアライメント2bでなる拡張領域を結合した場合について例示している。各拡張領域EX21〜EX2nは、各詳細探索範囲#1〜#nに対応する。重複するアクセスアライメント2bに対するアクセス回数を低減させるため、詳細探索範囲#1〜#nを結合した領域で外部メモリ3をアクセスする。
【0027】
重なりマップ17を用いて、詳細探索範囲#1〜#nそのものの重なりを管理するのではなく、上述したような詳細探索範囲#1〜#nの各々を含む拡張領域EX11〜EX1n又は拡張領域EX21〜EX2nの重なり回数を管理するものである。
【0028】
従って、重なりマップ17は、例えば、外部メモリ3の全アクセスアライメントに対して参照カウンタを要素とするデータ構造の2次元配列で管理される。又は、詳細探索用に読み込まれた動き検出用バッファ15に存在する画像データに対して、1次元化したアドレスと参照カウンタとをセットとしてソート済み片方向リスト形式の配列とするデータ構造のアドレス連想型配列構造で管理しても良い。この場合、リストの長さがバッファの読込量を表すためバッファ量の空き容量カウンタとして利用することができる。
【0029】
このような重なりマップ17の配列要素となる参照カウンタは、データ読み出しが必要な拡張した領域に含まれる各アクセスアライメントに対して1カウント加算し、動き検出処理において動き検出用バッファ15に格納されているアクセスアライメントを利用したら1カウント減算する。参照カウンタが0(ゼロ)を示す場合、対応するアクセスアライメントは無効であることを示す。また、参照カウンタがゼロから1に変化した場合に対応するアクセスアライメントを含む拡張領域が外部メモリ3から読み込まれることになる。
【0030】
アクセス粒度で探索範囲の重なりが示され、外部メモリ3へのアクセス制御方法に従って領域を統合又は分割して動き検出用バッファ15への読み込み要求がなされる例について図4で説明する。図4は、アクセス粒度毎の探索範囲の重なり状態に基づく、読み込み要求の例を説明するための図である。図4では、例えば、図2(B)や図3(B)を例として、外部メモリ3が格子状のアクセスアライメントでデータ読み出しが行われる場合で説明するが、ラスタ状のアクセスアライメントの場合でも同様の処理で実現できる。
【0031】
図4において、重なりマップ17が初期化された状態から、時刻T1において、粗探索結果の読み込みイベント(#1)により、領域拡張部16によって拡張された探索範囲#1の登録が要求され、重なり管理部10が、重なりマップ17において探索範囲#1を拡張した領域に対応するアクセス粒度毎の参照カウンタに1加算する。この時刻T1では、バッファ残量(空き容量)カウンタは、全容量(FULL)からアクセス粒度6個分のデータ量(ビット数又はバイト数)が減算される。
【0032】
重なりマップ17内の探索範囲#1の拡張領域においてアクセス粒度毎の参照カウンタが0から1に変化したことにより、詳細探索を行うための画像データの第一の読み込み要求が、重なり管理部10によってなされる。第一の読み込み要求ではメモリアクセス領域が指定される。領域統合分割部11によって、動き検出詳細探索部14によって詳細探索が開示されるまで第一の読み込み要求によって指定されるメモリアクセス領域に係る情報を蓄積する。
【0033】
時刻T2において、粗探索結果の読み込みイベント(#2)により、領域拡張部16によって拡張された探索範囲#2の登録が要求され、重なり管理部10が、重なりマップ17において探索範囲#2を拡張した領域に対応するアクセス粒度毎の参照カウンタに1加算する。この参照カウンタの加算によって、探索範囲#1を拡張した領域と重なる領域に対してもアクセス粒度毎に更に1加算されるため、この例において重なる領域では参照カウンタが「2」となる。そして、バッファ残量カウンタは、全容量(FULL)から、重なり部分を除くアクセス粒度4個分のデータ量が更に減算される。つまり、全容量(FULL)から合計でアクセス粒度10個分データ量が減算される。
【0034】
時刻T2と同様に、重なりマップ17の参照カウンタが0から1に変化した部分について、重なり管理部10によって領域統合分割部11に画像データの第一の読み込み要求がなされるが、この時点では、この第一の読み込み要求で指定されるメモリアクセス領域に係る情報は蓄積されるのみとなる。
【0035】
時刻T3において、動き検出詳細探索部14による動き検出開始イベント(#1)がなされる。更に、時刻T4において、粗探索結果の読み込みイベント(#3)により、領域拡張部16によって拡張された探索範囲#3の登録が要求され、重なり管理部10が、重なりマップ17において探索範囲#3を拡張した領域に対してアクセス粒度毎に参照カウンタに1加算する。そして、バッファ残量カウンタは、全容量(FULL)から、アクセス粒度4個分のデータ量が更に減算される。つまり、全容量(FULL)から合計でアクセス粒度14個分データ量が減算される。
【0036】
ここで、領域統合分割部11は、蓄積されたメモリアクセス領域に係る情報に基づいて、重なり管理部10からの第一の読み込み要求毎のメモリアクセス領域の範囲とは別に、外部メモリ3のアクセス制御方法に従って効率的に画像データの読み込みができるメモリアクセス領域となるように領域の統合及び/又は分割を行い、読み込むべき画像データのメモリアクセス矩形領域を指定した第二の読み込み要求を発行する。アクセス制御方法に従った効率的な画像データの読み込みとは、例えば、連続的にアクセスできるようにバースト量を考慮する、また、ROW(行)又はバンクなど外部メモリ3のメモリ領域の単位又は境界を考慮する等である。
【0037】
この例では、探索範囲#1と探索範囲#2とが統合され、更に、探索範囲#3を分割した部分を統合した領域をメモリアクセス矩形領域4aとする。また、探索範囲#3を分割した残り部分をメモリアクセス矩形領域4bとする。領域統合分割部11は、メモリアクセス矩形領域4aを指定した第二の読み込み要求をデータ読込バッファ管理部12に発行し、更にメモリアクセス矩形領域4bを指定した別の第二の読み込み要求を発行する。メモリアクセス矩形領域4aとメモリアクセス矩形領域4bとが検出量バッファ15に格納され、バッファ座標関連付けマップ13がデータ読込バッファ管理部12によって更新される。
【0038】
時刻T5において、動き検出詳細探索部14は、バッファ座標関連付けマップ13を参照することにより詳細探索に必要な画像データの格納済みを確認し、動き検出用バッファ15に格納された画像データを用いて詳細探索による動き検出を行う。
【0039】
時刻T6において、粗探索結果の読み込みイベント(#4)により、領域拡張部16によって拡張された探索範囲#4の登録が要求され、重なり管理部10が、重なりマップ17において探索範囲#4を拡張した領域に対してアクセス粒度毎に参照カウンタに1加算する。そして、バッファ残量カウンタは、全容量(FULL)から、重なり部分を除くアクセス粒度4個分のデータ量が更に減算される。つまり、全容量(FULL)から合計でアクセス粒度18個分データ量が減算される。
【0040】
その後、時刻T7において、動き検出詳細探索部14による探索範囲#1における詳細探索による動き検出終了イベント(#1)に応じて、重なり管理部10は、重なりマップ17の探索範囲#1を含む拡張領域に対してアクセス粒度毎に参照カウンタを1減算する。また、重なり管理部10は、減算することにより参照カウンタが0になった動き検出用バッファ15内の領域の開放をデータ読込バッファ管理部12に指示する。バッファ開放されるのは、探索範囲#1の拡張領域と重ならない参照カウンタが0になった領域#1−2であり、アクセス粒度単位で開放される。データ読込バッファ管理部12は、バッファ座標関連付けマップ13を更新する。
【0041】
上述した重なり管理及び領域統合分割を行う動き検出回路100の全体動作について図5で説明する。図5は、動き検出回路の全体動作を説明するためのフローチャート図である。図5において、動き検出回路100は、ステップS11での初期化処理において、現在処理対象のマクロブロック(カレントMB)のMBアドレス0,0の粗探索結果から開始し、動き検出を行うマクロブロック順序で処理を行う。重なり検出部10は、重なりマップ17を全てゼロに設定して初期化する。データ読込バッファ管理部12は、バッファ座標関連付けマップ13を初期化すると共に、詳細探索用のバッファ残量をフル状態にする。動き検出回路100は、MB(マクロブロック)単位又はフレーム単位で粗探索を詳細探索に先行して行い。
【0042】
ステップS12での重なり検出処理において、動き検出回路100は、粗探索の結果を詳細探索の動き検出を行うMB順にリオーダーして処理する。拡張領域部16は、粗探索の結果を一回り大きな実アクセスに相当する拡張領域に拡張させて拡張粗探索結果として重なり管理部10に通知する。重なり管理部10は、拡張領域に対応する重なりマップ17の参照カウンタを1加算する。その際、参照カウンタが0から1になる時のみバッファ残量カウンタを減算して、領域統合管理部11に第一の読み込み要求としてキューイングする。バッファ残量がゼロ(バッファフル)になるまで繰り返えした後、ステップS13へと進む。この際、参照カウンタが、同じ領域を使う最大数を示す所定数を超えた場合には、バッファフルを待つことなくステップS13へと進む。
【0043】
ステップS13での領域統合分割処理において、領域統合分割部11は、重なり管理部10からの第一の読み込み要求による拡張領域を統合し、2次元的にスキャンして第二の読み込み要求として、外部メモリ3に対するアクセス制御方法に従ったアクセス粒度単位に分割する。
【0044】
アクセス粒度単位への分割は、連続的に読み込むことができるようにバースト長で分割する。例えば、
(a)ラスタスキャン方向に拡張領域が連続するように横長の矩形に分割する
(b)外部メモリ3の同一ROW(行)に配置される拡張領域を優先して結合し、
(b−1)更に、ラスタスキャン方向に拡張領域が連続するように横長の矩形に分割する
(b−2)若しくは、同一ROW(行)の拡張領域については、一回り大きな矩形に拡張し、不要なデータは破棄してバッファに格納する
(b−3)上記(b−1)又は(b−2)の処理をしたうえで、外部メモリ3のBANKインターリーブアクセスが可能なように、バンクが異なるものと交互にメモリアクセスを発行するように制御する。つまり、同一バンクアドレスが連続しないようにリオーダーする。この場合のリオーダーの方法は、下記のいずれかを適用すればよい。
【0045】
(1)バンクアドレスが連続する場合、その次以降のメモリアクセスのうちバンクアドレスが異なるものを挿入する。異なるものが無くなった場合は、同じバンクアドレスが連続することになるが、リオーダーを終了する。
【0046】
(2)バンクアドレスが連続する場合、その次以降のメモリアクセスのうちバンクアドレスが異なるものを挿入する。異なるバンクが無くなった場合、前方向のメモリアクセスの二つの要素とも自身のバンクアドレスと異なっているものをサーチし見つけたら、間に挿入するように入れ替える。前方向にそのようなアクセスが無くなった場合はリオーダーを終了する。
【0047】
一方で、結合や分割のないアクセス粒度毎に外部メモリ3へアクセスしてもよい。
【0048】
領域統合分割部11によって行われる蓄積された拡張領域の分割の例について図6で説明する。図6は、拡張領域の分割例を示す図である。図6中、アクセスアライメント2cを第一の読み込み要求で指定される拡張領域を構成するアクセス粒度単位の領域として示し、丸縁の実線で囲んだ矩形領域5aから5eを第二の読み込み要求で指定する実アクセスによる領域を示す。
【0049】
図6(A)では、同一ROW(行)に配置される拡張領域を優先して結合した後、矩形に分割した場合を示している。アクセスアライメント2cを結合した丸縁の実線で囲まれている矩形領域5a、5b、5c、及び5dが実アクセスで指定される。図6(B)では、同一ROW(行)に配置される拡張領域について一回り大きな矩形領域5eに拡張し、不要なデータは破棄してバッファに格納する。
【0050】
領域統合分割部11は、重なり管理部10からの第一の読み込み要求で指定されるアクセス粒度の整数倍でなる拡張領域の蓄積によって、効率的なデータ転送となるように外部メモリ3のアクセス制御方法に従った拡張領域の分割を行う。
【0051】
図5に戻り、ステップS14での画像データの読み出し処理において、データ読込バッファ管理部12は、外部メモリ3のアクセス単位の矩形毎に外部メモリ3からデータを読み出し、閣僚領域単位に動き検出用バッファ15の空き領域に格納する。そして、データ読込バッファ管理部12は、格納した画像データの2次元座標とバッファのアドレスとを関連付けたバッファ座標関連付けマップ13を作成する。
【0052】
そして、ステップS15での詳細探索の動き検出処理において、動き検出詳細探索部14は、動き検出用バッファ15の詳細探索範囲の画像データを使用して動き検出を行い、動き検出済みの詳細探索範囲に対する参照カウンタに対する操作指示を重なり管理部10に対して行う。重なり管理部10は、詳細探索の動き検出で使用した詳細探索範囲を含む拡張領域に対応する重なりマップ17の参照カウンタを減算する。重なり管理部10は、参照カウンタが0になるとバッファ残量カウンタを加算し、対応するバッファ領域を開放するようにデータ読込バッファ管理部12に指示する。
【0053】
ステップS16での判断処理において、動き検出詳細探索部14は、1の詳細探索範囲における動き検出処理を終了すると、次画面が在るか否かを判断する。次画面が在る場合は、ステップS11に戻り、重なりマップ17、及び動き検出用バッファ15内の詳細探索用の領域を初期化して、上述同様の処理を繰り返す。一方、次画面が存在しない場合、この処理を終了する。
【0054】
図7は、各回路部での処理フローを説明するための図である。図7において、先ず、領域拡張部16での処理について説明する。領域拡張部16は、動き検出用バッファ15から粗探索結果を入力する(ステップS21)。そして、重なり管理部10がデータ受信できるか否かを判断し(ステップS22)、データ受信できない場合は受信できるまで待ち状態となる。一方、データ受信できる場合、ステップS21で入力した粗探索結果を領域拡張した拡張粗探索結果を重なり管理部10へと出力する(ステップS23)。その後、動き検出用バッファ15の粗探索結果の全てのデータを処理したか否かを判断し(ステップS24)、全てのデータを処理していない場合には、ステップS21へと戻り上述同様の処理を繰り返す。一方、全てのデータを処理した場合、この処理を終了する。
【0055】
次に、重なり管理部10での処理について説明する。重なり管理部10は、領域拡張部16からの拡張粗探索結果の入力があるか否かを判断する(ステップS31)。拡張粗探索結果の入力がない場合、動き検出詳細探索部14から参照カウンタの参照済指示があるか否かを判断する(ステップS31−2)。参照カウンタの参照済指示がある場合、参照済パラメータを入力し(ステップS32−2)、参照済指示がなければ、ステップS31へ戻り、拡張粗探索結果の入力又は参照カウンタの参照済指示が成されるまで待ち状態となる。一方、ステップS31にて、拡張粗探索結果の入力があった場合、粗探索で用いた探索領域がアクセス粒度で拡張された領域に係る拡張領域データを入力する(ステップS32)。
【0056】
その後、重なり管理部10は、重なりマップ17を更新する(ステップS33)。重なり管理部10は、この更新によって、参照カウンタが0から1に変化したアクセスアライメントがあるか否かを判断する(ステップS34)。0から1に変化したアクセスアライメントがない場合、重なり管理部10は、参照カウンタが1から0に変化したアクセスアライメントがあるか否かを判断する(ステップS34−2)。1から0に変化したアクセスアライメントがない場合、ステップS37へと進む。一方、1から0に変化したアクセスアライメントがある場合、そのアクセスアライメントのデータを格納しているバッファ領域を開放するためにバッファ開放要求をデータ読込バッファ管理部12に送出し(ステップS36−2)、ステップS37へと進む。
【0057】
一方、ステップS34において、参照カウンタが0から1に変化したアクセスアライメントが在る場合、重なり管理部10は、領域統合分割部11に対してメモリアクセス領域を指定した第一の読み込み要求を送出する(ステップS36)。そして、重なり管理部10は、全てのデータを処理したか否かを判断する(ステップS37)。全てのデータを処理していない場合、ステップS31へ戻り、上述した同様の処理を繰り返す。一方、全てのデータを処理した場合、この処理を終了する。
【0058】
次に、領域統合分割部11での処理について説明する。領域統合分割部11は、重なり管理部10からの第一の読み込み要求があるか否かを判断する(ステップS41)。第一の読み込み要求がない場合、ステップS43へと進む。一方、第一の読み込み要求がある場合、拡張領域データを入力する(ステップS42)。
【0059】
そして、領域統合分割部11は、動き検出詳細探索部14がデータ待ちであるか否かを判断する(ステップS43)。バッファ残量が閾値以下であるか否かを判断する(ステップS44)。閾値以下である場合、ステップS41へ戻り、上述した同様の処理を行う。
【0060】
一方、ステップS44にて、バッファ残量が閾値を超える場合、領域統合分割部11は、最も古い要求を含む領域を算出し(ステップS45)、外部メモリ3から動き検出用バッファ15への画像データの矩形領域を指定した第二の読み込み要求をデータ読込バッファ管理部12へ送出する(ステップS46)。そして、領域統合分割部11は、全てのデータを処理したか否かを判断する(ステップS47)。全てのデータを処理していない場合、ステップS41へ戻り、上述した同様の処理を行い、全てのデータを処理した場合、この処理を終了する。
【0061】
次に、データ読込バッファ管理部12での処理について説明する。データ読込バッファ管理部12は、領域統合分割部11からの第二の読み込み要求があるか否かを判断する(ステップS51)。第二の読み込み要求がない場合、データ読込バッファ管理部12は、更に重なり管理部10からのバッファ開放要求があるか否かを判断する(ステップS51−2)。バッファ開放要求がない場合、ステップS51へ戻り、領域統合分割部11又はデータ読込バッファ管理部12からの要求待ち状態となる。一方、バッファ開放要求がある場合、動き検証用バッファ15の詳細探索用の領域からバッファ開放要求で指定された領域の画像データを削除して(ステップS51−4)、ステップS55へと進む。
【0062】
一方、ステップS51にて、第二の読み込み要求がある場合、データ読込バッファ管理部12は、動き検出用バッファ15への読み込み領域を確保する(ステップS52)。そして、読み込んだ画像データの領域に関してバッファ座標関連付けマップを作成する(ステップS53)。
【0063】
続けて、データ読込バッファ管理部12は、外部メモリ3へのデータ要求を行い、外部メモリ3から受信した画像データを動き検出用バッファ15に格納する(ステップS54)。その後、全てのデータを処理したか否かを判断し(ステップS55)、全てのデータを処理していない場合、ステップS51へ戻り、上述同様の処理を実行する。一方、全てのデータを処理した場合、この処理を終了する。
【0064】
次に、動き検出詳細探索部14は、バッファ座標関連付けマップ13を参照して(ステップS61)、詳細探索範囲が動き検出用バッファ15に格納されているか否かをチェックすることにより、詳細探索による動き検出処理が可能か否かを判断する(ステップS62)。処理が可能な状態でないと判断した場合、詳細探索範囲が格納されるまで待ち状態となる。処理が可能な状態であると判断した場合、動き検出詳細探索部14は、参照画像の詳細探索範囲においてマクロブロック毎に動き検出処理を行う(ステップS63)。
【0065】
動き検出詳細探索部14は、詳細探索による動き検出処理を完了すると、重なり管理部10に対して、詳細探索範囲で利用した画像データを削除するために参照カウンタの参照済指示を送出する(ステップS64)。そして、全てのデータを処理したか否かを判断し(ステップS65)、全てのデータを処理していない場合、ステップS51へ戻り、上述同様の処理を実行する。一方、全てのデータを処理した場合、この処理を終了する。
【0066】
上述したように、本実施例に係る動き検出回路100は、粗探索結果に基づいた元画像を用いる詳細探索の動き検出における詳細探索範囲を外部メモリ3の読み出し単位となるアクセス粒度を用いて拡張した拡張領域に対して、アクセス粒度毎に探索範囲の重なりを管理した上で、詳細探索における動き検出を行うための探索範囲の拡張領域を動き検出用バッファ15に読み込む。そして、重なりが存在する間は、動き検出用バッファ15に格納しておくため、外部メモリ3への読み込み回数を低減することができる。
【0067】
また、動き検出用バッファ15に格納した画像データの2次元座標とバッファのアドレスとを関連付けたバッファ座標関連付けマップ13が作成されるため、動き検出詳細探索部14は、常に、詳細探索の対象となる探索範囲が動き検出用バッファ15に格納されていることを確認し、動き検出用バッファ15に格納されている探索範囲で詳細探索の動き検出を行うことができる。従って、動き検出の処理中に外部メモリ3から不足分をその都度読み込むといった処理付加を削減することができ、キャッシュメモリを用いた場合に比べて、効率的に詳細探索の動き検出を行うことができる。
【0068】
以上の説明に関し、更に以下の項を開示する。
(付記1)
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路。
(付記2)
前記制御手段は、
縮小画像を用いて動き検出を行った粗探索結果に基づいて、元画像を用いる詳細探索の動き検出における詳細探索範囲を前記外部メモリからの読み込み単位のアクセス粒度でなる拡張領域に拡張する領域拡張手段と、
前記詳細探索範囲の拡張を複数回行った結果、前記外部メモリがアクセス粒度単位でアクセスされる回数をカウントして、複数の拡張領域において互いに重なる領域をアクセス粒度単位で管理する重なり管理手段と、
前記アクセスされる回数が0から1へと変化した前記拡張領域を、アクセス粒度単位で前記外部メモリから動き検出用バッファへ読み込む読込手段と、を有することを特徴とする付記1記載の動き検出回路。
(付記3)
前記制御手段は、
前記アクセスされる回数が0から1へと変化した複数の拡張領域を統合し、バースト長で読み込み要求できるように該統合した拡張領域を分割する領域統合分割手段を更に有し、
前記重なり管理手段は、前記アクセスされる回数が0から1へと変化した前記拡張領域をアクセス領域として指定した第一の読み込み要求を前記領域統合分割手段に送出し、
前記領域統合分割手段は、前記第一の読み込み要求を蓄積して複数の拡張領域を統合分割したバースト長による第二の読み込み要求を前記読込手段へ送出することを特徴とする付記2記載の動き検出回路。
(付記4)
前記領域統合分割手段は、前記外部メモリのラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする付記3記載の動き検出回路。(4、図3)
(付記5)
前記領域統合分割手段は、前記外部メモリの同一行に配置される前記拡張領域を優先して結合し、ラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする付記3記載の動き検出回路。
(付記6)
前記領域統合分割手段は、前記外部メモリの同一行の前記拡張領域については、一回り大きな矩形に拡張することを特徴とする付記3記載の動き検出回路。
(付記7)
前記領域統合分割手段は、異なるバンクアドレスの順で前記第二の読み込み要求が連続して成されるように、前記外部メモリへの読み込み要求のバンクアドレスの順をリオーダーすることを特徴とする付記3又は4記載の動き検出回路。
(付記8)
前記動き検出回路は、前記領域拡張手段によって拡張された前記拡張領域を前記アクセス粒度毎に対応させた参照カウンタで前記アクセスされる回数を管理する重なりマップを記憶する記憶領域を更に有し、
前記重なり管理手段は、前記重なりマップを用いて、前記粗探索結果に基づく前記詳細探索範囲を前記アクセス粒度単位で前記参照カウンタを操作することを特徴とする付記1乃至7のいずれか一項記載の動き検出回路。
(付記9)
前記動き検出詳細探索手段は、前記詳細探索範囲を用いた前記詳細探索の動き検出を行うと、前記重なり管理手段へ該詳細探索範囲の参照済指示を送出し、
前記重なり管理手段は、前記参照済指示に応じて、前記重なりマップの前記詳細探索範囲に対応する前記拡張領域の前記参照カウンタを減算し、該参照カウンタがゼロとなった領域のバッファ開放指示を前記読込手段に送出し、
前記読込手段は、前記バッファ開放指示に応じて、前記動き検出用バッファの前記領域を開放することを特徴とする付記8記載の動き検出回路。
(付記10)
前記読込手段は、前記アクセスされる回数が0から1へと変化した前記拡張領域に係る前記動き検出用バッファのアドレスと前記詳細探索範囲の座標とを関連付けた関連付けマップを作成し、
前記動き詳細探索手段は、前記関連付けマップを参照して、前記動き検出用バッファに格納された前記詳細探索範囲を用いて前記詳細探索の動き検出を行うことを特徴とする付記2乃至9のいずれか一項記載の動き検出回路。
(付記11)
画像符号化においける動き検出方法であって、
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手順と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手順と、を有することを特徴とする動き検出方法。
【0069】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0070】
2a、2b、2c アクセスアライメント
3 外部メモリ
5a、5b、5c、5d、5e 矩形領域
10 重なり管理部
11 領域統合分割部
12 データ読込バッファ管理部
13 バッファ座標関連付けマップ
14 動き検出詳細探索部
15 動き検出用バッファ
16 領域拡張部
17 重なりマップ
100 動き検出回路

【特許請求の範囲】
【請求項1】
外部メモリから動き検出用バッファに画像データを読み込む際に、縮小画像を用いて動き検出を行った粗探索結果に基づく元画像を用いる詳細探索の動き検出における詳細探索範囲を、該外部メモリのアクセス粒度でなる領域に拡張して読み込むように制御する制御手段と、
前記動き検出用バッファに格納されている前記詳細探索範囲を用いて前記詳細探索の動き検出を行う動き検出詳細探索手段と、を有することを特徴とする動き検出回路。
【請求項2】
前記制御手段は、
縮小画像を用いて動き検出を行った粗探索結果に基づいて、元画像を用いる詳細探索の動き検出における詳細探索範囲を前記外部メモリからの読み込み単位のアクセス粒度でなる拡張領域に拡張する領域拡張手段と、
前記詳細探索範囲の拡張を複数回行った結果、前記外部メモリがアクセス粒度単位でアクセスされる回数をカウントして、複数の拡張領域において互いに重なる領域をアクセス粒度単位で管理する重なり管理手段と、
前記アクセスされる回数が0から1へと変化した前記拡張領域を、アクセス粒度単位で前記外部メモリから動き検出用バッファへ読み込む読込手段と、を有することを特徴とする請求項1記載の動き検出回路。
【請求項3】
前記制御手段は、
前記アクセスされる回数が0から1へと変化した複数の拡張領域を統合し、バースト長で読み込み要求できるように該統合した拡張領域を分割する領域統合分割手段を更に有し、
前記重なり管理手段は、前記アクセスされる回数が0から1へと変化した前記拡張領域をアクセス領域として指定した第一の読み込み要求を前記領域統合分割手段に送出し、
前記領域統合分割手段は、前記第一の読み込み要求を蓄積して複数の拡張領域を統合分割したバースト長による第二の読み込み要求を前記読込手段へ送出することを特徴とする請求項2記載の動き検出回路。
【請求項4】
前記領域統合分割手段は、前記外部メモリのラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする請求項3記載の動き検出回路。
【請求項5】
前記領域統合分割手段は、前記外部メモリの同一行に配置される前記拡張領域を優先して結合し、ラスタスキャン方向に前記拡張領域が連続するように横長の矩形に分割することを特徴とする請求項3記載の動き検出回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−71622(P2011−71622A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−219029(P2009−219029)
【出願日】平成21年9月24日(2009.9.24)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】