(57)【要約】【課題】動きベクトルの検出に要する時間を短縮する。【解決手段】動きベクトル検出回路２４は、入力画像と参照画像との間で動きベクトルを検出する。縮小画像生成部４０は、フレームメモリから参照画像の画素データを読み出し、元の参照画像よりも解像度の低い縮小画像を生成する。縮小画像保持部４２は、生成された縮小画像の一部又は全部を格納する。演算部４４は、縮小画像を用いて入力画像と参照画像のマッチングを演算し、近似的な動きベクトルを検出した後、その近似的な動きベクトルを参照して、元の解像度の画像を用いて動きベクトルを検出する。演算部４４が縮小画像を用いて動きベクトルを検出する際に、縮小画像のうち、縮小画像保持部４２に保持されている部分は、新たに生成することなく、縮小画像保持部４２から読み出す。【選択図】図２
2006238046.tif 000002
【特許請求の範囲】
【請求項１】
第１画像と、前記第１画像の参照画像である第２画像との間で、動きベクトルを検出する動きベクトル検出装置であって、
前記第２画像を取得し、元の画像よりも解像度の低い縮小画像を生成する縮小画像生成部と、
前記縮小画像の少なくとも一部を格納する縮小画像保持部と、
画像間のマッチングを演算して動きベクトルを検出する演算部と、を含み、
前記演算部は、前記第１画像の縮小画像と前記第２画像の縮小画像のマッチングを演算することにより得られた動きベクトルを参照して、元の解像度の前記第１画像と前記第２画像のマッチングを演算して動きベクトルを検出し、
前記縮小画像を用いて動きベクトルを検出する際に、前記縮小画像のうち、前記縮小画像保持部に保持されている部分は、前記縮小画像保持部から読み出される、
ことを特徴とする動きベクトル検出装置。
【請求項２】
前記縮小画像保持部は、前記第２画像の縮小画像の全体を保持可能なメモリにより構成され、前記縮小画像の画素の配列と同様の配列で画素データを前記メモリに格納することを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記縮小画像保持部は、次回の動きベクトル検出に必要な縮小画像と重なる領域を格納することを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項４】
前記演算部による前記動きベクトルの検出は、所定のサイズのマクロブロック単位で行われることを特徴とする請求項１から３のいずれかに記載の動きベクトル検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きベクトル検出技術に関し、例えば、フレーム間予測モードを含む画像符号化方式により動画像を符号化するために、フレーム間の動きベクトルを検出する装置に関する。
【背景技術】
【０００２】
動画の圧縮符号化方式の規格であるＭＰＥＧ（Motion Picture Experts Group）−４では、動きベクトルを用いた動き補償予測符号化が行われる。動きベクトルを検出する技術として、符号化対象画像の解像度を下げて縮小画像を生成し、縮小画像を用いて近似的な動きベクトルを検出した後、その近似的な動きベクトルを参考にしつつ、元の解像度の画像を用いて動きベクトルを検出するという、階層的動きベクトル検出方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平１１−２６０２１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来は、上述した階層動きベクトル検出方法において、符号化の対象となるマクロブロックが変わるたびに、参照画像の探索領域の画像をフレームメモリから読み出して縮小画像を生成していたが、メモリバスの混雑がボトルネックとなり、処理速度に限界があった。
【０００４】
本発明はこうした状況に鑑みてなされたものであり、その目的は、動きベクトルの検出に要する時間を短縮する技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、動きベクトル検出装置に関する。この動きベクトル検出装置は、第１画像と、前記第１画像の参照画像である第２画像との間で、動きベクトルを検出する動きベクトル検出装置であって、前記第２画像を取得し、元の画像よりも解像度の低い縮小画像を生成する縮小画像生成部と、前記縮小画像の少なくとも一部を格納する縮小画像保持部と、画像間のマッチングを演算して動きベクトルを検出する演算部と、を含み、前記演算部は、前記第１画像の縮小画像と前記第２画像の縮小画像のマッチングを演算することにより得られた動きベクトルを参照して、元の解像度の前記第１画像と前記第２画像のマッチングを演算して動きベクトルを検出し、前記縮小画像を用いて動きベクトルを検出する際に、前記縮小画像のうち、前記縮小画像保持部に保持されている部分は、前記縮小画像保持部から読み出されることを特徴とする。このような構成によれば、縮小画像保持部に保持された縮小画像を新たに生成する必要がないので、処理速度を向上させることができる。
【０００６】
前記縮小画像保持部は、前記第２画像の縮小画像の全体を保持可能なメモリにより構成され、前記縮小画像の画素の配列と同様の配列で画素データを前記メモリに格納してもよい。十分な容量のメモリを設けておくことにより、処理速度を向上させることができる。また、メモリ上の画素データの配列を実際の画像における画素の配列と同じにしておくことにより、読み出し及び書き込みの制御が容易となるとともに、高速に読み出し及び書き込みを行うことができる。
【０００７】
前記縮小画像保持部は、次回の動きベクトル検出に必要な縮小画像と重なる領域を格納してもよい。これにより、縮小画像保持部の容量が小さくても、処理速度を向上させることができる。
【０００８】
前記演算部による前記動きベクトルの検出は、所定のサイズのマクロブロック単位で行われてもよい。あるマクロブロックの動きベクトル検出のために生成した縮小画像を縮小画像保持部に格納しておくことにより、以降のマクロブロックの動きベクトル検出の際に新たに生成する縮小画像の量を最小限に抑えることができる。
【０００９】
本発明の別の態様は、画像符号化装置に関する。この画像符号化装置は、動画像を符号化して符号化データ列を生成する画像符号化装置であって、第１画像と、前記第１画像の参照画像である第２画像との間で、動きベクトルを検出する動きベクトル検出部と、前記動きベクトルを利用して前記第１画像を符号化する符号化部と、を備え、前記動きベクトル検出部は、前記第２画像を取得し、元の画像よりも解像度の低い縮小画像を生成する縮小画像生成部と、前記縮小画像の少なくとも一部を格納する縮小画像保持部と、画像間のマッチングを演算して動きベクトルを検出する演算部と、を含み、前記演算部は、前記第１画像の縮小画像と前記第２画像の縮小画像のマッチングを演算することにより得られた動きベクトルを参照して、元の解像度の前記第１画像と前記第２画像のマッチングを演算して動きベクトルを検出し、前記縮小画像を用いて動きベクトルを検出する際に、前記縮小画像のうち、前記縮小画像保持部に保持されている部分は、前記縮小画像保持部から読み出されることを特徴とする。
【００１０】
本発明の更に別の態様は、動きベクトル検出方法に関する。この動きベクトル検出方法は、第１画像と、前記第１画像の参照画像である第２画像との間で、動きベクトルを検出する方法であって、前記第２画像を取得して、元の画像よりも解像度の低い縮小画像を生成するステップと、前記第１画像の縮小画像と前記第２画像の縮小画像とのマッチングを演算して近似的な動きベクトルを検出するステップと、前記近似的な動きベクトルを参照して、元の解像度の前記第１画像と前記第２画像とのマッチングを演算して動きベクトルを検出するステップと、前記縮小画像の少なくとも一部を、縮小画像を保持する縮小画像保持部へ格納するステップと、を含み、前記縮小画像を用いて動きベクトルを検出する際に、前記縮小画像のうち、前記縮小画像保持部に保持されている部分は、前記縮小画像保持部から読み出されることを特徴とする。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、プログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、動きベクトルの検出に要する時間を短縮する技術を提供することができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態に係る画像符号化装置は、まず符号化すべき画像から解像度を下げた縮小画像を生成し、縮小画像を用いて解像度の低い大まかな動きベクトル（以下、「近似動きベクトル」という）を検出した後、その近似動きベクトルを参考にして、元の解像度の高い画像を用いて動きベクトルを検出する。本実施の形態では、このような階層的動きベクトル検出技術を用いるに際して、メモリアクセス量を低減し、動きベクトルの検出速度を向上させる技術を提案する。
【００１４】
図１は、本発明の実施の形態に係る画像符号化装置１０の全体構成を示す。画像符号化装置１０は、動きベクトル検出回路２４、動き補償回路２６、フレームメモリ２８、符号化回路３０、復号化回路３２、出力バッファ３４、符号量制御回路３６、及び参照モード選択回路３８を含む。これらの構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１５】
画像符号化装置１０に外部から入力された画像（以下、「入力画像」という）は、動きベクトル検出回路２４に送られる。動きベクトル検出回路２４は、予めフレームメモリ２８に格納されて予測のために参照の対象となる画像（以下、「参照画像」という）と入力画像との間で動きベクトルを検出する。動き補償回路２６は、符号量制御回路３６から量子化に用いる量子化ステップの値を取得し、その量子化の係数とマクロブロックの予測モードを決定する。動きベクトル検出回路２４により検出された動きベクトルと、動き補償回路２６により決定された量子化係数及びマクロブロック予測モードが、符号化回路３０へ送られる。また、動き補償回路２６は、マクロブロックについての予測値と実際の値との差分を予測誤差として符号化回路３０に送る。
【００１６】
符号化回路３０は、予測誤差を量子化係数を用いて符号化して出力バッファ３４へ送る。符号化回路３０は、量子化した予測誤差と量子化係数を復号化回路３２へ送る。復号化回路３２は、量子化された予測誤差を量子化係数に基づいて復号化し、復号化した予測誤差と動き補償回路２６による予測値との和を復号画像としてフレームメモリ２８に送る。この復号画像は、後続の画像の符号化処理において参照される場合に、参照画像として動きベクトル検出回路２４へ送られる。符号量制御回路３６は、出力バッファ３４の蓄積量の状態を取得し、その蓄積量の状態に応じて次の量子化に用いる量子化ステップの値を生成する。
【００１７】
参照モード選択回路３８は、フレーム内符号化、フレーム間前方向予測符号化、フレーム間双方向予測符号化、の間でフレーム予測モードの切り替えを行い、他の回路に対してフレームの予測モード情報を出力する。
【００１８】
図２は、動きベクトル検出回路の内部構成を示す。動きベクトル検出回路２４は、縮小画像生成部４０、縮小画像保持部４２、及び演算部４４を含む。縮小画像生成部４０は、フレームメモリ２８に格納されている入力画像及び参照画像を取得して、それらの画像の解像度を下げ、所定の倍率に縮小した画像を生成する。縮小画像生成部４０は、画素を間引いて画像を縮小してもよいし、所定のサイズのブロックに含まれる画素データを平均し、そのブロックを１つの画素としてもよいし、任意の技術を用いて縮小画像を生成してもよい。演算部４４は、入力画像の符号化の対象となるマクロブロック（符号化対象マクロブロック）と参照画像の探索領域内のマクロブロックとの間で差分（予測誤差）を演算し、差分が最も小さい参照画像のマクロブロックを探索して動きベクトルを検出する。縮小画像保持部４２は、ＳＤＲＡＭなどのメモリにより構成されており、後述するように、縮小画像生成部４０が生成した縮小画像の一部又は全部を保持する。縮小画像保持部４２は、フレームメモリ２８の一部により実現されてもよいし、フレームメモリ２８と共用されてもよい。
【００１９】
本実施の形態では、階層的な動きベクトルの検出を行う。すなわち、まず、解像度の低い縮小画像における近似動きベクトルを検出し、その近似動きベクトルを参考にしつつ、解像度の高い画像における動きベクトルを検出する。まず、縮小画像生成部４０は、入力画像の符号化対象マクロブロックと、参照画像の探索領域の縮小画像を生成する。つづいて、演算部４４は、縮小された符号化対象マクロブロックと探索領域を取得して、ブロックマッチングを行い、近似動きベクトルを検出する。次に、演算部４４は、符号化対象マクロブロックと探索領域の原画像を取得し、検出された近似動きベクトルの近傍を中心にブロックマッチングを行い、動きベクトルを検出する。演算部４４による動きベクトルの検出は、所定のサイズ、例えば縦１６ピクセル×横１６ピクセルのマクロブロック単位で行われる。
【００２０】
図３は、従来の動きベクトルの検出手順を説明するための図である。図３（ａ）は、入力画像の左上端のマクロブロックの動きベクトルを検出するときの探索領域を示す。参照画像６０ａにおいて、入力画像の符号化対象マクロブロックと同じ位置にあるマクロブロック６２ａを含む領域６４ａが探索領域に設定されている。この例では、１つのマクロブロックは、縦１６ピクセル×横１６ピクセルであり、探索領域６４ａは、縦８０ピクセル×横８０ピクセルとする。
【００２１】
縮小画像生成部４０は、フレームメモリ２８から入力画像の符号化対象マクロブロックの画素データを読み出して、画像を１／４倍に縮小し、縦４ピクセル×横４ピクセルの縮小画像を生成する。また、フレームメモリ２８から探索領域６４ａの画素データを読み出して、画像を１／４倍に縮小し、縦２０ピクセル×横２０ピクセルの縮小画像を得る。演算部４４は、これらの縮小画像を用いて、近似動きベクトルを検出する。つづいて、演算部４４は、フレームメモリ２８から符号化対象マクロブロックと探索領域の原画像を取得し、近似動きベクトルを参考にしつつ、動きベクトルを検出する。
【００２２】
動きベクトルが検出されると、図３（ｂ）に示すように、符号化対象マクロブロックを右隣にうつし、同様に動きベクトルを検出する。入力画像の最上段の右端のマクロブロックまで動きベクトルが検出されると、次の段のマクロブロックにうつる。こうして、入力画像の全マクロブロックの動きベクトルを検出する。
【００２３】
図４及び図５は、本実施の形態の動きベクトルの検出手順を説明するための図である。図４（ａ）は、入力画像の左上端のマクロブロックの動きベクトルを検出するときの探索領域を示す。図３（ａ）の場合と同様に、探索領域６４ａの縮小画像を生成して近似動きベクトルを検出し、つづいて、原画像を用いて動きベクトルを検出する。このとき、縮小画像生成部４０が生成した探索領域６４ａの縮小画像を縮小画像保持部４２に格納しておく。
【００２４】
この例では、縮小画像保持部４２は、１フレームの入力画像の全てのマクロブロックの動きベクトルを検出するために用いられる全ての探索領域６４の縮小画像を格納可能な程度の容量のメモリにより構成される。すなわち、参照画像の縮小画像を１フレーム分程度格納可能な容量を有するメモリにより構成される。入力画像の端部付近のマクロブロックの動きベクトルを検出するときに、図４（ａ）などに示すように、参照画像をはみ出すように探索領域が設定される場合は、その分だけ参照画像の縮小画像の１フレーム分よりも容量の大きなメモリを設ければよい。
【００２５】
次に、図４（ｂ）に示すように、右隣のマクロブロックの動きベクトル検出にうつる。探索領域６４ｂの縮小画像を生成する際に、探索領域６４ａと重なっている領域６６ｂの縮小画像は、既に生成されて縮小画像保持部４２に格納されているので、縮小画像保持部４２から読み出せばよい。したがって、縮小画像生成部４０は、探索領域６４ａと重なっていない領域６８ｂの画素データのみをフレームメモリ２８から読み出して縮小画像を生成すればよい。このとき、新たに生成した領域６８ｂの縮小画像も、縮小画像保持部４２に格納しておく。
【００２６】
図４（ｃ）に示すように、それ以降のマクロブロックの動きベクトルを検出する際にも、同様に、探索領域６４ｃの縮小画像の全てを新たに生成する必要はなく、領域６６ｃの縮小画像は縮小画像保持部４２から読み出し、領域６８ｃの縮小画像のみを生成すればよい。
【００２７】
図５は、入力画像の２段目以降のマクロブロックの動きベクトルを検出する手順を説明するための図である。図５（ａ）に示すように、２段目の左端のマクロブロックの動きベクトルを検出するとき、探索領域６４ｄのうち、領域６６ｄの縮小画像は縮小画像保持部４２から読み出せばよく、領域６８ｄの縮小画像のみを生成すればよい。
【００２８】
図５（ｂ）及び図５（ｃ）に示すように、２段目の２列目以降のマクロブロックにおいては、新たに縮小画像を生成するのは、探索領域６４ｅ、６４ｆの右下端の領域６８ｅ、６８ｆのみでよい。
【００２９】
上述のように、縮小画像保持部４２を設けることにより、演算部４４が縮小画像を用いて近似動きベクトルを検出する際に、符号化対象マクロブロックが変わるたびにフレームメモリ２８から参照画像の探索領域の原画像を取得して縮小画像を新たに生成するのではなく、過去の近似動きベクトルの検出において既に生成されて保持されていた参照画像の縮小画像を縮小画像保持部４２から読み出して再利用することができる。これにより、フレームメモリ２８に対するメモリアクセスを飛躍的に削減し、動きベクトル検出の処理速度を向上させることができる。ひいては、動きベクトルの検出精度を向上させることもできる。
【００３０】
図３に示した方法と、図４及び図５に示した方法におけるメモリ転送量を比較してみる。図３の例では、１つのマクロブロックにつき、探索領域６４の原画像をフレームメモリ２８から読み出すので、８０×８０＝６４００ピクセル分の画素データを転送する必要がある。それに対して、図４及び図５の例では、最初の最上段１列目のマクロブロックについては図３の例と同様であるが、最上段の２列目以降のマクロブロックにおいては、メモリ転送量が削減される。例えば、最上段２列目のマクロブロックにおいては、図４（ｂ）に示すように、領域６８ｂはフレームメモリ２８から原画像を読み出すので８０×１６＝１２８０ピクセル分、領域６６ｂは縮小画像保持部４２から縮小画像を読み出すので２０×１６＝３２０ピクセル分を読み出す。そして、新たに生成した領域６８ｂの縮小画像を縮小画像保持部４２に格納するので、２０×４＝８０ピクセル分を書き込む。すなわち、合計１６８０ピクセル分の画素データが転送される。これは、図３に示した例の２６％にあたる。
【００３１】
さらに、２段目の２列目以降のマクロブロックにおいては、図５（ｂ）に示すように、領域６８ｅはフレームメモリ２８から原画像を読み出すので１６×１６＝２５６ピクセル分、領域６６ｅは縮小画像保持部４２から縮小画像を読み出すので２０×１６＋１６×４＝３８４ピクセル分を読み出す。そして、新たに生成した領域６８ｅの縮小画像を縮小画像保持部４２に格納するので、４×４＝１６ピクセル分を書き込む。すなわち、合計６５６ピクセル分の画素データが転送される。これは、図３に示した例の１０％にあたる。
【００３２】
縮小画像保持部４２は、縮小画像の画素の配列と同様の配列で画素データを保持してもよい。これにより、読み出し及び書き込みの制御が容易になるとともに、高速に読み出し及び書き込みを行うことができる。
【００３３】
図６は、本実施の形態の動きベクトルの検出手順の別の例を説明するための図である。この例では、探索領域６４の縮小画像の全てを縮小画像保持部４２に格納するのではなく、次回の動きベクトル検出の際に用いられる探索領域と重なる領域のみを縮小画像保持部４２に格納しておく。図６（ａ）に示すように、左上端のマクロブロックの動きベクトルを検出する際に、探索領域６４ａの縮小画像を生成する。このとき、図６（ｄ）に示すように、次に行う右隣のマクロブロックの動きベクトル検出で用いられる探索領域６４ｂと重なる領域６９ａの縮小画像を縮小画像保持部４２に格納する。
【００３４】
図６（ｂ）に示すように、最上段２列目のマクロブロックの動きベクトルを検出する際には、探索領域６４ｂのうち、領域６６ｂは前回の探索領域６４ａと重なっているので、縮小画像保持部４２から縮小画像を読み出せばよい。前回の探索領域６４ａと重なっていない領域６８ｂは、フレームメモリ２８から原画像の画素データを読み出して、新たに縮小画像を生成する。このとき、図６（ｅ）に示すように、次に行う右隣のマクロブロックの動きベクトル検出で用いられる探索領域６４ｃと重なる領域６９ｂの縮小画像を縮小画像保持部４２に上書きする。
【００３５】
この例におけるメモリ転送量を評価する。各段の２列目以降のマクロブロックにおいては、図６（ｂ）に示すように、領域６８ｂはフレームメモリ２８から原画像を読み出すので８０×１６＝１２８０ピクセル分、領域６６ｂは縮小画像保持部４２から縮小画像を読み出すので２０×１６＝３２０ピクセル分を読み出す。そして、領域６９ｂの縮小画像を縮小画像保持部４２に格納するので、２０×１６＝３２０ピクセル分を書き込む。すなわち、合計１９２０ピクセル分の画素データが転送される。これは、図３に示した例の３０％にあたる。
【００３６】
この例では、縮小画像保持部４２として、領域６９の縮小画像を保持可能な容量のメモリを設ければよいので、コスト、サイズ、重量、消費電力などの増大を抑えつつ、メモリ転送量を削減する効果が得られる。
【００３７】
上述したいずれの技術を用いても、フレームメモリ２８に対するアクセスを削減し、高解像度の画像を高速に符号化することができる。
【００３８】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００３９】
実施の形態では、縮小画像の画素配置と同様の配置で縮小画像保持部４２に縮小画像を格納したが、新たに生成した領域６８の縮小画像を、使用しなくなった領域に順次上書きしていってもよい。これにより、必要な縮小画像保持部４２の容量を小さくすることができる。また、参照画像だけでなく、入力画像についても同様に縮小画像を縮小画像保持部４２に格納して再利用してもよい。これにより、さらにメモリアクセスを削減し、処理を高速化することができる。
【００４０】
実施の形態では、縮小画像生成部４０が入力画像及び参照画像の縮小画像を生成したが、入力画像の縮小画像は、他の構成により生成されて動きベクトル検出回路２４に入力されてもよい。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施の形態に係る画像符号化装置の全体構成を示す図である。
【図２】動きベクトル検出回路の内部構成を示す図である。
【図３】従来の動きベクトルの検出手順を説明するための図である。
【図４】本実施の形態の動きベクトルの検出手順を説明するための図である。
【図５】本実施の形態の動きベクトルの検出手順を説明するための図である。
【図６】本実施の形態の動きベクトルの検出手順の別の例を説明するための図である。
【符号の説明】
【００４２】
１０  画像符号化装置、２４  動きベクトル検出回路、２６  動き補償回路、２８  フレームメモリ、３０  符号化回路、３２  復号化回路、３４  出力バッファ、３６  符号量制御回路、３８  参照モード選択回路、４０  縮小画像生成部、４２  縮小画像保持部、４４  演算部。
【図１】
2006238046.tif 000003
【図２】
2006238046.tif 000004
【図３】
2006238046.tif 000005
【図４】
2006238046.tif 000006
【図５】
2006238046.tif 000007
【図６】
2006238046.tif 000008