(57)【要約】【課題】効率的な動き補償画素生成のために、マルチフレームメモリからの画素データの読み出し画素数を削減し、転送処理及び小数精度画素生成動き補償処理の削減を実現することができる動き補償装置を提供する。【解決手段】マルチフレームメモリ１０４から局所参照メモリ１０２へ転送領域を転送するフレームメモリ転送制御部１０１と、動き補償部１０５とを備え、フレームメモリ転送制御部１０１は、転送領域の画素数が所定の閾値を超えない場合には、転送領域の参照画素データを一括で転送し、転送領域の画素数が所定の閾値を超える場合には、転送領域の参照画素データをブロック毎に転送し、動き補償部１０５は、局所参照メモリ１０２に記憶されている参照画素データに対して、転送領域毎に小数精度画素データ生成のためのフィルタ演算を行う。【選択図】図１
2010088122.tif 000002
【特許請求の範囲】
【請求項１】
動画像を構成するピクチャ間で動き補償をブロック単位で行う動き補償装置であって、
参照ピクチャを記憶するピクチャメモリから独立して存在し、前記ピクチャメモリから転送される、前記参照ピクチャのうちの一部の領域の参照画素データを記憶する局所メモリと、
前記ピクチャメモリに記憶されている前記参照ピクチャの中から、複数の前記ブロックの動き補償で必要とされる参照領域を含む転送領域を、前記一部の領域として特定する領域特定手段と、
前記ピクチャメモリに記憶されている前記参照ピクチャのうち、前記領域特定手段によって特定された前記転送領域の参照画素データを前記ピクチャメモリから前記局所メモリへ転送する参照画素転送手段と、
前記局所メモリに記憶されている前記転送領域に含まれる前記参照領域の参照画素データを用いて、複数の前記ブロックの動き補償を行う動き補償手段と
を備え、
前記参照画素転送手段は、前記転送領域の画素数が所定の閾値を超えない場合には、前記転送領域の参照画素データを一括で転送し、前記転送領域の画素数が所定の閾値を超える場合には、前記転送領域の参照画素データを前記ブロック毎に転送し、
前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、前記転送領域毎に小数精度画素データ生成のためのフィルタ演算を行う
ことを特徴とする動き補償装置。
【請求項２】
前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、いずれかの前記ブロックで小数画素精度の動き補償が必要とされるフィルタ必要領域に関してのみフィルタ演算を行う
ことを特徴とする請求項１記載の動き補償装置。
【請求項３】
前記局所メモリは、前記転送領域の参照画素データが一括で転送された場合には、前記参照画素データを一括した状態で記憶する
ことを特徴とする請求項１記載の動き補償装置。
【請求項４】
前記所定の閾値は、前記ブロックの一つにおいて動き補償で必要とされる参照領域に、前記ピクチャメモリと前記局所メモリとの間の転送単位の制限によって動き補償では必要ないが同時に転送される不要領域を加えた領域の画素数を、一括で処理する候補となっている複数の前記ブロックについて総和した値である
ことを特徴とする請求項１記載の動き補償装置。
【請求項５】
前記所定の閾値は、前記局所メモリに格納できる画素数である
ことを特徴とする請求項１記載の動き補償装置。
【請求項６】
前記領域特定手段は、前記転送領域を少なくとも１つの矩形領域として特定する
ことを特徴とする請求項１記載の動き補償装置。
【請求項７】
前記局所メモリは、前記ピクチャメモリから転送された前記転送領域に含まれる前記参照領域の参照画素データのみを記憶する
ことを特徴とする請求項１記載の動き補償装置。
【請求項８】
前記参照画素転送手段は、前記転送領域の参照画素データを、前記ピクチャメモリと前記局所メモリとの間の転送単位で転送する
ことを特徴とする請求項１記載の動き補償装置。
【請求項９】
動画像を構成するピクチャ間で動き補償をブロック単位で行う動き補償方法であって、
ピクチャメモリに記憶されている参照ピクチャの中から、複数の前記ブロックの動き補償で必要とされる参照領域を含む転送領域を、前記一部の領域として特定する領域特定ステップと、
前記ピクチャメモリに記憶されている前記参照ピクチャのうち、前記領域特定ステップによって特定された前記転送領域の参照画素データを前記ピクチャメモリから局所メモリへ転送する参照画素転送ステップと、
前記局所メモリに記憶されている前記転送領域に含まれる前記参照領域の参照画素データを用いて、複数の前記ブロックの動き補償を行う動き補償ステップと
を含み、
前記参照画素転送ステップでは、前記転送領域の画素数が所定の閾値を超えない場合には、前記転送領域の参照画素データを一括で転送し、前記転送領域の画素数が所定の閾値を超える場合には、前記転送領域の参照画素データを前記ブロック毎に転送し、
前記動き補償ステップでは、前記局所メモリに記憶されている前記参照画素データに対して、前記転送領域毎に小数精度画素データ生成のためのフィルタ演算を行う
ことを特徴とする動き補償方法。
【請求項１０】
動画像を構成するピクチャ間で動き補償をブロック単位で行うための集積回路であって、
参照ピクチャを記憶するピクチャメモリから独立して存在し、前記ピクチャメモリから転送される、前記参照ピクチャのうちの一部の領域の参照画素データを記憶する局所メモリと、
前記ピクチャメモリに記憶されている前記参照ピクチャの中から、複数の前記ブロックの動き補償で必要とされる参照領域を含む転送領域を、前記一部の領域として特定する領域特定手段と、
前記ピクチャメモリに記憶されている前記参照ピクチャのうち、前記領域特定手段によって特定された前記転送領域の参照画素データを前記ピクチャメモリから前記局所メモリへ転送する参照画素転送手段と、
前記局所メモリに記憶されている前記転送領域に含まれる前記参照領域の参照画素データを用いて、複数の前記ブロックの動き補償を行う動き補償手段と
を備え、
前記参照画素転送手段は、前記転送領域の画素数が所定の閾値を超えない場合には、前記転送領域の参照画素データを一括で転送し、前記転送領域の画素数が所定の閾値を超える場合には、前記転送領域の参照画素データを前記ブロック毎に転送し、
前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、前記転送領域毎に小数精度画素データ生成のためのフィルタ演算を行う
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピクチャ間で動き補償予測を行う動き補償装置に関する。
【背景技術】
【０００２】
近年、マルチメディアアプリケーションの発展に伴い、画像・音声・テキストなど、あらゆるメディアの情報を統一的に扱うことが一般的になってきた。この時、全てのメディアをディジタル化することにより、統一的にメディアを扱うことが可能になる。しかしながら、ディジタル化された画像は膨大なデータ量を持つため、蓄積・伝送のためには、画像の情報圧縮技術が不可欠である。
【０００３】
その一方で、圧縮した画像データを相互運用するためには、圧縮技術の標準化も重要である。画像圧縮技術の標準規格としては、例えば、ＩＴＵ−Ｔ（国際電気通信連合  電気通信標準化部門）のＨ．２６１、Ｈ．２６３や、ＩＳＯ／ＩＥＣ（国際標準化機構  国際電気標準会議）のＭＰＥＧ(Moving Picture Experts Group)−１、ＭＰＥＧ−２、ＭＰＥＧ−４など、また、ＩＴＵ−ＴとＭＰＥＧの合同であるＪＶＴ(Joint Video Team)により現在標準化が進められているＨ．２６４（ＭＰＥＧ−４ＡＶＣ）がある。
【０００４】
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで、時間的な冗長性の削減を目的とする画面間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および予測画像の作成を行い、得られた予測画像と符号化対象ピクチャとの差分値に対して符号化を行う。ここで、ピクチャとは１枚の画面を表す用語であり、プログレッシブ画像ではフレームを意味し、インタレース画像ではフレームもしくはフィールドを意味する。ここで、インタレース画像とは、１つのフレームが時刻の異なる２つのフィールドから構成される画像である。インタレース画像の符号化や復号化処理においては、１つのフレームをフレームのまま処理したり、２つのフィールドとして処理したり、フレーム内のブロック毎にフレーム構造またはフィールド構造として処理したりすることができる。
【０００５】
参照画像を持たず画面内予測符号化を行うものをＩピクチャと呼ぶ。また、１枚の参照画像のみを参照し画面間予測符号化を行うものをＰピクチャと呼ぶ。また、同時に２枚の参照画像を参照して画面間予測符号化を行うことができるものをＢピクチャと呼ぶ。Ｂピクチャは表示時間が前方もしくは後方から任意の組み合わせとして２枚のピクチャを参照することが可能である。参照画像（参照ピクチャ）は符号化の基本単位であるマクロブロックごとに指定することができるが、符号化を行ったビットストリーム中に先に記述される方の参照ピクチャを第１参照ピクチャ、後に記述される方を第２参照ピクチャとして区別する。ただし、これらのピクチャを符号化する場合の条件として、参照するピクチャが既に符号化されている必要がある。
【０００６】
Ｐピクチャ又はＢピクチャの符号化には、動き補償画面間予測符号化が用いられている。動き補償画面間予測符号化とは、画面間予測符号化に動き補償を適用した符号化方式である。動き補償とは、単純に参照フレームの画素値から予測するのではなく、ピクチャ内の各部の動き量（以下、これを「動きベクトル」と呼ぶ。）を検出し、当該動き量を考慮した予測を行うことにより予測精度を向上すると共に、データ量を減らす方式である。例えば、符号化対象ピクチャの動きベクトルを検出し、その動きベクトルの分だけシフトした予測値と符号化対象ピクチャとの予測残差を符号化することによりデータ量を減している。この方式の場合には、復号化の際に動きベクトルの情報が必要になるため、動きベクトルも符号化されて記録又は伝送される。
【０００７】
動きベクトルはマクロブロック単位で検出されており、具体的には、符号化対象ピクチャ側のマクロブロックを固定しておき、参照ピクチャ側のマクロブロックを探索範囲内で移動させ、基準ブロックと最も似通った参照ブロックの位置を見つけることにより、動きベクトルが検出される。
【０００８】
図１７は従来の画面間予測符号化装置の構成を示すブロック図である。
この画面間予測符号化装置は、動き検出部４０１、マルチフレームメモリ４０２、減算部４０３、減算部４０４、動き補償部４０５、符号化部４０６、加算部４０７、動きベクトルメモリ４０８、および動きベクトル予測部４０９を備えている。
【０００９】
動き検出部４０１は、マルチフレームメモリ４０２から出力される動き検出参照画素ＭＥｐｅｌと画面信号Ｖｉｎとを比較し、動きベクトルＭＶと参照ピクチャ番号ＲｅｆＮｏを出力する。参照ピクチャ番号ＲｅｆＮｏは、複数の参照画像の中から選択された、対象画像で参照する参照画像を特定する識別信号である。動きベクトルＭＶは、動きベクトルメモリ４０８に一時的に記憶されたのち近傍動きベクトルＰｒｅｖＭＶとして動きベクトル予測部４０９へ出力される。動きベクトル予測部４０９は、入力された近傍動きベクトルＰｒｅｖＭＶを参照して予測動きベクトルＰｒｅｄＭＶを予測する。減算部４０４は動きベクトルＭＶから予測動きベクトルＰｒｅｄＭＶを減算し、その差を動きベクトル予測差分ＤｉｆＭＶとして出力する。
【００１０】
一方、マルチフレームメモリ４０２は、参照ピクチャ番号ＲｅｆＮｏおよび動きベクトルＭＶで示される画素を動き補償参照画素ＭＣｐｅｌ１として出力する。動き補償部４０５は、小数画素精度の参照画素を生成し、参照画面画素ＭＣｐｅｌ２として出力する。減算部４０３は、画面信号Ｖｉｎから参照画面画素ＭＣｐｅｌ２を減算し、画面予測誤差ＤｉｆＰｅｌを出力する。
【００１１】
符号化部４０６は、画面予測誤差ＤｉｆＰｅｌと動きベクトル予測差分ＤｉｆＭＶと参照ピクチャ番号ＲｅｆＮｏを可変長符号化し、符号化信号Ｓｔｒを出力する。なお、符号化時に画面予測誤差の復号化結果である復号画面予測誤差ＲｅｃＤｉｆＰｅｌも同時に出力する。復号画面予測誤差ＲｅｃＤｉｆＰｅｌは、画面予測誤差ＤｉｆＰｅｌに符号化誤差が重畳されたものであり、画面間予測復号化装置で符号化信号Ｓｔｒを復号化して得られる画面間予測誤差と一致する。
【００１２】
加算部４０７は、参照画面画素ＭＣｐｅｌ２に復号画面予測誤差ＲｅｃＤｉｆＰｅｌを加算し、復号画面ＲｅｃＰｅｌとしてマルチフレームメモリ４０２に記憶される。但し、マルチフレームメモリ４０２の容量を有効に利用するため、マルチフレームメモリ４０２に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ４０２に記憶する必要が無い画面の復号画面ＲｅｃＰｅｌはマルチフレームメモリ４０２に記憶されない。
【００１３】
なお、符号化の処理は１６×１６画素のマクロブロックと呼ばれる単位で行われ、Ｈ．２６４では、動き補償のブロックは、４×４、４×８、８×４、８×８、８×１６、１６×８、１６×１６の７通りの動き補償のブロック（以下、簡単のため小ブロックと記載することもある。）サイズからマクロブロック単位で適切なブロックサイズを選択して符号化に使用する。ここで、マクロブロックは、まずマクロブロックパーティション（８×８のサイズが４つ、８×１６のサイズが２つ、１６×８のサイズが２つ、もしくは１６×１６）のサイズの分割、また、８×８のマクロブロックパーティションに関してはさらに、サブマクロブロックパーティション（４×４のサイズが４つ、４×８のサイズが２つ、８×４のサイズが２つ、もしくは８×８）のサイズに２段階で小ブロックに分割することができる。
【００１４】
図１８は従来の画面間予測復号化装置の構成を示すブロック図である。なお、同図において、図１７に示す画面間予測符号化装置と同様の部分については同じ符号を付し、その説明を省略する。
【００１５】
図１８に示す従来の画面間予測復号化装置は、図１７に示す従来の画面間予測符号化装置で符号化された符号化信号Ｓｔｒを復号化して復号画面信号Ｖｏｕｔを出力する装置であり、マルチフレームメモリ４０２、動き補償部４０５、加算部４０７、加算部５０１、動きベクトルメモリ４０８、動きベクトル予測部４０９、および復号化部５０２を備えている。
【００１６】
復号化部５０２は、符号化信号Ｓｔｒを復号化し、復号画面予測誤差ＲｅｃＤｉｆＰｅｌ、動きベクトル予測差分ＤｉｆＭＶ、および参照ピクチャ番号ＲｅｆＮｏを出力する。加算部５０１は、動きベクトル予測部４０９から出力される予測動きベクトルＰｒｅｄＭＶと動きベクトル予測差分ＤｉｆＭＶを加算し、動きベクトルＭＶを復号する。
【００１７】
マルチフレームメモリ４０２は、参照ピクチャ番号ＲｅｆＮｏおよび動きベクトルＭＶで示される画素を動き補償参照画素ＭＣｐｅｌ１として出力する。動き補償部４０５は、小数画素精度の参照画素を生成し、参照画面画素ＭＣｐｅｌ２として出力する。加算部４０７は、参照画面画素ＭＣｐｅｌ２に復号画面予測誤差ＲｅｃＤｉｆＰｅｌを加算し、復号画面ＲｅｃＰｅｌとしてマルチフレームメモリ４０２へ記憶する。但し、マルチフレームメモリ４０２の容量を有効に利用するため、マルチフレームメモリ４０２に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ４０２に記憶する必要が無い画面の復号画面ＲｅｃＰｅｌはマルチフレームメモリ４０２に記憶されない。以上のようにして、復号画面信号Ｖｏｕｔ、すなわち復号画面ＲｅｃＰｅｌを符号化信号Ｓｔｒから正しく復号化することができる。
【００１８】
ところで、Ｈ．２６４規格では１／４画素までの単位で動き補償を行うことが許可されている（ＭＰＥＧ−４  Ｓｉｍｐｌｅ  Ｐｒｏｆｉｌｅでは１／２画素まで)。この際、Ｈ．２６４規格ではその線形フィルタ画素補間の方法として６タップフィルタが採用されており、１／２精度画素を周辺の６画素から求めることが決められている。この６タップフィルタによる画素補間の方法について、図１９を用いて説明する。
【００１９】
図１９はＨ．２６４における輝度成分の画素補間方法を説明するための概略図である。
画素Ｆ００、Ｆ０１、Ｆ０２、Ｆ０３、Ｆ０４、Ｆ０５、Ｆ１０、Ｆ１１、Ｆ１２、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ２０、Ｆ２１、Ｆ２２、Ｆ２３、Ｆ２４、Ｆ２５、Ｆ３０、Ｆ３１、Ｆ３２、Ｆ３３、Ｆ３４、Ｆ３５、Ｆ４０、Ｆ４１、Ｆ４２、Ｆ４３、Ｆ４４、Ｆ４５、Ｆ５０、Ｆ５１、Ｆ５２、Ｆ５３、Ｆ５４、及びＦ５５は整数精度画素位置の画素であり、斜線をつけた四角形で表している。ここで、画素Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ、Ｋ、Ｌ、Ｍ、Ｎ、Ｐ、Ｑ、Ｒ、Ｓ、Ｔ、及びＵは、それぞれの位置及びその画素値を表している。
【００２０】
また、小数精度画素位置の画素に関しては、白抜きの四角で表している。画素ａａ、ｂｂ、ｂ、ｓ、ｇｇ、及びｈｈは水平方向に、ｃｃ、ｄｄ、ｈ、ｍ、ｅｅ及びｆｆは垂直方向に６タップフィルタを行った中間計算画素値及びその位置を示している。
【００２１】
画素ａ、ｃ、ｄ、ｅ、ｆ、ｇ、ｉ、ｊ、ｋ、ｎ、ｐ、ｑ及びｒは各小数精度画素位置における２回目の６タップフィルタと線形補間を行った画素値及びその位置を表している。
【００２２】
従って、整数精度画素の画素Ｇ、Ｈ、Ｍ及びＮで囲まれる小数精度画素位置の値を求めるには、周囲６×６の画素が必要である。
【００２３】
また、動き補償を行うブロック単位では、図２０に示すように動き補償を行うブロックの画素が位置する領域９０１に対して、Ｈ．２６４の輝度成分では６タップフィルタを用いるため、対象のブロックを上に２画素、下に３画素、左に２画素及び右に３画素分の水平垂直両方向に計５画素分広くした領域９０２の画素が必要となる。従って、４×４、４×８、８×４、８×８、８×１６、１６×８及び１６×１６の各ブロックサイズに対して小数画素精度の動き補償を行う場合は、それぞれ９×９、９×１３、１３×９、１３×１３、１３×２１、２１×１３、２１×２１の画素領域が必要となる。
【００２４】
一方、色差成分に関しては、小数精度画素の周囲４つの整数精度画素から線形補間で生成する。色差成分の場合の動き補償ブロックサイズは、２×２、２×４、４×２、４×４、４×８、８×４及び８×８であり、それぞれの参照画素領域は、３×３、３×５、５×３、５×４、５×９、９×５及び９×９である（例えば、非特許文献１参照）。
【００２５】
ところで、上述のように復号化処理にはマルチフレームメモリ４０２からの参照画素の読出しが必要であり、さらに入力される符号化データのピクチャ順序と復元されたフレーム順序とは異なることがあるので、復号画面ＲｅｃＰｅｌは表示タイミングまでマルチフレームメモリ４０２に一旦保持させる必要がある。これらの参照画素の読出し、復号画面ＲｅｃＰｅｌの格納及びその表示などのアクセスによりマルチフレームメモリ４０２へのバス占有率は一般的に極めて高くなっている。
【００２６】
そのため、復号化処理に必要なメモリ容量を低減するために、マルチフレームメモリを他の機能、例えばＯＳＤ(On Screen Display)等に用いるメモリとして利用しようとして
も、バス占有率が高いことから兼用することが困難であると言う問題がある。
【００２７】
このような課題に対しては、従来の画像復号化方法として、マルチフレームメモリ４０２へのアクセス回数を低減する手法が提案されている。例えば、特許文献１には、処理対象ブロックが必要とする動き補償の参照画素領域と一つ前のブロックが必要とする参照画素領域で、共通領域を判定し共通領域以外の画素のみを更新することによりマルチフレームメモリ４０２へのアクセス回数を低減することが記載されている。
【先行技術文献】
【特許文献】
【００２８】
【特許文献１】特開平１０−２１５４５７号公報
【非特許文献】
【００２９】
【非特許文献１】"Ｄｒａｆｔ  ＩＴＵ−Ｔ  Ｒｅｃｏｍｅｎｄａｔｉｏｎ  ａｎｄ  Ｆｉｎａｌ  Ｓｔａｎｄａｒｄ  ｏｆ  Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ"，Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）  ｏｆ  ＩＳＯ／ＩＥＣ  ＭＰＥＧ  ＆  ＩＴＵ−Ｔ  ＶＣＥＧ，ＪＶＴ−Ｉ０５０，Ｓｅｐ．２００３  ｐｐ．１２２−１２５
【発明の概要】
【発明が解決しようとする課題】
【００３０】
しかしながら、圧縮効率の向上のために動き補償予測の方式が増加しているＨ．２６４規格などでは、動き補償を行うブロック単位が輝度成分では４×４、４×８、８×４、色差成分では２×２、２×４、４×２など、極めて小さい範囲で実施することが可能となっているため共通部分が殆ど無い場合も多く生じる。
【００３１】
図２１は、復号対象のブロックと直前に復号するブロックが参照する画素領域の一例を示す概略図である。図２１（ａ）は８×８のブロック、また図２１（ｂ）は２×２のブロックの状態を表している。
【００３２】
例えば図２１（ａ）に示すように８×８のブロックサイズで復号対象のブロックが参照する領域９１１と、直前に復号するブロックが参照する領域９１２との重なり部分が領域９１３であり、この領域９１３が、動き補償部４０５の有する局所参照メモリの中の非更新領域となる。ここで、参照画面上における領域９１１と領域９１２との絶対座標の差が（４，３）であって、ｂｉ−ｌｉｎｅａｒによる線形補間などによりフィルタタップ数が２タップである場合、水平方向の重なりが５画素、垂直方向の重なりが６画素となるため、非更新領域の画素数は３０（＝５×６）画素となる。
【００３３】
一方、図２１（ｂ）においては、２×２のブロックサイズで復号対象のブロックが参照する領域９１４と、直前に復号するブロックが参照する領域９１５との、参照画面上における絶対座標の差が図２１（ａ）の場合と同じく（４，３）であり、フィルタタップ数が２である場合、非更新領域として重なる画素は一つも存在しない状態となる。
【００３４】
また、マルチフレームメモリ４０２のアクセスバス幅によっては、うまく非共通部分だけを転送することが出来ず、共通部分に関しても結局転送してしまいアクセス回数を低減することができないなどの可能性もある。図２２は、復号画面９２１の一部を示した一例であり、水平方向に４画素で１アクセス単位、つまり１画素は１バイトで構成されるので、４バイトバス幅のメモリで構成されている場合を示した図である。
【００３５】
例えば、図２２に示すように２×２のブロックサイズで復号対象のブロックの直前に復号するブロックが参照する斜線の領域で表した領域９２３が、４バイト境界の先頭から配置されており、太線で囲んだ復号対象のブロックが参照する領域９２２との絶対座標の差が（１，０）であるとすれば、９画素中６画素が共通領域となり、本来は点の領域として示した領域９２４の３画素のみを更新すればよいことになる。しかしながら、４バイトバス幅のメモリ構成となっていることを想定しているため、領域９２２の転送には領域９２３も含めた４バイト×３行のメモリ転送を行う必要があり、結局全画素を再送することになる。
【００３６】
さらに、輝度の８×８、８×１６、１６×８及び１６×１６、色差の４×４、４×８、８×４及び８×８のブロック（以下、「マクロブロックパーティションタイプ」と略す。）サイズでは、たとえ同じマクロブロック内の隣り合う小ブロックであったとしても、別の参照画像を用いた動き補償が可能となっているため、もともと共通部分が存在しないことも予想される。ただし、輝度の４×４、４×８、８×４及び８×８のブロック、色差の２×２、２×４、４×２及び４×４のブロック（以下、「サブマクロブロックパーティションタイプ」と略す。）サイズでは、同じマクロブロックパーティション内のものであれば同じ参照画像を用いる。
【００３７】
つまり、圧縮効率の向上のために動き補償予測で選択できる参照画像枚数やブロック形状の種類を増やしており、また高次タップのフィルタ補間を用いるＨ．２６４規格などにおいては、従来技術にある共通領域の判定による参照メモリの更新領域制限では、マルチフレームメモリ４０２へのアクセス回数の低減ができない可能性が大きい。
【００３８】
本発明は、このような課題に鑑みてなされたものであり、効率的な動き補償画素生成のために、マルチフレームメモリからの画素データの読み出し画素数を削減し、転送処理及び小数精度画素生成動き補償処理の削減を実現することができる動き補償装置を提供することを目的とする。
【課題を解決するための手段】
【００３９】
上記目的を達成するため、本発明に係る動き補償装置は、動画像を構成するピクチャ間で動き補償をブロック単位で行う動き補償装置であって、参照ピクチャを記憶するピクチャメモリから独立して存在し、前記ピクチャメモリから転送される、前記参照ピクチャのうちの一部の領域の参照画素データを記憶する局所メモリと、前記ピクチャメモリに記憶されている前記参照ピクチャの中から、複数の前記ブロックの動き補償で必要とされる参照領域を含む転送領域を、前記一部の領域として特定する領域特定手段と、前記ピクチャメモリに記憶されている前記参照ピクチャのうち、前記領域特定手段によって特定された前記転送領域の参照画素データを前記ピクチャメモリから前記局所メモリへ転送する参照画素転送手段と、前記局所メモリに記憶されている前記転送領域に含まれる前記参照領域の参照画素データを用いて、複数の前記ブロックの動き補償を行う動き補償手段とを備え、前記参照画素転送手段は、前記転送領域の画素数が所定の閾値を超えない場合には、前記転送領域の参照画素データを一括で転送し、前記転送領域の画素数が所定の閾値を超える場合には、前記転送領域の参照画素データを前記ブロック毎に転送し、前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、前記転送領域毎に小数精度画素データ生成のためのフィルタ演算を行うことを特徴とする。
【００４０】
また、上記目的を達成するため、本発明に係る動き補償装置は、動画像を構成するピクチャ間で動き補償をブロック単位で行う動き補償装置であって、参照ピクチャを記憶するピクチャメモリと、前記ピクチャメモリから転送される前記参照ピクチャの参照画素データを記憶する局所メモリと、複数の前記ブロックの動き補償で必要とされる参照領域を含む転送領域を特定する領域特定手段と、前記領域特定手段によって特定された前記転送領域の参照画素データを前記ピクチャメモリから前記局所メモリへ転送する参照画素転送手段と、前記局所メモリに記憶されている前記参照画素データを用いて動き補償を行う動き補償手段とを備えることを特徴とする。
【００４１】
これによって、ピクチャ間の動き補償予測を行う場合に、ピクチャメモリからブロックで必要となる参照画素データを複数分まとめて転送した方が効率的な場合には、参照画素データを一括転送することによって複数のブロック間で重複している参照領域をブロック処理ごとに重複して転送する必要がなくなるため、ピクチャメモリへのアクセス数を減少させることによってバス占有率の削減と、処理サイクルの削減が実現できる。
【００４２】
また、前記領域特定手段は、前記転送領域を少なくとも１つの矩形領域として特定してもよい。これによって、転送領域のアドレス生成を比較的容易にし、領域特定手段および参照画素転送手段等の実装面積を削減することが可能となる。
【００４３】
また、前記局所メモリは、前記ピクチャメモリから転送された前記転送領域に含まれる前記参照領域の参照画素データのみを記憶してもよい。これによって、不要な画素データを局所メモリに格納しないようにすることで、その実装容量を削減し、同時に無駄な書き込み処理動作の削減を図ることが可能となる。
【００４４】
また、前記参照画素転送手段は、前記転送領域の中で前記参照領域を含む、前記ピクチャメモリと前記局所メモリとの間の転送単位のみを実転送してもよい。これによって、ピクチャメモリへの不要なメモリアクセスも削減するため、バス占有率の削減と処理サイクルの削減が実現できる。
【００４５】
また、前記動き補償手段は、さらに、前記局所メモリに記憶されている前記参照画素データを用いて小数精度画素データ生成のためのフィルタ演算を行ってもよい。ここで、前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、前記転送領域毎に一括で前記フィルタ演算を行ってもよい。これによって、小数精度画素データの生成をブロック毎に行うことで同じ画素位置に対して重複して実施していたフィルタ処理を、一括でフィルタ処理を行う場合には一回の処理で済ますことができるため、処理量の削減を行うことが可能となる。
【００４６】
また、前記動き補償手段は、前記局所メモリに記憶されている前記参照画素データに対して、いずれかの前記ブロックで小数画素精度の動き補償が必要とされるフィルタ必要領域に関してのみフィルタ演算を行ってもよい。これによって、小数精度画素データの生成において、重複して実施していたフィルタ処理を一回の処理で済ますだけでなく、不要なフィルタ箇所を判断し積極的に処理を行わないことにより、さらなる処理量の削減を行うことが可能となる。
【００４７】
また、前記動き補償装置は、さらに、前記ピクチャメモリと前記局所メモリとの間に小数精度画素データ生成のためのフィルタ演算の一部を行う第１フィルタ演算手段を備え、前記動き補償手段は、前記第１フィルタ演算手段でフィルタ演算を行わない残りのフィルタ演算を行ってもよい。これによって、局所メモリへの読み込み時にフィルタ処理の一部または小数画素精度の動き補償位置によっては全部を同時実施することができるため、処理サイクルの削減を図ることが可能となる。
【００４８】
さらに、本発明は、このような動き補償装置として実現することができるだけでなく、このような動き補償装置が含む特徴的な手段をステップとして含む動き補償方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
【発明の効果】
【００４９】
以上の説明から明らかなように、本発明に係る動き補償装置によれば、ピクチャ間の動き補償予測を行う場合に、ピクチャメモリからブロックで必要となる参照画素データを複数分まとめて転送した方が効率的な場合には、参照画素データを一括転送することによって複数のブロック間で重複している参照領域をブロック処理ごとに重複して転送する必要がなくなるため、ピクチャメモリへのアクセス数を減少させることによってバス占有率の削減と、処理サイクルの削減が実現できる。
【図面の簡単な説明】
【００５０】
【図１】図１は、本発明の実施の形態１に係る動き補償装置が用いられる画面間予測復号化装置の構成を示すブロック図である。
【図２】図２は、フレームメモリ転送制御部の制御の流れを示すフローチャートである。
【図３】図３（ａ）は、参照画素領域の画素を示す図であり、図３（ｂ）は、水平及び垂直フィルタが不要な場合の参照画素領域の画素を示す図であり、図３（ｃ）は、水平フィルタが必要な場合の参照画素領域の画素を示す図であり、図３（ｄ）は、垂直フィルタが必要な場合の参照画素領域の画素を示す図であり、図３（ｅ）は、水平及び垂直フィルタの双方が必要な場合の参照画素領域の画素を示す図である。
【図４】図４は、参照画素領域の画素の座標を求める処理の流れを示すフローチャートである。
【図５】図５は、参照画面と参照領域を示す図である。
【図６】図６（ａ）は、転送する複数小ブロックの任意形状の和領域を示す図であり、図６（ｂ）は、転送する複数小ブロックの単矩形形状の和領域を示す図である。
【図７】図７は、転送する複数小ブロックの任意形状の和領域を導出する処理の流れを示すフローチャートである。
【図８】図８は、転送する複数小ブロックの単矩形形状の和領域を導出する処理の流れを示すフローチャートである。
【図９】図９（ａ）は、フィルタ処理の参照不要部分を考慮して転送する複数小ブロックの任意形状の和領域を示す図であり、図９（ｂ）は、フィルタ処理の参照不要部分を考慮して転送する複数小ブロックの単矩形形状の和領域を示す図である。
【図１０】図１０（ａ）は、４バイト単位転送による制限を考慮して転送する複数小ブロックの任意形状の和領域を示す図であり、図１０（ｂ）は、４バイト単位転送による制限を考慮して転送する複数小ブロックの単矩形形状の和領域を示す図である。
【図１１】図１１（ａ）は、転送した参照画素の有効画素領域を示す図であり、図１１（ｂ）は、（ｘＬ０，ｙＴ０）を左上画素とする参照画素を示す図であり、図１１（ｃ）は、（ｘＬ１，ｙＴ１）を左上画素とする参照画素を示す図であり、図１１（ｄ）は、（ｘＬ２，ｙＴ２）を左上画素とする参照画素を示す図であり、図１１（ｅ）は、（ｘＬ３，ｙＴ３）を左上画素とする参照画素を示す図である。
【図１２】図１２は、本発明の実施の形態２に係る動き補償装置が用いられる画面間予測復号化装置の概略構成を示すブロック図である。
【図１３】図１３は、小数画素精度動き補償画素生成の処理の動作の流れを示すフローチャートである。
【図１４】図１４（ａ）は、転送した参照画素の有効画素領域を示す図であり、図１４（ｂ）は、垂直方向フィルタの有効画素領域を示す図であり、図１４（ｃ）は、水平方向フィルタの有効画素領域を示す図である。
【図１５】図１５は、垂直方向フィルタ及び水平方向フィルタの有効画素領域を導出するためのフローチャートである。
【図１６】図１６は、本発明の実施の形態３に係る動き補償装置が用いられる画面間予測復号化装置の動作の流れを示すフローチャートである。
【図１７】図１７は、従来の画面間予測符号化装置の構成を示すブロック図である。
【図１８】図１８は、従来の画面間予測復号化装置の構成を示すブロック図である。
【図１９】図１９は、６タップフィルタをかける整数精度画素の並びを示す図である。
【図２０】図２０は、６タップフィルタをかける参照画素領域を示す図である。
【図２１】図２１（ａ）は、対象ブロックの参照画素領域と一つ前のブロックの参照画素領域との重なりを示す図であり、図２１（ｂ）は、対象ブロックの参照画素領域と一つ前のブロックの参照画素領域との重なりが無い状態を示す図である。
【図２２】図２２は、対象ブロックの参照画素領域と一つ前のブロックの参照画素領域が転送単位境界内に両方とも含まれる状態を示す図である。
【発明を実施するための形態】
【００５１】
以下、本発明の各実施の形態について、それぞれ図面を参照しながら説明する。
【００５２】
（実施の形態１）
図１は、本発明の実施の形態１に係る動き補償装置が用いられる画面間予測復号化装置の構成を示すブロック図である。なお、図１８に示す従来の画面間予測復号化装置と同様の部分については同じ符号を付し、その説明を省略する。
【００５３】
本発明の実施の形態１による画面間予測復号化装置は、図１に示すようにフレームメモリ転送制御部１０１、局所参照メモリ１０２、局所メモリ転送制御部１０３、マルチフレームメモリ１０４、動き補償部１０５、加算部４０７、加算部５０１、動きベクトルメモリ４０８、動きベクトル予測部４０９、および復号化部５０２を備えている。
【００５４】
マルチフレームメモリ（ピクチャメモリ）１０４は、加算部４０７より出力された復号画面ＲｅｃＰｅｌを記憶する。動き補償部１０５は、小数画素精度の参照画素を生成し、参照画面画素ＭＣｐｅｌ２として出力する。
【００５５】
局所参照メモリ１０２は、マルチフレームメモリ１０４と動き補償部１０５との間に位置するメモリであり、動き補償部１０５のみが参照し、マルチフレームメモリ１０４から動き補償参照画素ＭＣｐｅｌ１が入力される。局所参照メモリ１０２からは画素ＭＣｐｅｌ３が出力され、動き補償部１０５に入力される。
【００５６】
フレームメモリ転送制御部１０１は、参照ピクチャ番号ＲｅｆＮｏおよび動きベクトルＭＶに基づいて動き補償に必要な参照画素を特定し、マルチフレームメモリ１０４の画素読み出しを制御する制御回路（領域特定手段および参照画素転送手段を構成）であり、制御信号ＦｒｍＣｔｒＳｎｄによりマルチフレームメモリ１０４の送信制御を行い、制御信号ＦｒｍＣｔｒＲｃｖにより局所参照メモリ１０２の受信制御を行い、さらに制御信号ＦｒｍＣｔｒＬｃｌによって局所参照メモリ１０２と動き補償部１０５の動作制御を行う局所メモリ転送制御部１０３の制御を行う。
【００５７】
局所メモリ転送制御部１０３は、入力された制御信号ＦｒｍＣｔｒＬｃｌにより、マルチフレームメモリ１０４から局所参照メモリ１０２にどのような状態で画素転送されたかを判断し、制御信号ＬｃｌＣｔｒＳｎｄにより局所参照メモリ１０２の送信制御を行い、制御信号ＬｃｌＣｔｒＲｃｖにより受信制御を行う。
【００５８】
以下、本実施の形態１の画面間予測復号化装置について詳細な動作を説明する。マルチフレームメモリ１０４から動き補償部１０５への画素転送及び動き補償予測画像生成以外の動作は、従来構成における復号化処理と同じである。従来構成における復号化の動作と異なるのは、動き補償を行う小ブロック単位の大きさや位置など状態によって、整数精度画素データの転送領域を一括もしくは個別に切り替えてマルチフレームメモリ１０４から動き補償参照画素ＭＣｐｅｌ１を読み出し、局所参照メモリ１０２に蓄える動作になる部分である。さらに、局所参照メモリ１０２に蓄えられた整数画素精度の動き補償参照画素ＭＣｐｅｌ１に対して、対象の小ブロックに必要な小数画素精度の動き補償位置や、一括もしくは個別で送られる転送領域単位などの状態によって、小数画素精度動き補償のためのフィルタの実施を一括もしくは個別に切り替えて動き補償参照画素ＭＣｐｅｌ３として読み出し、動き補償部１０５でフィルタ処理を行い参照画面画素ＭＣｐｅｌ２として出力する動作である。
【００５９】
ここでは、Ｈ．２６４規格を一例として処理制御動作を説明する。Ｈ．２６４では、１６画素×１６画素のマクロブロックよりも小さなブロックで動き補償を行うことが可能となっている。つまり、輝度成分では上記した背景技術で説明したように、１６×１６のマクロブロックサイズの他に、１６×８、８×１６、８×８、８×４、４×８及び４×４の小ブロック単位での動き補償予測が可能である。一方、色差成分では、小ブロックサイズの８×８、８×４、４×８、４×２、２×４、及び２×２の動き補償予測が可能となっているが、全体的に輝度成分の縦と横が半分となったマクロブロック及び小ブロックであるため、以後輝度成分を中心として説明する。
【００６０】
また、同じ８×８のマクロブロックパーティションに属する複数のサブマクロブロックパーティションは必ず同じ参照ピクチャを参照画像として用いるが、同じマクロブロックであったとしても、マクロブロックパーティション毎に異なる参照ピクチャを参照画像として用いることができるため、ひとまずここでは小ブロックは、８×４、４×８及び４×４のサブマクロブロックパーティションであるものと想定して説明を続ける。
【００６１】
まず、図２から図１１を用いて、フレームメモリ転送制御部１０１の詳細な動作説明を行う。図２は、フレームメモリ転送制御部１０１が行う概略制御の流れを示すフローチャートである。
【００６２】
ステップＳ２００は、マクロブロックパーティション毎に行う動き補償参照画素ＭＣｐｅｌ１の転送処理の開始を示している。
【００６３】
まず、フレームメモリ転送制御部１０１は、まとめて転送する候補となる小ブロックの領域和を計算する（ステップＳ２０１）。
【００６４】
フレームメモリ転送制御部１０１は、ステップＳ２０１で求めた領域和が、一括転送を行った方が有利か小ブロック毎に転送を行った方が有利かを条件分けするための閾値を超えているかどうかを判定する（ステップＳ２０２）。
【００６５】
ステップＳ２０２の判定で閾値を超えている場合（ステップＳ２０２でＹｅｓ）は、小ブロック毎に転送する（ステップＳ２０３）。
【００６６】
ステップＳ２０２の判定で閾値を超えていない場合（ステップＳ２０２でＮｏ）は、参照領域を一括で転送する（ステップＳ２０４）。
【００６７】
ステップＳ２０５は、動き補償参照画素ＭＣｐｅｌ１の転送処理の終了を示している。
以上の手順で小ブロックの転送を一括で行うか小ブロック毎に行うか判断して、転送を制御する。以下、ステップＳ２０１の小ブロックにおける和領域の導出方法の詳細とステップＳ２０２の閾値の導出方法を説明するが、まずは準備として小ブロックの参照画素の領域計算について詳細を述べ、続いて和領域の導出方法と閾値の導出方法をそれぞれ説明する。
【００６８】
図３と図４を用いて小ブロックの参照画素の領域計算について詳細な動作説明を行う。
図３は、参照画像上の小ブロック領域及び小ブロックの周辺画素を含んだ参照画像領域を示す模式図である。図３（ａ）は参照画像として必要な領域を表しており、図３（ｂ）から（ｅ）を代表する模式図である。図３（ｂ）は、小数画素精度の動き補償を必要としない場合に参照される領域を表しており、小ブロックの大きさと同じ領域サイズとなっている。図３（ｃ）は、水平方向のみの小数画素精度の動き補償を必要とする場合の参照領域を示しており、図３（ｄ）は、垂直方向のみの小数画素精度の動き補償を必要とする場合の参照領域を示している。また、図３（ｅ）は、水平垂直の両方向の小数画素精度動き補償を必要とする場合の参照領域を示している。
【００６９】
図３の各図において丸印の一つ一つが参照画素を示しているが、中でも画素Ｐ３００、Ｐ３０１、Ｐ３０２、Ｐ３０３、Ｐ３１０、Ｐ３１１、Ｐ３１２、Ｐ３１３、Ｐ３２０、Ｐ３２２、Ｐ３３０、Ｐ３３２、Ｐ３４０及びＰ３４２の太線の丸印は参照領域の角に位置する画素を示している。
【００７０】
画素Ｐ３００、Ｐ３０１、Ｐ３０２及びＰ３０３は、図３（ａ）で示した参照画素領域の四隅であり、それぞれの座標は、（ｘＬｎ，ｙＴｎ）、（ｘＲｎ，ｙＴｎ）、（ｘＲｎ，ｙＢｎ）、（ｘＬｎ，ｙＢｎ）であるとする。
【００７１】
また、画素Ｐ３１０、Ｐ３１１、Ｐ３１２及びＰ３１３は、図３（ｂ）で示した参照画素領域の四隅であり、左上の画素の位置を（ｘＯｎ，ｙＯｎ）とし、小ブロックの水平画素数をｂＷｎ−１、垂直画素数をｂＨｎ−１とした場合のそれぞれの画素位置が、それぞれ（ｘＯｎ，ｙＯｎ）、（ｘＯｎ＋ｂＷｎ−１，ｙＯｎ）、（ｘＯｎ，ｙＯｎ＋ｂＨｎ−１）、（ｘＯｎ＋ｂＷｎ−１，ｙＯｎ＋ｂＨｎ−１）となっていることを示している。
【００７２】
さらに、画素Ｐ３２０とＰ３２２は、図３（ｃ）で示した参照画素領域の左上と右下の対角の二隅を、画素Ｐ３３０とＰ３３２は、図３（ｄ）で示した参照画素領域の左上と右下の対角の二隅を、画素Ｐ３４０とＰ３４２は、図３（ｅ）で示した参照画素領域の左上と右下の対角の二隅をそれぞれ表している。
【００７３】
図４は、各小ブロックが参照画像として必要とする画素領域を計算するフローチャートを示している。図４のフローチャートに従って処理を進めていくと、図３（ａ）で示した参照画素の四隅の位置が求まり、図３（ｂ）、図３（ｃ）、図３（ｄ）もしくは図３（ｅ）のいずれかの領域に定まる。ここで、小数精度画素生成のためのフィルタタップ数をＴとし、マルチフレームメモリ１０４からの転送においてバス幅等によって制限される転送単位をＡｌｉｇｎとする。
【００７４】
ステップＳ４００は、小ブロックにおける参照画素の領域計算の開始を示している。
まず、対象とする小ブロックの水平方向の小数画素精度動き補償が必要かどうかを判定する（ステップＳ４０１）。
【００７５】
ステップＳ４０１の判定で水平方向の小数画素精度動き補償が不要な場合（ステップＳ４０１でＮｏ）は、ｘＬｎ＝ｘＯｎ、ｘＲｎ＝ｘＯｎ＋ｂＷｎ−１とする（ステップＳ４０２）。ここで、水平方向の小数画素精度動き補償が不要となるのは、動きベクトルＭＶで示される水平方向の動き補償位置が整数精度画素位置となる場合である。
【００７６】
ステップＳ４０１の判定で水平方向の小数画素精度動き補償が必要な場合（ステップＳ４０１でＹｅｓ）は、ｘＬｎ＝ｘＯｎ−Ｔ／２＋１、ｘＲｎ＝ｘＯｎ＋ｂＷｎ−１＋Ｔ／２とする（ステップＳ４０３）。
【００７７】
ステップＳ４０２もしくはステップＳ４０３の処理の後、対象とする小ブロックの垂直方向の小数画素精度動き補償が必要かどうかを判定する（ステップＳ４０４）。
【００７８】
ステップＳ４０４の判定で垂直方向の小数画素精度動き補償が不要な場合（ステップＳ４０４でＮｏ）は、ｙＴｎ＝ｙＯｎ、ｙＢｎ＝ｙＯｎ＋ｂＨｎ−１とする（ステップＳ４０５）。ここで、垂直方向の小数画素精度動き補償が不要となるのは、動きベクトルＭＶで示される垂直方向の動き補償位置が整数精度画素位置となる場合である。
【００７９】
ステップＳ４０４の判定で垂直方向の小数画素精度動き補償が必要な場合（ステップＳ４０４でＹｅｓ）は、ｙＴｎ＝ｙＴｎ−Ｔ／２＋１、ｙＢｎ＝ｙＯｎ＋ｂＨｎ−１＋Ｔ／２とする（ステップＳ４０６）。
【００８０】
ステップＳ４０５もしくはステップＳ４０６の処理の後、さらにマルチフレームメモリ１０４からの転送で転送画素数単位の制限がある場合は、ｘＬｎ＝（ｘＬｎ／Ａｌｉｇｎ）＊Ａｌｉｇｎ、ｘＲｎ＝（ｘＲｎ／Ａｌｉｇｎ）＊（Ａｌｉｇｎ＋１）−１とする（ステップＳ４０７）。
【００８１】
ステップＳ４０８は、小ブロックにおける参照画素の領域計算の終了を示している。
図４のフローチャートで示した処理を行うことにより、参照画素の転送で必要な画素領域が求まる。また、マルチフレームメモリ１０４からの転送で転送画素数単位の制限が無い場合は、ステップＳ４０７の処理は不要である。ここで、参照画素の転送で必要な画素領域は、ステップＳ４０２とステップＳ４０５を通る処理を行った場合、図３（ｂ）の領域となる。同様に、ステップＳ４０３とステップＳ４０５の場合は図３（ｃ）、ステップＳ４０２とステップＳ４０６の場合は図３（ｄ）、ステップＳ４０３とステップＳ４０６の場合は図３（ｅ）の各領域となり、参照画素領域が決定される。
【００８２】
ただし、処理の簡略化のために、図４に示したフローチャートに従って算出するのではなく、不要な参照画素を含む可能性はあるが、単に最大の参照領域である図３（ｅ）の領域を用いることも可能である。
【００８３】
次に、図５から図１１を用いて複数の小ブロック参照画素が集まった和の領域計算について詳細な動作説明を行う。
【００８４】
図５は、参照画面上に４つの小ブロックの参照領域が存在する場合の一例を示す模式図である。
【００８５】
図５において、画素Ｐ５００、Ｐ５０１、Ｐ５０２及びＰ５０３は参照画面ＲｅｆＰｉｃの四隅を示しており、画面の横と縦の画素数をｍａｘＷｉｄｔｈとｍａｘＨｅｉｇｈｔとした時に、それぞれ、（０，０）、（ｍａｘＷｉｄｈｔ−１，０）、（ｍａｘＷｉｄｈｔ−１，ｍａｘＨｅｉｇｈｔ−１）及び（０，ｍａｘＨｅｉｇｈｔ−１）の画素位置であることを示している。また、画素Ｐ５１０、Ｐ５１１、Ｐ５１２及びＰ５１３は４つの小ブロックに対する参照画素領域の左上の画素位置を示しており、それぞれ、（ｘＬ０，ｙＬ０）、（ｘＬ１，ｙＬ１）、（ｘＬ２，ｙＬ２）及び（ｘＬ３，ｙＬ３）の座標であるものとする。
【００８６】
また、ここでは、複雑になるため図示しないが、以降それぞれの参照画素領域でフィルタに必要な周辺画素を伴わない小ブロックのサイズと同じ領域の左上画素位置をそれぞれ、（ｘＯ０，ｙＯ０）、（ｘＯ１，ｙＯ１）、（ｘＯ２，ｙＯ２）及び（ｘＯ３，ｙＯ３）とした時、（ｘＯ０，ｙＯ０）から（ｘＯ１，ｙＯ１）、（ｘＯ２，ｙＯ２）及び（ｘＯ３，ｙＯ３）までの差分位置をここではそれぞれ、（＋２，＋２）、（＋６，−３）及び（＋９，＋３）であるものとする。
【００８７】
図６は、図５で示した左上画素Ｐ５１０、Ｐ５１１、Ｐ５１２及びＰ５１３を持つ４つの小ブロックの参照画素からなる和領域を示す模式図であり、図６（ａ）は任意の形状の画素領域を転送する場合の和領域、図６（ｂ）は参照領域を全て含む矩形部分を和領域としていることを示したものである。ここで、太枠線Ｂ６ａとＢ６ｂが和領域を表す境界線となっており、この太枠線Ｂ６ａとＢ６ｂの内側の画素をマルチフレームメモリ１０４から局所参照メモリ１０２に動き補償画素ＭＣｐｅｌ１として転送することになる。図６（ｂ）において、画素Ｐ６００及びＰ６０２の白丸印はそれぞれ、矩形領域における左上と右下の画素位置を示しており、それぞれ（ｘＭｉｎ，ｙＭｉｎ）、（ｘＭａｘ，ｙＭａｘ）の座標となっているとする。また、図６の例では各小ブロックが４×４のサブマクロブロックパーティションの形状となっており、ここでは各小ブロックの参照画素領域は最大の領域となる図３（ｅ）の領域を用いており、マルチフレームメモリ１０４からの転送で転送画素数単位の制限が無い場合であるものとする。また、図６（ａ）に示す任意の形状の画素領域を転送する場合の和領域は、複数の矩形領域の組み合わせとして表すことも可能である。
【００８８】
和領域の導出方法は複数存在するが、ここでは、図６（ａ）と図６（ｂ）の領域を求めるマーキングによる方法と単矩形座標算出による方法の２つの手法を例として挙げ説明を続ける。
【００８９】
まず、転送領域のマーキングによる和領域の導出について説明する。
図７は、転送領域のマーキングによる和領域導出のフローチャートを示している。この手法を用いると任意の形状の和領域を求めることが可能である。ステップＳ７００は、マーキングによる和領域の導出処理の開始を示している。
【００９０】
まず、転送領域を示す転送マップの各画素位置の初期化を行う（ステップＳ７０１）。
マーキング処理対象を転送候補の小ブロックの一つ目に設定する（ステップＳ７０２）。
【００９１】
処理対象の小ブロックが存在する画素位置を転送マップにフラグを立てる（ステップＳ７０３）。
【００９２】
一括転送を行う候補の小ブロック、すなわち一つのマクロブロックパーティションに含まれる全てのサブマクロブロックパーティションの処理を行ったかどうか判定する（ステップＳ７０４）。
【００９３】
ステップＳ７０４の判定結果で全ての小ブロックに対して処理が出来ていない場合（ステップＳ７０４でＮｏ）は、次の小ブロックを処理対象に設定し（ステップＳ７０５）、再びステップＳ７０３の処理に戻る。
【００９４】
ステップＳ７０４の判定結果で全ての小ブロックに対して処理が出来ている場合（ステップＳ７０４でＹｅｓ）は、最終処理として必要であればマルチフレームメモリからの転送単位の制限に対応するためのアライメント処理を行う（ステップＳ７０６）。なお、ステップＳ７０６は、各小ブロックの参照領域が既に転送単位の制限を考慮した領域になっている場合は不要な処理である。
【００９５】
ステップＳ７０７は、マーキングによる和領域の導出処理の終了を示しており、図７で示したフローチャートに従って処理した結果、図６（ａ）の丸印を含む太枠線Ｂ６ａのマーキング領域ができあがり、転送領域として導出できる。
【００９６】
続いて、単矩形座標算出による和領域の導出について説明する。
図８は単矩形座標算出による和領域導出のフローチャートを示している。この手法を用いると、複数の参照画素の転送領域を一つの矩形領域で包含した和領域を求めることが可能である。ステップＳ８００は、単矩形座標算出による和領域の導出処理の開始を示している。
【００９７】
まず、転送領域を示す対角画素の画素位置の初期化（ｘＭｉｎ＝ｍａｘＷｉｄｔｈ、ｘＭａｘ＝０、ｙＭｉｎ＝ｍａｘＨｅｉｇｈｔ、ｙＭａｘ＝０）を行う（ステップＳ８０１）。ここで、ｍａｘＷｉｄｔｈは、画面サイズの横の最大値であり、ｍａｘＨｅｉｇｈｔは、画面サイズの縦の最大値であるとする。
【００９８】
処理対象の候補の小ブロックを一つ目に設定する（ステップＳ８０２）。
処理対象の小ブロックの左端の水平画素位置が矩形領域の左端の水平画素位置よりも小さい座標となっているかどうか、つまりｘＭｉｎ＞ｘＬｎとなっているかどうかを判定する（ステップＳ８０３）。
【００９９】
ここで、ステップＳ８０３の判定が正しい場合（ステップＳ８０３でＹｅｓ）は、矩形領域の左端の座標に処理対象の左端の座標を代入（ｘＭｉｎ＝ｘＬｎ）する（ステップＳ８０４）。
【０１００】
次に、処理対象の小ブロックの右端の水平画素位置が矩形領域の右端の水平画素位置よりも大きい座標となっているかどうか、つまりｘＭａｘ＜ｘＲｎとなっているかどうかを判定する（ステップＳ８０５）。
【０１０１】
ここで、ステップＳ８０５の判定が正しい場合（ステップＳ８０５でＹｅｓ）は、矩形領域の右端の座標に処理対象の右端の座標を代入（ｘＭａｘ＝ｘＲｎ）する（ステップＳ８０６）。
【０１０２】
次に、処理対象の小ブロックの上端の垂直画素位置が矩形領域の上端の垂直画素位置よりも小さい座標となっているかどうか、つまりｙＭｉｎ＞ｙＴｎとなっているかどうかを判定する（ステップＳ８０７）。
【０１０３】
ここで、ステップＳ８０７の判定が正しい場合（ステップＳ８０７でＹｅｓ）は、矩形領域の上端の座標に処理対象の上端の座標を代入（ｙＭｉｎ＝ｙＴｎ）する（ステップＳ８０８）。
【０１０４】
次に、処理対象の小ブロックの下端の垂直画素位置が矩形領域の下端の垂直画素位置よりも大きい座標となっているかどうか、つまりｙＭａｘ＜ｙＢｎとなっているかどうかを判定する（ステップＳ８０９）。
【０１０５】
ここで、ステップＳ８０９の判定が正しい場合（ステップＳ８０９でＹｅｓ）は、矩形領域の上端の座標に処理対象の上端の座標を代入（ｙＭａｘ＝ｙＢｎ）する（ステップＳ８１０）。
【０１０６】
一括転送を行う候補の小ブロック、すなわち一つのマクロブロックパーティションに含まれる全てのサブマクロブロックパーティションの処理を行ったかどうか判定する（ステップＳ８１１）。
【０１０７】
ステップＳ８１１の判定結果で全ての小ブロックに対して処理が出来ていない場合（ステップＳ８１１でＮｏ）は、次の小ブロックを処理対象に設定し（ステップＳ８１２）、再びステップＳ８０３の処理に戻る。
【０１０８】
ステップＳ８１１の判定結果で全ての小ブロックに対して処理が出来ている場合（ステップＳ８１１でＹｅｓ）は、最終処理として必要であればマルチフレームメモリからの転送単位の制限に対応するためのアライメント処理を行う（ステップＳ８１３）。なお、ステップＳ８１３は、各小ブロックの参照領域が既に転送単位の制限を考慮した領域になっている場合は不要な処理である。
【０１０９】
ステップＳ８１４は、単矩形座標算出による和領域導出処理の終了を示しており、図８で示したフローチャートに従って処理した結果、図６（ｂ）の丸印を含む太枠線Ｂ６ｂの領域を転送領域として導出する。図６（ａ）の例では２２１画素、図６（ｂ）の例では２７０画素が参照領域として導出できる。
【０１１０】
以上、マーキングによる方法と単矩形座標算出による方法の２つの和領域導出手法に関して説明を行った。
【０１１１】
ところで、各小ブロックのフィルタ方向を考慮した場合には、転送領域を削減することができる。図９は、図６からフィルタ方向を考慮し転送領域を削減した結果の状態を表した模式図であり、図９（ａ）はマーキングによる和領域の導出を行った場合、図９（ｂ）は単矩形座標算出による和領域の導出を行った場合を示している。
【０１１２】
図９において点線で囲んだ領域Ｎ９ａ０、Ｎ９ａ１、Ｎ９ａ２、Ｎ９ｂ０、及びＮ９ｂ１は、図６（ａ）及び（ｂ）と比べて転送が削減できる領域を示している。同様に点線で囲んだ領域Ｎ９ｂ２は、本来転送不要ではあるが矩形領域で転送するためダミーデータとして転送することとなる領域である。また、太枠線Ｂ９ａとＢ９ｂは和領域を表す境界線である。以下、転送領域の削減について詳細を説明する。
【０１１３】
図９では、図５において左上画素Ｐ５１２を含む小ブロックの参照領域は垂直方向のフィルタが不要であり、左上画素Ｐ５１３を含む小ブロックの参照領域は水平方向のフィルタが不要であった場合の一例を示している。垂直方向のフィルタが不要な場合は、上２画素行と下３画素行が不要な図３（ｃ）で示す横長の領域が転送領域として必要となる。また、水平方向のフィルタが不要な場合は、左２画素列と右３画素列が不要な図３（ｄ）で示す縦長の領域が転送領域として必要となる。
【０１１４】
従って、図９（ａ）及び図９（ｂ）の領域から、領域Ｎ９ａ０、Ｎ９ａ１、Ｎ９ａ２、Ｎ９ｂ０、及びＮ９ｂ１を除いた領域が転送領域となり、太枠線Ｂ９ａとＢ９ｂの内側の画素を転送する。一例では、領域Ｎ９ａ０、Ｎ９ａ１、及びＮ９ａ２の画素数がそれぞれ１８、２７及び２であり、領域Ｎ９ａ０、Ｎ９ａ１、Ｎ９ａ２、Ｎ９ｂ０、及びＮ９ｂ１も１８、２７及び２であるので、図９（ａ）の例では１７４画素、図９（ｂ）の例では１９５画素が転送領域として導出できる。
【０１１５】
図１０は、図９に対してマルチフレームメモリ１０４からの転送で転送画素数単位の制限がある場合の状態を表した模式図である。図１０（ａ）はマーキングによる和領域の導出を行った場合、図１０（ｂ）は単矩形座標算出による和領域の導出を行った場合を示している。
【０１１６】
点線ａｌ１０ａとａｌ１０ｂは、転送画素数単位の制限がある場合の転送単位の切れ目を表している。この一例では、水平方向の４画素が１転送単位となった場合を表している。
【０１１７】
また、太枠線Ｂ１０ａとＢ１０ｂは和領域を表す境界線である。この時、図１０（ａ）の例では１９６画素、図１０（ｂ）の例では２０８画素が転送領域として導出できる。
【０１１８】
図９（ａ）、図９（ｂ）、図１０（ａ）及び図１０（ｂ）のいずれの場合も、図４、図７及び図８で示したフローチャートで導出することが可能である。
【０１１９】
複数の小ブロック参照画素が集まった和の領域計算についての詳細な動作説明は、以上である。
【０１２０】
次に、フレームメモリ転送制御部１０１で使用する閾値について説明する。
まず、図４で示した小ブロックの参照画像の領域計算により、小ブロック毎の画素数を（ｘＲｎ−ｘＬｎ＋１）×（ｙＢｎ−ｙＴｎ＋１）の計算で算出する。次に小ブロック全ての計算結果の総和を計算し、それを閾値とする。この閾値によって、複数の小ブロック参照画素が集まった和の領域を一括で転送する場合と、それぞれの小ブロックごとに参照領域を転送する場合とでどちらが転送量が少なくて済むかを判定することが可能となる。なお、この閾値はマルチフレームメモリ１０４のアクセスで分割するために発生する例えばバイトのアライメントにおけるペナルティなどの変数を加えても良い。
【０１２１】
また、この他、閾値は実装している局所参照メモリ１０２そのものの値とすることも可能である。例えば局所参照メモリ１０２は、１６×１６のブロックサイズの動き補償に対応するために、（１６＋６−１）×（１６＋６−１）＝４４１画素分を実装していることが考えられるので、この４４１画素などを閾値として用いてもよい。
【０１２２】
次に、マルチフレームメモリ１０４から読み出した動き補償参照画素ＭＣｐｅｌ１の局所参照メモリ１０２への格納について説明する。
【０１２３】
図１１は、図１０（ｂ）に示す画素領域を転送する場合に、局所参照メモリ１０２への格納方法を説明するための模式図である。図１１（ａ）は、参照領域を一括で格納する場合を説明するための模式図である。点線で囲んだ領域Ｂ１１ａは、動き補償予測のために実際に必要となる画素を表しており、図７で示したマーキングによる転送領域計算のフローを用いると同様に決定することが可能である。
【０１２４】
図１１（ｂ）、図１１（ｃ）、図１１（ｄ）及び図１１（ｅ）は、参照領域を小ブロック毎に格納する場合を説明するための模式図である。画素Ｐ１１ｂ０とＰ１１ｂ２、画素Ｐ１１ｃ０とＰ１１ｃ２、画素Ｐ１１ｄ０とＰ１１ｄ２及び画素Ｐ１１ｅ０とＰ１１ｅ２は小ブロックの参照領域の左上と右下の画素位置を示しており、左上の参照画素位置は図５で示した（ｘＬ０，ｙＬ０）、（ｘＬ１，ｙＬ１）、（ｘＬ２，ｙＬ２）及び（ｘＬ３，ｙＬ３）になっている。
【０１２５】
領域Ｂ１１ｂ、Ｂ１１ｃ、Ｂ１１ｄ及びＢ１１ｅは、動き補償予測のために実際に必要となる画素を表しており、領域Ｂ１１ｄｚ及びＢ１１ｅｚは垂直水平両方向の小数画素精度動き補償のフィルタ処理が必要になる場合に必要な画素領域を示している。
【０１２６】
図２で示したフローチャートに従ってマルチフレームメモリ１０４から読み出した動き補償参照画素ＭＣｐｅｌ１は、小ブロック毎の転送の場合は無条件に図１１（ｂ）、図１１（ｃ）、図１１（ｄ）及び図１１（ｅ）に示す状態で局所参照メモリ１０２に格納する。
【０１２７】
また、同様に読み出した動き補償参照画素ＭＣｐｅｌ１が、複数の小ブロックで一括に転送される場合、図１１（ａ）のまとめた状態で格納する方法と、小ブロック毎に個別で転送した場合と同様に図１１（ｂ）、図１１（ｃ）、図１１（ｄ）及び図１１（ｅ）に示す状態に画素を展開して格納する方法がある。
【０１２８】
参照領域を小ブロック毎に展開してメモリに格納する利点は、局所参照メモリ１０２から参照画素ＭＣｐｅｌ３を読み出し、小数精度画素を作り出すためのフィルタ処理の制御が従来と同じように行えばよいということである。一方、一括のまとめた状態で格納する場合には、続くフィルタ操作もさらに一括で処理することによって、さらなる処理削減が可能となる利点がある。この時、いずれにしても動き補償参照画素ＭＣｐｅｌ１を全て格納するのではなく、参照に必要となる画素についてのみ格納するようにすることによって、無駄なメモリアクセスを削減することが可能である。
【０１２９】
以上説明したように、本実施の形態１に係る画面間予測復号化装置によれば、マルチフレームメモリ転送制御部１０１において、小ブロックを一括で転送する場合の和領域を算出し、この和領域の画素数と閾値とを比較した結果によって、一括で転送するか個別の小ブロックとして転送するかを制御する。これによって、マクロブロック単位で見た場合に、転送画素数の最悪値は減少しないが、全体としての平均の転送量を大幅に下げることが可能となる。
【０１３０】
上記例では、６タップフィルタが必要な４×４の小ブロックサイズが４つの転送を想定しているので、４バイトの転送単位制限がある場合、（（ｃｅｉｌ（（４＋６−１）／４）×４）×４）×４＝７６８画素の参照画素転送量が、図１０（ｂ）の状態では１６×１３＝２０８画素の転送量まで削減可能となる。
【０１３１】
また、併せて、マルチフレームメモリ１０４から転送した動き補償参照画素ＭＣｐｅｌ１のデータは必要な画素データのみを局所参照メモリ１０２に格納するので、動き補償の動作処理全体の処理量を削減することが可能となる。
【０１３２】
（実施の形態２）
続いて、本発明の実施の形態２に係る動き補償装置が用いられる画面間予測復号化装置について説明する。
【０１３３】
図１２は本発明の実施の形態２に係る動き補償装置が用いられる画面間予測復号化装置の構成を示すブロック図である。なお、図１に示す画面間予測復号化装置と同様の部分については同じ符号を付し、その説明を省略する。
【０１３４】
本発明の実施の形態２による画面間予測復号化装置は、実施の形態１で示した画面間予測符号化装置の構成に加えて、小数画素生成部２０１を有している。
【０１３５】
小数画素生成部２０１は、マルチフレームメモリ１０４と局所参照メモリ１０２との間に位置する小数画素精度の動き補償画像を生成するフィルタである。小数画素生成部２０１では、マルチフレームメモリ１０４から送られる動き補償参照画素ＭＣｐｅｌ１の並びの方向、すなわち小ブロックにおける垂直方向もしくは水平方向の片方向で画素が連続で送られてくる方向のフィルタ処理を行う。小数画素生成部２０１の動作タイミングは、フレームメモリ転送制御部２０３からＦｒｍＣｔｒＦｌｔ信号により制御される。
【０１３６】
小数画素生成部２０１は、フィルタ処理を行った小数画素精度の動き補償画素及び元の動き補償参照画素ＭＣｐｅｌ１を、画素ＭＣｐｅｌ４として局所参照メモリ１０２へ出力する。また、動き補償部２０２は、小数画素生成部２０１で行った方向のフィルタ処理以外の動き補償画像生成処理を行う。
【０１３７】
以下、本実施の形態２の画面間予測復号化装置に関する詳細な動作として、主に局所メモリ転送制御部１０３の動作について説明する。小数画素生成部２０１、局所参照メモリ１０２、フレームメモリ転送制御部２０３、局所メモリ転送制御部１０３及び動き補償部２０２以外の動作は、本実施の形態１と同じである。本実施の形態２において、動き補償参照画素ＭＣｐｅｌ１は、小ブロックの参照領域を含む転送領域が一括で転送されてきている場合を想定する。
【０１３８】
図１３は、小数画素精度動き補償画素生成の処理の動作の流れを示すフローチャートである。図１３のフローチャートでは、マルチフレームメモリ１０４からの動き補償参照画素ＭＣｐｅｌ１の転送単位が、小ブロック毎かそれとも連結した和領域として転送されているかで処理を切り換えて効率的に小数画素精度動き補償を行う手順を示している。
【０１３９】
ステップＳ１３００は小数画素精度動き補償画素生成の処理の開始を表している。
まず、フレームメモリ転送制御部２０３は、転送領域の中で、実際に参照で必要な画素を判定する（ステップＳ１３０１）。これは、図７に示したマーキングによる和領域の導出処理のフローチャートと同様の方法で行う。
【０１４０】
次に、フレームメモリ転送制御部２０３は、水平及び垂直のフィルタ処理を行う領域の導出を水平方向と垂直方向のそれぞれについて行う（ステップＳ１３０２）。ここでは、それぞれ結果を水平フィルタマップ及び垂直フィルタマップと呼ぶことにする。
【０１４１】
次に、小数画素生成部２０１は、マルチフレームメモリ１０４から入力された動き補償参照画素ＭＣｐｅｌ１に対して、転送方向の画素の並びに、水平フィルタマップもしくは垂直フィルタマップに従って、いずれかの小ブロックの動き補償画像の生成に必要になる部分についてのみフィルタ処理を実行する（ステップＳ１３０３）。
【０１４２】
小数画素生成部２０１によってフィルタ処理が行われた画素及び動き補償参照画素ＭＣｐｅｌ１は併せて画素ＭＣｐｅｌ４として局所参照メモリ１０２へ出力され、局所参照メモリ１０２に格納される（ステップＳ１３０４）。
【０１４３】
次に、動き補償部２０２は、局所参照メモリ１０２から入力された参照画素ＭＣｐｅｌ３に対して、ステップＳ１３０３で実行したフィルタ方向と垂直となる方向のフィルタ処理を垂直フィルタマップもしくは水平フィルタマップに従って実行し、１／２小数画素精度参照画素生成を行う（ステップＳ１３０５）。
【０１４４】
最後に、動き補償部２０２は、線形補間による１／４小数画素精度参照画素生成を行い、参照画面画素ＭＣｐｅｌ２として出力する（ステップＳ１３０６）。フィルタ処理は、小ブロック毎に必要であれば行う。１／２小数画素精度画素生成を含め、整数画素精度の動き補償しか必要としない場合は、フィルタ処理は行わない。
【０１４５】
ステップＳ１３０７は、小数画素精度動き補償画素生成の処理を表している。小ブロック毎の個別の画素転送がマルチフレームメモリ１０４から行われている場合であっても、図１３のフローチャートに従って小数画素精度動き補償画素生成の処理を行うことが可能である。
【０１４６】
次に、図１４及び図１５を用いて、水平及び垂直のフィルタ処理を行う領域の導出に関して詳細に説明する。図１４は、フィルタを実行する画素に対するマーキング処理を説明するための模式図であり、図１５は、そのマーキング処理のフローチャートを示している。
【０１４７】
図１４において、図１４（ａ）は、図１０（ｂ）と同じ状態を表しており、画素Ｐ１４２０とＰ１４３０はそれぞれ、（ｘＬ２，ｙＴ２）と（ｘＬ３，ｙＴ３）の画素位置であり、それぞれを左上の角画素とする参照領域を縦横の線を付けた丸印の画素と、黒丸の丸印の画素で構成している。
【０１４８】
また、図１４（ｂ）と図１４（ｃ）は、垂直フィルタマップと水平フィルタマップであり、それぞれ太点線枠Ｂ１４ｂと太点線枠Ｂ１４ｃで囲んだ斜線領域がフィルタを実行する領域を表している。
【０１４９】
図１５を用いてフレームメモリ転送制御部２０３が行うフィルタ処理領域のマーキングの手順を説明する。ステップＳ１５００は、マーキング処理の開始を表している。
【０１５０】
まず、水平フィルタマップと垂直フィルタマップを初期化する（ステップＳ１５０１）。例えば全ての画素位置のフラグを０に設定する。
【０１５１】
処理対象を一つ目の小ブロックに設定する（ステップＳ１５０２）。
対象の小ブロックが水平方向のフィルタを必要とするかどうかを判定する（ステップＳ１５０３）。水平方向のフィルタ処理を必要としない場合（ステップＳ１５０３でＮｏ）は、ステップＳ１５０５に移る。
【０１５２】
一方、ステップＳ１５０３において、水平方向のフィルタ処理を必要とする場合（ステップＳ１５０３でＹｅｓ）は、水平フィルタマップにおいて対象の小ブロックが参照する画素位置にフラグを立てる（ステップＳ１５０４）。例えば、図１４（ｃ）に示したように「Ｈ」のフラグを立てる。
【０１５３】
次に、対象の小ブロックが垂直方向のフィルタを必要とするかどうかを判定する（ステップＳ１５０５）。垂直方向のフィルタ処理を必要としない場合（ステップＳ１５０５でＮｏ）は、ステップＳ１５０７に移る。
【０１５４】
一方、ステップＳ１５０５において、垂直方向のフィルタ処理を必要とする場合（ステップＳ１５０５でＹｅｓ）は、垂直フィルタマップにおいて対象の小ブロックが参照する画素位置にフラグを立てる（ステップＳ１５０６）。例えば、図１４（ｂ）に示したように「Ｖ」のフラグを立てる。
【０１５５】
一括転送を行った全ての小ブロックに対してマーキングの処理を行ったかどうかを判定する（ステップＳ１５０７）。全ての小ブロックに対する処理を行っている場合（ステップＳ１５０７でＹｅｓ）には、水平垂直フィルタのマーキング処理を終了する（ステップＳ１５０９）。
【０１５６】
一方、ステップＳ１５０７において、全ての小ブロックに対する処理が出来ていない場合（ステップＳ１５０７でＮｏ）には、処理対象を次の小ブロックに設定する（ステップＳ１５０８）。
【０１５７】
以上の処理を行うことによって、水平垂直のフィルタを複数の小ブロックでまとめて行う場合の領域を導出することが出来る。図１４で示している例では、画素Ｐ１４２０を左上の画素とする参照領域は、垂直方向のフィルタが不要であると仮定しているので、縦横の線を付けた丸印領域の画素の部分が垂直フィルタの不要部分となり、図１４（ｂ）の太点線枠Ｂ１４ｂで囲んだ斜線領域に垂直フィルタを実行すればよいことが分かる。また、画素Ｐ１４３０を左上の画素とする参照領域は、垂直方向のフィルタが不要であると仮定しているので、黒丸印領域の画素の部分が水平フィルタの不要部分となり、図１４（ｃ）の太点線枠Ｂ１４ｃで囲んだ斜線領域に水平フィルタを実行すればよいことが分かる。
【０１５８】
この実施の形態２に示した構成をとることにより、小数画素精度の動き補償予測のためのフィルタ処理を小ブロック毎に実行するのではなく、複数の小ブロックについてまとめて実行し、しかも必要な箇所にのみ選択的にフィルタ処理を実施するので、処理サイクル及び処理量を削減できる。また、併せて、マルチフレームメモリ１０４からの転送途中で片方向のフィルタを実行するので、さらに処理サイクルが削減できる。
【０１５９】
（実施の形態３）
さらに続いて、本発明の実施の形態３について説明する。
【０１６０】
図１６は、本発明の実施の形態３に係る動き補償装置が用いられる画面間予測復号化装置の動作の流れを示すフローチャートである。本実施の形態３では、Ｈ．２６４規格におけるマクロブロックレベルでの適応に関する一例の処理手順を説明する。
【０１６１】
ブロックサイズが１６×１６、１６×８、８×１６及び８×８のマクロブロックパーティションタイプの場合、パーティション毎に異なるピクチャを参照画面とすることがＨ．２６４規格では可能である。従って同じピクチャを参照するパーティションを判定し、マクロブロックパーティションの参照ピクチャが同じ場合には、サブマクロブロックレベルでの処理と同様にすればよい。つまり、実施の形態１もしくは実施の形態２と同様の処理でマルチフレームメモリ１０４へのアクセスの削減と、動き補償画像の生成処理の削減がマクロブロックレベルでも可能となる。
【０１６２】
以下、図１６を用いてマクロブロックにおける参照画素転送及び動き補償処理の制御フローについて説明する。ステップＳ１６００は、制御の開始を示している。
【０１６３】
まず、マクロブロックを構成する小ブロックが１６×１６、１６×８、８×１６もしくは８×８のパーティションタイプのみで構成されているかどうか判定する（ステップＳ１６０１）。
【０１６４】
ステップＳ１６０１の判定結果において１６×１６、１６×８、８×１６もしくは８×８のパーティションタイプのみで構成されていると判定された場合（ステップＳ１６０１でＹｅｓ）、全ての小ブロックが同じフレームを参照しているかどうか判定する（ステップＳ１６０２）。
【０１６５】
ステップＳ１６０２で判定した結果、全てが同じ参照フレームであった場合（ステップＳ１６０２でＹｅｓ）は、マクロブロックレベルで一括か個別かを判定し参照画素転送及び動き補償画素生成を行う（ステップＳ１６０３）。
【０１６６】
また、ステップＳ１６０２で判定した結果、各小ブロックの参照フレームと異なっている場合（ステップＳ１６０２でＮｏ）は、従来どおりの個別の参照画素転送と個別の動き補償画素生成を行う（ステップＳ１６０４）。
【０１６７】
一方、ステップＳ１６０１の判定結果において１６×１６、１６×８、８×１６もしくは８×８のパーティションタイプのみで構成されていないと判定された場合（ステップＳ１６０１でＮｏ）、マクロブロックパーティション毎に処理を行うため、まず、処理対象を最初のマクロブロックパーティションに設定する（ステップＳ１６０５）。
【０１６８】
設定されたマクロブロックパーティションにおいて、サブマクロブロックパーティションレベルで一括か個別かを判定し参照画素転送及び動き補償画素生成を行う（ステップＳ１６０６）。
【０１６９】
次に、全てのマクロブロックパーティションについて処理を実行したかを判定する（ステップＳ１６０７）。
【０１７０】
ステップＳ１６０７の判定で全てのマクロブロックパーティションについて処理が終了していない時（ステップＳ１６０７でＮｏ）は、処理対象を次のマクロブロックパーティションに設定し、ステップＳ１６０６、ステップＳ１６０７を繰り返す（ステップＳ１６０８）。
【０１７１】
ステップＳ１６０９は、マクロブロックでの参照画素転送及び動き補償画素生成の処理の終了を表している。
【０１７２】
上述した手順に従って処理を行うことで、マルチフレームメモリ１０４へのアクセスの削減と、参照画素転送及び動き補償画素生成のフィルタ処理量の削減を、マクロブロックレベルの処理に対しても適応が可能となる。
【０１７３】
以上、本発明に係る画面間予測復号化装置について各実施の形態に基づき説明したが、本発明は、これらの実施の形態に限定されるものではなく、本発明の範囲内において種々の設計変更などを施すとしてもよい。
【０１７４】
例えば、実施の形態１から実施の形態３に示した装置及び手法は、一括で転送を行う場合の小ブロックは、動き補償単位に分割した全てで必ずしも行う必要はなく、例えば４×４のサブマクロブロックパーティションタイプの場合、４つが集まって一つのマクロブロックパーティションを構成するが、２つだけを一括で転送及びフィルタの処理を行っても良い。
【０１７５】
また、実施の形態１から実施の形態３に示した装置及び手法は、一括で転送を行う場合の小ブロックは、複数のマクロブロックパーティションやマクロブロックから選んだ任意のものでも良い。
【０１７６】
さらに、実施の形態１から実施の形態３に示した装置及び手法は、画像符号化装置及び手法にも応用が可能である。
【０１７７】
また、図１および図１２に示したブロック図の各機能ブロックは典型的には集積回路であるＬＳＩとして実現される。このＬＳＩは１チップ化されても良いし、複数チップ化されても良い。（例えばメモリ以外の機能ブロックが１チップ化されていても良い。）ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１７８】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０１７９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１８０】
また、各機能ブロックのうち、例えばマルチフレームメモリ１０４のような符号化時または復号化時の参照対象となるデータを格納する手段だけ１チップ化せずに別構成としても良い。
【産業上の利用可能性】
【０１８１】
本発明に係る動き補償装置は、例えばコンテンツ配信装置やディジタル放送装置、携帯電話、ＤＶＤ装置、及びパーソナルコンピュータ等で、効率的に動き補償画素を生成したり、動画像を構成する各ピクチャを符号化して符号列を生成したり、また生成された符号化列を復号化したりする等に有用である。
【符号の説明】
【０１８２】
１０１              フレームメモリ転送制御部
１０２              局所参照メモリ
１０３              局所メモリ転送制御部
１０４、４０２      マルチフレームメモリ
１０５、４０５      動き補償部
２０１              小数画素生成部
４０１              動き検出部
４０３、４０４      減算部
４０６              符号化部
４０７、５０１      加算部
４０８              動きベクトルメモリ
４０９              動きベクトル予測部
５０２              復号化部
Ｓｔｒ              符号化信号
ＤｉｆＭＶ          動きベクトル予測差分
ＰｒｅｄＭＶ        予測動きベクトル
ＰｒｅｖＭＶ        近傍動きベクトル
ＲｅｆＮｏ          参照ピクチャ番号
ＲｅｃＤｉｆＰｅｌ  復号画面予測誤差
ＲｅｃＰｅｌ        復号画面
Ｖｏｕｔ            復号画面信号
ＭＣｐｅｌ１        動き補償参照画素
ＭＣｐｅｌ２        参照画面画素
ＭＣｐｅｌ３        画素
ＦｒｍＣｔｒＳｎｄ  制御信号
ＦｒｍＣｔｒＲｃｖ  制御信号
ＦｒｍＣｔｒＬｃｌ  制御信号
ＬｃｌＣｔｒＳｎｄ  制御信号
ＬｃｌＣｔｒＲｃｖ  制御信号
【図１】
2010088122.tif 000003
【図２】
2010088122.tif 000004
【図３】
2010088122.tif 000005
【図４】
2010088122.tif 000006
【図５】
2010088122.tif 000007
【図６】
2010088122.tif 000008
【図７】
2010088122.tif 000009
【図８】
2010088122.tif 000010
【図９】
2010088122.tif 000011
【図１０】
2010088122.tif 000012
【図１１】
2010088122.tif 000013
【図１２】
2010088122.tif 000014
【図１３】
2010088122.tif 000015
【図１４】
2010088122.tif 000016
【図１５】
2010088122.tif 000017
【図１６】
2010088122.tif 000018
【図１７】
2010088122.tif 000019
【図１８】
2010088122.tif 000020
【図１９】
2010088122.tif 000021
【図２０】
2010088122.tif 000022
【図２１】
2010088122.tif 000023
【図２２】
2010088122.tif 000024