(57)【要約】【課題】  動きベクトル検出の際、フレームメモリから頻繁にデータを転送するため、バス帯域が圧迫され、処理性能が悪化する。【解決手段】  フレーム２１０においてマクロブロックの動きベクトル検出を全探索法で行う際、上下に隣接するマクロブロックを対象マクロブロック２２０ｃおよび２２０ｄとして連続で処理する。フレームメモリに保持された参照画像データのうち、それらの対象マクロブロックに対する２つの動きベクトル探索範囲の和である合成探索範囲２６０ａの画素データを一度に高速メモリに転送する。そして、次の対象マクロブロック２２０ｅおよび２２０ｆの処理時は、新たに合成探索範囲２６０ｂに加わった領域２８０の画素データのみを高速メモリに転送する。【選択図】  図６
2007088922.tif 000002
【特許請求の範囲】
【請求項１】
動画像のピクチャを符号化する符号化装置であって、
符号化対象ピクチャの動き検出をする際に参照する参照ピクチャを保持するフレームメモリと、
前記フレームメモリに保持された前記参照ピクチャを参照して、前記符号化対象ピクチャの所定のブロック幅を有するブロックごとに動き探索を繰り返して動き検出を行う動き検出部とを含み、
前記動き検出部は、一の方向に隣接した複数のブロックを一の対象ブロック群とし、前記一の対象ブロック群に含まれる複数のブロックにそれぞれ対応する、前記参照ピクチャにおける動き探索範囲の和を含む、合成探索範囲の画素データを、前記フレームメモリから読み込む内部メモリを含み、
前記動き検出部は、前記内部メモリに保持された前記合成探索範囲に含まれる前記動き探索範囲を探索することにより、前記一の対象ブロック群に含まれる複数のブロックの動き検出を連続して行い、その後、前記一の方向と異なる方向に隣接した複数のブロックを次の対象ブロック群として動き検出を連続して行うことを順次繰り返すことにより動き検出を進捗させることを特徴とする符号化装置。
【請求項２】
前記一の対象ブロック群に含まれる複数のブロックは、ピクチャの垂直方向に隣接していることを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記一の対象ブロック群に含まれる複数のブロックは、ピクチャのななめ方向に隣接していることを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記動き検出部は、前記次の対象ブロック群の処理開始時に、前記次の対象ブロック群に対応する前記合成探索範囲のうち前記内部メモリに保持されていた画素データの領域に含まれない領域の画素データを、前記フレームメモリから前記内部メモリに読み込むことを特徴とする請求項１から３のいずれかに記載の符号化装置。
【請求項５】
動画像のピクチャの所定のブロック幅を有するブロックごとに動き検出を行い、符号化データを出力する符号化方法であって、
一の方向に隣接した複数のブロックを一の対象ブロック群とし、前記一の対象ブロック群に含まれる前記複数のブロックの動き検出を連続して行うステップと、
前記一の方向と異なる方向に隣接した複数のブロックを次の対象ブロック群として連続して動き検出を行うことを順次繰り返すことにより動き検出を進捗させるステップと、
前記動き検出を行ったブロックの順序で、対応する符号化データを出力するステップと、
を含むことを特徴とする符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像を符号化する符号化装置および符号化方法に関する。
【背景技術】
【０００２】
ブロードバンドネットワークが急速に発展しており、高品質な動画像を利用したサービスに期待が集まっている。また、ＤＶＤなど大容量の記録媒体が利用されており、高画質の画像を楽しむユーザ層が広がっている。動画像を通信回線で伝送したり、記録媒体に蓄積するために不可欠な技術として圧縮符号化がある。動画像圧縮符号化技術の国際標準として、ＭＰＥＧ４の規格やＨ．２６４／ＡＶＣ規格がある。また、１つのストリームにおいて高画質のストリームと低画質のストリームを併せもつＳＶＣ（Scalable Video Coding）のような次世代画像圧縮技術がある。
【０００３】
動画像の圧縮符号化および復号では、フレームメモリに動画像のフレームを蓄積し、フレームメモリを参照して、動き補償が行われるため、フレームメモリからのデータ転送が頻繁に行われる。特により高画質の動画を生成するために、動き探索を小数画素単位で行うことがあり、動き補償で扱うデータ量は増えており、メモリ帯域幅が処理のボトルネックとなりやすい。特許文献１には、フレームメモリのバンド幅の使用効率を改善することのできるディジタル画像復号装置が開示されている。
【特許文献１】特開平１１−２９８９０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
動画像の圧縮符号化の際、符号化対象フレームの対象マクロブロックの動きベクトル検出をするために、参照フレームの所定の探索範囲内の画素領域のデータをフレームメモリから読み出し、その画素領域内で対象マクロブロックとマッチングするマクロブロックを探索する。動きベクトル検出では、探索を繰り返して対象マクロブロックと適合する参照フレームのマクロブロックを見つけるため、フレームメモリからの読み出し回数が多くなり、データ転送量も増え、フレームメモリの転送帯域幅を圧迫する。フレームメモリへのアクセスがボトルネックとなって、圧縮符号化の処理速度が低下するという問題が生じる。
【０００５】
本発明はこうした状況に鑑みてなされたもので、その目的は、フレームメモリへのアクセスを減らして、符号化の処理効率を高めることのできる動画像の符号化技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は符号化装置に関する。この装置は、動画像のピクチャを符号化する符号化装置であって、符号化対象ピクチャの動き検出をする際に参照する参照ピクチャを保持するフレームメモリと、フレームメモリに保持された前記参照ピクチャを参照して、前記符号化対象ピクチャの所定のブロック幅を有するブロックごとに動き探索を繰り返して動き検出を行う動き検出部とを含み、動き検出部は、一の方向に隣接した複数のブロックを一の対象ブロック群とし、一の対象ブロック群に含まれる複数のブロックにそれぞれ対応する、参照ピクチャにおける動き探索範囲の和を含む、合成探索範囲の画素データを、フレームメモリから読み込む内部メモリを含むことを特徴とする。ここで動き検出部は、内部メモリに保持された合成探索範囲に含まれる動き探索範囲を探索することにより、一の対象ブロック群に含まれる複数のブロックの動き検出を連続して行い、その後、一の方向と異なる方向に隣接した複数のブロックを次の対象ブロック群として連続して動き検出処理を行うことを順次繰り返すことにより動き検出を進捗させる。
【０００７】
ここで「動き探索範囲の和」とは一の対象ブロック群に含まれる個々のブロックに対応する動き探索範囲を全て含んだ範囲のことである。また、「一の方向に隣接した」とは、ピクチャの水平方向、垂直方向、ななめ方向のいずれの方向に隣接していてもよい。また、ななめ方向に隣接した複数のブロックを一の対象ブロック群とした場合、「一の方向と異なる方向に隣接した複数のブロック」とは、ピクチャの水平方向または垂直方向に隣接した複数のブロックのことである。
【０００８】
「ピクチャ」は、フレーム、フィールド、ＶＯＰ（Video Object Plane）などを含む符号化の単位である。
【０００９】
この態様によれば、隣接した複数のブロックの動き探索範囲の画素データを一度に内部メモリに保持し、複数のブロックの動き探索範囲の重複部分は同じデータを利用できるため、フレームメモリからのデータ転送量が削減される。
【００１０】
本発明の別の態様は、符号化方法である。この方法は、動画像のピクチャの所定のブロック幅を有するブロックごとに動き検出を行い、符号化データを出力する符号化方法であって、一の方向に隣接した複数のブロックを一の対象ブロック群とし、一の対象ブロック群に含まれる複数のブロックの動き検出を連続して行うステップと、一の方向と異なる方向に隣接した複数のブロックを次の対象ブロック群として連続して動き検出を行うことを順次繰り返すことにより動き検出を進捗させるステップと、動き検出を行ったブロックの順序で、対応する符号化データを出力するステップと、を含むことを特徴とする。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、動画像の符号化の処理効率を向上することができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１
図１は、本実施の形態に係る符号化装置１００の構成図である。これらの構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウエア的にはメモリにロードされた画像符号化機能のあるプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１４】
本実施の形態の符号化装置１００は、国際標準化機関であるＩＳＯ（International Organization for Standardization）／ＩＥＣ（International Electrotechnical Commission）によって標準化されたＭＰＥＧ（Moving Picture Experts Group）シリーズの規格（ＭＰＥＧ−１、ＭＰＥＧ−２およびＭＰＥＧ−４）、電気通信に関する国際標準機関であるＩＴＵ−Ｔ（International Telecommunication Union-Telecommunication Standardization Sector）によって標準化されたＨ．２６ｘシリーズの規格（Ｈ．２６１、Ｈ．２６２およびＨ．２６３）、もしくは両方の標準化機関によって合同で標準化された最新の動画像圧縮符号化標準規格であるＨ．２６４／ＡＶＣ（両機関における正式勧告名はそれぞれMPEG-4 Part 10: Advanced Video CodingとH.264）に準拠して動画像の符号化を行う。
【００１５】
ＭＰＥＧシリーズの規格では、フレーム内符号化を行う画像フレームをＩ（Intra）フレーム、過去のフレームを参照画像として順方向のフレーム間予測符号化を行う画像フレームをＰ（Predictive）フレーム、過去と未来のフレームを参照画像として双方向のフレーム間予測符号化を行う画像フレームをＢフレームという。
【００１６】
一方、Ｈ．２６４／ＡＶＣでは、参照画像として利用できるフレームは、時間の先後を問わず、過去の２枚のフレームを参照画像としてもよく、未来の２枚のフレームを参照画像としてもよい。また、参照画像として利用できるフレームの枚数も問わず、３枚以上のフレームを参照画像として用いることもできる。したがって、ＭＰＥＧ−１／２／４では、Ｂフレームは双方向予測（Bi-directional prediction）フレームのことを指していたが、Ｈ．２６４／ＡＶＣでは、Ｂフレームは、参照画像の時間の先後は問わないため、双予測（Bi-predictive prediction）フレームのことを指すことに留意する。
【００１７】
なお、実施の形態では、符号化の単位としてフレームを例に挙げて説明するが、符号化の単位はフィールドであってもよい。また、符号化の単位はＭＰＥＧ−４におけるＶＯＰであってもよい。
【００１８】
符号化装置１００は、フレーム単位で動画像の入力を受け取り、動画像を符号化し、符号化ストリームを出力する。入力された動画フレームはフレームメモリ８０に格納される。
【００１９】
動き補償部６０は、フレームメモリ８０に格納されている過去または未来の画像フレームを参照画像として利用し、ＰフレームまたはＢフレームのマクロブロック毎に動き補償を行い、動きベクトルと予測画像を生成する。動き補償部６０は、符号化対象のＰフレームまたはＢフレームの画像と予測画像の差分を取り、差分画像をＤＣＴ部２０に供給する。また、動き補償部６０は、生成した動きベクトルを可変長符号化部９０に供給する。
【００２０】
ＤＣＴ部２０は、動き補償部６０から供給された画像を離散コサイン変換（ＤＣＴ）し、得られたＤＣＴ係数を量子化部３０に与える。
【００２１】
量子化部３０は、ＤＣＴ係数を量子化し、可変長符号化部９０に与える。可変長符号化部９０は、差分画像の量子化されたＤＣＴ係数および動き補償部６０から与えられた動きベクトルを可変長符号化し、多重化部９２に与える。多重化部９２は、可変長符号化部９０から与えられた符号化後のＤＣＴ係数と動きベクトル情報とを多重化し、符号化ストリームを生成する。多重化部９２は、符号化ストリームを生成する際、符号化されたフレームを時間順序に並べ替える処理を行う。
【００２２】
ＰフレームもしくはＢフレームの符号化処理の場合は、上述のように動き補償部６０が動作するが、Ｉフレームの符号化処理の場合は、動き補償部６０は動作せず、ここでは図示しないが、Ｉフレームはフレーム内予測が行われた後、ＤＣＴ部２０に供給される。
【００２３】
図２は、本実施の形態における動き補償部６０の構成を説明する図である。フレームメモリ８０と動き補償部６０は、ＳＢＵＳ８２により接続されている。動き補償部６０は、アドレスを指定してフレームメモリ８０にデータを要求し、フレームメモリ８０からＳＢＵＳ８２を介して伝送されるデータを受け取る。
【００２４】
動き補償部６０は、ＳＲＡＭ６６、動きベクトル検出部６２、および動き補償予測部６８を有する。動きベクトル検出部６２は、フレームメモリ８０に保持された参照画像の所定の探索範囲内の画素データをＳＲＡＭ６６に転送する。
【００２５】
フレームメモリ８０は、一例として大容量のＳＤＲＡＭで構成され、ＳＢＵＳ８２を介してアクセスされる。一方、ＳＲＡＭ６６は、動きベクトル検出部６２と同一の集積回路内に形成されており、動きベクトル検出部６２から高速にアクセスすることが可能である。ＳＲＡＭ６６はフレームメモリ８０に比べて容量が限られており、フレームメモリ８０に対する高速なキャッシュメモリとして機能する。ＳＲＡＭ６６はデータ転送が高速であるから、動きベクトル検出部６２がＳＲＡＭ６６内の画素領域を頻繁に参照して、動き探索するのに適している。なお、読み出しポート数を増やすために、一般的には複数枚のＳＲＡＭ６６が設けられる。
【００２６】
動きベクトル検出部６２は、ＳＲＡＭ６６に転送された画素データを参照して動きベクトルの検出を行う。動きベクトル検出部６２は、対象マクロブロックに対して誤差の最も小さい予測マクロブロックを参照画像から検出し、対象マクロブロックから予測マクロブロックへの動きを示す動きベクトルを求める。動きベクトル検出は、対象マクロブロックとマッチングする参照画像における参照マクロブロックを整数画素単位または小数画素単位で探すことにより行われるため、探索は通常、画素領域内で複数回にわたって繰り返し行われ、その複数回の探索の中で対象マクロブロックと最も適合する参照マクロブロックが予測マクロブロックとして選択される。求められた動きベクトルは動き補償予測部６８と可変長符号化部９０に与えられる。
【００２７】
動き補償予測部６８は、動きベクトルを用いて対象マクロブロックを動き補償して、予測画像を生成し、符号化対象画像と予測画像の差分画像をＤＣＴ部２０に出力する。
【００２８】
動きベクトルの探索方法として、探索方向を求めながら繰り返し探索を行う追跡法や勾配法を利用した場合、各回の探索で参照する範囲の画素データが、探索の度にフレームメモリ８０からＳＲＡＭ６６に転送される。たとえば、縦横１６画素のマクロブロックの探索を６回繰り返して、対象マクロブロックにマッチングする予測マクロブロックを探し当てたとする。ここで６タップフィルタを用いた１／４画素精度の探索を行った場合、１回の探索では、マクロブロックの周囲の画素も含めて縦横２１画素の画素データがＳＲＡＭ６６に転送される。それが６回繰り返されると、１つの対象マクロブロックに対して動きベクトルを探索するのに要するデータ転送量は、２１×２１×６＝２６４６バイトとなる。ただし、１画素の情報量を簡単のため１バイトとした。
【００２９】
追跡法や勾配法の場合、探索精度を上げるためには探索回数を増やす必要があり、探索回数に比例してデータ転送量が増え、フレームメモリ８０からＳＲＡＭ６６へのデータ転送が動きベクトル検出処理のボトルネックとなって処理性能が低下する。この問題を克服するために、例えばフレームメモリ８０を複数個設け、それぞれのフレームメモリ８０に対応した複数のＳＢＵＳ８２によってデータ転送を行うことも考えられるが、それにより製造コストが増大してしまう。
【００３０】
動きベクトルの別の探索方法として、探索範囲を決めてその中のすべてのマクロブロックを一つずつ取り上げ、対象マクロブロックとの間でマッチングを計算し、最もマッチングするマクロブロックを予測マクロブロックとして求める全探索法がある。全探索法を利用した場合、あらかじめ決められている探索範囲内のすべての画素データがフレームメモリ８０からＳＲＡＭ６６に転送される。そして動きベクトル検出部６２は、ＳＲＡＭ６６に転送された画素領域内で動きベクトルの探索を行う。全探索法の場合、１つの対象マクロブロックに対して行われるデータ転送は１回だけである。たとえば、縦横１６画素の対象マクロブロックに対して探索範囲が±３２画素である場合、全探索範囲は縦横８０画素になり、１つの対象マクロブロックに対して動きベクトルを探索するのに要するデータ量は、８０×８０＝６４００バイトとなる。
【００３１】
ただし全探索法においては、ある対象マクロブロックに対する探索範囲と、次の対象マクロブロックに対する探索範囲とに重複領域がある場合は、その重複領域の画素データはＳＲＡＭ６６にそのまま確保しておくことができる。そして新たに探索範囲となった領域の画素データのみをフレームメモリ８０からＳＲＡＭ６６に転送することにより、ＳＲＡＭ６６には次の対象ブロックに対する探索範囲の画素データが保持されることになる。
【００３２】
ここで本実施の形態の特徴を明らかにするために、一般的な全探索法の手順について説明する。図３は動きベクトル検出部６２によって動きベクトルが検出されるマクロブロックの処理順を模式的に示している。同図のごとく、フレーム２１０を所定の画素単位で分割したマクロブロックが順次、対象マクロブロック２２０として選択され、動きベクトル検出が行われる。このとき、図の矢印に示すように、１行のマクロブロックを左から右に選択していく。これは、符号化装置１００が出力する符号化ストリームの構成順序と同じである。
【００３３】
図４は、上述の一般的な全探索法において、連続して処理される２つの対象マクロブロック２２０に対する探索範囲の推移を模式的に示している。すなわち、図４（ａ）における対象マクロブロック２２０ａの動きベクトルが検出されると、図４（ｂ）における対象マクロブロック２２０ｂの動きベクトル探索が開始される。図４（ａ）において、対象マクロブロック２２０ａに対する探索範囲２３０ａは、上述の例では、縦横１６画素の対象マクロブロック２２０ａの周囲３２画素を含む、縦横８０画素の領域である。このときＳＲＡＭ６６には探索範囲２３０ａの画素データが保持される。対象マクロブロック２２０ａに対する動きベクトル探索の終了後、次の対象マクロブロック２２０ｂに対する探索範囲２３０ｂは図４（ｂ）に示す領域となる。このとき、ＳＲＡＭ６６に保持されている探索範囲２３０ａの画素データのうち、今回の探索範囲２３０ｂと重ならない領域２４０のデータは破棄され、新たに探索範囲２３０ｂとなった領域２５０のデータが、フレームメモリ８０からＳＲＡＭ６６へ転送される。同図の例では、１つの対象マクロブロックに対する動きベクトルを探索するのに、８０×１６＝１２８０バイトのデータが転送されることになる。
【００３４】
このように全探索法は、追跡法や勾配法と比べ、転送されるデータ量が少なくなる。ところが、近年一般にも浸透してきたフルハイビジョンの１９２０×１０８８画素の画像を例にとると、上述した縦横１６画素のマクロブロックが、画面全体で８１６０個存在する。２枚のフレームを参照画像として３０ｆｐｓのリアルタイムで全マクロブロックを処理するとすると、１２８０×８１６０×２×３０＝５９８メガバイト／秒という、高い転送レートが必要となる。
【００３５】
このように画像が高精細になるほど、ＳＢＵＳ８２の帯域幅を圧迫し、符号化処理のボトルネックとなりやすい。このような問題意識のもと、本出願人は、フレームメモリ８０からのデータ転送に関して改良の余地があることを認識するに至った。以下、本実施の形態における動きベクトル探索の処理手順について説明する。
【００３６】
図５は本実施の形態における動きベクトル検出部６２によって動きベクトルが検出されるマクロブロックの処理順を模式的に示している。本実施の形態では、矢印に示すように上下のマクロブロックを連続して処理する。すなわち、対象マクロブロック２２０ｃに対する動きベクトル探索が終了すると、次は、その下に位置する対象マクロブロック２２０ｄに対する動きベクトル探索が行われる。そして上下２つののマクロブロックの処理が終わったら、その右側に位置する上下２つのマクロブロック、というように、左から右に処理していく。
【００３７】
図６は、図５に示した処理順で動きベクトル探索を行う場合の探索範囲の推移を模式的に示している。本実施の形態では、上下２つのマクロブロックを１単位とし、それらに対する２つの探索範囲からなる合成探索範囲の画素データをＳＲＡＭ６６に一度に転送する。すなわち図６（ａ）において、対象マクロブロック２２０ｃと対象マクロブロック２２０ｄの探索範囲の和である合成探索範囲２６０ａの画素データを、対象マクロブロック２２０ｃの処理を開始する際に転送しておく。上述の例では、合成探索範囲２６０ａは同図に示すごとく、縦９６画素、横８０画素の領域となる。動きベクトル検出部６２は、対象マクロブロック２２０ｃおよび２２０ｄに対する動きベクトル探索を、ＳＲＡＭ６６に保持された合成探索範囲２６０ａの画素データに含まれる、各々の探索範囲の画素データを用いて行う。
【００３８】
対象マクロブロック２２０ｃおよび２２０ｄに対する動きベクトル探索が終了すると、次はそれらの右側に隣接する２つのマクロブロックが、対象マクロブロック２２０ｅおよび対象マクロブロック２２０ｆとなる。すると、それらの対象マクロブロック２２０ｅおよび２２０ｆに対する合成探索範囲２６０ｂは図６（ｂ）に示す領域となる。このとき、ＳＲＡＭ６６に保持されている合成探索範囲２６０ａの画素データのうち、今回の合成探索範囲２６０ｂと重ならない領域２７０のデータは破棄され、新たに合成探索範囲２６０ｂとなった領域２８０の画素データが、フレームメモリ８０からＳＲＡＭ６６へ転送される。同図の例では、２つの対象マクロブロック２２０に対する動きベクトルを探索するのに、９６×１６＝１５３６バイトのデータが転送されることになる。結果として１つの対象マクロブロックあたりに換算すると、７６８バイトのデータ転送となり、図４で示した一般的な全探索法の手順と比較すると、データ転送量が６０％に削減される。
【００３９】
以上述べたように本実施の形態では、連続して処理される対象マクロブロック２２０の探索範囲の重複を、水平方向のみならず垂直方向にも利用することにより、フレームメモリ８０からＳＲＡＭ６６へのデータ転送量を削減することができ、画像の高精細化に対応した符号化処理が可能となる。また本実施の形態は、メモリの個数やバス帯域を増加させることなく実現できるため、導入コストが抑えられる。
【００４０】
動きベクトル検出部６２は、上述の順序で対象マクロブロック２２０を処理し、順次得られる動きベクトルを可変長符号化部９０へ与える前に、動きベクトルの並べ替えを行ってもよい。すなわち、可変長符号化部９０において動きベクトルの差分符号化を行う際、あるマクロブロックの差分符号化に必要となるマクロブロックの動きベクトルを先に与える。    
【００４１】
図７はＨ．２６４／ＡＶＣにおいて動きベクトルの差分符号化を行う際に必要となるマクロブロックの位置関係を説明している。Ｈ．２６４／ＡＶＣで対象マクロブロック２２０ｄの動きベクトルの差分符号化を行う場合、計算に用いられるのは、マクロブロック２２２ａ、２２２ｂ、および２２２ｃの３つの動きベクトルである。本実施の形態では、動きベクトル検出部６２が対象マクロブロック２２０ｄの動きベクトルを求めた際、マクロブロック２２２ｃの動きベクトルはまだ求められていない。従って、動き補償部６０に図示しないバッファを設けるなどして、対象マクロブロック２２０ｄの動きベクトルを保存しておき、マクロブロック２２２ｃの動きベクトルが得られたら、それを先に可変長符号化部９０へ与える。その後、対象マクロブロック２２０ｄの動きベクトルを、上記バッファから可変長符号化部９０へ供給する。これにより、可変長符号化部９０における処理態様を変化させることなく本実施の形態を実現することができる。
【００４２】
実施の形態２  
本実施の形態の符号化装置１００および動き補償部６０の構成は、実施の形態１の図１および図２で示したのと同様である。一方、本実施の形態は、動きベクトル検出部６２が、斜めに位置する２つの対象マクロブロックを連続して処理する点で実施の形態１と異なる。ここでは実施の形態１との相違点に主眼を置き説明する。
【００４３】
図８は本実施の形態における動きベクトル検出部６２によって動きベクトルが検出されるマクロブロックの処理順を模式的に示している。本実施の形態では、矢印に示すように右上と左下に位置して互いに接する２つのマクロブロックを連続して処理する。すなわち、対象マクロブロック２２０ｇに対する動きベクトル探索が終了すると、次は、その左下に位置する対象マクロブロック２２０ｈに対する動きベクトル探索が行われる。そしてこれら２つのマクロブロックの処理が終わったら、それらの右側に位置し、同様に斜めに接する２つのマクロブロック、というように、左から右に処理していく。
【００４４】
図９は、図８示した処理順で動きベクトル探索を行う場合の探索範囲の推移を模式的に示している。本実施の形態でも実施の形態１と同様、２つのマクロブロックに対する２つの探索範囲からなる合成探索範囲の画素データをＳＲＡＭ６６に一度に転送する。一方、本実施の形態では、２つのマクロブロックが上述のごとく斜めに接しているため、合成探索範囲２９０ａは、図９（ａ）に示すような領域とする。すなわち、対象マクロブロック２２０ｇと対象マクロブロック２２０ｈの探索範囲の和を含む最小の矩形を合成探索範囲２９０ａとする。実施の形態１と同様の例では、合成探索範囲２９０ａは同図に示すごとく、縦９６画素、横９６画素の領域となる。動きベクトル検出部６２は、対象マクロブロック２２０ｇおよび２２０ｈに対する動きベクトル探索を、ＳＲＡＭ６６に保持された合成探索範囲２９０ａの画素データに含まれる、各々の探索範囲の画素データを用いて行う。
【００４５】
対象マクロブロック２２０ｇおよび２２０ｈに対する動きベクトル探索が終了すると、次はそれらの右側に隣接する２つのマクロブロックが、対象マクロブロック２２０ｉおよび対象マクロブロック２２０ｊとなる。すると、それらの対象マクロブロック２２０ｉおよび２２０ｊに対する合成探索範囲２９０ｂは図９（ｂ）に示す領域となる。従って実施の形態１と同様、ＳＲＡＭ６６に保持されている合成探索範囲２９０ａの画素データのうち、領域３００の画素データが破棄され、領域３１０の画素データが新たにフレームメモリ８０からＳＲＡＭ６６へ転送される。この例では、実施の形態１と同様、９６×１６＝１５３６バイトのデータが転送されるため、１つの対象マクロブロックあたりに換算すると７６８バイトのデータ転送となる。
【００４６】
本実施の形態においても、連続して処理される対象マクロブロック２２０の探索範囲の重複を、水平方向のみならず垂直方向にも利用することにより、フレームメモリ８０からＳＲＡＭ６６へのデータ転送量を削減することができ、画像の高精細化に対応した符号化処理が可能となる。また本実施の形態も、メモリの個数やバス帯域を増加させることなく実現できるため、導入コストが抑えられる。
【００４７】
さらに本実施の形態では、Ｈ．２６４／ＡＶＣにおける動きベクトルの差分符号化を行う際に、実施の形態１で説明した、動きベクトルの並べ替えを行う必要がない。すなわち動きベクトル検出部６２において、図７における対象マクロブロック２２０ｄの動きベクトルを求めた際、マクロブロック２２２ａ、２２２ｂ、２２２ｃの動きベクトルは取得済みである。従って、取得した順で動きベクトルを可変長符号化部９０に与えても差分符号化に支障がない。そのため、並べ替えに必要な構成を動き補償部６０に付加することなく、本実施の形態を実現することができる。
【００４８】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素などの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４９】
例えば実施の形態１では、上下に接する２つのマクロブロックを１単位として、それらに対する探索範囲の画素データを１度にＳＲＡＭに転送した。変形例としては、上中下など垂直に連なる３つ以上のマクロブロックを１単位としてもよい。このとき、１単位に含まれるマクロブロックが１つ増加すると、そのマクロブロックの垂直方向の画素分だけ、合成探索範囲は垂直方向に拡張する。従って、１単位に含まれるマクロブロックが増加すればＳＲＡＭに保持するデータ量が増加することになるが、それらのマクロブロックに対する動きベクトル探索において、重複して利用できる探索領域が増加するため、データ転送量はより減少する。これらのことから、１単位に含まれるマクロブロックの個数は、ＳＲＡＭの容量、データ転送所要時間、データ転送量などに鑑み、最適値を決定してよい。これにより、より効率のよい動きベクトル探索が可能となる。
【００５０】
上述の変形例と同様に、斜めに連なる３つ以上のマクロブロックを１単位とし、実施の形態２で説明したのと同様の処理を行ってもよい。この場合、１単位に含まれるマクロブロックの数によって合成探索範囲が水平方向および垂直方向に拡張する。このときも、ＳＲＡＭの容量などに鑑みマクロブロックの数を決定すれば、より効率の良い動きベクトル探索が可能となる。
【００５１】
また実施の形態１では、上下に接する２つのマクロブロックを１単位としたが、左右に接するマクロブロックを１単位とし、それらに対する探索範囲内の画素データを１度にＳＲＡＭに転送するようにしてもよい。この場合は、左右の２つのマクロブロックに対する動きベクトル探索を終了したら、次はその下に位置する２つのマクロブロックに対する動きベクトル探索を行う、というように垂直方向に処理を進めていく。このようにしても、本実施の形態１で説明したのと同様、効率の良いベクトル探索が実現できる。
【００５２】
さらに、これまで説明してきた動きベクトル探索の処理順を、そのまま符号化装置が出力する符号化ストリームの構成順としてもよい。すなわち、動きベクトル検出部６２で取得した動きベクトルを、取得した順に動き補償予測部６８および可変長符号化部９０に与え、最終的にはＤＣＴ係数と動きベクトル情報とを、動きベクトルを探索した順序で多重化して出力する。このとき、探索した順序で可変長符号化などが滞りなく行われるよう、すでに動きベクトルを検出したマクロブロックのデータで符号化するようにしてもよい。例えば実施の形態１では、上、左上、左に隣接するマクロブロックの動きベクトルを用いて、動きベクトルの差分符号化を行う。これにより、ストリーム形成を含めたいずれの処理においてもデータの並べ替えを行うことなく、本実施の形態の動きベクトル探索による効率性向上が得られるため、より一層、符号化処理レートを向上させることができる。
【図面の簡単な説明】
【００５３】
【図１】実施の形態１における符号化装置の構成を示す図である。
【図２】図１の動き補償部の構成を示す図である。
【図３】一般的な全探索法において動きベクトルが検出されるマクロブロックの処理順を模式的に示す図である。
【図４】図３の処理順において連続して処理される２つの対象マクロブロックに対する探索範囲の推移を模式的に示す図である。
【図５】実施の形態１において動きベクトルが検出されるマクロブロックの処理順を模式的に示す図である。
【図６】図５の処理順において連続して処理される４つの対象マクロブロックに対する探索範囲の推移を模式的に示す図である。
【図７】Ｈ．２６４／ＡＶＣにおいて動きベクトルの差分符号化を行う際に必要となるマクロブロックの位置関係を説明する図である。
【図８】実施の形態２において動きベクトルが検出されるマクロブロックの処理順を模式的に示す図である。
【図９】図８の処理順において連続して処理される４つの対象マクロブロックに対する探索範囲の推移を模式的に示す図である。
【符号の説明】
【００５４】
２０  ＤＣＴ部、  ３０  量子化部、  ６０  動き補償部、  ６２  動きベクトル検出部、  ６６  ＳＲＡＭ、  ６８  動き補償予測部、  ８０  フレームメモリ、  ８２  ＳＢＵＳ、  ９０  可変長符号化部、  ９２  多重化部、  １００  符号化装置、  ２１０  フレーム、  ２２０  対象マクロブロック。
【図１】
2007088922.tif 000003
【図２】
2007088922.tif 000004
【図３】
2007088922.tif 000005
【図４】
2007088922.tif 000006
【図５】
2007088922.tif 000007
【図６】
2007088922.tif 000008
【図７】
2007088922.tif 000009
【図８】
2007088922.tif 000010
【図９】
2007088922.tif 000011