(57)【要約】【課題】小数精度の動きベクトル検出及び双予測の動きベクトル検出において、ノルムを利用して演算量を削減できる動き検出回路及び動き検出方法を提供する。【解決手段】動きベクトル検出装置は、符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、推定したノルムを用いて評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器とを含み、ノルム推定・判定器の判定結果に応じて評価対象の動きベクトルに対応する予測画像について類似度計算回路により類似度を計算するか否かを制御することを特徴とする。【選択図】図７
2011035569.tif 000002
【特許請求の範囲】
【請求項１】
動画像符号化処理における動き補償フレーム間予測に必要な動きベクトルを検出する動きベクトル検出装置であって、
符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、
整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器と
を含み、前記ノルム推定・判定器の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする動きベクトル検出装置。
【請求項２】
前記ノルム推定・判定器は、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つの小数精度の動きベクトルに対応する予測画像のノルムを推定する小数精度ノルム計算器と、
前記小数精度ノルム計算器が推定する小数精度の動きベクトルに対応する予測画像のノルムを用いて前記小数精度の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム判定器と
を含み、
前記ノルム判定器の判定結果に応じて前記小数精度の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする請求項１記載の動きベクトル検出装置。
【請求項３】
前記ノルム計算器は、第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを前記複数個のノルムとして計算し、
前記ノルム推定・判定器は、前記ノルム計算器が算出する第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを用いて双予測画像のノルムを計算し、該双予測画像のノルムを用いて前記双予測画像が予測モードとして最適である可能性の有無を判定し、
前記ノルム推定・判定器の判定結果に応じて前記双予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする請求項１記載の動きベクトル検出装置。
【請求項４】
整数精度の動きベクトルに対応する予測画像のノルムを複数個計算し、
前記複数個のノルムを用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、
前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定し、
前記可能性の有無の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について類似度を計算するか否かを制御する
各段階を含むことを特徴とする動きベクトル検出方法。
【請求項５】
前記１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムは、１つの小数精度の動きベクトルに対応する予測画像のノルム、又は、複数の参照画像に対する複数の動きベクトルに対応する双予測画像のノルムであることを特徴とする請求項４記載の動きベクトル検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、一般に動画像符号化に関し、詳しくは動きベクトルを用いた動画像符号化に関する。
【背景技術】
【０００２】
動画像情報をデジタル信号として取り扱う際の符号フォーマットとして、国際標準規格であるＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）やＨ．２６４／ＡＶＣ（Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）などが用いられている。これらの圧縮符号方式は、動き補償フレーム間予測と直交変換とを組み合わせたハイブリッド符号方式である。
【０００３】
Ｈ．２６４／ＡＶＣにおいて、符号化処理対象のフレームは、マクロブロック単位で処理が行われる。１マクロブロックは、横１６画素、縦１６画素から構成される。1フレームが横１９２０画素、縦１０８８画素から構成される動画像の場合、1フレームは横方向に１２０個、縦方向に６８個、合計８１６０個のマクロブロックから構成される。
【０００４】
まず各マクロブロックに対して、マクロブロックと予測画像との差分画像が計算される。差分画像に対して直交変換及び量子化処理が行われ、量子化された変換係数が求められる。量子化された変換係数をエントロピー符号化により符号処理することにより、情報量圧縮された画像情報であるビットストリームが生成される。更に、上記の量子化された変換係数に対して、逆量子化と逆直交変換とが実行され、差分画像が復元される。この復元された差分画像と前記の予測画像とから、再構成画像を生成する。再構成画像は、そのブロック歪みを減少させた後に、フレームメモリに保存される。
【０００５】
Ｈ．２６４／ＡＶＣでは、各マクロブロックの予測画像の生成方式として、画面内予測方式と画面間予測方式の何れかを選択できる。画面間予測方式を選択したマクロブロックに対しては、動きベクトルが検出され、フレームメモリに格納されている再構成画像を参照フレームとして、動きベクトルに対応する座標の画像ブロックが予測画像として用いられる。
【０００６】
図１は、処理対象フレームと処理対象マクロブロックとを模式的に示す図である。処理対象フレーム１０が複数のマクロブロックに分割されており、そのうちの１つが処理対象マクロブロック１１である。図２は、処理対象マクロブロック、動きベクトル、及び予測画像の関係を示す図である。処理対象マクロブロック１１の左上隅の画素を始点として動きベクトル１４が検出される。この動きベクトル１４が示す先の画素を左上隅とするマクロブロックと同一形状の画像ブロックが予測画像１５となる。動きベクトル１４は、参照フレーム１２において処理対象マクロブロック１１を内側に含む参照領域１３の中から探索される。この際、予測画像１５が処理対象マクロブロック１１と最も類似した画像となるように動きベクトル１４を選択すれば、誤差画像の情報量が最も小さくなり、最終的にエントロピー符号化後のビットストリームの情報量が最も小さくなる。従って、正確に動きベクトル１４を検出することが重要となる。
【０００７】
動き検出処理では以下の式（１）のＣＯＳＴを用いて類似度の判定を行う。ＣＯＳＴの値が小さい動きベクトルほど、好ましい動きベクトル１４であると判定される。
【０００８】
Cost(x,y)=SAD(x,y)+λ×VecCost(x,y)    ・・・・式（１）
ＳＡＤ（ｘ，ｙ）は、動きベクトル１４の水平成分がｘで垂直成分がｙである場合の処理対象マクロブロック１１と予測画像１５の画素毎の差分の絶対値和である。ＶｅｃＣｏｓｔ（ｘ，ｙ）は動きベクトル（ｘ，ｙ）を符号化したときの発生ビット数であり、ｌｏｇ２｜ｘ−ｐｒｅｄＸ｜とｌｏｇ２｜ｙ−ｐｒｅｄＹ｜との和で表わされる。λはＳＡＤ（ｘ，ｙ）とＶｅｃＣｏｓｔ（ｘ，ｙ）との相対的な重みを調整するラグランジュパラメータであり、（ｐｒｅｄＸ，ｐｒｅｄＹ）は周辺ブロックから求まる予測ベクトルを表す。ＳＡＤ（ｘ，ｙ）は以下の式（２）を用いて計算される。
【０００９】
SAD(x,y)=Σ|C(i,j)-R(x+i,y+j)|    ・・・・式（２）
ただし、Σはｉ＝０，１，２，・・・，１５及びｊ＝０，１，２，・・・，１５について和を取ることを表す。Ｃ（ｉ，ｊ）は処理対象マクロブロック１１のｊ行ｉ列の位置の画素値であり、Ｒ（ｘ＋ｉ，ｙ＋ｊ）は動きベクトル（ｘ，ｙ）の場合の予測画像１５のｊ行ｉ列の画素値を表す。１つのＳＡＤ（ｘ，ｙ）の計算には、Ｃ（ｉ，ｊ）−Ｒ（ｘ＋ｉ，ｙ＋ｊ）の減算を横１６×縦１６の２５６回、減算結果の絶対値を計算する演算が２５６回、２５６個の絶対値の和をとるために２５５回の加算が必要となる。更に、λとＶｅｃＣｏｓｔ（ｘ，ｙ）との乗算並びにＳＡＤ（ｘ，ｙ）とλ×ＶｅｃＣｏｓｔ（ｘ，ｙ）との加算が行うので、合計７６９回の演算が必要となる。
【００１０】
図３は、０．２５画素精度の動きベクトルに基づいて予測画像を生成する方法を説明するために画素の並び示す図である。図４は、図３の画素の並びにおいて予測画像を生成する式を示す図である。図３及び図４は、非特許文献２のＦｉｇｕｒｅ８−４に記載されるものである。Ｈ．２６４／ＡＶＣでは、動きベクトルとして、１／４画素精度の小数ベクトルを選択することが認められている。図３において、画素１８は参照フレームの画素であり、それ以外の四角は小数精度の画素である。Ｅ，Ｆ，Ｇ，Ｈ，Ｉ，Ｊが、それぞれ参照フレームのｊ行（ｉ−２）列、ｊ行（ｉ−１）列、ｊ行ｉ列、ｊ行（ｉ＋１）列、ｊ行（ｉ＋２）列，ｊ行（ｉ＋３）列を表わす。またＫ，Ｌ，Ｍ，Ｎ，Ｐ，Ｑが、それぞれ参照フレームの（ｊ＋１）行（ｉ−２）列、（ｊ＋１）行（ｉ−１）列、（ｊ＋１）行ｉ列、（ｊ＋１）行（ｉ＋１）列、（ｊ＋１）行（ｉ＋２）列、（ｊ＋１）行（ｉ＋３）列を表す。このとき例えばｂはｊ行（ｉ＋０．５）列を表わし、ｈは（ｊ＋０．５）行ｉ列を表わし、ｊは（ｊ＋０．５）行（ｉ＋０．５）列の画素を表している。
【００１１】
動きベクトルの水平成分が１／２精度、垂直成分が整数精度の場合、水平方向に連続して並ぶ６点の画素値から、予測画像１点の画素値が計算される。例えば図３のｂ点の画素値は、Ｅ点、Ｆ点、Ｇ点、Ｈ点、Ｉ点、Ｊ点の画素値に基づいて、図４の式（イ）、（ハ）を用いて計算される。同様に、動きベクトルの水平成分が整数精度、垂直成分が１／２精度の場合、垂直方向に連続して並ぶ６点の画素値から、予測画像１点の画素値が計算される。例えば図３のｈ点の画素値は、Ａ点、Ｃ点、Ｇ点、Ｍ点、Ｒ点、Ｔ点の画素値から、図４の式（ロ）、（ニ）を用いて計算される。同様に、動きベクトルの水平精度、垂直精度が、整数精度、１／２精度、１／４精度の任意の組み合わせの予測画像の画素値は、図４の式（イ）〜（ナ）を用いて計算される。なお“＞＞ｘ”は、右方向へのｘビットのビットシフトを意味する。式（イ）〜（ナ）において、小数部分を含む値となった場合、切り捨てを行って整数精度の値に丸める。またＣｌｉｐ１ｙ（ｘ）は、画素値に認められている下限値よりｘが小さくなる場合に下限値に丸め、画素値に認められている上限値よりｘが大きくなる場合に上限値に丸める操作を表す。１画素を８ビットで表現する画像の場合、下限値は０、上限値は２５５である。
【００１２】
更に、Ｈ．２６４／ＡＶＣでは、画面間予測方式として、双予測を選択することが認められている。双予測画像では、０番目の参照フレームから生成したＬ０予測画像の画素値と１番目の参照フレームから生成したＬ１予測画像の画素値との重み付け平均値として、画素値が計算される。具体的には、双予測画像のｊ行ｉ列の位置の画素値Ｙは、Ｌ０予測画像のｊ行ｉ列の位置の画素値をＹ０、Ｌ１予測画像のｊ行ｉ列の位置の画素値をＹ１とすると、以下の式（３）を用いて計算される。
【００１３】
Ｙ=Ｗ0×Y0+W1×Y1+D                              ・・・・式（３）
ここでＷ０、Ｗ１は重み係数、Ｄはオフセット値を表す。
【００１４】
このようにＨ．２６４／ＡＶＣでは、マクロブロックを画面間予測方式で符号化する場合、３つの予測方式のうちの１つを選択できる。即ち、０番目の参照フレームから予測画像を生成するＬ０予測、１番目の参照フレームから予測画像を生成するＬ１予測、及び、０番目の参照フレームからの予測画像と１番目の参照フレームからの予測画像の両方を用いて生成する双予測の何れかを選択できる。例えば、Ｌ０予測の参照領域のサイズを水平方向について−３から＋３であり、垂直方向について−３から＋３であるとする。この場合、動きベクトルの水平成分については、−３、−２．７５、−２．５、・・・、＋２．７５、＋３の２５通りの何れかの値をとり、同様に垂直成分も２５通りの何れかの値をとる。従って、Ｌ０予測において有り得る動きベクトルの数は、２５×２５＝６２５通りとなる。同様に、Ｌ１予測において有り得る動きベクトルの数も６２５通りとなる。この場合、双予想の動きベクトルの取り得る組み合わせの数は、６２５×６２５＝３９０６２５通りとなる。各動きベクトルの候補において、式（１）に示すコスト計算が必要となるため、動き検出処理には膨大な演算量が必要となる。
【００１５】
動き検出処理に必要な演算量を削減する手法として、非特許文献１にＳＥＡ（Ｓｕｃｃｅｓｓｉｖｅ  Ｅｌｉｍｉｎａｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ）という方法が提案されている。ＳＥＡでは類似度の判定に差分絶対値和を用いる。すなわち、式（２）で計算されるＳＡＤ（ｘ，ｙ）がより小さくなる動きベクトルが、処理対象マクロブロックとより類似度が高いと判定する。
【００１６】
ＳＥＡでは、まず処理対象マクロブロックのノルムＮを以下の式（４）を用いて計算する。
【００１７】
Ｎ=ΣC(i,j)                                        ・・・・式（４）
ただし、Σはｉ＝０，１，２，・・・，１５及びｊ＝０，１，２，・・・，１５について和を取ることを表す。次に、ｔｍｐＳＡＤに十分大きな値ＭＡＸを代入する。次に、評価対象の動きベクトル（ｘ，ｙ）を選択する。次に、評価対象の動きベクトル（ｘ，ｙ）でのノルムＭ（ｘ，ｙ）を以下の式（５）を用いて計算する。
【００１８】
M(x,y)=ΣR(x+i,y+j)                      ・・・・式（５）
ここで、Σはｉ＝０，１，２，・・・，１５及びｊ＝０，１，２，・・・，１５について和を取ることを表す。Ｒ（ｘ＋ｉ，ｙ＋ｊ）は動きベクトル（ｘ，ｙ）の場合の予測画像１５のｊ行ｉ列の画素値を表す。
【００１９】
次に、Ｎ、Ｍ（ｘ，ｙ）、及びｔｍｐＳＡＤが以下の式（６）を満たすか否かを判定する。
【００２０】
N-tmpSAD≦M(x,y)≦N+tmpSAD          ・・・・式（６）
式（６）を満たす場合、式（２）を用いて、ＳＡＤ（ｘ，ｙ）を計算する。この計算したＳＡＤ（ｘ，ｙ）がｔｍｐＳＡＤよりも小さい場合、即ちＳＡＤ（ｘ，ｙ）＜ｔｍｐＳＡＤの場合、ｔｍｐＳＡＤにＳＡＤ（ｘ，ｙ）を、ＶｅｃＸにｘを、ＶｅｃＹにｙを代入し、次の動きベクトルの候補の処理に移る。式（６）を満たさない場合、式（２）のＳＡＤ（ｘ，ｙ）の計算を行わずに、次の動きベクトルの候補の処理に移る。以上の処理を評価対象のすべての動きベクトルについて行う。最後にＶｅｃＸ、ＶｅｃＹに保存されている値が、検出した動きベクトルとして出力される。
【００２１】
ＳＥＡでは、上記式（６）のようにノルムを用いて前判定することにより、実際にＳＡＤ（ｘ，ｙ）を計算することなくＳＡＤ（ｘ，ｙ）＞ｔｍｐＳＡＤとなる場合を効率的に見つけ、以降の処理の計算量を削減している。この方法では、以下に説明する数学上の性質を利用している。
【００２２】
任意の２つの整数Ｃ（ｉ，ｊ）とＲ（ｘ＋ｉ，ｙ＋ｊ）の間には三角不等式、以下の式（７）が成立する。
【００２３】
||C(i,j)|-|R(x+i,y+j)||≦|C(i,j)-R(x+i,y+j)|      ・・・・式（７）
式（７）は、以下の式（８）且つ式（９）と同値である。
【００２４】
|C(i,j)|-|R(x+i,y+j)|≦|C(i,j)-R(x+i,y+j)|        ・・・・式（８）
|R(x+i,y+j)|-|C(i,j)|≦|C(i,j)-R(x+i,y+j)|        ・・・・式（９）
式（８）及び式（９）は、ｉとｊについて和をとっても成立するので、以下の式（１０）及び式（１１）が成立する。
【００２５】
Σ|C(i,j)|-Σ|R(x+i,y+j)|≦Σ|C(i,j)-R(x+i,y+j)|      ・・・・式（１０）
Σ|R(x+i,y+j)|-Σ|C(i,j)|≦Σ|C(i,j)-R(x+i,y+j)|      ・・・・式（１１）
ここで式（４）及び式（５）を用いると、式（１０）及び式（１１）は、以下の式（１２）及び式（１３）のように表わすことができる。
【００２６】
N-M(x,y)≦SAD(x,y)      ・・・・式（１２）
M(x,y)-N≦SAD(x,y)      ・・・・式（１３）
評価対象の動きベクトル（ｘ，ｙ）でのＳＡＤ（ｘ，ｙ）がｔｍｐＳＡＤと等しいか小さい場合、ＳＡＤ（ｘ，ｙ）≦ｔｍｐＳＡＤであるから、式（１２）及び式（１３）から、以下の式（１４）及び式（１５）が得られる。
【００２７】
N-M(x,y)≦tmpSAD      ・・・・式（１４）
M(x,y)-N≦tmpSAD      ・・・・式（１５）
式（１４）及び式（１５）から、式（６）が導かれる。上記の対偶をとると、「式（６）を満たさないとき、評価対象の動きベクトル（ｘ，ｙ）でのＳＡＤ（ｘ，ｙ）はｔｍｐＳＡＤより大きい」という命題が証明される。即ち、式（６）を満たさない場合、ＳＡＤ（ｘ，ｙ）を実際に計算しなくても、必ずＳＡＤ（ｘ，ｙ）＞ｔｍｐＳＡＤとなることが保証される。
【００２８】
式（１２）及び式（１３）は、定性的には次のように考えることができる。Ｒ、Ｍ（ｘ，ｙ）、及びＳＡＤ（ｘ，ｙ）は２５６（＝１６×１６）画素分の値である。従って、式（１２）及び式（１３）の両辺を２５６で割った以下の式（１２Ａ）及び式（１３Ａ）は、１画素あたりの平均値の関係を表す式と考えられる。
【００２９】
N/256−N(x,y)/256≦SAD(x,y)/256  ・・・式（１２Ａ）
M(x,y)/256−N/256≦SAD(x,y)/256  ・・・式（１３Ａ）
これは、動きベクトル（ｘ，ｙ）が示す位置の予測画像と処理対象マクロブロックとの差分絶対値和の平均値は、必ず、処理対象マクロブロックの画素値の平均値Ｎ／２５５と予測画像の画素値の平均値Ｍ（ｘ，ｙ）／２５５との差以上になることを表している。
【００３０】
図５Ａ乃至図５Ｃは、予測画像と処理対象マクロブロックとの画素値の平均値の関係を模式的に示す図である。ここでは説明を簡単にするために、２５６画素ではなく２画素の場合について示している。図５Ａ乃至図５Ｃにおいて、処理対象マクロブロックＣ（０，０）及びＣ（１，０）のノルムの１画素あたりの平均値は１５０（＝（１５０＋１５０）／２）である。また評価対象の予測画像のノルムＭ（ｘ，ｙ）の１画素あたりの平均値は１００である。式（１２Ａ）及び式（１２Ｂ）によって、図５Ａ乃至図５Ｃの何れの場合も差分絶対値和の１画素あたりの平均値は、５０（＝１５０−１００）以上、且つ、−５０（＝１００−１５０）以上であることが保証される。実際に差分絶対値和の１画素あたりの平均値を計算すると、図５Ａでは（｜１５０−１００｜＋｜１５０−１００｜）／２＝５０となる。また図５Ｂでは（｜１５０−５０｜＋｜１５０−１５０｜）／２＝５０となる。更に図５Ｃでは（｜１５０−０｜＋｜１５０−２００｜）／２＝１００となる。このように式（１２Ａ）および式（１３Ａ）を常に満たしていることが分かる。
【００３１】
上記説明したように、動きベクトル（ｘ，ｙ）の場合の処理対象マクロブロックと予測画像との間の差分絶対値和ＳＡＤ（ｘ，ｙ）の下限値は、処理対象マクロブロックのノルムＮと予測画像ノルムＭ（ｘ，ｙ）とから、式（１２）及び式（１３）にように求まる。この下限値がｔｍｐＳＡＤより大きい場合、実際にＳＡＤ（ｘ，ｙ）の計算を行わなくても、候補ベクトルの更新が行われないことが確定する。
【００３２】
処理対象マクロブロックのノルムＲの計算には、２５６画素の加算のために２５５回の加算が必要となる。同様に、１つのＭ（ｘ，ｙ）の計算に２５５回の加算が必要となる。式（６）の判定には、加減算が２回及び比較演算が２回で、合計４回の演算が必要である。例えば評価対象の動きベクトルが１００個あり、７５個の動きベクトルが式（６）を満たさなかった場合を考える。ＳＥＡを用いない場合は７６９×１００＝７６９００回の演算が必要である。ＳＥＡを用いた場合、ノルムＲの計算に２５５回、Ｍ（ｘ，ｙ）の計算に２５５×１００回、式（６）の評価に４×１００回、式（２）の計算に７６９×（１００−７５）回となり、合計で４５３８０回の演算が必要となる。このようにＳＥＡを用いることにより、動きベクトル検出に必要な演算量が削減できることが分かる。
【００３３】
しかし、非特許文献１ではＳＥＡを整数精度の動きベクトルの検出に用いる方法しか提示しておらず、整数精度のＬ０予測及びＬ１予測の動きベクトル検出にしか適用できない。即ち、小数精度の動きベクトル検出及び双予測の動きベクトル検出において、ノルムを利用して演算量を削減する方式が提供されていない。
【先行技術文献】
【特許文献】
【００３４】
【特許文献１】特開２００７−３２９６９３号公報
【特許文献２】特開平１１−３１３３２７号公報
【特許文献３】特開２００８−１１１５８号公報
【特許文献４】特開２００４−２３６０２３号公報
【非特許文献】
【００３５】
【非特許文献１】Ｗ．  Ｌｉ，Ｅ．  Ｓａｌａｒｉ，”Ｓｕｃｃｅｓｓｉｖｅ  ｅｌｉｍｉｎａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｍｏｔｉｏｎ  ｅｓｔｉｍａｔｉｏｎ，”  ＩＥＥＥ  Ｔｒａｎｓ．  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ、ｖｏｌ．  ４、  ｎｏ．１，  ｐｐ．１０５−１０７，  Ｊａｎ．  １９９５．
【非特許文献２】ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６４  ＩＳＯ／ＩＥＣ  １４４９６−１０  ＡＶＣ
【発明の概要】
【発明が解決しようとする課題】
【００３６】
以上を鑑みると、小数精度の動きベクトル検出及び双予測の動きベクトル検出において、ノルムを利用して演算量を削減できる動き検出回路及び動き検出方法が望まれる。
【課題を解決するための手段】
【００３７】
動画像符号化処理における動き補償フレーム間予測に必要な動きベクトルを検出する動きベクトル検出装置は、符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器とを含み、前記ノルム推定・判定器の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする。
【００３８】
動きベクトル検出方法は、整数精度の動きベクトルに対応する予測画像のノルムを複数個計算し、前記複数個のノルムを用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定し、前記可能性の有無の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について類似度を計算するか否かを制御する各段階を含むことを特徴とする。
【００３９】
動画像処理システムは、動画像データを生成するカメラと、前記動画像データから動きベクトルを検出し、該動きベクトルに基づくフレーム間予測を用いて前記動画像データを符号化する動画像符号化装置とを含み、前記動画像符号化装置は、前記動画像データ中の符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器とを含み、前記ノルム推定・判定器の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする。
【発明の効果】
【００４０】
本願開示の少なくとも１つの実施例によれば、既に計算された整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定する。即ち、１つの小数精度の動きベクトルに対応する予測画像のノルム、又は、複数の参照画像に対する複数の動きベクトルに対応する双予測画像のノルムを、複数の整数精度の動きベクトルに対応する複数個のノルムから推定することができる。またこの推定したノルムを用いて、類似度計算を実際に実行するか否かを制御することにより、演算量を削減することができる。
【図面の簡単な説明】
【００４１】
【図１】処理対象フレームと処理対象マクロブロックとを模式的に示す図である。
【図２】処理対象マクロブロック、動きベクトル、及び予測画像の関係を示す図である。
【図３】０．２５画素精度の動きベクトルに基づいて予測画像を生成する方法を説明するために画素の並び示す図である。
【図４】図３の画素の並びにおいて予測画像を生成する式を示す図である。
【図５Ａ】予測画像と処理対象マクロブロックとの画素値の平均値の関係を模式的に示す図である。
【図５Ｂ】予測画像と処理対象マクロブロックとの画素値の平均値の関係を模式的に示す図である。
【図５Ｃ】予測画像と処理対象マクロブロックとの画素値の平均値の関係を模式的に示す図である。
【図６】本発明を適用する符号化装置の一例としてＨ．２６４／ＡＶＣ規格の動画像符号化装置のブロック図を示す。
【図７】図６の動き検出部の構成の一例を示す図である。
【図８】１つの着目マクロブロックに対して動きベクトルを検出する際の動き検出部の動作を示すフローチャートである。
【図９】図８のステップＳ３のＬ０整数精度動き検出の処理を示すフローチャートである。
【図１０】図８のステップＳ５のＬ０小数精度動き検出の処理を示すフローチャートである。
【図１１】図８のステップＳ７の双予測動き検出の処理を示すフローチャートである。
【図１２】評価対象のベクトルの水平成分が０．５精度であり且つ垂直成分が整数精度である場合について、各画素の配置を模式的に示す図である。
【図１３】図６の動画像符号化装置を適用したシステムの構成の一例を示す図である。
【図１４】図６の動画像符号化装置を適用したシステムの構成の別の一例を示す図である。
【発明を実施するための形態】
【００４２】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００４３】
図６に、本発明を適用する符号化装置の一例としてＨ．２６４／ＡＶＣ規格の動画像符号化装置のブロック図を示す。図６に示す動画像符号化装置は、誤差画像生成部２１、直交変換・量子化部２２、エントロピー符号化部２３、逆量子化・逆直交変換部２４、再構成画像生成部２５、画面内予測部２６、動き補償部２７、動き検出部２８、デブロッキングフィルタ部２９、及びフレームメモリ３０を含む。誤差画像生成部２１は、着目マクロブロックに対して、当該マクロブロックと予測画像との差分画像を計算する。誤差画像生成部２１が計算した差分画像（誤差画像）は直交変換・量子化部２２に供給される。直交変換・量子化部２２は、差分画像に対して直交変換と量子化処理とを実行して、量子化された変換係数を求める。この量子化後変換係数は、エントロピー符号化部２３と逆量子化・逆直交変換部２４とに供給される。エントロピー符号化部２３は、量子化後変換係数をエントロピー符号化し、情報量圧縮された画像情報であるビットストリームを生成する。逆量子化・逆直交変換部２４は、量子化後変換係数に対して逆量子化と逆直交変換とを実行し、差分画像（誤差画像）を復元する。再構成画像生成部２５は、復元された差分画像と誤差画像生成部２１で用いた予測画像とから、再構成画像を生成する。デブロッキングフィルタ部２９は、直交変換・量子化処理と逆量子化・逆直交変換処理とにより再構成画像に生じたブロック歪みを減少させる処理を行い、処理後の画像をフレームメモリ３０に保存する。
【００４４】
予測方式切り替え部３１は、各マクロブロックの予測画像の生成方式として、画面内予測方式と画面間予測方式との切り替えを行なう。画面内予測部２６は、着目マクロブロックが属する画面と同一画面の画像データをフレームメモリ３０から読み出して、画面内予測画像を生成する。この画面内予測画像は、画面内予測方式が選択された場合に、予測方式切り替え部３１を介して誤差画像生成部２１に供給される。動き検出部２８は、入力動画像に基づいて最適な動きベクトルを検出する。前述のように、予測画像が着目マクロブロックと最も類似した画像となるように動きベクトルを選択すれば、誤差画像の情報量が最も小さくなり、最終的にエントロピー符号化後のビットストリームの情報量が最も小さくなる。動き検出部２８が検出した動きベクトルは、動き補償部２７とエントロピー符号化部２３とに供給される。エントロピー符号化部２３は、前述の量子化後変換係数とともに動きベクトルに関する情報をエントロピー符号化し、ビットストリーム中に動きベクトルに関する情報を含ませる。動き補償部２７は、フレームメモリ３０から読み出した参照画像から、動きベクトルに対応する座標の画像ブロックを抽出し、画面間予測画像を生成する。この画面間予測画像は、画面間予測方式が選択された場合に、予測方式切り替え部３１を介して誤差画像生成部２１に供給される。
【００４５】
図７は、図６の動き検出部２８の構成の一例を示す図である。図７において、原画像メモリ１００、Ｌ０参照画像メモリ１０１、及びＬ１参照画像メモリ１０２は、フレームメモリ３０の一部であってよい。原画像メモリ１００は、処理対象マクロブロックの画像データを保存する。Ｌ０参照画像メモリ１０１は、Ｌ０参照フレーム内の参照領域の画像データを保存する。Ｌ１参照画像メモリ１０２は、Ｌ１参照フレーム内の参照領域の画像データを保存する。
【００４６】
動き検出部２８は、探索制御部１０３、ノルム計算器１０４、ノルム保存メモリ１０５、ノルム判定回路１０６、小数精度予測画像生成器１０７、双予測画像生成器１０８、ベクトルコスト計算器１０９、ＳＡＤ演算器１１０、コスト計算器１１１、比較器１１２、ｔｍｐＣｏｓｔメモリ１１３、及びｔｍｐＶｅｃメモリ１１４を含む。探索制御部１０３は、動き検出部全体の動作を制御する。ノルム計算器１０４はノルムを計算する。ノルム保存メモリ１０５は、ノルム計算器１０４が計算したノルムを保存する。ノルム判定回路１０６は、ノルムに基づいて着目予測画像が最適である可能性の有無を判定する。小数精度予測画像生成器１０７は、入力画像データをそのまま出力或いはフィルタ処理後に出力する。双予測画像生成器１０８は、Ｌ０予測画像とＬ１予測画像とから双予測画像を生成する。ベクトルコスト計算器１０９は、動きベクトル（ｘ，ｙ）に対して前述のベクトルコストＶｅｃＣｏｓｔ（ｘ，ｙ）を計算する。ＳＡＤ演算器１１０は、符号化処理対象の原画像ブロックと予測画像の類似度を計算する演算器であり、具体的には、動きベクトル（ｘ，ｙ）に対して前述の差分絶対値和ＳＡＤ（ｘ，ｙ）を計算する。コスト計算器１１１は、ＳＡＤ演算器１１０が計算した差分絶対値和とベクトルコスト計算器１０９が計算したベクトルコストとに基づいて全体のコストを計算する。比較器１１２は、コスト計算器１１１が計算したコストとｔｍｐＣｏｓｔメモリ１１３に格納されているコストとを比較する。ｔｍｐＣｏｓｔメモリ１１３は、現時点までに検出された最小のコストを格納する。ｔｍｐＶｅｃメモリ１１４は、現時点までに検出された最小のコストに対応する動きベクトルを格納する。
【００４７】
動き検出部２８では、ノルム計算器１０４が、整数精度の動きベクトルに対応する予測画像のノルムを複数個計算する。更に動き検出部２８では、これら複数個のノルムを用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、推定したノルムを用いて評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定する。動き検出部２８の例えば探索制御部１０３は、可能性の有無の判定結果に応じて、評価対象の動きベクトルに対応する予測画像について類似度を計算するか否かを制御する。即ち、ＳＡＤ演算器１１０による計算を実行するか否かを制御する。このように、１つ又は複数の評価対象の動きベクトルに対応する予測画像を計算してから当該予測画像に基づいてノルムを計算するのではなく、複数個のノルムを用いて１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定する。この処理により、類似度計算の計算コストを削減するだけでなく、予測画像の計算コストも削減することが可能となる。
【００４８】
小数精度の動きベクトル探索の場合には、小数精度予測画像生成器１０７が、ノルム保存メモリ１０５に格納された整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つの小数精度の動きベクトルに対応する予測画像のノルムを推定する。また更に、ノルム判定回路１０６が、小数精度予測画像生成器１０７の推定した小数精度の動きベクトルに対応する予測画像のノルムを用いて、小数精度の動きベクトルに対応する予測画像が最適である可能性の有無を判定する。この判定結果に基づいて、ＳＡＤ演算器１１０による計算を実行するか否かを制御する。
【００４９】
双予測のための動きベクトル探索の場合には、ノルム計算器１０４が、第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを複数個のノルムとして計算する。ノルム判定回路１０６は、第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを用いて双予測画像のノルムを計算する。ノルム判定回路１０６は更に、計算した双予測画像のノルムを用いて、双予測画像が予測モードとして最適である可能性の有無を判定する。この判定結果に基づいて、ＳＡＤ演算器１１０による計算を実行するか否かを制御する。
【００５０】
図８は、１つの着目マクロブロックに対して動きベクトルを検出する際の動き検出部の動作を示すフローチャートである。まず準備として、原画像メモリ１００に処理対象マクロブロック（着目マクロブロック）の画像データを格納し、Ｌ０参照画像メモリ１０１にＬ０参照領域の画像データを格納し、Ｌ１参照画像メモリ１０２にＬ１参照領域の画像データを格納する。これらの画像データの格納が終了した後、動きベクトルの検出処理を開始する。
【００５１】
ステップＳ１で、原画像メモリ１００から処理対象マクロブロックの画像データ２０１が読み出され、ノルム計算器１０４に入力される。ノルム計算器１０４は、式（４）を用いて、処理対象マクロブロックのノルムＮを計算する。計算されたノルムＮは、ノルム信号２０５を介して、ノルム保存メモリ１０５に保存される。
【００５２】
ステップＳ２で、ｔｍｐＣｏｓｔに十分大きな値ＭＡＸを代入する。ステップＳ３で、後述するＬ０整数精度動き検出を行う。ステップＳ４で、後述するＬ０整数精度動き検出と同様にしてＬ１整数精度動き検出を行う。ステップＳ５で、後述するＬ０小数精度動き検出を行う。ステップＳ６で、後述するＬ０小数精度動き検出と同様にしてＬ１小数精度動き検出を行う。ステップＳ７で、後述する双予測動き検出を行う。ステップＳ８で、ｔｍｐＶｅｃメモリに格納されているベクトルを動きベクトルとして出力する。
【００５３】
図９は、図３のステップＳ３のＬ０整数精度動き検出の処理を示すフローチャートである。ステップＳ３１で、探索制御部１０３が評価対象のＬ０整数精度ベクトル（ｘ，ｙ）を選択する。選択したベクトルは評価対象動きベクトル信号２１１を介して、ベクトルコスト計算器１０９とｔｍｐＶｅｃメモリ１１４に通知される。
【００５４】
ステップＳ３２で、Ｌ０参照画像メモリ１０１は、動きベクトル（ｘ，ｙ）に対応するＬ０予測画像のデータをノルム計算器１０４に供給する。ノルム計算器１０４は、受け取った予測画像のデータから、式（５）を用いてノルムＭ０（ｘ，ｙ）を計算する。計算されたノルムＭ０（ｘ，ｙ）は、ノルム信号２０５を介して、ノルム保存メモリ１０５に格納される。
【００５５】
ステップＳ３３で、Ｌ０参照画像メモリ１０１は、動きベクトル（ｘ，ｙ）に対応するＬ０参照画像データ２０２を小数精度予測画像生成器１０７に供給する。小数精度予測画像生成器１０７は、受け取ったＬ０参照画像データ２０２の値を変化させることなくそのまま出力し、予測画像データ２０４としてＳＡＤ演算器１１０に供給する。また更に、原画像メモリ１００が、処理対象マクロブロックの原画像データ２０１をＳＡＤ演算器１１０に供給する。ＳＡＤ演算器１１０は、受け取ったＬ０参照画像データ２０２と原画像データ２０１とから、式（２）を用いて差分絶対値和２１４を計算する。計算した差分絶対値和２１４は、コスト比較器１１２へ供給される。
【００５６】
ステップＳ３４で、ベクトルコスト計算器１０９が、探索制御部１０３から供給される評価対象動きベクトル２１１に基づいて、評価対象動きベクトルのベクトルコスト２０８を計算する。ステップＳ３５で、比較器１１２は、差分絶対値和２１４をＳＡＤ０（ｘ，ｙ）、ベクトルコスト２０８をＶｅｃＣｏｓｔ０（ｘ，ｙ）、テンポラリコスト２１２をｔｍｐＣｏｓｔとして、以下の式（１６）が成立するか否かを判定する。この判定結果を示す情報であるコスト判定結果２１０は、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とに通知される。
【００５７】
SAD0(x,y)+VecCost0(x,y)＜tmpCost      ・・・・式（１６）
このコスト判定結果２１０に応じて、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とが、それぞれの格納値を更新又は維持する。式（１６）の条件が満たされる場合には、ステップＳ３６の更新処理が実行され、式（１６）の条件が満たされない場合には、ステップＳ３６の更新処理は実行されない。
【００５８】
ステップＳ３６で、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をＳＡＤ０（ｘ，ｙ）＋ＶｅｃＣｏｓｔ０（ｘ，ｙ）で上書きし、ｔｍｐＶｅｃメモリ１１４はｔｍｐＶｅｃの値を評価対象動きベクトル２１１で上書きする。コスト判定結果２１０が式（１６）が成立していないという通知であるとき、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をそのまま保持し、ｔｍｐＶｅｃメモリ１１４はｔｍｐＶｅｃのベクトルをそのまま保持する。
【００５９】
ステップＳ３７で、評価対象のすべてのＬ０整数精度ベクトルについて評価が完了しているときは処理を完了する。評価対象のＬ０整数精度ベクトルで評価が完了していないベクトルが存在するとき、ステップ３１に戻り、探索制御部１０３は、次の未評価のＬ０整数精度ベクトルを選択する。以上の処理により、Ｌ０整数精度ベクトルについて最適な動きベクトルが検出される。
【００６０】
図８に示すステップＳ４のＬ１整数精度動き検出は、ステップＳ３のＬ０整数精度動き検出と同様の処理を実行することで、Ｌ１参照フレームに対して動きベクトルの評価を行う。これにより、Ｌ１整数精度ベクトルについて最適な動きベクトルが検出される。
【００６１】
図１０は、図８のステップＳ５のＬ０小数精度動き検出の処理を示すフローチャートである。ステップＳ５１で、探索制御部１０３は、評価対象のＬ０小数精度ベクトル（ｘ，ｙ）を選択する。選択したベクトルは、評価対象動きベクトル信号２１１を介して、ベクトルコスト計算器１０９とｔｍｐＶｅｃメモリ１１４とに通知される。ステップＳ５２で、ベクトルコスト計算器１０９は、評価対象動きベクトル信号２１１から、評価対象ベクトルのベクトルコスト２０８を計算する。
【００６２】
ステップＳ５３で、小数精度予測画像生成器１０７は、ノルム保存メモリ１０５に保存されている整数精度の動きベクトルに対応するノルムを、ノルム信号２０６を介して読み出し、評価対象の小数精度ベクトル（ｘ，ｙ）のノルムを計算する。計算されたノルムは、ノルム信号２１６を介してノルム判定回路１０６に通知される。この際、ノルム計算器１０４が算出した整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、小数精度の動きベクトルに対応する予測画像のノルムを算出する。即ち、ノルム保存メモリ１０５に格納されている複数の整数精度の動きベクトルに対応するノルムに基づいて、小数精度の動きベクトルに対応する予測画像のノルムを算出する。具体的には、ノルムの計算は、図３及び図４に示す計算式を流用して行なわれる。例えば、小数精度ベクトル（ｘ，ｙ）が図３のｂ点を指す場合、小数精度ベクトル（ｘ，ｙ）のノルムは、Ｅ点，Ｆ点，Ｇ点，Ｈ点，Ｉ点，Ｊ点の各点を指す６個の整数精度ベクトルに対応する６個のノルムから計算される。即ち、これら６個のノルムをＥ，Ｆ，Ｇ，Ｈ，Ｉ，Ｊと表わしたときに、ノルム保存メモリ１０５からこれら６個のノルムを読み出し、図４に示す式〈イ〉及び式（ハ〉を用いて、上記小数精度ベクトルに対応する予測画像のノルムを計算する。このようにして図３及び図４に示す計算式から小数精度ベクトルに対応する予測画像のノルムを計算する方式の妥当性については、後程詳細に説明する。
【００６３】
更にステップＳ５３で、ノルム判定回路１０６は、以下の式（１７）が成立するか否かを示す情報であるノルム判定結果２０７を生成し、探索制御部１０３に通知する。ここで、ノルム信号２１６を介して通知されるノルムをＭ（ｘ，ｙ）、ノルム信号２０６を介して読み出す処理対象マクロブロックのノルムをＮ、ベクトルコスト２０８を介して通知されるベクトルコストをＶｅｃＣｏｓｔ（ｘ，ｙ）とする。またｔｍｐＣｏｓｔメモリ１１３に格納されているテンポラリコスト２１２をｔｍｐＣｏｓｔとする。
【００６４】
N-tmpCost+VecCost(x,y)≦M(x,y)≦N+tmpCost-VecCost(x,y)  ・・・式（１７）
探索制御部１０３は、式（１７）が成立している（式（１７）の条件が満たされている）ことをノルム判定結果２０７が示す場合、ステップＳ５４からステップＳ５６を実行する。
【００６５】
ステップＳ５４で、小数精度予測画像生成器１０７は、Ｌ０参照画像メモリ１０１からＬ０参照画像データ２０２を読み出し、図４の式を用いて評価対象動きベクトル２１１に対応するＬ０予測画像を生成し、ＳＡＤ演算器１１０へ予測画像２０４を出力する。ＳＡＤ演算器１１０は、予測画像２０４と原画像メモリ１００から読み出した原画像データ２０１とから、式（２）を用いて差分絶対値和を計算し、計算した差分絶対値和２１４をコスト計算器１１１へ通知する。
【００６６】
ステップＳ５５で、コスト計算器１１１は、差分絶対値和計算２１４とベクトルコスト２０８とを加算し、コスト２０９を出力する。比較器１１２は、差分絶対値和２１４をＳＡＤ（ｘ，ｙ）、ベクトルコスト２０８をＶｅｃＣｏｓｔ（ｘ，ｙ）、ｔｍｐＣｏｓｔメモリ１１３からのテンポラリコスト２１２をｔｍｐＣｏｓｔとし、式（１８）が成立するか否かを示すコスト判定結果２１０を生成する。コスト判定結果２１０は、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とに通知される。
【００６７】
SAD(x,y)+VecCost(x,y)＜tmpCost  ・・・式（１８）
このコスト判定結果２１０に応じて、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とが、それぞれの格納値を更新又は維持する。式（１８）の条件が満たされる場合には、ステップＳ５６の更新処理が実行され、式（１８）の条件が満たされない場合には、ステップＳ５６の更新処理は実行されない。
【００６８】
ステップＳ５６で、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をＳＡＤ（ｘ，ｙ）＋ＶｅｃＣｏｓｔ（ｘ，ｙ）で上書きし、ｔｍｐＶｅｃメモリ１１４はｔｍｐＶｅｃの値を評価対象動きベクトル２１１で上書きする。コスト判定結果２１０が式（１８）が成立していないという通知であるとき、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をそのまま保持し、ｔｍｐＶｅｃメモリ１１４はｔｍｐＶｅｃのベクトルをそのまま保持する。
【００６９】
ステップＳ５７で、評価対象のすべてのＬ０小数精度ベクトルについて評価が完了しているときは処理を完了する。評価対象のＬ０小数精度ベクトルで評価が完了していないベクトルが存在するとき、ステップ５１に戻り、探索制御部１０３は、次の未評価のＬ０小数精度ベクトルを選択する。
【００７０】
図８に示すステップＳ６のＬ１小数精度動き検出は、ステップＳ５のＬ０小数精度動き検出と同様の処理を実行することで、Ｌ１参照フレームに対して動きベクトルの評価を行う。これにより、Ｌ１小数精度ベクトルについて最適な動きベクトルが検出される。
【００７１】
図１１は、図８のステップＳ７の双予測動き検出の処理を示すフローチャートである。ステップＳ７１で、探索制御部１０３が評価対象のＬ０ベクトルＶ０（ｘ０，ｙ０）とＬ１ベクトルＶ１（ｘ１，ｙ１）の組み合わせを選択する。選択したＬ０ベクトルとＬ１ベクトルは、評価対象動きベクトル信号２１１を介して、ベクトルコスト計算器１０９とｔｍｐＶｅｃメモリ１１４に通知される。なお例えば図８のステップＳ５で求めたＬ０ベクトルとステップＳ６で求めたＬ１ベクトルとの組み合わせを最初に選択してよい。その後、このＬ０ベクトルの終点位置から始めて、この終点位置に近いものから所定の順序で複数の終点位置を順次選択し、選択した終点位置を有するベクトルを順次評価対象のＬ０ベクトルとしてよい。同様に、上記のＬ１ベクトルの終点位置から始めて、この終点位置に近いものから所定の順序で複数の終点位置を順次選択し、選択した終点位置を有するベクトルを順次評価対象のＬ１ベクトルとしてよい。このようにして順次選択されたＬ０ベクトルとＬ１ベクトルとの組み合わせに対する図１１の処理は、所定個数に対して実行されてよいし、或いは所定の時間を定めておき、その時間が経過するまでは図１１の処理を実行するようにしてもよい。
【００７２】
ステップＳ７２で、ベクトルコスト計算器１０９は、評価対象動きベクトル信号２１１から、評価対象Ｌ０ベクトルのベクトルコストＶｅｃＣｏｓｔ０（ｘ０，ｙ０）と評価対象Ｌ１ベクトルのベクトルコストＶｅｃＣｏｓｔ１（ｘ１，ｙ１）とを計算する。計算結果は、ベクトルコスト２０８として出力される。
【００７３】
ステップＳ７３で、小数精度予測画像生成器１０７は、評価対象Ｌ０ベクトルが小数精度の場合、ノルム保存メモリ１０５に保存されているノルムをノルム信号２０６として読み出し、評価対象のＬ０小数ベクトルのノルムを図４に示す式を用いて計算する。計算したノルムは、ノルム信号２１６を介して、ノルム判定回路１０６に通知する。小数精度予測画像生成器１０７は、評価対象Ｌ１ベクトルが小数精度の場合も、同様に評価対象のＬ１小数ベクトルのノルムを計算し、ノルム判定回路１０６に通知する。ノルム判定回路１０６は、評価対象Ｌ０ベクトルと評価対象Ｌ１ベクトルとが整数精度の場合、ノルム保存メモリ１０５に保存されているノルムを、ノルム信号２０６を介して読み出す。
【００７４】
更にステップＳ７３で、ノルム判定回路１０６は、以下の式（１９）が成立するか否かを示す情報であるノルム判定結果２０７を生成し、探索制御部１０３に通知する。ここで、ノルム２０６を介して読み出す処理対象マクロブロックのノルムをＮとする。またノルム信号２１６又はノルム信号２０６を介して通知されるＬ０参照画像のノルムをＭ０（ｘ０，ｙ０）とし、Ｌ１参照画像のノルムをＭ１（ｘ１，ｙ１）とする。また更に、ベクトルコスト２０８を介して通知されるＬ０ベクトルのベクトルコストをＶｅｃＣｏｓｔ０（ｘ０，ｙ０）、Ｌ１ベクトルのベクトルコストをＶｅｃＣｏｓｔ１（ｘ１，ｙ１）とする。
【００７５】
N-tmpCost+VecCost0(x0,y0)+VecCost1(x1,y1)
≦W0×M0(x0,y0)+W1×M1(x1,y1)+D×256
≦N+tmpCost+VecCost0(x0,y0)+VecCost1(x1,y1)  ・・・・式（１９）
ただし、Ｗ０及びＷ１は重み係数、Ｄはオフセット値を表す。評価対象の双予測画像のノルムをＷ０×Ｍ０（ｘ０，ｙ０）＋Ｗ１×Ｍ１（ｘ１，ｙ１）＋Ｄ×２５６で代用することの妥当性については、後述する。探索制御部１０３は、式（１９）が成立している（式（１９）の条件が満たされている）ことをノルム判定結果２０７が示す場合、ステップＳ７４からステップＳ７６の処理を実行する。
【００７６】
ステップＳ７４で、小数精度予測画像生成器１０７は、Ｌ０参照画像メモリ１０１からＬ０参照画像データ２０２を読み出し、双予測画像生成器１０８に出力する。評価対象Ｌ０ベクトルＶ０（ｘ０，ｙ０）が小数精度の場合、図４の式を用いてＬ生成した０予測画像を出力する。同様に、小数精度予測画像生成器１０７は、Ｌ１参照画像メモリ１０２からＬ１参照画像データ２０３を読み出し、双予測画像生成器１０８に出力する。評価対象Ｌ１ベクトルＶ１（ｘ１，ｙ１）が小数精度の場合、図４の式を用いて生成したＬ１予測画像を出力する。
【００７７】
双予測画像生成器１０８は、以下の式（２０）を用いて生成した双予測画像２１３をＳＡＤ演算器１１０へ出力する。
【００７８】
B(i,j)=W0×Y0(i,j)+W1×Y1(i,j)+D  ・・・式（２０）
ただし、Ｗ０及びＷ１は重み係数を、Ｄはオフセット値を、Ｂ（ｉ，ｊ）は双予測画像のｊ行ｉ列の位置の画素値を、Ｙ０（ｉ，ｊ）はＬ０予測画像のｊ行ｉ列の位置の画素値を、Ｙ１（ｉ，ｊ）はＬ１予測画像のｊ行ｉ列の位置の画素値を表す。
【００７９】
ＳＡＤ演算器１１０は、双予測画像２１３と原画像メモリ１００から読み出した原画像データ２０１とから、以下の式（２１）を用いて差分絶対値和を計算し、計算した差分絶対値和２１４をコスト計算器１１１へ通知する。
【００８０】
SAD(x0,y0,x1,y1)=Σ|C(i,j)-B(i,j)|  ・・・式（２１）
但しΣはｉ＝０，１，２，・・・，１５及びｊ＝０，１，２，・・・，１５について和を取ることを表す。
【００８１】
ステップＳ７５で、コスト計算器１１１は差分絶対値和２１４とベクトルコスト２０８とを加算し、コスト２０９を出力する。比較器１１２は、以下の式（２２）が成立するか否かを示す情報であるコスト判定結果２１０を生成し、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とに通知する。ここで、差分絶対値和２１４をＳＡＤ（ｘ０，ｙ０，ｘ１，ｙ１）とする。またＬ０ベクトルのベクトルコスト２０８をＶｅｃＣｏｓｔ０（ｘ０，ｙ０）とし、Ｌ１ベクトルのベクトルコスト２０８をＶｅｃＣｏｓｔ１（ｘ１，ｙ１）とし、ｔｍｐＣｏｓｔメモリ１１３から通知されるテンポラリコスト２１２をｔｍｐＣｏｓｔとする。
【００８２】
SAD(x0,y0,x1,y1)+VecCost0(x0,y0)+VecCost1(x1,y1)＜tmpCost  ・・・・式（２２）
このコスト判定結果２１０に応じて、ｔｍｐＣｏｓｔメモリ１１３とｔｍｐＶｅｃメモリ１１４とが、それぞれの格納値を更新又は維持する。式（２２）の条件が満たされる場合には、ステップＳ７６の更新処理が実行され、式（２２）の条件が満たされない場合には、ステップＳ７６の更新処理は実行されない。
【００８３】
ステップＳ７６で、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をＳＡＤ（ｘ０，ｙ０，ｘ１，ｙ１）＋ＶｅｃＣｏｓｔ０（ｘ０，ｙ０）＋ＶｅｃＣｏｓｔ１（ｘ１，ｙ１）で上書きする。更にｔｍｐＶｅｃメモリ１１４は、ｔｍｐＶｅｃの値を評価対象動きベクトル２１１で上書きする。コスト判定結果２１０が式（２２）が成立していないという通知であるとき、ｔｍｐＣｏｓｔメモリ１１３はｔｍｐＣｏｓｔの値をそのまま保持し、ｔｍｐＶｅｃメモリ１１４はｔｍｐＶｅｃのベクトルをそのまま保持する。
【００８４】
ステップＳ７７で、評価対象のすべてのＬ０ベクトルとＬ１ベクトルの組み合わせについて評価が完了しているときは処理を完了する。評価対象のＬ０ベクトルとＬ１ベクトルの組み合わせについて評価が完了していない組み合わせが存在するときは、ステップＳ７１に戻り、探索制御部１０３は、次の未評価のＬ０ベクトルとＬ１ベクトルの組み合わせを選択する。
【００８５】
以下に、小数精度ベクトルに対応する予測画像のノルムを整数精度ベクトルに対応する予測画像のノルムから計算する方式の妥当性について説明する。図１２は、評価対象のベクトルの水平成分が０．５精度であり且つ垂直成分が整数精度である場合について、各画素の配置を模式的に示す図である。図１２において、グレーの四角は参照フレームの画素を表わし、白抜きの四角は水平成分が０．５精度であり且つ垂直成分が整数精度である画素を表す。Ｒ（ｉ，ｊ）は参照フレームのｊ行ｉ列の画素値を、ｂ（ｉ，ｊ）はｊ行（ｉ＋０．５）列の画素値を表す。評価対象のベクトルが（２．５，０）であるとき、対応する予測画像はｂ（２＋ｉ，ｊ）（ｉ＝０，１，２，・・・，１５，ｊ＝０，１，２，・・・，１５）の縦１６画素×横１６画素で構成されるブロックとなる。
【００８６】
図１０のステップＳ５３において計算されるノルムＰは、
【００８７】
【数１】
2011035569.tif 000003
となる。ただし、Ｍ（ｘ，ｙ）＝ΣＲ（ｘ＋ｉ，ｙ＋ｊ）であり、Σはｉ＝０，１，２，・・・，１５及びｊ＝０，１，２，・・・，１５について和を取ることを表す。またＲ（ｘ，ｙ）は参照フレームｙ行ｘ列の画素値を表し、ｂ１（ｘ，ｙ）＝Ｒ（ｘ−２，ｙ）−５×Ｒ（ｘ−１，ｙ）＋２０×Ｒ（ｘ，ｙ）＋２０×Ｒ（ｘ＋１，ｙ）−５×Ｒ（ｘ＋２，ｙ）＋Ｒ（ｘ＋３，ｙ）である。また数１のＣｌｉｐ１ｙは下限値０、上限値６５５３５で飽和処理を行うものとする。
【００８８】
一方、評価対象のベクトルに対応する予測画像ｂ（ｉ，ｊ）は図４の式（イ）および式（ハ）によって計算されるため、そのノルムＰ’は、
【００８９】
【数２】
2011035569.tif 000004
となる。ここで、Ｐでは５ビットシフトの操作を２５５画素分の加算が終わった後に行っているのに対し、Ｐ’では各ｂ１（ｉ，ｊ）について５ビットシフトの操作をした後で２５５画素分の加算を行っている点が異なる。またＰ’ではＣｌｉｐ１ｙの操作によって（ｂ１（ｉ，ｊ）＋１６）＞＞５の値が０以上２５５以下の値になるように飽和処理を行ったあとに２５５画素分の値の和をとっているが、Ｐでは２５５画素分の和をとった後に飽和処理を行っている点が異なる。これらの理由により、ＰとＰ’とは完全には一致しない場合があるが、ビットシフトと飽和処理とを無視すれば式＜イ＞は線形演算であり、同じく線形演算であるノルムの演算と実行順序が入れ替わっても同一の結果となる。従って、ＰとＰ’とは、図１０のステップ５３のノルムの判定に用いる上では実用上問題のない精度で一致する。
【００９０】
同様に、評価対象の小数ベクトルが図３のｈ点、ｓ点、ｍ点を指す場合、それぞれ６個の整数精度ベクトルに対応する６個のノルムと図４に示す式＜イ＞と＜ハ＞、または式＜ロ＞と＜ニ＞を用いてノルムを計算することができる。
【００９１】
さらに、評価対象の小数ベクトルが図３のｊ点を指す場合、図４に示す式＜ロ＞、＜ホ＞、＜ト＞を用いてノルムを計算することができる。具体的には、整数精度のベクトルに対応する６個のノルムと式＜ロ＞を用いて、ｃｃ点に対応するノルムを計算する。ただし、式＜ニ＞で示される１６の加算、５ビット右シフト、飽和処理は行わない。同様にｄｄ点、ｈ点、ｍ点、ｅｅ点、ｆｆ点に対応するノルムを計算する。得られた６個のノルムをそれぞれｃｃ、ｄｄ、ｈ１、ｍ１、ｅｅ、ｆｆとして式＜ホ＞を用い、ｊ１を得る。得られたｊ１を式＜ト＞に代入して得られるｊをｊ点を指す小数ベクトルに対応するノルムとする。ただし式＜ト＞のＣｌｉｐ１ｙは下限値０、上限値６５５３５で飽和処理を行うものとする。
【００９２】
さらに、評価対象の小数ベクトルが図３のａ点、ｃ点、ｄ点、ｎ点、ｆ点、ｉ点、ｋ点、ｑ点、ｅ点、ｇ点、ｐ点、ｒ点を指す場合、上記手順で生成したＧ点、Ｈ点、Ｍ点、ｂ点、ｈ点、ｊ点、ｍ点、ｓ点に対応するノルムを用いて、式＜ヌ＞、＜ル＞、＜ヲ＞、＜ワ＞、＜カ＞、＜ヨ＞、＜タ＞、＜レ＞、＜ソ＞、＜ツ＞、＜ネ＞、＜ナ＞を用いて計算することができる。
【００９３】
以下に、評価対象の双予測画像のノルムをＷ０×Ｍ０（ｘ０，ｙ０）＋Ｗ１×Ｍ１（ｘ０，ｙ０）＋Ｄ×２５６で代用することの妥当性について説明する。
【００９４】
図１１のステップＳ７３で用いているＷ０×Ｍ０（ｘ０，ｙ０）＋Ｗ１×Ｍ１（ｘ０，ｙ０）＋Ｄ×２５６は、以下のように変形できる。
【００９５】
【数３】
2011035569.tif 000005
一方、評価対象の双予測画像の画素値Ｂ（ｉ，ｊ）（ただしｉ＝０，１，２，・・・，１５，ｊ＝０，１，２，・・・，１５）は以下の式（２５）で表される。
【００９６】
B(i,j)=W0×R0(x0+i,y0+j)+W1×R1(x1+i,y1+j)+D    ・・・・式（２５）
ため、評価対象の双予測画像のノルムＰ’は
【００９７】
【数４】
2011035569.tif 000006
となる。ただし、Ｒ０（ｘ，ｙ）とＲ１（ｘ，ｙ）はそれぞれＬ０参照フレーム、Ｌ１参照フレームのｙ行ｘ列の画素値を表す。数３と数４とから分かるように、Ｗ０×Ｍ０（ｘ０，ｙ０）＋Ｗ１×Ｍ１（ｘ０，ｙ０）＋Ｄ×２５６とＰ’とは一致する。即ち、線形演算である双予測画像の画素値計算と同じく線形演算であるノルムの演算とは、実行順序が入れ替わっても同一の結果となる。
【００９８】
図１３は、図６の動画像符号化装置を適用したシステムの構成の一例を示す図である。図１３に示すシステムは、カメラ４１、動画像符号化装置４２、及び画像蓄積装置４３を含む。カメラ４１は、撮像対象の動画像を撮像し、動画像データをデジタルデータとして動画像符号化装置４２に供給する。動画像符号化装置４２は、図６に示される構成を有し図７に示される動き検出部を含むものであり、カメラ４１から供給された動画像データをビットストリームに変換する。動画像符号化装置４２が生成したビットストリームは、ハ―ドディスクやＤＶＤ（Digital Versatile Disk）等の画像蓄積装置４３に格納される。
【００９９】
図１４は、図６の動画像符号化装置を適用したシステムの構成の別の一例を示す図である。図１４に示すシステムは、カメラ５１、動画像符号化装置５２、伝送路５３、動画像復号装置５４、及び表示装置５５を含む。カメラ５１は、撮像対象の動画像を撮像し、動画像データをデジタルデータとして動画像符号化装置５２に供給する。動画像符号化装置５２は、図６に示される構成を有し図７に示される動き検出部を含むものであり、カメラ５１から供給された動画像データをビットストリームに変換する。動画像符号化装置５２が生成したビットストリームは、伝送路５３を介して動画像復号装置５４に供給される。動画像復号装置５４は、受け取ったビットストリームを復号化処理して動画像データを復号する。復号された動画像データは、液晶表示装置等の表示装置５５に供給され画面表示される。
【０１００】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【０１０１】
なお本願発明は、以下の内容を含むものである。
（付記１）
動画像符号化処理における動き補償フレーム間予測に必要な動きベクトルを検出する動きベクトル検出装置であって、
符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、
整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器と
を含み、前記ノルム推定・判定器の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする動きベクトル検出装置。
（付記２）
前記ノルム推定・判定器は、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つの小数精度の動きベクトルに対応する予測画像のノルムを推定する小数精度ノルム計算器と、
前記小数精度ノルム計算器が推定する小数精度の動きベクトルに対応する予測画像のノルムを用いて前記小数精度の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム判定器と
を含み、
前記ノルム判定器の判定結果に応じて前記小数精度の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする付記１記載の動きベクトル検出装置。
（付記３）
前記ノルム計算器は、第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを前記複数個のノルムとして計算し、
前記ノルム推定・判定器は、前記ノルム計算器が算出する第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを用いて双予測画像のノルムを計算し、該双予測画像のノルムを用いて前記双予測画像が予測モードとして最適である可能性の有無を判定し、
前記ノルム推定・判定器の判定結果に応じて前記双予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする付記１記載の動きベクトル検出装置。
（付記４）
整数精度の動きベクトルに対応する予測画像のノルムを複数個計算し、
前記複数個のノルムを用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、
前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定し、
前記可能性の有無の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について類似度を計算するか否かを制御する
各段階を含むことを特徴とする動きベクトル検出方法。
（付記５）
前記１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムは、１つの小数精度の動きベクトルに対応する予測画像のノルム、又は、複数の参照画像に対する複数の動きベクトルに対応する双予測画像のノルムであることを特徴とする付記４記載の動きベクトル検出方法。
（付記６）
動画像データを生成するカメラと、
前記動画像データから動きベクトルを検出し、該動きベクトルに基づくフレーム間予測を用いて前記動画像データを符号化する動画像符号化装置と
を含み、前記動画像符号化装置は、
前記動画像データ中の符号化処理対象の原画像ブロックと予測画像の類似度を計算する類似度計算回路と、
整数精度の動きベクトルに対応する予測画像のノルムを計算するノルム計算器と、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つ又は複数の評価対象の動きベクトルに対応する予測画像のノルムを推定し、前記推定したノルムを用いて前記評価対象の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム推定・判定器と
を含み、前記ノルム推定・判定器の判定結果に応じて前記評価対象の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする動画像処理システム。
（付記７）
前記ノルム推定・判定器は、
前記ノルム計算器が算出する整数精度の動きベクトルに対応する予測画像のノルムを複数個用いて、１つの小数精度の動きベクトルに対応する予測画像のノルムを推定する小数精度ノルム計算器と、
前記小数精度ノルム計算器が推定する小数精度の動きベクトルに対応する予測画像のノルムを用いて前記小数精度の動きベクトルに対応する予測画像が最適である可能性の有無を判定するノルム判定器と
を含み、
前記ノルム判定器の判定結果に応じて前記小数精度の動きベクトルに対応する予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする付記６記載の動画像処理システム。
（付記８）
前記ノルム計算器は、第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを前記複数個のノルムとして計算し、
前記ノルム推定・判定器は、前記ノルム計算器が算出する第１の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムと第２の参照画像に対する整数精度の動きベクトルに対応する予測画像のノルムとを用いて双予測画像のノルムを計算し、該双予測画像のノルムを用いて前記双予測画像が予測モードとして最適である可能性の有無を判定し、
前記ノルム推定・判定器の判定結果に応じて前記双予測画像について前記類似度計算回路により類似度を計算するか否かを制御することを特徴とする付記６記載の動画像処理システム。
【符号の説明】
【０１０２】
２１  誤差画像生成部
２２  直交変換・量子化部
２３  エントロピー符号化部
２４  逆量子化・逆直交変換部
２５  再構成画像生成部
２６  画面内予測部
２７  動き補償部
２８  動き検出部
２９  デブロッキングフィルタ部
３０  フレームメモリ
【図１】
2011035569.tif 000007
【図２】
2011035569.tif 000008
【図３】
2011035569.tif 000009
【図４】
2011035569.tif 000010
【図５Ａ】
2011035569.tif 000011
【図５Ｂ】
2011035569.tif 000012
【図５Ｃ】
2011035569.tif 000013
【図６】
2011035569.tif 000014
【図７】
2011035569.tif 000015
【図８】
2011035569.tif 000016
【図９】
2011035569.tif 000017
【図１０】
2011035569.tif 000018
【図１１】
2011035569.tif 000019
【図１２】
2011035569.tif 000020
【図１３】
2011035569.tif 000021
【図１４】
2011035569.tif 000022