(57)【特許請求の範囲】
【請求項１】
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、該単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成部と、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御部と、
上記インデクス値生成部で生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部と
を有し、
上記動きベクトル読み出し部で読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるようにした
ことを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
上記動きベクトル格納部の上記単位ブロック領域に対し、上記マクロブロック内でのラスタスキャン順に上記インデクス値が割り当てられる
ことを特徴とするデータ処理装置。
【請求項３】
請求項１に記載のデータ処理装置において、
上記動きベクトル読出部は、上記動きベクトル格納部の１の上記単位ブロック領域から上記動きベクトルを読み出す
ことを特徴とするデータ処理装置。
【請求項４】
請求項１に記載のデータ処理装置において、
上記単位ブロックは、上記マクロブロックを垂直方向および水平方向にそれぞれ４分割してなり、
上記動きベクトル読み出し部は、上記インデクス値生成部で生成された上記インデクス値と所定の値とを加算して上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求めるようにされ、
上記動きベクトルを読み出す単位ブロック領域を示すインデクス値は、上記加算結果のＬＳＢ側４ビットのみを用いるようにした
ことを特徴とするデータ処理装置。
【請求項５】
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有する
ことを特徴とするデータ処理方法。
【請求項６】
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有するデータ処理方法をコンピュータに実行させる
ことを特徴とするデータ処理プログラム。
【請求項７】
動画像データを符号化する符号化装置において、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、該単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成部と、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御部と、
上記インデクス値生成部で生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部と
を有し、
上記動きベクトル読み出し部で読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された画像データとの差分を符号化するようにした
ことを特徴とする符号化装置。
【請求項８】
請求項７に記載の符号化装置において、
上記動きベクトル格納部の上記単位ブロック領域に対し、上記マクロブロック内でのラスタスキャン順に上記インデクス値が割り当てられる
ことを特徴とする符号化装置。
【請求項９】
請求項７に記載の符号化装置において、
上記動きベクトル読出部は、上記動きベクトル格納部の１の上記単位ブロック領域から上記動きベクトルを読み出す
ことを特徴とする符号化装置。
【請求項１０】
請求項７に記載の符号化装置において、
上記単位ブロックは、上記マクロブロックを垂直方向および水平方向にそれぞれ４分割してなり、
上記動きベクトル読み出し部は、上記インデクス値生成部で生成された上記インデクス値と所定の値とを加算して上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求めるようにされ、
上記動きベクトルを読み出す単位ブロック領域を示すインデクス値は、上記加算結果のＬＳＢ側４ビットのみを用いるようにした
ことを特徴とする符号化装置。
【請求項１１】
請求項７に記載の符号化装置において、
画像データ内のブロックを該画像データに対して符号化順が前で表示順が前および／または後の符号化済み画像データの対応するブロックを用いて直接的に予測するダイレクトモードで該符号化済み画像データを格納するために用いる格納部を、上記動きベクトル格納部と兼用するようにした
ことを特徴とする符号化装置。
【請求項１２】
動画像データを符号化する符号化方法において、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有し、
上記動きベクトル読み出しのステップにより読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された画像データとの差分を符号化するようにした
ことを特徴とする符号化方法。
【請求項１３】
動画像データを符号化する符号化方法をコンピュータに実行させる符号化プログラムにおいて、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有し、
上記動きベクトル読み出しのステップにより読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された画像データとの差分を符号化するようにした符号化方法をコンピュータ装置に実行させる
ことを特徴とする符号化プログラム。
【請求項１４】
ブロック毎に求められた動きベクトルと該動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号装置において、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、該単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成部と、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御部と、
上記インデクス値生成部で生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部と
を有し、
上記動きベクトル読み出し部で読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された符号化画像データとを加算して復号処理を行うようにした
ことを特徴とする復号装置。
【請求項１５】
請求項１４に記載の復号装置において、
上記動きベクトル格納部の上記単位ブロック領域に対し、上記マクロブロック内でのラスタスキャン順に上記インデクス値が割り当てられる
ことを特徴とする復号装置。
【請求項１６】
請求項１４に記載の復号装置において、
上記動きベクトル読出部は、上記動きベクトル格納部の１の上記単位ブロック領域から上記動きベクトルを読み出す
ことを特徴とする復号装置。
【請求項１７】
請求項１４に記載の復号装置において、
上記単位ブロックは、上記マクロブロックを垂直方向および水平方向にそれぞれ４分割してなり、
上記動きベクトル読み出し部は、上記インデクス値生成部で生成された上記インデクス値と所定の値とを加算して上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求めるようにされ、
上記動きベクトルを読み出す単位ブロック領域を示すインデクス値は、上記加算結果のＬＳＢ側４ビットのみを用いるようにした
ことを特徴とする復号装置。
【請求項１８】
請求項１４に記載の復号装置において、
画像データ内のブロックを該画像データに対して符号化順が前で表示順が前および／または後の復号済み画像データの対応するブロックを用いて直接的に予測するダイレクトモードで該復号済み画像データを格納するために用いる格納部を、上記動きベクトル格納部と兼用するようにした
ことを特徴とする復号装置。
【請求項１９】
ブロック毎に求められた動きベクトルと該動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号方法において、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有し、
上記動きベクトル読み出しのステップにより読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された符号化画像データとを加算して復号処理を行うようにした
ことを特徴とする復号方法。
【請求項２０】
ブロック毎に求められた動きベクトルと該動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号方法をコンピュータに実行させる復号プログラムにおいて、
１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、該マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、該単位ブロック領域に動きベクトルを格納するステップと、
予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき該対象ブロックの左上隅および右上隅の上記単位ブロックの位置に対応する上記インデクス値を生成するインデクス値生成のステップと、
上記対象ブロックと同一の２次元画像領域内にあり該対象ブロックの左側、上側、右上または左上で該対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、上記動きベクトル格納部の該隣接ブロックに対応したそれぞれの上記単位ブロック領域毎に複製して格納する格納制御のステップと、
上記インデクス値生成のステップにより生成された上記インデクス値に基づき、上記動きベクトル格納部から上記動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、
上記動きベクトル読み出しのステップで読み出された上記動きベクトルに基づき上記予測動きベクトルを求めるステップと
を有し、
上記動きベクトル読み出しのステップにより読み出された上記動きベクトルを用いて求めた上記予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、該予測画像データと入力された符号化画像データとを加算して復号処理を行うようにした復号方法をコンピュータに実行させる
ことを特徴とする復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビデオデータを直交符号化と画面内予測符号による動き補償とを用いて圧縮符号化する場合に用いて好適なデータ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラムに関する。
【背景技術】
【０００２】
近年、動画などの画像情報をディジタルデータとして取り扱い、画像情報特有の冗長性を利用して、離散コサイン変換などの直交変換と動き補償を用いた予測符号化とにより画像データを圧縮符号化する、ＭＰＥＧ(Moving Pictures Experts Group)に規定される圧縮符号化方式に準拠した画像情報の符号化装置や復号化装置が、放送局などの情報配信や、一般家庭での情報受信の双方において普及が進んでいる。
【０００３】
特に、ＭＰＥＧ２(Moving Pictures Experts Group 2：ＩＳＯ（International Organization for Standardization）／ＩＥＣ（International Electrotechnical Commition） １３８１８−２)方式は、汎用画像符号化方式として定義される。このＭＰＥＧ２方式は、インタレース走査による画像データおよびプログレッシブ走査による画像データの双方、ならびに、標準解像度画像および高精細画像を網羅する標準とされ、現在、プロフェッショナル用途およびコンシューマ用途の広範なアプリケーションに広く用いられている。
【０００４】
このＭＰＥＧ２方式による圧縮符号化方式を用いることにより、例えば７２０×４８０画素の解像度を持つ標準解像度のインタレース走査画像であれば符号量としてビットレートで４〜８Ｍｂｐｓ(Bit per Second)、１９２０×１０８８画素の解像度を持つ高解像度のインタレース走査画像であれば、符号量としてビットレートで１８〜２２Ｍｂｐｓをそれぞれ割り当てることで、高い圧縮率と良好な画質の実現が可能である。
【０００５】
ＭＰＥＧ２方式は、主として放送用に適合する高画質符号化を対象としていた一方で、より小さい符号量（低ビットレート）、つまり、より高い圧縮率の符号化方式には対応していなかった。携帯端末の普及により、高圧縮率、低ビットレートを可能とする符号化方式の要求が高まっており、この要求に対応してＭＰＥＧ４方式の標準化が行われた。画像符号化方式に関しては、１９９８年１２月にＩＳＯ／ＩＥＣ １４４９６−２という規格が国際標準として承認された。
【０００６】
さらに、近年では、Ｈ．２６Ｌと称される動画像符号化方式の国際標準化が進められている。Ｈ．２６Ｌは、当初テレビ会議用の画像符号化を目的として策定されたもので、既存のＭＰＥＧ４などの符号化方式と比較して、約２倍の圧縮性能を達成することが目標とされている。
【０００７】
また、現在、ＭＰＥＧ４の活動の一環として、このＨ．２６Ｌをベースに、Ｈ．２６Ｌではサポートされない機能も取り入れ、より高い符号化効率を実現する標準化がJoint Model of Enhanced-Compression Video Codingとして行われ、２００３年３月には、国際標準の符号化方式がＩＴＵ−Ｔ(International Telecommunication Union-Telecommunication Standarization Sector)勧告Ｈ．２６４あるいはＩＳＯ(International Organization for Standarization)／ＩＥＣ(International Electrotechnical Commission)国際標準１４４９６−１０（ＭＰＥＧ−４パート１０）Advanced Video Coding（以下、Ｈ．２６４｜ＡＶＣと略称する）に規定された。非特許文献１には、この規格に基づく処理の内容が記載されている。
【非特許文献１】「Draft Errata List with Revision-Marked Corrections for H.264/AVC」, JVT-1050, Thomas Wiegand et al., Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG, 2003
【０００８】
また、特許文献１には、このＨ．２６４｜ＡＶＣ規格に基づく符号化技術が記載されている。
【特許文献１】特願２００６−２５０３３号公報
【０００９】
このＨ．２６４｜ＡＶＣ規格に基づく符号化方式は、従来から行われている、直交変換と動き補償を用いた予測符号化によるフレーム間圧縮とを行う例えばＭＰＥＧ２方式といった符号化方式に対し、さらに処理対象のブロックに隣接または接するブロックの動きベクトルを用いて、当該処理対象の動きベクトルを予測するようにされていることが特徴の一つとなっている。図２０を用いて、予測動きベクトルを用いた符号化について概略的に説明する。
【００１０】
予測動きベクトルを用いた符号化は、画面を所定サイズのブロックに分割したマクロブロックを単位として行われる。ここでは、１マクロブロックのサイズを１６×１６画素であるものとする。また、画面内において、画面の左上隅のマクロブロックから、画面の左端から右端へ向け、さらに、画面の上端から下端に向けて予測動きベクトルを用いた符号化が行われる。すなわち、処理対象のマクロブロックに対して上側に位置するマクロブロックと、水平方向で左側に位置するマクロブロックは、既に符号化処理が終了している。
【００１１】
図２０Ａに例示されるように、処理対象であるマクロブロックＥの予測動きベクトルＰＭＶ（Ｅ）は、当該マクロブロックＥの左に隣接するマクロブロックＡ、上に隣接するマクロブロックＢおよび右上に接するマクロブロックＣの動きベクトルＭＶ（Ａ）、ＭＶ（Ｂ）およびＭＶ（Ｃ）とから、水平成分および垂直成分のそれぞれについてメジアン（中央値）を取って求める。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
一方、Ｈ．２６４｜ＡＶＣ規格では、動き予測・補償ブロックのサイズが可変とされている。すなわち、動き予測・補償ブロックサイズは、マクロブロック単位のサイズとして１６×１６画素、１６×８画素、８×１６画素、８×８画素の４種類と、さらに８×８画素のブロックにおいては、サブマクロブロック単位のサイズとして８×８画素、８×４画素、４×８画素、４×４画素の４種類とが規定されている。これら７種類の動き予測・補償ブロックを適宜、切り替えて用いる。このように、複数種類のサイズの動き予測・補償ブロックの中から最適なものを切り替えて用いることで、発生符号量を抑制しつつ、よりきめ細かな動き予測を行うことができる。
【００１３】
一例として、図２０Ｂに例示されるように、処理対象のマクロブロックＥに対し、左に隣接するマクロブロックＡにおいては８×４画素のサブマクロブロックが用いられ、上に隣接するマクロブロックＢにおいては４×８画素のサブマクロブロックが用いられ、右上に接するマクロブロックＣにおいては１６×８画素のマクロブロックが用いられる。
【００１４】
上述したように、動き予測・補償ブロックのサイズとして複数が規定されているため、処理対象のマクロブロックと、周囲に位置するマクロブロックおよびサブマクロブロックの動き予測・補償ブロックサイズとの間に膨大な組み合わせが存在する。そのため、従来では、処理対象となるマクロブロックＥの予測動きベクトルＭＶ（Ｅ）を求める際の、隣接するブロックの動きベクトルＭＶ（Ａ）、ＭＶ（Ｂ）およびＭＶ（Ｃ）の選択に伴う演算量が膨大となり、処理時間が長時間化してしまうという問題点があった。
【００１５】
また、処理時間を短縮しようとすると、高い処理能力を持つ演算回路を用いる必要があり、装置のコストアップに繋がるおそれがあるという問題点があった。
【００１６】
例えば、１６×１６画素のサイズを持つマクロブロックにおけるサブマクロブロックの組み合わせ数は、図２１〜図２４に例示されるように、２５６通りとなる。すなわち、サブマクロブロックタイプは、それぞれ４の分岐を有する４階層の構成とされ、それぞれ４ビットのデータ長を有するパラメータsub_mb_type0、sub_mb_type1、sub_mb_type2およびsub_mb_type3と、上位のマクロブロックタイプを示す６ビットのデータ長を有するパラメータmb_typeとを用いて表現される。
【００１７】
図２１は、マクロブロック内における左上隅のサブマクロブロックタイプのブロックサイズを８×８画素に固定した場合の組み合わせ例、図２２は、左上隅のサブマクロブロックタイプのブロックサイズを８×４画素に固定した場合の組み合わせ例、図２３は、左上隅のサブマクロブロックタイプのブロックサイズを４×８画素に固定した場合の組み合わせ例、図２４は、左上隅のサブマクロブロックタイプのブロックサイズを４×４画素に固定した場合の組み合わせ例である。１マクロブロック内で、この２５６通りの組み合わせにマクロブロックタイプのブロックサイズ分の３通りを足した２５９通りの組み合わせが存在する。したがって、処理対象のブロックと隣接するブロックとの組み合わせに２５９２＝６７０８１通りのパターンが存在し、この６７０８１通りの判別を実装しなければならなかった。
【００１８】
したがって、この発明の目的は、処理対象のブロックに対して隣接または接するブロックの動きベクトルを用いて、処理対象の動きベクトルを予測し、動き予測・補償ブロックとして複数種類のサイズが選択可能である場合に、当該動き予測・補償ブロックの選択に係る演算量を削減できるデータ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラムを提供することにある。
【課題を解決するための手段】
【００１９】
第１の発明は、上述した課題を解決するために、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成部と、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御部と、インデクス値生成部で生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部とを有し、動きベクトル読み出し部で読み出された動きベクトルに基づき予測動きベクトルを求めるようにしたことを特徴とするデータ処理装置である。
【００２０】
また、第２の発明は、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有することを特徴とするデータ処理方法である。
【００２１】
また、第３の発明は、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有するデータ処理方法をコンピュータに実行させることを特徴とするデータ処理プログラムである。
【００２２】
また、第４の発明は、動画像データを符号化する符号化装置において、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成部と、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御部と、インデクス値生成部で生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部とを有し、動きベクトル読み出し部で読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された画像データとの差分を符号化するようにしたことを特徴とする符号化装置である。
【００２３】
また、第５の発明は、動画像データを符号化する符号化方法において、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有し、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された画像データとの差分を符号化するようにしたことを特徴とする符号化方法である。
【００２４】
また、第６の発明は、動画像データを符号化する符号化方法をコンピュータに実行させる符号化プログラムにおいて、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有し、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された画像データとの差分を符号化するようにした符号化方法をコンピュータ装置に実行させることを特徴とする符号化プログラムである。
【００２５】
また、第７の発明は、ブロック毎に求められた動きベクトルと動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号装置において、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられ、単位ブロック領域に動きベクトルを格納するようにした動きベクトル格納部と、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成部と、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御部と、インデクス値生成部で生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出し部とを有し、動きベクトル読み出し部で読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された符号化画像データとを加算して復号処理を行うようにしたことを特徴とする復号装置である。
【００２６】
また、第８の発明は、ブロック毎に求められた動きベクトルと動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号方法において、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有し、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された符号化画像データとを加算して復号処理を行うようにしたことを特徴とする復号方法である。
【００２７】
また、第９の発明は、ブロック毎に求められた動きベクトルと動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する復号方法をコンピュータに実行させる復号プログラムにおいて、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納するステップと、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成するインデクス値生成のステップと、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納する格納制御のステップと、インデクス値生成のステップにより生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求める動きベクトル読み出しのステップと、動きベクトル読み出しのステップで読み出された動きベクトルに基づき予測動きベクトルを求めるステップとを有し、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された符号化画像データとを加算して復号処理を行うようにした復号方法をコンピュータに実行させることを特徴とする復号プログラムである
【００２８】
上述したように、第１〜第３の発明は、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、インデクス値に従い動きベクトル格納部から読み出された動きベクトルに基づき予測動きベクトルを求めるようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無い。
【００２９】
また、第４〜第６の発明は、動画像データを符号化する際に、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、インデクス値に従い動きベクトル格納部から読み出された動きベクトルに基づき予測動きベクトルを求め、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された画像データとの差分を符号化するようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無い。
【００３０】
また、第７〜第９の発明は、ブロック毎に求められた動きベクトルと動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する際に、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された符号化画像データとを加算して復号処理を行うようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無い。
【発明の効果】
【００３１】
第１〜第３の発明は、上述したように、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、インデクス値に従い動きベクトル格納部から読み出された動きベクトルに基づき予測動きベクトルを求めるようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無いという効果がある。
【００３２】
また、第４〜第６の発明は、上述したように、動画像データを符号化する際に、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、インデクス値に従い動きベクトル格納部から読み出された動きベクトルに基づき予測動きベクトルを求め、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎に求められた動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された画像データとの差分を符号化するようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無いという効果がある。
【００３３】
また、第７〜第９の発明は、上述したように、ブロック毎に求められた動きベクトルと動きベクトルを用いて求めた予測動きベクトルとに基づき生成された予測画像データと、入力された画像データとの差分が符号化された符号化画像データを復号する際に、１画面を所定に分割したマクロブロックをさらに所定に分割した単位ブロックに対応した単位ブロック領域が、マクロブロック内で所定の順序にインデクス値を割り当てられて設けられた動きベクトル格納部に対し、単位ブロック領域に動きベクトルを格納し、対象ブロックと同一の２次元画像領域内にあり対象ブロックの左側、上側、右上または左上で対象ブロックに接する、複数の異なるサイズを取り得る隣接ブロックの動きベクトルを、動きベクトル格納部の隣接ブロックに対応したそれぞれの単位ブロック領域毎に複製して格納し、予測動きベクトルを求める、複数の異なるサイズを取り得る対象ブロックのサイズに基づき対象ブロックの左上隅および右上隅の単位ブロックの位置に対応するインデクス値を生成し、生成されたインデクス値に基づき、動きベクトル格納部から動きベクトルを読み出す単位ブロック領域を示すインデクス値を求め、動きベクトル読み出しのステップにより読み出された動きベクトルを用いて求めた予測動きベクトルと、ブロック毎の動きベクトルとに基づき予測画像データを生成し、予測画像データと入力された符号化画像データとを加算して復号処理を行うようにしているため、動きベクトル格納部から予測動きベクトルを求めるために用いる動きベクトルを読み出す際に、対応する隣接ブロックのサイズを考慮する必要が無いという効果がある。
【発明を実施するための最良の形態】
【００３４】
以下、この発明の実施の一形態を、図面を参照しながら説明する。図１は、この発明が適用される一例の符号化復号システム１を概略的に示す。符号化復号システム１は、送信側の符号化装置２と受信側の復号装置４とを有し、符号化装置２と復号装置４とが伝送路３で接続されてなる。
【００３５】
符号化装置２は、入力されたビデオ信号による画像データに対して、離散コサイン変換などの直交変換と、動き補償を用いた画面内予測符号化およびフレーム間予測符号化により圧縮符号化を施す。フレーム間予測符号化では、フレーム画像が、例えばフレーム内符号化に基づくピクチャであるＩ(Intra-coded)ピクチャと、予測符号化に基づくピクチャであるＰ(Predictive-coded)ピクチャＢ(Bi-directionally predictive coded)ピクチャとからなり、これらＩピクチャ、ＰピクチャおよびＢピクチャが所定に配列されたＧＯＰ(Group Of Pictures)構造を持つデータとして符号化される。符号化装置２は、圧縮符号化されたフレーム画像データを、ビットストリームとして出力する。
【００３６】
ビットストリームは、伝送路３を介して復号化装置４に伝送される。伝送路３は、衛星放送波、ＣＡＴＶ(Cable Television)網、電話回線網、携帯電話回線網といった通信網を適用することができる。また、伝送路３として、光ディスク、磁気ディスク、磁気テープ、半導体メモリといった記憶または記録媒体であってもよい。復号装置４は、伝送路３を介して伝送されたビットストリームに対して、符号化装置２による符号化方式に対応した復号処理を行い、圧縮符号化されたフレーム画像データを伸長してベースバンドのビデオ信号として出力する。
【００３７】
図２は、この実施の一形態に適用される符号化装置２の一例の構成を示す。例えば、原画像である、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒから構成されるアナログ方式のビデオ信号がＡ／Ｄ変換部１０に供給され、ディジタルビデオ信号からなる画像データに変換されて出力される。並べ替え部１１は、Ａ／Ｄ変換部１０から出力された画像データ内のフレーム画像信号を、例えばＩピクチャ、ＰピクチャおよびＢピクチャからなＧＯＰ構造に応じて、符号化する順番に並べ替える。フレーム順を並べ替えられた原画像の画像データは、減算部の１２一方の入力端と、動き予測・補償部２８と、イントラ予測部２７とにそれぞれ入力される。
【００３８】
減算部１２の他方の端子に対して、後述する選択部２９から出力された予測画像データＰＩが入力される。減算部１２は、一方の端子に入力された原画像による画像データから他方の端子に入力された予測画像データＰＩを減算し、原画像による画像データと、予測画像データＰＩとの差分を示す差分画像データを出力する。差分画像データは、直交変換部１３に供給される。
【００３９】
直交変換部１３は、供給された差分画像データに対して直交変換を施して係数データを生成する。ここでは、直交変換部１３で行われる直交変換を例えば離散コサイン変換（ＤＣＴ：Discrete Cosine Transform）を用いることが考えられる。直交変換部１３で生成された係数データは、量子化部１４に供給される。量子化部１４は、後述するレート制御部１７から供給される量子化スケールに基づき係数データを量子化し、係数データが量子化された量子化データを出力する。
【００４０】
なお、直交変換部１３による直交変換処理と、量子化部１４による量子化処理は、それぞれ所定のブロック単位でなされる。例えば、１フレームを所定に分割して直交変換処理の単位となる直交変換ブロックを形成し、複数の直交変換ブロックからなるマクロブロックが量子化処理の単位とされる。一例として、直交変換ブロックは、８×８画素からなる正方ブロックであり、マクロブロックは、４個の直交変換ブロックからなる正方ブロックとして形成される。
【００４１】
量子化部１４から出力され量子化データは、エントロピー符号化部１５および逆量子化部２０にそれぞれ供給される。
【００４２】
エントロピー符号化部１５は、供給された量子化データに対して、可変長符号化処理や算術符号化処理といったエントロピー符号化処理を施し、データをさらに圧縮符号化する。このとき、エントロピー符号化部１５は、後述する動き予測・補償部２８から供給される動きベクトルＭＶまたは当該動きベクトルＭＶの差分動きベクトルと、予測符号化により参照される参照画像データの識別データと、後述するイントラ予測部２７から供給されるイントラ予測モードＩＰＭとを符号化し、符号化された量子化データのヘッダなどに所定に格納する。
【００４３】
このエントロピー符号化部１５から出力される符号化データが、この符号化装置２における最終的な圧縮画像データとされる。エントロピー符号化部１５から出力された圧縮画像データは、バッファ１６に格納される。上述したレート制御部１７は、バッファ１６に格納される圧縮画像データを監視し、監視結果に基づき量子化スケールを決定して量子化部１４に供給する。また、バッファ１６に格納された圧縮画像データは、所定に読み出され変調処理など伝送路３に送出するために必要な処理を施され、符号化装置２から出力される。
【００４４】
一方、逆量子化部２０は、量子化部１４から供給された量子化データに対して量子化部１４による処理と逆の処理を施し、逆量子化されたデータを生成する。この逆量子化されたデータは、逆直交変換部２１に供給され、上述の直交変換部１３での直交変換の逆変換処理を施される。逆直交変換部２１から出力された逆変換画像データは、加算部２２の一方の入力端に入力される。
【００４５】
加算部２２は、一方の入力端に入力された逆変換画像データと、他方の入力端に入力された、後述する選択部２９から出力される予測画像データＰＩとを加算して再構成画像データを生成する。再構成画像データは、デブロックフィルタ２３に供給され、ブロック歪みを除去されて参照画像データＲＥＦとしてフレームメモリ２４に書き込まれる。
【００４６】
なお、フレームメモリ２４には、後述する動き予測・補償部２８による動き予測および補償処理、ならびに、イントラ予測部２７におけるイントラ予測処理の対象となっているピクチャの再構成画像データが、処理を終了したマクロブロックを単位として、順に書き込まれる。
【００４７】
動き予測・補償部２８は、後述するＰＭＶ生成部２５から供給される予測動きベクトルＰＭＶに基づき最終的に選択した動き予測・補償ブロックサイズに基づき、フレームメモリ２４に格納される参照画像データＲＥＦと画像並べ替え部１１から供給される原画像の画像データとから動きベクトルＭＶを検出する。動き予測・補償部２８は、フレームメモリ２４に格納される参照画像データＲＥＦと、動きベクトルＭＶとに基づき予測画像データＰＩｍを生成すると共に、符号化されたデータの符号量の指標となる指標データＣＯＳＴｍを求める。これら予測画像データＰＩｍおよび指標データＣＯＳＴｍは、選択部２９の一方の入力端に入力される。
【００４８】
なお、動き予測・補償部２８は、ピクチャタイプがＢピクチャであるフレームに対して、ダイレクトモードによる予測符号化を行うことができる。ダイレクトモードは、動きベクトルＭＶを符号化済みのブロックから動き情報の予測を行うモードであり、時間ダイレクトモードと空間ダイレクトモードとがある。ダイレクトモードでは、図３に例示されるように、対象ピクチャに対して時間的に前後のピクチャの対応するブロックの動きベクトルに基づき、対象ピクチャの対応するブロックの動きベクトルを予測する。例えば、対象ピクチャの後方直近の参照ピクチャがアンカーピクチャとされ、アンカーピクチャと、アンカーピクチャに対して対象ピクチャを挟んだ位置のアンカーピクチャの参照ピクチャとを用いる。
【００４９】
このように、ダイレクトモードにおいては、符号化済みブロックから動きベクトルを予測するため、所定のピクチャについて、生成した全ての動きベクトルを保存しておく必要がある。図２の例では、ダイレクトモード用メモリ３０に、生成された動きベクトルが保存される。このとき、当該所定のピクチャ内のマクロブロックにおいて、動き補償ブロックのサイズが全て４×４画素である場合が有り得る。そのため、ダイレクトモード用メモリ３０は、４×４画素のブロックにおいて検出される可能性がある動きベクトルを、１マクロブロック当たり１６ブロック分、それを１フレーム分格納可能な容量を持っている必要がある。
【００５０】
動き予測・補償部２８は、後述する選択部２９から供給される選択信号ＳＥＬに基づき、上述の動きベクトルＭＶをダイレクトモード用メモリ３０に格納する。これにより、単位ブロック毎に動きベクトルＭＶを格納するために別途、メモリを設ける必要が無く、回路規模の増大が発生しない。勿論、これに限らず、動きベクトルＭＶを格納するメモリを別途、設けるようにしてもよい。
【００５１】
動き予測・補償部２８は、検出した動きベクトルＭＶをエントロピー符号化部１５に供給する。また、動き予測・補償部２８は、最終的に選択された動き予測・補償ブロックのサイズを示す情報と、参照画像データＲＥＦを示す動き予測・補償モードＭＥＭと、動き予測・補償処理において選択した参照画像データの識別データとをエントロピー符号化部１５に供給する。エントロピー符号化部１５は、供給されたこれらの情報を、ヘッダなどの所定に格納し符号化する。
【００５２】
ＰＭＶ生成部２５は、原画像による画像データにおける処理対象とされるマクロブロックがインター（画面間）符号化される場合に、マクロブロックに規定された複数の動き予測・補償ブロックサイズのブロックデータそれぞれについて、その周囲のブロックデータについて既に生成され、隣接ＭＶ選択部２６により選択されたブロックの動きベクトルに基づき、予測動きベクトルＰＭＶを生成する。
【００５３】
ＰＭＶ生成部２５および隣接ＭＶ選択部２６における処理について、概略的に説明する。動き予測・補償部２８から出力された各ブロックの動きベクトルＭＶが隣接ＭＶ選択部２６に供給される。この例では、隣接ＭＶ選択部２６は、ダイレクトモード用メモリ３０から動きベクトルＭＶを読み出す。
【００５４】
この実施の一形態では、動き予測・補償ブロックのブロックサイズとして、図４に例示されるように、マクロブロック単位のサイズとして１６×１６画素、１６×８画素、８×１６画素、８×８画素の４種類（マクロブロックタイプと称する）が規定され（図４Ａ参照）、８×８画素のブロックにおいては、さらにサブマクロブロック単位のサイズとして８×８画素、８×４画素、４×８画素、４×４画素の４種類（サブマクロブロックタイプと呼ばれる）が規定されている（図４Ｂ参照）。
【００５５】
隣接ＭＶ選択部２６は、処理対象とされるマクロブロックの周囲に位置する複数のブロックのデータ（すなわち、２次元画像領域内で処理対象とされるマクロブロックの周囲に位置するブロックのデータ）であって、当該処理対象のマクロブロックよりも先に動きベクトルＭＶの生成処理が行われる、予め決められた所定のブロックを選択する。そして、隣接ＭＶ選択部２６は、選択されたブロックの動きベクトルＭＶをＰＭＶ生成部２５に供給する。
【００５６】
この発明の実施の一形態では、隣接ＭＶ選択部２６におけるブロック選択処理を工夫することで、処理対象のマクロブロックの周囲に位置する各ブロックから所定のブロックを選択する処理を軽減している。
【００５７】
ＰＭＶ生成部２５は、隣接ＭＶ選択部２６から供給された動きベクトルＭＶに基づき、処理対象とされるブロックの予測動きベクトルＰＭＶを求める。例えば、ＰＭＶ生成部２５では、例えば処理対象とされるブロックの上および左に隣接するブロック、ならびに、右上に接するブロックそれぞれの動きベクトルＭＶのメディアンを抽出し、処理対象とされるブロックの予測動きベクトルＰＭＶとする。なお、メディアン(Median)は、対象となる複数の値のうちの中間値を示す。
【００５８】
ＰＭＶ生成部２５は、予測動きベクトルＰＭＶを、垂直方向および水平方向についてそれぞれ独立的に生成する。したがって、例えば処理対象の左に隣接するブロックにおける動きベクトルＭＶの垂直成分が予測動きベクトルＰＭＶの垂直成分となり、右上に接するブロックにおける動きベクトルＭＶの水平成分が予測動きベクトルＰＭＶの水平成分となるような場合が有り得る。
【００５９】
なお、ＰＭＶ生成部２５は、例えば処理対象であるブロックの周囲に位置すべきブロックの全てが、当該ブロックの周囲、すなわち２次元画像領域内の隣接または接する位置に存在しない場合には、当該ブロックの予測動きベクトルＰＭＶの値を０とする。また、当該処理対象のブロックの上側に隣接すべきブロックが当該ブロックの周囲、すなわち２次元画像領域内に存在しない場合には、当該ブロックの予測動きベクトルＰＭＶとして、当該ブロックの左に隣接するブロックの動きベクトルＭＶを用いる。さらに、処理対象のブロックの右上に位置すべきブロックが２次元画像領域内に存在しない場合には、当該ブロックによる動きベクトルＭＶに代えて、処理対象のブロックの左上に接する位置にあるブロックの動きベクトルＭＶを用いて、予測動きベクトルＰＭＶを求める。
【００６０】
なお、以下では、処理対象のマクロブロック（適宜、マクロブロックＥと呼ぶ）に対し、左に隣接するブロックをブロックＡ、上側に隣接するブロックをブロックＢ、右上に接するブロックをブロックＣ、左上に接するブロックをブロックＤと呼ぶ。
【００６１】
イントラ予測部２７は、画像並べ替え部１１から供給された原画像の画像データに対して、イントラ（画面内）予測符号化を行う。このとき、イントラ予測部２７は、例えば４×４画素単位で画面内予測符号化を行うイントラ４×４モード、或いは、１６×１６画素単位で画面内予測符号化を行うイントラ１６×１６モードの複数の予測モードのそれぞれについて、処理対象のマクロブロックの予測画像データＰＩｉを生成し、この予測画像データＰＩｉと、並べ替え部１１から供給された原画像による画像データとに基づき、符号化されたデータ量の指標となる指標データＣＯＳＴｉを生成する。イントラ予測部２７は、生成された指標データＣＯＳＴｉを最小にするイントラ予測モードを選択する。そして、イントラ予測部２７は、最終的に選択したイントラ予測モードに対応して生成した予測画像データＰＩｉおよび指標データＣＯＳＴｉを、選択部２９に供給する。
【００６２】
また、イントラ予測部２７は、選択部２９から供給される選択信号ＳＥＬにより、イントラ予測モードが選択されたことを示されると、最終的に選択したイントラ予測モードを示す予測モード情報ＩＰＭを、エントロピー符号化部１５に供給する。エントロピー符号化部１５は、供給された予測モード情報ＩＰＭをヘッダなどに格納し、符号化する。
【００６３】
選択部２９は、動き予測・補償部２８から供給された指標データＣＯＳＴｉと、イントラ予測部２７から供給された指標データＣＯＳＴｍとを比較して値が小さい方を特定し、特定された指標データに対応して入力された予測画像データＰＩｉまたは予測画像データＰＩｍを選択して出力する。選択部２９から出力された予測画像データＰＩｉまたは予測画像データＰＩｍは、減算部１３の他方の入力端に入力される。
【００６４】
また、選択部２９は、指標データＣＯＳＴｉと指標データＣＯＳＴｍとの比較の結果、指標データＣＯＳＴｉの方が小さいと判断した場合に、イントラ予測モードが選択されたことを示す選択信号ＳＥＬを出力する。一方、選択部２９は、この比較の結果、指標データＣＯＳＴｍの方が小さいと判断した場合に、動き予測・補償モードが選択されたことを示す選択信号ＳＥＬを出力する。選択信号ＳＥＬは、イントラ予測部２７および動き予測・補償部２８にそれぞれ供給される。
【００６５】
なお、Ｈ．２６４｜ＡＶＣにおいては、マクロブロックを水平方向に連ねたスライスが符号化の単位とされる。そのため、１ピクチャ内に、Ｉスライス、ＰスライスおよびＢスライスの、異なるタイプのスライスを混在させることができる。なお、Ｉスライスは、画面内（イントラ）符号化のみを行うスライスである。Ｂスライスは、画面内符号化および参照ピクチャを１枚乃至２枚用いたフレーム間予測符号化を行うスライスである。また、Ｐスライスは、画面内符号化および参照ピクチャを１枚用いた、フレーム間予測符号化を行うスライスである。Ｈ．２６４｜ＡＶＣにおいては、これら参照ピクチャを用いフレーム間予測符号化を行うＰスライスやＢスライスに属するマクロブロックであっても、イントラ予測部２７によるイントラ予測符号化が行われる場合がある。
【００６６】
次に、上述した復号装置４について説明する。図５は、この発明の実施の一形態に適用される復号装置４の一例の構成を示す。復号装置４は、バッファ４０、エントロピー符号復号部４１、逆量子化部４２、逆直交変換部４３、加算部４４、デブロックフィルタ４５、画面並べ替えバッファ４６、Ｄ／Ａ変換部４７、フレームメモリ５０、動き予測・補償部５１、イントラ予測部５４、ＰＭＶ生成部５２および隣接ＭＶ選択部５３から構成される。
【００６７】
上述のようにして符号化装置２において圧縮符号化されたフレーム画像からなるビットストリームが、伝送路３を介して復号装置４に入力される。入力されたビットストリームは、バッファ４０に一旦溜め込まれる。バッファ４０から読み出されたビットストリームは、エントロピー符号復号部４１に供給される。
【００６８】
エントロピー符号復号部４１は、図２を用いて説明した符号化装置２のエントロピー符号化部１５において施されたエントロピー符号化に対応し、エントロピー符号の復号処理が行われる。エントロピー符号が復号されたデータは、逆量子化部４２に供給される。また、エントロピー符号復号部４１は、復号されたフレーム画像データがイントラ符号化されたものである場合、当該フレーム画像データをイントラ予測部５４に供給する。
【００６９】
なお、エントロピー符号復号部４１は、ヘッダ部に格納された各情報の復号も行う。例えば、復号されたフレーム画像データがイントラ符号化されたものである場合、エントロピー符号復号部４１では、ヘッダ部に格納されたイントラ予測モードを示す予測モード情報ＩＰＭや動きベクトルＭＶまたは動きベクトルＭＶの差分動きベクトルを復号する。復号された予測モード情報ＩＰＭは、後述するイントラ予測部５４に供給される。また、復号された動きベクトルＭＶまたは差分動きベクトルは、後述する隣接ＭＶ選択部５３に供給される。
【００７０】
逆量子化部４２は、エントロピー符号復号部４１から供給されたデータに対して、上述した符号化装置２の量子化部１５（図２参照）における処理と逆の処理を施し、逆量子化されたデータを生成する。この逆量子化されたデータは、逆直交変換部４３に供給される。逆直交変換部４３は、逆量子化部４２から供給されたデータに対して、上述した符号化装置２の直交変換部１３（図２参照）での直交変換の逆変換処理を施したデータ（逆変換画像データと呼ぶことにする）を生成する。逆変換画像データは、加算部４４の一方の入力端に入力される。
【００７１】
処理対象のフレームがイントラ符号化されたフレームである場合には、イントラ予測部５４は、エントロピー符号復号部４１から供給された、イントラ符号化されたフレーム画像データと予測モード情報ＩＰＭとを用いて復号処理を行い予測画像データを生成する。この予測画像データが加算部４４の他方の入力端に入力され、逆変換画像データと合成される。
【００７２】
一方、処理対象のフレームがインター符号化されたフレームである場合には、動き予測・補償部５１から出力された参照画像データが加算部４４の他方の入力端に入力され、逆変換画像データと合成される。
【００７３】
例えば、上述した符号化装置２の場合と略同様に、インター符号化されたデータを処理する場合、隣接ＭＶ選択部５３は、上述したエントロピー符号復号部４１から供給された動きベクトルＭＶから処理対象のマクロブロックの周囲に位置する各ブロックから所定のブロックを選択する。そして、上述したエントロピー符号復号部４１から供給された動きベクトルＭＶから、選択されたブロックに対応するものを選択し、ＰＭＶ生成部５２に供給する。ＰＭＶ生成部５２は、供給された動きベクトルＭＶに基づき予測動きベクトルＰＭＶを求める。動き予測・補償部５１は、供給された予測動きベクトルＰＭＶとフレームメモリ５０に格納されたフレーム画像データとに基づき参照画像データを生成する。
【００７４】
なお、上述では、図２に示す符号化装置２や図５に示す復号装置４の各部分がハードウェアにより構成されているように説明したが、これはこの例に限定されない。例えば、符号化装置２や復号装置４の一部または全部をソフトウェアで実現することも可能である。例えば、パーソナルコンピュータといったコンピュータに対し、符号化装置２や復号装置４を実行させるようなプログラムを所定の記録媒体やネットワークを介して供給し、コンピュータに搭載させる。コンピュータにおいてこのプログラムを実行させることで、符号化装置２や復号装置４の機能をコンピュータ上で実現させることができる。
【００７５】
次に、この発明の主題に係る、上述した、符号化装置２における隣接ＭＶ選択部２６、ならびに、復号装置４における隣接ＭＶ選択部５３について、詳細に説明する。なお、これら隣接ＭＶ選択部２６および隣接ＭＶ選択部５３は、同一の構成を適用することができるので、以下では、符号化装置２における隣接ＭＶ選択部２６を例にとって説明する。
【００７６】
この発明の実施の一形態においては、例えば１６×１６画素の正方ブロックからなるマクロブロックを、Ｈ．２６４｜ＡＶＣに規定される、１６×１６画素〜４×４画素の７種類の動き補償ブロックサイズのうち最小サイズである４×４画素のブロックに分割し、この分割された４×４画素のブロック単位でマクロブロックをラスタスキャンした順に、インデクス値を定義する。このインデックス値が定義される４×４画素のブロックを、以下では、単位ブロックと呼ぶことにする。
【００７７】
すなわち、図６に例示されるように、処理対象のマクロブロック（Ｅ）と、予測動きベクトルを求めるための各マクロブロック（Ａ）〜（Ｄ）に対し、マクロブロックの左上隅に位置する単位ブロックに対してインデクス値４'ｄ０を定義し、以降、左上隅を起点として左方向から右方向へ向けて１ずつインデクス値を増加させ、さらに上側から下方向に向けて順次インデクス値を増加させるようにして、単位ブロックそれぞれに対してインデックス値を定義する。なお、ここで用いる「値４'ｄｘ」の表記について、「４'ｄ」は、右の数値「ｘ」が実際には２進数で４ビットの数値として表現される値を、１０進数で表記していることを示す。
【００７８】
具体的には、マクロブロックの最上列の４個の単位ブロックに対し、左からインデクス値４'ｄ０、値４'ｄ１、値４'ｄ２、値４'ｄ３が定義され、２列目の４個の単位ブロックに対し、左からインデクス値４'ｄ４、値４'ｄ５、値４'ｄ６、値４'ｄ７が定義され、３列目の４個の単位ブロックに対し、左からインデクス値４'ｄ８、値４'ｄ９、値４'ｄ１０、値４'ｄ１１が定義され、最下列の４個の単位ブロックに対し、左からインデクス値４'ｄ１２、値４'ｄ１３、値４'ｄ１４、値４'ｄ１５が定義される。
【００７９】
さらに、上述の１６×１６画素〜４×４画素の７種類の動き補償ブロックサイズのブロックのそれぞれについて、左端および右端のブロックを定義し、これら左端のブロックのインデクス値lft_idx[3:0]（値４'ｄｘ）と、右端のブロックのインデクス値rht_idx[3:0]（値４'ｄｙ）とを特定する。左端および右端のブロックは、動き補償ブロックにおける最上列の左端および右端の単位ブロックと定義する。なお、インデクス値lft_idx[3:0]などにおける[3:0]の表記は、その値を２進数表記した際に、ＬＳＢ(Least Significant Bit)側の４ビットしか用いないことを示す。
【００８０】
図７は、７種類の動き補償ブロックサイズのブロックのそれぞれにおける左端および右端の単位ブロックに対して定義されるインデクス値Lft_idx[3:0]（値４'ｄｘ）およびインデクス値rht_idx[3:0]４'ｄｙを、マクロブロックタイプおよびサブマクロブロックタイプと関連付けた一例のテーブルを示す。このテーブルは、例えば符号化装置２が有する図示されないＲＯＭ(Read Only Memory)に予め記憶される。また、図８は、１６×１６画素〜４×４画素の７種類の動き補償ブロックサイズのブロックのそれぞれについて、これら左端および右端の単位ブロックのマクロブロック上での位置を示すと共に、対応するインデクス値Lft_idx[3:0]４'ｄｘおよびインデクス値rht_idx[3:0]４'ｄｙを示す。
【００８１】
図７を参照し、マクロブロックタイプが１６×１６画素の場合、動き補償部ブロックとマクロブロックとが等しくなり、左端の単位ブロックがインデクス値lft_idx[3:0]４'ｄ０とされ、右端の単位ブロックがインデクス値rht_idx[3:0]４'ｄ３とされる。
【００８２】
マクロブロックタイプが１６×８画素の場合、動き補償ブロックは、マクロブロックを水平方向に２分割したものとなる。上段の動き補償ブロックでは、左端の単位ブロックがインデクス値lft_idx[3:0]４'ｄ０とされ、右端の単位ブロックがインデクス値rht_idx[3:0]４'ｄ３とされ、下段の動き補償ブロックでは、左端の単位ブロックがインデクス値lft_idx[3:0]４'ｄ８とされ、右端の単位ブロックがインデクス値rht_idx[3:0]４'ｄ１５とされる。
【００８３】
マクロブロックタイプが８×１６画素の場合、動き補償ブロックは、マクロブロックを垂直方向に２分割したものとなる。左側の動き補償ブロックでは、左端の単位ブロックがインデクス値lft_idx[3:0]４'ｄ０とされ、右端の単位ブロックがインデクス値rht_idx[3:0]４'ｄ１１とされる。また、右側の動き補償ブロックでは、左端の単位ブロックがインデクス値lft_idx[3:0]４'ｄ２とされ、右端の単位ブロックがインデクス値rht_idx[3:0]４'ｄ３とされる。
【００８４】
マクロブロックタイプが８×８画素の場合、さらに８×８画素、８×４画素、４×８画素および４×４画素の４種類のサブマクロブロックタイプが定義される。サブマクロブロックタイプが８×８画素の場合、動き補償ブロックは、マクロブロックを水平方向および垂直方向にそれぞれ２分割した４個のブロックとなり、上述のマクロブロックタイプの場合と同様に、最上列の左端および右端の単位ブロックに対してそれぞれインデクス値lft_idx[3:0]４'ｄｘおよびインデクス値rht_idx[3:0]４'ｄｙが定義される。
【００８５】
なお、サブマクロブロックタイプが４×８画素および４×４画素の場合には、水平方向に１個の単位ブロックしか並ばない。そのため、同一の単位ブロックが左端および右端の単位ブロックと見做されると共に、インデクス値lft_idx[3:0]（値４'ｄｘ）およびインデクス値rht_idx[3:0]（値４'ｄｙ）も、同一の値が用いられる。
【００８６】
図９は、隣接ＭＶ選択部２６の一例の構成を示す。なお、復号装置４側の隣接ＭＶ選択部５３は、この図９に示す構成と略同一なので、ここでの説明を省略する。隣接ＭＶ選択部２６は、ブロック値生成部１００、加算部１０２およびｍｖ格納部１０６を有すると共に、４個のセレクタ１０１、１０３、１０４および１０５を有する。ｍｖ格納部１０６は、上述したダイレクトモード用メモリ３０に対する読み書きを制御することができるようになっている。
【００８７】
ブロック値生成部１００は、マクロブロックタイプを示す情報mb_typeと、サブマクロブロックタイプを示す情報sub_mb_typeとが入力され、これら情報mb_typeおよび情報sub_mb_typeに基づき、例えば上述の図７に従いブロックのインデクス値lft_idx[3:0]４'ｄｘおよびインデクス値rht_idx[3:0]４'ｄｙを生成する。一例として、情報mb_typeが１６×１６画素のマクロブロックタイプを示していれば、図７を参照し、インデクス値lft_idx[3:0]４'ｄ０およびインデクス値rht_idx[3:0]４'ｄ３が生成され、ブロック値生成部１００に供給される。情報mb_typeおよび情報sub_mb_typeは、例えば図示されない制御部で生成することが考えられる。
【００８８】
ブロック値生成部１００で生成されたインデクス値lft_idx[3:0]４'ｄｘは、セレクタ１０１の第１の入力端に入力され、インデクス値rht_idx[3:0]４'ｄｙは、セレクタ１０１の第２の入力端に入力される。セレクタ１０１は、例えば、処理対象のマクロブロックの右上に接するブロックＣの動きベクトルＭＶ（Ｃ）を取得する際に、第２の入力端に切り替えられるようにされている。セレクタ１０１の出力は、加算部１０２の一方の入力端に入力される。
【００８９】
例えば、処理対象のマクロブロックに対し、当該ブロックＣが存在する場合には、セレクタ１０１において第２の入力端が選択され、インデクス値rht_idx[3:0]４'ｄｙが出力される。一方、ブロックＣが存在しない場合は、上述したように、ブロックＤが存在すれば当該ブロックＤが用いられる。この場合には、セレクタ１０１において第１の出力端が選択され、インデクス値lft_idx[3:0]４'ｄｘが出力される。
【００９０】
セレクタ１０３、１０４および１０５は、それぞれ所定の値がセットされ、動きベクトルＭＶを取得するブロックに応じた選択を行う。セレクタ１０３は、ブロックＡに関する選択を行うもので、例えば第１および第２の入力端にそれぞれインデクス値４'ｄ３およびインデクス値４'１５がセットされる。この例では、セレクタ１０３は、ブロックＡの動きベクトルＭＶを用いる際に、上述するセレクタ１０１で選択された値rht_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８および値４'ｄ１２の場合に第１の入力端が選択され、その他の場合に第２の入力端が選択される。
【００９１】
ブロックＢに関する選択を行うセレクタ１０４は、例えば第１の入力端にインデクス値４'ｄ１２がセットされ、第２の入力端にセレクタ１０３の出力が入力される。この例では、セレクタ１０４は、ブロックＢの動きベクトルＭＶを用いる際に第１の入力端が選択され、その他の場合に第２の入力端が選択される。
【００９２】
ブロックＣに関する選択を行うセレクタ１０５は、例えば第１〜第４の入力端に値４'ｄ９、値４'ｄ１１、値４'ｄ１３および値４'ｄ１５がそれぞれ入力され、第５の入力端にセレクタ１０４の出力が入力される。セレクタ１０５の出力が加算部１０２の他方の入力端に入力される。この例では、セレクタ１０５は、ブロックＡまたはブロックＢの動きベクトルＭＶを用いる際に第５の入力端が選択される。また、セレクタ１０５は、ブロックＣの動きベクトルＭＶを用いる際に、第１または第３の入力端が選択され、値４'ｄ９または値４'ｄ１３が出力される。さらに、セレクタ１０５は、ブロックＤの動きベクトルＭＶを用いる際に、第２または第４の入力端が選択され、値４'ｄ１１または値４'ｄ１５が出力される。
【００９３】
加算部１０２は、一方の入力端に入力される、セレクタ１０１から供給される値と、他方の入力端に入力される、セレクタ１０５から供給される値とを加算する。加算結果は、ＬＳＢ側の４ビットのみが用いられ、隣接ブロックのインデクス値nbd_idx[3:0]として出力される。インデクス値nbd_idx[3:0]は、ｍｖ格納部１０６に供給される。
【００９４】
ｍｖ格納部１０６は、例えばダイレクトモード用メモリ３０に対するアクセス制御をできるようにされ、動き予測・補償処理部２８で求められた動きベクトルＭＶをダイレクトモード用メモリ３０に格納すると共に、インデクス値nbd_idx[3:0]に示されるアドレスからデータを読み出す。これに限らず、ｍｖ格納部１０６そのものがメモリであってもよい。例えば、ｍｖ格納部１０６は、ダイレクトモード用メモリ３０に対し、単位ブロックに対応してマッピングし、図１０に例示されるように、単位ブロックに対応する領域毎にラスタスキャン順で割り当てたインデクス値を対応付ける。動きベクトルＭＶは、ｍｖ格納部１０６に供給されると、ダイレクトモード用メモリ３０に対し、マクロブロックタイプに応じた動き補償ブロックに対応した単位ブロック領域にそれぞれコピーされて格納される。
【００９５】
例えばマクロブロックタイプが１６×１６画素の場合には、０から１５までのインデクス値に対応付けられた各単位ブロック領域のそれぞれに、同一の動きベクトルＭＶがコピーされる。また例えば、マクロブロックタイプが１６×８画素の場合には、０から７までのインデクス値に対応付けられた各単位ブロックのそれぞれに、上段の動き補償ブロックによる動きベクトルＭＶがコピーされ、８から１５までのインデクス値に対応付けられた各単位ブロック領域のそれぞれに、下段の動き補償ブロックによる動きベクトルＭＶがコピーされる。
【００９６】
このように、この実施の一形態では、動きベクトルＭＶが単位ブロック領域にそれぞれコピーされて保存されるため、動き補償ブロックがどのようなサイズであっても所定の単位ブロック領域にアクセスすることで動きベクトルを読み出すことができる。そのため、処理対象のブロックに隣接する動き補償ブロックのサイズを示す情報を保持する必要が無い。すなわち、発明の課題の項で既に説明したように、サブマクロブロックタイプまで考慮した場合、マクロブロックタイプを示すデータ長が６ビットのパラメータと、サブマクロブロックタイプを示すそれぞれデータ長が４ビットのパラメータsub_mb_type0、sub_mb_type1、sub_mb_type2およびsub_mb_type3を保持する必要が無い。
【００９７】
ｍｖ格納部１０６は、ダイレクトモード用メモリ３０の、加算部１０２から供給されたインデクス値nbd_idx[3:0]に対応する単位ブロック領域からデータを読み出し、動きベクトルｍｖとして出力する。この動きベクトルｍｖがＰＭＶ生成部２５に供給される。
【００９８】
このように、隣接ＭＶ選択部２６において、ｍｖ格納部１０６により、ダイレクトモード用メモリ３０に対して単位ブロック毎にラスタスキャン順にインデクス値を割り当て、対応する動きベクトルＭＶを単位ブロック毎に格納する。そして、セレクタ１０１、１０３、１０４および１０５での選択結果に応じて加算部１０２で算出された、処理対象のマクロブロックに対して隣接する隣接ブロックのインデクス値を、ｍｖ格納部１０６に入力させる。これにより、処理対象のマクロブロック（マクロブロックＥ）の予測動きベクトルＰＭＶを求めるために必要な、ブロックＡの動きベクトルＭＶ（Ａ）、ブロックＢの動きベクトルＭＶ（Ｂ）およびブロックＣの動きベクトルＭＶ（Ｃ）を選択することができる。
【００９９】
なお、この隣接ＭＶ選択部２６では、このようにダイレクトモード用メモリ３０に対して動きベクトルＭＶを書き込むようにしている。そのため、隣接ＭＶ選択部２６における処理は、必ず、ダイレクトモードによる予測処理が終了してから行う必要がある。
【０１００】
図１１のフローチャートを用いて、隣接ＭＶ選択部２６における一例の処理について説明する。なお、このフローチャートにおける各処理は、例えば符号化装置２の全体を制御する図示されない制御部により、所定のプログラムに従いなされる。これに限らず、符号化装置２を構成する各部間で所定に制御信号などをやりとりし、各部が互いに自律的および／または協働的に動作するようにしてもよい。
【０１０１】
先ず、最初のステップＳ１０で、ブロック値生成部１００において、処理対象のマクロブロックＥのマクロブロックタイプおよびサブマクロブロックタイプに基づき、例えば上述した図７に従いインデクス値lft_idx[3:0]とインデクス値rht_idx[3:0]とが所定にセットされ、ブロック値が生成される。
【０１０２】
ブロックＡの動きベクトルＭＶ（Ａ）を取得する場合（ステップＳ１１）、当該ブロックＡの動きベクトルＭＶ（Ａ）がｍｖ格納部１０６に供給され、既に説明したようにして、ダイレクトモード用メモリ３０上のインデクス値が対応する単位ブロック領域に対してそれぞれコピーされる。また、セレクタ１０１において、第１の入力端が選択され、インデクス値lft_idx[3:0]が出力される。
【０１０３】
処理はステップＳ１２に移行され、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８または値４'ｄ１２の何れかであるか否かが判断される。若し、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８または値４'ｄ１２の何れかであると判断されれば、処理はステップＳ１３に移行される。ステップＳ１３では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]とインデクス値４'ｄ３とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１０４】
一方、上述したステップＳ１２で、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８および値４'ｄ１２の何れでもないと判断されたら、処理はステップＳ１４に移行される。ステップＳ１４では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]とインデクス値４'ｄ１５とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１０５】
ブロックＢの動きベクトルＭＶ（Ｂ）を取得する場合（ステップＳ１６）、当該ブロックＢの動きベクトルＭＶ（Ｂ）がｍｖ格納部１０６に供給され、既に説明したようにして、ダイレクトモード用メモリ３０上のインデクス値が対応する単位ブロック領域に対してそれぞれコピーされる。また、セレクタ１０１において、第１の入力端が選択され、インデクス値lft_idx[3:0]が出力される。
【０１０６】
処理はステップＳ１７に移行され、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]とインデクス値４'ｄ１２とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１０７】
ブロックＣの動きベクトルＭＶ（Ｃ）を取得する場合（ステップＳ１８）、当該ブロックＣの動きベクトルＭＶ（Ｃ）がｍｖ格納部１０６に供給され、既に説明したようにして、ダイレクトモード用メモリ３０上のインデクス値が対応する単位ブロック領域に対してそれぞれコピーされる。また、セレクタ１０１において、第２の入力端が選択され、インデクス値rht_idx[3:0]が出力される。
【０１０８】
処理はステップＳ１９に移行され、インデクス値rht_idx[3:0]が値４'ｄ３であるか否かが判断される。若し、インデクス値rht_idx[3:0]が値４'ｄ３であると判断されれば、処理はステップＳ２０に移行される。ステップＳ２０では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]とインデクス値４'ｄ１３とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１０９】
一方、上述したステップＳ１９で、インデクス値lft_idx[3:0]が値４'ｄ３ではないと判断されれば、処理はステップＳ２１に移行される。ステップＳ２１では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]とインデクス値４'ｄ９とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１１０】
処理対象のブロックと同一の２次元画像領域内に、処理対象のブロックの右上に接するブロックが存在しない場合、既に説明したように、処理対象のブロックの左上に接するブロックＤの動きベクトルＭＶ（Ｄ）が用いられる。この場合、ブロックＤの動きベクトルＭＶ（Ｄ）がｍｖ格納部１０６に供給され、既に説明したようにして、ダイレクトモード用メモリ３０上のインデクス値が対応する単位ブロック領域に対してそれぞれコピーされる。また、セレクタ１０１において、第１の入力端が選択され、インデクス値lft_idx[3:0]が出力される。
【０１１１】
ステップＳ２２で、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８または値４'ｄ１２の何れかであるか否かが判断される。若し、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８または値４'ｄ１２の何れかであると判断されれば、処理はステップＳ２３に移行される。ステップＳ２３では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]とインデクス値４'ｄ１５とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１１２】
一方、上述したステップＳ２２で、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ４、値４'ｄ８および値４'ｄ１２の何れでもないと判断されたら、処理はステップＳ２４に移行される。ステップＳ２４では、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]とインデクス値４'ｄ１１とを加算した値として求める。隣接ブロックのインデクス値nbd_idx[3:0]が取得できたら、処理はステップＳ１５に移行される。
【０１１３】
ステップＳ１５では、取得された隣接ブロックのインデクス値nbd_idx[3:0]に基づき、ｍｖ格納部１０６により、ダイレクトモード用メモリ３０に格納された動きベクトルＭＶが読み出される。この動きベクトルＭＶがＰＭＶ生成部２５に供給される。
【０１１４】
上述した図１１のフローチャートによる隣接ＭＶ選択部２６による処理を、より具体的な例を用いて説明する。一例として、図１２のような場合について考える。すなわち、処理対象のマクロブロック（ブロックＥ）は、マクロブロックタイプが１６×１６画素のブロックとする。また、ブロックＥの予測動きベクトルＰＭＶを求めるために必要な、左に隣接するブロックＡ、上側に隣接するブロックＢおよび右上に接するブロックＣに関し、ブロックＡは、マクロブロックタイプが１６×８画素のブロック、ブロックＢは、マクロブロックタイプが８×８画素で、サブマクロブロックタイプが４×８画素のブロック、ブロックＣは、マクロブロックタイプが８×８画素で、サブマクロブロックタイプが８×８画素のブロックであるものとする。
【０１１５】
処理対象のブロックＥについて、上述した図７に従い、ブロック値生成部１００においてインデクス値lft_idx[3:0]として値４'ｄ０がセットされ、インデクス値rht_idx[3:0]として値４'ｄ３がセットされる（ステップＳ１０）。
【０１１６】
ブロックＡの動きベクトルＭＶ（Ａ）を取得したい場合には（ステップＳ１１）、先ず、当該ブロックＡの動きベクトルＭＶ（Ａ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＡのマクロブロックタイプに対応するインデクス値が０から７までの単位ブロック領域に対して、各単位ブロック毎にそれぞれコピーされる。インデクス値が８から１５までの単位ブロック領域に対しては、例えば、ブロックＡが含まれるマクロブロックにおける、ブロックＡの下側の１６×８画素の領域の動きベクトルＭＶが、単位ブロック毎にそれぞれコピーされる。
【０１１７】
セレクタ１０１において第１の入力端が選択され、インデクス値lft_idx[3:0]（値４'ｄ０）が加算部１０２の一方の入力端に入力される。インデクス値lft_idx[3:0]が値４'ｄ０なので、ステップＳ１２の判断により処理がステップＳ１３に移行される。
【０１１８】
セレクタ１０３で第１の入力端が選択されて値４'ｄ３が選択され、セレクタ１０４およびセレクタ１０５では、それぞれ第２の入力端および第５の入力端が選択され、セレクタ１０３から出力された値４'ｄ３が加算部１０２の他方の入力端に入力される。加算部１０２では、一方の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ０と他方の入力端に入力された値４'ｄ３とが加算され、加算結果として隣接ブロックのインデクス値nbd_idx[3:0]４'ｄ３が出力される（ステップＳ１３）。
【０１１９】
ｍｖ格納部１０６では、このインデクス値nbd_idx[3:0]４'ｄ３に示される単位ブロック領域に書き込まれた動きベクトルＭＶ（Ａ）が読み出される（ステップＳ１５）。この動きベクトルＭＶ（Ａ）がＰＭＶ生成部２５に供給される。
【０１２０】
ブロックＢの動きベクトルＭＶ（Ｂ）を取得したい場合には（ステップＳ１６）、先ず、当該ブロックＢの動きベクトルＭＶ（Ｂ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＢのマクロブロックタイプおよびサブマクロブロックに対応する、インデクス値が８の単位ブロック領域と、インデクス値が１２の単位ブロック領域とに対して、各単位ブロック毎にそれぞれコピーされる。他の単位ブロック領域に対しても、同様にして、ブロックＢが含まれるマクロブロックにおける対応するブロックの動きベクトルＭＶが単位ブロック毎にそれぞれコピーされる。
【０１２１】
セレクタ１０１において第１の入力端が選択され、インデクス値lft_idx[3:0]４'ｄ０が加算部１０２の一方の入力端に入力される。また、セレクタ１０４で第１の入力端が選択されて値４'ｄ１２が出力され、セレクタ１０５で第５の入力端が選択され、セレクタ１０４から出力された値４'ｄ１２が加算部１０２の他方の入力端に入力される。加算部１０２では、一方の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ０と他方の入力端に入力された値４'ｄ１２とが加算され、加算結果として隣接ブロックのインデクス値nbd_idx[3:0]４'ｄ１２が出力される（ステップＳ１７）。
【０１２２】
ｍｖ格納部１０６は、ダイレクトモード用メモリ３０から、このインデクス値nbd_idx[3:0]４'ｄ１２に示される単位ブロック領域に書き込まれた動きベクトルＭＶ（Ｂ）を読み出す（ステップＳ１５）。この動きベクトルＭＶ（Ｂ）がＰＭＶ生成部２５に供給される。
【０１２３】
ブロックＣの動きベクトルＭＶ（Ｃ）を取得したい場合には（ステップＳ１８）、先ず、当該ブロックＣの動きベクトルＭＶ（Ｃ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＣのマクロブロックタイプおよびサブマクロブロックに対応する、インデクス値が８、９、１２および１３の単位ブロック領域に対して、各単位ブロック毎にそれぞれコピーされる。ｍｖ格納部１０６の他の単位ブロック領域に対しても、同様にして、ブロックＣが含まれるマクロブロックにおける対応するブロックの動きベクトルＭＶが単位ブロック毎にそれぞれコピーされる。
【０１２４】
セレクタ１０１において第２の入力端が選択され、インデクス値rht_idx[3:0]（値４'ｄ３）が加算部１０２の一方の入力端に入力される。インデクス値rht_idx[3:0]が値４'ｄ３なので、処理はステップＳ２０に移行される。
【０１２５】
セレクタ１０５で第１の入力端が選択され値４'ｄ９が出力され、加算部１０２の他方の入力端に入力される。加算部１０２では、一方の入力端に入力されたインデクス値rht_idx[3:0]４'ｄ３と他方の入力端に入力された値４'ｄ９とが加算され、加算結果として隣接ブロックのインデクス値nbd_idx[3:0]４'ｄ１２が出力される（ステップＳ２０）。ｍｖ格納部１０６では、このインデクス値nbd_idx[3:0]４'ｄ１２に示される単位ブロック領域に書き込まれた動きベクトルＭＶ（Ｃ）が読み出される（ステップＳ１５）。この動きベクトルＭＶ（Ｃ）がＰＭＶ生成部２５に供給される。
【０１２６】
なお、既に説明したように、ブロックＥの２次元画像領域内にブロックＣが存在しなければ、予測動きベクトルＰＭＶを求めるために、ブロックＥの左上に接するブロックＤが用いられる。この場合には、上述したように、ステップＳ２２において、図１１の例のようにインデクス値lft_idx[3:0]が値４'ｄ０であれば、処理がステップＳ２３に移行される。そして、セレクタ１０５で第４の入力端が選択され、値４'ｄ１５が出力される。値４'ｄ１５は、加算部１０２の他方の入力端に入力される。加算部１０２において、第１の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ０と、他方の入力端に入力された値４'ｄ１５とが加算され、加算結果としてインデクス値nbd_idx[3:0]４'ｄ１５が得られる。インデクス値４'ｄ１５の単位ブロックは、マクロブロックの右下隅に位置し、ブロックＥの左上と接する。
【０１２７】
上述したような処理を、例えば、上述した図７の上から順に左端および右端のインデクス値lft_idx[3:0]およびインデクス値rht_idx[3:0]を生成するように、順次、情報mb_typeおよび情報sub_mb_typeを入力して実行することが考えられる。これにより、処理対象のブロックＥにおける、マクロブロックタイプ毎（およびサブマクロブロックブロックタイプ毎）の予測動きベクトルＰＭＶを求めることができる。
【０１２８】
このとき、例えばブロックＥのマクロブロックタイプが８×８画素の場合には、当該ブロックＥを含むマクロブロック内の情報を用いてと該ブロックＥの予測動きベクトルＰＭＶを求めることが起こり得る。そのため、マクロブロック内のラスタスキャン順で処理を行うとよい。
【０１２９】
上述では、処理対象のブロックＥを、サイズがマクロブロックと等しい、マクロブロックタイプが１６×１６画素のブロックであるものとして説明したが、これはこの例に限られない。すなわち、この実施の一形態による隣接ＭＶ選択処理は、処理対象のブロックＥが別のマクロブロックタイプであっても適用可能である。
【０１３０】
一例として、図１３に示されるように、処理対象のブロックＥのサイズが８×８画素、すなわち、当該ブロックＥのマクロブロックタイプおよびサブマクロブロックタイプがそれぞれ８×８画素である場合について説明する。ブロックＥは、当該ブロックＥが含まれるマクロブロック内の左下隅に位置するものとする。また、ブロックＥの予測動きベクトルＰＭＶを求めるために必要な各ブロックに関し、処理対象のブロックＥがマクロブロックの左下隅に位置するので、右上に接するブロックＣは存在せず、代わりにブロックＥの左上に接するブロックＤを用いる。このブロックＤ、ならびに、ブロックＥの左に隣接するブロックＡおよび上側に隣接するブロックＢは、それぞれマクロブロックタイプおよびサブマクロブロックタイプが４×４画素のブロックであるとする。
【０１３１】
先ず、処理対象のブロックＥについて、上述した図７に従い、ブロック値生成部１００においてインデクス値lft_idx[3:0]として値４'ｄ１０がセットされ、インデクス値rht_idx[3:0]として値４'ｄ１１がセットされる（ステップＳ１０）。
【０１３２】
ブロックＡの動きベクトルＭＶ（Ａ）を取得したい場合には（ステップＳ１１）、先ず、当該ブロックＡの動きベクトルＭＶ（Ａ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＡのマクロブロックタイプおよびサブマクロブロックタイプに対応するインデクス値が９の単位ブロック領域に対してコピーされる。
【０１３３】
セレクタ１０１において第１の入力端が選択され、インデクス値lft_idx[3:0]４'ｄ０が加算部１０２の一方の入力端に入力される。インデクス値lft_idx[3:0]が値４'ｄ１０なので、ステップＳ１２の判断により処理がステップＳ１４に移行される。
【０１３４】
セレクタ１０３で第２の入力端が選択されて値４'ｄ１５が選択され、セレクタ１０４およびセレクタ１０５では、それぞれ第２の入力端および第５の入力端が選択され、セレクタ１０３から出力された値４'ｄ１５が加算部１０２の他方の入力端に入力される。加算部１０２では、一方の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ１０と他方の入力端に入力された値４'ｄ１５とが加算され、加算結果として隣接ブロックのインデクス値nbd_idx[3:0]４'ｄ９が出力される（ステップＳ１３）。
【０１３５】
すなわち、加算結果は、値４'ｄ２５であって、２進数表記では「ｂ１１００１」（「ｂ」は続く数値が２進数表記であることを示す）となるが、インデクス値nbd_idx[3:0]は、既に説明したようにＬＳＢ側の４ビットのみを用いるため、「ｂ１００１」となり、値４'ｄ９が得られる。
【０１３６】
ｍｖ格納部１０６では、ダイレクトモード用メモリ３０から、このインデクス値nbd_idx[3:0]４'ｄ９に示される単位ブロック領域に書き込まれた動きベクトルＭＶ（Ａ）が読み出される（ステップＳ１５）。この動きベクトルＭＶ（Ａ）がＰＭＶ生成部２５に供給される。
【０１３７】
ブロックＢの動きベクトルＭＶ（Ｂ）を取得したい場合には（ステップＳ１６）、先ず、当該ブロックＢの動きベクトルＭＶ（Ｂ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＢのマクロブロックタイプおよびサブマクロブロックに対応する、インデクス値が６の単位ブロック領域に対してコピーされる。
【０１３８】
セレクタ１０１において第１の入力端が選択され、インデクス値lft_idx[3:0]４'ｄ０が加算部１０２の一方の入力端に入力される。また、セレクタ１０４で第１の入力端が選択されて値４'ｄ１２が出力され、セレクタ１０５で第６の入力端が選択され、セレクタ１０４から出力された値４'ｄ１２が加算部１０２の他方の入力端に入力される。加算部１０２では、一方の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ０と他方の入力端に入力された値４'ｄ１２とが加算され、加算結果として隣接ブロックのインデクス値nbd_idx[3:0]４'ｄ１２が出力される（ステップＳ１７）。
【０１３９】
ｍｖ格納部１０６では、このインデクス値nbd_idx[3:0]（値４'ｄ１２）に示される単位ブロック領域に書き込まれた動きベクトルＭＶ（Ｂ）が読み出される（ステップＳ１５）。この動きベクトルＭＶ（Ｂ）がＰＭＶ生成部２５に供給される。
【０１４０】
次に、ブロックＣの動きベクトルＭＶ（Ｃ）が取得される。この例では、処理対象のブロックＥの右上に接する、既に予測符号化が終了したブロックが存在しない。そのため、ブロックＣの代わりにブロックＤの動きベクトルＭＶ（Ｄ）が取得される。当該ブロックＤの動きベクトルＭＶ（Ｄ）が、ｍｖ格納部１０６に供給され、ダイレクトモード用メモリ３０上の、当該ブロックＣのマクロブロックタイプおよびサブマクロブロックに対応する、インデクス値が５の単位ブロック領域に対してコピーされる。
【０１４１】
セレクタ１０１において第１の入力端が選択され、インデクス値rht_idx[3:0]４'ｄ１０が加算部１０２の一方の入力端に入力される。インデクス値rht_idx[3:0]が値４'ｄ１０なので、処理はステップＳ２４に移行される。
【０１４２】
セレクタ１０５で第２の入力端が選択され、値４'ｄ１１が出力される。値４'ｄ１１は、加算部１０２の他方の入力端に入力される。加算部１０２において、第１の入力端に入力されたインデクス値lft_idx[3:0]４'ｄ１０と、他方の入力端に入力された値４'ｄ１１とが加算され、加算結果としてインデクス値nbd_idx[3:0]４'ｄ５が得られる。
【０１４３】
すなわち、加算結果は、値４'ｄ２１となり、２進数表記では「ｂ１０１０１」となるが、インデクス値nbd_idx[3:0]は、ＬＳＢ側の４ビットのみを用いるため、「ｂ０１０１」となり、値４'ｄ５が得られる。インデクス値４'ｄ５の単位ブロックは、ブロックＥの左上と接する。
【０１４４】
課題の項で既に述べたように、従来では、処理対象のマクロブロックＥの予測動きベクトルＰＭＶを求めるために、例えばマクロブロックＢの動きベクトルを選択する場合、マクロブロックＥとマクロブロックＢとの組み合わせに、２５９２＝６７０８１通りの組み合わせが存在し、処理時間が長期化すると共に、演算回路に高い処理能力が要求されていた。
【０１４５】
一方、この発明の実施の一形態によれば、図１０に例示されるように、ｍｖ格納部１０６により、メモリに対してラスタスキャン順に割り当てられた４×４画素の単位ブロック領域毎に動きベクトルＭＶを保持するようにしている。そのため、マクロブロックＢの動きベクトルＭＶ（Ｂ）は、lft_idx[3:0]＋値４'ｄ１２という４ビットの加算処理のみで取得できる。そのため、処理時間の短縮、並びに演算量の削減が見込める。
【０１４６】
次に、この発明の実施の一形態の変形例について説明する。上述では、メモリに対して、４×４画素の単位ブロック毎のインデクス値を、ラスタスキャン順に割り当てるようにしているが、これはこの例に限定されない。例えば、Ｈ．２６４の｜ＡＶＣの規定によれば、４×４画素単位で画面内予測符号化（イントラ符号化）を行う場合には、図１４に例示されるように、１６×１６画素のマクロブロックを８×８画素の中ブロックに４分割し、この中ブロックのそれぞれをさらに４×４画素の小ブロックに分割し、中ブロックを左上、右上、左下および右下の順に符号化すると共に、中ブロックのそれぞれを同様にして左上、右上、左下および右下の順に符号化する。
【０１４７】
この発明の実施の一形態の変形例は、単位ブロック領域毎に割り当てるインデクス値を、このＨ．２６４｜ＡＶＣに規定されるイントラ符号化の際の符号化順とした場合の例である。以下、この実施の一形態の変形例における隣接ＭＶ選択部２６の処理について、概略的に説明する。
【０１４８】
図１５に例示されるように、処理対象のマクロブロック（Ｅ）と、予測動きベクトルを求めるための各マクロブロック（Ａ）〜ＭＢ（Ｄ）のそれぞれについて、図１４を用いて説明したように、マクロブロックを８×８画素の中ブロックに分割してマクロブロック内で左上、右上、左下、右下の順に並べ、中ブロックのそれぞれをさらに４×４画素の小ブロックに分割する。小ブロックのそれぞれに対して、中ブロック内の左上を起点として左上、右上、左下、右下の順に１ずつ増加するインデクス値を割り当て、このインデクス値を、中ブロック毎に順次増加させて割り当てる。
【０１４９】
図１６〜図１９は、この実施の一形態の変形例による隣接ＭＶ選択部２６における処理の例を示す。図１６〜図１９は、上述した図１１におけるブロックＡ、Ｂ、ＣおよびＤの動きベクトルＭＶを取得する際の処理にそれぞれ対応する。図１６〜図１９において、上述の図１１と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１５０】
図１６は、この実施の一形態の変形例によるブロックＡの動きベクトルＭＶを取得する際の一例の処理を示す。図１６は、上述した図１１における、ブロックＡの動きベクトルＭＶを取得する際の処理を示すステップＳ１１以下の処理に対応する。図１６と図１１とを比較して分かるように、実施の一形態の変形例では、上述の実施の一形態によるブロックＡの動きベクトルＭＶの取得の例と比べ、判断分岐処理が１だけ増えている。
【０１５１】
すなわち、この図１６の例では、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ２、値４'ｄ８または値４'ｄ１０の何れかであるか、値４'ｄ４、値４'ｄ６、値４'ｄ１２または値４'ｄ１４の何れかであるか、若しくは、これら以外の値であるかを判断し、判断結果に応じて、隣接ブロックのインデクス値nbd_idx[3:0]を求める。
【０１５２】
より具体的には、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ２、値４'ｄ８または値４'ｄ１０の何れかであると判断されれば（ステップＳ１２０）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ５とを加算した値として求める（ステップＳ１３０）。インデクス値lft_idx[3:0]が値４'ｄ４、値４'ｄ６、値４'ｄ１２または値４'ｄ１４の何れかであると判断されれば（ステップＳ１２１）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１３とを加算した値として求める（ステップＳ１３１）。また、インデクス値lft_idx[3:0]がこれら以外の値であると判断されれば、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１５とを加算した値として求める（ステップＳ１３２）。
【０１５３】
図１７は、この実施の一形態の変形例によるブロックＢの動きベクトルＭＶを取得する際の一例の処理を示す。図１７は、上述した図１１における、ブロックＢの動きベクトルＭＶを取得する際の処理を示すステップＳ１６以下の処理に対応する。図１７と図１１とを比較して分かるように、実施の一形態の変形例では、上述の実施の一形態によるブロックＢの動きベクトルＭＶの取得の例と比べ、判断分岐処理が１だけ増えている。
【０１５４】
すなわち、この図１７の例では、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ１、値４'ｄ４、値４'ｄ５、値４'ｄ８、値４'ｄ９、値４'ｄ１２または値４'ｄ１３の何れかであるか否かを判断し、判断結果に応じて、隣接ブロックのインデクス値nbd_idx[3:0]を求める。
【０１５５】
より具体的には、インデクス値lft_idx[3:0]が値４'ｄ０、値４'ｄ１、値４'ｄ４、値４'ｄ５、値４'ｄ８、値４'ｄ９、値４'ｄ１２または値４'ｄ１３の何れかであると判断されれば（ステップＳ１７０）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１０とを加算した値として求める（ステップＳ１７１）。一方、インデクス値lft_idx[3:0]がこれらの値ではないと判断されれは、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１４とを加算した値として求める（ステップＳ１７２）。
【０１５６】
図１８は、この実施の一形態の変形例によるブロックＣの動きベクトルＭＶを取得する際の一例の処理を示す。図１８は、上述した図１１における、ブロックＣの動きベクトルＭＶを取得する際の処理を示すステップＳ１８以下の処理に対応する。図１８と図１１とを比較して分かるように、実施の一形態の変形例では、上述の実施の一形態によるブロックＣの動きベクトルＭＶの取得の例と比べ、判断分岐処理が３だけ増えている。
【０１５７】
すなわち、この図１８の例では、インデクス値rht_idx[3:0]が値４’ｄ５であるか、値４’ｄ１または値４’ｄ９であるか、値４'ｄ３または値４'ｄ１１であるか、値４'ｄ０、値４'ｄ４、値４’ｄ８または値４’ｄ１２であるか、または、これらの何れの値でもないかを判断し、判断結果に応じて、隣接ブロックのインデクス値nbd_idx[3:0]を求める。
【０１５８】
より具体的には、インデクス値rht_idx[3:0]が値４’ｄ５であると判断されれば（ステップＳ１９０）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]と値４'ｄ５とを加算した値として求める（ステップＳ２００）。インデクス値rht_idx[3:0]が値４’ｄ１または値４’ｄ９の何れかであると判断されれば（ステップＳ１９１）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]と値４'ｄ１２とを加算した値として求める（ステップＳ２０１）。インデクス値rht_idx[3:0]が値４’ｄ３または値４’ｄ１１の何れかであると判断されれば（ステップＳ１９２）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]と値４'ｄ１とを加算した値として求める（ステップＳ２０２）。
【０１５９】
インデクス値rht_idx[3:0]が値４'ｄ０、値４'ｄ４、値４’ｄ８または値４’ｄ１２の何れかであると判断されれば（ステップＳ１９３）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]と値４'ｄ１１とを加算した値として求める（ステップＳ２０２）。一方、インデクス値rht_idx[3:0]がこれらの値の何れでもないと判断されれば、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値rht_idx[3:0]と値４'ｄ１５とを加算した値として求める（ステップＳ２０２）。
【０１６０】
図１９は、この実施の一形態の変形例によるブロックＤの動きベクトルＭＶを取得する際の一例の処理を示す。図１９は、上述した図１１における、ブロックＤの動きベクトルＭＶを取得する際の処理を示すステップＳ２２以下の処理に対応する。図１９と図１１とを比較して分かるように、実施の一形態の変形例では、上述の実施の一形態によるブロックＣの動きベクトルＭＶの取得の例と比べ、判断分岐処理が４だけ増えている。
【０１６１】
すなわち、この図１９の例では、インデクス値lft_idx[3:0]が値４'ｄ０または値４ｄ’８であるか、値４'ｄ２または値４'ｄ１０であるか、値４'ｄ４または値４'ｄ１２であるか、値４'ｄ６または値４'ｄ１４であるか、値４'ｄ１．値４'ｄ５、値４'ｄ９または値４'ｄ１３であるか、または、これらの何れの値でもないかを判断し、判断結果に応じて、隣接ブロックのインデクス値nbd_idx[3:0]を求める。
【０１６２】
より具体的には、インデクス値lft_idx[3:0]が値４'ｄ０または値４ｄ’８の何れかであると判断されれば（ステップＳ２２０）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１５とを加算した値として求める（ステップＳ２３０）。インデクス値lft_idx[3:0]が値４'ｄ２または値４'ｄ１０の何れかであると判断されれば（ステップＳ２２１）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ３とを加算した値として求める（ステップＳ２３１）。インデクス値lft_idx[3:0]が値４'ｄ４または値４'ｄ１２の何れかであると判断されれば（ステップＳ２２２）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ７とを加算した値として求める（ステップＳ２３２）。
【０１６３】
インデクス値lft_idx[3:0]が値４'ｄ６または値４'ｄ１４の何れかであると判断されれば（ステップＳ２２３）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１１とを加算した値として求める（ステップＳ２３３）。インデクス値lft_idx[3:0]が値４'ｄ１．値４'ｄ５、値４'ｄ９または値４'ｄ１３の何れかであると判断されれば（ステップＳ２２４）、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ９とを加算した値として求める（ステップＳ２３４）。一方、インデクス値lft_idx[3:0]がこれらの値の何れでもないと判断されれば、隣接ブロックのインデクス値nbd_idx[3:0]を、インデクス値lft_idx[3:0]と値４'ｄ１５とを加算した値として求める（ステップＳ２３５）。
【０１６４】
このように、インデクス値をラスタスキャン順ではなく、例えばＨ．２６４ｎ｜ＡＶＣに規定されるイントラ予測符号の符号化順に定義した場合でも、この発明による処理を適用することができる。但しこの実施の一形態の変形例の場合、図１６〜図１９を用いて説明したように、実施の一形態によるラスタスキャン順にインデクス値を定義した場合に比べて判断分岐処理が多いので、処理速度や負荷などの点で、実施の一形態による処理に対して不利であると考えられる。
【０１６５】
次に、この発明の実施の一形態の他の変形例について、概略的に説明する。
既に説明したように、ダイレクトモードは、Ｂピクチャについて、符号化済みのブロックから動き情報を予測生成することができる。そのため、ダイレクトモードに対応するためには、所定のピクチャについて、生成した全ての動きベクトルを保存しておく必要がある。このとき、当該所定のピクチャ内のマクロブロックにおいて、動き補償ブロックのサイズが全て４×４画素である場合が有り得る。そのため、ダイレクトモード用メモリ３０は、４×４画素のブロックにおいて検出される可能性がある動きベクトルを、１マクロブロック当たり１６ブロック分、それを１フレーム分格納可能な容量を持っている必要がある。
【０１６６】
一方、Ｈ．２６４｜ＡＶＣには、ピクチャタイプとしてＢピクチャが存在しない、ベースライン(Baseline)プロファイルと呼ばれる小規模なプロファイルが規定されている。ベースラインプロファイルにおいては、ダイレクトモードが実行されないため、ベースラインプロファイルに準じた符号化を行う場合には、上述した動きベクトルを保存しておくためのメモリが必要なく、予測動きベクトルＰＭＶを求めるために必要な動きベクトルのみをメモリに保存しておけばよいことになる。
【０１６７】
すなわち、ベースプロファイルのような、ピクチャタイプとしてのＢピクチャが存在しないシステムにおいて、図９に示されるｍｖ格納部１０６に接続されるメモリは、例えば図１０に例示されるブロックＢ、ＣおよびＤではインデクス値４'ｄ１２、４'ｄ１３、４'ｄ１４および４’ｄ１５の動きベクトルＭＶを保存し、ブロックＡではインデクス値４'ｄ３、４'ｄ７、４'ｄ１１および４'ｄ１５の動きベクトルＭＶのみを保存する構成とすることができ、動きベクトルＭＶを格納しておくメモリの容量を削減することができる。
【図面の簡単な説明】
【０１６８】
【図１】この発明が適用される一例の符号化復号システムを概略的に示すブロック図である。
【図２】実施の一形態に適用される符号化装置の一例の構成を示すブロック図である。
【図３】ダイレクトモードを説明するための略線図である。
【図４】動き予測・補償ブロックに定義される複数のブロックサイズを示す略線図である。
【図５】発明の実施の一形態に適用される復号装置の一例の構成を示すブロック図である。
【図６】インデクス値について説明するための略線図である。
【図７】インデクス値Lft_idx[3:0]およびインデクス値rht_idx[3:0]をマクロブロックタイプおよびサブマクロブロックタイプと関連付けた一例のテーブルを示す略線図である。
【図８】動き補償ブロック左端および右端の単位ブロックのマクロブロック上での位置を示すと共に、対応するインデクス値Lft_idx[3:0]およびインデクス値rht_idx[3:0]を示す略線図である。
【図９】隣接ＭＶ選択部の一例の構成を示すブロック図である。
【図１０】単位ブロックに対応する領域毎にラスタスキャン順で割り当てたインデクス値を対応付けることを説明するための略線図である。
【図１１】隣接ＭＶ選択部における一例の処理を示すフローチャートである。
【図１２】隣接ＭＶ選択部による処理をより具体的に説明するための略線図である。
【図１３】隣接ＭＶ選択部による処理をより具体的に説明するための略線図である。
【図１４】実施の一形態の変形例による一例のインデクス値の割り当てを示す略線図である。
【図１５】実施の一形態の変形例による一例のインデクス値の割り当てを示す略線図である。
【図１６】実施の一形態の変形例によるブロックＡの動きベクトルＭＶを取得する際の一例の処理を示すフローチャートである。
【図１７】実施の一形態の変形例によるブロックＢの動きベクトルＭＶを取得する際の一例の処理を示すフローチャートである。
【図１８】実施の一形態の変形例によるブロックＣの動きベクトルＭＶを取得する際の一例の処理を示すフローチャートである。
【図１９】実施の一形態の変形例によるブロックｄの動きベクトルＭＶを取得する際の一例の処理を示すフローチャートである。
【図２０】予測動きベクトルを用いた符号化について概略的に説明するための略線図である。
【図２１】１６×１６画素のサイズを持つマクロブロックにおけるサブマクロブロックの組み合わせを示す略線図である。
【図２２】１６×１６画素のサイズを持つマクロブロックにおけるサブマクロブロックの組み合わせを示す略線図である。
【図２３】１６×１６画素のサイズを持つマクロブロックにおけるサブマクロブロックの組み合わせを示す略線図である。
【図２４】１６×１６画素のサイズを持つマクロブロックにおけるサブマクロブロックの組み合わせを示す略線図である。
【符号の説明】
【０１６９】
２  符号化装置
３  伝送路
４  復号装置
１１  画像並べ替え部
１２  減算部
１３  直交変換部
１４  量子化部
１５  エントロピー符号化部
１６  バッファ
１７  レート制御部
２０  逆量子化部
２１  逆直交変換部
２２  加算部
２３  デブロックフィルタ
２４  フレームメモリ
２５  ＰＭＶ生成部
２６  隣接ＭＶ選択部
２７  イントラ予測部
２８  動き予測・補償部
２９  選択部
３０  ダイレクトモード用メモリ
１００  ブロック値生成部
１０１，１０３，１０４，１０５  セレクタ
１０２  加算部
１０６  ｍｖ格納部
【図１】
0004325708.tif 000002
【図２】
0004325708.tif 000003
【図３】
0004325708.tif 000004
【図４】
0004325708.tif 000005
【図５】
0004325708.tif 000006
【図６】
0004325708.tif 000007
【図７】
0004325708.tif 000008
【図８】
0004325708.tif 000009
【図９】
0004325708.tif 000010
【図１０】
0004325708.tif 000011
【図１１】
0004325708.tif 000012
【図１２】
0004325708.tif 000013
【図１３】
0004325708.tif 000014
【図１４】
0004325708.tif 000015
【図１５】
0004325708.tif 000016
【図１６】
0004325708.tif 000017
【図１７】
0004325708.tif 000018
【図１８】
0004325708.tif 000019
【図１９】
0004325708.tif 000020
【図２０】
0004325708.tif 000021
【図２１】
0004325708.tif 000022
【図２２】
0004325708.tif 000023
【図２３】
0004325708.tif 000024
【図２４】
0004325708.tif 000025