(57)【特許請求の範囲】
【請求項１】
階層的動きベクトル検出処理を行う動画像符号化方法において、
入力画像をフレームメモリに格納すると共に、該入力画像に対してフィルタ・間引き処理を行った縮小画像を該フレームメモリに格納し、
該フレームメモリに格納された縮小画像の１画面を構成する複数のマクロブロックの横一列分のマクロブロックに対して連続して動きベクトル検出を行う１段目処理と、該フレームメモリに格納された入力画像の１画面を構成する複数のマクロブロックの上記１段目処理の結果から動きベクトルが検出された縮小画像のマクロブロックの位置に対応するマクロブロックに対して連続して動きベクトルの検出を行う２段目処理とを交互に繰り返し動きベクトルの検出を行う事を特徴とした動画像符号化方法。
【請求項２】
請求項１において、
該１段目処理の区間内で符号化速度調節用のスタッフ処理を行い、該２段目処理の区間内で符号化処理を行うことを特徴とした動画像符号化方法。
【請求項３】
請求項１又は２において、
隣接する該１段目処理の間に符号化処理を非同期で行うことを特徴とした動画像符号化方法。
【請求項４】
階層的動きベクトル検出処理を行う動画像符号化装置において、
入力画像をフレームメモリに格納すると共に、該入力画像に対してフィルタ・間引き処理を行った縮小画像を該フレームメモリに格納する手段と、
該フレームメモリに格納された縮小画像の１画面を構成する複数のマクロブロックの横一列分のマクロブロックに対して連続して動きベクトル検出を行う１段目処理と、該フレームメモリに格納された入力画像の１画面を構成する複数のマクロブロックの上記１段目処理の結果から動きベクトルが検出された縮小画像のマクロブロックの位置に対応するマクロブロックに対して連続して動きベクトルの検出を行う２段目処理とを交互に繰り返し動きベクトルの検出を行う手段と、
を備えた事を特徴とした動画像符号化装置。
【請求項５】
請求項４において、
該１段目処理の区間内で符号化速度調整用のスタッフ処理を行い、第２段目処理の区間で符号化処理を行う符号化処理部をさらに備えたことを特徴とした動画像符号化装置。
【請求項６】
請求項４又は５において、
隣接する該１段目処理の間に符号化処理を非同期で行うためのバッファメモリを備えたことを特徴とする動画像符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は動画像符号化方法及び装置に関し、特に階層的動きベクトル検出方式を適用した動画像符号化方法及び装置に関するものである。
【０００２】
近年の半導体技術の進歩に伴い、これまで複数の半導体チップで構成されていた動画像リアルタイムエンコーダの主要な機能が１チップで実現可能な状況になって来た。この場合、ハードウェアでエンコーダを実現する場合に、膨大な演算量が必要となる動きベクトル検出処理の実現方法がコストパフォーマンスを決定する上で重要なポイントとなる。
【０００３】
これまでに、動きベクトル検出の検出範囲の拡大と演算量の削減の両立を目的として、様々な動きベクトル検出方法が提案されて来た。その一つの方法として、階層的動きベクトル検出方法がある。この方法は、まず動きベクトル検出の１段目処理として、動きベクトル検出を行うための原画と参照画のそれぞれにおいて縮小画面を生成し、この縮小画面同士で動きベクトルを検出する。その後、通常解像度の画面同士の２段目の検出処理として、１段目の結果を中心とした範囲からの検出を行う方法である。
【０００４】
これを図６により説明する。たとえば通常画面サイズである入力動画像の１段目検出範囲（ａ）に対して縦横１：４の間引き率（１／１６）で得た１６  ×１６  画素の縮小画面を１段目のベクトル検出の処理単位（ｂ）とすると、１段目のベクトル検出では４  ×４＝１６  個のマクロブロック（ＭＢで示すことがある）に対する共通のオフセットベクトル（ｃ）が検出される。
【０００５】
その後、２段目検出単位としての各マクロブロック（ｄ）について２段目の検出範囲（ｅ）についてベクトルサーチを行い、２段目のベクトル（ｆ）を得る。そして、１段目と２段目の結果（ｃ），（ｆ）を加算したベクトルが最終結果（ｇ）となる。
この方法は、フルサーチを行う場合と比較して検出の精度は多少低下するが、同じ検出範囲を処理するために必要な演算量は格段に少なくなる。
【０００６】
このような動きベクトル検出処理をハードウェアで実現する場合の一例が図７に示されている。図中、１は入力するピクチャデータの波形整形などを施す前処理部、３は大容量で高速アクセスが可能なＳＤＲＡＭ（又はＤＲＡＭでもよいが、以下の説明ではＳＤＲＡＭとする）を使用したフレームメモリ、４は動きベクトル検出処理部、５は符号化処理部であり、これらは共通バス１０を介して相互接続されている。また動きベクトル検出処理部４は、原画データを格納する原画ＲＡＭ４１と、参照画データを格納する参照画ＲＡＭ４２と、これらのローカルメモリ（  キャッシュ）  としてのＲＡＭ４１，４２に格納されたデータに所定の演算を施す演算器４３と、その演算結果で得られたベクトルの判定を行って符号化処理部５へ送るための判定部４４とで構成されている。
【０００７】
すなわち、各マクロブロック毎にフレームメモリ３から原画と参照画の矩形領域画素データを内部の原画ＲＡＭ４１と参照画ＲＡＭ４２のローカルメモリ（  キャッシュ）  に読み込み、演算器４３で動きベクトル検出処理を行い、得られた動きベクトルの判定を判定部４４で行って符号化処理部５へ送り、符号化を実行する。
【０００８】
ここで、エンコーダの符号化特性を左右するパラメータとして動きベクトルのサーチ範囲があるが、できるだけ広いサーチ範囲を実現するためにできるだけ広い範囲の参照画領域をフレームメモリ３からＲＡＭ４２に読み込む必要がある。しかしながら、フレームメモリ３のバンド幅（データ転送能力）がボトルネックとなりサーチ範囲に制限があるのが現状である。従って、広いベクトルサーチ範囲を得るためには、如何に効率良くフレームメモリ３上の画面データをアクセスできるかが、製品の競争力を大きく左右する上で重要となる。
【０００９】
【従来の技術】
図７に示すような構成の階層的動きベクトル検出処理では、１段目の処理を行うために縮小画面をフレームメモリからローカルメモリに読み込む必要があるが、従来はフレームメモリ内の通常サイズのピクチャから画素を間引きしてローカルメモリに読み込んでいた。しかし、フレームメモリがＳＤＲＡＭの場合は、１つの読出コマンドで４ワードや８ワードの連続アドレスのデータがバースト的に読み出されるため、間引きした画素のみを読み出そうとすると極端にメモリアクセス効率が劣化する。
【００１０】
通常のＤＲＡＭであっても、読み込みたい画素データ８ビットよりフレームメモリのバス幅が大きければ（３２ビットなど）、１画素データを読み込むのに必要のない画素データも同時に読み込むことになり、これも効率が悪い。また、通常サイズ画像を間引きしただけでは折り返し歪みが発生するため、１段目のベクトル検出精度が低下する問題もある。
【００１１】
そこでこのような問題を避けるために、図８に示すように、ＲＡＭ４１，４２とフレームメモリ３との間に空間フィルタ処理と画素間引き処理を行うフィルタ・間引き処理部２を設ける構成が従来より提案されている。
この構成では、１段目の縮小画面（図６の（ｂ））をＲＡＭ４１，４２に読み込む時は、フレームメモリ３から連続領域をフィルタ・間引き処理部２に一旦読み込み、フィルタ処理を施しながら画素の間引きを行う。
【００１２】
次の２段目の処理では、そのフィルタ・間引き処理部２をバイパスして通常サイズ画面（同（ａ））をＲＡＭ４２に読み込む。
【００１３】
【発明が解決しようとする課題】
しかしながら、このような図８の構成では、１段目の縮小画面を読み込むために、本来必要とする原画・参照画のサイズよりもかなり広い領域の画素データを読み込む必要がある。例えば、縦横１：４に間引きした縮小画面を構成したい場合、フィルタ処理に周囲の画素も必要とすることから１６  倍のデータ量となる。これでは、メモリアクセス効率の問題が解決されないどころか劣化する場合も有り得る。
【００１４】
また、例えば１段目の処理を縦横１：４で間引いた縮小画面で行い、１段目の処理単位（大マクロブロック：ＱＭＢ）  を縮小画面上の１６  ×１６  画素（つまり通常サイズ画面で４  ＭＢ×４ＭＢ＝１６ＭＢ領域）とし、サーチ範囲を縮小画面で１６×１６画素とすると、参照画として読み込む画面サイズは、図９に示すように例えば３倍の４８×４８となる。
【００１５】
すなわち、隣り合った大マクロブロックの原画領域ＱＭＢ１，ＱＭＢ２に対して読み込む参照画領域ＱＭＢ３，ＱＭＢ４は、その２／３がオーバラップしているのでそのオーバラップ領域をＲＡＭ４１，４２に格納しておけば、残りの１／３の領域ＲＲのみ別途読み込むだけでよい。
【００１６】
ここで、階層的動きベクトル検出の処理スケジュールを考える。符号化処理部５による符号化はマクロブロック単位で行われるが、符号化の順番は、図１０に示すように、画面の上端の横１列分のマクロブロックを左端から処理し、次にその下の１列を同様に処理して行くという順序で画面下端まで処理を行う。
【００１７】
したがって、図１１に示すように１段目の処理単位ＱＭＢ１，ＱＭＢ２，ＱＭＢ３，ＱＭＢ４，…で得たベクトル値を、各１段目処理単位ＱＭＢにおける横４マクロブロック分の２段目処理に使用した後にＲＡＭ４１，４２に保存しておいて、続いて右隣りの１段目処理を行うことになる。
【００１８】
すなわち、図１２に示すように、大マクロブロックＱＭＢ１に対して１段目処理を行った後、この大マクロブロックＱＭＢ１内でさらにマクロブロック単位ＭＢで４つのマクロブロックＭＢ１〜ＭＢ４について２段目処理を行う。これを、順次、大マクロブロックＱＭＢ２＋マクロブロックＭＢ５〜ＭＢ８，…というように動きベクトル検出処理を行う。
【００１９】
しかしながら、ここで問題なのは、１段目の処理と２段目の処理を交互に行う必要があるために、ＲＡＭ４１，４２に格納したい１段目の参照画データは２段目処理のデータで上書きされて消されてしまう点にある。すなわち、マクロブロックＭＢ１〜ＭＢ１８，…の横一列について２段目処理を実行した後は、図１１で示す次の列のマクロブロックを実行する際には大マクロブロックＱＭＢ１，ＱＭＢ２，ＱＭＢ３，ＱＭＢ４，…のデータは同じであるので本来１段目処理を行わずに済む筈のものを再度同じ１段目処理を実行しなければならない。
【００２０】
従って１段目処理を行う度に全ての参照画領域を読み直す必要があるので、メモリアクセスが非効率的となる。１段目と２段目処理で参照画メモリを別々に設ければその問題は解決されるが、それはハード規模と消費電力の増加につながる。
【００２１】
このように、従来の技術では、階層的動きベクトル検出方法をＳＤＲＡＭをフレームメモリとしたハードウェアで実現しようとすると、縮小画面の読み出しにおいてＳＤＲＡＭのアクセスバンド幅を有効に使用できないという問題点があった。また、１段目と２段目の処理を交互に実行する処理スケジュールのために、１段目のオーバラップした参照画の領域を毎回読み直す必要があり、メモリアクセスが非効率的となる問題点もあった。
【００２２】
したがって本発明は、フレームメモリを用いて階層的動きベクトル検出処理を行う動画像符号化方法及び装置において、フレームメモリに対するアクセスを効率的に行うことを目的とする。
【００２３】
上記の目的を達成するため、本発明に係る動画像符号化方法は、階層的動きベクトル検出処理を行う動画像符号化方法において、入力画像をフレームメモリに格納すると共に、該入力画像に対してフィルタ・間引き処理を行った縮小画像を該フレームメモリに格納し、該フレームメモリに格納された縮小画像の１画面を構成する複数のマクロブロックの横一列分のマクロブロックに対して連続して動きベクトル検出を行う１段目処理と、該フレームメモリに格納された入力画像の１画面を構成する複数のマクロブロックの上記１段目処理の結果から動きベクトルが検出された縮小画像のマクロブロックの位置に対応するマクロブロックに対して連続して動きベクトルの検出を行う２段目処理とを交互に繰り返し動きベクトルの検出を行う事を特徴としている。
【００２４】
すなわち、本発明では、まず、前段処理（１段目処理）として通常サイズの入力画面からフィルタ・間引き処理した縮小画面同士で動きベクトル検出処理を行い、後段（２段目）の処理として前段処理結果を元に各マクロブロック毎の通常画面同士で動きベクトルを検出するという階層的動きベクトル検出方法を適用している。
【００２５】
そして、このような階層的動きベクトル検出方法を前提として、前段処理を、該フレームメモリ中の縮小画面の横１列分連続して行い、その後、該前段処理結果が得られた該縮小画面中のマクロブロックについて該後段処理を該フレームメモリ中の入力画面同士で連続して行い、該前段処理及び後段処理を繰り返す。
【００２６】
このようにして、前段処理においては、画面の左端の縮小画面のみ参照画の全領域をフレームメモリから例えば動きベクトル検出処理部に読み込むが、その後はシフトして現れた新規の領域のみを読み込めばよく、前段及び後段処理のスケジュールを工夫して、１段目オーバラップ領域の再読み込みを回避している。これにより、フレームメモリに対するアクセス効率が向上する。
【００２８】
また、予めフィルタ・間引き処理を行った縮小画面をフレームメモリの連続アドレス上に構成することにより、ＳＤＲＡＭやＤＲＡＭ等のフレームメモリの特性を生かしたアクセスが可能になる。
【００２９】
さらに、該後段処理の区間で符号化処理を行うことも可能であり、この場合、該前段処理の区間内で符号化速度調整用のスタッフ処理を行って符号処理の効率を上げることができる。
さらに、隣接する該前段処理の間に符号化処理を非同期で行うことも可能であり、これにより、符号化処理区間を延長することができ、前段処理区間の変化に対応できる。
【００３０】
上記の本発明に係る階層的動きベクトル検出処理を行う動画像符号化方法を実施するための本発明に係る動画像符号化装置は、入力画像をフレームメモリに格納すると共に、該入力画像に対してフィルタ・間引き処理を行った縮小画像を該フレームメモリに格納する手段と、該フレームメモリに格納された縮小画像の１画面を構成する複数のマクロブロックの横一列分のマクロブロックに対して連続して動きベクトル検出を行う１段目処理と、該フレームメモリに格納された入力画像の１画面を構成する複数のマクロブロックの上記１段目処理の結果から動きベクトルが検出された縮小画像のマクロブロックの位置に対応するマクロブロックに対して連続して動きベクトルの検出を行う２段目処理とを交互に繰り返し動きベクトルの検出を行う手段と、を備えている。
【００３２】
さらに、該後段処理の区間で符号化処理を行う符号化処理部を備えることができ、この場合、符号化処理部は、該前段処理の区間内で符号化速度調整用のスタッフ処理を行うことができる。
さらに、隣接する該前段処理の間に符号化処理を非同期で行うためのバッファメモリを設けてもよい。
【００３３】
【発明の実施の形態】
以下、本発明に係る動画像符号化方法及び装置の実施例を図を参照して説明する。
図１は、本発明に係る動画像符号化方法を実施するための装置構成例を示したものである。この実施例では、フィルタ・間引き処理部２を動きベクトル検出処理部４内ではなく前処理部１の出力とバス１０との間に接続した点が図８に示した従来例と異なっている。
【００３４】
この動画像符号化装置の動作を説明する。
まず、入力した画像データをフレームメモリ３に書き込む処理と平行して、その入力画像データをフィルタ・間引き処理部２に送り、フィルタ処理と間引き処理を行う。そして、フィルタ処理と間引き処理を行った縮小画面データをフレームメモリ３３の別領域（縮小していない入力画面データを格納する領域とは別の領域）に書き込む。
【００３５】
階層的動きベクトル検出部４は、予めフレームメモリ３に展開した縮小画面データから原画データと参照画データをそれぞれＲＡＭ４１，４２に読み込んで上述の如く１段目の処理を行う。この場合、縮小画面データをＲＡＭ４１，４２の連続領域にマッピングすることができ、ＳＤＲＡＭフレームメモリ３での効率的なメモリアクセスが可能となる。
【００３６】
また、１段目処理時の参照画データの読込アクセスを効率化するために、図２に示すように処理スケジュールを工夫する。まず、１段目の処理を横１列分連続して行い、結果をローカルメモリに保存しておく。その後、２段目の処理を連続して行う。
【００３７】
例えば、上述の如く７２０×４８０画素の通常入力画面に対し、１：４で間引いた縮小画面（１８０×１２０画素）の１６×１６画素領域を１段目の処理単位（大マクロブロック）  とすると、図１１に示した画面の場合、１段目処理を１２回（≒１８０／１６）連続で大マクロブロックＱＭＢ１，ＱＭＢ２，ＱＭＢ３，…，ＱＭＢ１２について行った後、２段目処理を４５  （≒７２０／１６）×４＝１８０マクロブロックＭＢ１〜ＭＢ１２分連続して行い、以後、続いて大マクロブロックＱＭＢ１３，…，についても同様にこれを繰り返す。
【００３８】
この処理においては、１段目処理に必要な参照画は隣り合った大マクロブロックでオーバラップしているので、左端の大マクロブロックのみ参照画の全領域を読み込み、残りの１１大マクロブロックは、シフトして現れた新規の領域（図９に示した領域ＲＲ）のみを読み込めばよく、メモリアクセスの効率化を実現することができる。
【００３９】
次に上記の階層的動きベクトル検出処理を適用した場合の符号化処理全体のスケジュールを、図３により説明する。
上記の例のように、７２０×４８０画素の画面サイズの場合、１：４で間引いた縮小画像（１８０×１２０画素）の１６×１６画素領域を１段目の処理単位（大マクロブロック）  とすると、入力１画面分の処理を完了するのに横１列分の１段目処理を８回（≒１２０／１６）実行する（同図（２）参照）。
【００４０】
ここで、同図（３），（４）に示す各マクロブロックでの２段目処理が完了する毎に、最終的な動きベクトルが得られる（同図（５）参照）ため、符号化処理はそれ以降に行われる（同図（６）参照）。
従って、動きベクトル検出の１段目処理が行われている区間は符号化処理は行われず、メモリバンド幅に余裕が出て来る。そこで、同図（６）に示すように、この区間を利用して符号化処理部５で符号化速度調節用のスタッフビットをバースト的に発生させれば、より高い効率が得られることになる。
【００４１】
また、２段目処理区間に対し１段目の処理区間が十分に大きければ、２段目処理に対応した各マクロブロック符号化区間が短くなるため、符号化処理部５において弊害が出て来る虞れがある。
そこで図４に示すように、動きベクトル検出部４と符号化処理部５との間にバッファ６を設け、ベクトル検出部４から出力されるベクトル値を一旦バッファリングして速度変換してから符号化処理部５へ渡すようにすれば、図５（７）の符号化スケジュールに示す如く、１段目検出区間のデッドゾーンを隠蔽し、符号化処理区間を引き伸ばすことが可能となる。
【００４２】
【発明の効果】
以上説明したように、本発明に係る動画像符号化方法及び装置によれば、階層的動きベクトル処理方法を適用したリアルタイムエンコーダのメモリアクセス効率を改善することが可能となり、製品の競争力向上に寄与するところが大きい。
【図面の簡単な説明】
【図１】本発明に係る動画像符号化方法を実施する装置の構成例（１）を示したブロック図である。
【図２】本発明による階層的動きベクトル検出処理スケジュールを示した図である。
【図３】本発明による動画像符号化処理スケジュール（１）を示したタイムチャート図である。
【図４】本発明に係る動画像符号化方法を実施する装置の構成例（２）を示したブロック図である。
【図５】本発明による動画像符号化処理スケジュール（２）を示したタイムチャート図である。
【図６】階層的動きベクトル検出方法を説明するための概念図である。
【図７】一般的な１チップビデオエンコーダの構成例を示したブロック図である。
【図８】従来の技術による動画像符号化装置の構成例を示したブロック図である。
【図９】１段目参照画の連続読み込み領域を説明するためのブロック図である。
【図１０】１画面内のマクロブロックの符号化順序を示す図である。
【図１１】１段目処理と２段目処理の画面上による位置付けを説明するためのブロック図である。
【図１２】従来の技術による階層的動きベクトル検出処理スケジュールを示した図である。
【符号の説明】
１：前処理部
２：フィルタ・間引き処理部
３：フレームメモリ（ＳＤＲＡＭ）
４：動きベクトル検出処理部
４１：原画ＲＡＭ
４２：参照画ＲＡＭ
４３：演算器
４４：判定部
５：符号化処理部
６：バッファメモリ
図中、同一符号は同一又は相当部分を示す。
【図１】
0003560804.tif 000002
【図２】
0003560804.tif 000003
【図３】
0003560804.tif 000004
【図４】
0003560804.tif 000005
【図５】
0003560804.tif 000006
【図６】
0003560804.tif 000007
【図７】
0003560804.tif 000008
【図８】
0003560804.tif 000009
【図９】
0003560804.tif 000010
【図１０】
0003560804.tif 000011
【図１１】
0003560804.tif 000012
【図１２】
0003560804.tif 000013