(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】拡張現実表示装置及び拡張現実表示方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20240719BHJP
G06F 3/04842 20220101ALI20240719BHJP
【FI】
G06T19/00 600
G06F3/04842
(21)【出願番号】P 2023036556
(22)【出願日】2023-03-09
(62)【分割の表示】P 2020558687の分割
【原出願日】2018-12-03
【審査請求日】2023-03-09
(73)【特許権者】
【識別番号】000005810
【氏名又は名称】マクセル株式会社
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】川前 治
(72)【発明者】
【氏名】奥 万寿男
【審査官】岡本 俊威
(56)【参考文献】
【文献】特開2012-168798(JP,A)
【文献】特表2014-535112(JP,A)
【文献】特開2018-147151(JP,A)
【文献】特開2008-046750(JP,A)
【文献】特開2014-131094(JP,A)
【文献】特開2003-141574(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
G06F 3/048- 3/04895
(57)【特許請求の範囲】
【請求項1】
ユーザが視認する背景映像に重ねて拡張現実オブジェクト(以下、ARオブジェクト)を表示する拡張現実表示方法であって、
前記背景映像を撮影し、撮影した前記背景映像から現実物体を認識するステップと、
前記背景映像内の前記現実物体までの距離を測定するステップと、
前記背景映像の撮影位置と撮影方向を検知するステップと、
認識した前記現実物体に所定の前記ARオブジェクトを紐付けするステップと、
前記現実物体が移動したことを検知することにより、その物体が移動可能な物体であると認識するステップと、
紐付けされた前記ARオブジェクトの映像を表示するステップと、を備え、
前記現実物体に前記ARオブジェクトを紐付けするステップでは、先に前記現実物体を選択して次にこれに紐付けする前記ARオブジェクトを選択する第1の手順と、先に前記ARオブジェクトを選択して次にこれを紐付けする前記現実物体を選択する第2の手順とがあり、
前記第1の手順と前記第2の手順は、ユーザにより選択可能であり、
前記ARオブジェクトの映像を表示するステップでは、前記ARオブジェクトが紐付けされた前記現実物体の位置が移動した場合には、前記現実物体の現在の位置に合わせて前記ARオブジェクトを配置することを特徴とする拡張現実表示方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、背景映像に重ねて拡張現実オブジェクト(以下、AR(Augmented Reality)オブジェクト)を表示する拡張現実表示装置及び拡張現実表示方法に関する。
【背景技術】
【0002】
ヘッドマウントディスプレイ(以下、HMD)などの拡張現実表示装置(AR表示装置)は、カメラで撮影した背景映像(現実空間)にCG(Computer Graphics)等で作成したARオブジェクトを重ねて表示するもので、ゲーム表示や保守作業等のコンテンツ表示の分野で用いられている。その際ARオブジェクトを付与するために、ARトリガーあるいはマークと呼ばれる映像をカメラで背景と同時に撮影して、ARトリガーを手掛かりにARオブジェクトを背景映像に合成する。あるいは、カメラ映像から特徴点を抽出して画像認識を行い、特定の物体にARオブジェクトを付与するマークレスARと呼ばれる手法も知られている。
【0003】
また、ARオブジェクトをどのタイミングで表示するかについて、以下の提案がある。特許文献1では、仮想空間(仮想物体)を観察している観察者の位置姿勢、観察条件を記録し、その後、仮想空間中に仮想窓を配置し、仮想窓と視点との位置姿勢関係が規定条件を満たすか否かを判断する。そして、規定条件を満たすとき、記録時の位置姿勢、観察条件を復元した仮想空間(仮想物体)の画像を出力することが開示されている。特許文献2では、現実空間内にて移動可能な現実物体に追従して表示される仮想オブジェクトの位置と、仮想空間又は現実空間における他の物体との距離を計算する。そして、その距離が閾値以下となった場合、仮想オブジェクトの画像、他の物体の少なくとも一方における、一部又は全部の透明度を制御することが開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2007-188332号公報
【文献】特開2015-143976号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
HMDを装着しARオブジェクトを空間に配置する際に、ユーザはその空間内の物体(例えば家具)を認識し、ARオブジェクトはその空間内における絶対的な座標とともに配置される。しかしながら、後日、その空間にてARオブジェクトを再現する際に、空間内の物体(家具)の配置が異なっている場合がある。その場合には、現在の空間を別の空間と認識されたり、以前の配置と前後の距離関係が異なったりすることで、ARオブジェクトを適切な位置に配置できなくなる。その結果、これを観察するユーザに違和感を与えたりユーザを混乱させたりするという課題がある。
【0006】
前記特許文献1では、移動する物体を対象としたARオブジェクトの配置については考慮されていない。また前記特許文献2では、移動する物体を対象としているが、物体と仮想オブジェクトとの距離が近接したときに仮想オブジェクトを表示するものであるから、物体の配置が変わったような場合には仮想オブジェクトを表示することができなくなる。
【0007】
上記の課題を鑑み、本発明の目的は、移動可能な物体を含めて物体の現在の位置に合わせてARオブジェクトを適切に表示する拡張現実表示装置および拡張現実表示方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明の拡張現実表示装置は、背景映像を撮影するカメラと、背景映像内の現実物体までの距離を測定する測距センサと、カメラの位置と撮影方向を検知する位置・方位センサと、カメラで撮影した背景映像から現実物体を認識し、認識した現実物体に所定のARオブジェクトを紐付けするコントローラと、紐付けされたARオブジェクトの映像を表示する表示部と、紐付けされた現実物体とARオブジェクトのデータを記憶するメモリと、を備える。ここにコントローラは、測距センサの測定結果から、現実物体が移動可能なものであるかどうかを判断し、ARオブジェクトが紐付けされた現実物体の位置が移動した場合には、現実物体の現在の位置に合わせてARオブジェクトを配置する。
【0009】
さらに本発明の拡張現実表示方法は、背景映像を撮影し、撮影した背景映像から現実物体を認識するステップと、背景映像内の現実物体までの距離を測定するステップと、背景映像の撮影位置と撮影方向を検知するステップと、認識した現実物体に所定のARオブジェクトを紐付けするステップと、現実物体が移動したことを検知することにより、その物体が移動可能な物体であると認識するステップと、紐付けされたARオブジェクトの映像を表示するステップと、を備える。ここにARオブジェクトの映像を表示するステップでは、ARオブジェクトが紐付けされた現実物体の位置が移動した場合には、現実物体の現在の位置に合わせてARオブジェクトを配置する。
【発明の効果】
【0010】
本発明によれば、移動可能な物体を含めて物体の現在の位置に合わせてARオブジェクトを適切に表示することができ、これを観察するユーザに違和感を与えることなく、ユーザは快適に観察することができる。
【図面の簡単な説明】
【0011】
【
図1A】実施例1に係る拡張現実表示装置(AR表示装置)の外観を示す図。
【
図1B】ユーザがAR表示装置を装着している状態を示す図
【
図3B】ARオブジェクトを合成した表示映像の例を示す図。
【
図3C】可動物体が移動した場合の表示映像の例を示す図。
【
図3D】現実空間に衝立を追加した場合の表示映像の例を示す図。
【
図4】自然風景にARオブジェクトを配置した表示映像の例を示す図。
【
図5A】ユーザの視線方向と背景物体の認識の仕方を説明する図。
【
図5B】ユーザの視線方向が符号26aの方向の時の認識の仕方を示す図。
【
図5C】ユーザの視線方向が符号26bの方向の時の認識の仕方を示す図。
【
図6】移動可能なARオブジェクトの表示例を示す図。
【
図7】視線に連動するARオブジェクトの表示例を示す図。
【
図9】基準点と移動履歴処理881のフローを示す図。
【
図12A】ARオブジェクト処理884(その1)のフローを示す図。
【
図12B】ARオブジェクト処理884(その2)のフローを示す図。
【
図13】撮影物体グループ処理885のフローを示す図。
【
図14】表示映像生成処理886のフローを示す図。
【
図15A】ARオブジェクト処理884におけるユーザ操作の具体例を示す図。
【
図15B】ARオブジェクト処理884におけるユーザ操作の具体例を示す図。
【
図16】ヘッダデータのデータテーブルの例を示す図。
【
図17】基準点と移動履歴データ891のデータテーブルの例を示す図。
【
図18A】撮影物体データ892のデータテーブルの例を示す図。
【
図18B】撮影物体データ892のデータテーブルの例を示す図。
【
図18C】撮影物体データ892のデータテーブルの例を示す図。
【
図19】背景物体データ893のデータテーブルの例を示す図。
【
図20】ARオブジェクトデータ894のデータテーブルの例を示す図。
【
図21】撮影物体グループデータ895のデータテーブルの例を示す図。
【
図22】実施例2に係る拡張現実表示装置(AR表示装置)の外観を示す図。
【
図23】AR表示装置の内部構成を示すブロック図。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について図面を参照しながら説明する。なお、拡張現実表示装置のことを、簡単のために「AR表示装置」とも呼び、拡張現実表示装置を使用して拡張現実(AR)を体験する人を「ユーザ」と呼ぶことにする。
【実施例1】
【0013】
図1Aは、実施例1に係る拡張現実表示装置(AR表示装置)の外観を示す図である。AR表示装置1は、カメラ2、測距センサ3、位置・方位センサ4、3D(3次元)プロジェクタ5、透過型スクリーン6、シャッタ付きメガネ7、コントローラ8、スピーカ9a,9b、ホルダ10a,10bを備える。
【0014】
図1Bは、ユーザがAR表示装置を装着している状態を示す図である。ユーザ100は、ホルダ10a,10bにて、HMDであるAR表示装置1を自身の頭部に装着する。
【0015】
装置内の各部の説明を行う。3Dプロジェクタ(表示部)5は、3DのARオブジェクトの映像、すなわち左目で視認する映像と右目で視認する映像とを、交互に透過型スクリーン6に投射して表示する。透過型スクリーン6の手前にあるシャッタ付メガネ7は、3Dプロジェクタ5の左右映像の切り替え動作に同期して、左右交互に映像を透過させる。これによりユーザ100は、前方の風景や現実物体を透過型スクリーン6を通して見ることができるとともに、3Dプロジェクタ5にて投射される3DのARオブジェクトを透過型スクリーン6上で合成して視認することができる。視認される合成された映像を「表示映像」とも呼ぶことにする。
【0016】
カメラ2は、ユーザ100の頭部前方(ユーザの視線方向)を撮影するように取り付けられている。測距センサ3は、カメラ2の撮影映像が捉える現実物体までの距離を測定する。その測定方式は、TOF(Time of Flight)センサのように2次元的に光線を照射してその飛行時間から距離を計測する方式や、後述する実施例2のように、2つのカメラの視差情報から距離を算出する方式でもよい。位置・方位センサ4は、AR表示装置1の位置と方位、すなわちユーザ100の位置の移動や視線方向を検知する。
【0017】
コントローラ8は、カメラ2からの撮影映像、測距センサ3からの距離データ、位置・方位センサ4からの位置・方位データを取り込み、内部のメモリやCPUに供給する。また、3Dプロジェクタ5で投射する映像やスピーカ9a,9bに出力する音を作成する。さらにシャッタ付メガネ7の駆動信号を生成し、3Dプロジェクタ5で投射するARオブジェクトの左右映像に同期して、左右メガネの透過を切り替えて、ユーザ100に3D映像を提供する。
【0018】
またコントローラ8は、ユーザ100とのユーザインターフェースを含む。コントローラ8をスマートフォンのようなデバイスで実現する場合には、ユーザインターフェースはタッチセンサを内蔵した平面パネルを利用できる。
【0019】
図2は、AR表示装置1の内部構成を示すブロック図である。
図1A,
図1Bと同一のものには同一の符号を付している。コントローラ8の内部(破線で示す)は、特徴抽出処理部81、距離算出処理部82、移動検知処理部83、通信部84、CPU85、RAM86、画像RAM87、プログラムフラッシュROM(P-FROM)88、データフラッシュROM(D-FROM)89と、さらにユーザ操作入力部90を備える。
【0020】
特徴抽出処理部81は、カメラ2からの撮影映像に対し、現実物体の輪郭(エッジ)を抽出し、輪郭の変曲点や頂点を特徴点とする処理を行う。距離算出処理部82は、測距センサ3での計測データをもとに、特徴点までの距離を算出する。移動検知処理部83は、位置・方位センサ4からの計測データをもとに、AR表示装置1の位置と移動量、及びカメラ2の撮影方向を求め、すなわちこれが、ユーザ100の位置と移動量、視線方向となる。
【0021】
プログラムフラッシュROM88には、各種の処理プログラムが格納されている。これには、全体制御処理880、基準点と移動履歴処理881、撮影物体処理882、背景物体処理883、ARオブジェクト処理884、撮影物体グループ処理856、表示映像生成処理886が含まれる。これらの処理プログラムは、RAM86に展開されてCPU85で実行する。また通信部84は、AR表示装置1を外部ネットワークに接続し、外部ネットワークに繋がるサーバ等によって、AR表示装置1の処理の一部を担わせることができる。
【0022】
さらにデータフラッシュROM89には、これら処理プログラムを実行する過程及び結果で発生するデータが格納される。すなわち、基準点と移動履歴データ891、撮影物体データ892、背景物体データ893、ARオブジェクトデータ894、撮影物体グループデータ895が含まれる。ユーザがAR表示を再現して体験したい場合に、これらの格納しているデータを読み出すことによって再現可能となる。
【0023】
なお、プログラムフラッシュROM88とデータフラッシュROM89は、図示したように別々のメモリ媒体で構成してもよいし、1つのメモリ媒体で構成してもよい。さらには2つ以上のメモリ媒体であってもよく、フラッシュROM以外の不揮発性メモリ媒体であってもよい。
【0024】
表示映像生成処理886で生成する映像データ(ARオブジェクト)は、画像RAM87に格納し、画像RAM87から読み出して3Dプロジェクタ5で投射する。また、ユーザ操作入力部90ではタッチセンサによりユーザ入力を受け付け、3Dプロジェクタ5で表示する制御画面によってAR表示装置1を制御する。
【0025】
図3A~
図3Dでは、背景映像にARオブジェクトを配置するまでの処理を、具体的な表示映像の例で説明する。
【0026】
図3Aは、カメラ2で撮影した映像の例を示す。すなわち、ユーザが透過型スクリーン6を通して視認する現実風景である。カメラ2は部屋の内部を撮影しており、部屋の中は現実物体として、左側壁11、右側壁12、正面壁13、床14で囲われており、エアコン15、窓16、テーブル17、2脚の椅子18、19などが存在する。カメラの撮影映像に対し、特徴抽出処理部81は、撮影された映像の中の物体の輪郭から特徴点を抽出する。輪郭を構成する特徴点の集合は、CPU85に送られ、物体が何であるかを識別する。その際、通信部84を介して外部サーバの映像データベースと照合することで、物体の識別を行ってもよい。
【0027】
一方、測距センサ3と距離算出処理部82により、部屋内の各物体までの距離を算出し、現実空間内の見取り図を作成する。そして、特徴抽出処理部81で抽出した特徴点には、距離算出処理部82で算出した距離データを組み合わせる。さらに、位置・方位センサ4と移動検知処理部83により、AR表示装置1がどの位置(座標)でどの方向を向いた状態で撮影したものかを記録しておく。
【0028】
識別された現実物体は、撮影物体処理882および背景物体処理883により、「撮影物体」または「背景物体」に区別して登録する。撮影物体は、特有の物体形状を有し距離データが相対的に近くに位置するもので、本例では、エアコン15、窓16、テーブル17、椅子18,19が相当する。一方、背景物体は、例えば平面以外の特有の物体形状を有していなかったり、距離データが最遠点を含んだりするもので、本例では、左側壁11、右側壁12、正面壁13、床14が相当する。つまり、背景物体は、カメラ撮影映像の背景を構成する物体である。
【0029】
また、撮影物体及び背景物体について、位置が固定されて動かない状態か、移動して位置が変わった状態かを判断して、現在の位置を登録する。本例では、エアコン15、窓16、左側壁11、右側壁12、正面壁13、床14は位置が固定される物体である。一方、テーブル17、椅子18,19などは、レイアウト(模様)変え等によって位置が変わる可動物体である。可動物体については、移動後の位置データを取得し、移動後の位置に合わせてARオブジェクトを配置する。
【0030】
図3Bは、背景映像とARオブジェクトを合成した表示映像の例である。部屋内の現実物体11~19の他にARオブジェクト20~23が追加されており、ユーザはAR表示装置1を用いてこのような表示画像を視認することができる。
【0031】
ARオブジェクトとして、カーテンオブジェクト20は窓16に配置されている。その他、時計オブジェクト21は右側壁12に、花瓶オブジェクト22はテーブル17に、ぬいぐるみオブジェクト23は椅子18に配置されている。
【0032】
このようなARオブジェクトの配置は、ユーザの操作に基づくARオブジェクト処理884により決定される。この操作、処理を「紐付け操作」、「紐付け処理」という。すなわち紐付け処理では、
図3Aのカメラ映像から作成した現実空間の見取り図をベースとし、AR表示装置1の現在位置を考慮して、各ARオブジェクトを配置する座標を決める。この時、ARオブジェクトの配置情報(紐付け情報)では、どの物体に関連付けるかを指定するだけでなく、物体のどの部分に配置するか指定するため、物体の特定の特徴点にオフセット距離を与えて位置決めする。
【0033】
例えば、カーテンオブジェクト20を窓16のどの位置に貼り付けるか、花瓶オブジェクト22をテーブル17のどの位置に置くか、などを指定する。さらに、ぬいぐるみオブジェクト23を椅子18に配置するとき、ぬいぐるみオブジェクト23の姿勢を椅子18の方向に合わせて配置する。また、物体に接触して配置するだけでなく、空間に浮遊させて配置する場合もある。これらの関連付けの状況(紐付け情報)を数値パラメータで表現し、ARオブジェクトの位置情報と一緒にデータフラッシュROM89に記憶する。
【0034】
本実施例の特徴として、テーブル17や椅子18のような可動物体の上に置かれたARオブジェクト(花瓶オブジェクト22やぬいぐるみオブジェクト23)は、その可動物体が移動した場合には、その可動物体との位置関係を保ったまま配置する。可動物体が回転した場合には、ARオブジェクトも同じ角度だけ回転して、可動物体に対して同じ姿勢を保つように配置する。物体の移動によってARオブジェクトとの前後関係が変わった場合は、移動後の配置では、隠れるARオブジェクトの部分が見えないようにマスクする。これらの表示制御処理により、ユーザに違和感を与えないように表示している。
【0035】
次に、本実施例における特徴的な表示制御について述べる。
図3Cは、
図3Bの表示映像の後で、可動物体である椅子18が例えば人の手によって移動した場合の表示を示す。移動後の椅子18’には、ARオブジェクトであるぬいぐるみオブジェクト23が配置されている。その際、椅子18’は移動したことが検知されているので、これに紐付けされたぬいぐるみオブジェクト23は、椅子18’との位置関係を保ったまま移動する。また、椅子18’が回転した場合には、ぬいぐるみオブジェクト23も同様に回転が施される結果、椅子18’に対する姿勢を保ったまま配置される。もし、椅子18がカメラ撮影映像の範囲外に移動された場合には、これに紐付けられたぬいぐるみオブジェクト23も表示映像から外れることになる。
【0036】
また、
図3Cでは、
図3Bにおける2脚の椅子18,19のうち、一方が除去されている。椅子18が除去され、残された椅子が符号19のものであった場合には、ぬいぐるみオブジェクト23は残された椅子19に配置される。これは後述する撮影物体のグループ化の効果によるものである。
【0037】
図3Dは、
図3Cの表示映像の後で、現実空間に衝立25を追加して配置した場合の表示を示す。この例では、衝立25はテーブル17の手前に配置され、ARオブジェクトである花瓶オブジェクト22と近接し、一部が重なって配置されている。この場合の表示では、花瓶オブジェクト22はテーブル17の上に存在する訳であるから、衝立25と重なる部分は衝立25の陰になり、ユーザから見えないように表示される(点線で示す)。そのため、次のように処理する。
【0038】
衝立25は撮影物体として認識され、その特徴点には距離データが与えられている。衝立25の距離データを、表示しているARオブジェクトである花瓶オブジェクト22の距離データと比較する。花瓶オブジェクト22と、これと近接する衝立25の距離を比較した結果、花瓶オブジェクト22は衝立25よりも奥にあり、花瓶オブジェクト22のうち隠れる部分は非表示とする。
【0039】
図3Dの場合、さらにARオブジェクトであるカーテンオブジェクト20についても、衝立25に重なっており、左下部分を非表示にしている。このように、表示するARオブジェクトが撮影物体と視線方向に重なるとともに、ARオブジェクトが撮影物体よりも奥に配置されるときは、ARオブジェクトの隠れる部分を非表示とすることで、違和感のない表示が行える。
【0040】
図4は、自然の風景にARオブジェクトを配置した表示映像の例を示す図である。この例では、カメラは自然風景を撮影している。風景内の物体(山、森林、丘陵などの自然物)は、測距センサ3では測定不可能な距離にあり、このような物体は「背景物体」として扱う。背景物体には、十分大きな(または無限遠の)距離データを与える。
【0041】
風景のような背景物体にもARオブジェクトを配置できる。この例では、2つの家オブジェクト24a,24bを背景物体に紐付けして表示している。この時、家オブジェクト24a,24bにも距離データを与え、背景物体(山、森林など)に対し所定の位置関係に配置することで、見映えの良い風景を表示することができる。
【0042】
図5A~
図5Cは、ユーザの視線方向と背景物体の認識の仕方を説明する図である。
図5Aでは、カメラ撮影映像には正面壁13と窓16が存在し、衝立25が手前に配置されている。正面壁13と衝立25は現実物体であり、それぞれ背景物体と撮影物体として認識されている。これに対しユーザの視線方向が、符号26aの方向から符号26bの方向に移動した場合を想定する。
【0043】
図5Bは、ユーザの視線方向が符号26aの方向の時、正面壁13の認識できる領域を示す図である。正面壁13はその一部が衝立25で覆われるので、背景物体として認識できるのは領域13aで、左下の隅の領域13xが欠けている。
【0044】
図5Cは、ユーザの視線方向が符号26bの方向に移動した時、正面壁13の認識できる領域を示す図である。ユーザは衝立25の後ろの正面壁13を全部見ることができる。その結果、背景物体として認識できるのは、矩形領域13bとなる。このように、撮影物体の背面にある背景物体の領域(形状)は、ユーザの視線方向(AR表示装置の方向)に依存して変わることがある。
【0045】
背景物体は、一旦広い領域の背景物体として認識されたならば、その後の視線方向に係らず、広い領域を有する背景物体として取り扱う。これにより、視線方向26aのとき衝立25の後ろにあり見えないはずの正面壁の部分13xに、ARオブジェクトを配置させることが可能となる。
【0046】
図6は、移動可能なARオブジェクトの表示例を示す図である。ドローンオブジェクト27は衝立25付近に紐付けられているが、移動可能なARオブジェクトである。ドローンオブジェクト27には所定の動きプロファイルが与えられ、例えば、時刻T1で起点となる衝立25の左側に位置し、移動速度と移動方向のパラメータに従い移動し、時刻T2になると衝立25の右側に位置する。ユーザの視線方向28が衝立25の右側にあれば、ドローンオブジェクト27が衝立25を貫通して現れたように見える。このように、移動可能なARオブジェクトを使用することにより、移動物体が障害物から突然現れるといったAR体験が可能となる。
【0047】
図7は、視線に連動するARオブジェクトの表示例を示す図である。ぬいぐるみオブジェクト23は3D映像であり、椅子に座っている方向に体を向けるように紐付けられている。よって、椅子18が椅子19の位置に移動するとユーザの視線が符号29aから符号29bの方向に変化し、ぬいぐるみオブジェクト23の3D表示も回転させ、椅子に座っている方向に合わせた表示を行うことができる。
【0048】
次に、AR表示装置1の行う各種の処理フローについて説明する。すなわちCPU85は、プログラムフラッシュROM88に格納される以下のプログラムに従い、処理を実行する。
【0049】
図8は、全体制御処理880のフローである。すなわち、カメラ撮影からARオブジェクトを表示するまでの全体の工程を示す。
【0050】
S101でカメラ撮影を開始する。カメラ撮影は、AR処理全体を実行するタイミングで行ってもよいし、例えば30フレーム/秒の動画撮影を継続していて、AR処理全体を実行するタイミングで撮影する映像をキャプチャするようにしてもよい。
S102は基準点と移動履歴処理881であり、時刻毎にカメラの位置及び撮影方向、即ちユーザの頭部の位置と視線方向を検知し、基準点・移動履歴データ891に登録する。
【0051】
S103は撮影物体処理882であり、キャプチャしたカメラ撮影映像の特徴抽出を行い、特徴点を選び、特徴点の集合に対して、現実物体が何であるかを認識し、撮影物体として撮影物体データ892に登録する。
S104は背景物体処理883であり、特徴点に付与される距離データが最遠点となる特徴点を含み、撮影物体を除く領域を背景物体として背景物体データ893に登録する。
【0052】
S105はARオブジェクト処理884であり、撮影物体と背景物体に配置するARオブジェクトを選択し、また配置するときのパラメータ(表示パラメータ)を決定する。この処理には、ユーザによる選択操作が含まれる。選択したARオブジェクトのデータをARオブジェクトデータ894に登録し、表示パラメータは紐付けデータとして、撮影物体データ892と背景物体データ893に登録する。
S106は撮影物体グループ処理885であり、共通のARオブジェクトを紐付けする関連する複数の撮影物体をグループ化し、撮影物体グループデータ895に登録する。
【0053】
S107は表示映像生成処理886であり、登録した各種データを読み出してARオブジェクトの表示映像を加工して生成し、画像RAM87に書き込み、3Dプロジェクタ5で透過型スクリーン6に投射させる。この時、シャッタ付メガネ7の駆動信号も生成する。
S108で継続するか否かの判断を行い、継続する場合(Yes)はS101に戻り、継続しない場合(No)は終了する。
【0054】
以下、各処理881~886について詳細に説明する。
図9は、基準点と移動履歴処理881のフローである。この処理は、位置・方位センサ4と移動検知処理部83により実行される。
【0055】
S111では、ユーザはAR表示装置1を装着し、AR体験する現実空間のほぼ中心の位置に立ち、カメラ撮影を開始する。開始点の位置とカメラ撮影方向は対として、現実空
間での基準点となる。
S112では、位置・方位センサ4でAR表示装置1の位置及びカメラ2の撮影方向を検知し、ユーザの位置及び視線方向を表すデータとして取得する。
【0056】
S113では、データフラッシュROM89内の基準点と移動履歴データ891に基準点データが既に登録されているか、即ちAR体験の開始かどうかを確認する。登録されていない時(No)には、S115で基準点テータとして登録する。登録されている時(Yes)には、S114で移動履歴データとして登録する。移動履歴データは基準点データとの差分で表される。
以降、ユーザが現実空間を移動しながらカメラ撮影を行う毎に、現在の位置とカメラ撮影方向の対を移動履歴として、基準点と移動履歴データ891に記録する。
【0057】
図10は、撮影物体処理882のフローである。この処理は特徴抽出処理部81により実行される。
【0058】
S121では、カメラ2から撮影映像を読み出す。
S122では、映像の特徴解析を行い、例えばエッジを抽出し、エッジの頂点や変曲点を特徴点として抽出する。
S123では、測距センサ3と距離算出処理部82で取得した距離データを特徴点に付加する。
【0059】
S124では、前回の特徴点との差分を評価し、S125では、差分が有意と評価された特徴点の集合から、物体の種別等を認識する。その際、通信部84を介して外部サーバの映像データベースと照合することで、物体の識別を行ってもよい。
【0060】
S126では、識別した結果を撮影物体として撮影物体データ892に登録する。また、測距センサ3で取得した撮影物体の位置が前回の位置から移動したか否かを示す「移動フラグ」を付与する。移動フラグの値が「X」は基準点を、「0」は移動なしを、「1」は移動ありを意味する。
【0061】
図11は、背景物体処理883のフローである。
S131では、特徴抽出処理部81により抽出された特徴点のうち、最遠距離を有する特徴点を選択する。
図3Aの例では、正面壁13の隅などが相当する。
S132では、最遠距離を有する特徴点を含み撮影物体と認識されていない領域を選定する(領域Aとする)。
【0062】
S133では、特徴抽出処理部81により抽出された特徴点のうち、距離検出が不可能な(検出限界を超える)領域を選定する(領域Bとする)。
S134では、上記の領域A及び領域Bを、現実空間の背景を構成する要素とみなし、背景物体として背景物体データ893に登録する。
なお、S132で最遠距離を有する特徴点が撮影物体に含まれる場合には、最遠点は、背景物体と撮影物体で共有することになる。
【0063】
図12Aと
図12Bは、ARオブジェクト処理884のフローである。
図12Aと
図12Bでは、処理手順の一部を入れ替えている。この処理は、ユーザが操作画面を見ながら対話形式で行う。
【0064】
図12Aの場合から説明する。
S141では、撮影物体もしくは背景物体から、ARオブジェクトを配置する物体を1つ選択する。
S142では、選択した物体に対して、紐付けするARオブジェクトを選択する。ARオブジェクトの選択候補は、AR表示装置1に予め準備しておいてもよいし、通信部84を介して外部のサーバに蓄えられているデータを参照してもよい。選択したARオブジェクトをARオブジェクトデータ894に登録する。
【0065】
S143は、ARオブジェクトを表示するときの表示パラメータを設定する。これにより、ARオブジェクトの物体に対する表示位置、大きさ、方向を与える。すなわち、選択された物体のある特徴点の位置に対してオフセットを与えることにより、物体に対する位置決めができる。前記領域Bのように特徴点が明確でない背景物体では、領域の任意の点を選択して、選択した点を擬似特徴点として用いてもよい。例えば、壁の平坦部の一点を壁の隅や柱、天井からの座標で示すことで位置決めができる。設定した表示パラメータはARオブジェクトの紐付けデータとして、撮影物体データ892と背景物体データ893に登録する。
S144では、ARオブジェクトを配置する撮影物体もしくは背景物体が残っているかどうかを判定し、残っている場合(Yes)はS141に戻り、残っていない場合(No)は終了する。
【0066】
次に、
図12Bの場合について説明する。この場合は、最初にARオブジェクトを選定し、選定したARオブジェクトに対して撮影物体もしくは背景物体を割り当てるという手順となる。
S145では、使用するARオブジェクトを全て選定する。そのため、AR表示装置1に内蔵するもの、または外部のサーバを参照する。選定したARオブジェクトをARオブジェクトデータ894に登録する。
【0067】
S146では、選定したARオブジェクトの1つを選択する。
S147では、選択したARオブジェクトを紐付けする撮影物体もしくは背景物体を選択する。
【0068】
S148では、ARオブジェクトを表示するときの表示パラメータ(表示上の位置、大きさ、方向)を設定する。設定した表示パラメータはARオブジェクトの紐付けデータとして、撮影物体データ892と背景物体データ893に登録する。
S149では、S145で選定したARオブジェクトが残っているかどうかを判定し、残っている場合(Yes)はS146に戻り、残っていない場合(No)は終了する。
【0069】
図12Aと
図12Bを比較すると、紐付けしたい撮影物体もしくは背景物体の数がARオブジェクトの選択肢の数よりも少ない場合は、
図12Aのフローが効率的である。逆に、紐付けしたいARオブジェクトの数が撮影物体もしくは背景物体の選択肢の数よりも少ない場合は、
図12Bのフローが効率的である。ユーザはそのときの状況により、
図12Aと
図12Bのいずれかのフローを選択できるものとする。
なお、ARオブジェクト処理884におけるユーザの操作画面の例は、
図15A~Bで説明する。
【0070】
図13は、撮影物体グループ処理885のフローである。撮影物体グループとは、複数の撮像物体をグループ化して、共通のARオブジェクトを紐付ける処理である。
S151では、同一形態の複数の撮影物体を撮影物体グループとして、撮影物体グループデータ895に登録する。例えば
図3Aの2個の椅子18,19をグループ化する。その際、各撮影物体に紐付けする優先度を指定する。
【0071】
S152では、1つの撮像物体が変形した複数の状態を撮影物体グループとして登録する。例えば、
図3Aの窓16は、閉じられた状態、開いた状態、カーテンの降りた状態などの変形が可能で、これらをグループ化する。
S153では、登録した撮影物体グループに共通するARオブジェクトを紐付けし、また表示パラメータを設定する。
このグループ化処理により、紐付けしたユーザの意図を反映し、現実空間の状況に柔軟に対応してARオブジェクトを表示することができる。
【0072】
図14は、表示映像生成処理886のフローである。ここでは、データフラッシュROM89に登録した各種データを読み出してARオブジェクトの表示映像を生成し、3Dプロジェクタ5にて投射、表示する。
【0073】
S161では、撮影物体データ892と背景物体データ893、及びARオブジェクトデータ894を参照して、表示するARオブジェクトを選択する。
S162では、選択したARオブジェクトを紐付けする撮影物体が現在の撮影空間に存在するかどうかを判定する。存在すれば(Yes)S165へ進み、存在しなければ(No)S163へ進む。
【0074】
S163では、撮影物体グループデータ895を参照し、紐付けする撮影物体がグループ化されているかどうかを判定する。グループ化されていれば(Yes)S164へ進み、グループ化されていなければ(No)S172へ進む。
S164では、グループ化された他の撮影物体を紐付けする対象とする。その際、複数の候補があれば優先度に従って対象を決定する。例えば、
図3Cのように、紐付け対象物体を椅子18から椅子19に切り替える。
【0075】
S165では、対象の撮影物体の移動フラグを参照し、「1」(=移動可能)かどうかを判定する。移動フラグが「1」ならば(Yes)S166へ進み、「1」以外(移動不可の「0」または基準点の「X」)ならばS167へ進む。
S166では、撮影物体の現在の位置に合わせてARオブジェクトを移動させて位置決めする。なお、移動フラグが「0」(移動不可)ならば、前回の位置のままとする。
【0076】
S167では、AR表示装置1の方向(ユーザの視線)に合わせてARオブジェクトを回転させる。また、紐付けする撮影物体(または背景物体)までの距離に応じて、ARオブジェクトを拡大・縮小させる。これにより、
図5A-C、
図7のような表示が可能となる。
【0077】
S168では、ARオブジェクトと、これと視線方向に重なる現実物体(撮影物体)との距離関係を評価する。
S169では、ARオブジェクトが現実物体で隠れるかどうか、すなわち、ARオブジェクトの手前に現実物体が存在するかどうかを判定する。隠れる場合(Yes)はS170へ進み、隠れない場合(No)はS171へ進む。
S170では、ARオブジェクトの隠れる部分の映像をマスク処理する(例えば映像データを0に書き換える)。これにより
図3Dのような表示が可能となる。
【0078】
S171では、3Dプロジェクタ5にてARオブジェクトの投射、表示を行う。
S172では、未処理のARオブジェクトがある場合(Yes)には、S161に戻り次のARオブジェクトについて処理する。
【0079】
図15Aと
図15Bは、
図12A(
図12B)で説明したARオブジェクト処理884におけるユーザ操作の具体例を示す図である。現実物体である椅子18を撮影物体として認識し、該撮影物体にARオブジェクトであるぬいぐるみオブジェクト23を紐付ける場面である。なお、この処理はユーザが操作画面を見ながら対話形式で行う。
【0080】
図15Aは、紐付けるARオブジェクトを選択する画面である。この紐付け操作では、まずカーソル31を椅子18の上に置き、クリックする。この操作によりメニュー小画面32aがポップアップする。このメニュー小画面32aで提示されるリストの中から、「ARオブジェクトの選択」をクリックする。クリックした項目は、黒地に白抜きの文字に変換される。これに反応し、ARオブジェクトの候補画面32bが現れ、カーソル31で所望のARオブジェクトを選択する。さらに、メニュー下段の「配置位置設定」や「サイズ・姿勢設定」の項目をクリックして、選択したARオブジェクトの詳細な表示パラメータを設定する。
【0081】
図15Bは、一度設定したARオブジェクト23の表示パラメータの変更を行う場面である。ここではメニュー小画面32cが表示されている。メニューリストとしては、表示/非表示の切り替え、表示サイズの変更、表示回転の変更、配置変更(オフセットの変更)があり、所望の項目について変更を行うことができる。
【0082】
図16~
図21は、データフラッシュROM89に格納される各種データテーブルの例を示す図である。
【0083】
図16は、ヘッダデータであり、AR表示装置1で取り扱うデータの一覧が「付随コンテンツ(Accompanying Content)」に記載されている。また、テーブルの先頭には、AR体験に関するデータであることを示す「コンテンツID」がある。この「コンテンツID」は、後述する撮影物体、背景物体、ARオブジェクトなどのテーブルと共通のIDである。この他、「コンテンツ所有者」や「著作権」等の情報が含まれる。
【0084】
図17は、基準点と移動履歴データ891を示す。共通の「コンテンツID」があり、「コンテンツ種類」で基準点と移動履歴データであることを示す。データとしては、「基準点(PBase)」と、「移動履歴(MP1,MP2)」について、時刻(T0,T1,T2)と位置と方向、が記述されている。時刻はAR処理のカメラ撮影時刻であり、協定世界時(UTC=Universal Time, Coordinated)で記述される。位置と方向は、基準点(PBase)を起点として、それぞれの時刻でのAR表示装置1の位置と撮影方向を差分データで示す。例えば、時刻T1での移動履歴(MP1)は、差分位置(r1,θ1,φ1)=(距離,水平角度,垂直角度)、差分方向(θθ1,φφ1)=(水平角度,垂直角度)で表される。
また、本例では基準点の値として、位置=(0,0,0)、方向=(0,0)と与えているが、位置ではGPSデータの値、方向では方位角の値を与えてもよい。
【0085】
図18A~
図18Cは、撮影物体データ892を示す。撮影物体データは、撮影位置ごとに区分して記述され、
図18Aは基準位置(PBase)、
図18Bは移動位置(MP1)、
図18Cは移動位置(MP2)におけるデータである。なお、
図18A~Cのデータは、それぞれ
図3B~Dの場面に対応させている。
【0086】
各撮影位置において認識された撮影物体は、「撮影物体1」、「撮影物体2」、…のように番号が与えられ、また認識された物体名である「テーブル」、「椅子1」、…が記載されている。各撮影物体には、抽出された「特徴点1」、「特徴点2」、…と、「紐付けARオブジェクト」のデータが記載される。さらに各撮影物体には、移動可能な物体かどうかを示す「移動フラグ」が付与されている。基準点においては移動フラグ=「X」、移動不可な物体の場合は「0」、移動可能な物体の場合は「1」で表示する。
【0087】
各特徴点のデータは、AR表示装置1の撮影位置に対する相対位置(距離と方向)を含む。「紐付けARオブジェクト」のデータは、後述するARオブジェクトデータ894にリンクし、データIDで指定されたARオブジェクト(タイトル)が紐付けされている。さらに「紐付け位置」は、ARオブジェクトを配置する特徴点とオフセット距離を示し、「サイズ」と「回転」は、ARオブジェクトを表示するときのパラメータである。
【0088】
本例では、撮影位置が基準位置(PBase)において(
図18A)、撮影物体1~3が記載され、撮影物体1(テーブル)には紐付けARオブジェクト1が、撮影物体2(椅子1)には紐付けARオブジェクト2が紐付けされている。さらに撮影位置が移動位置(MP2)において(
図18C)、撮影物体4(衝立)が新たに認識され追加されている。
【0089】
撮影物体1、2の各特徴点に対する位置や方向の数値は、撮影位置が基準位置(PBase)と移動位置(MP1,MP2)とでは、やや異なっている。これは、撮影物体1、2が現実空間の中で移動しない場合でも、AR表示装置1の移動によって異なる値となるからである。このような場合には数値の差異は、AR表示装置1の移動に伴うものであるとして認識され、実際の物体が移動したかどうかは、AR表示装置1の移動を踏まえて判断する。
【0090】
一方、
図18Bの移動位置(MP1)において、撮影物体2(椅子1)は現実空間で移動しており、「移動フラグ」は移動可能な物体であることを示す「1」とする。また、
図18Cの移動位置(MP2)において、撮影物体4(衝立)は新たに現実空間に現れた物体であり、これに対する「移動フラグ」は「1」とする。
【0091】
また、後述する撮影物体グループに登録されている撮影物体には、グループ番号が付与されている。例えば
図18Aでは、撮影物体2(椅子1)と撮影物体3(椅子2)がグループ化され、「グループ1」として扱われている。
【0092】
図19は、背景物体データ893を示す。背景物体データは、撮影位置ごとに区分され、基準位置(PBase)、移動位置(MP1、…)に分けて記述される。
【0093】
背景物体データは、特徴点があれば、「特徴点1」、「特徴点2」、…が記載され、これらの特徴点は、ユーザが指示する擬似特徴点を含む場合がある。続いて、
図18A~Cの撮影物体の場合と同様に「紐付けARオブジェクト」のデータが記載される。さらに背景物体データには、その位置や形状を把握できるよう、カメラ撮影映像の座標に対応したビットマップデータを有する。
【0094】
図20は、ARオブジェクトデータ894を示す。ARオブジェクトデータは、例えばネットワーク上のサーバからダウンロードしたデータであり、タイトル毎に通し番号が振られている。個々のARオブジェクトデータには識別用のデータIDが付与され、これを介して前述した撮影物体データや背景物体データと紐付けられている。項目として、タイトルと著作権の記載があり、3D画像データが格納されている。この3D画像データを用いて表示映像が生成される。
【0095】
ARオブジェクトデータの中には、固有の表示属性を含むことがある。例えば、「ARオブジェクト7」は
図6のドローンオブジェクト27の場合であり、ドローンの動きを表す「動きプロファイル」が記載されている。この他、姿勢プロファイルにより紐付けの状態(撮影物体との距離、姿勢の回転角度)を規定して、ユーザの紐付けパラメータの設定を制限することもできる。
【0096】
図21は、撮影物体グループデータ895を示す。撮影物体グループデータは、「グループ1」、「グループ2」のように通し番号が振られ、「構成物体」にはグループを構成する撮影物体が記載される。この例では撮影物体2と撮影物体3とがグループ化されてい
る。続いて、各グループに紐付けする「紐付けARオブジェクト」が記載される。またグループを構成する複数の撮影物体には、ARオブジェクトを紐付ける優先順位を示す「優先度」が与えられている。
【0097】
複数の撮影物体をグループ化することで、ARオブジェクトを表示する際の撮影物体の選択が状況に即して行われる。例えば、
図3Bで2つの椅子18,19をグループ化した効果を説明する。紐付け操作では、椅子18にぬいぐるみオブジェクト23が紐付けられている。その後、
図3Cのように、2つの椅子18,19のうち、紐付けした椅子18が部屋から除去される場合がある。椅子18と椅子19をグループ化して登録しておけば、第1順位の椅子18が取り除かれても、撮影物体グループデータ895を参照し、第2順位の椅子19の上にぬいぐるみオブジェクト23を配置させることができる。これにより、ぬいぐるみを紐付けしたユーザの意図を反映し、現実空間の状況に柔軟に対応してARオブジェクトの表示を行うことができる。
【0098】
以上説明したように、実施例1によれば、移動可能な物体を含めて物体の現在の位置に合わせてARオブジェクトを適切に表示する拡張現実表示装置を提供できる。また、ARオブジェクトと現実物体の距離関係(すなわちユーザから見た前後関係)を反映させた3D表示が行われるため、奥行き感のある表示が可能である。さらに、複数の撮影物体をグループ化することで、ユーザの意図を反映し、現実空間の状況に柔軟に対応してARオブジェクトの表示を行うことができる。
【実施例2】
【0099】
実施例2では、3Dカメラを搭載して撮影と距離測定を行う拡張現実表示装置について説明する。
【0100】
図22は、実施例2に係る拡張現実表示装置(AR表示装置)の外観を示す図である。
前記実施例1(
図1A)に示したAR表示装置1と同等の機能を有する構成要素については、同一の符号を付しており、重複する説明は省く。この場合も前記実施例1の
図1Bと同様に、ユーザはホルダ10a,10bにて、HMDであるAR表示装置’を自身の頭部に装着する。
【0101】
AR表示装置1’は、3D(3次元)カメラ33a,33bと、平面ディスプレイ(表示部)34を備えている。3Dカメラ33a,33bは、実施例1におけるカメラ2と測距センサ3の置き換えで、カメラ撮影映像を得るだけでなく、33aで得る左目視線の映像と33bで得る右目視線の映像の差により、カメラ映像内の現実物体の距離の測定も可能である。
【0102】
平面ディスプレイ34は、実施例1における3Dプロジェクタ5と透過型スクリーン6の置き換えで、3Dカメラ33a,33bの撮影映像とARオブジェクトの映像とをコントローラ8で合成して表示する。この時、左目視線の映像と右目視線の映像を交互に表示し、シャッタ付きメガネ7と同期させて3D映像の表示を行う。なお、平面ディスプレイ34には、スマートフォン等の汎用デバイスを用いてもよい。この時、スマートフォンに内蔵する制御装置でコントローラ8の機能を実行することができる。
【0103】
図23は、AR表示装置1’の内部構成を示すブロック図である。実施例1(
図2)に示したブロックと同等の機能を有するものについては、同一の番号を付しており、重複する説明は省く。実施例1と異なるブロックは、3Dカメラ33a,33b、平面ディスプレイ34、特徴抽出処理部81’、距離算出処理部82’、合成処理部91である。
【0104】
特徴抽出処理部81’は、3Dカメラ33a,33bの映像から特徴点を抽出し、その特徴点から、カメラ撮影映像に写っている現実物体を認識する。距離算出処理部82’は、3Dカメラ33a,33bで得る左目/右目視線の映像の差により、カメラ映像内の現実物体の距離を測定する。合成処理部90は、3Dカメラ33a,33bの撮影映像とARオブジェクトの映像とを構成し、平面ディスプレイ34は合成された映像を表示する。
【0105】
実施例2のAR表示装置1’においても、撮影映像から認識した現実物体(撮影物体、背景物体)へのARオブジェクトの紐付けと、紐付けしたARオブジェクトの様々な表示制御方法は、実施例1の場合と同様に行うことができる。
【0106】
実施例2によれば、実施例1と同様の効果を有するとともに、平面ディスプレイを含めてスマートフォンのような汎用デバイスの活用が図れるという特徴がある。
【0107】
以上、本発明の実施形態を説明したが、本発明はこれらに限られるものではなく、ある実施例の構成の一部を他の実施例の構成に置き換えたり、他の実施例の構成を加えたりすることも可能である。
【0108】
また本発明は、拡張現実(AR)オブジェクトの表示だけでなく、これを発展させた複合現実(MR:Mixed Reality)オブジェクトを表示する装置及びその表示方法についても同様に適用できることは言うまでもない。
【符号の説明】
【0109】
1,1’:拡張現実表示装置(AR表示装置)、2:カメラ、3:測距センサ、4:位置・方位センサ、5:3Dプロジェクタ(表示部)、6:透過型スクリーン、7:シャッタ付メガネ、8:コントローラ、9a,9b:スピーカ、10a,10b:ホルダ、20,21,22,23,24a,24b,27:ARオブジェクト、33a,33b:3Dカメラ、34:平面ディスプレイ(表示部)、81,81’:特徴検出処理部、82,82’:距離算出処理部、83:移動検出処理部、84:通信部、85:CPU、86:RAM、87:画像RAM、88:プログラムフラッシュROM、89:データフラッシュROM、90:ユーザ操作入力部、91:映像合成処理部、100:ユーザ、880:全体制御処理、881:基準点と移動履歴処理、882:撮影物体処理、883:背景物体処理、884:ARオブジェクト処理、885:撮影物体グループ処理、886:表示映像生成処理。