"多段階動き探索により所定のブロック単位で動きベクトル検出を行う画像符号化装置であって、連続して処理を行う複数のブロックの第一段階動き探索での動きベクトル間の相対位置を算出する算出手段と、前記連続して処理を行う複数のブロックのベクトル間の相対位置が、第二段階動き探索用の参照画像をブロック単位で取得するよりも前記複数のブロック分まとめて取得することでバス占有量が小さくなる所定の範囲にあるかどうかを判定する判定手段と、第二段階動き探索用の参照画像を記憶する参照画像記憶手段と、前記判定手段に従い、前記連続して処理を行う複数のブロックのベクトル間の相対位置が前記所定の範囲にある場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を1回のアクセスでまとめて前記参照画像記憶手段から取得し、前記所定の範囲に無い場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を別々に前記参照画像記憶手段から取得する参照画像取得手段とを具備することを特徴とする画像符号化装置。前記連続して処理を行う複数のブロックの第一段階動き探索において、前記所定の範囲に該当する探索範囲と、前記所定の範囲に該当しない探索範囲とで動きベクトルを決定するコスト関数を変更する手段をさらに具備することを特徴とする請求項1に記載の画像符号化装置。前記コスト関数を変更する手段は、前記所定の範囲に該当しない探索範囲と比較して前記所定の範囲に該当する探索範囲の方が動きベクトルとして選択されやすくなるように前記コスト関数を変更することを特徴とする請求項2に記載の画像符号化装置。H.264のような画像圧縮符号化方式では、動きベクトル検出はマクロブロック単位で実行される。多段階動き探索方式の動きベクトル検出では、第一段階動き探索が終了した時点で第二段階動き探索の探索範囲が決定する。第二段階動き探索の探索範囲はマクロブロックごとに異なるので、第二段階動き探索用の参照画像はマクロブロックごとにデータの取得が行われることになる。符号化を行うマクロブロックごとに第二段階動き探索用の参照画像を取得することにより、1回あたりの参照画像の読み込み量はマクロブロック1個の探索に必要な量に限定されてしまう。すなわち、1回あたりのデータの読み込み量が少ないので、データアクセスの際のバースト長が短くなり、バス効率が低下してしまう。本発明は、このような問題点を解決する画像符号化装置を提示することを目的とする。本発明に係る画像符号化装置は、多段階動き探索により所定のブロック単位で動きベクトル検出を行う画像符号化装置であって、連続して処理を行う複数のブロックの第一段階動き探索での動きベクトル間の相対位置を算出する算出手段と、前記連続して処理を行う複数のブロックのベクトル間の相対位置が、第二段階動き探索用の参照画像をブロック単位で取得するよりも前記複数のブロック分まとめて取得することでバス占有量が小さくなる所定の範囲にあるかどうかを判定する判定手段と、第二段階動き探索用の参照画像を記憶する参照画像記憶手段と、前記判定手段に従い、前記連続して処理を行う複数のブロックのベクトル間の相対位置が前記所定の範囲にある場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を1回のアクセスでまとめて前記参照画像記憶手段から取得し、前記所定の範囲に無い場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を別々に前記参照画像記憶手段から取得する参照画像取得手段とを具備することを特徴とする。本発明によれば、複数ブロックの第一段階動き探索の動きベクトルが近接している場合において、第二段階動き探索に必要な参照画像を1回のバスアクセスでまとめて取得できる。これにより、バスアクセスのバースト長を長くすることができ、バス効率を上げることができる。バス効率を上げることによって、1ブロックあたりのデータバスへのアクセス量を小さくすることができる。以下、図面を参照して、本発明の実施例を詳細に説明する。図1は、H.264符号化方式に適用した本発明に係る画像符号化装置の一実施例の概略構成ブロック図である。この実施例の画像符号化装置では、2段階動き探索方式で動きベクトル検出を行うものとしている。すなわち、第一段階動き探索では2画素精度の探索を行い、第二段階動き探索では1/2画素精度の探索を行う。また、1/2画素精度の探索を行う際、1/2画素位置の参照画像には縦横ともに6TAPフィルタをかけたものを使用する。なお、動きベクトル検出方法自体は、本実施例で採用したものに限定されず、多段階動き探索を用いた動きベクトル検出方法であれば、どんな方法も、本発明に適用可能である。符号化しようとする入力画像符号化対象画像は、フレームバッファ101に格納される。他方、参照フレームバッファ参照画像記憶手段114には、先行して符号化され局所復号化された画像データが、参照画像として格納されている。第一段階動き探索部102aは、所定のブロック例えばマクロブロック単位で、フレームバッファ101の符号化対象画像と参照フレームバッファ114の参照画像を対比し、2画素精度の動きベクトル検出を行う。具体的には、第一段階動き探索部102aは、符号化対象画像と参照画像をそれぞれ1/2に間引きながら読み出し、ブロックマッチングを行って、2画素精度の第一段階の動きベクトル検出を行う。検出された第一段階の動きベクトル情報は、ベクトル相対位置算出部103及び第二段階動き探索部102bに送られる。ベクトル相対位置算出部103は、第一段階動き探索部102aからの第一段階の動きベクトル情報を保存し、連続して処理を行う複数のブロックの動きベクトル間の相対位置を算出する。算出された動きベクトルの相対位置は、読み出し制御部104に送られる。読み出し制御部104は、ベクトル相対位置算出部103からの動きベクトルの相対位置により、第二段階動き探索用の参照画像の読み出し方法を変更する。読み出し方法の詳細は、後で説明する。第二段階動き探索部102bは、第一段階動き探索部102aが出力する第1段階の動きベクトルの指し示す位置を基準として、さらに1/2画素精度の動きベクトル検出を行う。具体的には、第二段階動き探索部102bは、フレームバッファ101の符号化対象画像と参照フレームバッファ114の参照画像を読み出し、参照画像には縦横ともに6TAPフィルタをかけ、1/2画素位置の参照画像を作成する。そして、符号化対象画像と参照画像との間でブロックマッチングをとり、第二段階の動きベクトル検出を行う。検出された第二段階の動きベクトル情報は予測部105に送られる。予測部105は、フレームバッファ101の符号化対象画像と、第二段階の動きベクトルによって示される位置の参照画像予測画像との間で差分をとり、その差分画像を直交変換部106に出力する。直交変換部106は、予測部105からの差分画像に離散コサイン変換を行い、得られた変換係数を量子化部107に出力する。量子化制御部108は、エントロピー符号化部109から受け取った発生符号量を用いて、目標符号量になるように量子化ステップサイズを決定し、量子化部107に出力する。量子化部107は、直交変換部106からの変換係数を量子化制御部108が出力する量子化ステップサイズに従い量子化する。量子化された変換係数は、符号化ストリーム作成のためにエントロピー符号化部109に供給され、局所復号化画像の作成のために逆量子化部110に供給される。エントロピー符号化部109は、量子化された変換係数にジグザグスキャン又はオルタネートスキャン等を行い、エントロピー符号化する。エントロピー符号化部109は、エントロピー符号化により生成される符号データに、動きベクトル、量子化ステップサイズ及びマクロブロック分割情報などの符号化方式情報を可変長符号化したものを付加して、符号化ストリームを生成する。エントロピー符号化部109はまた、マクロブロックごとの発生符号量を算出し、量子化制御部108に出力する。逆量子化部110は、量子化された変換係数を逆量子化し、ローカルデコード用の変換係数を生成し、逆直交変換部111に供給する。逆直交変換部111は、逆量子化部110の出力を逆離散コサイン変換して差分画像を生成又は復元し、動き補償部112に供給する。動き補償部112は、動きベクトル位置の参照画像を参照フレームバッファ114から読み出し、ローカルデコード用の参照画像を生成する。生成された参照画像を逆直交変換部111からの差分画像に加算することにより、画像データを復元する。復元された画像データはデブロッキングフィルタ113に出力される。デブロッキングフィルタ113は、動き補償部112からの画像データにデブロッキングフィルタをかける。デブロッキングフィルタ後の画像が、局所復号化ローカルデコード画像として参照フレームバッファ114に格納される。ベクトル相対位置算出部103及び読み出し制御部104による第二段階動き探索用の参照画像の読み出し方法を説明する。ここでは、隣接する2つのマクロブロックの動きベクトル検出を行う場合を説明する。通常、H.264符号化方式ではマクロブロック単位でラスタ順に処理が行われる。左右に隣接するマクロブロックは連続して順番に処理が行われることになる。探索方式として第一段階動き探索では2画素精度の探索を行い、第二段階動き探索では、第一段階動き探索のベクトル位置を中心とした、縦方向に±0.5画素範囲、横方向に±1.5画素範囲での1/2画素精度の探索を行う。マクロブロックのサイズは16×16画素とする。図2は、第一段階動き探索の例を示す。まず、第一のマクロブロック201の2画素精度の第一段階動き探索を行う。次に第二のマクロブロック202の2画素精度の第一段階動き探索を行う。ここで、第一のマクロブロック201の動きベクトルと第二のマクロブロック202の動きベクトルの相対位置を算出する。図2に示すように、第一のマクロブロック201の動きベクトルをx1,y1、第二のマクロブロック202の動きベクトルをx2,y2とする。第一のマクロブロック201の動きベクトルに対する第二のマクロブロック202の動きベクトルの相対位置をrx,ryとすると、rx,ryは、下記式1、2で与えられる。すなわち、rx=x2-x1161ry=y2-y12図3は、第二段階動き探索用の参照画像の範囲を示す。読み出し制御部104は、第一のマクロブロック201の参照画像301と第二のマクロブロック202の参照画像302を参照フレームバッファ114から第二段階動き探索部102bに読み出す。参照画像301および参照画像302はそれぞれ、動きベクトルx1,y1、x2,y2を中心として縦方向に±0.5画素範囲、横方向に±1.5画素範囲の探索を行うのに必要な参照画像の範囲である。半画素位置の探索用に参照画像には縦横ともに6TAPフィルタをかけるので、必要となる参照画像はマクロブロックサイズの16×16画素に縦±3画素、横±4画素を加えた24×22画素となる。動きベクトルの相対位置rx,ryがある所定の範囲内にある場合、参照画像301と参照画像302を1回のバスアクセスでまとめて取得する。図4は参照画像の取得範囲を示す。具体的には、参照画像301および参照画像302を含む参照画像401を、1回のバスアクセスでまとめて第二段階動き探索部102bに読み出す。動きベクトルの相対位置rx,ryがどの範囲にある場合に2マクロブロック分の参照画像をまとめて取得するのかは、第二段階動き探索の探索範囲及びメインメモリへのバーストアクセス長によるバス効率に依存する。SDRAMへのバーストリードアクセスによるバス効率を説明する。SDRAMへのバーストリードアクセス時のリードサイクルを図5に示す。最初に動作開始を宣言するためのアクティブコマンドactとロウアドレスrowをラッチする。次にリードコマンドredとカラムアドレスcolをラッチする。その後、数クロック遅れてデータがリードされる。データはバースト長のサイズ分だけ連続してリードされる。このように、SDRAMへのバーストリードアクセスにおいては、アクセスの初めにコマンドアクセス分のオーバーヘッドがあり、その後にバースト長のデータサイズのアクセスが行われる。この結果、バースト長が長いほど、単位データあたりの転送効率が良くなる。このバースト長による転送効率を考慮すると、2マクロブロックの参照画像範囲が近い場合、2回のバスアクセスで別々に参照画像を取得するよりも、1回のバスアクセスで参照画像をまとめて取得した方がバスの占有量を少なくできる。例として、バースト長が255以下のときのバス効率を50、バースト長が256以上のときのバス効率を70であるとする。バス効率とは、バスを占有しているサイクル数に占める実際のデータ転送量の割合を示す。SDRAMへのアクセスは4画素単位で行うものとし、4画素アクセスで1バーストとする。第二段階動き探索用のマクロブロック1個分の参照画像は24×22画素である。この場合のバースト長は、24×22/4=132バースト3となる。バス効率が50であるので、実際のバスの占有量は、132×100/50=264サイクル4となる。2マクロブロック分のバス占有量は、式4の結果を2倍にして、528サイクルとなる。2マクロブロック分の参照画像を1回のバスアクセスでまとめて取得する条件を考える。第一段階動き探索の動きベクトルの相対位置rx,ryにより、データ転送量が変動する。このデータ転送量がある量より少ない場合、2マクロブロックの参照画像を2回のバスアクセスで別々に取得するよりも1回のバスアクセスでまとめて取得した方が、バス占有量が小さくなる。上記の数値例では、データ転送量が256よりも小さい場合に、2マクロブロック分を別々に転送するときよりも転送量そのものが小さくなるので、実際のバス占有量も小さくなる。それを踏まえて、データ転送量が256以上の場合について考える。データ転送量が256以上の場合、バースト長が256以上なのでバス効率は70となる。このとき、2マクロブロック分を別々に転送するよりもバス占有量が小さくなるデータ転送量data_sizeは、data_size×100/70<5285となる。式5より、data_size<396.6となる。このようなデータ転送量になる動きベクトルの相対位置rx,ryのときに、参照画像を2マクロブロック分まとめて取得すると、バス効率まで考慮した実際のバス占有量を小さくすることができる。例えば、動きベクトルの相対位置rx,ryが-16~16、-4~4の場合に、2マクロブロック分の参照画像をまとめて取得するものとする。この範囲での最大のデータ転送量はrx,ry=16、4のケースで44×26画素となる。このときのバースト長は286バーストであり、バス効率は70となる。バス占有量は、286×100/70=409サイクル6となる。2マクロブロックの参照画像を別々に取得する場合のバス占有量は528サイクルであり、これと比較して、バス占有量を小さくできることがわかる。図6は、以上の動作のフローチャートを示す。第一段階動き探索部102aが、第一のマクロブロック201と第二のマクロブロック202の第一段階動き探索を行うS61。ベクトル相対位置算出部103が、動き探索の結果から第一のマクロブロック201の動きベクトルと第二のマクロブロック202の動きベクトルの相対位置rx,ryを算出するS62。読み出し制御部104は、動きベクトルの相対位置rx,ryが第二段階動き探索用の参照画像取得時にバス占有量を小さくできるような、ある所定の範囲内にあるかどうかを判定するS63。動きベクトルの相対位置rx,ryが所定の範囲内にある場合、読み出し制御部104は、第二段階動き探索に必要な参照画像の2マクロブロック分を1回のバスアクセスでまとめて参照フレームバッファ114から読み出すS64。動きベクトルの相対位置rx,ryがある所定の範囲内にない場合、読み出し制御部104は、第二段階動き探索に必要な参照画像をマクロブロックごとに2回のバスアクセスで別々に参照フレームバッファ114から読み出すS65。読み出された参照画像は、第二段階動き探索部102bに供給される。第二段階動き探索部102bは、第一のマクロブロック201と第二のマクロブロック202の第二段階動き探索を行い、動きベクトル検出動作を完了するS66。このような動作により、本実施例では、バス効率を考慮したバス占有量、すなわちデータバスに対するアクセス量を小さくすることができる。すなわち、第二段階動き探索に必要となる参照画像を1回のアクセスで2マクロブロック分まとめて取得することにより、バースト長を長くし、バス効率を上げることができる。そして、バス効率の向上により、データバスへのアクセス量を低減することができる。隣接する2つのマクロブロックの場合を例に説明したが、本発明はこのような状況に限らず、連続して処理を行う2つ以上のマクロブロックに対して適用可能である。第一段階動き探索時に2マクロブロック分の参照画像を1回のバスアクセスでまとめて取得することによりバス占有量を小さくできる探索範囲を、それ以外の探索範囲よりも選択されやすくした変更実施例を説明する。図1に示す実施例に対する変更部分を詳細に説明する。図7は、本実施例での動きベクトル検出の例を示す。実施例1の場合と同様、2段階動き探索方式を用いて、隣接する2つのマクロブロックの動きベクトル検出を行う場合を示す。第一のマクロブロック201の第一段階動き探索を行う。その結果、第一のマクロブロック201の第一段階の動きベクトル701が検出される。第二のマクロブロック202の探索範囲702のうち、第二段階動き探索用の参照画像を2マクロブロック分まとめて取得することによりバス占有量を小さくできる探索範囲703を決定する。実施例1で述べたように、この探索範囲703は、第二段階動き探索の探索範囲、及びメインメモリへのバーストアクセス長によるバス効率に依存する。動きベクトル位置の決定方法を簡単に説明する。動きベクトル位置の決定では、一般的に、符号化対象画像と参照画像を減算して得られる差分データをベースにしたコスト関数が用いられる。コスト関数ここではCostとするには、色々な関数が考えられるが、代表的には、Cost=SATDQp×Mvcost7が知られている。SATDは、符号化対象画像と参照画像を減算して得られた差分データに対してアダマール変換をかけたものに対し差分絶対値和演算を行った結果である。Qpは量子化処理に使用される量子化値である。Mvcostは動きベクトルの長さに応じた動きベクトルの符号量相当のコスト値である。このコスト関数Costを用い、最もコスト値の小さい位置を動きベクトル位置として決定する。本実施例では、第二のマクロブロック202の第一段階動き探索において、探索範囲702のうち探索範囲703の部分だけコスト関数を変更することにより、探索範囲703を選ばれやすくする。例えば、探索範囲703には、下記式Cost=SATDQp×Mvcost-α8を用いる。他方、探索範囲702の探索範囲703以外の部分には式7を用いる。ここでαは、ある固定の値である。式7と式8を比較すると、式8はαだけコスト値が小さくなるので、探索範囲703の方が選択されやすくなる。また、探索範囲703に、下記式Cost=SATDQp×Mvcost×β9に示すようなコスト関数を用いることも考えられる。ここで、βは0<β<1を満たす固定値である。この場合でも、式7と式9を比較すると、式9では、1より小さい値であるβを乗算している分だけコスト値が小さくなるので、探索範囲703が選択されやすくなる。探索範囲703の方が選択されやすくなるコスト関数の例として式8及び式9を示したが、コスト関数はこれらに限定されない。探索範囲703が選択されやすくなるコスト計算式一般が利用可能である。このように探索範囲703を選択されやすくすることにより、バス占有量を小さくできる動きベクトル位置が検出される確率が高くなり、その分データバスへのアクセス量を小さくすることができる。図8は、以上の動作のフローチャートを示す。第一段階動き探索部102aが、第一のマクロブロック201の第一段階動き探索を行うS81。第一のマクロブロック201の第一段階動き探索の動きベクトルから、第二のマクロブロック202の探索範囲のうち、バス占有量を小さくできる探索範囲を決定するS82。第二のマクロブロック202の第一段階動き探索を開始するS83。第二のマクロブロック202の第一段階動き探索を、探索位置をずらしながら順次行い、現在の動き探索位置がバス占有量を小さくできる探索範囲かどうかを判定するS84。現在の動き探索位置がバス占有量を小さくできる探索範囲である場合S84、動きベクトル決定に使用するコスト関数を、通常のコスト関数より小さいコスト値になりやすくなるものに変更するS85。現在の動き探索位置がバス占有量を小さくできる探索範囲ではない場合S84、動きベクトル決定に通常のコスト関数を使用するS86。全ての探索範囲が終了するまでS87、ステップS84~S86を繰り返すS87。第二のマクロブロック202の第一段階動き探索が終了したらS87、実施例1と同様の方法を用いて、第一のマクロブロック201と第二のマクロブロック202の第二段階動き探索を行いS88、動きベクトル検出動作を完了する。第一段階動き探索において、第二段階動き探索用に2マクロブロック分の参照画像をまとめて取得できる探索範囲を選択されやすくするので、通常どおりに探索する場合と比較し、データバスへのアクセス量を小さくできる。"