(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムにより動作する装置が実行する動きベクトル検出方法であって、
連続する第１画像フレームと第２画像フレームとの間の対応画素を指し示す動きベクトルを検出する際に、前記第２画像フレームを、複数のブロックに分割するとともに各ブロックを互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する工程と、
第１グループに属するすべてのブロックについて動きベクトル候補を画像フレーム間の平均誤差評価関数値に基づいて特定する工程と、
第２グループに属するすべてのブロックについて個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する工程と、
第１グループに属するすべてのブロックについて個々のブロックに隣接する他ブロックの動きベクトルの平均ベクトル成分を導出し、この平均ベクトル成分を当該ブロックにおける新たな動きベクトル候補として保持する工程とを含み、
保持されている各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする動きベクトル検出方法。
【請求項２】
コンピュータプログラムにより動作する装置が実行する動きベクトル検出方法であって、
連続する第１画像フレームと第２画像フレームとを取得し、前記第１画像フレームを保持するとともに、前記第２画像フレームを複数のブロックに分割し、これにより得られた各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する前処理工程と、
前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持するとともに、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する初期探索工程と、
前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件を満たす場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第１詳細探索工程と、
この第１詳細探索工程後、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件を満たす場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第２詳細探索工程とを含み、
更新された各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする動きベクトル検出方法。
【請求項３】
前記初期探索工程は、前記第１グループの個々のブロックと前記第１画像フレームとの間で動きの無い位置を起点として段階的に探索位置を拡げて前記平均誤差評価関数値を演算し、当該平均誤差評価関数値が収束した位置を指し示すベクトル成分を当該ブロックの動きベクトル候補として保持することを特徴とする、
請求項２記載の動きベクトル検出方法。
【請求項４】
前記第１詳細探索工程は、前記初期探索工程により保持されている前記平均ベクトル成分が指し示す第１画像フレーム上の探索位置を所定方向に変えながら画像フレーム間の画素の平均誤差評価関数値を演算し、この平均誤差評価関数値が相対的に小さくなる位置を指し示すベクトル成分を当該ブロックの新たな動きベクトル候補として更新する、
請求項３記載の動きベクトル検出方法。
【請求項５】
前記第１詳細探索工程は、前記探索位置を変える過程で、前記平均ベクトル成分が、同一ブロックについて保持されている動きベクトル候補と近似しているかどうかを所定の閾値との比較により判定し、近似している場合は、さらに、その探索位置での平均誤差評価関数値を求めて、その値が当該時点で正常な動きベクトル候補となり得るものが見つかったかどうかを判定するための収束基準値を越えているかどうかを判定し、越えない場合に、当該探索位置を指し示すベクトル成分を前記新たな動きベクトル候補とすることを特徴とする、
請求項４記載の動きベクトル検出方法。
【請求項６】
前記第１詳細探索工程は、前記平均ベクトル成分が同一ブロックについて保持されている動きベクトル候補と近似していない場合は、当該平均ベクトル成分が指し示す位置を、前記探索位置の新たな起点とすることを特徴とする、
請求項５記載の動きベクトル検出方法。
【請求項７】
連続する第１画像フレームおよび第２画像フレームを取得する画像フレーム取得手段と、
前記第２画像フレームを複数のブロックに分割するとともに、分割された各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する前処理手段と、
前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持するとともに、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する初期探索手段と、
前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第１詳細探索手段と、
前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第２詳細探索手段とを有し、
前記第１詳細探索手段および前記第２詳細探索手段で更新された各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする、
動きベクトル検出装置。
【請求項８】
前記第１詳細探索手段および前記第２詳細探索手段の動作タイミング並びに前記所定の条件を変更可能に設定する制御手段をさらに有することを特徴とする、
請求項７記載の動きベクトル検出装置。
【請求項９】
動画像データを画像フレーム単位に分解する画像データ処理装置と、この画像データ処理装置から時系列に出力される第１画像フレームと第２画像フレームとから動きベクトルを検出する動きベクトル検出装置とを有し、この動きベクトル検出装置で検出された動きベクトルに基づいて前記第１画像フレームの動き検出を行って予測符号化を行う装置であって、
前記動きベクトル検出装置が請求項７又は８記載の動きベクトル検出装置であることを特徴とする予測符号化装置。
【請求項１０】
連続する第１画像フレームと第２画像フレームとを取得し、前記第１画像フレームを保持するとともに、前記第２画像フレームを複数のブロックに分割し、これにより得られた各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する処理、
前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持する処理、
前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する処理、
前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する処理、及び、
第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する処理、をコンピュータ装置に実行させ、更新された各ブロックの動きベクトル候補を前記動きベクトルとして扱うためのプログラムコードが記録されたコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動画像データの符号化技術に係り、特に、動画像データに含まれる動きベクトルを効率的に検出する方法およびその関連技術に関する。
【０００２】
【発明の背景】
例えばテレビ会議システムのように、動画像データを通信媒体を通じて相手側端末に伝送したり、動画像データをＤＶＤ（Digital Video Disk）等に記録する際に、符号化を施し、原データサイズ以下に圧縮することが一般的になっている。
【０００３】
通常、動画像データは多数の画像フレームから構成されるが、時間的な相関を利用すれば、これを効率的に符号化することが可能であることは、良く知られている。例えば、時刻ｔ１と時刻ｔ２とで撮像して得た画像フレーム＃１と画像フレーム＃２とが存在する場合に、その差分データである画像フレーム＃１２を計算によって求め、この画像フレーム＃１２を画像フレーム＃２の代わりに符号化することで、効率良く動画像データを圧縮することが可能となる。これは、画像フレーム＃１２が画像フレーム＃１と画像フレーム＃２との時間的な相関を利用したデータであり、通常の画像の動き程度では小さな値をもつことが多いことによる。
【０００４】
最近は、効率的な符号化技術を用いて圧縮率をより向上させるための手法も種々提案されている。
例えば、画像フレーム間の動きベクトルを検出し、この動きベクトルを符号化することで圧縮率を高める技術が知られている。この技術は、例えば画像フレーム＃２を、微小な領域、例えば１６×１６画素の矩形ブロックに分割し、各矩形ブロックを画像フレーム＃２に透間なく並べる。そして、それぞれの矩形ブロックに似た小領域を画像フレーム＃１から探し出し、画像フレーム＃１からの、その小領域における差分データを計算する。
【０００５】
上記の差分データとその絶対値の平均値とを演算する。この絶対値の平均値は、画像フレーム＃１２のそれよりも更に小さくなって、符号化効率を向上させることが期待できる。この場合、探し出した小領域の位置からのオフセット値は、「動きベクトル」として、差分データと共に符号化する必要があるが、それでも符号化後のデータサイズは、動きベクトルを使用しない場合に比べて小さくなるのが殆どである。
【０００６】
このように、画像フレーム＃１から画像フレーム＃２の矩形ブロックに似た画素特徴をもつ小領域を探し出し、両者のオフセットを検出することを、「動きベクトル検出」と呼ぶ。具体的には、画像フレーム＃２上の矩形ブロックＧ２に似た画素特徴をもつ画像フレーム＃１上の位置Ｇ１を探索し、その位置Ｇ１の画素値と矩形ブロックＧ２に属するすべての画素値との評価関数値の合計を求め、それが最小となる位置を指し示すベクトル成分を動きベクトルｍｂとする。通常、評価関数値には、絶対値や差分の２乗値が用いられる。
このように動きベクトルを使用して動画像データを圧縮する手法として、ＣＣＩＴＴ勧告によるＨ．２６１方式や、ＩＳＯによるＭＰＥＧ（Moving Picture Experts Group）方式等が知られている。
【０００７】
ところで、動きベクトル検出に際しては、ある画像フレームの矩形ブロックに対応する他の画像フレーム上の位置をどのようにして特定するか、つまり探索手法が問題となる。
これについては、良く知られた手法として、「全探索法」と呼ばれる探索手法がある。
【０００８】
全探索法では、２つの画素がどの程度似ているかを誤差評価関数で表し、その合計値が最も小さい画素を含む矩形ブロックを似ている矩形ブロックとする。誤差評価関数は、ferror(pixel1、pixel2)、例えば画素値pixel1と画素値pixel2の差分の絶対値｜pixel1-pixel2｜、または、差分の２乗（（pixel1-pixel2）*（pixel1-pixel2））で表される。いま、符号化しようとする画像フレームの、ある位置(ｘ,ｙ)における矩形ブロックをＡとして、この矩形ブロックＡのそれぞれの画素をＡ(bx,by)とする。一方、動きベクトル検出の際の探索範囲となる画像フレームの、ある位置(x+dx,x+dy)における矩形ブロックＡと同じ大きさの画素集合をＢとして、それぞれの画素をＢ(bx,by)とする。矩形ブロックＡの画素集合Ｂに対するそれぞれの画素の誤差評価関数の合計値をＥ(dx,dy)とすると、この合計値Ｅ(bx,by)は、下式で表される。
Ｅ(dx,dy)=Σbx(Σby(ferror(Ａ(bx,by),Ｂ(bx,by)))
ｄｘの値がdx1..dx2、dyの値がdy1..dy2をとり得るとして、この(dx1,dy2)..(dx2,dy2)の矩形を探索範囲とすると、全探索法は、この探索範囲内で合計値Ｅ(dx,dy)が最小になる(dx,dy)を求めることで、動きベクトルを検出する。
【０００９】
全探索法は、誤差評価関数を探索範囲内ですべての位置において演算することから、動きベクトル検出が正確であると推測されるが、以下のような問題もある。
【００１０】
まず、演算量が膨大になるという問題がある。
より激しい動きに対応するためには、探索範囲を拡げる必要がある。つまり、画像フレーム間の動きベクトルの長さが大きいときに探索範囲が狭いと、真の動きベクトルの方向を正しく検出できないので、これを正しく検出するためには、探索範囲を拡げる必要がある。しかし、そうすると、演算量が膨大となってしまう。
【００１１】
また、探索結果が探索順序に依存するという問題もある。
つまり、誤差評価関数値の合計Ｅ(dx,dy)は、同一探索範囲内の異なる場所で同じ値をとり得るため、探索範囲内での探索順序に結果が依存する。その結果、真の動きにを反映しない動きベクトルを検出することがある。特に、画像テクスチャが平坦なものであったり、繰り返しパターンであった場合は、ブロックの誤差評価関数値の合計は、異なる場所で似たような値をとることが多い。この場合は、本来の動きとは、かけ離れた位置に、たまたま参照元の矩形ブロックと似ている画素集合を発見する場合がある。この場合は、検出された動きベクトルが真の動きを反映しない。
【００１２】
さらに、全探索法では、画像の単純な平行移動を仮定し、また、ノイズも無いとして探索するが、現実の動画像は絶えず変形を伴っており、また、画像フレームにノイズが混入する場合がある。この場合も、最小の平均誤差評価関数を与える動きベクトルが、必ずしも真の動きを反映しない。動きの激しい画像の動きを捉えるために探索範囲を拡げると、このような誤検出が発生する機会も増加する。この場合、著しく長い誤った動きベクトルとなってしまうことがある。動画像データの符号化の際には、動きベクトルも符号化の対象になるので、このような場合には、誤差は小さいけれども符号化ビット量が多い動きベクトルとなっていしまい、結果的に符号化効率の低下をもたらす。
【００１３】
演算量が多いこの全探索法では、探索範囲を拡げて動きベクトルを正しく探索することが困難となるため、演算量を削減できる手法、例えば、「画素間引き法」、「探索位置間引き法」、「縮小画像を用いた階層探索法」も実用化のための検討がなされている。以下、これらの手法を簡単に説明する。
【００１４】
（１）画素間引き法
画素間引き法は、矩形ブロックにおける平均評価関数を算出する過程において、矩形ブロック内のすべての画素を用いずに、代表点だけを用いる手法である。例えば、矩形ブロックの大きさを１６×１６画素とした場合、矩形ブロック内の全画素（２５６画素）を用いないで、その半分の１２８画素を対象にしたり、全画素の１／４である６４画素を対象とする。この手法では、対象となる画素が間引かれるため、全探索法に比べれば動きベクトルの検出精度は劣る。特に、間引いた画素における誤差評価関数の値がその矩形ブロックの代表画素の平均に比較して著しく異なる場合には、誤検出が起こる。
【００１５】
（２）探索位置間引き法
探索位置間引き法は、探索範囲から虱潰しに平均誤差評価関数を求めずに、まず、粗い探索範囲で動きベクトル候補の検出を行い、その後、順次精度を上げていく手法である。例えば、最初に４画素おきに探索して動きベクトル候補Ａを求め、次に、動きベクトル候補Ａを中心にして、２画素おきに探索して動きベクトル候補Ｂを求める。最後に動きベクトル候補Ｂの周囲の画素を探索して最終的な動きベクトルＣを得る。
【００１６】
この手法は、エッジ部分の画素の空間における変化を見逃してしまう可能性があるため、全探索法に比べれば動きベクトルの検出精度は劣る。また、粗い探索の時点で動きベクトル候補を限定してしまうため、精度を上げていく過程において、一旦誤った動きベクトル候補を決めてしまうと、それ以降は、それを基準にして探索を行うため、正しい動きベクトルを検出することができない。
探索位置間引き法と画素間引き法の併用も可能である。この場合、演算量は更に削減されるが、誤検出が生ずる可能性も高くなる。
【００１７】
（３）縮小画像を用いた階層探索法
縮小画像を用いた階層探索法は、縮小画像を用いて動きベクトル候補の検出を行い、その後、画像の縮小率を低くしていって順次精度を上げていく手法である。例えば、まず、原画像を１／４に縮小した縮小画像で動きベクトルＡを求める。次いで、原画像を１／２に縮小した画像において、動きベクトルＡと相対的に同じ位置を中心にして他の動きベクトルＢを求める。最後に、原画像において動きベクトルＡと相対的に同じ位置を中心にして最終的な動きベクトルＣを得る。この手法は、演算量の観点からは、探索位置間引き法と画素間引き法を併用したものと同じである。縮小画像においては、探索位置と画素のそれぞれが間引きされるからである。特に、縮小画像生成に単なる間引きを適用した場合、行われる演算量は、探索位置間引き法と画素間引き法を併用した場合と全く等価になる。
【００１８】
この手法では、原画像を縮小する際に画像の細かいテクスチャが失われるので、細かい絵柄を含む画像に対しては全探索法に比べて動きベクトルの検出精度は劣る。また、動きベクトルの検出精度は縮小画像の生成方法に依存する。単純な間引きではなく、例えば、１／２縮小画像を、これに対応する原画像の２×２画素、もしくはそれ以上の画素を参照して重み付けを行い、その平均をとることによって作成した場合は、探索位置間引き法と画素間引き法を併用したものよりは、動きベクトルの検出精度は高まる。これは、画素間引き法が単純に間引いた画素を捨て去るのと比べて、縮小画像生成時に全ての画素を参照することによる。また、探索点間引き法に対しても同様のことがいえ、探索点間引き法が見逃してしまう可能性のあるエッジ等の情報も捉らえる確率は高くなる。これは、探索点間引き法が単純にその探索位置を無視したのに比べて、縮小画像を用いた階層探索法は、縮小画像を生成する過程において全ての探索位置を隙間なく調べるからである。
【００１９】
また、探索位置間引き法と同様、粗い探索点でまず動きベクトル候補を限定するため、必ずしも最小の平均誤差関数値を与える動きベクトルが求まるとは限らない。また、精度を上げていく過程において、一旦誤った動きベクトルを求めてしまうと、それ以降は、正しい動きベクトルを検出できなくなる。
なお、縮小画像における階層探索法の場合も、探索位置間引き法または画素間引き法、あるいは、その両方を併用することも可能であり、その場合、演算量は更に削減されるが、動きベクトル検出精度における個々の利点は失われ、誤った動きベクトルを検出する可能性が高くなる。つまり、演算量と検出精度とは、トレード・オフの関係にある。
【００２０】
いずれにしても、動きベクトルの検出に際して、一定の検出精度を確保しようとすれば、かなりの演算量が必要となる。そのため、これまでは、演算処理を並列的に実行できるようにした専用ＬＳＩが用いられることが多く、ＣＰＵやＭＰＵに読み込まれて実行されるソフトウェアで動きベクトルを検出することは殆ど行われていない。しかしながら、ＣＰＵ等の処理速度は年々高速化しているため、今後は、柔軟な処理形態が可能となるソフトウェアによる実装も考えられる。動きベクトル検出のすべてをソフトウェア化しないまでも、階層的に動きベクトルを検出する際に、一部の層、例えば、最終的に原画像データで１画素おきに探索する部分だけをハードウェアによる実装として、残りをソフトウェア化することも考えられる。
【００２１】
現在、ソフトウェアによって動きベクトル検出を行う場合の障害は、画像フレーム間の画素集合の対応位置を見つけるための演算量が膨大なために処理の実時間性が保証できず、逆に実時間性を重視した場合には検出精度が著しく低下することである。特に全探索法を用いて実時間性を保証しようとすると、非常に狭い探索範囲しか実現できない。
【００２２】
そこで、本発明の課題は、上述の各探索法の利点を活かして、広い探索範囲を確保しつつ誤った動きベクトルの検出を抑制することができる、改良された動きベクトル検索技術を提供することにある。また、ソフトウェアによる実装をも容易にする改良された手法を提供することにある。
【００２３】
【課題を解決するための手段】
本発明は、上記課題を解決する、改良された動きベクトル方法を提供する。
この動きベクトル検出方法は、コンピュータプログラムにより動作する装置が実行する動きベクトル検出方法であって、連続する第１画像フレームと第２画像フレームとの間の対応画素を指し示す動きベクトルを検出する際に、前記第２画像フレームを、複数のブロックに分割するとともに各ブロックを互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する工程と、第１グループに属するすべてのブロックについて動きベクトル候補を画像フレーム間の平均誤差評価関数値に基づいて特定する工程と、第２グループに属するすべてのブロックについて個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する工程と、第１グループに属するすべてのブロックについて個々のブロックに隣接する他ブロックの動きベクトルの平均ベクトル成分を導出し、この平均ベクトル成分を当該ブロックにおける新たな動きベクトル候補として保持する工程とを含み、保持されている各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする。
これにより、第２画像フレームのすべてのブロックについて平均誤差評価関数値を演算する場合に比べて、演算量を少なくすることができる。
【００２４】
本発明が提供する他の動きベクトル検出方法は、コンピュータプログラムにより動作する装置が実行する動きベクトル検出方法であって、連続する第１画像フレームと第２画像フレームとを取得し、前記第１画像フレームを保持するとともに、前記第２画像フレームを複数のブロックに分割し、これにより得られた各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する前処理工程と、前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持するとともに、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する初期探索工程と、前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件を満たす場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第１詳細探索工程と、この第１詳細探索工程後、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件を満たす場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第２詳細探索工程とを含み、更新された各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする。
【００２５】
上記他の動きベクトル検出方法における、ある実施の態様では、前記初期探索工程は、前記第１グループの個々のブロックと前記第１画像フレームとの間で動きの無い位置を起点として段階的に探索位置を拡げて前記平均誤差評価関数値を演算し、当該平均誤差評価関数値が収束した位置を指し示すベクトル成分を当該ブロックの動きベクトル候補として保持することを特徴とする。
また、ある実施の態様では、前記第１詳細探索工程は、前記初期探索工程により保持されている前記平均ベクトル成分が指し示す第１画像フレーム上の探索位置を所定方向に変えながら画像フレーム間の画素の平均誤差評価関数値を演算し、この平均誤差評価関数値が相対的に小さくなる位置を指し示すベクトル成分を当該ブロックの新たな動きベクトル候補として更新することを特徴とする。
また、ある実施の態様では、前記第１詳細探索工程は、前記探索位置を変える過程で、前記平均ベクトル成分が、同一ブロックについて保持されている動きベクトル候補と近似しているかどうかを所定の閾値との比較により判定し、近似している場合は、さらに、その探索位置での平均誤差評価関数値を求めて、その値が当該時点で正常な動きベクトル候補となり得るものが見つかったかどうかを判定するための収束基準値を越えているかどうかを判定し、越えない場合に、当該探索位置を指し示すベクトル成分を前記新たな動きベクトル候補とすることを特徴とする。この場合において、前記第１詳細探索工程は、前記平均ベクトル成分が同一ブロックについて保持されている動きベクトル候補と近似していない場合は、当該平均ベクトル成分が指し示す位置を、前記探索位置の新たな起点とすることを特徴とする。
【００２６】
本発明は、また、動きベクトル検出装置を提供する。
本発明の動きベクトル検出装置は、連続する第１画像フレームおよび第２画像フレームを取得する画像フレーム取得手段と、前記第２画像フレームを複数のブロックに分割するとともに、分割された各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する前処理手段と、前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持するとともに、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する初期探索手段と、前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第１詳細探索手段と、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する第２詳細探索手段とを有し、前記第１詳細探索手段および前記第２詳細探索手段で更新された各ブロックの動きベクトル候補を前記動きベクトルとすることを特徴とする。
ある実施の態様では、前記第１詳細探索手段および前記第２詳細探索手段の動作タイミング並びに前記所定の条件を変更可能に設定する制御手段をさらに備えた動きベクトル検出装置とする。
【００２７】
本発明は、また、上記の動き検出装置を用いた予測符号化装置を提供する。
この予測符号化装置は、動画像データを画像フレーム単位に分解する画像データ処理装置と、この画像データ処理装置から時系列に出力される第１画像フレームと第２画像フレームとから動きベクトルを検出する本発明の動きベクトル検出装置とを有し、この動きベクトル検出装置で検出された動きベクトルに基づいて前記第１画像フレームの動き検出を行って予測符号化を行う装置である。
【００２８】
本発明は、さらに、コンピュータ読取可能な記録媒体を提供する。
この記録媒体は、連続する第１画像フレームと第２画像フレームとを取得し、前記第１画像フレームを保持するとともに、前記第２画像フレームを複数のブロックに分割し、これにより得られた各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類する処理、前記第１グループに属する個々のブロックの画素と前記第１画像フレームの探索位置の画素との間の平均誤差評価関数値を演算し、この平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分を当該ブロックにおける動きベクトル候補として保持する処理、前記第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を当該ブロックにおける動きベクトル候補として保持する処理、前記第１グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する処理、及び、第２グループに属する個々のブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分を導出し、この平均ベクトル成分が所定の条件に適合する場合に、当該平均ベクトル成分を当該ブロックの新たな動きベクトル候補として更新する処理、をコンピュータ装置に実行させ、更新された各ブロックの動きベクトル候補を前記動きベクトルとして扱うためのプログラムコードが記録されたコンピュータ読取可能な記録媒体である。
【００２９】
【発明の実施の形態】
以下、本発明を、ＭＰＥＧ方式のように、他の画像フレームとの相関を利用して動画像データを符号化する予測符号化に応用した場合の実施形態を説明する。
【００３０】
図１は、本実施形態による予測符号化装置の要部構成図である。
この予測符号化装置１では、入力された動画像データを画像処理装置２で画像フレーム単位に分解し、各画像フレームのデータ（画素値）を、本発明の動きベクトル検出装置３に順次送る。動きベクトル検出装置３は、現在の画像フレームのデータ（以下、「現フレームデータ」と称する）と直前の画像フレームのデータ（以下、「参照フレームデータ」と称する）とを比較して動きベクトルを検出し、検出した動きベクトルを動き補償回路４へ送る。また、現フレームデータをそのまま減算器５へ送る。
動き補償回路４はフレームメモリを有しており、このフレームメモリに保持されている参照フレームデータの動き成分を上記動きベクトルで補償するようになっている。なお、ここでいう「補償」とは、符号化のための動き成分の補償をいい、後述する差分データは含まない。動き成分が補償された参照フレームデータは、減算器５と加算器６へ送られる。減算器５は、現フレームデータと動き成分が補償された参照フレームデータとの減算を行い、その差分データをＤＣＴ（Discrete Cosine Transform）回路７へ送る。ＤＣＴ回路７は、この差分データをＤＣＴ変換して量子化器８へ送る。量子化器８は、ＤＣＴ変換された差分データを量子化して可変長符号器９へ送る。これにより符号化データが出力される。
【００３１】
ＤＣＴ変換された差分データは、量子化器８へ送られるときに、逆量子化回路１０と逆ＤＣＴ回路１１にも入力されて元の差分データに復元され、加算器６に入力されるようになっている。加算器６は、上記参照フレームデータと復元された差分データとを加算する。これにより、現フレームデータが復元される。この復元された現フレームデータは、次の参照フレームデータとして、動き補償回路４のフレームメモリに保持される。
このように、予測符号化装置１では、現フレームデータと、動きベクトルによってその動き成分が補償された参照フレームデータとの差分データが可変長符号化される。
【００３２】
次に、本発明の動きベクトル検出装置３の構成例を説明する。この動きベクトル検出装置３は、後述するように、演算量を従来のものより大幅に低減することができるため、専用ＬＳＩによって実現しても良いが、本実施形態では、これをソフトウェアによって実現する。
【００３３】
すなわち、オペレーティングシステム（ＯＳ）が搭載されたコンピュータシステムに、所定のプログラムコードを読み込ませて実行させることにより、図２に示すような機能ブロックを当該コンピュータ装置上に形成し、これをもって、動きベクトル検出装置３を実現する。
【００３４】
プログラムコードは、通常は記録媒体に記録され、装置構築時にコンピュータシステムの記憶装置に一括で読み込まれるのが通常であるが、運用中に、適宜、記録媒体から上記記憶装置に読み込まれるような形態も可能である。記録媒体としては、半導体メモリ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ、磁気テープのほか、通信路を介してそのシステムがアクセス可能なプログラムサーバ等も含まれる。
【００３５】
また、上記プログラムコードを実行することによって上記各機能が実現されるだけでなく、そのプログラムコードの指示に基づいてコンピュータシステム上で稼働しているＯＳが実際の処理の一部を行い、その処理を通じて上記各機能が実現される場合も、本発明の範囲である。
コンピュータシステムとしては、スタンドアロン型のコンピュータ装置、分散処理型の複数のコンピュータ装置、ネットワーク環境下で通信可能な複数のコンピュータ装置のいずれであっても良い。
【００３６】
図２を参照すると、本実施形態の動き検出装置３は、上記コンピュータシステムが、画像フレーム取得部３１、ブロック化部３２、ブロック分類部３３、第１初期探索部３４、第２初期探索部３５、第１詳細探索部３６、第２詳細探索部３７、学習制御部３８の機能ブロックを有するように構成される。 第１初期探索部３４、第２初期探索部３５、第１詳細探索部３６、第２詳細探索部３７、学習制御部３８で、動きベクトル学習手段を形成している。
【００３７】
画像フレーム取得部３１は、時間的に連続するフレームデータを取得するものであり、ブロック化部３２は、現フレームデータを複数のブロックに分割するものである。ブロック分類部３３は、分割された各ブロックを、互いに他グループのものが隣接する第１グループおよび第２グループのブロック群に分類するものである。
図３は、分類後の現フレームデータの構造を示した図である。図中、「Ｂ０」は第１グループに分類されるブロック、「Ｂ１」は第２グループに分類されるブロックである。図示のように、本実施形態では、上下左右に他のグループのブロックが出現するように分類している。
【００３８】
第１初期探索部３４は、第１グループに属する個々のブロックについて、それに対応する参照フレームデータの該当位置を探索し、個々のブロックと探索位置とを結ぶ動きベクトル候補を特定するものである。
【００３９】
具体的には、図５に示すように、最初のブロックを用意し、そのブロックと参照フレームデータとの間で動きの無い位置を探索し、その位置を起点（０，０）として平均誤差評価関数値を求める（ステップＳ１０１，Ｓ１０２）。このときの参照フレームデータの位置を指し示すベクトル成分を（０，０）とする（ステップＳ１０３）。
予め定めた探索範囲、例えば起点から数画素分拡大した範囲で、予め定めた精度で最初の探索を行い（ステップＳ１０４）、その位置で平均誤差評価関数値を求める（ステップＳ１０５）。平均誤差評価関数値がこれまでの最小値よりも小さいかどうかを判定し、小さい場合はその探索位置を指し示すベクトル成分を動きベクトル候補として保持しておく（ステップＳ１０６：Yes、Ｓ１０７）。探索開始時には保持されている動きベクトル候補がないので、そのときのベクトル成分（０，０）を保持しておく。
【００４０】
平均誤差評価関数値がこれまでの最小値よりも大きかった場合、あるいは動きベクトル候補を保持した後は、上記範囲での最後の探索位置になるまで、次の位置にずらして再度ステップＳ１０５以降の処理を繰り返す（ステップＳ１０６：No、Ｓ１０８：No、Ｓ１０９）。上記範囲での探索が終了した場合は、第１グループの次のブロックについて、ステップＳ１０２以降の処理を繰り返す（ステップＳ１１０：No、Ｓ１１１）。
【００４１】
これにより、第１グループのブロック数と同数の動きベクトル候補を特定することができる。但し、この段階では、おおまかな精度の動きベクトル候補となっており、誤差を多分に含んでいる。
【００４２】
第２初期探索部３５は、第２グループに属する個々のブロックに対応する参照フレームデータの該当位置を探索し、個々のブロックと探索位置とを結ぶ動きベクトル候補を特定するものである。
【００４３】
具体的には、図６に示すように、最初のブロックについて、隣接する第１グループのブロックについて既に求められている動きベクトル候補を平均化し、それにより得られたベクトル成分をそのブロックの動きベクトル候補とする（ステップＳ２０１，Ｓ２０２）。そして、その動きベクトル候補が指し示す参照フレームデータの位置との間で平均誤差評価関数値を求めておく（ステップＳ２０３）。これを第２グループのすべてのブロックについて繰り返す（ステップＳ２０４）。これにより、第２グループのブロック数と同数の動きベクトル候補を特定することができる。
なお、動きベクトル候補を特定するだけであれば、上記ステップＳ２０２の処理は必ずしも必要ではない。
【００４４】
第１詳細探索部３６は、第１グループに属する個々のブロックに隣接する他ブロック（つまり第２グループのブロック群）の動きベクトル候補の平均ベクトル成分を学習して当該ブロックの新たな動きベクトル候補として更新するものであり、第２詳細探索部３７は、第２グループに属する個々のブロックに隣接する他ブロック（つまり第１グループのブロック群）の動きベクトル候補の平均ベクトル成分を学習して当該ブロックの新たな動きベクトル候補として更新するものである。
【００４５】
第１詳細探索部３６における学習処理は、具体的には、図７に示す手順で行われる。前提として、学習のための探索位置の移動ルートは予め定めておく。例えば、探索開始位置を起点にスパイラル状に拡げていくものとする。また、以下の処理は、便宜上、学習処理のための時間制限がない場合の例を示すものである。
【００４６】
まず、第１グループに属する最初のブロックについて、上下左右の他ブロックの動きベクトル候補を平均化したベクトル成分を求める（ステップＳ３０１，Ｓ３０２）。そして、このベクトル成分が、既に特定されている動きベクトル候補と予め定めた閾値よりも近似しているかどうかを判定する（ステップＳ３０３）。これは、ノイズ成分が混入しない場合には、ベクトル成分が以前のものに近似するのに対し、ベクトル成分が混入した場合には、ベクトル成分の方向や長さが以前のものと大きく異なる点に着目した処理である。
例えば、図４上段では、ノイズ成分を表すベクトル成分４１が混入している。このベクトル成分４１は、他のベクトル成分とは異なった向きと長さを持つのが通常である。そこで、このステップＳ３０３で他のベクトル成分との近似性を判定し、近似していない場合は、平均化したベクトル成分を求めることで、このノイズ成分が排除されることになる。図４下段におけるベクトル成分４２は、この平均化されたベクトル成分である。
【００４７】
ステップＳ３０３において、ベクトル成分が近似していないと判定した場合は、そのときのベクトル成分が差し示す位置で平均誤差評価関数値を求め、以後の探索において、この位置を探索の起点にする（ステップＳ３０３：No、Ｓ３０４）。つまり探索ルートを修正する。
【００４８】
ベクトル成分が近似している場合は、その位置での平均誤差評価関数値を求め、それが学習制御部３８で定めた「収束基準値」、すなわち、その時点で正常な動きベクトル候補となり得るものが見つかったかどうかを判定するための閾値を越えているかどうかを判定する（ステップＳ３０３：Yes、Ｓ３０５）。越えている場合は、正しい動きベクトルが検出されていないとみなして、次の処理を行う。
【００４９】
まず、探索位置をそのブロックにおいて、次の位置に設定し、その位置で平均誤差評価関数値を求める（ステップＳ３０５：Yes、Ｓ３０６、Ｓ３０７）。その平均誤差評価関数値がこれまでの値の最小値よりも小さければ、その位置を指し示すベクトル成分を、そのブロックの動きベクトル候補として更新する（ステップＳ３０８）。
なお、ステップＳ３０５において、平均誤差評価関数値が収束基準値を越えていなかった場合は、直ちにステップＳ３０９の処理に移行する（ステップＳ３０５：No）。これにより、動画像の動きの変化が激しい場合には探索処理のための十分な演算量を確保し、逆に、動きの変化が少ない場合には演算量を削減することが可能となる。
【００５０】
以上の処理を予め定めた探索範囲において繰り返し（ステップＳ３０９：No、Ｓ３１０）、探索範囲のすべての位置を探索した場合は第１グループの次のブロックについて同様の処理を繰り返す（ステップＳ３１１：No，Ｓ３１２）。
【００５１】
第２グループについても第１グループの場合と同様の処理を行う。つまり、図７において、「第２グループ」とあるのを「第１グループ」と置き換えることで、これを第２グループの処理に読み替えることができる。
【００５２】
学習制御部３８は、上記第１初期探索部３４、第２初期探索部３５、第１詳細探索部３６、第２詳細探索部３７における動作タイミング、動作順序、前述の「閾値」や「収束基準値」の変更等を行うものである。上述の第１詳細探索部３６および第２詳細探索部３７についての説明は、処理時間に制限が無い場合の例であった。しかし、実際には、演算量と実時間性確保との関係で、処理時間や処理順序には制限を設けている。この場合の各部の動作タイミング等を制御するのが学習制御部３８である。
【００５３】
この学習制御部３８による実動作時の制御手順は、例えば図８に従う。
すなわち、最初に第１初期探索部３４を動作させ、第１グループに属するすべてのブロックについて、概略的ながら動きベクトル候補を特定できるだけの探索範囲で平均誤差評価関数値を演算させる。そして、平均誤差評価関数値が最小となる探索位置を指し示すベクトル成分をそれぞれ当該ブロックにおける動きベクトル候補として特定させる（ステップＳ４０１）。
その後、第２初期探索部３５を動作させ、第２グループに属するすべてのブロックに隣接する他ブロックの動きベクトル候補の平均ベクトル成分をそれぞれ当該ブロックにおける動きベクトル候補として特定させる（ステップＳ４０２）。
【００５４】
その後、第１詳細探索部３６を、「収束基準値」をやや高めに設定して動きベクトル候補を見つけ易くしておいて一定時間動作させる（ステップＳ４０３、Ｓ４０４）。これにより、第１グループのブロックにおける探索位置が、初期状態から探索ルート上を少し移動する。第２詳細探索部３７も、「収束基準値」もやや高めてに設定して一定時間動作させる（ステップＳ４０５）。これにより、第２グループのブロックにおける探索位置が、初期状態から探索ルート上を少し移動する。
【００５５】
この時点で、動きベクトル検出の処理を終了させても良いが、時間的に余裕がある場合、つまり処理の許容時間に達していない場合は（ステップＳ４０６：No）、「収束基準値」を前回よりも低くして、つまり、より正確性を増した上で探索ルートを拡げさせ、ステップＳ４０４移行の処理を繰り返す（ステップＳ４０７）。その後、第２詳細探索部３７に対して、第１詳細探索部３６と同様の制御を行う（ステップＳ４０７）。なお、「収束基準値」の初期値および変更の幅は、対象となる動画像データにおける画像の動きの激しさに応じて適宜変えるようにする。
【００５６】
これにより、実時間性が重要視される場合と、検出精度が重要視される場合とで、第１詳細探索部３６および第２詳細探索部３７の動作回数を調整できるようになる。
また、一旦、第１初期探索部３４で第１グループにおける動きベクトル候補を特定しておけば、第２初期探索部３５、第１詳細探索部３６、第２詳細探索部３７では、隣接する他ブロックのベクトル成分（動きベクトル候補）の平均ベクトル成分を演算するだけで動きベクトル候補を特定できるので、演算量の大幅な削減が可能になる。さらに、複数の動きベクトル候補の平均をとっているので、突発的な変化成分、例えばノイズ成分の混入に対して頑強であり、精度の良い動きベクトル検出が可能になる。しかも、学習が繰り返されるたびに、これらの突発的な変化成分が吸収されるので、検出精度がより高まる効果がある。
【００５７】
また、学習が繰り返されるたびに「収束基準値」が低くなるので、ブロック上の画素特徴と参照フレームデータの位置との一致性がとりやすくなる。
【００５８】
なお、以上の説明は、本発明の動きベクトル検索方法を、全探索法の改良として考えた場合であるが、更に、本発明の動きベクトル検索方式を階層的に用いることで縮小画像を用いた階層探索法にも応用が可能である。この場合、通常の縮小画像を用いた階層探索法と比較して、演算量（演算時間）の低減と、検出精度の向上が期待できるようになる。また、各階層において誤った動きベクトルを訂正する効果が期待できるため、一旦誤りが発生しても、次の階層でこれを補正できる場合がある。
【００５９】
また、本発明の動きベクトル検出方法により、予測符号化装置１における符号化効率の向上も見込まれる。例えば、縮小画像を用いた階層探索法に適用することで、各階層において空間的に滑らかな動きベクトルにすることができるため、誤った動きベクトルであってもそれが著しく長くはならない。
【００６０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、広い探索範囲を確保しつつ誤った動きベクトルの検出を抑制することができるとう、特有の効果がある。
また、演算量を低減させることができ、しかも探索処理の実時間性を保証することが可能なので、ソフトウェアによる実装も容易になる。
【図面の簡単な説明】
【図１】本発明を適用した予測符号化装置の構成図。
【図２】本実施形態の動き検出装置の機能ブロック構成図。
【図３】第１グループおよび第２グループのブロック群に分類した現フレームデータの構造説明図。
【図４】上段は、ノイズ成分が混入したベクトル成分の説明図、下段は平均化されたベクトル成分の説明図。
【図５】第１初期探索部による処理手順説明図。
【図６】第２初期探索部による処理手順説明図。
【図７】第１詳細探索部による処理手順説明図。
【図８】学習制御部における制御手順説明図。
【符号の説明】
１  予測符号化装置
２  画像処理装置
３  動きベクトル検出装置
４  動き補償回路
５  減算器
６  加算器
７  ＤＣＴ回路
８  量子化器
９  可変長符号器
１０  逆量子化回路
１１  逆ＤＣＴ回路
３１  画像フレーム取得部
３２  ブロック化部
３３  ブロック分類部
３４  第１初期探索部
３５  第２初期探索部
３６  第１詳細探索部
３７  第２詳細探索部
３８  学習制御部。
【図１】
0004004653.tif 000002
【図２】
0004004653.tif 000003
【図３】
0004004653.tif 000004
【図４】
0004004653.tif 000005
【図５】
0004004653.tif 000006
【図６】
0004004653.tif 000007
【図７】
0004004653.tif 000008
【図８】
0004004653.tif 000009