(57)【要約】【課題】防水構造を有する情報機器を持ち込むことなく、液面への情報表示と、液体を扱うのと同様の自然で直感的なジェスチャ入力とを実現する、液体槽内での情報閲覧とインタラクションに好適なユーザインタフェースを提供する。【解決手段】不透明状態の液体２が蓄えられた液体槽３と、液体槽３の液面に対して情報を投影表示させる投影表示手段４と、液体槽３の液面付近において行われる、ユーザによる液体２への接触を伴うジェスチャの入力を認識するジェスチャ認識手段５、６と、ジェスチャ認識手段５、６によって認識されたジェスチャに応じて、投影表示手段４に投影表示させる情報を制御する表示制御手段６とを設けた。【選択図】図２
2014238828.tif 000002
【特許請求の範囲】
【請求項１】
液体と不透明状態の気体との組み合わせ、または不透明状態の液体で平面を形成した液体平面形成手段と、
前記液体平面形成手段により形成された平面に対して情報を投影表示させる投影表示手段と、
前記液体平面形成手段により形成された平面に対する入力操作を検出する入力検出手段と、
前記入力検出手段によって検出された入力操作に応じて、前記投影表示手段に投影表示させる情報を制御する表示制御手段とを備えたことを特徴とするユーザインタフェース装置。
【請求項２】
前記液体平面形成手段は、不透明状態の液体が蓄えられた液体槽であり、
前記投影表示手段は、該液体槽の液面に対して情報を投影表示させ、
前記入力検出手段は、該液体槽の液面付近において行われる、ユーザによる前記液体への接触を伴うジェスチャの入力を認識するジェスチャ認識手段であり、
前記表示制御手段は、該ジェスチャ認識手段によって認識されたジェスチャに応じて、前記投影表示手段に投影表示させる情報を制御する
ことを特徴とする請求項１記載のユーザインタフェース装置。
【請求項３】
前記ジェスチャ認識手段は、前記ユーザが前記液面下から指を突き出す動作、前記ユーザが前記液面付近において前記液体を流す動作、前記ユーザが前記液体をすくう動作、前記ユーザが前記水面を叩く動作のうちの少なくとも１つの動作を認識するものであることを特徴とする請求項２に記載のユーザインタフェース装置。
【請求項４】
前記ジェスチャ認識手段は、
前記液面からの距離が表された深度画像を取得可能な深度カメラと、
該深度カメラで取得された前記液面を表す背景画像と、前記ジェスチャの動作中を表す１以上のジェスチャ画像との差分を求めることによって、前記ジェスチャの動作領域を表す前景画像を取得し、前記ジェスチャの動作領域の面積と経時的変化とに基づいて、前記ジェスチャの動作内容を特定するジェスチャ解析部とを備えたものであることを特徴とする請求項２または３に記載のユーザインタフェース装置。
【請求項５】
前記表示制御手段は、流体シミュレーションにより、前記投影表示される情報を前記液面上で移動させるものであることを特徴とする請求項２から４のいずれか１項に記載のユーザインタフェース装置。
【請求項６】
前記ジェスチャ認識手段は、前記ユーザが前記液面付近において前記液体を流す動作を認識するものであり、
前記表示制御手段は、前記認識された液体を流す動作に応じて、前記液体シミュレーションにより、前記投影表示される情報の移動の向きや速さを決定するものであることを特徴とする請求項５に記載のユーザインタフェース装置。
【請求項７】
前記液体槽は前記ユーザが内部に入ることができるものであり、
前記ユーザは、前記液体に浸かることができるものであることを特徴とする請求項２から６のいずれか１項に記載のユーザインタフェース装置。
【請求項８】
前記液体平面形成手段は、液体を落下させることにより平行な平面を形成するとともに、前記平行な平面の間に不透明状態の気体を充満させ、
空気を放出する空気放出筒を備え、
前記入力検出手段は、前記空気を放出した際の前記空気放出筒の向きを検出し、
前記表示制御手段は、前記入力検出手段によって認識された前記空気放出筒の向きに応じて、前記投影表示手段に投影表示させる情報を制御する
ことを特徴とする請求項１記載のユーザインタフェース装置。
【請求項９】
液体と不透明状態の気体との組み合わせ、または不透明状態の液体で平面を形成した液体平面形成手段と、
前記液体平面形成手段により形成された平面に対して情報を投影表示させる投影表示手段と、
前記液体平面形成手段により形成された平面に対する入力操作を検出する入力検出手段と、を備えた装置と接続されたコンピュータに、
前記入力検出手段によって検出された入力操作に応じて、前記投影表示手段に投影表示させる情報を制御する制御ステップを、
実行させるためのユーザインタフェース制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのユーザインタフェース技術に関するものである。
【背景技術】
【０００２】
情報端末の小型化と無線ネットワークの普及は、人々がいつでもどこでも情報にアクセスすることを可能とした。こうした中、ユビキタス・コンピューティングの一環として、家具やキッチンなどに情報機器を組み込み、日常生活を便利かつ豊かにする研究が行われてきている。
【０００３】
そのような中、浴室での情報閲覧の需要が高まっている。特に携帯電話に慣れ親しんだ世代においては、携帯電話を浴室に持ち込むなどして、入浴時という特殊な環境でも情報閲覧が行われている。
【０００４】
浴室内での情報閲覧の需要に応えるものとして、使用者がディスプレイを見やすい角度に保持した状態で、水面に浮遊させることが可能な携帯端末が提案されている（例えば特許文献１参照）。特許文献１に記載された携帯端末は、防水構造を有するとともに比重が水よりも小さく構成され、端末の重心の位置を変更可能な移動部材を備え、移動部材の位置を適宜調整することにより、端末のディスプレイが見やすい角度で浮遊できるようになっている。
また、浴槽等の水面に気泡によるスクリーンを形成し、映像を表示する技術も提案されている（例えば特許文献２，３参照）。
【０００５】
さらに、水面へのタッチをセンシングし、水槽底面に投影表示された映像とのインタラクションを可能にする技術も提案されている（例えば非特許文献１参照）。非特許文献１に記載のシステムでは、水槽の横から赤外線ＬＥＤ光源を照射し、透明な水槽下部に設置した赤外線カメラによりタッチ位置を検出している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−０３０９６４号公報
【特許文献２】特開２０１１−２３７４９７号公報
【特許文献３】特開２００５−３００５６１号公報
【非特許文献】
【０００７】
【非特許文献１】Paul H. Dietz, Jonathan Westhues, John Barnwell, Jefferson Y. Han, and William Yerazunis. Submerging technologies. In ACM SIGGRAPH 2006 Emerging technologies, SIGGRAPH ’06, New York, NY, USA, 2006. ACM.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
浴室のような水の多い環境は、潜在的に携帯電話等の情報機器との相性が悪い。例えば特許文献１に記載の携帯端末は防水構造を有しているものの、防水機能自体の耐久性や信頼性の不安から、浴室への携帯端末の持ち込みには心理的に抵抗を感じるユーザや、浴室内に余計なものを持ち込むことに煩わしさを感じるユーザも多いと考えられる。
【０００９】
また、特許文献２，３には、気泡スクリーンへの情報の投影については言及されているが、ユーザからの入力によるインタラクションについては言及されていない。
【００１０】
さらに、非特許文献１に記載のシステムは、水面をタッチスクリーンのように見立てたものであり、従来のタッチパネルの概念から抜け出せているとは言い難い。また、操作面となる水面と表示面となる水槽底面との間に水を挟んでいるので、操作面と表示面が離れてしまっている。その結果、ユーザにとっては直接的なインタラクションとならないので、操作を知覚しづらくなってしまう。
【００１１】
本発明は、上記の事情に鑑みてなされたものであり、防水構造を有する情報機器を持ち込むことなく、液面への情報表示と入力とを実現する、情報閲覧とインタラクションに好適なユーザインタフェースを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のユーザインタフェース装置は、不透明状態の液体が蓄えられた液体槽と、液体槽の液面に対して情報を投影表示させる投影表示手段と、液体槽の液面付近において行われる、ユーザによる液体への接触を伴うジェスチャの入力を認識するジェスチャ認識手段と、ジェスチャ認識手段によって認識されたジェスチャに応じて、投影表示手段に投影表示させる情報を制御する表示制御手段とを設けたことを特徴とする。
【００１３】
ここで、ジェスチャ認識手段は、ユーザが液面下から指を突き出す動作、ユーザが液面付近において液体を流す動作、ユーザが液体をすくう動作、ユーザが水面を叩く動作のうちの少なくとも１つの動作を認識するものとすることが好ましい。
【００１４】
また、ジェスチャ認識手段は、液面からの距離が表された深度画像を取得可能な深度カメラと、深度カメラで取得された液面を表す背景画像とジェスチャの動作中を表す１以上のジェスチャ画像との差分を求めることによって、ジェスチャの動作領域を表す前景画像を取得し、ジェスチャの動作領域の面積と経時的変化とに基づいて、ジェスチャの動作内容を特定するジェスチャ解析部とを備えたものとしてもよい。
表示制御手段は、流体シミュレーションにより、投影表示される情報を液面上で移動させる制御を含むことが好ましい。
【００１５】
その際、ジェスチャ認識手段が、ユーザが液面付近において液体を流す動作を認識するようにし、表示制御手段は、認識された液体を流す動作に応じて、液体シミュレーションによって投影表示される情報を移動させる向きや速さを決定するようにしてもよい。
【００１６】
また、液体槽はユーザが内部に入ることができるものとし、ユーザが液体に浸かることができるものとしてもよい。具体例としては、浴槽やプール等が挙げられる。
【００１７】
なお、「液体」は、不透明な溶液等のような恒久的に不透明状態のものであってもよいが、恒久的である必要はない。例えば、液体をかき混ぜたり、液体中に気泡を発生させたりすることによって、一時的に不透明状態が形成されるようなものであってもよい。
また、「情報」は、文字、静止画、動画のいずれであってもよく、アイコンや操作ボタン、スライドレバー等のＧＵＩ部品であってもよい。
【発明の効果】
【００１８】
本発明によれば、防水構造を有する情報機器を持ち込むことなく、情報表示と入力とが実現される。このようなユーザインタフェースは、情報閲覧とインタラクションにきわめて適したものである。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態となるインタラクティブシステムの使用イメージを模式的に示した図
【図２】本実施形態のインタラクティブシステムの基本的な構成を模式的に示した図
【図３】手指認識処理の概要を示したフローチャート
【図４】キャリブレーション処理を模式的に示した図
【図５】水面の深度を表す深度画像（背景画像）の一例を示した図
【図６】深度カメラの画角内に手が存在する場合の深度画像（ジェスチャ画像）の一例を示した図
【図７】ジェスチャ画像と背景画像の差分を２値化した２値画像の一例を示した図
【図８】２値画像に対する領域抽出処理の流れを模式的に示した図
【図９Ａ】認識対象の手と指の実際の状態の一例を示した図
【図９Ｂ】２値画像における認識対象の手と指の領域を示した図
【図１０】腕の向きを検出する処理を説明するための模式図
【図１１】手領域を抽出する処理を説明するための模式図
【図１２】水を流すジェスチャの認識処理の概要を示したフローチャート
【図１３】水をすくうジェスチャの認識処理の概要を示したフローチャート
【図１４】水をたたくジェスチャの認識処理の概要を示したフローチャート
【図１５】流体シミュレーションによる視覚的効果の一例を示した図
【図１６】ウォータートップのトップメニュー（メインモード）とフルスクリーンモード（アプリケーションモード）の表示の一例と画面遷移の一例を示した図
【図１７】突出しジェスチャによる画像選択と移動の一例を示した図
【図１８】突出しジェスチャを用いた２本の指のピンチングによる画像の拡大・縮小の一例を示した図
【図１９】流すジェスチャに応じた流体シミュレーションによる画像の全体的な移動の一例を示した図
【図２０】流すジェスチャによる動画の早送り・巻戻しの一例を示した図
【図２１】すくうジェスチャによる動画ファイルの移動と再生の一例を示した図
【図２２】本実施形態のインタラクティブシステムを用いたシューティングゲームの一例を示した図
【図２３】シューティングゲームにおける突出しジェスチャを用いた弾の発射の一例を示した図
【図２４】本実施形態のインタラクティブシステムを用いた金魚すくいゲームの一例を示した図
【図２５】本実施形態のインタラクティブシステムを用いたホッケーゲームの一例を示した図
【図２６】本実施形態のインタラクティブシステムを用いた火の玉シューティングゲームにおいて、火の玉を飛ばす動作を説明した図である。（ａ）は、両手の準備動作を示しており、（ｂ）は、火の玉を飛ばしている様子を示している。
【図２７】本実施形態のインタラクティブシステムを用いた水しぶきをあげるように構成した浴槽の平面図である。
【図２８】本実施形態のインタラクティブシステムを用いた水しぶきをあげる状態を説明した図である。
【図２９】本発明の実施形態の変形例２の構成を示した図である。
【図３０】本発明の実施形態の変形例２の構成を示した図である。
【図３１】本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームのゲーム開始準備処理の処理手順を示したフローチャートである。
【図３２】本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームのゲーム処理の処理手順を示したフローチャートである。
【図３３】本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームのゲーム処理において、図３２のフローチャートに示したＳ６２１により遷移する処理手順を示したフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態となるインタラクティブシステム（ユーザインタフェース装置）について説明する。図１は、本システムの使用イメージである。
【００２１】
１．システムの設計思想
１．１ 浴室環境での使用
本実施形態のインタラクティブシステムは、浴室環境で使用されることを想定している。この使用環境の観点から以下の要求事項がある。
・映像閲覧可能なシステム
・入浴時における身体動作を活かした入力
・デバイス装着・把持が不要
・システム導入が容易
【００２２】
(1) 映像閲覧可能なシステム
入浴時におけるコンテンツとして、TV やインターネットの閲覧、ゲームなどの映像閲覧に対する需要があることが分かっている。このことから映像を表示し、表示された情報とインタラクション可能なシステムが必要となってくると考えられる。
【００２３】
(2) 入浴時における身体動作を活かした入力
浴室内で映像閲覧でき一般的に普及しているものとして浴室用TV があるが操作を行うために本体の操作ボタンに直接さわらならければならない。そのため湯船に浸かっている状態では体を動かし、本体まで手を伸ばさなければならないので、リラックスして入浴している状況においては操作性として問題がある。入浴中にスマートフォンなどの携帯端末で情報閲覧ということもされているが、端末を操作中に常時把持しなければならないという点で問題がある。浴槽に浸かっている状況を想定すると、入浴者の体は水の中に入っている状態が一般的であるため、入浴時の自然な体の動きを入力として用いる必要性があると考えられる。
【００２４】
(3) デバイス装着・把持が不要
インタラクティブシステムにおいて人間の動きを認識するためにセンサやマーカを身に着けるシステムがいくつかあるが、入浴行為を考えた際に入浴者がデバイスを装着したり、持ったりするのは水の中に入ることによって破損してしまうというハードウェア面の問題や、装着により生じる束縛感という点で浴室環境には適していない。よって認識のためのデバイスを装着・把持しないシステム構築が重要である。
【００２５】
(4) システム導入が容易
インタラクティブなディスプレイシステムにおいて、手指による入力の検出のためにディスプレイ面に特別なセンサやディスプレイ周囲にIR レーザを設置しなければならないものがあるが、浴槽に埋め込まなければならなかったり、そもそも実現不可能であったりといった問題がある。よって、できるだけシンプルで、設置が容易なシステムが望まれる。
【００２６】
１．２ 実世界指向ユーザインタフェース
また、本実施形態のインタラクティブシステムでは、実世界指向ユーザインタフェースの実現を目指すこととし、どういった要求があるのかを考える。実世界指向ユーザインタフェースにとって最も重要な要素は、実物体と同じように対話可能なことである。入力に関しては、実物体に対して行う動作をそのままバーチャルなオブジェクトの操作に割り当てられれば、より自然で直観性のある入力手法になると考えられる。また、情報表示に関しては、表示される情報が実世界と同じような挙動を示すことで、実世界と同様の操作で情報を扱うことが可能になる。
【００２７】
１．３ 設計指針と実現手段の検討
以上の要求分析に基づき、普段PC やスマートフォン等で行なっている情報閲覧を、情報機器を持ち込まずに浴槽で実現するために、以下の２つを設計指針として、実現手段を検討した。
(a) 浴槽の水面を情報表示領域とし、ここで文字、画像、動画情報を閲覧する。
(b) 表示された情報を手指ジェスチャで操作する。その際、水の特徴を活用したインタラクションを設計する。
【００２８】
(a) としては、電子書籍やweb ブラウジングで使用されるような文字情報、写真閲覧で使用される画像情報、動画情報などの視覚的情報が適度な品質で閲覧できることを目標とする。このために本実施形態では、入浴剤によって水を白濁させ、上方に設置したプロジェクタからこの白濁した水面に映像を投影することとした。この入浴剤は日本の浴室においてはよく使用されており、非現実的な仮定ではないと考える。
【００２９】
(b) としては、壁等に設置されたコントローラを操作したり、携帯機器を手に持ったりせず、普段入浴する自然な状態で対話操作ができることを目標とする。このために、本実施形態では、後述する深度カメラを用いた手指ジェスチャ認識を利用した。深度カメラはRGBカメラに比べ手指認識の誤認識が少ない点が特徴だが、水が透明だと水面の高さ判定が難しい。これに対し、(a) の白濁剤の使用により深度カメラが水面を正しく認識できるようになるという効果がある。
【００３０】
また、水面に浮いた物体は水の流れに沿って移動する。よって、表示される情報も水の流れに沿って移動することで、情報を実物体のように扱うことができると考えられる。本実施形態では流体シミュレーションを適応することによって、流れに沿って情報が移動する水面ならではの自然な情報提示を目指す。
【００３１】
さらに、非特許文献１に記載のシステムのような赤外線を用いた接触認識は、実際の浴槽への設置を考えた場合、比較的複雑なハードウェアを必要とし、かつ水面の上下に対応しづらい。これに対し本実施形態では、プロジェクタと深度カメラとで構成されているため、設置も容易かつコストも比較的低い。
【００３２】
２．入浴時の身体動作を活かした対話手法の検討
テーブルトップのような従来の２次元かつ硬いサーフェスではタッチ操作が主流である。しかし、本研究で対象とする浴槽ディスプレイは表示媒体が液体であり、また利用者が中に浸かることに起因する特徴的かつ自然な操作が考えられる。本発明者は入浴中のさまざまな身体動作を検討した結果、特に以下の操作に着目した。
【００３３】
２．１ 水面下から指を突き出す(poking)
入浴時、手指は水中にあることが多い。この状態で水面に表示される情報を選択する場合、上からのタッチよりも水面下から指を突き出して選択することが自然かつ容易である。また、指を突き出すということは水面を貫くと言い換えられる。したがって、水面に表示されている情報を裏側から突き刺す動作は、情報のポインティング（選択）操作に直感的に結びつくと思われる。この動作は、空中に腕を上げる必要があるタッチ動作に比べ、水の浮力のため身体的負担が少ないのも利点の１つである。また、複数本の指を認識することで従来のサーフェスシステムにおけるマルチタッチ同様の操作も行える。さらに水中に指を引き込むなど水特有の他の操作への拡張も考えられる。
【００３４】
なお、本実施形態では従来のサーフェスシステムと同じ上からのタッチ動作によるポインティング（選択）操作も実装した。これは必ずしも水の特徴を活かした動作ではないが、水面に物体が浮いていたら、それを触る行為は一般的に行われる動作であると考えられることから直感的な操作ともいえる。また、利用者がタッチパネルへのタッチ操作に慣れていること、入浴時に手が水面の上に出ている状況もあることなども考慮した。
【００３５】
２．２ 水を流す（かく）(stroking)
水を手で流す（かく）動作も入浴中には一般的に行われる。実世界では水面に浮いているものを集めたり拡散させたりするのにこの動作を行う。本実施形態ではこの実世界での動作と直感的に結びつくように、水面に浮かぶ情報を集めたり拡散させたりする操作にこの動作を使用することとした。具体的には、水を流す動作をスクロールや動画の早送りや巻き戻しの制御といった情報が流れるような状況における情報操作に利用可能である。従来のサーフェスシステムにおいても、例えばサーフェス上に表示された仮想のカードを集める操作や動画の早送り・巻き戻し操作に似たようなジェスチャを使用したものがあったが、水中でのstrokingジェスチャにおいては水の抵抗による触覚フィードバックがあるため、より現実感のある操作が可能である。また、これも水面付近で手を動かすだけでいいので身体的負担も少ない。
【００３６】
２．３ 水をすくう(scooping)
水の上に浮かぶものをすくいあげて移動するという行為も一般的である。この「選択して移動する」という動作はGUI のドラッグ・アンド・ドロップに直感的に対応する。よって本実施形態では、この動作を、水面の情報を選択して移動する操作に対応させることとした。また、水は物理的なオブジェクトであるため、実物体を持つ触覚的な感覚に加え、映像投影による視覚的な効果で情報を手のひら上で持っている感覚が得られる。よって水面に投影された情報をすくい上げて選択する操作は、従来のＧＵＩよりも直感的な入力操作になると考えられる。
【００３７】
２．４ 水面を叩く(dumping)
子供の水遊び時など、水面を叩く動作がよく見られる。一般的なサーフェスシステムの場合、ディスプレイ破損の危険性や利用者の痛みから叩く動作は行われない。しかし、水面ディスプレイにおいてはこれが可能である。例えば、子供が水遊びをする時に水面を全力で叩くという動作を浴室やプールの中で行っていることがある。これも水ならではの身体動作であると考えられる。叩く動作によって水面にどのような変化が起こるのかを考えると、水面が大きく波打つということがあげられる。水面が波打つことによって水面へ投影した映像が乱れるので、直感的には情報を壊すような表現になる。したがって、叩く動作は、終了や削除という操作やアプリケーションモードからトップメニューへの復帰操作に対応させることが考えられる。
【００３８】
３．システム構成
図２は、本実施形態のインタラクティブシステム１の基本的な構成を模式的に示したものである。図に示したように、本システム１は、白濁した水２が蓄えられた浴槽３、白濁した水面上に映像を投影するためのプロジェクタ４、水面での手指操作を撮影する深度カメラ５、プロジェクタ４と深度カメラ５に接続されたPC６からなる。本システム１では、浴槽３を白濁剤を溶かした水２で満たし、浴槽３上方に設置したプロジェクタ４により映像を投影する。また、手指認識処理に用いる深度画像を取得するために同じく浴槽３の上部に深度カメラ５を設置する。PC６では、深度カメラ５から得た深度画像から手指の認識を行い、その認識結果に基づいて、ユーザによるジェスチャ操作内容を特定し、その操作に応じた情報をプロジェクタ４に描画させる。また、このインタラクティブシステム１を利用したアプリケーション特有の処理も行う。
【００３９】
なお、本実施形態の白濁した水２は本発明の「不透明状態の液体」、浴槽３は「液体槽」、プロジェクタ４は「投影表示手段」に各々対応する。また、深度カメラ５とPC６で行われる手指認識とジェスチャ操作内容の特定の処理は「ジェスチャ認識手段」に対応し、PC６で行われるこれらの処理は「ジェスチャ解析部」に対応する。また、PC６で行われるジェスチャ操作に応じた情報をプロジェクタ４に描画させる処理は「表示制御手段」に対応する。
【００４０】
ここで、浴槽３の水面をスクリーンとして用いるために、浴槽３の中にためた水２に対して白濁剤を利用し白濁させる。白濁剤としては、例えば、大日精化工業株式会社のＷＭＰ 478 ホワイトという粉末を利用することができる。この粉末は酸化チタンに対して入浴剤用の処理を施しているため、浴用化粧品への配合が認められている。酸化チタンは白色顔料や化粧品などの原料にも広く使われ、食品添加物としても認められている材料であるため、安全性の面で優れている。
【００４１】
なお、白濁剤の量については、視認性が良好となる程度の量を予め実験的・経験的に求めておけばよい。本発明者による実験では、表示対象が静止画や動画の場合、水５０リットルに対して１３〜１５グラム程度で良好な視認性が得られた。一方、表示対象が文字（１１ポイント程度）の場合、水５０リットルに対して５５グラム程度で良好な視認性が得られた。
ここで、浴槽３の中の水２は、白濁させて完全な不透明な状態であることが好ましいが、これに限らない。例えば、完全な不透明ではなく、やや透明であるような半透明の状態でもよいし、また、白濁に限らず、灰色や生成色や泥水のような褐色を有する半透明の状態であってもよい。即ち、静止画や動画等の表示内容が視認可能に投影できる状態であればよい。
【００４２】
プロジェクタ４には、例えばEPSON 社製のEB-1775W を用いることができる。このプロジェクタ４の輝度は3000 ルーメンで解像度は1280 ×800 である。
【００４３】
深度カメラ５には、例えばMicrosoft 社製のMicrosoft Kinect を用いることができる。MicrosoftKinect はMicrosoft 社製のゲーム機であるXbox 360 向けのゲームデバイスである。RGBカメラ、深度センサ、マルチアレイマイクロフォン、および専用ソフトウェアを動作させるプロセッサを内蔵したセンサがあり、プレイヤーの位置、動き、声、顔を認識することができる。これによりプレイヤーは自分自身の体を使って、直観的にビデオゲームをプレイすることができる。本システム１では深度センサのみを用いる。深度センサは赤外線光源によりドットパターンを照射し、赤外線カメラがドットパターンを読み取る。距離によってパターンの幾何学的な形状が変化するのでその変化を演算することにより、深度情報を取得することができる。赤外線を用いていることから照明変化に対する影響に強く、照明変化のある浴室環境でも使用可能である。Kinect で取得できる深度画像の解像度は640 × 480、画像取得のフレームレートは30fps である。30fps の速度の画像取得でもリアルタイム性は保持できると考えられる。
【００４４】
PC ６には、例えばApple 社製のMacBookPro（Intel Core i7 2。4Ghz、 Ram: 8GB) を１台用いることができ、後述するユーザインタフェース制御プログラムなどのソフトウェアプログラムにより、画像処理とアプリケーションの両方を同時に実行している。
【００４５】
本実施形態では、PC ６で実行されるソフトウェアのプログラミング言語としてC ＋＋を用いた。深度画像の取得処理のためには、例えばPrimeSense 社より公開されているOpenNI ライブラリを用いることができる。また、深度画像から手指認識を行う処理のためには、例えばOpenCV ライブラリを利用することができる。OpenCV はIntel 社により公開されているComputer Vision のための画像処理ライブラリである。アプリケーションの処理のためには、例えばOpenFrameworks を用いることができる。OpenFrameworksはOpenGL を用いたグラフィクスの描画、BGMを流すなどの音声の処理、動画の再生処理、通信などの機能が用意されており、様々な処理を容易に実装することができる。
【００４６】
さらに、流体シミュレーションの処理には、例えばOpenFrameworksの追加機能であるofxMSAFluid ライブラリを利用することができる。
【００４７】
４．手指認識処理
本システムでは水面付近での手指の動作を入力として用いる。手指を認識する手法としては、RGB カメラを用いて、肌色に近い領域を抽出し、手指を検出する手法が知られているが、照明変化の影響もあり非常に不安定である。深度カメラを用いた手法では、照明変化による影響に強いことに加えて、手指の3 次元の動きも計測できるため3 次元的なジェスチャの認識も可能となる。よって本システムでは浴槽上方の深度カメラから得られた深度画像により、手指を認識する手法を用いている。本システムでは、手と指先を区別して認識すること可能である。また、指に関しては水面下から突き出される指と水面上から水面に触る指をそれぞれ分けて認識することができるようになっている。
【００４８】
図３は、本実施形態における手指認識処理の概要を示したフローチャートである。まず、図3には示されていないが、事前処理としてキャリブレーションを行い、プロジェクタで投影された画像の４頂点と、深度カメラ で取得された画像の４頂点を対応させておく。次に、深度カメラから取得された深度画像（Ｓ１０１）に対して、あらかじめ取得された背景の深度画像と背景差分を行い（Ｓ１０３）、2 値化を行う（Ｓ１０５）ことにより、前景画像を取得する。前景画像に対してラべリングによる領域抽出を行い、面積を算出する（Ｓ１０７）。面積から手指を区別し、それぞれに対してトラッキングを行う（Ｓ１０９）。得られた手指のデータからジェスチャの認識を行い（Ｓ１１１）、それに基づいて結果の表示、すなわち、その操作に応じた情報のプロジェクタへの描画指示を行う（Ｓ１１３）。この一連の処理をシステムが終了するまで繰り返し行う（Ｓ１１５）。
【００４９】
４．１ キャリブレーション
事前の処理としてカメラ座標とディスプレイ座標との変換を行うため、射影変換を用いたカメラキャリブレーションを行う必要がある。この処理は、図４に示したように、深度カメラで取得した画像中にあるプロジェクタによる表示領域の４頂点（図４右）を、取得画像自体の4 頂点（図４左）に対応させる変換行列を用いて射影変換を行う。原画像の座標（x、 y）と変換後の座標（x′、 y′）における射影変換の一般式は次のようになる。
【数１】
2014238828.tif 000003
この式中のa0 からa8 までの9 個の独立した未知係数が得られる。射影変換を行う際には変換元と変換後の4 頂点の対応付けが行えれば、連立方程式からこれらの未知係数を求めることが可能である。検出された手指の中心の座標に対して変換行列によって変換を行うことで、水面ディスプレイでの座標と手指の中心の座標が一致する。
【００５０】
４．２ 距離画像の背景差分と２値化
背景差分を行うためにあらかじめ深度カメラ画像の画角内に手が入っていない状態での深度画像を取得する（図５）。この時取得される深度は水面の深度である。この水面の深度画像を背景画像として用い、ジェスチャ動作中の各フレームでの入力深度画像（ジェスチャ画像；図６）と背景画像の差分を取ることで前景画像が取得できる。この前景画像では水面との差がある、つまり水面上に存在する物体が検出される。なお、図６の入力深度画像の例では、点線で丸印を付した部分に水面上の物体（手）が表されており、前景画像では、この水面上の物体が表されている。次に、ユーザの体の動きによって水面が波立ち水面の深度値が細かく変わりノイズになることに対処するために、例えば差分値が2cm以上と閾値を決めて2 値化を行う。この処理により、水面上に存在する物体の2値画像が得られる（図７）。
【００５１】
４．３ 領域抽出と面積計算
前の処理で得られた2 値画像は複数の領域が検出されるため領域を分割する必要がある。得られた2 値画像に対し、輪郭線抽出処理を行うことで、2 値画像中の連結領域の境界をチェーンコード化し、領域の輪郭情報を検出する。図８を参照して、領域抽出するための具体的なアルゴリズムを以下に示す。
(1) 入力画像を端から順に走査し、最初に現れた物体領域を最初の輪郭画素とする。
(2) 見つけた輪郭画素と隣接する領域を左回りに調べ、先と同様に最初の物体領域を輪郭画素とする。
(3) 中心を新たに見つけた輪郭画素に移動し、再び隣接する領域を調べる。
(4) 上記の操作を開始点に戻るまで繰り返すことで得られた閉曲線を輪郭とする。
得られた輪郭領域内の画素数を取得することによって領域の面積を取得することができる。
【００５２】
４．４ 手と指の区別
手と水面下から出る指の区別は、抽出された領域の面積で行う。手の領域は指の領域と比較して面積が大きくなることから、単純な閾値処理によって手と指の領域を区別している。ここで用いる閾値は経験的に決めた値である。図９Ａは認識対象の手（左側）と指（右側）の実際の状態を表しており、図９Ｂは、２値画像における手（左側）、指（右側）の領域を表したものである。
【００５３】
４．５ 領域の重心と慣性主軸の算出方法
次に領域の中心点の算出方法について述べる。本実施形態では領域の中心座標に領域の重心を用いる。以下に領域の重心位置と慣性主軸の算出方法を述べる。これらは、画像のモーメントを用いており、座標(x, y) での画素値をｆ (x, y) と表すと、座標(x, y) におけるｆ (x, y) の(p + q) 次のモーメントは次のような式で求められる。
【数２】
2014238828.tif 000004
ちなみに、0 次のモーメントm0,0 は
【数３】
2014238828.tif 000005
となり、領域の面積を示す。重心座標を（xG, yG）とすると、領域の重心座標は以下のような式で求められる。
【数４】
2014238828.tif 000006
また、
【数５】
2014238828.tif 000007
とすると、慣性主軸の角度は、
【数６】
2014238828.tif 000008
と表すことができる。慣性主軸は図形が伸びている方向を表す特徴量であり、腕の傾きを算出できる。
【００５４】
４．６ 手領域の切り出しの中心座標の検出
得られた腕領域画像において領域の重心座標は手首付近になってしまい、手の中心として用いることができない。そこで2 値画像の腕領域の中から手の領域だけを切り出す必要がある。そこで腕の出ている向きを利用して手の領域を検出する。腕の向き識別は、手領域が認識に利用しているエリアの各辺に接している点から10pixel 分中心に近い点までの点の中で、どの点と交差しているかにより行う。図１０に方向検出のイメージ図を示す。
【００５５】
手が伸びている方向の末端が指先となることから、その点を基準にあらかじめ決めた手の縦幅の閾値で領域を切り取ることにより手領域を抽出できる（図１１)。カメラから見える手の縦幅は手の高さによって変動するので深度値によって動的に変化させる。切り取られた手領域の重心を計算することによって手の中心座標を求める。
【００５６】
４．７ 手指の対応づけ（トラッキング）
検出されたものを対応づける前フレームで検出された手と、現在のフレームで検出された手の対応関係を調べる。直前のフレームから今のフレームで検出された手の位置に近い手を探すことで、手の対応づけが行うことができる。まず前フレームで検出されたすべての手の位置と、現在のフレームで検出された全ての手の位置の距離をそれぞれ調べ、5cm以内のもっとも位置の近い手を同じ手として判断する。また、現在のフレームで検出された腕について、前フレームにおいて位置の近い手が発見できなかった場合には、これを新しく検出された手であるとみなす。逆に、前フレームで検出された腕で、現在のフレームで位置の近い腕が見つからなかった場合は、この腕は無くなったものとみなす。これを行うことで、手が複数本検出された場合にもそれぞれ個別に手の追跡が可能である。
【００５７】
突出した指や水面上から接触した指についても同様の処理で前フレームとの関係性から対応付けを行う。指の場合は2 本指を突き出すような動作を考えると検出される2 本の指間の距離が近くなることが予想されるので、前フレームと比較し2cm 以内で最も位置の近い指を同じ指として判断する。
【００５８】
４．８ 水面変化によるノイズへの対応
ユーザが浴槽内にいる場合、ユーザの体の動きによって水面の深度値は細かく変化してしまうので、背景差分によって得られた2 値画像にノイズが発生してしまう。このような細かいノイズは水面下から突き出した指として誤認識してしまう可能性があり問題である。水によるノイズは現フレームで検出されていたとしても、数フレーム後には検出されなくなる一方で、指は随時検出され続けるので、0.2 秒以上検出され続けた領域を指領域として認識することにしている。
【００５９】
４．９ 背景画像の更新
入浴者の体の動きによって背景差分の基準面である水面の深度値が変化するので、背景差分ができなくなってしまう。例えば、肩まで浸かっている状態から上半身を水面上に出した場合は、水位が急激に下がるので深度値が変化してしまう。この問題に対処するために、認識に使用している領域の8 割以上が背景の深度値と比較して3cm 以上変化している場合深度画像を取得し、背景画像を更新する。これにより、お湯につかる、体を出すなどの水面の全体的な深度が急激に変わる場合に対処可能となる。
【００６０】
５．ジェスチャの種類とその認識アルゴリズム
本システムでは、第２項で検討した水面付近における身体動作をインターフェースとして用いるためにどのように実装するのかを述べる。具体的には、手指認識で得られる、手の中心座標、手の深度情報、手の面積の大きさ、水面から突き出した指の中心座標、水面下から突き出した指の深度情報を利用し、以下のジェスチャの認識を行う。
【００６１】
５．１ 水面下から指を突き出すジェスチャ
指を使った動作は操作点が小さいので水を流す動作やすくう動作と比較して細かい操作が行える。例えばアイコンを突き刺すことによるGUI を用いた操作ということも可能である。突き出した指は複数本検出できることからジェスチャとして考えられるのは、マルチタッチスクリーンにおけるマルチタッチジェスチャと似た操作である。指を１本突き出すことによるポインティングや指を2 本突き出すことによるピンチのジェスチャを本システムでは用いることにする。検出アルゴリズムとしては、指認識で得られた結果から指それぞれにID を割り振り、対応付けられた指のデータからアイコン上で指が何本突き出されているかを認識する。対応付けられた指の前フレームと今のフレームの座標差から移動量を算出することでジェスチャの認識を行っている。
【００６２】
５．２ 水を流すジェスチャ
水面付近の身体動作において、水を流す動作は非常に自然な動作でありスクロールや情報の全体的な移動、動画の制御などに利用することにする。水を流す動作において、手の下部は水の中に入っていて、上部は水面上に出ており、手は傾いている状態である。よって認識において手の深度が水面付近であること、傾いていることの判定と手の中心座標の動きの推移が重要な要素になってくる。本システムでは実装として、手の座標、深度、面積を用いて認識を行う。
【００６３】
図１２ に認識処理のフローチャートを示す。以下に認識処理の流れを説明する。まず、認識された手のデータから水面からの深度が6cm 以下の手領域を探す。手を傾けていない場合と比べて傾いている際には手の領域面積が小さくなるため傾けているかどうかが判断できるため、この領域の中で面積の大きさが一定の閾値以下のものを探す。この状態になった時に手の中心位置の前フレームと現フレームの差を比較してどちらの方向に手が動いたのかを算出し、水を流している方向として用いる。
さらに、水を流すジェスチャの認識処理について、図１２のフローチャートを用いて詳細に説明する。
まず、ＰＣ６は、手指認識を行うことにより、手の中心座標、手の深度情報、手の面積の大きさを取得する（Ｓ２０１）。
そして、取得した手の深度情報に基づいて、手が水面近くにあるか否かを判定する（Ｓ２０３）。具体的には、取得した手における水面からの深度が６cm以下の画像あれば手が水面近くにあると判定する。
Ｓ２０３において、手が水面近くにあると判定された場合（ＹＥＳ）、手が傾いているか否かを判定する（Ｓ２０５）。例えば、手の領域を囲む矩形のアスペクト比（ここでは、短辺の長さに対する長辺の長さの比）が所定の閾値Ｔｈ１以上であれば、手が傾いていると判定し、短辺の長さに対する長辺の長さの比が所定の閾値Ｔｈ１未満であれば、手は傾いていないと判定する。
Ｓ２０５において、手が傾いていると判定された場合（ＹＥＳ）、前フレームにおける手の中心座標と現在のフレームにおける手の中心座標とを比較することにより、前フレームとの距離差を算出すると共に、手が移動した方向を特定する（Ｓ２０７）。前フレームとの距離差があれば、前フレームにおける手の位置から現在のフレームにおける手の位置まで手が移動していると判定できる。
そこで、ＰＣ６は、流すジェスチャを使用する（Ｓ２０９）。これにより、後述するように、流体シミュレーションを用いることで、流すジェスチャに応じて水面に表示された情報が流れるように移動させることができる。
このように、Ｓ２０１〜Ｓ２１１の処理を繰り返し実行することにより、水を流すジェスチャを認識することができる。
【００６４】
５．３ 水をすくうジェスチャ
水面付近での身体動作において、水をすくう動作は非常に自然な動作であり、水面に浮かんでいる物体を移動するというドラッグの操作に用いることとする。人間が水をすくう動作を行う際には、初めに水面付近で両手を合わせることで手の中に水をため、その後手を水面上に動かすことですくいあげる。両手を合わせた状態のまま手の位置を動かすことで移動を行い、両手を離すことで水を望んだ位置に流し落とすという一連の流れですくい流すという動作を行っている。この動作を画像処理によって認識する手法を以下に説明する。
【００６５】
図１３に認識処理のフローチャートを示す。まず、すくい動作の認識手法を述べる。すくい動作を認識する上で利用する情報は手の深度値と領域面積である。すくい上げを開始の際には、手の深度値が水面付近になることに加えて、手を合わせた状態において認識される手の面積は片手の場合と比較して非常に大きくなる。よって、水面からの深度が6cm以下かつ、領域面積が閾値以上になった時にすくい上げている状態として認識し始める。ここで用いる閾値は両手を合わせた時の領域面積から経験的に決定した値である。すくい上げている状態の間はすくい上げた情報の中心座標を手のひらの中心座標に更新することで手の上に情報が表示される。次に、流し落としの認識手法について述べる。水を流し落した時には、片手の手領域が2 つ検出される。よって検出される領域面積が手を合わせた時と比べて小さくなるので、領域面積が両手領域での閾値以下になった時に流し落としたと認識し、すくい上げ状態を終了する。
さらに、水をすくうジェスチャの認識処理について、図１３のフローチャートを用いて詳細に説明する。
まず、ＰＣ６は、手指認識を行うことにより、手の深度情報、および手の面積の大きさを取得する（Ｓ３０１）。
そして、すくい上げている状態か否かを判断するフラグScoopFlgが“True”になっているか“False”になっているかを判定する（Ｓ３０３）。初期値としてはScoopFlgは、“False”に設定されている。
ScoopFlgが、“False”に設定されている場合、ＰＣ６は、取得した手の深度情報に基づいて、水面近くに手があるか否かを判定する（Ｓ３０５）。具体的には、取得した手における水面からの深度が６cm以下の画像あれば手が水面近くにあると判定する。
Ｓ３０５において、水面近くに手があると判定された場合（ＹＥＳ）、取得した手の面積の大きさに基づいて、両手を近づけた状態か否かを判定する（Ｓ３０７）。具体的には、手の領域面積が所定の閾値Ｔｈ２以上の場合、両手を近づけた状態であると判定し、手の領域面積が所定の閾値Ｔｈ２未満の場合、左右の手が離れた状態であると判定する。
Ｓ３０７において、両手を近づけた状態であると判定された場合（ＹＥＳ）、水をすくい上げている状態に入ったと判断できるので、ＰＣ６は、ScoopFlgを“True”に設定する（Ｓ３０９）。
そして、システムが終了していない場合（Ｓ３２０；ＮＯ）、処理をＳ３０１に移行した後、再度、ScoopFlgが“True”になっているか“False”になっているかを判定する（Ｓ３０３）。このとき、Ｓ３０９において、ScoopFlgが“True”に設定されているので、処理をＳ３１１へ移行する。
Ｓ３１１において、ＰＣ６は、Ｓ３０７の処理と同様に、取得した手の面積の大きさに基づいて両手を近づけた状態か否かを判定する。
Ｓ３１１において、両手を近づけた状態であると判定された場合（ＹＥＳ）、水をすくい上げている状態が継続していると判断できるので、ＰＣ６は、すくい上げ状態での処理を実行する（Ｓ３１３）。
一方、Ｓ３１１において、両手を近づけた状態ではない判定された場合（ＮＯ）、両手が離れた状態と判断できるので、ＰＣ６は、両手から水が流れ落ちる状態、すなわち流し落としとして認識し（Ｓ３１５）、ScoopFlgを“False”に設定する（Ｓ３１７）。
【００６６】
５．４ 水面をたたくジェスチャ
水面を叩くジェスチャは終了や削除といった操作に利用する。人間が叩く動作を行う際はまず予備動作として叩く面の上方で手を静止させる。その後、勢いよく水面に向かって手を動かす。この一連の流れで叩く動作は行われる。この流れを画像処理により認識する。
【００６７】
図１４に認識処理のフローチャートを示す。まず、叩く動作の待機状態の検出手法について述べる。叩く動作を行う前の手の状態は水面の上方で手のひらが水平になっている。このことから、手の深度が水面の深度より15cm 以上高い状態で、面積が閾値以上になった時に叩く動作の待機状態であるとして検出する。ここで用いる閾値は、手を水平にした時の領域面積から経験的に設定した。また、手の高さによってカメラから見える手の領域面積は変動するので高さによって閾値を変動させている。
【００６８】
叩き動作の検出については、予備状態になってから高速で水面に手を近づけるので、予備状態が検出されてから1 秒以内の動作を用いて検出を行う。この時間内において、手の深度が水面から5cm 以内かつ10 フレーム前と現在の手の深度の差が5cm 以上になった時に叩くジェスチャと判定する。
さらに、水面をたたくジェスチャの認識処理について、図１４のフローチャートを用いて詳細に説明する。
まず、ＰＣ６は、手指認識を行うことにより、手の深度情報、および手の面積の大きさを取得する（Ｓ４０１）。
そして、たたくジェスチャが待機状態であるか判断するフラグBangReadyが“True”になっているか“False”になっているかを判定する（Ｓ４０３）。初期値としてはBangReadyは、“False”に設定されている。
BangReadyが、“False”に設定されている場合、ＰＣ６は、取得した手の深度情報に基づいて、手の深度が水面から15cm以上離れているか否かを判定する（Ｓ４０５）。
Ｓ４０５において、手の深度が水面から15cm以上離れていると判定された場合（ＹＥＳ）、取得した手の面積の大きさに基づいて、手が水面に対して水平になっているか否かを判定する（Ｓ４０７）。具体的には、手の領域面積が所定の閾値Ｔｈ３以上の場合、手が水面に対して水平になっていると判定する。
Ｓ４０７において、手が水面に対して水平になっていると判定された場合（ＹＥＳ）、水面を叩くために待機している状態、即ち、水面をたたくジェスチャに入ったと判断できるので、ＰＣ６は、BangReadyを“True”に設定する（Ｓ４０９）。
そして、システムが終了していない場合（Ｓ４３０；ＮＯ）、処理をＳ４０１に移行した後、再度、BangReadyが“True”になっているか“False”になっているかを判定する（Ｓ４０３）。このとき、Ｓ４０９において、BangReadyが“True”に設定されているので、ここでは処理をＳ４１１へ移行する。
そして、Ｓ４１１において、待機状態になってから１秒以内であれば（Ｓ４１１；ＹＥＳ）、ＰＣ６は、取得した手の深度情報に基づいて、水面近くに手があるか否かを判定する（Ｓ４１３）。具体的には、取得した手における水面からの深度が６cm以下の画像あれば手が水面近くにあると判定する。
Ｓ４１３において、水面近くに手があると判定された場合（ＹＥＳ）、手が待機状態にあった位置から水面まで降下したことになる。
そこで、ＰＣ６は、数フレーム前における手の深度と、現在のフレームにおける手の深度との差が大きいか否かを判定する（Ｓ４１５）。
Ｓ４１５において、数フレーム前における手の深度と、現在のフレームにおける手の深度との差が大きいと判定された場合（ＹＥＳ）、手が勢いよく水面に向かって降下されていると判断できるので、ＰＣ６は、叩くジェスチャを使用する（Ｓ４１７）。これにより、後述するように、流体シミュレーションを用いることで、叩くジェスチャに応じて水面に表示された情報が乱れる様子を表現することができる。
そして、ＰＣ６は、BangReadyを“False”に設定する（Ｓ４１９）。
一方、Ｓ４１１において、待機状態になってから１秒を越えると（Ｓ４１１；ＮＯ）、叩くジェスチャではなく、単に手が待機しているだけであると判断できるので、ＰＣ６は、BangReadyを“False”に設定する（Ｓ４２１）。
【００６９】
５．５ 水面上からのタッチの検出
本システムでは、水面下からの指の突出しと水面上からのタッチを区別して認識可能である。水面上からのタッチの検出方法を以下に述べる。
【００７０】
水面上からのタッチにおける指の領域は抽出された手の領域中に含まれていることに加え、深度値は水面に近い値になっている。よって手領域中にある領域の中で水面からの深度が2cm から4cm 以内で、面積が指認識のための閾値以下であれば上部から接触した指であるとして認識を行う。タッチ位置は指領域の中心座標を用いることにする。
【００７１】
６．流体シミュレーション
本システムでは水面をディスプレイとして用いていることから、投影される個々の情報を実物体が浮遊するように表示することで、実物体（水や浮かんでいるもの）と仮想物体（投影される情報）を一体化した拡張現実感を得られるのではないかと考えられる。既存のテーブルトップディスプレイにおいては物理シミュレーションを適応することにより実世界に近いインタラクションを行うことが提案されている。そこで、水環境においては流体シミュレーションを適用することでリアルな情報提示を試みる。流体シミュレーションの様子を図１５に示す。
【００７２】
本システムでは水面に情報が表示されるので、情報が水面に浮かんでいるとユーザに知覚させることができる。浮かんでいる情報に対して流体シミュレーションを適応することによって、シミュレーションの結果に伴い情報が流れるように移動するので、水を流すことによって移動させるといった水面に浮いている実物体に対する操作と同等なことをデジタルな情報に対しても行える。インタラクションとして、左から右に大きく流す動作をすると情報全体が右に流れたり、水をかき集めるように手を動かすことで情報を一気に集めたりすることが可能になる。本システムでは流体シミュレーションのためにOpenFrameworks の追加機能であるofxMSAFluid ライブラリを利用するが、他の公知の手法を用いてもよい。このライブラリでは仮想的な流体を用い、粘性や拡散のスピードを指定して、２次平面上での流体シミュレーションを行うことができる。処理としても十分にリアルタイムで動作するので、本システムに導入するのに好適である。
【００７３】
流体シミュレーションによる処理の流れを以下に示す。
(1) 流す動作による流体の追加
(2) 流体の更新
(3) シミュレーション結果の適応上の処理を毎フレーム繰り返し行うことにより、表示された情報へ流体シミュレーションを適応している。入浴時において水の流れは手で流す動作により生成されているので、流すジェスチャを流体の追加に用いる。流すジェスチャが検出されたら、手領域の各ピクセルの座標に流体を追加する。この時の流体の初期スピードは前フレームと現フレームの差を用いている。その後、粘性や拡散のパラメータに応じて流体の座標と進行方向のベクトルが変化する。流体シミュレーションでは各座標での流れのベクトルが取得できるので、流体シミュレーションを適応するオブジェクトの座標での流れのベクトルを用いて、オブジェクトの座標を更新する。これらの処理により、水面上に浮いている情報が水の流れに沿って移動するような表現が可能となる。
【００７４】
７．アプリケーション
以下では、本システムを用いた応用例について説明する。
【００７５】
７．１ ウォータートップ
現在のPC の一般的ユーザインタフェースであるデスクトップシステムでは情報がアイコンとして表示されており、各アイコンをマウスや指によって操作する。このデスクトップにおけるメタファーを水面に拡張したウォータートップシステムを実現する。従来のデスクトップでは一定の位置に情報が表示され続けるが、ウォータートップでは、流体シミュレーション機能を利用し、水の流れに応じて情報が水面を浮遊しているように表示される。また、浮遊している情報を手指のジェスチャ入力によって選択や消去、フルスクリーンでの閲覧が可能になっている。なお、表示に利用した情報は静止画像と動画を用いた。ウォータートップの外観を図１６ に示す。図１６の左側はメインモードのトップメニューを示している。トップメニューに表示されている情報をすくい、再生用のアイコンに流し落とすことによって、トップメニューから、図１６の右側のフルスクリーンモード（アプリケーションモード）へ遷移し、叩くジェスチャによってフルスクリーンモードからトップメニューへ遷移する。トップメニューとフルスクリーンモードではそれぞれ手指の動作によってインタラクションが可能となっている。例えば、トップメニューに表示されているアイコンをすくい、フォルダアイコン、ゴミ箱アイコン等に落とす操作ができる。
【００７６】
なお、本発明者は、実験により、水面に表示されるアイコン等のオブジェクトの大きさは直径３cm程度あれば十分に選択操作が可能であるとの知見を得ている。
以下、各モードでのインタラクションについての詳細に述べていく。
【００７７】
７．１．１ 指の突出しを利用したインタラクション
指の突出しはポインティングの操作に用いている。流すやすくうなどは動きが大きい動作であるので細かい操作を行うのには適していない。よって指の突出しはポインティングによるファイルへの細かい操作に用いることにする。また、複数本の指を用いたマルチフィンガーでのジェスチャが可能である。
【００７８】
表示された画像や動画の下から指を一本突き出すことによって、そのファイルを選択し移動することができる。水面上に浮いている情報を水面下から指で突き刺し、突き刺したまま移動するような操作方法になっている（図１７）。また、動画像の下から指を2 本突き出し、各指間の距離を変える動作は画像のズームに用いることにする。この動作はマルチタッチディスプレイにおけるピンチングジェスチャに近い動作である。操作イメージとしては、画像や動画を2 本指で突き刺し、指間の距離を広げることで拡大（図１８；左から右へ）、縮めることで縮小（図１８；右から左へ）といった操作に用いる。また、写真や動画の下から突き出されている指の本数に応じて画像周りの枠の色を変えることで（例えば１本なら赤、２本以上なら青）、ユーザに指の本数を認識させることにした。
また、停止、音量の調整や再生位置の細かい操作についてはアイコンやスライダを指の突出しによるポインティングで操作する。
【００７９】
７．１．２ 流す動作を利用したインタラクション
流すジェスチャによって流れを追加し、流体シミュレーションを画像や動画に適応することで、一度に情報全体を移動させることが可能である。例えば、水をかき集める動作を行うことで情報が自身の手元に集まったり、左から右に流すことによって右側に情報をすべて集めたりといった操作が可能である（図１９）。また、流体シミュレーションによって自動的に情報が動くので、情報が水面に浮かんでいるような表現が可能となっている。これにより、実世界に近い自然な情報表示が行えるので、ユーザに実世界とバーチャルがシームレスにつながった情報提示が実現できていると考えられる。
【００８０】
また、アプリケーションモード、特に動画のフルスクリーン再生時には、この動作によって動画の早送り、逆送りが行える。具体的には、右方向に流すと動画が先に進み（図２０；左から右へ）、左方向に流すと動画が戻る（図２０；右から左へ）。動画が再生していく過程は情報が流れているようなものであるため、水を流す動作により、早送りや巻き戻しを行うというのは直感的で分かりやすい操作であると考えられる。なお、このジェスチャは直感的な操作ではあるが、細かな動画のフレーム制御には向かない。そこで下方にスライダをも表示し、前述の突出し動作によるポインティング操作でスライダを操作し、動画のフレーム移動ができるようにもなっている。
さらに、トップメニューで表示されていた画像を流すジェスチャでスクロールしながらフルスクリーンで閲覧することができる。
【００８１】
７．１．３ すくう動作を利用したインタラクション
すくうジェスチャは情報を特定の場所へ移動する操作に用いる。情報をすくって再生アイコンに流し落とすことで動画の再生、フォルダに流し落としフォルダ内に移動、浴槽外に流し落とすことで削除といった操作を実装した。図２１にすくう動作によって動画の閲覧を開始するまでの流れを示す。すくい上げの判定に関しては、すくうジェスチャが認識された時に、オブジェクトが手領域の中に存在すればそのオブジェクトをすくい上げたと判定した。流した落した際の情報の座標はジェスチャの検出が終了する１フレーム前の手の座標を用いた。
【００８２】
７．１．４ 叩く動作を利用したインタラクション
アプリケーションモードにおいて叩く動作を行うと、水面の表示が乱れるので、その映像がもういらないものであるという直感的イメージに基づき、そのアプリケーションが終了し、ウォータートップのメインモードに戻る。
【００８３】
７．２ ゲーム
スマートフォン等の情報機器で人気のあるアプリケーションの１つはゲームであろう。
本システムの目的は、浴室にスマートフォン等を持ち込まなくても同等なことができる環境の実現であるから、複数のゲームの実装も行った。その際、今までのコントローラを利用したゲームとは違う水特有のインタラクションを利用するようなコンテンツを開発した。
【００８４】
７．２．１シューティングゲーム
水面下から指の突出しと指を倒す動作により自身の指から弾を発射し、敵に当てるシューティングゲームを作成した（図２２)。指を水面上に突き出すと指の周りをまとうようにエフェクトが表示され、この状態のまま指を倒すと倒した方向に弾を撃つことができる。弾を撃つことによって画面上に現れる敵を倒して遊ぶことができる。また、実物体（例えば、お風呂で使用される子ども用のアヒルのおもちゃ）を敵（攻撃対象）として利用することにより、よりリアリティのあふれるゲームが実現できる。このとき、実物体はカメラで位置をトラッキングしており、攻撃操作に対して、その位置に応じた反応をする。指の認識は何本でも可能で、多人数で同時に遊ぶことも可能である。
【００８５】
弾の発射については検出された指が倒れたことを認識して行っている（図２３）。指を突き出すと指にエフェクトが表示される。この時に弾が発射可能な状態になっている。指を倒す動作を行うと指が水面下に消えるので、指の検出が終了する。この挙動を利用し、指の検出が終了する直前の指の座標と消える10 フレーム前の指の座標の差を取ることにより、弾が発射される方向と速度を決定している。
【００８６】
７．２．２ 金魚すくいゲーム
水面上に表示される金魚を時間内に何匹すくえるかを競うゲームを作成した。金魚すくいは水の中の金魚をすくいあげるゲームなので、実際に手ですくって、落とすことができるという点で実世界のゲームをデジタル技術で再現できている。また、すくうという水の特性を活かした入力を有効活用できている。さらに、CG の仮想的な金魚を、実際の水とともに手ですくうという操作が、実世界と仮想世界を融合したゲームとして実現されている。図２４にゲームを行っている様子を示す。
【００８７】
すくいジェスチャの認識時に手のひらの領域内に金魚がいるかどうかですくったかどうかを判定している。すくった状態のまま表示された桶の上で、手を広げて流し落とすことで捕まえた金魚の数をカウントする。
【００８８】
７．２．３ 流す動作を利用したホッケーゲーム
流すジェスチャによって流体シミュレーションの流れを作り、水面に浮かんでいるボールを敵のゴールにいれるという対戦型のホッケーゲームを作成した。流体シミュレーションの結果に基づいて、流れに乗ってボールが動くので本当に水面に浮いている物体を流しあっているような感覚が得られる。流体シミュレーションによる流れの表現と水を流すという水特有の入力を利用することにより、水環境特有の新しいゲームが作成できた。図２５にゲームを行っている様子を示す。
【００８９】
このゲームでは、流す動作により、流体シミュレーションに流れを追加する。ユーザは手を動かし、流れを作るという非常にシンプルな入力でゲームを遊ぶことができる。
７．２．３ 火の玉シューティングゲーム
両手を用いて火の玉を飛ばすことで敵を倒すゲームである、火の玉シューティングゲームを実現することができる。
図２６は、浴槽３の水面上にある手を上方から見た図であり、火の玉シューティングゲームにおいて、火の玉を飛ばす動作を説明した図である。（ａ）は、両手の準備動作を示しており、（ｂ）は、火の玉を飛ばしている様子を示している。
図２６（ａ）に示すように、水面上で右手１１ａと左手１１ｂとを水面に対して傾けた状態で、右手１１ａをＡ１方向に移動すると共に左手１１ｂをＡ２方向に移動し、図２６（ｂ）に示すように、手の付け根である両手の手根部を合わせた状態で数秒間維持する。このとき、ＰＣ６は、右手１１ａおよび左手１１ｂそれぞれに対して、手の領域を囲む矩形のアスペクト比（ここでは、短辺の長さに対する長辺の長さの比）が所定の閾値Ｔｈ１以上であれば、手が傾いていると判定し、この傾いている２つの手が接触して数秒間維持することで、火の玉発射の準備が整ったと判定する。
そこで、ＰＣ６は、右手１１ａおよび左手１１ｂの手の平の近傍の位置に、火の玉１２ａを投影させる。このとき、初めは小さい円形状の火の玉とし、除々に直径を大きくして投影させてもよい。
そして、右手１１ａおよび左手１１ｂが、押し出すようにＢ１方向に移動されると、ＰＣ６は、流体シミュレーションを用いて、火の玉１２ａをＢ３方向に移動させ、火の玉１２ｂに示すように、右手１１ａおよび左手１１ｂから離れさせる。これにより、右手１１ａおよび左手１１ｂから火の玉１２ａが発射される。
このように、右手１１ａおよび左手１１ｂの動きに応じて、火の玉１２ａを水面上に投影し、発射させることにより、火の玉シューティングゲームを実現することができる。
また、図示しないが、火の玉が発射された先に、敵キャラクターを投影させ、火の玉が敵キャラクターに命中すると、敵キャラクターが爆発した映像を投影した後、敵キャラクター消去するようにしてもよい。
さらに、火の玉が敵キャラクターに命中した際、敵キャラクターの爆発を模擬して、水面から水しぶきをあげるようにしてもよい。
図２７は、水しぶきをあげるように構成した浴槽３の平面図である。
図２７に示すように、浴槽３の底面には、複数の爆発エフェクト用スピーカ３ａと、複数の触覚フィードバック用スピーカ３ｂとが設置されている。図示しないが、これらのスピーカは、ＰＣ６と電気的に接続され、ＰＣ６からの指示にしたがって、振動を発生する。
爆発エフェクト用スピーカ３ａは、ＰＣ６からの指示にしたがって、火の玉が敵キャラクターに命中した際、オンする。
触覚フィードバック用スピーカ３ｂは、ＰＣ６からの指示にしたがって、火の玉が発射されたときに、オンする。
図２８は、水しぶきをあげる状態を説明した図である。
図２８に示すように、具体的には、爆発エフェクト用スピーカ３ａのそれぞれには、水面と平行な平面（ｘ−ｙ平面）において、所定の命中領域３ａａが設定されている。そして、ＰＣ６は、敵キャラクターを水面上に表示しているときに、火の玉１２ａの位置座標が、敵キャラクターが表示されている命中領域３ａａ内に入ったと判定した場合、火の玉１２ａの位置座標が入った命中領域３ａａに対応する爆発エフェクト用スピーカ３ａをオンにする。これにより、爆発エフェクト用スピーカ３ａから振動が発生し、この振動により爆発エフェクト用スピーカ３ａの上方の水面から水しぶき２ａが発生するので、まるで、火の玉が敵キャラクターに命中したときに、爆発して水しぶき２ａがあがったような演出を行うことができる。
さらに、触覚フィードバック用スピーカ３ｂのそれぞれには、水面と平行な平面（ｘ−ｙ平面）上において、所定の触覚領域３ｂａが設定されている。そして、ＰＣ６は、火の玉１２ａを発射したときの手の位置座標が触覚領域３ｂａ内に入ったと判定した場合、火の玉１２ａを発射した位置座標を含む触覚領域３ｂａに対応する触覚フィードバック用スピーカ３ｂをオンにする。これにより、触覚フィードバック用スピーカ３ｂから振動が発生し、この振動が火の玉１２ａを発射した手に伝わるので、ゲームのユーザは、発射したときの衝撃を体感することができる。
なお、触覚フィードバック用スピーカ３ｂは、指向性スピーカを用いてもよく、この場合、火の玉１２ａを発射したときの手の位置座標が触覚領域３ｂａ内に入ったと判定した場合、触覚領域３ｂａの近傍に設けられた触覚フィードバック用スピーカ３ｂをオンにすることにより、火の玉１２ａを発射した位置座標を含む触覚領域３ｂａに向かって発振する。これにより、複数の触覚フィードバック用スピーカ３ｂを用いて、ゲームのユーザに振動を伝えることができるので、ユーザに対してより効率的に火の玉を発射したときの衝撃を感じさせることができる。
【００９０】
８．まとめ
以上のように、本実施形態のインタラクティブシステムは、浴槽内の水面を大型ディスプレイとして用い、入浴時の身体動作を入力として利用した対話的な水面ディスプレイシステムであり、浴室環境における新たな情報との対話手法が実現される。特に、単に従来のインタラクティブサーフェスにおけるマルチタッチ技術をそのまま適用するのではなく、水中での手指の動作に着目し、これを情報入力に適用した結果、自然で直感的な対話が実現できる。また、流体シミュレーションの導入は、手指の動きに応じて表示される仮想物体が浮遊する感覚を与えることができる。さらに、水を流すジェスチャで情報を移動させるという自然な対話機能を実現できる。さらにまた、ジェスチャの認識のために深度カメラによる画像を用いていることから、特殊なセンサやマーカをユーザが装着する必要がなく、入浴時に拘束感を与えないシステムとなっている。また、システムの構築に際して、赤外線光源や特殊なセンサを浴槽に組み込む必要がなく、プロジェクタと深度カメラを設置すればよいだけなので、比較的容易にシステムを導入することができる。
【００９１】
９．変形例１
本実施形態において、白濁剤は前述のものに限定されず、表示の視認性が確保される程度の不透明状態を生じさせ得るものであれば他の白濁剤でもよい。また、特許文献２、３のように気泡を用いてもよい。
【００９２】
本実施形態では、ジェスチャ認識のために、赤外線を用いた深度カメラを用いたが、ステレオカメラを用いて水面の位置（浴槽の深さ方向）やユーザの手指の位置を測定するようにしてもよい。
【００９３】
本実施形態において、ジェスチャ認識の際に機械学習や手領域の深度分布を利用することにより、認識精度の向上を図ってもよい。
【００９４】
本実施形態では、キャリブレーション時にある一定の水位の時に射影変換によるカメラとプロジェクタの座標系を一致させている。しかし、入浴時には入浴者の体の動きによって水位が変化するため、キャリブレーションがずれてしまい正確な入力ができなくなる問題がある。この問題は深度カメラとプロジェクタの画角と得られる水面の深度値から変換行列を算出し、動的にキャリブレーションを行うことで解決できると考える。
【００９５】
本実施形態で前提とした浴室において、子供が湯船に浸かりながらおもちゃで遊ぶことは非常に自然な行動である。よって入浴時においておもちゃなどの利用は十分に現実的であり、実物体をタンジブルインタフェースとして利用することで、より実世界と情報の垣根を感じさせないシステムの構築が可能であると考えられる。例えば、スポンジで水を吸う動作で情報を吸い取り、絞ることで移動することでより直感的な操作が可能になりうる。また、シューティングゲームにおいておもちゃ自体を自機として操作することで、ゲーム内に実物体が入り込んでいる感覚をユーザに与え、没入感の向上も期待できる。本システムではシューティングアプリケーションで実物体を敵の代わりとして用いていたが、入力としては利用していなかった。利用しなかった理由としては、実物体を手で持つと手の領域と実物体の領域が混合してしまい、手との切り分けができなくなってしまったためである。対処法として、RGB カメラを導入し物体の色情報を組み合わせて検出を行う手法、深度値から得られた形状データからマッチングをして検出する手法などが考えられる。
【００９６】
本実施形態では、ウォータートップとゲームへの応用例を挙げたが、教育への応用も考えられる。具体例としては、水面上に表示されているアルファベットを並び替え、単語を作るとその単語が意味する内容の絵に変化するといったインタラクティブ性を活かした教育用アプリケーションが考えられる。
【００９７】
本実施形態では浴室環境を前提としていたが、プールやアミューズメントパークでの利用ということも考えられる。本システムを導入することで、プールに入っている人同士でゲームをしあえるなどプールに新しいエンタテインメント性を付け加えることが可能であると考えられる。認識も本システムの認識手法を改良することで、人物のトラッキングと手の認識を利用した簡単なジェスチャによる操作が可能であると考えられる。また、アミューズメントパークへの設置を考えると、水を利用したアトラクションがいくつかあるが、これにインタラクティブ性を付加させると人の興味をより惹きつけられるアトラクションを作成できるのではないかと考えられる。
【００９８】
上記実施形態およびその変形例はあくまでも例示であり、上記のすべての説明が本発明の技術的範囲を限定的に解釈するために利用されるべきものではない。また、上記の実施形態におけるハードウェア構成や制御や処理内容等に対して、本発明の趣旨から逸脱しない範囲で様々な改変を行ったものも、本発明の技術的範囲に含まれる。
【００９９】
１０．変形例２
本実施形態では、
(a) 浴槽の水面を情報表示領域とし、ここで文字、画像、動画情報を閲覧する。
(b) 表示された情報を手指ジェスチャで操作する。その際、水の特徴を活用したインタラクションを設計する。
ことを前提としたインタラクティブシステム（ユーザインタフェース装置）について説明したが、これに限らない。
浴槽３の水面を情報表示領域とする替わりに、液体を落下させることにより平行な平面を形成するとともに、平行な平面の間に不透明状態の気体を充満させた液体平面形成手段を備えるようにしてもよい。なお、ここでは、落下させる液体は不透明状態の液体として説明するが、不透明であっても透明であってもどちらでもよい。
【０１００】
本発明の実施形態の変形例２では、不透明状態の液体を落下させることにより平行な平面を形成するとともに、平行な平面の間に不透明状態の気体を充満させた液体平面形成手段を備え、シューティングゲームを提供するゲーム装置に適用したインタラクティブシステム（ユーザインタフェース装置）を例に挙げて説明する。
図２９および図３０は、本発明の実施形態の変形例２の構成を示した図である。なお、本発明の実施形態の変形例２の構成のうち、本発明の実施形態として説明したユーザインタフェース装置が備える構成と同一符号を附した構成については、それぞれ同一であるので、説明を省略する。
【０１０１】
図２９に示すように、本発明の実施形態の変形例２のユーザインタフェース装置は、浴槽３に、ポンプ５１が備えられており、ポンプ５１の駆動により浴槽３内に貯留された白濁剤により白濁した水２がくみ上げられ、配管５２を経由して液体平面形成手段５３に供給される。
液体平面形成手段５３は、ポンプ５１の駆動により浴槽３内からくみ上げられた白濁した水２を落下させることにより平行な平面６１，６２を形成する水落下部５３ａと、水落下部５３ａにより形成された平行な平面６１，６２の間に、不透明状態の気体を充満させる加湿器５３ｂとを備えている。ここで、不透明状態の気体は、例えば、白色のミストを含む気体などであり、不透明であればよい。
このように、不透明状態の液体を落下させることにより平行な平面を形成するとともに、平行な平面の間に不透明状態の気体を充満させた液体平面形成手段５３を備えているので、ユーザＡの正面に、平面６１が矩形の情報表示領域として出現することになる。
そして、プロジェクタ４は、ＰＣ６の指示に基づいて、矩形の情報表示領域として出現した平面６１に、様々な映像を投影する。
【０１０２】
また、図３０に示すように、本発明の実施形態の変形例２のユーザインタフェース装置は、エアコンプレッサ５５と、空気放出筒８１，８２と、電磁弁７１〜７４と、エアシリンダ９１と、ひよこキャラクター９２と、空気砲９３と、制御装置７と、ＰＣ６と、プロジェクタ４と、スピーカ４１とを備えている。
エアコンプレッサ５５は、空気を圧縮することにより高圧エアを生成し、チューブなどにより接続された電磁弁７１〜７４に高圧エアを供給する。電磁弁７１〜７３は、制御装置７からの指示により開閉され、電磁弁７４は、三方弁であり制御装置７からの指示によりオン／オフされる。
【０１０３】
エアシリンダ９１と、ひよこキャラクター９２とは、ユーザＡから見て平面６１，６２の背面に設けられている。ひよこキャラクター９２は、エアシリンダ９１のシリンダ軸の先端に取り付けられ、エアシリンダ９１に対して前後にスライド移動するように設けられている。
制御装置７の指示により、電磁弁７４がオンされると、エアコンプレッサ５５からの高圧エアがチューブ７４ａにより供給され、高圧エアの押圧力によりエアシリンダ９１のシリンダ軸が前方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２を突き抜け、ユーザＡ側に出現する。また、電磁弁７４がオフされると、エアコンプレッサ５５からの高圧エアがチューブ７４ｂにより供給され、高圧エアの押圧力によりエアシリンダ９１のシリンダ軸が後方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２の背面位置に戻される。
また、空気砲９３も、ユーザＡから見て平面６１，６２の背面に設けられおり、制御装置７の指示により、電磁弁７３が開されると、エアコンプレッサ５５からの高圧エアを平面６１，６２に向かって放出する。これにより、高圧エアが平面６１，６２を突き抜け、水しぶきがユーザＡまで到達することになる。
【０１０４】
空気放出筒８１は、空気砲８３と、カメラ８５と、スイッチ８７とを備えており、ユーザＡの手に装着可能に構成されている。なお、空気放出筒８１と空気放出筒８２とは同一構成を有するので、ここでは、空気放出筒８１について説明する。
空気砲８３は、空気砲９３と同一構成を有しており、制御装置７の指示により、電磁弁７１が開されると、エアコンプレッサ５５からの高圧エアを平面６１，６２に向かって放出する。これにより、高圧エアが平面６１，６２を突き抜けることになる。
カメラ８５は、矩形の情報表示領域である平面６１の四隅に設けられたＬＥＤランプ６３ａ〜６３ｄが発光したＬＥＤ光を撮像し、撮像した画像データをＰＣ６へ送信する。ＰＣ６は、受信した画像データに基づいて、ＬＥＤランプ６３ａ〜６３ｄの位置を算出し、この算出したＬＥＤランプ６３ａ〜６３ｄの位置に基づいて、空気放出筒８１の向きを算出する。
スイッチ８７は、ユーザＡの操作により、オン／オフ信号を制御装置７に供給する。
制御装置７は、スイッチ８７，８８からのオン／オフ信号や、ＰＣ６からの指示に基づいて、電磁弁７１〜７４の動作を制御する。
【０１０５】
プロジェクタ４は、液体平面形成手段５３により形成された矩形の情報表示領域である平面６１に、例えば、ゲーム画像のなどの映像を投影する。投影される平面６１，６２は、上述したように、不透明状態の液体を落下させることにより形成され、この平行な平面の間に不透明状態の気体が充満されている。そのため、プロジェクタ４からの投影画像は、平面６１，６２を透過することなく、平面６１上に反射されて投影される。
スピーカ４１は、ＰＣ６からの指示により、例えば、ゲーム音楽や、あひるの会話などの音声を出力する。
【０１０６】
次に、本発明の実施形態の変形例２のユーザインタフェース装置におけるシューティングゲームのゲーム開始準備処理の処理手順を説明する。
図３１は、本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームのゲーム開始準備処理の処理手順を示したフローチャートである。
図３１に示すように、まず、ＰＣ６は、プロジェクタ４から、例えば、「Ｓキーを押してください。ゲームを開始します。」などのメッセージを投影させ、平面６１上に表示させる（Ｓ５０１）。
ＰＣ６は、ユーザ操作により、接続されたキーボードなどの入力デバイスからＳキーの入力操作が行われると（Ｓ５０３；ＹＥＳ）、プロジェクタ４から、ゲームスタートを伝えるスタート画面を表示させる（Ｓ５０５）。
【０１０７】
次に、ＰＣ６は、制御装置７を介して、電磁弁７４をオンする（Ｓ５０７）。電磁弁７４がオンされると、エアコンプレッサ５５からの高圧エアにより、エアシリンダ９１のシリンダ軸が前方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２を突き抜け、ユーザＡ側に出現する。
ひよこキャラクター９２が平面６１，６２を突き抜け、ユーザＡ側に出現すると、ＰＣ６は、プロジェクタ４から、例えば、「助けて！」などのメッセージを表示させる（Ｓ５０９）と共に、スピーカ４１から、「助けて！」とあひるが叫ぶような音声を出力する（Ｓ５１１）。
その後、ＰＣ６は、制御装置７を介して、電磁弁７４をオフする（Ｓ５１３）。電磁弁７４がオフされると、エアコンプレッサ５５からの高圧エアの供給が停止し、エアシリンダ９１のシリンダ軸が後方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２の裏側の位置に戻り、ユーザＡからは見えなくなる。
【０１０８】
次に、本発明の実施形態の変形例２のユーザインタフェース装置におけるシューティングゲームのゲームの処理手順を説明する。
図３２は、本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームのゲーム処理の処理手順を示したフローチャートである。
図３２に示すように、まず、ＰＣ６は、プロジェクタ４から、平面６１上に小型の敵キャラクター５匹を投影させる（Ｓ６０１）。この敵キャラクター５匹は、一カ所に留まることなく、矩形の情報表示領域である平面６１上でランダムに動き回るように表示する。
そして、制御装置７は、空気砲８３または空気砲８４のトリガーがオンになったか否かを判定する（Ｓ６０３）。具体的には、制御装置７は、ユーザによりスイッチ８７がオン操作されると、空気砲８３のトリガーがオンになったと判定し、ユーザによりスイッチ８８がオン操作されると、空気砲８４のトリガーがオンになったと判定する。
【０１０９】
Ｓ６０３において、空気砲８３および空気砲８４のトリガーがオンになっていないと判定された場合（ＮＯ）、ＰＣ６は、予め定められたゲーム時間に達したか否か、即ち、タイムアップしたかを判定する（Ｓ６０５）。
Ｓ６０５において、タイムアップしたと判定された場合（ＹＥＳ）、ゲームオーバーとして処理を終了する。
一方、Ｓ６０３において、空気砲８３または空気砲８４のトリガーがオンになっていると判定された場合（ＹＥＳ）、ＰＣ６は、オンされた空気砲の照準が情報表示領域内に入っているか否かを判定する（Ｓ６０７）。例えば、空気砲８３がオンされたとすると、ＰＣ６は、カメラ８５から受信した画像データに基づいて、ＬＥＤランプ６３ａ〜６３ｄの位置を算出し、この算出したＬＥＤランプ６３ａ〜６３ｄの位置に基づいて、空気砲８３の向きを算出し、算出した向きから空気砲８３の照準が情報表示領域内に入っているか否かを判定する。
【０１１０】
Ｓ６０７において、オンされた空気砲の照準が情報表示領域内に入っていると判定された場合（ＹＥＳ）、オンされたトリガーに対応する電磁弁を０．１（秒）間だけ“開”とする（Ｓ６０９）。例えば、スイッチ８７がオン操作されたとすると、制御装置７は、ＰＣ６の指示に従って、電磁弁７１を０．１（秒）間だけ“開”とする。これにより、空気砲８３から高圧エアが噴射し、噴射した高圧エアが平面６１，６２を突き抜ける。
そして、ＰＣ６は、オンされた空気砲の照準が敵キャラクターに当たっているか、即ち、敵キャラクターの表示領域内に入っているか否かを判定する（Ｓ６１１）。
【０１１１】
Ｓ６１１において、オンされた空気砲の照準が敵キャラクターに当たっていないと判定された場合（ＮＯ）、ＰＣ６は、空気砲の照準の付近に波紋の映像を表示する（Ｓ６１３）。
一方、Ｓ６１１において、オンされた空気砲の照準が敵キャラクターに当たったと判定された場合（ＹＥＳ）、ＰＣ６は、プロジェクタ４から、当たった敵キャラクターの爆発を表示し（Ｓ６１５）、敵キャラクター数を“１”だけ減算する（Ｓ６１７）。
次に、ＰＣ６は、敵キャラクター数が“１”未満になった場合（Ｓ６１９；ＹＥＳ）、敵キャラクターが全滅したと判定し、次ステージにゲームを遷移させる（Ｓ６２１）。
【０１１２】
図３３は、本発明の実施形態の変形例２のユーザインタフェース装置において、シューティングゲームにおいて、図３２のフローチャートに示したＳ６２１により遷移したゲーム処理の処理手順を示したフローチャートである。
図３３に示すように、まず、ＰＣ６は、プロジェクタ４から、平面６１上に大型の敵キャラクター１匹を投影させる（Ｓ７０１）。この敵キャラクター１匹は、一カ所に留まることなく、矩形の情報表示領域である平面６１上でランダムに動き回るように表示する。
そして、制御装置７は、空気砲８３または空気砲８４のトリガーがオンになったか否かを判定する（Ｓ７０３）。具体的には、制御装置７は、ユーザによりスイッチ８７がオン操作されると、空気砲８３のトリガーがオンになったと判定し、ユーザによりスイッチ８８がオン操作されると、空気砲８４のトリガーがオンになったと判定する。
【０１１３】
Ｓ７０３において、空気砲８３および空気砲８４のトリガーがオンになっていないと判定された場合（ＮＯ）、ＰＣ６は、予め定められたゲーム時間に達したか否か、即ち、タイムアップしたかを判定する（Ｓ７０５）。このゲーム時間は、図３２に示したゲームのゲーム時間との積算時間がゲーム時間に達したか否かを判定するようにしてもよいし、図３３のゲーム処理に遷移してからの時間がゲーム時間に達したか否かを判定するようにしてもよい。
Ｓ７０５において、タイムアップしたと判定された場合（ＹＥＳ）、ゲームオーバーとして処理を終了する。
一方、Ｓ７０３において、空気砲８３または空気砲８４のトリガーがオンになっていると判定された場合（ＹＥＳ）、ＰＣ６は、オンされた空気砲の照準が情報表示領域内に入っているか否かを判定する（Ｓ７０７）。例えば、空気砲８３がオンされたとすると、ＰＣ６は、カメラ８５から受信した画像データに基づいて、ＬＥＤランプ６３ａ〜６３ｄの位置を算出し、この算出したＬＥＤランプ６３ａ〜６３ｄの位置に基づいて、空気砲８３の向きを算出し、算出した向きから空気砲８３の照準が情報表示領域内に入っているか否かを判定する。
【０１１４】
Ｓ７０７において、オンされた空気砲の照準が情報表示領域内に入っていると判定された場合（ＹＥＳ）、オンされたトリガーに対応する電磁弁を０．１（秒）間だけ“開”とする（Ｓ７０９）。例えば、スイッチ８７がオン操作されたとすると、制御装置７は、ＰＣ６の指示に従って、電磁弁７１を０．１（秒）間だけ“開”とする。これにより、空気砲８３から高圧エアが噴射し、噴射した高圧エアが平面６１，６２を突き抜ける。
そして、ＰＣ６は、オンされた空気砲の照準が敵キャラクターに当たっているか、即ち、大型の敵キャラクターの表示領域内に入っているか否かを判定する（Ｓ７１１）。
【０１１５】
Ｓ７１１において、オンされた空気砲の照準が敵キャラクターに当たっていないと判定された場合（ＮＯ）、ＰＣ６は、空気砲の照準の付近に波紋の映像を表示する（Ｓ７１３）。
一方、Ｓ７１１において、オンされた空気砲の照準が敵キャラクターに当たったと判定された場合（ＹＥＳ）、ＰＣ６は、プロジェクタ４から、当たった敵キャラクターの爆発を表示する（Ｓ７１５）。このとき、爆発の大きさは、図３２に示したフローチャートのＳ６１５における爆発の大きさと同等としてもよいし、敵キャラクターの大きさに応じて、大きい爆発としてもよい。
そして、ＰＣ６は、電磁弁７３を０．１（秒）間だけ“開”とする（Ｓ７１７）。これにより、空気砲９３から高圧エアが噴射し、噴射した高圧エアが平面６１，６２を突き抜け、水しぶきがユーザＡまで到達するので、ユーザはよりゲームの迫力を感じることができる。
【０１１６】
次に、ＰＣ６は、制御装置７を介して、電磁弁７４をオンする（Ｓ７１９）。電磁弁７４がオンされると、エアコンプレッサ５５からの高圧エアにより、エアシリンダ９１のシリンダ軸が前方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２を突き抜け、ユーザＡ側に出現する。
ひよこキャラクター９２が平面６１，６２を突き抜け、ユーザＡ側に出現すると、ＰＣ６は、プロジェクタ４から、例えば、「ありがとう！」などのメッセージを表示させる（Ｓ７２１）と共に、スピーカ４１から、「ありがとう！」とあひるが叫ぶような音声を出力する（Ｓ７２３）。
その後、ＰＣ６は、制御装置７を介して、電磁弁７４をオフする（Ｓ７４）。電磁弁７４がオフされると、エアコンプレッサ５５からの高圧エアの供給が停止し、エアシリンダ９１のシリンダ軸が後方へスライド移動する。これにより、ひよこキャラクター９２が平面６１，６２の裏側の位置に戻り、ユーザＡからは見えなくなる。
【０１１７】
以上のように、本発明の実施形態の変形例２のユーザインタフェース装置によれば、浴槽３の水面を情報表示領域とする替わりに、不透明状態の液体を落下させることにより平行な平面を形成するとともに、平行な平面の間に不透明状態の気体を充満させた液体平面形成手段５３を備え、液体平面形成手段５３により形成された平面６１を情報表示領域とするので、直立したユーザインタフェース装置として利用できる。これにより、防水構造を有する情報機器を持ち込むことなく、情報表示と入力とが実現される。このようなユーザインタフェースは、情報閲覧とインタラクションにきわめて適したものである。
なお、液体平面形成手段により形成される平面は、水の落下により形成されるので、完全な平面には限らず、多少の凹凸があってもよい。
また、本発明の実施形態の変形例２のユーザインタフェース装置では、液体平面形成手段５３は、ポンプ５１の駆動により浴槽３内からくみ上げられた白濁した水２を落下させることにより互いに平行な平面６１，６２をプロジェクタ４からの投影方向に垂直になるように形成した。
ここで、平行な平面６１，６２と垂直になるように、すなわち、プロジェクタ４からの投影方向に平行な平面を形成する２枚の平板を、上方から見て平面６１，６２とで矩形を形成するように配置するようにしてもよい。そして、平面６１，６２と２枚の平板とにより四面を形成し、この四面で囲まれた内部に不透明状態の気体を充満させるようにしてもよい。
さらに、２枚の平板の代わりに落下する水２により平面を形成するようにしてもよい。具体的には、液体平面形成手段５３が、平行な平面６１，６２に加えて、互いに平行な平面をプロジェクタ４からの投影方向に平行になるように、ポンプ５１の駆動により浴槽３内からくみ上げられた白濁した水２を落下させる。これにより、平面６１，６２と、プロジェクタ４からの投影方向に平行になるように形成された互いに平行な平面とにより四面を囲み、この四面で囲まれた内部に不透明状態の気体を充満させるようにしてもよい。
【符号の説明】
【０１１８】
１    インタラクティブシステム
２    白濁した水
３    浴槽
４    プロジェクタ
５    深度カメラ
６    ＰＣ
３ａ  爆発エフェクト用スピーカ
３ｂ  触覚フィードバック用スピーカ
７    制御装置
４１  スピーカ
５１  ポンプ
５２  配管
５３  液体平面形成手段
５３ａ  水落下部
５３ｂ  加湿器
５５  エアコンプレッサ
６３ａ〜６３ｄ  ＬＥＤランプ
７１〜７４  電磁弁
８１，８２  空気放出筒
８３，８４，９３  空気砲
８５，８６  カメラ
８７，８８…スイッチ
９１…エアシリンダ
９２…キャラクター
【図２６】
2014238828.tif 000009
【図２７】
2014238828.tif 000010
【図２８】
2014238828.tif 000011
【図２９】
2014238828.tif 000012
【図３０】
2014238828.tif 000013
【図３１】
2014238828.tif 000014
【図３２】
2014238828.tif 000015
【図３３】
2014238828.tif 000016
【図１】
2014238828.tif 000017
【図２】
2014238828.tif 000018
【図３】
2014238828.tif 000019
【図４】
2014238828.tif 000020
【図５】
2014238828.tif 000021
【図６】
2014238828.tif 000022
【図７】
2014238828.tif 000023
【図８】
2014238828.tif 000024
【図９Ａ】
2014238828.tif 000025
【図９Ｂ】
2014238828.tif 000026
【図１０】
2014238828.tif 000027
【図１１】
2014238828.tif 000028
【図１２】
2014238828.tif 000029
【図１３】
2014238828.tif 000030
【図１４】
2014238828.tif 000031
【図１５】
2014238828.tif 000032
【図１６】
2014238828.tif 000033
【図１７】
2014238828.tif 000034
【図１８】
2014238828.tif 000035
【図１９】
2014238828.tif 000036
【図２０】
2014238828.tif 000037
【図２１】
2014238828.tif 000038
【図２２】
2014238828.tif 000039
【図２３】
2014238828.tif 000040
【図２４】
2014238828.tif 000041
【図２５】
2014238828.tif 000042
【手続補正書】
【提出日】平成26年8月11日(2014.8.11)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
４．３ 領域抽出と面積計算
前の処理で得られた2 値画像は複数の領域が検出されるため領域を分割する必要がある。得られた2 値画像に対し、輪郭線抽出処理を行うことで、2 値画像中の連結領域の境界をチェーンコード化し、領域の輪郭情報を検出する。図８を参照して、領域抽出するための具体的なアルゴリズムを以下に示す。
「 (1) 入力画像を端から順に走査し、最初に現れた物体領域を最初の輪郭画素とする。
(2) 見つけた輪郭画素と隣接する領域を左回りに調べ、先と同様に最初の物体領域を輪郭画素とする。
(3) 中心を新たに見つけた輪郭画素に移動し、再び隣接する領域を調べる。
(4) 上記の操作を開始点に戻るまで繰り返すことで得られた閉曲線を輪郭とする。
得られた輪郭領域内の画素数を取得することによって領域の面積を取得することができる。」
（出典：奈良先端科学技術大学院大学OpenCVプログラミングブック制作チーム著、「OpenCV プログラミングブック」、株式会社毎日コミュニケーションズ出版、2007年9月26日、ｐ146-147）