(57)【要約】【課題】共用の大容量擬似多ポートメモリに全ての参照領域を記憶するという条件の下で，参照メモリに対する改良転送法を実現できる擬似多ポートメモリ装置を提供する。【解決手段】２次元仮想アドレス生成手段120 が，水平論理アドレスと垂直論理アドレスからなる２次元論理アドレスから２次元仮想アドレスを生成する。それをもとに，仮想１次元アドレス生成手段130 が１ポートメモリに画素単位で割り当てられた仮想１次元アドレスを生成し，代表実アドレス生成手段140 が代表実アドレスを生成し，代表実バンク番号生成手段150 が代表実バンク番号を生成し，実アドレス生成手段160 が１ポートメモリに与える実アドレスを生成する。画素並べ替え手段200 は各１ポートメモリから出力される画素を入力して並べ替え，出力タイミング調整手段300 は並べ替えられた画素を出力タイミングを調整して出力する。【選択図】図２１
2005136455.tif 000002
【特許請求の範囲】
【請求項１】
関連のないアドレスから複数の画素を同時に読み出すことができる擬似多ポートメモリ装置であって，
ｍ個（ｍは自然数）の画素を記憶できるワード幅を有するｎ個（ｎは自然数）の１ポートメモリと，
有限の大きさの水平論理アドレスと有限の大きさの垂直論理アドレスとからなる２次元論理アドレスを与える２次元論理アドレス付与手段と，
前記水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換し，前記垂直論理アドレスをそのまま垂直仮想アドレスに変換することにより，２次元仮想アドレスを生成する２次元仮想アドレス生成手段と，
当該２次元仮想アドレスが割り当てられている領域のベースアドレスと，前記水平仮想アドレスと，前記垂直仮想アドレスに前記水平仮想アドレスを乗じた値とを加算することにより，前記ｎ個の１ポートメモリに画素単位で割り当てられた仮想１次元アドレスを生成する仮想１次元アドレス生成手段と，
当該仮想１次元アドレスを（ｍ×ｎ）で除すことにより代表実アドレスを生成する代表実アドレス生成手段と，
当該仮想１次元アドレスを（ｍ×ｎ）で除した結果得られる余りをさらにｍで除すことにより代表実バンク番号を生成する代表実バンク番号生成手段と，
当該代表実アドレスと当該代表実バンク番号より各１ポートメモリに与える実アドレスを生成する実アドレス生成手段と，
前記実アドレス群が与えられることによって前記ｎ個の１ポートメモリから出力されるｍ×ｎ個以下の画素を入力し，前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最下位の水平論理アドレスである場合には，上位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力し，または前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最上位の水平論理アドレスである場合には，下位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力する画素並べ替え手段と，
この画素並べ替え手段に対して並列配置されたそれぞれ所定シフト段数を有する複数のシフトレジスタからなり，前記画素並び替え手段から順次出力される画素群を各シフトレジスタで順に保持するとともに，各画素群を構成する複数の画素を１画素ずつ各シフトレジスタから順次シフト出力することにより出力タイミングを調整し，各シフトレジスタから所望の画素を並列して同時に出力する出力タイミング調整手段とを備える
ことを特徴とする擬似多ポートメモリ装置。
【請求項２】
請求項１に記載の擬似多ポートメモリ装置において，
前記２次元仮想アドレス生成手段は，０から（水平仮想アドレスの大きさ／ｍ−１）までの範囲で巡回する値に基づいて水平仮想アドレスと水平論理アドレスとの差に相当する値を算出し，水平論理アドレスに当該水平仮想アドレスと水平論理アドレスとの差に相当する値を加算し，その結果が水平仮想アドレスの大きさを超えたときは当該結果から水平仮想アドレスの大きさを減算することにより，水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換する
ことを特徴とする擬似多ポートメモリ装置。
【請求項３】
請求項１または請求項２に記載の擬似多ポートメモリ装置において，
前記実アドレス生成手段は，
前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最下位の水平論理アドレスである場合には，前記代表実アドレスが，前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスでないとき，前記代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには当該代表実アドレスに１を加算した実アドレスを与え，一方，当該代表実アドレスが，前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスであるとき，当該代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスを与え，
前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最上位の水平論理アドレスである場合には，当該代表実アドレスが，最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスでないとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスから１を減算した実アドレスを与え，一方，当該代表実アドレスが，最初に与えられた垂直論理アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスであるとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスが最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスを与える実アドレス生成手段である
ことを特徴とする擬似多ポートメモリ装置。
【請求項４】
ｍ個（ｍは自然数）の画素を記憶できるワード幅を有するｎ個（ｎは自然数）の１ポートメモリを備える擬似多ポートメモリ装置に格納される画素読み出し方法であって，
有限の大きさの水平論理アドレスと有限の大きさの垂直論理アドレスとからなる２次元論理アドレスを入力する過程と，
前記水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換し，前記垂直論理アドレスをそのまま垂直仮想アドレスに変換することにより，２次元仮想アドレスを生成する過程と，
当該２次元仮想アドレスが割り当てられている領域のベースアドレスと，前記水平仮想アドレスと，前記垂直仮想アドレスに前記水平仮想アドレスを乗じた値とを加算することにより，前記ｎ個の１ポートメモリに画素単位で割り当てられた仮想１次元アドレスを生成する過程と，
当該仮想１次元アドレスを（ｍ×ｎ）で除すことにより代表実アドレスを生成する過程と，
当該仮想１次元アドレスを（ｍ×ｎ）で除した結果得られる余りをさらにｍで除すことにより代表実バンク番号を生成する過程と，
当該代表実アドレスと当該代表実バンク番号より各１ポートメモリに与える実アドレスを生成する過程と，
前記実アドレス群が与えられることによって前記ｎ個の１ポートメモリから出力されるｍ×ｎ個以下の画素を入力し，前記入力した水平論理アドレスが最下位の水平論理アドレスである場合には，上位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力し，または前記入力した水平論理アドレスが最上位の水平論理アドレスである場合には，下位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力する過程と，
順次並べ替えて出力される画素群をそれぞれ所定シフト段数を有する複数のシフトレジスタで順に保持するとともに，各画素群を構成する複数の画素を１画素ずつ各シフトレジスタから順次シフト出力することにより出力タイミングを調整し，各シフトレジスタから所望の画素を並列して同時に出力する過程とを有する
ことを特徴とする擬似多ポートメモリ装置の画素読み出し方法。
【請求項５】
動きベクトルを検出する対象となる参照画像を記憶する参照メモリと，符号化対象の画素ブロックと前記参照メモリにおける所定の範囲の参照領域から切り出した探索対象画素ブロックとの対応する画素間で差分絶対値または差分二乗値を計算し，その総和を算出する差分演算手段と，算出した中で最小となる差分絶対値和または差分二乗値和の探索対象画素ブロックの位置情報を動きベクトルとする最小値検出手段とを備えるテレスコピック探索用動きベクトル検出装置であって，
前記参照メモリとして請求項１ないし請求項３のいずれか１項に記載の擬似多ポートメモリ装置を用い，
最終的に動きベクトルを検出する対象となる画像の参照領域，および中間の全ての画像の参照領域を当該擬似多ポートメモリ装置に保持する
ことを特徴とする擬似多ポートメモリ装置を用いたテレスコピック探索用動きベクトル検出装置。
【請求項６】
符号化対象の画素ブロックと，動きベクトルを検出する対象となる参照画像を記憶する参照メモリにおける所定の範囲の参照領域から切り出した探索対象画素ブロックとの対応する画素間で差分絶対値または差分二乗値を計算し，その総和を算出する過程と，算出した中で最小となる差分絶対値和または差分二乗値和の探索対象画素ブロックの位置情報を動きベクトルとする過程とを有するテレスコピック探索用動きベクトル検出方法であって，
前記参照メモリとして請求項１ないし請求項３のいずれか１項に記載の擬似多ポートメモリ装置を用い，最終的に動きベクトルを検出する対象となる画像の参照領域，および中間の全ての画像の参照領域を当該擬似多ポートメモリ装置に保持する過程を有する
ことを特徴とする擬似多ポートメモリ装置を用いたテレスコピック探索用動きベクトル検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，多ポートメモリ装置に関し，特に動画像のフレーム間画像符号化処理の動きベクトル検出などで用いられ，複数の画素を連続アドレスに一度に書き込むとともに，複数の画素を関連のないアドレスから同時に読み出すことができる擬似多ポートメモリ装置，その画素読み出し方法，それを用いたテレスコピック探索用動きベクトル検出装置およびテレスコピック探索用動きベクトル検出方法に関するものである。
【背景技術】
【０００２】
動きベクトルの検出とは，ある画像中の画素ブロック（ＭＰＥＧ−２やＭＰＥＧ−４ではマクロブロックと呼ばれる。以下，テンプレートという。）が他の画像中のどの画素ブロックから動いてきたかを検出し，その位置情報を取り出す処理である。その位置情報は動きベクトルと呼ばれ，その検出には一般にブロックマッチング法が用いられる。
【０００３】
この方法では，探索領域中から切り出した画素ブロック（以下，探索対象ブロックという。）とテンプレートの対応する画素間で差分絶対値を計算し，その総和（以下，差分絶対値和という。）を求める。この差分絶対値和が最小となる探索対象ブロックの位置情報を動きベクトルとする。なお，差分絶対値和の代わりに差分二乗値和が最小となるものを求めてもよい。
【０００４】
動きベクトル検出器１の構成を図１に示す。動きベクトル検出器１は，差分絶対値和計算回路２，最小値検出回路３，および参照メモリ４で構成される。外部フレームメモリ５に画像を保持し，外部フレームメモリ５から動きベクトルが存在する可能性がある領域（以下，参照領域という。）を参照メモリ４にコピーし，参照メモリ４内の画素に対して探索演算を行う。
【０００５】
外部フレームメモリ５から参照メモリ４に参照領域を転送する際には，隣接する２つのテンプレートの参照領域は大部分重なっていることを利用して転送画素数を削減する。隣接する２つのテンプレートの参照領域の例を図２に示す。
【０００６】
テンプレート８とテンプレート９は，画像６内の同一のスライス７に含まれ，隣接している。テンプレート８の参照領域１０は，テンプレート９の参照領域１１より右方向にテンプレートの横方向の画素数分ずれている。このため，重なっていない領域（以下，更新領域という。）１２の幅は，テンプレートの横方向の画素数と一致する。
【０００７】
この更新領域１２のみ外部フレームメモリ５からデータを転送した後，テンプレート９の動き探索を開始するとき，参照領域の原点を参照領域１０の（０，０）から参照領域１１の（０，０）’に付け替える。このように，更新領域１２のみ読み込んで参照領域を更新することにより，外部フレームメモリ５から参照メモリ４への転送レートを低減することができる。
【０００８】
ここで，動き検出精度が最も高い探索法として全探索法が知られているが，全探索法は膨大な演算量を必要とする。一方，画像間の距離に反比例して演算量を削減できるにもかかわらず，全探索法とほぼ同等の画質が得られる探索法としてテレスコピック探索法が知られている（例えば，特許文献１の段落００２８〜００３２参照）。
【０００９】
テレスコピック探索法では，物体の動きは時間的に連続していることに着目し，演算量を削減する。このテレスコピック探索法について，図３を参照して説明する。図３はテレスコピック探索法を示す説明図である。同図において，画像１４〜１７は時間的に連続した４枚の画像であり，画像１７が動きベクトル検出対象の画像である。画像１６，画像１５，画像１４はそれぞれ１画面前，２画面前，３画面前の画像である。
【００１０】
矩形ブロック１３は，画像１４から画像１５へ動きベクトルｍｖ３で移動しており，同様に画像１５から画像１６，画像１６から画像１７へそれぞれ動きベクトルｍｖ２，ｍｖ１で移動している。したがって，画像１４から画像１７への矩形ブロック１３の動きベクトルは「ｍｖ３＋ｍｖ２＋ｍｖ１」となる。
【００１１】
テレスコピック探索法では，画像１４から画像１７への動きベクトルを求めるために，画像１７中の矩形ブロック１３をテンプレートとして，最初に画像１６中の探索領域２０を探索して動きベクトルｍｖ１を検出する。この場合，探索領域２０の中心の動きベクトルは（０，０）である。
【００１２】
次に，画像１５中の探索領域１９を探索して動きベクトルｍｖ２を検出する。矩形ブロック１３に関する画像１６から画像１７への動きベクトルを考量すると，探索領域１９の中心の動きベクトルはｍｖ１となる。最後に画像１４中の探索領域１８を探索して動きベクトルｍｖ３を検出する。矩形ブロック１３に関する画像１５から画像１７への動きベクトルを考量すると，探索領域１８の中心の動きベクトルは「ｍｖ１＋ｍｖ２」となる。
【００１３】
テレスコピック探索では，動きベクトルｍｖ２とｍｖ３の探索の際には，参照領域全体ではなく，それぞれ動きベクトルｍｖ２とｍｖ３の周辺の探索領域のみ全探索法により探索する。このため，参照領域全てを探索する場合と比べると，画像間の距離に反比例して演算量を削減できる。しかも，個々の探索領域は全探索法で探索しているため，時間的に離れた画像間の動きベクトルを直接全探索法により探索した場合とほぼ同等の画質が得られる。
【００１４】
しかし，テレスコピック探索では，直前の探索結果をもとに狭い範囲の全探索を行うことを繰り返すため，個々の全探索を開始する直前まで探索領域が決まらない。このため，参照メモリ４に真に探索する領域のみを読み込むことにすると，直前の全探索が終了した後，次に探索する領域のアドレスを計算し，読み込まなければならない。例えば，図３においては，動きベクトルｍｖ１が決まった後，ｍｖ１に基づいて動きベクトルｍｖ２のための探索領域のアドレスを計算し，読み込むことになる。
【００１５】
この構成では，探索領域の読み込みと差分絶対値和の計算を逐次的に行うことになるため，差分絶対値和計算回路２に空き時間が生じる。ただし，この問題は，参照領域全体を参照メモリ４に読み込むことにすれば解決できる。参照メモリ４は大規模になるが，外部フレームメモリ５から参照メモリ４に参照領域を転送する際には，図２に示したように隣接する２つのテンプレートの参照領域は大部分重なっていることを利用して，更新領域１２のみ転送することにより転送画素数を削減することができる。しかし，この改良した転送法（以下，改良転送法という。）でも，直前の全探索が終了した後，次に全探索する探索領域の位置が決まるため，予め探索対象画素のアドレスを決めることができない点に変わりはない。
【００１６】
また，参照領域が広い場合，差分絶対値和演算器を並列化することにより動きベクトル検出器１の演算スループットを向上することができる。非特許文献１に示されている分割１次元ＴＭＳＢ（Template-pixel mapping method with search-area-pixel broadcasting ）を差分絶対値和演算器として用いる場合に，２並列化する例を図４に示す。この場合の探索領域を図５に示す。
【００１７】
図４と図５は，テンプレートの大きさが４画素×４ライン，探索範囲が水平方向−４／＋３（横方向の探索対象ブロックの数が８），垂直方向±２の場合の例である。探索領域２３と２４を，それぞれ差分絶対値和計算回路２１と２２で並列に探索する。分割１次元ＴＭＳＢには，探索領域中の２画素を同時に供給する必要があるが，探索領域２３と２４は一部が重なっていることを利用すると，同時に供給する画素を３画素に削減できる。例えば，画素ｘ2,0 と画素ｘo,8 をそれぞれ差分絶対値和計算回路２１と２２に供給し，画素ｘ1,4 を差分絶対値和計算回路２１と２２の両方に供給することにより，差分絶対値和計算回路２１と２２を並列動作させることができる。同様に，差分絶対値和計算回路を４並列で動作させる場合には，探索領域中の画素を５画素同時に供給すればよい。
【００１８】
これら複数の画素を差分絶対値和計算回路に供給するために複数のバンクで構成される多バンク分割メモリを用いることが考えられる。しかし，上記参照メモリに対する改良転送法では，参照メモリ上に参照領域をマッピングした後，探索領域のアドレスが決まる。このため，探索領域中の画素をバンク数分同時にリードすることが可能なようにメモリマッピングを行うことは極めて困難である。
【００１９】
図６は，この問題を解決できる擬似多ポートメモリのブロック図である（例えば，特許文献１の段落００４９〜００５４，図２参照）。２バンクに分割された１ポートメモリ２５と２６，８画素を入力して並べ替え出力する画素並べ替え回路３０，および３画素分の画素単位のシフトレジスタ２７〜２９で構成される。
【００２０】
この擬似多ポートメモリを用いると，図４に示す２並列の差分絶対値和計算回路２１，２２に対し，３画素を同時に供給することができる。１ポートメモリ２５の０番地，１番地，２番地，３番地には，それぞれ番号００〜０３，番号０８〜１１，番号１６〜１９，番号２４〜２７の画素が記憶されている。また，１ポートメモリ２６の０番地，１番地，２番地，３番地には，それぞれ番号０４〜０７，番号１２〜１５，番号２０〜２３，番号２８〜３１の画素が記憶されている。
【００２１】
ここで，例えば１ポートメモリ２５，２６にまたがる番号２２〜２５の画素をシフトレジスタ２７にセットする場合には，まず１ポートメモリ２５の３番地から番号２４〜２７の画素を一度に読み出し，１ポートメモリ２６の２番地から番号２０〜２３の画素を一度に読み出す。次に，これら８画素を画素並べ換え回路３０で並べ替えて，番号２２〜２５の画素を選択する。すなわち，読み出される８画素中，若い番号の画素が１ポートメモリ２６に記憶されている場合，１ポートメモリ２５のアドレスは，１ポートメモリ２６のアドレスに１加算することによって算出される。一方，読み出される８画素中，若い番号の画素が１ポートメモリ２５に記憶されている場合には，１ポートメモリ２６には１ポートメモリ２５と同一アドレスが与えられる。これにより，任意の番号の画素を先頭として連続した番号の４画素を読み出すことができる。
【００２２】
そして，画素並べ換え回路３０で並べ替えてシフトレジスタ２７〜２９に設定する。ただし，シフトレジスタ２７〜２９には画素を同時に設定できず，３クロック（ＣＫ）かけて設定するため，設定タイミングにずれがある。この設定タイミングのずれをシフトレジスタ２７〜２９のシフト段数に差をつけることによって補正して３画素を同時に出力する。このように，擬似多ポートメモリは，特別なメモリマッピングを行わなくても，複数の画素を関連のないアドレスから同時に読み出すことができる。
【００２３】
また，信号処理では，モジュロアドレシングと呼ばれるアドレス生成法が頻繁に用いられる。モジュロアドレシングとは，アドレスを１ずつインクリメントしながら最小アドレスと最大アドレス間に限定されたアドレスを繰り返し生成することである。
【００２４】
図７は，１６バンクに分割されたメモリにおけるモジュロアドレシングを説明するための図である（例えば，特許文献２の図６参照）。Ｂ１はバンク間アドレス（０〜ＡＦ），Ｂ２はバンク内アドレス（０〜Ａ），Ｂ３はバンク番号（０〜Ｆ）である。
【００２５】
バンク間アドレスはメモリ全体を一括して見たときのアドレス，バンク内アドレスは各バンクを独立して見たときのアドレスであり，各バンクにはバンク間アドレスをバンク数で割った余りと一致するようにバンク番号が与えられる。この関係を式で表すと，次式となる。
【００２６】
〔バンク間アドレス〕＝〔バンク内アドレス〕×〔バンク数〕＋〔バンク番号〕
各バンクから連続したバンク間アドレスのデータをリードする場合には，基準となるバンク間アドレスを与え，個々のバンクのアドレスは基準となるバンク間アドレスのバンク内アドレス（以下，基準バンク内アドレスという。）に変位を加算することにより生成することができる。
【００２７】
具体的には，モジュロアドレスは，以下の方法で生成することができる（例えば，特許文献２の第６ページ左上欄４行〜左下欄１１行，第３図参照）。
（１）バンク間アドレスが１つずつ増加するとき，バンク番号は０からＦに向かって１つずつ増加し，Ｆを超えると０に戻り，このときバンク内アドレスは１だけ増加する。そこで，リードするデータ群の中間でバンク番号がＦから０に戻る場合，その点を境として基準バンク内アドレスに変位として１を加算する。
（２）ただし，基準バンク内アドレスがバンク内モジュロ終了アドレスと一致するとき，１を加算するのではなく，バンク内モジュロアドレス幅を減算する。
【００２８】
例えば，図７に示すように，個々のバンクに対して「最小のバンク内アドレス＝３」と「最大のバンク内アドレス＝８」の間でモジュロアドレスを生成する場合，「基準バンク内アドレス＝３〜７」であるときには，基準となるバンク間アドレスから求められるバンク番号（以下，基準バンク番号という。）よりも少ないバンク番号を有するバンクのバンク内アドレスは，基準バンク内アドレスに変位として１を加算することにより生成し，基準バンク番号以上のバンク番号を有するバンクには，基準バンク内アドレスをそのまま与える。
【００２９】
一方，「基準バンク内アドレス＝８」であるとき，基準バンク番号よりも少ないバンク番号を有するバンクのバンク内アドレスは基準バンク内アドレスから５を減算することにより生成し，基準バンク番号以上のバンク番号を有するバンクには，基準バンク内アドレスをそのまま与える。
【００３０】
このように，基準となるバンク間アドレスを与えるのみで，複数のバンクのモジュロアドレスを生成することができる。
【特許文献１】特開２０００−２４２５５４号公報
【特許文献２】特開平１−３１１３４１号公報
【非特許文献１】南俊宏，近藤利夫，村主一仁，笠井良太，“１次元シストリックアレー型全探索動きベクトル検出器の提案”，信学論（Ｄ−１），vol.J78-D-1 ，no.12 ，pp913-925 ，Dec.1995.
【発明の開示】
【発明が解決しようとする課題】
【００３１】
図６に示した従来技術の例では，１ポートメモリ２５と２６の０番地にそれぞれ番号００〜０３と番号０４〜０７，１ポートメモリ２５と２６の１番地にそれぞれ番号０８〜１１と番号１２〜１５の画素が記憶されている。これは，１ポートメモリ２５と２６にアドレスが画素単位で割り当てられているとみなすことができる。これを，以下では仮想１次元アドレスと呼ぶ。
【００３２】
擬似多ポートメモリは，画素並べ替え回路３０によって切り出される４画素中最下位のものの仮想１次元アドレス（以下，代表アドレスという。）が与えられると，以下のようにしてシフトレジスタ２７〜２９から３画素を同時に出力する。
【００３３】
（１）代表アドレスが１ポートメモリ２５内に存在する場合には，１ポートメモリ２５と２６の両方に代表アドレスの下位３ビットを切り捨てたアドレスを与える。一方，代表アドレスが１ポートメモリ２６内に存在する場合には，１ポートメモリ２６には代表アドレスの下位３ビットを切り捨てたアドレス，１ポートメモリ２５に対しては１ポートメモリ２６のアドレスを１増加させたアドレスを与える。例えば，２２番地から２５番地までをリードする場合には，代表アドレスが１ポートメモリ２６内であるため，１ポートメモリ２６からは２番地，１ポートメモリ２５からは３番地のデータを読み出す。
【００３４】
（２）切り出された８画素のうち代表アドレスの画素が最も早く出力されるように画素並べ替え回路３０により並べ替えてシフトレジスタ２７ないし２９に設定する。例えば，２２番地から２５番地の画素を読み出す場合，代表アドレスは２２番地であり，２２番地に記憶されている画素が最も右側，２５番地に記憶されている画素が最も左側となるように並べ替える。
【００３５】
（３）このようにして並べ替えた４画素をシフトレジスタ２７ないし２９に設定する。ただし，シフトレジスタ２７ないし２９に４画素が設定されるタイミングにはずれがある。この設定タイミングのずれをシフトレジスタ２７〜２９のシフト段数に差をつけることによって補正して３画素を同時に出力する。
【００３６】
上記方法により，代表アドレスを与えるだけで擬似多ポートメモリから関連のないアドレスに記憶されている複数の画素を同時に出力することができる。
【００３７】
ところが，参照メモリ４に対する改良転送法では，外部フレームメモリ５から更新領域のみデータを転送し，新たなテンプレートの動き探索を開始する際に，参照領域の原点（０，０）を付け替える。擬似多ポートメモリから画素を読み出すためには，この原点が付け替えられるたびに，１ポートメモリ２５，２６の実際のアドレスとの対応が変化するアドレス（以下，２次元論理アドレスと呼ぶ。）を代表アドレスに変換する必要がある。
【００３８】
また，図３に示すテレスコピック探索法では，最終的に動きベクトルを検出する対象となる画像の参照領域（探索領域）１８だけでなく，中間の画像１５と１６の参照領域（探索領域）１９と２０も参照メモリ４に読み込む必要がある。これらの参照領域（探索領域）１８〜２０ごとに小容量のメモリを個々に設けると，分割損が生じ，チップ面積が増大するため，これらの参照領域（探索領域）１８〜２０は大容量の共用メモリにまとめて記憶することが望ましい。
【００３９】
このため，全ての参照領域が共用の擬似多ポートメモリに記憶されているという条件の下で，個々の参照領域を破壊することなく，個々の参照領域ごとの更新領域を擬似多ポートメモリに書き込み，各々の参照領域について上述した原点（０，０）の付け替えを実現し，２次元論理アドレスを代表アドレスに変換しなければならないという問題がある。
【００４０】
この問題を解決するために，従来技術の例で説明した多バンクに分割されたメモリにおけるモジュロアドレス生成法を応用することが考えられる。すなわち，個々の参照領域ごとに最小のアドレスと最大のアドレスを決め，その範囲内のアドレスを生成することが考えられる。しかし，従来技術の例で説明したモジュロアドレスは１次元のアドレスであるが，画像は水平方向と垂直方向の２次元のアドレスを有するという問題がある。
【００４１】
本発明は，このような従来の課題を解決するためになされたもので，その目的は共用の大容量擬似多ポートメモリに全ての参照領域を記憶するという条件の下で，参照メモリ４に対する改良転送法を実現できる擬似多ポートメモリ装置を提供する点にある。
【課題を解決するための手段】
【００４２】
上記課題を解決するため，第１の本発明は，関連のないアドレスから複数の画素を同時に読み出すことができる擬似多ポートメモリ装置において，ｍ個（ｍは自然数）の画素を記憶できるワード幅を有するｎ個（ｎは自然数）の１ポートメモリと，有限の大きさの水平論理アドレスと有限の大きさの垂直論理アドレスとからなる２次元論理アドレスを与える２次元論理アドレス付与手段と，前記水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換し，前記垂直論理アドレスをそのまま垂直仮想アドレスに変換することにより，２次元仮想アドレスを生成する２次元仮想アドレス生成手段と，当該２次元仮想アドレスが割り当てられている領域のベースアドレスと，前記水平仮想アドレスと，前記垂直仮想アドレスに前記水平仮想アドレスを乗じた値とを加算することにより，前記ｎ個の１ポートメモリに画素単位で割り当てられた仮想１次元アドレスを生成する仮想１次元アドレス生成手段と，当該仮想１次元アドレスを（ｍ×ｎ）で除すことにより代表実アドレスを生成する代表実アドレス生成手段と，当該仮想１次元アドレスを（ｍ×ｎ）で除した結果得られる余りをさらにｍで除すことにより代表実バンク番号を生成する代表実バンク番号生成手段と，当該代表実アドレスと当該代表実バンク番号より各１ポートメモリに与える実アドレスを生成する実アドレス生成手段と，前記実アドレス群が与えられることによって前記ｎ個の１ポートメモリから出力されるｍ×ｎ個以下の画素を入力し，前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最下位の水平論理アドレスである場合には，上位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力し，または前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最上位の水平論理アドレスである場合には，下位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力する画素並べ替え手段と，この画素並べ替え手段に対して並列配置されたそれぞれ所定シフト段数を有する複数のシフトレジスタからなり，前記画素並べ替え手段から順次出力される画素群を各シフトレジスタで順に保持するとともに，各画素群を構成する複数の画素を１画素ずつ各シフトレジスタから順次シフト出力することにより出力タイミングを調整し，各シフトレジスタから所望の画素を並列して同時に出力する出力タイミング調整手段とを備えることを特徴とする。
【００４３】
また，第２の本発明は，第１の本発明の擬似多ポートメモリ装置であって，前記２次元仮想アドレス生成手段は，０〜（水平仮想アドレスの大きさ／ｍ−１）の範囲で巡回する値に基づいて水平仮想アドレスと水平論理アドレスとの差に相当する値を算出し，水平論理アドレスに当該水平仮想アドレスと水平論理アドレスとの差に相当する値を加算し，その結果が水平仮想アドレスの大きさを超えたときは当該結果から水平仮想アドレスの大きさを減算することにより，水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換することを特徴とする。
【００４４】
さらに，第３の本発明は，第１の本発明または第２の本発明の擬似多ポートメモリ装置であって，前記実アドレス生成手段は，前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最下位の水平論理アドレスである場合には，前記代表実アドレスが，前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスでないとき，前記代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには当該代表実アドレスに１を加算した実アドレスを与え，一方，当該代表実アドレスが，前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスであるとき，当該代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには前記垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスを与え，前記２次元論理アドレス付与手段によって与えられた水平論理アドレスが最上位の水平論理アドレスである場合には，当該代表実アドレスが，最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスでないとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスから１を減算した実アドレスを与え，一方，当該代表実アドレスが，最初に与えられた垂直論理アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスであるとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスが最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスを与える実アドレス生成手段であることを特徴とする。
【００４５】
さらに，第４の本発明は，第１の本発明ないし第３の本発明の擬似多ポートメモリ装置を用いたテレスコピック探索用動きベクトル検出装置であって，最終的に動きベクトルを検出する対象となる画像の参照領域，および中間の全ての画像の参照領域を当該擬似多ポートメモリ装置に保持することを特徴とする。
【発明の効果】
【００４６】
本発明は，大容量の１ポートメモリを複数用いて，複数の画素を関連のないアドレスから同時に読み出すことのできる擬似多ポートメモリ装置を構成でき，共用の大容量擬似多ポートメモリに全ての参照領域を記憶することにより，テレスコピック探索用動きベクトル検出装置を小型化できる効果がある。
【発明を実施するための最良の形態】
【００４７】
以下，本発明の実施形態を説明する。図８は本発明の実施形態におけるテレスコピック探索の参照領域３３〜３５の大きさを示す図である。テンプレートの大きさを４画素×４ライン，画面ごとの個々の探索範囲を水平方向＋８／−７，垂直方向±４とする。
【００４８】
また，図３において説明した例と同様に，最終的に動きベクトルを検出する対象となる画像は，テンプレート３２が含まれる画像から３フレーム離れているものとする。この場合，テンプレート３２が含まれる画像から１フレーム離れた画像の参照領域３３の大きさは，２０画素×１２ライン，２フレーム離れた画像の参照領域３４の大きさは，３６画素×２０ライン，最終的に動きベクトルを検出する対象となる画像の参照領域３５の大きさは，５２画素×２８ラインとなる。
【００４９】
ここで，画面ごとの個々の探索範囲は水平方向＋８／−７であるため，参照領域の水平方向の画素数は実際には４の倍数ではない。しかし，更新領域の画素数はテンプレートの横方向の画素数と一致しており，４画素である。そして，参照メモリには外部フレームメモリから更新領域を一まとまりとして転送する。このため，参照メモリ上における参照領域の水平方向の画素数は，４の倍数であるものとする。この場合におけるテレスコピック探索による動きベクトルの検出範囲は，水平方向＋２４／−２１，垂直方向±１２である。
【００５０】
図９は，参照メモリ上での参照領域３３，３４，３５のマッピングを示す図である。参照領域３３が０番地からマッピングされ，参照領域３４は参照領域３３と３５の間，参照領域３５はその上位アドレス側にマッピングされる。
【００５１】
図１０は，本発明の実施形態における動きベクトル検出器４２の構成を示すブロック図である。３６は参照メモリ，４３は外部フレームメモリである。この動きベクトル検出器４２は，４個の差分絶対値和計算回路３７〜４０を含む。差分絶対値和計算回路３７〜４０としては分割１次元ＴＭＳＢを用い，探索範囲を水平方向に４分割し，個々の差分絶対値和計算回路３７〜４０に分割された領域を１個ずつ評価させるものとする。
【００５２】
図１１は，本発明の実施形態における擬似多ポートメモリのブロック図である。本実施形態では，１ポートメモリ４４〜４７のワード幅を更新領域の水平方向の画素数と一致させる。これにより，更新領域の書き込み回路を単純化できる。ただし，当該ワード幅を更新領域の水平方向の画素数の半分，１／４等というように，１／ｎ（ｎは整数）にしてもよい。なお，図１１では，１ポートメモリ４４〜４７から１２画素読み出して，８画素切り出す例を示しているが，４画素のワード幅を有する４個の１ポートメモリを用いる場合，１６画素読み出して１２画素切り出す構成とすることも可能である。
【００５３】
本実施形態における探索領域を図１２に，４並列の差分絶対値和計算回路３７〜４０へ供給される画素を図１３に示す。図１３に示すように，本実施形態では，擬似多ポートメモリから差分絶対値和計算回路３７〜４０へ５画素を同時に供給する必要がある。これを４画素分のワード幅を有する１ポートメモリを４個用い，そのうち３個から１２画素同時に読み出して，８画素を切り出すことにより実現する。
【００５４】
すなわち，最初のＣＫ（ＣＫ＝０）でｘ0,0 〜ｘ0,7 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ４９にｘ0,0 〜ｘ0,3 ，シフトレジスタ５０にｘ0,4 〜ｘ0,7 を設定する。次に，４ＣＫ後（ＣＫ＝４）にｘ1,0 〜ｘ1,7 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ４９にｘ1,0 〜ｘ1,3 ，シフトレジスタ５０にｘ1,4 〜ｘ1,7 を設定する。シフトレジスタ５０は遅延用のレジスタを４個有するため，ｘ0,4 〜ｘ0,7 はｘ0,0 〜ｘ0,3 より４ＣＫ遅延して出力される。
【００５５】
したがって，図１３に示したように，ｘ1,0 〜ｘ1,3 とｘ0,4 〜ｘ0,7 のそれぞれ対応する画素が同時に出力される。さらに，３ＣＫ後（ＣＫ＝７）にｘ0,8 〜ｘ0,15を１ポートメモリ４４〜４７から読み出して，シフトレジスタ５１にｘ0,8 〜ｘ0,11，シフトレジスタ５２にｘ0,12〜ｘ0,15を設定し，その１ＣＫ後（ＣＫ＝８）にｘ2,0 〜ｘ2,7 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ４９にｘ2,0 〜ｘ2,3 ，シフトレジスタ５０にｘ2,4 〜ｘ2,7 を設定する。シフトレジスタ５１は遅延用のレジスタを１個有するため，ｘ2,0 〜ｘ2,3 ，ｘ1,4 〜ｘ1,7 ，およびｘ0,8 〜ｘ0,11のそれぞれ対応する画素が同時に出力される。
【００５６】
さらに，３ＣＫ後（ＣＫ＝１１）にｘ1,8 〜ｘ1,15を１ポートメモリ４４〜４７から読み出して，シフトレジスタ５１にｘ1,8 〜ｘ1,11，シフトレジスタ５２にｘ1,12〜ｘ1,15を設定し，その１ＣＫ後（ＣＫ＝１２）にｘ3,0 〜ｘ3,7 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ４９にｘ3,0 〜ｘ3,3 ，シフトレジスタ５０にｘ3,4 〜ｘ3,7 を設定する。シフトレジスタ５１とシフトレジスタ５２は遅延用のレジスタをそれぞれ１個と５個有するため，ｘ3,0 〜ｘ3,3 ，ｘ2,4 〜ｘ2,7 ，ｘ1,8 〜ｘ1,11，およびｘ0,12〜ｘ0,15のそれぞれ対応する画素が同時に出力される。
【００５７】
さらに，２ＣＫ後（ＣＫ＝１３）にｘ0,16〜ｘ0,18を１ポートメモリ４４〜４７から読み出して，シフトレジスタ５３に設定し，その１ＣＫ後（ＣＫ＝１４）にｘ2,8 〜ｘ2,15 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ５１にｘ2,8 〜ｘ2,11，シフトレジスタ５２にｘ2,12〜ｘ2,15を設定し，その１ＣＫ後（ＣＫ＝１５）にｘ4,0 〜ｘ4,7 を１ポートメモリ４４〜４７から読み出して，シフトレジスタ４９にｘ4,0 〜ｘ4,3 ，シフトレジスタ５０にｘ4,4 〜ｘ4,7 を設定する。
【００５８】
シフトレジスタ５３は遅延用のレジスタを２個有するため，ｘ4,0 〜ｘ4,3 ，ｘ3,4 〜ｘ3,7 ，ｘ2,8 〜ｘ2,11，ｘ1,12〜ｘ1,15，およびｘ0,16〜ｘ0,18のそれぞれ対応する画素が同時に出力される。例えば，図１２の中で印を付したｘ4,0 ，ｘ3,4 ，ｘ2,8 ，ｘ1,12，およびｘ0,16が同時に出力される。
【００５９】
本発明では，個々の参照領域について水平方向の画素数が更新領域の水平方向の画素数の整数倍となるように水平方向の探索範囲を決め，更新領域の水平方向の画素数を単位として参照領域を水平方向に仮想的に分割する。この分割された個々のブロックを論理バンクと呼び，個々の参照領域について上述した原点（０，０）の更新を論理バンク単位で行う。
【００６０】
図１４は，参照領域３４の画素に対する２次元論理アドレスの割り当てと論理バンクへの分割を示す図である。論理バンクの水平方向の画素数は，更新領域の水平方向の画素数と同一である。
【００６１】
本発明では，右隣の次のテンプレートの動きベクトルの探索を開始する前に，外部フレームメモリから参照メモリヘ更新領域中の画素を転送する。そして，現テンプレートの動きベクトルの探索が終了し，右隣の次のテンプレートの動きベクトルの探索を開始するとき，水平方向の論理アドレス（以下，水平論理アドレスという。）と論理バンク番号を更新する。ただし，垂直方向の論理アドレス（以下，垂直論理アドレスという。）は変化させない。
【００６２】
例えば，図１４に示す参照領域３４では，更新後の水平論理アドレス０〜３１は更新前の水平論理アドレス４〜３５が付け替えられ，更新後の水平論理アドレス３２〜３５は更新された画素に割り当てられる。同様に，更新後の論理バンク番号０〜７は更新前の論理バンク番号１〜８が付け替えられ，更新後の論理バンク番号８は更新領域に割り当てられる。
【００６３】
ここで，本発明では，参照領域を水平方向に分割した論理バンクの数に更新領域のバンク数１を加算した数が１ポートメモリ４４〜４７のバンク数の整数倍とならないときは，空領域を追加し，１ポートメモリのバンク数の整数倍と一致させて１ポートメモリ４４〜４７にマッピングする。
【００６４】
図１５は，図１４に示した参照領域３４の２次元論理アドレスを擬似多ポートメモリヘマッピングした一状態を示す図である。図１５では，論理バンク番号と垂直論理アドレスを組みにして，（論理バンク番号，垂直論理アドレス）の形でマッピング状態を表している。１ポートメモリ４４〜４７にはそれぞれ実バンク番号０〜３が割り当てられる。参照領域３３が１ポートメモリ４４〜４７の０番地〜２３番地に記憶されるため，参照領域３４はその上位アドレスである２４番地〜６３番地に記憶されている。
【００６５】
図１５のマッピング状態では，水平論理アドレスの下位側が１ポートメモリ４４〜４７の実際のアドレス（以下，実アドレスという。）の下位側であって，かつ実バンク番号の小さい側にマッピングされており，水平論理アドレスの上位側が実アドレスの上位側であって，かつ実バンク番号の大きい側にマッピングされている。
【００６６】
この状態の２次元論理アドレス，水平論理アドレス，垂直論理アドレス，および論理バンク番号をそれぞれ２次元仮想アドレス，水平仮想アドレス，垂直仮想アドレス，および仮想バンク番号と呼び，これらは外部フレームメモリから更新領域が転送され，２次元論理アドレスが更新されても変化しないものとする。
【００６７】
図１６は，図１５のマッピング状態から５回更新領域が転送され，２次元論理アドレスが更新された状態を示す図である。図１６の状態において論理バンク番号０〜３の論理バンクに含まれる画素と，図１５のマッピング状態における論理バンク番号５〜８の論理バンクに含まれる画素は同一である。図１６の状態において論理バンク番号４〜８の論理バンクに含まれる画素は，図１５の状態で動きベクトルを探索した後に外部フレームメモリから新たに転送されたものである。
【００６８】
図１７は，図１６に示した状態における参照領域３４に含まれる画素の擬似多ポートメモリヘのマッピングを示す図である。図１６と図１７に示すように，本発明では，２次元論理アドレスが更新されても垂直論理アドレスと垂直仮想アドレスの対応は固定されており，水平論理アドレスと水平仮想アドレスの対応のみが変化する。
【００６９】
このため，例えば，垂直論理アドレス＝１，水平論理アドレス＝２２〜２９（論理バンク番号＝５〜７）に記憶されている８画素を読み出す場合，図１５のマッピング状態では１ポートメモリ４５〜４７の実アドレス＝２８から１２画素読み出し，画素並べ替え回路４８で８画素を切り出すことになる。
【００７０】
一方，図１７のマッピング状態では１ポートメモリ４６と４７の実アドレス＝２９から８画素，１ポートメモリ４４の実アドレス＝２７から４画素読み出し，画素並べ替え回路４８で８画素を切り出すことになる。
【００７１】
すなわち，垂直仮想アドレス一定の範囲内で水平仮想アドレスを巡回させる。このように，本実施の形態では，２次元論理アドレスが同一であっても，２次元論理アドレスの１ポートメモリ４４〜４７上でのマッピング状態により，１ポートメモリ４４〜４７に与える実アドレスが異なる場合がある。
【００７２】
図１８は，水平仮想アドレスと実アドレスの対応を示す図である。本発明では，仮想バンクの総数は実バンク（１ポートメモリ４４〜４７）のバンク数の整数倍である。このため，上記水平仮想アドレスの巡回は，画素並べ替え回路４８によって切り出される８画素中最下位のものに対応する実アドレス（以下，代表実アドレスという。）が垂直仮想アドレス一定の範囲内で最上位の実アドレスではない場合，代表実アドレスに＋１を加算することにより，また，代表実アドレスが垂直仮想アドレス一定の範囲内で最上位の実アドレスである場合，垂直仮想アドレス一定の範囲内における最下位の実アドレスに置き換えることで実現できる。
【００７３】
ところで，上記の例と異なり，仮想バンクの総数が１ポートメモリのバンク数の整数倍ではない場合には，垂直論理アドレス＝１，水平論理アドレス＝２２〜２９に記憶されている８画素を同時に読み出すことができない。論理バンクの総数が１ポートメモリ４４〜４７のバンク数の整数倍ではない場合における，図１７に対応するマッピング状態を図１９に示す。
【００７４】
垂直論理アドレス＝１，水平論理アドレス＝２２と２３（論理バンク番号＝５）の画素と，垂直論理アドレス＝１，水平論理アドレス＝２８と２９（論理バンク番号＝７）の画素がともに１ポートメモリ４６に記憶されるため，垂直論理アドレス＝１，水平論理アドレス＝２２〜２９（論理バンク番号＝５〜７）に記憶されている８画素を一度に読み出すことはできない。本発明による擬似多ポートメモリから，水平論理アドレスが連続する８画素を必ず読み出すことができるのは，仮想バンクの総数が１ポートメモリのバンク数の整数倍であるからである。
【００７５】
図２０は，参照領域３４の仮想１次元アドレスを示す。仮想１次元アドレスは，図１１に示すように，１ポートメモリ４４〜４７に画素単位で割り当てられているアドレスであり，１ポートメモリ４４，４５，４６，４７の０番地にそれぞれ００〜０３，０４〜０７，０８〜１１，１２〜１５，１ポートメモリ４４，４５，４６，４７の１番地にそれぞれ１６〜１９，２０〜２３，２４〜２７，２８〜３１のように割り当てられている。仮想１次元アドレスの０番地〜３８３番地には，参照領域３３がマッピングされているため，参照領域３４の最下位の仮想１次元アドレス（以下，ベースアドレスという。）は３８４番地となる。
【００７６】
上述したように，本発明では，２次元論理アドレスを２次元仮想アドレス，仮想１次元アドレスを経て実アドレスに変換する。まず，２次元論理アドレスから２次元仮想アドレスヘ変換する方法について，以下に具体的に説明する。
【００７７】
テンプレートが含まれる画像から各参照領域が含まれる画像までの画像間距離をｄｆとすると，更新領域と空き領域を含む参照領域の横方向の画素数，すなわち水平仮想アドレスの大きさＭＡＸＸ（ｄｆ）は，
ＭＡＸＸ（ｄｆ）＝（２×８×ｄｆ＋４×４）
となる。
【００７８】
また，現在の更新領域の仮想バンク番号をｒｖｋ（ｄｆ）とする。現テンプレートの動きベクトルの探索が終了し，右隣の次のテンプレートの動きベクトルの探索を開始するとき，ｒｖｋ（ｄｆ）は＋１増加するが，０〜（４×ｄｆ＋３）の範囲で巡回するものとする。
【００７９】
本実施形態では，ｒｖｋ（ｄｆ）を記憶しておき，これに基づいて２次元論理アドレスを仮想２次元アドレスに変換する。水平論理アドレスをｌｘａ（ｄｆ），水平仮想アドレスをｖｘａ（ｄｆ）とすると，ｌｘａ（ｄｆ）からｖｘａ（ｄｆ）には，以下の式により変換できる。
【００８０】
ｖｘａ（ｄｆ）＝ｌｘａ（ｄｆ）＋４｛ｒｖｋ（ｄｆ）＋３｝；
ｉｆ  ｖｘａ（ｄｆ）≧ＭＡＸＸ（ｄｆ）
ｖｘａ（ｄｆ）＝ｖｘａ（ｄｆ）−ＭＡＸＸ（ｄｆ）；
ただし，４｛ｒｖｋ（ｄｆ）＋３｝は，水平仮想アドレスと水平論理アドレスの差を算出する方法の一例であり，例えば，論理バンク番号＝０の論理バンクに対応する仮想バンク番号を記憶しておき，この仮想バンク番号に仮想バンクの水平方向の画素数を掛けたもので水平仮想アドレスと水平論理アドレスの差を算出してもよい。
【００８１】
次に，２次元仮想アドレスを１次元仮想アドレスに変換する方法について説明する。ｙａ（ｄｆ）を垂直仮想アドレス（＝垂直論理アドレス），ＢＡＳＥ（ｄｆ）をテンプレートが含まれる画像から画像間距離ｄｆだけ離れた画像に含まれる参照領域におけるベースアドレスとすると，水平仮想アドレスｖｘａ（ｄｆ）とｙａ（ｄｆ）から参照メモリ上の仮想１次元アドレスｖａｄｒは次式により算出できる。
【００８２】
ｖａｄｒ＝ＢＡＳＥ（ｄｆ）＋ｖｘａ（ｄｆ）＋ｙａ（ｄｆ）×ＭＡＸＸ（ｄｆ）；
上記のように，現在の更新領域の仮想バンク番号ｒｖｋ（ｄｆ）を記憶しておけば，２次元論理アドレス（ｌｘａ（ｄｆ），ｙａ（ｄｆ））を仮想１次元アドレスｖａｄｒに変換することができる。
【００８３】
この仮想１次元アドレスｖａｄｒの最下位側の２ビットが擬似多ポートメモリにおける各バンクのワード内の画素の番号ｐｎ（０〜３），最下位のビットから数えて３ビット目と４ビット目が実バンク番号ｒｂ（０〜３），その上位のビットが実アドレスｒａに対応する。
【００８４】
最後に，代表アドレス，すなわち，画素並べ替え回路４８によって切り出される８画素中最下位のものの仮想１次元アドレスから各バンクごとの実アドレスを生成する方法について具体的に説明する。代表アドレスがｖａｄｒであるとき，１ポートメモリ４４〜４７に付された実バンク番号をｂｎとすると，１ポートメモリ４４〜４７に与える実アドレスｂａ（ｂｎ）は，以下の式により算出される。
【００８５】
Ｉｆ（ｂｎ＜ｒｂ）｛
Ｉｆ（ＭＡＸＸ（ｄｆ）−ｖｘａ（ｄｆ）≦１６）
ｂａ（ｂｎ）＝ｒａ−ｄｆ；
ｅｌｓｅ  ｂａ（ｂｎ）＝ｒａ＋１；
｝
ｅｌｓｅ  ｂａ（ｂｎ）＝ｒａ；
ここで，（ＭＡＸＸ（ｄｆ）−ｖｘａ（ｄｆ）≦１６）は，画素並べ替え回路４８によって切り出される８画素中最下位のものの実アドレス（以下，代表実アドレスという。）ｒａが，その垂直論理アドレスｙａ（ｄｆ）が変換される可能性がある実アドレス範囲の中の最上位のアドレスであることを意味する。
【００８６】
例えば，図１６と図１７において，ｌｘａ（２）＝２２〜２９，ｙａ（２）＝１の８画素を読み出すとき，代表実アドレスはｒａ＝２９である。このとき，ｙａ（２）＝１が変換される可能性がある実アドレス範囲は２７番地〜２９番地であり，ｒａ＝２９は最上位のアドレスである。この場合，１ポートメモリ４４の実バンク番号ｂｎ＝０は，画素並べ替え回路４８によって切り出される８画素中最下位のものの実バンク番号ｒｂ＝２よりも小さいため，１ポートメモリ４４にはｂａ（０）＝ｒａ−ｄｆ＝２９−２＝２７番地の実アドレスが与えられる。
【００８７】
１ポートメモリ４４〜４７から読み出された１２画素は，画素並べ替え回路４８により８画素が切り出され，画素並べ替え回路４８によって切り出される８画素中最下位のものが最も早く出力されるように並べ替えられてシフトレジスタ４９〜５３に設定される。
【００８８】
上記方法により２次元論理アドレス（ｌｘａ（ｄｆ），ｙａ（ｄｆ））によって指定されるアドレスから連続した水平論理アドレスの８画素を読み出し，シフトレジスタ４９〜５３により出力タイミングを調整することによって擬似多ポートメモリから５画素を同時に出力することができる。
【００８９】
なお，上記本発明の実施の形態では，テンプレートの大きさを４画素×４ライン，画面ごとの個々の探索範囲を水平方向＋８／−７，垂直方向±４として説明したが，テンプレートは８画素×４ラインや８画素×８ライン等矩形のブロックであればよく，また，探索範囲は，水平方向，垂直方向とも任意の大きさとすることができる。ただし，探索範囲の水平方向の画素数がテンプレートの水平方向の画素数の整数倍でないときは，テンプレートの水平方向の画素数の整数倍となるように探索範囲を拡大して本発明を適用する。
【００９０】
また，最終的に動きベクトルを検出する対象となる画像とテンプレートが含まれる画像間の距離は３フレームに限らず，任意のフレーム数とすることができる。
【００９１】
さらに，上記本発明の実施の形態では，画素並べ替え回路４８によって切り出される８画素中水平論理アドレスが最下位のものの仮想１次元アドレスを代表アドレスとしたが，画素並べ替え回路４８によって切り出される８画素中水平論理アドレスが最上位のものの仮想１次元アドレスを代表アドレスとしてもよい。
【００９２】
このようにした場合，画素並べ替え回路４８によって切り出される８画素中水平論理アドレスが最上位のものの実アドレスが，その垂直論理アドレスｙａ（ｄｆ）が変換される可能性がある実アドレス範囲の中の最下位の実アドレスでないとき，代表アドレスから求められる実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，代表アドレスから求められる実アドレスから１を減算した実アドレスが与えられ，また，その垂直論理アドレスｙａ（ｄｆ）が変換される可能性がある実アドレス範囲の中の最下位の実アドレスであるとき，代表アドレスから求められる実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，その垂直論理アドレスｙａ（ｄｆ）が変換される可能性がある実アドレス範囲の中の最上位のアドレスが与えられる。
【実施例】
【００９３】
図２１は，本発明による擬似多ポートメモリ装置の構成例を示す図である。擬似多ポートメモリ装置は，ｍ個（ｍは自然数）の画素を記憶できるワード幅を有するｎ個（ｎは自然数）の１ポートメモリ４４〜４７と，入力した水平論理アドレスおよび垂直論理アドレスを１ポートメモリ４４〜４７の実アドレスに変換するアドレス変換手段１００と，１ポートメモリ４４〜４７から読み出した画素を並べ替える画素並べ替え手段２００と，並べ替えた画素の出力タイミングをシフトレジスタ等を用いることによって調整する出力タイミング調整手段３００とから構成される。
【００９４】
画素並べ替え手段２００は，図１１に示した画素並べ替え回路４８によって構成され，アドレス変換手段１００によって実アドレス群が与えられることによってｎ個の１ポートメモリ４４〜４７から出力されるｍ×ｎ個以下の画素を入力し，２次元論理アドレス付与手段１１０によって与えられた水平論理アドレスを最下位の水平論理アドレスとして，上位側に連続した水平論理アドレスを有するｍ×（ｎ−１）個以下の画素を，水平論理アドレスの昇順または降順に並べ替えて出力する。
【００９５】
また，出力タイミング調整手段３００は，画素並べ替え手段２００に対して並列配置されたそれぞれ所定シフト段数を有する複数のシフトレジスタ（例えば図１１のシフトレジスタ４９〜５３）からなり，画素並べ替え手段２００から順次出力される画素群を各シフトレジスタで順に保持するとともに，各画素群を構成する複数の画素を１画素ずつ各シフトレジスタから順次シフト出力することにより出力タイミングを調整し，各シフトレジスタから所望の画素を並列して同時に出力する。
【００９６】
図２２は，図２１に示すアドレス変換手段１００の詳細な構成例を示している。アドレス変換手段１００の２次元論理アドレス付与手段１１０は，水平論理アドレスを保持する水平論理アドレスレジスタ１１１と，垂直論理アドレスを保持する垂直論理アドレスレジスタ１１２からなる。２次元仮想アドレス生成手段１２０は，水平論理アドレスをｍ×ｎの整数倍の大きさの水平仮想アドレスに変換する水平仮想アドレス生成回路１２１と，生成された水平仮想アドレスを保持する水平仮想アドレスレジスタ１２２と，垂直論理アドレスをそのまま垂直仮想アドレスとして保持する垂直仮想アドレスレジスタ１２３とから構成される。垂直仮想アドレスレジスタ１２３は省略してもよい。
【００９７】
水平仮想アドレス生成回路１２１は，０〜（水平仮想アドレスの大きさ／ｍ−１）の範囲で巡回する値（すなわち仮想バンク番号）に基づいて水平仮想アドレスと水平論理アドレスとの差に相当する値を算出し，水平論理アドレスに当該水平仮想アドレスと水平論理アドレスとの差に相当する値を加算し，その結果が水平仮想アドレスの大きさを超えたときは当該結果から水平仮想アドレスの大きさを減算することにより，水平論理アドレスを，ｍ×ｎの整数倍の大きさの水平仮想アドレスに変換する。
【００９８】
仮想１次元アドレス生成手段１３０は，水平仮想アドレスと垂直仮想アドレスとを乗算する乗算器１３１と，当該２次元仮想アドレスが割り当てられている領域のベースアドレスを保持するベースアドレスレジスタ１３２と，水平仮想アドレスと乗算器１３１による乗算結果とベースアドレスとを加算する加算器１３３と，加算器１３３の出力を仮想１次元アドレスとして保持する仮想１次元アドレスレジスタ１３４とから構成される。
【００９９】
代表実アドレス生成手段１４０は，ｍ×ｎの値を保持する定数メモリ１４１と，仮想１次元アドレスを（ｍ×ｎ）で除算する除算器１４２と，その商を代表実アドレスとして保持する代表実アドレスレジスタ１４３とから構成される。また，代表実バンク番号生成手段１５０は，ｍの値を保持する定数メモリ１５１と，除算器１４２が出力する除算の余りをｍで除算する除算器１５２と，除算器１５２の除算結果を代表実バンク番号として保持する代表実バンク番号１５３とから構成される。
【０１００】
実アドレス生成手段１６０は，代表実アドレスと代表実バンク番号から各１ポートメモリ４４〜４７に与える実アドレスを生成する実アドレス生成回路１６１を備える。この実アドレス生成回路１６１は，２次元論理アドレス付与手段１１０によって与えられた水平論理アドレスが最下位の水平論理アドレスである場合には，代表実アドレスが，垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスでないとき，代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには当該代表実アドレスに１を加算した実アドレスを与え，一方，当該代表実アドレスが，垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスであるとき，当該代表実バンク番号よりも小さな実バンク番号を有する１ポートメモリには垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスを与える。
【０１０１】
また，実アドレス生成回路１６１は，２次元論理アドレス付与手段１１０によって与えられた水平論理アドレスが最上位の水平論理アドレスである場合には，当該代表実アドレスが，最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスでないとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスから１を減算した実アドレスを与え，一方，当該代表実アドレスが，最初に与えられた垂直論理アドレスが変換される可能性がある実アドレス範囲の中の最下位の実アドレスであるとき，当該代表実バンク番号よりも大きな実バンク番号を有する１ポートメモリには，当該代表実アドレスが最初に与えられた垂直仮想アドレスが変換される可能性がある実アドレス範囲の中の最上位の実アドレスを与える。
【図面の簡単な説明】
【０１０２】
【図１】動きベクトル検出器の構成を示す図である。
【図２】隣接する２つのテンプレートの参照領域の例を示す図である。
【図３】テレスコピック探索法を示す説明図である。
【図４】差分絶対値和演算器を並列化する例を示す図である。
【図５】差分絶対値和演算器を並列化する場合の探索領域を示す図である。
【図６】擬似多ポートメモリのブロック図を示す図である。
【図７】１６バンクに分割されたメモリにおけるモジュロアドレシングを説明する図である。
【図８】テレスコピック探索の参照領域の大きさを示す図である。
【図９】参照メモリ上での参照領域のマッピングを示す図である。
【図１０】動きベクトル検出器の構成を示すブロック図である。
【図１１】擬似多ポートメモリのブロック図である。
【図１２】探索領域を示す図である。
【図１３】４並列の差分絶対値和計算回路へ供給される画素を示す図である。
【図１４】参照領域の画素に対する２次元論理アドレスの割り当てと論理バンクへの分割を示す図である。
【図１５】参照領域の２次元論理アドレスを擬似多ポートメモリヘマッピングした一状態を示す図である。
【図１６】２次元論理アドレスが更新された状態を示す図である。
【図１７】参照領域に含まれる画素の擬似多ポートメモリヘのマッピングを示す図である。
【図１８】水平仮想アドレスと実アドレスの対応を示す図である。
【図１９】論理バンクの総数が１ポートメモリのバンク数の整数倍ではない場合におけるマッピング状態を示す図である。
【図２０】参照領域の仮想１次元アドレスを示す図である。
【図２１】本発明による擬似多ポートメモリ装置の構成例を示す図である。
【図２２】図２１に示すアドレス変換手段の例を示す図である。
【符号の説明】
【０１０３】
１，４２  動きベクトル検出器
２，２１，２２，３１，３７，３８，３９，４０  差分絶対値和計算回路
３，４１  最小値検出回路
４，３６  参照メモリ
５，４３  外部フレームメモリ
６，１４，１５，１６，１７  画像
７  スライス
８，９  テンプレート
１０，１１，３３，３４，３５  参照領域
１２  更新領域
１３  矩形ブロック
１８，１９，２０，２３，２４，５４，５５，５６，５７  探索領域
２５，２６，４４，４５，４６，４７  １ポートメモリ
２７，２８，２９，４９，５０，５１，５２，５３  シフトレジスタ
３０，４８  画素並べ替え回路
３２  テンプレート
Ｂ１  バンク間アドレス
Ｂ２  バンク内アドレス
Ｂ３  バンク番号
１００  アドレス変換手段
１１０  ２次元論理アドレス付与手段
１２０  ２次元仮想アドレス生成手段
１３０  仮想１次元アドレス生成手段
１４０  代表実アドレス生成手段
１５０  代表実バンク番号生成手段
１６０  実アドレス生成手段
２００  画素並べ替え手段
３００  出力タイミング調整手段
【図１】
2005136455.tif 000003
【図２】
2005136455.tif 000004
【図３】
2005136455.tif 000005
【図４】
2005136455.tif 000006
【図５】
2005136455.tif 000007
【図６】
2005136455.tif 000008
【図７】
2005136455.tif 000009
【図８】
2005136455.tif 000010
【図９】
2005136455.tif 000011
【図１０】
2005136455.tif 000012
【図１１】
2005136455.tif 000013
【図１２】
2005136455.tif 000014
【図１３】
2005136455.tif 000015
【図１４】
2005136455.tif 000016
【図１５】
2005136455.tif 000017
【図１６】
2005136455.tif 000018
【図１７】
2005136455.tif 000019
【図１８】
2005136455.tif 000020
【図１９】
2005136455.tif 000021
【図２０】
2005136455.tif 000022
【図２１】
2005136455.tif 000023
【図２２】
2005136455.tif 000024