以下、図面を参照して本発明の実施形態を説明する。なお、本開示の図面を通じて、同様の構成には同じ符号を付し、その説明を省略又は簡略化する。
<第1実施形態>
図1乃至図11を参照して、本発明の第1実施形態について説明する。図1は、本実施形態に係る撮像装置100の機能的構成を模式的に示すブロック図である。撮像装置100は、例えば、コンパクトデジタルカメラ、一眼レフカメラ、カメラ付きスマートフォン、車載カメラなどであり、本発明を実現するための構成を備える。撮像装置100は、撮像部101、測距部104、画像処理部110、位置姿勢推定部118、表示部120を備える。画像処理部110は、記憶部111、特徴点抽出部112、動きベクトル演算部113、距離演算部114、探索間隔決定部115、対応点探索部116を含む。例えば、画像処理部110、位置姿勢推定部118が、画像処理装置を構成する。
撮像部101は、レンズ102、撮像素子103を備え、観賞用又は表示用の画像を撮影する撮像手段として機能する。レンズ102は、被写体から放出された光を集光し、撮像素子103上に光学像を形成する。撮像素子103は、光学像を電子像に変換して画像データ(撮影画像)を画像処理部110に時系列に出力する。この時系列に撮影された画像データ列を画像Xというものとする。
測距部104は、レンズ105、撮像素子106、光源107を備え、撮像装置100から被写体までの距離を計測する撮像手段又は測距手段として機能する。この測距には、例えば、TOF(Time of Flight)方式又はLIDAR(Light Detection and Ranging)方式が用いられる。光源107は例えば赤外線光源などであり、レンズ105、撮像素子106は赤外線の光学像を形成するように設計される。レンズ105は、光源107から照射されて被写体によって反射された光を集光し、撮像素子106上に光学像を形成する。撮像素子106は、光学像を電子像に変換して画像データを時系列に出力する。測距部104は、画像Xの撮影時刻と略同時刻に被写体を撮影する。測距部104によって取得される画像を画像Yというものとし、この画像Yは、例えば、撮像装置100から被写体までの距離が色又は濃淡で表された距離画像列である。
記憶部111は、例えば、撮像装置100に内蔵された半導体記憶装置などであり、撮像部101、測距部104によって撮影及び取得された画像X、画像Yを記憶する。また、記憶部111は、異なる時刻に撮影及び取得された画像X又は画像Yにおける特徴点の対応点を探索する際の対応点探索範囲、撮像部101のレンズ102の焦点距離及び収差係数、撮像素子103の画素数などの各種光学パラメータを記憶する。
特徴点抽出部112は、記憶部111に記憶された画像Xから特徴点を抽出する。本実施形態では、特徴点抽出部112は、画像Xから複数の特徴点を抽出する。例えば、詳細を後述するように、特徴点抽出部112は、時系列の撮影画像から少なくとも2つの特徴点P1、P2を含む特徴点を抽出する特徴点抽出手段として機能する。
動きベクトル演算部113は、特徴点抽出部112によって抽出された各特徴点に対して動きベクトルを算出する。例えば、詳細を後述するように、動きベクトル演算部113は、特徴点P1、P2の動きベクトルの大きさV1、V2をそれぞれ算出する動きベクトル演算手段として機能する。
距離演算部114は、特徴点抽出部112によって抽出された各特徴点について、画像Yを用いて撮像装置100から被写体位置までの距離を算出する。詳細を後述するように、距離演算部114は、特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2に関する距離情報を取得する距離演算手段として機能する。この距離情報は、必要に応じて、被写体距離Z1と被写体距離Z2との相対関係に関する情報であってもよいし、それぞれの絶対値に関する情報であってもよい。
探索間隔決定部115は、動きベクトル演算部113によって算出された各特徴点の動きベクトル、距離演算部114によって算出された各特徴点の被写体距離に基づいて、対応点探索のためのフレーム間隔(以下、「探索フレーム間隔」という)を算出する。詳細を後述するように、探索間隔決定部115は、特徴点P1の対応点探索のための計算精度が特徴点P2の対応点探索のための計算精度よりも相対的に高くなるように、各対応点を特定するための探索パラメータを決定する探索パラメータ決定手段として機能する。本実施形態では、探索パラメータは探索フレーム間隔であり、探索間隔決定部115は、特徴点P1に対する探索フレーム間隔F1が特徴点P2に対する探索フレーム間隔F2よりも相対的に短くなるように探索フレーム間隔F1、F2を決定する。
対応点探索部116は、探索間隔決定部115で算出された探索フレーム間隔を用いて対応点探索を実行する。すなわち、対応点探索部116は、探索フレーム間隔F1、F2(探索パラメータ)に基づいて各対応点をそれぞれ探索する対応点探索手段として機能する。
位置姿勢推定部118は、記憶部111に記憶された撮像部101の光学パラメータ、対応点探索部116によって決定された対応点に基づいて、撮像装置100の自己位置姿勢推定、被写体位置推定を行う位置姿勢推定手段として機能する。これにより、位置姿勢推定部118は、表示部120における文字又はアニメーションの表示方法を決定することができる。自己位置姿勢推定の詳細については後述する。
表示部120は、撮像装置100がカメラ又はスマートフォンである場合のそのディスプレイであってもよいし、撮像装置100が車載カメラである場合のその車載カメラに接続されたモニタなどであってもよい。表示部120は、位置姿勢推定部118によって算出された結果に基づいて、被写体の3次元マップを表示するように構成されてもよいし、マップ上に自車位置を表示するように構成されてもよい。
図2、図3は、本実施形態に係る画像処理装置(特に画像処理部110)によって実行される画像処理方法を示すフローチャートである。図2に示す画像処理はステップS201〜S217を含み、ステップS212は図3に示すステップS301〜S304を含む。
ステップS201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点(特徴点A、特徴点B、特徴点C・・・)を抽出する。特徴点の抽出方法はSIFT(Scale Invariant Feature Transform)、SURF(Speeded Up Robust Features)、HOG(Histogram of Oriented Gradient)、Haar−likeなどであればよいが、他の方法が採用されてもよい。画像Xの撮影時刻の進行に応じて取得される被写体像に変化が生じる場合には、特徴点抽出部112は新たに特徴点を抽出する。ステップS202において、探索間隔決定部115が、全ての特徴点に対して探索フレーム間隔Fを初期値として決定する。
ステップS203において、第2フレーム以降のループが開始される。このループの処理において撮像部101又は測距部104は、第2フレーム以降の画像X又は画像Yの撮影及び取得を実行するように構成されてもよく、この場合には処理全体のリアルタイム性が高まる。ただし、撮像部101又は測距部104が先に第2フレーム以降の画像X又は画像Yの撮影及び取得を実行するように構成されてもよい。ステップS204において、特徴点に対する処理のループが開始される。このループは、抽出された全ての特徴点に対して実行されてもよいし、特定の特徴点のみに本開示の画像処理方法が適用される場合にはその特定の特徴点のみに対して実行されてもよい。
ステップS205において、探索間隔決定部115が、探索フレーム間隔Fを変更するか否かを予め決定された変更判定条件に基づいて判定する。この変更判定条件は、記憶部111に記憶されている。変更判定条件は、例えば、100フレームに1度の頻度で探索フレーム間隔Fを変更することを規定するものであってもよいし、対応点探索に失敗した特徴点が発生した場合に探索フレーム間隔Fを変更することを規定するものであってもよい。探索フレーム間隔Fを変更する場合(ステップS205、YES)、処理はステップS206に進み、探索フレーム間隔Fを変更しない場合(ステップS205、NO)、処理はステップS213に進む。
ステップS206において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルVを算出する。動きベクトルVの算出は、異なる時刻に撮影された画像に対して特徴点の対応点を算出して画像間で対応点の差分を用いて実行されてもよいし、LucasKanade法などを用いて実行されてもよい。
ステップS207において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。被写体距離Zは、記憶部111に画像Yが記憶されている場合には画像Yを用いて算出される。
ステップS208において、特徴点抽出部112が、その時点までに探索フレーム間隔Fが決定されたフレームが存在するか否かを判定する。探索フレーム間隔Fが決定されたフレームが存在する場合(ステップS208、YES)、処理はステップS209に進み、探索フレーム間隔Fが決定されたフレームが存在しない場合(ステップS208、NO)、処理はステップS211に進む。
ステップS209において、特徴点抽出部112は、探索フレーム間隔Fが未決定である特徴点を暫定的に特徴点P1と定義する。ステップS210において、特徴点抽出部112は、探索フレーム間隔Fが決定された特徴点のうち、特徴点P1に対して最小の被写体距離Zを有する特徴点を暫定的に特徴点P2と定義する。なお、探索フレーム間隔Fが決定されたフレームが存在しない場合、特徴点抽出部112は、2つの特徴点を抽出して、この2つの特徴点を暫定的に特徴点P1、P2と定義する(ステップS211)。
ステップS212において、距離演算部114が、暫定的に定義された特徴点P1、P2から特徴点P1、P2を確定し、探索間隔決定部115が、確定された特徴点P1、P2に対して探索フレーム間隔F1、F2をそれぞれ決定する。ステップS212の詳細については後述する。
ステップS213において、対応点探索部116が、現在のフレームにおいて各特徴点について対応点探索を実行するか否かを判定する。対応点探索を実行すると判定された場合(ステップS213、YES)、処理はステップS214に進み、対応点探索を実行しないと判定された場合(ステップS213、NO)、処理はステップS215に進む。ステップS214において対応点探索部116が対応点探索計算を実行し、ステップS215において対応点探索部116が対応点予測計算を実行する。対応点探索計算及び対応点予測計算の詳細については後述する。そして、ステップS216において、特徴点に対する処理のループが終了し、ステップS217において、第2フレーム以降の処理が終了する。
ここで、図3に示すフローチャートを用いてステップS212について詳細に説明する。まず、一部を上述したように、各パラメータが以下のように定義される。特徴点P1、P2についての被写体距離ZはそれぞれZ1、Z2であり、特徴点P1、P2についての動きベクトルVの大きさはそれぞれV1、V2であり、特徴点P1、P2についての探索フレーム間隔FはそれぞれF1、F2である。被写体距離Z1、Z2は図2のステップS207において算出されており、動きベクトルV1、V2は図2のステップS206において算出されている。そして、探索フレーム間隔F1、F2が、本フローによって決定される。また、ある時刻での任意の特徴点の位置を基準として、他の時刻での対応点を探索する際の画像上の探索範囲の大きさの1/2(半分)が、半対応点探索範囲S(以下、「半探索範囲S」という)と定義される。この半探索範囲Sは、記憶部111に予め記憶されている。
ステップS301(図2のステップS210又はS211の後)において、距離演算部114が、被写体距離Z1と被写体距離Z2とを比較する。Z1≦Z2である場合(ステップS301、YES)、処理はステップS303に進む。それ以外の場合、すなわち、Z1>Z2の場合(ステップS301、NO)、処理はステップS302に進み、距離演算部114又は探索間隔決定部115は、特徴点P1と特徴点P2の定義を入れ替える。したがって、いずれの場合であっても、処理がステップS303に移行する前に、特徴点P1の被写体距離Z1が特徴点P2の被写体距離Z2以下となるように特徴点P1、P2が定義され、この定義が確定される。すなわち、第1の被写体距離が第2の被写体距離以下であるように第1、第2の特徴点が定義される。
ステップS303において、探索間隔決定部115は、F2≦S/V2を満たすように探索フレーム間隔F2を決定する。そして、ステップS304において、探索間隔決定部115は、探索フレーム間隔F1を、F1=[F2×Z1/Z2]と決定する。なお、[x]は、xを下回らない最小の整数を示す。例えば、[4.3]=5である。なお、ステップS304において、単にF1≦F2を満たすように探索フレーム間隔F1、F2が決定されてもよい。すなわち、第1の探索フレーム間隔が第2の探索フレーム間隔以下となる。この場合、動きベクトルV1、V2を算出する必要がなく、処理の簡素化によって計算負荷が軽減される。ステップS304が終了すると、処理は図2のステップS213に進む。
図4乃至図8を用いて、撮像装置(カメラ)の動きと被写体像の動きの関係を説明するとともに、画像処理における特徴点に対する対応点の探索のための対応点探索の原理を説明する。
上述した従来の技術において、例えば、カメラの並進及び回転が発生している状態から回転が終了して並進のみが残るようなカメラの複雑な動きに対して、被写体像の動きが追跡されないことがある。特に、カメラの並進による被写体像の動きの方向に対して、カメラの回転による被写体像の動きが反対方向になる場合には、カメラの動きが大きいにもかかわらず被写体像の動きは小さくなる。例えば、被写体像の動きが小さいことに応じて長いフレーム間隔が適用されていると、カメラの回転が停止して並進のみが継続した場合に被写体像の動きが瞬時に大きくなり、被写体像の対応点が追跡されなくなる。逆に、短いフレーム間隔が適用されていれば、この問題に対処可能となるものの、計算負荷が増大してしまう。これに対処するため、例えば、対応点が探索不能となった時点の直前の被写体像の動きに基づいて、外挿などによって対応点を予測する方法が考えられる。しかし、この方法では、カメラの急な動きに対して予測位置と真の対応点位置との誤差が大きくなる可能性があり、対応点の探索精度が低下し得る。このように、従来技術では、対応点探索において、高い計算精度と低い計算負荷とを両立できないという問題があった。本発明によれば、相対的に近距離側の特徴点に対して相対的に短い探索フレーム間隔Fが設定され、相対的に遠距離側の特徴点に対して相対的に長い探索フレーム間隔Fが設定される。
図4に、異なる被写体距離の被写体像に対してカメラが並進した場合の被写体像間の動きベクトルの相違を示す。図4に示すように、画像400は、カメラ(画像400を撮影するカメラ)から相対的に近い被写体像(家屋)及びカメラから相対的に遠い被写体像(山及び雲)を含む。なお、本開示において、撮像装置から相対的に近い被写体を近距離被写体といい、撮像装置から相対的に遠い被写体を遠距離被写体というものとする。言い換えると、近距離被写体及び遠距離被写体という表現は、相対的表現であり、絶対的表現ではない。近距離被写体像上に特徴点401が定義され、遠距離被写体像上に特徴点402が定義される。ここで、カメラが被写体とともに左方向に並進すると、特徴点401、402は画像400上で右方向に移動し、これに伴うそれぞれの動きベクトル403、404が発生する。動きベクトル403、404の大きさをそれぞれV1、V2とする。この場合、カメラの並進のみが行われているものとすると、近距離被写体像の特徴点401の動きベクトル403の大きさV1は、遠距離被写体像の特徴点402の動きベクトル404の大きさV2よりも大きくなり、すなわち、V1>V2となる。この動きベクトルの大きさの相違を、図5、図6を用いて説明する。
図5に、カメラが被写体とともに横並進した場合の各部の幾何関係を示す。なお、横並進とは、カメラがその光軸に対して垂直な方向に移動することをいう。図5に示すように、被写体501をカメラ502で撮影すると、画像503上に被写体501の被写体像504が映し出される。被写体501はカメラ502の光軸上でカメラ502から被写体距離Zの位置にあり、被写体像504は画像503の中心に位置する。ここで、カメラ502が距離dだけ横並進すると、被写体像504の移動量Δyは、以下の式(1)のように計算される。
Δy=f×d/Z ・・・式(1)
なお、fはカメラ502のレンズの焦点距離であり、レンズの収差の影響は無視できるものとする。式(1)から、被写体像の移動量Δyは被写体距離Zに反比例し、被写体距離Zが小さい被写体ほどその像の動きが大きくなることが分かる。
図6は、カメラが縦並進した場合の各部の幾何関係を示す。なお、縦並進とは、カメラがその光軸方向に移動することをいう。図6に示すように、被写体601をカメラ602で撮影すると、画像603上に被写体601の被写体像604が映し出される。被写体601はカメラ602に対して画角ωで被写体距離zの位置にあるので、画像603の中心から被写体像604の距離y0はy0=f×tanωで表される。ここで、カメラ602が距離dだけ縦並進すると、カメラ602から被写体601に向かう方向を正とした場合、画像603の中心からの被写体像604の距離yは、y=Z/(Z−d)×f×tanωで表される。したがって、被写体像604の移動量Δyは、以下の式(2)のように計算される。
Δy=y−y0
=d/(Z−d)×f×tanω ・・・式(2)
式(2)から、被写体像の移動量Δyは被写体距離Zに反比例し、被写体距離Zが小さい被写体ほど被写体像の動きが大きくなることが分かる。
以上の説明から分かるように、カメラの横並進及び縦並進のいずれの場合についても、カメラから被写体までの被写体距離が小さいほどその被写体像の動きが大きくなる。したがって、図4に関して説明したように、近距離被写体像の特徴点401の動きベクトル403の大きさV1は、遠距離被写体像の特徴点402の動きベクトル404の大きさV2よりも大きくなる。
図7に、異なる被写体距離の被写体像に対してカメラが並進及び回転した場合、特に、並進と回転が逆向きに、すなわち相互に打ち消す方向に発生した場合の被写体像間の動きベクトルの相違を示す。図4の例と同様に、図7に示すように、画像700は、近距離被写体像(家屋)及び遠距離被写体像(山、雲)を含む。近距離被写体像上に特徴点401が定義され、遠距離被写体像上に特徴点402が定義される。ここで、カメラが左方向に並進し、かつ右方向に回転すると、特徴点401、402は画像400上で右方向に移動し、これに伴うそれぞれの動きベクトル703、704が発生する。動きベクトル703、704の大きさをそれぞれV1、V2とする。この場合、近距離被写体像の特徴点401の動きベクトル703の大きさV1は、遠距離被写体像の特徴点402の動きベクトル704の大きさV2よりも小さくなり、すなわち、V1<V2となる。この動きベクトルの大きさの相違について図8を用いて説明する。
図8に、カメラの並進と回転が逆向きに(相互に打ち消す方向に)発生した場合の各部の幾何関係を示す。図8に示すように、被写体801をカメラ802で撮影すると、画像803上に被写体801の像804が映し出される。被写体801はカメラ802の光軸上でカメラ802から被写体距離zの位置にあり、像804は画像803の中心に位置する。ここで、カメラ802が距離dだけ横並進(右並進)し、かつ角度θだけ回転(右回転)すると、像804の移動量Δyは、以下の式(3)のように計算される。
Δy=f×tan{arctan(d/Z+θ)}
=f×(d/Z+tanθ)/(1−d/z×tanθ) ・・・式(3)
ここで説明するように、カメラの回転が並進と逆方向の場合、θ<0であるから、tanθ<0となる。したがって、式(3)の分子が減少した結果として、移動量Δyも減少する。特に、Z>>dの場合には、移動量Δyについて、分子のtanθが支配的となる。従って、被写体距離Zが小さい被写体ほど被写体像の動きが大きくなることから、探索フレーム間隔Fを小さくすることが好ましい。
図9に、探索フレーム間隔F1、F2の設定例を示す。画像列900は、画像Xに含まれる連続した複数のフレーム、すなわち、第nフレーム、第(n+1)フレーム、・・・第(n+F1)フレーム、・・・第(n+F2)フレーム、・・・、第(n+CM(F1、F2))フレームを含む。なお、F1<F2であり、CM(F1、F2)は、F1、F2の最小公倍数である。図9の各画像400における各×印は、対応点探索された特徴点401(P1)又は特徴点402(P2)を示す。すなわち、特徴点401の対応点は、第nフレーム、第(n+F1)フレーム、第(n+2F1)フレーム(不図示)、・・・、第(n+CM(F1、F2))フレーム、・・・において探索される。一方、特徴点402の対応点は、第nフレーム、第(n+F2)フレーム、第(n+2F2)フレーム(不図示)、・・・において探索される。したがって、第nフレーム、第(n+CM(F1、F2))フレーム、第(n+2CM(F1、F2))フレーム(不図示)、・・・では、特徴点401、402の双方の対応点が探索される。
図10を用いて、探索フレーム間隔F1、F2の決定方法についてさらに説明する。図10に、特徴点402(P2)についての動きベクトルと探索範囲との関係を示す。図10に示すように、探索範囲1001において、特徴点402が動きベクトル1002(大きさV2)で移動する。半探索範囲1003は、探索範囲1001の一辺(底辺)の長さの半分によって規定され、長さSを有する。この半探索範囲1003内で特徴点402の対応点が探索される。ベクトル集合1004は、探索フレーム間隔F2毎の動きベクトル1002を連接させたものであり、ベクトル集合1004の長さはF2×V2となる。このベクトル集合1004の長さF2×V2が半探索範囲1003の長さS以下であれば、対応点が探索範囲外とならず、対応点を探索範囲内で特定することができる(すなわち、画像処理装置が特徴点を「見失う」ことがない)。したがって、探索フレーム間隔F2は、F2≦S/V2を満たすように決定される。
図7を再度参照して、探索フレーム間隔F1についてさらに検討する。前述したように、特徴点401(P1)の被写体距離Z1は、特徴点402(P2)の被写体距離Z2よりも小さい。特徴点401(P1)、402(P2)について、回転の影響によって相応の大きさの動きベクトルが双方に発生するが、特徴点401(P1)については、回転を打ち消す方向の並進の影響によって動きベクトル703の増加が減殺される。その結果として、特徴点401(P1)、402(P2)のそれぞれの動きベクトル703の大きさV1、動きベクトル704の大きさV2については、V1<V2となり得る。ここで、撮像装置100の回転が止まった瞬間に、回転によって打ち消されていた並進に起因する動きベクトル703が瞬時に増大する。比較的小さなV1に応じて、F1≦S/V1からF1を比較的大きな値に設定されると、特徴点401(P1)の対応点が探索範囲外となってしまう可能性がある。このような回転及び並進が発生している状態から並進のみが残る場合も考慮して、探索フレーム間隔F1は、F1≦F2を満たすように決定される。
探索フレーム間隔F1についてさらに検討する。撮像装置100の横並進に関して、図5、式(1)を再度参照すると、撮像装置100の横並進に対する被写体像504の移動量Δyは被写体距離Zに反比例することから、対応する動きベクトルの大きさも被写体距離Zに反比例する。これにより、特徴点401(P1)、402(P2)について、V1=V2×Z1/Z2が成り立つ。したがって、探索フレーム間隔F1についても、F1=[F2×Z1/Z2]を満たすように探索フレーム間隔F1を決定することによって、近距離被写体についても、遠距離被写体と同様に対応点が探索範囲外とならずにその追従性が確保される。したがって、探索間隔決定部115は、F1=[F2×Z1/Z2]となるように探索フレーム間隔F1を決定することが好ましい。
上記のように決定される探索フレーム間隔F1は、縦並進の状況における対応点探索に対しても同様に好適な設定となる。図6、式(2)を再度参照すると、Z>>dである場合には、式(2)は、以下の式(4)のように近似される。
Δy≒d/Z×f×tanω ・・・(4)
この場合、被写体像604の移動量は被写体距離Zに反比例することになるため、好ましい探索フレーム間隔Fの条件は、横並進の場合と実質的に同様となる。例えば、望遠レンズを用いる撮影においては、カメラの動きに対して被写体距離Zが十分に大きいことが多く、Z>>dが成り立つため、本開示の画像処理装置が適用可能となる。これにより、撮像装置100が車両に搭載された車載カメラである場合、直進車両から遠方を撮影する際に、本画像処理装置によって対応点対策が実行される画像を車内に設置された表示部120(ディスプレイ)にリアルタイムに表示することが可能となる。
図11に、探索フレーム間隔F1、F2の設定例を示す。図9の例と同様に、画像列900は、画像Xに含まれる連続した複数のフレーム、すなわち、第nフレーム、第(n+1)フレーム、・・・第(n+F1)フレーム、・・・第(n+F2)フレーム、・・・、第(n+CM(F1、F2))フレームを含む。なお、F1<F2であり、CM(F1、F2)は、F1、F2の最小公倍数である。図11の各画像400において、各×印は対応点探索された特徴点401(P1)又は特徴点402(P2)を示し、各〇印は、対応点探索ではなく×印における対応点探索に基づいて予測された特徴点(対応点)を示す。図9の例と同様に、特徴点401の対応点は、第nフレーム、第(n+F1)フレーム、第(n+2F1)フレーム(不図示)、・・・において探索される。一方、特徴点402の対応点は、第nフレーム、第(n+F2)フレーム、第(n+2F2)フレーム(不図示)、・・・において探索される。例えば、第(n+1)フレームにおける特徴点401、402の予測位置である対応点1101、1102は、第nフレーム以前のフレームにおける特徴点401、402の位置から外挿などの方法によってそれぞれ予測される。
次に、位置姿勢推定部118によって実行される自己位置姿勢推定の処理について説明する。一般に、自己位置姿勢推定の処理は、画像上での特徴点の動き及びレンズの焦点距離、収差、画面サイズなどの光学パラメータから、撮像装置(カメラ)の位置及び姿勢を推定するとともに、それと同時に特徴点に対応する被写体の位置を推定するように構成される。したがって、各種推定のリアルタイム性が望まれる状況においてもその計算量が大きく、高速処理によるリアルタイム性の向上と計算量の増加による推定精度の向上の両立が課題となる。本実施形態では、画像処理部110によって各フレームにおける画像上の特徴点の位置(対応点)が探索及び決定されるので、位置姿勢推定部118はこの対応点探索の結果を利用することができる。これにより、推定精度を低下させることなくリアルタイム性を向上することが可能となる。
具体的には、対応点探索が実行されていない特徴点について、図11に関して上述した対応点の予測位置を用いて自己位置姿勢推定が実行され得る。全てのフレームに対して自己位置姿勢推定が実行される場合に、対応点探索にかかる計算を減少させることが可能となる。対応点が予測されたフレームに対して自己位置姿勢又は被写体位置の推定が行われる場合、対応点予測による誤差が予測結果に重畳し得る一方で、対応点探索の計算量が低減される。例えば、図11の第(n+1)フレームでは、特徴点の対応点探索が行われずに予測値が算出されるので、対応点の探索精度は減少するものの計算量は低減される。また、全ての特徴点について対応点探索が実行されたフレームに対してのみ自己位置姿勢推定が行われると、対応点探索に要する計算量が減少するだけでなく、自己位置姿勢推定に要する計算量も減少し得る。自己位置姿勢推定の結果は、間引かれたフレームのタイミングに対するものとなるため、自己位置姿勢推定が実行されたタイミングの結果から、自己位置姿勢推定が実行されなかったタイミングの結果を予測することができる。自己位置姿勢の予測には、補間、外挿などの方法が用いられてもよいし、他の方法が用いられてもよい。
自己位置姿勢の予測が実行されたタイミングでは、予測ゆえの計算精度の低下は起こり得るが、計算量は大幅に低減される。例えば、図11において、第nフレーム、第(n+CM(F1、F2))フレーム、第(n+2CM(F1、F2))フレーム、・・・に対してのみ自己位置姿勢推定の計算が実行される場合を想定する。この場合、全てのフレームに対して計算を行う場合と比較して、自己位置推定には1/CM(F1、F2)倍の計算しか必要とならない。また、特徴点が3点以上ある場合には、指定した2点以上の特徴点の対応点探索のタイミングが重なった場合に自己位置姿勢推定の計算を行うことも可能となり、この場合、特徴点の増加に対する計算量の増加が抑制される。このように、本実施形態の画像処理装置を用いることによって、フレーム間における特徴点の対応点を高速に算出することができる。これにより、処理能力が低い撮像装置においても、自己位置姿勢推定のリアルタイム処理が可能となる。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、距離演算部114、探索間隔決定部115、対応点探索部116を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。被写体距離Z1は被写体距離Z2以下であるものとする。探索間隔決定部115は、特徴点P1の対応点を特定するための探索フレーム間隔F1が特徴点P2の対応点を特定するための探索フレーム間隔F2よりも相対的に短くなるように探索フレーム間隔F1、F2を決定する。対応点探索部116は、探索フレーム間隔F1、F2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に短い探索フレーム間隔Fが設定され、相対的に遠距離側の特徴点に対して相対的に長い探索フレーム間隔Fが設定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及び低い計算負荷での対応点探索が実現される。
<第2実施形態>
上記第1実施形態では、個々の特徴点について対応点探索のための探索フレーム間隔Fが決定される構成を示したが、本実施形態では同程度の被写体距離の特徴点については同じ探索フレーム間隔Fが用いられる構成を示す。
以下、図12乃至図15を参照して、本発明の第2実施形態について説明する。図12は、本実施形態に係る画像処理部1210の機能的構成を模式的に示すブロック図である。画像処理部1210は、第1実施形態の撮像装置100に含まれる画像処理部110の代替としての画像処理装置を構成する。画像処理部1210は、第1実施形態と同様の記憶部111、特徴点抽出部112、動きベクトル演算部113、距離演算部114、探索間隔決定部115、対応点探索部116に加えて、層分割部1217を含む。
本実施形態では、記憶部111は、第1実施形態と同様の画像X、画像Y、半探索範囲Sに加えて、被写体距離層情報(以下、「層情報」という)を記憶する。層情報は、撮像装置100から被写体距離毎に区切られた領域に関する情報である。層分割部1217は、距離演算部114の後段に配置される。層分割部1217は、層情報及び被写体距離に基づいて、特徴点を、相対的に小さい被写体距離範囲の層に属する特徴点(例えば、特徴点P1)及び相対的に大きい被写体距離範囲の層に属する特徴点(例えば、特徴点P2)に分類する層分割手段として機能する。そして、層分割部1217の後段の探索間隔決定部115は、分割された層に対してそれぞれ探索フレーム間隔Fを決定する。
図13を用いて、層の定義、各層への特徴点の分類について説明する。図13に示すように、カメラ1300(撮像装置100に対応)の撮影範囲は、カメラ1300から同心円状に近い側から被写体距離に応じて層L1(領域1301)、層L2(領域1302)、層L3(領域1303)に分類される。例えば、被写体距離についてr0<r1<r2として、層L1は被写体距離がr0未満の領域1301に対応し、層L2は被写体距離がr0以上r1未満の領域1302に対応し、層L3は被写体距離がr1以上の領域1303に対応する。なお、最外層となる層L3は、被写体距離がr1以上r2未満の領域と定義されてもよい。
このように、層分割部1217は、層情報に基づいて撮影領域を上記の層L1、L2、L3に分割する。そして、層分割部1217は、距離演算部114によって算出された被写体距離Zに基づいて、r1≦Z<r2となる特徴点を層L1に分類し、r2≦Z<r3となる特徴点を層L2に分類し、r2≦Zとなる特徴点を層L3に分類する。なお、層分割部1217は、層分類演算部と表現されてもよい。図13の例においては、特徴点1304、1307が層L1に分類され、特徴点1305、1308が層L2に分類され、特徴点1306、1309が層L3に分類される。
探索間隔決定部115は、層L1に属する特徴点、層L2に属する特徴点、層L3に属する特徴点に対してそれぞれ探索フレーム間隔F1、F2、F3を決定する。言い換えると、層L1に属する全特徴点について探索フレーム間隔F1で対応点探索が実行され、層L2に属する全特徴点について探索フレーム間隔F2で対応点探索が実行され、層L3に属する全特徴点について探索フレーム間隔F3で対応点探索が実行される。
具体的には、例えば、探索フレーム間隔F1、F2に着目した場合の探索フレーム間隔F1、F2の決定手法は第1実施形態と同様である。すなわち、まず、探索フレーム間隔F2が、F2≦S/V2を満たすように決定される。探索フレーム間隔F1は、F1≦F2を満たすように決定される。さらに、F1=[F2×Z1/Z2]となるように探索フレーム間隔F1を決定することが好ましい。もちろん、この決定手法は、相対的に近距離側の層に属する特徴点に対する探索フレーム間隔F1、相対的に遠距離側の層に属する特徴点に対する探索フレーム間隔F2について一般化可能である。また、複数の層が存在する場合、隣接する層同士で上記の探索フレーム間隔Fの決定が実行されてもよいし、隣接しない層同士で上記の探索フレーム間隔Fの決定が実行されてもよい。すなわち、上記例において、層L1〜L3が設定されている場合に、探索フレーム間隔F1は、探索フレーム間隔F2との関係で決定されてもよいし、探索フレーム間隔F3との関係で決定されてもよい。
図14は、本実施形態に係る画像処理部1210によって実行される画像処理方法を示すフローチャートである。図14に示すステップS201、S202、S204、S206、S207、S216は第1実施形態の対応するステップと同様であり、ステップS216の後にステップS1401が実行される。
第1実施形態と同様に、ステップS201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS202において、探索間隔決定部115が、全ての特徴点に対して探索フレーム間隔Fを初期値として決定する。ステップS203において第2フレーム以降のループが開始され、ステップS204において特徴点に対する処理のループが開始される。ステップS206において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルの大きさVを算出する。ステップS207において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。そして、ステップS216において、特徴点に対する処理のループが終了する。
ステップS1401において、層分割部1217が、記憶部111に記憶された層情報に従って遠距離側の層(図13の例では層L3)から順に処理を行うループを開始する。ステップS1402において、層分割部1217は、ステップS207において算出された各特徴点に対する被写体距離Zに基づいて、現在の層に属する特徴点を特定する。
ステップS1403において、動きベクトル演算部113が、現在の層の動きベクトルを求める。層の動きベクトルは、ステップS1402において現在の層に分類された特徴点の動きベクトルから算出され得る。例えば、現在の層に属する特徴点の動きベクトルの平均値が層の動きベクトルと定義されてもよいし、ある特定の特徴点(代表となる特徴点)が現在の層の動きベクトルと定義されてもよいし、その他の定義が用いられてもよい。特に、以下に示すように、上記の特定の特徴点に関して、現在の層に属する特徴点のうち最小の被写体距離Zを有する特徴点が特定の特徴点として定義されることが好ましい。
図15に、撮像装置(カメラ1300)と層の幾何関係を示す。層L1〜L2(領域1301〜1303)は、図13による定義に従う。特徴点1501、1502、1503は、それぞれ層L1、L2、L3に属し、かつ属する層の中で最小の被写体距離Zを有する。動きベクトル1504、1505、1506は、それぞれ特徴点1501、1502、1503に対する動きベクトルである。カメラ1300の並進のみが発生した場合、被写体距離Zが小さい被写体像(特徴点)の動きが大きくなるので、動きベクトル1504、1505、1506は、層L1、L2、L3においてそれぞれ最大となる。このように、ある層内で被写体距離Zが最小となる特徴点は当該層内で最大の動きベクトルを有し得るため、この特徴点が探索範囲内となれば、当該層内の他の特徴点が探索範囲外となる可能性、すなわち対応点が見失われる可能性が低減する。
ステップS1404において、距離演算部114又は層分割部1217は、現在の層についての被写体距離(以下、「層距離」という)を特定する。例えば、層距離は、現在の層の距離範囲の中間値(例えば、層L2の場合の(r1+r2)/2)であってもよいし、最小値(例えば、層L2の場合のr1)であってもよいし、他の値であってもよい。あるいは、現在の層において最小の被写体距離を有する特徴点の被写体距離Zであってもよい。この場合、ステップS1403に関して説明したのと同様の理由により、当該層内の他の特徴点が探索範囲外となる可能性、すなわち対応点が見失われる可能性が低減する。
ステップS1405において、層分割部1217は、現在の層が、設定された層のうちの最大の距離範囲を有する層(最遠層)か否かを判定する。現在の層が最遠層である場合(ステップS1405、YES)、処理はステップS1406に進み、現在の層が最遠層でない場合(ステップS1405、NO)、処理はステップS1407に進む。
ステップS1406において、探索間隔決定部115が、ステップS1403で決定された層の動きベクトルの大きさVを用いて、現在の層に属する特徴点の探索フレーム間隔Fを決定する。ステップS1406における探索フレーム間隔Fの決定は、第1実施形態において説明したステップS303と同様の態様で行われてもよいし、他の態様で行われてもよい。
ステップS1407において、探索間隔決定部115は、ステップS1404で決定された現在の層の層距離、前回ループでのステップS1406で決定された最遠層に対する探索フレーム間隔Fに基づいて、現在の層の探索フレーム間隔Fを決定する。ステップS1407における探索フレーム間隔Fの決定は、第1実施形態において説明したステップS304と同様の態様で行われてもよいし、他の態様で行われてもよい。これにより、カメラ1300(撮像装置100)の並進及びその並進を打ち消す方向に回転が発生している場合でも、対応点が探索範囲外とならず、すなわち対応点が見失われることなく特定され得る。最も近距離側の層についてステップS1407が終了すると、ステップS1408において、処理は層のループを終了する。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、距離演算部114、探索間隔決定部115、対応点探索部116、層分割部1217を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。層分割部1217は、撮影画像を被写体距離の範囲に応じた複数の層に分類する。被写体距離Z1は被写体距離Z2以下であるものとする。探索間隔決定部115は、特徴点P1が含まれる層に属する対応点を探索するための探索フレーム間隔F1が、特徴点P2が含まれる層に属する対応点を探索するための探索フレーム間隔F2以下となるように、探索フレーム間隔F1、F2を決定する。対応点探索部116は、探索フレーム間隔F1、F2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、第1実施形態と同様に、相対的に近距離側の特徴点に対して相対的に短い探索フレーム間隔Fが設定され、相対的に遠距離側の特徴点に対して相対的に長い探索フレーム間隔Fが設定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及び低い計算負荷での対応点探索が可能となる。
ここで、本実施形態の更なる効果を説明する。特徴点が層に分類されずに各特徴点について探索フレーム間隔Fが決定される場合、実質的に同じ被写体距離にある2つの特徴点に対して対応点の探索フレームと予測フレームとの間に相違が生じ得る。例えば、図9の例では、特徴点401の対応点探索と特徴点402の対応点探索とが異なる探索フレーム間隔Fで実行される場合を想定する。この場合、第nフレーム、第(n+F1)フレーム、第(n+F2)フレーム、第(n+2F1)フレーム、第(n+2F2)フレーム・・・において対応点探索が実行されることになる。これに対して、本実施形態では、特徴点が層に分類され、同じ層内に属する特徴点に対して同一の探索フレーム間隔Fで対応点探索が実行されるので、対応点探索の回数を減少させることができる。図11の例において、特徴点401の対応点探索と特徴点402の対応点探索が同じ探索フレーム間隔F(F1=F2)であるとすると、第nフレーム、第(n+F1)フレーム、第(n+2F1)フレーム、・・・だけで対応点探索が実行されることになる。したがって、このような処理によって対応点探索に伴う計算量をさらに低減することが可能となる。
<第3実施形態>
上記第1、第2実施形態では、半探索範囲Sが一定であり、探索フレーム間隔Fが被写体距離Zに応じて変更される構成を示したが、本実施形態では、探索フレーム間隔Fが一定であり、半探索範囲Sが被写体距離に応じて変更される構成を示す。
以下、図16乃至図18を参照して、本発明の第3実施形態について説明する。図16は、本実施形態に係る画像処理部1610の機能的構成を模式的に示すブロック図である。画像処理部1610は、第1実施形態の撮像装置100に含まれる画像処理部110の代替となる画像処理装置を構成する。画像処理部1610は、第1実施形態と同様の記憶部111、特徴点抽出部112、動きベクトル演算部113、距離演算部114、対応点探索部116に加えて、探索範囲決定部1615を含む。言い換えると、本実施形態では、第1実施形態の探索間隔決定部115の代わりに探索範囲決定部1615が設けられる。
本実施形態では、記憶部111は、第1実施形態と同様の画像X、画像Y、固定の探索フレーム間隔Fを記憶する。探索範囲決定部1615は、特徴点P1の対応点探索のための計算精度が特徴点P2の対応点探索のための計算精度よりも相対的に高くなるように、各対応点を特定するための探索パラメータを決定する探索パラメータ決定手段として機能する。本実施形態では、探索パラメータは半探索範囲であり、探索範囲決定部1615は、特徴点P1に対する半探索範囲S1(第1の探索範囲)が特徴点P2に対する半探索範囲S2(第2の探索範囲)よりも相対的に広くなるように半探索範囲S1、S2を決定する。
より具体的には、探索範囲決定部1615は、特徴点抽出部112によって定義された特徴点P1(近距離側)、P2(遠距離側)に対して、それぞれの動きベクトルの大きさV1、V2に基づいて、半探索範囲S1、S2を決定する。詳細を後述するように、探索範囲決定部1615は、特徴点P2について、S2≧F×V2を満たすように半探索範囲S2を決定する。また、探索範囲決定部1615は、特徴点P1について、S1=F×V2を満たすように半探索範囲S2を決定する。特に、S2=F×V2、かつS1=S2×Z2/Z1とした場合には、探索範囲が最小化され、計算量の低減が可能となる。あるいは、単に、第1の探索範囲が第2の探索範囲以上、すなわち、S1≧S2のみを満たすようにS1、S2が決定されてもよい。この場合、動きベクトル演算部113による動きベクトルの演算が不要となり、処理が簡素化される。
図17、図18は、本実施形態に係る画像処理部1610によって実行される画像処理方法を示すフローチャートである。図17に示すステップS201、S203、S204、S206、S207、S211、S214、S216、S217並びに図18に示すステップS301、S302は、第1実施形態の対応するステップと同様である。
ステップS201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS1702において、探索範囲決定部1615が、全ての特徴点に対して半探索範囲Sを初期値として決定する。ステップS203において第2フレーム以降のループが開始され、ステップS204において特徴点に対する処理のループが開始される。
ステップS1705において、探索範囲決定部1615が、半探索範囲Sを変更するか否かを予め決定された変更判定条件に基づいて判定する。この変更判定条件は、記憶部111に記憶されている。変更判定条件は、例えば、100フレームに1度の頻度で半探索範囲Sを変更することを規定するものであってもよいし、対応点探索に失敗した特徴点が発生した場合に半探索範囲Sを変更することを規定するものであってもよい。半探索範囲Sを変更する場合(ステップS1705、YES)、処理はステップS206に進み、半探索範囲Sを変更しない場合(ステップS1705、NO)、処理はステップS214に進む。
ステップS206において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルVを算出する。ステップS207において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。
ステップS1708において、特徴点抽出部112が、その時点までに半探索範囲Sが決定されたフレームが存在するか否かを判定する。半探索範囲Sが決定されたフレームが存在する場合(ステップS1708、YES)、処理はステップS1709に進み、半探索範囲Sが決定されたフレームが存在しない場合(ステップS1708、NO)、処理はステップS211に進む。
ステップS1709において、特徴点抽出部112は、半探索範囲Sが未決定である特徴点を暫定的に特徴点P1と定義する。ステップS1710において、特徴点抽出部112は、半探索範囲Sが決定された特徴点のうちの、特徴点P1に対して最小の被写体距離Zを有する特徴点を暫定的に特徴点P2と定義する。なお、半探索範囲Sが決定されたフレームが存在しない場合のステップS211では、特徴点抽出部112は、2つの特徴点を抽出して、この2つの特徴点を暫定的に特徴点P1、P2と定義する。
ステップS1712において、距離演算部114が、暫定的に定義された特徴点P1、P2から特徴点P1、P2を確定し、探索範囲決定部1601が、確定された特徴点P1、P2に対する半探索範囲S1、S2をそれぞれ決定する。ステップS1712の詳細については後述する。
ステップS214において、対応点探索部116が対応点探索計算を実行する。ステップS216において、特徴点に対する処理のループが終了し、ステップS217において、第2フレーム以降の処理が終了する。
ここで、図18に示すフローチャートを用いてステップS1712について詳細に説明する。まず、一部を上述したように、各パラメータが以下のように定義される。特徴点P1、P2についての被写体距離ZはそれぞれZ1、Z2であり、特徴点P1、P2についての動きベクトルVの大きさはそれぞれV1、V2であり、特徴点P1、P2についての半探索範囲SはそれぞれS1、S2である。そして、半探索範囲S1、S2が、本フローによって決定される。
ステップS301(図2のステップS1710又はS211の後)において、距離演算部114が、被写体距離Z1と被写体距離Z2とを比較する。Z1≦Z2である場合(ステップS301、YES)、処理はステップS1803に進む。それ以外の場合、すなわち、Z1>Z2の場合(ステップS301、NO)、処理はステップS302に進み、距離演算部114又は探索範囲決定部1615は、特徴点P1と特徴点P2の定義を入れ替える。したがって、いずれの場合であっても、処理がステップS1803に移行する前に、特徴点P1の被写体距離Z1が特徴点P2の被写体距離Z2以下となるように特徴点P1、P2が定義され、この定義が確定される。
ステップS1803において、探索範囲決定部1615は、半探索範囲S2を、記憶部111に記憶された探索フレーム間隔F、動きベクトルの大きさV2から、S2≧F×V2を満たすように決定する。ステップS1804において、探索範囲決定部1615は、半探索範囲S1を、S1=S2×Z1/Z2と決定する。なお、ステップS1804において、単にS1≧S2を満たすように半探索範囲S1、S2が決定されてもよい。この場合、動きベクトルV1、V2を算出する必要がなく、処理の簡素化によって計算負荷が軽減される。ステップS1804が終了すると、処理は図17のステップS214に進む。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、距離演算部114、探索範囲決定部1615、対応点探索部116を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。被写体距離Z1が被写体距離Z2以下である場合に、探索範囲決定部1615は、特徴点P1に対する半探索範囲S1が特徴点P2に対する半探索範囲S2以上となるように半探索範囲S1、S2を決定する。対応点探索部116は、半探索範囲S1、S2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に広い探索範囲が設定され、相対的に遠距離側の特徴点に対して相対的に狭い探索範囲が設定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及び低い計算負荷での対応点探索が可能となる。また、全ての特徴点に対して同一の探索フレーム間隔Fで対応点探索が実行されるので、対応点探索フレームと対応点予測フレームとを揃えることができ、画像全体において対応点対策の計算負荷がより低減される。
<第4実施形態>
上記第3実施形態では、個々の特徴点について対応点探索のための半探索範囲Sが決定される構成を示したが、本実施形態では同程度の被写体距離の特徴点については同じ半探索範囲Sが用いられる構成を示す。
以下、図19、図20を参照して、本発明の第4実施形態について説明する。図19は、本実施形態に係る画像処理部1910の機能的構成を模式的に示すブロック図である。画像処理部1910は、第1実施形態の撮像装置100に含まれる画像処理部110の代替となる画像処理装置を構成する。画像処理部1910は、記憶部111、特徴点抽出部112、動きベクトル演算部113、距離演算部114、層分割部1217、探索範囲決定部1615、対応点探索部116を含む。
本実施形態では、層分割部1217が、第2実施形態と同様に、距離演算部114の後段に配置される。層分割部1217は、第2実施形態と同様の態様で、特徴点を、相対的に小さい被写体距離範囲の層に属する特徴点(特徴点P1)、相対的に大きい被写体距離範囲の層に属する特徴点(特徴点P2)に分類する。また、探索範囲決定部1615が、第3実施形態と同様に、対応点探索部116の前段に配置される。探索範囲決定部1615は、分割された層に対してそれぞれ半探索範囲Sを決定する。
例えば、撮影範囲が近距離側から層L1〜L3に分割されるものとする(第2実施形態参照)。探索範囲決定部1615は、層L1に属する特徴点、層L2に属する特徴点、層L3に属する特徴点に対してそれぞれ半探索範囲S1、S2、S3を決定する。言い換えると、層L1に属する全特徴点について半探索範囲S1で対応点探索が実行され、層L2に属する全特徴点について半探索範囲S2で対応点探索が実行され、層L3に属する全特徴点について半探索範囲S3で対応点探索が実行される。
例えば、半探索範囲S1、S2に着目した場合の半探索範囲S1、S2の決定手法は第3実施形態と同様である。この決定手法は、相対的に近距離側の層に属する特徴点に対する半探索範囲S1、相対的に遠距離側の層に属する特徴点に対する半探索範囲S2について一般化可能である。また、複数の層が存在する場合、隣接する層同士で上記の半探索範囲Sの決定が実行されてもよいし、隣接しない層同士で上記の半探索範囲Sの決定が実行されてもよい。すなわち、上記例において、層L1〜L3が設定されている場合に、半探索範囲S1は、半探索範囲S2との関係で決定されてもよいし、半探索範囲S3との関係で決定されてもよい。
図20は、本実施形態に係る画像処理部1910によって実行される画像処理方法を示すフローチャートである。図20において、ステップS201、S204、S206、S207、S216は、第1実施形態の対応するステップと同様である。また、ステップS1401〜S1405、S1408は第2実施形態の対応するステップと同様であり、ステップS1702は第3実施形態の対応するステップと同様である。
ステップS201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS1702において、探索範囲決定部1615が、全ての特徴点に対して半探索範囲Sを初期値として決定する。ステップS204において、特徴点に対する処理のループが開始される。ステップS206において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルVを算出する。ステップS207において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。ステップS216において、特徴点に対する処理のループが終了する。
ステップS1401において、層分割部1217が、記憶部111に記憶された層情報に従って遠距離側の層(図13の例では層L3)から順に処理を行うループを開始する。ステップS1402において、層分割部1217は、ステップS207において算出された各特徴点に対する被写体距離Zに基づいて、現在の層に属する特徴点を特定する。ステップS1403において、動きベクトル演算部113が、現在の層の動きベクトルを求める。層の動きベクトルは、ステップS1402において現在の層に分類された特徴点の動きベクトルから算出され得る。ステップS1404において、距離演算部114又は層分割部1217が、現在の層についての被写体距離(以下、「層距離」という)を特定する。
ステップS1405において、層分割部1217は、現在の層が、設定された層のうちの最大の距離範囲を有する層(最遠層)か否かを判定する。現在の層が最遠層である場合(ステップS1405、YES)、処理はステップS2006に進み、現在の層が最遠層でない場合(ステップS1405、NO)、処理はステップS2007に進む。
ステップS2006において、探索範囲決定部1615が、ステップS1403で決定された層の動きベクトルを用いて、現在の層に属する特徴点の半探索範囲Sを決定する。ステップS2006における半探索範囲Sの決定は、第3実施形態において説明したステップS1803と同様の態様で行われてもよいし、他の態様で行われてもよい。
ステップS2007において、探索範囲決定部1615は、ステップS1404で決定された現在の層の層距離、前回ループでのステップS2006で決定された最遠層に対する半探索範囲Sに基づいて、現在の層の半探索範囲Sを決定する。ステップS2007における半探索範囲Sの決定は、第3実施形態において説明したステップS1804と同様の態様で行われてもよいし、他の態様で行われてもよい。最も近距離側の層についてステップS2007が終了すると、ステップS1408において処理は層のループを終了する。
上述したように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、距離演算部114、探索範囲決定部1615、対応点探索部116、層分割部1217を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。層分割部1217は、撮影画像を被写体距離の範囲に応じた複数の層に分類する。被写体距離Z1が被写体距離Z2以下である場合、探索範囲決定部1615は、特徴点P1が含まれる層に属する対応点に対する半探索範囲S1が、特徴点P2が含まれる層に属する対応点に対する半探索範囲S2以上となるように半探索範囲S1、S2を決定する。対応点探索部116は、半探索範囲S1、S2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、第3実施形態と同様に、相対的に近距離側の特徴点に対して相対的に広い探索範囲が設定され、相対的に遠距離側の特徴点に対して相対的に狭い探索範囲が設定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及び低い計算負荷での対応点探索が可能となる。また、全ての特徴点に対して同一の探索フレーム間隔Fで対応点探索が実行されるので、対応点探索フレームと対応点予測フレームを揃えることができ、画像全体において対応点対策の計算負荷が低減可能となる。さらに、第2実施形態と同様に、階層化された対応点探索処理によって、対応点探索に伴う計算量をさらに低減することが可能となる。
<第5実施形態>
第5乃至第8実施形態では、第1乃至第4実施形態の構成に対して姿勢検出部が付加され、撮像装置(カメラ)の姿勢の検出結果が対応点探索処理に反映される構成を示す。なお、第5、第6、第7、第8実施形態の基本構成は、それぞれ第1、第2、第3、第4実施形態の基本構成に対応する。
図21乃至図32を参照して、本発明の第5実施形態について説明する。図21は、本実施形態に係る撮像装置2100の機能的構成を模式的に示すブロック図である。撮像装置2100は、例えば、コンパクトデジタルカメラ、一眼レフカメラ、カメラ付きスマートフォン、車載カメラなどであり、本発明を実現するための構成を備える。撮像装置2100は、撮像部101、測距部104、姿勢検出部2108、画像処理部2110、位置姿勢推定部118、表示部120を備える。また、画像処理部2110は、記憶部111、特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、探索間隔決定部115、対応点探索部116を含む。
姿勢検出部2108は、撮像装置2100の姿勢を検出する姿勢検出装置であり、例えばジャイロセンサなどである。なお、姿勢検出部2108によって検出される撮像装置2100の姿勢(以下、「姿勢情報」という)は、所定方向に相互に直交するように規定された3軸の各軸回りの回転を示す。姿勢検出部2108によって取得された姿勢情報は、記憶部111に記憶される。
並進動きベクトル演算部2113は、記憶部111に記憶されている姿勢情報を用いて、特徴点抽出部112によって抽出された特徴点に対する撮像装置2100の並進動きベクトルの大きさVを算出する。並進動きベクトルは、カメラの並進動きベクトルであり、カメラの姿勢変化から予測される対応点から実際の対応点までのベクトルである。具体的には、並進動きベクトル演算部2113は、時刻t1の姿勢情報、時刻t1後の時刻t2の姿勢情報に基づいて姿勢変化を特定し、この姿勢変化に基づいて特徴点Pに対する時刻t2での撮影画像上における位置Psを特定するベクトル演算手段として機能する。並進動きベクトル演算部2113によって演算された並進動きベクトルの大きさVは、探索間隔決定部115を介して対応点探索部116に入力される。対応点探索部116は、並進動きベクトル演算部2113によって特定された探索開始点Ps、探索間隔決定部115によって決定された探索フレーム間隔Fに基づいて特徴点Pに対する対応点を探索する。
図22、図23は、本実施形態に係る画像処理部2110によって実行される画像処理方法を示すフローチャートである。図22に示す画像処理はステップS2201〜S2217を含み、ステップS2207は図23に示すステップS2301〜S2305を含み、ステップS2210は図25に示すステップS2501〜S2503を含む。
ステップS2201〜S2205は、第1実施形態のステップS201〜S205と同様である。すなわち、ステップS2201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS2202において、探索間隔決定部115が、全ての特徴点に対して探索フレーム間隔Fを初期値として決定する。ステップS2203において第2フレーム以降のループが開始され、ステップS2204において特徴点に対する処理のループが開始される。ステップS2205において、探索間隔決定部115が、探索フレーム間隔Fを変更するか否かを予め決定された変更判定条件に基づいて判定する。探索フレーム間隔Fを変更する場合(ステップS2205、YES)、処理はステップS2206に進み、探索フレーム間隔Fを変更しない場合(ステップS2205、NO)、処理はステップS2213に進む。
ステップS2206において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。被写体距離Zは、記憶部111に画像Yが記憶されている場合には画像Yを用いて算出される。ステップS2207において、並進動きベクトル演算部2113が、現在の特徴点に対して並進動きベクトルの大きさVを算出する。ステップS2207の詳細は後述する。なお、ステップS2206とステップS2207の順序は逆であってもよい。
ステップS2208において、特徴点抽出部112が、その時点までに探索フレーム間隔Fが決定されたフレームが存在するか否かを判定する。探索フレーム間隔Fが決定されたフレームが存在する場合(ステップS2208、YES)、処理はステップS2209に進み、探索フレーム間隔Fが決定されたフレームが存在しない場合(ステップS2208、NO)、処理はステップS2211に進む。
ステップS2209において、特徴点抽出部112が、最大の被写体距離の特徴点を選出して特徴点P2に指定する。ステップS2210において、現在の特徴点の探索フレーム間隔Fを決定する。ステップS2210の詳細は後述する。ステップS2211において、探索間隔決定部115は、記憶部111に記憶された半探索範囲S、ステップS2207において算出された並進動きベクトルの大きさVを参照して、F≦S/Vを満たすように現在の特徴点に対する探索フレーム間隔Fを決定する。
ステップS2213〜S2217は、第1実施形態のステップS213〜S217と同様である。すなわち、ステップS2213において、対応点探索部116が、現在のフレームにおいて各特徴点について対応点探索を実行するか否かを判定する。対応点探索を実行すると判定された場合(ステップS2213、YES)、処理はステップS2214に進み、対応点探索を実行しないと判定された場合(ステップS2213、NO)、処理はステップS2215に進む。ステップS2214において対応点探索部116が対応点探索計算を実行し、ステップS2215において対応点探索部116が対応点予測計算を実行する。ステップS2216において、特徴点に対する処理のループが終了し、ステップS2217において、第2フレーム以降の処理が終了する。
ここで、図23に示すフローチャートを用いてステップS2207について詳細に説明する。ステップS2206の後のステップS2301において、現在のフレーム以前のフレームが抽出される。姿勢検出部2108はその検出値にわずかな誤差を含んでいるため、現在のフレームと以前のフレームとの間の撮影時刻の差に応じて誤差が蓄積され、この誤差の蓄積がドリフトをもたらし得る。したがって、ステップS2301において抽出されるフレームの撮影時刻は、現在のフレームの撮影時刻に近いことが好ましく、例えば、抽出されるフレームは直前のフレームであることが好ましい。
ステップS2302において、以前のフレームの撮影時刻から現在のフレームの撮影時刻の間のカメラの姿勢変化が、記憶部111から取得される。ステップS2303において、以前のフレームにおける特徴点位置、ステップS2302において取得された姿勢変化に基づいて、現在のフレームにおける対応点位置が予測される。ステップS2304において、予測値を探索開始点Psとして対応点探索が実行される。ステップS2305において、対応点と探索開始点Psの差分が、並進動きベクトルとして特定される。
ここで、ステップS2303における対応点位置の予測方法について説明する。なお、以下の説明では、撮像部101がピンホールカメラの結像関係を満たすものとするが、他の結像関係においても同様の予測方法が適用され得る。
以前のフレームにおける特徴点の画像上の位置を(x,y)とし、この特徴点に対する被写体位置を(X,Y,Z)とすると、相互の関係は以下の式(5)で表される。なお、被写体位置(X,Y,Z)は、カメラ座標における被写体位置である。
式(5)において、行列Aは、カメラ行列であり、以下の式(6)で表される。
式(6)において、f
x、f
yは撮像部101のレンズ102の焦点距離のx成分、y成分をそれぞれ表し、c
x、c
yは撮像部101の撮像素子103の中心座標のx成分、y成分をそれぞれ表す。
ここで、以前のフレーム撮影時刻から現在のフレームの撮影時刻の間に、撮像装置2100が回転角度θ
x、θ
y、θ
zだけ回転したことを姿勢検出部2108が検出したものとする。回転角度θ
x、θ
y、θ
zは、それぞれ撮像装置2100のx軸回り、y軸回り、z軸回りの回転角である。この回転後の特徴点の画像上の位置(x´,y´)と、特徴点に対応する被写体位置(X,Y,Z)との関係は、以下の式(7)で表される。
式(7)において、行列Rは、カメラ座標を回転させる回転行列であり、以下の式(8)で表される。
また、式(7)において、行列Z´は、以下の式(9)で表される。
式(5)を式(7)に代入して被写体位置(X,Y,Z)を消去すると、以前のフレームにおける特徴点の画像上の位置を(x,y)から回転後の特徴点の画像上の位置(x´,y´)への変換式は、以下の式(10)で表される。
ここで、A
−1は、Aの逆行列であり、以下の式(11)で表される。
また、βは、以下の式(12)で表される。
式(10)によって、撮像装置2100の回転に起因する像の移動から、現在のフレームにおける対応点予測位置が導出される。最終的な特徴点の対応点は、現在のフレームにおいて、位置(x´,y´)から画像内を探索することによって検出される。この処理は、撮像装置2100の回転に起因する像の動きを除去して、撮像装置2100の並進のみが発生した場合の対応点探索処理に相当する。
ここで、図24を参照して対応点探索の態様を説明する。図24に示す画像2400では、以前のフレームに写った像2401(破線)に対して現在のフレームに写った像2402(実線)が重ねられている。以前のフレームの撮影時刻から現在のフレームの撮影時刻の間に撮像装置2100の回転及び並進が発生したため、像2402の位置は像2401の位置から大きく移動している。対応点探索が実行されると、像2401上の特徴点2403の対応点2407は、像2402上において特定される。姿勢検出部2108によって検出された撮像装置2100の回転角を用いて特徴点2403の移動先位置が予測され、探索開始点2405が決定される。なお、ベクトル2404は、撮像装置2100の回転に起因する特徴点2403の動きベクトルである。探索開始点2405から対応点2407への並進動きベクトル2406は、撮像装置2100の並進に起因する特徴点2403の動きベクトルに相当する。再度になるが、本開示において、撮像装置2100の回転よって発生する動きベクトルであるカメラ回転動動きベクトルのことを回転動きベクトルといい、撮像装置2100の並進よって発生する動きベクトルであるカメラ並進動きベクトルのことを並進動きベクトルという。
探索開始点2405から探索範囲2408内で対応点探索が実行され、最終的な対応点2407が特定される。探索範囲2408は、特徴点2403から対応点2407を直接探索する場合の探索範囲よりも小さい。この探索は、撮像装置2100の回転による影響を除外して、並進のみが発生している場合の対応点探索を実行することに相当する。探索範囲2408が探索されているので、姿勢検出部2108によって検出される回転角にわずかな誤差が含まれていても対応点2407が探索範囲2408に含まれていれば、問題なく対応点探索が実行される。
次に、図25に示すフローチャートを用いてステップS2210について詳細に説明する。ステップS2209の後のステップS2501において、現在注目している特徴点(以下、「注目特徴点」という)の並進動きベクトルの大きさVと、被写体距離Zが最大の特徴点の並進動きベクトルの大きさV2とが比較される。V≦V2の場合(ステップS2501、YES)、処理はステップS2502に進む。V>V2の場合(ステップS2501、NO)、処理はステップS2503に進む。
ステップS2502において、被写体距離Zが最大の特徴点に対する被写体距離Z2、探索フレーム間隔F2、及び注目特徴点の被写体距離Zに基づいて、注目特徴点に対する探索フレーム間隔Fについて、F≦F2×Z/Z2を満たすFが決定される。一方、ステップS2503において、記憶部111に記憶された半探索範囲S、並進動きベクトルの大きさVに基づいて、注目特徴点に対する探索フレーム間隔Fについて、F≦S/Vを満たすFが決定される。なお、ステップS2502において、単に、F≦F2を満たすようにF、F2が決定されてもよい。この場合、並進動きベクトル演算部2113による並進動きベクトルの算出が不要となり、処理が簡素化される。
ここで、本実施形態でも、第1実施形態において図10を用いて説明したように、探索フレーム間隔F1、F2は、F2≦S/V2、かつF1≦F2を満たすように決定される。ここで、前述したように、姿勢検出部2108によって検出される撮像装置2100の回転角には誤差が含まれる。すなわち、回転角の誤差によって図24における探索開始点2405が実際の位置からずれ、並進動きベクトル406の算出に誤りが生じ得る。算出が正しかったとした場合と比較して、探索開始点405が対応点2407から遠い位置として決定されると、並進動きベクトル2406は過大なものとして算出されることになる。逆に、算出が正しかったとした場合と比較して、探索開始点405が対応点2407から近い位置として決定されると、並進動きベクトル2406は過小なものとして算出されることになる。
図26に、被写体距離と並進動きベクトルとの関係を示す。図26に示す画像2600では、以前のフレームに写った被写体像2601(破線)に対して現在のフレームに写った被写体像2602(実線)が重ねられている。以前のフレームの撮影時刻から現在のフレームの撮影時刻の間に撮像装置2100の回転及び並進が発生したため、被写体像2602の位置は被写体像2601の位置から大きく移動している。被写体像2601の特徴点2611は、特徴点2603よりも遠方にある。対応点探索が実行されると、被写体像2601上の特徴点2603、2611の対応点2607、2615が、それぞれ被写体像2602上において特定される。
被写体距離が小さい特徴点2603について、姿勢検出部2108によって検出された回転角の誤差によって、探索開始点2605は、実際の探索開始点2609よりも対応点2607に近い位置として決定される。これにより、撮像装置2100の回転に起因する回転動きベクトル2604の大きさは、実際の回転動きベクトル2608よりも大きく算出される。その結果、並進動きベクトル2606の大きさは、実際の並進動きベクトル2610よりも小さく算出される。そして、並進動きベクトル2606の大きさV1から、探索フレーム間隔Fが、F1≦S/V1に基づいて決定される。実際の並進が大きい場合でも、それに対して過大な探索フレーム間隔Fが設定され、その後の対応点探索が困難となり得る。
被写体距離が大きい特徴点2611について、姿勢検出部2108によって検出された回転角の誤差によって、探索開始点2613は、実際の探索開始点2618よりも対応点2615から遠い位置として決定される。これにより、撮像装置2100の回転に起因する回転動きベクトル2612の大きさは、実際の回転動きベクトル2616よりも大きく算出される。その結果、並進動きベクトル2614の大きさは、実際の並進動きベクトル2619よりも大きく算出される。ここで、特徴点2603の画角、特徴点2611の画角が実質的に同じであるとすると、回転動きベクトル2604、2612は実質的に同じであり、実際の回転動きベクトル2608、2616は実質的に同じである。並進動きベクトル2614の大きさV2から探索フレーム間隔F2がF2≦S/V2によって決定されると、実際のカメラ並進が小さい場合でも、それに対して過小な探索フレーム間隔Fが設定されてしまう。しかし、探索フレーム間隔Fが短く設定されても、その後の対応点探索において対応点が見失われることはないため、短い探索フレーム間隔Fの設定は問題とならない。
以上の理由から、F1≦F2となるように探索フレーム間隔F1が設定されることが好ましい。そして、前述の式(12)を参照すると、撮像装置2100の横並進に対する像の移動は被写体距離Zに反比例するため、像動きベクトルの大きさも被写体距離Zに反比例し、V1=V2×Z1/Z2が成り立つ。したがって、探索フレーム間隔Fについても、F1≦F2×Z1/Z2となるように設定されると、近距離被写体についても遠距離被写体と同様に、対応点を探索範囲内で特定することができる(すなわち、画像処理装置が特徴点を「見失う」ことがない)。したがって、探索フレーム間隔F1について、F1≦F2×Z1/Z2となるように設定されることが好ましい。
上述の方法により探索フレーム間隔Fが決定された後に、決定された探索フレーム間隔Fで対応点が探索される。この場合も、姿勢検出部2108によって検出される撮像装置2100の回転角を用いて探索開始点が決定され、対応点探索が実行される。ところで、回転角は探索フレーム間隔Fに相当する撮影間隔の時間積算値であるため、対応する時間にわたって積算される回転角がその後の処理で用いられる。すなわち、探索フレーム間隔Fが大きい場合には、積算される回転角も増大する。姿勢検出部2108によって出力された回転角はわずかな誤差を有するため、回転角の積算によってこの誤差も積算され、無視できない大きさのドリフトが発生し得る。これにより、探索開始点Psが対応点から大きく離れた位置に決定され、対応点が探索範囲を外れてしまい、対応点が特定されない可能性がある。これに対処するため、探索フレーム間隔Fが大きい特徴点ほど、広い探索範囲が設定される。
図27は図11と同様の探索フレーム間隔Fの設定例であり、特徴点401に対する対応点探索フレーム間隔は1である。特徴点401に対する対応点探索範囲2701、特徴点402に対する対応点探索範囲2702は、それぞれの対応点探索開始点を中心とした矩形領域である。対応点探索範囲2701は通常の対応点探索範囲と同じ大きさに設定される一方で、対応点探索範囲2702は通常の対応点探索範囲よりも広く設定される。これによって、探索フレーム間隔に相当する時間内にドリフトが発生しても、特徴点402の対応点は対応点探索範囲2702内にあり、探索可能となる。
図28を参照して、対応点探索範囲の決定について説明する。時間経過に対する姿勢検出部2108のドリフトの量は、予め推定されている。図28は、撮像装置2100に角度変化を与えずに静止した場合に姿勢検出部2108によって出力される角度のプロットを示す。横軸は時間を表し、縦軸は角度を表す。姿勢検出部2108によって出力される角度プロット2803を実線で示し、角度プロット2803の近似直線2804を破線で示す。近似直線2804は、実際の値である角度プロット2803が超えないように傾きが決められる。これにより、ドリフトの最悪値を用いて探索範囲を大きく設定することができるため、対応点探索の失敗が回避される。時間間隔2805は図27の特徴点402に対する探索フレーム間隔Fに相当する時間であり、この場合にはドリフト量δθは0.7°に設定される。なお、説明を簡単にするために1成分のドリフトが示されるが、実際には回転角θx、θy、θzに対するドリフト量δθx、δθy、δθzが予め計測されている。
図29を参照して、探索範囲の決定方法について説明する。図29に、ドリフト量と探索範囲の関係を示す。説明の便宜上、回転角に関してx軸の周りの回転角θxのみが検討されるが、回転角θy、回転角θz又はこれらの複合的な回転角についても同様の検討が当てはまる。探索開始点2901は、姿勢検出部2108によって出力された回転角に基づいて決定された位置である。これに対して、探索開始点2902は、ドリフトが回転角の正方向に付加された場合の計算位置である。この計算位置は、式(8)においてθx→θx+δθxとした場合に、式(10)によって計算される位置である。探索開始点2903は、ドリフトが回転角の負方向に付加された場合の計算位置である。この計算位置は、式(8)においてθx→θx−δθxとした場合に、式(10)によって計算される位置である。探索範囲2904は、探索開始点2902を中心とする探索範囲であり、通常の対応点探索に用いる大きさを有する。探索範囲2905も、同様に、探索開始点2903を中心とする探索範囲である。探索範囲2904、2905の双方を含む領域が探索範囲2906である。このように広い探索範囲2906を設定することで、ドリフト量が回転角の正負のどちらの方向に付加されても対応点探索が可能となる。ここでは、回転角θxのみが検討されるが、回転角θy、θzについても、正負のドリフト量に関して同様の計算が実行され、全ての探索範囲を含む大きさの探索範囲2906が設定され得る。
図30は、図11と同様の探索フレーム間隔の設定例を示す。図中の〇印は、特徴点401又は特徴点402の対応点探索を行わずに、×印を記したフレームで対応点探索を行った結果から予測された特徴点である。撮像装置2100の回転又は並進の速度が略一定の場合には、第n+1フレームにおける特徴点401の対応点3001は、他のフレームにおける対応点から外挿や補間などの方法によって予測可能である。例えば、リアルタイム処理の場合には第nフレーム以前のフレームにおける特徴点401の位置から外挿などの方法によって対応点3001が予測され得る。また、オフライン処理の場合には、第nフレーム以前のフレームと併せて第n+2フレーム以降のフレームも用いて補間などの方法により、対応点3001が予測され得る。また、撮像装置2100の回転が不規則である場合には、その回転に起因する動きベクトルは姿勢検出部2108が検出された回転角から算出される。これに対して、撮像装置2100の並進に起因する動きベクトルは、他のフレームにおける並進動きベクトルから外挿や補間などによって予測される。そして、上記双方の動きベクトルの加算によって合計の動きベクトルが算出され、合計の動きベクトルを用いて対応点3001が予測される。
図31を参照して、上記の予測方法を詳細に説明する。図31に、像の移動と動きベクトルを示す。画像3100では、図30の第nフレーム、第n+1フレーム、第n+2フレームが重ねられている。像が破線で示された第nフレーム、第n+2フレームにおいて探索された対応点を用いて、像が実線で示された第nフレームにおける対応点が予測される。第nフレームにおける対応点3102、第n+2フレームにおける対応点3110は、前述してきた対応点探索方法により特定されており、これらを用いて第nフレームにおける対応点3106が予測される。第n+2フレームにおける並進動きベクトル3109は、探索開始点3108からの差分で算出される。姿勢検出部2108は、第nフレームの撮影時刻と第n+1フレームの撮影時刻との間の撮像装置2100の回転角、第n+1フレームの撮影時刻と第n+2フレームの撮影時刻との間の撮像装置2100の回転角を出力する。これらの回転角の積算によって、第nフレームの撮影時刻と第n+2フレームの撮影時刻との間の撮像装置2100の回転角が算出される。撮像装置2100の回転角から回転動きベクトル3107を算出することによって、探索開始点3108を算出することができる。第nフレームにおける並進動きベクトル3101も、同様にして算出される。第n+1フレームにおける動きベクトルのうち、回転動きベクトル3103は、第nフレームの撮影時刻と第n+1フレームの撮影時刻との間の撮像装置2100の回転角を用いることによって算出可能である。残余の並進動きベクトル3105は、並進動きベクトル3101、3109を用いて予測される。
図32を用いて並進動きベクトルの補間方法を説明する。図32では、図31に示した各フレームの像から回転動きベクトルの縦成分が除去されており、探索開始点3104、3108の縦方向の位置は揃っている。線分3201は、回転動きベクトル除去後の対応点3102、3110を通る。線分3201の中点が第n+1フレームにおける対応点3106となるように、補間計算が実行される。これにより対応点3106と探索開始点3104の差から第n+1フレームにおける並進動きベクトル3105が算出される。第nフレームにおける対応点3102に回転動きベクトル3103(図31参照)と並進動きベクトル3105を加えた位置が、対応点3106の予測位置となる。なお、補間の手法は線形である必要はなく、第nフレーム以前のフレーム、第n+2フレーム以前のフレームなどを用いて多項式補間、スプライン補間など補間方法が採用され得る。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、探索間隔決定部115、対応点探索部116を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。被写体距離Z1は被写体距離Z2以下であるものとする。探索間隔決定部115は、特徴点P1の対応点を特定するための探索フレーム間隔F1が特徴点P2の対応点を特定するための探索フレーム間隔F2よりも相対的に短くなるように探索フレーム間隔F1、F2を決定する。並進動きベクトル演算部2113には、特徴点P1、P2が抽出された時刻t1における撮像装置2100の第1の姿勢情報、並びに特徴点P1、P2の対応点が特定される時刻t2における撮像装置2100の第2の姿勢情報が入力される。並進動きベクトル演算部2113は、第1の姿勢情報、第2の姿勢情報から撮像装置2100の姿勢変化を特定する。そして、並進動きベクトル演算部2113は、姿勢変化に基づいて特徴点P1に対する時刻t2での撮影画像上における位置Ps1、特徴点P2に対する時刻t2での撮影画像上における位置Ps2を計算する。対応点探索部116は、位置Ps1、Ps2を開始点として、探索フレーム間隔F1、F2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に短い探索フレーム間隔Fが設定され、相対的に遠距離側の特徴点に対して相対的に長い探索フレーム間隔Fが設定され、かつ対応点探索の開始点が適切に決定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及びより低い計算負荷での対応点探索が可能となる。
<第6実施形態>
上記第5実施形態では、個々の特徴点について対応点探索のための探索フレーム間隔Fが決定される構成を示したが、本実施形態では同程度の被写体距離の特徴点については同じ探索フレーム間隔Fが用いられる構成を示す。
以下、図33、図34を参照して、本発明の第6実施形態について説明する。図33は、本実施形態に係る画像処理部3310の機能的構成を模式的に示すブロック図である。画像処理部3310は、第5実施形態の撮像装置2100に含まれる画像処理部2110の代替となる画像処理装置を構成する。画像処理部3310は、第5実施形態と同様の記憶部111、特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、探索間隔決定部115、対応点探索部116に加えて、層分割部1217を含む。なお、本実施形態における層分割部1217による層分割手法は、第2実施形態に示したものと同様である。
図34は、本実施形態に係る画像処理部3310によって実行される画像処理方法を示すフローチャートである。図34に示すステップS2201、S2202、S2204、S2206、S2207、S2216は第5実施形態の対応するステップと同様であり、ステップS2216の後にステップS3401が実行される。
第5実施形態と同様に、ステップS2201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS2202において、探索間隔決定部115が、全ての特徴点に対して探索フレーム間隔Fを初期値として決定する。ステップS2203において第2フレーム以降のループが開始され、ステップS2204において特徴点に対する処理のループが開始される。ステップS2206において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。ステップS2207において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルの大きさVを算出する。そして、ステップS2216において、特徴点に対する処理のループが終了する。
ステップS3401において、層分割部1217が、記憶部111に記憶された層情報に従って遠距離側の層(図13の例では層L3)から順に処理を行うループを開始する。ステップS3402において、層分割部1217は、ステップS2206において算出された各特徴点に対する被写体距離Zに基づいて、現在の層に属する特徴点を特定する。
ステップS3403において、並進動きベクトル演算部2113が、現在の層の動きベクトル(並進動きベクトル)を求める。層の並進動きベクトルは、ステップS3402において現在の層に分類された特徴点の並進動きベクトルから算出され得る。例えば、現在の層に属する特徴点の並進動きベクトルの平均値が層の並進動きベクトルと定義されてもよいし、ある特定の特徴点(代表となる特徴点)が現在の層の並進動きベクトルと定義されてもよいし、その他の定義が用いられてもよい。特に、以下に示すように、上記の特定の特徴点に関して、現在の層に属する特徴点のうち最小の被写体距離Zを有する特徴点が特定の特徴点と定義されることが好ましい。撮像装置2100と層との関係は、第2実施形態において説明した図15に示す撮像装置100と層との関係と同様である。
ステップS3404において、距離演算部114又は層分割部1217は、現在の層についての被写体距離(以下、「層距離」という)を特定する。例えば、層距離は、現在の層の距離範囲の中間値(例えば、層L2の場合の(r1+r2)/2)であってもよいし、最小値(例えば、層L2の場合のr1)であってもよいし、他の値であってもよい。あるいは、現在の層において最小の被写体距離を有する特徴点の被写体距離Zであってもよい。この場合、ステップS3403に関して説明したのと同様の理由により、当該層内の他の特徴点が探索範囲外となる可能性、すなわち対応点が見失われる可能性が低減する。
ステップS3405において、層分割部1217は、現在の層が、設定された層のうちの最大の距離範囲を有する層(最遠層)か否かを判定する。現在の層が最遠層である場合(ステップS3405、YES)、処理はステップS3406に進み、現在の層が最遠層でない場合(ステップS3405、NO)、処理はステップS3407に進む。
ステップS3406において、探索間隔決定部115が、ステップS3403で決定された層の並進動きベクトルを用いて、現在の層に属する特徴点の探索フレーム間隔Fを決定する。ステップS3406における探索フレーム間隔Fの決定は、第5実施形態において説明したステップS2502と同様の態様で行われてもよいし、他の態様で行われてもよい。
ステップS3407において、探索間隔決定部115は、ステップS3404で決定された現在の層の層距離、前回ループでのステップS3406で決定された最遠層に対する探索フレーム間隔Fに基づいて、現在の層の探索フレーム間隔Fを決定する。ステップS1407における探索フレーム間隔Fの決定は、第5実施形態において説明したステップS2503と同様の態様で行われてもよいし、他の態様で行われてもよい。これにより、姿勢検出部2108によって出力される撮像装置2100の回転角に含まれ得る誤差に起因して並進動きベクトルが過小に算出されてしまった場合でも、対応点が探索範囲外とならず、すなわち対応点が見失われることなく特定され得る。最も近距離側の層についてステップS3407が終了すると、ステップS3408において処理は層のループを終了する。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、距離演算部114、探索間隔決定部115、対応点探索部116、並進動きベクトル演算部2113、層分割部1217を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。層分割部1217は、撮影画像を被写体距離の範囲に応じた複数の層に分類する。被写体距離Z1は被写体距離Z2以下であるものとする。探索間隔決定部115は、特徴点P1が含まれる層に属する対応点を探索するための探索フレーム間隔F1が、特徴点P2が含まれる層に属する対応点を探索するための探索フレーム間隔F2以下となるように、探索フレーム間隔F1、F2を決定する。並進動きベクトル演算部2113には、特徴点P1、P2が抽出された時刻t1における撮像装置2100の第1の姿勢情報並びに特徴点P1、P2の対応点が特定される時刻t2における撮像装置2100の第2の姿勢情報が入力される。並進動きベクトル演算部2113は、第1の姿勢情報と第2の姿勢情報から撮像装置2100の姿勢変化を特定する。そして、並進動きベクトル演算部2113は、姿勢変化に基づいて特徴点P1に対する時刻t2での撮影画像上における位置Ps1、特徴点P2に対する時刻t2での撮影画像上における位置Ps2を計算する。対応点探索部116は、位置Ps1、Ps2を開始点として、探索フレーム間隔F1、F2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に短い探索フレーム間隔Fが設定され、相対的に遠距離側の特徴点に対して相対的に長い探索フレーム間隔Fが設定され、かつ対応点探索の開始点が適切に決定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及びより低い計算負荷での対応点探索が可能となる。また、第2実施形態と同様に、階層化された対応点探索処理によって、対応点探索に伴う計算量をさらに低減することが可能となる。
<第7実施形態>
上記第5、第6実施形態では、半探索範囲Sが一定であり、探索フレーム間隔Fが被写体距離Zに応じて変更される構成を示したが、本実施形態では、探索フレーム間隔Fが一定であり、半探索範囲Sが被写体距離に応じて変更される構成を示す。
以下、図35乃至図37を参照して、本発明の第7実施形態について説明する。図35は、本実施形態に係る画像処理部3510の機能的構成を模式的に示すブロック図である。画像処理部3510は、第5実施形態の撮像装置2100に含まれる画像処理部2110の代替となる画像処理装置を構成する。画像処理部3510は、第5実施形態と同様の記憶部111、特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114及び対応点探索部116に加えて、探索範囲決定部1615を含む。言い換えると、本実施形態では、第5実施形態の探索間隔決定部115の代わりに探索範囲決定部1615が設けられる。
図36、図37は、本実施形態に係る画像処理部3510によって実行される画像処理方法を示すフローチャートである。図36に示すステップS2201、S2203、S2204、S2206、S2207、S2209、S2214、S2216、S2217は、第5実施形態の対応するステップと同様である。
ステップS2201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS3602において、探索範囲決定部1615が、全ての特徴点に対して半探索範囲Sを決定する。ステップS2203において第2フレーム以降のループが開始され、ステップS2204において特徴点に対する処理のループが開始される。
ステップS3605において、探索範囲決定部1615が、半探索範囲Sを変更するか否かを予め決定された変更判定条件に基づいて判定する。この変更判定条件は、記憶部111に記憶されている。変更判定条件は、例えば、100フレームに1度の頻度で半探索範囲Sを変更することを規定するものであってもよいし、対応点探索に失敗した特徴点が発生した場合に半探索範囲Sを変更することを規定するものであってもよい。半探索範囲Sを変更する場合(ステップS3605、YES)、処理はステップS2206に進み、半探索範囲Sを変更しない場合(ステップS3605、NO)、処理はステップS2214に進む。
ステップS2206において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。ステップS2207において、動きベクトル演算部113が、現在の特徴点に対して並進動きベクトルの大きさVを算出する。
ステップS3608において、特徴点抽出部112が、その時点までに半探索範囲Sが決定されたフレームが存在するか否かを判定する。半探索範囲Sが決定されたフレームが存在する場合(ステップS3608、YES)、処理はステップS2209に進み、半探索範囲Sが決定されたフレームが存在しない場合(ステップS3608、NO)、処理はステップS3611に進む。
ステップS2209において、特徴点抽出部112が、最大の被写体距離の特徴点を選出して特徴点P2に指定する。ステップS3610において、現在の特徴点の半探索範囲Sを決定する。ステップS3610の詳細は後述する。ステップS3611において、探索範囲決定部1615は、記憶部111に記憶された半探索範囲S、ステップS2207において算出された並進動きベクトルの大きさVを参照して、S≦F×Vを満たすように現在の特徴点に対する半探索範囲Sを決定する。
ここで、図37に示すフローチャートを用いてステップS3610について詳細に説明する。まず、一部を上述したように、各パラメータが以下のように定義される。特徴点P1、P2についての被写体距離ZはそれぞれZ1、Z2であり、特徴点P1、P2についての並進動きベクトルの大きさVはそれぞれV1、V2である。特徴点P1、P2についての半探索範囲SはそれぞれS1(第1の探索範囲)、S2(第2の探索範囲)であり、半探索範囲S1、S2が本フローによって決定される。
ステップS3701(図36のステップS2209の後)において、注目特徴点の並進動きベクトルの大きさVと、最大の被写体距離の特徴点の並進動きベクトルの大きさV2が比較される。V≦V2の場合(ステップS3701、YES)、ステップS3702に進む。V>V2の場合(ステップS3701、NO)、ステップS3703に進む。
ステップS3702では注目特徴点に対する半探索範囲Sを記憶部111に記憶された探索フレーム間隔Fと並進動きベクトルの大きさVに基づいて、S≧F×Vを満たす半探索範囲Sが決定される。ステップS3703では、最大の被写体距離の特徴点の被写体距離Z2、半探索範囲S2と注目特徴点の被写体距離Zを用いて、S≧S2×Z2/Zを満たすように注目特徴点に対する半探索範囲Sが決定される。ステップS3703において単に、S≧S2のみを満たすようにSが決定されてもよい。この場合、並進動きベクトル演算部2113による並進動きベクトルの大きさVの算出が不要となり、処理が簡素化される。上述してきたように、撮像装置2100の並進に対する像の動きは、被写体距離Zが小さいほど大きくなる。したがって、(被写体距離Zが相対的に小さい特徴点に対して相対的に短い探索フレーム間隔Fが設定されることが好ましいのと同様に)被写体距離が相対的に小さい特徴点に対して相対的に広い半探索範囲Sが設定されることが好ましい。特に、S=S2=F×V2である場合に、探索範囲が最小となり、計算量の最小化が可能となる。ステップS3702又はS3703が終了すると、処理は図36のステップS2214に進む。
ステップS2214において、対応点探索部116が、対応点探索計算を実行する。ステップS2216において特徴点に対する処理のループが終了し、ステップS2217において第2フレーム以降の処理が終了する。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、探索範囲決定部1615、対応点探索部116を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。被写体距離Z1が被写体距離Z2以下である場合に、探索範囲決定部1615は、特徴点P1に対する半探索範囲S1が特徴点P2に対する半探索範囲S2以上となるように半探索範囲S1、S2を決定する。並進動きベクトル演算部2113には、特徴点P1、P2が抽出された時刻t1における撮像装置2100の第1の姿勢情報並びに特徴点P1、P2の対応点が特定される時刻t2における撮像装置2100の第2の姿勢情報が入力される。並進動きベクトル演算部2113は、第1の姿勢情報、第2の姿勢情報から撮像装置2100の姿勢変化を特定する。そして、並進動きベクトル演算部2113は、姿勢変化に基づいて特徴点P1に対する時刻t2での撮影画像上における位置Ps1、特徴点P2に対する時刻t2での撮影画像上における位置Ps2を計算する。対応点探索部116は、位置Ps1、Ps2を開始点として、半探索範囲S1、S2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に広い探索範囲が設定され、相対的に遠距離側の特徴点に対して相対的に狭い探索範囲が設定され、かつ対応点探索の開始点が適切に決定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及び低い計算負荷での対応点探索が可能となる。また、全ての特徴点に対して同一の探索フレーム間隔Fで対応点探索が実行されるので、対応点探索フレームと対応点予測フレームを揃えることができ、画像全体において対応点対策の計算負荷が低減可能となる。
<第8実施形態>
上記第7実施形態では、個々の特徴点について対応点探索のための半探索範囲Sが決定される構成を示したが、本実施形態では同程度の被写体距離の特徴点については同じ半探索範囲Sが用いられる構成を示す。
以下、図38、図39を参照して、本発明の第8実施形態について説明する。図38は、本実施形態に係る画像処理部3810の機能的構成を模式的に示すブロック図である。画像処理部3810は、第5実施形態の撮像装置2100に含まれる画像処理部2110の代替となる画像処理装置を構成する。画像処理部3810は、記憶部111、特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、層分割部1217、探索範囲決定部1615、対応点探索部116を含む。
図39は、本実施形態に係る画像処理部3810によって実行される画像処理方法を示すフローチャートである。図39において、ステップS2201、S2204、S2206、S2207、S2216は、第5実施形態の対応するステップと同様である。また、ステップS3401〜S3405、S3408は第6実施形態の対応するステップと同様であり、ステップS3602は第3実施形態の対応するステップと同様である。
ステップS2201において、特徴点抽出部112が、画像Xの第1フレームから複数の特徴点を抽出する。ステップS3602において、探索範囲決定部1615が、全ての特徴点に対して半探索範囲Sを初期値として決定する。ステップS2204において、特徴点に対する処理のループが開始される。ステップS2206において、距離演算部114が、現在の特徴点に対して被写体距離Zを算出する。ステップS2207において、動きベクトル演算部113が、現在の特徴点に対して動きベクトルの大きさVを算出する。ステップS2216において、特徴点に対する処理のループが終了する。
ステップS3401において、層分割部1217が、記憶部111に記憶された層情報に従って遠距離側の層(図13の例では層L3)から順に処理を行うループを開始する。ステップS3402において、層分割部1217は、ステップS2206において算出された各特徴点に対する被写体距離Zに基づいて、現在の層に属する特徴点を特定する。ステップS3403において、並進動きベクトル演算部2113が、現在の層の並進動きベクトルを求める。層の並進動きベクトルは、ステップS3402において現在の層に分類された特徴点の並進動きベクトルから算出され得る。ステップS3404において、距離演算部114又は層分割部1217は、現在の層についての層距離を特定する。
ステップS3405において、層分割部1217は、現在の層が、設定された層のうちの最大の距離範囲を有する層(最遠層)か否かを判定する。現在の層が最遠層である場合(ステップS3405、YES)、処理はステップS3906に進み、現在の層が最遠層でない場合(ステップS3405、NO)、処理はステップS3907に進む。
ステップS3906において、探索範囲決定部1615が、ステップS3403で決定された層の並進動きベクトルを用いて、現在の層に属する特徴点の半探索範囲Sを決定する。ステップS3906における半探索範囲Sの決定は、第7実施形態において説明したステップS3703と同様の態様で行われてもよいし、他の態様で行われてもよい。
ステップS3907において、探索範囲決定部1615は、ステップS3404で決定された現在の層の層距離、前回ループでのステップS3906で決定された最遠層に対する半探索範囲Sに基づいて、現在の層の半探索範囲Sを決定する。ステップS3907における半探索範囲Sの決定は、第7実施形態において説明したステップS3704と同様の態様で行われてもよいし、他の態様で行われてもよい。最も近距離側の層についてステップS3907が終了すると、ステップS3408において処理は層のループを終了する。
以上のように、本実施形態によると、画像処理装置は、少なくとも特徴点抽出部112、並進動きベクトル演算部2113、距離演算部114、探索範囲決定部1615、対応点探索部116、層分割部1217を備える。特徴点抽出部112が時系列の撮影画像から少なくとも特徴点P1、P2を抽出し、距離演算部114が特徴点P1に対応する被写体までの被写体距離Z1、特徴点P2に対応する被写体までの被写体距離Z2の距離情報を取得する。被写体距離Z1は被写体距離Z2以下である場合、探索範囲決定部1615は、特徴点P1が含まれる層に属する対応点に対する半探索範囲S1が、特徴点P2が含まれる層に属する対応点に対する半探索範囲S2以上となるように半探索範囲S1、S2を決定する。並進動きベクトル演算部2113には、特徴点P1、P2が抽出された時刻t1における撮像装置2100の第1の姿勢情報並びに特徴点P1、P2の対応点が特定される時刻t2における撮像装置2100の第2の姿勢情報が入力される。並進動きベクトル演算部2113は、第1の姿勢情報、第2の姿勢情報から撮像装置2100の姿勢変化を特定する。そして、並進動きベクトル演算部2113は、姿勢変化に基づいて特徴点P1に対する時刻t2での撮影画像上における位置Ps1、特徴点P2に対する時刻t2での撮影画像上における位置Ps2を計算する。対応点探索部116は、位置Ps1、Ps2を開始点として、半探索範囲S1、S2に基づいて特徴点P1、P2のそれぞれの対応点を探索する。
これにより、相対的に近距離側の特徴点に対して相対的に広い探索範囲が設定され、相対的に遠距離側の特徴点に対して相対的に狭い探索範囲が設定され、かつ対応点探索の開始点が適切に決定される。したがって、例えば、カメラの並進及び回転が同時に発生した状態から回転が停止して並進のみが残るような複雑なカメラの動きに対しても高い計算精度及びより低い計算負荷での対応点探索が可能となる。また、全ての特徴点に対して同一の探索フレーム間隔Fで対応点探索が実行されるので、対応点探索フレームと対応点予測フレームを揃えることができ、画像全体において対応点対策の計算負荷が低減可能となる。また、第2、第4、第6実施形態と同様に、階層化された対応点探索処理によって対応点探索に伴う計算量をさらに低減することが可能となる。
<第9実施形態>
本発明の目的は、以下の実施形態によっても達成可能である。すなわち、上述の実施形態の機能(各演算部などの機能)を実現するソフトウェアのプログラムコード(画像処理プログラム)を格納した記憶又は記録媒体が、画像処理装置に供給される。そして、その演算部のコンピュータ(またはCPU、MPUなど)が、記憶媒体に格納されたプログラムコードを読み出し、上記機能を実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上述の実施形態の機能を実現することになり、そのプログラム(画像処理プログラム)及びこれを格納した記憶媒体は本発明を構成する。本発明のプログラム(画像処理プログラム)が、所定の結像光学系、所定の撮像部及びコンピュータを備えた撮像装置のコンピュータにインストールされることによって、撮像装置の高速かつ低負荷な対応点探索が可能となる。本発明のコンピュータは、記憶媒体による頒布の他、インターネットを通じて頒布可能である。
<変形実施形態>
以上に本発明の好適な実施形態を示したが、本発明は、例えば以下に示すように種々の態様に変形可能である。
(1)ステレオ測距方法の適用
上記各実施形態では、被写体距離の測定方法(測距方法)として、光源107を有する測距部104を利用するアクティブ測距を例示したが、ステレオカメラを利用するステレオ測距が用いられてもよい。この場合、撮像部101は視差を有する画像を撮影できるように構成され、この視差画像の視差量が読み取られて被写体距離に換算される。例えば、2組のレンズ及び撮像素子が設けられ、2つのレンズから被写体までの距離が異なっていれば基線長から定まる視差画像が得られる。このようなステレオ測距の使用により、測距部104が不要となり、安価かつ簡素な構成の撮像装置100、2100が実現される。
(2)単眼での測距方法の適用
一般に、カメラの自己位置指定推定の技術として、単眼カメラを用いて被写体の3次元位置及びカメラの位置を推定することができる。この推定結果から被写体距離を算出することが可能となる。1つの方法は、撮影時刻の異なる2枚の画像(X画像)を用いて視差量及びカメラの並進量から被写体距離を算出する方法である。他の方法は、既知の大きさの既知被写体が画像Xに写っている場合に、既知被写体像の大きさから既知被写体距離を算出し、この既知被写体距離から特徴点までの被写体距離を算出する方法である。このような単眼カメラを用いる自己位置姿勢推定技術によると、測距部104が不要となり、かつ撮像部101が複眼である必要もないため、更に安価かつ簡素な構成の撮像装置100、2100が実現される。
(3)動画圧縮機能又は手振れ補正機能への適用
上記各実施形態では、本発明が自己位置姿勢推定に適用される構成を示したが、本発明は動画圧縮又は手振れ補正の機能にも適用され得る。この場合、位置姿勢推定部118は、動画圧縮演算部又は手振れ補正処理部として機能する。動画圧縮への適用に関して、対応点探索部116は、探索した対応点から特徴点の動きベクトルを演算して、動きベクトルの大きさに応じて時間的な動画圧縮処理を決定する。表示部120は、圧縮された動画を表示及び再生する。上述してきた本発明の効果によって対応点の探索が高速に実行されるので、動画圧縮にかかる時間が短縮され、動画表示のリアルタイム性が向上する。また、手振れ補正への適用に関して、対応点探索部116は、探索した対応点から特徴点の動きベクトルを演算して、手ぶれ補正の方向又は量を決定する。上述してきた本発明の効果によって対応点の探索が高速に実行されるので、手振れ補正の方向又は量の算出にかかる時間が短縮され、高フレームレートでの動画撮影においても手振れ補正が可能となる。
(4)オフライン処理の実行
上記各実施形態では、撮像装置100、2100が画像X、画像Yの撮影から特徴点の対応点探索までの全処理が実行される構成を示したが、画像を撮影する撮像装置と対応点探索を行う画像処理装置は異なるハードウェアで実現されてもよい。例えば、画像処理装置がコンピュータで構成され、外部の撮像装置によって撮影された画像X、画像Yのデータが画像処理装置に読み込まれ得る。これにより、画像処理装置が、画像処理部110、1210、1610、1910、2110、3310、3510又は3810における一連の処理を実行するように構成され得る。画像X、画像Yの画像データの読み込みは、画像処理装置に有線接続された光学媒体又は半導体記憶装置を介して行われてもよいし、ネットワークなどを介して接続された記憶装置によって行われてもよい。読み込まれた画像データは記憶部111に記憶される。このように、撮影を行う撮像装置と対応点探索を行う画像処理装置を分離することによって、対応点探索の処理を高速化することが可能となる。これにより、例えば、高解像度の画像又は特徴点数の多い画像に対しても、対応点探索の低負荷な計算処理が可能となる。
<変形実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。