特許第6834197号(P6834197)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ 株式会社リコーの特許一覧
特許6834197情報処理装置、表示システム、プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6834197
(24)【登録日】2021年2月8日
(45)【発行日】2021年2月24日
(54)【発明の名称】情報処理装置、表示システム、プログラム
(51)【国際特許分類】
   G06F 3/01 20060101AFI20210215BHJP
   G09G 5/00 20060101ALI20210215BHJP
   G06F 3/0481 20130101ALI20210215BHJP
【FI】
   G06F3/01 570
   G09G5/00 550C
   G09G5/00 510B
   G09G5/00 510H
   G06F3/0481 170
【請求項の数】9
【全頁数】36
(21)【出願番号】特願2016-133365(P2016-133365)
(22)【出願日】2016年7月5日
(65)【公開番号】特開2018-5663(P2018-5663A)
(43)【公開日】2018年1月11日
【審査請求日】2019年5月22日
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】舟波 篤司
【審査官】 木内 康裕
(56)【参考文献】
【文献】 特表2013−539565(JP,A)
【文献】 特開2012−010086(JP,A)
【文献】 米国特許出願公開第2011/0316987(US,A1)
【文献】 米国特許出願公開第2014/0062710(US,A1)
【文献】 特開2014−026355(JP,A)
【文献】 特開2011−189066(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/048 − 3/0489
G09G 5/00
(57)【特許請求の範囲】
【請求項1】
表示装置の周辺のユーザの位置及びユーザの動作に関する動作情報を検出する装置から、ユーザの位置に関する位置情報を取得する情報処理装置であって、
前記表示装置における表示位置に前記位置情報を変換し、前記表示位置にユーザの位置を表すユーザ位置表示情報を表示する位置表示手段を有し、
前記位置表示手段は、ユーザが前記表示装置に表示される内容を前記ユーザの動作に応じて操作する位置に前記ユーザを誘導するための誘導位置表示情報を前記表示装置に表示し、
前記位置表示手段は、前記装置がユーザを検出できる検出範囲を前記表示装置に表示し、
前記動作情報を取得する動作情報取得手段と、
前記動作情報に基づいて前記情報処理装置で動作するアプリケーションソフトの操作を受け付ける操作受付手段と、を有し、
前記装置から前記ユーザが手を挙げた旨の前記動作情報を受信した場合、前記位置表示手段は前記ユーザ位置表示情報を人が手を挙げた形状で表示し、前記操作受付手段は手を挙げたユーザにのみ操作権を与え、他のユーザが手を挙げても操作を受け付けない情報処理装置。
【請求項2】
記誘導位置表示情報は前記装置が前記動作情報を検出できるユーザの位置を表す請求項1に記載の情報処理装置。
【請求項3】
記誘導位置表示情報はユーザが前記アプリケーションソフトを操作できる位置を表す請求項2に記載の情報処理装置。
【請求項4】
前記装置がユーザを検出した場合、
前記位置表示手段は、前記検出範囲の中に前記ユーザ位置表示情報を表示する請求項1に記載の情報処理装置。
【請求項5】
前記位置情報は前記装置に対する第一の相対位置を表し、
前記位置表示手段は、前記第一の相対位置を前記検出範囲の所定位置に対する第二の相対位置に変換し、前記検出範囲の中の前記第二の相対位置に前記ユーザ位置表示情報を表示する請求項1又は4に記載の情報処理装置。
【請求項6】
手を挙げている前記ユーザの手首関節又は手関節の速さが閾値未満という前記動作情報を前記動作情報取得手段が取得した場合、
前記位置表示手段は前記ユーザの動作でカーソルが交点を移動するガイドメッシュを表示する請求項1〜5のいずれか1項に記載の情報処理装置。
【請求項7】
表示装置の周辺のユーザの位置及びユーザの動作に関する動作情報を検出する装置から取得したユーザの位置に関する位置情報に基づきユーザを誘導する1つ以上の情報処理装置を有する表示システムであって、
前記表示装置における表示位置に前記位置情報を変換し、前記表示位置にユーザの位置を表すユーザ位置表示情報を表示する位置表示手段を有し、
前記位置表示手段は、ユーザが前記表示装置に表示される内容を前記ユーザの動作に応じて操作する位置に前記ユーザを誘導するための誘導位置表示情報を前記表示装置に表示し、
前記位置表示手段は、前記装置がユーザを検出できる検出範囲を前記表示装置に表示し、
前記動作情報を取得する動作情報取得手段と、
前記動作情報に基づいて前記情報処理装置で動作するアプリケーションソフトの操作を受け付ける操作受付手段と、を有し、
前記装置から前記ユーザが手を挙げた旨の前記動作情報を受信した場合、前記位置表示手段は前記ユーザ位置表示情報を人が手を挙げた形状で表示し、前記操作受付手段は手を挙げたユーザにのみ操作権を与え、他のユーザが手を挙げても操作を受け付けない表示システム。
【請求項8】
表示装置の周辺のユーザの位置を検出し、ユーザの位置に関する位置情報とユーザの動作に関する動作情報を検出する装置と、
前記装置からユーザの位置に関する位置情報及び前記動作情報を取得する動作情報取得手段と、
前記表示装置における表示位置に前記位置情報を変換し、前記表示位置にユーザの位置を表すユーザ位置表示情報を表示する位置表示手段
前記動作情報に基づいて情報処理装置で動作するアプリケーションソフトの操作を受け付ける操作受付手段、として前記情報処理装置を機能させ、
前記位置表示手段、ユーザが前記表示装置に表示される内容を前記ユーザの動作に応じて操作する位置に前記ユーザを誘導するための誘導位置表示情報表示
前記装置から前記ユーザが手を挙げた旨の前記動作情報を受信した場合、前記位置表示手段は前記ユーザ位置表示情報を人が手を挙げた形状で表示し、前記操作受付手段は手を挙げたユーザにのみ操作権を与え、他のユーザが手を挙げても操作を受け付けないプログラムと、
前記装置がユーザを検出できる検出範囲が表示される前記表示装置と、
を有する表示システム。
【請求項9】
情報処理装置にインストールされると、前記情報処理装置を、
表示装置の周辺のユーザの位置及びユーザの動作に関する動作情報を検出する装置からユーザの位置に関する位置情報及び前記動作情報を取得する動作情報取得手段と、
前記表示装置における表示位置に前記位置情報を変換し、前記表示位置にユーザの位置を表すユーザ位置表示情報を表示する位置表示手段
前記動作情報に基づいて前記情報処理装置で動作するアプリケーションソフトの操作を受け付ける操作受付手段、として機能させるプログラムであって、
前記位置表示手段は、ユーザが前記表示装置に表示される内容を前記ユーザの動作に応じて操作する位置に前記ユーザを誘導するための誘導位置表示情報を前記表示装置に表示し、
前記位置表示手段は、前記装置がユーザを検出できる検出範囲を前記表示装置に表示し、
前記装置から前記ユーザが手を挙げた旨の前記動作情報を受信した場合、前記位置表示手段は前記ユーザ位置表示情報を人が手を挙げた形状で表示し、前記操作受付手段は手を挙げたユーザにのみ操作権を与え、他のユーザが手を挙げても操作を受け付けないプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、表示システム及びプログラムに関する。
【背景技術】
【0002】
人が集まる場所や通過する場所に設置されたディスプレイに情報を表示するシステムが知られている。ディスプレイにはネットワークなどを介して情報処理装置が接続されており、静止画や動画を情報処理装置がディスプレイに表示させることで、情報処理装置は例えば広告、天気、ニュースなどの有益な情報を発信できる。このようなシステムや仕組みをデジタルサイネージと称する。ディスプレイは屋外、店頭、公共空間、交通機関、通路などに設置されており、往来者、来客者、施設の利用者(以下、単にユーザという)等に詳細かつ新しい情報を提供できる。
【0003】
ところで、現状のデジタルサイネージのうち特に大画面のデジタルサイネージは一方的に情報を表示することが主な機能となっている。しかしながら、ユーザから見ると、情報が刻々と変化するため表示されたある情報に興味を持ってもゆっくりと閲覧することができない場合がある。また、情報の提供者から見ると、情報を流しているだけでユーザからのリアクションが得られないので、どのような情報にユーザが興味を示したかを把握できない。また、デジタルサイネージの情報を窓口にしてユーザがより詳細な情報を表示させたり、ユーザが興味を持った情報の詳細情報を提供者が提供したくても困難である。すなわち、従来のデジタルサイネージではインタラクティブ(双方向性)な操作が困難であった。
【0004】
インタラクティブな操作を実現するにはディスプレイの近くにユーザが操作を入力するための入力装置が用意されていればよいが、設置スペースの確保が難しかったり、設置スペースがあるとしても入力装置の破損や盗難のおそれがある。そこで、ユーザのジェスチャーをデジタルサイネージが検出して操作を受け付ける操作態様が検討される(例えば、特許文献1参照。)。特許文献1には、検出したユーザの動きから、表示面に表示されるカーソルを移動させると共に、ユーザとの距離に基づいてカーソルの動きを調整するポインティング制御装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1には、どこに移動すればユーザがデジタルサイネージを操作できるかをユーザに把握させることができないという問題がある。以下、説明する。デジタルサイネージは多くのユーザが往来したり存在する場所に設置されるため、同時に一人の人間だけがデジタルサイネージを見ることは少ない。つまり、デジタルサイネージは同時に複数のユーザにより見られる可能性が高く、デジタルサイネージを見ることができる全てのユーザがデジタルサイネージを操作できてしまうと、各ユーザが所望の操作を行うことは困難になる。また、全てのユーザが操作できてしまうと単に通りかかったユーザの無意識の動作が、本当にデジタルサイネージを操作したいユーザの操作を邪魔してしまうおそれがある。
【0006】
このような不都合に対し、特定の位置に立っているユーザのみの動作を動作検出装置が検知する方法が考えられる。特定の位置がそれほど広くなければ、動作検出装置が動作を検知するユーザを所定数(例えば一人)に限定できる。
【0007】
しかし、物理的な指標(テープやペイントなどのマーキング)で特定の位置をユーザに把握させるためには、デジタルサイネージの管理者などが別途、指標を準備する必要がある。また、動作検出装置がユーザの動作を検知できる位置に合わせて指標を準備する必要があり、セッティングに時間やコストがかかってしまう。
【0008】
本発明は、上記課題に鑑み、操作対象を操作する場所にユーザを誘導できる情報処理装置を提供することを目的する。
【課題を解決するための手段】
【0009】
本発明は、表示装置の周辺のユーザの位置及びユーザの動作に関する動作情報を検出する装置から、ユーザの位置に関する位置情報を取得する情報処理装置であって、前記表示装置における表示位置に前記位置情報を変換し、前記表示位置にユーザの位置を表すユーザ位置表示情報を表示する位置表示手段を有し、前記位置表示手段は、ユーザが前記表示装置に表示される内容を前記ユーザの動作に応じて操作する位置に前記ユーザを誘導するための誘導位置表示情報を前記表示装置に表示し、前記位置表示手段は、前記装置がユーザを検出できる検出範囲を前記表示装置に表示し、前記動作情報を取得する動作情報取得手段と、 前記動作情報に基づいて前記情報処理装置で動作するアプリケーションソフトの操作を受け付ける操作受付手段と、を有し、前記装置から前記ユーザが手を挙げた旨の前記動作情報を受信した場合、前記位置表示手段は前記ユーザ位置表示情報を人が手を挙げた形状で表示し、前記操作受付手段は手を挙げたユーザにのみ操作権を与え、他のユーザが手を挙げても操作を受け付けない
【発明の効果】
【0010】
操作対象を操作する場所にユーザを誘導できる情報処理装置を提供することができる。
【図面の簡単な説明】
【0011】
図1】情報処理システムが有するディスプレイとカーソルの位置の制御について説明する図の一例である。
図2】情報処理システムのシステム構成図の一例である。
図3】情報処理装置のハードウェア構成図の一例である。
図4】動作検出装置のハードウェア構成図の一例である。
図5】三次元座標が得られる関節を示す図である。
図6】アプリケーションソフトとジェスチャー操作受付プログラムの関係を説明する図の一例である。
図7】ジェスチャー操作受付プログラムの機能がブロック状に示された機能ブロック図の一例である。
図8】動作検出装置に対する人の検出範囲と操作位置を説明する図の一例である。
図9】検出範囲を立体的に示す図の一例である。
図10】操作エリアを説明する図の一例である。
図11】操作エリアを詳細に説明する図の一例である。
図12】ユーザの非操作動作を説明する図の一例である。
図13図12の立方体を側方から見た図の一例である。
図14】操作エリアにおける手首関節又は手関節の座標とカーソルの位置を示す図の一例である。
図15】ユーザUの手首関節又は手関節の三次元座標を側方から見た図である。
図16】操作エリアの変形例を説明する図の一例である。
図17】手首関節又は手関節の速さの検出方法を説明する図の一例である。
図18】イベントの検出方法について説明する図の一例である。
図19】速さが閾値未満の場合の座標変換を説明する図の一例である。
図20】動作検出装置によりユーザが検出された時の操作受付支援アイコンを示す図の一例である。
図21】操作受付支援アイコンにおける人アイコンの位置の算出方法を説明する図の一例である。
図22】ユーザが操作位置で手を挙げた際の操作受付支援アイコンを示す図の一例である。
図23】ユーザが操作位置で手を挙げているが手首関節又は手関節の速さが閾値未満の場合のガイドメッシュを示す図の一例である。
図24】ジェスチャー操作受付プログラムがユーザに操作権を付与するまでの手順を示すフローチャート図の一例である。
図25】ジェスチャー操作受付プログラムがユーザの操作を受け付けてアプリケーションソフトを操作する手順を示すフローチャート図の一例である。
図26】顔向きなどの分析のために情報記録部が記録するセンサ情報の一例を示す図である。
図27図26のセンサ情報が取得された際に情報記録部が取得したスクリーンショットを示す図の一例である。
図28】検出されないユーザを説明する図の一例である。
図29】情報記録部がセンサ情報DBに記憶したセンサ情報の解析例を説明する図の一例である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための情報処理システム100及び情報処理システム100が行う位置情報作成方法について図面を参照しながら説明する。
【0013】
<情報処理システムの概略的特徴>
図1を用いて、情報処理システム100の概略的特徴について説明する。図1は、操作位置52へのユーザの誘導を説明する図の一例である。
【0014】
図1(a)に示すように、ディスプレイ310にはデジタルサイネージとしてのコンテンツのリスト101や動画102が表示されると共に操作入力のための各種の操作ボタン103(動画102の再生、停止等)が表示されている。また、ディスプレイ310の下部には動作検出装置10が設置されている。動作検出装置10は、一定の角度範囲内かつ一定距離内の人の検出範囲51に進入したユーザを検出する。また、動作検出装置10は操作位置52のユーザの立ち位置と動作を検出する。
【0015】
ディスプレイ310は常時、操作受付支援アイコン81が表示されている。あるいは、動作検出装置10がユーザを検出した場合にだけ表示されてもよい。操作受付支援アイコン81には、後述する操作位置指示表示83が表示されている。動作検出装置10がユーザUを検出すると、情報処理装置30は操作受付支援アイコン81にはユーザUを表す人アイコン82を表示する。人アイコン82は、検出範囲51におけるユーザの位置に対応する操作受付支援アイコン81内の位置に人アイコン82を表示する。
【0016】
したがって、ディスプレイ310を見ているユーザは、自分が検出されたことを把握できる。また、ユーザが動くと、人アイコン82も移動することを把握できる。
【0017】
デジタルサイネージを操作するためにユーザは人アイコン82を操作位置指示表示83に移動させなければならないことをガイドラインなどにより知っている。ユーザは自分の移動に伴って位置が変わる人アイコン82が操作位置指示表示83に進入するように、検出範囲51内を移動する。操作位置指示表示83に人アイコン82が存在する場合、ユーザが操作位置52に存在する。
【0018】
このように、人アイコン82が操作位置指示表示83に移動するようにユーザが移動することで、ユーザは自然に動作検出装置10がユーザの動作を検出する操作位置52に移動することができる。したがって、情報処理装置30は、ユーザの位置を検出してこの位置を操作受付支援アイコン81上の位置に変換して表示することで、操作位置52へユーザを誘導することができる。
【0019】
したがって、本実施形態の情報処理システムは、デジタルサイネージの管理者などが操作位置52に物理的な指標(テープやペイントなどのマーキング)を施すことなく、どこに移動すればユーザがデジタルサイネージを操作できるかをユーザに把握させることができる。ただし、物理的な指標がある場合、ユーザは更に操作位置52を把握しやすい。
【0020】
<用語について>
ユーザの位置に関する位置情報とは、ユーザの位置を特定する情報やユーザの位置を表す情報などである。例えば、動作検出装置10に対する相対的な位置であるが、動作検出装置10と表示装置の位置が固定的であれば、表示装置に対する相対位置と称してよい。なお、位置情報は座標などを含む絶対位置でもよい。
【0021】
表示装置における表示位置とは、ディスプレイなどの表示装置上の位置をいう。具体的には、カーソルなどで表示位置が示される。
【0022】
表示装置に表示される内容とは、表示され視覚的に判断できる情報の全般をいう。内容と共に音声が流れる場合は、音声も内容に含まれる。本実施形態ではコンテンツという用語で説明する。
【0023】
ユーザ位置表示情報は、表示装置においてユーザ又はユーザの位置を表す表示情報である。本実施形態では人アイコン82という用語で説明する。
【0024】
誘導位置表示情報は、表示装置においてユーザを所定位置に誘導するための表示情報である。あるいは、ユーザの好ましい位置を表す表示情報である。本実施形態では操作位置指示表示83という用語で説明する。
【0025】
動作情報とは、ユーザの動作を表す情報である。あるいは、ユーザの動作が情報処理装置に解釈できる形態に変換された情報である。あるいは、ユーザの動作を情報処理装置に非接触で入力するための情報である。具体的には、位置、姿勢、手足の動きなどであり、本実施形態ではセンサ情報という用語で説明する。
【0026】
予め定められた速さの条件に合致する場合の条件とは、カーソルの位置の制御に関するユーザの意図を検出するための条件をいう。この意図は位置を精度よく制御したい意図をいう。条件に合致する場合とは、例えば、速さが閾値未満であること、速さが所定の範囲内であること、等が挙げられる。以下では、速さが閾値未満であることを例にして説明する。
【0027】
<システム構成例>
図2は、情報処理システム100のシステム構成図の一例である。図2(a)に示すように、情報処理システム100は、ディスプレイ310、動作検出装置10及び情報処理装置30を有する。動作検出装置10は情報処理装置30とUSBケーブルやIEEE1394などのケーブルで接続されており、情報処理装置30とディスプレイ310はDisplayPort(登録商標)、DVI(Digital Visual Interface)、HDMI(登録商標。High-Definition Multimedia Interface)及びVGA(Video Graphics Array)等の規格による通信が可能なケーブルを介して接続されている。なお、動作検出装置10と情報処理装置30は、無線LAN、Bluetooth(登録商標)、ZigBee(登録商標)などの無線で通信してもよい。同様に、情報処理装置30とディスプレイ310は、無線LAN、HDMIの無線規格などの無線で通信してもよい。
【0028】
情報処理装置30は、PC(Personal Computer)、タブレット端末、スマートフォン、携帯電話、PDA(Personal Digital Assistant)などの汎用的なものを利用できる。情報処理装置30ではOS(Operating System)が動作しており、マウスやタッチパネルなどのポインティングデバイスの位置を検出しこの位置にカーソル3を表示する機能を有する。また、OSはポインティングデバイスにより行われるイベント(左クリック、右クリック、ダブルクリック、マウスオーバー、マウスダウン、マウスアップなど)を検出する。また、情報処理装置30はOS上で各種のアプリケーションソフトを動作させている。OSはポインティングデバイスの位置とイベントをアプリケーションソフトに通知するため、アプリケーションソフトはポインティングデバイスの位置で行われたイベントに基づき動作する。
【0029】
本実施形態では、動作検出装置10と後述するジェスチャー操作受付プログラムがポインティングデバイスとして動作する。ジェスチャー操作受付プログラムは、動作検出装置10からセンサ情報を取得してカーソル3の位置に変換したりイベントを検出するプログラムであり、情報処理装置30で動作している。このジェスチャー操作受付プログラム110がカーソル3の位置とイベントをアプリケーションソフト120に通知することで、アプリケーションソフト120はポインティングデバイスを意識することなく(ポインティングデバイスが動作検出装置10であることによる変更が必要なく)動作できる。
【0030】
ディスプレイ310は液晶型の表示装置、有機ELを発光原理とする表示装置、又は、プラズマ発光を利用した表示装置などである。アプリケーションソフト120はCUI(Character User Interface)やGUI(Graphical User Interface)と呼ばれる画面を作成しディスプレイ310に表示させる。
【0031】
なお、ディスプレイ310として、ディスプレイ310を備えた何らかの装置を使用してもよい。例えば電子黒板、ノートPCなどが備えるディスプレイをディスプレイ310として使用できる。
【0032】
動作検出装置10は、人の動作を検出するセンサである。例えば、ステレオカメラで空間を撮像すると画像データの画素毎に視差が得られ画素毎の距離情報が得られる。また、画像データをパターン認識することで人を検出したり、人の動作を認識することが可能になる。具体的には、人の手のひら、手首、肩等の三次元座標、姿勢などが得られる。このような人の動作の検出に適したセンサとしてキネクト(登録商標。以下、登録商標という付記を省略する)が知られている。キネクトについて詳細は後述する。なお、動作検出装置10はキネクトでなくてもよく、キネクトと同様の機能を備えたセンサ、ステレオカメラ、TOF(Time Of Flight)等により距離を検出するカメラなどでもよい。
【0033】
なお、図2(a)の動作検出装置10の設置位置は一例であり、ディスプレイ310の上方、左側、又は右側に設置されてもよい。また、情報処理装置30での設置位置も一例に過ぎず、例えばディスプレイ310の背後など設置されてもよい。また、ネットワークを介して動作検出装置10と接続されていてもよい。
【0034】
図2(b)に示すように、情報処理システム100がディスプレイ310の代わりにプロジェクタ5を有していてもよい。この場合、情報処理システム100は、動作検出装置10、プロジェクタ5、及び情報処理装置30を有する。プロジェクタ5は、LCD(透過型液晶)方式、LCOS(反射型液晶)方式、又はDLP(Digital Light Processing)方式などで画像をスクリーンなどの投影面6に投影する表示装置である。
【0035】
プロジェクタ5と情報処理装置30は、ディスプレイ310と情報処理装置30間の接続態様と同様に接続されている。プロジェクタ5は、いわゆる極単焦点から投影できることが好ましい。これにより、ユーザUが動作するスペースを確保しやすくなる。動作検出装置10は、プロジェクタ5よりもユーザU側にあってもよいし、スクリーン側にあってもよい。スクリーン側にある場合はスクリーンの下辺、上辺、左辺又は右辺に固定されてよい。また、ユーザU側にある場合は用意された台の上に設置される。また、動作検出装置10がディスプレイ310の右端に設置されているのは一例であって、左端に設置されてもよい。右端又は左端に設置されるのは、プロジェクタ5の廃棄熱を避けるためである。廃棄熱を無視できる場合は、ディスプレイ310の中央に設置されてもよい。
【0036】
なお、ディスプレイ310とプロジェクタ5を併用してもよい。この場合、例えばプロジェクタ5が床に向けて矢印などを投影することで、ユーザを操作位置52に誘導することができる。また、矢印を表示して進行方向を指示すること等ができる(例えば、エレベータはあちら、操作位置52はあちら等)。
【0037】
<ハードウェア構成について>
<<情報処理装置30のハードウェア構成>>
図3は情報処理装置30のハードウェア構成図の一例である。情報処理装置30は、CPU301、ROM302、RAM303及び補助記憶装置304を備える。更に、私的使用サーバは、入力部305、表示制御部306、ネットワークI/F307及び外部機器I/F308を備える。なお、情報処理装置30の各部は、バスBを介して相互に接続されている。
【0038】
CPU301は、補助記憶装置304に格納された各種プログラム、OS等を実行する。ROM302は不揮発性メモリ16である。ROM302は、補助記憶装置304に格納された各種プログラムを、CPU301が実行するために必要なプログラム、データ等を格納する。
【0039】
RAM303は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の主記憶装置である。CPU301によって実行される際に補助記憶装置304に格納された各種プログラムがRAM303に展開され、RAM303はCPU301の作業領域となる。
【0040】
補助記憶装置304は、CPU301により実行される各種プログラム及び各種プログラムがCPU301により実行される際に利用される各種データベースを記憶する。補助記憶装置304は例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性メモリである。
【0041】
入力部305は、オペレータが情報処理装置30に各種指示を入力するためのインタフェースである。例えば、キーボード、マウス、タッチパネル、音声入力装置などであるが、本実施形態では接続さてなくてよい。
【0042】
表示制御部306は、CPU301からの要求により、情報処理装置30が有する各種情報をカーソル3、メニュー、ウィンドウ、文字、又は画像などの形態でディスプレイ310に表示する。表示制御部306は、例えばグラフィックチップやディスプレイ310I/Fである。
【0043】
ネットワークI/F307は、ネットワークを介して、他の機器と通信を行う通信装置である。ネットワークI/F307は例えばイーサネット(登録商標)カードであるがこれに限られない。
【0044】
外部機器I/F308は、USBケーブル、又は、USBメモリ等の各種の記憶媒体320などを接続するためのインタフェースである。本実施形態では動作検出装置10が接続される。
【0045】
なお、情報処理装置30は、いわゆるクラウドコンピューティングに対応していることが好ましく、情報処理装置30は、1つの筐体に収納されていたりひとまとまりの装置として備えられていたりする必要はない。この場合、情報処理装置30の構成は、負荷に応じてハード的なリソースが動的に接続・切断されることで構成される。
【0046】
<<動作検出装置10のハードウェア構成>>
図4は、動作検出装置10のハードウェア構成図の一例である。動作検出装置10は、CPU11、カラーカメラ12、赤外線カメラ13、赤外線プロジェクタ14、主記憶装置15、不揮発性メモリ16、マイク17、加速度センサ18、及びLED19を有する。CPUは不揮発性メモリ16に記憶されたファームウェアを主記憶装置15に展開して実行することで、動作検出装置10の全体を制御する。主記憶装置15は例えばDRAMなどの高速な揮発性メモリであり、不揮発性メモリ16はフラッシュメモリなどである。
【0047】
カラーカメラ12は一例として1920×1080の解像度でカラー画像を撮像する撮像装置である。すなわち、画素毎にR・G・Bの濃度情報が得られている。赤外線カメラ13と赤外線プロジェクタ14はこれらで1つのデプスセンサ(距離センサ)として機能する。赤外線プロジェクタ14はパルス変調された赤外線を投光し、赤外線カメラ13が投光した赤外線を撮像する。デプスセンサは、赤外線を投光してから反射して戻ってくる時間を測定し、投光された赤外線ごとに距離情報を得る。なお、距離情報の解像度は512×424であるがあくまで一例である。
【0048】
また、デプスセンサが距離を測定する原理は一例に過ぎず、投光した赤外線パターンを赤外線カメラ13で撮像し、パターンのゆがみから距離情報を取得してもよい。
【0049】
マイク17は周囲の音声を検出する装置であり、CPU11は複数のマイク17が検出する音声の位相を比較して音源の方向を推定する。加速度センサ18は動作検出装置10の水平に対する傾きを検出するセンサである。LED19は動作検出装置10の状態を色や点滅などで表示する。
【0050】
<動作検出装置10が取得する情報>
続いて、動作検出装置10が取得する情報について説明する。動作検出装置10が取得する情報であれば情報処理装置30が利用することができる。ただし、以下で説明する全ての情報を使用する必要はない。以下で説明される、動作検出装置10が取得する情報を「センサ情報」という。
【0051】
1.カラー画像
画素毎にR・G・Bの濃度情報が含まれる画像データである。動作検出装置10の赤外線カメラ13は所定のフレームレート(例えば30fps)でカラー画像を撮像する。
【0052】
2.距離画像
上記のように512×424の解像度で距離情報が得られた画像データである。動作検出装置10のデプスセンサは所定のフレームレート(例えば30fps)で距離画像を撮像する。したがって、所定の解像度でユーザUを含む対象までの距離が得られる。
【0053】
3.赤外線画像
赤外線カメラ13で撮像されたグレイスケールの画像である。赤外線プロジェクタ14から投影されたパルスを撮像することができる。また、赤外線を発する人(ユーザU)を検出できる。
【0054】
4.人物の形状データ
動作検出装置10は、距離画像から人物領域のみを抽出して人物の形状データを作成できる。例えば、赤外線画像から人の撮像領域を特定したり、フレームに応じて距離が変化する領域を人の撮像領域として特定する。距離画像からこの撮像領域を抽出したものが人物の形状データである。したがって、情報処理装置30はユーザUがいる画素領域が分かる。また、動作検出装置10は、複数のユーザUが検出された場合、ユーザUと画素領域とを対応付けて検出する。情報処理装置30はカラー画像から人物領域のみを切り出すこともできる。
【0055】
5.骨格情報
関節の座標情報である。ボーン情報やスケルトン情報と呼ばれる場合がある。図5に三次元座標が得られる関節を示す。なお、図5ではユーザの関節を正面から見た図である。図5の符号と関節の名称を説明する。また、図5では左半分の関節は右側と同じなので符号が省略されている。
a…頭関節、b…首関節、c…肩中央関節、d…右肩関節、e…右肘関節、f…右手首関節、g…右手関節、h…右手先関節、i…右手親指関節、j…背骨関節、k…腰中央関節、l…右腰関節、m…右膝関節、n…右かかと関節、o…右足関節
なお、動作検出装置10は各関節の空間中の三次元座標(X,Y,Z)だけでなく、カラー画像上(ディスプレイ310上)の関節の座標(x,y)を提供する。ユーザUがいる画素領域が明らかであるためである。また、「右手先関節」「右手親指関節」「左手先関節」「左手親指関節」の三次元座標が分かるので、動作検出装置10はユーザUが手のひらを開いているか閉じているかを判断できる。
【0056】
6.表情
顔の認識に基づくユーザUの表情である。動作検出装置10は普通、笑っている、驚いている、左・右の目を閉じているか開いているか、口が開いているか閉じているか、画面から目を離しているか、メガネをかけているか、などを認識できる。
【0057】
7.顔向き
顔の向きである。動作検出装置10はヨー角、ピッチ角、ロール角を検出できる。
【0058】
8.心拍数
推定されたユーザUの心拍数である。カラー画像と赤外線画像で肌を推定し、血液の流れによる肌部分の微妙な変化から推定される。
【0059】
<情報処理装置30の機能について>
まず、図6を用いてアプリケーションソフト120とジェスチャー操作受付プログラム110の関係を説明する。アプリケーションソフト120とジェスチャー操作受付プログラム110は共にOS130上で動作する。アプリケーションソフト120は位置情報やイベントで操作可能なものであればよい。例えば、広告を表示するアプリケーションソフト120、プレゼンテーションなどのためのアプリケーションソフト120等がある。しかしこれらに限られず、例えば、ブラウザ、ワードプロセッサ、ゲームなどが含まれてよい。
【0060】
動作検出装置10のデバイスドライバ140が情報処理装置30にインストールされている。デバイスドライバ140は動作検出装置10が検出する信号をセンサ情報に加工するソフトウェアである。デバイスドライバ140はSDK(Software Development Kit)と呼ばれる場合がある。デバイスドライバ140が作成したセンサ情報を、任意のアプリケーションソフト120がOS130のAPI(Application Interface)を介して取得できる。本実施形態ではジェスチャー操作受付プログラム110がこのAPIを利用して処理に使用するセンサ情報を取得する。
【0061】
ジェスチャー操作受付プログラム110は、動作検出装置10からセンサ情報を取得して種々の処理を行い、ジェスチャー操作受付プログラム110自身を制御すると共に、アプリケーションソフト120に操作のためのカーソル3の位置とイベントを送信する。アプリケーションソフト120はマウスやタッチパネルなどのポインティングデバイスが操作されることで入力されるカーソル3の位置とイベントを検出する機能を備えている。一般に、OS130はポインティングデバイスの位置とイベントを検出してアプリケーションソフト120に提供している。本実施形態では汎用的なポインティングデバイスが使用されないので(情報処理装置30に接続されていない)、ジェスチャー操作受付プログラム110がカーソル3の位置とイベントをアプリケーションソフト120に提供する。なお、ジェスチャー操作受付プログラム110は複数のアプリケーションソフト120にカーソル3の位置とイベントを提供できる。
【0062】
提供方法はOS130やアプリケーションソフト120の仕様に従えばよい。例えば、OS130が提供するアプリケーションソフト120とジェスチャー操作受付プログラム110とのプロセス間通信を利用してもよいし、ジェスチャー操作受付プログラム110がOS130に対しカーソル3の位置とイベントを通知しそれをアプリケーションソフト120が取得するような方法でもよい。このような仕組みにより、アプリケーションソフト120がジェスチャー操作受付プログラム110からカーソル3の位置とイベントを取得するための変更は不要であり、ジェスチャー操作受付プログラム110は汎用的なアプリケーションソフト120と共に利用されることができる。
【0063】
なお、ジェスチャー操作受付プログラム110はアプリケーションソフトの1つであるが、デバイスドライバとして実装されてもよい。
【0064】
<<ジェスチャー操作受付プログラム110の機能>>
図7は、ジェスチャー操作受付プログラム110の機能がブロック状に示された機能ブロック図の一例である。ジェスチャー操作受付プログラム110は、情報取得部31、人検出部32、操作開始検出部33、操作エリア作成部34、座標変換部35、UI制御部36、速さ検出部37、イベント判断部38、情報記録部43、及び、出力部39を有する。これら各部は、図3に示された各構成要素のいずれかが、補助記憶装置304からRAM303に展開されたプログラム304pに従ったCPU301からの命令により動作することで実現される機能又は手段である。なお、プログラム304pには、OS130、デバイスドライバ140、アプリケーションソフト120、及び、ジェスチャー操作受付プログラム110が含まれている。
【0065】
また、情報処理装置30はセンサ情報DB44(データベース)を有しており、情報記録部43はこのセンサ情報DB44にセンサ情報を記録する。センサ情報DB44は、図3に示された補助記憶装置304やRAM303に構築されている。
【0066】
情報取得部31は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、デバイスドライバ140からセンサ情報を取得する。動作検出装置10は周期的に動作を検出しているため、情報取得部31は周期的に繰り返しセンサ情報を取得する。なお、全てのセンサ情報を取得する必要はなく、処理に使用するセンサ情報のみを取得すればよい。本実施形態では以下のような情報が使用される。
・ 右肩関節d、右手首関節f、右手関節g、右手先関節h、右手親指関節iの三次元座標が使用される。なお、ユーザは右手でも左手でも操作できるので、左肩関節、左手首関節、左手関節、左手先関節、左手親指関節の三次元座標も使用される。
・ユーザUごとの三次元座標(主に人アイコン82を表示するために使用される)
・顔の向き(人アイコン82の目を表示するために使用される)
人検出部32は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、情報取得部31が取得したセンサ情報に基づき動作検出装置10が人を検出したことを検出する。動作検出装置10が人を検出したことやその人数により人が検出されたことを検出してもよいし、動作検出装置10が人を検出すると人物形状データや骨格情報が得られることを利用して人が検出されたことを検出してもよい。なお、人の検出範囲51は動作検出装置10の仕様により決まっている。例えば、水平方向の角度は70度、距離は0.5〜4.5mの範囲である。動作検出装置10の仕様よりも狭い範囲でのみ人を検出してもよいし、動作検出装置10の仕様が変われば人を検出する範囲も変更されうる。また、同時に検出できる人の数は6人であるが、動作検出装置10の仕様が変わればこれも変更されうる。
【0067】
操作開始検出部33は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、情報取得部31が取得したセンサ情報に基づきユーザUがアプリケーションソフト120を操作する意志を示したことを検出する。本実施形態では、ユーザUが「操作位置52に存在し+手を挙げること」により操作する意志を検出する。詳細は後述される。また、操作開始検出部33はセンサ情報に基づきユーザUがアプリケーションソフト120の操作を終了する意志を示したことを検出する。本実施形態では、ユーザUが「操作位置52から離れること」又は「手を下げること」により、操作を終了する意志を検出する。
【0068】
操作エリア作成部34は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、操作開始検出部33が操作の意志を検出すると、ユーザUが操作を行うための操作エリア54を作成する。操作エリア54とはユーザUが情報処理装置30を操作できる三次元空間上の範囲(領域)である。ユーザUの右手関節gや右手首関節f等が操作エリア54に入っていると、右手関節gや右手首関節fの三次元座標がカーソル3の位置に反映されたり、ジェスチャーが検出される。
【0069】
座標変換部35は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、情報取得部31が取得したセンサ情報に基づき操作エリア54におけるユーザUの右手関節gや右手首関節fの三次元座標をカーソル3の位置に変換する。
【0070】
速さ検出部37は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、情報取得部31が取得したセンサ情報に基づき操作エリア54におけるユーザUの右手関節gや右手首関節fの速さを検出する。右手関節gや右手首関節fはどちらの速さを検出してもよいが、ユーザUは肘を中心に操作するので手先に近い関節の方が早くカーソル3を移動させることができる。逆に、手先から遠い関節の方が微小な移動量を制御しやすい。
【0071】
イベント判断部38は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、情報取得部31が取得したセンサ情報に基づき、ユーザUがイベントを発生させたかどうかを判断する。イベントは上記のように左クリック、右クリック、ダブルクリック、マウスオーバー、マウスダウン、マウスアップなどであるが、これらイベントに対応する一般的なジェスチャーは定められていない。このため、イベント判断部38はユーザUの動きをジェスチャーとして予めイベントに対応付けておき、ユーザUが予め定められたジェスチャーを行うと、対応付けられているイベントが発生したと判断する。例えば、ユーザUが操作エリア54で手を握るジェスチャーを行うと、イベント判断部38は左クリックであると判断する。
【0072】
情報記録部43は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、センサ情報をユーザごとに時系列にセンサ情報DB44に記憶しておく。上記のように動作検出装置10はユーザの位置とユーザの表情や顔向きを検出しているため、ディスプレイ310のどの辺り見ているかを推定できる程度にユーザがディスプレイ310を見ているかどうかを記録できる。また、情報記録部43はアプリケーションソフト120から、ディスプレイ310に表示されているコンテンツのスクリーンショットを取得する。センサ情報を記録するタイミングとスクリーンショットを取得するタイミングをほぼ同じにすることで、ユーザが興味を持っているコンテンツをコンテンツの提供者などが特定しやすくなる。
【0073】
出力部39は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現され、座標変換部35が変換したカーソル3の位置と、イベント判断部38が判断したイベントを取得してアプリケーションソフト120に出力する。なお、出力部39は、アプリケーションソフト120の状況を取得する機能も有する。例えば、アプリケーションソフト120が全画面に動画を表示している場合、ユーザが操作する必要がないので、情報取得部31はセンサ情報を取得しない。また、出力部39は、現在、ユーザが操作中である場合はアプリケーションソフト120へその旨を通知する。これにより、アプリケーションソフト120はユーザの操作中に全画面の動画表示に移行しないので、ユーザが急に操作できなくなることを防止できる。
【0074】
UI制御部36は、図3に示されたCPU301がジェスチャー操作受付プログラム110を実行すること等により実現される。UI制御部36は更にカーソル表示部41とアイコン表示部42を有する。カーソル表示部41は、OS130の機能を利用してカーソル3を表示したり、通常のカーソル3の代わりにガイドメッシュ4を表示したりする。また、アイコン表示部42は、ディスプレイ310に操作受付支援アイコン81を表示する。アイコン表示部42は、ユーザUの状態に応じて操作受付支援アイコン81の表示態様を変更する。操作受付支援アイコン81は、ユーザUがジェスチャーによりアプリケーションソフト120を操作しやすくなるように支援するユーザインタフェースとして機能する。例えば、動作検出装置10がユーザの全ての骨格情報を取得できるようにユーザを操作位置52に誘導する。また、操作権を持っているユーザが誰なのかを明示する(複数の人アイコン82が表示されていても手を上げている人アイコン82が操作権を有する)。操作権とは、アプリケーションソフト120を操作する権利であり、同時には一人にのみ認められる。
【0075】
<人の検出範囲51と操作位置52>
図8を用いて人の検出範囲51と操作位置52を説明する。図8は、動作検出装置10に対する人の検出範囲51と操作位置52を説明する図の一例である。上記のように、動作検出装置10は所定の水平角度の範囲(例えば70度)で所定の距離内(例えば0.5〜4.5m)の人を検出する。当然ながら、操作位置52は人の検出範囲51内である。
【0076】
操作位置52は、例えば人の検出範囲51の中央付近であるが、人の検出範囲51の内側であればどこでもよい。あえて操作位置52を決定するのは、人の検出範囲51を通過する任意のユーザUが手を挙げる動作をしてアプリケーションソフト120を操作できないようにするためでる。また、操作位置52があまり広いと操作権を取得できるユーザUの数が多くなり、自分が操作できるかどうかの判断が困難になるためである。また、操作位置52が決まっていることで、ユーザUは操作位置52に移動することでアプリケーションソフト120を操作できることを把握できる。なお、実際の操作位置52は他の場所と違う色で明示されていたり、「ここで操作してください」などの文字が表示されていることが好ましい。
【0077】
後述するように、ユーザは人アイコン82が操作受付支援アイコン81の操作位置指示表示83に入るように移動する。人アイコン82が操作位置指示表示83に入った時、ユーザは操作位置52に存在する。したがって、ユーザは人アイコン82、操作受付支援アイコン81、及び操作位置指示表示83により操作位置52に誘導される。
【0078】
しかしながら、例えば操作中にユーザが操作位置52から外れてしまう場合も想定される。例えば、ディスプレイ310をよく見ようと接近するような場合である。
【0079】
図9は、検出範囲51を立体的に示す図の一例である。図9(a)では検出範囲51にユーザの骨格情報の全て含まれている。したがって、動作検出装置10は骨格情報の全てを取得してジェスチャー操作受付プログラム110に送出できる。換言すると、ユーザは動作によりデジタルサイネージを操作できる。
【0080】
これに対し図9(b)ではユーザの身体の一部が検出範囲51からはみ出ている。動作検出装置10は全ての骨格情報のうち取得できたものだけをジェスチャー操作受付プログラム110に送出する。例えば、ジェスチャー操作受付プログラム110の各機能(操作開始検出部33、操作エリア作成部34、座標変換部35、UI制御部36、速さ検出部37、イベント判断部38)は手の骨格情報を使用するが、センサ情報に含まれていない場合には骨格情報を取得できない。このため、所望の骨格情報が取得されていないことを検出できる。
【0081】
このような場合、UI制御部36は、図9(c)に示すようにメッセージ540をディスプレイ310に表示することで、ユーザを操作位置52に移動して貰うことができる。図9(c)では「Please away from the screen」というメッセージ540が表示されている。したがって、UI制御部36は重要な(制御に必要な)骨格情報が欠落するほどユーザの位置がずれてしまった場合、案内を表示してユーザを検出範囲51の中に誘導できる。
【0082】
なお、図9ではユーザがディスプレイ310に接近しすぎた例を示すが、少なくとも関節を含むユーザの身体の一部が検出範囲51からはみ出した場合、ジェスチャー操作受付プログラム110は検出範囲51の中にユーザを誘導できる。
【0083】
<操作の意志の検出>
図10を用いて操作の意志の検出と操作エリア54について説明する。図10は操作の意志の検出と操作エリア54を説明する図の一例である。図10(a)は、ユーザUが操作位置52で行う初期動作を示している。ユーザUは操作位置52に到達するとまず手を挙げる。この操作を行うべきことは指示されているか既にユーザUが把握している。操作を開始する意志を検出することとしたのは、検出範囲51のユーザUの任意の手の動きから操作を受け付けると、ユーザが意図しない操作がアプリケーションソフト120に送出されてしまうためである。
【0084】
操作開始検出部33は頭関節aの高さよりも、右手関節gが高くなると操作を開始する意志を検出する。なお、ユーザUが挙げる手は、右でも左でもよい。操作開始検出部33は右手を優先に検出し、右手を挙げた後に左手を挙げても無視し、左手を挙げた後に右手を挙げても無視する。
【0085】
また、頭関節aの高さよりも、右手関節gが高くなることを操作開始検出部33が操作を開始する意志の検出基準としたのは、ユーザUは一般に頭よりも手を伸ばすことが少ないためである。例えば、携帯電話で通話したり、メガネを触ったりする場合、手は頭よりも低いままである。このため、アプリケーションソフト120を操作する意志のない人の動作により、操作の意志があると誤検出することを抑制しやすくなる。
【0086】
<操作エリア54>
操作エリア作成部34は、右肩関節dと頭関節aの長さ(以下、Aとする)を用いて操作エリア54を作成する。図10(b)に示すように、長さAを直径として右肩の上に中心がある円53を作成する。そして、図10(c)に示すように、円53の外接矩形を作成する。この外接矩形が操作エリア54である。なお、長さAは30cmくらいであるが、あくまで一例でありユーザUの手が届く程度の長さであればよい。
【0087】
このように、肩よりも上に中心がある円53から操作エリア54を作成することで、動作検出装置10からユーザUの手を撮像しやすくなる。動作検出装置10が設置される高さにもよるが、動作検出装置10がユーザUの腰の位置程度に設置された場合、手が肩と同じくらいの高さになると動作検出装置10が肩を撮像できない。このため、右肩関節dと頭関節aの長さの誤差が大きくなり(長さAが短くなったり大きくなったりしてしまう)、操作エリア54の形状が安定しなくなる。
【0088】
図11は、操作エリア54を詳細に説明する図の一例である。頭関節aの三次元座標をP1(X1,Y1,Z1)とし、右肩関節dの三次元座標をP2(X2,Y2,Z2)とする。なお、水平方向をX軸、高さ方向をY軸、紙面の垂直方向をZ軸とする。長さAは以下のように算出される。
A=Y1−Y2
また、円53の中心Oの座標は(X2、Y2+A/2)である。したがって、操作エリア作成部34は中心Oを中心として半径A/2の円53を描画すればよい。また、円53を求めなくても、操作エリア54の4つの頂点C1〜C4の座標を以下のように算出できる。なお、Z座標については省略したが、例えばZ1、Z2又はその平均を用いる。
C1=(X2-A/2、Y2+A)
C2=(X2+A/2、Y2+A)
C3=(X2+A/2、Y2)
C4=(X2-A/2、Y2)
このように操作エリア54を作成することで、ユーザUはカーソル3の位置を制御しやすくなる。ユーザUは手を挙げたままなので(下げると操作権を失う)、必然的に肘を基準に動作する。肩の位置はほぼ固定なので、肩の上方に作成された操作エリア54を肘を中心に操作できる。したがって、ユーザUは操作エリア54がどこにあるかを探したりすることなく肘を中心に右手首関節fや右手関節gを動かすとカーソル3を操作できる。
【0089】
<操作権が付与されない非操作動作>
ユーザが携帯電話で通話したり、メガネを触ったりする場合にユーザが手を頭よりも高くすることは少なくない。このため、より好ましくは以下のようにユーザの非操作動作を操作開始検出部33が検出することが有効である。
【0090】
図12は、ユーザの非操作動作を説明する図の一例である。非操作動作は、ユーザがデジタルサイネージを操作する意志を示す動作(例えば手を挙げる)と類似した動作である。例えば、ユーザが携帯電話で通話する動作、メガネを触ったりする動作、額に手を当てる動作、頭をかく動作などである。
【0091】
図12(a)に示すように、操作開始検出部33は頭関節aを中心とする立方体55を定義する。この定義とは、設定すると称してもよく、具体的には立方体55の座標を特定するという意味である。立方体55の寸法は頭部や顔よりもやや大きい程度であり、ユーザの手が顔に触れた際に手が入る程度の大きさである。ユーザごとに可変でもよいし、固定でもよい。また、立方体でなく直方体、球体又は楕円体でもよい。
【0092】
ユーザが非操作動作を行う場合、ユーザの手はこの立方体の中に入ることが多い。したがって、操作開始検出部33は手が立方体55に入るかどうかで非操作動作か否かを判断できる。
【0093】
図12(b)に示すように、右手関節gが立方体55に入らない場合、操作開始検出部33は非操作動作でないと判断する。この場合、ユーザUの手が挙がっているので操作開始検出部33は操作権を付与する。
【0094】
図12(c)に示すように、右手関節gが立方体55に入る場合、操作開始検出部33は非操作動作であると判断する。この場合、操作開始検出部33は手が挙がっていても、立方体55の中に手が入っているので、操作権を付与しない。
【0095】
したがって、操作をする意志のないユーザUを操作する意志があるとして誤検出することを抑制できる。
【0096】
図13は、図12の立方体55を側方から見た図の一例である。立方体55であるため、動作検出装置10との距離方向(Z方向)に立方体55は奥行きを有する。ユーザU1の手は立方体55に入っていないので非操作動作でないと判断され、ユーザU2の手は立方体55に入っているので非操作動作であると判断される。
【0097】
このように、立方体55で判断するのでユーザが立方体55の奥行きに入らないように手を挙げた場合、操作開始検出部33はユーザに操作権を付与し、座標変換部35が右手関節g等の座標を検出できる。一方、ユーザが立方体55の奥行きに入るように手を挙げた場合、ユーザが手を挙げていても、操作開始検出部33はユーザに操作権を認めない。したがって、単にXY平面で顔の近くに手があるかどうかを判断するよりも、立方体55で判断することで非操作動作と操作する意志を示す動作を区別して検出しやすくなる。
【0098】
<座標変換>
続いて、図14を用いて、操作エリア54における手首関節又は手関節の座標からカーソル3の位置への変換を説明する。図14は操作エリア54における手首関節又は手関節の座標とカーソル3の位置を示す図の一例である。なお、図14は手の速さが閾値以上の場合におけるカーソル3の位置の決定方法を説明する。
【0099】
座標変換部35は操作エリア54における手首関節又は手関節の三次元座標と、ディスプレイ310におけるカーソル3の位置を1対1に対応付ける。まず、座標変換部35は、操作エリア54の左上コーナーの頂点C1を原点(0,0)に決定する。そして、操作エリア54内の手首関節又は手関節の三次元座標を原点(0,0)を基準とする三次元座標に変換する。なお、操作エリア54はXY平面の二次元平面なので手首関節又は手関節のZ座標は使用されない。このためZ座標については常に一定と見なしてよく計算から省いてよい。C1を原点とする手首関節又は手関節の三次元座標をR(X,Y)とする。
【0100】
また、ディスプレイ310の縦方向の解像度をH,横方向の解像度をWとする。また、操作エリア54の縦横の長さはAである。したがって、簡単な比例計算によりディスプレイ310におけるカーソル3の位置S(x、y)を算出できる。
x=W×A/X
y=H×A/Y
ユーザUの手首関節又は手関節が操作エリア54の外にはみ出すことが当然あるが、座標変換部35は操作エリア54外の手首関節又は手関節を無視する。
【0101】
座標変換部35は、情報取得部31がセンサ情報を取得するごとに座標変換を行う。一方、操作エリア作成部34は、画像データの1フレームごとに操作エリア54を更新する。これにより、ユーザが正面を向いたり、肩を動作検出装置10に向けたりして動作が変わっても適切な操作エリア54を作成できる。
【0102】
なお、操作エリア54は、操作開始検出部33が操作の終了の意志を検出すると(ユーザUが手を下げると)消去される。
【0103】
図15は、ユーザUの手首関節又は手関節の三次元座標を側方から見た図である。つまり、図15の横方向がZ軸に対応する。図15のユーザU1は自分の身体の近くで腕を動かしており、ユーザU2は自分の身体よりも前方で腕を動かしている。つまり、ユーザU1とU2の手首関節又は手関節のZ座標は異なっている。しかし、ユーザU1とU2の手首関節又は手関節のY座標はほぼ同じである(図15からは明らかでないがX座標もほぼ同じ)。
【0104】
このようにZ座標が異なっても、座標変換部35は手首関節又は手関節の座標をカーソル3の位置に変換する際にZ座標を使用しないので、ユーザU1とU2が操作するカーソル3の位置(軌跡)は同じになる。
【0105】
<<操作エリア54の変形例>>
一般に、ディスプレイ310のアスペクト比は1対1でなく横方向の方が長い。これに対し、操作エリア54の縦横の長さはどちらも長さAである。したがって、ユーザUが横方向に手を動かすとカーソル3は横方向に大きく動くため、ユーザUは横方向のカーソル3の位置を制御しにくいおそれがある。そこで、操作エリア54の縦横の長さをディスプレイ310のアスペクト比に応じて変更することが有効になる。なお、ディスプレイ310のアスペクト比は情報処理装置30に入力されている。
【0106】
図16は、操作エリア54の変形例を説明する図の一例である。図16(a)はディスプレイ310のアスペクト比が横長の場合の操作エリア54の一例を示す。操作エリア作成部34は上記した正方形の操作エリア54の左右に拡張領域54aを付加して操作エリア54を作成する。拡張領域54aの長さαは例えば10cmである。これは、長さAが30cmであるとすると全体で50cmくらいの範囲ならユーザUの手が届くためである。したがって、10cmは一例に過ぎず、長さAを考慮して手の届く範囲で拡張すればよい。例えばユーザUの身長などに応じて可変としてもよい。
【0107】
図16(b)はディスプレイ310のアスペクト比が縦長の場合の操作エリア54の一例を示す。αについては図16(a)と同様でよい。このように操作エリア54の縦横の長さがディスプレイ310のアスペクト比に応じて変更されることで、ユーザUの操作性が向上する。
【0108】
<速さの検出>
図17を用いて速さの検出について説明する。図17は手首関節又は手関節の速さの検出方法を説明する図の一例である。速さ検出部37は、手首関節又は手関節の過去の数周期の三次元座標を用いて加速度を算出する。例えば、時刻t1の手首関節又は手関節の速度Vは、時刻t0とt1の手首関節又は手関節の三次元座標から求めることができる。なお、センサ情報が取得される周期をΔtとする。上記のようにX,Y成分だけを使用して、時刻t1の速度V1が算出される。
Vx=(Xt1−Xto)/Δt、Vy=(Yt1−Yto)/Δt、
=√(Vx+Vy
同様に、時刻t2の手首関節又は手関節の速度V2は、時刻t1とt2の手首関節又は手関節の三次元座標から求めることができる。そして、時刻t2の加速度αは、速度V1とV2の差を周期Δtで割った値なので以下のように算出できる。
α=(V−V)/Δt
したがって、過去の3周期の三次元座標があれば、速さ検出部37は周期ごとに手首関節又は手関節の加速度を算出できる。
【0109】
本実施形態では速度や加速度を手の速さの指標として用いる。これらの速さと比較される閾値は、実験的に定められるものとする。例えば、停止するよりもやや速い程度の速さを閾値とする(例えば1〜10〔cm/sec〕)。操作ボタン103をクリックしようとするは手首関節又は手関節の速さはゆっくりとしている場合が多いためである。
【0110】
なお、手首関節又は手関節の速さとして速度を用いる場合、過去の2周期の三次元座標を用いれば速さ検出部37が速度を算出できる。また、加速度の加速度を更に算出して速さの指標としてもよい。この場合、過去の4周期の三次元座標を用いれば算出できる。
【0111】
<イベントの検出>
図18を用いて、イベントの検出方法について説明する。図18(a)は手の部分に含まれる関節と手の形状を示し、図18(b)はユーザUが手を握った状態の手の部分に含まれる関節と手の形状を示す。イベント判断部38は、一例としてユーザUが手を握り素早く開くジェスチャーをクリックというイベントとして検出する。つまり、握った(グー)時点ではマウスの左ボタンダウン、開く(パー)と左ボタンアップというイベントになる。こうすることで、ユーザはクリックの他、握ったままドラッグすることなどが可能になる。また、握っている時間が長い場合、イベント判断部38は右ボタンダウンのイベントを検出する。
【0112】
上記のように、動作検出装置10は右手関節g、右手首関節f、右手先関節h、右手親指関節i(及び、左手関節、左手首関節、左手先関節、左手親指関節)の三次元座標を検出している。図示するように、ユーザUが右手を握ると、右手先関節hと右手親指関節iの三次元座標が特定の方向に大きく移動する。図示するようにX,Y座標を取ると、右手先関節hのY座標が小さくなる。また、右手親指関節iのX座標も小さくなる。
【0113】
イベント判断部38は、右手先関節hのY座標が小さくなり、かつ、右手親指関節iのX座標も小さくなると、左ボタンダウンのイベントが生じたと判断する。右手先関節hのY座標が大きくなり、かつ、右手親指関節iのX座標も大きくなると、左ボタンダアップのイベントが生じたと判断する。なお、右手先関節hのY座標が小さくなるか、又は、右手親指関節iのX座標も小さくなった場合に、左ボタンダウンというイベントが生じたと判断してもよい。
【0114】
また、動作検出装置10は、いわゆるじゃんけん(グー、チョキ、パー)というジェスチャーを検出しているので、これを利用して握るというジェスチャーを検出してもよい。例えば、グー又はチョキというジェスチャーが検出された場合に、左ボタンダウンというイベントが生じたと判断する。
【0115】
また、イベント判断部38は、三次元座標のうち二次元の座標だけを使うのでなく、Z座標を使って握るというジェスチャーを検出してもよい。ユーザUはアプリケーションソフト120をクリックする場合に、例えば前方(又は後方)に手を移動させる。イベント判断部38は、右手関節g等の所定以上の速さのZ軸方向の三次元座標の変化を検出して、クリックというイベントが生じたと判断する。
【0116】
しかしながら、ユーザUがZ方向に手を動かそうとすると、X,Y座標も動きやすくなるため、カーソル3の位置がクリックしたい位置から動いてしまうおそれがある。このため、本実施形態のように、X座標、Y座標が変化しにくい手を握るというジェスチャーが有効である。したがって、主に指を動かすなどの手を握って開く以外のジェスチャーがクリックのイベントと対応付けられていてもよい。
【0117】
<速さが閾値未満の場合の座標変換>
図19を用いて速さが閾値未満の場合の座標変換を説明する。図19は、速さが閾値未満の場合の座標変換を説明する図の一例である。速さ検出部37が手首関節又は手関節の速さが閾値未満になったと判断すると、座標変換部35とUI制御部36は以下のように動作する。
(i) カーソル表示部41はガイドメッシュ4をカーソル3の位置に表示する。
(ii)三次元座標が閾値以上変化したかどうか(手首関節が閾値以上の大きさで動作したかどうか)を判断する。
(iii) 三次元座標が閾値以上変化した場合、X方向又はY方向のうちどちらの成分が大きいかを判断する。
(iv) X方向又はY方向のうち成分が大きい方に、ガイドメッシュ4を沿って移動量に応じたマス目だけ移動させる。
【0118】
(i)について説明する。速さが閾値未満であると速さ検出部37が判断した旨の情報をカーソル表示部41が取得すると、カーソル表示部41はガイドメッシュ4の表示を開始する。図19(a)に示すように、カーソル表示部41は座標変換部35から取得したカーソル3の位置をガイドメッシュ4の所定の交点に対応付けて、交点にカーソル3を配置してガイドメッシュ4を表示する。所定の交点はガイドメッシュ4の略中央のいずれかで予め定められている。したがって、ガイドメッシュ4の略中央にカーソル3が表示される。また、このガイドメッシュ4と共に表示されるカーソル3は、速さが閾値以上である場合のカーソル3とは形状が異なっている。図19(a)では縦横の両端矢印が垂直に交わった形状である。
【0119】
カーソル3はガイドメッシュ4の交点上を移動する。ガイドメッシュ4は速さが閾値以上になると消去される。速さが閾値未満の間、ガイドメッシュ4は移動してもよいし固定でもよい。
【0120】
なお、ガイドメッシュ4の各マスは正方形でもよいが、ディスプレイ310のアスペクト比と同じ比で縦横の長さが決定されていてもよい。
【0121】
次に、(ii)のように判断するのは、ユーザUが意図しないわずかな手の動きによりカーソル3の位置が変化しないようにするためである。また、カーソル3がアプリケーションソフト120の例えば操作ボタン103上にある状態でユーザUがクリックしようと握るというジェスチャーを行う場合に、ジェスチャーにより手がジェスチャー以外の動きを行う場合が少なくない。この場合、ジェスチャーした時にはカーソル3が操作ボタン103外に移動しており、ユーザUが操作ボタン103をクリックできない場合が生じてしまう。そこで、(ii)のように判断することで、ユーザUが意図しないわずかな手の動きによりカーソル3の位置が変化してしまうことを抑制できる。
【0122】
図19(b)では、三次元座標が閾値以上変化したものとする。すなわち、手首関節又は手関節の座標が座標(X1,Y1)から(X2,Y2)に移動したものとする。カーソル表示部41は、X方向とY方向のそれぞれの移動量ΔX,ΔYを算出する。
ΔX=X2−X1
ΔY=Y2−Y1
カーソル表示部41は、ΔX,ΔYのうち少なくとも一方が閾値以上であるかどうかを判断する。閾値は、ユーザUが静止しようとしてもふらついてしまう一般的な手首関節又は手関節の移動量、及び、動作検出装置10の誤差が考慮して決定されている。例えば数cmにすればよいが、適宜、実験的に担当者等が定めることができる。
【0123】
(iii)について説明する。移動量ΔX,ΔYの少なくとも一方が閾値以上である場合、カーソル表示部41はΔXとΔYのどちらの方が大きいかを判断する。図19(b)ではΔX>ΔYである。
【0124】
(iv)について説明する。カーソル表示部41は手首関節又は手関節の座標(X2,Y2)のうちX2のみをカーソル3の位置を決定する。カーソル3の位置のガイドメッシュにおけるy方向の位置は直前の値をそのまま使用する。座標変換部35が変換したカーソル3の位置のx座標はメッシュガイドの交点上にあるとは限らないので、カーソル表示部41はx座標をメッシュガイドの交点上に補正する。例えば、以下のように補正する。
・カーソル3の位置のx座標が最も近いメッシュガイドの交点に補正する
・カーソル3の位置のx座標の次のメッシュガイドの交点に補正する
・カーソル3の位置のx座標の手前のメッシュガイドの交点に補正する
このように補正することで、カーソル表示部41はメッシュガイドと共に表示されるカーソル3を交点上に表示できる。図19(c)では、直前のカーソル3の位置から右方向に2マス分移動した交点にカーソル3が移動して表示される。
【0125】
<手首関節又は手関節の切り替え>
ユーザUはカーソル3を大きく移動させたい場合と、操作ボタン103の近くなどのように小さく移動させたい場合がある。また、ユーザUは肘を中心に手を動かすので、手の外側の関節ほど速く動く。そこで、座標変換部35は、速さ検出部37が閾値以上の速さを検出したか否かに応じて、カーソル3の位置に変換する関節(ユーザの身体の部位)を切り替える。
A.速さが閾値以上の場合、右手関節gの三次元座標をカーソル3の位置に変換する。
B.速さが閾値未満の場合、右手首関節fの三次元座標をカーソル3の位置に変換する。
【0126】
これにより、カーソル3を大きく移動させたい場合、ユーザUは素早くカーソル3を移動させやすくなり、操作ボタン103などの近くでは手首を使って意図した位置にカーソル3を移動させやすくなる。なお、Aの場合、右手先関節hや右手親指関節iの三次元座標を使用してもよい。肘から更に遠いので、ユーザはより速くカーソル3を操作できる。
【0127】
<操作受付支援アイコンについて>
図20〜22を用いてアイコン表示部42が表示する操作受付支援アイコン81について説明する。図20は、動作検出装置10によりユーザUが検出された時の操作受付支援アイコン81を示す図の一例である。アイコン表示部42は、まずディスプレイ310に操作受付支援アイコン81を大きく表示させる。なお、操作受付支援アイコン81は動作検出装置10の検出範囲51とほぼ相似の形状を有している。
【0128】
操作受付支援アイコン81は常に表示されていてもよいし、人が検出された場合にだけ表示されてもよいが、検出された時には大きく表示される。これにより、ユーザUは動作検出装置10により検出されたことを認識できる。また、ユーザの目をディスプレイ310に向けさせる効果がある。なお、アイコン表示部42は操作受付支援アイコン81を大きく表示するだけでなく、点滅させたり色を変えたりするなどして表示してもよい。この他、ディスプレイ310と別のプロジェクタ5に操作受付支援アイコン81を表示させフォログラム投影(立体視)してもよい。
【0129】
図20では、ユーザUが動作検出装置10の検出範囲51の右後方から検出範囲51に進入している。情報取得部31は、ユーザUの三次元座標を取得しているので、操作受付支援アイコン81においてユーザUの位置に対応する位置(アイコン上位置という)に人アイコン82を表示する。人アイコン82がアイコン上位置に表示されるので、ユーザUは検出範囲51における自分の位置を把握できる。また、情報取得部31は、ユーザUの顔の向きを取得しているので、アイコン表示部42は顔の向きから推定した目の位置を人アイコン82に表示する。
【0130】
操作受付支援アイコン81には、操作位置52に対応する場所(以下、操作位置指示表示83という)が強調して表示されており、ユーザUは人アイコン82が操作位置指示表示83に入るように移動する。
【0131】
図21は、操作受付支援アイコン81における人アイコン82の位置の算出方法を説明する図の一例である。図21(a)は操作受付支援アイコン81を示し、図21(b)は検出範囲51の上面図を示す。動作検出装置10はユーザの各関節の座標を検出している。例えば動作検出装置10の中心を原点OにユーザのX1座標やZ1座標を特定できる。すなわち、動作検出装置10に対するユーザの相対位置(第一の相対位置)を特定している。中心Oからの距離Dや正面を基準とする方向θも既知である。
【0132】
一方、操作受付支援アイコン81は検出範囲51と相似(又は類似した)形状を有する。動作検出装置10が設置されている位置に対応する操作受付支援アイコン81の位置(図では上辺の中心)を原点Oとする。アイコン表示部42は、上記の相対位置を操作受付支援アイコン81の原点Oに対する相対位置(第二の相対位置)に変換して変換後の相対位置に人アイコン82を表示する。
【0133】
検出範囲51がユーザを検知する距離をA〔m〕とする。一方、操作受付支援アイコン81の距離Aに相当する辺の長さa〔ピクセル〕は既知である。したがって、a/Aの比を用いて、操作受付支援アイコン81における人アイコン82の座標(x1,z1)を算出できる。
x1=X1×a/A
z1=Z1×a/A
アイコン表示部42は、情報取得部31がセンサ情報を周期的に取得するごとに人アイコン82の位置を更新する。
【0134】
図22は、ユーザUが操作位置52で手を挙げた際の操作受付支援アイコン81を示す図の一例である。なお、図22は、手首関節又は手関節の速さが閾値以上の場合の画面例を示している。アイコン表示部42は、ユーザUが操作位置52に入って所定時間が経過するか、又は、ユーザUが操作位置52で手を挙げてから所定時間が経過すると、操作受付支援アイコン81を小さく表示する。これにより、ユーザUがディスプレイ310に表示されたアプリケーションソフト120の画面を見やすくなる。
【0135】
また、ユーザUが手を挙げると操作開始検出部33はユーザUが手を挙げたことを検出するので、アイコン表示部42は人アイコン82の手を挙げる。換言すると右手を挙げた人アイコン82を表示する。これにより、手を挙げたユーザUに操作権が与えられる。ジェスチャー操作受付プログラム110は、仮に、他のユーザUが手を挙げても操作を受け付けない。図22では左後方から別のユーザUが検出範囲51に進入しているが、このユーザUはアプリケーションソフト120を操作できない。つまり、操作位置52で最も早く手を挙げたユーザU(のみ)が操作権を得る。
【0136】
ユーザUは操作位置52で上記のように操作エリア54を作り、手を動かしてカーソル3を表示したり、ジェスチャーを行いイベントを生じさせたりする。
【0137】
図23(a)は、ユーザUが操作位置52で手を挙げているが手首関節又は手関節の速さが閾値未満の場合のガイドメッシュを示す図の一例である。この場合、カーソル表示部41はガイドメッシュ4の交点にカーソル3を表示する。また、カーソル3は縦又は横にしか移動しないので、ユーザUはガイドメッシュ4のマスを参考にしてカーソル3の微小な動きを制御できる。
【0138】
なお、ガイドメッシュ4は表示されなくてもよい。ガイドメッシュ4がなくてもカーソル3は縦又は横にしか移動しない点に変わりはなく、ユーザUはカーソル3の微小な動きを制御できる。しかし、ガイドメッシュ4が表示されることでユーザUはマス単位にしかカーソル3を移動できないことを把握できるので、操作性しやすいと感じることが期待される。
【0139】
また、ガイドメッシュ4の横線は水平でなくてもよく、縦線は垂直でなくてもよい。例えば、縦横の直線が交差していればよい。
【0140】
また、図23(b)に示すように、同心円の円周上を半径方向にカーソル3が移動してもよい。
【0141】
<動作手順>
図24は、ジェスチャー操作受付プログラム110がユーザUに操作権を付与するまでの手順を示すフローチャート図の一例である。図24の処理は例えば、情報処理装置30がジェスチャー操作受付プログラム110を実行中、繰り返し実行される。
【0142】
まず、人検出部32により動作検出装置10が人を検出したか否かが判断される(S10)。人が検出されない場合(S10のNo)、図24の処理は終了する。
【0143】
人が検出された場合(S10のYes)、アイコン表示部42は操作受付支援アイコン81をディスプレイ310に大きく表示する(S20)。この後、アイコン表示部42は、人が検出されていても操作受付支援アイコン81を一定時間後に小さく表示する。
【0144】
次に、アイコン表示部42は、ユーザUの位置に基づいて人アイコン82を操作受付支援アイコン81のアイコン上位置に表示する(S30)。情報取得部31はセンサ情報を周期的に取得するので、アイコン表示部42は人アイコン82の位置を更新する。
【0145】
操作開始検出部33はユーザUの位置が操作位置52に入ったか否かを判断する(S40)。すなわち、ユーザUのX,Y,Z座標が操作位置52に含まれているか否かを判断する。
【0146】
ユーザUが操作位置52に入るまでは(S40のNo)、人が未検出かどうか判断される(S50)。そして、人が未検出になると(S50のYes)、図24の処理が終了する。
【0147】
人が検出されている間(S50のNo)、繰り返しユーザUが操作位置52に入ったか否かが判断される。
【0148】
次に、人が操作位置52に入った場合(S40のYes)、操作開始検出部33はユーザUが手を挙げたか否かを判断する(S60)。例えば、手がユーザの腰より一定(以上)の高さに位置するか否かを判断する。
【0149】
ユーザUが手を挙げるまで(S60のNo)、ステップS40以降の判断が繰り返し実行される。
【0150】
ユーザUが手を挙げた場合(S60のYes)、操作開始検出部33は手が所定の周辺領域に入っていないかどうかを判断する(S70)。所定の周辺領域とは例えば、立方体55の内側をいう。なお、この立方体55を用いた判断は所定の領域内に入っているかどうかの判断の一例である。例えば、右手先関節hや右手関節gが頭関節aの周辺にないことを確認する。これにより、例えば電話中のユーザUがアプリケーションソフト120を操作してしまうことを抑制できる。なお、ステップS70の判断は、操作する意志のないユーザに操作権を与えることを防ぐものであって、必須ではない。また、ステップS70の判断では、ユーザの頭から腰に向かって作成される直方体(頭から腰のやや手前までを含む直方体)の領域(体の近くの周辺領域)に手が入っていないことを判断することが好ましい。これによりユーザの姿勢に依存しない領域が作成される。具体的には、ユーザがバインダーなどの荷物を抱えているケースでも、頭周辺の領域だけでなく胴回りの領域も非操作領域に含めることができる。
【0151】
ステップS70の判断がYesの場合、操作開始検出部33は操作を開始する意志を検出して、手を挙げたユーザUに操作権を付与する(S80)。したがって、他のユーザUが操作位置52で手を挙げてもアプリケーションソフト120を操作できないようにすることができる。
【0152】
次に、アイコン表示部42はアイコン上位置に手を挙げた人アイコン82を表示する(S90)。これによりユーザUは自分が手を挙げたことが認識されたと判断でき、操作を開始できる。
【0153】
操作を開始する意志が検出されると、操作エリア作成部34は操作エリア54を作成する(S100)。以降、ユーザUは手関節や手首関節によりカーソル3の位置を操作したり、ジェスチャーによりアプリケーションソフト120を操作できる。ジェスチャー操作受付プログラム110はユーザUによるアプリケーションソフト120の操作を受け付けを開始する。
【0154】
図25は、ジェスチャー操作受付プログラム110がユーザUの操作を受け付けてアプリケーションソフト120を操作する手順を示すフローチャート図の一例である。図25の処理は操作エリア54が作成されるスタートする。
【0155】
まず、情報取得部31がセンサ情報を取得する(S110)。
【0156】
速さ検出部37はセンサ情報に基づいて手関節の速さが閾値以上か否かを判断する(S120)。
【0157】
手関節の速さが閾値以上である場合(S120のYes)、座標変換部35は手関節の三次元座標をカーソル3の位置に変換する(S130)。
【0158】
出力部39は、カーソル3の位置をアプリケーションソフト120に出力する(S140)。
【0159】
また、イベント判断部38は、ユーザUがイベントを発生させるジェスチャーをしたか否かを判断する(S150)。これは、ガイドメッシュ4が表示されていなくてもユーザUはジェスチャーすることが可能なためである。
【0160】
イベントが検出された場合は、出力部39は、カーソル3の位置及びイベントをアプリケーションソフト120に出力する(S160)。なお、カーソル3の位置とイベントは同時に出力されなくてもよい。
【0161】
次に、手関節の速さが閾値以上でない場合(S120のNo)、カーソル表示部41はガイドメッシュ4を表示中か否かを判断する(S180)。これは、ガイドメッシュ4を表示中に再度ガイドメッシュ4を表示する必要がないためである。
【0162】
ガイドメッシュ4を表示中でない場合(S180のNo)、カーソル表示部41は中央にカーソル3が表示されたガイドメッシュ4を表示する(S190)。なお、カーソル表示部41は座標変換部35からカーソル3の位置を取得する。この後、処理はステップS140に進む。
【0163】
ガイドメッシュ4を表示中である場合(S180のYes)、カーソル表示部41は手首関節の三次元座標が閾値以上移動したか否かを判断する(S200)。すなわち、手関節でなく手首関節に着目することで、ユーザUはカーソル3の微小な移動を制御しやすくなる。
【0164】
ステップS200の判断がYesの場合、カーソル表示部41はガイドメッシュ4のカーソル3の位置を更新する(S210)。すなわち、カーソル表示部41は手首関節が移動したX方向とY方向の移動量の内、大きい方だけをカーソル3の位置に変換する。カーソル表示部41はこのカーソル3の位置をガイドメッシュ4の交点に補正する。この後、処理はステップS140に進み、ガイドメッシュ4にカーソル3が表示される。
【0165】
また、操作開始検出部33は、ユーザUが操作位置52に入っているかどうか及び手を挙げているかどうかを適宜、判断する(S170)。これは、操作する意志を確認するためである。
【0166】
ステップS170の判断がYesの場合、処理はステップS110に戻りアプリケーションソフト120の操作が継続される。
【0167】
ステップS170の判断がNoの場合、出力部39はアプリケーションソフト120に対しガイドメッシュ及びカーソルを非表示にするよう要求する(S220)。以上で、図25の処理は終了する。この場合、操作エリア54が削除されユーザUは操作権を失う。
【0168】
<センサ情報の記録と活用>
続いて、図26図29を用いて、センサ情報の記録と活用について説明する。従来のデジタルサイネージは、ユーザにより閲覧されているかどうか履歴として残せていなかった。本実形態の情報処理装置30はユーザの顔向き等を動作検出装置10から取得しているので、コンテンツの提供者などが、後でどのくらいのユーザが閲覧していたかを分析できる。また、情報記録部43はディスプレイ310に表示されたコンテンツのスクリーンショットを記録しているため、ユーザがどのようなスクリーンショットに興味を示したか等を分析できる。なお、スクリーンショットはデータサイズが大きいので、ユーザの顔向きがディスプレイ310を向いている場合にだけ、記録すればよい。
【0169】
図26は、顔向きなどの分析のために情報記録部43が記録するセンサ情報の一例を示す。図26では、XML形式で一人のユーザに関し記録されるセンサ情報が記述されている。以下、これらの情報について説明する。
<TrackingID>タグは認識されているユーザ(操作権限を持たないユーザも含む)に対して割り当てられているユーザの識別情報である。
<Glasses>タグは眼鏡をしているかどうかを示す。
<Happy>タグは笑顔かどうか(幸せそうか)を示す。
<LeftEyeClosed>タグは左目を閉じているどうかを示す。
<RightEyeClosed>タグは右目を閉じているかどうかを示す
<LookingAway>タグはこちらを向いているかどうかを示す。
<MouthMoved>タグは口が動いているかどうかを示す。
<MouthOpen>タグは口が開いているかどうかを示す。
<Yaw>タグは顔の横方向の角度(ヨー角)を示し、動作検出装置10に向かって左横に首を曲げるとプラス値、右に首を曲げるとマイナス値となる。
<Pitch>タグは顔の上下方向の角度(ピッチ角)を示し、動作検出装置10に向かって上を向くとプラス値、下を向くとマイナス値となる。
<Roll>タグは顔を傾ける方向の角度(ロール角)を示し、目や口元が垂直である場合はゼロとなる。
<PositionInfo>タグはユーザの位置を示し、<X>タグは動作検出装置10の中心から横方向の距離(右側プラス値、左側マイナス値)を示す。<Y>タグは身長を示し、<Z>タグは動作検出装置10からの距離を示す。
<MouseTrackingInfo>タグの<LeftButtonDown>タグはマウスの左ボタンを押下しているかどうかを示し、<RightButtonDown>タグはマウスの右ボタンを押下しているかどうかを示す。<MousePositionInfo>タグは、カーソルのX座標とY座標を示す。
【0170】
なお、<MouseTrackingInfo>や<MousePositionInfo>は操作権限を持つユーザについてだけ記録される。情報記録部43はこのような情報を各ユーザごとに記録する。
【0171】
図27は、図26のセンサ情報が取得された際に情報記録部43が取得したスクリーンショット201を示す図の一例である。したがって、コンテンツの提供者等は、<Yaw>、<Pitch>、<Roll>の各タグにより、ユーザがコンテンツのどこを見ているか(どこに興味があるか)、更に視線の滞留時間等を測定することなどができる。また、<MouseTrackingInfo>タグにより、ユーザが何か操作をしているのか、操作をしていれば何に興味があるのかを、スクリーンショット201から判断できる。
【0172】
ところで、動作検出装置10は距離情報をユーザの検出に使用しているので、複数のユーザの位置によってはユーザを検出できない場合がある。図28は、検出されないユーザを説明する図の一例である。図28では動作検出装置10の検出範囲51に3人のユーザU1〜U3がいることが示されている。しかしながら、ユーザU1とユーザU3が、動作検出装置10から見て距離方向に重なっているため、動作検出装置10はユーザU3を検出できない。すなわち、骨格情報を取得できない。
【0173】
しかしながら、動作検出装置10は上記のようにカラー画像202を撮像しているため、カラー画像202にはユーザU3は写っている。また、ユーザU3が写っている領域の距離情報も取得されている。情報記録部43は、例えばカラー画像202から顔認識やシルエット認識することで、人だと判断する。これにより、検出範囲51のユーザの人数を正しく取得できる。
【0174】
ユーザU3が写っている領域は、Z方向の座標がある範囲に入っている領域(例えば、ユーザU1よりも後方の処理範囲内)として抽出できるため、顔認識などを行う領域をユーザU1よりも後方のZ座標を有する領域に制限でき検出時間を短縮できる。
【0175】
このように、骨格情報だけでは一度に取得できるユーザの人数に制限があるが(現在は最大6人)、カラー画像202や距離情報と組み合わせることで、人が群がっている場合でもユーザの数を検出できる。また、ユーザU3がU1により遮られる以前のカラー画像202と遮られた後のカラー画像を比較したり、ユーザU3がU1により遮られる以前の距離情報と遮られた後の距離情報を比較することもできる。人検出部32が検出するユーザの数が急に減った場合、情報記録部43はユーザが隠れていることを推定し、隠れる前と距離情報が同程度の領域から顔認識などで探索できる。
【0176】
図29は、情報記録部43がセンサ情報DB44に記憶したセンサ情報の解析例を説明する図の一例である。情報処理装置30は、センサ情報DB44に記憶したセンサ情報から時間帯ごと(図では10分)のユーザの人数を合計する。図29では、棒グラフ205の高さが時間帯ごとのユーザの数を示す。また、各棒グラフ205では、時間帯のユーザの数が、操作権を有したユーザの数204とそれ以外のユーザの数203に分けて表示されている。なお、継続的に検出されている同じユーザには同じ<TrackingID>が付与されるため、情報処理装置30が重複してカウントするおそれはほとんどない。
【0177】
また、図29では、各時間帯のスクリーンショット201がタイムラインのように棒グラフ205の上方に表示されている。あるいは、各時間帯の代表的なスクリーンショット201が表示されてもよい。代表的なスクリーンショット201とは、時間帯の最初又は最後のスクリーンショット、又は、画像の変化が最も大きいスクリーンショットなどである。
【0178】
したがって、コンテンツの提供者等は、多くのユーザを集めたコンテンツがどれなのか判断できる。例えば、図29のコンテンツが異なる講師(学校や予備校の先生、後援者など)の場合、どの講師に人気があるか判断できる。
【0179】
<まとめ>
以上説明したように、本実施形態の情報処理装置30は、動作の速さが閾値未満の場合、カーソル3の移動方向を所定方向に制限することで、カーソル3の位置の操作性を向上させることができる。また、動作の速さが閾値未満の場合、右手首関節fが閾値以上、移動しないとカーソルが移動しないので、ユーザがクリックのジェスチャーを行う際にカーソルが移動してしまうことを抑制しやすい。また、動作の速さが閾値以上か未満かによって、異なるユーザの関節を使って操作できるのでユーザの操作性を向上できる。また、ディスプレイ310のアスペクト比によって適宜、操作エリア54の縦横の長さを変更するのでユーザによるカーソル3の操作性を向上できる。また、複数のユーザが検出された場合も、最初に操作の意志を示したユーザに操作権を付与できる。また、操作受付支援アイコン81を表示することでユーザは操作位置52に移動しやすくなり、また、自分が操作していることを把握しやすい。
【0180】
<その他の適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0181】
例えば、情報処理装置30はサーバクライアント方式で動作してもよい。この場合、情報処理装置30はセンサ情報をサーバに送信し、サーバからカーソルの位置とイベントを受信する。そして、アプリケーションソフト120に送出する。このような情報処理装置30とサーバを有する表示システムによりユーザはデジタルサイネージを操作できる。
【0182】
また、主にジェスチャー操作受付プログラムがカーソル3を表示すると説明したが、適宜OS130の機能を利用してカーソル3を表示してよい。また、アプリケーションソフト120がカーソル3を表示してもよい。
【0183】
また、操作エリア54内の座標とカーソルの位置を1対1に対応させるのではなく、ユーザは手の移動量でカーソルの位置を操作してもよい。例えば、カーソルと移動させる場合、手を握り、一定以上の速さで動かす。座標変換部は、手の移動量をカーソルの移動量に変換して、最後のカーソルの位置を更新する。したがって、この場合、操作エリア54はなくてもよい。
【0184】
また、本実施例では左クリックのジェスチャーを説明したが、情報処理装置30が右手と左手を区別して検出するなどにより右クリックのジェスチャーを入力することなども可能である。また、足などの関節の三次元座標や顔向きなどでカーソルを移動させることもできる。また、手を握る以外に、人間の多種多様なジェスチャーをイベントと対応付けることができる。
【0185】
また、手を挙げる動作が操作権を得る動作であると説明したが、以下のような動作により操作権が付与されてもよい。
・マイク17により声とか音(手を叩く)が検出された場合
・操作開始検出部33が検出した声とか音(手を叩く)が特定のリズムであると判断した場合
・操作開始検出部33が画像データを解析してスマートフォンなどの無線機器を持っていると判断した場合
・ユーザが持っているスマホなどの無線機器から送信された信号を操作開始検出部33が検出した場合
・ユーザが足を上げたことを操作開始検出部33が検出した場合
・手の形が予め定めた条件と一致する特定の形になったことを操作開始検出部33が検出した場合(グー、チョキ、パー等)
・ユーザが立っていることを操作開始検出部33が検出した場合(セミナーなどで会場に座っている人が立った場合に操作権を与えることができる)
・顔の表情が予め定めた条件と一致する特定の表情になったことを操作開始検出部33が検出した場合(例えば、笑っている等)
・ユーザの視線(顔向き)が特定の領域に向かっていることを操作開始検出部33が検出した場合
また、図7などの構成例は、情報処理装置30による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。情報処理装置30の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、1つの処理単位が更に多くの処理を含むように分割することもできる。
【0186】
なお、アイコン表示部42は位置表示手段の一例であり、情報取得部31は動作情報取得手段の一例であり、座標変換部35とイベント判断部38は操作受付手段の一例である。
【符号の説明】
【0187】
3 カーソル
4 ガイドメッシュ
10 動作検出装置
30 情報処理装置
31 情報取得部
32 人検出部
33 操作開始検出部
34 操作エリア作成部
35 座標変換部
36 UI制御部
37 検出部
38 イベント判断部
39 出力部
41 カーソル表示部
42 アイコン表示部
43 情報記録部
54 操作エリア
81 操作受付支援アイコン
100 情報処理システム
【先行技術文献】
【特許文献】
【0188】
【特許文献1】特開2015−176451号公報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29