JP2008053875A - 画像処理装置および方法、プログラム、並びにプログラム格納媒体 - Google Patents
画像処理装置および方法、プログラム、並びにプログラム格納媒体 Download PDFInfo
- Publication number
- JP2008053875A JP2008053875A JP2006226016A JP2006226016A JP2008053875A JP 2008053875 A JP2008053875 A JP 2008053875A JP 2006226016 A JP2006226016 A JP 2006226016A JP 2006226016 A JP2006226016 A JP 2006226016A JP 2008053875 A JP2008053875 A JP 2008053875A
- Authority
- JP
- Japan
- Prior art keywords
- resolution
- image
- pixel
- pixels
- corresponding point
- 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.)
- Withdrawn
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】動きベクトルを高速に安定的に求められるようにする。
【解決手段】多重解像度化部31は、入力画像を複数の解像度の画像に変換し、多重解像度画像バッファ32−1は、複数の解像度に変換された第1のタイミングの第1の画像を蓄積し、多重解像度画像バッファ32−2は、複数の解像度に変換された第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積し、対応点探索部33は、第1の解像度の第2の画像の各画素と第1の解像度の第1の画像の各画素との対応点を探索し、対応点動きベクトルバッファ34に格納し、格納された第1の解像度の対応点情報に基づいて、第1の解像度よりも高解像度の第2の解像度の第2の画像の各画素と第2の解像度の第1の画像の各画素との対応点を探索し、順次繰り返す。本発明は、撮像装置に適用することができる。
【選択図】図4
【解決手段】多重解像度化部31は、入力画像を複数の解像度の画像に変換し、多重解像度画像バッファ32−1は、複数の解像度に変換された第1のタイミングの第1の画像を蓄積し、多重解像度画像バッファ32−2は、複数の解像度に変換された第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積し、対応点探索部33は、第1の解像度の第2の画像の各画素と第1の解像度の第1の画像の各画素との対応点を探索し、対応点動きベクトルバッファ34に格納し、格納された第1の解像度の対応点情報に基づいて、第1の解像度よりも高解像度の第2の解像度の第2の画像の各画素と第2の解像度の第1の画像の各画素との対応点を探索し、順次繰り返す。本発明は、撮像装置に適用することができる。
【選択図】図4
Description
本発明は、画像処理装置および方法、プログラム、並びにプログラム格納媒体に関し、特に、動きベクトルを画素単位で高速に、かつ、安定して抽出できるようにした画像処理装置および方法、プログラム、並びにプログラム格納媒体に関する。
動画像中の物体の動きを求める手段や画像間の対応を求める手段としてブロックマッチングがある。
これは、例えば、図1で示されるように、再生されるタイミングが連続した2つの画像PA,PB(画像PAが再生された後に画像PBが再生される)が与えられたとき、画像PA上のある画素p1(または画像領域)が画像PB上の、どの画素に(またはどの画像領域に)「対応」するかを、画素p1近傍の画素からならるブロックで検索し、対応位置の画素p2を特定する処理である。尚、図1においては、Sbは、マッチングブロックのサイズSb×Sbの1辺の画素数を示したものであり、Ssは、マッチングブロックを移動させる範囲、すなわち、探索範囲を示す探索範囲Ss×Ssの1辺の画素数を示したものである。
また、図2で示されるように、特に、動画において時間的に連続したフレーム画像B2,B1,CF,F1,F2とする場合、上述の「対応」は、フレーム画像CF上の画素p1およびフレーム画像F1上の画素p2に基づいて、v1=p2-p1を求めれば画素p1を起点とする二次元の動きベクトルv1という形で表現することができる。尚、図2においては、フレームB2,B1,CF,F1,F2の順序で時間方向に配置されており、実線で囲まれ、水平方向および垂直方向に点線が入ったマスが画素を示しており、特に各マスの点線の交点部分が画素中心を示している。
ブロックマッチングは画像処理の幅広い分野で重要な基礎技術として利用されており、例えば、高ダイナミックレンジ化、ノイズ削減、手ぶれ防止、フレーム挿入などに応用されている(特許文献1参照)。
ところで、近年の画像処理技術は、ブロックサイズを小さくし大局的なオブジェクトの構造および動特性を配慮することにより、さらなる圧縮率の向上を狙う傾向にある。また、撮像素子の解像度が上がったため、データ量が増え、フレームあたりの処理時間を下げることが一層困難になってきている。ここで、画素単位でブロックマッチングに必要な計算量を考えてみる。
すなわち、図1で示されるように参照画像PAと目的画像PBの2枚からオプティカルフローを求める。
ここで、画像解像度は、画像PA,PBともに、W×H = W×(Ar×W)(Arはアスペクト比)であり、マッチングブロックサイズは、Sb×Sb=(Kb×W)×(Kb×W)であり、ブロック可動範囲(探索範囲)はSs×Ss=(Ks×W)×(Ks×W)であり、Sb<<MIN(W,H)かつSS<<MIN(W,H)であり、ブロックマッチングにおけるブロック間のマッチングの評価は、e(p1,p2)=Σ(dyが−Sb/2乃至Sb/2)Σ(dxが−Sb/2乃至Sb/2)Diff(C1(x1+dx,y1+dy),C(x2+dx,y2+dy))であるものとする。尚、MIN(W,H)は、WまたはHのいずれか小さい方の値を取る関数を示している。
さらに、C(x,y)は座標p={x,y}における輝度値を表す。またDiff(C,C’)は輝度値CとC’の非類似度を表す関数で、たとえば二乗誤差などがよく使われる。また各添字はフレーム番号に対応する。
さらに、Tcは、1画素同士のマッチング計算f(C,C’)にかかる時間(データ転送も含む)であるものとする。
これらの条件のもとで、全探索をかける場合、計算時間Tは、T=W×H×Sb×Sb×Ss×Ss×Tc=Ar×Ks^2×Kb^2×W^6×Tcと概算でき、Wの6乗に比例する計算量となる。
例えば、マッチングブロックサイズを固定したとしてもWの4乗に比例する計算量である。これではSD(Standard Definition)画質の6倍の画素数を持つHD(High Definition)画質の動画を処理すると最悪の場合、(√6)^6=216倍(「^」はべき乗を示している)の時間がかかることになる。さらに、昨今はカメラの撮像素子の画素サイズが小さくなった分、相対的に低感度となり、その影響で暗ノイズが増える傾向にある。そのため暗い環境で撮影された画像では、ブロックマッチングが破綻し、ロバスト性を低下させる可能性が高い。また、さらに高フレームレート化し、より動特性の高い画像を得ようとすると、フレームあたりの光量が減り、必然的に暗ノイズが増え、一層ロバスト性を低下させることとなり、さらにデータ量が増大することにより処理時間が一層増す。結果として、処理時間を短縮させることは、一層困難なものとなりつつある。
そこで、これらの問題を解決するため、従来においては、専用計算ハードウェアを使用したり、探索範囲を限定した計算(Lucas-Kanade法やエピポーラの使用)を行ったり、上述の手法で一部の代表点だけ計算した後で必要な部分を補間するようにしたり、入力画像を多重解像度化して計算したり、入力画像を十分に高画質化した後でマッチングを計算したり、さらには、撮像素子を改良するといった方法のいずれか1つを用いるか、あるいは複数に組み合わせることで解決を図る試みが続けられてきた。
これらの試行の一つとして、与えられた画像から徐々に解像度を低くしていった画像群、いわゆる画像ピラミッドを使う方法が提案されている。画像ピラミッドは、入力画像を低解像度化する処理が繰り返されることで生成される複数の解像度の画像群である。入力画像を低解像度化する場合、複数の画素を平均化する平均化フィルタのようなローパスフィルタが用いられ、低解像度レベルの画像から処理を開始し、徐々に高解像度レベルの画像に切り替えながら画素間の対応の計算を高精度化してゆく。この方法が用いられることによりマッチングブロックサイズと探索範囲とは、大幅に小さくすることが可能となり、結果として、処理の高速化が可能になる。例えば1280×960の画像を倍数1/4で低解像度化して、7種類の画像から構成される画像ピラミッドを考える。
すなわち、解像度レベル(0)では解像度を1280×960とし、解像度レベル(0)相当の探索範囲Ss×Ssを196×196とし、解像度レベル(0)相当のマッチングブロックサイズSb×Sbを196×196とすると、検査回数は、1280×960×196^4となる。
これに対して、解像度レベル(0)では解像度を640×480となり、解像度レベル(0)相当の探索範囲Ss×Ssは96×96となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは96×96となるので、検査回数は、解像度レベル(0)での1/2^4倍となる。
また、解像度レベル(2)では解像度を320×240となり、解像度レベル(0)相当の探索範囲Ss×Ssは48×48となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは48×48となるので、検査回数は、解像度レベル(0)での1/2^8倍となる。
さらに、解像度レベル(3)では解像度を160×120となり、解像度レベル(0)相当の探索範囲Ss×Ssは24×24となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは24×24となるので、検査回数は、解像度レベル(0)での1/2^12倍となる。
また、同様に、解像度レベル(4)では解像度を80×60となり、解像度レベル(0)相当の探索範囲Ss×Ssは12×12となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは12×12となるので、検査回数は、解像度レベル(0)での1/2^16倍となる。
さらに、同様に、解像度レベル(0)では解像度を40×30となり、解像度レベル(0)相当の探索範囲Ss×Ssは6×6となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは6×6となるので、検査回数は、解像度レベル(0)での1/2^20倍となる。
また、同様に、解像度レベル(6)では解像度を20×15となり、解像度レベル(0)相当の探索範囲Ss×Ssは3×3となり、解像度レベル(0)相当のマッチングブロックサイズSb×Sbは3×3となるので、検査回数は、解像度レベル(0)での1/2^24倍(=20×15×3^4)となる。
このとき解像度レベル(0)で大きなSsとSbを設定したとしても解像度レベル(6)では相対的に非常に小さなW,H,Ss,Sbでよいため、結果的に計算量を小さくすることが可能となる。より具体的には、例えば、Ss=Sb=196としても、解像度レベル(6)では高々3×3画素の検索範囲でしかも高々3×3画素のマッチングブロックを用いた処理を高々20×15点で調べればよい。
また、低解像度でのオブジェクト構造概形からスタートして徐々に詳細化してゆくので、動きベクトル同士の関係構造を崩さず、動力学的にそれぞれの画像中の2次元オブジェクトのある部位同士が構造上の同一部位であるという意味での対応を求めることが可能である。
しかしながら、下位レベルで求めた対応を適切に上位レベルに反映させることができないと、安定的に精度を向上させていくことができない恐れがある。
また、どの応用においても低照度などの悪条件下での撮像映像への対処として、十分に高画質化した後にブロックマッチングを実行することが必須となる。しかしながら、画質そのものを向上させるためにブロックマッチングを実施するのであって、ブロックマッチングを行うために画質向上を事前にするということでは本末転倒になってしまうことがあった。また、単純な撮像素子の改良では膨大なコストがかかる上、すでに存在する画像に対処することはできない恐れがあった。
結果として、いずれの方法でも確立したロバストな方法がない上、コスト高となる恐れがあった。
本発明はこのような状況に鑑みてなされたものであり、特に、ノイズ耐性を維持しつつ、高速で、かつ、高精度に動きベクトルを検出できるようにするものである。
本発明の一側面の画像処理装置は、入力画像を複数の解像度の画像に変換する多重解像度化手段と、前記多重解像度化手段により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積手段と、前記多重解像度化手段により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積手段と、第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索手段と、前記対応点探索手段により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納手段とを含み、前記対応点探索手段は、前記格納手段に格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す。
前記対応点探索手段には、前記第1の解像度における第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の評価値をブロックマッチングにより求める評価値計算手段をさらに含ませるようにすることができ、前記評価値計算手段により計算された評価値が最小となる画素を対応点として探索させるようにすることができる。
前記評価値計算手段には、前記ブロックマッチングのブロック内の注目画素からの距離に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求めるようにさせることができる。
前記評価値計算手段には、前記ブロックマッチングのブロック間の対応画素間の画素値の差に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求めるようにさせることができる。
所定の解像度の画像における対応点の近傍にある5個の画素に対する5個の評価値を計算し、前記5個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段をさらに含ませるようにすることができる。
所定の解像度の画像における対応点の近傍にある9個の画素に対する9個の評価値を計算し、前記9個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段をさらに含ませるようにすることができる。
前記多重解像度化手段には、前記入力画像を、前記入力画像よりも低解像度の複数の解像度の画像、または、前記入力画像よりも高解像度の複数の解像度の画像に変換させるようにすることができる。
本発明の一側面の画像処理方法は、入力画像を複数の解像度の画像に変換する多重解像度化ステップと、前記多重解像度化ステップの処理により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積ステップと、前記多重解像度化ステップの処理により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積ステップと、第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索ステップと、前記対応点探索ステップの処理により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納ステップとを含み、前記対応点探索ステップの処理は、前記格納ステップの処理で格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す。
本発明の一側面のプログラムは、入力画像を複数の解像度の画像に変換する多重解像度化ステップと、前記多重解像度化ステップの処理により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積ステップと、前記多重解像度化ステップの処理により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積ステップと、第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索ステップと、前記対応点探索ステップの処理により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納ステップとを含み、前記対応点探索ステップの処理は、前記格納ステップの処理で格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す。
本発明の一側面のプログラム格納媒体は、請求項9に記載のプログラムが格納されている。
本発明の画像処理装置は、独立した装置であっても良いし、画像処理を行うブロックであっても良い。
本発明の一側面によれば、動きベクトルを画素単位で、高速に、かつ、安定して抽出することが可能となる。
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
即ち、本発明の一側面の画像処理装置は、入力画像を複数の解像度の画像に変換する多重解像度化手段(例えば、図4の多重解像度化部31)と、前記多重解像度化手段により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積手段(例えば、図4の多重解像度画像バッファ32−1)と、前記多重解像度化手段により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積手段(例えば、図4の多重解像度画像バッファ32−2)と、第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索手段(例えば、図4の対応点探索部33)と、前記対応点探索手段により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納手段(例えば、図4の対応点動きベクトルバッファ34)とを含み、前記対応点探索手段は、前記格納手段に格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す。
前記対応点探索手段には、前記第1の解像度における第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の評価値をブロックマッチングにより求める評価値計算手段(例えば、図4の評価計算部33c)をさらに含ませるようにすることができ、前記評価値計算手段により計算された評価値が最小となる画素を対応点として探索させるようにすることができる。
前記評価値計算手段(例えば、図4の評価計算部33c)には、前記ブロックマッチングのブロック内の注目画素からの距離に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求めるようにさせることができる。
前記評価値計算手段(例えば、図4の評価計算部33c)には、前記ブロックマッチングのブロック間の対応画素間の画素値の差に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求めるようにさせることができる。
所定の解像度の画像における対応点の近傍にある5個の画素に対する5個の評価値を計算し、前記5個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段(例えば、図14のフィッティング計算部61)をさらに含ませるようにすることができる。
所定の解像度の画像における対応点の近傍にある9個の画素に対する9個の評価値を計算し、前記9個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段(例えば、図14のフィッティング計算部61)をさらに含ませるようにすることができる。
前記多重解像度化手段(例えば、図4の多重解像度化部31)には、前記入力画像を、前記入力画像よりも低解像度の複数の解像度の画像(例えば、図4の多重解像度化部31の低解像度化フィルタ31a)、または、前記入力画像よりも高解像度の複数の解像度の画像に変換させる(例えば、図4の多重解像度化部31の高解像度化フィルタ31b)ようにすることができる。
本発明の一側面の画像処理方法およびプログラムは、入力画像を複数の解像度の画像に変換する多重解像度化ステップ(例えば,図6のステップS22,S23)と、前記多重解像度化ステップの処理により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積ステップ(例えば,図6のステップS22,S23)と、前記多重解像度化ステップの処理により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積ステップ(例えば,図6のステップS21)と、第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索ステップと、前記対応点探索ステップ(例えば,図6のステップS25)の処理により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納ステップ(例えば,図6のステップS26)とを含み、前記対応点探索ステップの処理は、前記格納ステップの処理で格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す。
図3を参照して、本発明を適用した手ぶれ補正処理装置の一実施の形態の構成について説明する。
図3の手ぶれ補正装置1は、画像を撮像する際、手ぶれにより発生する画像のちらつきを、動きベクトルに応じて補正するものである。
画像バッファ11は、撮像された画像を一時的に蓄積し、動きベクトル検出部12および手ぶれ補正部14に適宜供給する。
動きベクトル検出部12は、画像バッファ11に蓄積された画像の各画素について動きベクトルを検出し、動きベクトルバッファ13に蓄積させる。
手ぶれ補正部14は、画像バッファ11に蓄積されている画像を読み出し、動きベクトルバッファ13に蓄積されている動きベクトルに応じて、手ぶれを補正して出力する。
次に、図4を参照して、動きベクトル検出部12の構成例について説明する。
多重解像度化部31は、画像バッファ11に蓄積されている画像を低解像度化フィルタ31aおよび高解像度化フィルタ31bにより複数の解像度の画像に変換し、多重解像度画像バッファ32−1に供給する。低解像度化フィルタ31aは、入力画像を水平方向および垂直方向に隣接する画素を平均化するなどして、低解像度化する処理を所定回数繰り返し、順次低解像度化した画像に変換する。また、高解像度化フィルタ31bは、入力画像を水平方向および垂直方向に隣接する画素間の画素を補間するなどして、高解像度化する処理を所定回数繰り返し、順次高解像度化した画像に変換する。
多重解像度画像バッファ32−1は、入力画像を含む、入力画像を複数の解像度の画像に変換した画像を一時的に記憶し、次の入力画像について入力されるとき、記憶している複数の解像度の画像を多重解像度画像バッファ32−2に転送する。すなわち、多重解像度画像バッファ32−1,32−2は、時間的に連続する2枚の入力画像について、それぞれ複数の多重解像度化された画像を一時的に記憶している。尚、多重解像度画像バッファ32−1,32−2は、新たな入力画像の多重解像度化画像が供給されてくると、それまでに記憶していた画像を消去し、新たな入力画像の多重解像度化画像を記憶する。
対応点探索部33は、多重解像度画像バッファ32−1,32−2に記憶されている最低解像度の画像から各画素について対応点を探索する。すなわち、対応点探索部33は、多重解像度画像バッファ32−2に記憶されている直前の画像の画素における動きベクトルの終点となる対応点を、多重解像度画像バッファ32−1に記憶されている画像の決められた探索範囲内を探索することにより決定し、対応点動きベクトルバッファ34に格納する。
マッチングブロック設定部33aは、多重解像度画像のうち、最低解像度の画像については、直前の画像の注目画素に対応するマッチングブロックを構成する画素を抽出すると供に、今現在の画像における各画素について、探索範囲となるマッチングブロックを構成する画素を抽出する。
また、マッチングブロック設定部33aは、多重解像度画像のうち、最低解像度以外の画像については、所定の解像度の直前の画像における注目画素について、初期値動きベクトルバッファ36に格納されている所定の解像度よりも解像度レベルが1レベル低い画像における対応点(動きベクトルの終点)の情報に基づいて、初期対応点決定部33eにより決定された初期対応点を基準として、探索範囲内の画素とマッチングブロックを構成する画素、すなわち、直前の画像における注目画素と、その近傍の画素を抽出すると供に、探索範囲設定部33bにおいて注目画素に対応して設定される現在の画像上の探索範囲内でマッチングブロックを移動させて、順次マッチングブロックを構成する画素を抽出する。
評価計算部33cは、マッチングブロック設定部33aより供給されてくる直前の画像と、現在の画像とのそれぞれのマッチングブロックを構成する画素により評価値を計算する。
対応点決定部33dは、評価計算部33cにより計算された評価値のうち、最も小さな評価値をとる現在の画像の画素、すなわち、直前の画像と現在の画像との間で最も類似しているとみなされる画素を、注目画素の対応点(注目画素の動きベクトルの終点)として対応点動きベクトルバッファ34に格納する。また、対応点決定部33dは、最も解像度の高い画像(または、動きベクトルを求めようとする所定の解像度の画像)における対応点の情報を動きベクトル生成部37に供給する。
動きベクトル出力判定部35は、対応点動きベクトルバッファ34に新たに対応点の情報が蓄積されると、初期値動きベクトルバッファ36に転送する。
動きベクトル生成部37は、最高解像度の画像(または、動きベクトルを求めようとする所定の解像度の画像)における直前の画像における各画素に対応した今現在の画像の対応点の情報に基づいて、動きベクトルを求めて動きベクトルバッファ13に順次格納する。
次に、図5のフローチャートを参照して、手ぶれ補正処理について説明する。
ステップS1において、画像バッファ11は、入力画像をバッファリングする。
ステップS2において、動きベクトル検出部12は、画像バッファ11に格納された画像を読み出し、動きベクトル検出処理を実行し、入力された画像の各画素単位で動きベクトルを検出して動きベクトルバッファ13に格納させる。
ここで、図6のフローチャートを参照して、動きベクトル検出処理について説明する。
ステップS21において、多重解像度化部31は、多重解像度画像バッファ32−1を制御して、それまでに記憶していた複数の解像度の画像を多重解像度画像バッファ32−2に転送させる。このとき、多重解像度画像バッファ32−2は、それまでに記憶していた多重解像度画像を消去すると供に、新たに供給されてきた多重解像度画像を記憶する。
ステップS22において、多重解像度化部31は、低解像度化フィルタ31aを制御して、入力画像を順次低解像度化した画像に変換して多重解像度画像バッファ32−1に記憶させる。すなわち、低解像度化フィルタ31aは、入力画像(解像度レベル(0)の画像=Level 0の画像)を、図7で示されるように、水平方向および垂直方向に3×3画素単位で、例えば、以下の式(1)で示されるようなフィルタ処理により画素値を1画素に変換することにより入力画像よりも低解像度の解像度レベル(1)の画像(Level 1の画像)に変換する。図7においては、下から順に低解像度化された解像度レベル(0),(1),(2)の画像(=Level 0,1,2の画像)を示しており、それぞれ水平方向、または、垂直方向の1次元の方向の配列状態を示している。また、図中のバツ印は、画素pの画素中心を示し、縦棒は画素境界であり、各番号が画素pを識別する番号である。従って、図7においては、解像度レベル(0)の画像(Level 0の画像)について、画素p0乃至p15が表示されており、解像度レベル(1)の画像(Level 1の画像)について、画素p0乃至p8が表示されており、解像度レベル(2)の画像(Level 2の画像)について、画素p0乃至p4が表示されている。
尚、式(1)は、ガウシアンフィルタの例を示している。
また、解像度レベル(1)の画像における画素p3は、解像度レベル(0)の画像における画素p5乃至p7の画素値をフィルタ処理した画素値であり、同様にして、解像度レベル(1)の画像における画素p4は、解像度レベル(0)の画像における画素p7乃至p9の画素値をフィルタ処理した画素値であり、解像度レベル(1)の画像における画素p5は、解像度レベル(0)の画像における画素p9乃至p11の画素値をフィルタ処理した画素値である。
同様にして、解像度レベル(2)の画像における画素p2は、解像度レベル(1)の画像における画素p3乃至p5の画素値をフィルタ処理した画素値である。
尚、図7においては、水平方向、または、垂直方向からみた1次元の配置について表現されているため、1レベル(Level)分低い解像度の画像を生成する際、3画素をフィルタ処理した値が、低解像度の1画素として構成されるように表現されているが、実際には、注目画素を中心とした3×3画素に対してフィルタ処理された値が1レベル分低い解像度の画素値として求められることになる。さらに、幾何学的に水平方向および垂直方向に対して画素p0の画素中心の位置が同一位置となり、図中の右端部で示されるように、各レベルの右端部の画素中心が、1レベル上位画像における端部の画素境界と一致するように配置される。
ステップS23において、多重解像度化部31は、高解像度化フィルタ31bを制御して、入力画像を順次高解像度化した画像に変換して多重解像度画像バッファ32−2に記憶させる。すなわち、高解像度化フィルタ31bは、入力画像(解像度レベル(0)の画像=図中のLevel 0の画像)を、図8で示されるように、水平方向および垂直方向に4×4画素単位で、バイキュービックフィルタ処理により画素値を1画素に変換することにより入力画像よりも高解像度の解像度レベル(-1)の画像(Level −1の画像)に変換する。図8においては、上から順に高解像度化された解像度レベル(0),(-1),(-2)の画像(=Level 0,−1,−2の画像)を示しており、それぞれ水平方向、または、垂直方向の1次元の方向の配列状態を示している。従って、図8においては、解像度レベル(0)の画像について、画素p0乃至p3が表示されており、解像度レベル(-1)の画像について、画素p0乃至p7が表示されており、解像度レベル(-2)の画像について、画素p0乃至p15が表示されている。
また、解像度レベル(-1)の画像における画素p2は、解像度レベル(0)の画像における画素p0乃至p3の画素値をバイキュービックフィルタ処理した画素値である。
同様にして、解像度レベル(-2)の画像における画素p6は、解像度レベル(-1)の画像における画素p2乃至p5の画素値をバイキュービックフィルタ処理した画素値である。
尚、図8においては、水平方向、または、垂直方向からみた1次元の配置について表現されているため、1レベル(Level)分高い解像度の画像を生成する際、4画素のフィルタ処理結果が、高解像度の1画素として構成されるように表現されているが、実際には、注目画素に対して所定の位置に存在する4×4画素に対してバイキュービックフィルタ処理された値が1レベル分高い解像度の画素値として求められることになる。また、高解像度化される場合、上下左右の端部における画素の境界は一致するように変換される。
ステップS24において、対応点探索部33は、最低解像度対応点抽出処理を実行して、最低解像度の直前の画像の各画素についての対応点(各画素の動きベクトルの終点)を抽出する。
ここで、図9のフローチャートを参照して、最低解像度対応点抽出処理について説明する。
ステップS41において、マッチングブロック設定部33aは、多重解像度画像バッファ32−2に記憶されている、直前の画像における最低解像度の画像のうち、未処理の画素を注目画素pbとして設定すると供に、注目画素pbに対応するマッチングブロックを構成する画素群を抽出し、評価計算部33cに供給する。マッチングブロック設定部33aにより設定されるマッチングブロックのサイズは、例えば、Sb[k]×Sb[k]である。ここで、Sb[k]は、以下の式(2)で示される。
式(2)において、MAX(A,B)は、AまたはBのうち、いずれか大きい値をとることを示している。また、INT(A)は、値Aの小数点以下を切り捨てた値をとることを示している。さらに、kは、解像度レベル(k)(Level)を示すものであり、kは、le≦k≦Lの整数である。すなわち、解像度レベル(L)の画像は、最低解像度の画像であり、解像度レベル(le)の画像は、最高解像度の画像である。従って、Sb[0]は、入力画像(解像度レベル(0)の画像)に対するマッチングブロックサイズである。
ステップS42において、探索範囲設定部33bは、多重解像度画像バッファ32−2に記憶されている最低解像度の画像(直前の画像)上の注目画素pbに対応する、多重解像度画像バッファ32−1に記憶されている最低解像度の画像(今現在の画像)上の未処理の探索範囲を設定する。ここで、探索範囲サイズは、例えば、Ss[k]×Ss[k]である。ここで、Ss[k]は、以下の式(3)で示される。
従って、Ss[0]は、入力画像(解像度レベル(0)の画像)に対する探索範囲サイズである。
ステップS43において、探索範囲設定部33bは、探索範囲内における未処理の対応点画素pfを今現在の画像上に設定する。
ステップS44において、マッチングブロック設定部33aは、対応点画素pfに対応する、多重解像度画像バッファ32−1に記憶されている最低解像度の画像(現在の画像)マッチングブロックを構成する画素群を抽出し、評価計算部33cに供給する。
ステップS45において、評価計算部33cは、マッチングブロック設定部33aより供給されてきた、直前の最低解像度の画像上の注目画素pbに対応するマッチングブロックを構成する画素群と、現在の最低解像度の画像上の対応点画素pfに対応するマッチングブロックを構成する画素群とを用いて、以下の式(4)を計算することにより、注目画素pbと対応点画素pfとの評価値e(Pb,Pf)を計算する。
ここでROIはマッチングブロックの範囲を示す。また、dは、マッチングブロックを構成する各画素の注目画素pbまたは対応点画素pfからの距離を示している。さらに、Cb(),Cf()は、それぞれ注目画素pbまたは対応点画素pfを中心としたマッチングブロックを構成する画素の輝度を示している。また、式(4)における関数g(x,σ)は、式(5)で示される関数であり、図10で示されるように、変数xに対して0付近で強度が大きく、0から離れるに従って急激に小さくなる、いわゆるガウス関数である。従って、g(x,σd)は、画素間の距離に関するガウス関数であり、g(x,σI)は、画素間の輝度差に関するガウス関数である。
すなわち、式(4)は2乗誤差によって非類似度を測る方式を基礎に据え、式(5)を利用することにより、マッチングブロックの中心画素からの距離が遠く、輝度差が大きい、画素間の評価寄与度を下げるように働く。つまり、マッチングブロックの中心位置に存在する画素(=注目画素pbまたは対応点画素pf)同士のマッチングを最大限に重視しつつ、大きすぎる色の差は無視するように働く。σd, σIによってこれらの具合を調整することができる。
結果として、式(4)により計算される評価値eは、完全に一致するパターン同士の評価値が最小である0となり、比べたいマッチングブロック同士で多少の画像変形(拡大、縮小、回転、歪)が起きていても画素同士のマッチングはうまく行きやすく、ノイズ、エッジ、または異なる背景パターンは、ほぼ無視することができるといった特徴を備えている。
ステップS46において、探索範囲設定部33bは、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されたか否かを判定する。ステップS46において、全ての対応点画素pfについて、注目画素pbとの評価値eが計算されていないと判定された場合、処理は、ステップS43に戻る。すなわち、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されるまで、ステップS43乃至S46の処理が繰り返される。
そして、ステップS46において、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されたと判定された場合、処理は、ステップS47に進む。
ステップS47において、探索範囲設定部33bは、注目画素pbについて未処理の探索範囲が存在するか否かを判定し、未処理の探索範囲が存在する場合、処理は、ステップS42に戻り、未処理の探索範囲がなくなるまで、ステップS42乃至S47の処理が繰り返される。
ステップS47において、未処理の探索範囲が存在しないと判定された場合、ステップS48において、対応点決定部33dは、評価値eが最小となる注目画素pbおよび対応点画素pfとの組み合わせを検索し、その対応点画素pfを注目画素pbの対応点、すなわち、動きベクトルVL=P[L](pb)として、対応点動きベクトルバッファ34に記憶させる。
ステップS49において、マッチングブロック設定部33aは、未処理の注目画素が存在するか否かを判定し、未処理の注目画素が存在する場合、処理は、ステップS41に戻る。すなわち、最低解像度の全ての画素について、対応点が求められるまで、ステップS41乃至S49の処理が繰り返され、ステップS49において、直前の最低解像度の画像の全ての画素について対応点が求められた場合、すなわち、直前の最低解像度の画像の全ての画素について動きベクトルが求められた場合、処理は終了する。尚、処理が終了される際、動きベクトル出力判定部35は、解像度レベルが最高解像度ではないとき、対応点動きベクトルバッファ34の情報を初期値動きベクトルバッファ36に転送する。
以上の処理により、直前の画像における各画素が順次注目画素として設定され、画像全体をカバーするように探索範囲が設定され、マッチングブロックを順次移動させながらブロックマッチングが繰り返されことにより、最低解像度の画像の各画素について、対応点、すなわち、始点を各画素としたときの動きベクトルの終点が求められ、対応点動きベクトルバッファ34に記憶される。この際、画像全体に対して探索範囲が順次設定されても、解像度が十分に低いので、対応点は、高速に求められることになる。
ここで、図6のフローチャートの説明に戻る。
ステップS24において、最低解像度対応点抽出処理により最低解像度の画像における各画素の対応点が求められると、ステップS25において、対応点探索部33は、順次対応点抽出処理を実行し、最低解像度の画像における対応点を用いて、順次高い解像度の画像における対応点を探索していく。
ここで、図11のフローチャートを参照して、順次対応点抽出処理について説明する。
ステップS61において、マッチングブロック設定部33aは、解像度レベル(k)を示す図示せぬカウンタkを(L−1)に設定する。尚、kは、上述したように、le≦k≦Lの整数である。
ステップS62において、マッチングブロック設定部33aは、多重解像度画像バッファ32−2に記憶されている、直前の画像における解像度レベル(k)の画像のうち、未処理の画素を注目画素pbとして設定すると供に、注目画素pbに対応するマッチングブロックを構成する画素群を抽出し、評価計算部33cに供給する。マッチングブロック設定部33aにより設定されるマッチングブロックのサイズは、例えば、Sb[k]×Sb[k]である。ここで、Sb[k]は、以下の式(6)で示される。
ステップS63において、初期対応点決定部33eは、解像度レベル(k+1)の画像における対応点の情報を利用して、解像度レベル(k)の注目画素pbに対応する初期対応点Q[k](pb)を設定し、設定した初期対応点Q[k](pb)の情報を探索範囲設定部33bに供給する。
より詳細には、図12で示されるように、初期対応点決定部33eは、解像度レベル(k)の注目画素pbの座標(x[k],y[k])を、解像度レベル(k+1)の画像空間における座標(x[k+1],y[k+1])に変換することにより、対応する解像度レベル(k+1)の画像上の注目画素pb’の座標(x[k+1],y[k+1])を求める。図12においては、解像度レベル(k)の画像上の画素p1が、注目画素pbに設定されており、注目画素pbに対応する、解像度レベル(k+1)の画像上の画素が画素pb’に設定されており、解像度レベル(k+1)の画像上の座標で表現されている。
次に、初期値動きベクトルバッファ36には、解像度レベル(k+1)の画像上の各画素について対応点が求められているので、初期対応点決定部33eは、画素pb’の近傍に存在する、解像度レベル(k+1)の画像上の4画素の対応点を用いて、4近傍双一次補間処理により近似対応点P[k+1](pb’)を求める。すなわち、図12においては、水平方向、または、垂直方向の1次元の配置のみが示されているので、画素pb’の近傍の画素としては、画素p0,p1のみが示されているが、さらに2画素が近傍に存在する。ここでは、画素pb’の近傍の画素として画素p0,p1の他に、画素pA,pB(図示せず)が存在するものとすると、初期対応点決定部33eは、それらの対応点P[k+1](p0),P[k+1](p1),P[k+1](pA),P[k+1](pB)を用いて、4近傍双一次補間処理により近似対応点P[k+1](pb’)(=P[k+1](p0)・{1−α}{1−β}+P[k+1](p1)・α{1−β}+P[k+1](pA)・{1−α}β+P[k+1](pB)・αβ(α(0≦α≦1)は、それぞれ画素p1,p2間の近似対応点P[k+1](pb’)の位置する空間的な比率、β(0≦β≦1)は、画素pA,pB間の近似対応点P[k+1](pb’)の位置する空間的な比率))を求める。さらに、初期対応点決定部33eは、その近似対応点P[k+1](pb’)の座標を、解像度レベル(k+1)の画像における座標から、解像度レベル(k)の画像における座標に変換することで、初期対応点Q[k](pb)を求める。
尚、解像度レベル(k),(k+1)間の座標変換は、カウンタkが0より大きい場合、すなわち、入力画像よりも低解像度の場合、以下の式(7)のように変換され、カウンタkが0より小さい場合、以下の式(8)のように変換される。
ステップS64において、探索範囲設定部33bは、多重解像度画像バッファ32−2に記憶されている解像度レベル(k)の画像(直前の画像)上の注目画素pbに対応する多重解像度画像バッファ32−1に記憶されている解像度レベル(k)の画像(今現在の画像)上の、初期対応点Q[k](pb)に対応した探索範囲(例えば、初期対応点Q[k](pb)を中心とした探索範囲)を設定する。ここで、探索範囲サイズは、例えば、Ss[k]×Ss[k]である。ここで、Ss[k]は、以下の式(9)で示される。
ステップS65において、探索範囲設定部33bは、探索範囲内における未処理の対応点画素pfを今現在の画像上に設定する。
ステップS66において、マッチングブロック設定部33aは、対応点画素pfに対応する、多重解像度画像バッファ32−1に記憶されている解像度レベル(k)の画像(現在の画像)におけるマッチングブロックを構成する画素群を抽出し、評価計算部33cに供給する。
ステップS67において、評価計算部33cは、マッチングブロック設定部33aより供給されてきた、直前の解像度レベル(k)の画像上の注目画素pbに対応するマッチングブロックを構成する画素群と、現在の解像度レベル(k)の画像上の対応点画素pfに対応するマッチングブロックを構成する画素群とを用いて、上述の式(4)を計算することにより、注目画素pbと対応点画素pfとの評価値e(Pb,Pf)を計算する。
ステップS68において、探索範囲設定部33bは、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されたか否かを判定する。ステップS68において、全ての対応点画素pfについて、注目画素pbとの評価値eが計算されていないと判定された場合、処理は、ステップS66に戻る。すなわち、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されるまで、ステップS66乃至S68の処理が繰り返される。
そして、ステップS68において、探索範囲内における全ての対応点画素pfについて、注目画素pbとの評価値eが計算されたと判定された場合、処理は、ステップS69に進む。
ステップS69において、対応点決定部33dは、評価値eが最小となる注目画素pbおよび対応点画素pfとの組み合わせを検索し、その対応点画素pfを注目画素pbの対応点、すなわち、動きベクトルVk=P[k](pb)として、対応点動きベクトルバッファ34に記憶させる。
ステップS70において、マッチングブロック設定部33aは、未処理の注目画素が存在するか否かを判定し、未処理の注目画素が存在する場合、処理は、ステップS62に戻る。すなわち、解像度レベル(k)の画像の全ての画素について、対応点が求められるまで、ステップS62乃至S70の処理が繰り返され、ステップS70において、直前の解像度レベル(k)の画像の全ての画素について対応点が求められた場合、すなわち、直前の解像度レベル(k)の画像の全ての画素について動きベクトルが求められた場合、処理は、ステップS71に進む。
ステップS71において、マッチングブロック設定部33aは、解像度レベルを示す図示せぬカウンタkが最小値であるか否かを判定し、最小値ではない、すなわち、さらに、解像度の高い画像が存在すると判定された場合、ステップS72において、カウンタkを1デクリメントし、処理は、ステップS62に戻り、それ以降の処理が繰り返される。すなわち、解像度レベル(L-1)乃至(le)までの解像度レベル(k+1)で求められた対応点の情報を利用することにより、さらに、1レベル分上位の解像度レベルkの画像における各画素の対応点を求める処理が順次繰り返される。尚、このとき、動きベクトル出力判定部35は、対応点動きベクトルバッファ34の情報を初期値動きベクトルバッファ36に転送する。
一方、ステップS71において、カウンタkが最小値であると判定された場合、すなわち、最高解像度レベルより1レベル低解像度の画像における各画素の対応点が求められた場合、処理は、終了する。
以上の処理により、解像度レベルの高い、低解像度の画像より、直前の画像における各画素が順次注目画素として設定され、直前の解像度レベルの画像における対応点に基づいて設定される初期対応点にのみ探索範囲が設定され、マッチングブロックを順次移動させながらブロックマッチングが繰り返されことにより、各解像度レベルの画像の各画素について、対応点、すなわち、始点を各画素としたときの動きベクトルの終点が求められ、対応点動きベクトルバッファ34に記憶される。そして、この処理が、最高解像度の1レベル低解像度の解像度レベル(le)の画像にまで、繰り返される。
結果として、探索範囲を初期対応点の近傍付近のみとすることが可能となるため、各解像度レベルの画像の各画素について、探索範囲を1回設定するのみでよいので、マッチングブロックの移動回数を低減させる事が可能となる。結果として、対応点の探索に必要な評価値の計算回数を低減することが可能となる。さらに、異なる解像度レベルで同様の処理を繰り返すことにはなるが、解像度レベルに関わらず、探索範囲を1回設定するだけでよいため、所望とする解像度レベルの画像において、動きベクトルの終点である対応点を高速で、かつ、安定的に探索することが可能となる。
ここで、図6のフローチャートの説明に戻る。
ステップS25において、順次対応点抽出処理により、最高解像度の解像度レベル(le)の画像における各画素の対応点P[le](p)が求められることになる。
ステップS26において、動きベクトル生成部37は、解像度レベル(le)の各画素における対応点を利用して、動きベクトル生成処理により最終的に動きベクトルを生成し、動きベクトルバッファ13に記憶させて、処理を終了する。
ここで、図13のフローチャートを参照して、動きベクトル生成処理について説明する。
ステップS91において、動きベクトル生成部37は、最高解像度である解像度レベル(le)の画像上の未処理の画素より注目画素pを設定する。
ステップS92において、動きベクトル生成部37は、対応点動きベクトルバッファ34に記憶されている、注目画素pの対応点P[le](p)を読み出し、ステップS93において、動きベクトルの終点である対応点から始点である注目画素を用いて、以下の式(10)を計算することにより、動きベクトルV(p)を生成する。
ステップS94において、動きベクトル生成部37は、生成した注目画素pにおける動きベクトルV(p)を動きベクトルバッファ13に記憶させる。
ステップS95において、動きベクトル生成部37は、未処理の画素があるか否かを判定し、未処理の画素が存在すると判定した場合、処理は、ステップS91に戻り、未処理の画素がなくなるまで、ステップS91乃至S95の処理を繰り返す。そして、ステップS95において、未処理の画素が存在しない、すなわち、全ての画素について動きベクトルが生成されたと判定された場合、処理は終了する。
以上の処理により、低解像度の解像度レベルの画像より順次、直前の対応点の情報に基づいて、初期対応点を求め、その初期対応点近傍のみをマッチングブロックの探索範囲として設定することが可能となるので、高速で、かつ、安定的に動きベクトルを検出することが可能となる。尚、より高解像度の画像について、動きベクトルが必要である場合、さらに、多重解像度化部31により高解像度の画像を生成し、解像度レベル(le)を低くするように変化させるようにしてもよい。
ここで、図5のフローチャートの説明に戻る。
ステップS3において、手ぶれ補正部14は、動きベクトルバッファ13に格納されている各画素の動きベクトルの情報を読み出し、画像バッファ11より読み出した画像の各画素について、動きベクトルと逆方向の位置に画素を移動させるようにすることで、画像に生じた手ぶれを補正して、出力する。
ステップS4において、手ぶれ補正部14は、画像バッファ11に、次の画像が供給されてきたか否かを判定し、次の画像が供給されてきた場合、処理は、ステップS1に戻り、手ぶれを補正する処理が順次繰り返す。そして、ステップS4において、次の画像が供給されてきていないと判定された場合、処理は、終了する。
以上の処理により、手ぶれの発生しているような画像であっても、上述した手法により、各画素について高速で動きベクトルが求められるので、動きベクトルに基づいて、手ぶれを補正して出力することが可能となる。
以上においては、繰り返し計算により対応点の精度を向上させるものであったが、例えば、パラメータフィッティングにより1回の計算で対応点を精度良く求めることもできる。
図14は、パラメータフィッティングにより1回の計算で対応点を精度良く求めるようにした動きベクトル検出部12の構成を示している。尚、図14において、図4と同様の構成については、同一の符号を付しており、その説明は適宜省略するものとする。
図14において、図4と異なるのは、フィッティング計算部61および動きベクトル生成部62が設けられている点である。フィッティング計算部61は、2次関数により解像度レベルが1レベル下位の複数の画素を用いて解析的に対応点の位置を計算する。動きベクトル生成部62は、フィッティング計算部61より供給されてくる対応点に基づいて動きベクトルを生成する。
図14の動きベクトル検出部12を用いた手ぶれ補正処理について説明するが、図6のフローチャートにおけるステップS26の動きベクトル生成処理を除いて、図4の動きベクトル検出部12を用いた場合と同様であるので、図14の動きベクトル検出部12における動きベクトル生成処理のみを説明し、その他の処理は同様であるので、その説明は省略するものとする。
まず、5点の近傍の画素値を用いたフィッティング計算を行う例について、図15のフローチャートを参照して説明する。
ステップS111において、フィッティング計算部61は、未処理の画素より注目画素pを設定する。
ステップS112において、フィッティング計算部61は、注目画素p[k]の初期対応点Q[k](p)を求める。すなわち、例えば、解像度レベル(le)については、le=1とし、動きベクトルを最終的に求める画像の解像度が、解像度レベル(0)、すなわち、入力画像の各画素における動きベクトルを求めるものとすれば、図12で示した方法と同様の手法により、フィッティング計算部61は、注目画素pから解像度レベルが1レベル上位の画素p’を求め、画素p’の対応点である画素P[1](p’)を求め、さらに、対応点画素P[1](p’)を座標変換により、解像度レベル(0)での対応点画素P[0](p)の初期対応点Q[0](p)を求める。
ステップS113において、フィッティング計算部61は、図16で示されるように、解像度レベル(0)において、Q[0](p)に最も近い画素の画素中心q[0]とその周りの画素の画素中心4点、すなわちq[i]:{i=0,1,3,5,7}の計5点で式(4)の評価値e[i]:{i=0,1,3,5,7}を計算する。
ステップS114において、フィッティング計算部61は、初期対応点Q[0](p)の近傍の5画素の評価値e[i]:{i=0,1,3,5,7}を、以下の式(11)で示される関係式に代入し、加算ベクトル(s,t)を求め、さらに、初期対応点Q[0](p)に最も近い画素q[0]にベクトル加算し、対応点P[0](p)を計算し、動きベクトル生成部62に供給する。
ここで、s,tは、図16で示されるように、初期対応点Q[0](p)に最も近い画素q[0]を中心とした空間の軸である。また、st空間内の位置に応じた評価値の関係は、例えば、以下の式(12)の近似関数F(q)=f(s,t)により表現することができる。
ここで、a,b,c,d,α,βは、パラメータである。
そこで、式(12)で示される近似関数F(q)=f(s,t)に、評価値e[i]:{i=0,1,3,5,7}を、それぞれのst空間上の座標と供に代入すると、以下の式(13)で示される5個の関係式が得られる。
さらに、パラメータのうちαが0であると仮定すれば、パラメータs,tのそれぞれについて、偏微分すると、以下の式(14),式(15)で示されるような連立方程式となり、これを解くことにより、近似関数fを最小にする(s,t)が式(11)となる。
ステップS115において、動きベクトル生成部62は、動きベクトルの終点である対応点から始点である注目画素を用いて、上述した式(10)を計算することにより、動きベクトルV(p)を生成する。
ステップS116において、動きベクトル生成部62は、生成した注目画素pにおける動きベクトルV(p)を動きベクトルバッファ13に記憶させる。
ステップS117において、動きベクトル生成部62は、未処理の画素があるか否かを判定し、未処理の画素が存在すると判定した場合、処理は、ステップS111に戻り、未処理の画素がなくなるまで、ステップS111乃至S117の処理を繰り返す。そして、ステップS117において、未処理の画素が存在しない、すなわち、全ての画素について動きベクトルが生成されたと判定された場合、処理は終了する。
以上の処理により、たかだか5点の評価値を求めるだけで、繰り返し計算ではなく1回の計算で高精度な動きベクトルを求めることができる。また、オリジナル解像度以上の画像はピラミッド中に必要としないので、多重解像度画像バッファ32−1,32−2の容量を節約することが可能となる。
また、以上においては、5点を用いたフィッティングの例であるが、それ以上の画素に対応する評価値を用いるようにしてもよく、例えば、9点によるフィッティングを行うようにしても良い。
図17は、9点の画素によるフィッティングを用いた動きベクトル生成処理を説明するフローチャートである。尚、図17におけるステップS131,S132、およびS135乃至S137の処理については、図15におけるステップS111,S112、およびS115乃至S117の処理と同様であるので、その説明は省略する。
すなわち、ステップS133において、フィッティング計算部61は、図16で示されるように、解像度レベル(0)において、Q[0](p)に最も近い画素の画素中心q[0]とその周りの画素の画素中心8点、すなわちq[i]:{i=0乃至8}の計9点で式(4)の評価値e[i]:{i=0乃至8}を計算する。
ステップS134において、フィッティング計算部61は、初期対応点Q[0](p)の近傍の9画素の評価値e[i]:{i=0乃至8}を、以下の式(16)で示される関係式に代入し、加算ベクトル(s,t)を求め、さらに、初期対応点Q[0](p)に最も近い画素q[0]にベクトル加算し、対応点P[0](p)を計算し、動きベクトル生成部62に供給する。
すなわち、式(16)は、上述したように、5点を用いた方法でa,b,c,d,βは、αをパラメータとした値として表現するものとすれば、新たな画素q[i]:{i=2,4,6,8}の4点に関して、式(12)の近似関数F(q)=f(s,t)と評価値eとの間の差が最も小さくなるよう、最小二乗法によりf(s,t)のパラメータαを決定して、fの最小値をとる座標を一回の計算で決定できるようにしたものである。尚、式(16)については、パラメータa,b,c,d,αは、それぞれ(e[1]+e[5]−2e[0])/2,(e[1]−e[5])/2,(e[3]+e[7])/2,(e[3]+e[7]−2e[0])/2,(e[2]−e[4]+e[6]−e[8])/4である。
新たな画素q[i]:{i=2,4,6,8}の4点に関する評価値eは、以下の式(17)により表現される。
さらに、式(17)は、図16で示されるst空間における座標系で表現すれば、以下の式(18)により表現されることになる。
このような場合、以下の式(19)で示されるように、真値であるF(q[i]):{i=2,4,6,8}とサンプル値である評価値e[i]:{i=2,4,6,8}との誤差二乗和Eを定義すれば、パラメータαは、誤差二乗和Eを最小とするときの値となる。
式(19)で示される誤差二乗和Eが最小となるのは、以下の式(20)で示されるように、αにより偏微分した関数が0となる条件を満たしたときとなる。
この条件に従って、式(19)を解くと、以下の式(21)で示されるように、αが求められる。
以上の処理により、全てのパラメータが決定されることにより、以下の式(22),式(23)で示されるように、関数F(q)=f(s,t)をそれぞれs,tで偏微分した値を0とすれば、式(16)を求めることができる。
以上の処理により、9点の評価値を求めるだけで、繰り返し計算ではなく1回の計算により、より高精度な動きベクトルを求めることが可能となる。なお、図15,図17のフローチャートを参照して説明した図14の動きベクトル検出部12の処理は、説明の例として解像度レベル(le)がle=1のときを述べたが、メモリの制約や動きベクトル保持方法などが変われば、leは1以外の値でも良い。
また、これまで述べた方法は動きベクトル画像を過去から未来への変化として一方向にしか考えなかったが、2つの入力画像を入れ替えれば同様の処理で未来から過去のへの動きベクトルも生成できる。
以上のような処理により、ロバストかつ高精度な動きベクトルの検出を高速で実現することが可能となる。
本発明によれば、特に条件の悪い画像群を用いた、画像圧縮、映像特殊効果、静止画像/フレーム高画質化、動画性向上、物体追跡など、動きベクトルや対応点探索を利用した様々な画像処理における精度と処理速度を向上させることが可能となる。
ところで、上述した一連の画像処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図18は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)1001を内蔵している。CPU1001にはバス1004を介して、入出力インタフェース1005が接続されている。バス1004には、ROM(Read Only Memory)1002およびRAM(Random Access Memory)1003が接続されている。
入出力インタフェース1005には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部1006、処理操作画面や処理結果の画像を表示デバイスに出力する出力部1007、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部1008、LAN(Local Area Network)アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部1009が接続されている。また、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどのリムーバブルメディア1011に対してデータを読み書きするドライブ1010が接続されている。
CPU1001は、ROM1002に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア1011から読み出されて記憶部1008にインストールされ、記憶部1008からRAM1003にロードされたプログラムに従って各種の処理を実行する。RAM1003にはまた、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
31 多重解像度化部, 31a 像度化部, 31b 像度化部, 32,32−1,32−2 多重解像度画像バッファ, 33 対応点探索部, 33a マッチングブロック設定部, 33b 探索範囲設定部, 33c 評価計算部, 33d 対応点決定部, 33e 初期対応点決定部33e, 34 対応点動きベクトルバッファ, 35 動きベクトル出力判定部, 36 初期値動きベクトルバッファ, 37 動きベクトル生成部
Claims (10)
- 入力画像を複数の解像度の画像に変換する多重解像度化手段と、
前記多重解像度化手段により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積手段と、
前記多重解像度化手段により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積手段と、
第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索手段と、
前記対応点探索手段により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納手段とを含み、
前記対応点探索手段は、前記格納手段に格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す
画像処理装置。 - 前記対応点探索手段は、
前記第1の解像度における第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の評価値をブロックマッチングにより求める評価値計算手段をさらに含み、
前記評価値計算手段により計算された評価値が最小となる画素を対応点として探索する
請求項1に記載の画像処理装置。 - 前記評価値計算手段は、前記ブロックマッチングのブロック内の注目画素からの距離に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求める
請求項2に記載の画像処理装置。 - 前記評価値計算手段は、前記ブロックマッチングのブロック間の対応画素間の画素値の差に応じた重み付け評価を用いて、前記第1の解像度の第2の画像の各画素と前記第1の解像度の第1の画像の各画素との対応点の評価値を求める
請求項2に記載の画像処理装置。 - 所定の解像度の画像における対応点の近傍にある5個の画素に対する5個の評価値を計算し、前記5個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段をさらに含む
請求項2に記載の画像処理装置。 - 所定の解像度の画像における対応点の近傍にある9個の画素に対する9個の評価値を計算し、前記9個の評価値に基づいた近似関数の係数により、前記対応点を求めるフィッティング計算手段をさらに含む
請求項2に記載の画像処理装置。 - 前記多重解像度化手段は、前記入力画像を、前記入力画像よりも低解像度の複数の解像度の画像、または、前記入力画像よりも高解像度の複数の解像度の画像に変換する
請求項1に記載の画像処理装置。 - 入力画像を複数の解像度の画像に変換する多重解像度化ステップと、
前記多重解像度化ステップの処理により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積ステップと、
前記多重解像度化ステップの処理により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積ステップと、
第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索ステップと、
前記対応点探索ステップの処理により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納ステップとを含み、
前記対応点探索ステップの処理は、前記格納ステップの処理で格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す
画像処理方法。 - 入力画像を複数の解像度の画像に変換する多重解像度化ステップと、
前記多重解像度化ステップの処理により複数の解像度に変換された第1のタイミングの第1の画像を蓄積する第1の蓄積ステップと、
前記多重解像度化ステップの処理により複数の解像度に変換された前記第1のタイミングよりも時間的に直前の第2のタイミングの第2の画像を蓄積する第2の蓄積ステップと、
第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点を探索する対応点探索ステップと、
前記対応点探索ステップの処理により探索された前記第1の解像度における前記第2の画像の画素と前記第1の解像度における前記第1の画像の画素との対応点の情報を格納する格納ステップとを含み、
前記対応点探索ステップの処理は、前記格納ステップの処理で格納された前記第1の解像度における対応点の情報に基づいて、前記第1の解像度よりも高解像度の第2の解像度における第2の画像の画素と前記第2の解像度における前記第1の画像の画素との対応点を探索し、順次繰り返す
プログラム。 - 請求項9に記載のプログラムが格納されたプログラム格納媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006226016A JP2008053875A (ja) | 2006-08-23 | 2006-08-23 | 画像処理装置および方法、プログラム、並びにプログラム格納媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006226016A JP2008053875A (ja) | 2006-08-23 | 2006-08-23 | 画像処理装置および方法、プログラム、並びにプログラム格納媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008053875A true JP2008053875A (ja) | 2008-03-06 |
Family
ID=39237508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006226016A Withdrawn JP2008053875A (ja) | 2006-08-23 | 2006-08-23 | 画像処理装置および方法、プログラム、並びにプログラム格納媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008053875A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009071821A (ja) * | 2007-09-11 | 2009-04-02 | Samsung Electronics Co Ltd | 映像整合方法および装置 |
KR20090100279A (ko) * | 2008-03-18 | 2009-09-23 | 톰슨 라이센싱 | 이미지 데이터 스트림의 생성을 위한 방법 및 디바이스, 현재의 이미지를 이미지 데이터 스트림으로부터 재구성하기위한 방법 및 디바이스, 이미지 데이터 스트림 및 이미지 데이터 스트림을 지니는 저장 매체 |
JP2013520717A (ja) * | 2010-02-11 | 2013-06-06 | マイクロソフト コーポレーション | 汎用プラットフォーム・ビデオ画像安定化 |
WO2015107887A1 (ja) * | 2014-01-15 | 2015-07-23 | 日本電気株式会社 | 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 |
US9824426B2 (en) | 2011-08-01 | 2017-11-21 | Microsoft Technology Licensing, Llc | Reduced latency video stabilization |
CN113498609A (zh) * | 2018-12-31 | 2021-10-12 | 北京达佳互联信息技术有限公司 | 用于视频编解码的依赖图片分辨率的配置 |
-
2006
- 2006-08-23 JP JP2006226016A patent/JP2008053875A/ja not_active Withdrawn
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009071821A (ja) * | 2007-09-11 | 2009-04-02 | Samsung Electronics Co Ltd | 映像整合方法および装置 |
KR20090100279A (ko) * | 2008-03-18 | 2009-09-23 | 톰슨 라이센싱 | 이미지 데이터 스트림의 생성을 위한 방법 및 디바이스, 현재의 이미지를 이미지 데이터 스트림으로부터 재구성하기위한 방법 및 디바이스, 이미지 데이터 스트림 및 이미지 데이터 스트림을 지니는 저장 매체 |
KR101579472B1 (ko) | 2008-03-18 | 2015-12-23 | 톰슨 라이센싱 | 이미지 데이터 스트림의 생성을 위한 방법 및 디바이스, 현재의 이미지를 이미지 데이터 스트림으로부터 재구성하기위한 방법 및 디바이스, 이미지 데이터 스트림 및 이미지 데이터 스트림을 지니는 저장 매체 |
US10257421B2 (en) | 2010-02-11 | 2019-04-09 | Microsoft Technology Licensing, Llc | Generic platform video image stabilization |
JP2013520717A (ja) * | 2010-02-11 | 2013-06-06 | マイクロソフト コーポレーション | 汎用プラットフォーム・ビデオ画像安定化 |
US10841494B2 (en) | 2010-02-11 | 2020-11-17 | Microsoft Technology Licensing, Llc | Motion vector estimation for video image stabilization |
US9578240B2 (en) | 2010-02-11 | 2017-02-21 | Microsoft Technology Licensing, Llc | Generic platform video image stabilization |
US9824426B2 (en) | 2011-08-01 | 2017-11-21 | Microsoft Technology Licensing, Llc | Reduced latency video stabilization |
JPWO2015107887A1 (ja) * | 2014-01-15 | 2017-03-23 | 日本電気株式会社 | 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 |
US10349071B2 (en) | 2014-01-15 | 2019-07-09 | Nec Corporation | Motion vector searching apparatus, motion vector searching method, and storage medium storing motion vector searching program |
WO2015107887A1 (ja) * | 2014-01-15 | 2015-07-23 | 日本電気株式会社 | 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 |
CN113498609A (zh) * | 2018-12-31 | 2021-10-12 | 北京达佳互联信息技术有限公司 | 用于视频编解码的依赖图片分辨率的配置 |
CN113498609B (zh) * | 2018-12-31 | 2023-06-20 | 北京达佳互联信息技术有限公司 | 用于视频编解码的依赖图片分辨率的配置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4154661B2 (ja) | 画像処理装置および方法、記録媒体、並びにプログラム | |
US10818018B2 (en) | Image processing apparatus, image processing method, and non-transitory computer-readable storage medium | |
KR101302781B1 (ko) | 화상 처리 장치 및 방법, 및 기록 매체 | |
JP3837575B2 (ja) | 超解像処理の高速化方法 | |
US9674441B2 (en) | Image processing apparatus, image processing method, and storage medium | |
CN1734500A (zh) | 利用基于模型的稳健贝叶斯估算计算较高分辨率图像 | |
US8085986B2 (en) | Image processing apparatus and method for processing images more naturally and sharply | |
JP2012177676A (ja) | 画像処理装置および方法、並びにプログラム | |
JP5107409B2 (ja) | 動き領域の非線形スムージングを用いた動き検出方法およびフィルタリング方法 | |
WO2013089265A1 (ja) | 辞書作成装置、画像処理装置、画像処理システム、辞書作成方法、画像処理方法及びプログラム | |
US11062464B2 (en) | Image processing apparatus, method, and storage medium to derive optical flow | |
JP2009147807A (ja) | 画像処理装置 | |
KR20180122548A (ko) | 이미지를 처리하는 방법 및 장치 | |
JP5163429B2 (ja) | 動きベクトル検出装置、その処理方法およびプログラム | |
JP2008053875A (ja) | 画像処理装置および方法、プログラム、並びにプログラム格納媒体 | |
JP2011229080A (ja) | 画像一致点検出装置、画像一致点検出方法および記録媒体 | |
WO2013089261A1 (ja) | 画像処理システム及び画像処理方法 | |
WO2010023982A1 (ja) | 動きベクトル検出装置および画像処理装置 | |
JP2010114596A (ja) | 動きベクトル検出装置、その処理方法およびプログラム | |
JP4020093B2 (ja) | 縁検出方法及び装置及びプログラム及び記憶媒体及び枠検出方法及び装置及びプログラム及び記憶媒体 | |
JP6178646B2 (ja) | 撮像装置及び像振れ補正処理方法 | |
JP2016164709A (ja) | 画像処理装置、撮像装置および画像処理プログラム | |
US11164286B2 (en) | Image processing apparatus, image processing method, and storage medium | |
JP2005339535A (ja) | 相違度の計算 | |
JP5928465B2 (ja) | 劣化復元システム、劣化復元方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20091110 |