本発明は、動画像圧縮符号化等に用いられる動きベクトルを検出する動きベクトル検出方法、動きベクトル検出装置及び動きベクトル検出用プログラムに関し、特に符号化効率の低下を抑制しつつ、動きベクトル検出に要する計算量の変動を抑制できる動きベクトル検出方法、動きベクトル検出装置及び動きベクトル検出用プログラムに関する。また、本発明は、動きベクトル検出方法を用いて画像処理を行う画像処理装置に関する。さらに、本発明は、動きベクトル検出方法を用いて画像再生を行う画像再生装置に関する。
動画像圧縮技術において、入力画像と参照画像との間でブロックマッチングを行なうことによって、動きベクトルを検出するブロックマッチング型動きベクトル検出方法が用いられる。また、ブロックマッチング型動きベクトル検出処理を行う場合、膨大な演算が必要となるため、動きベクトル検出の高速化と効率化とを行う手法が従来から多く開発されている。
例えば、動きベクトル検出処理の高速化を行う方法として、追跡型動きベクトル検出方法がある。追跡型動きベクトル検出方法では、所定の探索パターンに従って画像中の探索開始点から各探索点の評価関数を計算する。そして、探索パターン中心の探索点の評価値が最小になるまで、次の探索パターン中心を評価値が最小の探索点に移動させることにより、動きベクトルを検出する。
追跡型動きベクトル検出の例として、非特許文献1には、Diamond Search法が記載されている。図8は、非特許文献1に記載されたDiamond Search法を用いて動きベクトルを検出する場合の例を示す説明図である。図8に示す例では、まず、探索開始点を原点(0,0)とし、上下左右方向にそれぞれ1画素ずれた点(0,−1),(0,1),(−1,0),(1,0)を探索点として、動きベクトルを探索する第1ステップが行なわれる(図8(a)参照)。すなわち、これら4点における評価関数の値を計算し、評価値が最小の探索点に探索パターンの中心が移動される。
例えば、(0,−1)の探索点の評価値が最小である場合、図8(b)に示すように、探索パターンの中心点が(0,−1)に移動される。次に、第2ステップとして、第1ステップと同様に、中心点(0,−1)から上下左右方向にそれぞれ1画素ずれた点を探索点として、動きベクトルの探索が行なわれる。この場合、探索点から下方向にずらした1点(0,0)は、既に第1ステップで評価値の計算を行なっているため、第2ステップの探索では評価値の計算を行わない。そのため、探索点からそれぞれ上左右方向にずらした3点における評価関数の値(評価値)を計算する。
例えば、(−1,1)の探索点の評価値が最小である場合、図8(c)に示すように、、探索パターンの中心点が(1,−1)に移動される。さらに、第3ステップとして、第2ステップと同様に、中心点(0,−1)から上下左右方向にそれぞれ1画素ずれた点を探索点として、動きベクトルの探索が行われる。この場合、探索点から左方向にずらした1点(0,−1)は、既に第2ステップで評価値の計算を行なっているため、第3ステップの探索では評価値の計算を行わない。
以上の処理に従って、探索パターンの中心点が評価関数の値の最小値となるまで、同様の処理が繰り返し実行される。そして、最小点となった探索パターンの中心点を動きベクトルの値とする。
上記に示したDiamond Search法では、計算量を削減するために、評価関数の最小点に到達するまでのステップ回数を削減できるようにすることが重要である。そこで、非特許文献2には、動きベクトル探索の開始点の選択に重点を置き、周囲の動きベクトルから探索開始点を予測することが記載されている。そのようにすることによって、非特許文献2に記載された方法では、評価関数の最小点までの距離を短くし、ステップ回数を削減しようとしている。
非特許文献2に記載された例では、現在の入力ブロックの左方向、上方向、右上方向及び1フレーム前のブロックの動きベクトルを用い、これらの動きベクトルの位置における評価関数の値を計算する。そして、評価値が最小となった点を探索開始点とする。
また、非特許文献3では、中心点からそれぞれ上下左右方向にずらした4点のダイヤモンド形の探索パターンを用いるのではなく、6角形の探索パターンを用いる方法が記載されている。非特許文献3に記載された方法では、6角形の探索パターンを用いることによって、ステップ毎の移動量を大きくし、評価値の最小点に到達するまでのステップ回数を削減しようとしている。
また、特許文献1には、動きベクトルを探索する際の計算量の増加を抑制する方法の一例が記載されている。特許文献1に記載された方法では、4つのチェック条件を用いて動きベクトルを検出する。具体的には、条件1チェック方法として、現入力ブロックについて、中央参照ブロックが差分最小ブロックとなったか否かを判定する。また、条件2チェック方法として、入力ブロックと参照ブロックとの差分絶対値の総和の変化量が、所定の回数連続して一定値以下になったか否かを判定する。また、条件3チェック方法として、入力ブロックと参照ブロックとの差分絶対値の総和が一定値以下になったか否かを判定する。また、条件4チェック方法として、入力ブロックの動きベクトル探索回数が、割り当てられた動きベクトル探索可能回数を超えたか否かを判定する。
特許文献1に記載された追跡型動きベクトル探索方法では、上記に示した4つの条件チェック方式を設け、4つの条件のうちのいずれかをみたしたときに、動きベクトル検出処理を終了させることによって、計算量の増加を低減している。
特開2003−87799号公報(段落0031−0038、図2)
J. Y. Tham, S. Ranganath, M. Ranganath, and A. A. Kassim, "A Novel Unrestricted Center-Biased Diamond Search Algorithm for Block Motion Estimation", IEEE Transactions on Circuits and Systems for Video Technology, Vol.8, No.4, pp.369-377, August,1998.
A. M. Tourapis, O. C. Au, and M. L. Liou, "Predictive Motion Vector Field Adaptive Search Technique (PMVFAST) - Enhancing Block Based Motion Estimation", in proceedings of Visual Communications and Image Processing 2001, VCIP-2001, January, 2001.
Chun-Ho Cheung, " Novel Cross-Diamond-Hexagonal Search Algorithms for Fast Block Motion Estimation", IEEE Transactions on Multimedia, Vol.7, No.1, pp.16-22, February,2005
しかし、非特許文献2に記載された方法を用いたとしても、周囲のブロックから予測した探索開始点が評価関数の最小点から離れた位置に選択されたブロックであった場合には、ステップ回数が却って多くなってしまうことがある。特に、動きが激しい入力画像の場合には、このような最小点から離れた位置に選択されたブロックが多く出現するので、計算量が増大する。
また、非特許文献3記載された方法を用いた場合、移動量を大きくするためには、探索パターンが大きくなってしまう。そのため、探索ステップ1回における移動量分の精度の動きベクトルしか検出できず、符号化効率が低下してしまう。また、符号化効率の低下を防ぐために探索点数を増やすと、計算量が増加してしまう。
このように、非特許文献1〜非特許文献3に記載された追跡型動きベクトル検出方法では、動きベクトルを探索する際の計算量が大きく変動する。そのため、動きベクトル検出方法を用いて動きベクトルの検出を行う場合、実時間(例えば、画像再生や画像記録を行う際の実時間)でソフトウエアを用いて処理を行なうと、必要となる計算量がプロセッサ能力を超えることがある。この場合、プロセッサは実時間で動きベクトル検出処理を終了させることができないという問題が発生する。そのため、ソフトウエアを用いて動きベクトル検出処理を実時間で行なう場合、計算量の増加と変動とを抑制する必要がある。
また、追跡型動きベクトル探索手法では、動きベクトルの探索回数が一定ではない。例えば、探索開始点から評価関数の最小点までの距離が大きい場合には、動きベクトル探索のための計算量が増大する。そのため、非特許文献1〜非特許文献3に記載された従来の追跡型動きベクトル検出方法では、動きベクトル探索のための計算量が増大することがある。
また、特許文献1に記載された追跡型動きベクトル探索方法を用いれば、計算量が増加した場合の対策として終了条件を設け、途中で動きベクトルの探索を終了することによって、計算量の増加を低減することができる。しかし、動きベクトル検出のための探索を途中で打ち切るので、符号化効率が高い評価関数の最小値となる動きベクトルを検出することができない。そのため、検出される動きベクトルの精度が低下し、符号化効率が低下してしまうことがある
そこで、本発明は、符号化効率の低下を抑制しつつ、計算量の変動を低減できる動きベクトル検出方法、動きベクトル検出装置、画像処理装置、画像再生装置及び動きベクトル検出用プログラムを提供することを目的とする。
本発明による動きベクトル検出方法は、入力画像と参照画像との間でブロックマッチングを行うことによって動きベクトルを検出する動きベクトル検出方法において、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量を算出する計算量算出ステップと、処理に必要となる計算量と得られる動きベクトルの精度とが相互に異なる複数のブロックマッチング演算処理の中から、求めた許容計算量に応じて1つのブロックマッチング演算処理を選択するブロックマッチング選択ステップとを含むことを特徴とする。
また、動きベクトル検出方法は、ブロックマッチング選択ステップで、画像の1マクロブロック単位でブロックマッチング演算処理を選択するものであってもよい。
また、動きベクトル検出方法は、計算量算出ステップで、ブロックマッチング探索において、1つ前に実行したブロックマッチングにおける探索回数を用いて許容計算量を求めるものであってもよい。
また、動きベクトル検出方法は、ブロックマッチング選択ステップで、ブロックマッチングにおけるステップ毎に探索パターンの移動速度を大きくしていくことによってブロックマッチングを行うブロックマッチング演算処理を少なくとも1つ含む複数のブロックマッチング演算処理の中から、1つのブロックマッチング演算処理を選択するものであってもよい。
また、動きベクトル検出方法は、ブロックマッチング選択ステップで、入力画像の入力ブロックと参照画像の参照ブロックとの画素のうち、代表画素だけをブロックマッチングの対象としてブロックマッチングを行うブロックマッチング演算処理を少なくとも1つ含む複数のブロックマッチング演算処理の中から、1つのブロックマッチング演算処理を選択するものであってもよい。
また、動きベクトル検出方法は、選択したブロックマッチング演算処理を実行して、動きベクトルを検出する動きベクトル検出ステップを含むものであってもよい。
本発明による動きベクトル検出装置は、入力画像と参照画像との間でブロックマッチングを行うことによって動きベクトルを検出する動きベクトル検出装置(例えば、GPU等の画像処理回路)であって、処理に必要となる計算量と得られる動きベクトルの精度とが相互に異なるブロックマッチング演算処理を行う複数のブロックマッチング演算装置(例えば、ブロックマッチング演算装置102によって実現される)と、複数のブロックマッチング演算装置の中から、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量に応じて、1つのブロックマッチング演算装置を選択するブロックマッチング演算選択装置(例えば、ブロックマッチング演算選択装置101によって実現される)とを備えたことを特徴とする。
また、動きベクトル検出装置において、ブロックマッチング演算選択装置は、画像の1ブロック単位でブロックマッチング演算装置の選択を行ない、1つ前に実行したブロックマッチングにおける探索回数を用いて許容計算量を求め、ブロックマッチング演算装置のうちの少なくとも1つは、ブロックマッチングにおけるステップ毎に探索パターンの移動速度を大きくしていくことによってブロックマッチングを行い、ブロックマッチング演算装置のうちの少なくとも1つは、入力画像の入力ブロックと参照画像の参照ブロックとの画素のうち、代表画素だけをブロックマッチングの対象としてブロックマッチングを行うものであってもよい。
本発明による画像処理装置は、入力画像と参照画像との間でブロックマッチングを行うことによって動きベクトルを検出し、検出した動きベクトルを用いて画像を処理する画像処理装置(例えば、パーソナルコンピュータ等の情報処理装置)であって、処理に必要となる計算量と得られる動きベクトルの精度とが相互に異なるブロックマッチング演算処理を行う複数のブロックマッチング演算装置と、複数のブロックマッチング演算装置の中から、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量に応じて、1つのブロックマッチング演算装置を選択するブロックマッチング演算選択装置とを備えたことを特徴とする。
本発明による画像再生装置は、入力画像と参照画像との間でブロックマッチングを行うことによって動きベクトルを検出し、検出した動きベクトルを用いて画像を再生する画像再生装置(例えば、ビデオレコーダやDVDレコーダ)であって、処理に必要となる計算量と得られる動きベクトルの精度とが相互に異なるブロックマッチング演算処理を行う複数のブロックマッチング演算装置と、複数のブロックマッチング演算装置の中から、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量に応じて、1つのブロックマッチング演算装置を選択するブロックマッチング演算選択装置とを備えたことを特徴とする。
本発明による動きベクトル検出用プログラムは、入力画像と参照画像との間でブロックマッチングを行ううことによって動きベクトルを検出するための動きベクトル検出用プログラムであって、コンピュータに、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量を算出する処理と、複数のブロックマッチング演算処理の中から、求めた許容計算量に応じて1つのブロックマッチング演算処理を選択する処理と、選択したブロックマッチング演算処理を実行して、動きベクトルを検出する処理とを実行させるためのものである。
上記のような構成を採用し、ブロックマッチング演算選択装置が使用可能な演算量に応じて、最も高符号化効率のブロックマッチング演算装置を選択することにより、符号化効率の低下を抑制しつつ、計算量の変動を低減できるようにするという本発明の目的を達成することができる。
本発明によれば、複数のブロックマッチング演算処理のうち、許容計算量に応じて1つのブロックマッチング演算処理を選択する。許容計算量に応じて最適なブロックマッチング演算処理を選択できるので、ブロックマッチング探索を途中で打ち切ることなく、動きベクトルの探索を最後まで行なうことができる。従って、符号化効率の低下を抑制しつつ、動きベクトル検出に要する計算量の変動を低減することができる。
また、本発明によれば、最適なブロックマッチング演算処理を選択でるので、動きベクトルの探索を速く終了できる。そのため、動きベクトル検出に要する平均計算量を削減することができる。
以下、本発明の実施の形態について図面を参照して説明する。図1は、本発明による動きベクトル検出装置の構成の一例を示すブロック図である。図1に示すように、動きベクトル検出装置100は、は、ブロックマッチング演算選択装置101と、複数のブロックマッチング演算装置102−1〜102−nと、入力画像メモリ103と、参照画像メモリ104と、使用計算量保存メモリ105を含む。
なお、動きベクトル検出装置100は、具体的には、コンピュータ(中央処理装置;プロセッサ;データ処理装置)及びメモリ等の記憶装置によって実現される。また、以下、複数のブロックマッチング演算装置102−1〜102−nを包括的に表現する場合、または、いずれかのブロックマッチング演算装置102−1〜102−nを指す場合に、単にブロックマッチング演算装置102とも表現する。
本実施の形態において、動きベクトル検出装置100は、例えば、動画処理を行う画像処理回路(例えば、GPU)として適用される。また、動きベクトル検出装置100は、例えば、動画処理を行う画像処理装置に適用される。この場合、動きベクトル検出装置100を用いた画像処理装置は、例えば、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。また、動きベクトル検出装置100は、例えば、画像処理技術を用いて画像再生や画像記録を行うビデオレコーダやDVDレコーダ等の画像再生装置や画像記録装置に適用される。
ブロックマッチング演算選択装置101は、具体的には、プログラムに従って動作するコンピュータによって実現される。マッチング演算選択装置101は、使用計算量保存メモリ105から、使用計算量を読み出す機能を備える。また、ブロックマッチング演算選択装置101は、読み出した計算量を用いて、複数のマッチング演算装置102の中から、1つのマッチング演算装置を選択する機能を備える。すなわち、ブロックマッチング演算選択装置101は、複数のブロックマッチング演算装置102のうち、動きベクトル検出におけるブロックマッチングに用いるブロックマッチング演算装置102を決定する。
複数のマッチング装置102は、それぞれ、具体的には、プログラムに従って動作するコンピュータによって実現される。各ブロックマッチング演算装置102は、符号化対象となる入力画像のブロックと参照画像のブロックとのブロックマッチングを行なう機能を備える。この場合、各ブロックマッチング演算装置102は、相互に異なるマッチング方法を用いて、入力画像と参照画像とのブロックマッチングを行う。また、ブロックマッチング演算装置102は、入力画像と参照画像とのブロックマッチングを行うと、ブロックマッチングの計算に要した計算量を求める機能を備える。また、ブロックマッチング演算装置102は、求めた計算量を使用計算量保存メモリ105に記憶させる機能を備える。
入力画像メモリ103は、具体的には、メモリ等の記憶装置によって実現される。入力画像メモリ103は、符号化対象となる入力画像のブロックを保存する。なお、入力画像メモリ103が記憶する入力画像は、ブロックマッチングが必要なときにブロックマッチング演算装置102によって読み出される。
参照画像メモリ104は、具体的には、メモリ等の記憶装置によって実現される。参照画像メモリ104は、符号化対象となる入力画像のブロックとブロックマッチングを行なうために必要となる参照画像(例えば、過去に入力した画像)を保存する。なお、参照画像メモリ104が記憶する参照画像は、ブロックマッチングが必要なときにブロックマッチング演算装置102によって読み出される。
使用計算量保存メモリ105は、具体的には、メモリ等の記憶装置によって実現される。使用計算量保存メモリ105は、現在の入力画像のブロックにおいてブロックマッチングに要した計算量を保存する。なお、使用計算量保存メモリ105が記憶する計算量(以下、マッチング計算量ともいう)は、ブロックマッチングの処理が行われたときにブロックマッチング演算装置102によって書き込まれる。また、使用計算量保存メモリ105が記憶するマッチング計算量は、次のブロックマッチングの際に、ブロックマッチングで許容される計算量の評価値として利用される。
なお、動きベクトル検出装置100や、動きベクトル検出装置100を用いた画像処理装置、画像再生装置、画像記録装置の記憶装置(例えば、メモリや磁気ディスク装置)は、入力画像と参照画像とのブロックマッチングを行って動きベクトルを検出するための各種プログラムを記憶している。例えば、動きベクトル検出装置100や画像処理装置、画像再生装置、画像記録装置の記憶装置は、コンピュータに、ブロックマッチング演算処理を行う際に許容される計算量である許容計算量を算出する処理と、複数のブロックマッチング演算処理の中から、求めた許容計算量に応じて1つのブロックマッチング演算処理を選択する処理と、選択したブロックマッチング演算処理を実行して、動きベクトルを検出する処理とを実行させるための動きベクトル検出用プログラムを記憶している。
次に、動作について説明する。図2は、動きベクトル検出装置が入力画像と参照画像とのブロックマッチングを行って動きベクトルを検出する動きベクトル検出処理の一例を示す流れ図である。なお、図2に示す動きベクトル検出処理は、例えば、画像再生を行う際や画像記録を行う際に、動きベクトル検出装置100によって実行される。
動きベクトル検出処理において、ブロックマッチング演算選択装置101は、まず、使用計算量保存メモリ105が記憶するマッチング計算量(前回のマッチング処理で要した計算量)を読み出す。ブロックマッチング演算選択装置101は、使用計算量保存メモリ105から計算量を読み出すことによって、現ブロックにおけるマッチング処理で使用可能な計算量を得る(ステップS11)。なお、この場合、ブロックマッチング演算選択装置101は、読み出したマッチング計算量に所定の演算を施すことによって、現ブロックにおけるマッチング処理で使用可能な計算量(許容計算量)を算出してもよい。
ブロックマッチング演算選択装置101は、ステップS11で得た使用可能な計算量に基づいて、複数のブロックマッチング演算装置102のうち、ブロックマッチングに最適なブロックマッチング演算装置102を1つ選択する(ステップS12)。なお、具体的には、動きベクトル検出装置100を実現するコンピュータが、複数のマッチング方法のうち、入力画像と参照画像とのブロックマッチングに用いる1つのマッチング方法を選択する。
例えば、動きベクトル検出装置は、処理に必要となる計算量とブロックマッチング演算装置102とを対応付けた対応テーブルを予めメモリ等の記憶装置に記憶している。この場合、ブロックマッチング演算選択装置101は、対応テーブルに含まれる計算量のうち、ステップS11で得た計算量に合致する計算量を特定する。そして、ブロックマッチング演算選択装置101は、対応テーブルに含まれるブロックマッチング演算装置102のうち、特定した計算量に対応するブロックマッチング演算装置102を選択する。
ステップS12において、ブロックマッチング演算選択装置101は、例えば、使用可能な計算量が大きい場合には、高精度にブロックマッチングを行うブロックマッチング演算装置102を選択する。また、ブロックマッチング演算選択装置101は、例えば、使用可能な計算量が小さい場合には、処理内容がより簡略化され計算量が少なくて済むブロックマッチングを行うブロックマッチング演算装置102を選択する。
次に、ブロックマッチング演算選択装置101によって選択されたブロックマッチング装置102に、入力画像メモリ103から入力画像が転送される。すなわち、ブロックマッチング演算装置102は、ブロックマッチング演算選択装置101によって選択されると、入力画像メモリ103から入力画像を読み込む(ステップS13)。
さらに、ブロックマッチング演算選択装置101によって選択されたブロックマッチング装置102に、ブロックマッチングで必要となる参照画像が参照画像メモリ104から転送される。すなわち、ブロックマッチング演算装置102は、ブロックマッチング演算選択装置101によって選択されると、参照画像メモリ104から参照画像を読み込む(ステップS14)。
ブロックマッチング演算装置102は、読み込んだ入力画像と参照画像とのブロックマッチング演算を行ない、所定のマッチング方法を用いて動きベクトルを検出する(ステップS15)。また、ブロックマッチング演算装置102は、ブロックマッチング演算に要した所要計算量(マッチング計算量)を算出する。
そして、ブロックマッチング演算装置102は、使用計算量保存メモリ105に、算出した所要計算量(マッチング計算量)を保存させる(ステップS16)。また、ブロックマッチング演算装置102は、算出した動きベクトルを出力する。この場合、例えば、ブロックマッチング演算装置102は、画像再生や画像記録を行うプログラムに、算出した動きベクトルを渡す。そして、動きベクトル検出装置100が求めた動きベクトルに基づいて、画像再生や画像記録の処理が行われることになる。
以上のように、本実施の形態によれば、動きベクトル検出装置100は、ブロックマッチングの処理に使用可能な計算量に応じて、複数のブロックマッチング演算装置102のうち、最適なブロックマッチング演算装置102を選択する。そして、動きベクトル検出装置100は、選択したブロックマッチング演算装置102を用いて、ブロックマッチング演算を行い動きベクトルを検出する。従って、符号化効率の低下を防ぎつつ、計算量の変動を低減して、動きベクトルを検出することができる。
次に、動きベクトル検出装置100のより具体的な動作を説明する。まず、動きベクトル検出装置100のブロックマッチング演算選択装置101の具体的な動作を説明する。図3は、ブロックマッチング演算選択装置101が行うブロックマッチング演算装置102のマッチング選択処理の具体例を示す流れ図である。
ブロックマッチング演算選択装置101は、例えば、図3に示すように、まず、使用計算量保存メモリ105からマッチング計算量を読み出し、使用可能な計算量を算出する(ステップS21)。
ブロックマッチング演算選択装置101は、求めた使用可能な計算量が所定の範囲(以下、単に中程度ともいう)である場合、所定レベルの精度(以下、単に通常の精度ともいう)及び所定の計算量(以下、単に中程度の計算量ともいう)で、動きベクトルを求めるブロックマッチング演算を選択する。
また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より小さければ、通常の精度より精度が落ちるものの中程度より少なくて済む計算量で、動きベクトルの検出処理を終了するブロックマッチング演算を選択する。
また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より大きければ、通常処理(中程度)よりも計算量が大きくなるものの通常の精度より高精度で、動きベクトルを求めるブロックマッチング演算を選択する(ステップS22)。
以上のように、ブロックマッチング演算選択装置101は、計算量に応じてブロックマッチング演算を選択する。そのため、非特許文献1〜非特許文献3に記載された従来技術では計算量が増大する場合であっても、途中で処理を打ち切ることなく、評価関数の最小点まで動きベクトルの探索を行なえる。従って、符号化効率の低下を防ぎつつ、計算量が増大することを防ぐことができる。
また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチングの選択を行なう処理単位を、ブロックマッチングの1ステップ単位で行なう装置であってもよい。図4は、ブロックマッチング演算装置102の選択をブロックマッチングのステップ単位で行う場合のマッチング選択処理の具体例を示す流れ図である。
具体的には、図4に示すように、ブロックマッチング演算選択装置101は、まず、入力画像上の探索ブロックの探索位置を更新する(ステップS31)。次に、ブロックマッチング演算選択装置101は、使用計算量保存メモリ105からマッチング計算量を読み出し、1ステップの探索で使用可能な計算量を算出する(ステップS32)。
ブロックマッチング演算選択装置101は、求めた使用可能な計算量が中程度である場合、通常の精度及び中程度の計算量で、動きベクトルを求めるブロックマッチング演算を選択する。また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より小さければ、通常の精度より精度が落ちるものの中程度より少なくて済む計算量で、動きベクトルの検出処理を終了するブロックマッチング演算を選択する。また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より大きければ、通常処理(中程度)よりも計算量が大きくなるものの通常の精度より高精度で、動きベクトルを求めるブロックマッチング演算を選択する(ステップS33)。
次に、ブロックマッチング演算選択装置101は、このステップにおける探索終了判断において探索終了と判断すれば(評価値が最小となる点が求まると)、このブロックにおける探索を終了する(ステップS34)。また、ブロックマッチング演算選択装置101は、探索が終了していないと判断すると、ステップS31に戻って探索位置を更新し探索を継続する。すなわち、ブロックマッチング演算選択装置101は、探索が終了したと判断するまで、ステップS31〜S34の処理を繰り返し実行する。なお、この場合、ブロックマッチング演算選択装置101は、この1ステップの探索で求めた計算量を利用して、次のステップにおけるブロックマッチング演算装置102の選択を行う。
また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチングの選択を行なう処理単位を、1画面単位で行なう装置であってもよい。図5は、ブロックマッチング演算装置102の選択を画面単位で行う場合のマッチング選択処理の具体例を示す流れ図である。
具体的には、図5に示すように、ブロックマッチング演算選択装置101は、まず、使用計算量保存メモリ105からマッチング計算量を読み出し、入力画面における使用可能な計算量の算出を行なう(ステップS41)。次に、ブロックマッチング演算選択装置101は、入力画像上の探索ブロックの探索位置の更新を行なう(ステップS42)。
ブロックマッチング演算選択装置101は、ステップS41で求めた使用可能な計算量が中程度である場合、通常の精度及び中程度の計算量で、動きベクトルを求めるブロックマッチング演算を選択する。また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より小さければ、通常の精度より精度が落ちるものの中程度より少なくて済む計算量で、動きベクトルの検出処理を終了するブロックマッチング演算を選択する。また、ブロックマッチング演算選択装置101は、使用可能な計算量が中程度より大きければ、通常処理(中程度)よりも計算量が大きくなるものの通常の精度より高精度で、動きベクトルを求めるブロックマッチング演算を選択する(ステップS43)。
次に、ブロックマッチング演算選択装置101は、入力画像(動画像)の1画面分の探索処理を終了したか否か判断する(ステップS44)。1画面分の探索が終了していなければ、ブロックマッチング演算選択装置101は、探索を終了し、ステップS42に戻って探索位置を更新する。そして、ブロックマッチング演算選択装置101は、ステップS42〜S44の処理を繰り返し実行し、再度同じブロックマッチング演算を用いて探索を行なう。
次に、ブロックマッチング処理を行う際の使用可能な計算量を算出する具体的な算出方法を説明する。ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1マクロブロック単位で行なう場合に、前回のブロックマッチングで用いたステップ回数に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1画面単位で行なう場合に、前画面で用いたステップ回数に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。
また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1マクロブロック単位で行なう場合に、入力マクロブロックの平滑さに基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1画面単位で行なう場合に、入力画像の平滑さに基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。
また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1ステップ単位で行なう場合に、ブロックマッチング処理における前ステップまでに用いたステップ回数に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。また、ブロックマッチング演算選択装置101は、例えば、ブロックマッチング処理を1ステップ単位で行なう場合に、ブロックマッチング処理の2ステップ前における評価関数値の最小値と1ステップ前における評価関数値の最小値との差分に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。
また、ブロックマッチング演算選択装置101は、例えば、ブロック単位でブロックマッチング演算の選択を行なう場合において、前回のブロックマッチングにおける探索開始点から評価関数の最小点までの距離に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。また、ブロックマッチング演算選択装置101は、例えば、ブロック単位でブロックマッチング演算の選択を行なう場合において、周囲ベクトルにおける探索ステップ数に基づいて、ブロックマッチング処理に使用可能な計算量をを算出する算出装置であってもよい。また、ブロックマッチング演算選択101は、例えば、1画面単位でブロックマッチング演算の選択を行なう場合において、前1画面における探索開始点から評価関数の最小点までの距離の総和に基づいて、ブロックマッチング処理に使用可能な計算量を算出する装置であってもよい。
次に、ブロックマッチング演算装置102の具体的な動作を説明する。複数のブロックマッチング演算装置102は、例えば、1回の探索に必要となる計算量そのものを削減するために、入力ブロックと参照ブロックとの画素のうち、代表画素だけをブロックマッチングの対象とする装置であってもよい。図6は、8×8画素のブロックから4×4画素だけを抽出してブロックマッチングを行なう場合の例を示す説明図である。図6に示すように、ブロックマッチング演算装置102は、入力画像と参照画像との代表画素だけを対象としてブロックマッチング処理を行ってもよい。
また、複数のブロックマッチング演算装置102の中のいずれか1つのブロックマッチング演算装置102は、例えば、図8に示したDiamond Search法を用いてブロックマッチング処理を行う装置であってもよい。
また、複数のブロックマッチング演算装置102の中のいずれか1つのブロックマッチング演算装置102は、図7に示すように、1回の探索を行なう毎に、探索パターンを拡大(中心点から探索点までの距離を長く)する装置であってもよい。そのようにすることによって、ブロックマッチング演算装置102は、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させることができる。
具体的には、探索開始点を原点(0,0)とすると、ブロックマッチング演算装置102は、上下左右方向にそれぞれ1画素ずれた点(0,−1),(0,1),(−1,0),(0,1)を探索点として探索を行う(図7(a)参照)。ブロックマッチング演算装置102は、これら探索点4点における評価関数の値を計算し、評価値が一番小さい探索点に探索パターンの中心を移動する。例えば、探索点(0,−1)の評価値が一番小さい場合、ブロックマッチング演算装置102は、探索パターンの中心点を(0,−1)に移動する。
また、ブロックマッチング演算装置102は、次のステップの探索において、上下左右方向にそれぞれ2画素ずれた点を探索点とする探索パターンを用いて探索を行う(図7(b)参照)。さらに、ブロックマッチング演算装置102は、次のステップの探索において、上下左右方向にそれぞれ3画素ずれた点を探索点とする探索パターンを用いて探索を行う(図7(c)参照)。以上の処理に従って、ブロックマッチング演算装置102は、探索パターンの中心点が評価関数の値の最小値になるまで、同様の処理を繰り返し実行する。そして、ブロックマッチング演算装置102は、評価関数の値が最小となった位置に基づいて動きベクトルを求める。
また、複数のブロックマッチング演算装置102の中のいずれか1つのブロックマッチング演算装置102は、1回の探索を行なう毎に、探索パターンを拡大・縮小する装置であってもよい。
また、複数のブロックマッチング演算装置102の中のいずれか1つのブロックマッチング演算装置102は、1回の探索を行なう毎に、探索パターンを拡大・縮小し、その拡大・縮小の選択を前回のステップでの評価関数の最小値と今回のステップでの評価関数の最小値との差分から求める装置であってもよい。
また、動きベクトル検出装置100は、上記に示した各具体例に種々の変更を加えたり、追加したり、又は組合わせたものであってもよい。例えば、複数のブロックマッチング演算装置102の中の1つは、図7に示すように、1回の探索を行なう毎に探索パターンを拡大し、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させた装置であるとする。この場合、ブロックマッチング演算選択装置101は、ブロックマッチング処理をブロック単位で行なう場合に、前回のブロックマッチングで用いたステップ回数に基づいて、使用可能な計算量を算出する装置であってもよい。
また、例えば、複数のブロックマッチング演算装置102の中の1つは、図7に示すように、1回の探索を行なう毎に探索パターンを拡大し、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させた装置であるとする。この場合、複数のブロックマッチング演算装置102の中の他の1つは、1回の探索を行なう毎に探索パターンを拡大し、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させるとともに、入力ブロックと参照ブロックとの画素のうち代表画素だけをブロックマッチングの対象とする装置であってもよい。
また、例えば、複数のブロックマッチング演算装置102の中の1つは、図7に示すように、1回の探索を行なう毎に探索パターンを拡大し、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させた装置であるとする。この場合、複数のブロックマッチング演算装置102の中の他の1つは、1回の探索を行なう毎に探索パターンを拡大し、探索開始点から評価関数の最小点まで移動する際の移動加速度を向上させるとともに、入力ブロックと参照ブロックとの画素のうち代表画素だけをブロックマッチングの対象とする装置であってもよい。また、ブロックマッチング演算選択装置101は、ブロックマッチング処理をブロック単位で行なう場合に、前回のブロックマッチングで用いたステップ回数に基づいて、使用可能な計算量を算出する装置であってもよい。
本発明は、動画処理を行う画像処理回路(例えば、GPU)として適用される。また、パーソナルコンピュータ等を用いて動画処理を行う画像処理装置に適用可能できる。また、画像処理技術を用いて画像再生や画像記録を行うビデオレコーダやDVDレコーダ等の画像再生装置又は画像記録装置にも適応可能である。
本発明による動きベクトル検出装置の構成の一例を示すブロック図である。
動きベクトル検出装置が入力画像と参照画像とのブロックマッチングを行って動きベクトルを検出する動きベクトル検出処理の一例を示す流れ図である。
ブロックマッチング演算選択装置が行うブロックマッチング演算装置102のマッチング選択処理の具体例を示す流れ図である。
ブロックマッチング演算装置の選択をブロックマッチングのステップ単位で行う場合のマッチング選択処理の具体例を示す流れ図である。
ブロックマッチング演算装置の選択を画面単位で行う場合のマッチング選択処理の具体例を示す流れ図である。
8×8画素のブロックから4×4画素だけを抽出してブロックマッチングを行なう場合の例を示す説明図である。
1回の探索を行なう毎に探索パターンを拡大してブロックマッチングを行なう場合の例を示す説明図である。
Diamond Search法を用いて動きベクトルを検出する場合の例を示す説明図である。
符号の説明
100 動きベクトル検出装置
101 ブロックマッチング演算選択装置
102 ブロックマッチング演算装置
103 入力画像メモリ
104 参照画像メモリ
105 使用計算量保存メモリ