画像処理装置、画像処理方法、プログラム及び画像処理システム
【課題】複合現実感の提供に際して実世界の状態と仮想オブジェクトの状態との間の不整合を抑制すること。
【解決手段】実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と、前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、を備える画像処理装置を提供する。
【解決手段】実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と、前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、を備える画像処理装置を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、プログラム及び画像処理システムに関する。
【背景技術】
【0002】
従来、実世界と仮想世界とがミックスされた環境をユーザに提供するための、MR(複合現実感:Mixed Reality)と呼ばれる技術の開発が進められている。例えば、実空間を撮影して得られる画像に仮想的なオブジェクトの画像又は追加的な情報を重畳した上でユーザに呈示するAR(拡張現実感:Augmented Reality)は、MRの一形態と言える。MRにおいては、多くの場合、ユーザが仮想世界又は仮想的なオブジェクトとインタラクションするためのインタフェースの一部が、実世界に配置される。例えば、下記特許文献1に記載されたMRシステムは、複数のユーザが実世界の物体であるコントロールボックスを操作することにより仮想的なパックを打ち合うエアホッケーゲームを提供するものである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−247602号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載されたシステムのように、複数のユーザが1つの仮想オブジェクトを共有する場合、装置間の通信の時間差又は処理の遅延等により、実世界の状態と仮想オブジェクトの状態との間に不整合が生じ得る。例えば、上記特許文献1に記載されたMRシステムでは、マスタとなるMRゲーム装置が、ユーザのヘッドマウントディスプレイ(HMD:Head Mounted Display)において撮像された入力画像を取得し、所定の処理をした後に、出力画像を各ユーザのHMDに配信している。この場合、入力画像の取得及び出力画像の配信に時間を要するため、ユーザの手の状態とHMDに表示される出力画像の状態とが一致せず、ユーザに違和感を与える結果となり易い。また、ユーザにより装着されるシースルーディスプレイに仮想オブジェクトを投影するような手法を用いる場合には、ユーザに視認される実世界の状態と、通信の遅延等を経て投影される仮想オブジェクトとが、ディスプレイ上でずれてしまう問題があった。
【0005】
そこで、本発明は、複合現実感の提供に際して実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することのできる、新規かつ改良された画像処理装置、画像処理方法、プログラム及び画像処理システムを提供しようとするものである。
【課題を解決するための手段】
【0006】
本発明のある実施形態によれば、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、を備える画像処理装置が提供される。
【0007】
かかる構成によれば、操作開始を表す第1のユーザ入力が検出された場合に、実空間を撮影した入力画像に映る操作子が認識され、認識の結果に応じて仮想オブジェクトの表示が制御されると共に、操作者側の画像処理装置から観察者側の画像処理装置へ操作開始を通知するための第1の通知信号が送信される。
【0008】
また、上記第1の通知信号は、上記仮想オブジェクトを識別するための識別データ又は上記仮想オブジェクトの位置を表す位置データを含んでもよい。
【0009】
また、上記通信部は、操作終了を表す第2のユーザ入力が検出された場合に、上記他の装置へ操作終了を通知するための第2の通知信号を送信してもよい。
【0010】
また、上記第2の通知信号は、上記演算部により算出される上記仮想オブジェクトの位置を表す位置データを含んでもよい。
【0011】
また、上記画像認識部は、上記通信部により他の装置から上記第1の通知信号が受信された場合にも、上記入力画像に映る上記操作子を認識してもよい。
【0012】
また、上記画像認識部は、上記通信部により受信された上記第1の通知信号が自装置が表示すべき仮想オブジェクトに関連しない場合には、上記操作子の認識を行わなくてもよい。
【0013】
また、上記通信部は、上記第1のユーザ入力が検出された後、上記画像認識部による上記操作子の認識の結果において上記操作子が上記仮想オブジェクトに接したと判定された場合に、上記他の装置へ上記第1の通知信号を送信してもよい。
【0014】
また、上記通信部は、上記第1の通知信号を、共通する仮想オブジェクトを表示する一群の装置を管理する情報処理装置へ送信してもよい。
【0015】
また、上記第1の通知信号は、上記仮想オブジェクトを識別するための識別データ又は上記仮想オブジェクトの位置を表す位置データを含み、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ上記情報処理装置を介して転送されてもよい。
【0016】
また、上記画像処理装置は、上記操作子を表す操作子画像を記憶している記憶部、をさらに備え、上記画像認識部は、上記記憶部に記憶されている上記操作子画像を用いて、上記入力画像に映る上記操作子を認識してもよい。
【0017】
また、本発明の別の実施形態によれば、画像処理装置における画像処理方法であって、実空間を撮影した入力画像を取得するステップと、操作開始を表す第1のユーザ入力を検出するステップと、上記画像処理装置が操作しようとする仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信するステップと、上記入力画像に映る操作子であって、上記仮想オブジェクトの操作のために用いられる当該操作子を認識するステップと、上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出するステップと、算出された表示装置の画面上の上記位置に上記仮想オブジェクトを表示させるステップと、を含む画像処理方法が提供される。
【0018】
また、本発明の別の実施形態によれば、画像処理装置を制御するコンピュータを、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、として機能させるための、プログラムが提供される。
【0019】
また、本発明の別の実施形態によれば、2つ以上の画像処理装置を含む画像処理システムであって、各画像処理装置は、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、をそれぞれ備え、上記画像認識部は、上記通信部により他の装置から上記第1の通知信号が受信された場合にも、上記入力画像に映る上記操作子を認識する、画像処理システムが提供される。
【発明の効果】
【0020】
以上説明したように、本発明に係る画像処理装置、画像処理方法、プログラム及び画像処理システムによれば、複合現実感の提供に際して実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することができる。
【図面の簡単な説明】
【0021】
【図1】一実施形態に係る画像処理システムの概要を説明するための模式図である。
【図2】本発明の関連技術における画像処理について説明するための説明図である。
【図3A】実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための第1の説明図である。
【図3B】実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための第2の説明図である。
【図4】一実施形態に係る画像処理装置の構成の一例を示すブロック図である。
【図5A】一実施形態に係る操作子の一例を示す模式図である。
【図5B】一実施形態に係る操作子の他の例を示す模式図である。
【図6】オブジェクトデータの一例について説明するための説明図である。
【図7】一実施形態に係る仮想オブジェクトの表示位置算出処理の流れの一例を示すフローチャートである。
【図8A】一実施形態に係る操作開始信号について説明するための説明図である。
【図8B】一実施形態に係る操作終了信号について説明するための説明図である。
【図8C】一実施形態に係る自己位置通知信号について説明するための説明図である。
【図9】一実施形態に係る操作者側の画像処理の流れの一例を示すフローチャートである。
【図10】一実施形態に係る観測者側の画像処理の流れの一例を示すフローチャートである。
【図11】一実施形態に係る管理サーバの構成の一例を示すブロック図である。
【図12】一実施形態に係る信号転送処理の流れの一例を示すフローチャートである。
【図13】一変形例に係る画像処理システムについて説明するための模式図である。
【発明を実施するための形態】
【0022】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付すことにより重複説明を省略する。
【0023】
また、以下の順序にしたがって当該「発明を実施するための形態」を説明する。
1.システムの概要
1−1.システムの全体像
1−2.関連技術の課題
2.画像処理装置の説明
2−1.装置の構成例
2−2.処理の流れ
3.管理サーバの説明
3−1.装置の構成例
3−2.処理の流れ
4.変形例
5.まとめ
【0024】
<1.システムの概要>
[1−1.システムの全体像]
図1は、本発明の一実施形態に係る画像処理システムの概要を説明するための模式図である。図1を参照すると、画像処理装置100a及び100b、並びに管理サーバ200を含む画像処理システムが示されている。画像処理装置100aは、ユーザUaが使用する装置である。画像処理装置100aは、有線又は無線による通信接続を介して、管理サーバ200と通信することができる。画像処理装置100bは、ユーザUbが使用する装置である。画像処理装置100bもまた、有線又は無線による通信接続を介して、管理サーバ200と通信することができる。
【0025】
画像処理装置100aは、例えば、ユーザUaの頭部に装着されるカメラ102a及びHMD104aと接続される。カメラ102aは、ユーザUaの視線方向を向いて実世界R1を撮像し、一連の入力画像を画像処理装置100aへ出力する。HMD104aは、画像処理装置100aから入力される画像をユーザUaに表示する。HMD104aにより表示される画像とは、例えば、ユーザUaの視界に仮想オブジェクトV1を含む画像である。
【0026】
同様に、画像処理装置100bは、例えば、ユーザUbの頭部に装着されるカメラ102b及びHMD104bと接続される。カメラ102bは、ユーザUbの視線方向を向いて実世界R1を撮像し、一連の入力画像を画像処理装置100bへ出力する。HMD104bは、画像処理装置100bから入力される画像をユーザUbに表示する。本実施形態において、画像処理装置100a及び100bは、仮想オブジェクトV1を共有する。即ち、HMD104bにより表示される画像においても、ユーザUbの視界に仮想オブジェクトV1が含まれ得る。
【0027】
なお、本明細書において、画像処理装置100a及び100bを互いに区別する必要がない場合には、符号の末尾のアルファベットを省略することにより、画像処理装置100a及び100bを画像処理装置100と総称する。また、カメラ102a及び102b(カメラ102)、HMD104a及び104b(HMD104)、並びにその他の要素についても同様とする。また、本実施形態に係る画像処理システムに参加可能な画像処理装置100の数は、図1の例に限定されず、3つ以上であってもよい。即ち、例えば、第3のユーザが使用する第3の画像処理装置100が、画像処理システムにさらに含まれてもよい。
【0028】
管理サーバ200は、システムに参加する画像処理装置100に関する情報を管理するための情報処理装置である。例えば、管理サーバ200は、定期的に(又は変化が生じた都度)各画像処理装置100からカメラ102の位置及び姿勢を受信し、受信したデータをデータベースに保持する。そして、管理サーバ200は、1つの画像処理装置100から仮想オブジェクトV1の操作に関する信号を受信すると、仮想オブジェクトV1を共有する他の画像処理装置100へ当該信号を転送する。
【0029】
[1−2.関連技術の課題]
次に、図2、図3A及び図3Bを用いて、図1に示したような画像処理システムにおける本発明に関連する技術の課題を説明する。図2は、関連技術における典型的な画像処理について説明するための説明図である。図3A及び図3Bは、図2を用いて説明する画像処理において生じ得る実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための説明図である。
【0030】
図2を参照すると、関連技術における典型的な画像処理の流れが、数字付きのボックスを用いて示されている。各ボックスに付された数字は、処理の順序を表す。即ち、関連技術において、次のような順序で画像処理が行われる:
(1)操作子を認識
(2)オブジェクト位置を決定
(3)オブジェクトID、位置を報告
(4)オブジェクトID、位置を配信
(5)仮想オブジェクトを移動
【0031】
(1)操作子を認識
まず、いずれかの画像処理装置100(図2の例では画像処理装置100a)において、入力画像に映る操作子が認識される。操作子とは、仮想オブジェクトの操作のために用いられる実世界の物体である。操作子は、ユーザの手など人体の一部であってもよく、人体以外の所定の物体であってもよい。
【0032】
(2)オブジェクト位置を決定
次に、操作子の位置(又は動き)と仮想オブジェクトの位置との関係から、仮想オブジェクトの新たな位置が決定される。例えば、操作子が仮想オブジェクトに接している状態で操作子が移動した場合には、操作子の動きに合わせて仮想オブジェクトの位置が更新され得る。
【0033】
(3)オブジェクトID、位置を報告
次に、仮想オブジェクトの新たな位置とオブジェクトID(識別子:Identifier)とが、管理サーバ200へ報告される。
【0034】
(4)オブジェクトID、位置を配信
次に、管理サーバ200により、同じ仮想オブジェクトを共有する他の画像処理装置100(図2の例では画像処理装置100b)へ、仮想オブジェクトの新たな位置とオブジェクトIDとが配信される。
【0035】
(5)仮想オブジェクトを移動
そして、同じ仮想オブジェクトを共有する他の画像処理装置100において、HMD104の画面上の仮想オブジェクトが移動される。
【0036】
なお、図2の例では、処理(1)及び(2)を画像処理装置100aが行っているが、画像処理装置100aの代わりに管理サーバ200が、画像処理装置100aから入力画像を受信した上で、処理(1)及び(2)を行ってもよい。また、管理サーバ200を配置することなく、画像処理装置100aから画像処理装置100bへ、仮想オブジェクトの新たな位置とオブジェクトIDとが直接送信される場合もある。
【0037】
このような画像処理の流れを想定すると、画像処理装置100bが仮想オブジェクトを移動させた時点において、装置間の通信の時間差及び処理の遅延を含む時間が既に経過している。その結果、例えば、カメラ102bにより撮像される画像内に仮想オブジェクトV1を重畳すると、HMD104bにより表示される画像において、操作子の状態と仮想オブジェクトV1の状態との間に不整合が生じる。
【0038】
図3A及び図3Bは、上述した問題点をより具体的に示している。このうち、図3Aは、HMD104aにより仮想オブジェクトV1の操作者であるユーザUaに向けて表示される、ある時間間隔Tを挟んだ2つのフレームの画像の例を示している。一方、図3Bは、HMD104bにより仮想オブジェクトV1の観察者であるユーザUbに向けて表示される、時間間隔Tを挟んだ2つのフレームの画像の例を示している。なお、ここでは、一例として、ユーザの手が操作子である。
【0039】
図3Aを参照すると、時刻t=0において、操作子H1が仮想オブジェクトV1aに接している。その後、時刻t=Tにおいて、操作子H1の動きに応じて、仮想オブジェクトV1aが左方向に移動している。時刻t=Tにおいても、操作子H1は、仮想オブジェクトV1aに接している。
【0040】
図3Bを参照すると、図3Aと同様、時刻t=0において、操作子H1が仮想オブジェクトV1bに接している。なお、仮想オブジェクトV1aと仮想オブジェクトV1bとは、同じオブジェクトIDを有する共通のオブジェクトである。但し、オブジェクトを表示するHMDが異なるため、ここでは便宜的に符号を使い分けている。その後、時刻t=Tにおいて、操作子H1の動きに応じて、仮想オブジェクトV1bが左方向に移動している。しかし、装置間の通信の時間差及び処理の遅延の影響から、時刻t=Tにおいて画像処理装置100bに通知されているのは、数フレーム前の仮想オブジェクトの位置である。そのため、時刻t=TにおいてHMD104bにより表示される仮想オブジェクトV1bの位置は、時刻t=TにおいてHMD104aにより表示される仮想オブジェクトV1aの位置との間にズレdを有する。しかし、時刻t=Tにおいて、カメラ102bにより撮像される操作子H1の実世界における位置は、カメラ102aにより撮像される操作子H1の位置と等しい。その結果、HMD104bにより表示される画像において、操作子H1の位置と仮想オブジェクトV1bとが整合しない。図3Bの例では、操作子H1が、仮想オブジェクトV1bに接する代わりに突き刺さった状態となっている。
【0041】
なお、このような不整合は、各HMD104がシースルーディスプレイであって、仮想オブジェクトの画像のみが各HMD104のスクリーンに投影される場合にも同様に(又はより強く)生じ得る。
【0042】
上述した実世界の状態と仮想オブジェクトの状態との間の不整合を抑制するためには、装置間の通信の時間差及び処理の遅延の影響を可能な限り低減することが求められる。そこで、次節より、複合現実感の提供に際して装置間の通信の時間差及び処理の遅延の影響を低減するための、本実施形態に係る画像処理装置100及び管理サーバ200の具体的な構成について説明する。
【0043】
<2.画像処理装置の説明>
[2−1.装置の構成例]
図4は、本実施形態に係る画像処理装置100の構成の一例を示すブロック図である。図4を参照すると、画像処理装置100は、入力画像取得部110、自己位置検出部120、記憶部130、画像認識部140、演算部150、表示制御部160、及び通信部170を備える。
【0044】
(入力画像取得部)
入力画像取得部110は、カメラ102により実空間を撮影した入力画像を取得する。そして、入力画像取得部110は、取得した入力画像を、自己位置検出部120、画像認識部140及び表示制御部160へ出力する。
【0045】
(自己位置検出部)
自己位置検出部120は、実世界におけるカメラ102の位置及び姿勢を検出する。カメラ102の位置は、例えば、実世界の絶対座標系における3次元位置により表される。カメラ102の姿勢は、例えば、回転行列に対応する四元数又はオイラー角などにより表される。自己位置検出部120は、例えば、Andrew J.Davisonによる“Real-Time Simultaneous Localization and Mapping with a Single Camera”(Proceedings of the 9th IEEE International Conference on Computer Vision Volume 2, 2003, pp.1403-1410)に記載されているSLAM技術の原理に従って、入力画像取得部110から入力される入力画像を用いてカメラ102の位置及び姿勢を検出してもよい。その代わりに、カメラ102が位置センサ(例えば、光位置センサ)及び姿勢センサ(例えば、ジャイロセンサ)を有する場合には、自己位置検出部120は、カメラ102において各センサにより検出された位置及び姿勢を取得してもよい。自己位置検出部120は、例えば、上述したいずれかの手法により検出したカメラ102の位置及び姿勢を、画像認識部140及び通信部170へ出力する。
【0046】
(記憶部)
記憶部130は、ハードディスク又は半導体メモリなどの記憶媒体を用いて、操作子画像、及びオブジェクトデータを予め記憶している。操作子画像とは、出力画像に表示される仮想オブジェクトの操作のために用いられる操作子を表す画像である。一方、オブジェクトデータとは、複合現実感においてHMD104により表示される仮想オブジェクトに関するデータである。
【0047】
図5A及び図5Bは、本実施形態に係る操作子の一例をそれぞれ示す模式図である。図5Aの例では、操作子M1aは、ユーザの手である。この場合、記憶部130は、ユーザの手を映した画像を操作子画像として予め記憶する。記憶部130は、例えば、異なる複数の方向からユーザの手を映した一群の画像を操作子画像として記憶してもよい。
【0048】
図5Bの例では、操作子M1bは、ユーザの指に装着される立方体状のマーカである。マーカの各面の中央部には空洞が開けられており、ユーザは、その空洞に指を挿入してマーカを動かすことができる。この場合、記憶部130は、マーカを映した画像を操作子画像として予め記憶する。その代わりに、例えば、マーカと当該マーカに挿入された指とを含む全体を操作子とし、それらを映した画像が操作子画像として記憶されてもよい。
【0049】
なお、操作子は、図5A及び図5Bの例に限定されず、例えば、ユーザの足又はユーザに把持される棒状の物体など、実世界に存在する人体の一部又は任意の物体であってよい。記憶部130は、画像認識部140からの要求に応じて、かかる操作子画像を画像認識部140へ出力する。
【0050】
図6は、記憶部130により記憶されるオブジェクトデータの一例について説明するための説明図である。図6を参照すると、オブジェクトデータは、オブジェクトID、形状及び位置の3つのデータ項目を有する。このうち、「オブジェクトID」は、仮想オブジェクトを一意に特定するための識別子である。図6の例では、それぞれオブジェクトID=V1、V2である2つの仮想オブジェクトについてのオブジェクトデータが示されている。「形状」は、仮想オブジェクトの形状を表すデータである。仮想オブジェクトの形状は、例えば、ポリゴンによって表現され得る。「位置」は、仮想オブジェクトの最新の位置を表す3次元座標データである。仮想オブジェクトの位置は、操作子を用いたユーザによる操作に応じて更新される。記憶部130は、演算部150からの要求に応じて、かかるオブジェクトデータを演算部150へ出力する。
【0051】
(画像認識部)
画像認識部140は、操作開始を表す第1のユーザ入力が検出された場合に、入力画像取得部110から入力される入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する。画像認識部140は、例えば、記憶部130に記憶されている操作子画像を用いて、入力画像に映る操作子を認識することができる。より具体的には、例えば、画像認識部140は、公知のパターンマッチングの手法を用いて、入力画像内の部分画像と操作子画像とを照合する。そして、画像認識部140は、入力画像内の操作子画像の検出位置と検出された大きさとに基づいて、実世界における操作子の3次元位置を認識する。ここで認識される操作子の3次元位置は、その時点のカメラ102の位置及び姿勢に対する相対的な位置である。さらに、画像認識部140は、自己位置検出部120から入力されるカメラ102の位置及び姿勢を用いて、操作子の相対的な3次元位置を実世界の絶対座標系における3次元位置に変換する。そして、画像認識部140は、変換後の操作子の位置を、演算部150へ出力する。画像認識部140は、こうした画像認識処理を、操作開始を表す第1のユーザ入力が検出された後、操作終了を表す第2のユーザ入力が検出されるまで、一連の入力画像の各フレームについて繰り返す。そして、画像認識部140は、操作終了を表す第2のユーザ入力が検出された場合には、画像認識処理を終了する。なお、画像認識部140は、例えば、操作子画像の代わりに操作子の形状を表す形状データを用いて、入力画像に映る操作子を認識してもよい。
【0052】
操作開始を表す第1のユーザ入力及び操作終了を表す第2のユーザ入力は、それぞれ、例えば、画像処理装置100に設けられる所定のボタンの押下、入力画像内のユーザの所定のジェスチャ、又はユーザによる音声入力などであってよい。
【0053】
また、画像認識部140は、後に説明する操作開始信号が通信部170により受信された場合にも、上述した画像認識処理を実行する。この場合の画像認識処理は、後に説明する操作終了信号が通信部170により受信されるまで、一連の入力画像の各フレームについて繰り返される。なお、本明細書では、第1のユーザ入力の検出から第2のユーザ入力の検出までの間の処理を操作者側の処理、操作開始信号の受信から操作終了信号の受信までの処理を観察者側の処理という。
【0054】
(演算部)
演算部150は、上記操作開始を表す第1のユーザ入力が検出された場合に、画像認識部140による操作子の認識の結果に応じて、仮想オブジェクトを表示すべきHMD104の画面上の位置を算出する。そして、演算部150は、算出した仮想オブジェクトの表示位置を表示制御部160へ出力すると共に、記憶部130により記憶されている仮想オブジェクトの位置データを更新する。演算部150は、操作子の認識の結果に応じた仮想オブジェクトの表示位置算出処理を、操作開始を表す第1のユーザ入力が検出された後、操作終了を表す第2のユーザ入力が検出されるまで、一連の入力画像の各フレームについて繰り返す。
【0055】
図7は、本実施形態に係る演算部150による仮想オブジェクトの表示位置算出処理の具体的な流れの一例を示すフローチャートである。図7を参照すると、演算部150は、まず、記憶部130から、各仮想オブジェクトのオブジェクトデータを取得する(ステップS102)。ここで取得されるオブジェクトデータには、各仮想オブジェクトの最新の位置と形状とが含まれる。次に、演算部150は、画像認識部140により認識された操作子の位置を取得する(ステップS104)。次に、演算部150は、各仮想オブジェクトの最新の位置及び形状、並びに操作子の位置に基づいて、操作子が仮想オブジェクトに接しているか否かを判定する(ステップS106)。ここで、操作子が仮想オブジェクトに接していない場合には、その後の処理はスキップされる。次に、操作子が仮想オブジェクトに接している場合には、演算部150は、操作子の位置に基づいて、仮想オブジェクトの新たな位置を算出する(ステップS108)。例えば、操作子が仮想オブジェクトに接している状態で操作子がX方向に距離Dだけ移動すると、それに応じて、仮想オブジェクトの位置もX方向に距離Dだけ移動する。次に、演算部150は、自己位置検出部120により検出されたカメラ102の位置及び姿勢に基づいて、仮想オブジェクトの新たな位置を実世界の3次元位置からHMD104の画面上の2次元位置に変換する(ステップS110)。例えば、3次元位置から画面上の2次元位置への座標の変換は、ピンホールモデルに従った次式を用いて行われ得る。
【0056】
【数1】
【0057】
式(1)において、pは仮想オブジェクトの3次元位置ベクトル、xはカメラ102の3次元位置ベクトル、Rはカメラ102の姿勢に対応する回転行列、Aはカメラ内部パラメータ、λは正規化のためのパラメータである。また、p´は仮想オブジェクトの画面上の2次元位置を表す。ここで、カメラ内部パラメータAは、カメラ102の特性に応じて、予め次式のように与えられる。
【0058】
【数2】
【0059】
ここで、fは焦点距離、θは画像軸の直交性(理想値は90°)、kuは撮像面の縦軸のスケール(実世界の絶対座標系から撮像面の座標系へのスケール変化率)、kvは撮像面の横軸のスケール、(uo,vo)は撮像面の中心位置である。
【0060】
なお、仮想オブジェクトがポリゴンにより表現される場合には、演算部150は、カメラ102の位置及び姿勢に基づいて、ポリゴンの各頂点についてHMD104の画面上の2次元位置を算出する。
【0061】
また、演算部150は、観察者側の処理として、後に説明する操作開始信号が通信部170により受信された場合にも、上述した仮想オブジェクトの表示位置算出処理を実行する。この場合の表示位置算出処理は、後に説明する操作終了信号が通信部170により受信されるまで、一連の入力画像の各フレームについて繰り返される。さらに、演算部150は、通信部170が操作終了信号を受信すると、操作終了信号に含まれる仮想オブジェクトの位置データを用いて、表示制御部160が表示している(及び記憶部130が記憶している)仮想オブジェクトの位置を補正する。これは、操作者側と観察者側とにおいて仮想オブジェクトの表示位置算出処理を並行して行った場合に残る仮想オブジェクトの位置の小さなズレを解消するための処理である。
【0062】
また、演算部150は、仮想オブジェクトが操作されていない間にも、記憶部130に記憶されている仮想オブジェクトの位置データ、並びに自己位置検出部120により検出されるカメラ102の位置及び姿勢に基づいて、仮想オブジェクトの画面上の表示位置を算出する。そして、演算部150は、算出した仮想オブジェクトの表示位置を、表示制御部160へ出力する。
【0063】
(表示制御部)
表示制御部160は、演算部150により算出されるHMD104の画面上の表示位置に、仮想オブジェクトを表示させる。例えば、表示制御部160は、入力画像取得部110から入力される入力画像に仮想オブジェクトを表すポリゴンを重畳することにより出力画像を生成し、当該出力画像をHMD104へ出力してもよい。より具体的には、表示制御部160は、例えば、演算部150により算出される仮想オブジェクトのポリゴンの各頂点の座標に基づいて、当該ポリゴンを出力画像内に描画することができる。その結果、HMD104によりユーザに向けて表示される出力画像において、操作子の動きに追随して仮想オブジェクトが移動し、拡張現実感がユーザに提供される。なお、表示制御部160は、例えば、HMD104がシースルーディスプレイである場合には、演算部150により算出される仮想オブジェクトのポリゴンの各頂点の座標に基づいて、当該ポリゴンをHMD104のスクリーン上に投影してもよい。
【0064】
(通信部)
通信部170は、上述した操作開始を表す第1のユーザ入力が検出された場合に、共通する仮想オブジェクトを表示する他の画像処理装置100へ操作開始を通知するための第1の通知信号を送信する。本明細書では、第1の通知信号を操作開始信号という。また、通信部170は、上述した操作終了を表す第2のユーザ入力が検出された場合に、共通する仮想オブジェクトを表示する他の画像処理装置100へ操作終了を通知するための第2の通知信号を送信する。本明細書では、第2の通知信号を操作終了信号という。本実施形態では、操作開始信号及び操作終了信号は、管理サーバ200を介して他の画像処理装置100へ送信される。
【0065】
図8Aは、本実施形態に係る操作開始信号について説明するための説明図である。図8Aを参照すると、操作開始信号S1は、信号種別、送信元、オブジェクトID及びオブジェクト位置という4つのフィールドを有する。「信号種別」は、当該信号が操作開始信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「オブジェクトID」は、どの仮想オブジェクトが操作されようとしているかを特定するためのフィールドである。「オブジェクトID」に複数の仮想オブジェクトのオブジェクトIDが列挙されてもよい。「オブジェクト位置」は、任意に設けられるフィールドであって、操作開始時点での仮想オブジェクトの位置を表す3次元座標データを含む。これら「オブジェクトID」又は「オブジェクト位置」は、管理サーバ200が操作開始信号の転送先とすべき画像処理装置100を判別するために用いられ得る。
【0066】
図8Bは、本実施形態に係る操作終了信号について説明するための説明図である。図8Bを参照すると、操作終了信号S2は、信号種別、送信元、オブジェクトID及びオブジェクト位置という4つのフィールドを有する。「信号種別」は、当該信号が操作終了信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「オブジェクトID」は、どの仮想オブジェクトについての操作が終了されようとしているかを特定するためのフィールドである。「オブジェクトID」に複数の仮想オブジェクトのオブジェクトIDが列挙されてもよい。「オブジェクト位置」は、操作終了時点での仮想オブジェクトの位置を表す3次元座標データを含む。これら「オブジェクトID」又は「オブジェクト位置」は、管理サーバ200が操作終了信号の転送先とすべき画像処理装置100を判別するために用いられ得る。さらに、操作終了信号S2の「オブジェクト位置」は、操作終了信号を受信した画像処理装置100が仮想オブジェクトの操作終了時点における位置を補正するために使用され得る。
【0067】
また、通信部170は、自己位置検出部120により検出されるカメラ102の位置及び姿勢を管理サーバ200へ通知するための第3の通知信号を、管理サーバ200へ定期的に(又は変化が生じた都度)送信する。本明細書では、第3の通知信号を自己位置通知信号という。
【0068】
図8Cは、本実施形態に係る自己位置通知信号について説明するための説明図である。図8Cを参照すると、自己位置通知信号S3は、信号種別、送信元、及び位置・姿勢という3つのフィールドを有する。「信号種別」は、当該信号が自己位置通知信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「位置・姿勢」は、例えば、カメラ102の絶対座標系における3次元位置と回転行列に対応する四元数とを含む。各画像処理装置100から定期的に送信されるこのような自己位置通知信号S3に基づいて、後に説明する管理サーバ200は、各画像処理装置100がどのような視界を有しているかを知ることができる。
【0069】
[2−2.処理の流れ]
(操作者側の処理)
図9は、本実施形態に係る画像処理装置100による操作者側の画像処理の流れの一例を示すフローチャートである。
【0070】
図9を参照すると、まず、画像認識部140及び演算部150において、第1のユーザ入力の検出の有無が監視される(ステップS122)。第1のユーザ入力が検出されると、ステップS124以降の操作者側の画像処理が開始される。操作者側の画像処理において、まず、通信部170により、操作開始信号S1が管理サーバ200へ送信される(ステップS124)。次に、画像認識部140により、記憶部130において記憶されている操作子画像を用いて入力画像中の操作子が認識され、操作子の位置が演算部150へ出力される(ステップS126)。次に、演算部150により、図7を用いて説明した仮想オブジェクトの表示位置算出処理が行われる(ステップS128)。そして、表示制御部160によりHMD104の画面上に表示されている仮想オブジェクトが、操作子の位置に応じて移動される(ステップS130)。次に、画像認識部140及び演算部150において、第2のユーザ入力の検出の有無が判定される(ステップS132)。ここで、第2のユーザ入力が検出されない場合には、処理はステップS126へ戻り、入力画像の次のフレームについてステップS126からステップS130までが繰り返される。一方、第2のユーザ入力が検出された場合には、通信部170により、操作終了信号S2が管理サーバ200へ送信される(ステップS134)。そして、操作者側の画像処理は終了する。
【0071】
なお、通信部170は、第1のユーザ入力が検出された後、画像認識部140による操作子の認識の結果において操作子が仮想オブジェクトに接したと判定されるまで待ってから(即ち、図7のステップS106の判定結果がYesとなってから)操作開始信号を管理サーバ200へ送信してもよい。この場合には、図9の流れと異なり、観察者側での画像処理が、操作子による実質的な仮想オブジェクトの操作の開始まで行われないこととなる。それにより、仮想オブジェクトの画面上での移動の開始が遅れる可能性がある一方、第1のユーザ入力から実質的な仮想オブジェクトの操作の開始までの間の観察者側の処理コストが低減される。
【0072】
(観察者側の処理)
図10は、本実施形態に係る画像処理装置100による観察者側の画像処理の流れの一例を示すフローチャートである。
【0073】
図10を参照すると、まず、通信部170において、操作開始信号の受信の有無が監視される(ステップS152)。操作開始信号が受信されると、ステップS154以降の観察者側の画像処理が開始される。観察者側の画像処理において、まず、画像認識部140により、記憶部130において記憶されている操作子画像を用いて入力画像中の操作子が認識され、操作子の位置が演算部150へ出力される(ステップS154)。次に、演算部150により、図7を用いて説明した仮想オブジェクトの表示位置算出処理が行われる(ステップS156)。そして、表示制御部160によりHMD104の画面上に表示されている仮想オブジェクトが、操作子の位置に応じて移動される(ステップS158)。次に、通信部170において、操作終了信号の受信の有無が判定される(ステップS160)。ここで、操作終了信号が受信されない場合には、処理はステップS154へ戻り、入力画像の次のフレームについてステップS154からステップS158までが繰り返される。一方、操作終了信号が受信された場合には、演算部150により、仮想オブジェクトの位置が補正される(ステップS162)。そして、観察者側の画像処理は終了する。
【0074】
<3.管理サーバの説明>
[3−1.装置の構成例]
図11は、本実施形態に係る管理サーバ200の構成の一例を示すブロック図である。図12を参照すると、管理サーバ200は、通信部210、記憶部220及びユーザ管理部230を備える。
【0075】
(通信部)
通信部210は、有線又は無線による通信接続を介して、各画像処理装置100の通信部170との間で信号を送受信する。管理サーバ200の通信部210と各画像処理装置100の通信部170との間で送受信される信号には、上述した操作開始信号、操作終了信号及び自己位置通知信号が含まれる。
【0076】
(記憶部)
記憶部220は、ハードディスク又は半導体メモリなどの記憶媒体を用いて、共通する仮想オブジェクトを表示する一群の画像処理装置100を管理するデータベースを保持する。記憶部220により保持されるデータベースには、例えば、自己位置通知信号を用いて定期的に収集される各画像処理装置100のカメラ102の位置及び姿勢に関するデータが含まれる。また、記憶部220により保持されるデータベースには、例えば、各画像処理装置100により表示され得る仮想オブジェクトのオブジェクトIDが含まれてもよい。
【0077】
(ユーザ管理部)
ユーザ管理部230は、通信部210により自己位置通知信号が受信されると、当該自己位置通知信号の送信元の画像処理装置100について記憶部220が保持する位置及び姿勢に関するデータを更新する。また、通信部210により操作開始信号又は操作終了信号が受信されると、ユーザ管理部230は、当該信号の送信元と共通する仮想オブジェクトを表示している他の画像処理装置100へ、操作開始信号又は操作終了信号を転送させる。ユーザ管理部230は、例えば、操作開始信号又は操作終了信号に含まれるオブジェクトIDと記憶部220のデータベースにおいて関連付けられている画像処理装置100を、各信号の転送先の装置として決定してもよい。その代わりに、ユーザ管理部230は、例えば、操作開始信号又は操作終了信号に示されている仮想オブジェクトの位置がカメラ102の視界に含まれると判定される画像処理装置100を、各信号の転送先の装置として決定してもよい。
【0078】
[3−2.処理の流れ]
図12は、本実施形態に係る管理サーバ200による信号転送処理の流れの一例を示すフローチャートである。
【0079】
図12を参照すると、まず、通信部210において、操作開始信号又は操作終了信号の受信の有無が監視される(ステップS202)。ここで、操作開始信号又は操作終了信号が受信された場合には、処理はステップS204へ進む。次に、ユーザ管理部230は、記憶部220から、各画像処理装置100の状態を取得する(ステップS204)。ここで取得される各画像処理装置100の状態には、例えば、各画像処理装置100が表示している仮想オブジェクトのオブジェクトID、又は各画像処理装置100のカメラ102の位置及び姿勢が含まれ得る。次に、ユーザ管理部230は、仮想オブジェクトを共有する他の画像処理装置100(操作開始信号又は操作終了信号の送信元以外の装置)が存在するか否かを判定する(ステップS206)。ここで、仮想オブジェクトを共有する他の画像処理装置100が存在しない場合には、ステップS208はスキップされる。一方、仮想オブジェクトを共有する他の画像処理装置100が存在する場合には、通信部210は、当該他の画像処理装置100へ、操作開始信号又は操作終了信号を転送する(ステップS208)。そして、管理サーバ200による信号転送処理は終了する。
【0080】
<4.変形例>
図13は、本実施形態の一変形例に係る画像処理システムについて説明するための模式図である。図13を参照すると、画像処理装置300a、300b及び300cを含む画像処理システムが示されている。画像処理装置300a、300b及び300cは、それぞれ、ユーザUa、Ub及びUcが使用する装置である。これら装置は、有線又は無線による通信接続を介して相互に通信することができる。
【0081】
画像処理装置300a、300b及び300cは、典型的には、図4を用いて説明した画像処理装置100と同等の構成を有する。但し、画像処理装置300a、300b及び300cの通信部170は、管理サーバ200を介することなく、操作開始信号及び操作終了信号を直接送受信する。そして、例えば、通信部170により操作開始信号が受信されると、当該信号の送信元と共通する仮想オブジェクトを自装置が表示しようとしている場合にのみ、画像認識部140による操作子の認識が行われる。この場合の操作子の認識の要否の判定は、例えば、操作開始信号に含まれる仮想オブジェクトのオブジェクトID又は位置データに基づいて行われる。
【0082】
例えば、図13の例において、画像処理装置300aと300bとは、仮想オブジェクトV1を共有している。即ち、画像処理装置300aのHMD104a及び画像処理装置300bのHMD104bは、共に仮想オブジェクトV1を表示し得る。一方、画像処理装置300cは、仮想オブジェクトV1を共有しない。その代わりに、画像処理装置300cのHMD104cは、異なる仮想オブジェクトV2を表示し得る。このような例において、ユーザUaが仮想オブジェクトV1の操作者であり、例えばユーザUaが画像処理装置300aのボタン106aを押下することにより仮想オブジェクトV1の操作を開始したものとする。そうすると、画像処理装置300aは、第1のユーザ入力を検出し、操作開始信号S1を画像処理装置300b及び画像処理装置300cへ送信する。かかる操作開始信号S1には、例えば、仮想オブジェクトV1のオブジェクトID又は位置データが含まれる。画像処理装置300bは、操作開始信号S1を受信すると、当該信号に含まれるオブジェクトID又は位置データに基づいて、自装置が表示しようとしている仮想オブジェクトV1について操作が開始されることを認識する。その結果、画像処理装置300bにおいても、画像認識による操作子(例えばユーザUaの手又はマーカ)の追跡が開始される。一方、画像処理装置300cは、操作開始信号S1に含まれるオブジェクトID又は位置データに基づいて、当該信号が自装置が表示しようとしている仮想オブジェクトとは関連しないことを認識する。その結果、画像処理装置300cは、画像処理装置300aから受信した操作開始信号S1を無視する。
【0083】
<5.まとめ>
ここまで、図1〜図13を用いて、本発明の一実施形態及びその変形例について説明した。本実施形態によれば、操作開始を表す第1のユーザ入力が検出された場合に、操作者側の画像処理装置において、実空間を撮影した入力画像に映る操作子が認識され、認識の結果に応じて仮想オブジェクトの表示が制御される。また、操作者側の画像処理装置から観察者側の画像処理装置へ操作開始信号が送信される。それにより、観察者側の画像処理装置も、実空間を撮影した入力画像に映る操作子を認識し、認識の結果に応じて仮想オブジェクトの表示を制御することができる。従って、操作者側と観察者側とで並行して画像認識による操作子の追跡が行われるため、追跡結果の伝送による遅延が生じることがない。また、操作開始信号に仮想オブジェクトを識別するためのオブジェクトID又は仮想オブジェクトの位置データを含めることにより、仮想オブジェクトを共有しない画像処理装置においては、不必要な画像認識処理の実行を避けることができる。また、操作終了を表す第2のユーザ入力が検出された場合には、操作者側の画像処理装置から観察者側の画像処理装置へ操作終了信号が送信される。それにより、仮想オブジェクトの操作が行われていない間、いずれの画像処理装置も画像認識処理を実行しなくてよい。このように、本実施形態によれば、操作者側と観察者側とで並行して画像認識による操作子の追跡が行われることに加えて、画像認識処理が稼動するタイミングが装置間で交換される信号に基づいて制御されるため、複合現実感の提供に際して、処理の負荷を効果的に低減しながら、実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することができる。
【0084】
また、本実施形態によれば、操作者側の画像処理装置から観察者側の画像処理装置へ送信される操作終了信号は、操作終了時点での仮想オブジェクトの位置を表す位置データを含む。それにより、操作者側の画像処理装置による操作子の追跡結果と観察者側の画像処理装置による操作子の追跡結果との間に一時的に誤差が生じた場合にも、観察者側の画像処理装置において仮想オブジェクトの位置を補正することができる。
【0085】
また、操作者側の画像処理装置は、第1のユーザ入力が検出された後、操作子が仮想オブジェクトに接したと判定されるまで待った後に、上記操作開始信号を送信してもよい。その場合には、観察者側における画像認識処理の負荷をさらに低減することができる。
【0086】
また、画像処理装置間の操作開始信号及び操作終了信号の送受信は、一群の画像処理装置を管理する管理サーバを経由して行われてもよい。その場合には、共通する仮想オブジェクトを表示する画像処理装置に対してのみ管理サーバが信号を転送することにより、不要なトラフィックを排除すると共に、観察者側における画像認識処理の負荷をさらに低減することができる。
【0087】
なお、本明細書において説明した画像処理装置100及び300、並びに管理サーバ200による一連の処理は、典型的には、ソフトウェアを用いて実現される。一連の処理を実現するソフトウェアを構成するプログラムは、例えば、各装置の内部又は外部に設けられる記憶媒体に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
【0088】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0089】
100,300 画像処理装置
102 カメラ
104 HMD(表示装置)
110 入力画像取得部
130 記憶部
140 画像認識部
150 演算部
160 表示制御部
170 通信部
200 管理サーバ(情報処理装置)
S1 操作開始信号(第1の通知信号)
S2 操作終了信号(第2の通知信号)
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、プログラム及び画像処理システムに関する。
【背景技術】
【0002】
従来、実世界と仮想世界とがミックスされた環境をユーザに提供するための、MR(複合現実感:Mixed Reality)と呼ばれる技術の開発が進められている。例えば、実空間を撮影して得られる画像に仮想的なオブジェクトの画像又は追加的な情報を重畳した上でユーザに呈示するAR(拡張現実感:Augmented Reality)は、MRの一形態と言える。MRにおいては、多くの場合、ユーザが仮想世界又は仮想的なオブジェクトとインタラクションするためのインタフェースの一部が、実世界に配置される。例えば、下記特許文献1に記載されたMRシステムは、複数のユーザが実世界の物体であるコントロールボックスを操作することにより仮想的なパックを打ち合うエアホッケーゲームを提供するものである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−247602号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載されたシステムのように、複数のユーザが1つの仮想オブジェクトを共有する場合、装置間の通信の時間差又は処理の遅延等により、実世界の状態と仮想オブジェクトの状態との間に不整合が生じ得る。例えば、上記特許文献1に記載されたMRシステムでは、マスタとなるMRゲーム装置が、ユーザのヘッドマウントディスプレイ(HMD:Head Mounted Display)において撮像された入力画像を取得し、所定の処理をした後に、出力画像を各ユーザのHMDに配信している。この場合、入力画像の取得及び出力画像の配信に時間を要するため、ユーザの手の状態とHMDに表示される出力画像の状態とが一致せず、ユーザに違和感を与える結果となり易い。また、ユーザにより装着されるシースルーディスプレイに仮想オブジェクトを投影するような手法を用いる場合には、ユーザに視認される実世界の状態と、通信の遅延等を経て投影される仮想オブジェクトとが、ディスプレイ上でずれてしまう問題があった。
【0005】
そこで、本発明は、複合現実感の提供に際して実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することのできる、新規かつ改良された画像処理装置、画像処理方法、プログラム及び画像処理システムを提供しようとするものである。
【課題を解決するための手段】
【0006】
本発明のある実施形態によれば、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、を備える画像処理装置が提供される。
【0007】
かかる構成によれば、操作開始を表す第1のユーザ入力が検出された場合に、実空間を撮影した入力画像に映る操作子が認識され、認識の結果に応じて仮想オブジェクトの表示が制御されると共に、操作者側の画像処理装置から観察者側の画像処理装置へ操作開始を通知するための第1の通知信号が送信される。
【0008】
また、上記第1の通知信号は、上記仮想オブジェクトを識別するための識別データ又は上記仮想オブジェクトの位置を表す位置データを含んでもよい。
【0009】
また、上記通信部は、操作終了を表す第2のユーザ入力が検出された場合に、上記他の装置へ操作終了を通知するための第2の通知信号を送信してもよい。
【0010】
また、上記第2の通知信号は、上記演算部により算出される上記仮想オブジェクトの位置を表す位置データを含んでもよい。
【0011】
また、上記画像認識部は、上記通信部により他の装置から上記第1の通知信号が受信された場合にも、上記入力画像に映る上記操作子を認識してもよい。
【0012】
また、上記画像認識部は、上記通信部により受信された上記第1の通知信号が自装置が表示すべき仮想オブジェクトに関連しない場合には、上記操作子の認識を行わなくてもよい。
【0013】
また、上記通信部は、上記第1のユーザ入力が検出された後、上記画像認識部による上記操作子の認識の結果において上記操作子が上記仮想オブジェクトに接したと判定された場合に、上記他の装置へ上記第1の通知信号を送信してもよい。
【0014】
また、上記通信部は、上記第1の通知信号を、共通する仮想オブジェクトを表示する一群の装置を管理する情報処理装置へ送信してもよい。
【0015】
また、上記第1の通知信号は、上記仮想オブジェクトを識別するための識別データ又は上記仮想オブジェクトの位置を表す位置データを含み、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ上記情報処理装置を介して転送されてもよい。
【0016】
また、上記画像処理装置は、上記操作子を表す操作子画像を記憶している記憶部、をさらに備え、上記画像認識部は、上記記憶部に記憶されている上記操作子画像を用いて、上記入力画像に映る上記操作子を認識してもよい。
【0017】
また、本発明の別の実施形態によれば、画像処理装置における画像処理方法であって、実空間を撮影した入力画像を取得するステップと、操作開始を表す第1のユーザ入力を検出するステップと、上記画像処理装置が操作しようとする仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信するステップと、上記入力画像に映る操作子であって、上記仮想オブジェクトの操作のために用いられる当該操作子を認識するステップと、上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出するステップと、算出された表示装置の画面上の上記位置に上記仮想オブジェクトを表示させるステップと、を含む画像処理方法が提供される。
【0018】
また、本発明の別の実施形態によれば、画像処理装置を制御するコンピュータを、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、として機能させるための、プログラムが提供される。
【0019】
また、本発明の別の実施形態によれば、2つ以上の画像処理装置を含む画像処理システムであって、各画像処理装置は、実空間を撮影した入力画像を取得する入力画像取得部と、操作開始を表す第1のユーザ入力が検出された場合に、上記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と、上記画像認識部による上記操作子の認識の結果に応じて、上記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と、上記演算部により算出される表示装置の画面上の上記位置に上記仮想オブジェクトを表示させる表示制御部と、上記第1のユーザ入力が検出された場合に、上記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と、をそれぞれ備え、上記画像認識部は、上記通信部により他の装置から上記第1の通知信号が受信された場合にも、上記入力画像に映る上記操作子を認識する、画像処理システムが提供される。
【発明の効果】
【0020】
以上説明したように、本発明に係る画像処理装置、画像処理方法、プログラム及び画像処理システムによれば、複合現実感の提供に際して実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することができる。
【図面の簡単な説明】
【0021】
【図1】一実施形態に係る画像処理システムの概要を説明するための模式図である。
【図2】本発明の関連技術における画像処理について説明するための説明図である。
【図3A】実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための第1の説明図である。
【図3B】実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための第2の説明図である。
【図4】一実施形態に係る画像処理装置の構成の一例を示すブロック図である。
【図5A】一実施形態に係る操作子の一例を示す模式図である。
【図5B】一実施形態に係る操作子の他の例を示す模式図である。
【図6】オブジェクトデータの一例について説明するための説明図である。
【図7】一実施形態に係る仮想オブジェクトの表示位置算出処理の流れの一例を示すフローチャートである。
【図8A】一実施形態に係る操作開始信号について説明するための説明図である。
【図8B】一実施形態に係る操作終了信号について説明するための説明図である。
【図8C】一実施形態に係る自己位置通知信号について説明するための説明図である。
【図9】一実施形態に係る操作者側の画像処理の流れの一例を示すフローチャートである。
【図10】一実施形態に係る観測者側の画像処理の流れの一例を示すフローチャートである。
【図11】一実施形態に係る管理サーバの構成の一例を示すブロック図である。
【図12】一実施形態に係る信号転送処理の流れの一例を示すフローチャートである。
【図13】一変形例に係る画像処理システムについて説明するための模式図である。
【発明を実施するための形態】
【0022】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付すことにより重複説明を省略する。
【0023】
また、以下の順序にしたがって当該「発明を実施するための形態」を説明する。
1.システムの概要
1−1.システムの全体像
1−2.関連技術の課題
2.画像処理装置の説明
2−1.装置の構成例
2−2.処理の流れ
3.管理サーバの説明
3−1.装置の構成例
3−2.処理の流れ
4.変形例
5.まとめ
【0024】
<1.システムの概要>
[1−1.システムの全体像]
図1は、本発明の一実施形態に係る画像処理システムの概要を説明するための模式図である。図1を参照すると、画像処理装置100a及び100b、並びに管理サーバ200を含む画像処理システムが示されている。画像処理装置100aは、ユーザUaが使用する装置である。画像処理装置100aは、有線又は無線による通信接続を介して、管理サーバ200と通信することができる。画像処理装置100bは、ユーザUbが使用する装置である。画像処理装置100bもまた、有線又は無線による通信接続を介して、管理サーバ200と通信することができる。
【0025】
画像処理装置100aは、例えば、ユーザUaの頭部に装着されるカメラ102a及びHMD104aと接続される。カメラ102aは、ユーザUaの視線方向を向いて実世界R1を撮像し、一連の入力画像を画像処理装置100aへ出力する。HMD104aは、画像処理装置100aから入力される画像をユーザUaに表示する。HMD104aにより表示される画像とは、例えば、ユーザUaの視界に仮想オブジェクトV1を含む画像である。
【0026】
同様に、画像処理装置100bは、例えば、ユーザUbの頭部に装着されるカメラ102b及びHMD104bと接続される。カメラ102bは、ユーザUbの視線方向を向いて実世界R1を撮像し、一連の入力画像を画像処理装置100bへ出力する。HMD104bは、画像処理装置100bから入力される画像をユーザUbに表示する。本実施形態において、画像処理装置100a及び100bは、仮想オブジェクトV1を共有する。即ち、HMD104bにより表示される画像においても、ユーザUbの視界に仮想オブジェクトV1が含まれ得る。
【0027】
なお、本明細書において、画像処理装置100a及び100bを互いに区別する必要がない場合には、符号の末尾のアルファベットを省略することにより、画像処理装置100a及び100bを画像処理装置100と総称する。また、カメラ102a及び102b(カメラ102)、HMD104a及び104b(HMD104)、並びにその他の要素についても同様とする。また、本実施形態に係る画像処理システムに参加可能な画像処理装置100の数は、図1の例に限定されず、3つ以上であってもよい。即ち、例えば、第3のユーザが使用する第3の画像処理装置100が、画像処理システムにさらに含まれてもよい。
【0028】
管理サーバ200は、システムに参加する画像処理装置100に関する情報を管理するための情報処理装置である。例えば、管理サーバ200は、定期的に(又は変化が生じた都度)各画像処理装置100からカメラ102の位置及び姿勢を受信し、受信したデータをデータベースに保持する。そして、管理サーバ200は、1つの画像処理装置100から仮想オブジェクトV1の操作に関する信号を受信すると、仮想オブジェクトV1を共有する他の画像処理装置100へ当該信号を転送する。
【0029】
[1−2.関連技術の課題]
次に、図2、図3A及び図3Bを用いて、図1に示したような画像処理システムにおける本発明に関連する技術の課題を説明する。図2は、関連技術における典型的な画像処理について説明するための説明図である。図3A及び図3Bは、図2を用いて説明する画像処理において生じ得る実世界の状態と仮想オブジェクトの状態との間の不整合について説明するための説明図である。
【0030】
図2を参照すると、関連技術における典型的な画像処理の流れが、数字付きのボックスを用いて示されている。各ボックスに付された数字は、処理の順序を表す。即ち、関連技術において、次のような順序で画像処理が行われる:
(1)操作子を認識
(2)オブジェクト位置を決定
(3)オブジェクトID、位置を報告
(4)オブジェクトID、位置を配信
(5)仮想オブジェクトを移動
【0031】
(1)操作子を認識
まず、いずれかの画像処理装置100(図2の例では画像処理装置100a)において、入力画像に映る操作子が認識される。操作子とは、仮想オブジェクトの操作のために用いられる実世界の物体である。操作子は、ユーザの手など人体の一部であってもよく、人体以外の所定の物体であってもよい。
【0032】
(2)オブジェクト位置を決定
次に、操作子の位置(又は動き)と仮想オブジェクトの位置との関係から、仮想オブジェクトの新たな位置が決定される。例えば、操作子が仮想オブジェクトに接している状態で操作子が移動した場合には、操作子の動きに合わせて仮想オブジェクトの位置が更新され得る。
【0033】
(3)オブジェクトID、位置を報告
次に、仮想オブジェクトの新たな位置とオブジェクトID(識別子:Identifier)とが、管理サーバ200へ報告される。
【0034】
(4)オブジェクトID、位置を配信
次に、管理サーバ200により、同じ仮想オブジェクトを共有する他の画像処理装置100(図2の例では画像処理装置100b)へ、仮想オブジェクトの新たな位置とオブジェクトIDとが配信される。
【0035】
(5)仮想オブジェクトを移動
そして、同じ仮想オブジェクトを共有する他の画像処理装置100において、HMD104の画面上の仮想オブジェクトが移動される。
【0036】
なお、図2の例では、処理(1)及び(2)を画像処理装置100aが行っているが、画像処理装置100aの代わりに管理サーバ200が、画像処理装置100aから入力画像を受信した上で、処理(1)及び(2)を行ってもよい。また、管理サーバ200を配置することなく、画像処理装置100aから画像処理装置100bへ、仮想オブジェクトの新たな位置とオブジェクトIDとが直接送信される場合もある。
【0037】
このような画像処理の流れを想定すると、画像処理装置100bが仮想オブジェクトを移動させた時点において、装置間の通信の時間差及び処理の遅延を含む時間が既に経過している。その結果、例えば、カメラ102bにより撮像される画像内に仮想オブジェクトV1を重畳すると、HMD104bにより表示される画像において、操作子の状態と仮想オブジェクトV1の状態との間に不整合が生じる。
【0038】
図3A及び図3Bは、上述した問題点をより具体的に示している。このうち、図3Aは、HMD104aにより仮想オブジェクトV1の操作者であるユーザUaに向けて表示される、ある時間間隔Tを挟んだ2つのフレームの画像の例を示している。一方、図3Bは、HMD104bにより仮想オブジェクトV1の観察者であるユーザUbに向けて表示される、時間間隔Tを挟んだ2つのフレームの画像の例を示している。なお、ここでは、一例として、ユーザの手が操作子である。
【0039】
図3Aを参照すると、時刻t=0において、操作子H1が仮想オブジェクトV1aに接している。その後、時刻t=Tにおいて、操作子H1の動きに応じて、仮想オブジェクトV1aが左方向に移動している。時刻t=Tにおいても、操作子H1は、仮想オブジェクトV1aに接している。
【0040】
図3Bを参照すると、図3Aと同様、時刻t=0において、操作子H1が仮想オブジェクトV1bに接している。なお、仮想オブジェクトV1aと仮想オブジェクトV1bとは、同じオブジェクトIDを有する共通のオブジェクトである。但し、オブジェクトを表示するHMDが異なるため、ここでは便宜的に符号を使い分けている。その後、時刻t=Tにおいて、操作子H1の動きに応じて、仮想オブジェクトV1bが左方向に移動している。しかし、装置間の通信の時間差及び処理の遅延の影響から、時刻t=Tにおいて画像処理装置100bに通知されているのは、数フレーム前の仮想オブジェクトの位置である。そのため、時刻t=TにおいてHMD104bにより表示される仮想オブジェクトV1bの位置は、時刻t=TにおいてHMD104aにより表示される仮想オブジェクトV1aの位置との間にズレdを有する。しかし、時刻t=Tにおいて、カメラ102bにより撮像される操作子H1の実世界における位置は、カメラ102aにより撮像される操作子H1の位置と等しい。その結果、HMD104bにより表示される画像において、操作子H1の位置と仮想オブジェクトV1bとが整合しない。図3Bの例では、操作子H1が、仮想オブジェクトV1bに接する代わりに突き刺さった状態となっている。
【0041】
なお、このような不整合は、各HMD104がシースルーディスプレイであって、仮想オブジェクトの画像のみが各HMD104のスクリーンに投影される場合にも同様に(又はより強く)生じ得る。
【0042】
上述した実世界の状態と仮想オブジェクトの状態との間の不整合を抑制するためには、装置間の通信の時間差及び処理の遅延の影響を可能な限り低減することが求められる。そこで、次節より、複合現実感の提供に際して装置間の通信の時間差及び処理の遅延の影響を低減するための、本実施形態に係る画像処理装置100及び管理サーバ200の具体的な構成について説明する。
【0043】
<2.画像処理装置の説明>
[2−1.装置の構成例]
図4は、本実施形態に係る画像処理装置100の構成の一例を示すブロック図である。図4を参照すると、画像処理装置100は、入力画像取得部110、自己位置検出部120、記憶部130、画像認識部140、演算部150、表示制御部160、及び通信部170を備える。
【0044】
(入力画像取得部)
入力画像取得部110は、カメラ102により実空間を撮影した入力画像を取得する。そして、入力画像取得部110は、取得した入力画像を、自己位置検出部120、画像認識部140及び表示制御部160へ出力する。
【0045】
(自己位置検出部)
自己位置検出部120は、実世界におけるカメラ102の位置及び姿勢を検出する。カメラ102の位置は、例えば、実世界の絶対座標系における3次元位置により表される。カメラ102の姿勢は、例えば、回転行列に対応する四元数又はオイラー角などにより表される。自己位置検出部120は、例えば、Andrew J.Davisonによる“Real-Time Simultaneous Localization and Mapping with a Single Camera”(Proceedings of the 9th IEEE International Conference on Computer Vision Volume 2, 2003, pp.1403-1410)に記載されているSLAM技術の原理に従って、入力画像取得部110から入力される入力画像を用いてカメラ102の位置及び姿勢を検出してもよい。その代わりに、カメラ102が位置センサ(例えば、光位置センサ)及び姿勢センサ(例えば、ジャイロセンサ)を有する場合には、自己位置検出部120は、カメラ102において各センサにより検出された位置及び姿勢を取得してもよい。自己位置検出部120は、例えば、上述したいずれかの手法により検出したカメラ102の位置及び姿勢を、画像認識部140及び通信部170へ出力する。
【0046】
(記憶部)
記憶部130は、ハードディスク又は半導体メモリなどの記憶媒体を用いて、操作子画像、及びオブジェクトデータを予め記憶している。操作子画像とは、出力画像に表示される仮想オブジェクトの操作のために用いられる操作子を表す画像である。一方、オブジェクトデータとは、複合現実感においてHMD104により表示される仮想オブジェクトに関するデータである。
【0047】
図5A及び図5Bは、本実施形態に係る操作子の一例をそれぞれ示す模式図である。図5Aの例では、操作子M1aは、ユーザの手である。この場合、記憶部130は、ユーザの手を映した画像を操作子画像として予め記憶する。記憶部130は、例えば、異なる複数の方向からユーザの手を映した一群の画像を操作子画像として記憶してもよい。
【0048】
図5Bの例では、操作子M1bは、ユーザの指に装着される立方体状のマーカである。マーカの各面の中央部には空洞が開けられており、ユーザは、その空洞に指を挿入してマーカを動かすことができる。この場合、記憶部130は、マーカを映した画像を操作子画像として予め記憶する。その代わりに、例えば、マーカと当該マーカに挿入された指とを含む全体を操作子とし、それらを映した画像が操作子画像として記憶されてもよい。
【0049】
なお、操作子は、図5A及び図5Bの例に限定されず、例えば、ユーザの足又はユーザに把持される棒状の物体など、実世界に存在する人体の一部又は任意の物体であってよい。記憶部130は、画像認識部140からの要求に応じて、かかる操作子画像を画像認識部140へ出力する。
【0050】
図6は、記憶部130により記憶されるオブジェクトデータの一例について説明するための説明図である。図6を参照すると、オブジェクトデータは、オブジェクトID、形状及び位置の3つのデータ項目を有する。このうち、「オブジェクトID」は、仮想オブジェクトを一意に特定するための識別子である。図6の例では、それぞれオブジェクトID=V1、V2である2つの仮想オブジェクトについてのオブジェクトデータが示されている。「形状」は、仮想オブジェクトの形状を表すデータである。仮想オブジェクトの形状は、例えば、ポリゴンによって表現され得る。「位置」は、仮想オブジェクトの最新の位置を表す3次元座標データである。仮想オブジェクトの位置は、操作子を用いたユーザによる操作に応じて更新される。記憶部130は、演算部150からの要求に応じて、かかるオブジェクトデータを演算部150へ出力する。
【0051】
(画像認識部)
画像認識部140は、操作開始を表す第1のユーザ入力が検出された場合に、入力画像取得部110から入力される入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する。画像認識部140は、例えば、記憶部130に記憶されている操作子画像を用いて、入力画像に映る操作子を認識することができる。より具体的には、例えば、画像認識部140は、公知のパターンマッチングの手法を用いて、入力画像内の部分画像と操作子画像とを照合する。そして、画像認識部140は、入力画像内の操作子画像の検出位置と検出された大きさとに基づいて、実世界における操作子の3次元位置を認識する。ここで認識される操作子の3次元位置は、その時点のカメラ102の位置及び姿勢に対する相対的な位置である。さらに、画像認識部140は、自己位置検出部120から入力されるカメラ102の位置及び姿勢を用いて、操作子の相対的な3次元位置を実世界の絶対座標系における3次元位置に変換する。そして、画像認識部140は、変換後の操作子の位置を、演算部150へ出力する。画像認識部140は、こうした画像認識処理を、操作開始を表す第1のユーザ入力が検出された後、操作終了を表す第2のユーザ入力が検出されるまで、一連の入力画像の各フレームについて繰り返す。そして、画像認識部140は、操作終了を表す第2のユーザ入力が検出された場合には、画像認識処理を終了する。なお、画像認識部140は、例えば、操作子画像の代わりに操作子の形状を表す形状データを用いて、入力画像に映る操作子を認識してもよい。
【0052】
操作開始を表す第1のユーザ入力及び操作終了を表す第2のユーザ入力は、それぞれ、例えば、画像処理装置100に設けられる所定のボタンの押下、入力画像内のユーザの所定のジェスチャ、又はユーザによる音声入力などであってよい。
【0053】
また、画像認識部140は、後に説明する操作開始信号が通信部170により受信された場合にも、上述した画像認識処理を実行する。この場合の画像認識処理は、後に説明する操作終了信号が通信部170により受信されるまで、一連の入力画像の各フレームについて繰り返される。なお、本明細書では、第1のユーザ入力の検出から第2のユーザ入力の検出までの間の処理を操作者側の処理、操作開始信号の受信から操作終了信号の受信までの処理を観察者側の処理という。
【0054】
(演算部)
演算部150は、上記操作開始を表す第1のユーザ入力が検出された場合に、画像認識部140による操作子の認識の結果に応じて、仮想オブジェクトを表示すべきHMD104の画面上の位置を算出する。そして、演算部150は、算出した仮想オブジェクトの表示位置を表示制御部160へ出力すると共に、記憶部130により記憶されている仮想オブジェクトの位置データを更新する。演算部150は、操作子の認識の結果に応じた仮想オブジェクトの表示位置算出処理を、操作開始を表す第1のユーザ入力が検出された後、操作終了を表す第2のユーザ入力が検出されるまで、一連の入力画像の各フレームについて繰り返す。
【0055】
図7は、本実施形態に係る演算部150による仮想オブジェクトの表示位置算出処理の具体的な流れの一例を示すフローチャートである。図7を参照すると、演算部150は、まず、記憶部130から、各仮想オブジェクトのオブジェクトデータを取得する(ステップS102)。ここで取得されるオブジェクトデータには、各仮想オブジェクトの最新の位置と形状とが含まれる。次に、演算部150は、画像認識部140により認識された操作子の位置を取得する(ステップS104)。次に、演算部150は、各仮想オブジェクトの最新の位置及び形状、並びに操作子の位置に基づいて、操作子が仮想オブジェクトに接しているか否かを判定する(ステップS106)。ここで、操作子が仮想オブジェクトに接していない場合には、その後の処理はスキップされる。次に、操作子が仮想オブジェクトに接している場合には、演算部150は、操作子の位置に基づいて、仮想オブジェクトの新たな位置を算出する(ステップS108)。例えば、操作子が仮想オブジェクトに接している状態で操作子がX方向に距離Dだけ移動すると、それに応じて、仮想オブジェクトの位置もX方向に距離Dだけ移動する。次に、演算部150は、自己位置検出部120により検出されたカメラ102の位置及び姿勢に基づいて、仮想オブジェクトの新たな位置を実世界の3次元位置からHMD104の画面上の2次元位置に変換する(ステップS110)。例えば、3次元位置から画面上の2次元位置への座標の変換は、ピンホールモデルに従った次式を用いて行われ得る。
【0056】
【数1】
【0057】
式(1)において、pは仮想オブジェクトの3次元位置ベクトル、xはカメラ102の3次元位置ベクトル、Rはカメラ102の姿勢に対応する回転行列、Aはカメラ内部パラメータ、λは正規化のためのパラメータである。また、p´は仮想オブジェクトの画面上の2次元位置を表す。ここで、カメラ内部パラメータAは、カメラ102の特性に応じて、予め次式のように与えられる。
【0058】
【数2】
【0059】
ここで、fは焦点距離、θは画像軸の直交性(理想値は90°)、kuは撮像面の縦軸のスケール(実世界の絶対座標系から撮像面の座標系へのスケール変化率)、kvは撮像面の横軸のスケール、(uo,vo)は撮像面の中心位置である。
【0060】
なお、仮想オブジェクトがポリゴンにより表現される場合には、演算部150は、カメラ102の位置及び姿勢に基づいて、ポリゴンの各頂点についてHMD104の画面上の2次元位置を算出する。
【0061】
また、演算部150は、観察者側の処理として、後に説明する操作開始信号が通信部170により受信された場合にも、上述した仮想オブジェクトの表示位置算出処理を実行する。この場合の表示位置算出処理は、後に説明する操作終了信号が通信部170により受信されるまで、一連の入力画像の各フレームについて繰り返される。さらに、演算部150は、通信部170が操作終了信号を受信すると、操作終了信号に含まれる仮想オブジェクトの位置データを用いて、表示制御部160が表示している(及び記憶部130が記憶している)仮想オブジェクトの位置を補正する。これは、操作者側と観察者側とにおいて仮想オブジェクトの表示位置算出処理を並行して行った場合に残る仮想オブジェクトの位置の小さなズレを解消するための処理である。
【0062】
また、演算部150は、仮想オブジェクトが操作されていない間にも、記憶部130に記憶されている仮想オブジェクトの位置データ、並びに自己位置検出部120により検出されるカメラ102の位置及び姿勢に基づいて、仮想オブジェクトの画面上の表示位置を算出する。そして、演算部150は、算出した仮想オブジェクトの表示位置を、表示制御部160へ出力する。
【0063】
(表示制御部)
表示制御部160は、演算部150により算出されるHMD104の画面上の表示位置に、仮想オブジェクトを表示させる。例えば、表示制御部160は、入力画像取得部110から入力される入力画像に仮想オブジェクトを表すポリゴンを重畳することにより出力画像を生成し、当該出力画像をHMD104へ出力してもよい。より具体的には、表示制御部160は、例えば、演算部150により算出される仮想オブジェクトのポリゴンの各頂点の座標に基づいて、当該ポリゴンを出力画像内に描画することができる。その結果、HMD104によりユーザに向けて表示される出力画像において、操作子の動きに追随して仮想オブジェクトが移動し、拡張現実感がユーザに提供される。なお、表示制御部160は、例えば、HMD104がシースルーディスプレイである場合には、演算部150により算出される仮想オブジェクトのポリゴンの各頂点の座標に基づいて、当該ポリゴンをHMD104のスクリーン上に投影してもよい。
【0064】
(通信部)
通信部170は、上述した操作開始を表す第1のユーザ入力が検出された場合に、共通する仮想オブジェクトを表示する他の画像処理装置100へ操作開始を通知するための第1の通知信号を送信する。本明細書では、第1の通知信号を操作開始信号という。また、通信部170は、上述した操作終了を表す第2のユーザ入力が検出された場合に、共通する仮想オブジェクトを表示する他の画像処理装置100へ操作終了を通知するための第2の通知信号を送信する。本明細書では、第2の通知信号を操作終了信号という。本実施形態では、操作開始信号及び操作終了信号は、管理サーバ200を介して他の画像処理装置100へ送信される。
【0065】
図8Aは、本実施形態に係る操作開始信号について説明するための説明図である。図8Aを参照すると、操作開始信号S1は、信号種別、送信元、オブジェクトID及びオブジェクト位置という4つのフィールドを有する。「信号種別」は、当該信号が操作開始信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「オブジェクトID」は、どの仮想オブジェクトが操作されようとしているかを特定するためのフィールドである。「オブジェクトID」に複数の仮想オブジェクトのオブジェクトIDが列挙されてもよい。「オブジェクト位置」は、任意に設けられるフィールドであって、操作開始時点での仮想オブジェクトの位置を表す3次元座標データを含む。これら「オブジェクトID」又は「オブジェクト位置」は、管理サーバ200が操作開始信号の転送先とすべき画像処理装置100を判別するために用いられ得る。
【0066】
図8Bは、本実施形態に係る操作終了信号について説明するための説明図である。図8Bを参照すると、操作終了信号S2は、信号種別、送信元、オブジェクトID及びオブジェクト位置という4つのフィールドを有する。「信号種別」は、当該信号が操作終了信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「オブジェクトID」は、どの仮想オブジェクトについての操作が終了されようとしているかを特定するためのフィールドである。「オブジェクトID」に複数の仮想オブジェクトのオブジェクトIDが列挙されてもよい。「オブジェクト位置」は、操作終了時点での仮想オブジェクトの位置を表す3次元座標データを含む。これら「オブジェクトID」又は「オブジェクト位置」は、管理サーバ200が操作終了信号の転送先とすべき画像処理装置100を判別するために用いられ得る。さらに、操作終了信号S2の「オブジェクト位置」は、操作終了信号を受信した画像処理装置100が仮想オブジェクトの操作終了時点における位置を補正するために使用され得る。
【0067】
また、通信部170は、自己位置検出部120により検出されるカメラ102の位置及び姿勢を管理サーバ200へ通知するための第3の通知信号を、管理サーバ200へ定期的に(又は変化が生じた都度)送信する。本明細書では、第3の通知信号を自己位置通知信号という。
【0068】
図8Cは、本実施形態に係る自己位置通知信号について説明するための説明図である。図8Cを参照すると、自己位置通知信号S3は、信号種別、送信元、及び位置・姿勢という3つのフィールドを有する。「信号種別」は、当該信号が自己位置通知信号であることを示すためのフィールドである。「送信元」は、当該信号の送信元の画像処理装置100を特定するためのフィールドである。「位置・姿勢」は、例えば、カメラ102の絶対座標系における3次元位置と回転行列に対応する四元数とを含む。各画像処理装置100から定期的に送信されるこのような自己位置通知信号S3に基づいて、後に説明する管理サーバ200は、各画像処理装置100がどのような視界を有しているかを知ることができる。
【0069】
[2−2.処理の流れ]
(操作者側の処理)
図9は、本実施形態に係る画像処理装置100による操作者側の画像処理の流れの一例を示すフローチャートである。
【0070】
図9を参照すると、まず、画像認識部140及び演算部150において、第1のユーザ入力の検出の有無が監視される(ステップS122)。第1のユーザ入力が検出されると、ステップS124以降の操作者側の画像処理が開始される。操作者側の画像処理において、まず、通信部170により、操作開始信号S1が管理サーバ200へ送信される(ステップS124)。次に、画像認識部140により、記憶部130において記憶されている操作子画像を用いて入力画像中の操作子が認識され、操作子の位置が演算部150へ出力される(ステップS126)。次に、演算部150により、図7を用いて説明した仮想オブジェクトの表示位置算出処理が行われる(ステップS128)。そして、表示制御部160によりHMD104の画面上に表示されている仮想オブジェクトが、操作子の位置に応じて移動される(ステップS130)。次に、画像認識部140及び演算部150において、第2のユーザ入力の検出の有無が判定される(ステップS132)。ここで、第2のユーザ入力が検出されない場合には、処理はステップS126へ戻り、入力画像の次のフレームについてステップS126からステップS130までが繰り返される。一方、第2のユーザ入力が検出された場合には、通信部170により、操作終了信号S2が管理サーバ200へ送信される(ステップS134)。そして、操作者側の画像処理は終了する。
【0071】
なお、通信部170は、第1のユーザ入力が検出された後、画像認識部140による操作子の認識の結果において操作子が仮想オブジェクトに接したと判定されるまで待ってから(即ち、図7のステップS106の判定結果がYesとなってから)操作開始信号を管理サーバ200へ送信してもよい。この場合には、図9の流れと異なり、観察者側での画像処理が、操作子による実質的な仮想オブジェクトの操作の開始まで行われないこととなる。それにより、仮想オブジェクトの画面上での移動の開始が遅れる可能性がある一方、第1のユーザ入力から実質的な仮想オブジェクトの操作の開始までの間の観察者側の処理コストが低減される。
【0072】
(観察者側の処理)
図10は、本実施形態に係る画像処理装置100による観察者側の画像処理の流れの一例を示すフローチャートである。
【0073】
図10を参照すると、まず、通信部170において、操作開始信号の受信の有無が監視される(ステップS152)。操作開始信号が受信されると、ステップS154以降の観察者側の画像処理が開始される。観察者側の画像処理において、まず、画像認識部140により、記憶部130において記憶されている操作子画像を用いて入力画像中の操作子が認識され、操作子の位置が演算部150へ出力される(ステップS154)。次に、演算部150により、図7を用いて説明した仮想オブジェクトの表示位置算出処理が行われる(ステップS156)。そして、表示制御部160によりHMD104の画面上に表示されている仮想オブジェクトが、操作子の位置に応じて移動される(ステップS158)。次に、通信部170において、操作終了信号の受信の有無が判定される(ステップS160)。ここで、操作終了信号が受信されない場合には、処理はステップS154へ戻り、入力画像の次のフレームについてステップS154からステップS158までが繰り返される。一方、操作終了信号が受信された場合には、演算部150により、仮想オブジェクトの位置が補正される(ステップS162)。そして、観察者側の画像処理は終了する。
【0074】
<3.管理サーバの説明>
[3−1.装置の構成例]
図11は、本実施形態に係る管理サーバ200の構成の一例を示すブロック図である。図12を参照すると、管理サーバ200は、通信部210、記憶部220及びユーザ管理部230を備える。
【0075】
(通信部)
通信部210は、有線又は無線による通信接続を介して、各画像処理装置100の通信部170との間で信号を送受信する。管理サーバ200の通信部210と各画像処理装置100の通信部170との間で送受信される信号には、上述した操作開始信号、操作終了信号及び自己位置通知信号が含まれる。
【0076】
(記憶部)
記憶部220は、ハードディスク又は半導体メモリなどの記憶媒体を用いて、共通する仮想オブジェクトを表示する一群の画像処理装置100を管理するデータベースを保持する。記憶部220により保持されるデータベースには、例えば、自己位置通知信号を用いて定期的に収集される各画像処理装置100のカメラ102の位置及び姿勢に関するデータが含まれる。また、記憶部220により保持されるデータベースには、例えば、各画像処理装置100により表示され得る仮想オブジェクトのオブジェクトIDが含まれてもよい。
【0077】
(ユーザ管理部)
ユーザ管理部230は、通信部210により自己位置通知信号が受信されると、当該自己位置通知信号の送信元の画像処理装置100について記憶部220が保持する位置及び姿勢に関するデータを更新する。また、通信部210により操作開始信号又は操作終了信号が受信されると、ユーザ管理部230は、当該信号の送信元と共通する仮想オブジェクトを表示している他の画像処理装置100へ、操作開始信号又は操作終了信号を転送させる。ユーザ管理部230は、例えば、操作開始信号又は操作終了信号に含まれるオブジェクトIDと記憶部220のデータベースにおいて関連付けられている画像処理装置100を、各信号の転送先の装置として決定してもよい。その代わりに、ユーザ管理部230は、例えば、操作開始信号又は操作終了信号に示されている仮想オブジェクトの位置がカメラ102の視界に含まれると判定される画像処理装置100を、各信号の転送先の装置として決定してもよい。
【0078】
[3−2.処理の流れ]
図12は、本実施形態に係る管理サーバ200による信号転送処理の流れの一例を示すフローチャートである。
【0079】
図12を参照すると、まず、通信部210において、操作開始信号又は操作終了信号の受信の有無が監視される(ステップS202)。ここで、操作開始信号又は操作終了信号が受信された場合には、処理はステップS204へ進む。次に、ユーザ管理部230は、記憶部220から、各画像処理装置100の状態を取得する(ステップS204)。ここで取得される各画像処理装置100の状態には、例えば、各画像処理装置100が表示している仮想オブジェクトのオブジェクトID、又は各画像処理装置100のカメラ102の位置及び姿勢が含まれ得る。次に、ユーザ管理部230は、仮想オブジェクトを共有する他の画像処理装置100(操作開始信号又は操作終了信号の送信元以外の装置)が存在するか否かを判定する(ステップS206)。ここで、仮想オブジェクトを共有する他の画像処理装置100が存在しない場合には、ステップS208はスキップされる。一方、仮想オブジェクトを共有する他の画像処理装置100が存在する場合には、通信部210は、当該他の画像処理装置100へ、操作開始信号又は操作終了信号を転送する(ステップS208)。そして、管理サーバ200による信号転送処理は終了する。
【0080】
<4.変形例>
図13は、本実施形態の一変形例に係る画像処理システムについて説明するための模式図である。図13を参照すると、画像処理装置300a、300b及び300cを含む画像処理システムが示されている。画像処理装置300a、300b及び300cは、それぞれ、ユーザUa、Ub及びUcが使用する装置である。これら装置は、有線又は無線による通信接続を介して相互に通信することができる。
【0081】
画像処理装置300a、300b及び300cは、典型的には、図4を用いて説明した画像処理装置100と同等の構成を有する。但し、画像処理装置300a、300b及び300cの通信部170は、管理サーバ200を介することなく、操作開始信号及び操作終了信号を直接送受信する。そして、例えば、通信部170により操作開始信号が受信されると、当該信号の送信元と共通する仮想オブジェクトを自装置が表示しようとしている場合にのみ、画像認識部140による操作子の認識が行われる。この場合の操作子の認識の要否の判定は、例えば、操作開始信号に含まれる仮想オブジェクトのオブジェクトID又は位置データに基づいて行われる。
【0082】
例えば、図13の例において、画像処理装置300aと300bとは、仮想オブジェクトV1を共有している。即ち、画像処理装置300aのHMD104a及び画像処理装置300bのHMD104bは、共に仮想オブジェクトV1を表示し得る。一方、画像処理装置300cは、仮想オブジェクトV1を共有しない。その代わりに、画像処理装置300cのHMD104cは、異なる仮想オブジェクトV2を表示し得る。このような例において、ユーザUaが仮想オブジェクトV1の操作者であり、例えばユーザUaが画像処理装置300aのボタン106aを押下することにより仮想オブジェクトV1の操作を開始したものとする。そうすると、画像処理装置300aは、第1のユーザ入力を検出し、操作開始信号S1を画像処理装置300b及び画像処理装置300cへ送信する。かかる操作開始信号S1には、例えば、仮想オブジェクトV1のオブジェクトID又は位置データが含まれる。画像処理装置300bは、操作開始信号S1を受信すると、当該信号に含まれるオブジェクトID又は位置データに基づいて、自装置が表示しようとしている仮想オブジェクトV1について操作が開始されることを認識する。その結果、画像処理装置300bにおいても、画像認識による操作子(例えばユーザUaの手又はマーカ)の追跡が開始される。一方、画像処理装置300cは、操作開始信号S1に含まれるオブジェクトID又は位置データに基づいて、当該信号が自装置が表示しようとしている仮想オブジェクトとは関連しないことを認識する。その結果、画像処理装置300cは、画像処理装置300aから受信した操作開始信号S1を無視する。
【0083】
<5.まとめ>
ここまで、図1〜図13を用いて、本発明の一実施形態及びその変形例について説明した。本実施形態によれば、操作開始を表す第1のユーザ入力が検出された場合に、操作者側の画像処理装置において、実空間を撮影した入力画像に映る操作子が認識され、認識の結果に応じて仮想オブジェクトの表示が制御される。また、操作者側の画像処理装置から観察者側の画像処理装置へ操作開始信号が送信される。それにより、観察者側の画像処理装置も、実空間を撮影した入力画像に映る操作子を認識し、認識の結果に応じて仮想オブジェクトの表示を制御することができる。従って、操作者側と観察者側とで並行して画像認識による操作子の追跡が行われるため、追跡結果の伝送による遅延が生じることがない。また、操作開始信号に仮想オブジェクトを識別するためのオブジェクトID又は仮想オブジェクトの位置データを含めることにより、仮想オブジェクトを共有しない画像処理装置においては、不必要な画像認識処理の実行を避けることができる。また、操作終了を表す第2のユーザ入力が検出された場合には、操作者側の画像処理装置から観察者側の画像処理装置へ操作終了信号が送信される。それにより、仮想オブジェクトの操作が行われていない間、いずれの画像処理装置も画像認識処理を実行しなくてよい。このように、本実施形態によれば、操作者側と観察者側とで並行して画像認識による操作子の追跡が行われることに加えて、画像認識処理が稼動するタイミングが装置間で交換される信号に基づいて制御されるため、複合現実感の提供に際して、処理の負荷を効果的に低減しながら、実世界の状態と仮想オブジェクトの状態との間の不整合を抑制することができる。
【0084】
また、本実施形態によれば、操作者側の画像処理装置から観察者側の画像処理装置へ送信される操作終了信号は、操作終了時点での仮想オブジェクトの位置を表す位置データを含む。それにより、操作者側の画像処理装置による操作子の追跡結果と観察者側の画像処理装置による操作子の追跡結果との間に一時的に誤差が生じた場合にも、観察者側の画像処理装置において仮想オブジェクトの位置を補正することができる。
【0085】
また、操作者側の画像処理装置は、第1のユーザ入力が検出された後、操作子が仮想オブジェクトに接したと判定されるまで待った後に、上記操作開始信号を送信してもよい。その場合には、観察者側における画像認識処理の負荷をさらに低減することができる。
【0086】
また、画像処理装置間の操作開始信号及び操作終了信号の送受信は、一群の画像処理装置を管理する管理サーバを経由して行われてもよい。その場合には、共通する仮想オブジェクトを表示する画像処理装置に対してのみ管理サーバが信号を転送することにより、不要なトラフィックを排除すると共に、観察者側における画像認識処理の負荷をさらに低減することができる。
【0087】
なお、本明細書において説明した画像処理装置100及び300、並びに管理サーバ200による一連の処理は、典型的には、ソフトウェアを用いて実現される。一連の処理を実現するソフトウェアを構成するプログラムは、例えば、各装置の内部又は外部に設けられる記憶媒体に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
【0088】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0089】
100,300 画像処理装置
102 カメラ
104 HMD(表示装置)
110 入力画像取得部
130 記憶部
140 画像認識部
150 演算部
160 表示制御部
170 通信部
200 管理サーバ(情報処理装置)
S1 操作開始信号(第1の通知信号)
S2 操作終了信号(第2の通知信号)
【特許請求の範囲】
【請求項1】
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
を備える画像処理装置。
【請求項2】
前記第1の通知信号は、前記仮想オブジェクトを識別するための識別データ又は前記仮想オブジェクトの位置を表す位置データを含む、請求項1に記載の画像処理装置。
【請求項3】
前記通信部は、操作終了を表す第2のユーザ入力が検出された場合に、前記他の装置へ操作終了を通知するための第2の通知信号を送信する、請求項1又は請求項2に記載の画像処理装置。
【請求項4】
前記第2の通知信号は、前記演算部により算出される前記仮想オブジェクトの位置を表す位置データを含む、請求項3に記載の画像処理装置。
【請求項5】
前記画像認識部は、前記通信部により他の装置から前記第1の通知信号が受信された場合にも、前記入力画像に映る前記操作子を認識する、請求項1〜4のいずれか1項に記載の画像処理装置。
【請求項6】
前記画像認識部は、前記通信部により受信された前記第1の通知信号が自装置が表示すべき仮想オブジェクトに関連しない場合には、前記操作子の認識を行わない、請求項5に記載の画像処理装置。
【請求項7】
前記通信部は、前記第1のユーザ入力が検出された後、前記画像認識部による前記操作子の認識の結果において前記操作子が前記仮想オブジェクトに接したと判定された場合に、前記他の装置へ前記第1の通知信号を送信する、請求項1に記載の画像処理装置。
【請求項8】
前記通信部は、前記第1の通知信号を、共通する仮想オブジェクトを表示する一群の装置を管理する情報処理装置へ送信する、請求項1に記載の画像処理装置。
【請求項9】
前記第1の通知信号は、前記仮想オブジェクトを識別するための識別データ又は前記仮想オブジェクトの位置を表す位置データを含み、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ前記情報処理装置を介して転送される、請求項8に記載の画像処理装置。
【請求項10】
前記画像処理装置は、
前記操作子を表す操作子画像を記憶している記憶部、
をさらに備え、
前記画像認識部は、前記記憶部に記憶されている前記操作子画像を用いて、前記入力画像に映る前記操作子を認識する、
請求項1〜9のいずれか1項に記載の画像処理装置。
【請求項11】
画像処理装置における画像処理方法であって:
実空間を撮影した入力画像を取得するステップと;
操作開始を表す第1のユーザ入力を検出するステップと;
前記画像処理装置が操作しようとする仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信するステップと;
前記入力画像に映る操作子であって、前記仮想オブジェクトの操作のために用いられる当該操作子を認識するステップと;
前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出するステップと;
算出された表示装置の画面上の前記位置に前記仮想オブジェクトを表示させるステップと;
を含む画像処理方法。
【請求項12】
画像処理装置を制御するコンピュータを:
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
として機能させるための、プログラム。
【請求項13】
2つ以上の画像処理装置を含む画像処理システムであって、
各画像処理装置は:
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
をそれぞれ備え、
前記画像認識部は、前記通信部により他の装置から前記第1の通知信号が受信された場合にも、前記入力画像に映る前記操作子を認識する、
画像処理システム。
【請求項1】
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
を備える画像処理装置。
【請求項2】
前記第1の通知信号は、前記仮想オブジェクトを識別するための識別データ又は前記仮想オブジェクトの位置を表す位置データを含む、請求項1に記載の画像処理装置。
【請求項3】
前記通信部は、操作終了を表す第2のユーザ入力が検出された場合に、前記他の装置へ操作終了を通知するための第2の通知信号を送信する、請求項1又は請求項2に記載の画像処理装置。
【請求項4】
前記第2の通知信号は、前記演算部により算出される前記仮想オブジェクトの位置を表す位置データを含む、請求項3に記載の画像処理装置。
【請求項5】
前記画像認識部は、前記通信部により他の装置から前記第1の通知信号が受信された場合にも、前記入力画像に映る前記操作子を認識する、請求項1〜4のいずれか1項に記載の画像処理装置。
【請求項6】
前記画像認識部は、前記通信部により受信された前記第1の通知信号が自装置が表示すべき仮想オブジェクトに関連しない場合には、前記操作子の認識を行わない、請求項5に記載の画像処理装置。
【請求項7】
前記通信部は、前記第1のユーザ入力が検出された後、前記画像認識部による前記操作子の認識の結果において前記操作子が前記仮想オブジェクトに接したと判定された場合に、前記他の装置へ前記第1の通知信号を送信する、請求項1に記載の画像処理装置。
【請求項8】
前記通信部は、前記第1の通知信号を、共通する仮想オブジェクトを表示する一群の装置を管理する情報処理装置へ送信する、請求項1に記載の画像処理装置。
【請求項9】
前記第1の通知信号は、前記仮想オブジェクトを識別するための識別データ又は前記仮想オブジェクトの位置を表す位置データを含み、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ前記情報処理装置を介して転送される、請求項8に記載の画像処理装置。
【請求項10】
前記画像処理装置は、
前記操作子を表す操作子画像を記憶している記憶部、
をさらに備え、
前記画像認識部は、前記記憶部に記憶されている前記操作子画像を用いて、前記入力画像に映る前記操作子を認識する、
請求項1〜9のいずれか1項に記載の画像処理装置。
【請求項11】
画像処理装置における画像処理方法であって:
実空間を撮影した入力画像を取得するステップと;
操作開始を表す第1のユーザ入力を検出するステップと;
前記画像処理装置が操作しようとする仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信するステップと;
前記入力画像に映る操作子であって、前記仮想オブジェクトの操作のために用いられる当該操作子を認識するステップと;
前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出するステップと;
算出された表示装置の画面上の前記位置に前記仮想オブジェクトを表示させるステップと;
を含む画像処理方法。
【請求項12】
画像処理装置を制御するコンピュータを:
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
として機能させるための、プログラム。
【請求項13】
2つ以上の画像処理装置を含む画像処理システムであって、
各画像処理装置は:
実空間を撮影した入力画像を取得する入力画像取得部と;
操作開始を表す第1のユーザ入力が検出された場合に、前記入力画像に映る操作子であって、仮想オブジェクトの操作のために用いられる当該操作子を認識する画像認識部と;
前記画像認識部による前記操作子の認識の結果に応じて、前記仮想オブジェクトを表示すべき表示装置の画面上の位置を算出する演算部と;
前記演算部により算出される表示装置の画面上の前記位置に前記仮想オブジェクトを表示させる表示制御部と;
前記第1のユーザ入力が検出された場合に、前記仮想オブジェクトと共通する仮想オブジェクトを表示する他の装置へ操作開始を通知するための第1の通知信号を送信する通信部と;
をそれぞれ備え、
前記画像認識部は、前記通信部により他の装置から前記第1の通知信号が受信された場合にも、前記入力画像に映る前記操作子を認識する、
画像処理システム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−175439(P2011−175439A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−38777(P2010−38777)
【出願日】平成22年2月24日(2010.2.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願日】平成22年2月24日(2010.2.24)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]