JP3747534B2 - 動き検出装置とその方法 - Google Patents
動き検出装置とその方法 Download PDFInfo
- Publication number
- JP3747534B2 JP3747534B2 JP28551896A JP28551896A JP3747534B2 JP 3747534 B2 JP3747534 B2 JP 3747534B2 JP 28551896 A JP28551896 A JP 28551896A JP 28551896 A JP28551896 A JP 28551896A JP 3747534 B2 JP3747534 B2 JP 3747534B2
- Authority
- JP
- Japan
- Prior art keywords
- sum
- block
- image
- image block
- motion detection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、動画像圧縮装置などに用いられる動き検出装置および動き検出方法に関する。
【0002】
【従来の技術】
動画像圧縮を効率よく行うための主要技術の1つとして、画像の動きを示す動きベクトルを求める動き検出がある。この動きベクトルを求める手法はいくつか提案されているが、主な手法の1つとしてブロックマッチングアルゴリズムと呼ばれる手法がある。
このブロックマッチングアルゴリズムについて図5を参照して説明する。
このブロックマッチングアルゴリズムにおいては、動き検出の対象となる画像(以後、カレントフレームと言う)を、たとえば16画素×16ラインと言うようなブロック(以後、カレントブロックと言う)に分割してそのカレントブロックごとに処理を行って動きベクトルを求める。
【0003】
すなわち、各カレントブロックに対して、与えられた候補ベクトルに基づいて参照フレーム内に対応するブロック(以後、リファレンスブロックと言う)を決定し、そのカレントブロックとリファレンスブロックの対応する画素同士の差分を求め、その差分をブロックで積算する。この時、差分は絶対値にして積算する。
そして、リファレンスフレームの探索範囲に応じて与えられる全ての候補ベクトルについてこの積算値を求め、積算値が最小になる候補ベクトルを動きベクトルとして抽出する。
【0004】
このブロックマッチングアルゴリズムを式に示すと式2のようになる。
【数2】
式2において、curr(x,y) はカレントブロックの画素であり、 ref(x+vx ,y+vy ) はカレントブロックの画素curr(x,y) に対応するリファレンスブロックの画素であり、元のリファレンスブロックの画素ref(x,y)および動きベクトル(vx ,vy )に基づいて決定されるものである。
すなわちこのような評価関数を用いて、様々なベクトルに対して式2の評価値MEを算出し、それが最小になるものを動きベクトルにするのである。
【0005】
このブロックマッチングアルゴリズムに基づく実際の処理方法について図6および図7を参照して説明する。
図6は、このブロックマッチングアルゴリズムを、通常の計算機装置などで行う場合のフローチャートである。
図6に示すように、まず、カレントフレームを分割して得られる複数のブロックの中から最初のブロックをカレントブロックとして設定し(ステップS51)、以下、そのカレントブロックに対する動きベクトル検出の処理に入る。
【0006】
まず、最小の評価値を記憶するための変数minに、たとえばその変数が取り得る最大値などの予め定めた十分大きな値を初期値としてセットしておき(ステップS52)、図5に示すように予め定められているカレントブロックの探索範囲に基づいて決定されるm個の候補ベクトル(vxi,vyi)(i=1〜m)の中の、最初の候補ベクトル(vx1,vy1)を、評価値を求める対象の候補ベクトルとして設定する(ステップS53)。
そのように設定されたカレントブロックおよび候補ベクトルに対する評価値算出の処理においては、まず、累積値を記憶する変数sumの内容をリセットした後(ステップS54)、カレントブロックの最初の画素(図5の例いおいては左上の画素)を、処理対象の画素curr(x,y) としてセットする(ステップS55)。
【0007】
そして、そのカレントブロックの画素curr(x,y) と、そのcurr(x,y) に対して候補ベクトル(vx1,vy1)分だけ動いた位置のリファレンスブロック上の画素 ref(x+vxi,y+vyi) との差を求め、その差を変数sumに既に記憶されている値に対して加算し、再び変数sumに格納する(ステップS56)。
以降、処理対象の画素がカレントブロックの最後の画素(図5の例においては右下の画素)か否かを調べながら(ステップS58)、最後の画素でなければ処理対象の画素として次の画素をセットし(ステップS59)、ステップS56の処理を繰り返し行う。
【0008】
ステップS58において、処理対象の画素がカレントブロックの最後の画素だった場合には、次に変数sumと変数minの値を比較し(ステップS60)、変数sumに記憶されている今回処理対象だった候補ベクトルに対する評価値が、変数minに記憶されているそれまでに処理した各候補ベクトルにおける最小評価値以下か否か、すなわちsum≦minか否かをチェックする。
そして、sum≦minだった場合には、今回処理した候補ベクトルが求める動きベクトルである可能性があるので、これを記憶する。すなわち、その評価値sumを新たな最小評価値として変数minにセットし、その候補ベクトルのx成分およびy成分を各々変数minvxおよび変数minvyに格納する。
なお、ステップS60において、sum>minだった場合には、今回処理した候補ベクトルは求める動きベクトルである可能性は無いので、その評価値を求めた結果等は無視して次のステップS62に移る。
【0009】
このような得られた評価値に基づく処理が終了したら、その処理を行うために用いた候補ベクトルが、前述したm個の候補ベクトルの中の最後の候補ベクトルか否かを調べ(ステップS62)、最後の候補ベクトルでなければ評価対象の候補ベクトルとして次のベクトルを設定し(ステップS63)、再びステップS54〜ステップS61の処理を繰り返す。
ステップS62において、その候補ベクトルが最後の候補ベクトルだった場合には、その時点で変数minvxおよび変数minvyに記憶されている候補ベクトルが、そのカレントブロックに対して検出された動きベクトルということになり、そのカレントブロックに対する処理は終了する。
【0010】
そして、そのカレントブロックが、カレントフレーム内の最後のブロックか否かを調べ(ステップS64)、最後のブロックでなければ動き検出対象のカレントブロックとして次のブロックを設定し(ステップS65)、再びステップS52〜ステップS63の処理を繰り返す。
ステップS64において、カレントブロックがカレントフレーム内の最後のブロックだった場合には、そのカレントフレームに対する一連の処理を終了する(ステップS66)。
【0011】
前述したブロックマッチングアルゴリズムは、このような基本的な処理により実行することができるが、このアルゴリズムはネストしたループ(入れ子状態になったループ)が多数あるため、計算処理量が多く、時間がかるという問題があり、より高速に動き検出を行うことができるアルゴリズムが求められている。
そこで、図6に示した方法を改善したより高速な処理方法について図7を参照して説明する。
図7は、図6に示した動き検出の処理をより高速に行うことのできるアルゴリズムを示すフローチャートである。なお、図7に示す処理において、図6の処理と全く同じ処理を行う工程に対しては同じステップ番号を付しておりその説明を原則として省略する。
【0012】
図6においては、ステップS56,S58,S59において差分の累算値を求めているが、必要なのは、累算値の中で最小になるもののみである。したがって、図7の処理手順においては、最小値になる見込みがなければ累算のループから抜けることによって、処理を実質的に中断し、高速化を図るようにした。
したがって、図7の処理において、ステップS51〜ステップS56までの処理は前述した図6の処理と同じであり、ステップS56の直後のステップS57において、変数sumと変数minの値を比較している。すなわち、ステップS56において各画素ごとに順に累算値を求めているその途中において、変数sumに記憶されている今回処理対象の候補ベクトルに対する現時点での評価値が、変数minに記憶されているそれまでに処理した各候補ベクトルにおける最小評価値以下か否か、すなわちsum≦minか否かをチェックする。
【0013】
そして、sum≦minだった場合には、今回処理している候補ベクトルが求める動きベクトルである可能性があるので、ステップS58に移り、以後の画素について引き続き累算を求める処理を継続する。また、sum>minだった場合には、現在処理している候補ベクトルについては、既に求める動きベクトルである可能性は無いので、評価値を求める処理を中断して、ステップS62以降の次の候補ベクトルに係わる処理に移る。
【0014】
このようなチェックをしながら評価値の算出を行っていきステップS58においてブロックの最後の画素まで累算が行えたと判断された場合、既にステップS57で判定されているようにその処理対象の候補ベクトルが求める動きベクトルである可能性があるので、直ちにステップ61においてこれらの値を記憶する。すなわち、その評価値sumを新たな最小評価値として変数minにセットし、その候補ベクトルのx成分およびy成分を各々変数minvxおよび変数minvyに格納する。
以下、図6に示した処理と同じようにステップS62〜ステップS66の処理を行う。
【0015】
【発明が解決しようとする課題】
このような図7に示したような処理方法を用いることによりブロックマッチングアルゴリズムはある程度高速に処理できるようになったものの、より高速に処理したいという要望がある。
【0016】
したがって、本発明の目的は、より高速に動き検出を行うことができる動き検出装置を提供することにある。
また本発明の他の目的は、より高速に動き検出を行うことができる動き検出方法を提供することにある。
【0017】
【課題を解決するための手段】
前記課題を解決するために、本発明の動き検出装置は、動き検出対象の画像を分割して得られる第1の画像ブロックに対して、参照画像を参照して動きベクトルを検出する動き検出装置であって、複数の候補ベクトルから1つの候補ベクトルを選択する候補ベクトル選択手段と、前記第1の画像ブロックおよび前記候補ベクトル選択手段により選択された候補ベクトルに基づいて、前記参照画像上において第2の画像ブロックを抽出する参照ブロック抽出手段と、前記第1の画像ブロックの画素値の総和と、前記第2の画像ブロックの画素値の総和との差を検出する総和差検出手段と、前記総和差検出手段により検出された総和の差が、設定された最小評価値よりも小さい場合に、前記第1の画像ブロックと前記第2の画像ブロックの対応する画素同士の画素値の差分の絶対値の総和を、前記候補ベクトル選択手段により選択された候補ベクトルに対する評価値として検出する評価値検出手段と、前記評価値検出手段により検出された評価値が、既に検出された評価値のなかで最小であった場合に、前記候補ベクトル選択手段により選択された候補ベクトルを記憶し、当該評価値を前記最小評価値として設定する記憶手段と、前記記憶手段に記憶されている前記候補ベクトルを、当該第1の画像ブロックに対する動きベクトルとして出力する出力手段とを有する。
【0018】
また、本発明の動き検出方法は、動き検出対象の画像を分割して得られる第1の画像ブロックに対して、参照画像を参照して動きベクトルを検出する動き検出方法であって、複数の候補ベクトルから1つの候補ベクトルを選択する第1の工程と、前記第1の画像ブロックおよび前記第1の工程で選択された候補ベクトルに基づいて、前記参照画像上において第2の画像ブロックを抽出する第2の工程と、前記第1の画像ブロックの画素値の総和と、前記第2の画像ブロックの画素値の総和との差を検出する第3の工程と、当該第3の工程で検出された総和の差が設定された最小評価値よりも小さい場合に、前記第1の画像ブロックと前記第2の画像ブロックの対応する画素同士の画素値の差分の絶対値の総和を、前記第1の工程で選択された候補ベクトルに対する評価値として検出する第4の工程と、当該第4の工程で検出された評価値が、前記候補ベクトル選択手段において既に選択された候補ベクトルに対して既に検出された評価値のなかで最小であった場合に、前記第1の工程で選択された候補ベクトルを記憶手段に記憶し、当該評価値を前記最小評価値として設定する第5の工程と、前記複数の候補ベクトル全てが前記第1の工程で選択された後に、前記記憶手段に記憶されている前記候補ベクトルを、当該第1の画像ブロックに対する動きベクトルとして出力する第6の工程とを有する。
【0020】
【発明の実施の形態】
本発明の実施の形態を図1〜図4を参照して説明する。
本実施の形態の動き検出装置および動き検出方法は、カレントブロックおよびリファレンスブロックの総和を用いることにより、その候補ベクトルの評価値の範囲を検出し、処理の高速化に用いるようにしたものである。
すなわち、前述した式2に示したような評価関数は式3に示すように順に変形していくと、最終的に式4に示すような形式にすることができる。
【数3】
【0021】
そしてこの式4から、各候補ベクトルごとに求める式2に示したような評価値MEは、カレントブロックおよびリファレンスブロックのそれぞれの総和の差の絶対値(以下、ブロック総和差分と言う。)より大きい、ということが分かる。換言すれば、ブロック総和差分が既に他の候補ベクトルに対する評価値よりも大きい候補ベクトルは、その候補ベクトルに対する評価値は当然その評価値よりも大きくなり、全ての候補ベクトルの中で評価値が最小となるベクトル、すなわち求める動きベクトルにはなり得ないということになる。
したがって、本実施の形態の動き検出装置においては、そのような候補ベクトルに対する処理は直ちに終了するようにして、高速に所望のベクトルを検出できるようにした。
【0022】
そのような動き検出処理を行う動き検出装置の構成を図1に示す。
図1に示すように、この動き検出装置は通常の計算機装置などにより構成される。
すなわち、動き検出装置1は、中央処理装置(CPU)2,ROM3,RAM4を有する。
ROM3は、処理プログラムなどを記憶している。
RAM4は、カレントフレーム、リファレンスフレームなどの画像データや、候補ベクトル、評価値など、この動き検出方法に係わる種々のデータを記憶する。
そしてCPU1は、ROM3に格納されている処理プログラムにしたがって、RAM2に記憶されているデータを処理し、実際に動き検出の処理を行う。
【0023】
このような動き検出装置により実際に行われる動き検出処理について、図2〜図4のフローチャートを参照して説明する。
図2は、その動き検出処理を説明するためのフローチャートである。
この動き検出処理においては、処理を開始したら(ステップS10)、まず冒頭において、処理対象のカレントフレームおよびリファレンスフレームの各フレームについて、得られる画像ブロック各々に対して、その画素値の総和を求める処理を行う(ステップS11,S12)。
【0024】
このステップS11におけるカレントフレームの各ブロック総和を求める処理について、図3を参照して詳細に説明する。
まず、入力された処理対象のカレントフレームを所定の画素構成の領域に分割したら(本実施の形態においては16画素×16ラインのブロックに分割する)、その最初のブロックをカレントブロックと設定し(ステップS31)、総和を記憶する変数sumの内容を0にリセットしておく(ステップS32)。そして、そのカレントブロックの最初の画素(本実施の形態では左上の画素)を加算対象の画素としてセットし(ステップS33)、その画素値を変数sumに既に格納されている値と加算した後、その結果を再び変数sumに格納する(ステップS34)。
【0025】
次に、カレントブロック内の全ての画素を加算したか否かをチェックし(ステップS35)、まだ全ての画素の加算を行ってなければ次の画素を加算対象の画素として設定し(ステップS36)、再びステップS34において、その画素値の累算を行う。
このような処理を繰り返し、ステップS35においてそのカレントブロックの全ての画素の累算が終了したことが検出されたら、その時に変数sumに記憶されている値が、そのカレントブロックの画素値の総和なので、そのカレントブロックに対応付けて記憶する(ステップS37)。
【0026】
そして、カレントフレームを分割して形成された全てのブロックに対して総和を求める処理が終了したか否かを検出し(ステップS38)、未だ全てのブロックに対して処理が終了していなければ、次のブロックをカレントブロックとして設定し(ステップS39)、再びステップS32〜ステップS37の処理を繰り返す。
ステップS38において、全てのブロックに対して総和を求める処理が終了したと判定された場合には、このカレントフレームの各ブロック総和を求める処理を終了し(ステップS40)、メインルーチンに戻る。
【0027】
次に、ステップS12におけるリファレンスフレームの各ブロック総和を求める処理について、図4を参照して詳細に説明する。
ここで、カレントフレームの各カレントブロック各々に対してたとえば図5に示したような動きベクトル探索範囲を設定した場合には、リファレンスフレームから得られるカレントブロックと同じ画素構成(本実施の形態においては16画素×16ライン)の全ての画像ブロックが、カレントブロックおよび候補ベクトルの組み合わせに基づいて決定されるリファレンスブロックとなる。
したがって、リファレンスフレームについては、これらリファレンスブロックとなる可能性のある全てのブロックに対して、ブロック総和を求めておく。
【0028】
具体的には、リファレンスフレームから抽出される16画素×16ラインの画像ブロック全て、すなわち相互にX方向およびY方向に1画素ずつしかずれていないような画像ブロックの各々全てについて、ブロック総和を求める。
このことは、リファレンスフレームの各ブロックに対してブロック総和を求める処理は、カレントフレームの各カレントブロックに対してブロック総和を求める処理に比べて処理量が非常に多くなることを意味している。しかし、リファレンフレーム内の画像ブロックは、通常は種々のカレントブロックと候補ベクトルの組み合わせにおいて各々多数回参照されるので、予め全てのブロックに対してブロック総和を求めておくことがやはり有効なのである。
【0029】
したがって、まず入力されたリファレンスフレームから最初に得られる16画素×16ラインのブロックをリファレンスブロックと設定し(ステップS41)、総和を記憶する変数sumの内容を0にリセットしておく(ステップS42)。そして、そのリファレンスブロックの最初の画素(本実施の形態では左上の画素)を加算対象の画素としてセットし(ステップS43)、その画素値を変数sumに既に格納されている値と加算した後、その結果を再び変数sumに格納する(ステップS44)。
【0030】
次に、リファレンスブロック内の全ての画素を加算したか否かをチェックし(ステップS45)、まだ全ての画素の加算を行ってなければ次の画素を加算対象の画素として設定し(ステップS46)、再びステップS44において、その画素値の累算を行う。
このような処理を繰り返し、ステップS45においてそのリファレンスブロックの全ての画素の累算が終了したことが検出されたら、その時に変数sumに記憶されている値が、そのリファレンスブロックの画素値の総和なので、そのリファレンスブロックに対応付けて記憶する(ステップS47)。
【0031】
そして、リファレンスフレームを分割して形成された全てのブロックに対して総和を求める処理が終了したか否かを検出し(ステップS48)、未だ全てのブロックに対して処理が終了していなければ、次のブロックをリファレンスブロックとして設定し(ステップS49)、再びステップS42〜ステップS47の処理を繰り返す。
ステップS48において、全てのブロックに対して総和を求める処理が終了したと判定された場合には、このリファレンスフレームの各ブロック総和を求める処理を終了し(ステップS50)、メインルーチンに戻る。
【0032】
以下、再び図2のメインルーチンの処理について説明する。
カレントフレームおよびリファレンスフレームの全画像ブロックのブロック総和の算出が終了したら、カレントフレームを分割して得られる複数のブロックの中から最初のブロックをカレントブロックとして設定し(ステップS13)、以下、そのカレントブロックに対する動きベクトル検出の処理に入る。
まず初期設定として、最小の評価値を記憶するための変数minに、たとえばその変数が取り得る最大値などの予め定めた十分大きな値を初期値としてセットする(ステップS14)。
次に、予め設定された複数の候補ベクトル(vxi,vyi)(i=1〜m)の中の、最初の候補ベクトル(vx1,vy1)を、評価値を求める対象の候補ベクトルとして設定する(ステップS15)。
【0033】
そして、その動き検出対象のカレントブロック、および、ステップS15で設定された候補ベクトルに基づいてリファレンスブロックを決定し、ステップS11およびステップS12で既に求められているそのカレントブロックおよびリファレンスブロックに対するブロック総和の値を読み出し、その差分を求め変数diffに格納する(ステップS16)。次に、この差分diffがそれまでにそのカレントブロックに対して既に検出されている候補ベクトルの評価値の最小値minよりも大きいか否かをチェックする(ステップS17)。ブロック総和の差分diffの方が、既に検出されている最小評価値minよりも大きい場合には、仮にこの候補ベクトルに対して評価値を求めたとしても式4に示したように現在の最小評価値minよりも大きくなることは明らかなので、この候補ベクトルに対する処理は中止し、ステップS25以降の処理に移る。
ステップS17において、ブロック総和の差分diffが、既に検出されている最小評価値min以下の場合には、この候補ベクトルに対して評価値を求める意義があるものとしてステップS18以降のその評価値を求める処理に移る。
【0034】
評価値を求める処理においては、まず、まず、累積値を記憶する変数sumの内容をリセットした後(ステップS18)、カレントブロックの最初の画素(本実施の形態においては左上の画素)を処理対象の画素curr(x,y) としてセットする(ステップS19)。
そして、そのカレントブロックの画素curr(x,y) と、そのcurr(x,y) に対して候補ベクトル(vx ,vy )分だけ動いた位置のリファレンスブロック上の画素 ref(x+vx ,y+vy ) との差を求め、その差を変数sumに既に記憶されている値に対して加算し、再び変数sumに格納する(ステップS20)。
そしてその変数sumと変数minの値を比較し、変数sumに記憶されている今回処理対象の候補ベクトルに対する現時点での評価値が、変数minに記憶されているそれまでに処理した各候補ベクトルにおける最小評価値以下か否か、すなわちsum≧minか否かをチェックする(ステップS21)。
【0035】
ステップS21においてsum≧minだった場合には、今回処理している候補ベクトルが求める動きベクトルである可能性があるので、ステップS22に移り、以後の画素について引き続き累算を求める処理を継続する。すなわち、処理対象の画素がカレントブロックの最後の画素(本実施の形態においては右下の画素)か否かを調べながら(ステップS22)、最後の画素でなければ処理対象の画素として次の画素をセットし(ステップS23)、ステップS20およびステップS21の処理を繰り返し行う。
また、ステップS21においてsum<minだった場合には、現在処理している候補ベクトルについては、既に求める動きベクトルである可能性は無いので、評価値を求める処理を中断して、ステップS25以降の次の候補ベクトルに係わる処理に移る。
【0036】
ステップS21に示したようなチェックを行いながら評価値の算出を行っていきステップS22においてブロックの最後の画素まで累算が行えたと判断された場合には、既にステップS21で判定されているようにその候補ベクトルに対する評価値はそれまでに求められている評価値以下であることになり、求める動きベクトルである可能性があるので、ステップ24においてこれらの値を記憶する。すなわち、その評価値sumを新たな最小評価値として変数minにセットし、その候補ベクトルのx成分およびy成分を各々変数minvxおよび変数minvyに格納する。
【0037】
ステップS24におけるこのような得られた評価値に基づく処理が終了した場合、および、ステップS17およびステップS21においてその候補ベクトルに対する処理が途中で中断された場合のいずれの場合においても、ステップS25においてその候補ベクトルが前述した複数の候補ベクトルの中の最後の候補ベクトルか否かを調べ(ステップS25)、最後の候補ベクトルでなければ評価対象の候補ベクトルとして次のベクトルを設定し(ステップS26)、再びステップS16〜ステップS24の処理を繰り返す。
ステップS25において、その候補ベクトルが最後の候補ベクトルだった場合には、その時点で変数minvxおよび変数minvyに記憶されている候補ベクトルが、そのカレントブロックに対して検出された動きベクトルということになり、そのカレントブロックに対する処理は終了する。
【0038】
そして、そのカレントブロックが、カレントフレーム内の最後のブロックか否かを調べ(ステップS27)、最後のブロックでなければ動き検出対象のカレントブロックとして次のブロックを設定し(ステップS28)、再びステップS14〜ステップS26の処理を繰り返す。
ステップS27において、カレントブロックがカレントフレーム内の最後のブロックだった場合には、そのカレントフレームに対する一連の処理を終了する(ステップS29)。
【0039】
このように、本実施の形態の動き検出装置および方法においては、カレントブロックとリファレンスブロックの間の対応する画素同士の演算により候補ベクトルに対する評価値を求める前に、まずそのカレントブロックおよびリファレンスブロックの単純なブロック内画素値総和に基づいて、求める評価値が既に検出されている評価値より小さくなるか否かを調べており、最小評価値となる可能性のある場合のみ実際に評価値を求めるようにしている。
したがって、入れ子状態になって処理量の多い画素同士の演算に入る前にある程度の判断をして無意味な処理を排除しているので、従来の方法に比べて処理量が大幅に削減でき、1つのカレントブロックに対する動きベクトルの検出処理を非常に高速に行うことができる。
【0040】
さらに、本実施の形態においては、与えられたカレントフレームおよびリファレンスフレームに対して、まず最初に抽出され得る画像ブロックのブロック内画素値総和を一括して求めている。したがって、後の各カレントブロックごとの処理の時にはそのブロック内画素値総和を参照するのみでよく、ほとんど処理時間が必要なくなり、効率的に動き検出処理が行える。また、リファレンスブロックにおいては、複数のカレントブロックおよび複数の候補ベクトルに対して何度も同じリファレンスブロックが参照されることがあるが、そのような場合にもそのリファレンスブロックに対しては1度だけブロック内画素値総和を求めておけばよいので、フレーム単位の動き検出処理は、より一層高速に行える。
【0041】
なお、本発明は、本実施の形態に限られるものではなく、任意好適な改変が可能である。
たとえば、本実施の形態においては、カレントフレームおよびリファレンスフレームを各々独立したものとして説明し、各々ブロック総和を毎回求めるようにしているが、たとえば入力される画像信号がMEPG方式(Moving Picture coding Experts Groupによる高品質動画符号化方式) の信号であり、前方予測や後方予測がある場合等には、ある処理におけるカレントフレームが他のカレントフレームのリファレンスフレームとして参照される場合がある。このような場合には、一度算出したブロック総和のデータを保持しておくことにより、ブロック総和を求める回数を減らすことができ、より高速に処理することができる。このような構成にしても、本発明の範囲内であることは明らかである。
【0042】
また、本実施の形態においては、評価値を求める際にカレントブロックとリファレンスブロックの対応する画素同士の1度の演算が終了するごとに、その累算値を最小の評価値と比較するようにしていた。しかし、たとえば10画素ごとに比較を行うとか、1ライン分ごとに比較を行うとかのように、任意の間隔で行ってもよい。比較を適切なタイミングで行うことにより、より高速化を図ることができる。
また、本実施の形態においては、リファレンスフレームにおいては、1画素あるいは1ラインずつずれた全ての画像ブロックに対してブロック総和を求めるようにした。しかし、動きベクトルの探索範囲が狭く限られている場合や、予測できる場合など、全ての画像ブロックがリファレンスブロックとして参照される可能性の無い場合には、必要な画像ブロックのみブロック総和を求めればよい。
【0043】
【発明の効果】
本発明の動き検出装置およびその方法によれば、高速に動き検出を行うことができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態の動き検出装置の構成を示すブロック図である。
【図2】図1に示した動き検出装置で行われる動き検出処理を説明するためのフローチャートである。
【図3】図2に示したフローチャート中の、カレントフレームの各ブロックの総和を求める処理をより詳細に説明するためのフローチャートである。
【図4】図2に示したフローチャート中の、リファレンスフレームの各ブロックの総和を求める処理をより詳細に説明するためのフローチャートである。
【図5】ブロックマッチングアルゴリズムを説明するための図である。
【図6】従来の動き検出処理を説明するためのフローチャートである。
【図7】図6に示した処理を改善した動き検出処理を説明するためのフローチャートである。
【符号の説明】
1…動き検出装置、2…CPU、3…ROM、4…RAM
Claims (8)
- 動き検出対象の画像を分割して得られる第1の画像ブロックに対して、参照画像を参照して動きベクトルを検出する動き検出装置であって、
複数の候補ベクトルから1つの候補ベクトルを選択する候補ベクトル選択手段と、
前記第1の画像ブロックおよび前記候補ベクトル選択手段により選択された候補ベクトルに基づいて、前記参照画像上において第2の画像ブロックを抽出する参照ブロック抽出手段と、
前記第1の画像ブロックの画素値の総和と、前記第2の画像ブロックの画素値の総和との差を検出する総和差検出手段と、
前記総和差検出手段により検出された総和の差が、設定された最小評価値よりも小さい場合に、前記第1の画像ブロックと前記第2の画像ブロックの対応する画素同士の画素値の差分の絶対値の総和を、前記候補ベクトル選択手段により選択された候補ベクトルに対する評価値として検出する評価値検出手段と、
前記評価値検出手段により検出された評価値が、既に検出された評価値のなかで最小であった場合に、前記候補ベクトル選択手段により選択された候補ベクトルを記憶し、当該評価値を前記最小評価値として設定する記憶手段と、
前記記憶手段に記憶されている前記候補ベクトルを、当該第1の画像ブロックに対する動きベクトルとして出力する出力手段と
を有する動き検出装置。 - 前記動き検出対象の画像を分割して得られる複数の画像ブロックの各々に対して、前記複数の候補ベクトルを適用して前記第2の画像ブロックを決定した場合に、該第2の画像ブロックとなり得る前記参照画像上の全ての画像ブロックについて、画素値の総和を算出する参照ブロック総和算出手段と、
前記参照ブロック抽出手段により抽出された前記第2の画像ブロックに対して、前記参照ブロック総和算出手段により算出された画素値の総和を参照することにより、当該第2の画像ブロックの画素値の総和を検出する総和検出手段と
をさらに有する請求項1記載の動き検出装置。 - 前記参照ブロック総和算出手段は、前記第1の画像ブロックと同一の画素構成であり、前記参照画像上から得られる全ての画像ブロックについて、前記画素値の総和を予め求める
請求項2記載の動き検出装置。 - 前記動き検出対象の画像を分割して得られる複数の画像ブロックの各々について、画素値の総和を算出する動き検出対象ブロック総和算出手段と、
前記動き検出対象ブロック総和算出手段により算出された当該第1の画像ブロックの画素値の総和を参照することにより、当該第1の画像ブロックの画素値の総和を検出する第1の総和検出手段と
をさらに有する請求項3記載の動き検出装置。 - 動き検出対象の画像を分割して得られる第1の画像ブロックに対して、参照画像を参照して動きベクトルを検出する動き検出方法であって、
複数の候補ベクトルから1つの候補ベクトルを選択する第1の工程と、
前記第1の画像ブロックおよび前記第1の工程で選択された候補ベクトルに基づいて、前記参照画像上において第2の画像ブロックを抽出する第2の工程と、
前記第1の画像ブロックの画素値の総和と、前記第2の画像ブロックの画素値の総和との差を検出する第3の工程と、
当該第3の工程で検出された総和の差が設定された最小評価値よりも小さい場合に、前記第1の画像ブロックと前記第2の画像ブロックの対応する画素同士の画素値の差分の絶対値の総和を、前記第1の工程で選択された候補ベクトルに対する評価値として検出する第4の工程と、
当該第4の工程で検出された評価値が、前記候補ベクトル選択手段において既に選択された候補ベクトルに対して既に検出された評価値のなかで最小であった場合に、前記第1の工程で選択された候補ベクトルを記憶手段に記憶し、当該評価値を前記最小評価値として設定する第5の工程と、
前記複数の候補ベクトル全てが前記第1の工程で選択された後に、前記記憶手段に記憶されている前記候補ベクトルを、当該第1の画像ブロックに対する動きベクトルとして出力する第6の工程と
を有する動き検出方法。 - 前記動き検出対象の画像を分割して得られる複数の画像ブロックの各々に対して、前記複数の候補ベクトルに基づいて前記第2の画像ブロックを決定した場合に、該第2の画像ブロックとなり得る前記参照画像中の全ての画像ブロックについて、画素値の総和を算出する第7の工程と、
前記第1の画像ブロックおよび前記候補ベクトルが与えられたことに伴って前記第2の画像ブロックが決定された場合には、前記第2の画像ブロックの画素値の総和を参照することにより、前記第1の画像ブロックの画素値の総和との差を求める第8の工程と
をさらに有する請求項6記載の動き検出方法。 - 前記第8の工程は、
前記動き検出対象の画像を分割して得られる複数の画像ブロックの各々について、画素値の総和を求め、
前記第1の画像ブロックについて、前記第1の工程で選択された候補ベクトルにより前記第2の画像ブロックが決定された場合には、既に求めた前記第1の画像ブロックの画素値の総和を参照することにより、前記第2の画像ブロックの画素値の総和との差を求める
請求項7記載の動き検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28551896A JP3747534B2 (ja) | 1996-10-28 | 1996-10-28 | 動き検出装置とその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28551896A JP3747534B2 (ja) | 1996-10-28 | 1996-10-28 | 動き検出装置とその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10136373A JPH10136373A (ja) | 1998-05-22 |
JP3747534B2 true JP3747534B2 (ja) | 2006-02-22 |
Family
ID=17692578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28551896A Expired - Fee Related JP3747534B2 (ja) | 1996-10-28 | 1996-10-28 | 動き検出装置とその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3747534B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001145109A (ja) | 1999-11-11 | 2001-05-25 | Nec Corp | 動きベクトル検出装置 |
US7706442B2 (en) * | 2005-02-15 | 2010-04-27 | Industrial Technology Research Institute | Method for coding mode selection of intra prediction in video compression |
-
1996
- 1996-10-28 JP JP28551896A patent/JP3747534B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10136373A (ja) | 1998-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2323541C2 (ru) | Способ и устройство для выполнения высококачественного быстрого поиска прогнозируемого движения | |
US6549576B1 (en) | Motion vector detecting method and apparatus | |
KR100591470B1 (ko) | 비디오 시퀀스의 변환 검출 | |
US6418168B1 (en) | Motion vector detection apparatus, method of the same, and image processing apparatus | |
EP0624981B1 (en) | Motion vector detecting circuit | |
CN1140380A (zh) | 对视频信息预测编码的方法和装置 | |
US20060126942A1 (en) | Method of and apparatus for retrieving movie image | |
JP2009147807A (ja) | 画像処理装置 | |
JP3747534B2 (ja) | 動き検出装置とその方法 | |
JP7171322B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP5062531B2 (ja) | 画像処理装置および画像処理方法 | |
EP2362655A1 (en) | Motion-vector estimation | |
JP2787944B2 (ja) | 動き補償動ベクトル探索方法 | |
KR100200761B1 (ko) | 캠코더의 움직임 보정장치 및 방법 | |
JP2003123074A (ja) | 動物体検出装置、動物体検出方法及び動物体検出プログラム | |
US10748292B2 (en) | Image signal detection device | |
US20070153908A1 (en) | Method for processing motion image | |
JP4082664B2 (ja) | 映像検索装置 | |
US5477278A (en) | Apparatus for detecting motion of moving picture | |
KR0123077B1 (ko) | 국부 최소치를 이용한 이동량 측정 방법 및 장치 | |
KR19990056422A (ko) | 영상 이미지 탐색 방법 및 장치 | |
JP2001285874A (ja) | 動きベクトル探索装置、方法及びプログラムを記録した記録媒体 | |
CN107124611A (zh) | 一种视频帧率的转换方法和装置 | |
CN112132879A (zh) | 一种图像处理的方法、装置和存储介质 | |
JP3941900B2 (ja) | 動きベクトル検出装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050913 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051013 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051121 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091209 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |