IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノンマーケティングジャパン株式会社の特許一覧 ▶ キヤノンITソリューションズ株式会社の特許一覧

特許7029087情報処理装置、情報処理システム、その制御方法及びプログラム
<>
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図1
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図2
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図3
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図4
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図5
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図6
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図7
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図8
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図9
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図10
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図11
  • 特許-情報処理装置、情報処理システム、その制御方法及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-22
(45)【発行日】2022-03-03
(54)【発明の名称】情報処理装置、情報処理システム、その制御方法及びプログラム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20220224BHJP
【FI】
G06T19/00 600
【請求項の数】 18
(21)【出願番号】P 2020053597
(22)【出願日】2020-03-25
(62)【分割の表示】P 2015192919の分割
【原出願日】2015-09-30
(65)【公開番号】P2020115362
(43)【公開日】2020-07-30
【審査請求日】2020-04-08
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【弁理士】
【氏名又は名称】木村 友輔
(72)【発明者】
【氏名】難波 伸敏
【審査官】片岡 利延
(56)【参考文献】
【文献】国際公開第2015/183621(WO,A1)
【文献】特開2015-087909(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
(57)【特許請求の範囲】
【請求項1】
第1の機器の位置を、第2の機器の位置に基づかずに特定する第1の特定手段と、
前記第1の機器の位置を、前記第2の機器の位置と、前記第1の機器と前記第2の機器との位置関係の情報と、に基づいて特定する第2の特定手段と、
前記第1の特定手段による位置の特定にかかる状態が所定の条件を満たす第1の場合には前記第1の特定手段で特定される前記第1の機器の位置に基づいて所定の処理を行い、
前記第1の特定手段による位置の特定にかかる状態が前記所定の条件を満たさない第2の場合には前記第2の特定手段で特定される前記第1の機器の位置に基づいて前記所定の処理を行うように制御する制御手段と、
有することを特徴とする情報処理装置。
【請求項2】
前記第1の特定手段は、第1の撮像手段で撮像された画像に基づいて前記第1の機器の位置を特定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1の特定手段は、前記第1の機器に設置されている前記第1の撮像手段で撮像された画像に基づいて前記第1の機器の位置を特定することを特徴とする請求項に記載の情報処理装置。
【請求項4】
前記第1の特定手段は、前記第1の撮像手段で撮像された画像から認識されたマーカに基づいて前記第1の機器の位置を特定することを特徴とする請求項2または3に記載の情報処理装置。
【請求項5】
前記第2の機器の位置は、前記第2の機器に設置された第2の撮像手段で撮像された画像から認識された、前記第1の特定手段が前記第1の機器の位置を特定するためにも用いられる前記マーカに基づいて特定される位置であることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
記第2の特定手段は、第2の撮像手段で撮像された画像に基づいて前記第1の機器の位置を特定することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項7】
前記第2の特定手段は、前記位置関係の情報として、前記第2の機器に設置された前記第2の撮像手段で撮像された画像から認識された、前記第1の機器にあるマーカの情報に基づいて前記第1の機器の位置を特定することを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記第2の機器の位置は、前記第2の撮像手段で撮像された画像に基づいて特定されることを特徴とする請求項6または7に記載の情報処理装置。
【請求項9】
前記所定の条件は、前記所定の条件を満たさない場合よりも満たす場合の方が前記第1の特定手段による位置の特定が良好に行えることに対応する条件であることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記所定の条件は、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で撮像された画像から位置を特定するために必要なマーカを認識可能である、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で、位置を特定するために必要なマーカを撮像できる、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で撮像された画像から位置を特定するために必要なマーカを安定して認識している、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で撮像するマーカであって、位置を特定するためのマーカと、前記第1の機器との距離が所定値より近い、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で撮像された画像から位置を特定するためのマーカを所定数以上認識している、
前記第1の特定手段で前記第1の機器の位置を特定できない位置または方向に前記第1の機器が移動または回転しようとしていない
という条件のうち少なくとも1つであることを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記所定の条件は、
前記第1の特定手段で前記第1の機器の位置を特定するために用いる第1の撮像手段で撮像された画像から位置を特定するために必要なマーカを閾値を超える認識率で認識している
ことであることを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項12】
前記第2の場合は、ユーザーの身体の一部あるいは空間内を移動可能な前記第2の機器によって前記第1の特定手段での特定に用いるマーカが前記第1の機器から見て隠れてしまう場合であることを特徴とする請求項1乃至11のいずれか1項に記載の情報処理装置。
【請求項13】
前記第1の機器はヘッドマウントディスプレイであることを特徴とする請求項1乃至12のいずれか1項に記載の情報処理装置。
【請求項14】
前記第2の機器はユーザーが持つ補助具であることを特徴とする請求項1乃至13のいずれか1項に記載の情報処理装置。
【請求項15】
前記所定の処理は、前記第1の機器の位置に応じた向きまたは位置で表示される仮想オブジェクトを含む画像を表示するための処理であることを特徴とする請求項1乃至14のいずれか1項に記載の情報処理装置。
【請求項16】
1の機器の位置を、第2の機器の位置に基づかずに特定する第1の特定工程と、
前記第1の機器の位置を、前記第2の機器の位置と、前記第1の機器と前記第2の機器との位置関係の情報と、に基づいて特定する第2の特定工程と、
前記第1の特定工程による位置の特定にかかる状態が所定の条件を満たす第1の場合には前記第1の特定工程で特定される前記第1の機器の位置に基づいて所定の処理を行い、
前記第1の特定工程による位置の特定にかかる状態が前記所定の条件を満たさない第2の場合には前記第2の特定工程で特定される前記第1の機器の位置に基づいて前記所定の処理を行うように制御する制御工程と、
有することを特徴とする情報処理装置の制御方法。
【請求項17】
コンピュータを、請求項1乃至15のいずれか1項に記載された情報処理装置の各手段として機能させるためのプログラム。
【請求項18】
第1の機器と、第2の機器と、情報処理装置と、を含む情報処理システムであって、
前記第1の機器の位置を、前記第2の機器の位置に基づかずに特定する第1の特定手段と、
前記第1の機器の位置を、前記第2の機器の位置と、前記第1の機器と前記第2の機器との位置関係の情報と、に基づいて特定する第2の特定手段と、
前記第1の特定手段による位置の特定にかかる状態が所定の条件を満たす第1の場合には前記第1の特定手段で特定される前記第1の機器の位置に基づいて所定の処理を行い、
前記第1の特定手段による位置の特定にかかる状態が前記所定の条件を満たさない第2の場合には前記第2の特定手段で特定される前記第1の機器の位置に基づいて前記所定の処理を行うように制御する制御手段と、
有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
情報処理装置、情報処理システム、その制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、複合現実(Mixed Reality/以下、MRと記載)の技術が普及している。MR技術を用いて、ヘッドマウントディスプレイ(以下、HMD)を装着したユーザに対し、現実物体とCGモデルを配置したMR空間(現実空間と仮想空間とを重ね合わせた複合現実空間)の疑似体験を提供できる。
【0003】
特許文献1には、当該マーカの存在をユーザに意識させないために、マーカを検出した場合に、当該マーカを隠した画像を描画する技術が記載されている。また、マーカの3次元空間上の位置姿勢を、撮像装置の位置姿勢とマーカを含む現実画像とを用いて特定することは既知の技術である(例えば特許文献2)。
【0004】
特許文献2には、
【先行技術文献】
【特許文献】
【0005】
【文献】特開2000-350860号公報
【文献】特開2000-102036号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
例えば、体験者にターゲットと呼ばれる補助具を持ってもらい、ターゲットにドライバー等のCGを重ね合わせ、且つネジの差し込まれたCGを表示して、実際の作業環境を体験者に体験してもらうことがある。
【0007】
しかし、マーカを使ってHMDの位置姿勢を特定している状況で、例えばネジを回そうと思って体験者が自分の目の前にターゲットを持ってきた場合、床・壁のマーカがターゲットで隠れてしまい、HMDの位置姿勢が特定できなくなってしまうという問題がある。また、HMDの位置姿勢が適切に特定できないために、HMD上の画像のどこにCGを重畳してよいか分からなくなるため、CGが不適切な位置に重畳されてしまうという問題がある。
【0008】
本発明は、機器の位置を適切に特定可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の情報処理装置は、
第1の機器の位置を、第2の機器の位置に基づかずに特定する第1の特定手段と、
前記第1の機器の位置を、前記第2の機器の位置と、前記第1の機器と前記第2の機器との位置関係の情報と、に基づいて特定する第2の特定手段と、
前記第1の特定手段による位置の特定にかかる状態が所定の条件を満たす第1の場合には前記第1の特定手段で特定される前記第1の機器の位置に基づいて所定の処理を行い、
前記第1の特定手段による位置の特定にかかる状態が前記所定の条件を満たさない第2の場合には前記第2の特定手段で特定される前記第1の機器の位置に基づいて前記所定の処理を行うように制御する制御手段と、
を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、機器の位置を適切に特定することができる。
【図面の簡単な説明】
【0011】
図1】本発明の実施形態における、システム構成の一例を示す図である
図2】本発明の実施形態における、各種装置のハードウエア構成の一例を示す図である
図3】本発明の実施形態における、各種装置の機能構成の一例を示す図である
図4】本発明の実施形態における、ターゲットに設置されたカメラの画像を用いたHMDの位置姿勢特定処理の流れを示すフローチャートである
図5】本発明の実施形態における、HMDの位置姿勢の決定処理の流れを示すフローチャートである
図6】本発明の実施形態における、各種データの構成の一例を示す図である
図7】本発明の実施形態における、現実空間及びMR空間のイメージ図である
図8】本発明の実施形態における、MR画像の一例を示す図である
図9】本発明の実施形態における、現実画像の一例を示す図である
図10】本発明の実施形態における、カメラが設置されたターゲットの一例を示す図である
図11】本発明の実施形態における、現実画像の一例を示す図である
図12】本発明の実施形態における、現実空間のイメージ図である
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0013】
図1は、本発明の実施形態における、システム構成の一例を示す図である。
【0014】
本発明のシステムは、サーバ200Aとサーバ200B、ヘッドマウントディスプレイ101(以下、HMD101)、ターゲット102等で構成される。図1において、各種装置はネットワーク150で通信可能に接続されているものとしている。ネットワークの有線、無線は問わない。
【0015】
サーバ200(サーバ200Aとサーバ200Bの総称として使用)には、HMD101により撮像される現実画像に重畳する3次元モデル(仮想オブジェクト)が記憶されている(例えば図6のモデル情報650)。
【0016】
サーバ200は自機の管理するHMD101より現実画像を取得して、当該現実画像に3次元モデルを重畳したMR画像(現実画像と仮想空間の画像とを重畳した複合現実画像)を生成し、HMD101のディスプレイに表示させるべく、当該MR画像をHMD101に送信する。HMD101は受信したMR画像をディスプレイに表示する。
【0017】
ターゲット102は、主にMR体験者(ユーザ)の補助具として用いられる。例えばスパナやドライバー等の工具の仮想オブジェクトをユーザに持たせる場合、当該工具の仮想オブジェクトをターゲット102の位置姿勢に応じて、当該ターゲット102に重ねて表示することで、ユーザに工具を持っている実感を与え、且つ、ターゲット102を3次元空間上で移動させることで工具の仮想オブジェクトも自由に移動させることを可能にする。
【0018】
ターゲット102にはビデオカメラ231、ビデオカメラ232が設置されている。本実施形態においては、図10に示すように複数のビデオカメラ231-1~231-4をまとめてビデオカメラ231と呼び、ビデオカメラ232-1~232-4をまとめてビデオカメラ232と呼ぶものとする。実際には231-2~231-4、232-2~232-4の裏側にもビデオカメラが設置されているため、合計で14のビデオカメラがターゲット102に設置されていることとなる。ビデオカメラ231、ビデオカメラ232はそれぞれ360°撮像可能なカメラとして機能する。
【0019】
以降、ターゲット102のカメラで撮像された画像=ビデオカメラ231及びビデオカメラ232で撮像された全ての現実画像とする。以上が図1の説明である。
【0020】
なお、それぞれの拠点の室内には複数のマーカが貼り付けられているものとする。当該マーカを用いてHMD101の位置姿勢を特定し、また、仮想オブジェクトを配置する位置姿勢を決定することができる。
【0021】
マーカの形状は問わないが、実施形態では正方形であり、サイズはそれぞれ外部メモリに記憶されているものとする。位置検出用マーカと仮想オブジェクト配置用マーカは全て同じ大きさであるものとする。また、各マーカにはユニークなマーカ番号が埋め込まれているものとする。そして、HMD101に設けられたカメラで撮像した際に、個々のマーカが識別でき、デコードした際に、そのマーカ番号が得られるものとする。マーカの種類(マーカが果たす役割の種類)は、HMD101の位置姿勢を決定するための位置検出用マーカ、並びに、そのマーカで規定される箇所に仮想オブジェクトを描画するものとして利用される仮想オブジェクト配置用マーカの2種類がある。そして、位置検出用マーカについては、複数のマーカが、予め既知の位置に貼り付けられているものとする。
【0022】
本発明の実施形態におけるマーカの情報は図6のマーカ情報600に示す通りである。マーカ情報600は、サーバ200A及びサーバ200Bの外部メモリにそれぞれ記憶されている。マーカID601はマーカの識別情報である。マーカ種別602は、各マーカが位置検出用マーカ(位置特定用マーカ)なのか、仮想オブジェクト配置用マーカなのか、又は、HMD101に添付されておりHMDの位置姿勢の特定に用いられるHMD位置姿勢特定用マーカなのかを示す。
【0023】
HMD位置姿勢特定用マーカは、上述したように予めHMD101に添付されているマーカである。HMD101の位置姿勢は、HMD101自身に設置されている右目・左目ビデオカメラ221の画像上の位置検出用マーカの情報から決定されるか、又は、ターゲット102の位置姿勢(ビデオカメラ231・232において撮像された画像上の位置検出用マーカの情報から決定)及びビデオカメラ231・232において撮像された現実画像上のHMD位置姿勢特定用マーカの情報から決定される。
【0024】
HMD位置姿勢特定用マーカの位置姿勢の特定方法は、公知の技術を用いる。例えば前述した特許文献2(特開2000-102036号公報)に記載の方法を用いて、HMD位置姿勢特定用マーカの3次元空間上の位置姿勢を特定する。
【0025】
マーカ画像603は、マーカの識別情報を特定可能なマーカの画像である。上述したように、マーカの形状は正方形で有り、大きさは大きさ604に記憶されている。位置605、姿勢606は、マーカの位置姿勢を示すX,Y,Zの座標及び角度である。
【0026】
ターゲット等の携帯可能な現実物体に添付されている仮想オブジェクト配置用マーカと、HMDに添付されているHMD位置姿勢特定用マーカの位置605、姿勢606は、現実画像上で各マーカが認識され、位置姿勢が特定される都度、各サーバ200によって上書き・更新される。
【0027】
HMD101の位置姿勢を検出する原理について説明する。撮像した画像中の3つの位置検出用マーカ(その位置は既知)それぞれのサイズから、HMD101からそれぞれまでの位置検出用マーカまでの距離を求める。そして、逆に、3つの位置検出用マーカから求めた3つの距離が重なる位置を、HMD101の位置として決定する。また、HMD101の姿勢は、撮像した画像中の3つの位置検出用マーカの配置から求めればよい。
【0028】
なお、マーカの法線方向に視点があるとき、そのマーカ画像が正方形に見えることになる。そして、視点が法線方向からずれると、そのずれの度合いに応じて正方形が歪んで見える。つまり、この歪みから、視点の軸に対するマーカで規定される平面の向きが判明し、マーカのサイズから視点とマーカ間の距離を検出でき、マーカが貼り付けられた平面が規定できる。また、実施形態では、マーカには、互いに識別できる2つの印が設けられ、マーカの中心位置を原点とし、マーカで規定される上記の平面上の、原点からその印に向かう2つのベクトルを2軸、マーカの中心位置から法線方向の1軸で、局所的(ローカル)な3次元座標を規定する3軸を規定しているものとする。
【0029】
仮想オブジェクト配置用マーカとは、仮想オブジェクトを表示する位置を特定するために用いられるマーカである。サーバ200及びクライアントPC100のCPU201は、当該仮想オブジェクト配置用マーカが検出された際、当該仮想オブジェクト配置用マーカが存在する位置(正確には後述するように当該仮想オブジェクト配置用マーカの重心位置からオフセットを持つ位置)に仮想オブジェクトを表示するための処理を行う。例えば、3次元モデルを当該オフセットの示す仮想空間上の位置に配置する処理を行う。
【0030】
仮想オブジェクトとは、仮想空間上に配置された3次元モデル(3次元CADデータ、3Dモデル、CG等とも呼ぶ)のことである。尚、3次元モデルのデータはサーバ200及びクライアントPC100の外部メモリ上に、当該3次元モデルを仮想空間上のいずれの位置にどのような姿勢で配置するかを示す位置姿勢の情報と対応付けられて記憶されている。
【0031】
仮想オブジェクト配置用マーカの中心位置の座標を{Xv,Yv,Zv}とし、3次元モデルのデータ中の基準座標を{Xi,Yi,Zi}(ここで、i=0,1,2,・・・)と定義したとき、距離Lは次式で得られる。
L={(Xv-Xi)2+(Yv-Yi)2+(Zv-Zi)2}1/2
【0032】
ここで、iを変化させた際の最小の距離Lを、仮想オブジェクト配置用マーカと仮想オブジェクト配置用マーカの位置に応じて配置する3次元モデルとの距離とした。なお、上記では距離を計算する際に、最終的に平方根を求めたが、大小の判定で良いのであれば、平行根を求める必要な無く、座標の差分の二乗和を算出しても構わない。
【0033】
なお、上記式では、仮想オブジェクト配置用マーカの中心位置=仮想オブジェクトの中心位置とした場合である。先に説明したように、仮想オブジェクトの配置される位置は、仮想オブジェクト配置用マーカの中心位置に対し、「位置」で示されるオフセットが与えられる。
【0034】
なお、マーカに埋め込めるビット数にもよるが、位置検出用マーカと仮想オブジェクト配置用マーカを兼ねるマーカを定義しても構わない。
【0035】
尚、上記実施形態は、本発明に係る例であると認識されたい。たとえば、HMD101の位置姿勢を検出するため、上記実施形態では位置検出用マーカが撮像した視野内に3つは存在するものとして、位置検出用マーカを部屋中に多数張り付けるものとしたが、これによって本発明が限定されるものではない。位置検出用マーカには向きを規定する印があり、位置検出用マーカの座標だけでなく、形状や寸法も既知であれば、撮像した画像の位置検出の歪み、サイズ、印の位置から、1つの位置検出用マーカからだけでもHMD101の位置姿勢を特定できる。
【0036】
次に図2を参照して、本発明の実施形態における、各種装置のハードウェア構成について説明する。
【0037】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0038】
また、ROM202には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステム(OS)、その他各種装置の実行する機能を実現するために必要な各種プログラムが記憶されている。
【0039】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
【0040】
本発明のクライアントPC100、サーバ200が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
入力コントローラ(入力C)205は、キーボードやマウス等のポインティングデバイス(入力デバイス210)からの入力を制御する。
【0041】
ビデオコントローラ(VC)206は、HMD101が備える右目・左目ディスプレイ222等の表示器への表示を制御する。右目・左目ディスプレイ222に対しては、例えば外部出力端子(例えば、Digital Visual Interface)を用いて出力される。また、右目・左目ディスプレイ222は、右目用のディスプレイと左目用のディスプレイとから構成されている。
【0042】
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
【0043】
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
【0044】
汎用バス209は、HMD101の右目・左目ビデオカメラ221からの映像を取り込むために使用される。右目・左目ビデオカメラ221からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。右目・左目ビデオカメラ221は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
【0045】
また、汎用バス209は、ターゲット102に設置されたビデオカメラ231、ターゲット102のビデオカメラ231等からの映像を取り込むために使用される。
【0046】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ上での表示を可能としている。また、CPU201は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。以上が図2の説明である。
【0047】
次に図3を参照して、本発明の実施形態における、各種装置の機能構成の一例について説明する。
【0048】
撮像部301は、HMD101のカメラであり、現実画像を撮像する撮像部である。撮像画像送信部302は、撮像画像(現実画像)を自機に対応するサーバに送信する送信部である。ここではサーバ200Aに現実画像を送信する。
【0049】
MR画像受信部303は、サーバ200Aで生成されたMR画像を受信する受信部である。MR画像表示部304は、受信したMR画像を表示画面に表示する表示部である。
【0050】
ターゲット102の撮像部311は、ターゲット(図10に図示)に設置されたカメラであって、現実画像を撮像する撮像部である。撮像画像送信部312は、撮像画像送信部302と同じである。尚、ターゲット102に対応するサーバはサーバ200Bである。
【0051】
サーバ200Aの撮像画像受信部321は、HMD101から現実画像を受信する。マーカ認識部322は、現実画像の中のマーカ(二次元マーカ)を認識する認識部である。当該認識部は、画像上の二次元マーカの識別コードと当該コードに対応する二次元マーカの位置姿勢を特定する。HMD位置姿勢特定部323は、HMD101から受信した現実画像で認識された二次元マーカの位置姿勢を用いて、HMD101の現在の位置姿勢を特定する特定部である。
【0052】
位置姿勢情報受信部324は、サーバ200Bの位置姿勢情報送信部335から送信される、ターゲット位置姿勢特定部333においてターゲット102の画像から特定されたHMD101の位置姿勢の値を受信する受信部である。位置姿勢情報記憶部325は、位置姿勢情報受信部324で受信した位置姿勢の情報を外部メモリに記憶する記憶部である。
【0053】
認識判定部326は、現実画像に含まれる二次元マーカの認識状態が条件をクリアしているか判定する判定部である。例えば、二次元マーカを認識可能か判定する。つまり、HMD101の現実画像からHMD101の位置姿勢を(適切に)決定可能か判定するものである。
【0054】
HMD位置姿勢決定部327は、認識判定部326においてHMD101から取得した現実画像上で二次元マーカが適切に認識可能と判定され、HMD101の位置姿勢が適切に特定されたと判定された場合は、当該HMD101の現実画像に基づいて特定された位置姿勢を、実際に使用するHMD101の位置姿勢として決定する。一方、認識判定部326においてHMD101から取得した現実画像上で二次元マーカが適切に認識されないと判定され、HMD101の位置姿勢が適切に特定されないと判定された場合は、位置姿勢情報記憶部に記憶しているターゲット102の現実画像に基づいて(後述のターゲット位置姿勢特定部333で)特定されたHMD101の位置姿勢を、実際に使用するHMD101の位置姿勢として決定する。
【0055】
MR画像生成・記憶部328は、HMD位置姿勢決定部327で決定された位置姿勢に基づいて現実画像に仮想オブジェクトを重畳したMR画像(重畳画像)を生成し、外部メモリに記憶する記憶部である。MR画像送信部329は、当該MR画像をHMD101に送信する送信部である。
【0056】
撮像画像受信部331は、ターゲット102の撮像画像送信部312で送信された現実画像を受信する受信部である。マーカ認識部332は、現実画像の中のマーカ(二次元マーカ)を認識する認識部である。当該認識部は、画像上の二次元マーカの識別コードと当該コードに対応する二次元マーカの位置姿勢を特定する。ターゲット位置姿勢特定部333は、ターゲット102から受信した現実画像で認識された二次元マーカの位置姿勢を用いて、ターゲット102の現在の位置姿勢を特定する特定部である。
【0057】
HMD位置姿勢特定部334は、ターゲット102から受信した現実画像で認識された、HMD101に添付されている、HMD101の位置姿勢特定用の二次元マーカの位置姿勢を用いて、HMD101の現在の位置姿勢を特定する特定部である。位置姿勢情報送信部335は、HMD位置姿勢特定部334で特定されたHMD101の位置姿勢の情報をサーバ200Aに送信する送信部である。以上が図3の説明である。
【0058】
次に図4を参照して、ターゲットに設置されたカメラの画像を用いたHMDの位置姿勢特定処理の流れを説明する。
【0059】
ターゲット102のビデオカメラ1231及び232は現実画像を撮像し(ステップS401)、撮像した現実画像をサーバ200Bに送信する(ステップS402)。
【0060】
サーバ200BのCPU201は、当該現実画像を受信して外部メモリに記憶する(ステップS403/例えば図12の1201、1202で撮像している画像を含む、ビデオカメラ231、232で撮像した全ての画像)。そして、当該現実画像から撮像装置(撮像装置の設置されたターゲット102)の位置姿勢を特定するための位置検出用マーカ(位置特定用マーカ)を認識可能か判定する(ステップS404)。つまり、ターゲット102の位置姿勢を決定可能か判定する。
【0061】
認識できた場合は(ステップS404でYES)、認識した位置特定用マーカの位置姿勢を特定して、外部メモリに記憶する(ステップS405)。例えば図6のターゲット情報610のターゲット102の位置612、姿勢613に位置姿勢の情報を記憶する。認識できない場合は(ステップS404でNO)、処理をステップS403に戻す。
【0062】
サーバ200BのCPU201は、現実画像からHMD101の位置姿勢を特定するためのHMD位置姿勢特定用マーカを認識可能か判定する(ステップS406)。つまり、HMD101の位置姿勢を決定可能か判定する。認識できた場合は(ステップS406でYES)、認識したHMD位置姿勢特定用マーカの位置姿勢を特定して、外部メモリに記憶する(ステップS407)。例えば図6のHMD情報620のHMD101の位置622、姿勢623に位置姿勢の情報を記憶する。また、特定元624に、当該位置622、姿勢623の特定元の画像の取得元であるターゲット102の識別情報を記憶する。認識できない場合は(ステップS406でNO)、処理をステップS403に戻す。
【0063】
サーバ200BのCPU201は、ステップS407で記憶したHMD情報620の情報及びターゲット情報610の情報をサーバ200Aに送信し(ステップS408)、サーバ200AのCPU201がこれを受信して外部メモリに記憶する(ステップS409)。以上が図4の説明である。
【0064】
次に図5を参照して、本発明の実施形態における、HMDの位置姿勢の決定処理の流れについて説明する。
【0065】
HMD101は、ビデオカメラ221の機能を用いて現実画像を撮像して(ステップS501)、サーバ200Aに送信する(ステップS502)。
【0066】
サーバ200AのCPU201は当該現実画像を受信して外部メモリに記憶する(ステップS503/現実画像取得手段に該当)。そして、当該現実画像において位置特定用マーカを認識可能か判定する(ステップS504)。つまり、HMD101の画像からHMD101の位置姿勢を決定可能か判定する。
【0067】
例えば、図7の700に示すような、床・壁にマーカを添付した現実空間に仮想オブジェクト711を配置した仮想空間を重畳し、710のようなMR空間が作り上げられているとする。ここではHMD101は701に示す画角のビデオカメラを備えており、701に示す領域の現実画像を撮像している。そして、サーバ200Aは、現実画像に含まれるマーカ702を認識することでHMD101の位置姿勢を特定・決定している。
【0068】
マーカ702が適切に認識され、HMD101の位置姿勢が適切に認識されている場合は、例えば図8の800のようなMR画像がサーバ200によって生成され、HMD101に表示される。
【0069】
例えば図8に表示されている仮想オブジェクト711の穴の奥に配置されているネジ801を操作するために、ユーザの手にビデオカメラの設置されていない(仮想オブジェクトは配置用マーカを添付した)ターゲットを持たせて当該ターゲットの位置にドライバー(工具)の仮想オブジェクト911を重ね合わせた場合、ユーザはドライバーを穴に差し込むために自身の目の前に手とターゲットを持ってこなければならない。すると、本来は図9の910のようなMR画像を生成・表示させるべきであるにも関わらず、図9の900に示す現実画像のように手やターゲットによってマーカ702が隠れてしまい、サーバ200Aは現実画像からマーカ702を認識できなくなってしまう。結果、サーバ200AはHMD101の位置姿勢を適切に特定・決定できなくなり、MR画像を適切に生成・表示できなくなってしまう。
【0070】
また、例えば、マーカ702が手の隙間から見え隠れしている場合、マーカ702が見えて認識できる一瞬だけ仮想オブジェクト911を適切に重畳できるため、910に示すようなMR画像がサーバ200で生成されてHMD101で表示され、マーカ702が見えなくなったら仮想オブジェクト911が消える、というように、仮想オブジェクトがチラつき、安定してMR画像を生成・表示できないことがある。
【0071】
適切にMR画像を生成・表示するために、HMD101の位置姿勢を適切に決定し、実際に使用するHMD101の位置姿勢として使用する(採用する)必要がある。
【0072】
また、ターゲット102を手に持っていない場合、ターゲット102に設置されたカメラが必ずしもHMDの位置姿勢を特定可能とは限らない。よって基本はHMDの位置姿勢はHMD自身のカメラで撮った現実画像で特定・決定したい。
【0073】
本発明の実施形態では、図11の1100、1110に示すように、カメラを設置したターゲット102をユーザに持たせ、例えばターゲット102でHMD101のカメラでマーカ702を撮像できない(サーバ200がマーカ702を認識できない)状態になった場合に(ステップS504でNO)、サーバ200AのCPU201は、ターゲット102のカメラの現実画像で特定したHMD101の位置姿勢(HMDID621=HMD101であって、特定元624=ターゲット102の位置622、姿勢623)を外部メモリから取得して(ステップS505)、実際に使用するHMD101の位置姿勢として採用する(決定する/ステップS506)。ここでは外部メモリ上にHMD情報640(決定した位置姿勢)のテーブルを設けておき、当該HMD情報640のHMDID641=HMD101のデータ列の位置642・姿勢643に、ステップS505で取得した位置622・姿勢623を挿入して記憶することで、当該位置622・姿勢623を自際に使用するHMD101の位置姿勢として決定する。サーバ200AのCPU201は、処理をステップS509に移行する。
【0074】
一方、HMD101のカメラでマーカ702を撮像できる(サーバ200がマーカ702を認識できる)状態の場合には(ステップS504でYES)、HMDのカメラで撮像した現実画像の位置特定用マーカの位置姿勢から、HMD101の位置姿勢を特定して外部メモリに記憶する(ステップS507)。例えば図6のHMD情報630(HMDのカメラ画像から特定)のHMDID631=HMD101の、特定元634にHMD101を挿入し、位置632、姿勢633にステップS505で特定した位置・姿勢を記憶する。そして、当該位置姿勢を取得して、実際に使用するHMD101の位置姿勢として採用する(決定する/ステップS508)。ここでは外部メモリ上にHMD情報640のHMDID641=HMD101のデータ列の位置642・姿勢643に、ステップS507で取得した位置622・姿勢623を挿入して記憶することで、実際に使用するHMD101の位置姿勢として採用する。
【0075】
サーバ200AのCPU201は、ステップS509で、ステップS506又はS508で更新されたHMD情報640の位置姿勢をRAM上に読み出す(ステップS509)。
【0076】
また、外部メモリに記憶されているモデル情報650を取得して、モデルID651で識別・管理されている各モデル名652(ファイル名)の仮想オブジェクトを、位置653、姿勢654に従って仮想空間に配置する(ステップS510)
【0077】
サーバ200AのCPU201は、ステップS509で読み出したHMD情報640の位置642・姿勢643に従って、HMD101と同じ画角の、仮想のカメラを仮想空間上に配置して(ステップS511)、仮想空間の画像(仮想オブジェクトの画像/仮想画像)を撮像し(ステップS512)、HMD101から取得した現実画像に重畳することでMR画像を生成してメモリに記憶する(ステップS513)。
【0078】
サーバ200AのCPU201は、当該MR画像をHMD101に送信し(ステップS514)、HMD101が当該MR画像を受信して表示画面に表示する(ステップS515)。以上が図5の説明である。
【0079】
以上説明したように、本発明によれば、装着型表示装置を用いた当該装着型表示装置の位置姿勢が適切に決定できない場合に、他の装置の画像を用いて当該装着型表示装置の位置姿勢を決定することができる。
【0080】
なお、上述した実施形態においては、ステップS504で、HMD101から取得した現実画像から位置特定用マーカを認識できたか判定したが、例えば、マーカを安定して認識しているか判定するようにしてもよい。つまり、HMD101のカメラの現実画像からHMD101の位置姿勢を安定して特定できているかを判定する。
【0081】
具体的には、サーバ200のCPU201は、HMD101カメラの現実画像に基づいて特定したHMD101の位置姿勢のログを、ステップS504の後に外部メモリに記憶するようにする。例えば、HMD101のID及び位置姿勢の計測日時とを、HMDの位置姿勢が特定できた場合は位置姿勢の値とを対応付けて記憶し(ステップS507の後に実行)、HMDの位置姿勢が特定できなかった場合にはnullの値を対応付けて記憶する(ステップS505の後に実行)。
【0082】
HMD101カメラの現実画像からHMD101の位置姿勢を特定可能であると判定した場合には(ステップS504でYES)、ステップS507の後に当該記憶処理を実行した後、サーバ200のCPU201は、過去の所定時間(例えば10秒)の間、HMDの位置姿勢を安定してログとして記憶できているか判定する。例えば、過去10秒間の位置姿勢の計測結果の中にnullが含まれていない場合は安定している、過去10秒間の位置姿勢の計測結果の中にnullが含まれている場合は安定していないと判定する。
【0083】
安定している場合には処理をステップS508に移行し、安定していない場合は処理をステップS505に移行する。
【0084】
HMD101の位置姿勢をHMD自身で完全に特定できないわけではないという場合でも、HMD101のカメラからの画像による位置姿勢特定が不安定な場合に、ターゲット102のカメラの画像を使った位置姿勢を採用することで、安定したMR環境を提供することができる。
【0085】
また、ステップS504で、位置特定用マーカの認識率が所定値(閾値)に達しているか判定するようにしてもよい。
【0086】
マーカの認識率が低いということは、例えばマーカまでの距離が長いために撮像した現実画像中のマーカ画像が小さく、そのために画像認識率が下がってマーカを部分的に認識しているという場合等が考えられる。例えばマーカの一部を認識していることで、当該一部を認識したマーカが外部メモリに記憶されているどのマーカであるかは特定できているが、認識精度自体は十分でない状態である。マーカ画像が小さいということは比較的小さな障害物がHMDとマーカの間に入るだけでもマーカを認識できなくなる可能性があり、HMDの位置姿勢が特定できなくなってしまう可能性がある。実際にHMDでマーカを撮像できなくなってから、サーバ200がHMDのカメラの画像でマーカを認識できないと判定するのに時間がかかってしまう場合は、ターゲットのカメラの画像に基づいて特定されたHMDの位置姿勢を読み出して採用したとしても、一瞬HMDの位置姿勢が認識できない空白の時間ができてしまい、MRの体験者に違和感を与えてしまう可能性がある。よって、マーカの認識率が低い場合は、先んじてターゲットのカメラ画像を用いてHMDの位置姿勢を特定するものとする。
【0087】
具体的には、サーバ200のCPU201が、ステップS504の判定の代わりに、マーカの認識率を特定して、認識率が所定値に達しているか判定する。例えばHMD101のカメラで撮像した現実画像の中にあるマーカの認識率が80%以上か判定する。なお、所定値の値は外部メモリに予め記憶されているものとする。
【0088】
認識率の値が所定値に達している場合は処理をステップS507に移行し、認識率の値が所定値に達していない場合は処理をステップS505に移行する。
【0089】
これにより、位置特定用マーカの認識率が所定数に達しておらず、装着型表示装置を用いた当該装着型表示装置の位置姿勢が適切に決定できなくなる可能性がある場合にも、他の装置の画像を用いて当該装着型表示装置の位置姿勢を決定することができる。
【0090】
また、ステップS504で、位置特定用マーカとHMD101との距離が所定値に達しているか判定するようにしてもよい。
【0091】
具体的には、サーバ200のCPU201が、ステップS504の判定の代わりに、位置特定用マーカとHMD101との距離が所定値に達しているか判定し、例えば位置特定用マーカとHMD101との距離が5m以上離れている場合(マーカが小さい場合)、処理をステップS505に移行し、位置特定用マーカとHMD101との距離が5mより近い場合に処理をステップS508に移行する。所定値の値はサーバ200の外部メモリに予め記憶されているものとする。
【0092】
また、ステップS504で、位置特定用マーカの認識数が所定数(閾値)に達しているか判定するようにしてもよい。
【0093】
マーカの認識数が少ない場合とは、例えば現実画像上にマーカが1つしか入っていない等の場合等である。マーカが少ないということは、あるマーカが障害物で隠れてしまった場合にHMDの位置姿勢の特定に用いることができるマーカがなくなってしまう可能性が高いということである。実際にHMDでマーカを撮像できなくなってから、サーバ200がHMDのカメラの画像でマーカを認識できないと判定するのに時間がかかってしまう場合は、ターゲットのカメラの画像に基づいて特定されたHMDの位置姿勢を読み出して採用したとしても、一瞬HMDの位置姿勢が認識できない空白の時間ができてしまい、MRの体験者に違和感を与えてしまう可能性がある。よって、マーカの認識数が少ない場合は、先んじてターゲットのカメラ画像を用いてHMDの位置姿勢を特定するものとする。
【0094】
具体的には、サーバ200のCPU201が、ステップS504の判定の代わりに、マーカの認識数を特定して、認識数が所定値に達しているか判定する。例えばHMD101のカメラで撮像した現実画像の中にマーカが3つ以上あるか判定する。なお、ここでは所定数=3としたが、所定数の値は必ずしもこれに限る必要はない。所定数の値は外部メモリに予め記憶されているものとする。
【0095】
認識数が所定数に達している場合は処理をステップS507に移行し、認識数が所定数に達していない場合は処理をステップS505に移行する。
【0096】
これにより、位置特定用マーカの認識数が所定数に達しておらず、装着型表示装置を用いた当該装着型表示装置の位置姿勢が適切に決定できなくなる可能性がある場合にも、他の装置の画像を用いて当該装着型表示装置の位置姿勢を決定することができる。
【0097】
また、HMD101の位置姿勢のログを記憶しておき、ステップS504で、HMD101がHMD101自身の位置姿勢を特定できない位置・方向に移動・回転しようとしているか判定するようにしてもよい。
【0098】
例えば、マーカを認識できない領域の座標・範囲を予めサーバ200の外部メモリに記憶しておく。そして、サーバ200のCPU201がステップS504の判定の代わりに、、当該領域の座標・範囲を取得して、HMDの位置・姿勢(回転/角度)と画角から、HMD101が当該マーカを認識できない領域に向こうとしているかを判定する。
【0099】
マーカを認識できない領域に向こうといていない場合には、処理をステップS507に移行する。マーカを認識できない領域に向こうといている場合には、処理をステップS505に移行する。よって、実際にHMDのカメラの画像からマーカが認識できなくなってしまう前に、ターゲット102のカメラの画像から特定されたHMD101の位置姿勢を採用することができる。
【0100】
また、ターゲット102のカメラの画像に基づいてHMD101の位置姿勢を決定している場合には(HMD情報620を採用した場合には)、サーバ200AのCPU201が、ステップS514の後に、現在HMD101の位置姿勢をターゲット102のカメラの画像に基づいて決定していることをHMD101に通知して、HMD101が当該通知を表示画面に表示するようにしてもよい。これにより、HMDを装着しているユーザは、どのように自身の位置姿勢が特定されているかを知ることができる。
【0101】
また、ターゲット102のカメラの画像に基づいてHMD101の位置姿勢を決定している場合には(HMD情報620を採用した場合には)、サーバ200AのCPU201が、ステップS514の後に、HMD101自身のカメラの画像でHMD101の位置姿勢を特定できる位置・方向に戻るようにHMD101に通知し、HMD101が当該通知を表示画面に表示するようにしてもよい。これにより、HMDを装着しているユーザに、HMDの位置姿勢を、HMD自身のカメラの画像で確実に特定可能とするのが良いこと、及び現時点ではHMD自身のカメラでマーカを認識できていないことを通知できる。
【0102】
以上説明したように、本発明によれば、装着型表示装置を用いた当該装着型表示装置の位置姿勢が適切に決定できない場合に、他の装置の画像を用いて当該装着型表示装置の位置姿勢を決定することができる。
【0103】
前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0104】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【0105】
また、プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク、ソリッドステートドライブ等を用いることができる。
【0106】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0107】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0108】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0109】
101 HMD
102 ターゲット
150 ネットワーク
200A サーバ
200B サーバ
231 ビデオカメラ
232 ビデオカメラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12