| 【発明の名称】 |
動き予測処理装置、画像符号化装置および画像復号化装置 |
| 【発明者】 |
【氏名】仲石 英典
|
| 【要約】 |
【課題】ダイレクト・モードを用いた動き予測処理の適応範囲を拡張し、かつ、その処理負荷を軽減する。
【構成】動き予測処理の現処理対象画像が参照する参照画像20の動きベクトルを、参照画像20上のブロックライン20−1……を単位として、ベクトル格納メモリ10を分割したメモリ領域10−1……のいずれかに書き込む書き込み制御手段2と、ベクトル格納メモリ10からFIFO方式の2つのバッファ11および12への、メモリ領域10−1……ごとの動きベクトルの読み出しを、参照画像20および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段3とを備える。 |
【特許請求の範囲】
【請求項1】 動画像を一定の領域に分割した基本ブロックを単位としてフレーム間の動き予測処理を行う動き予測処理装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする動き予測処理装置。 【請求項2】 前記書き込み制御手段は、前記参照画像がフィールド画像であって前記ブロック適用型予測モードでない場合には、前記参照画像上の前記ブロックラインの動きベクトルをフィールド別にそれぞれ異なる前記メモリ領域に格納し、 前記読み出し制御手段は、 前記参照画像および前記現処理対象画像がともに前記ブロック適用型予測モードでなく、前記参照画像がフレーム画像で、前記現処理対象画像がフィールド画像である場合には、前記参照画像内での奇数番目の前記ブロックラインに割り当てられた前記メモリ領域と、偶数番目の前記ブロックラインに割り当てられた前記メモリ領域のそれぞれから、2つの前記バッファに動きベクトルを並列に読み出し、 前記参照画像がフィールド画像であって前記ブロック適用型予測モードでなく、前記現処理対象画像が前記ブロック適用型予測モードである場合には、トップ・フィールドに割り当てられた前記メモリ領域と、ボトム・フィールドに割り当てられた前記メモリ領域のそれぞれから、2つの前記バッファに動きベクトルを並列に読み出し、 前記参照画像および前記現処理対象画像の条件がそれ以外の場合には、前記メモリ領域ごとの動きベクトルを一方の前記バッファのみに読み出す、 ことを特徴とする請求項1記載の動き予測処理装置。 【請求項3】 前記書き込み制御手段は、前記参照画像が前記ブロック適用型予測モードである場合には、前記参照画像上で上下に隣接する2つの前記ブロックラインを、2つの前記メモリ領域に割り当てて動きベクトルを格納し、 前記読み出し制御手段は、前記参照画像が前記ブロック適用型予測モードである場合には、2つの前記ブロックラインに割り当てられた2つの前記メモリ領域ごとに、動きベクトルを一方の前記バッファに対して順次読み出す、 ことを特徴とする請求項2記載の動き予測処理装置。 【請求項4】 前記読み出し制御手段は、前記参照画像および前記現処理対象画像の双方がフィールド画像であって前記ブロック適用型予測モードでない場合には、トップ・フィールドに割り当てられた前記メモリ領域のみから一方の前記バッファのみに対して動きベクトルを読み出すことを特徴とする請求項2記載の動き予測処理装置。 【請求項5】 前記読み出し制御手段は、前記参照画像がフィールド画像であって前記ブロック適用型予測モードでなく、前記現処理対象画像がフレーム画像であって前記ブロック適用型予測モードでない場合には、トップ・フィールドに割り当てられた前記メモリ領域のみを読み出し元とし、同じ前記メモリ領域から2回ずつ連続して、一方の前記バッファのみに対して動きベクトルを読み出すことを特徴とする請求項2記載の動き予測処理装置。 【請求項6】 前記現処理対象画像上の動きベクトル算出対象の前記基本ブロック、および当該現処理対象ブロックに対応する前記参照画像上の前記基本ブロックである参照ブロックのそれぞれが、フレーム構造あるいはフィールド構造のいずれであるか、および、当該現処理対象画像および当該参照画像のそれぞれが前記ブロック適用型予測モードであるか否かの組み合わせに応じて、前記現処理対象ブロックのブロック分割サイズを、対応する前記参照ブロックのブロック分割サイズと同じにするか、あるいは当該参照ブロックで分割されたブロックの一部が1つのブロックに統合されるように設定して、前記ベクトル演算手段に通知するブロック分割設定手段をさらに有することを特徴とする請求項1記載の動き予測処理装置。 【請求項7】 前記現処理対象画像および前記参照画像がともに前記ブロック適用型予測モードでなく、前記現処理対象ブロックがフレーム構造で、前記参照ブロックがフィールド構造であるとき、当該参照ブロックの上側半分および下側半分の各ブロックにおいて、ともに垂直方向に対してさらなるブロック分割が行われていない場合には、対応する前記現処理対象ブロックを垂直方向にブロック分割しないことを特徴とする請求項6記載の動き予測処理装置。 【請求項8】 前記現処理対象画像および前記参照画像がともに前記ブロック適用型予測モードでなく、前記現処理対象ブロックがフィールド構造で、前記参照ブロックがフレーム構造であるとき、前記現処理対象ブロックに対応する前記参照画像上の上下に隣接する2つの前記参照ブロックの双方において、それぞれを4等分したサイズ以下のブロックが存在しない場合には、前記現処理対象ブロックを垂直方向に2等分し、水平方向にブロック分割しないことを特徴とする請求項6記載の動き予測処理装置。 【請求項9】 動画像を一定の領域に分割した基本ブロックを単位としたフレーム間の動き予測処理を利用して、動画像信号を符号化する画像符号化装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする画像符号化装置。 【請求項10】 動画像を一定の領域に分割した基本ブロックを単位としたフレーム間の動き予測処理を利用して、符号化された動画像信号を復号化する画像復号化装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする画像復号化装置。
|
【発明の詳細な説明】【技術分野】 【0001】 本発明は、動画像を一定の領域に分割した基本ブロックを単位としてフレーム間の動き予測処理を行う動き予測処理装置、およびこの装置を備えた画像符号化装置、画像復号化装置に関し、特に、動き予測処理の現処理対象画像が参照する参照画像の動きベクトルから、現処理対象画像の動きベクトルを演算する動作モードに対応した動き予測処理装置、画像符号化装置および画像復号化装置に関する。 【背景技術】 【0002】 動画像信号の圧縮符号化方式として、MPEG(Moving Picture Expert Group)や、H.264などが知られている。このような圧縮符号化方式では、入力画像データをマクロブロック(以下、MBと呼ぶ)と呼ばれる基本処理単位に分割し、これを単位として符号化・復号化処理が行われる。符号化処理では、入力画像に対して直交変換、量子化などを施して画面内の冗長性を取り除くフレーム内予測と、過去に符号化した複数のフレームから動き補償した予測残差を抽出することでフレーム間の冗長性を取り除くフレーム間予測とが行われ、これらの手法で算出された値がエントロピー符号化されることで、データ圧縮がなされる。また、復号化処理では、その逆動作が行われる。 【0003】 また、MPEG−2やH.264などでは、フレーム単位で符号化するモードとフィールド単位で符号化するモードとを適応的に選択可能になっている。これに加えて、上下に隣接する2つのMB(以下、MBペアと呼ぶ)単位で、フレーム間予測とフィールド間予測とを切り替えて用いることも可能となっており、このモードはMBAFF(Macro Block Adaptive Field/Frame)と呼ばれている。これらの3つのモードは符号化タイプ(Coding Type)としてピクチャ単位に設定でき、以下では各符号化タイプを「FRM」「FLD」「MBAFF」と表すことにする。 【0004】 図33は、符号化タイプ別のMBの処理順について説明するための図である。 この図33の上側では、画像上での16画素×16画素のMBの処理順を示している。符号化タイプがFRMのときは、同図左上側に示すように、フレーム内の16画素×16画素のMBが水平方向の並列順に処理されるので、それらの各MB内では、同図左下側に示すように、奇数ラインのデータと偶数ラインのデータとが交互に処理されることになる。また、符号化タイプがFLDのときは、同図中央上側に示すように、トップ・フィールドのデータとボトム・フィールドのデータとが存在する。このため、同図中央下側に示すように、まずトップ・フィールドに対応する奇数ラインが順に処理された後、次のフィールド同期期間においてボトム・フィールドに対応する偶数MBラインが処理されることになる。 【0005】 符号化タイプがMBAFFのときは、同図右上側に示すように、フレーム内のデータはMBペア単位で処理される。ただし、フレーム間予測を適用したMBペア(以下、フレーム・ペア(Frame Pair)と呼ぶ)とフィールド間予測を適用したMBペア(以下、フィールド・ペア(Field Pair)と呼ぶ)とでは処理順が異なり、同図右下側に示すように、フレーム・ペアでは奇数ラインと偶数ラインとが交互に処理される。一方、フィールド・ペアでは、2つのMBがそれぞれトップ・フィールド、ボトム・フィールドに対応するデータに対応しており、奇数ラインが処理された後、続いて偶数ラインが処理されることになる。 【0006】 また、輪郭を多く含むMBなどでは、予測精度を向上させるために、MBをより小さな領域に分割し、分割したブロックを動きベクトルの検出単位として動き予測処理を行うことがある。基本的なMBのブロックサイズは16画素×16画素であるが、例えばH.264では、必要に応じて最小で4画素×4画素サイズのブロックを用いることができる。 【0007】 図34は、H.264におけるMBのブロックサイズを説明するための図である。 図34(A)は、基本サイズである16画素×16画素のMBを示している。なお、ここでは、所定の画素サイズのMBを「MB(画素サイズ)」と表記する。例えば、同図(A)のMBをMB(16×16)と表す。 【0008】 同図(B)は、MB(16×16)を横方向に2分割した形状のMB(16×8)を、同図(C)には、MB(16×16)を縦方向に2分割した形状のMB(8×16)を、同図(D)には、MB(16×16)を4等分した形状のMB(8×8)をそれぞれ示している。なお、図中の点線矢印はMB間の処理順を示しており、MB(16×8)では上から下、MB(8×16)では左から右、MB(8×8)では左上、右上、左下、右下の順にそれぞれ処理が行われる。 【0009】 さらに、H.264では、MB(8×8)をさらに分割したサブMB分割を指定することもできる。以下、MBの場合と同様に、所定の画素サイズのサブMBをサブMB(画素サイズ)と表記すると、このサブMBとしては、同図(E)に示すように、サブMB(8×4)、サブMB(4×8)、サブMB(4×4)の各サイズがある。なお、MB(8×8)の内部での各サブMB間の処理順は、同図(A)〜(D)における同一形状のMBと同じになる。 【0010】 ところで、上記の画像符号化方式におけるフレーム間予測では、現処理対象のフレームと過去に符号化したフレームとの間で、MB単位で動きベクトルが検出される。また、各フレームにおけるMBの画像データを基に検出した動きベクトルと、このMBの周辺領域の動きベクトルを基に予測した動きベクトル予測値との予測差分値が符号化対象とされ、これにより符号量をより削減できる。さらにH.264では、符号量削減の手法として、現処理対象のMBの動きベクトルを、過去に符号化したフレームの同位置に対応する動きベクトルのみから演算により直接的に算出可能なダイレクト・モードを選択することもできる。 【0011】 図35は、ダイレクト・モードにおける動きベクトルの演算手法を概念的に示す図である。 ダイレクト・モードは、現処理対象のピクチャ(以下、CurrPic(Current Picture)と呼ぶ)として、双方向予測符号化が行われるBピクチャに対して設定可能である。ダイレクト・モードでは、CurrPic内の現処理対象のMB(以下、CurrMBと呼ぶ)の動きベクトルを算出するとき、CurrPicの予測に用いるピクチャ(以下、ColPic(Co-located Picture)と呼ぶ。)内の同じ空間位置のMB(以下、MBColと呼ぶ)の動きベクトルを利用して、演算によりCurrMBの動きベクトルを直接算出する。具体的には、表示順で直後のColPic内の対応するブロックの動きベクトルをピクチャ間の時間距離に応じて内分し、双方向の動きベクトルを得る。 【0012】 ここで、ダイレクト・モードにより動きベクトルを演算するためには、ColPicの動きベクトルをメモリに保持し、現処理対象のブロックに対応するColPic内のブロックの動きベクトルをそのメモリから読み出す必要がある。しかし、上述したように、各ピクチャには任意の符号化タイプを設定することができ、さらに、MBの分割タイプが多数存在することから、予測に必要なブロックの動きベクトルを読み出すための読み出し制御が複雑になるという問題があった。特に、符号化タイプとしてFRMおよびFLDだけでなく、MBAFFにも対応可能とした場合には、CurrMBとMBColとの間のブロックのサイズや位置の組み合わせが非常に多岐にわたることになり、対応する動きベクトルの読み出し制御も極端に複雑になってしまう。 【0013】 なお、MBAFFモードにおける動きベクトル予測値の演算を効率化した従来の技術としては、上側に隣接するMBの下側ブロックグループ、および左側に隣接するMBの右側ブロックグループの各動きベクトルを記憶するための上側メモリおよび左側メモリを備え、上側メモリには、MBAFFモードにおけるMBペアの上部および下部の各動きベクトルを格納するための個別のバンクを形成して、これらのメモリに格納された動きベクトルを参照して現在ブロックの動きベクトルを予測するようにしたものがあった(例えば、特許文献1参照)。 【特許文献1】特開2006−166459号公報(段落番号〔0078〕〜〔0092〕、図10) 【発明の開示】 【発明が解決しようとする課題】 【0014】 上述したように、FRM、FLD、MBAFFの全符号化タイプに対して、動きベクトル算出時におけるダイレクト・モードを適用できるようにするためには、予測に用いるColPicの動きベクトルを読み出すための制御が非常に複雑になるので、処理負荷が高くなり、また回路構成が複雑になることが問題となっていた。 【0015】 これに対して、従来では、MBColの分割ブロックサイズをすべて最小サイズの4画素×4画素に変換し、変換したブロックごとに予測に用いる動きベクトルを格納しておくことで、読み出し制御を単純化していた。しかし、この手法を採った場合、元のColPicが最小サイズより大きいブロックに分割されていた場合でも、最小サイズで分割した分割数だけのメモリアドレス空間に動きベクトルをすべて格納し、符号化・復号化の際にこれらの空間から必要な動きベクトルを読み出す必要が生じる。このため、符号化・復号化の際の動きベクトルの演算量やメモリアクセス回数が増大して、処理負荷が過大になるという問題があった。また、符号化時においては、生成される符号量が増大してしまい、画像信号の圧縮率を高められないという問題もあった。 【0016】 本発明はこのような点に鑑みてなされたものであり、ダイレクト・モードを用いた動き予測処理の適応範囲が拡張され、かつ、その処理負荷が軽減された動き予測処理装置、そのような装置を備えた画像符号化装置および画像復号化装置を提供することを目的とする。 【課題を解決するための手段】 【0017】 本発明では上記課題を解決するために、図1に示すような動き予測処理装置1が提供される。この動き予測処理装置1は、動画像を一定の領域に分割した基本ブロックを単位としてフレーム間の動き予測処理を行うものであり、動き予測処理の現処理対象画像が参照する参照画像20の動きベクトルを、参照画像20上の水平方向に並列された1列分の基本ブロックに対応するブロックライン20−1……を単位として、ベクトル格納メモリ10を分割したメモリ領域10−1……のいずれかに書き込む書き込み制御手段2と、ベクトル格納メモリ10からFIFO方式の2つのバッファ11および12への、メモリ領域10−1……ごとの動きベクトルの読み出しを、参照画像20および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段3と、各バッファ11および12から順次読み出した動きベクトルを用いて、現処理対象画像の所定の基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段4とを有する。 【0018】 このような動き予測処理装置1では、動き予測処理に用いる参照画像20の動きベクトルを格納するために、複数のメモリ領域10−1……に分割されたベクトル格納メモリ10と、ともにFIFO方式の2つのバッファ11および12とが利用される。書き込み制御手段2は、動き予測処理の現処理対象画像が参照する参照画像20の動きベクトルを、その参照画像20上の水平方向に並列された1列分の基本ブロックに対応するブロックラインを単位として、メモリ領域10−1……のいずれかに書き込む。読み出し制御手段3は、ベクトル格納メモリ10から2つのバッファ11および12へのメモリ領域10−1……ごとの動きベクトルの読み出しを、参照画像20および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する。ベクトル演算手段4は、各バッファ11および12から順次読み出した動きベクトルを用いて、現処理対象画像の所定の基本ブロックの動き予測処理に必要な動きベクトルを予測演算する。 【発明の効果】 【0019】 本発明の動き予測処理装置によれば、参照画像についての動きベクトルが、その数が増加されることなく、ベクトル格納メモリに対して読み書きされ、かつ、ベクトル格納メモリに対する読み書きが、ブロックライン単位の動きベクトルを格納するメモリ領域ごとに行われるので、ベクトル格納メモリに対するアクセス回数が必要最小限に抑制される。また、参照画像および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて、ベクトル格納メモリから2つのバッファへのメモリ領域ごとの動きベクトルの読み出しが制御されるので、これらの組み合わせに関係なく、ベクトル演算手段が各バッファから所望の基本ブロックに対応する動きベクトルを確実に取得できるようになる。従って、参照画像の動きベクトルに基づいて現処理対象画像の所定ブロックの動きベクトルを直接演算する処理の適応範囲を拡張できるとともに、その処理負荷を軽減できる。 【発明を実施するための最良の形態】 【0020】 以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。なお、以下の説明では、画像を分割したブロックの画素サイズについて、例えば16画素×16画素を16×16と省略して表記する。 【0021】 図1は、本発明の実施の形態に係る動き予測処理装置の概要を示すブロック図である。 図1に示す動き予測処理装置1は、例えば、動画像信号を圧縮符号化する符号化装置、および、符号化された動画像信号を復号化する復号化装置に設けられて、フレーム間の動き予測処理を行うものである。この動き予測処理は、動画像の各フレームを一定の領域に分割した基本ブロックを単位として行われる。基本ブロックは、例えば16×16のブロックサイズを有する。 【0022】 本実施の形態に係る動き予測処理装置1は、特に、動き予測処理に用いる参照画像の動きベクトルに基づいて、現処理対象画像の所定ブロックの動きベクトルを直接演算する、いわゆる「ダイレクト・モード」の処理を実行するために設けられるものである。このダイレクト・モードの処理のために、動き予測処理装置1は、書き込み制御手段2と、読み出し制御手段3と、ベクトル演算手段4とを具備する。また、ダイレクト・モードの処理のために、ベクトル格納メモリ10と、2つのバッファ11および12とが利用される。ベクトル格納メモリ10は、複数のメモリ領域10−1,2,3,……に分割されており、領域ごとに連続的なアドレスで書き込みおよび読み出しを行うことが可能となっている。また、バッファ11および12は、それぞれFIFO方式でデータを記憶する。なお、ベクトル格納メモリ10、バッファ11および12の各機能は、どちらも動き予測処理装置1の外部に設けられていても、内部に設けられていてもよい。 【0023】 書き込み制御手段2は、動き予測処理の現処理対象画像が参照する参照画像20の動きベクトルを、その参照画像20上の水平方向に並列された1列分の基本ブロックに対応するブロックライン20−1,2,3,……を単位として、メモリ領域10−1,2,3,……のいずれかに書き込む。 【0024】 読み出し制御手段3は、ベクトル格納メモリ10から2つのバッファ11および12に対して、動きベクトルをメモリ領域10−1,2,3,……ごとに読み出す。このとき、参照画像20および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モード(H.264のMBAFFモードに対応)であるか否かの組み合わせに応じて、メモリ領域10−1,2,3,……のデータをどのようにバッファ11および12に読み出すかを制御する。 【0025】 ベクトル演算手段4は、各バッファ11および12から順次読み出した動きベクトルを用いて、現処理対象画像の所定の基本ブロックの動き予測処理に必要な動きベクトルを予測演算する。すなわち、ベクトル演算手段4は、ダイレクト・モードにおける動きベクトルの演算(ダイレクト演算)を実行するブロックである。 【0026】 ここで、ダイレクト・モードおよびブロック適用型予測モードに対応する動き予測処理機能では、上記の読み出し制御手段3が判別している各画像の状態の組み合わせが非常に多岐にわたることから、制御を簡単にするために、参照画像20の内部で分割されたブロックを、最小サイズのブロック(例えば4×4)に変換し、各ブロックに動きベクトルを割り当ててメモリに記憶していた。このため、元の参照画像20に対して算出されていた数より多くの動きベクトルがメモリに記憶され、それらがダイレクト演算機能に対して読み出されることから、メモリに対するアクセス回数が増大していた。 【0027】 これに対して、本実施の形態の動き予測処理装置1では、参照画像20についての動きベクトルは、最小サイズのブロックに展開されることなく、その数だけベクトル格納メモリ10に格納される。また、ベクトル格納メモリ10に対する読み書きは、ブロックライン20−1,2,3,……を単位として動きベクトルを格納するメモリ領域10−1,2,3,……ごとに行われるので、ブロックライン20−1,2,3,……に相当する必要最小限の動きベクトルが1回のアクセスで(すなわち連続したアドレス指定により)読み書きされる。従って、ベクトル格納メモリ10に対するアクセス回数が必要最小限に抑制されて、ダイレクト演算に伴う処理負荷が軽減されるので、処理速度を高速化し、その消費電力を低減することができる。 【0028】 また、読み出し制御手段3の制御により、参照画像20および現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて、ベクトル格納メモリ10から2つのバッファ11および12へのメモリ領域10−1,2,3.……ごとの動きベクトルの読み出しが制御される。これにより、各画像の条件の組み合わせに応じて、ベクトル演算手段4が必要な動きベクトルをバッファ11および12の出力から確実に取り出せるように、動きベクトルの出力順を変換することができる。すなわち、ベクトル演算手段4は、バッファ11および12から順次動きベクトルを読み出すことで、所望の位置の基本ブロックの動きベクトルを確実に取得して、必要最小限の回数だけ動きベクトルを演算することができる。 【0029】 なお、これらの各画像についての条件の組み合わせと、各メモリ領域10−1,2,3,……からバッファ11および12への読み出し手順とをあらかじめテーブルに記載しておき、このテーブルに従ってベクトル格納メモリ10から2つのバッファ11および12への読み出しを制御することで、読み出し制御手順を一層単純化することができる。 【0030】 以上より、本実施の形態に係る動き予測処理装置1では、ダイレクト・モードを用いた動き予測処理の適応範囲を拡張することができ、なおかつ、その動き予測処理の負荷を軽減することができる。特に、参照画像20と現処理対象画像との間のフレーム/フィールド種別が異なる場合や、少なくとも一方がブロック適用型予測モードである場合でも、比較的簡単な処理でダイレクト演算を確実に実行できるようになる。 【0031】 次に、H.264に基づく符号化および復号化処理を行う画像符号化装置および画像復号化装置を例に挙げて、本発明の実施の形態についてより具体的に説明する。H.264では、16×16のMB(以下、基本MBと呼ぶ)に加え、16×8、8×16、および8×8の4種類のMBが選択可能となっている。さらに、8×8サイズのMBについては、8×8、8×4、4×8、4×4の4種類のサブMB分割を指定することもできる。基本的なアルゴリズムは、符号化処理では、フレームまたはフィールドを基本MBに分割し、それらの基本MBごとに、フレーム内の空間的冗長性を利用したフレーム内予測と、フレーム間の時間的冗長性を利用したフレーム間予測とを適宜切り替えて、入力画像の符号化を行う。復号化処理では、その逆動作が行われる。 【0032】 図2は、実施の形態に係る画像符号化装置の構成を示すブロック図である。 図2に示す画像符号化装置100は、MB分割部101、動きベクトル検出部102、過去のフレームバッファ103、フレーム間予測部104、フレーム内予測部105、現フレームバッファ106、予測モード選択部107、減算器108、直交変換量子化部109、エントロピー符号化部110、逆量子化逆直交変換部111、加算器112、デブロッキングフィルタ113、およびフレームバッファ管理部114を具備する。 【0033】 このような画像符号化装置100では、入力画像は、MB分割部101によって所定の大きさのMBに分割される。動きベクトル検出部102は、入力されたMB単位の画像データと、過去のフレームバッファ103に格納される参照画像のデータとを用いて、対象MBの動きベクトルを検出する。動きベクトルは、通常、周辺領域との相関が高いので、フレーム間予測部104は、周辺領域の動きベクトルを基にして動きベクトル予測値を算出し、動きベクトル検出部102で検出された動きベクトルとの間の予測差分値(MVD)を算出する。一方、フレーム内予測部105は、現フレームバッファ106に格納された画像のフレーム内予測を行う。 【0034】 予測モード選択部107は、フレーム間予測部104とフレーム内予測部105との予測誤差を比較するなどして、当該MBを最も効率よく符号化することができる符号化モードを選択し、符号化モード情報を生成する。この符号化モード情報は、符号化対象情報としてエントロピー符号化部110へ受け渡される。符号化モード情報には、MBを分割した分割MBのサイズと、分割MBをさらに分割したサブMBのサイズが含まれる。 【0035】 予測モード選択部107によりフレーム内予測が選択される場合は、MB分割部101を経由したMBの画像データがそのまま直交変換量子化部109へ出力され、直交変換と量子化が施される。こうして生成された直交変数係数データは、エントロピー符号化部110へ受け渡される。また、この直交変換係数データは、逆量子化逆直交変換部111によってデコードされ、現フレームバッファ106に書き込まれる。 【0036】 予測モード選択部107によりフレーム間予測が選択される場合は、フレーム間予測部104が算出した動きベクトルの予測差分値が符号化対象として選択され、エントロピー符号化部110へ受け渡される。また、フレーム間予測部104では、算出された動きベクトル予測値と過去のフレームバッファ103内の画像データとを基に予測画像が生成され、予測モード選択部107経由で減算器108へ出力される。減算器108では、MB単位の入力画像と、予測画像との差分が算出され、直交変換量子化部109へ出力される。この出力は、逆量子化逆直交変換部111によってデコードされ、加算器112によって予測モード選択部107からの予測画像が加算された後、現フレームバッファ106に書き込まれる。 【0037】 エントロピー符号化部110は、符号化対象データのエントロピー符号化を行い、画像圧縮符号化信号として出力する。また、現フレームバッファ106に格納された参照画像は、デブロッキングフィルタ113によりMB境界が平滑化され、フレームバッファ管理部114を経由して、過去のフレームバッファ103に格納される。 【0038】 図3は、実施の形態に係る画像復号化装置の構成を示すブロック図である。 図3に示す画像復号化装置200は、エントロピー復号化部201、逆量子化逆直交変換部202、加算器203、現フレームバッファ204、フレーム内予測部205、予測モード選択部206、デブロッキングフィルタ207、フレームバッファ管理部208、過去のフレームバッファ209、およびフレーム間予測部210を具備して、図2に示した画像符号化装置100が生成した画像圧縮符号化データを復号化する。 【0039】 画像圧縮符号化データは、エントロピー復号化部201によってエントロピー復号化処理が施された後、逆量子化逆直交変換部202によって逆量子化と逆直交変換が施される。フレーム間予測によって符号化されている場合は、予測差分値(MVD)の形式で符号化されている動きベクトルデータを復号化する。予測モード選択部206は、復号化された符号化モード情報に基づき、フレーム内予測部205またはフレーム間予測部210を選択する。 【0040】 予測モード選択部206によりフレーム内予測部205が選択される場合は、逆量子化逆直交変換部202によって復元された画像が現フレームバッファ204に書き込まれる。予測モード選択部206によりフレーム間予測部210が選択される場合は、フレーム間予測部210は、動きベクトルの予測差分値と、予測対象のブロックの周囲ブロックから算出した動きベクトル予測値とを加算して動きベクトルを復元する。そして、復元された動きベクトルと過去のフレームバッファ209内の参照画像のデータとを基にして、予測画像を復元し、予測モード選択部206経由で加算器203に入力する。この予測画像と、逆量子化逆直交変換部202により復号化された予測誤差とが加算器203で加算されることによって、画像が復号化されて現フレームバッファ204に格納される。 【0041】 現フレームバッファ204に格納された画像データは、デブロッキングフィルタ207によりMB境界が平滑化された後、フレームバッファ管理部208を経由して過去のフレームバッファ209に格納され、復号化された画像データとして出力されるとともに、参照画像としてフレーム間予測部210に利用される。 【0042】 ここで、本実施の形態では、特に、Bピクチャの符号化および復号化の際に、現処理対象ブロックの動きベクトルを、参照画像内の対応するブロックの動きベクトルから演算により直接求めるダイレクト・モードに対応している。画像符号化装置100において、ダイレクト・モードでは、フレーム間予測部104は、表示順で直後の参照画像内の同じ空間位置のブロックの動きベクトルを、ピクチャ間の時間距離に応じて内分し、双方向の動きベクトルを求める。そして、このように予測された動きベクトルが、動きベクトル検出部102で求められた動きベクトルと比較してある程度の精度を満たせば、ダイレクト・モードを示すモード情報のみを符号化対象とし、動きベクトルの予測差分値を符号化対象としない。これにより符号量が圧縮される。また、画像復号化装置200において、ダイレクト・モードが設定されたBピクチャを復号化する場合には、フレーム間予測部210の処理により、参照画像内の同じ空間位置のブロックの動きベクトルから、上記と同様の演算方法により現処理対象ブロックの動きベクトルが復元される。 【0043】 このように、ダイレクト・モードにより動きベクトルを演算するためには、参照画像の動きベクトルをメモリに格納しておき、現処理対象ブロックの動きベクトル演算の際に、参照画像内の対応ブロックの動きベクトルをそのメモリから読み出す必要がある。すなわち、画像符号化装置100のフレーム間予測部104と、画像復号化装置200のフレーム間予測部210の双方に、このような動きベクトル格納用のメモリと、その書き込み・読み出しのための制御機能を設ける必要がある。 【0044】 以下、このようなダイレクト・モード対応のためのメモリ制御機能の構成について、具体的に説明する。以下の実施の形態では、特に、ピクチャごとの符号化タイプとしてFRM、FLD、MBAFFのすべてに対応可能となっている。現処理対象のピクチャ(CurrPic)と、このCurrPicの予測に用いるピクチャ(ColPic)との間における上記の符号化モードの組み合わせ、およびブロック分割方式の組み合わせが多数存在するために、従来ではダイレクト・モードでのメモリに対する動きベクトルの書き込み・読み出しの制御が非常に複雑になり、メモリアクセス回数が膨大になっていた。これに対して、本実施の形態では、必要最小限の動きベクトルのみをメモリに格納するようにして、メモリアクセス回数を抑制するとともに、2つの内部バッファと、符号化モードおよびブロック分割方式の組み合わせに応じたテーブルとを用いて読み出しを制御することで、メモリアクセス制御を簡略化する。 【0045】 図4は、ダイレクト・モード対応のためのメモリ制御機能の構成例を示すブロック図である。 なお、以下の説明では、例として、画像復号化装置200のフレーム間予測部210に設けられるメモリ制御機能を挙げるが、画像符号化装置100のフレーム間予測部104にも同様の構成のメモリ制御機能を設けることができる。 【0046】 図4に示すように、フレーム間予測部210は、動きベクトルの演算を行うMV生成部310、ダイレクト・モードのために動きベクトルを一時的に保持する外部メモリ320、上記のメモリ制御機能としてのMV書き込み制御部330、2つの内部バッファ341および342、MV読み出し制御部350、および分割サイズ統合部360を具備している。なお、ここでは、外部メモリ320は、フレーム間予測部210(または画像復号化装置200)を構成する回路の外部に設けられているものとする。例えば、この外部メモリ320が他の機能ブロックとの間で共用されてもよい。 【0047】 MV生成部310は、動き補償のための動きベクトルを生成するブロックであり、基本的には、入力された画像圧縮符号化データから復元された動きベクトルの予測差分値を基に、動きベクトルを復元する。また、このMV生成部310は、外部メモリ320から読み出されたColPicの動きベクトルを基にCurrPicの動きベクトルを演算するダイレクトMV(Direct MV)演算部311を備えている。フレーム間予測部210では、復号対象のブロックにダイレクト・モード以外の予測モードが設定されていた場合は、予測差分値を基に復元された動きベクトルを用いて動き補償が行われ、ダイレクト・モードが設定されていた場合には、ダイレクトMV演算部311で算出された動きベクトルを用いて動き補償が行われる。そして同時に、動き補償に用いられた動きベクトルが、MV書き込み制御部330を介して外部メモリ320に格納される。 【0048】 なお、図4の構成を画像符号化装置100に適用する場合、MV生成部310では、ダイレクト・モード以外の予測モードが設定された場合には、動きベクトル検出部102で検出された動きベクトルがMV書き込み制御部330に出力され、ダイレクト・モードが設定されていた場合には、ダイレクトMV演算部311で演算された動きベクトルがMV書き込み制御部330に出力される。 【0049】 外部メモリ320は、少なくとも1フレーム分のColPicの動きベクトルを格納できる記憶容量を備えたFIFO(First In/First Out)方式のメモリであり、例えばSDRAM(Synchronous Dynamic Random Access Memory)などからなる。外部メモリ320は、後述するように、少なくとも、16×16の基本MBが水平方向に並列されたライン(以下、MBラインと呼ぶ)のライン数N(Nは2以上の整数)だけのメモリ領域320−1〜320−Nに分割されている。メモリ領域320−1〜320−Nはそれぞれ同じ記憶容量を備えている。 【0050】 MV書き込み制御部330は、MV生成部310からの動きベクトルを、ColPicの動きベクトルとして外部メモリ320に対して書き込むための書き込み動作を制御する。このとき、後述するように、このColPicとこれを参照するCurrPicの各符号化タイプがどのような組み合わせであっても対応し易くなるように、ColPicの動きベクトルを外部メモリ320の適切な記憶領域に書き込む。 【0051】 このMV書き込み制御部330は、外部メモリ320に対する書き込みアドレスのオフセット値を出力するオフセット出力部331を備えている。オフセット出力部331は、入力されたCurrPicの符号化タイプがMBAFFか否かを示すフラグである「MBAFF」と、FLDであるか否かを示すフラグである「FIELDFLG」とを基に、CurrPicの符号化タイプを判別する。また、現処理対象のMB(CurrMB)がフィールド構造の場合は、「BOTTOMFLG」を基にフィールド種別(トップ・フィールドまたはボトム・フィールド)を判別する。さらに、「MBPOSY」を基にCurrMB(ここでは16×16の基本MBを指す)の垂直位置を判別する。そして、これらの判別結果を基にオフセット値を発生する。MV書き込み制御部330は、オフセット出力部331からのオフセット値を先頭にして外部メモリ320に対する書き込みアドレスWADを発生し、書き込みイネーブル信号WENの出力期間に書き込みデータWDTとして動きベクトルを出力する。 【0052】 内部バッファ341および342は、それぞれFIFO方式のバッファメモリであり、MV読み出し制御部350からの制御の下で、外部メモリ320から読み出された動きベクトルを一時的に格納した後、MV読み出し制御部350に出力する。 【0053】 MV読み出し制御部350および分割サイズ統合部360には、動きベクトルの演算対処とされているCurrPicに関する「MBPOSY」が変化するごとに、外部メモリ320のメモリ領域320−1〜320−Nの先頭を示すように読み出しアドレスをオフセットさせるオフセット出力部370が設けられている。また、MV読み出し制御部350および分割サイズ統合部360には、CurrPicとColPicの各符号化タイプの組み合わせに応じて外部メモリ320からの動きベクトルの読み出しモードを判定するための読み出しモード判定テーブル381と、この読み出しモードとMBColのブロック分割状態(以下、MBタイプと呼ぶ)とに応じてCurrMBのMBタイプを判定するためのMBタイプ判定テーブル382とが接続されている。 【0054】 MV読み出し制御部350は、「MBAFF」「FIELDFLG」「BOTTOMFLG」の各フラグに基づくCurrPicの符号化タイプおよびフレーム構造/フィールド構造の種別(以下、フレーム/フィールド種別と呼ぶ)と、ColPicの符号化タイプおよびフレーム/フィールド種別とを基に、読み出しモード判定テーブル381に従って外部メモリ320から動きベクトルを読み出し、内部バッファ341および342を介してそれらの動きベクトルを分割サイズ統合部360に出力する。ここで、読み出しモード判定テーブル381に従い、必要に応じて外部メモリ320からの動きベクトルを2つの内部バッファ341および342に振り分けて読み出すことで、CurrMB内の各ブロックの動きベクトルをダイレクト演算するために必要な動きベクトルが適切な順番で確実に読み出される。 【0055】 分割サイズ統合部360は、MBタイプ判定テーブル382に従い、MV読み出し制御部350が読み出した動きベクトルを適用すべきCurrMBのMBタイプを、ColPicのMB(MBCol)のMBタイプに応じて決定する。この処理により、CurrMB内で分割されたブロックが必要に応じて統合されてブロック数が減少し、ダイレクトMV演算部311に演算させる動きベクトルの数(符号化時には符号化対象となる動きベクトルの数)を減らすことができる。 【0056】 以下、上記のメモリ制御機能について、より詳しく説明する。まず、外部メモリ320に対する動きベクトルの書き込み制御について説明する。 図5は、MV書き込み制御部の内部構成例を示すブロック図である。 【0057】 図5に示すように、MV書き込み制御部330は、上述したオフセット出力部331と、ライトアドレス生成部332と、ライトデータ生成部333とを備えている。ライトアドレス生成部332は、オフセット出力部331からのオフセット値をMBラインごとの書き込みアドレスの先頭として、MV生成部310からの動きベクトルMVと、MBごとのヘッダ情報とを書き込むための書き込みアドレスWADを生成する。ライトデータ生成部333は、MV生成部310において動きベクトルMVが生成される際に識別されたMBの分割サイズの情報を基にヘッダ情報を生成し、そのヘッダ情報と動きベクトルMVとを書き込みデータWDTとして外部メモリ320に出力する。以上の構成により、MV書き込み制御部330は、次の図6に示すようなフォーマットで動きベクトルMVを外部メモリ320に格納する。 【0058】 図6は、外部メモリにおけるColPic格納フォーマットを示す図である。 なお、この図6において、「MB_POS」は、16×16の基本MBのピクチャ内での水平方向、垂直方向の位置を示す。また、ラインサイズ(LINESIZE)は、外部メモリ320に割り当てられた1MBライン分の記憶領域の容量を示し、これらはメモリ領域320−1〜320−Nのそれぞれの容量に対応する。 【0059】 符号化タイプ(Coding Type)がFRMの場合、動きベクトルは、外部メモリ320内のメモリ領域320−1〜320−Nに対して、MBラインごとに順次、格納されていく。 【0060】 また、符号化タイプがFLDの場合、まず、トップ・フィールドのMBラインの動きベクトルが、メモリ領域320−1〜320−Nのうちの奇数番号領域に順次格納された後、続いてボトム・フィールドのMBラインの動きベクトルが偶数番号領域に順次格納される。これにより、トップ・フィールドのMBライン、およびボトム・フィールドのMBラインの各動きベクトルが、外部メモリ320内のメモリ領域320−1〜320−Nに対して交互に格納される。すなわち、フィールド構造の画像データがフレーム構造のデータ順に変換された状態となる。 【0061】 符号化タイプがMBAFFの場合、ピクチャ内のMBは上下に隣接した基本MBのペア(MBペア)を単位として処理されることから、外部メモリ320においては、水平方向に並列されたMBペアの1列(MBペア・ラインと呼ぶ)分に対して、2ラインサイズ分の領域(すなわちメモリ領域320−1〜320−Nのうちの隣接する2領域)が割り当てられて、MBペアの処理順に外部メモリ320に格納される。 【0062】 ここで、上記のいずれの符号化タイプの場合にも、MB内のブロック分割状態はMBごとに異なるので、メモリ領域320−1〜320−N(MBAFFの場合は2領域のそれぞれ)に格納される情報量はそれぞれ異なる。符号化タイプがFRMおよびFLDの場合には、各メモリ領域320−1〜320−Nでは、対応するMBラインの動きベクトルがすべて格納されたときに余剰スペースが存在する場合でも、次のMBラインの動きベクトルは次のメモリ領域の先頭から書き込まれる。同様にMBAFFの場合には、MBペア・ライン単位の各割り当て領域では、対応するMBペア・ラインの動きベクトルがすべて格納されたときに余剰スペースが存在する場合でも、次のMBペア・ラインの動きベクトルは次の割り当て領域の先頭から書き込まれる。 【0063】 このような書き込みが行われることにより、従来のように、ColPic内のブロックをすべて最小単位の4×4のサブMBに変換し、このサブMBの数だけ動きベクトルをメモリ上に展開した場合と比較して、メモリ内に格納される動きベクトルの数が抑制される。従って、書き込み時のメモリアクセス回数、および、この後にMV読み出し制御部350によって動きベクトルが読み出される際のメモリアクセス回数の双方ともに抑制することができ、処理速度を高めることができる。 【0064】 次に、外部メモリ320からのデータ読み出し制御について詳しく説明する。 まず、図7は、読み出しモード判定テーブルの内容を示す図である。 読み出しモード判定テーブル381には、図7に示すように、ColPicの符号化タイプおよびフレーム/フィールド種別と、CurrPicの符号化タイプおよびフレーム/フィールド種別とのすべての組み合わせに対して、「0」〜「6」までの7種類の読み出しモードのいずれかが設定されている。なお、図7以降の図では、MBのフレーム/フィールド種別について、フレーム構造のMBを「frm」、フィールド構造のMBを「fld」と表す。 【0065】 MV読み出し制御部350は、読み出しモード判定テーブル381を参照し、ColPicの符号化タイプおよびフレーム/フィールド種別と、CurrPicの符号化タイプおよびフレーム/フィールド種別との組み合わせに対応する読み出しモードを選択し、そのモードに従って、外部メモリ320に格納された動きベクトルを内部バッファ341および342に読み出す。 【0066】 また、図7では、各読み出しモードにおいて使用する内部バッファ341および342の数も参考のために記載しており、「1」の場合は内部バッファ341のみが使用され、「2」の場合は内部バッファ341および342の両方が使用されることを意味する。さらに、読み出しモード判定テーブル381には、CurrMBとMBColとの間のフレーム/フィールド種別の組み合わせに応じたモード情報である「MBColMode」も設定されている。 【0067】 なお、CurrPicの符号化タイプがMBAFF、ColPicの符号化タイプがFRMとなる組み合わせは、H.264の規格上存在しないため、読み出しモード判定テーブル381には設定されていない。 【0068】 ここで、図8および図9を用いて、MBColMode0〜4によって分類されるCurrMBとMBColとの間の関係について説明し、その後に、各読み出しモードでの読み出し手順について具体的に説明する。 【0069】 図8および図9は、CurrMBとMBColとの間のフレーム/フィールド種別の代表的な組み合わせと、ブロック間の対応関係について説明するための図である。 MBColMode0では、CurrMBおよびMBColがともにフレーム構造(ただし、符号化タイプがともにFRM)になっており、この場合のCurrMBおよびMBColの最小のブロックは、図8(A)のように、ともに4×4のサイズとなる。従って、CurrMB内の各ブロックの動きベクトルは、MBCol内の同じ位置のブロックの動きベクトルからダイレクト演算することができるので、ダイレクト演算の際にはMBCol内のブロックをブロック処理順に取得できればよい。なお、図8および9では、ブロックの中に数字が付されているが、この数字は、CurrMB内のブロックの動きベクトルが、同じ数字が付されたMBCol内のブロックから演算できることを意味している。 【0070】 MBColMode1では、CurrMBおよびMBColがともにフレーム構造(ただし、符号化タイプがともにMBAFF)、あるいは、CurrMBおよびMBColがともにフィールド構造(符号化タイプはそれぞれFRMまたはMBAFFのいずれか)になっている。これらの組み合わせでは、図8(B)のように、MBColの最小ブロックは4×4であるが、CurrMBの最小ブロックは8×8となる。このため、CurrMB内のMB501〜504の各動きベクトルは、それぞれMBCol内のサブMB505〜508のみからダイレクト演算される。 【0071】 MBColMode2および3では、CurrMBがフレーム構造(符号化タイプはFRMまたはMBAFFのいずれか)、MBColがフィールド構造(符号化タイプはFLD)になっている。ただし、MBColMode2は、CurrMBの奇数ライン演算時に対応し、MBColMode3は、CurrMBの偶数ライン演算時に対応する。これらの組み合わせでは、図9(A)および(B)のように、MBColの最小ブロックは4×4であるが、CurrMBの最小ブロックは8×8となる。 【0072】 MBColMode2では、図9(A)に示すように、CurrMB内のMB511〜514の各動きベクトルは、それぞれMBCol内のサブMB515〜518からダイレクト演算される。一方、MBColMode3では、図9(B)に示すように、CurrMB内のMB521〜524の各動きベクトルは、それぞれ図9(B)と同じMBCol内のサブMB525〜528からダイレクト演算される。従って、上記の符号化タイプの組み合わせでは、CurrMBの奇数ライン、偶数ラインの各ベクトル演算のために、それぞれ同じMBColのデータを個別に取得する必要がある。 【0073】 MBColMode4は、上記各モード以外の場合に適用される。図9(C)ではこれらのうち、CurrMBがフィールド構造(符号化タイプはFLD)、MBColがフィールド構造(符号化タイプはFLD)の場合を示している。この場合、CurrMBの動き予測には、トップ・フィールド用およびボトム・フィールド用に上下に隣接する2つのMBColをそれぞれ参照する必要がある。図9(C)に示すように、CurrMB内のMB531および532の各動きベクトルは、それぞれMBCol内のサブMB535および536からダイレクト演算され、CurrMB内のMB533および534の動きベクトルは、1つ下側に隣接するMBCol内のサブMB537および538からそれぞれダイレクト演算される。 【0074】 次に、図10〜図12は、各読み出しモードでの読み出し手順について説明するための図である。また、図13〜図19は、各読み出しモードでのMBColとMBColとの対応について説明するための図である。 【0075】 なお、図10〜図12において、丸印の中の数字はデータ読み出しの順番を示している。また、図13〜図18において、上段は、外部メモリ320に対するMBColの書き込み順、中段は、読み出しモードを適用したときの外部メモリ320からのMBColの読み出し順、下段は、CurrMBのダイレクト演算時の処理順をそれぞれ示しており、点線矢印は、上段からそれぞれデータの書き込み順、読み出し順、演算処理順を示している。また、基本MB内のブロック分割状態についてはあくまで例であり、「MV0,MV1,……」は、各基本MBに含まれる動きベクトルを、基本MB内での処理順に従って記載したものである。 【0076】 読み出しモード0は、CurrPic、ColPicの符号化タイプがともにFLDの場合に設定される。このような組み合わせの場合は、MBColとCurrMBの関係は図8(B)のようになるので、各フィールドのCurrMBの動きベクトルを演算するには、それぞれ対応するフィールドのMBColを外部メモリ320から順次読み込めばよい。 【0077】 このことから、読み出しモード0では、図10(A)に示すように、トップ・フィールドのデータ読み出し時には、外部メモリ320内のトップ・フィールドのMBライン(Top_0,Top_1,……)のデータを、順次内部バッファ341に対して読み出す。すなわち、外部メモリ320上のメモリ領域320−1〜320−Nのうち、奇数番号の領域のデータが順次内部バッファ341に読み出される。また、ボトム・フィールドのデータ読み出し時には、同様に、ボトム・フィールドのMBライン(Bottom_0,Bottom_1,……)のデータ(すなわち、偶数番号のメモリ領域のデータ)が順次内部バッファ341に読み出される。 【0078】 ここで、図13では、上記符号化タイプの組み合わせでのトップ・フィールドに対応するColPic601およびCurrPic602を示している。ColPic601のデータは、図13の上段に示すような順序で外部メモリ320に格納されているので、ColPic601のデータを外部メモリ320からフィールド別にメモリ領域順に読み出したときのMBColの出力順(図13の中段参照)は、同図下段に示すように、CurrPic602内のCurrMBをフィールド別に処理する際の処理順と一致する。従って、図10(A)の読み出し順でトップ・フィールド(またはボトム・フィールド)のMBColを順次内部バッファ341に転送し、この内部バッファ341からMBごとに順次データを取得することで、ダイレクト・モードが設定されたCurrMB(例えばMB603)の演算に必要なMBCol(例えばMB604)の動きベクトルを確実に取得できる。 【0079】 読み出しモード1は、CurrPic、ColPicの符号化タイプがそれぞれFLD、FRMの場合に設定される。この符号化タイプの組み合わせでは、図9(C)で説明したように、CurrMBのトップ・フィールド用とボトム・フィールド用の各動きベクトルを演算するために、上下に隣接する2つのMBColのデータが必要となる。このため、読み出しモード1では、図10(B)に示すように、2つの内部バッファ341および342を使用し、外部メモリ320上の隣接する2つのMBライン(MBLine_0とMBLine_1など)のデータ(すなわち隣接するメモリ領域のデータ)をそれぞれ並列に内部バッファ341および342に読み出す。 【0080】 ここで、ColPic611のデータは、図14の上段のような順序で外部メモリ320に格納されている。一方、CurrPic612内のCurrMBは、フィールドごとに図14の下段のような順で処理される。例えば、CurrPic612内のMB613に対応するCurrMBにダイレクト・モードが設定されていたとすると、このMB613の動きベクトルをダイレクト演算するためには、ColPic611内のMB614および615の両方のデータが必要となる。 【0081】 そこで、読み出しモード1では、図14の中段に示すように、MB614のデータを含むMBラインと、MB615のデータを含むMBラインとがそれぞれ内部バッファ341および342に並列に供給される。従って、内部バッファ341および342のそれぞれからMBごとに順次データを取得することで、所望のMBCol(ここではMB614および615)のデータを確実に取得できる。 【0082】 読み出しモード2は、CurrPic、ColPicの符号化タイプがそれぞれFRM、MBAFFの場合に設定される。図15の上段に示すように、符号化タイプがMBAFFであるColPic621のデータは、MBペア・ラインごとに外部メモリ320の各メモリ領域320−1〜320−Nに格納されている。一方、図15の下段では、トップ・フィールド(またはボトム・フィールド)に対応するCurrPic622を示しているが、このCurrPic622上の所望のCurrMBの動きベクトルをダイレクト演算したい場合には、ColPic621上のデータをMBペア単位で取得する必要がある。例えば、CurrPic622上のMB623のダイレクト演算のためには、ColPic621上のMB624および625のデータが必要となる。 【0083】 従って、読み出しモード2では、図15の中段および図11(A)に示すように、外部メモリ320内のMBペア・ライン(図11(A)におけるMBLine0,1のペア、MBLine2,3のペア、……)のデータを、順次内部バッファ341に読み出せばよい。すなわち、実際の動作では、メモリ領域320−1〜320−Nのデータを順次内部バッファ341に転送し、内部バッファ341の出力からMBペア単位でデータを読み出すことで、所望のMBColの動きベクトルを確実に取得できる。 【0084】 読み出しモード3は、CurrPic、ColPicの符号化タイプがそれぞれFRM、FLDの場合に設定される。このような組み合わせの場合は、図9(A)および(B)で説明したように、CurrPicの奇数ラインの動きベクトルを、ColPicの所定MBラインのデータから演算した後、その同じColPicのMBラインのデータから、CurrPicの偶数ラインの動きベクトルを演算する必要がある。このため、読み出しモード3では、図11(B)に示すように、外部メモリ320内のトップ・フィールドのMBライン(Top_0,Top_1,……)のデータ(すなわち奇数番号のメモリ領域のデータ)が2回ずつ、内部バッファ341に順次読み出される。 【0085】 ここで、ColPic631のデータは、図16の上段に示すように、まずトップ・フィールドのMBラインのデータが外部メモリ320内の奇数番号のメモリ領域に書き込まれた後、ボトム・フィールドのMBラインのデータが偶数番号のメモリ領域に書き込まれる。そして、読み出しモード3では、図16の中段に示すように、奇数番号のメモリ領域からMBColのデータが2回、内部バッファ341に転送された後、次の奇数番号のメモリ領域からMBColのデータが同様に2回、内部バッファ341に転送される。 【0086】 これにより、内部バッファ341からは、同じMBライン上のMBColのデータが2回連続して出力される。従って、図16の下段のように、CurrPic632内の例えばMB633の動きベクトルをダイレクト演算したいときは、まず、奇数ラインの演算のためにColPic631のMB634のデータを取得でき、続いて偶数ラインの演算のために同じMB634のデータを取得できるようになる。 【0087】 読み出しモード4は、CurrPic、ColPicの符号化タイプがともにFRMの場合に設定される。このような組み合わせの場合は、MBColとCurrMBの関係は図8(A)のようになるので、CurrMBの動きベクトルをダイレクト演算するには、MBColのデータをブロック処理順に読み込めばよい。従って、読み出しモード4では、図12(A)のように、外部メモリ320内のMBライン(MBLine0,MBLine1,……)のデータ(すなわちメモリ領域320−1〜320−Nのデータ)を、内部バッファ341にMBライン順に読み出す。なお、図17では、ColPic641のデータを外部メモリ320からメモリ領域順に読み出したときのMBColの出力順が、CurrPic642内のCurrMBの処理順と一致することを示している。 【0088】 読み出しモード5は、CurrPic、ColPicの符号化タイプがそれぞれMBAFF、FLDの場合に設定される。このような組み合わせの場合は、MBColとCurrMBとの関係は、図9(A)および(B)に示したCurrMBを、それぞれMBペアの上側、下側と考えたときと同じである。このため、CurrPicではMBペアを単位として動きベクトルが演算されるため、外部メモリ320のMBColのデータを上下の組み合わせで順次取得する必要がある。そこで、読み出しモード5では、図12(B)に示すように、隣接するMBラインのうちの上側のデータ(例えばTop_0のデータ)を内部バッファ341に対して、下側のデータ(例えばBottom_0のデータ)を内部バッファ342に対して、それぞれ並列に読み出す。すなわち、メモリ領域320−1〜320−Nのうち、奇数番号のメモリ領域を内部バッファ341に、偶数番号のメモリ領域を内部バッファ342に読み出す。 【0089】 図18の上段では、ColPic651のデータの外部メモリ320への書き込み順を、トップ・フィールド、ボトム・フィールドの各データ(ColPic651aおよび651b)として示している。図6のフォーマットにより、各フィールドにおける同じMBラインのデータは、外部メモリ320上では隣接するメモリ領域に格納される。一方、図18の下段のように、CurrPic652のダイレクト演算はMBペア単位で実行される。 【0090】 従って、図18の中段のように、隣接するMBラインのうちの上側および下側のデータをそれぞれ内部バッファ431および432に対して並列に転送することにより、各内部バッファ341および342からMBペア単位でデータを確実に取り出すことができるようになる。例えば、CurrPic652上のMBペア653にダイレクト・モードが設定されていたときには、ColPic651上のMB654および655のデータを連続して取得し、演算に適用できるようになる。 【0091】 読み出しモード6は、CurrPic、ColPicの符号化タイプがともにMBAFFの場合に設定される。この場合には、図19の上段および下段に示すように、ColPic661のデータの外部メモリ320への書き込み順と、CurrPic662の処理順とが一致する。従って、読み出しモード6では、図12(C)および図19の中段に示すように、外部メモリ320内のMBペア・ライン(MBLine0,1のペア、MBLine2,3のペア、……)のデータが、順次内部バッファ341に読み出される。すなわち、メモリ領域320−1〜320−Nのデータが順次内部バッファ341に読み出されることになる。 【0092】 ここで、図20は、MV読み出し制御部が備える内部バッファの読み出し制御機能の構成例を示すブロック図である。 MV読み出し制御部350は、上記機能として、リードアドレス生成部351および352と、ヘッダ情報解析部353および354と、ColMV格納部355および356と、セレクタ357とを具備している。 【0093】 リードアドレス生成部351および352は、それぞれ内部バッファ341および342に対する読み出しアドレスを生成する。リードアドレス生成部351および352は、オフセット出力部370からのオフセット値の出力タイミングを基に、CurrPic内のMBラインごとの処理タイミングと同期する。セレクタ357は、リードアドレス生成部351および352からの出力アドレスを、それぞれ内部バッファ341および342に供給する。 【0094】 ヘッダ情報解析部353および354は、それぞれ内部バッファ341および342に格納されたColPicのデータのうち、MBColごとに付加されているヘッダ情報を取得する。ヘッダ情報には、MBColの分割サイズの情報が格納されているので、ヘッダ情報解析部353および354は、そのヘッダ情報を解析してMBColのブロック分割数を判別し、それぞれリードアドレス生成部351および352に出力する。また、ヘッダ情報から抽出した分割サイズの情報は、分割サイズ統合部360に対しても出力される。 【0095】 リードアドレス生成部351および352は、供給されたブロック分割数の分だけ、出力する読み出しアドレスをインクリメントする。これにより、内部バッファ341および342からは、MBColに含まれている動きベクトルが読み出される。内部バッファ341および342からの動きベクトルは、それぞれColMV格納部355および356に供給されて一旦格納された後、分割サイズ統合部360に出力される。 【0096】 図21は、2つの内部バッファを用いた場合のデータ読み出しを模式的に説明するための図である。なお、この図21(次の図22も同様)では、基本MB内の各ブロックの動きベクトルを、基本MB内の処理順に従って「MV0,MV1,……」と示している。 【0097】 図21では、例として読み出しモード1の場合について示している。この図において、ColPic701の動きベクトルは、外部メモリ320のメモリ領域320−1〜320−Nのそれぞれに対してMBラインごとに格納される。ColPic701では、基本MB(MBCol)ごとにブロックの分割サイズが異なるため、同図の中段に示すように、外部メモリ320のメモリ領域320−1〜3に格納される動きベクトルの数はそれぞれ異なる。すなわち、各MBラインの動きベクトルは可変長データとして外部メモリ320に格納される。 【0098】 このような状態から、隣接するメモリ領域(ここではメモリ領域320−1および320−2)のデータが並列に読み出され、それぞれ内部バッファ341および342に対して転送される。このとき、1つのMBラインに対応する動きベクトルを、1つのメモリ領域から連続したアクセスにより(すなわち、連続した読み出しアドレスを指定することにより)読み出すことができる。 【0099】 内部バッファ341および342でのデータ格納状態は、同図の下段のようになる。この状態から、ヘッダ情報解析部353および354が、内部バッファ341および342からヘッダ情報を並列に読み出して、ブロック分割数をリードアドレス生成部351および352に通知することで、その都度、ブロック分割数だけの動きベクトルが各内部バッファ341および342から出力される。このような制御により、例えばColPic701の基本MB702および703の動きベクトルを、内部バッファ341および342から同時に(あるいは連続的に)出力させ、ダイレクト演算に用いることが可能となる。 【0100】 また、図22は、1つの内部バッファを用いた場合のデータ読み出しを模式的に説明するための図である。 図22では、例として読み出しモード6の場合について示している。この図において、ColPic711の動きベクトルは、MBペア・ライン単位で、外部メモリ320のメモリ領域320−1〜320−Nのうちの隣接する2つの領域に格納される。この場合も、各MBペア・ラインの動きベクトルは可変長データとして外部メモリ320に格納される。 【0101】 このような状態から、隣接するメモリ領域(例えば、メモリ領域320−1,320−2)のデータが内部バッファ341に転送される。このとき、MBペア・ライン単位の動きベクトルを連続したアクセスで読み出すことができる。 【0102】 内部バッファ341および342でのデータ格納状態は、同図の下段のようになるが、このように内部バッファ342にデータが格納されていない場合、ヘッダ情報解析部353のみが内部バッファ341からヘッダ情報を読み出し、ブロック分割数をリードアドレス生成部351に通知することで、そのブロック分割数だけの動きベクトルが内部バッファ341から出力される。これにより、例えばColPic711のMBペアである基本MB712および713の動きベクトルを、内部バッファ341から連続して取り出し、ダイレクト演算に用いることが可能となる。 【0103】 ここでさらに、2つの内部バッファ341および342を用いた場合(読み出しモード1)のデータ読み出し手順の具体例を挙げて説明する。図23は、以下のデータ読み出し手順の説明に用いるMBラインのブロック構成例を示す図である。 【0104】 ここでは、図23に示すようなブロック構造を持つMBライン721および722の各データが、外部メモリ320内の隣接するメモリ領域に記憶されているものとする。この図23に示すように、MBライン721および722は、MBCol731〜735、MBCol741〜745のそれぞれ5つの基本MBから構成されるが、MBライン721および722のそれぞれの先頭からの基本MBのブロック分割数や分割ブロックの大きさはまったく異なっている。 【0105】 図24は、図23に示すような隣接するMBラインのデータを2つの内部バッファに格納する際のタイムチャートを示す図である。 なお、図24において、WEN_Buf1およびWEN_Buf2は、それぞれ内部バッファ341および342に対する書き込みイネーブル信号を示し、WAD_Buf1およびWAD_Buf2は、それぞれ内部バッファ341および342に対する書き込みアドレスを示し、WDT_Buf1およびWDT_Buf2は、それぞれ内部バッファ341および342に対する書き込みデータを示す。 【0106】 ここでは、例として、図23に示したブロック構造を持つMBライン721および722のデータを、それぞれ内部バッファ341および342に並列に転送する際の動作例を示す。上述したMV書き込み制御部330の処理により、外部メモリ320には、各MBColのデータとして、ヘッダ情報に続いて動きベクトルのデータが格納されている。ヘッダ情報には、MBColの最小で8×8までのブロック分割サイズを示す「MB分割サイズ」と、8×8のMB内でのサブMBの分割サイズを示す「サブMB分割サイズ(0)〜(3)」が格納されている。なお、サブMB分割サイズ(0)〜(3)は、MB分割サイズが8×8のときだけ生成される。 【0107】 スライスの先頭となるMBライン721および722の先頭データの読み出しは、タイミングT1において同時に開始される。期間P11〜P15では、それぞれMBライン721内のMBCol731〜735のヘッダ情報および動きベクトルの各データが内部バッファ341に転送される。また、期間P21〜P25では、それぞれMBライン722内のMBCol741〜745のヘッダ情報および動きベクトルの各データが内部バッファ342に転送される。 【0108】 図25は、2つの内部バッファからデータを読み出す際のタイムチャートを示す図である。 なお、図25において、REN_Bufは、内部バッファ341および342に対して出力する読み出しイネーブル信号を示し、RAD_Bufは、内部バッファ341および342に対して出力する読み出しアドレスを示し、RDT_Bufは、内部バッファ341および342から読み出したデータを示す。 【0109】 図25において、期間P31,P33,P35,P37は、内部バッファ341からデータが読み出される期間であり、期間P32,P34,P36,P38は、内部バッファ342からデータが読み出される期間である。各期間では、最初にヘッダ情報解析部353または354によってヘッダ情報が読み込まれた後、そのヘッダ情報から判別されたブロック分割数分の読み出しアドレスが発行されて、1つのMBColに対応する動きベクトルが読み出される。 【0110】 この図25の例では、ヘッダ情報解析部353および354が、内部バッファ341および342から交互にヘッダ情報を読み込み、それに応じて動きベクトルの読み出しが直列に実行されている。これにより、上下に隣接するMBCol(例えば、図24のMBCol731および741、MBCol732および742など)の動きベクトルを、連続した期間に出力することができる。 【0111】 なお、この他の動作例として、ヘッダ情報解析部353および354が、各内部バッファ341および342からヘッダ情報を同時に読み込み、動きベクトルを各内部バッファ341および342から並列に読み出させて、1つのMBColに対応するデータ読み出しが終了すると、次のヘッダ情報を読み込むようにしてもよい。 【0112】 以上のように、本実施の形態では、ColPicとCurrPicとの間の符号化タイプ、フレーム/フィールド種別、およびブロック分割数の組み合わせに関係なく、CurrMBの動きベクトルのダイレクト演算に必要なMBColのデータを、外部メモリ320から確実に取り出すことができる。また、これらの組み合わせに応じた読み出し方法をテーブルにより選択するようにしたこと、ColPicのデータを格納する外部メモリ320を固定容量の領域に分割して、MBラインごと、またはMBペア・ラインごとにデータを格納したこと、外部メモリ320から2つの内部バッファ341および342を介して出力するようにしたことにより、比較的単純な回路構成によって上記効果を実現できる。特に、ColPicとCurrPicとの間でフレーム/フィールド種別が異なる場合や、符号化タイプとしてMBAFFが設定されていた場合でも、単純な回路構成によりダイレクト・モードに確実に対応できることの効果が大きい。 【0113】 また、ColPicの動きベクトルを外部メモリ320に格納する際には、従来のように動きベクトルをすべて4×4の最小ブロック単位に展開することなく、元のMBColで生成された動きベクトルのみを格納するので、書き込みおよび読み出しの際の外部メモリ320へのアクセス回数およびアクセス時間を大幅に減少させることができる。特に、図22および図24で説明したように、MBライン単位またはMBペア・ライン単位の動きベクトルが可変長データとなるにもかかわらず、これらの単位のデータを連続したメモリアクセスにより読み出すことができるので、読み出しに要する時間や消費電力を大幅に抑制することができる。また、読み出される動きベクトルの数が減少したことで、符号化時においては発生する符号量が減少し、画質が低下することなく、画像データの圧縮率が高められる。 【0114】 また、所望の位置のMBColを確実に取り出すことができることから、現処理対象のMBの位置が途中で戻った場合でも容易に対応できる。さらに、上記の構成を用いることにより、ピクチャの途中でスライス・タイプ(Slice Type)が変更された場合や、スライスの境界において参照するColPicが変更された場合などにも、容易に対応することができる。 【0115】 図26は、スライス・タイプがピクチャの途中で変更する場合の動作を説明するための図である。 H.264では、ピクチャの途中でスライス・タイプを変更することが可能となっている。図26に示すCurrPic801では、CurrMB802とCurrMB803との間で、スライス・タイプがPからBに変更されている。このとき、CurrMB803にダイレクト・モードが設定されていた場合でも、上記のような構成を用いて、CurrMB803が参照するColPicのデータを外部メモリ320に格納しておくことで、CurrMB803に対応するMBColの動きベクトルを上述した簡単な処理で確実に取り出すことができる。すなわち、上記構成では、ColPicの動きベクトルをMBライン単位あるいはMBペア・ライン単位で外部メモリ320から読み出し、ラインの先頭から必要なMBColの位置を探索するので、必要なMBColの動きベクトルを簡単な処理で取得できる。 【0116】 図27は、スライス境界において参照するColPicが変更された場合の動作を説明するための図である。 H.264では、さらに、スライスの境界において参照画像を変更することも可能となっている。図27(A)は、このような設定が行われたCurrPic811を示しており、CurrMB812とCurrMB813との間がスライス814および815の境界となっている。また、同図(B)は、CurrPic811と、スライス境界の前後で参照されるピクチャ816および817との関係を示している。すなわち、CurrMB812を含むスライス814はピクチャ816をColPicとして予測符号化され、CurrMB813を含むスライス815はピクチャ817をColPicとして予測符号化される。このような場合でも、ピクチャ816および817の動きベクトルを外部メモリ320に格納しておくことで、参照画像が変更された場合でも、必要なMBColの動きベクトルを簡単な処理で確実に取り出すことができる。 【0117】 次に、分割サイズ統合部360の処理について説明する。まず、図28は、MBタイプ判定テーブルの内容を示す図である。 MBタイプ判定テーブル382には、図28に示すように、CurrMBおよびMBColのそれぞれのフレーム/フィールド種別の組み合わせに応じたMBColModeが記載され、各MBColModeについて、MBColのMBタイプ(MBCol_MBTYPE)に応じたCurrMBのMBタイプ(CurrMB_MBTYPE)が設定されている。 【0118】 分割サイズ統合部360は、読み出しモード判定テーブル381を参照して、CurrPicとColPicとの間の符号化タイプおよびフレーム/フィールド種別の組み合わせに応じて、該当し得るMBColModeを判別した後、CurrMBの処理のたびに、このCurrMBと対応するMBColとの間のフレーム/フィールド種別および処理対象のライン種別の組み合わせに応じて、MBタイプ判定テーブル382から最終的に適用するMBColModeを判別する。そして、このときのMBColのMBタイプに応じて、MBタイプ判定テーブル382からCurrMBのMBタイプを決定し、MV読み出し制御部350から供給されたもののうち必要な動きベクトルを、ダイレクトMV演算部311に供給する。 【0119】 なお、図28において、「統合」の項目は、CurrMB内のブロックの統合処理、すなわちCurrMBのブロック分割数をMBColより減少させる処理が行われる可能性があるか否かを、参考のために示している。以下で説明するように、CurrMB内のブロックが統合された場合には、ダイレクト演算される動きベクトルの数が減少する。このため、符号化の場合には、画質を低下させることなく、符号量を減少させて圧縮率を高くすることが可能になる。また、復号化の場合は、画像品質を落とすことなく、動きベクトルの演算および予測補償の処理負荷を軽減することが可能になる。 【0120】 以下、図29〜図32を用いて、MBColのMBタイプに応じて設定されるCurrMBのMBタイプを、MBColModeごとに具体的に挙げて説明する。なお、図29〜図32では、矢印の右側にMBColのMBタイプを、左側にCurrMBのMBタイプをそれぞれ示している。また、各図の一番上に示したパターンでは、CurrMBおよびMBColとして設定可能な最小のブロックのMBタイプの組み合わせが示されているが、これらのパターンは図8および図9で示したものと同じである。そして、図8および図9と同様に、これらのパターンのブロックに付された数字については、CurrMB内のブロックの動きベクトルが、同じ数字が付されたMBCol内のブロックから演算できることを意味している。 【0121】 図29は、MBColMode0で設定されるCurrMBのMBタイプの例を示す図である。 MBColMode0では、CurrMBおよびMBColがともにフレーム構造(ただし、符号化タイプがともにFRM)であり、CurrMB内の各ブロックの動きベクトルを、MBCol内の同じ位置のブロックの動きベクトルからダイレクト演算することができる。従って、MBColMode0では、図29のパターンPT1〜PT6のように、CurrMBに対して、MBColと同じMBタイプが設定される。 【0122】 図30は、MBColMode1で設定されるCurrMBのMBタイプの例を示す図である。 MBColMode1では、図8(B)で説明したように、MBColの最小ブロックは4×4であるが、CurrMBの最小ブロックは規格上8×8となる。このため、パターンPT11に示すように、CurrMBのMB901〜904の各動きベクトルは、それぞれMBCol内のサブMB905〜908のみからダイレクト演算される。すなわち、パターンPT11においては、MBCol内の左上に存在する4つのサブMBを、1つのMB901に統合することができる。同様に、MBCol内の右上、左下、右下にそれぞれ存在する4つのサブMBの組を、MB902〜904にそれぞれ統合できる。 【0123】 パターンPT11のようなブロックの対応関係を基本にして考えると、MBColの最小ブロックが8×8であるパターンPT12〜PT15では、CurrMBに対して、MBColと同じMBタイプを設定すればよく、ブロックの統合は行われない。一方、パターンPT16のように、MBColに8×8より小さいサブMBが存在する場合、それらのサブMBはCurrMBにおいて8×8のMBに統合される。 【0124】 例えば、MBColのサブMB909および910をMB911に統合することができ、MB911の動きベクトルはサブMB910の動きベクトルからダイレクト演算される。すなわち、分割サイズ統合部360は、サブMB909および910に対応するCurrMBの位置のMBタイプを8×8と決定し、そのMBタイプの情報とともに、サブMB910の動きベクトルをダイレクトMV演算部311に出力する。 【0125】 図31は、MBColMode2および3で設定されるCurrMBのMBタイプの例を示す図である。 MBColMode2および3では、パターンPT21のように、MBColの最小ブロックは4×4であるが、CurrMBの最小ブロックは8×8となる。なお、パターンPT21に示した左側のMBColはCurrMBの奇数ライン演算時に使用され(MBColMode2に対応)、右側のMBColはCurrMBの偶数ライン演算時に使用される(MBColMode3に対応)ものであって、どちらも同じMBColである。 【0126】 図9(A)および(B)で説明したように、MBColMode2では、CurrMB内のMB911〜914の奇数ラインの動きベクトルは、それぞれMBCol内のサブMB915〜918からダイレクト演算される。また、MBColMode3では、CurrMB内のMB911〜914の偶数ラインの動きベクトルは、同じMBCol内のサブMB919〜922からそれぞれダイレクト演算される。従って、MBColにおける第1列および第3列の1番目および2番目の計4つのサブMBが、CurrMBではMB911に統合される。同様に、MBColにおける第1列および第3列の3番目および4番目のサブMBが、MB912に統合され、MBColにおける第2列および第4列の1番目および2番目のサブMBが、MB913に統合され、同列の3番目および4番目のサブMBが、MB914に統合される。 【0127】 このパターンPT21のようなブロックの対応関係を基本にして考えると、MBColの上側の16×8のブロックおよび下側の16×8のブロックにおいて、ともに垂直方向に対するサブMB分割が行われていない場合には、CurrMBを垂直方向に分割する必要がなくなる。図31のパターンPT23〜PT25がこのような場合に相当し、これらのうちパターンPT23およびPT25では、垂直方向に対するブロックの統合が行われている。 【0128】 逆に、パターンPT26においては、MBColの上側の16×8のブロックおよび下側の16×8のブロックの少なくとも一方において、垂直方向に対するサブMB分割が行われているので、CurrMBは最小サイズである8×8のMBに分割される。ここで、分割サイズ統合部360は、例えば、CurrMBのMB923および924の動きベクトルの演算のために、奇数ライン演算時にはMBColのサブMB925の動きベクトルを、偶数ライン演算時にはMBColのサブMB926および927を、それぞれダイレクトMV演算部311に出力する。 【0129】 なお、パターンPT22では、MBColにおいてブロック分割が行われていないので、当然ながらブロックの統合も行われない。 図32は、MBColMode4で設定されるCurrMBのMBタイプの例を示す図である。 【0130】 MBColMode4の場合でも、パターンPT31のように、MBColの最小ブロックは4×4であるが、CurrMBの最小ブロックは8×8となる。このパターンPT31では、図9(C)で説明したように、各フィールドに対応するCurrMBの動きベクトル演算のために、上下に隣接する2つのMBColの動きベクトルが必要となる。なお、図28のMBタイプ判定テーブル382においては、MBColMode4のときのMBColのMBタイプの条件を示す欄に記載された「上側MBCol」「下側MBCol」とは、このように上下に隣接した2つのMBColのうちの上側、下側をそれぞれ示している。 【0131】 従って、分割サイズ統合部360は、CurrMB内のMB931および932のダイレクト演算のために、それぞれMBCol内のサブMB935および936の動きベクトルをダイレクトMV演算部311に出力し、CurrMB内のMB933および934のダイレクト演算のために、下側に隣接するMBCol内のサブMB937および938の動きベクトルをそれぞれ出力する。 【0132】 このパターンPT31のようなブロックの対応関係を基本にして考えると、MBColMode4では、上下に隣接する2つのMBColの両方において、8×8以下のサイズでのブロック分割がない場合には、これらの2つのMBColは、パターンPT32のように、CurrMBにおいて16×8のMBにそれぞれ統合される。また、MBColがそれ以外の状態の場合には、パターンPT33のように、CurrMBには一律に8×8のMBが設定される。 【0133】 以上説明したように、本実施の形態に係る分割サイズ統合部360では、MBColのMBタイプに応じて、CurrMBをできるだけ大きいサイズのブロックに分割するようにCurrMBのMBサイズが設定され、ダイレクト演算時のために必要なMBCol内の動きベクトルが適宜選択されて出力される。これにより、ダイレクト演算対象となる動きベクトルの数が減少し、動き補償処理時の参照画像データ取得のためのメモリアクセス回数や必要なメモリ帯域を抑制することができる。従って、動き補償処理の精度を低下させることなく、その処理負荷を軽減して、消費電力や回路の製造コストを抑制することができる。また、符号化時に適用した場合には、符号量を減少させ、画質を低下させることなく画像データの圧縮率を高めることができる。 【0134】 特に、従来では、元のMBColのデータが外部メモリ320に格納される際に、一律に4×4の最小サイズのブロックに展開されていたので、このようなMBColのMBタイプを基にCurrMBのブロックを決定すると、最小でも8×8のMBに統合することしかできなかった(図29〜図32のパターンPT1,PT11,PT21,PT31に対応)。これに対して、本実施の形態では、分割サイズ統合部360に入力されるMBColが元のMBタイプを維持していることから、CurrMBを8×8よりさらに大きいサイズのブロックに分割することも可能であり、これによりダイレクト演算対象となる動きベクトルの数をさらに減少させることができる。また、分割サイズ統合部360に入力されるMBColの動きベクトル数が、4×4のサイズに展開された場合と比較して少ないことから、分割サイズ統合部360でのMBタイプ決定処理自体の負荷も軽減され、消費電力を抑制することもできる。 【0135】 なお、上記の実施の形態では、ColPicの動きベクトルを格納するメモリを、フレーム間予測部210(または画像復号化装置200)の外部に設けた外部メモリ320としたが、このメモリを装置内部に設けてもよい。また、内部バッファ341および342の機能を、外部のメモリで実現してもよい。また、外部メモリ320と内部バッファ341および342の機能を、ともに同じメモリで実現してもよい。また、これらについては、上記のフレーム間予測部210のダイレクト・モード対応機能を、画像符号化装置100のフレーム間予測部104に設けた場合でも同様である。 【0136】 さらに、上記の処理機能は、コンピュータによって実現することができる。その場合、上記の画像符号化装置や画像復号化装置が有すべき動き予測処理機能の処理内容を記述したプログラムが提供される。そして、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。 【0137】 プログラムを流通させる場合には、例えば、そのプログラムが記録された光ディスクなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、そのプログラムを、サーバコンピュータからネットワークを介して他のコンピュータに転送することもできる。 【0138】 プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。 【0139】 (付記1) 動画像を一定の領域に分割した基本ブロックを単位としてフレーム間の動き予測処理を行う動き予測処理装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする動き予測処理装置。 【0140】 (付記2) 前記書き込み制御手段は、前記参照画像がフィールド画像であって前記ブロック適用型予測モードでない場合には、前記参照画像上の前記ブロックラインの動きベクトルをフィールド別にそれぞれ異なる前記メモリ領域に格納し、 前記読み出し制御手段は、 前記参照画像および前記現処理対象画像がともに前記ブロック適用型予測モードでなく、前記参照画像がフレーム画像で、前記現処理対象画像がフィールド画像である場合には、前記参照画像内での奇数番目の前記ブロックラインに割り当てられた前記メモリ領域と、偶数番目の前記ブロックラインに割り当てられた前記メモリ領域のそれぞれから、2つの前記バッファに動きベクトルを並列に読み出し、 前記参照画像がフィールド画像であって前記ブロック適用型予測モードでなく、前記現処理対象画像が前記ブロック適用型予測モードである場合には、トップ・フィールドに割り当てられた前記メモリ領域と、ボトム・フィールドに割り当てられた前記メモリ領域のそれぞれから、2つの前記バッファに動きベクトルを並列に読み出し、 前記参照画像および前記現処理対象画像の条件がそれ以外の場合には、前記メモリ領域ごとの動きベクトルを一方の前記バッファのみに読み出す、 ことを特徴とする付記1記載の動き予測処理装置。 【0141】 (付記3) 前記書き込み制御手段は、前記参照画像が前記ブロック適用型予測モードである場合には、前記参照画像上で上下に隣接する2つの前記ブロックラインを、2つの前記メモリ領域に割り当てて動きベクトルを格納し、 前記読み出し制御手段は、前記参照画像が前記ブロック適用型予測モードである場合には、2つの前記ブロックラインに割り当てられた2つの前記メモリ領域ごとに、動きベクトルを一方の前記バッファに対して順次読み出す、 ことを特徴とする付記2記載の動き予測処理装置。 【0142】 (付記4) 前記読み出し制御手段は、前記参照画像および前記現処理対象画像の双方がフィールド画像であって前記ブロック適用型予測モードでない場合には、トップ・フィールドに割り当てられた前記メモリ領域のみから一方の前記バッファのみに対して動きベクトルを読み出すことを特徴とする付記2記載の動き予測処理装置。 【0143】 (付記5) 前記読み出し制御手段は、前記参照画像がフィールド画像であって前記ブロック適用型予測モードでなく、前記現処理対象画像がフレーム画像であって前記ブロック適用型予測モードでない場合には、トップ・フィールドに割り当てられた前記メモリ領域のみを読み出し元とし、同じ前記メモリ領域から2回ずつ連続して、一方の前記バッファのみに対して動きベクトルを読み出すことを特徴とする付記2記載の動き予測処理装置。 【0144】 (付記6) 前記読み出し制御手段は、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記ブロック適用型予測モードであるか否かの組み合わせごとに、前記メモリ領域から2つの前記バッファに対する読み出し方法を記述したテーブルに従って、前記ベクトル格納メモリから前記各バッファへの動きベクトルの読み出しを制御することを特徴とする付記1記載の動き予測処理装置。 【0145】 (付記7) 前記ベクトル演算手段は、前記現処理対象画像上の前記ブロックラインの動きベクトルを演算する際に、2つの前記バッファの双方に動きベクトルが格納されている場合は前記各バッファから交互に、一方の前記バッファにのみ動きベクトルが格納されている場合は当該バッファから、それぞれ動きベクトルを前記基本ブロック単位で順次読み出すことを特徴とする付記1記載の動き予測処理装置。 【0146】 (付記8) 前記現処理対象画像上の動きベクトル算出対象の前記基本ブロック、および当該現処理対象ブロックに対応する前記参照画像上の前記基本ブロックである参照ブロックのそれぞれが、フレーム構造あるいはフィールド構造のいずれであるか、および、当該現処理対象画像および当該参照画像のそれぞれが前記ブロック適用型予測モードであるか否かの組み合わせに応じて、前記現処理対象ブロックのブロック分割サイズを、対応する前記参照ブロックのブロック分割サイズと同じにするか、あるいは当該参照ブロックで分割されたブロックの一部が1つのブロックに統合されるように設定して、前記ベクトル演算手段に通知するブロック分割設定手段をさらに有することを特徴とする付記1記載の動き予測処理装置。 【0147】 (付記9) 前記現処理対象画像および前記参照画像がともに前記ブロック適用型予測モードでなく、前記現処理対象ブロックがフレーム構造で、前記参照ブロックがフィールド構造であるとき、当該参照ブロックの上側半分および下側半分の各ブロックにおいて、ともに垂直方向に対してさらなるブロック分割が行われていない場合には、対応する前記現処理対象ブロックを垂直方向にブロック分割しないことを特徴とする付記8記載の動き予測処理装置。 【0148】 (付記10) 前記現処理対象画像および前記参照画像がともに前記ブロック適用型予測モードでなく、前記現処理対象ブロックがフィールド構造で、前記参照ブロックがフレーム構造であるとき、前記現処理対象ブロックに対応する前記参照画像上の上下に隣接する2つの前記参照ブロックの双方において、それぞれを4等分したサイズ以下のブロックが存在しない場合には、前記現処理対象ブロックを垂直方向に2等分し、水平方向にブロック分割しないことを特徴とする付記8記載の動き予測処理装置。 【0149】 (付記11) 動画像を一定の領域に分割した基本ブロックを単位としたフレーム間の動き予測処理を利用して、動画像信号を符号化する画像符号化装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする画像符号化装置。 【0150】 (付記12) 動画像を一定の領域に分割した基本ブロックを単位としたフレーム間の動き予測処理を利用して、符号化された動画像信号を復号化する画像復号化装置において、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段と、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段と、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段と、 を有することを特徴とする画像復号化装置。 【0151】 (付記13) 動画像を一定の領域に分割した基本ブロックを単位としてフレーム間の動き予測処理を行う動き予測処理方法において、 書き込み制御手段が、前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込み、 読み出し制御手段が、前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御し、 ベクトル演算手段が、前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算する、 ことを特徴とする動き予測処理方法。 【0152】 (付記14) 動画像を一定の領域に分割した基本ブロックを単位としたフレーム間の動き予測処理をコンピュータに実行させる動き予測処理プログラムにおいて、 前記動き予測処理の現処理対象画像が参照する参照画像の動きベクトルを、前記参照画像上の水平方向に並列された1列分の前記基本ブロックに対応するブロックラインを単位として、ベクトル格納メモリを分割したメモリ領域のいずれかに書き込む書き込み制御手段、 前記ベクトル格納メモリからFIFO方式の2つのバッファへの、前記メモリ領域ごとの動きベクトルの読み出しを、前記参照画像および前記現処理対象画像のそれぞれが、フレーム画像あるいはフィールド画像のいずれであるか、および、前記基本ブロックごとにフレーム予測/フィールド予測を選択的に適用可能なブロック適用型予測モードであるか否かの組み合わせに応じて制御する読み出し制御手段、 前記各バッファから順次読み出した動きベクトルを用いて、前記現処理対象画像の所定の前記基本ブロックの動き予測処理に必要な動きベクトルを予測演算するベクトル演算手段、 として前記コンピュータを機能させることを特徴とする動き予測処理プログラム。 【図面の簡単な説明】 【0153】 【図1】本発明の実施の形態に係る動き予測処理装置の概要を示すブロック図である。 【図2】実施の形態に係る画像符号化装置の構成を示すブロック図である。 【図3】実施の形態に係る画像復号化装置の構成を示すブロック図である。 【図4】ダイレクト・モード対応のためのメモリ制御機能の構成例を示すブロック図である。 【図5】MV書き込み制御部の内部構成例を示すブロック図である。 【図6】外部メモリにおけるColPic格納フォーマットを示す図である。 【図7】読み出しモード判定テーブルの内容を示す図である。 【図8】CurrMBとMBColとの間のフレーム/フィールド種別の代表的な組み合わせと、ブロック間の対応関係について説明するための図(その1)である。 【図9】CurrMBとMBColとの間のフレーム/フィールド種別の代表的な組み合わせと、ブロック間の対応関係について説明するための図(その2)である。 【図10】各読み出しモードでの読み出し手順について説明するための図(その1)である。 【図11】各読み出しモードでの読み出し手順について説明するための図(その2)である。 【図12】各読み出しモードでの読み出し手順について説明するための図(その3)である。 【図13】読み出しモード0でのMBColとMBColとの対応について説明するための図である。 【図14】読み出しモード1でのMBColとMBColとの対応について説明するための図である。 【図15】読み出しモード2でのMBColとMBColとの対応について説明するための図である。 【図16】読み出しモード3でのMBColとMBColとの対応について説明するための図である。 【図17】読み出しモード4でのMBColとMBColとの対応について説明するための図である。 【図18】読み出しモード5でのMBColとMBColとの対応について説明するための図である。 【図19】読み出しモード6でのMBColとMBColとの対応について説明するための図である。 【図20】MV読み出し制御部が備える内部バッファの読み出し制御機能の構成例を示すブロック図である。 【図21】2つの内部バッファを用いた場合のデータ読み出しを模式的に説明するための図である。 【図22】1つの内部バッファを用いた場合のデータ読み出しを模式的に説明するための図である。 【図23】データ読み出し手順の説明に用いるMBラインのブロック構成例を示す図である。 【図24】隣接するMBラインのデータを2つの内部バッファに格納する際のタイムチャートを示す図である。 【図25】2つの内部バッファからデータを読み出す際のタイムチャートを示す図である。 【図26】スライス・タイプがピクチャの途中で変更する場合の動作を説明するための図である。 【図27】スライス境界において参照するColPicが変更された場合の動作を説明するための図である。 【図28】MBタイプ判定テーブルの内容を示す図である。 【図29】MBColMode0で設定されるCurrMBのMBタイプの例を示す図である。 【図30】MBColMode1で設定されるCurrMBのMBタイプの例を示す図である。 【図31】MBColMode2および3で設定されるCurrMBのMBタイプの例を示す図である。 【図32】MBColMode4で設定されるCurrMBのMBタイプの例を示す図である。 【図33】符号化タイプ別のMBの処理順について説明するための図である。 【図34】H.264におけるMBのブロックサイズを説明するための図である。 【図35】ダイレクト・モードにおける動きベクトルの演算手法を概念的に示す図である。 【符号の説明】 【0154】 1 動き予測処理装置 2 書き込み制御手段 3 読み出し制御手段 4 ベクトル演算手段 10 ベクトル格納メモリ 10−1〜3 メモリ領域 11,12 バッファ 20 参照画像 20−1〜3 ブロックライン
|
| 【出願人】 |
【識別番号】000005223 【氏名又は名称】富士通株式会社
|
| 【出願日】 |
平成18年8月17日(2006.8.17) |
| 【代理人】 |
【識別番号】100092152 【弁理士】 【氏名又は名称】服部 毅巖
|
| 【公開番号】 |
特開2008−48199(P2008−48199A) |
| 【公開日】 |
平成20年2月28日(2008.2.28) |
| 【出願番号】 |
特願2006−222394(P2006−222394) |
|