(57)【要約】【課題】  多段階動き探索方式の動きベクトル検出における参照画像取得のバス効率を改善する。【解決手段】  符号化対象画像がフレームバッファ（１０１）に格納され、参照フレームバッファ（１１４）に局所復号化で得られた参照画像が格納される。動き探索部（１０２ａ）は符号化対象画像と参照画像を対比し低精度の動きベクトル検出を行う。ベクトル相対位置算出部（１０３）は動き探索部（１０２ａ）による第一段階の動きベクトル情報から、連続処理を行うブロックの動きベクトル間の相対位置を算出する。読み出し制御部（１０４）は、動きベクトル間の相対位置がバス効率を改善する範囲にある場合、そのブロックの参照画像を１アクセスでまとめて読み出し、それ以外では別々に読み出す。動き探索部（１０２ｂ）は、第一段階の動きベクトル位置を基準に符号化対象画像と参照画像から高精度の動きベクトル検出を行う。【選択図】  図１
2013026756.tif 000002
【特許請求の範囲】
【請求項１】
多段階動き探索により所定のブロック単位で動きベクトル検出を行う画像符号化装置であって、
連続して処理を行う複数のブロックの第一段階動き探索での動きベクトル間の相対位置を算出する算出手段と、
前記連続して処理を行う複数のブロックのベクトル間の相対位置が、第二段階動き探索用の参照画像をブロック単位で取得するよりも前記複数のブロック分まとめて取得することでバス占有量が小さくなる所定の範囲にあるかどうかを判定する判定手段と、
第二段階動き探索用の参照画像を記憶する参照画像記憶手段と、
前記判定手段に従い、前記連続して処理を行う複数のブロックのベクトル間の相対位置が前記所定の範囲にある場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を１回のアクセスでまとめて前記参照画像記憶手段から取得し、前記所定の範囲に無い場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を別々に前記参照画像記憶手段から取得する参照画像取得手段
とを具備することを特徴とする画像符号化装置。
【請求項２】
前記連続して処理を行う複数のブロックの第一段階動き探索において、前記所定の範囲に該当する探索範囲と、前記所定の範囲に該当しない探索範囲とで動きベクトルを決定するコスト関数を変更する手段をさらに具備することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記コスト関数を変更する手段は、前記所定の範囲に該当しない探索範囲と比較して前記所定の範囲に該当する探索範囲の方が動きベクトルとして選択されやすくなるように前記コスト関数を変更することを特徴とする請求項２に記載の画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像データを圧縮符号化する画像符号化装置に関し、特に所定のブロック単位で動きベクトル検出処理を行う画像符号化装置に関する。
【背景技術】
【０００２】
近年、動画像の高解像度化が進んでいる。例えば、デジタルビデオカメラやデジタルテレビなどでは、１９２０画素×１０８０画素の画素数を有するＨＤ（Ｈｉｇｈ-Ｄｅｆｉｎｉｔｉｏｎ）映像を扱う製品が既に主流となっている。この高解像度化は今後も進んでいく見通しであり、将来的には４０００画素×２０００画素や８０００画素×４０００画素の画像を扱うことが予想される。このような高解像度の画像データを符号化する場合、画素数の増加に応じて画素データのアクセス量と処理量が増大する。
【０００３】
動画像データを圧縮して記録するために、様々な画像圧縮符号化方式が提案されている。代表的な画像圧縮符号化方式として、ＭＰＥＧ−２、ＭＰＥＧ−４及びＨ．２６４／ＭＰＥＧ−４  ＡＶＣ等が挙げられる。これらの圧縮符号化方式では、画像をマクロブロックと呼ばれる１６×１６画素に分割し、このマクロブロック単位で符号化を行う。即ち、符号化の主要な処理、例えば、動きベクトル検出、周波数変換、量子化処理、可変長符号化処理等をマクロブロック単位で行う。
【０００４】
これらの処理のうち、最も処理量が多く、データの読み出し量が多いのが、動きベクトル検出処理である。動きベクトル検出処理は、符号化を行うマクロブロックに対して、参照画像と符号化対象画像との間でブロックマッチングを取り、両者が最も一致する位置を動きベクトル位置として検出する。検出された動きベクトル位置に対して動き補償処理を行うことで、符号化効率を高めることができる。
【０００５】
動きベクトル検出方法として様々な方法が提案されている。代表的な方法に多段階動き探索方式がある。これは、まず粗い精度で動き探索を行い、その結果を用いて細かい精度の動き探索を行うというように、精度が異なる探索を多段階に分けて動きベクトル検出を行う方式である。この方法は、探索範囲の全ての探索位置でブロックマッチングを行う全探索法と比較して、トータルの演算量が少ない。
【０００６】
多段階動き探索方式を具体的に説明する。例えば、第一段階動き探索として画像を縦横ともに１／２に間引いた（または縮小した）画像を用いて２画素精度の動きベクトル検出を行う。そして、第二段階動き探索で第一段階動き探索結果の動きベクトル位置を中心として、整数画素精度の動きベクトル検出を行う。更には、第三段階動き探索以降で、１／２画素精度の動きベクトル検出又は１／４画素精度の動きベクトル検出を行う方式も知られている。
【０００７】
動画像符号化時のハードウエア上の問題は、データのアクセス量増加によるバスボトルネックである。高解像度化と頻繁なメモリアクセスを伴う動きベクトル検出処理により、符号化処理部とフレームメモリとの間の転送データ量が膨大になり、バスボトルネックにより所望の性能が満たせないことがある。そこで、データバスへのアクセス量を低減して、バスボトルネックを回避する必要がある。
【０００８】
データバスへのアクセス量を低減するには、フレームメモリへのデータアクセス量そのものを減らす方法と、データアクセスを行う際のバス効率を改善する方法の２種類が考えられる。
【０００９】
フレームメモリへのデータアクセス量を低減する方法として、複数のマクロブロックの符号化処理において、同一の参照画像を用いて処理を行うことができるマクロブロックを並列処理する方法が知られている（特許文献１）。この方法により、参照画像を読み込むためのメモリアクセス数が削減される。
【００１０】
またバス効率を改善する方法としては、１回のアクセスの際のバースト長を長くする方法が知られている。一般に、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの主記憶手段やメモリバスなどのスループット性能は、シングルアクセスと比較してバーストアクセスの方が優れている。従って、バースト長が長いほどアクセス効率が良くなる。フレームメモリへのデータアクセス量が同じ場合でも、１回のアクセスあたりのバースト長が長い方が、データバスの占有時間が短くなり、バス効率が向上する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００７−３２５１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
Ｈ．２６４のような画像圧縮符号化方式では、動きベクトル検出はマクロブロック単位で実行される。多段階動き探索方式の動きベクトル検出では、第一段階動き探索が終了した時点で第二段階動き探索の探索範囲が決定する。第二段階動き探索の探索範囲はマクロブロックごとに異なるので、第二段階動き探索用の参照画像はマクロブロックごとにデータの取得が行われることになる。符号化を行うマクロブロックごとに第二段階動き探索用の参照画像を取得することにより、１回あたりの参照画像の読み込み量はマクロブロック１個の探索に必要な量に限定されてしまう。すなわち、１回あたりのデータの読み込み量が少ないので、データアクセスの際のバースト長が短くなり、バス効率が低下してしまう。
【００１３】
本発明は、このような問題点を解決する画像符号化装置を提示することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る画像符号化装置は、多段階動き探索により所定のブロック単位で動きベクトル検出を行う画像符号化装置であって、連続して処理を行う複数のブロックの第一段階動き探索での動きベクトル間の相対位置を算出する算出手段と、前記連続して処理を行う複数のブロックのベクトル間の相対位置が、第二段階動き探索用の参照画像をブロック単位で取得するよりも前記複数のブロック分まとめて取得することでバス占有量が小さくなる所定の範囲にあるかどうかを判定する判定手段と、第二段階動き探索用の参照画像を記憶する参照画像記憶手段と、前記判定手段に従い、前記連続して処理を行う複数のブロックのベクトル間の相対位置が前記所定の範囲にある場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を１回のアクセスでまとめて前記参照画像記憶手段から取得し、前記所定の範囲に無い場合に、前記複数のブロックの第二段階動き探索に必要となる参照画像を別々に前記参照画像記憶手段から取得する参照画像取得手段とを具備することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数ブロックの第一段階動き探索の動きベクトルが近接している場合において、第二段階動き探索に必要な参照画像を１回のバスアクセスでまとめて取得できる。これにより、バスアクセスのバースト長を長くすることができ、バス効率を上げることができる。バス効率を上げることによって、１ブロックあたりのデータバスへのアクセス量を小さくすることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施例の概略構成ブロック図である。
【図２】隣接する２マクロブロック間の動きベクトルの説明図である。
【図３】隣接する２マクロブロック間の参照画像範囲の説明図である。
【図４】参照画像の取得範囲の説明図である。
【図５】ＳＤＲＡＭのバーストリードアクセスタイミングの説明図である。
【図６】実施例１の動作フローチャートである。
【図７】実施例２の動きベクトル検出例の説明図である。
【図８】実施例２の動作フローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施例を詳細に説明する。
【実施例１】
【００１８】
図１は、Ｈ．２６４符号化方式に適用した本発明に係る画像符号化装置の一実施例の概略構成ブロック図である。この実施例の画像符号化装置では、２段階動き探索方式で動きベクトル検出を行うものとしている。すなわち、第一段階動き探索では２画素精度の探索を行い、第二段階動き探索では１／２画素精度の探索を行う。また、１／２画素精度の探索を行う際、１／２画素位置の参照画像には縦横ともに６ＴＡＰフィルタをかけたものを使用する。なお、動きベクトル検出方法自体は、本実施例で採用したものに限定されず、多段階動き探索を用いた動きベクトル検出方法であれば、どんな方法も、本発明に適用可能である。
【００１９】
符号化しようとする入力画像（符号化対象画像）は、フレームバッファ１０１に格納される。他方、参照フレームバッファ（参照画像記憶手段）１１４には、先行して符号化され局所復号化された画像データが、参照画像として格納されている。
【００２０】
第一段階動き探索部１０２ａは、所定のブロック（例えばマクロブロック）単位で、フレームバッファ１０１の符号化対象画像と参照フレームバッファ１１４の参照画像を対比し、２画素精度の動きベクトル検出を行う。具体的には、第一段階動き探索部１０２ａは、符号化対象画像と参照画像をそれぞれ１／２に間引きながら読み出し、ブロックマッチングを行って、２画素精度の第一段階の動きベクトル検出を行う。検出された第一段階の動きベクトル情報は、ベクトル相対位置算出部１０３及び第二段階動き探索部１０２ｂに送られる。
【００２１】
ベクトル相対位置算出部１０３は、第一段階動き探索部１０２ａからの第一段階の動きベクトル情報を保存し、連続して処理を行う複数のブロックの動きベクトル間の相対位置を算出する。算出された動きベクトルの相対位置は、読み出し制御部１０４に送られる。読み出し制御部１０４は、ベクトル相対位置算出部１０３からの動きベクトルの相対位置により、第二段階動き探索用の参照画像の読み出し方法を変更する。読み出し方法の詳細は、後で説明する。
【００２２】
第二段階動き探索部１０２ｂは、第一段階動き探索部１０２ａが出力する第１段階の動きベクトルの指し示す位置を基準として、さらに１／２画素精度の動きベクトル検出を行う。具体的には、第二段階動き探索部１０２ｂは、フレームバッファ１０１の符号化対象画像と参照フレームバッファ１１４の参照画像を読み出し、参照画像には縦横ともに６ＴＡＰフィルタをかけ、１／２画素位置の参照画像を作成する。そして、符号化対象画像と参照画像との間でブロックマッチングをとり、第二段階の動きベクトル検出を行う。検出された第二段階の動きベクトル情報は予測部１０５に送られる。
【００２３】
予測部１０５は、フレームバッファ１０１の符号化対象画像と、第二段階の動きベクトルによって示される位置の参照画像（予測画像）との間で差分をとり、その差分画像を直交変換部１０６に出力する。直交変換部１０６は、予測部１０５からの差分画像に離散コサイン変換を行い、得られた変換係数を量子化部１０７に出力する。
【００２４】
量子化制御部１０８は、エントロピー符号化部１０９から受け取った発生符号量を用いて、目標符号量になるように量子化ステップサイズを決定し、量子化部１０７に出力する。量子化部１０７は、直交変換部１０６からの変換係数を量子化制御部１０８が出力する量子化ステップサイズに従い量子化する。量子化された変換係数は、符号化ストリーム作成のためにエントロピー符号化部１０９に供給され、局所復号化画像の作成のために逆量子化部１１０に供給される。
【００２５】
エントロピー符号化部１０９は、量子化された変換係数にジグザグスキャン又はオルタネートスキャン等を行い、エントロピー符号化する。エントロピー符号化部１０９は、エントロピー符号化により生成される符号データに、動きベクトル、量子化ステップサイズ及びマクロブロック分割情報などの符号化方式情報を可変長符号化したものを付加して、符号化ストリームを生成する。エントロピー符号化部１０９はまた、マクロブロックごとの発生符号量を算出し、量子化制御部１０８に出力する。
【００２６】
逆量子化部１１０は、量子化された変換係数を逆量子化し、ローカルデコード用の変換係数を生成し、逆直交変換部１１１に供給する。逆直交変換部１１１は、逆量子化部１１０の出力を逆離散コサイン変換して差分画像を生成又は復元し、動き補償部１１２に供給する。
【００２７】
動き補償部１１２は、動きベクトル位置の参照画像を参照フレームバッファ１１４から読み出し、ローカルデコード用の参照画像を生成する。生成された参照画像を逆直交変換部１１１からの差分画像に加算することにより、画像データを復元する。復元された画像データはデブロッキングフィルタ１１３に出力される。
【００２８】
デブロッキングフィルタ１１３は、動き補償部１１２からの画像データにデブロッキングフィルタをかける。デブロッキングフィルタ後の画像が、局所復号化（ローカルデコード）画像として参照フレームバッファ１１４に格納される。
【００２９】
ベクトル相対位置算出部１０３及び読み出し制御部１０４による第二段階動き探索用の参照画像の読み出し方法を説明する。ここでは、隣接する２つのマクロブロックの動きベクトル検出を行う場合を説明する。通常、Ｈ．２６４符号化方式ではマクロブロック単位でラスタ順に処理が行われる。左右に隣接するマクロブロックは連続して順番に処理が行われることになる。探索方式として第一段階動き探索では２画素精度の探索を行い、第二段階動き探索では、第一段階動き探索のベクトル位置を中心とした、縦方向に±０．５画素範囲、横方向に±１．５画素範囲での１／２画素精度の探索を行う。マクロブロックのサイズは１６×１６画素とする。
【００３０】
図２は、第一段階動き探索の例を示す。まず、第一のマクロブロック２０１の２画素精度の第一段階動き探索を行う。次に第二のマクロブロック２０２の２画素精度の第一段階動き探索を行う。ここで、第一のマクロブロック２０１の動きベクトルと第二のマクロブロック２０２の動きベクトルの相対位置を算出する。図２に示すように、第一のマクロブロック２０１の動きベクトルを（ｘ１，ｙ１）、第二のマクロブロック２０２の動きベクトルを（ｘ２，ｙ２）とする。第一のマクロブロック２０１の動きベクトルに対する第二のマクロブロック２０２の動きベクトルの相対位置を（ｒｘ，ｒｙ）とすると、（ｒｘ，ｒｙ）は、下記式（１）、（２）で与えられる。すなわち、
ｒｘ＝ｘ２−ｘ１＋１６        （１）
ｒｙ＝ｙ２−ｙ１              （２）
【００３１】
図３は、第二段階動き探索用の参照画像の範囲を示す。読み出し制御部１０４は、第一のマクロブロック２０１の参照画像３０１と第二のマクロブロック２０２の参照画像３０２を参照フレームバッファ１１４から第二段階動き探索部１０２ｂに読み出す。参照画像３０１および参照画像３０２はそれぞれ、動きベクトル（ｘ１，ｙ１）、（ｘ２，ｙ２）を中心として縦方向に±０．５画素範囲、横方向に±１．５画素範囲の探索を行うのに必要な参照画像の範囲である。半画素位置の探索用に参照画像には縦横ともに６ＴＡＰフィルタをかけるので、必要となる参照画像はマクロブロックサイズの１６×１６画素に縦±３画素、横±４画素を加えた２４×２２画素となる。
【００３２】
動きベクトルの相対位置（ｒｘ，ｒｙ）がある所定の範囲内にある場合、参照画像３０１と参照画像３０２を１回のバスアクセスでまとめて取得する。図４は参照画像の取得範囲を示す。具体的には、参照画像３０１および参照画像３０２を含む参照画像４０１を、１回のバスアクセスでまとめて第二段階動き探索部１０２ｂに読み出す。
【００３３】
動きベクトルの相対位置（ｒｘ，ｒｙ）がどの範囲にある場合に２マクロブロック分の参照画像をまとめて取得するのかは、第二段階動き探索の探索範囲及びメインメモリへのバーストアクセス長によるバス効率に依存する。
【００３４】
ＳＤＲＡＭへのバーストリードアクセスによるバス効率を説明する。ＳＤＲＡＭへのバーストリードアクセス時のリードサイクルを図５に示す。最初に動作開始を宣言するためのアクティブコマンド（ａｃｔ）とロウアドレス（ｒｏｗ）をラッチする。次にリードコマンド（ｒｅｄ）とカラムアドレス（ｃｏｌ）をラッチする。その後、数クロック遅れてデータがリードされる。データはバースト長のサイズ分だけ連続してリードされる。
【００３５】
このように、ＳＤＲＡＭへのバーストリードアクセスにおいては、アクセスの初めにコマンドアクセス分のオーバーヘッドがあり、その後にバースト長のデータサイズのアクセスが行われる。この結果、バースト長が長いほど、単位データあたりの転送効率が良くなる。このバースト長による転送効率を考慮すると、２マクロブロックの参照画像範囲が近い場合、２回のバスアクセスで別々に参照画像を取得するよりも、１回のバスアクセスで参照画像をまとめて取得した方がバスの占有量を少なくできる。
【００３６】
例として、バースト長が２５５以下のときのバス効率を５０％、バースト長が２５６以上のときのバス効率を７０％であるとする。バス効率とは、バスを占有しているサイクル数に占める実際のデータ転送量の割合を示す。ＳＤＲＡＭへのアクセスは４画素単位で行うものとし、４画素アクセスで１バーストとする。
【００３７】
第二段階動き探索用のマクロブロック１個分の参照画像は２４×２２画素である。この場合のバースト長は、
２４×２２／４＝１３２（バースト）      （３）
となる。バス効率が５０％であるので、実際のバスの占有量は、
１３２×（１００／５０）＝２６４（サイクル）      （４）
となる。２マクロブロック分のバス占有量は、式（４）の結果を２倍にして、５２８サイクルとなる。
【００３８】
２マクロブロック分の参照画像を１回のバスアクセスでまとめて取得する条件を考える。第一段階動き探索の動きベクトルの相対位置（ｒｘ，ｒｙ）により、データ転送量が変動する。このデータ転送量がある量より少ない場合、２マクロブロックの参照画像を２回のバスアクセスで別々に取得するよりも１回のバスアクセスでまとめて取得した方が、バス占有量が小さくなる。
【００３９】
上記の数値例では、データ転送量が２５６よりも小さい場合に、２マクロブロック分を別々に転送するときよりも転送量そのものが小さくなるので、実際のバス占有量も小さくなる。それを踏まえて、データ転送量が２５６以上の場合について考える。
【００４０】
データ転送量が２５６以上の場合、バースト長が２５６以上なのでバス効率は７０％となる。このとき、２マクロブロック分を別々に転送するよりもバス占有量が小さくなるデータ転送量ｄａｔａ＿ｓｉｚｅは、
ｄａｔａ＿ｓｉｚｅ×（１００／７０）＜５２８    （５）
となる。
【００４１】
式（５）より、ｄａｔａ＿ｓｉｚｅ＜３９６．６となる。このようなデータ転送量になる動きベクトルの相対位置（ｒｘ，ｒｙ）のときに、参照画像を２マクロブロック分まとめて取得すると、バス効率まで考慮した実際のバス占有量を小さくすることができる。
【００４２】
例えば、動きベクトルの相対位置（ｒｘ，ｒｙ）が（−１６〜１６、−４〜４）の場合に、２マクロブロック分の参照画像をまとめて取得するものとする。この範囲での最大のデータ転送量は（ｒｘ，ｒｙ）＝（１６、４）のケースで４４×２６画素となる。このときのバースト長は２８６バーストであり、バス効率は７０％となる。バス占有量は、
２８６×（１００／７０）＝４０９（サイクル）    （６）
となる。２マクロブロックの参照画像を別々に取得する場合のバス占有量は５２８サイクルであり、これと比較して、バス占有量を小さくできることがわかる。
【００４３】
図６は、以上の動作のフローチャートを示す。第一段階動き探索部１０２ａが、第一のマクロブロック２０１と第二のマクロブロック２０２の第一段階動き探索を行う（Ｓ６１）。ベクトル相対位置算出部１０３が、動き探索の結果から第一のマクロブロック２０１の動きベクトルと第二のマクロブロック２０２の動きベクトルの相対位置（ｒｘ，ｒｙ）を算出する（Ｓ６２）。
【００４４】
読み出し制御部１０４は、動きベクトルの相対位置（ｒｘ，ｒｙ）が第二段階動き探索用の参照画像取得時にバス占有量を小さくできるような、ある所定の範囲内にあるかどうかを判定する（Ｓ６３）。動きベクトルの相対位置（ｒｘ，ｒｙ）が所定の範囲内にある場合、読み出し制御部１０４は、第二段階動き探索に必要な参照画像の２マクロブロック分を１回のバスアクセスでまとめて参照フレームバッファ１１４から読み出す（Ｓ６４）。動きベクトルの相対位置（ｒｘ，ｒｙ）がある所定の範囲内にない場合、読み出し制御部１０４は、第二段階動き探索に必要な参照画像をマクロブロックごとに２回のバスアクセスで別々に参照フレームバッファ１１４から読み出す（Ｓ６５）。
【００４５】
読み出された参照画像は、第二段階動き探索部１０２ｂに供給される。第二段階動き探索部１０２ｂは、第一のマクロブロック２０１と第二のマクロブロック２０２の第二段階動き探索を行い、動きベクトル検出動作を完了する（Ｓ６６）。
【００４６】
このような動作により、本実施例では、バス効率を考慮したバス占有量、すなわちデータバスに対するアクセス量を小さくすることができる。すなわち、第二段階動き探索に必要となる参照画像を１回のアクセスで２マクロブロック分まとめて取得することにより、バースト長を長くし、バス効率を上げることができる。そして、バス効率の向上により、データバスへのアクセス量を低減することができる。
【００４７】
隣接する２つのマクロブロックの場合を例に説明したが、本発明はこのような状況に限らず、連続して処理を行う２つ以上のマクロブロックに対して適用可能である。
【実施例２】
【００４８】
第一段階動き探索時に２マクロブロック分の参照画像を１回のバスアクセスでまとめて取得することによりバス占有量を小さくできる探索範囲を、それ以外の探索範囲よりも選択されやすくした変更実施例を説明する。図１に示す実施例に対する変更部分を詳細に説明する。
【００４９】
図７は、本実施例での動きベクトル検出の例を示す。実施例１の場合と同様、２段階動き探索方式を用いて、隣接する２つのマクロブロックの動きベクトル検出を行う場合を示す。
【００５０】
第一のマクロブロック２０１の第一段階動き探索を行う。その結果、第一のマクロブロック２０１の第一段階の動きベクトル７０１が検出される。第二のマクロブロック２０２の探索範囲７０２のうち、第二段階動き探索用の参照画像を２マクロブロック分まとめて取得することによりバス占有量を小さくできる探索範囲７０３を決定する。実施例１で述べたように、この探索範囲７０３は、第二段階動き探索の探索範囲、及びメインメモリへのバーストアクセス長によるバス効率に依存する。
【００５１】
動きベクトル位置の決定方法を簡単に説明する。動きベクトル位置の決定では、一般的に、符号化対象画像と参照画像を減算して得られる差分データをベースにしたコスト関数が用いられる。コスト関数（ここではＣｏｓｔとする）には、色々な関数が考えられるが、代表的には、
Ｃｏｓｔ＝ＳＡＴＤ＋Ｑｐ×Ｍｖｃｏｓｔ    （７）
が知られている。ＳＡＴＤは、符号化対象画像と参照画像を減算して得られた差分データに対してアダマール変換をかけたものに対し差分絶対値和演算を行った結果である。Ｑｐは量子化処理に使用される量子化値である。Ｍｖｃｏｓｔは動きベクトルの長さに応じた動きベクトルの符号量相当のコスト値である。このコスト関数Ｃｏｓｔを用い、最もコスト値の小さい位置を動きベクトル位置として決定する。
【００５２】
本実施例では、第二のマクロブロック２０２の第一段階動き探索において、探索範囲７０２のうち探索範囲７０３の部分だけコスト関数を変更することにより、探索範囲７０３を選ばれやすくする。例えば、探索範囲７０３には、下記式
Ｃｏｓｔ＝ＳＡＴＤ＋Ｑｐ×Ｍｖｃｏｓｔ−α      （８）
を用いる。他方、探索範囲７０２の探索範囲７０３以外の部分には式（７）を用いる。ここでαは、ある固定の値である。式（７）と式（８）を比較すると、式（８）はαだけコスト値が小さくなるので、探索範囲７０３の方が選択されやすくなる。
【００５３】
また、探索範囲７０３に、下記式
Ｃｏｓｔ＝（ＳＡＴＤ＋Ｑｐ×Ｍｖｃｏｓｔ）×β      （９）
に示すようなコスト関数を用いることも考えられる。ここで、βは０＜β＜１を満たす固定値である。この場合でも、式（７）と式（９）を比較すると、式（９）では、１より小さい値であるβを乗算している分だけコスト値が小さくなるので、探索範囲７０３が選択されやすくなる。
【００５４】
探索範囲７０３の方が選択されやすくなるコスト関数の例として式（８）及び式（９）を示したが、コスト関数はこれらに限定されない。探索範囲７０３が選択されやすくなるコスト計算式一般が利用可能である。
【００５５】
このように探索範囲７０３を選択されやすくすることにより、バス占有量を小さくできる動きベクトル位置が検出される確率が高くなり、その分データバスへのアクセス量を小さくすることができる。
【００５６】
図８は、以上の動作のフローチャートを示す。第一段階動き探索部１０２ａが、第一のマクロブロック２０１の第一段階動き探索を行う（Ｓ８１）。第一のマクロブロック２０１の第一段階動き探索の動きベクトルから、第二のマクロブロック２０２の探索範囲のうち、バス占有量を小さくできる探索範囲を決定する（Ｓ８２）。第二のマクロブロック２０２の第一段階動き探索を開始する（Ｓ８３）。
【００５７】
第二のマクロブロック２０２の第一段階動き探索を、探索位置をずらしながら順次行い、現在の動き探索位置がバス占有量を小さくできる探索範囲かどうかを判定する（Ｓ８４）。現在の動き探索位置がバス占有量を小さくできる探索範囲である場合（Ｓ８４）、動きベクトル決定に使用するコスト関数を、通常のコスト関数より小さいコスト値になりやすくなるものに変更する（Ｓ８５）。現在の動き探索位置がバス占有量を小さくできる探索範囲ではない場合（Ｓ８４）、動きベクトル決定に通常のコスト関数を使用する（Ｓ８６）。全ての探索範囲が終了するまで（Ｓ８７）、ステップＳ８４〜Ｓ８６を繰り返す（Ｓ８７）。
【００５８】
第二のマクロブロック２０２の第一段階動き探索が終了したら（Ｓ８７）、実施例１と同様の方法を用いて、第一のマクロブロック２０１と第二のマクロブロック２０２の第二段階動き探索を行い（Ｓ８８）、動きベクトル検出動作を完了する。
【００５９】
第一段階動き探索において、第二段階動き探索用に２マクロブロック分の参照画像をまとめて取得できる探索範囲を選択されやすくするので、通常どおりに探索する場合と比較し、データバスへのアクセス量を小さくできる。
【図１】
2013026756.tif 000003
【図２】
2013026756.tif 000004
【図３】
2013026756.tif 000005
【図４】
2013026756.tif 000006
【図５】
2013026756.tif 000007
【図６】
2013026756.tif 000008
【図７】
2013026756.tif 000009
【図８】
2013026756.tif 000010