(58)【調査した分野】(Int.Cl.,DB名)
前記決定部は、前記最適撮像位置の前記適合度と、前記複数の撮像位置候補のうち次善の撮像位置候補の前記適合度との相違が予め定められた基準以上であることを必要条件として、前記未選択画像を前記選択画像セットに追加することを決定する請求項1に記載の処理装置。
前記決定部は、前記最適撮像位置の前記適合度と、前記複数の撮像位置候補のうち次善の撮像位置候補の前記適合度との相違が予め定められた基準以上であり、かつ、前記最適撮像位置の前記適合度が予め定められた閾値以上であることを必要条件として、前記未選択画像を前記選択画像セットに追加することを決定する請求項2に記載の処理装置。
前記複数の画像の中から画像中の対応点に基づいて2以上の画像を選択して初期の前記選択画像セットを生成する生成部を更に備える請求項1から3のいずれか一項に記載の処理装置。
前記初期値算出部は、前記選択画像セットに含まれる画像との間における画像中の対応点に基づいて、前記未選択画像について撮像位置の近似解を算出して撮像位置の候補の初期値とする請求項5または6に記載の処理装置。
前記初期値算出部は、前記複数の撮像位置候補の各初期値のうち前記適合度が最大となる初期値の前記適合度と、一の前記撮像位置候補における初期値の前記適合度との相違が予め定められた基準以上である場合に、前記一の撮像位置候補を削除する請求項5から7のいずれか一項に記載の処理装置。
前記提供部は、前記複数の画像のうち前記選択画像セットに含まれない全ての画像について、前記選択画像セットに追加しないことが決定された後に他のいずれの画像も前記選択画像セットに追加されなかったことに応じて、前記未選択画像の選択処理を終了する請求項9に記載の処理装置。
前記未選択画像が新たに前記選択画像セットに追加されたことに応じて、前記選択画像セットに含まれる各画像の撮像位置を調整する調整部を更に備える請求項1から10のいずれか一項に記載の処理装置。
前記選択画像セットに含まれるそれぞれの画像および撮像位置に基づいて、撮像対象の3次元形状を復元する復元部を更に備える請求項1から10のいずれか一項に記載の処理装置。
【発明を実施するための形態】
【0008】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0009】
図1は、本実施形態に係る処理装置100の構成例を示す。処理装置100は、異なる位置および向きから被写体を撮像した複数の画像に基づき、当該複数の画像のそれぞれの撮像位置を算出する。処理装置100は、画像毎に当該画像を撮像した撮像装置の撮像位置および向きの候補を複数算出し、算出結果に応じて被写体の3次元形状の復元に用いるか否かを判断する。処理装置100は、取得部110と、記憶部120と、生成部130と、算出部140と、選択部150と、決定部160と、調整部170と、提供部180と、復元部190とを備える。
【0010】
取得部110は、複数の画像を取得する。取得部110は、異なる撮像位置および向きから被写体を撮像した2次元画像を取得する。取得部110は、予め定められた形式でデータベース等の外部の記憶装置に記憶された複数の画像のデータを読み出して取得してよい。また、取得部110は、ネットワーク等に接続され、当該ネットワークを介して複数の画像を取得してもよい。また、取得部110は、撮像装置に接続され、当該撮像装置が撮像した2次元画像を取得してよく、これに代えて、撮像装置の内部に組み込まれて2次元画像を取得してもよい。取得部110は、取得した複数の画像を記憶部120に記憶する。
【0011】
記憶部120は、取得部110に接続され、受けとった複数の画像を記憶する。また、記憶部120は、複数の画像の中から選択されて撮像位置が算出された画像を含む選択画像セットを記憶する。また、記憶部120は、処理装置100が複数の画像を処理する過程で生成する(または利用する)中間データ、算出結果、およびパラメータ等をそれぞれ記憶してもよい。また、記憶部120は、処理装置100内の各部の要求に応じて、記憶したデータを要求元に供給してよい。例えば、記憶部120は、生成部130の要求に応じて記憶した複数の画像を当該生成部130に供給する。
【0012】
生成部130は、複数の画像の中から画像中の対応点に基づいて2以上の画像を選択して初期の選択画像セットを生成する。例えば、生成部130は、記憶部120に接続され、記憶部120から読み出した複数の画像のそれぞれにおける画像中の対応点を取得し、当該対応点の数に応じて2以上の画像を選択する。また、生成部130は、生成した初期の選択画像セットに含まれる画像の相対位置と、対応点の3次元空間上の座標を算出する。生成部130は、生成した初期の選択画像セットの情報を記憶部120に記憶する。
【0013】
算出部140は、記憶部120に接続され、読み出した選択画像セットに含まれる画像との間における画像中の対応点に基づいて、複数の画像のうち未選択画像についての撮像位置候補を複数算出する。算出部140は、生成部130に接続され、生成部130が初期の選択画像セットを生成した通知を受けとったことに応じて、撮像位置候補の算出を開始してよい。これに代えて、算出部140は、記憶部120に初期の選択画像セットが記憶されたことに応じて、撮像位置候補の算出を開始してもよい。算出部140は、初期値算出部142と、収束部144とを有する。
【0014】
初期値算出部142は、未選択画像についての撮像位置候補の初期値を複数算出する。初期値算出部142は、選択画像セットに含まれる画像との間における画像中の対応点に基づいて、複数の画像のうち未選択画像についての撮像位置候補の初期値を複数算出する。初期値算出部142は、未選択画像の画像中に含まれる複数の対応点のうち予め定められた数の対応点の組毎に、撮像位置候補の初期値をそれぞれ算出する。初期値算出部142は、予め定められた線形代数式を用いて、初期値を算出する。初期値算出部142は、算出した複数の初期値を収束部144に供給する。
【0015】
収束部144は、初期値算出部142に接続され、受けとった複数の撮像位置候補の各初期値から局所解へと撮像位置を収束させる。収束部144は、求根アルゴリズム等の数値解析により、複数の初期値から複数の局所解に収束させ、当該複数の局所解を複数の撮像位置候補とする。収束部144は、収束させた複数の撮像位置候補を、選択部150に供給する。
【0016】
選択部150は、算出部140に接続され、受けとった未選択画像についての複数の撮像位置候補のうち、対応点の適合度が最大である最適撮像位置を選択する。選択部150は、未選択画像の画像中に含まれる複数の対応点を用い、撮像位置候補毎に当該複数の対応点の適合度を算出してよい。選択部150は、選択した最適撮像位置と他の撮像位置の情報を、算出した対応点の適合度に対応付けて決定部160に供給する。
【0017】
決定部160は、選択部150に接続され、受けとった最適撮像位置の適合度と他の撮像位置候補の適合度とに基づいて、未選択画像を選択画像セットに追加するか否かを決定する。決定部160は、最適撮像位置の適合度が他の撮像位置の適合度と比較して予め定められた基準以上であることに応じて、未選択画像を選択画像セットに追加することを決定する。決定部160は、未選択画像の追加を決定した場合、記憶部120に記憶された選択画像セットに当該未選択画像を追加する。また、決定部160は、未選択画像を追加しないことを決定した場合、提供部180に当該決定結果を通知する。
【0018】
調整部170は、未選択画像が新たに選択画像セットに追加されたことに応じて、選択画像セットに含まれる各画像の撮像位置を調整する。調整部170は、決定部160に接続され、記憶部120に記憶された選択画像セットと、追加が決定された未選択画像との新たな選択画像セット内で、それぞれの画像の撮像位置を調整する。調整部170は、調整後の新たな選択画像セットを記憶部120に記憶し、選択画像セットを更新する。
【0019】
提供部180は、決定部160に接続され、未選択画像が選択画像セットに追加されなかった結果を取得する。提供部180は、当該結果を未選択画像に対応付けて記憶部120に記憶してもよい。これに代えて、提供部180は、記憶装置を有し、当該結果および未選択画像の情報を記憶してもよい。
【0020】
また、提供部180は、複数の画像のうち選択画像セットに含まれない画像の中から未選択画像を順次選択して算出部140へと提供する。提供部180は、選択画像セットに追加しないことが決定された画像を、他の画像が選択画像セットに追加された後に再び未選択画像として選択してよい。即ち、提供部180は、一旦、選択画像セットに追加しないことが決定された画像を、他の画像を選択画像セットに追加するか否かを決定した後に、未選択画像として算出部140へ提供して当該選択画像セットに追加するか否かを再び判断させる。
【0021】
復元部190は、記憶部120に接続され、選択画像セットに含まれるそれぞれの画像および撮像位置に基づいて、撮像対象の3次元形状を復元する。復元部190は、撮像対象である被写体の3次元座標を算出してよい。復元部190は、選択画像セットの画像の追加および更新が終了した後に、最後に更新された選択画像セットを用いて撮像対象の3次元形状を復元する。復元部190は、算出部140に接続され、選択画像セットの画像の追加および更新が終了した通知を算出部140から受けとってよい。
【0022】
以上の本実施形態に係る処理装置100は、撮像対象である被写体の3次元形状の復元に用いると判断した選択画像セットを用いて、当該被写体の3次元形状を復元する。処理装置100の選択画像セットの更新および3次元形状の復元の動作について、
図2を用いて説明する。
【0023】
図2は、本実施形態に係る処理装置100の動作フローを示す。本実施形態において、処理装置100は、S200からS350の処理を実行することにより、取得した複数の画像に基づき、当該複数の画像に撮像された被写体の3次元形状を復元する例を説明する。
【0024】
まず、取得部110は、複数の画像を取得する(S200)。取得部110は、画角が100°未満の略数十度程度の撮像装置で撮像された複数の画像を取得してよい。特に、取得部110は、画角が略50°程度以下の標準レンズ、望遠レンズ、およびズームレンズ等で撮像された複数の画像を取得してもよい。記憶部120は、取得部110が取得した複数の画像を記憶する。
【0025】
次に、生成部130は、記憶部120から複数の画像を読み出し、当該複数の画像のそれぞれに含まれる特徴点を取得する(S210)。ここで、特徴点は、複数の画像に撮像された被写体の特徴となる点、線、および形状等である。生成部130は、例えば、被写体の直線状の部分、角部、頂点、凸部、凹部、曲線状の形状、エッジ、輪郭、線の交点、交線の角度、色の変化点、輝度の変化点等を特徴点としてよい。生成部130は、画像毎に特徴点を取得する。
【0026】
次に、生成部130は、画像毎に取得した特徴点に基づき、画像間の対応点を取得する(S220)。ここで、一の画像と他の画像の対応点は、被写体の同一部分から取得した特徴点であり、互いに対応づけられる特徴点である。生成部130は、エッジ検出、領域分割、画像修復、輝度値変換、局所的な相関、マッチング、線形探索、およびユーザの手入力等を用いて、特徴点および対応点を取得してよい。
【0027】
また、生成部130は、SIFT(Scale−Invariant Feature Transform)、SURF(Speeded Up Robust Feators)、Harris、FAST(Features from Accelerated Segment Test)、Hessian−Affine、MSER(Maximally Stable Extremal Regions)、KAZE、ORB等の、既知のアルゴリズム等を用いて、特徴点および対応点を取得してよい。生成部130は、取得した対応点の情報を、取得した複数の画像のそれぞれと対応付けて記憶部120に記憶してよい。
【0028】
次に、生成部130は、初期の選択画像セットを生成する(S230)。生成部130は、複数の画像の組み合わせのうち、最も対応点の多い画像ペアを選択して、初期の選択画像セットとしてよい。また、生成部130は、最も対応点の多い画像が3以上ある場合、より特徴点が多い2つの画像を、初期の選択画像セットとしてよい。これに代えて、生成部130は、対応点の多い3以上の画像の組み合わせを、初期の選択画像セットとしてもよい。
【0029】
次に、生成部130は、生成した初期の選択画像セットにおける対応点の3次元空間上の座標を算出する(S240)。生成部130は、対応点の相対位置を算出してから、3次元空間上の座標を算出してよい。ここで、生成部130は、例えば、5点法(非特許文献3等を参照)および8点法等の、既知のアルゴリズム等を用いて、対応点の相対位置を算出する。即ち、生成部130は、初期の選択画像セットに対応点が5点または8点以上あることに基づいて、対応点の相対位置を算出する。ここで、初期の選択画像セットには、対応点が数十以上存在することが好ましく、また、百点以上あることがより好ましい。
【0030】
生成部130は、算出した対応点の相対位置に基づき、対応点の3次元空間上の座標を算出する。生成部130は、複数の対応点の相対位置が判明しているので、初期の選択画像セットに含まれる(一例として2枚の)画像を撮像した撮像装置の位置tおよび向きRを算出することができ、即ち、対応点の3次元空間上の座標を算出できる。生成部130は、このような初期の選択画像セットの情報を、記憶部120に記憶すると共に、算出部140に初期の選択画像セットを生成したことを通知してよい。
【0031】
このように、画像中の対応点の数が多い場合、既知のアルゴリズム等を用いて対応点の3次元空間上の座標を算出することができる。しかしながら、対応点の数が少なくなると、算出すべき撮像装置の配置(位置tおよび向きR)に複数の局所解が存在し、対応点の相対位置を正確に算出することが困難になる。局所解が存在する例を、
図3および
図4を用いて説明する。
【0032】
図3は、画角の広い撮像装置で画像を取得する例を示す。
図3は、異なる撮像装置10の位置および向きで撮像する例を示し、撮像された2つの画像には、7点の特徴点がそれぞれ含まれ、当該7点の特徴点が同一点を撮像した対応点として取得される。このように、より広範囲にわたって多くの対応点を含む画像を用いると、撮像装置10の配置AおよびBは局所解を有さず、一意に算出することができる。このような画像は、例えば、広角レンズおよび魚眼レンズ等の画角が100°以上のレンズを用いることで撮像できる場合がある。
【0033】
図4は、
図3の例と比較して画角が狭い撮像装置で画像を取得する例を示す。即ち、
図4は、異なる撮像装置10の位置および向きで撮像する例を示し、撮像された2つの画像には、3点の特徴点がそれぞれ含まれ、当該3点の特徴点が同一点を撮像した対応点として取得される。このように、限定された領域を撮像した画像を用いると、撮像装置10の位置および向きは、配置AおよびBの他に、配置CおよびD等の異なる局所解が存在することがわかる。
【0034】
このような画像は、例えば、標準レンズ、望遠レンズ、およびズームレンズ等で撮像された画像に多く、既知のアルゴリズム等では複数の局所解から正しい解を取得することが困難である。そこで、本実施形態に係る処理装置100は、複数の局所解が発生するような画角の狭い撮像装置で撮像した画像を用いても、当該画像のそれぞれの撮像位置を算出する。
【0035】
次に、算出部140は、記憶部120に記憶された複数の画像のうち未選択画像を1つ選択する(S250)。算出部140は、選択画像セットに含まれない複数の画像のうち、選択画像セットに含まれる画像との間において、最も対応点の多い画像を未選択画像として選択する。
【0036】
次に、初期値算出部142は、選択した未選択画像についての撮像位置候補の初期値を算出する(S260)。初期値算出部142は、選択画像セットに含まれる画像との間における画像中の対応点に基づいて、未選択画像について撮像位置の近似解を算出して撮像位置の候補の初期値とする。初期値算出部142は、次に説明するように、非線形制約付きの多次元関数となる目的関数を、制約無しの二次計画問題で近似した目的関数を用い、RANSAC(RANdom SAmple Consensus)として既知のアルゴリズムを用いて複数の近似解を算出する。
【0037】
図5は、本実施形態に係る撮像装置10が被写体20を撮像する場合の空間的配置の一例を示す。
図5において、撮像装置10は、A点およびB点において被写体20を撮像し、対応点q(q
x,q
y,q
z)
Tを含む画像をそれぞれ撮像する例を示す。ここで、Tは転置を意味し、グローバル座標上の対応点qを列ベクトルで示す。撮像装置10は、A点において、位置t
Aおよび向きR
Aで被写体20を撮像し、B点において、位置t
Bおよび向きR
Bで被写体20を撮像する。
【0038】
なお、位置tはグローバル座標上の1点であり、対応点qと同様に列ベクトルで示される。また、向きRは、x、y、z方向の向き(ベクトル)の合成で示され、例えば、次式のように行列式で示される。
【数1】
【0039】
A点において、撮像装置10の画角で撮像される対応点qは、撮像装置10の座標において、q'=(q
x',q
y',1)
Tと表すことができる。即ち、A点から距離1の面上の、座標(x',y')にq'が位置することを意味し、A点からq'までの線分の延長線上に、対応点qが位置する。ここで、撮像装置10の座標における対応点q'は、位置t
Aおよび向きR
Aでグローバル座標の対応点qを撮像した結果なので、次式が成立する。
【数2】
【0040】
(数2)式を変形することで、画像上の対応点q'は、次式のように示される。
【数3】
【0041】
なお、q'は、z成分が1になるので、(数3)式は次式のように表すことができる。
【数4】
【0042】
したがって、未選択画像の対応点の座標をp=(p
x,p
y,1)
Tとすると、R
Aおよびt
Aは、pと(数4)式で示されたq'との二乗誤差を最小にする。即ち、R
Aおよびt
Aは、次式を満たす。
【数5】
【0043】
なお、未選択画像が画角の狭い撮像装置で撮像され、限定された領域での対応点を用いると、(数5)式は、
図4でも説明したように、複数の局所解を有する多次元関数となる。また、当該多次元関数は、撮像装置の向きRについて、R
TR=1という非線形制約が付随するので、局所解を1つ得るとしても、膨大な計算量を必要とし、現実的な時間で正しい解を得ることは極めて困難である。
【0044】
そこで、本実施形態の算出部140は、当該目的関数を二次計画問題に近似して、複数の局所解を撮像位置の候補として列挙し、最も確からしい解を選択して撮像位置とする。(数5)式に示す目的関数の局所解は、多くても数十個程度であることから、近似式によって局所解を高速に算出することができれば、現実的な時間で撮像位置を算出することができる。特徴点qおよび撮像装置10の間の距離が、複数の画像間で大きく変化しないことに基づき、算出部140は、(数5)式の目的関数にq
z2を掛けて次式のように得られる、線形の近似式を用いる。
【数6】
【0045】
即ち、(数6)式を微分して零に等しくするR
Aおよびt
Aが、(数6)式を満たす解である。また、算出部140は、複数の局所解を撮像位置の候補として列挙すべく、まずは(数6)式を満たす撮像位置候補の複数の初期値を初期値算出部142に算出させる。初期値算出部142は、一例として、RANSACアルゴリズムを用いて複数の近似解を算出する。
【0046】
初期値算出部142は、複数の対応点のうち、予め定められた個数の対応点をランダムに抽出し、抽出した対応点が(数6)式に当てはまるようにRおよびtを算出する。初期値算出部142は、算出したRおよびtを用いて、抽出されなかった残りの対応点のうち(数6)式を満たす対応点の個数を計数し、当該計数結果に応じて算出したRおよびtを撮像位置候補の初期値とするか否かを判別する(RANSAC)。
【0047】
ここで、未選択画像に100点の対応点が含まれている例を説明すると、初期値算出部142は、一例として、当該100点の対応点から乱数等を用いて(一例として)10点の対応点を抽出し、当該10点の対応点を用いて(数6)式の微分が零となるRおよびtを算出する。そして、初期値算出部142は、算出したRおよびtを(数6)式に代入し、残りの90点の対応点を順次代入し、算出結果が予め定められた閾値の範囲であるか否かを判定する。
【0048】
ここで、未選択画像に含まれている100点の対応点は、全て正しい特徴点(被写体の特徴を正しく抽出した点)である保証はなく、ノイズ成分等が偶然抽出され、対応点と判断された場合も含まれる。このように、本来は対応点として算出されない外れ値となる対応点が抽出した10点に多く含まれると、初期値算出部142は、目的関数の解とはかけ離れたRおよびtを算出してしまう。そこで、初期値算出部142は、残りの90点の対応点を(数6)式に順次代入して、算出したRおよびtが解の候補として妥当であるか否かを判定する。
【0049】
なお、残りの90点の対応点にも外れ値となる対応点が含まれている場合もあるので、初期値算出部142は、外れ値が少ない10点の対応点に応じて算出されたRおよびtを用いても、残りの90点のうち外れ値の対応点を(数6)式に代入すると、二乗誤差として算出される予め想定される(常識的な)値と比較して著しく大きな値が算出される場合がある。初期値算出部142は、このような予め定められた閾値の範囲外の算出結果をアウトライア(Outlier)とする一方、当該閾値の範囲内の算出結果をインライア(Inlier)とし、当該インライアの数を計数する。
【0050】
ここで、初期値算出部142は、外れ値が多い10点の対応点に応じて算出されたRおよびtを用いると、残りの90点のうち外れ値ではない対応点を(数6)式に代入しても、アウトライアを算出する。この場合、外れ値を代入してもアウトライアとなり、計数されるインライアの数は、外れ値が少ない10点の対応点に応じて算出されたRおよびtを用いた場合と比較して、より少なくなる。即ち、初期値算出部142は、インライアの計数結果が予め定められた数未満の場合、算出したRおよびtが解の候補として妥当ではないとして撮像位置候補の初期値にはしない。また、初期値算出部142は、インライアの計数結果が予め定められた数以上の場合に、算出したRおよびtを撮像位置候補の初期値とする。
【0051】
初期値算出部142は、Rおよびtの算出および判定(RANSAC)を繰り返し、複数の撮像位置候補の初期値を算出する。初期値算出部142は、予め定められた数の撮像位置候補の初期値が得られるまで、当該算出および判定を繰り返してよく、これに代えて、予め定められた回数だけ当該算出および判定を繰り返してもよい。なお、初期値算出部142は、(数6)式で示す近似式を用いるので、線形代数で容易に複数の初期値を算出することができるので、高速に複数の撮像位置候補の初期値を算出することができる。また、特徴点qおよび撮像装置10の間の距離が大きく変動しない限り、当該近似の精度を高く保つことができるので、初期値算出部142が算出する複数の初期値は、複数の局所解の近傍の値にすることができる。
【0052】
次に、収束部144は、複数の撮像位置候補の初期値を開始点として、(数5)式の局所解へと撮像位置を収束させる(S270)。即ち、初期値算出部142が算出した初期値は、近似式(数6)式を満たす解であり、目的関数(数5)式の局所解の近傍に存在する近似解である。したがって、収束部144は、当該初期値を開始点とし、ニュートン法等の既知の数値解析を用いることで、当該開始点を局所解に収束させることができる。また、初期値算出部142が初期値を複数算出するので、収束部144は、当該複数の初期値をそれぞれ開始点とすることで、目的関数(数5)式の複数の局所解へと収束させることができ、当該複数の局所解を列挙することができる。
【0053】
目的関数は、撮像装置の位置tおよび向きRによって定まる多次元関数であるから、複数の局所解を有し、仮に、(数5)式を満足する点gを複雑な数値計算を施して算出しても、当該点gに基づいて1つの局所解に収束させることは困難である。さらに、当該点gに基づいて1つの局所解に収束させても、当該局所解が撮像装置の位置tおよび向きRとして適切な解であるか否かを判別することは困難である。
【0054】
これに対し、本実施形態に係る初期値算出部142は、複数の局所解の近傍に位置する複数の初期値を算出するので、収束部144は、それぞれの局所解に容易に収束させることができる。即ち、収束部144は、複数の局所解を取得することができ、当該複数の局所解をそれぞれ未選択画像の撮像位置候補とすることができる。
【0055】
ここで、収束部144は、予め定められた誤差の範囲で他の候補と同一の撮像位置に収束した重複する撮像位置候補を、削除してよい。用いる数値処理の精度等によって、収束部144は、同一の局所解に対して異なる2以上の値に収束させる場合がある。そこで、収束部144は、予め定められた値の範囲に収束した2以上の値について、1つの値を選択して1つの撮像位置候補とする。これに代えて、収束部144は、収束した2以上の値の平均値を撮像位置候補としてもよい。これにより、収束部144は、数値計算によって見かけ上の存在しない局所解が増大することを防止してよい。
【0056】
なお、収束部144は、(数5)式を用いて局所的な最適解に収束させる例を説明したが、これに代えて、(数5)式とは異なる式を用いて局所解に収束させてもよい。(数5)式は、正規分布に基づく2乗誤差を算出したものであるが、収束部144は、スチューデント(student)のt分布に基づく目的関数を用いてもよい。収束部144は、次式で示される目的関数を用いてよい。
【数7】
【0057】
ここで、φ(q
i|R,t)は、グローバル座標系の3次元空間上の点の座標q
iを、撮像装置10の座標系に変換し、撮像される画像(z=1の平面)上に射影した点p
iを示す。即ち、φおよびqは、次式で関係づけられる。
【数8】
【0058】
また、(数7)式のTは、スチューデントのt分布として次式で示されるような既知の分布である。
【数9】
【0059】
次に、選択部150は、局所解へと収束させた複数の撮像位置候補の中から対応点の適合度が最大の最適撮像位置を選択する(S280)。選択部150は、撮像位置候補を目的関数に代入し、未選択画像に含まれる複数の対応点を当該目的関数に適用した場合のインライアの個数を計数する。選択部150は、撮像位置候補毎にインライアの個数を計数し、最もインライアの個数が多く計数された撮像位置候補を最適撮像位置として選択する。即ち、選択部150は、複数の対応点のうち、目的関数に適合させる対応点の数をより多くさせる撮像位置候補を、最適撮像位置とする。また、選択部150は、次にインライアの個数が多く計数された撮像位置候補を次善の撮像位置とする。
【0060】
次に、決定部160は、最適撮像位置における対応点の適合度に基づいて、未選択画像を選択画像セットに追加するか否かを決定する。決定部160は、最適撮像位置の適合度と他の(例えば次善の)撮像位置の適合度を比較して、選択画像を選択画像セットに追加するか否かを決定する(S290)。決定部160は、最適撮像位置の適合度と、複数の撮像位置候補のうち次善の撮像位置候補の適合度との相違が予め定められた基準以上であることを必要条件として、未選択画像を選択画像セットに追加することを決定してよい。決定部160は、一例として、最適撮像位置のインライアの数I
1stと、次善の撮像位置のインライアの数I
2ndの差が、予め定められた数以上であることに応じて、未選択画像を選択画像セットに追加することを決定する。
【0061】
また、決定部160は、最適撮像位置の適合度と、複数の撮像位置候補のうち次善の撮像位置候補の適合度との相違が予め定められた基準以上であり、かつ、最適撮像位置の適合度が予め定められた閾値以上であることを必要条件として、未選択画像を選択画像セットに追加することを決定してよい。決定部160は、一例として、I
1stが予め定められた第1の閾値以上で、かつ、(I
1st−I
2nd)/I
1stが予め定められた第2の閾値以上であることに応じて、未選択画像を選択画像セットに追加することを決定する。
【0062】
このように、決定部160は、最適撮像位置の適合度が、次善の撮像位置の適合度と比較して、差が明らかな場合に、当該最適撮像位置を採用して、未選択画像を選択画像セットに追加する。これによって、決定部160は、複数の適合度が拮抗して、最適撮像位置を適切に判断できない未選択画像が選択画像セットに含まれることを防止して、撮像位置に矛盾を生じさせない(または矛盾が生じる可能性を低減させた)画像を追加することができる。これにより、決定部160は、次の未選択画像を追加する場合においても、矛盾が生じる確率を低減させた選択画像セットを用いて、未選択画像の追加を判断することができる。したがって、当該選択画像セットは、3次元画像の復元において破綻の発生を低減させることができる。
【0063】
決定部160が、未選択画像を選択画像セットに追加することを決定した場合(S290:Yes)、調整部170は、選択画像セットに追加が決定された未選択画像を追加して、新たな選択画像セットとし、当該新たな選択画像セットを記憶部120に記憶して更新する(S300)。ここで、調整部170は、当該新たな選択画像セット内の撮像位置を調整してから記憶部120に記憶してよい。調整部170は、例えば、非特許文献1および2に記載されたBundler Ajdust等の既知の調整方法により、選択画像セット内の複数の画像を撮像した撮像装置の位置および向きを更新させる。
【0064】
選択画像セット内の複数の画像は、決定部160が撮像位置に矛盾のない画像を追加したセットなので、調整部170は、既知の画像処理技術を用いて、複数の画像間でより適切な撮像位置に微調整することができる。また、調整部170は、選択画像セットが更新される毎に当該微調整を実行してよく、これに代えて、予め定められた2以上の数の未選択画像が選択画像セットに追加されたことに応じて、当該微調整を実行してもよい。
【0065】
また、決定部160が、未選択画像を選択画像セットに追加しないことを決定した場合(S290:No)、決定部160は、当該決定を提供部180に通知する。提供部180は、未選択画像が選択画像セットに追加されなかったことを、当該未選択画像に対応づけて記憶部120に記憶してよい。
【0066】
次に、記憶部120に記憶された未選択画像がまだ存在する場合(S310:Yes)、処理装置100は、S250の動作段階に戻り、算出部140に次の未選択画像を取得させ、当該次の未選択画像を選択画像セットに追加するか否かを決定部160に決定させる。処理装置100は、記憶部120に記憶された未選択画像がなくなるまで、S250からS310までの動作を繰り返す。
【0067】
記憶部120に記憶された未選択画像がなくなった場合(S310:No)でかつ、選択画像セットに追加した未選択画像が無かった場合、当該処理を終了する(S320:Yes)。即ち、複数の画像のうち選択画像セットに含まれない全ての画像について、選択画像セットに追加しないことが決定された後に他のいずれの画像も選択画像セットに追加されなかったことに応じて、処理装置100は、未選択画像の選択処理を終了する。このように、未選択画像の全てについて選択画像のセットの追加に失敗した場合、処理装置100は、取得部110が取得した複数の画像に基づく3次元画像の復元処理を中止する。この場合、処理装置100は、取得部110が取得した複数の画像に異常があることをユーザに通知してもよい。
【0068】
また、選択画像セットに追加した未選択画像がある場合(S320:No)でかつ、決定部160が選択画像セットに追加しなかった未選択画像が存在する場合(S330:Yes)、提供部180は、選択画像セットに追加しなかった未選択画像を算出部140に再び未選択画像として選択して提供する(S340)。処理装置100は、S260の動作段階に戻り、追加しなかった未選択画像がなくなるまで、S260からS340までの動作を繰り返す。なお、提供部180は、選択画像セットに追加しなかった未選択画像が複数存在する場合、決定部160が追加しないことを決定した順に、当該追加しなかった未選択画像を算出部140に提供してよい。
【0069】
当初は複数の撮像位置が拮抗すると判断された画像であっても、選択画像セット内の画像が増加するにつれて、対応点等の情報は変化する。そこで、提供部180は、当該追加されなかった未選択画像を再び未選択画像として算出部140に提供することによって、当該未選択画像を再び選択画像セットに追加するか否かを判断させる。これにより、提供部180は、取得部110が取得した複数の画像を無駄なく判別し、より多くの画像を含む選択画像セットを生成することができる。
【0070】
決定部160が選択画像セットに追加しなかった未選択画像が存在しない場合(S330:No)、または、提供部180の提供が終了した場合、算出部140は、未選択画像の取得を終了させ、復元部190に通知する。復元部190は、生成した選択画像セットを記憶部120から読み出し、当該選択画像セットに応じた3次元画像を復元させる(S350)。決定部160が、最適撮像位置を適切に判断できない未選択画像を選択画像セットに追加されることを防止して、撮像位置に矛盾のない画像を追加するので、復元部190は、破綻の少ない3次元画像を復元させることができる。
【0071】
以上の本実施形態に係る処理装置100は、複数の画像のそれぞれに含まれる対応点の数に応じて選択画像セットを選択し、当該選択画像セットに残りの画像を1つずつ追加するか否かを判断する。処理装置100は、目的関数を用い、当該目的関数の複数の局所解を取得して、未選択画像に最も適合する局所解に基づいて選択画像セットに追加するか否かを判断するので、より確からしい撮像位置を解とした未選択画像を選択画像セットに追加することができる。また、処理装置100は、目的関数の近似式を用いて、高速に複数の初期値を算出し、ニュートン法等の簡便な手法で複数の局所解を取得するので、高速に処理を完了することができる。
【0072】
ここで、本実施形態に係る初期値算出部142は、複数の撮像位置候補の初期値を算出し、収束部144に供給することを説明した。ここで、決定部160が、最適撮像位置および次善の撮像位置の適合度を比較して、選択画像を選択画像セットに追加するか否かを決定する場合、初期値算出部142が算出する複数の初期値のうち、最適撮像位置および次善の撮像位置に対応する初期値以外の初期値は、決定部160では用いないことになる。
【0073】
そこで、初期値算出部142は、複数の撮像位置候補の各初期値のうち適合度が最大となる初期値の適合度と、一の撮像位置候補における初期値の適合度との相違が予め定められた基準以上である場合に、一の撮像位置候補を削除してよい。これにより、初期値算出部142は、決定部160が用いないと判断できる撮像位置候補の初期値を削除することができ、処理速度を向上させることができる。
【0074】
また、本実施形態の決定部160は、撮像位置の適合度の例として、インライアの数を計数することを説明した。これに代えて、決定部160は、当該撮像位置を代入した目的関数に、対応点を適用させた場合の目的関数の値を当該適合度としてもよい。この場合、決定部160は、目的関数に、複数の対応点を適用させた場合の目的関数の値の平均値を当該適合度としてよい。
【0075】
また、以上の本実施形態の初期値算出部142は、(数6)式の微分が零となるRおよびtを算出し、当該算出したRおよびtが解の候補として妥当であるか否かを判定することを説明した。これに代えて、初期値算出部142は、Rおよびtの妥当性を順次判定してもよい。
【0076】
例えば、初期値算出部142は、100点の対応点から10点の対応点をランダムに抽出し、当該10点の対応点を用いて(数6)式の微分が零となるRおよびtを算出する。そして、初期値算出部142は、算出したRおよびtを(数6)式に代入し、残りの90点の対応点を順次代入し、インライアの計数結果が予め定められた数以上の場合に、算出したRを採用する(RANSAC)。なお、当該Rは、(数5)式の解ではないので、より正確には非直交姿勢行列Gとなる。そこで、初期値算出部142は、既知の手法で当該Gを直交化して、より正確なRを算出する。
【0077】
初期値算出部142は、10点の対応点の抽出からRの算出までの処理を繰り返し、複数のRを算出する。なお、複数のRのうち、予め定められた値の範囲で略同一とみなされる複数のRが存在する場合、初期値算出部142は、当該複数のRのうち解の候補として1つのRを残して、他を除去してよい。次に、初期値算出部142は、複数のRのうち1つのRを抽出し、当該Rを用いて(数6)式の微分が零となるtを算出する。初期値算出部142は、抽出したRと算出したtを(数6)式に代入し、対応点を順次代入してインライアの計数結果が予め定められた数以上の場合に、当該Rおよびtを採用する(RANSAC)。
【0078】
初期値算出部142は、複数のRから次のRを抽出し、同様の動作を繰り返して、インライアの計数結果に応じてRおよびtの組み合わせを採用するか否かを判定する。初期値算出部142は、複数のRの全てについて、それぞれ判定を繰り返し、採用したRおよびtの組み合わせを解の候補として妥当であるとする。このように、初期値算出部142は、2段階のRANSAC処理によりRおよびtを順次妥当であるか否かを判定するので、撮像位置候補の初期値として、より正確な判定を実行することができる。
【0079】
図6は、本実施形態に係るデータ処理装置100として機能するコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、および表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、およびDVDドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、および入出力チップ2070を有するレガシー入出力部と、を備える。
【0080】
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000およびグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010およびRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【0081】
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、DVDドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラムおよびデータを格納する。DVDドライブ2060は、DVD−ROM2095からプログラムまたはデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
【0082】
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、および入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、および/または、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラムまたはデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
【0083】
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、DVD−ROM2095、またはICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
【0084】
プログラムは、コンピュータ1900にインストールされ、コンピュータ1900を取得部110、記憶部120、生成部130、算出部140、初期値算出部142、収束部144、選択部150、決定部160、調整部170、提供部180、および復元部190として機能させる。
【0085】
プログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である取得部110、記憶部120、生成部130、算出部140、初期値算出部142、収束部144、選択部150、決定部160、調整部170、提供部180、および復元部190として機能する。そして、この具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算または加工を実現することにより、使用目的に応じた特有の処理装置100が構築される。
【0086】
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、またはDVD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置または通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030または記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【0087】
また、CPU2000は、ハードディスクドライブ2040、DVDドライブ2060(DVD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、および/または記憶装置に含まれるものとする。
【0088】
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(または不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【0089】
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
【0090】
以上に示したプログラムまたはモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、DVD−ROM2095の他に、DVD、Blu−ray(登録商標)、またはCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークまたはインターネットに接続されたサーバシステムに設けたハードディスクまたはRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
【0091】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0092】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。