(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06T 7/70 20170101AFI20231218BHJP
G01B 11/00 20060101ALI20231218BHJP
【FI】
G06T7/70 A
G01B11/00 Z
(21)【出願番号】P 2019173266
(22)【出願日】2019-09-24
【審査請求日】2022-09-09
(73)【特許権者】
【識別番号】000003562
【氏名又は名称】東芝テック株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100179062
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100075672
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】藤原 彰彦
(72)【発明者】
【氏名】平間 美香
【審査官】笠田 和宏
(56)【参考文献】
【文献】特開2007-303842(JP,A)
【文献】特開2002-288632(JP,A)
【文献】Monica Rubio,外4名,Jittering Reduction in Marker-Based Augmented Reality Systems,Lecture Notes in Computer Science,2006年05月,pp. 510-517
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/70
G01B 11/00
(57)【特許請求の範囲】
【請求項1】
カメラで撮影した画像を取得する取得部と、
前記画像中のマーカーを認識する認識部と、
前記カメラと前記マーカーの相対位置を推定する相対位置推定部と、
前記相対位置推定部によって推定された
前記マーカーについての複数の相対位置
のばらつきが所定よりも小さい場合、前記マーカーの位置及び前記複数の相対位置を用いて前記カメラの位置を推定する位置推定部と、を備える情報処理装置。
【請求項2】
前記位置推定部は、前記認識部が前記マーカーを認識した回数が所定の回数以上である場合、前記カメラの位置を推定する、請求項1に記載の情報処理装置。
【請求項3】
前記位置推定部は、前記複数の相対位置を用いた時系列平滑化を行って前記カメラの位置を推定する、請求項
1に記載の情報処理装置。
【請求項4】
前記位置推定部は、推定した前記カメラの位置が外れ値である場合に棄却する、請求項1乃至請求項
3のいずれか1項に記載の情報処理装置。
【請求項5】
コンピュータに、
カメラで撮影した画像を取得する機能と、
前記画像中のマーカーを認識する機能と、
前記カメラと前記マーカーの相対位置を推定する機能と、
推定された前記マーカーについての複数の相対位置のばらつきが所定よりも小さい場合、前記マーカーの位置及び前記複数の相対位置を用いて前記カメラの位置を推定する機能と、
を実行させることか可能なプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【0002】
拡張現実(AR(augmented reality))は、現実世界に仮想物体を重畳表示させることで各種情報を提示することができる。拡張現実は、各種情報を提示することで、店舗などにおける買物客の買い物、及び業務現場における作業員などの業務を支援することが可能である。
【0003】
端末装置の位置をトラッキングする方法として、ARマーカー(以下単に「マーカー」という。)を用いて位置姿勢を計測する方法が知られている。マーカーを用いたトラッキングには、カメラとマーカーとの相対位置を正確に計測する必要がある。しかしながら、計測条件によっては相対位置の計測精度が低下する。例えば、端末装置が回転中でマーカーとの相対角度が大きい場合、端末装置がマーカーから遠ざかっていく途中などでカメラにより撮影した画像に対するマーカーが占有する面積が小さい場合、カメラとマーカーの間に障害物がある場合、又はマーカーに当たっている照明の強さが適正でない場合において計測精度が低下する。このように計測精度が低下している状態では、端末装置の位置を正確に求めることができない。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態が解決しようとする課題は、計測精度が低下している状態でも、高精度に位置姿勢を補正することができる情報処理装置を提供することである。
【課題を解決するための手段】
【0006】
実施形態の情報処理装置は、取得部、認識部及び位置推定部を備える。取得部は、カメラで撮影した画像を取得する。認識部は、前記画像中のマーカーを認識する。位置推定部は、前記認識部が前記マーカーを認識した回数が所定の回数以上である場合、前記カメラと前記マーカーの相対位置に基づき前記カメラの位置を推定する。
【図面の簡単な説明】
【0007】
【
図1】実施形態に係る端末装置の要部構成の一例を示すブロック図。
【
図2】
図1中のプロセッサー11による処理の一例を示すフローチャート。
【発明を実施するための形態】
【0008】
以下、実施形態に係る端末装置について図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
図1は、実施形態に係る端末装置10の要部構成の一例を示すブロック図である。
【0009】
端末装置10は、カメラで撮影した現実世界の映像にリアルタイムに仮想物体を重畳表示させる。したがって、端末装置10は、拡張現実用のディスプレイ装置である。端末装置10は、例えば、タブレット端末、スマートホン又はHMD(head-mounted display)などである。店舗などで用いる端末装置10は、例えば、ショッピングカート又はその他の荷車などの車輪移動体に取り付けたタブレット端末である。端末装置10は、一例として、プロセッサー11、ROM(read-only memory)12、RAM(random-access memory)13、補助記憶デバイス14、通信インターフェース15、カメラ16、タッチパネル17及びセンサー18を含む。そして、バス19などが、これら各部を接続する。端末装置10は、情報処理装置の一例である。
【0010】
プロセッサー11は、端末装置10の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー11は、ROM12又は補助記憶デバイス14などに記憶されたファームウェア、システムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、端末装置10の各種の機能を実現するべく各部を制御する。また、プロセッサー11は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー11の回路内に組み込まれていても良い。プロセッサー11は、例えば、CPU(central processing unit)、MPU(micro processing unit)、SoC(system on a chip)、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、PLD(programmable logic device)又はFPGA(field-programmable gate array)などである。あるいは、プロセッサー11は、これらのうちの複数を組み合わせたものである。
【0011】
ROM12は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。ROM12は、専らデータの読み出しに用いられる不揮発性メモリである。ROM12は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM12は、プロセッサー11が各種の処理を行う上で使用するデータなども記憶する。
【0012】
RAM13は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。RAM13は、データの読み書きに用いられるメモリである。RAM13は、プロセッサー11が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM13は、典型的には揮発性メモリである。
【0013】
補助記憶デバイス14は、プロセッサー11を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス14は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶デバイス14は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶デバイス14は、プロセッサー11が各種の処理を行う上で使用するデータ、プロセッサー11での処理によって生成されたデータ及び各種の設定値などを保存する。
【0014】
また、補助記憶デバイス14は、マーカーDB(database)141を記憶する。マーカーDB141は、マーカーが登録される。マーカーDB141は、登録された各マーカーについて、マーカーID(identifier)、特徴量及びワールド座標系における位置姿勢などを記憶する。マーカーIDは、マーカーごとにユニークに付与される識別情報である。
【0015】
通信インターフェース15は、端末装置10がネットワークNWなどを介して通信するためのインターフェースである。
【0016】
カメラ16は、画像を撮影する。また、カメラ16は、撮影した画像データを出力する。なお、動画像は、画像の一種である。
【0017】
タッチパネル17は、例えば、液晶ディスプレイ又は有機EL(electro-luminescence)ディスプレイなどのディスプレイとタッチ入力によるポインティングデバイスとが積層されたものである。タッチパネル17が備えるディスプレイは、端末装置10の操作者に各種情報を通知するための画面を表示する表示デバイスとして機能する。また、タッチパネル17は、当該操作者によるタッチ操作を受け付ける入力デバイスとして機能する。
【0018】
なお、端末装置10は、通常、カメラ16をタッチパネル17の表示面と反対側を向くように設ける。すなわち、カメラ16に入射する光の光軸方向とタッチパネル17の法線方向が同じ方向を向いている。
【0019】
センサー18は、端末装置10の位置姿勢の推定に用いる各種センサーである。センサー18は、計測値を出力する。センサー18は、例えば、加速度計、ジャイロスコープ、オドメーター、電子コンパスなどの磁力計、GPS(Global Positioning System)センサーなどのGNSS(global navigation satellite system)センサー、深度センサー、又は電磁式、光学式、機械式若しくは超音波式などのトラッカーなどである。なお、端末装置10は、センサー18として、上記のセンサーのうちの複数種類を備えていても良い。例えば、センサー18は、ショッピングカートなどの車輪移動体に取り付けてあっても良い。
なお、センサー18は、端末装置10の外部に有線又は無線で接続されるものであっても良い。
【0020】
バス19は、コントロールバス、アドレスバス及びデータバスなどを含み、端末装置10の各部で授受される信号を伝送する。
【0021】
以下、実施形態に係る端末装置10の動作を
図2に基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
図2は、端末装置10のプロセッサー11による処理の一例を示すフローチャートである。プロセッサー11は、例えば、ROM12又は補助記憶デバイス14などに記憶されたプログラムに基づいてこの処理を実行する。
【0022】
プロセッサー11は、例えば、トラッキングをオンにする操作が行われたことなどに応じて
図2に示す処理を開始する。
図2のACT11においてプロセッサー11は、カメラ16が出力する画像を取得する。なお、ACT11で最後に取得された画像を以下「取得画像」という。
以上より、プロセッサー11は、ACT11の処理を行うことで、カメラ16で撮影した画像を取得する取得部として機能する。
【0023】
ACT12においてプロセッサー11は、取得画像中に、マーカーDB141に登録されているマーカーが映っているか否かを判定する。プロセッサー11は、取得画像中にマーカーを認識したならば、マーカーが映っていると判定する。なお、マーカーの認識には公知の方法を用いることができる。また、ACT12で最後に認識されたマーカーを以下「認識マーカー」という。プロセッサー11は、取得画像中にマーカーが映っていないならば、ACT12においてNoと判定してACT13へと進む。
以上より、プロセッサー11は、ACT12の処理を行うことで、取得画像中のマーカーを認識する認識部として機能する。
【0024】
ACT13においてプロセッサー11は、センサー18が出力する計測値を取得する。
ACT14においてプロセッサー11は、ACT13で取得した計測値に基づき、端末装置10の位置姿勢を補正する。すなわち、プロセッサー11は、端末装置10の位置姿勢のトラッキングを行う。例えば、プロセッサー11は、DR(dead reckoning)などの手法を用いて位置姿勢を推定する。そして、プロセッサー11は、推定した位置姿勢を端末装置10の現在の位置姿勢として決定することで、端末装置10の位置姿勢を補正する。また、プロセッサー11は、変数T1に現在時刻を代入する。変数T1は、最後に端末装置10の現在の位置姿勢として決定した時刻を示す。なお、端末装置10の位置姿勢は、例えば、ワールド座標系におけるカメラ16又はタッチパネル17の位置姿勢である。
【0025】
ACT15においてプロセッサー11は、トラッキングを終了するか否かを判定する。プロセッサー11は、例えば、トラッキングをオフにする操作が行われたことに応じてトラッキングを終了すると判定する。プロセッサー11は、トラッキングを終了しないならば、ACT15においてNoと判定してACT11へと戻る。対して、プロセッサー11は、トラッキングを終了するならば、ACT15においてYesと判定して
図2に示す処理を終了する。
【0026】
また、プロセッサー11は、取得画像中にマーカーが映っているならば、ACT12においてYesと判定してACT16へと進む。
ACT16においてプロセッサー11は、端末装置10に対する認識マーカーの相対位置姿勢を推定する。なお、端末装置10の位置姿勢は、例えば、カメラ16の位置姿勢又はタッチパネル17の位置姿勢を示す。認識マーカーの位置は、例えば、認識マーカー中の一点の位置である。当該一点は、例えば認識マーカーの中央である。プロセッサー11は、例えば、取得画像を用いて端末装置10から認識マーカーまでの距離(相対位置)を推定する。また、プロセッサー11は、例えば、取得画像を用いて、端末装置10が向いている向きと認識マーカーの平面が向いている向きとがなす角度(相対姿勢)を推定する。なお、位置姿勢を求める方法として、他の公知の方法を用いることもできる。
以上より、プロセッサー11は、ACT16の処理を行うことで、カメラ16とマーカーの相対位置を推定する相対位置推定部として機能する。
【0027】
ACT17においてプロセッサー11は、ACT16で求めた相対位置姿勢、認識マーカーのマーカーID、及び認識時刻を関連付けて履歴データとしてRAM13などに記憶する。なお、認識時刻は、ACT12において認識マーカーが認識された時刻である。
【0028】
ACT18においてプロセッサー11は、位置補正を行うか否かを判定する。例えば、プロセッサー11は、履歴データを参照して、所定の時間t1以内にマーカーIDが同じマーカーの相対位置姿勢が所定の回数n1回以上記憶されているか否かを判定する。そして、プロセッサー11は、t1以内にマーカーIDが同じマーカーの相対位置姿勢がn1回以上記憶されている場合に位置補正を行うと判定する。例えば、t1が5秒でn1回が3回であるとする。この場合、プロセッサー11は、5秒以内に3回以上同じマーカーの相対位置姿勢を求めているならば、位置補正を行うと判定する。これにより、プロセッサー11は、カメラ16がマーカーを映している間、3回相対位置姿勢を求めるごとに位置補正を行うことになる。なお、t1は、任意の時間である。また、n1は、2以上の整数である。プロセッサー11は、位置補正を行うと判定しないならば、ACT18においてNoと判定してACT13へと進む。対して、プロセッサー11は、位置補正を行うと判定するならば、ACT18においてYesと判定してACT19へと進む。
【0029】
ACT19においてプロセッサー11は、履歴データから、認識マーカーとマーカーIDが同じデータを抽出する。
なお、抽出するデータ数に上限が設けてあっても良い。例えば、上限がn2個であるとすると、プロセッサー11は、認識時刻が新しいものから順にn2個のデータを抽出する。ただし、認識マーカーとマーカーIDが同じデータの数がn2個より少ない場合、プロセッサー11は、認識マーカーとマーカーIDが同じデータを全て抽出する。なお、n2は、2以上の整数である。
また、プロセッサー11は、認識時刻が現在時刻から所定の時間t2前までのデータのみを抽出しても良い。なお、t2は、任意の時間である。なお、プロセッサー11は、認識時刻が現在時刻からt2前までのデータを認識時刻が新しいものから順にn2個を上限としてデータを抽出しても良い。
【0030】
ACT20においてプロセッサー11は、ACT19で抽出した複数のデータのばらつきが大きいか否かを判定する。例えば、プロセッサー11は、当該複数のデータの標準偏差σが所定の値以上である場合にばらつきが大きいと判定する。あるいは、プロセッサー11は、その他の公知の方法を用いてばらつきが大きいことを判定しても良い。プロセッサー11は、当該複数のデータのばらつきが大きいならば、ACT20においてYesと判定してACT13へと進む。対して、プロセッサー11は、当該複数のデータのばらつきが大きくないならば、ACT20においてNoと判定してACT21へと進む。
【0031】
ACT21においてプロセッサー11は、ACT19で抽出した複数のデータを用いて、統計的な手法により、端末装置10に対する認識マーカーの相対位置姿勢を推定する。例えば、プロセッサー11は、当該複数のデータに対して移動平均などの手法を用いて時系列平滑化を行うことで相対位置姿勢を推定する。また、プロセッサー11は、当該複数のデータのうちの外れ値を棄却しても良い。例えば、プロセッサー11は、当該複数のデータの中央値から所定の値以上外れている値を外れ値とする。あるいは、プロセッサー11は、その他の公知の方法を用いて外れ値を棄却しても良い。
【0032】
ACT22においてプロセッサー11は、ACT21で推定した相対位置姿勢と、認識マーカーの位置姿勢に基づき、端末装置10の位置姿勢を推定する。なお、プロセッサー11は、認識マーカーの位置姿勢をマーカーDBから取得する。
以上より、プロセッサー11は、ACT18及びACT22の処理を行うことで、マーカーを認識した回数が所定の回数以上である場合、カメラ16の位置を推定する位置推定部として機能する。また、プロセッサー11は、ACT21及びACT22の処理を行うことで、複数の相対位置を用いてカメラ16の位置を推定する位置推定部として機能する。
【0033】
ACT23においてプロセッサー11は、ACT22で求めた位置姿勢が適正な値であるか否かを判定する。例えば、プロセッサー11は、位置姿勢が急激に変化しているような場合に適正な値でないと判定する。位置姿勢が急激に変化していることから適正な値でないことを判定する方法の例を以下に示す。
例えば、プロセッサー11は、最後にACT14又はACT24で決定した端末装置10の現在の位置姿勢に対して、ACT22で求めた位置姿勢が所定よりも大きく異なる場合に適正な値でないと判定する。例えば、プロセッサー11は、現在の端末装置10の位置からACT22で求めた位置までの距離を、現在時刻からT1を引いた時間で割った速度が、所定の速度以上である場合に適正な値でないと判定する。当該所定の速度は、例えば、人間の歩行速度に対して顕著に速いような速度である。あるいは、プロセッサー11は、現在の端末装置10の位置からACT22で求めた位置までの距離が所定の距離以上である場合に適正な値でないと判定する。また、プロセッサー11は、例えば、現在の端末装置10の姿勢からACT22で求めた姿勢までの角度を、現在時刻からT1を引いた時間で割った角速度が、所定の角速度以上である場合に適正な値でないと判定する。あるいは、プロセッサー11は、現在の端末装置10の姿勢からACT22で求めた姿勢までの角度が所定の角度以上である場合に適正な値でないと判定する。
プロセッサー11は、ACT22で求めた位置姿勢が適正な値でないならば、ACT23においてNoと判定してACT13へと進む。すなわち、プロセッサー11は、ACT22で求めた位置姿勢を棄却し、ACT24の処理に用いない。対して、プロセッサー11は、ACT22で求めた位置姿勢が適正な値であるならば、ACT23においてYesと判定してACT24へと進む。
【0034】
ACT24においてプロセッサー11は、ACT22で求めた位置姿勢に基づき、端末装置10の位置姿勢を補正する。すなわち、プロセッサー11は、ACT22で求めた位置姿勢を、端末装置10の現在の位置姿勢として決定することで、端末装置10の位置姿勢を補正する。また、プロセッサー11は、変数T1に現在時刻を代入する。
【0035】
ACT25においてプロセッサー11は、履歴データをクリアする。これにより、RAM13などは、履歴データを1つも記憶していない状態になる。プロセッサー11は、ACT25の処理の後、ACT13へと進む。
【0036】
実施形態の端末装置10は、所定の時間以内に同じマーカーを所定の回数以上認識した場合に、端末装置10の位置姿勢を補正する。これにより、実施形態の端末装置10は、計測精度が低下している状態でも、高精度に端末装置10の位置姿勢を補正することができる。
【0037】
また、実施形態の端末装置10は、マーカーの相対位置姿勢を複数回計測し、複数回計測した相対位置姿勢を用いて端末装置10の位置姿勢を推定する。これにより、実施形態の端末装置10は、計測精度が低下している状態でも、高精度に端末装置10の位置姿勢を補正することができる。
【0038】
また、実施形態の端末装置10は、マーカーの相対位置姿勢を複数回計測し、複数回計測した相対位置姿勢を時系列平滑化することで、端末装置10の位置姿勢を推定する。これにより、実施形態の端末装置10は、計測精度が低下している状態でも、高精度に端末装置10の位置姿勢を補正することができる。
【0039】
また、実施形態の端末装置10は、マーカーの相対位置姿勢を複数回計測したデータのばらつきが所定より小さい場合に端末装置10の位置姿勢を補正する。これにより、実施形態の端末装置10は、誤差の大きい補正を行うことを防ぐことができる。
【0040】
また、実施形態の端末装置10は、推定した端末装置10の位置姿勢が現在の位置姿勢から急激に変化している場合、当該推定値を棄却する。これにより、実施形態の端末装置10は、誤差の大きい補正を行うことを防ぐことができる。
【0041】
上記の実施形態は以下のような変形も可能である。
プロセッサー11は、ACT20においてYesと判定した場合に、ACT25と同様に履歴データをクリアしても良い。また、プロセッサー11は、ACT23においてNoと判定した場合に、ACT25と同様に履歴データをクリアしても良い。
プロセッサー11は、ACT25の処理を行わなくても良い。
【0042】
上記の実施形態では、プロセッサー11は、統計的な手法により、端末装置10に対する認識マーカーの相対位置姿勢を推定した。これに代えて、プロセッサー11は、端末装置10の位置姿勢を統計的な手法により推定しても良い。
【0043】
プロセッサー11は、上記実施形態においてプログラムによって実現する処理の一部又は全部を、回路のハードウェア構成によって実現するものであっても良い。
【0044】
端末装置10は、例えば、上記の各処理を実行するためのプログラムが記憶された状態で各装置の管理者などへと譲渡される。あるいは、端末装置10は、当該プログラムが記憶されない状態で当該管理者などに譲渡される。そして、当該プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作に基づいて端末装置10に記憶される。このときのプログラムの譲渡は、例えば、ディスクメディア又は半導体メモリなどのようなリムーバブルな記憶媒体を用いて、あるいはインターネット又はLANなどを介したダウンロードにより実現できる。
【0045】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0046】
10……端末装置、11……プロセッサー、12……ROM、13……RAM、14……補助記憶デバイス、15……通信インターフェース、16……カメラ、17……タッチパネル、18……センサー、19……バス、141……マーカーDB