以下、本発明の実施の形態について図面を参照しながら説明する。なお、以下の実施形態における構成要素は適宜、既存の構成要素などとの置き換えが可能であり、また、他の既存の構成要素との組み合せを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<第1実施形態>
[画像処理装置1の概要]
図1は、本発明の第1実施形態に係る画像処理装置1のブロック図である。画像処理装置1は、複数人での利用を想定したAR技術に対応している。この画像処理装置1の概要について、図2、3、4を用いて以下に説明する。
図2は、画像処理装置1の利用例を示す模式図である。図2では、テーブルAAの上に3つのオブジェクトM1、M2、M3が直線状に配置されている。ユーザU1が所有する端末100は、内蔵しているカメラで、オブジェクトM1の側からテーブルAA上を撮影しており、ユーザU2が所有する端末200は、内蔵しているカメラで、オブジェクトM3の側からテーブルAA上を撮影している。端末100、200には、それぞれ、上述の画像処理装置1が内蔵されている。
図3は、図2における端末100の表示画面110を示す図である。表示画面110には、下方(図3において下方)から上方(図3において上方)に向かってオブジェクトM1、M2、M3の順番にオブジェクトM1からM3が表示されている。また、オブジェクトM1の右方(図3において右方)には、オブジェクトM1に紐付けられた仮想情報C1が重畳されている。また、オブジェクトM2の右方(図3において右方)には、オブジェクトM2に紐付けられた仮想情報C2が重畳されている。また、オブジェクトM3の右方(図3において右方)には、オブジェクトM3に紐付けられた仮想情報C3が重畳されている。このため、端末100を所有するユーザU1は、表示画面110を通して、AR空間に存在する仮想情報C1からC3を認識することができる。
図4は、図2における端末200の表示画面210を示す図である。表示画面210には、上方(図4において上方)から下方(図4において下方)に向かってオブジェクトM1、M2、M3の順番にオブジェクトM1からM3が表示されている。また、オブジェクトM1の左方(図4において左方)には、オブジェクトM1に紐付けられた仮想情報C1が重畳されている。また、オブジェクトM2の左方(図4において左方)には、オブジェクトM2に紐付けられた仮想情報C2が重畳されている。また、オブジェクトM3の左方(図4において左方)には、オブジェクトM3に紐付けられた仮想情報C3が重畳されている。このため、端末200を所有するユーザU2は、表示画面210を通して、AR空間に存在する仮想情報C1からC3を認識することができる。
なお、端末200の表示画面210では、仮想情報C1からC3のそれぞれは、端末100の表示画面110に表示されている仮想情報C1からC3を180度回転させた状態で表示されている。これは、端末200が、端末100と180度反対の方向から、オブジェクトM1からM3のそれぞれを撮影しているためである。このため、端末100を所有するユーザU1と、端末200を所有するユーザU2とは、表示画面110、210を通して、仮想情報C1からC3を互いに反対側から見ているように認識することができる。
ここで、仮想情報C1からC3のそれぞれは、現実空間には存在しておらず、オブジェクトM1からM3のそれぞれと紐付けて端末100、200のそれぞれに記憶されている。なお、オブジェクトM2がテーブルAA上で固定される場合、すなわちユーザU1、U2の双方がオブジェクトM2を動かさない場合には、オブジェクトM2を基準マーカとして扱い、仮想情報C2がテーブルAA上に固定配置されていると見なすことができる。本実施形態では、オブジェクトM2は、基準マーカとして扱われるものとする。
仮想情報C2は、基準マーカM2(オブジェクトM2)を中心としたAR空間内に固定配置されている。このため、端末100のカメラが基準マーカM2を撮影できる範囲内でユーザU1が端末100を動かした場合、表示画面110内では、基準マーカM2との相対的な位置関係を保持した状態で仮想情報C2も動くことになる。表示画面210内においても表示画面110内と同様に、端末200のカメラが基準マーカM2を撮影できる範囲内でユーザU2が端末200を動かした場合、基準マーカM2との相対的な位置関係を保持した状態で仮想情報C2も動くことになる。また、AR空間内に固定配置されている仮想情報が仮想情報C2以外にも存在する場合には、その仮想情報も仮想情報C2と同様に動くことになる。
一方、オブジェクトM1、M3は、ユーザU1、U2の双方が動かすことのできるものである。このため、オブジェクトM1を動かすと、表示画面110、210のそれぞれの中で、オブジェクトM1の動きに追随して仮想情報C1が動くことになる。また、オブジェクトM3を動かすと、表示画面110、210のそれぞれの中で、オブジェクトM3の動きに追随して仮想情報C3が動くことになる。
以上によれば、AR技術により、仮想情報C2がテーブルAA上に固定配置されているとともに、仮想情報C1、C3のそれぞれがオブジェクトM1、M3のそれぞれに近接して存在しているように、ユーザU1、U2に体感させることができる。
ここで、画像認識処理におけるオブジェクトの認識精度は、オブジェクトとカメラとの距離が離れるに従って低下する。また、カメラの位置や向きによって、端末間で、認識できるオブジェクトに差異が生じることがある。このような理由により、例えば、オブジェクトM2については、端末100、200の双方が認識できるが、オブジェクトM3については、端末200のみが認識でき、端末100は認識できないといった状況が起こり得る。
そこで、まず、図2から4を用いて上述したAR空間を、上述の特許文献1から3の技術で実現する場合について、以下に説明する。この場合において、上述の状況が起こると、端末100は仮想情報C3の表示位置を決定できないため、表示画面110に仮想情報C3を表示できなくなってしまう。これによれば、ユーザU1とユーザU2とがAR空間を正しく共有できなくなってしまい、共同作業を行う上でのユーザU1とユーザU2との意思疎通の妨げとなり、ユーザビリティが低下してしまう。
次に、図2から4を用いて上述したAR空間を、本実施形態に係る画像処理装置1で実現する場合について、以下に説明する。この場合、画像処理装置1は、仮想情報を重畳するために、端末100と端末200とでオブジェクトの認識結果を共有する。具体的には、まず、端末100は、オブジェクトM2の認識結果を端末200に送信し、端末200は、オブジェクトM2、M3の認識結果を端末100に送信する。次に、端末100は、オブジェクトM2の自端末での認識結果と、オブジェクトM2の端末200での認識結果と、に基づいて、端末100に対する端末200の相対的な位置関係を示す相対姿勢を推定する。次に、端末100は、推定した相対姿勢を用いて、オブジェクトM3の端末200での認識結果を、自端末を基準とした認識結果に変換する。これによれば、端末100がオブジェクトM3を直接認識できなくても、端末200における認識結果を変換して、オブジェクトM3を認識することができる。このため、表示画面110に仮想情報C3を表示することができるので、ユーザU1とユーザU2とがAR空間を正しく共有でき、共同作業を行う上でのユーザU1とユーザU2との意思疎通が妨げられてしまうのを防止して、ユーザビリティの低下を抑制することができる。
[画像処理装置1の構成]
以上の画像処理装置1について、以下に詳述する。図1に戻って、画像処理装置1は、デスクトップPCといった据え置き型のコンピュータや、ラップトップPC、携帯電話機、携帯ゲーム機、HMDなどの携帯型の情報端末に搭載可能である。この画像処理装置1は、画像取得部10、画像認識部20、認識結果共有処理部30、協調認識処理部40、および仮想情報表示部50を備える。
[画像取得部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に開示されているように処理負荷の小さい姿勢追跡アルゴリズムを用いることが望ましい。
以上の画像認識部20は、上述のオブジェクトの姿勢の推定を、オブジェクトごとに行う。オブジェクトごとの姿勢の推定処理は、互いに独立であるため並列に実施してもよいし、順番に実施してもよい。
また、AR空間内に仮想情報を固定配置して重畳させる場合には、画像認識部20は、オブジェクトの認識に加えて、基準マーカの認識も行う。オブジェクトを認識する場合と同様の処理で基準マーカを認識できる場合には、画像認識部20は、オブジェクトと基準マーカとを区別することなく認識を行う。一方、基準マーカが、非特許文献1の手法で認識可能なARマーカである場合や、非特許文献3の手法で認識可能な復元された空間である場合には、基準マーカをオブジェクトと区別して、基準マーカのみ、対応する認識手法で認識を行う。AR空間内に固定配置して重畳させる仮想情報がない場合や、そもそも基準マーカが存在しない場合には、画像認識部20は、オブジェクトの認識のみ行う。
いずれにせよ、画像認識部20が行うことは、オブジェクト(存在する場合には基準マーカも)の姿勢の推定である。なお、基準マーカの有無、基準マーカの種類、および姿勢の推定に用いる認識手法は、上述の手法に限定されるものではない。
[認識結果共有処理部30の構成および動作]
認識結果共有処理部30は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とするとともに、入力された自端末の画像認識部20による認識結果を他端末の画像認識部20に送信する。これによれば、自端末と他端末との間で、画像認識部20による認識結果を共有することができる。
他端末の画像認識部20との認識結果の送受信は、アドホック通信で実現される。これによれば、同一LAN内の他端末と通信を行うことができる。また、アクセスポイントが存在しない場合でも、Wi−Fi DirectやBluetooth(登録商標)を用いて近接する端末間で通信を行うことが可能である。アドホック通信に必要なペアリング機能、ディスカバリ機能などを備えたソフトウェア(ライブラリ)は一般に公開されており、このようなライブラリを利用することで本機能の実現は容易に可能である。ただし、他端末の画像認識部20との認識結果の送受信は、上述のアドホック通信に限らず、有線や無線で情報をやり取りできる通信であれば実現可能である。
なお、認識結果共有処理部30による処理は、自端末と他端末とで同期する必要がないため、自端末の画像認識部20による認識結果を他端末の画像認識部20に送信する処理と、他端末の画像認識部20による認識結果を自端末の画像認識部20で受信する処理と、は独立に実行することが可能である。また、認識結果の送受信のための通信処理では、一般的に遅延が発生するため、他端末の画像認識部20との認識結果の送信処理および受信処理は、他の処理とは独立に(プログラム上の別スレッドで)実行することが可能である。
[協調認識処理部40の構成および動作]
協調認識処理部40は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とする。協調認識処理部40は、他端末での認識結果を、自端末を基準とした認識結果に変換し、自端末での認識結果と統合する。この協調認識処理部40は、相対姿勢推定部41および姿勢変換部42を備える。
相対姿勢推定部41は、自端末の画像認識部20による認識結果と、他端末の画像認識部20による認識結果と、を入力とする。この相対姿勢推定部41は、自端末での認識結果と、他端末での認識結果と、に基づいて、自端末と他端末との相対的な位置関係を示す姿勢(相対姿勢)を推定する。本実施形態では、オブジェクトの姿勢と同様に、相対姿勢も姿勢行列で表すこととする。なお、以降では、画像処理装置1が内蔵された自端末のことを自端末Sとし、画像処理装置1が内蔵された他端末のことを他端末Tとする。
相対姿勢の推定は、自端末Sでの認識結果および他端末Tでの認識結果の双方に、同一のオブジェクトについての認識結果が含まれている場合に、実行可能である。なお、同一のオブジェクトは、基準マーカであってもよい。
ここで、以降では、上述の同一のオブジェクトのことをオブジェクトaとする。また、自端末Sの姿勢追跡部23により推定されたオブジェクトaの姿勢行列のことを姿勢行列WSaとし、他端末Tの姿勢追跡部23により推定されたオブジェクトaの姿勢行列のことを姿勢行列WTaとする。すると、以下の数式(2)により、自端末Sと他端末Tとの相対姿勢WSTを求めることができる。
なお、上述の同一のオブジェクトとして基準マーカが存在する場合には、上述のオブジェクトaとして基準マーカを用いることが好ましい。これは、基準マーカが、一般的に容易に認識できるようにデザインされており、他のオブジェクトと比べて画像認識部20による認識精度が高いためである。
一方、上述の同一のオブジェクトとして基準マーカが存在しない場合には、自端末および他端末の双方で認識できているオブジェクトを、上述のオブジェクトaとして用いればよい。上述の同一のオブジェクトとして基準マーカが存在しない場合としては、画像取得部10により取得されたプレビュー画像内にそもそも基準マーカが存在しない場合や、画像取得部10により取得されたプレビュー画像内に基準マーカは存在しているものの自端末および他端末のうち少なくともいずれかで認識できていない場合が考えられる。
なお、数式(2)を用いて上述した相対姿勢の推定は、自端末Sおよび他端末Tの2台の端末が存在している場合である。端末が3台以上存在している場合には、以下のようにして相対姿勢を推定することもできる。ここで、例えば、3台の端末を、自端末S、他端末T、他端末Uとし、自端末Sと他端末Tとの相対姿勢WSTと、他端末Tと他端末Uとの相対姿勢WTUと、を求めることができているものとする。この場合、自端末Sと他端末Uとの相対姿勢WSUは、以下の数式(3)により求めることができる。
このため、自端末Sおよび他端末Uの双方で認識できているオブジェクトが存在していない場合でも、数式(2)の代わりに数式(3)を用いることで、自端末Sと他端末Uとの相対姿勢WSUを求めることができる。ただし、この場合には、協調認識処理部40に、他端末Tと他端末Uとの相対姿勢WTUが、他端末Tまたは他端末Uの少なくともいずれかから入力される必要がある。
姿勢変換部42は、他端末の画像認識部20による認識結果と、相対姿勢推定部41により推定された相対姿勢WSTと、を入力とする。この姿勢変換部42は、相対姿勢WSTを用いて、他端末での認識結果を、自端末を基準とした認識結果に変換する。
ここで、自端末Sが認識できていないオブジェクトbについての認識結果が、他端末Tでの認識結果に含まれており、他端末Tの姿勢追跡部23により推定されたオブジェクトbの姿勢行列が姿勢行列WTbで表されているものとする。すると、以下の数式(4)により、他端末Tの姿勢追跡部23により推定されたオブジェクトbの姿勢行列WTbを、自端末Sにおけるオブジェクトbの姿勢行列WSbに変換し、自端末Sにおけるオブジェクトbの認識結果とすることができる。
これによれば、自端末Sの姿勢変換部42は、自端末Sの画像認識部20により認識されていないオブジェクトbについても、他端末Tの画像認識部20による認識結果と、自端末Sと他端末Tとの相対姿勢と、に基づいて認識することができる。
また、姿勢変換部42は、この自端末Sにおけるオブジェクトbの認識結果と、自端末Sの画像認識部20による認識結果(自端末Sにおけるオブジェクトaの認識結果)と、を統合し、統合認識結果とする。これによれば、姿勢変換部42は、オブジェクトaおよびオブジェクトbについて、自端末Sにおける認識結果を得ることができる。
なお、上述のように相対姿勢を用いることで、他端末での認識結果に含まれる全てのオブジェクトについて、他端末での認識結果から、自端末を基準とした認識結果に変換することができる。ただし、他端末での認識結果に含まれる全てのオブジェクトのうち、相対姿勢を求める際に用いたオブジェクトについては、この相対姿勢を用いて自端末における認識結果に変換すると、自端末におけるこのオブジェクトの認識結果に一致することになる。このため、他端末での認識結果に含まれる全てのオブジェクトのうち、相対姿勢を求める際に用いたオブジェクトについては、相対姿勢を用いて変換することに意味はない。
また、自端末および他端末の双方で認識できているオブジェクトについては、自端末での認識結果と、他端末での認識結果を相対姿勢を用いて変換したものと、のいずれかを用いることができる。ただし、本実施形態では、自端末での認識結果を優先的に用い、自端末で認識していないオブジェクトについてのみ、他端末での認識結果を相対姿勢を用いて変換したものを用いるものとする。なお、自端末で認識していないオブジェクトとは、自端末で認識処理を行ったが認識に失敗してしまったオブジェクトと、そもそも自端末で認識処理が行われていないオブジェクトと、のことである。
[仮想情報表示部50の構成および動作]
仮想情報表示部50は、画像取得部10により取得されたプレビュー画像と、姿勢変換部42により得られた統合認識結果と、を入力とする。この仮想情報表示部50は、プレビュー画像に、統合認識結果に基づいて仮想情報を重畳させる。なお、仮想情報を重畳させる際に、仮想情報表示部50は、撮像装置の内部パラメータ行列(画角といった情報を含む)と、重畳させる仮想情報が紐付けられているオブジェクトの姿勢行列と、を用いて、3Dレンダリングによって対応する位置にこの仮想情報を重畳させる。また、仮想情報を重畳させる際に、仮想情報表示部50は、統合認識結果に基づいて仮想情報の位置や向きを補正する。
なお、仮想情報表示部50は、有線ケーブルや無線ネットワークを介して自端末と接続された外部モニタや、自端末に搭載されているディスプレイ(網膜投影型を含む)や、プロジェクタなどの、映像をユーザに掲示するための表示装置を制御するものである。この表示装置が、例えば、光学シースルー型のHMDや、プロジェクタを用いて視界に直接付加情報を重畳するものである場合には、プレビュー画像は表示させず、仮想情報のみを表示させることとしてもよい。
[画像処理装置1の動作]
以上の構成を備える画像処理装置1の動作について、図5、6を用いて以下に説明する。
図5は、画像処理装置1のフローチャートである。
ステップS1において、画像処理装置1は、画像取得部10によりプレビュー画像を取得し、ステップS2に処理を移す。
ステップS2において、画像処理装置1は、認識結果共有処理部30により、他端末の画像認識部20による認識結果を取得し、ステップS3に処理を移す。
ステップS3において、画像処理装置1は、画像認識部20により第1の認識処理を行って、ステップS1で取得したプレビュー画像内の各オブジェクトを認識し、ステップS4に処理を移す。なお、第1の認識処理の詳細については、図6を用いて後述する。
ステップS4において、画像処理装置1は、認識結果共有処理部30により、ステップS3で求めた自端末での認識結果を、他端末での認識結果共有処理部30に送信し、ステップS5に処理を移す。
ステップS5において、画像処理装置1は、相対姿勢推定部41により、ステップS2で取得した他端末での認識結果に、ステップS3で認識していないオブジェクト(以降では、このオブジェクトのことをオブジェクトPと呼ぶこととする)についての認識結果が含まれているかを判別する。含まれている場合には、ステップS6に処理を移し、含まれていない場合には、ステップS10に処理を移す。
ステップS6において、画像処理装置1は、相対姿勢推定部41により、ステップS2で取得した他端末での認識結果と、ステップS3で求めた自端末での認識結果と、に基づいて自端末と他端末との相対姿勢を推定し、ステップS7に処理を移す。
ステップS7において、画像処理装置1は、姿勢変換部42により、オブジェクトPについての他端末での認識結果を、ステップS6で推定した相対姿勢を用いて自端末における認識結果に変換し、ステップS8に処理を移す。
ステップS8において、画像処理装置1は、姿勢変換部42により、ステップS3で求めた自端末での認識結果と、ステップS7で変換したオブジェクトPについての自端末における認識結果と、を統合し、ステップS9に処理を移す。
ステップS9において、画像処理装置1は、仮想情報表示部50により、ステップS8で統合した認識結果を用いて、ステップS1で取得したプレビュー画像に仮想情報を重畳させ、図5に示した処理を終了する。
ステップS10において、画像処理装置1は、仮想情報表示部50により、ステップS3で求めた自端末での認識結果を用いて、ステップS1で取得したプレビュー画像に仮想情報を重畳させ、図5に示した処理を終了する。
図6は、画像処理装置1が行う上述の第1の認識処理のフローチャートである。
ステップS21において、画像処理装置1は、姿勢追跡部23により、ステップS1で取得したプレビュー画像中に、追跡中のオブジェクトが含まれているか否かを判別する。含まれている場合には、ステップS22に処理を移し、含まれていない場合には、ステップS26に処理を移す。なお、追跡中のオブジェクトとは、前フレームにおけるプレビュー画像において初期姿勢推定部22により姿勢の初期値が求められたオブジェクト(後述のステップS27参照)と、前フレームにおけるプレビュー画像において姿勢追跡部23により認識されたオブジェクト(後述のステップS22参照)と、のことである。
ステップS22において、画像処理装置1は、姿勢追跡部23により、ステップS21で追跡中であると判別した各オブジェクトについて、前フレームでの姿勢を初期値として姿勢の追跡処理を行って認識し、ステップS23に処理を移す。
ステップS23において、画像処理装置1は、姿勢追跡部23により、ステップS22での姿勢の追跡に失敗したオブジェクトがあるか否かを判別する。ある場合には、ステップS24に処理を移し、ない場合には、ステップS25に処理を移す。
ステップS24において、画像処理装置1は、姿勢追跡部23により、ステップS23で姿勢の追跡に失敗したと判別したオブジェクトを、追跡中のオブジェクトから除外し、ステップS25に処理を移す。これによれば、ステップS23で姿勢の追跡に失敗したと判別されたオブジェクトについては、次フレームでは、初期姿勢推定部22による姿勢の推定が行われることになる。
ステップS25において、画像処理装置1は、姿勢追跡部23により、追跡中のオブジェクトの数が、予め定められた上限値に達したか否かを判別する。達した場合には、図6に示した処理を終了し、達していない場合には、ステップS26に処理を移す。
ステップS26において、画像処理装置1は、オブジェクト識別部21により、ステップS1で取得したプレビュー画像内のオブジェクトを識別し、ステップS27に処理を移す。
ステップS27において、画像処理装置1は、初期姿勢推定部22により、ステップS1で取得したプレビュー画像に含まれるステップS26で識別したオブジェクトについて、姿勢を推定し、図6の処理を終了する。
以上の画像処理装置1によれば、以下の効果を奏することができる。
画像処理装置1は、画像認識部20により、プレビュー画像内のオブジェクトを認識し、協調認識処理部40により、画像認識部20により認識していないオブジェクトについて、他端末で認識されたオブジェクトの認識結果を、自端末を基準とした認識結果に変換し、仮想情報表示部50により、画像認識部20による認識結果と、協調認識処理部40により変換された認識結果と、に基づいて、プレビュー画像に仮想情報を重畳させる。このため、他端末での認識結果を、自端末での認識結果に変換して用いることができる。したがって、他端末での認識結果を自端末での認識結果に変換して用いることで、自端末の画像認識部20では認識していないオブジェクトを認識することができるので、仮想情報を確認できるユーザと確認できないユーザとが生じてしまうのを防止することができる。よって、複数人での利用を想定したAR技術において、ユーザビリティを向上させることができる。
また、画像処理装置1は、画像認識部20による認識結果と、他端末での認識結果と、の双方に認識結果が含まれているオブジェクトが存在していれば、このオブジェクトについての画像認識部20による認識結果と、このオブジェクトについての他端末での認識結果と、に基づいて、協調認識処理部40により自端末と他端末との相対的な位置関係を示す相対姿勢を推定する。また、推定した相対姿勢を用いて、他端末での認識結果を、自端末を基準とした認識結果に変換する。このため、他端末での認識結果を変換して得られた、自端末を基準とした認識結果について、認識精度を向上させることができるので、ユーザビリティをさらに向上させることができる。
また、画像処理装置1は、協調認識処理部40により、自端末Sと他端末Tとの相対姿勢WSTと、他端末Tと他端末Uとの相対姿勢WTUと、に基づいて、自端末Sと他端末Uとの相対姿勢WSUを推定する。このため、自端末Sと他端末Uとの相対姿勢を直接求めることができない場合でも、自端末Sと他端末Tとの相対姿勢と、他端末Tと他端末Uとの相対姿勢と、が分かっていれば、自端末Sと他端末Uとの相対姿勢を求めることができる。
<第2実施形態>
[画像処理装置1Aの概要]
図7は、本発明の第2実施形態に係る画像処理装置1Aのブロック図である。画像処理装置1Aは、図1に示した本発明の第1実施形態に係る画像処理装置1とは、協調認識処理部40の代わりに協調認識処理部40Aを備える点で異なる。なお、画像処理装置1Aにおいて、画像処理装置1と同一の構成要件については、同一符号を付し、その説明を省略する。
ここで、まず、図2から4を用いて上述したAR空間を、上述の特許文献1から3の技術で実現する場合について、以下に説明する。この場合、端末100、200のそれぞれは、上述のように、オブジェクトM1からM3をそれぞれ独立に認識し続ける必要があり、リアルタイム処理の実現が困難になってしまう。このため、端末100、200のそれぞれが認識可能なオブジェクトの数が限定されて、ユーザビリティが低下してしまうおそれがある。
次に、図2から4を用いて上述したAR空間を、本実施形態に係る画像処理装置1Aで実現する場合について、以下に説明する。ここで、例えば、端末200がオブジェクトM1の認識に成功しているものとする。すると、端末100には、オブジェクトM1の認識結果が端末200から送信される。そこで、端末100は、オブジェクトM1の端末200での認識結果を、自端末を基準とした認識結果に変換し、オブジェクトM1の端末100の姿勢追跡部23による追跡処理を休止する。これによれば、端末100が姿勢追跡部23による追跡処理を行わなくてはならないオブジェクトの数が減少するので、端末100の処理負荷を軽減することができ、ユーザビリティの低下を抑制することができる。
[画像処理装置1Aの構成]
以上の画像処理装置1Aについて、以下に詳述する。図7に戻って、画像処理装置1Aに設けられた協調認識処理部40Aは、協調認識処理部40とは、認識処理制御部43を備える点で異なる。
ここで、姿勢変換部42により他端末での認識結果を自端末における認識結果に変換する処理は、姿勢追跡部23による追跡処理と比べて、大幅に低負荷である。また、他端末での認識結果を、自端末を基準とした認識結果に変換するためには、相対姿勢を推定する必要があり、相対姿勢を推定するためには他端末でも認識されているオブジェクトを1つ認識しなくてはならないが、他のオブジェクトについては、自端末で認識しなくても、他端末での認識結果から相対姿勢を用いて求めることができる。
そこで、認識処理制御部43は、自端末の処理能力を示す情報と、他端末の処理能力を示す情報と、を入力とし、自端末での認識結果および他端末での認識結果の双方に2つ以上の同一のオブジェクトについての認識結果が含まれている場合、すなわち自端末および他端末の双方で認識できているオブジェクトが2つ以上存在する場合に、自端末の処理能力が他端末の処理能力よりも低ければ、これら双方で認識できている2つ以上のオブジェクトのうちの1つを認識休止オブジェクトとして登録する。また、認識処理制御部43は、認識休止オブジェクトについては、姿勢追跡部23による追跡処理ではなく、姿勢変換部42による変換処理により、認識する。これによれば、認識休止オブジェクトについては、姿勢追跡部23による追跡処理と、初期姿勢推定部22によるオブジェクトの姿勢の初期値の推定処理と、を行う対象から除外されることになる。
なお、認識処理制御部43は、自端末での認識処理時間が長くなるに従って小さくなる数値を設定し、この数値を自端末の処理能力を示す情報として用いる。例えば、上述の数値として、自端末での認識処理時間の逆数を設定してもよいし、予め定められた値から自端末での認識処理時間を減算した値を設定してもよい。自端末での認識処理時間とは、前フレームにおいて、自端末の画像認識部20によるオブジェクトの姿勢の推定にかかった時間のことを示し、自端末での認識処理時間が短くなるに従って、自端末の処理能力が高いものとする。他端末の処理能力を示す情報は、他端末での認識結果とともに他端末から送信される。
また、認識処理制御部43は、認識休止オブジェクトの中に他端末で認識されなくなったものがある場合には、このオブジェクトを認識休止オブジェクトから除外する。これによれば、認識休止オブジェクトのうち他端末で認識されなくなったものは、初期姿勢推定部22によるオブジェクトの姿勢の初期値の推定処理の対象となる。
[画像処理装置1Aの動作]
以上の構成を備える画像処理装置1Aの動作について、図8、9、10を用いて以下に説明する。
図8は、画像処理装置1Aのフローチャートである。
ステップS31において、画像処理装置1Aは、画像取得部10によりプレビュー画像を取得するとともに、認識処理制御部43により自端末での認識処理時間の計測を開始し、ステップS32に処理を移す。
ステップS32において、画像処理装置1Aは、認識結果共有処理部30により、他端末の画像認識部20による認識結果と、他端末の処理能力と、を取得し、ステップS33に処理を移す。
ステップS33において、画像処理装置1Aは、画像認識部20および認識処理制御部43により第2の認識処理を行って、ステップS31で取得したプレビュー画像内の各オブジェクトを認識し、ステップS34に処理を移す。なお、第2の認識処理の詳細については、図9、10を用いて後述する。
ステップS34において、画像処理装置1Aは、認識結果共有処理部30により、ステップS33で求めた自端末での認識結果と、前フレームにおいて後述のステップS64(図10参照)で求めた自端末の処理能力と、を他端末での認識結果共有処理部30に送信し、ステップS35に処理を移す。
ステップS35からS40のそれぞれにおいて、画像処理装置1Aは、図5のステップS5からS10のそれぞれにおいて画像処理装置1が行う処理と同様の処理を行う。
図9、10は、画像処理装置1Aが行う上述の第2の認識処理のフローチャートである。
ステップS51において、画像処理装置1Aは、認識処理制御部43により、全ての認識休止オブジェクトが、ステップS32で取得した他端末での認識結果に含まれているか否かを判別する。含まれている場合には、ステップS53に処理を移す。全ての認識休止オブジェクトのうち少なくとも1つが、ステップS32で取得した他端末での認識結果に含まれていない場合には、ステップS52に処理を移す。
ステップS52において、画像処理装置1Aは、認識処理制御部43により、全ての認識休止オブジェクトのうちステップS32で取得した他端末での認識結果に含まれていないと判別したオブジェクトについて、認識休止オブジェクトから除外し、ステップS53に処理を移す。
ステップS53において、画像処理装置1Aは、認識処理制御部43により、前フレームにおける自端末の処理能力から、ステップS32で取得した他端末の処理能力を減算して、処理能力差を求め、ステップS54に処理を移す。
ステップS54において、画像処理装置1Aは、認識処理制御部43により、ステップS53で求めた処理能力差が閾値−αよりも低いか否かを判別する。低い場合には、ステップS55に処理を移し、低くない場合には、ステップS57に処理を移す。
ステップS55において、画像処理装置1Aは、認識処理制御部43により、前フレームにおける自端末での認識結果と、ステップS32で取得した他端末での認識結果と、の双方に、同一のオブジェクトについての認識結果が2つ以上含まれているか否かを判別する。含まれている場合には、ステップS56に処理を移し、含まれていない場合には、ステップS57に処理を移す。
ステップS56において、画像処理装置1Aは、認識処理制御部43により、前フレームにおける自端末での認識結果と、ステップS32で取得した他端末での認識結果と、の双方に認識結果が含まれている2つ以上の同一のオブジェクトの中から1つを選択し、選択した1つのオブジェクトを認識休止オブジェクトに登録し、ステップS57に処理を移す。
ステップS57からS63のそれぞれにおいて、画像処理装置1Aは、図6のステップS21からS27のそれぞれにおいて画像処理装置1が行う処理と同様の処理を行う。
ステップS64において、画像処理装置1Aは、認識処理制御部43により、ステップS31で開始した自端末での認識処理時間の計測を終了し、計測結果に基づいて自端末の処理能力を設定し、図9、10に示した処理を終了する。
以上の画像処理装置1Aによれば、画像処理装置1が奏することのできる上述の効果に加えて、以下の効果を奏することができる。
画像処理装置1Aは、画像認識部20による認識結果と、他端末での認識結果と、の双方に認識結果が含まれているオブジェクトが2つ以上存在しており、自端末の処理能力が他端末の処理能力よりも低ければ、協調認識処理部40により、画像認識部20による認識結果と、他端末での認識結果と、の双方に認識結果が含まれている2つ以上のオブジェクトのうち少なくとも1つを認識休止オブジェクトとし、認識休止オブジェクトについての他端末での認識結果を、自端末を基準とした認識結果に変換する。また、画像認識部20により、認識休止オブジェクトの認識を休止する。このため、自端末の画像認識部20により認識するオブジェクトの数を減少させることができるので、自端末における処理負荷を軽減することができ、自端末におけるリアルタイム処理の実現の困難性を低下させることができる。したがって、複数人での利用を想定したAR技術において、ユーザビリティを向上させることができる。
また、画像処理装置1Aは、協調認識処理部40により、画像認識部20による認識結果を求めるために要した時間が長くなるに従って小さくなる数値を設定し、この数値を自端末の処理能力として用いる。このため、画像認識部20による認識結果を求めるために要した時間が長くなるに従って、自端末の処理能力が低いものとして扱うことができる。
また、画像処理装置1Aは、協調認識処理部40により、認識休止オブジェクトであるオブジェクトの数を、画像取得部10によりプレビュー画像が取得されるたびに最大で1つずつ増加させる。このため、自端末における認識休止オブジェクトが急激に増加してしまうのを防止することができるので、他端末の処理負荷が過度に上昇してしまうのを防止することができる。
また、画像処理装置1Aは、協調認識処理部40により、他端末での認識結果に含まれていないオブジェクトを、認識休止オブジェクトから除外する。このため、認識休止オブジェクトの中から、他端末で認識できなくなったオブジェクトが発生した場合には、このオブジェクトを自端末の画像認識部20により認識して、オブジェクトの認識精度を向上させることができる。
なお、本発明の画像処理装置1、1Aの処理を、コンピュータ読み取り可能な非一時的な記録媒体に記録し、この記録媒体に記録されたプログラムを画像処理装置1、1Aに読み込ませ、実行することによって、本発明を実現できる。
ここで、上述の記録媒体には、例えば、EPROMやフラッシュメモリといった不揮発性のメモリ、ハードディスクといった磁気ディスク、CD−ROMなどを適用できる。また、この記録媒体に記録されたプログラムの読み込みおよび実行は、画像処理装置1、1Aに設けられたプロセッサによって行われる。
また、上述のプログラムは、このプログラムを記憶装置などに格納した画像処理装置1、1Aから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上述のプログラムは、上述の機能の一部を実現するためのものであってもよい。さらに、上述の機能を画像処理装置1、1Aにすでに記録されているプログラムとの組み合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
例えば、上述の各実施形態では、オブジェクトとして、図2から4では二次元バーコードを記載したが、これに限らず、任意の図や文字や物体などであってもよい。
また、上述の各実施形態において、画像認識部20は、認識結果を推定した際の時刻を認識結果に付加することとしてもよい。これによれば、自端末と他端末との間で行われた認識結果の送受信の際の通信遅延を考慮することができる。このため、例えば、他端末での認識結果に付加されている時刻が、自端末での認識結果に付加されている時刻と比べて、予め定められた閾値β以上遅れている場合には、協調認識処理部40は、他端末での認識結果を破棄することで、大幅な通信遅延による仮想情報の表示のずれが発生してしまうのを防ぐことができる。
なお、上述の閾値βについては、協調認識処理部40が、自端末およびオブジェクトの移動状態に応じて設定することとしてもよい。具体的には、例えば、画像取得部10による前フレームにおけるプレビュー画像の取得時と比べて、自端末やオブジェクトの移動距離が大きくなるに従って閾値βを小さく設定することとしてもよい。これによれば、自端末が静止している場合には、通信遅延による表示のずれが小さいので、閾値βを大きく設定しても、ユーザが体感する表示のずれを効率的に抑えてユーザビリティを向上させることができる。
また、上述の自端末の移動状態については、自端末に対する基準マーカの姿勢の変動から推定したり、自端末に加速度センサやジャイロスコープなどが搭載されている場合にはこれらの応答値を用いて推定したりすることができる。また、上述のオブジェクトの移動状態については、例えば、このオブジェクトの自端末に対する姿勢の変動から推定することができる。複数のオブジェクトのそれぞれが独立に動く場合には、移動状態はオブジェクトごとに異なるので、オブジェクトごとに上述の閾値βを設定することとしてもよい。
また、上述の第1実施形態では、姿勢変換部42は、自端末での認識結果を優先的に用い、自端末で認識していないオブジェクトについてのみ、他端末での認識結果を相対姿勢を用いて変換したものを用いるものとした。しかしこれに限らず、例えば、自端末および他端末のそれぞれにおいて、画像認識部20が、認識結果を求めた際に、その認識結果の認識精度の指標となる情報をオブジェクトごとの認識結果に付加することとしてもよい。これによれば、姿勢変換部42は、自端末での認識結果の認識精度の指標の方が、他端末での認識結果の認識精度の指標よりも高いオブジェクトについては、自端末での認識結果を用い、自端末での認識結果の認識精度の指標の方が、他端末での認識結果の認識精度の指標よりも低いオブジェクトについては、他端末での認識結果を相対姿勢を用いて変換したものを用いることができる。なお、上述の認識精度の指標としては、例えば、オブジェクトに対する撮影距離や撮影角度を採用したり、局所特徴量を用いる場合にはマッチング数やマッチングのスコアを採用したり、SSD(Sum of Squared Difference)やNCC(Normalized Cross Correlation)といったテンプレートマッチングの手法を用いる場合にはSSDやNCCの応答値をそのまま採用したりすることができる。
また、上述の第2実施形態では、ステップS55において、前フレームにおける自端末での認識結果と、ステップS32で取得した他端末での認識結果と、の双方に、同一のオブジェクトについての認識結果が2つ以上含まれているか否かを判別し、2つ以上含まれていると判別した場合に、ステップS56において、これら2つ以上のオブジェクトのうちの1つを認識休止オブジェクトとして登録するものとした。このため、自端末において、前フレームでは認識できていたにもかかわらず現フレームでは認識に失敗してしまったオブジェクトが存在している場合に、このオブジェクト以外が認識休止オブジェクトとして登録されるとともに、このオブジェクトの認識結果を用いた相対姿勢の推定が行われる可能性がある。しかし、この場合には、このオブジェクトの認識結果を適切に求めることができないため、相対姿勢を適切に求めることができず、その結果、認識休止オブジェクトの姿勢を適切に求めることができなくなってしまうおそれがある。
そこで、上述の第2実施形態において、以下の第1の手順から第3の手順をさらに行うこととしてもよい。第1の手順では、ステップS55で判別した2つ以上のオブジェクトのうち、ステップS56で認識休止オブジェクトとして登録したものを、記憶する。第2の手順では、ステップS55で判別した2つ以上のオブジェクトのうち、ステップS56で認識休止オブジェクトとして登録したオブジェクトを除くものの中に、前フレームでは認識できていたにもかかわらず現フレームでは認識に失敗してしまったオブジェクトが含まれているか否かを判別する。第3の手順では、第2の手順で含まれていると判別した場合に、第1の手順で記憶したオブジェクトを、認識休止オブジェクトから除外する。
また、上述の第2実施形態では、自端末での認識処理時間が長くなるに従って小さくなる数値を設定し、この数値を自端末の処理能力を示す情報として用いることとした。しかし、これに限らず、例えば、自端末におけるCPU使用率が高くなるに従って小さくなる数値を設定し、この数値を自端末の処理能力を示す情報として用いることとしてもよい。また、例えば、自端末における空きメモリ量を、自端末の処理能力を示す情報として用いてもよい。