(57)【要約】【課題】  プロジェクタから投影された画像の任意の位置を示すための指示であって、位置を示す操作者の動作と一体であり視認性が高い指示を実現する電子機器、情報処理方法及びプログラムを提供する。【解決手段】  実施形態によれば、電子機器は、投影情報を投影面に投影し、投影像を作成するプロジェクタと、投影像を撮影するカメラとに接続可能であり、電子機器は物体検出手段と、処理手段とを具備する。物体検出手段は、投影情報とカメラからの撮影情報とに基づいて、プロジェクタと投影面との間の物体を検出する。処理手段は、投影情報と撮影情報の少なくともいずれか一方に物体強調処理を施す。【選択図】図３
2014220720.tif 000002
【特許請求の範囲】
【請求項１】
投影情報を投影面に投影し、投影像を作成するプロジェクタと、前記投影像を撮影するカメラとに接続可能な電子機器であって、
前記投影情報と前記カメラからの撮影情報とに基づいて、前記プロジェクタと前記投影面との間の物体を検出する物体検出手段と、
前記投影情報と前記撮影情報の少なくともいずれか一方に物体強調処理を施す処理手段と、
を具備する電子機器。
【請求項２】
前記物体強調処理は、前記撮影情報に含まれる物体部分とそれ以外の部分との
違いが強調されるように前記カメラの露出あるいはホワイトバランスを調整する処理を具備する請求項１記載の電子機器。
【請求項３】
前記物体強調処理は、前記投影情報の色を前記撮影情報の色に合わせる処理を具備する請求項１記載の電子機器。
【請求項４】
前記物体強調処理は、前記投影情報の輝度を増加する処理を具備する請求項１記載の電子機器。
【請求項５】
投影情報を投影面に投影し、投影像を作成するプロジェクタと、前記投影像を撮影するカメラとに接続可能な電子機器の情報処理方法であって、
前記投影情報と前記カメラからの撮影情報とに基づいて、前記プロジェクタと前記投影面との間の物体を検出することと、
前記投影情報と前記撮影情報の少なくともいずれか一方に物体強調処理を施すことと、
を具備する情報処理方法。
【請求項６】
投影情報を投影面に投影し、投影像を作成するプロジェクタと、前記投影像を撮影するカメラとに接続可能なコンピュータに、
前記投影情報と前記カメラからの撮影情報とに基づいて、前記プロジェクタと前記投影面との間の物体を検出することと、
前記投影情報と前記撮影情報の少なくともいずれか一方に物体強調処理を施すことと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えば情報処理装置である電子機器、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置等の電子機器が生成した情報を投影するプロジェクタが広く利用されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１１７９１７号公報
【特許文献２】特開２０１１−１１８５３３号公報
【特許文献３】特開２０１２−１８１７２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プロジェクタがスクリーンに投影する文書、画像あるいは写真等の投影像の任意の位置を示す方法として、例えばポインタ等によりスクリーン上の所定の位置を直接指示する方法、あるいはプロジェクタに供給される投影情報にカーソル表示等の画像情報を電子機器において付加する方法、等がある。
【０００５】
ポインタ等を用いる方法は、別途のポインタ装置が必要となる。投影前の投影情報にカーソル表示等を付加する方法は、カーソル表示を移動するための操作が必要となる。
【０００６】
本発明の目的は、プロジェクタから投影された画像の任意の位置を示すための指示であって、位置を示す操作者の動作と一体であり視認性が高い指示を実現する電子機器、情報処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、投影情報を投影面に投影し、投影像を作成するプロジェクタと、投影像を撮影するカメラに接続可能な電子機器は物体検出手段と、処理手段とを具備する。物体検出手段は、投影情報とカメラからの撮影情報とに基づいて、プロジェクタと投影面との間の物体を検出する。処理手段は、投影情報と撮影情報の少なくともいずれか一方に物体強調処理を施す。
【図面の簡単な説明】
【０００８】
【図１】実施形態の投影システムの構成の一例を示す図である。
【図２】実施形態の電子機器１０１の構成の一例を示すブロック図である。
【図３】実施形態の電子機器１０１の処理の流れの一例を示す流れ図である。
【図４】キャリブレーション画像の一例を示す図である。
【図５】実施形態の位置補正の一例を示す流れ図である。
【図６】実施形態の色補正の一例を示す流れ図である。
【図７】実施形態の自動露出調整の一例を示す流れ図である。
【図８】実施形態の自動露出調整に利用される二分探索の一例を示す図である。
【図９】実施形態の自動ホワイトバランス調整の一例を示す流れ図である。
【図１０】実施形態の自動ホワイトバランス調整に利用される二分探索の一例を示す図である。
【図１１】実施形態の自動歪み補正の一例を示す図である。
【図１２】実施形態の環境色補正の一例を示す図である。
【図１３】実施形態の色補正方向を説明するための図である。
【図１４】実施形態の局所適応輝度加算の一例を示す図である。
【図１５】実施形態の周辺部操作性向上処理の一例を示す図である。
【図１６】実施形態のスクロールモードの一例を示す図である。
【図１７】実施形態のズームモードの一例を示す図である。
【図１８】実施形態の描画整形処理の一例を示す図である。
【図１９】実施形態の指形状検出の一例を示す図である。
【図２０】実施形態の指方向検出の一例を示す図である。
【図２１】実施形態の把持物体認識の一例を示す図である。
【図２２】実施形態の手の距離変化に対する操作割り当ての一例を示す図である。
【図２３】実施形態の指先軌跡に対する操作割り当ての一例を示す図である。
【図２４】実施形態の指先動作に対する操作割り当ての一例を示す図である。
【図２５】実施形態の操作割り当ての一例を示す図である。
【図２６】実施形態の影消失による画面接触検出の一例を示す図である。
【図２７】実施形態の画面の揺れによる画面接触検出の一例を示す図である。
【図２８】実施形態の音による画面接触検出の一例を示す図である。
【図２９】実施形態のリモートコントローラを用いる画面接触検出の一例を示す図である。
【図３０】実施形態の操作位置の変換の一例を示す図である。
【図３１】実施形態のレーザポインタ検出の一例を示す図である。
【図３２】実施形態で使用される透明指示棒の一例を示す図である。
【図３３】実施形態の複数人の手の影検出の一例を示す図である。
【図３４】実施形態でホワイトボードを使用する際の画像処理の一例を示す図である。
【図３５】実施形態の再キャリブレーションの開始条件の一例を示す図である。
【図３６】実施形態の再キャリブレーションの一例を示すフロー図である。
【図３７】実施形態の再キャリブレーションの他の例を示すフロー図である。
【図３８】実施形態の指先の追跡処理の一例を示す図である。
【図３９】実施形態のスクリーン表示の一例を示す図である。
【図４０】実施形態のクリック特定処理の一例を説明する図である。
【発明を実施するための形態】
【０００９】
以下、実施形態について図面を参照して説明する。
【００１０】
図１は、実施形態にかかる電子機器（情報処理装置）を用いる投影システム（情報処理システム）の一例を示す。なお、以下に説明する要素や構成または機能は、ハードウエアで実現するものであってもよいし、マイクロコンピュータ（ＣＰＵあるいは処理装置）等を用いてソフトウエアで実現するものであってもよい。
【００１１】
投影システム１は、パーソナルコンピュータ（ＰＣ）等である情報処理装置すなわち電子機器１０１、電子機器１０１から出力される信号である投影情報に対応する投影像を白地の投影面Ｓ、例えばスクリーンに投影するプロジェクタ２０１及びプロジェクタ２０１によりスクリーンＳに投影された投影像を撮像するカメラ３０１を含む。投影面はスクリーンに限らず、ホワイトボード等でもよい。使用者・説明者・発表者等（以下、使用者と称する）は、スクリーンＳに対して所定の位置、例えば向かって左側あるいは右側の任意の位置に位置できる。使用者は、パーソナルコンピュータ（ＰＣ）等の電子機器１０１の表示画面（投影される情報）が見える位置に位置することは必須ではない。電子機器１０１の表示画面は複数のアプリケーションのウィンドウが重なっていてもよい。カメラ３０１は、例えば電子機器１０１と一体であってもよい。
【００１２】
図２は、図１に示す投影システム１に含まれる電子機器１０１、例えばパーソナルコンピュータ（ＰＣ）の概略構成の一例を示す。図１では、電子機器１０１としては、ノートブックタイプのＰＣを示しているが、デスクトップタイプでもよい。電子機器１０１は、例えば投影情報を生成するアプリケーションもしくは画像処理ソフト（ソフトウエア）である投影情報入力部１１１を含む。投影情報入力部１１１からの投影情報が投影情報補正部１１２を介して投影情報合成部１１３に入力される。投影情報合成部１１３には、投影重畳情報入力部１４５の出力も入力される。投影情報合成部１１３の出力情報がプロジェクタ２０１に供給され、投影情報に応じた画像がスクリーンＳに投影される。
【００１３】
スクリーンＳに投影された像を撮像するカメラ３０１から出力される撮像情報（カメラ画像）が位置補正部１１５に供給される。投影情報合成部１１３には投影情報取得部（画面キャプチャ部）１１７も接続され、プロジェクタ２０１が投影する像に対応する投影情報（元画像、キャプチャ画像）を合成情報から取得する。
【００１４】
位置補正部１１５にも投影情報取得部１１７から出力される投影情報が入力される。位置補正部１１５は、カメラ画像に対してどのような透視変換を行うと元画像と一致するかを計算する。例えば、両画像（元画像とカメラ画像）から、例えばＳＵＲＦ（Speeded Up Robust Features）等の局所特徴量を抽出し、抽出した局所特徴量のクロスマッチングを行い、例えばＲＡＮＳＡＣ（RANdom SAmple Consensus）により、３×３行列のホモグラフィ行列を推定する。すなわち、位置補正部１１５から出力される画像は、ホモグラフィ行列による透視変換を行った後のカメラ画像（以下、透視変換画像とも称する）である（図３９のステップ＃１）。
【００１５】
位置補正部１１５の出力は色補正部１２１と露出・ホワイトバランス（ＷＢ）調整部１１６に供給される。露出・ＷＢ調整部１１６の出力はカメラ３０１に供給され、カメラ３０１を制御する。色補正部１２１の出力は暗所抽出部１２５と差分生成部１２３に供給される。色補正部１２１、暗所抽出部１２５、差分生成部１２３にも投影情報取得部１１７から出力される投影情報が入力される。
【００１６】
色補正部１２１は透視変換画像の色（あるいは輝度）を元画像に合致するように補正する。例えば、全ピクセルの各色（あるいは輝度）において、透視変換画像の位置（ｘ，ｙ）の画素の色（あるいは輝度）Ｉｉ（値の範囲は例えば［０…２５５］）と元画像の位置（ｘ，ｙ）の画素の色（あるいは輝度）Ｉｊ（値の範囲は例えば［０…２５５］）とするとき、透視変換画像においてある値Ｉｉをとるすべての点（ｘ，ｙ）が元画像において取るＩｊの値の平均値ｍ（Ｉｊ）を計算し、Ｉｉに対して補正後の色（あるいは輝度）を返す関数をｆ（Ｉｉ）とする。Ｉｉに対するＩｊが少ない場合は、周囲の位置のｆ（Ｉｉ）を用いて内挿しても良い。
【００１７】
色補正部１２１から出力される画像は、透視変換画像の画素すべてについて、関数ｆを適用したもの（以下補正画像）となる。
【００１８】
これにより、背景が実質的に“白”である元画像とカメラ画像が含む“色味”すなわち多くの場合、投影像に生じる背景への着色成分（本来“白”であるべき画像に僅かに色がつく）の影響をキャンセルできる（図３９のステップ＃２）。
【００１９】
差分生成部１２３は色補正部１２１から出力される補正画像Ｉｃ（ｘ，ｙ）と、投影情報取得部１１７から出力される投影画像（元画像、キャプチャ画像）Ｉｏ（ｘ，ｙ）とを用いて、差分画像Ｉｄｉｆｆ（ｘ，ｙ）＝│Ｉｃ（ｘ，ｙ）−Ｉｏ（ｘ，ｙ）│を計算する。暗所抽出部１２５は、色補正部１２１から出力される補正画像Ｉｃ（ｘ，ｙ）から暗所画像Ｉｄｉｍ（ｘ，ｙ）＝ｔｈｒｅｓｈｏｌｄ（Ｉｃ（ｘ，ｙ））を計算する。
【００２０】
暗所抽出部１２５と差分生成部１２３の出力は影抽出部１２７に供給される。影抽出部１２７は差分生成部１２３の出力Ｉｄｉｆｆ（ｘ，ｙ）と暗所抽出部１２５の出力Ｉｄｉｍ（ｘ，ｙ）から、影画像Ｉｓｈａｄｏｗ（ｘ，ｙ）＝ｔｈｒｅｓｈｏｌｄ（Ｉｄｉｆｆ（ｘ，ｙ）＊Ｉｄｉｍ（ｘ，ｙ））を計算する。なお、暗所抽出部１２５と影抽出部１２７の関数ｔｈｅｒｓｈｏｌｄの閾値は異なる。ｔｈｒｅｓｈｏｌｄ（Ｉ，ｐｒｅｄ）は、（ｘ，ｙ）において、二値化の条件ｐｒｅｄ（例えば、画素値Ｉが５０以下である）が成立すると“１”となり、そうでない場合には“０”となるような画像を生成する関数である。
【００２１】
これらの処理は、スクリーンＳとプロジェクタ２０１との間にある物体と影をＩｄｉｆｆ、影を含む暗所をＩｄｉｍとしてそれぞれ検出し、その積により影を抽出することに寄与する（影を抽出することを目的とする）（図３９のステップ＃３）。
【００２２】
影抽出部１２７の出力は立ち位置検出部１３１に供給される。立ち位置検出部１３１は使用者がスクリーンＳに対して、向かって右または左のどちらの側に立っている（居る）かを判断する。立ち位置検出部１３１は、図３８に示すように、影画像に関して、左右の余白領域ＭＬ、ＭＲにおける画素値の和ＰＬ、ＰＲを求め、両者を比較する。ＰＬ＜ＰＲであれば、影が右側に多いことになる。従って、ＰＬ＜ＰＲであれば、使用者は、右側にいると判断でき、そうでなければ使用者は左側にいると判断できる。
【００２３】
立ち位置検出部１３１の出力は指先検出部１３３に供給される。指先検出部１３３は使用者の指先を検出する。指先検出部１３３では、使用者が左側にいる場合、Ｉｓｈａｄｏｗ（ｘ，ｙ）＞０を満たすｘが最大となるＰｆ（ｘ，ｙ）を計算する。さらに、Ｐｆ（ｘ，ｙ）の周囲画素の範囲内でＩｓｈａｄｏｗ（ｘ，ｙ）＞０となる比率を計算し、これが閾値よりも小さい場合、Ｐｆ（ｘ，ｙ）は尖っていることを示す。これにより、Ｐｆ（ｘ，ｙ）を指先として検出できる。
【００２４】
指先検出部１３３の出力は指先追跡部１３５に供給される。指先追跡部１３５は使用者の過去の指先位置情報を用いて最終的な指先位置を出力する。指先追跡部１３５は、ノイズを除去するために過去の指先位置情報を加味したフィルタ処理を適宜行い、最終指先位置Ｐｆｉｎａｌ（ｘ，ｙ）を出力する。例えば（ｘ，ｘ’，ｙ，ｙ’）を状態変数とするカルマンフィルタを用いて、ノイズ除去のためのフィルタ処理を行うことで、最終指先位置Ｐｆｉｎａｌ（ｘ，ｙ）が得られる（図３９のステップ＃４）。
【００２５】
指先追跡部１３５の出力は操作情報生成部１４１に供給される。操作情報生成部１４１は最終的な指先位置が一定時間、概ね同じ位置を指差していることを検出する。操作情報生成部１４１はＰｆｉｎａｌ（ｘ，ｙ）の位置にカーソルを移動する（図３９のステップ＃５）。例えばＰｆｉｎａｌ（ｘ，ｙ）が一定時間狭い範囲にとどまる場合に“クリック”とみなす、等の規則に従い、操作情報を生成する。必要に応じ、Ｐｆｉｎａｌ（ｘ，ｙ）を“カーソル位置”として、または“クリック情報”、“クリックとみなされるまでの時間までの情報”等を、投影重畳情報入力部１４５に伝える（図３９のステップ＃６）。
【００２６】
操作出力部１４３は実際の機器への操作を行う。
【００２７】
投影重畳情報入力部１４５に伝えられた情報は、投影情報合成部１１３によって元画像にオーバーレイ等により合成され、次フレームにおいて、プロジェクタ２０１に投影情報として伝えられる。このとき、スクリーンＳには、図３９に示すように、所定の位置で交差する２つの線分の交点で示すカーソルＣ（Ｐｆｉｎａｌ）等である特定画像、“クリック”により、前のページの表示を表示するための制御コマンドの入力を指示する“戻る”ボタン表示Ｓ０１、“クリック”により、次のページの表示を表示するための制御コマンドの入力を指示する“次へ”ボタン表示Ｓ１１、及び図４０に示すように、例えばＰｆｉｎａｌ（２つの線分の交点）を“カーソル位置”として、または“クリック情報”として特定するまでの時間（指先の影の位置が動かないように静止すべき時間）を、例えば円の一周を既定時間とし、経過時間に相当する領域の色や明るさを残り時間に対して異なる色または明るさにする、等の手法により、明示的に示す時間表示Ｔ、等が表示される（図３９のステップ＃７）。
【００２８】
なお、電子機器１０１は、上述の各部を制御する制御ブロック（ＭＰＵ）１０３、ＭＰＵ１０３の動作に用いるプログラムを保持するＲＯＭ１０５、実際の処理において作業エリアとして機能するＲＡＭ１０７、及び数値データやアプリケーション等を保持する不揮発性メモリ１０９等も含む。
【００２９】
図３は実施形態におけるカメラ３０１で得られた撮影情報と、プロジェクタ２０１へ供給される投影情報の処理の流れを示す。投影情報３１０がブロック３１２で補正された後、プロジェクタ２０１に供給される。プロジェクタ３１４に供給される投影情報と、カメラ３１８からの撮影情報に基づいてブロック３１６で投影位置補正が行われる。投影位置補正後の撮影情報がブロック３２０で露出・ＷＢ調整される。露出・ＷＢ調整結果がカメラ３１８に供給される。
【００３０】
投影位置補正後の撮影情報と投影情報に基づいてブロック３２２で自動歪み補正が行われる。自動歪み補正後の撮影情報に基づいてブロック３２４で環境色補正が行われる。環境色補正後の撮影情報と自動歪み補正後の投影情報に基づいてブロック３２６で投影色補正が行われる。投影色補正後の撮影情報と投影情報に基づいてブロック３２８で遅延補正が行われる。遅延補正後の撮影情報と投影情報に基づいてブロック３３０でブラー補正が行われる。ブラー補正後の撮影情報と投影情報に基づいてブロック３３２で影・輝点補正が行われる。影・輝点補正後の撮影情報と投影情報に基づいてブロック３３４で指先検出（予測・安定化影・検出位置変換含む）が行われる。指先検出後の撮影情報と投影情報、及びブロック３３８で行われた対象アプリケーション検出結果に基づいてブロック３３６でユーザインタフェース（ＵＩ）操作管理が行われる。ＵＩ操作管理の結果に基づいてブロック３４０でグラフィックユーザインタフェース（ＧＵＩ）表示と、ブロック３４２で対象アプリケーション操作が行われる。
【００３１】
以下、図３の各処理の具体例を説明する。
【００３２】
［１：環境に関するポイント］
使用環境によっては投影システムの動作が安定しない、準備に手間がかかる場合があり、この改良に関する処理を説明する。
【００３３】
［１−１：投影位置補正］
これは、図２の位置補正部１１５、図３のブロック３１６に関する処理である。使用者がプロジェクタ２０１で投影する内容をそのまま利用して投影位置補正を行うと、図４（ａ）に示すように投影内容が単調すぎる内容の場合、投影位置補正が失敗することがある。図４（ｂ）に示すように投影位置補正に好適な複雑な文様・写真（キャリブレーション専用画像）をプロジェクタ２０１で投影し、この投影像をカメラ３０１で撮影したカメラ画像を用いることにより、投影位置補正の失敗を防ぐことができる。
【００３４】
使用者がプロジェクタ２０１で投影している内容が投影位置補正に好適な性質を備えているか否かを判断し、備えていない場合にのみ、投影システム側で補正に適したキャリブレーション専用画像を投影すれば、不自然な画面の表示を抑えることができる。
【００３５】
図５は、投影位置補正の一例を示すフロー図である。ブロック５０１で、プロジェクタ２０１が現在投影している投影画像を投影画像取得部１１７が取得する。ブロック５０２で、投影画像に含まれる投影位置補正に必要な局所特徴（例えばＳＵＲＦ等）の数と強度とが計算される。ブロック５０４で、点数と強度が閾値以上であるか否か判断される。例えば、局所特徴量のうち、予め決められた閾値以上の強度を持つものが予め決められた閾値以上、画面を４象限に分割した際のそれぞれの内に存在することを以て十分と判断する。十分な局所特徴があれば、ブロック５０６でその投影画像とそのカメラ画像に基づいて投影位置補正を行う。十分な局所特徴が無い場合は、ブロック５０８で使用者の投影内容ではなくシステムが予め十分な局所特徴を持つと知っているキャリブレーション専用画像を投影した上で、投影位置補正を行う。
【００３６】
［１−２：投影色補正］
これは、図２の色補正部１２１、図３のブロック３２６に関する処理である。使用者がプロジェクタ２０１で投影する内容をそのまま利用して投影色補正を行うと、図４（ａ）と同様に、投影内容が色の多様性に乏しい内容の場合、投影色補正が失敗することがある。図４（ｂ）と同様に、投影色補正に好適な複雑な文様・写真（キャリブレーション専用画像）をプロジェクタ２０１で投影し、この投影像をカメラ３０１で撮影したカメラ画像を用いることにより、投影色補正の失敗を防ぐことができる。
【００３７】
使用者がプロジェクタ２０１で投影している内容が投影色補正に好適な性質を備えているか否かを判断し、備えていない場合にのみ、投影システム側で補正に適したキャリブレーション専用画像を投影すれば、不自然な画面の表示を抑えることができる。
【００３８】
図６は、投影色補正の一例を示すフロー図である。ブロック６０１で、プロジェクタ２０１が現在投影している投影画像を投影画像取得部１１７が取得する。ブロック６０２で、投影画像に含まれる投影色補正に必要な色の多様性が計算される。ブロック６０４で、色の多様性が閾値以上であるか否か判断される。例えば、ＲＧＢ系あるいはその他の表色系において投影内容の各ピクセルから均等に１次元８ビンずつ分割した３次元ヒストグラムを作成し、それらのビンの得票数の分散が予め決められた閾値以下であることを以て十分と判断する。十分な色の多様性があれば、ブロック６０６でその投影画像とそのカメラ画像に基づいて投影色補正を行う。十分な色の多様性が無い場合は、ブロック６０８で使用者の投影内容ではなくシステムが予め十分な色の多様性を持つと知っているキャリブレーション専用画像を投影した上で、投影色補正を行う。
【００３９】
［１−３：自動露出調整］
これは、図２の露出・ＷＢ調整部１１６、図３のブロック３２０に関する処理である。本システムでは、使用者は投影像に指または手（以下、指と総称する）の影を含ませる、あるいはカメラ画像に指そのものを写させて、プロジェクタ２０１で投影する画像情報とカメラ３０１で撮影したカメラ画像との違いに基づいて指先を検出することにより、プロジェクタ２０１がスクリーンＳに投影する文書、画像あるいは写真等の投影像の任意の位置を示す。そのため、カメラ３０１の露出は、カメラ画像において指の影がよく見えるように、すなわち画面全体を鑑みれば露出オーバー気味に、適応的かつ高速に調整すれば、プロジェクタ２０１の明るさが暗くい場合でも、指を検出することができる。
【００４０】
図７は、自動露出調整の一例を示すフロー図である。ブロック７０１で、キャリブレーション専用画像を投影する。ブロック７０２で、プロジェクタ２０１が現在投影している内容か、もしくは［Ａ−２：投影色補正］等のように投影システムが用意した投影内容（キャリブレーション専用画像）の代表輝度値ｍ（例えば平均輝度値を用いる）を計算して、これに基づいて初期露出を設定する。ブロック７０４で、カメラ３０１の露出をある値に設定したうえで取得した画像の代表輝度値（平均輝度値）ｓを計算し、平均輝度値ｍから決定される目標輝度値ｔと平均輝度値ｓとの差の絶対値が閾値θより小さいか否か判断する。目標輝度値ｔは影の暗い部分の情報が多く得られるよう、平均輝度値ｍより大きくする。なお、後述するように、レーザーポインタの輝点検出を行う場合には、明るい部分の情報が多く得られるよう、平均輝度値ｍより小さくする。目標輝度値ｔと平均輝度値ｓとの差の絶対値が閾値θ未満の場合は、誤差は許容範囲内であり、露出調整を終了する。
【００４１】
差の絶対値が閾値θより大きい場合は、二分探索で効率的に目標の露出値を得る。そのため、ブロック７０６で、平均輝度値ｓは目標輝度値ｔ未満であるか否か判断する。平均輝度値ｓが目標輝度値ｔ未満である場合、ブロック７０８で、露出を設定可能な最小値と現在値の中間点に設定した上で、ブロック７０４の判断からの処理を繰り返す。平均輝度値ｓが目標輝度値ｔ以上である場合、ブロック７１０で、露出を設定可能な最大値と現在値の中間点に設定した上で、ブロック７０４の判断からの処理を繰り返す。これにより、短時間で平均輝度値ｓを目標輝度値ｔに一致させる（誤差範囲θ内）ことができる。図８は、二分探索により露出値を自動調整する様子を示す図である。
【００４２】
［１−４：自動ＷＢ調整］
これは、図２の露出・ＷＢ調整部１１６、図３のブロック３２０に関する処理である。プロジェクタ２０１の投影内容の明るさを変化させた際に、カメラ３０１のＲ、Ｇ、Ｂそれぞれの受光素子が均等に撮像信号を増減するようにカメラ３０１のホワイトバランス（ＷＢ）を調整することで、より広いレンジの環境・プロジェクタの明るさの元でも使用できるようになる。
【００４３】
図９は、自動ＷＢ調整の一例を示すフロー図である。［１−３：自動露出調整］と同様に、ブロック９０１で、キャリブレーション専用画像を投影し、ブロック９０２で、代表ホワイトバランス値ｍ（例えば画面内の赤色の総和Ｓｒと青色の総和Ｓｂを用いてｍ＝Ｓｒ−Ｓｂとする）を計算して、これに基づいて初期ＷＢ値を設定する。ブロック９０４で、カメラ３０１のＷＢ値をある値に設定したうえで取得した画像の代表ＷＢ値ｓを計算し、代表ＷＢ値ｍから決定される目標ＷＢ値ｔと代表ＷＢ値ｓとの差の絶対値が閾値θより小さいか否か判断する。目標ＷＢ値ｔと代表ＷＢ値ｓとの差の絶対値が閾値θ未満の場合は、誤差は許容範囲内であり、露出調整を終了する。
【００４４】
差の絶対値が閾値θより大きい場合は、二分探索で効率的に目標のＷＢ値を得る。そのため、ブロック９０６で、代表ＷＢ値ｓは目標ＷＢ値ｔ未満であるか否か判断する。代表ＷＢ値ｓが目標ＷＢ値ｔ未満である場合、ブロック９０８で、ＷＢ値を設定可能な最小値と現在値の中間点に設定した上で、ブロック９０４の判断からの処理を繰り返す。代表ＷＢ値ｓが目標ＷＢ値ｔ以上である場合、ブロック９１０で、ＷＢ値を設定可能な最大値と現在値の中間点に設定した上で、ブロック９０４の判断からの処理を繰り返す。これにより、短時間で代表ＷＢ値ｓを目標ＷＢ値ｔに一致させる（誤差範囲θ内）ことができる。図１０は、二分探索によりＷＢ値を自動調整する様子を示す図である。
【００４５】
［１−５：自動歪み補正］
これは、図２の色補正部１２１、図３のブロック３２２に関する処理である。平面度が低い投影面ではカメラ３０１が投影内容を正確に撮影できず、投影画像とカメラ画像とを単純に比べても指を正確に検出することができない場合がある。このため、キャリブレーション時にグリッドパターン等を投影することで、能動的に投影面（スクリーン）の歪みを測定し、補正値を記憶しておいて、実際の投影時に、補正値を用いてその度補正することにより、平面度が低い撓んだスクリーンでも使用できるようになる。
【００４６】
図１１は自動歪み補正の概要を説明する図である。キャリブレーション時に図１１（ａ）に示すようなグリッドやチェッカーパターンを投影する。位置補正後のカメラ画像のグリッドの行の間、列の間の画素列を取得する。画素列の輝度値の局所最小値に基づいて図１１（ｂ）に示すようなグリッド位置を列挙する。局所最小値の近傍ｎ画素を利用し、画素位置ｘ，画素値ｉとした（ｘ，ｉ）の組ｎ個を図１１（ｃ）に示すように最小二乗法により二次関数に適合させ、二次関数の軸の位置にグリッド位置を更新する。投影前後のグリッド位置の変化から、カメラ画素（ｃｘ，ｃｙ）の投影画像の画素への移動ベクトル（ｖｘ，ｖｙ）（位置の差分）を計算する。各画素の移動ベクトルを各画素の位置に配置することにより、図１１（ｄ）に示すような歪み補正マップを作成する。以降、図１１（ｅ）に示すように、各投影画像毎に、カメラ画素（ｃｘ，ｃｙ）を（−ｖｘ，−ｖｙ）移動することで投影面の歪みを補正することできる。
【００４７】
［１−６：環境色補正］
これは、図２の色補正部１２１、図３のブロック３２４に関する処理である。投影画像とカメラ画像との比較に基づいて指を検出するためには、投影面が白いスクリーンであることが好ましい。模様や色のある投影面や、プロジェクタ２０１の周辺−中央の光量のムラや、カメラ３０１の感度のムラは、中心部または周辺部で指の検出精度が低下する問題がある。スクリーンの色、スクリーンの照明光、プロジェクタによる光のムラ、カメラのムラ等が検出精度の低下の原因である。そのため、明暗の画像を投影したカメラ画像からプロジェクタ投影内容の各点について、外部の環境の光による影響と投影面の着色や材質の違いによる拡散反射係数を推定し、カメラ３０１に入力される画像の色をプロジェクタ２０１による入射光に対する反射光に比例した値に修正することで、これらの問題を解消することができる。
【００４８】
次のようなPhongの反射モデルが知られている。
【００４９】
Ｉｃ＝ｋａｉａ＋Σ｛ｋｄ（Ｌｊ，Ｎｊ）ｉｄ＋ｋｓ（Ｒｊ，Ｖｊ）αｉｓ｝
ここで、Σはｊを全ての光について積算することを示す。ｋａｉａはアンビエント項、ｋｄ（Ｌｊ，Ｎｊ）ｉｄはデイフューズ項、ｋｓ（Ｒｊ，Ｖｊ）αｉｓはスペキュラ項である。
【００５０】
このモデルを簡略化するために、マテリアル（ｋ＊）を一定、プロジェクタ以外のアンビエント・デイフューズ・スペキュラ光源は一定であるとし、これらをまとめてｉｄとする。プロジェクタによる鏡面反射は無視する。プロジェクタによる拡散反射は各ピクセル位置毎に光源方向Ｌｊ、法線方向Ｎｊ一定とする。さらに、周辺光量の低減等の各ピクセル位置のプロジェクタ光減衰係数ｐを拡散反射項に導入し、ｒ＝ｋｄ（Ｌｊ,Ｎｊ）ｐとすると、Ｉｃ＝Ｉｂ＋ｒ・ｉｄとなる。
【００５１】
先ず、輝度ｉｄ＝０を投影した時のカメラ画像の輝度Ｉｃ（０）を観測する。次に、輝度ｉｄ＝ｖ（＞０）を投影した時のカメラ画像の輝度Ｉｃ（ｖ）を観測する。図１２は、観測結果を示す。
【００５２】
カメラ３０１で観測した光Ｉｃからｉｄを計算する。
【００５３】
Ｉｃ（０）＝Ｉｂ
Ｉｃ（ｖ）＝Ｉｂ＋ｒ・ｉｄ
Ｉｂ＝Ｉｃ（０）
ｒ＝（Ｉｃ（ｖ）−Ｉｃ（０））／ｖ
ｉｄ＝（Ｉｃ−Ｉｃ（０））ｖ／（Ｉｃ（ｖ）−Ｉｃ（０））
特定のチャンネル（色）だけ先に飽和することのないよう、各ｃｈがｉｄ＝ｖで飽和するようにスケーリングする。
【００５４】
ｖは、どのピクセルのどのチャンネルも飽和しない、最大の輝度とする。最大輝度ｖは、露出一定の下、二分探索により高速に決定することができる。
【００５５】
これにより、環境中の光による色と投影面の拡散反射係数の影響を取り除いたカメラ画像を取得することができる。
【００５６】
［１−７：色補正方向］
これは、図２の色補正部１２１、図３のブロック３２４に関する処理である。投影画像とカメラ画像との比較に基づいて指先を検出するためには、カメラ画像と投影画像の色がほぼ同じであることが好ましい。両者の色に違いがある場合、カメラ画像の色を投影画像の色に合わせるように補正すると、投影内容と指の影の明るさの差が小さい場合には、色潰れが発生し、指の影が検出できなくなることがある（図１３（ａ）参照）。そこで、色補正方向を逆にして、投影画像の色をカメラ画像の色に合わせるように補正すると、カメラ画像情報の損失を極力抑えることでき、検出精度の向上につながる（図１３（ｂ）参照）。
【００５７】
具体的には、投影内容画像Ｉｐにおける色（ｒ，ｇ，ｂ）ｐが位置補正・環境色補正済みカメラ画像Ｉｃにおける色（ｒ，ｇ，ｂ）ｃにどのように対応するかを表わす関数ｆ＿｛ｐ→ｃ｝を予め計算する。すなわち、あるパターン（例えば、キャリブレーション専用画像）を投影した場合のｒ，ｇ，ｂの中の一色（例えば、ｒ）に着目して、多次元回帰（ＳＶＲ）法を用いて投影画像からカメラ画像への変換：（ｒ，ｇ，ｂ）ｐ→｛ｒｃ｝を表わす関数ｆ１＝（ｒ，ｇ，ｂ）ｐ→ｒｃを求める。他の色についても、同様に、関数ｆ２＝（ｒ，ｇ，ｂ）ｐ→ｇｃ、関数ｆ３＝（ｒ，ｇ，ｂ）ｐ→ｂｃを求める。関数ｆ１、ｆ２、ｆ３から（ｒ，ｇ，ｂ）ｐ→（ｒ，ｇ，ｂ）ｃへの変換を表わす関数ｆ＿｛ｐ→ｃ｝が求められる。ここまでは、キャリブレーションの動作である。新しい投影内容画像Ｉｐと、位置補正・環境色補正済みカメラ画像Ｉｃが得られたとき、色補正済み投影内容画像Ｉｐ’はこの関数ｆ＿｛ｐ→ｃ｝を利用して、Ｉｐ’＝  ｆ＿｛ｐ−＞ｃ｝（Ｉｐ）として求めることができる。
【００５８】
［１−８：局所適応輝度加算］
これは、図２の投影情報補正部１１２、図３のブロック３１２に関する処理である。光量の小さい、あるいはコントラストの高いプロジェクタ２０１を用いる際に、投影内容の黒い部分においても輝度差等によって影が作られたか否か判断できるようにするため、投影内容の輝度値をたとえば［０，…２５５］から［２０，…２５５］に持ち上げる変換を行うことが考えられる。この場合、黒い部分以外でも見た目の変化を引き起こしてしまう可能性がある。そのため、直前の指先の位置の情報が利用できる場合は、指先の周辺のみ輝度値を調整する（持ち上げる）と、見た目の変化を緩和することができる。あるいは、必要な輝度が得られない画素のみ、または当該画素も変化させても、見た目の変化を緩和することができる。
【００５９】
図１４（ａ）に示すように、投影内容の暗い部分に手の影が存在する場合は、手の影が検出できない可能性がある。そのため、図１４（ｂ）に示すように、投影内容の輝度値を一様に上げる（例えば輝度値範囲を［０，…２５５］から［２０，…２５５］に変換する）。指先の影先端が位置（ｘ，ｙ）で検出できた場合は、その後も指先の位置は大きくは動いていないと仮定し、図１４（ｃ）に示すように、（ｘ，ｙ）の周辺部のみ輝度値を上げ、それ以外の部分については輝度値を操作しない。あるいは、図１４（ｄ）に示すように、（ｘ，ｙ）の周辺部かつ投影内容の暗い部分の輝度値を上げ、それ以外の部分については輝度値を操作しない。このとき、周辺部の輝度を一様にあげても良いし、輝度操作部分の境界が目立たないように外側に近づくに従って輝度の上昇を抑えても良い。また、影先端のごく近傍は視認性を確保するため、輝度の上昇を抑えるか、停止しても良い。この方法で、投影内容の元の輝度値にかかわらず輝度変換を行うこともできるが、投影内容の明るさｖが一定値以下の場合のみ、輝度値を操作しても良い。この際に輝度値の逆転が起こらないように変換カーブを滑らかに設定しても良い。
【００６０】
［１−９：周辺部操作性向上］
これは、図２の投影情報補正部１１２、図３のブロック３１２に関する処理である。図１５（ａ）に示すように、使用者の立つ側の操作は、影が検出しずらい可能性がある。そこで、図１５（ｃ）、（ｄ）に示すように、投影内容が表示される領域を予め小さく設定し、使用者の立つ可能性のある側（左右片側、あるいは両側）に影が検出されやすいような画像（たとえば白塗りつぶし）を表示しておくことで、投影内容の周辺部の操作性を向上させることができる。また、図１５（ｂ）に示すように、その余白にシステムの動作や設定にかかわる情報を表示、変更できるエリアを設けることで、余白を有効に利用することもできる。
【００６１】
具体的には、図３８を参照して説明したような処理で、あるいは影の根元の画面に対する位置を元に、あるいはカメラ画像の動きの多い部分を人が立っていると仮定する等して使用者の立つ側を検出する。図１５（ｃ）、（ｄ）に示すように、使用者の立つ側に余白が出来るよう、あるいは使用者の立つ側により大きく余白が出来るよう、投影内容を縮小して表示する。余白は影検出が行いやすいよう、輝度値の高いものとしてもよい。使用者の立つ側の余白上では操作が困難であるので、操作の必要がない、状態表示等をもっぱら行う領域として利用することもできる（図１５（ｂ）参照、ここでは、使用者は向かって左側に立っているとする）。投影内容のアスペクト比を維持するために、使用者の立つ側以外にも余白が出来る場合、ツールバー等を表示することで利便性を高めることもできる（図１５（ｂ）参照）。
【００６２】
［２：ユーザインタフェースに関するポイント］
指の操作により単純なクリック操作に限らず、多種多様な操作を実現する処理を説明する。ポイント２は全て図２の操作情報生成部１４１、操作出力部１４３、図３のブロック３３６に関する処理である。
【００６３】
［２−１：スクロール］
指先、手等を形状によらず１つだけ検出し、その静止を左クリック動作に割り当てることが考えられる。しかし、指先、手等の静止によるクリック動作ではなく、指先、手等の移動により、操作開始地点を起点とした相対移動量に基づく速度でスクロール操作を実現することができる。その際、操作開始地点をスクリーン上に表示すると、使用者にとってわかりやすい操作が可能となる。
【００６４】
図１６は指、手等の移動によりスクロール動作を実現する処理を説明する図である。図１６（ａ）に示すように、影先端が静止したこと、あるいは決定操作があったことを検出すると、スクロールモードに入る。決定操作の一例はポイント３で後述する。あるいは、影形状が特定形状の場合のみスクロールモードに入れるとしても良い。さらに、特定のアプリケーション利用時、または特定のアプリケーション状態の場合のみスクロールモードに入れるとしても良い。
【００６５】
スクロールモードに入った時点で影先端位置に「起点」を示すアイコン（図１６（ａ）の場合は丸）を表示すると、スクロールモードの開始が使用者にとって判り易く、操作がし易い。指の移動に伴い、現在の影先端位置と起点を表示し続け、それらを直線で結んだ画像を投影する（図１６（ｂ）参照）。
【００６６】
この二点を結んだ長さＬか、Ｌを鉛直方向に射影したＬ’によってスクロール速度ｖをｖ＝ｆ（Ｌ）またはｖ＝ｆ（Ｌ’）として決定する。関数ｆは例えばｆ（Ｌ）＝ｍｉｎ（上限値，Ｌ＊定数１）等とする。定数１は正負どちらでも良いし、使用者が設定しても良い。
【００６７】
スクロール速度ｖに応じて、起点直下のアプリケーションを縦スクロールする。影先端が操作可能範囲を逸脱するか、影の検出に失敗した場合、スクロールモードを終了し、「起点」の表示も中止する。この時、一瞬の検出失敗等によって不意にスクロールモードが終了しないよう、しばらく連続して影先端が操作可能範囲を逸脱するか、影の検出に失敗することを終了の条件としても良い。
【００６８】
スクロール速度ｖをスクロールにではなく、ズームに割り当てても良い。この場合も定数１は正負どちらでも良いし、使用者が設定しても良い。
【００６９】
スクロール速度ｖを縦スクロールにではなく、横スクロールに割り当てても良い。その場合はスクロール速度ｖは横スクロール速度に対応させ、Ｌ’はＬを水平方向に射影したものとし、操作可能範囲も９０度回転する。
【００７０】
さらに、スクロール速度ｖを縦、横の両スクロールに割り当てても良い。その場合は縦スクロール速度ｖｘと横スクロール速度ｖｙを上記の方法で個別に計算する。操作可能範囲は設定しなくても良いし、起点から一定範囲の円としても良い。
【００７１】
スクロール速度ｖを「最初に動かした方向へのスクロール」としても良い。この場合、Ｌが小さい間は、縦、横の両スクロールに割り当てるか、スクロールには割り当てない。Ｌが閾値ＴＬ以上になると、起点と現在位置を結ぶ線分が鉛直に近ければ縦スクロールに、水平に近ければ横スクロールに割り当て、それぞれの方向に適した操作可能範囲を設定して表示する。
【００７２】
［２−２：ズーム］
指先、手等を形状によらず１つだけ検出し、その静止を左クリック動作に割り当てることが考えられる。しかし、指先、手等の静止によるクリック動作ではなく、影画像から複数の指を検出し、その相対距離変化を拡大率の変化と解釈することで、直感的なズーム操作を実現することができる。その際、操作開始時の指の間の距離と、現在の指の間の距離とを表示することで使用者にとってわかりやすい操作が可能となる。
【００７３】
図１７は指の移動によりズーム動作を実現する処理を説明する図である。図１７（ａ）に示すように、２つの影先端が静止したこと、あるいは後述する決定操作があったことを検出すると、ズームモードに入る。あるいは、影形状が特定形状の場合のみズームモードに入れるとしても良い。さらに、特定のアプリケーション利用時、または特定のアプリケーション状態の場合のみズームモードに入れるとしても良い。
【００７４】
ズームモードに入った時点で複数の影先端位置に「起点」を示すアイコン（図１７の場合は丸）と、起点間を結ぶ直線を表示すると、ズームモードの開始が使用者にとって判り易く、操作がし易い。指の移動に伴い、起点と、起点間を結ぶ直線を表示し続けるとともに、現在の影先端位置と、現在の影先端位置同士を結んだ直線を投影する（図１７（ｂ）参照）。
【００７５】
これらの二点の現在の長さＬと起点間の長さの初期値Ｌｉによって拡大率ｍをｍ＝ｆ（Ｌ，Ｌｉ）として決定する。関数ｆは例えばｆ（Ｌ，Ｌｉ）＝ｍｉｎ（上限値，Ｌ／Ｌｉ＊定数２）等とする。定数２は任意であり、使用者が設定しても良い。
【００７６】
拡大率ｍに応じて、起点直下のアプリケーションをズームする。影先端の両方または片方が操作可能範囲を逸脱するか、片方の影の検出に失敗した場合、ズームモードを終了し、「起点」の表示も中止する。この時、一瞬の検出失敗等によって不意にズームモードが終了しないよう、しばらく連続して影先端が操作可能範囲を逸脱するか、影の検出に失敗することを終了の条件としても良い。
【００７７】
［２−３：ドラッグ］
指先、手等を形状によらず１つだけ検出し、その静止を左クリック動作に割り当てることが考えられる。しかし、指先、手等の静止によるクリック動作ではなく、指先、手等の移動により、ドラッグの開始操作を実現することができる。その際、ドラッグの終了は指を隠すか、さらに一度静止することにより行うことができる。
【００７８】
影先端が静止したこと、あるいは後述する決定操作があったことを検出すると、ドラッグモードに入る。あるいは、影形状が特定形状の場合のみドラッグモードに入れるとしても良い。さらに、特定のアプリケーション利用時、または特定のアプリケーション状態の場合のみ、またはカーソル直下のＧＵＩオブジェクトの状態よって許可された場合のみドラッグモードに入れるとしても良い。
【００７９】
ドラッグモードに入った時点での影先端位置でドラッグ開始イベントを送出する。カーソルの移動に応じて、ドラッグの移動イベントを送出する。影の検出に失敗したときにドラッグモードを終了し、ドラッグ終了イベントを送出する。この時、一瞬の検出失敗等によって不意にドラッグモードが終了しないよう、しばらく連続して影の検出に失敗することを終了の条件としても良い。
【００８０】
［２−４：その他クリック・キー送出］
指先、手等を形状によらず１つだけ検出し、その静止を左クリック動作に割り当てることが考えられる。しかし、指先、手等の静止によるクリック動作ではなく、手等の検出の態様に応じて、静止による左クリック動作ではなく、右クリック・中ボタンクリック・キーの押下等のイベントを発行することで、さらに多様な操作への割り当てが可能となる。
【００８１】
影先端が静止したこと、特定のアプリケーション利用時、または特定のアプリケーション状態の場合、あるいは後述する決定操作があったことを検出し、クリックや上記したスクロール・ズーム・ドラッグだけでなく、影の形状、アプリケーションの種類、アプリケーションの状態に応じて右クリック・中ボタンクリック・キーの押下等のイベントを発行することで多様な操作を実現する。
【００８２】
［２−５：マーカ描画整形］
上記したドラッグ操作の軌跡を表示して、プロジェクタ２０１の投影内容上に図形を表示することで、使用者は投影内容の任意の箇所を強調することができる。また、影の先端軌跡は滑らかではないことがあるため、これを直線や曲線や円等の形状に整形することで、慎重な操作を要することなく画面への描画を可能とする。
【００８３】
特定の指形状やツールバー選択等の指示、あるいは後述する決定操作があったことを検出すると、マーカ描画モードに入る。あるいは、影形状が特定形状の場合のみマーカ描画モードに入れるとしても良い。さらに、特定のアプリケーション利用時、または特定のアプリケーション状態の場合のみマーカ描画モードに入れるとしても良い。
【００８４】
上記したドラッグ操作に従ってシステムを制御する。図１８に示すように、ドラッグ中の軌跡を表示し、プロジェクタ投影内容上に図形を表示する。予め設定することにより、または軌跡の直線や円等への最小二乗誤差が大きいこと等により乱雑な図形描画であることを判断すると、この軌跡を整形して表示しても良い。この場合、ドラッグ中に随時最適な図形（直線や円等）に整形し続け、ドラッグが終了した際に確定することができる。また、ドラッグ中には整形を行わず、ドラッグが終了した際に整形することもできる。これにより、使用者は投影内容の任意の箇所を強調することができる。また、ドラッグ中には整形前と整形後の図形を区別できるよう色を分ける等して両方表示し、ドラッグが終了した際に整形後の図形のみ残すこともできる。
【００８５】
［２−６：指形状］
特定の指の太さや形状が提示されたことを検知し、検知結果に基づいて、クリック操作（図１９（ａ））に加えスクロール操作（例えば、図１９（ｂ））やドラッグ操作（例えば、図１９（ｃ））や、その他の操作に割り当てることで簡単に複数の操作方法を使用者が選択できるようにする。
【００８６】
具体的には、影先端が検出されたとき、以下の方法で指の太さや形状を判断する。
【００８７】
(a)影先端部から影根元の方にｘ画素戻った位置の影の上下方向の最大連続影画素数ｎを計算し、ｎが一つまたは複数の閾値で区切られた範囲の何れに該当するかによって、指の太さ（本数）を推定する。
【００８８】
(b)影先端部から影根元の方にｘ画素戻った位置の影の上下方向の最大連続画素数ｎを取得した上で操作し、０（非影）と１（影）の画素値の切り替わりの回数ｍによって指の本数をｍ／２と推定する。
【００８９】
(c)影先端部を含むｗ＊ｈ画素を切り出し、例えばＣｏＨＯＧ（Co-occurrence Histograms of Oriented Gradient）等の特徴量を抽出した上で、予め登録された複数の手先形状のＳＶＭ（Support Vector Machie）等の識別器に適用し、適合する手先形状を推定する。
【００９０】
判断した手先形状に従って、クリック操作（図１９（ａ））に加えスクロール操作（例えば、図１９（ｂ））やドラッグ操作（例えば、図１９（ｃ））や、その他の操作に割り当てることで簡単に複数の操作方法を使用者が選択できるようにする。
【００９１】
［２−７：指方向］
画面に対する指の傾きを検出することにより、その傾きに応じた処理・操作への割り当てが可能となる。例えば、図２０（ｂ）に示すように、指を上に向けた際にはマーカ描画機能に割り当て、図２０（ｃ）に示すように、下に向けた際はツールバーを表示し、そうでない場合（例えば、図２０（ａ））は、クリックの操作を行うように割り当てることができる。
【００９２】
具体的には、影先端が検出されたとき、影先端部を含むｗ＊ｈ画素の影位置（ｘ，ｙ）の集合を直線に最小二乗法を用いて適合させること、あるいは主成分分析の主軸の傾きによって指の方向を推定する。指の傾きに応じてクリック操作（図１９（ａ））やスクロール操作（例えば、図１９（ｂ））やドラッグ操作（例えば、図１９（ｃ））や、その他の操作に割り当てる。
【００９３】
［２−８：把持物体認識による操作種類変更］
特徴的な影を投影する、あるいは特徴的な色・形状を有する専用ポインタ（図２１（ａ）、（ｂ））を手に持って操作することで、その専用ポインタの色・形状に応じた操作を行うことができる。また、専用ポインタの持ち方（前方と後方どちらを先に向けるか、ひねる角度等）によって異なった操作（描画／消しゴム等）を行うこともできる。
【００９４】
具体的には、先端部あるいは支持部が特徴的な影を投影する棒状の専用ポインタを何種類か用意する。特定の棒状の専用ポインタを手に持って操作する際にできる特徴的な影（図２１）を［２−６:指形状］で示した方法により、予め登録された複数の棒状の専用ポインタの内何れが使用されたかを判断する。或いは、この特定の棒状の専用ポインタがその姿勢によって大きく異なる影を作るように構成し、予めそれらの代表的な異なる影の形状を登録することで、一つの専用ポインタをその持ち方によって異なる影先端形状に分類させることができる。例えば、回転すると大きく影の形状が異なる専用ポインタや、棒状の部分の両端でそれぞれ異なる影を作る専用ポインタを用いることができる。
【００９５】
判断した装置やその姿勢に従って、クリック操作（図１９（ａ））やスクロール操作（例えば、図１９（ｂ））やドラッグ操作（例えば図１９（ｃ））や、その他の操作に割り当てる。
【００９６】
［２−９：距離による操作］
使用者が手をプロジェクタ２０１に対して前後に動作させることで、影の大きさ・影のボケ量が変わる（図２２）ことを検出し、この前後動作によって拡大や縮小等の操作を行うことができる。
【００９７】
具体的には、影先端を検出したとき、影画像から影先端部を含むｗ＊ｈ画素を切り出し、影確率ｐが閾値ｔ１以上である面積を影面積ａとし、影確率ｐが閾値ｔ２以下である面積を非影面積ｂとし、それ以外の部分をボケ面積ｃとする。
【００９８】
影の大きさ（影面積）ａを利用して、またはボケ面積ｃによって、手とスクリーンＳとの距離ｆ（ａ）またはｇ（ｃ）を推定し、その値を［２−１：スクロール］や［２−２：ズーム］に示したスクロール量やズーム量に代えることができる（図２２）。
【００９９】
［２−１０：軌跡による操作］
指の軌跡（図２３）を認識して、特定アプリケーションの起動や終了等の、使用頻度の低い機能に割り当てることで、使用者が電子機器１０１を直接操作しなくてはならない局面を減らすことができる。
【０１００】
具体的には、影先端を検出したとき、この検出位置（ｘ，ｙ）を常に記録しておく。
【０１０１】
現在時刻ｔとしたとき、ｔ１＜ｔ２＜ｔとなるｔ１＝ｔ−ｄ１，ｔ２＝ｔ−ｄ２を予め設定したｄ１，ｄ２により区間［ｔ１，ｔ２］に含まれる（ｘ，ｙ）の列Ｌ（図２３）を記録から取得する。
【０１０２】
Ｌの各要素（ｘ，ｙ）について、（ｘ，ｙ）：＝（（ｘ−ｘｔ２）／ｍａｘＬ（ｘ），（ｙ−ｙｔ２）／ｍａｘＬ（ｙ））等の計算で正規化し、要素数Ｎとなるように再サンプリングし、ＳＶＭ等の識別器を用いて予め登録された複数の軌跡の何れと対応するか判断する。
【０１０３】
登録された軌跡に応じて登録された処理を実行する。例えば、特定アプリケーションの起動や終了等の、使用頻度の低い機能に割り当てることで、使用者がＰＣを直接操作せねばならない局面を減らすことができる。
【０１０４】
［２−１１：動作による操作］
指の往復等の周期的な動作（図２４）やその速さを認識し、ページ送りや画面消去等のやや頻度の低い機能に割り当てることで、使用者がＰＣを直接操作せねばならない局面を減らすことができる。
【０１０５】
具体的には、影先端を検出したとき、この検出位置（ｘ，ｙ）を常に記録しておく。
【０１０６】
現在時刻ｔとしたとき、ｔ１＜ｔ２＜ｔとなるｔ１＝ｔ−ｄ１，ｔ２＝ｔ−ｄ２を予め設定したｄ１，ｄ２により区間［ｔ１，ｔ２］に含まれる（ｘ，ｙ）の列Ｌ（図２４）を記録から取得する。
【０１０７】
Ｌの各要素（ｘ，ｙ）について、（ｘ，ｙ）：＝（（ｘ−ｘｔ２）／ｍａｘＬ（｜ｘ｜），（ｙ−ｙｔ２）／ｍａｘＬ（｜ｙ｜））等の計算で正規化し、［−１，１］×［−１，１］の範囲をＮ＊Ｍ分割したヒストグラムに投票し、これをＳＶＭ等の識別器を用いて予め登録された複数の動作の何れと対応するか判断する。同時に、［−１，１］×［−１，１］の範囲で（ｘ，ｙ）の微分値を投票し、Ｘ＊Ｙ分割したヒストグラムに投票した速さ特徴を併用しても良い。
【０１０８】
登録された動作に応じて登録された処理を実行する。例えば、ページ送りや画面消去等のやや頻度の低い機能に割り当てることで、使用者がＰＣを直接操作せねばならない局面を減らすことができる。
【０１０９】
［２−１２：操作対象による操作割り当ての変化］
操作対象を認識せずにクリックを送出していたが、操作対象を認識することで、予め設定された使用者の挙動と発行されるイベント・画面への表示方法を切り替えることで、必ずしも操作体系が同一でない複数アプリケーションの操作を可能とできる（図２５参照）。
【０１１０】
具体的には、影先端を検出したとき、あるいは一定時刻ごとに、あるいはカーソル位置の変化に応じて、現在のフォーカスのあるアプリケーションを識別する。または、アプリケーションの状態を識別する。または、カーソル位置直下のＧＵＩオブジェクトの状態を識別する。
【０１１１】
影先端の静止やその他の動作を検出したとき、先に識別したアプリケーション・その状態・ＧＵＩオブジェクトの状態に応じて予め決められた対応関係に従って発行されるイベント・画面への表示方法を切り替える。
【０１１２】
図２５の例では、スライドを用いるプレゼンテーションのアプリケーションの場合は、ページ操作を指で行い、指１本は「ページ進む」、指２本は「ページ戻る」操作に対応する。このようなプレゼンテーションでは、会議などでスライドの資料を提示しながら手で操作を行うことができるので、手に何も持つ必要がなく、自然なプレゼンテーションを行うことができる。特別な機器が不要なので、ＰＣに触らせずに誰でも操作できる(スライドを見ながら議論するときに、互いにページをめくりつつも、不必要に他人にＰＣを操作させる必要がない)。
【０１１３】
Ｗｅｂブラウザの閲覧の場合は、指１本はクリック、指２本はスクロール、両手の指１本（マルチタッチ）はズームに対応する。Ｗｅｂブラウザの閲覧は、会議などでＷｅｂ情報を共有して参照しながら、操作を行うことがあるので、Ｗｅｂ上の細かい表示を、適宜拡大・縮小することができる。また、講演会などで、参考資料を一時的に表示する場合、簡易的に素早く提示・操作することが可能である。
【０１１４】
ＰＤＦファイルのプレゼン（簡易マーカーでの書き込み有り）の場合は、指１本はマーカ、指２本はスクロール、両手の指１本（マルチタッチ）はズームに対応する。ＰＤＦファイルのプレゼンは、会議などで資料を提示しながら、適宜強調する部分をマーキングするので、広い会議室などで、資料の拡大・縮小操作によって、細かい部分も遠くの人に見えるようにすることができる。また、教育向けの現場では、教師・生徒に正解を選択させたり、重要な部分をポイントさせたりすることもできる。
【０１１５】
例えば、幼児向けにＷｅｂコンテンツでゲーム・教育を実施する電子教材の場合は、指１本はクリック、指２本はスクロール、両手の指１本（マルチタッチ）はズームに対応する。これにより、幼稚園や小学校低学年向けに、Ｗｅｂ上の簡易ゲームコンテンツを児童に操作させたり、児童向け英会話コンテンツを操作させ、児童達と状況を共有することができる。
【０１１６】
［３：操作時点検出に関するポイント］
これは、図２の指先検出部１３３、図３のブロック３３４に関する処理である。
【０１１７】
［３−１：影消失による画面接触の検出］
上述の説明では、指の影を静止させることでクリック等を送出したが、図２６に示すように、影が手に隠されることを検出し、クリック等を送出することが可能である。
【０１１８】
具体的には、影先端を検出する（図２６（ａ））。
【０１１９】
手がスクリーンＳに近づくに従って、影領域が手で覆い隠され狭くなる（図２６（ｂ））。
【０１２０】
影領域が直前の位置から消失したことを検出すると（図２６（ｃ））、その直前の位置を画面接触位置として、クリックや上に記載の各種操作に対応付ける。
【０１２１】
実際に画面に触った瞬間を取得できることで、操作タイミングが明確となり操作感が向上する。
【０１２２】
［３−２：画面の揺れによる画面接触検出］
上述の説明では、指の影を静止させることでクリック等を送出したが、図２７（ａ）、（ｂ）、（ｃ）に示すように、手がスクリーンに接触することで生じるスクリーンの僅かな揺れを検出することで、使用者が入力したことを検出してクリック等を送出することが可能である。接触したままの移動も同様に検出し、スクロール・ズーム・ドラッグ等の操作に割り当てることができる。
【０１２３】
具体的には、スクリーンに投影された内容の動きを監視する。予め設定した閾値を超える急峻な動き（図２７（ｃ））を検出することで、使用者が入力したことを検知し、同心円状に広がるそのような領域の中心を画面接触位置として、クリックや上に記載の各種操作に対応付ける。
【０１２４】
実際に画面に触った瞬間を取得できることで、操作タイミングが明確となり操作感が向上する。
【０１２５】
［３−３：音による画面接触検出］
上述の説明では、指の影を静止させることでクリック等を送出したが、図２８（ａ）、（ｂ）、（ｃ）に示すように、スクリーンに接触する位置、あるいはスクリーンの近傍にマイクを設置し、使用者が画面に接触したことによる音を検出することで、操作時点を検出してクリック等を送出することが可能である。接触したままの移動も同様に検出し、スクロール・ズーム・ドラッグ等の操作に割り当てることができる。
【０１２６】
具体的には、スクリーンに接触する位置、あるいはスクリーンの近傍にマイクを設置する。予め設定した、又は使用者が例示した音に基づいて設定された閾値を超える音圧の急峻な上昇を検出することで、使用者が画面に接触したことを検知することができる、接触点は直前の影先端の位置を用いる。
【０１２７】
実際に画面に触った瞬間を取得できることで、操作タイミングが明確となり操作感が向上する。
【０１２８】
［３−４：リモート操作との併用］
上述の説明では、指の影を静止させることでクリック等を送出したが、図２９（ａ）に示すように、操作位置の指定には影を用い、図２９（ｂ）に示すように、操作時点の検出にはシステムに対し、無線や有線でクリック等の操作時点を送出するリモートコントローラを用いることで、より迅速な操作が可能となる。例えば、スマートフォン上のアプリケーションとして、「音量」ボタンが押されたことを検知してシステムに対して「現在位置でクリックせよ」と通知することができる。
【０１２９】
具体的には、操作位置の指定には影を用いる（図２９（ａ））。
【０１３０】
システムに対し、無線や有線でクリック等の操作時点を送出するデバイス（図２９（ｂ））を使用者が保持し、決定操作を行いたい場合にボタンを押す、タッチパネルを操作する等の方法で入力を行う。例えば、スマートフォン上のアプリケーションとして、「音量」ボタンが押されたことを検知してシステムに対して「現在位置でクリックせよ」と通知することができる。
【０１３１】
決定操作を行いたい瞬間を明示できることで、操作タイミングが明確となり操作感が向上する。
【０１３２】
[４：影の影響低減に関するポイント]
これは、図２の指先検出部１３３、図３のブロック３３４に関する処理である。
【０１３３】
［４−１：操作位置の変換］
一般的には、影が指し示す先をカーソルとして設定するが（図３０（ａ）、影が指し示す先をアフィン変換等で変換した上でカーソル位置として設定する（図３０（ｂ））ことで、投影内容にあまり大きく影を落とさない操作や、大画面で画面全域に手が届かない場合の操作が可能となる。
【０１３４】
具体的には、使用者の立ち位置によって、あるいはプロジェクタのサイズによって、あるいは予め使用者が設定した領域を操作領域として設定する（図３０（ａ））。ここでは、操作領域がカーソルの検出領域である。このままでは、画面全体を指差しする必要があり、投影内容が指の影で遮られることがある。
【０１３５】
そこで、操作領域における操作を、操作領域から画面全域へと写像する変換（アフィン変換等）で変換した上でカーソル位置として設定する（図３０（ｂ））。
【０１３６】
［４−２：レーザーポインタ］
レーザーポインタの照射された投影内容上の位置を検出する（図３１）ことで、影の位置の代用とすることができる。同時に、影とレーザーポインタ両方による操作を許容することも、片方だけによる操作を許容することもできる。
【０１３７】
具体的には、影画像生成手順において、補正済みカメラ画像Ｉｃと補正済み投影内容Ｉｍの差分Ｉｃ−Ｉｍが閾値θよりも大きいことを利用して、影ではなく明るいレーザーポインタの輝点を検出する（図３１）。
【０１３８】
これにより、投影内容に影を落とさず投影に与える影響の少ない操作や、大画面で画面全域に手が届かない場合の操作、遠く離れた位置からの操作が可能となる。
【０１３９】
［４−３：透明な指示棒］
一般的には、手または指示棒によって影を作るため、投影内容の多くの部分が手または指示棒で遮られることがある。先端は影を作るために不透明であるものの、それ以外の部分は透明であるような指示棒を用いることで、極力投影内容に影を落とさない操作が可能となる（図３２）。
【０１４０】
［５：複数人に関するポイント］
これは、図２の指先検出部１３３、図３のブロック３３４に関する処理である。
【０１４１】
通常は、プロジェクタの投影内容に対して左右いずれか片側からの操作しか同時には行えないが、影の起点を投影内容周辺に探し、そこから影の伸びる先を指先と判断することで、同時に複数の人による複数の方向からの操作が可能となる（図３３）。これにより、机等の上面に対して投影することでより多人数の操作が可能となる。
【０１４２】
具体的には、影画像をラベリングによって接続しない複数の領域に分け、影セグメントとする。各々の影セグメントが画面周縁部に接する箇所を「根元」とする。各々の影セグメントに対し、従来法によって影の先端部分を検出し、影先端の静止を含む決定動作やその他の動作によってクリックやその他の操作に割り当てる。
【０１４３】
[６：ホワイトボードに関するポイント]
これは、図２の色補正部１２１、図３のブロック３２４に関する処理である。
【０１４４】
[６−１：描画内容取り込み]
ホワイトボードを投影面として使用する場合、ホワイトボード投影時にホワイトボードの描画内容を活用できない、障害になることがある。
【０１４５】
ポイント１−６で説明した「環境色補正」をシステム起動時に行うと、類似の技術に必要な明示的なマーカを用いることなく、ホワイトボード等にすでに描画された内容（図３４（ａ））をカメラの位置によらずプロジェクタの投影内容が矩形となるような変換が行われた状態（図３４（ｂ））で取り込むことができる。この描画内容を記憶し、保存・印刷・再表示することができる。
【０１４６】
具体的には、何か描画されているホワイトボード（図３４（ａ）、（ｂ））を投影面として、システム起動時に「環境色補正」を行う。
【０１４７】
「環境色補正」でプロジェクタ投影範囲内の各画素における環境の光ｉと拡散反射係数ｄが得られる。ここで、ｄはホワイトボードに描かれていた内容（図３４（ｃ））の情報を持つ。この情報は必要に応じてノイズ除去や二値化等で体裁を整えた上で保存する。
【０１４８】
保存した描画内容を印刷したり、本システムを用いたアプリケーションからデータとして利用したりすることができる。
【０１４９】
これにより、予め行っている「位置補正」、「環境色補正」の結果を利用することで、従来法に必要なマーカ等を予め配置することなく、手軽にホワイトボード描画内容を電子情報として活用できる。
【０１５０】
［６−２：描画内容相殺］
ポイント６−１の方法でホワイトボードに描画された内容を取り込んだ上で、その描画内容を相殺する画像（図３４（ｄ））を投影内容と混合することで、あたかもホワイトボードに何も書かれていなかったような見た目で投影内容を投影することができ、ホワイトボードを消す手間を省くことができる。
【０１５１】
ある位置の環境の光をｉ、拡散反射係数をｄ、プロジェクタ出力をｐとすれば、ｉ＊定数１＋ｐ＊ｄ＊定数２が見た目の色となるため、本来描画すべき色をｃとしたとき、ｃ＝ｉ＊定数１＋ｐ＊ｄ＊定数２を解いてｐ：
＝（ｃ−ｉ＊定数１）／ｐ／定数２のように投影すべき色ｐを決定できる。
【０１５２】
これにより、あたかもホワイトボードに何も書かれていなかったような見た目で投影内容を投影することができ、ホワイトボードを消す手間を省くことができる。また、ホワイトボードを消す必要がないため、より気軽にシステムを使用できる。
【０１５３】
[７：動的キャリブレーションに関するポイント]
これは、図２のＭＰＵ１０３、図３の全体に関する処理である。
【０１５４】
［７−１：カメラズレ検出・再キャリブレーション］
カメラ画像中の投影内容以外の部分（図３５）の物体の位置が大幅に移動したことを検知し、カメラが移動してしまったと判断して、一時的に動作を停止してキャリブレーションを再実施するか、使用者に再実施の要求を行うことができる。
【０１５５】
図３６はカメラズレ検出・再キャリブレーションの流れの一例を示すフロー図である。ブロック３７０２で、背景を記録する。ブロック３７０４で、カメラ画像中の投影内容以外の部分で記録した画像と現在の画像の動きを計算する。ブロック３７０６で、動きの平均値がある閾値以上であるか否か判定する。動きの平均値が閾値以上である場合、カメラ位置が大幅に移動したと判断し、ブロック３７０８で、一時的に動作を停止してキャリブレーションを再実施する。キャリブレーションの実施には時間が係るので、自動的に再実施するのではなく、使用者に再実施の要求を行ってもよい。
【０１５６】
これにより、不注意によりカメラを動かしてしまった場合に、システムが突然使用できなくなる代わりに、再キャリブレーションによりわずかな手間で通常の状態に復帰することができる。
【０１５７】
［７−２：照明変化検出・再キャリブレーション］
カメラ画像中の投影内容以外の物体にあたる部分（図３５）の輝度値が大幅に変化したことを検知し、照明が変化してしまったと判断して、一時的に動作を停止してキャリブレーションを再実施するか、使用者に再実施の要求を行うことができる。
【０１５８】
図３７はカメラズレ検出・再キャリブレーションの流れの一例を示すフロー図である。ブロック３８０２で、背景を記録する。ブロック３８０４で、カメラ画像中の投影内容以外の部分で記録した画像と現在の画像の輝度値の変化を計算する。ブロック３８０６で、輝度値差分の平均値がある閾値以上であるか否か判定する。輝度値差分の平均値が閾値以上である場合、照明が大幅に変化したと判断し、ブロック３８０８で、一時的に動作を停止してキャリブレーションを再実施する。キャリブレーションの実施には時間が係るので、自動的に再実施するのではなく、使用者に再実施の要求を行ってもよい。
【０１５９】
これにより、照明条件が変化してしまった場合にシステムが突然使用できなくなる代わりに、再キャリブレーションによりわずかな手間で通常の状態に復帰できるようになる。
【０１６０】
なお、本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１６１】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１６２】
１０１…電子機器、１１２…投影情報補正部、１１３…投影情報合成部、１１５…位置補正部、１１６…露出・ＷＢ調整部、１２７…色補正部、１２３…差分生成部、１２５…暗所抽出部、１２７…影抽出部、１３３…指先検出部、１４１…操作情報生成部、２０１…プロジェクタ、３０１…カメラ。
【図１】
2014220720.tif 000003
【図２】
2014220720.tif 000004
【図３】
2014220720.tif 000005
【図４】
2014220720.tif 000006
【図５】
2014220720.tif 000007
【図６】
2014220720.tif 000008
【図７】
2014220720.tif 000009
【図８】
2014220720.tif 000010
【図９】
2014220720.tif 000011
【図１０】
2014220720.tif 000012
【図１１】
2014220720.tif 000013
【図１２】
2014220720.tif 000014
【図１３】
2014220720.tif 000015
【図１４】
2014220720.tif 000016
【図１５】
2014220720.tif 000017
【図１６】
2014220720.tif 000018
【図１７】
2014220720.tif 000019
【図１８】
2014220720.tif 000020
【図１９】
2014220720.tif 000021
【図２０】
2014220720.tif 000022
【図２１】
2014220720.tif 000023
【図２２】
2014220720.tif 000024
【図２３】
2014220720.tif 000025
【図２４】
2014220720.tif 000026
【図２５】
2014220720.tif 000027
【図２６】
2014220720.tif 000028
【図２７】
2014220720.tif 000029
【図２８】
2014220720.tif 000030
【図２９】
2014220720.tif 000031
【図３０】
2014220720.tif 000032
【図３１】
2014220720.tif 000033
【図３２】
2014220720.tif 000034
【図３３】
2014220720.tif 000035
【図３４】
2014220720.tif 000036
【図３５】
2014220720.tif 000037
【図３６】
2014220720.tif 000038
【図３７】
2014220720.tif 000039
【図３８】
2014220720.tif 000040
【図３９】
2014220720.tif 000041
【図４０】
2014220720.tif 000042