以下、本発明の実施の形態について図面を参照しながら説明する。なお、以下の実施形態における構成要素は適宜、既存の構成要素などとの置き換えが可能であり、また、他の既存の構成要素との組み合せを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<第1実施形態>
[画像処理装置1の概要]
図1は、本発明の第1実施形態に係る画像処理装置1のブロック図である。画像処理装置1は、AR技術に対応している。この画像処理装置1の概要について、図2、3、4、5を用いて以下に説明する。
図2は、第1の視点から、画像処理装置1の搭載されている端末100が撮影している例を示す模式図である。図2では、テーブルAAの上に3つのオブジェクトM1、M2、M3が直線状に配置されている。端末100は、内蔵しているカメラで、オブジェクトM1の側からテーブルAA上を撮影している。
図3は、図2における端末100の表示画面110aを示す図である。表示画面110aには、下方(図3において下方)から上方(図3において上方)に向かってオブジェクトM1、M2、M3の順番にオブジェクトM1からM3が表示されている。また、オブジェクトM1の右方(図3において右方)には、オブジェクトM1に紐付けられた仮想情報C1が重畳されている。また、オブジェクトM2の右方(図3において右方)には、オブジェクトM2に紐付けられた仮想情報C2が重畳されている。また、オブジェクトM3の右方(図3において右方)には、オブジェクトM3に紐付けられた仮想情報C3が重畳されている。このため、端末100の所有者は、表示画面110aを通して、AR空間に存在する仮想情報C1からC3を認識することができる。
図4は、第2の視点から、画像処理装置1の搭載されている端末100が撮影している例を示す模式図である。端末100は、内蔵しているカメラで、オブジェクトM3の側からテーブルAA上を撮影している。
図5は、図4における端末100の表示画面110bを示す図である。表示画面110bには、上方(図5において上方)から下方(図5において下方)に向かってオブジェクトM1、M2、M3の順番にオブジェクトM1からM3が表示されている。また、オブジェクトM1の左方(図5において左方)には、オブジェクトM1に紐付けられた仮想情報C1が重畳されている。また、オブジェクトM2の左方(図5において左方)には、オブジェクトM2に紐付けられた仮想情報C2が重畳されている。また、オブジェクトM3の左方(図5において左方)には、オブジェクトM3に紐付けられた仮想情報C3が重畳されている。このため、端末100の所有者は、表示画面110bを通しても、AR空間に存在する仮想情報C1からC3を認識することができる。
なお、表示画面110bでは、仮想情報C1からC3のそれぞれは、表示画面110aに表示されている仮想情報C1からC3を180度回転させた状態で表示されている。これは、表示画面110bを表示している際の端末100が、表示画面110aを表示している際の端末100と180度反対の方向から、オブジェクトM1からM3のそれぞれを撮影しているためである。このため、端末100の所有者は、表示画面110bを通して、仮想情報C1からC3に対する視点を図2における視点から180度回転させると、視点の回転に追随して、AR空間において仮想情報C1からC3も180度回転したと認識することができる。
図2から図5では、端末を動かした場合を示しているが、オブジェクトを動かした場合にも、オブジェクトの動きに追随して、仮想情報も端末100の表示画面上で動く。なお、端末やオブジェクトを動かした際に、仮想情報は、オブジェクトとの相対的な位置関係を保持した状態で動く。また、仮想情報C1からC3のそれぞれは、現実空間には存在しておらず、オブジェクトM1からM3のそれぞれと紐付けて端末100に記憶されている。
ここで、画像認識処理におけるオブジェクトの認識精度は、オブジェクトとカメラとの距離が離れるに従って低下する。また、オクルージョンや光の反射などによって、オブジェクトがプレビュー画像に一時的に写らなくなり、このオブジェクトの認識に一時的に失敗してしまうことがある。このような理由により、例えば、オブジェクトM1について、図2の第1の視点では認識できるが、図4の第2の視点では認識できないといった状況が起こり得る。
そこで、まず、図2から5を用いて上述したAR空間を、上述の特許文献1の技術で実現する場合について、以下に説明する。この場合において、上述の状況が起こると、オブジェクトM1についての姿勢の追跡処理を行っても、オブジェクトを認識できないので、オブジェクトM1の認識処理を、初期姿勢の推定処理からやり直す必要がある。しかし、初期姿勢の推定処理の、オブジェクトとカメラとの距離や角度に対する頑健性は低い。このため、初期姿勢の推定処理からやり直しても、オブジェクトM1の認識を再開できない可能性がある。
次に、図2から5を用いて上述したAR空間を、本実施形態に係る画像処理装置1で実現する場合について、以下に説明する。この場合、画像処理装置1は、オブジェクトM1を認識するために、オブジェクトM1と他のオブジェクトとの相対的な位置関係を示す相対姿勢を予め推定しておく。オブジェクトM1の認識に失敗すると、推定しておいた相対姿勢を用いて、他のオブジェクトの認識結果を、オブジェクトM1の認識結果に変換する。これによれば、端末100がオブジェクトM1を直接認識できなくても、他のオブジェクトの認識結果を変換して、オブジェクトM1を認識することができる。このため、オブジェクトの認識の頑健性を向上させることができ、端末100の表示画面110に仮想情報C1を表示することができるので、
[画像処理装置1の構成]
以上の画像処理装置1について、以下に詳述する。図1に戻って、画像処理装置1は、デスクトップPCといった据え置き型のコンピュータや、ラップトップPC、携帯電話機、携帯ゲーム機、HMDなどの携帯型の情報端末に搭載可能である。この画像処理装置1は、画像取得部10、画像認識部20、オブジェクト関係推定部30、および仮想情報表示部70を備える。
[画像取得部10の構成および動作]
画像取得部10は、WEBカメラやカメラモジュールといった撮像装置で撮影された画像を連続的に取得する。本実施形態では、画像取得部10は、60fpsのフレームレートで画像を取得するものとする。なお、画像を連続的に撮影する撮像装置は、画像処理装置1の内部に設けられるものであってもよいし、画像処理装置1の外部に設けられるものであってもよい。
[画像認識部20の構成および動作]
画像認識部20は、画像取得部10により取得された画像(以降、プレビュー画像とする)を入力とする。この画像認識部20は、入力されたプレビュー画像内のオブジェクトを識別し、識別した各オブジェクトの姿勢を推定して、識別した各オブジェクトを認識する。この画像認識部20は、オブジェクト識別部21、初期姿勢推定部22、および姿勢追跡部23を備える。
オブジェクト識別部21は、画像取得部10により取得されたプレビュー画像を入力とする。このオブジェクト識別部21は、入力されたプレビュー画像内のオブジェクトの識別処理を行う。識別処理では、プレビュー画像から局所特徴量を検出し、特徴量データベース(辞書)に予め登録されているオブジェクトごとの局所特徴量と照合して、オブジェクトを識別する。
なお、オブジェクトの識別処理は、例えば外部サーバで行われるものとしてもよい。この場合には、オブジェクト識別部21は、プレビュー画像を外部サーバに送信し、外部サーバから識別処理の結果を受け取ることになる。これによれば、識別処理をアウトソースすることができるので、大規模なオブジェクトや多数のオブジェクトを扱う場合に好適である。
一方、オブジェクトの数が少数である場合には、画像認識部20からオブジェクト識別部21を省くことが可能である。
初期姿勢推定部22は、画像取得部10により取得されたプレビュー画像を入力とする。この初期姿勢推定部22は、入力されたプレビュー画像に含まれる、オブジェクト識別部21により識別されたオブジェクトについて、姿勢を推定し、推定結果を姿勢の初期値とする。初期姿勢推定部22は、後述の姿勢追跡部23によるオブジェクトの姿勢の追跡を開始する際と、姿勢追跡部23によるオブジェクトの姿勢の追跡を行わなくなった場合と、において上述の姿勢の推定を行う。
本実施形態では、オブジェクトの姿勢を六自由度の姿勢行列(4行4列)で表現する。姿勢行列は、画像取得部10が取得するプレビュー画像を撮影する撮像装置と、オブジェクトと、の相対的な位置関係を示す情報を有するものであり、三次元特殊ユークリッド群SE(3)に属し、ともに三自由度の三次元回転行列および三次元並進ベクトルで表される。姿勢行列を用いる場合、プレビュー画像中におけるオブジェクトのピクセル座標と、初期姿勢推定部22に予め登録されているこのオブジェクト上の座標と、の関係は、以下の数式(1)で表すことができる。
数式(1)において、Aは、撮像装置の内部パラメータを示す。撮像装置の内部パラメータは、予めカメラキャリブレーションによって求めておくことが好ましい。ただし、撮像装置の内部パラメータは、実際の値とずれていたとしても、最終的に推定した姿勢行列と打ち消し合うため、仮想情報を重畳する位置には影響しない。このため、撮像装置の内部パラメータには、一般的なカメラの内部パラメータを代用することが可能である。
数式(1)において、Rは、三次元空間内の回転を表すパラメータを示す。Rにおける各パラメータは、オイラー角といった表現により三パラメータで表現することが可能である。
数式(1)において、tは、三次元空間内の平行移動を表すパラメータを示す。また、X、Y、Zのそれぞれは、初期姿勢推定部22に予め登録されているオブジェクト上のX座標、Y座標、Z座標のそれぞれを示す。また、u、vは、プレビュー画像中のu座標およびv座標を示す。
なお、本実施形態では、姿勢行列の推定を、画像内の自然特徴を用いて行うものとする。自然特徴とは、画像間の点対応の取得やマッチングを行うために、画像の局所領域から算出される特徴のことであり、画像内のエッジやコーナーなどの、対応付けの容易な局所領域から抽出される。自然特徴の代表例としては、SIFT(Scale Invariant Feature Transform)やSURF(Speed Up Robust Features)などの、高精度な対応付けが可能な局所特徴量があり、これらを用いて姿勢行列を算出する手法は一般に知られている。
オブジェクトの姿勢は、オブジェクトや撮像装置が動くことによって、画像取得部10により連続的に取得されるプレビュー画像中において刻々と変化する。このため、初期姿勢推定部22には、上述のオブジェクト識別部21と比べて処理速度が求められる。したがって、画像取得部10は、画像処理装置1の内部に設けられる必要があり、非特許文献2に開示されているように処理負荷の小さいアルゴリズムを用いることが望ましい。
姿勢追跡部23は、画像取得部10により取得されたプレビュー画像と、初期姿勢推定部22により推定されたオブジェクトの姿勢の初期値と、を入力とする。この姿勢追跡部23は、入力されたプレビュー画像およびオブジェクトの姿勢の初期値に基づいて、オブジェクトの姿勢の追跡処理を行ってオブジェクトの姿勢を推定し、オブジェクトを認識する。
姿勢追跡部23は、オブジェクトの姿勢の追跡に成功した場合、すなわちオブジェクトの認識に成功した場合には、認識に成功したオブジェクトの識別子(ID)と、認識に成功したオブジェクトの姿勢の推定値と、を認識結果として出力する。また、この認識結果を、画像取得部10により取得された次フレームのプレビュー画像において追跡処理を行う際の初期値として用いる。このため、オブジェクトの姿勢の追跡に成功している間は、このオブジェクトに対して初期姿勢推定部22による処理を行う必要がない。
また、オブジェクトの姿勢の追跡に成功している間は、このオブジェクトに対する追跡処理を、画像取得部10によりプレビュー画像が取得されるたびに行う必要がある。このため、姿勢追跡部23には、上述の初期姿勢推定部22と比べて処理速度が求められる。したがって、姿勢追跡部23は、画像処理装置1の内部に設けられる必要があるとともに、オブジェクトの姿勢の追跡処理を最低でもリアルタイムで行うことができる必要があり、非特許文献2に開示されているように処理負荷の小さい姿勢追跡アルゴリズムを用いることが望ましい。
非特許文献2に開示されている手法では、姿勢の初期値から線形予測によって姿勢の予測値を推定し、オブジェクト内の特徴点の移動量を、予測値からの探索によって推定する。探索は、特徴点の周囲から、局所領域の相関値が最も高い箇所を求めることで行われる。各特徴点の移動量から、上述の数式(1)を満たすように、姿勢の推定値を予測値から更新する。姿勢の追跡処理が反復してリアルタイムで行われる場合、フレーム間の特徴点の移動量は小さいため、特徴点の探索幅を限定することで、処理負荷の軽減を実現できる。
また、カメラやオブジェクトが急速に移動するなどによって、特徴点の移動量が探索幅を超えた場合には、上述の手法では姿勢の追跡に失敗する。この場合、上述の手法は、追跡に失敗したことを特徴点の探索状況によって検知することが可能である。例えば、探索に成功した(相関値が閾値以上の箇所が求められた)特徴点の数が閾値以下となった場合には、姿勢の推定値の更新を中断して、追跡に失敗したことを示す信号を出力することが可能である。追跡に失敗したことを示す信号が出力された場合、姿勢追跡部23による追跡処理を中断し、次フレーム以降において初期姿勢推定部22による姿勢の初期値を推定する処理を実行すればよい。
なお、オブジェクトの姿勢の追跡処理をリアルタイムで行うために、追跡可能なオブジェクト数の上限を予め設定しておき、上限を超えたオブジェクトについては追跡処理を行わないようにしてもよい。これによれば、追跡するオブジェクト数が上限に達している場合には、オブジェクト識別部21による識別処理と、初期姿勢推定部22による姿勢の初期値を推定する処理と、を休止することになる。なお、上述の上限は、画像処理装置1の処理能力に応じて設定されることが好ましい。
以上の画像認識部20は、上述のオブジェクトの姿勢の推定を、オブジェクトごとに行う。オブジェクトごとの姿勢の推定処理は、互いに独立であるため並列に実施してもよいし、順番に実施してもよい。
また、AR空間内に仮想情報を固定配置して重畳させる場合には、画像認識部20は、オブジェクトの認識に加えて、基準マーカの認識も行う。オブジェクトを認識する場合と同様の処理で基準マーカを認識できる場合には、画像認識部20は、オブジェクトと基準マーカとを区別することなく認識を行う。一方、基準マーカが、非特許文献1の手法で認識可能なARマーカである場合や、非特許文献3の手法で認識可能な復元された空間である場合には、基準マーカをオブジェクトと区別して、基準マーカのみ、対応する認識手法で認識を行う。AR空間内に固定配置して重畳させる仮想情報がない場合や、そもそも基準マーカが存在しない場合には、画像認識部20は、オブジェクトの認識のみ行う。
いずれにせよ、画像認識部20が行うことは、オブジェクト(存在する場合には基準マーカも)の姿勢の推定である。なお、基準マーカの有無、基準マーカの種類、および姿勢の推定に用いる認識手法は、上述の手法に限定されるものではない。
[オブジェクト関係推定部30の構成および動作]
オブジェクト関係推定部30は、画像認識部20による認識結果を入力とする。このオブジェクト関係推定部30は、画像認識部20により認識されたオブジェクト間の関係性を推定し、推定結果に基づいてオブジェクトを分類する。また、認識に失敗したオブジェクトについては、このオブジェクトと同一のグループに分類したオブジェクトのうちの1つである主要オブジェクトの画像認識部20による認識結果に基づいて、認識する。このオブジェクト関係推定部30は、オブジェクト関係推定処理部31および姿勢変換処理部32を備える。
オブジェクト関係推定処理部31は、画像認識部20による認識結果を入力とする。このオブジェクト関係推定処理部31は、画像認識部20により認識されたオブジェクト間の関係性を推定して分類する。具体的には、画像認識部20により認識されたオブジェクト間の相対姿勢を算出し、相対姿勢の変動に応じて各オブジェクトを分類する。なお、本実施形態では、相対姿勢も上述の姿勢行列で表現するものとする。このオブジェクト関係推定処理部31について、以下に詳述する。
オブジェクト関係推定処理部31は、画像認識部20により認識されたオブジェクトの数が2つ以上である場合に動作する。ここで、例えば、第1の視点におけるオブジェクトAの姿勢行列のことを姿勢行列WA1とし、第1の視点におけるオブジェクトBの姿勢行列のことを姿勢行列WB1とする。すると、オブジェクトAとオブジェクトBとの間の相対姿勢WABは、以下の数式(2)により求めることができる。
ここで、仮に、カメラが移動して第1の視点から第2の視点に移動している間、オブジェクトA、Bの双方が固定配置されていて移動しない場合には、以下の数式(3)に示すように相対姿勢WABは変動しない。また、オブジェクトA、Bの双方が同一の剛体オブジェクトに固定配置されている場合にも、剛体オブジェクトが動いても、相対姿勢WABは変動しない。
そこで、オブジェクト関係推定処理部31は、まず、画像取得部10により取得されたプレビュー画像がフレームごとに、画像認識部20により認識されたオブジェクト間の相対姿勢を推定する。次に、オブジェクト間ごとに、相対姿勢のフレーム間での変化量を相対姿勢変化量として求め、相対姿勢変化量が閾値β未満であるオブジェクト間について、相対姿勢が1フレーム安定したと判定する。次に、αフレーム以上に亘って連続して相対姿勢の安定しているオブジェクト間について、これらオブジェクトを同一のグループに分類する。
なお、上述の相対姿勢変化量は、以下のようにして求められる。前フレームで相対姿勢が安定していないと判定した場合には、前フレームにおいて推定した相対姿勢から、現フレームにおいて推定した相対姿勢までの変化量を、上述の相対姿勢変化量として求める。一方、nフレーム(ただし、nは、n>1を満たす任意の整数)に亘って連続して相対姿勢が安定していると判定している場合には、nフレーム前から前フレームまでの間に推定した相対姿勢の平均(平均相対姿勢)を求め、この平均相対姿勢と、現フレームにおいて推定した相対姿勢と、の差分を、上述の相対姿勢変化量として求める。
また、上述の相対姿勢変化量は、並進と回転とに分けて、それぞれ独立した閾値と比較してもよい。
また、オブジェクト関係推定処理部31が動作を開始した段階、すなわちグループ分けの初期状態では、画像認識部20により認識された全てのオブジェクトは、それぞれ別々のグループに属している状態(オブジェクト数=グループ数)となる。また、同一のグループには、3つ以上のオブジェクトを分類することが可能であり、例えばオブジェクトAとオブジェクトBとの間の相対姿勢WABと、オブジェクトAとオブジェクトCとの間の相対姿勢WACと、がそれぞれαフレーム以上に亘って連続して安定している場合には、オブジェクトA、B、Cの3つを同一のグループに分類することができる。
また、同一のグループに分類されていたオブジェクト間の相対姿勢について、安定していないと判定した場合には、これらオブジェクトのグループ化を解除して、これらオブジェクトを別々のグループに分ける。オブジェクトのグループ化を解除する場合としては、例えば、これらオブジェクトのうち少なくともいずれかが動いた場合が想定される。
また、オクルージョンや光の反射などによって、このオブジェクトの認識に一時的に失敗してしまうことがある。このような場合には、オブジェクト間の相対姿勢を推定することができないが、同一のグループに分類されているオブジェクト間の相対姿勢は、変化していないことが想定されるため、グループ化の解除は行わない。
ただし、オブジェクト間の相対姿勢を推定できないフレームが連続して発生し続けると、相対姿勢が変化していないこと(相対姿勢の不変性)を保証できなくなってしまう。また、オブジェクト間の相対姿勢を推定できない原因がオクルージョンや光の反射などの一時的なものである場合には、この原因が解消して、オブジェクト間の相対姿勢の推定を再開できると考えられる。そこで、θフレーム以上に亘って連続してオブジェクト間の相対姿勢を推定できない場合には、グループ化を解除する。
ここで、オブジェクト間の相対姿勢を推定できないのは、認識できなかったオブジェクトとの間の相対姿勢である。すなわち、認識できていないオブジェクトについては、このオブジェクトと他のオブジェクトとの間の相対姿勢を推定できない。このため、θフレーム以上に亘って連続して認識できていないオブジェクトについては、他のオブジェクトとの間の相対姿勢をθフレーム以上に亘って連続して推定できないことになり、グループ化が解除されることになる。
姿勢変換処理部32は、画像認識部20による認識結果と、オブジェクト関係推定処理部31による分類結果および相対姿勢の推定結果と、を入力とする。この姿勢変換処理部32は、画像認識部20による認識に失敗したオブジェクトについて、同一のグループに分類されている他のオブジェクトについての画像認識部20による認識結果を、この他のオブジェクトとの間の相対姿勢を用いて認識する。姿勢変換処理部32について、以下に詳述する。
姿勢変換処理部32は、同一のグループに分類されているオブジェクトが1組以上存在している場合、すなわち2つ以上のオブジェクトが同一のグループに分類されている場合に、動作する。ここで、例えば、オブジェクトEの認識には画像認識部20が失敗しているとともに、オブジェクトEと同一のグループに分類されているオブジェクトFの認識には画像認識部20が成功しており、オブジェクトEとオブジェクトFとの間の相対姿勢WEFが推定されているものとする。また、画像認識部20による成功した認識により、第1の視点におけるオブジェクトFの姿勢行列WF1が得られているものとする。すると、オブジェクトFを上述の主要オブジェクトとして、第1の視点におけるオブジェクトEの姿勢行列WE1を、以下の数式(4)により求めることができる。
[仮想情報表示部70の構成および動作]
仮想情報表示部70は、画像取得部10により取得されたプレビュー画像と、画像認識部20による認識結果と、オブジェクト関係推定部30による認識結果と、を入力とする。この仮想情報表示部70は、プレビュー画像に、画像認識部20およびオブジェクト関係推定部30による認識結果に基づいて仮想情報を重畳させる。なお、仮想情報を重畳させる際に、仮想情報表示部70は、撮像装置の内部パラメータ行列(画角といった情報を含む)と、重畳させる仮想情報が紐付けられているオブジェクトの姿勢行列と、を用いて、3Dレンダリングによって対応する位置にこの仮想情報を重畳させる。また、仮想情報を重畳させる際に、仮想情報表示部70は、統合認識結果に基づいて仮想情報の位置や向きを補正する。
なお、仮想情報表示部70は、有線ケーブルや無線ネットワークを介して自端末と接続された外部モニタや、自端末に搭載されているディスプレイ(網膜投影型を含む)や、プロジェクタなどの、映像をユーザに掲示するための表示装置を制御するものである。この表示装置が、例えば、光学シースルー型のHMDや、プロジェクタを用いて視界に直接付加情報を重畳するものである場合には、プレビュー画像は表示させず、仮想情報のみを表示させることとしてもよい。
[画像処理装置1の動作]
以上の構成を備える画像処理装置1の動作について、図6から10を用いて以下に説明する。
図6は、画像処理装置1のフローチャートである。
ステップS100において、画像処理装置1は、画像取得部10によりプレビュー画像を取得し、ステップS101に処理を移す。
ステップS101において、画像処理装置1は、画像認識部20およびオブジェクト関係推定処理部31により第1の画像認識処理を行って、ステップS100で取得したプレビュー画像内の各オブジェクトを認識し、ステップS102に処理を移す。なお、第1の画像認識処理の詳細については、図7を用いて後述する。
ステップS102において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS101において現フレームで認識した全てのオブジェクトの中から2つを選択し、ステップS103に処理を移す。
ステップS103において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS102またはステップS107で選択した2つのオブジェクトに対する相対姿勢連続推定回数カウンタのカウンタ値がゼロであるか否かを判別する。ゼロであると判別した場合には、ステップS104に処理を移し、ゼロではないと判別した場合には、ステップS105に処理を移す。なお、相対姿勢連続推定回数カウンタは、ステップS102またはステップS107で選択した2つのオブジェクトごとに設けられ、2つのオブジェクトごとに、何フレームに亘って連続して相対姿勢を求めたかを計数するためのものである。
ステップS104において、画像処理装置1は、オブジェクト関係推定処理部31により、相対姿勢算出処理を行って、ステップS106に処理を移す。なお、相対姿勢算出処理の詳細については、図8を用いて後述する。
ステップS105において、画像処理装置1は、オブジェクト関係推定処理部31により、分類処理を行って、ステップS106に処理を移す。なお、分類処理の詳細については、図9を用いて後述する。
ステップS106において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS101において現フレームで認識した全てのオブジェクトについて、2つで1つの組として、全ての組み合わせを現フレームで選択したか否かを判別する。選択したと判別した場合には、ステップS108に処理を移し、選択していないと判別した場合には、ステップS107に処理を移す。
ステップS107において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS101において現フレームで認識した全てのオブジェクトのうち、選択していない組み合わせを構成する2つのオブジェクトを選択し、ステップS103に処理を戻す。
ステップS108において、画像処理装置1は、姿勢変換処理部32および仮想情報表示部70により、第1の重畳表示処理を行って、図6に示した処理を終了する。なお、第1の重畳表示処理の詳細については、図10を用いて後述する。
図7は、画像処理装置1が行う上述の第1の画像認識処理のフローチャートである。
ステップS110において、画像処理装置1は、姿勢追跡部23により、ステップS100で取得したプレビュー画像中に、前フレームで認識したオブジェクトが含まれているか否かを判別する。含まれていると判別した場合には、ステップS111に処理を移し、含まれていないと判別した場合には、ステップS116に処理を移す。
ステップS111において、画像処理装置1は、姿勢追跡部23により、ステップS110において前フレームで認識したと判別した各オブジェクトについて、前フレームでの姿勢を初期値として姿勢の追跡処理を行って認識し、ステップS112に処理を移す。
ステップS112において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS111において現フレームで姿勢を追跡できた各オブジェクトについて、対応する姿勢追跡連続失敗回数カウンタをリセットし、ステップS113に処理を移す。これによれば、画像取得部10により取得されたプレビュー画像に含まれている全てのオブジェクトのうち、現フレームで認識できたオブジェクトに対する姿勢追跡連続失敗回数カウンタが、リセットされることになる。なお、姿勢追跡連続失敗回数カウンタは、オブジェクトごとに設けられ、オブジェクトごとに、何フレームに亘って連続して姿勢の追跡に失敗したかを計数するためのものである。
ステップS113において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS111において現フレームで姿勢を追跡できなかった各オブジェクトについて、対応する姿勢追跡連続失敗回数カウンタをインクリメントし、ステップS114に処理を移す。これによれば、画像取得部10により取得されたプレビュー画像に含まれている全てのオブジェクトのうち、現フレームで認識できなかったオブジェクトに対する姿勢追跡連続失敗回数カウンタが、1だけ加算されることになる。
ステップS114において、画像処理装置1は、オブジェクト関係推定処理部31により、姿勢追跡連続失敗回数カウンタの値が閾値θ以上であるオブジェクトについて、姿勢追跡連続失敗回数カウンタをリセットするとともに、グループ化を解除して、ステップS115に処理を移す。これによれば、画像取得部10により取得されたプレビュー画像に含まれている全てのオブジェクトのうち、θフレーム以上に亘って連続して認識できなかったオブジェクトについて、姿勢追跡連続失敗回数カウンタがリセットされるとともに、グループ化が解除されることになる。
ステップS115において、画像処理装置1は、姿勢追跡部23により、追跡中のオブジェクトの数が、予め定められた上限値に達したか否かを判別する。達した場合には、図7に示した処理を終了し、達していない場合には、ステップS116に処理を移す。
ステップS116において、画像処理装置1は、オブジェクト識別部21により、ステップS100で取得したプレビュー画像内のオブジェクトを識別し、ステップS117に処理を移す。
ステップS117において、画像処理装置1は、初期姿勢推定部22により、ステップS110で取得したプレビュー画像に含まれるステップS116で識別したオブジェクトのうち、前フレームで認識していないオブジェクトのそれぞれと、現フレームで姿勢の追跡に失敗したオブジェクトのそれぞれと、について、姿勢の初期値を求めて認識し、ステップS118に処理を移す。
ステップS118において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS117で姿勢の初期値を求めた各オブジェクトに対して姿勢追跡連続失敗回数カウンタを新たに設け、新たに設けた姿勢追跡連続失敗回数カウンタをリセットし、図7に示した処理を終了する。
図8は、画像処理装置1が行う上述の第1の相対姿勢算出処理のフローチャートである。
ステップS120において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS102またはステップS107で選択した2つのオブジェクト間の、現フレームにおける相対姿勢を求め、図8に示した処理を終了する。
図9は、画像処理装置1が行う上述の分類処理のフローチャートである。
ステップS130において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS102またはステップS107で選択した2つのオブジェクト間の、現フレームにおける相対姿勢を求め、ステップS131に処理を移す。
ステップS131において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS102またはステップS107で選択した2つのオブジェクト間の相対姿勢について、相対姿勢連続推定回数カウンタのカウンタ値を「1」にインクリメントしたフレーム(以降、平均相対姿勢推定開始フレームとする)から前フレームまでの各フレームで推定したものの平均値を、平均相対姿勢として求め、ステップS132に処理を移す。
なお、平均相対姿勢は、前フレームにおいて計算した平均相対姿勢(平均相対姿勢推定開始フレームから2フレーム前のフレームまでの平均相対姿勢)と、前フレームにおいて計算した相対姿勢WN−1と、から加重平均として求めることができる。前フレームにおいて計算した平均相対姿勢は、以下の数式(5)により求めることができ、加重平均は、以下の数式(6)により求めることができる。上述の相対姿勢WN−1や数式(5)、(6)において、Nは、平均相対姿勢を推定する際の相対姿勢連続推定回数カウンタのカウンタ値を表すものとする。
ステップS132において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS102またはステップS107で選択した2つのオブジェクト間について、平均相対姿勢と、現フレームで推定した相対姿勢と、の差分の絶対値を、相対姿勢変化量として求め、ステップS133に処理を移す。
ステップS133において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS132により求めた相対姿勢変化量が閾値β未満であるか否かを判別する。相対姿勢変化量が閾値β未満であると判別した場合には、ステップS134に処理を移し、相対姿勢変化量が閾値β以上である場合には、ステップS137に処理を移す。
ステップS134において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS133で相対姿勢変化量が閾値β未満であると判別した2つのオブジェクトに対する相対姿勢連続推定回数カウンタをインクリメントし、ステップS135に処理を移す。
ステップS135において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS133で相対姿勢変化量が閾値β未満であると判別した2つのオブジェクトに対する相対姿勢連続推定回数カウンタのカウンタ値が閾値α以上であるか否かを判別する。カウンタ値が閾値α以上であると判別した場合には、ステップS136に処理を移し、カウンタ値が閾値α未満であると判別した場合には、図9に示した処理を終了する。
ステップS136において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS135でカウンタ値が閾値α以上であると判別した2つのオブジェクトを、同一のグループに分類し、図9に示した処理を終了する。
ステップS137において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS133で相対姿勢変化量が閾値β以上であると判別した2つのオブジェクトに対する相対姿勢連続推定回数カウンタをリセットし、ステップS138に処理を移す。
ステップS138において、画像処理装置1は、オブジェクト関係推定処理部31により、ステップS133で相対姿勢変化量が閾値β以上であると判別した2つのオブジェクトは、同一のグループに分類されているか否かを判別する。同一のグループに分類されていると判別した場合には、ステップS139に処理を移し、同一のグループに分類されていないと判別した場合には、図9に示した処理を終了する。
ステップS139において、画像処理装置1は、ステップS133で相対姿勢変化量が閾値β以上であると判別した2つのオブジェクトについて、同一のグループに分類されているのを解除し、図9に示した処理を終了する。
図10は、画像処理装置1が行う上述の第1の重畳表示処理のフローチャートである。
ステップS140において、画像処理装置1は、姿勢変換処理部32により、前フレームで認識したオブジェクトの中に、現フレームで認識していないオブジェクト(消失オブジェクト)が存在しているか否かを判別する。存在していると判別した場合には、ステップS141に処理を移し、存在していないと判別した場合には、ステップS143に処理を移す。
ステップS141において、画像処理装置1は、姿勢変換処理部32により、消失オブジェクトと前フレームで同一のグループに分類されていたオブジェクトが存在しているか否かを判別する。存在していると判別した場合には、ステップS142に処理を移し、存在していないと判別した場合には、ステップS143に処理を移す。
ステップS142において、画像処理装置1は、姿勢変換処理部32により、ステップS141において消失オブジェクトと前フレームで同一のグループに分類されていたと判別したオブジェクト(上述の主要オブジェクト)の現フレームにおける姿勢を、消失オブジェクトと主要オブジェクトとの間の前フレームで推定した相対姿勢を用いて、消失オブジェクトの現フレームにおける姿勢に変換し、ステップS143に処理を移す。
ステップS143において、画像処理装置1は、仮想情報表示部70により、ステップS111やステップS117における認識結果と、ステップS142により推定した姿勢と、を用いて、ステップS100で取得したプレビュー画像に仮想情報を重畳させ、図10に示した処理を終了する。
以上の画像処理装置1によれば、以下の効果を奏することができる。
画像処理装置1は、画像認識部20により認識できなかったオブジェクトが存在する場合に、オブジェクト関係推定部30により、このオブジェクトと同一のグループに分類されているとともに画像認識部20により認識できたオブジェクトを主要オブジェクトとして適用して、画像認識部20では認識できなかったオブジェクトを、主要オブジェクトの認識結果に基づいて認識する。このため、画像認識部20では認識できなかったオブジェクトを、このオブジェクトと関係性の高いオブジェクトの認識結果に基づいて認識することができる。したがって、画像認識部20では認識できなかったオブジェクトを認識することができるので、AR技術において、オブジェクトの認識の頑健性を向上させることができる。
また、画像処理装置1は、オブジェクト関係推定部30により、画像認識部20により認識されたオブジェクト間の関係性として、オブジェクト間の相対姿勢を求める。このため、オブジェクト間の相対姿勢を用いて、同様の動きをしているオブジェクト同士といった、関係性の高いオブジェクト同士を検索することができる。
また、画像処理装置1は、オブジェクト関係推定部30により、画像取得部10によりプレビュー画像が取得されるたびに、プレビュー画像内のオブジェクト間の相対姿勢を求め、αフレームに亘って連続して、相対姿勢のプレビュー画像間での変化量が閾値未満であるオブジェクトを、同一のグループに分類する。このため、複数の連続するプレビュー画像におけるオブジェクト同士の関係性を考慮して、オブジェクトを分類することができる。
また、画像処理装置1は、オブジェクト関係推定部30により、画像取得部10により取得された最新のプレビュー画像において求めた相対姿勢と、最新のプレビュー画像よりも前のプレビュー画像において求めた相対姿勢の平均と、の差分を変化量として求める。このため、オブジェクト同士の関係性をより考慮して、オブジェクトをより適切に分類することができる。
また、画像処理装置1は、平均相対姿勢を、前フレームにおいて計算した平均相対姿勢と、前フレームにおいて計算した相対姿勢WN−1と、から加重平均として求める。このため、前フレームにおいて計算した平均相対姿勢を用いて、現フレームの平均相対姿勢を更新する形になる。したがって、フレームが切り替わるたびに、平均相対姿勢推定開始フレームから前フレームまでの各フレームで推定した相対姿勢の平均値を初めから計算し直して平均相対姿勢を求める場合と比べて、処理負荷を軽減することができるとともに、各フレームにおいて計算した平均姿勢を記憶しておく必要がなくなるため、必要とするメモリ容量を小さくすることができる。
<第2実施形態>
[画像処理装置1Aの概要]
図11は、本発明の第2実施形態に係る画像処理装置1Aのブロック図である。画像処理装置1Aは、図1に示した本発明の第1実施形態に係る画像処理装置1とは、認識処理制御部40を備える点で異なる。なお、画像処理装置1Aにおいて、画像処理装置1と同一の構成要件については、同一符号を付し、その説明を省略する。
ここで、まず、図2から5を用いて上述したAR空間を、上述の特許文献1の技術で実現する場合について、以下に説明する。この場合、端末100は、オブジェクトM1からM3をそれぞれリアルタイムで認識し続ける必要があり、処理負荷が高くなってしまう。
次に、図2から5を用いて上述したAR空間を、本実施形態に係る画像処理装置1Aで実現する場合について、以下に説明する。この場合、端末100は、例えばオブジェクトM1からM3を同一のグループに分類していれば、これらオブジェクトM1からM3のうち、1つだけ追跡処理により認識すれば、他の2つについては相対姿勢を用いて認識することができる。これによれば、端末100が姿勢追跡部23による追跡処理を行わなくてはならないオブジェクトの数が減少するので、端末100の処理負荷を軽減することができる。
[画像処理装置1Aの構成]
以上の画像処理装置1Aについて、以下に詳述する。
[認識処理制御部40の構成および動作]
図11に戻って、画像処理装置1Aに設けられた認識処理制御部40は、オブジェクト関係推定処理部31によるオブジェクトの分類結果と、画像認識部20による認識結果と、を入力とする。この認識処理制御部40は、認識処理制御処理部41および姿勢照合処理部42を備える。
認識処理制御処理部41は、オブジェクト関係推定処理部31によるオブジェクトの分類結果と、画像認識部20による認識結果と、を入力とする。この認識処理制御処理部41は、同一のグループに分類されているオブジェクトの中に、認識に成功したオブジェクトが2つ以上存在している場合に、これら認識に成功したオブジェクトのうち、1つを主要オブジェクトとして登録し、残りを認識休止オブジェクトとして登録する。また、認識休止オブジェクトについて、姿勢追跡部23による姿勢の追跡処理を休止させる。
ここで、オクルージョンや光の反射などによってオブジェクトの認識に失敗してしまうのが、一時的なものであれば、オブジェクトの認識の失敗の解消時には、姿勢追跡部23による姿勢の追跡処理に成功することが想定される。一般的に、初期姿勢推定部22による姿勢の初期値の推定よりも、正確な姿勢の初期値を用いた姿勢追跡部23による姿勢の追跡処理の方が、処理負荷や、姿勢推定の精度や、認識の頑健性に優れる。そこで、画像認識部20による認識に失敗したオブジェクトについては、本来であれば、初期姿勢推定部22による姿勢の初期値の推定からやり直すが、画像認識部20による認識に失敗したオブジェクトが主要オブジェクトと同一のグループに分類されている場合には、認識処理制御処理部41は、画像認識部20による認識に失敗したオブジェクトについての姿勢を姿勢変換処理部32により求め、その結果を姿勢の初期値として姿勢追跡部23による追跡処理を行わせる。
姿勢照合処理部42は、画像取得部10により取得されたプレビュー画像と、姿勢変換処理部32による変換により得られた認識休止オブジェクトの認識結果と、を入力とする。ここで、認識休止オブジェクトについては、姿勢追跡部23による姿勢の追跡処理を休止するので、主要オブジェクトとの間の相対姿勢を推定することができない。このため、認識休止オブジェクトが動いた場合に、相対姿勢を適切に更新することができず、その結果、姿勢変換処理部32による変換により得られた認識休止オブジェクトの認識結果が適切ではなく、認識休止オブジェクトに対して正しい位置に仮想情報を重畳させることができなくなってしまう。そこで、姿勢照合処理部42は、認識休止オブジェクトについて、姿勢変換処理部32の変換により得られた認識結果が正しいかどうか、すなわち相対姿勢が変動しているかどうかの照合を行う。
具体的には、姿勢照合処理部42は、SSD(Sum of Squared Difference)やNCC(Normalized Cross Correlation)などの画像の類似度を評価する手法を用いて、高速に姿勢を照合する。この際、画像認識部20が用いるオブジェクトの参照モデル(平面オブジェクトの場合には画像、三次元オブジェクトの場合には3Dモデル)を、姿勢変換処理部32による変換により得られた認識結果で投影してテンプレート画像を生成し、プレビュー画像とマッチングすることで、類似度を評価する。姿勢変換処理部32による変換により得られた認識結果が正しい場合には、SSDやNCCの応答値(類似度)が高くなることが想定されるため、姿勢照合処理部42は、類似度が閾値γを下回る場合に、このオブジェクトを認識休止オブジェクトから除外する。
また、相対姿勢や主要オブジェクトの姿勢の誤差が大きい場合には、姿勢変換処理部32による変換により得られた認識結果には、誤差が含まれることがあり得る。そこで、姿勢照合処理部42は、SSDやNCCなどの画像の類似度の評価の際に、テンプレート画像を上下左右に一定範囲内でスライドさせて、最も類似度の高い箇所をテンプレートマッチングによって推定し、最も類似度の高い箇所における応答値を類似度としてもよい。
また、姿勢変換処理部32による変換により得られた認識結果に含まれる誤差を補正するために、姿勢照合処理部42は、SSDやNCCなどの画像の類似度の評価の際に、姿勢におけるSSDやNCCのヤコビアンを計算し、反復計算により、類似度を最大化する姿勢を推定してもよい。例えば、非特許文献4には、平面オブジェクトに対して、SSDを最小化する姿勢を効率的な反復計算により推定する手法(ESM:Efficient Second Order Minimization)が開示されており、この際の初期値に、姿勢変換処理部32により得られた姿勢を用いることで、少ない反復回数で姿勢を最小化して、AR技術において、処理負荷をさらに軽減したり、オブジェクトの認識の頑健性をさらに向上させたりすることができる。
[画像処理装置1Aの動作]
以上の構成を備える画像処理装置1Aの動作について、図12から15を用いて以下に説明する。
図12は、画像処理装置1Aのフローチャートである。
ステップS200において、画像処理装置1Aは、画像取得部10によりプレビュー画像を取得し、ステップS201に処理を移す。
ステップS201において、画像処理装置1Aは、画像認識部20とオブジェクト関係推定処理部31と認識処理制御部40とにより第2の画像認識処理を行って、ステップS200で取得したプレビュー画像内の各オブジェクトを認識し、ステップS202に処理を移す。なお、第2の画像認識処理の詳細については、図13を用いて後述する。
ステップS202において、画像処理装置1Aは、オブジェクト関係推定処理部31により、ステップS201において現フレームで認識した全てのオブジェクトのうち、前フレームで主要オブジェクトに登録したオブジェクトを1つ選択するとともに、前フレームで他のオブジェクトと同一のグループに分類されていないオブジェクトを1つ選択して、ステップS203に処理を移す。
ステップS203において、画像処理装置1Aは、オブジェクト関係推定処理部31により、ステップS202またはステップS207で選択した2つのオブジェクトに対する相対姿勢連続推定回数カウンタのカウンタ値がゼロであるか否かを判別する。ゼロであると判別した場合には、ステップS204に処理を移し、ゼロではないと判別した場合には、ステップS205に処理を移す。
ステップS204において、画像処理装置1Aは、オブジェクト関係推定処理部31により、図8に示した相対姿勢算出処理を行って、ステップS206に処理を移す。
ステップS205において、画像処理装置1Aは、オブジェクト関係推定処理部31により、図9に示した分類処理を行って、ステップS206に処理を移す。
ステップS206において、画像処理装置1Aは、オブジェクト関係推定処理部31により、ステップS201において現フレームで認識した全てのオブジェクトのうち、前フレームで主要オブジェクトに登録したオブジェクトと、前フレームで他のオブジェクトと同一のグループに分類されていないオブジェクトと、について、全ての組み合わせを現フレームで選択したか否かを判別する。選択したと判別した場合には、ステップS208に処理を移し、選択していないと判別した場合には、ステップS207に処理を移す。
ステップS207において、画像処理装置1Aは、オブジェクト関係推定処理部31により、ステップS201において現フレームで認識した全てのオブジェクトのうち、前フレームで主要オブジェクトに登録したオブジェクトと、前フレームで他のオブジェクトと同一のグループに分類されていないオブジェクトと、について、選択していない組み合わせを構成する2つのオブジェクトを選択し、ステップS203に処理を戻す。
ステップS208において、画像処理装置1Aは、姿勢変換処理部32および仮想情報表示部70により、第2の重畳表示処理を行って、図12に示した処理を終了する。なお、第2の重畳表示処理の詳細については、図15を用いて後述する。
図13および図14は、画像処理装置1Aが行う上述の第2の画像認識処理のフローチャートである。
ステップS210において、画像処理装置1Aは、姿勢追跡部23により、ステップS200で取得したプレビュー画像中に、前フレームで認識したオブジェクトが含まれているか否かを判別する。含まれていると判別した場合には、ステップS211に処理を移し、含まれていないと判別した場合には、ステップS225に処理を移す。
ステップS211において、画像処理装置1Aは、認識処理制御処理部41により、ステップS200で取得したプレビュー画像中に、同一のグループに分類されており前フレームにおいて認識に成功したオブジェクトが2つ以上存在しているか否かを判別する。存在していると判別した場合には、ステップS212に処理を移し、存在していないと判別した場合には、ステップS220に処理を移す。
ステップS212において、画像処理装置1Aは、認識処理制御処理部41により、ステップS211で認識に成功したと判別した2つ以上のオブジェクトのうち、1つを主要オブジェクトとして登録し、残りを認識休止オブジェクトとして登録し、ステップS213に処理を移す。
ステップS213において、画像処理装置1Aは、姿勢追跡部23により、ステップS212で主要オブジェクトに登録した各オブジェクトについて、前フレームでの姿勢を初期値として姿勢の追跡処理を行って認識し、ステップS214に処理を移す。
ステップS214において、画像処理装置1Aは、認識処理制御処理部41により、ステップS213で追跡に失敗した主要オブジェクトがあるか否かを判別する。あると判別した場合には、ステップS215に処理を移し、ないと判別した場合には、ステップS220に処理を移す。
ステップS215において、画像処理装置1Aは、認識処理制御処理部41により、ステップS213で追跡に失敗した主要オブジェクトと同一のグループに分類されているオブジェクトを、全て認識休止オブジェクトから除外し、ステップS216に処理を移す。
ステップS216において、画像処理装置1Aは、姿勢照合処理部42により、ステップS213で追跡に成功した主要オブジェクトがあるか否かを判別する。あると判別した場合には、ステップS217に処理を移し、ないと判別した場合には、ステップS220に処理を移す。
ステップS217において、画像処理装置1Aは、姿勢変換処理部32により、ステップS213で追跡に成功した主要オブジェクトの姿勢を、同一のグループに分類されている認識休止オブジェクトの姿勢に変換し、姿勢照合処理部42により、変換した姿勢を照合し、ステップS218に処理を移す。
ステップS218において、画像処理装置1Aは、姿勢照合処理部42により、ステップS217の照合に失敗したオブジェクトがあるか否か、すなわち照合によって求められた類似度が閾値γを下回るオブジェクトがあるか否かを判別する。あると判別した場合には、ステップS219に処理を移し、ないと判別した場合には、ステップS220に処理を移す。
ステップS219において、画像処理装置1Aは、姿勢照合処理部42により、ステップS218で照合に失敗したオブジェクトを、認識休止オブジェクトから除外し、ステップS220に処理を移す。
ステップS220において、画像処理装置1Aは、姿勢追跡部23により、前フレームにおいて認識したが同一グループに他のオブジェクトが分類されていないオブジェクトと、ステップS219で認識休止オブジェクトから除外されたオブジェクトと、について、前フレームでの姿勢を初期値として姿勢を追跡処理を行って認識し、ステップS221に処理を移す。
ステップS221からS227のそれぞれにおいて、画像処理装置1Aは、図7のステップS112からS118のそれぞれにおいて画像処理装置1が行う処理と同様の処理を行う。
図15は、画像処理装置1Aが行う上述の第2の重畳表示処理のフローチャートである。
ステップS230において、画像処理装置1Aは、仮想情報表示部70により、ステップS213やステップS220における認識結果と、ステップS142により推定した姿勢と、を用いて、ステップS200で取得したプレビュー画像に仮想情報を重畳させ、図15に示した処理を終了する。
以上の画像処理装置1Aによれば、画像処理装置1が奏することのできる上述の効果に加えて、以下の効果を奏することができる。
画像処理装置1Aは、オブジェクト関係推定部30により、各グループからオブジェクトを1つずつ主要オブジェクトとして選択し、認識処理制御部40により、主要オブジェクトと同一のグループに分類された主要オブジェクト以外のオブジェクトについて、画像認識部20による認識を休止させる。また、オブジェクト関係推定部30により、画像認識部20による認識を休止させているオブジェクトを、主要オブジェクトの認識結果に基づいて認識する。このため、主要オブジェクトと同一のグループに分類された主要オブジェクト以外のオブジェクトについて、画像認識部20による認識を休止させてもオブジェクト関係推定部30により認識することができるので、画像認識部20により認識するオブジェクトの数を減少させることができる。したがって、AR技術において、処理負荷を軽減することができる。
また、画像処理装置1Aは、認識処理制御部40により、画像認識部20による認識を休止させているオブジェクトについてのオブジェクト関係推定部30による認識結果を、画像取得部10により取得されたプレビュー画像と照合し、照合に失敗すれば、オブジェクトについて画像認識部20による認識を再開させる。このため、オブジェクト関係推定部30による認識結果が正しいか否かを判定することができる。
また、画像処理装置1Aは、認識処理制御部40により、画像認識部20による認識を再開させる際に、画像取得部10により前フレームにおけるオブジェクト関係推定部30による認識結果を初期値として、画像認識部20に姿勢を追跡させる。このため、処理負荷を軽減することができるとともに、姿勢推定の精度および認識の頑健性を向上させることができる。
また、画像処理装置1Aは、認識処理制御部40により、画像認識部20による認識を休止させているオブジェクトについてのオブジェクト関係推定部30による認識結果に基づいて、オブジェクトを画像取得部10により取得されたプレビュー画像に投影して投影画像を作成するとともに、投影画像と、画像取得部10により取得されたプレビュー画像と、の類似度が閾値γ未満であれば、照合に失敗したと判定する。このため、オブジェクト関係推定部30による認識結果が正しいか否かを判定することができる。
<第3実施形態>
[画像処理装置1Bの概要]
図16は、本発明の第3実施形態に係る画像処理装置1Bのブロック図である。画像処理装置1Bは、図11に示した本発明の第2実施形態に係る画像処理装置1Aとは、認識結果共有処理部50および協調認識処理部60を備える点で異なる。なお、画像処理装置1Bにおいて、画像処理装置1Aと同一の構成要件については、同一符号を付し、その説明を省略する。
本実施形態では、画像処理装置1Bを搭載した端末として、自端末および他端末を想定し、これら2つの端末が同一のAR空間を共有することを想定している。この場合、自端末と他端末とでは、オブジェクトからカメラまでの距離や、オブジェクトに対するカメラの位置や向きが異なるため、一方の端末では認識できるオブジェクトを他方の端末では認識できないといったことが起こり得る。そこで、自端末と他端末との間でも、オブジェクトの認識結果を共有する。
[認識結果共有処理部50の構成および動作]
認識結果共有処理部50は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とするとともに、入力された自端末の画像認識部20による認識結果を他端末の画像認識部20に送信する。これによれば、自端末と他端末との間で、画像認識部20による認識結果を共有することができる。
他端末の画像認識部20との認識結果の送受信は、アドホック通信で実現される。これによれば、同一LAN内の他端末と通信を行うことができる。また、アクセスポイントが存在しない場合でも、Wi−Fi DirectやBluetooth(登録商標)を用いて近接する端末間で通信を行うことが可能である。アドホック通信に必要なペアリング機能、ディスカバリ機能などを備えたソフトウェア(ライブラリ)は一般に公開されており、このようなライブラリを利用することで本機能の実現は容易に可能である。ただし、本機能は、無線ネットワークや有線ケーブルを介して、一般的な通信プロトコルを利用して実現することも可能である。
なお、認識結果共有処理部50による処理は、自端末と他端末とで同期する必要がないため、自端末の画像認識部20による認識結果を他端末の画像認識部20に送信する処理と、他端末の画像認識部20による認識結果を自端末の画像認識部20で受信する処理と、は独立に実行することが可能である。また、認識結果の送受信のための通信処理では、一般的に遅延が発生するため、他端末の画像認識部20との認識結果の送信処理および受信処理は、他の処理とは独立に(プログラム上の別スレッドで)実行することが可能である。
[協調認識処理部60の構成および動作]
協調認識処理部60は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とする。協調認識処理部60は、他端末での認識結果を、自端末を基準とした認識結果に変換し、自端末での認識結果と統合する。この協調認識処理部60は、相対姿勢推定部61および姿勢変換部62を備える。
相対姿勢推定部61は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とする。この相対姿勢推定部61は、自端末での認識結果と、他端末での認識結果と、に基づいて、自端末と他端末との相対的な位置関係を示す姿勢(相対姿勢)を推定する。なお、以降では、画像処理装置1Bが搭載された自端末のことを自端末Sとし、画像処理装置1Bが搭載された他端末のことを他端末Tとする。
相対姿勢の推定は、自端末Sでの認識結果および他端末Tでの認識結果の双方に、同一のオブジェクトについての認識結果が含まれている場合に、実行可能である。なお、同一のオブジェクトは、基準マーカであってもよい。
ここで、以降では、上述の同一のオブジェクトのことをオブジェクトaとする。また、自端末Sの姿勢追跡部23により推定されたオブジェクトaの姿勢行列のことを姿勢行列WSaとし、他端末Tの姿勢追跡部23により推定されたオブジェクトaの姿勢行列のことを姿勢行列WTaとする。すると、以下の数式(7)により、自端末Sと他端末Tとの相対姿勢WSTを求めることができる。
なお、上述の同一のオブジェクトとして基準マーカが存在する場合には、上述のオブジェクトaとして基準マーカを用いることが好ましい。これは、基準マーカが、一般的に容易に認識できるようにデザインされており、他のオブジェクトと比べて画像認識部20による認識精度が高いためである。
一方、上述の同一のオブジェクトとして基準マーカが存在しない場合には、自端末および他端末の双方で認識できているオブジェクトを、上述のオブジェクトaとして用いればよい。上述の同一のオブジェクトとして基準マーカが存在しない場合としては、画像取得部10により取得されたプレビュー画像内にそもそも基準マーカが存在しない場合や、画像取得部10により取得されたプレビュー画像内に基準マーカは存在しているものの自端末および他端末のうち少なくともいずれかで認識できていない場合が考えられる。
なお、数式(7)を用いて上述した相対姿勢の推定は、自端末Sおよび他端末Tの2台の端末が存在している場合である。端末が3台以上存在している場合には、以下のようにして相対姿勢を推定することもできる。ここで、例えば、3台の端末を、自端末S、他端末T、他端末Uとし、自端末Sと他端末Tとの相対姿勢WSTと、他端末Tと他端末Uとの相対姿勢WTUと、を求めることができているものとする。この場合、自端末Sと他端末Uとの相対姿勢WSUは、以下の数式(8)により求めることができる。
このため、自端末Sおよび他端末Uの双方で認識できているオブジェクトが存在していない場合でも、数式(7)の代わりに数式(8)を用いることで、自端末Sと他端末Uとの相対姿勢WSUを求めることができる。ただし、この場合には、協調認識処理部60に、他端末Tと他端末Uとの相対姿勢WTUが、他端末Tまたは他端末Uの少なくともいずれかから入力される必要がある。
姿勢変換部62は、他端末の画像認識部20による認識結果と、相対姿勢推定部61により推定された相対姿勢WSTと、を入力とする。この姿勢変換部62は、相対姿勢WSTを用いて、他端末での認識結果を、自端末を基準とした認識結果に変換する。
ここで、自端末Sが認識できていないオブジェクトbについての認識結果が、他端末Tでの認識結果に含まれており、他端末Tの姿勢追跡部23により推定されたオブジェクトbの姿勢行列が姿勢行列WTbで表されているものとする。すると、以下の数式(9)により、他端末Tの姿勢追跡部23により推定されたオブジェクトbの姿勢行列WTbを、自端末Sにおけるオブジェクトbの姿勢行列WSbに変換し、自端末Sにおけるオブジェクトbの認識結果とすることができる。
これによれば、自端末Sの姿勢変換部62は、自端末Sの画像認識部20により認識されていないオブジェクトbについても、他端末Tの画像認識部20による認識結果と、自端末Sと他端末Tとの相対姿勢と、に基づいて認識することができる。
また、姿勢変換部62は、この自端末Sにおけるオブジェクトbの認識結果と、自端末Sの画像認識部20による認識結果(自端末Sにおけるオブジェクトaの認識結果)と、を統合し、統合認識結果とする。これによれば、姿勢変換部62は、オブジェクトaおよびオブジェクトbについて、自端末Sにおける認識結果を得ることができる。
なお、上述のように相対姿勢を用いることで、他端末での認識結果に含まれる全てのオブジェクトについて、他端末での認識結果から、自端末を基準とした認識結果に変換することができる。ただし、他端末での認識結果に含まれる全てのオブジェクトのうち、相対姿勢を求める際に用いたオブジェクトについては、この相対姿勢を用いて自端末における認識結果に変換すると、自端末におけるこのオブジェクトの認識結果に一致することになる。このため、他端末での認識結果に含まれる全てのオブジェクトのうち、相対姿勢を求める際に用いたオブジェクトについては、相対姿勢を用いて変換することに意味はない。
また、自端末および他端末の双方で認識できているオブジェクトについては、自端末での認識結果と、他端末での認識結果を相対姿勢を用いて変換したものと、のいずれかを用いることができる。ただし、本実施形態では、自端末での認識結果を優先的に用い、自端末で認識していないオブジェクトについてのみ、他端末での認識結果を相対姿勢を用いて変換したものを用いるものとする。なお、自端末で認識していないオブジェクトとは、自端末で認識処理を行ったが認識に失敗してしまったオブジェクトと、そもそも自端末で認識処理が行われていないオブジェクトと、のことである。
仮想情報表示部70は、プレビュー画像に、画像認識部20およびオブジェクト関係推定部30による認識結果に加えて、姿勢変換部62による認識結果に基づいて、仮想情報を重畳させる。
以上の画像処理装置1Bによれば、画像処理装置1Aが奏することのできる上述の効果に加えて、以下の効果を奏することができる。
画像処理装置1Bは、協調認識処理部60により、他の画像処理装置で認識されたオブジェクトの認識結果を、画像処理装置1Bを基準とした認識結果に変換する。また、仮想情報表示部70により、画像認識部20による認識結果と、オブジェクト関係推定部30による認識結果と、協調認識処理部60による認識結果と、に基づいて、画像取得部10により取得されたプレビュー画像に仮想情報を重畳させる。このため、プレビュー画像への仮想情報の重畳に、他の画像処理装置で認識結果も用いることができるので、AR技術において、処理負荷をさらに軽減したり、オブジェクトの認識の頑健性をさらに向上させたりすることができる。
なお、本発明の画像処理装置1、1A、1Bの処理を、コンピュータ読み取り可能な非一時的な記録媒体に記録し、この記録媒体に記録されたプログラムを画像処理装置1、1A、1Bに読み込ませ、実行することによって、本発明を実現できる。
ここで、上述の記録媒体には、例えば、EPROMやフラッシュメモリといった不揮発性のメモリ、ハードディスクといった磁気ディスク、CD−ROMなどを適用できる。また、この記録媒体に記録されたプログラムの読み込みおよび実行は、画像処理装置1、1A、1Bに設けられたプロセッサによって行われる。
また、上述のプログラムは、このプログラムを記憶装置などに格納した画像処理装置1、1A、1Bから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上述のプログラムは、上述の機能の一部を実現するためのものであってもよい。さらに、上述の機能を画像処理装置1、1A、1Bにすでに記録されているプログラムとの組み合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
例えば、上述の各実施形態では、オブジェクトとして、図2から4では二次元バーコードを記載したが、これに限らず、任意の図や文字や物体などであってもよい。
また、上述の第2実施形態において、認識処理制御部40により、画像認識部20による主要オブジェクトの認識が失敗すると、主要オブジェクトと同一のグループに分類された主要オブジェクト以外のオブジェクトについて、画像認識部20による認識を再開させることとしてもよい。これによれば、オブジェクト関係推定部30による認識ができなくなった場合には、画像認識部20による認識を再開させることができ、オブジェクトの認識の頑健性をさらに向上させることができる。
また、上述の各実施形態において、画像認識部20により、オブジェクトごとの認識結果に、認識結果の認識精度の指標となる情報を付加し、オブジェクト関係推定部30により、画像認識部20により付加された認識精度の指標が閾値以上であるオブジェクト間の相対姿勢を、安定していると判定することとしてもよい。さらに、認識精度の最も高いオブジェクトを、主要オブジェクトとしてもよい。これらによれば、オブジェクトの認識結果の認識精度を考慮して、オブジェクトを分類することができる。なお、上述の認識精度の指標としては、例えば、オブジェクトに対する撮影距離や撮影角度を採用したり、局所特徴量のマッチング数やマッチングのスコアを採用したり、SSD(Sum of Squared Difference)やNCC(Normalized Cross Correlation)といったテンプレートマッチングの手法を用いる場合にはSSDやNCCの応答値をそのまま採用したりすることができる。
また、上述の各実施形態において、画像認識部20により、オブジェクトごとの認識結果に、オブジェクトの認識に要する処理負荷の指標となる情報を付加し、オブジェクト関係推定部30により、画像認識部20により付加された処理負荷の指標が閾値未満であるオブジェクトを、主要オブジェクトとしてもよい。これによれば、処理負荷の低いオブジェクトとの関係性を用いて、オブジェクト関係推定部30によりオブジェクトを認識することができるので、処理負荷をさらに軽減することができる。なお、上述の処理負荷の指標としては、例えば、認識に要した時間を採用したり、オブジェクトの種類に応じた値を設定したりすることができる。