(57)【要約】【課題】カメラを利用するソフトウェアキーボードを、１台のカメラで実現することを課題とする。【解決手段】コンピュータに、撮像装置から第一の画像を取得し、前記第一の画像から対象物を検出し、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、前記撮像装置から前記第一の画像とは取得時間が異なる第二の画像を取得し、前記第二の画像から対象物を検出し、前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行させることを特徴とする文字入力プログラム。【選択図】図９
2014006594.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
撮像装置から第一の画像を取得し、
前記第一の画像から対象物を検出し、
前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、
前記撮像装置から前記第一の画像とは取得時間が異なる第二の画像を取得し、
前記第二の画像から対象物を検出し、
前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行させることを特徴とする文字入力プログラム。
【請求項２】
前記コンピュータに、前記決定する処理において、
前記第一の位置と前記第二の位置との変化量、および該第一の位置から該第二の位置への変化の方向に基づいて、前記一の文字を決定する処理を実行させることを特徴とする請求項１記載の文字入力プログラム。
【請求項３】
前記対象物はユーザの指であって、前記コンピュータに、
前記指の前記第一の位置と前記第二の位置との前記変化量が閾値以上である場合に、該第一の画像における手領域の重心と、該第二の画像における手領域の重心との変化に基づき、該第一の画像と該第二の画像間で、ユーザによるスライド操作を検出し、
前記スライド操作が検出された場合に、前記決定する処理を実行させることを特徴とする請求項２に記載の文字入力プログラム。
【請求項４】
前記スライド操作が検出されない場合に、前記第一の画像における前記第一の位置に基づいて、前記文字群から一の文字を決定することを特徴とする請求項３記載の文字入力プログラム。
【請求項５】
前記コンピュータに、前記文字群を特定する処理において、
前記第一の位置のうちの第一の軸方向の位置が、所定の条件を満たす場合に、前記第一の位置のうち、第二の軸方向の位置に基づいて、前記文字群を特定する処理を実行させることを特徴とする請求項１乃至請求項４のいずれか一つに記載の文字入力プログラム。
【請求項６】
前記コンピュータに、
前記第一の軸方向と前記第二の軸方向の各々に対する前記対象物の移動を撮像可能な位置に取り付けられた前記撮像装置から、前記第一の画像および前記第二の画像を取得する処理を実行させることを特徴とする請求項５に記載の文字入力プログラム。
【請求項７】
前記コンピュータに、さらに、
前記一の文字を決定した後に、第三の画像を取得し、
前記第三の画像における前記対象物の前記第一軸方向の位置が、他の所定の条件を満たす場合に、前記一の文字を入力文字として確定する処理を実行させることを特徴とする請求項５または請求項６に記載の文字入力プログラム。
【請求項８】
前記コンピュータに、さらに、
前記文字群を特定した場合に、該文字群に含まれる複数の文字を、前記第一の軸方向とは異なる方向に配置した画面を表示する処理を実行させることを特徴とする請求項５乃至請求項７のいずれか一つに記載の文字入力プログラム。
【請求項９】
撮像装置から第一の画像および、該第一の画像よりの後に撮影された第二の画像を取得する取得部と、
前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を記憶する記憶部と、
前記第一の画像から対象物を検出するとともに、前記記憶部の前記対応情報を参照し、該第一の画像から検出された対象物の第一の位置に対応する文字群を特定する特定部と、
前記第二の画像から対象物を検出するとともに、該第二の画像から検出された対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する決定部とを有することを特徴とする情報処理装置。
【請求項１０】
コンピュータが、
撮像装置から第一の画像を取得し、
前記第一の画像から対象物を検出し、
前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、
前記撮像装置から前記第一の画像とは取得時間が異なる第二の画像を取得し、
前記第二の画像から対象物を検出し、
前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行することを特徴とする文字入力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する技術は、文字入力を制御する技術に関する。
【背景技術】
【０００２】
近年、スマートフォンやスレートＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）／ｉＰａｄ（登録商標）をはじめとしたタブレット型デバイスなど、物理的なキーボードを有さないキーボードレスデバイスの市場が急拡大している。キーボードレスデバイスにおける文字入力は、文字入力インターフェースとして、ソフトウェアキーボードが利用されることが多い。ソフトウェアキーボードには、タッチパネルを利用するタイプや、カメラやレーザー等を利用するタイプ等がある。
【０００３】
タッチパネルを利用するソフトウェアキーボードは、タッチパネル式のディスプレイにキーボードイメージを表示する。そして、当該ソフトウェアキーボードは、タッチパネルに対するユーザの接触位置を検出することで、文字入力を実現する。
【０００４】
また、カメラを利用するタイプのソフトウェアキーボードとして、操作者の指元を上方から撮影するカメラと、奥側から撮影するカメラとを用いる仮想キーボードが知られている。（例えば、特許文献１参照）
このような仮想キーボードは、２台のカメラを用いて、平面等に配置された操作者の指先の画像を撮影する。そして、仮想キーボードは、ＸＹＺの各軸で表される３次元座標軸のＺ方向における操作者の指先の位置と基準位置とを比較し、さらにＸＹ平面における仮想キーに関する位置情報を参照する事で、操作者が操作意図した仮想キーを検出する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２８８１５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、タッチパネルタイプのソフトウェアキーボードは、ディスプレイに、ユーザが操作可能なサイズで、キーボードイメージを表示させる必要がある。したがって、ディスプレイの表示面積に対して、キーボードイメージの表示面積をある程度確保する必要があり、残るディスプレイの表示面積に割り当てられるアプリケーションの表示面積は必然的に小さくなる。
【０００７】
一方、カメラを利用するタイプのソフトウェアキーボードは、デバイスと独立した場所に仮想的なキーボードを設定することができる。例えば、ユーザは、机や床などに、キーボードがあると仮定して、文字入力操作を行う。
【０００８】
つまり、カメラを利用するタイプのソフトウェアキーボードは、タッチパネル式のソフトウェアキーボードとは異なり、ディスプレイに、ユーザが操作可能なサイズでキーボードイメージを表示する必要はない。または、ユーザがキーボードのレイアウト等を把握しているような場合であれば、ディスプレイにキーボードイメージを表示する必要もない。したがって、カメラを利用するタイプのソフトウェアキーボードは、アプリケーションの表示を妨げることなく、文字入力を可能とする。
【０００９】
ここで、従来技術に開示された仮想キーボードは、特定の条件を満たす２台のカメラを必要とする。特定の撮影条件を満たす２台のカメラを利用することで、手を上から撮影するカメラで、２次元（例えばＸＹ面）であらわされるキーボード面を認識し、手を正面から撮影するカメラで、３次元方向（例えばZ軸）のキーの押下を検出する必要がある為である。
【００１０】
しかし、ソフトウェアキーボードの機能を提供するデバイスに複数台のカメラを搭載することは、コスト面、薄型化、小型化の面で問題がある。さらに、薄型化・小型化が求められるタブレット型ＰＣで、従来技術に記載した仮想キーボードの技術を実現する場合には、所定の条件を満たす様に２台のカメラをタブレットＰＣに搭載することは、好ましくない。
【００１１】
そこで、本実施例に開示の技術は、カメラを利用するソフトウェアキーボードを、１台のカメラで実現することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決する為に、本実施例に開示の文字入力プログラムは、コンピュータに、撮像装置から第一の画像を取得し、前記第一の画像から対象物を検出し、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、前記撮像装置から前記第一の画像とは取得時間が異なる第二の画像を取得し、前記第二の画像から対象物を検出し、前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行させる。
【発明の効果】
【００１３】
本発明の一観点によれば、カメラを利用するソフトウェアキーボードを、１台のカメラで実現することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理装置の利用形態の一例を示す図である。
【図２】図２は、情報処理装置の機能ブロック図である。
【図３】図３は、設定情報のデータ例を示す図である。
【図４】図４は、ＱＷＥＲＴＹ配列と文字群との関係を説明する為の図である。
【図５】図５は、指位置と割り当てられる文字群の関係とを説明する為のイメージ図である。
【図６】図６は、対応テーブルのデータ構成例を示す図である。
【図７】図７ＡおよびＢは、ディスプレイに表示される画面イメージを説明する為の図である。
【図８】図８Ａ乃至Ｃは、文字群からひとつの文字を決定する処理を説明する為のイメージ図である。
【図９】図９は、実施例１に係る情報処理装置により実行される文字入力処理のフローチャートである。
【図１０】図１０は、日本語ひらがな入力における、文字の決定する処理を説明するための図である。
【図１１】図１１は、実施例２に係る情報処理装置により実行される文字入力処理のフローチャートである。
【図１２】図１２ＡおよびＢは、指がスライドされた場合と、押下操作を行う指が変更された場合とにおける、手の重心の変化を説明するための図である。
【図１３】図１３ＡおよびＢは、手領域の重心の位置変化と、指位置の変化の関係を検証した実験結果である。
【図１４】図１４は、実施例３に係る情報処理装置により実行される文字入力処理のフローチャートである。
【図１５】図１５は、実施例３におけるユーザの操作と、入力文字の確定との関係を説明する為の図である。
【図１６】図１６は、他の画面表示を示すイメージ図である。
【図１７】図１７は情報処理装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。以下、図面に基づいて各実施例について説明する。
【００１６】
まず、実施例における情報処理装置の利用形態について説明する。図１は、情報処理装置１０の利用形態の一例を示す図である。
【００１７】
ここで、図１の例では、情報処理装置の一例であるタブレット型デバイスに予め搭載されたカメラ１１を用いる実施例を示している。これに限らず、外付けのカメラから、情報処理装置が、画像を取得することでも、ソフトウェアキーボードは実現可能である。
【００１８】
図１に示す例では、例えば、情報処理装置１０はカメラ１１を有する。なお、カメラ１１は、図１に示された位置に限らず、他の位置に設置されていても良い。
【００１９】
情報処理装置１０は、コンピュータであり、例えば、スマートフォンや、スレートＰＣ、タブレット型デバイスなどである。情報処理装置１０は、物理的キーボードを有する必要はない。
【００２０】
図１の例では、情報処理装置１０は、カメラ１１を下部にし、平面２１に対して立てたられた状態となる。このとき、ユーザは、カメラ１１が撮影できる範囲内に手２０を置き、キーボードを操作する動作を行う。例えば、ユーザは、平面２１上のキーボードがあると仮定して、手２０を用いてキーボードを操作する動作を行う。
【００２１】
カメラ１１は、所定のフレーム間隔で、ユーザの手２０の動きを撮影する。情報処理装置１０は、カメラ１１の撮影画像における手の指先の位置に応じて、文字の入力を行う。
【００２２】
カメラ１１は、ユーザと正対する位置から撮影を行い、実空間における２つの軸方向を認識可能な画像を撮影する。例えば、カメラ１１は、撮像画像のＸ軸が、実空間におけるＸ軸２２に相当し、撮像画像のＹ軸が、実空間におけるＹ軸２３に相当する画像を撮像する。なお、撮像画像のＸ軸およびＹ軸が、実空間における他の軸に相当しても良い。さらに、カメラ１１とユーザが正対する関係になくとも、カメラ１１は、ユーザに対して横９０度方向に配置されても良い。
【００２３】
ここでは、ユーザは、手２０をＹ軸２３方向に動かす事で、物理キーボードにおける押下操作を行う。また、ユーザは、手２０を、Ｘ軸２２方向に動作する事で、物理キーボードにおける入力文字の選択操作を行う。ユーザによるＸ軸２２方向およびＹ軸２３方向に対する動作と、文字入力との関係については、後述する。
【００２４】
（実施例１）
図２は、情報処理装置１０の機能ブロック図である。情報処理装置１０は、取得部３１、設定部３２、記憶部３３、特定部３４、表示制御部３５、決定部３６を有する。ここで、情報処理装置１０は、文字入力処理とともに、初期設定処理を実行する。初期設定処理は、文字入力処理に先駆けて行われる処理であって、続く文字入力処理に必要な設定を行う処理である。
【００２５】
取得部３１は、文字入力処理および初期設定処理において、所定のフレーム間隔で撮影された画像を、カメラ１１から取得する。そして、初期設定処理の場合は、取得部３１は、画像を設定部３２に出力する。また、文字入力処理の場合は、取得部３１は、画像を特定部３４へ出力する。なお、取得部３１は、画像の生データを出力する以外に、サムネイル画像を生成し、サムネイル画像を出力するとしても良い。
【００２６】
設定部３２は、初期設定処理の場合、取得部３１により入力される画像から対象物の領域を抽出する。本実施例においては、対象物は、ユーザの手または指である。他にも、指示棒やペン等であってもよい。
【００２７】
例えば、設定部３２は、画像から、左右各々の手領域を抽出する。そして、設定部３２は、抽出した手領域に基づいて、押下操作を検出する為の設定情報を生成する。設定情報は、ユーザのホームポジションに関する情報である。
【００２８】
事前に、まず、情報処理装置１０は、ユーザに対して、ホームポジションを再現させ、カメラ１１は押下操作前の手の状態を撮影する。そして、設定部３２は、画像から手領域を抽出する。
【００２９】
ここで、設定部３２は、取得した画像のＲＧＢ値を、色相、彩度、明度を表現するＨＳＶ値に変換する。そして、特定部３４は、ＨＳＶ値に基づいて、肌色を示す領域を画像から抽出する。なお、肌色を示す領域は、ＨＳＶ値が所定の範囲となる画素の集合である。以上の処理によって、設定部３２は、手領域を抽出することができる。
【００３０】
さらに、設定部３２は、手領域から手のひら領域を除去し、指領域を抽出してもよい。具体的には、設定部３２は、手領域の内、明度が閾値以上となる領域を指領域として抽出する。つまり、カメラ１１に対して、手のひらよりも手前に存在する指領域の明度と、手のひら領域の明度との差を利用することで、手領域から手のひら領域を取り除くことができる。手のひら領域を取り除く事で、指領域が抽出される。
【００３１】
そして、設定部３２は、画像におけるホームポジションにおける手領域の高さまたは各指領域の高さに基づいて、設定情報を生成する。手領域の高さとしては、領域を構成する画素のＹ座標のうち、もっとも小さい値を採用することができる。一方、各指領域についての高さとしては、各領域を構成する画素のＹ座標のうち、もっとも小さい値を採用することができる。また、各指領域の高さとしては、例えば各指領域の重心のＹ座標を採用してもよい。
【００３２】
なお、画像における基準画素を、Ｘ座標およびＹ座標ともに０とし、基準画素からの距離がＸ座標Ｙ座標で表される。基準画素は、例えば、画像の左下の画素とすることができる。
【００３３】
設定部３２は、ホームポジションにおける手領域の高さまたは各指領域の高さに、所定の値を加算して、設定情報を生成する。設定部３２は、設定情報を記憶部３３に記憶する。後述の文字入力処理において、設定情報は、ユーザによる押下操作が行われたか否かを判定する為に用いられる。
【００３４】
また、設定部３２は、左右の手各々について、第一の設定情報および第二の設定情報を生成してもよい。第一の設定情報は、左手の指領域に係る情報である。第二の設定情報は、右手の指領域に係る情報である。例えば、左手の指領域の高さのうち最小の高さに、所定の値を加算した値を、第一の設定情報とする。また、右手の指領域の高さのうち最小の高さに、所定の値を加算した値を第二の設定情報とする。
【００３５】
初期設定処理および文字入力処理においては、画像から１０本の全ての指領域が必ずしも撮像されるとは限らない為、各手の指に適用可能なように、第一の設定情報および第二の設定情報を生成することも有効である。以下では、各指領域の高さの内、最小の高さ（Ｙ座標）を、設定情報として利用するとして説明を行う。
【００３６】
図３は、設定情報のデータ例を示す図である。設定情報３３１および３３２は、記憶部３３に格納される。図３の例では、１６００×１２００程度の画素数の画像を対象とする場合を例として示す。図３の例では、第一の設定情報は、「３００」である。第一の設定情報は、ホームポジション時の左手の各指の座標に基づいて、算出される。
【００３７】
例えば、ホームポジション時に、左手の各指のうち、もっとも下方に存在する指の位置は「Ｙ＝１００」であったとする。このとき、設定部３２は、例えば、所定の値「２００」を加算して、第一の設定値を「３００」とする。つまり、取得した画像における指領域が第一の設定情報「Ｙ＝３００」よりも一定以上下方にある場合には、押下操作がなされていると判定する。また、図３の例では、第二の設定情報は、「３２０」である。
【００３８】
図２における記憶部３３は、図３に示す設定情報や、対応情報を記憶する。なお、対応情報の一例は、図６に示す対応テーブル３３３である。対応情報については、後述する。
【００３９】
特定部３４は、文字入力処理の場合、取得部３１により入力される画像から手領域を抽出する。そして、特定部３４は、手領域に基づいて、ユーザによる押下操作を検出し、押下操作がなされた位置に基づいて、文字群を特定する。文字群は、入力対象の文字のうち、複数の文字を含むグループである。詳細については、後述する。
【００４０】
特定部３４は、画像から、左右各々の手領域を抽出する。さらに、特定部３４は、撮像画像の手領域から手のひらを削除する処理を行うことで、指領域を取得する。手領域および指領域の抽出処理は、設定部３２の処理と同様である。以下では、特定部３４は、指領域を用いて処理を行うとして説明する。
【００４１】
特定部３２は、各指領域を構成する画素のうち、もっとも小さいＹ座標の値を有する画素を特定する。そして、特定された画素のＸ座標およびＹ座標を取得する。なお、各指領域の重心となる画素のＸ座標およびＹ座標を算出しても良い。
【００４２】
そして、特定部３２は、各指領域について、取得したＹ座標が、設定情報よりも小さいか否かを判定する。特定部３２は、取得したＹ座標が、設定情報よりも小さい場合に、ユーザによる押下操作がなされたと判定する。なお、特定部３２は、Ｙ座標と設定情報との差分を算出し、差分が閾値以下である場合に、ユーザによる押下操作がなされたと判定してもよい。
【００４３】
そして、特定部３２は、押下操作がなされたと判定した場合に、先に取得した指位置（Ｘ座標およびＹ座標）を記憶する。さらに、特定部３２は、指位置のＸ座標に基づいて、ユーザにより指定された文字群を特定する。
【００４４】
文字群は、複数の文字を含むグループである。例えば、日本語のひらがな入力においては、各行に含まれる文字を一つの文字群とする。つまり、日本語のひらがな入力を行う情報処理装置１０は、文字「あいうえお」を含む文字群、文字「かきくけこ」を含む文字群等、合計１０個の文字群を取り扱う。
【００４５】
また、図４は、ＱＷＥＲＴＹ配列と文字群との関係を説明する為の図である。ＱＷＥＲＴＹ配列型のキーボードを想定した文字入力においては、図４のように、ＱＷＥＲＴＹ配列における方向２４に配列する文字を、ひとつの文字群とする。ＱＷＥＲＴＹ配列型のキーボードを想定した文字入力を行う情報処理装置１０は、例えば、「ＱＡＺ」を含む文字群、「ＷＳＸ」を含む文字群等、合計１０個の文字群を取り扱う。
【００４６】
本実施例においては、画像のＸ軸方向は、方向２４と直行する方向に相当する、つまり、Ａ，Ｓ，Ｄ，Ｆ等の配列方向が、画像のＸ軸方向に相当する。また、画像のＹ軸方向は、押下方向であるので、紙面手前から裏側への方向に相当する。したがって、画像から方向２４の位置を判別する代わりに、後述する処理によって、方向２４に配列する文字群のうち、ひとつの文字を特定する。
【００４７】
図５は、指位置と割り当てられる文字群の関係とを説明する為のイメージ図である。なお、図５は、画像２０２のうち、左手領域２００および右手領域２０１に相当する部分を詳細に示している。図５の例では、画像内のＸ座標系で、左手領域２００はＸ１からＸ２まで、右手領域２０１はＸ３からＸ４までとする。なお、図５では、左手領域および右手領域を矩形で示しているが、手の形状そのものの領域であってもよい。
【００４８】
例えば、特定部３４は、各手領域を、Ｘ軸方向に、文字群の群数に応じて、分割する。図５では、左手領域２００を、小領域４０乃至４４に分割する。また、右手領域２０１を、小領域４５乃至４９に分割する。これは、文字群の群数が１０である場合に、左右各々の手領域を５つに分割することで、各々の小領域に一つの文字群が割当て可能となる為である。
【００４９】
具体的には、特定部３４は、左手領域２００を形成するＸ１からＸ２までを、５等分する。なお、各領域の大きさが異なってもよい。例えば、特定部３４は、Ｘａ以上Ｘｂ未満の領域を、小領域４０となる。  手領域を小領域に分割する場合に、特定部３４は、手のひら領域を手領域から削除する前の情報を利用してもよいし、指領域全体を新たに手領域として利用しても良い。なお、図５において、斜線で示した領域が手のひら領域である。
【００５０】
続いて、特定部３２は、予め設定されたルールに基づいて、各小領域４０に領域ＩＤを付与する。ルールは、例えば、「左右いずれの手領域に含まれるかを識別し、左右手領域のうち、より左側に位置する小領域から順に小さい番号を付す」などである。
【００５１】
図５の例では、小領域４０は、左手領域２００に含まれる小領域であって、もっとも左側に位置する為、「Ｌ−１」という領域ＩＤが付与される。さらに、特定部３２は、小領域４１に「Ｌ−２」、小領域４２に「Ｌ−３」、小領域４３に「Ｌ−４」、小領域４４に「Ｌ−５」、小領域４５に「Ｒ−１」、小領域４６に「Ｒ−２」、小領域４７に「Ｒ−３」、小領域４８に「Ｒ−４」、小領域４９に「Ｒ−５」という領域ＩＤを付与する。
【００５２】
そして、特定部３２は、押下操作を検出した場合の指位置のＸ座標が、いずれの小領域に含まれるかを特定し、特定された小領域の領域ＩＤを取得する。そして、特定部３２は、対応テーブルを参照し、取得した領域ＩＤに対応する文字群を特定する。
【００５３】
図６は、対応テーブル３３３のデータ構成例を示す図である。なお、対応テーブル３３３は、記憶部３３に記憶される。対応テーブルは、対応情報の一例である。対応情報は、各小領域といずれかの文字群とを対応付ける為の情報である。
【００５４】
対応テーブル３３３は、領域ＩＤと文字群ＩＤと複数の文字情報とを対応付けて記憶する。領域ＩＤは、小領域を識別する情報である。文字群ＩＤは、文字群を識別する情報である。複数の文字情報は、文字ＩＤに対応する文字群に含まれる文字の情報である。
【００５５】
例えば、図６はＱＷＥＲＴＹ配列型のキーボードを想定した文字入力における対応テーブル３３３である。図６は、領域ＩＤ「Ｌ−１」とされる領域に対して、文字群ＩＤ「Ｇ−１」が割り当てられていることを示す。さらに文字群ＩＤ「Ｇ−１」は文字情報１「Ｑ」、文字情報２「Ａ」、文字情報３「Ｚ」を含むことを示す。
【００５６】
なお、複数種類の入力方式を切り替え可能とする場合は、記憶部３３は、複数種類の対応テーブル３３３を記憶する。例えば、ＱＷＥＲＴＹ配列と、日本語ひらがな入力等、種々の方式について、各々対応テーブル３３３が予め作成される。
【００５７】
例えば、特定部３４が、押下操作を行った指の指位置のＸ座標が、領域４１に含まれると判断した場合に、領域４１に付与された小領域ＩＤ「Ｌ−２」を取得する。そして、特定部３４は、対応テーブル３３３から、小領域ＩＤ「Ｌ−２」に対応する文字群ＩＤ「Ｇ−２」を取得する。なお、文字群ＩＤ「Ｇ−２」には、文字情報「Ｗ」「Ｓ」「Ｘ」が含まれる事となる。
【００５８】
図２の説明に戻り、表示制御部３５は、ディスプレイの表示を制御する。例えば、表示制御部３５は、キーボードイメージを生成するとともに、ディスプレイにキーボードイメージを表示させてもよい。ただし、キーボードイメージは、ユーザが視認可能な大きさであればよく、タッチパネル式のソフトウェアキーボードのように、ユーザが選択可能な程度の大きさである必要は必ずしもない。ユーザがＱＷＥＲＴＹ配列等を完全に把握していない場合等に、ユーザは、キーボードイメージを参照することができる。
【００５９】
また、押下操作が検出された場合に、表示制御部３５は、特定部３４により特定された文字群に含まれる複数の文字を、ディスプレイに表示させる。
【００６０】
図７は、ディスプレイに表示される画面イメージを説明する為の図である。図７は、ＱＷＥＲＴＹ配列のキーボードを利用した文字入力における画面イメージ例である。
【００６１】
図７Ａおよび図７Ｂにおいては、紙面の手前から奥に向かう方向が、実空間における押下方向に対応する。なお、カメラ１１が取得した画像においては、紙面の手前から奥に向かう方向が、Ｙ軸方向である。そして、紙面の左から右に向かう方向（Ａ，Ｓ，Ｄ，Ｆ，Ｇ，…配列方向）が、カメラ１１が取得した画像におけるＸ軸方向に対応する。
【００６２】
図７Ａは、押下操作前にディスプレイに表示されるキーボードイメージである。ユーザは、実空間において、図１におけるＸ軸の特定の位置を、Ｙ軸沿って指を動作させることで押下する。例えば、押下操作時の撮像画像に基づいて、指位置のＸ座標に対応する「ＵＪＭ」を含む文字群が特定されたとする。
【００６３】
図７Ｂは、押下操作後にディスプレイに表示されるキーボードイメージである。例えば、特定部３４により文字群が特定された場合に、表示制御部３５は、図７Ａに代えて図７Ｂを表示する。図７Ｂの例では、特定された文字群に含まれる各文字情報が、Ｘ軸方向に展開されて表示される。例えば、「Ｕ」「Ｊ」「Ｍ」がＸ軸方向に配列されたキーボードイメージが表示される。
【００６４】
例えば表示制御部３５は、対応テーブル３３３を参照し、文字情報１から文字情報３を、左から右へ表示するキーボードイメージを生成する。つまり、表示制御部２５は、対応テーブル３３３における文字情報１「Ｕ」をもっとも左に、文字情報２「Ｊ」を文字情報１「Ｕ」よりも右側に、文字情報３「Ｍ」を文字情報２「Ｊ」よりも右側に表示する。なお、左に表示される文字を左文字、中央に表示される文字を中央文字、右に表示される文字を右文字と称する。複数の文字情報各々がいずれの位置に表示されるかは、予め設定される。
【００６５】
次に、図２における決定部３６は、特定された文字群の内の一つの文字を入力文字として決定する。例えば、決定部３６は、押下操作後に撮影された画像における指領域の位置に基づいて、文字群の中から一つの文字を決定する。また、決定部３６は、押下操作を検出した時点の画像における指領域の位置と、押下操作後の画像における指領域の位置との変化量、および変化の方向に基づいて、一の文字を決定する。
【００６６】
図８は、文字群からひとつの文字を決定する処理を説明する為のイメージ図である。なお、ＱＷＥＲＴＹ配列側のキーボードの場合を例に説明する。また、キーボードイメージは説明のために描画されたものである。
【００６７】
図８Ａ乃至図８Ｃにおいては、時刻Ｔ＝ｔ１の時点で、押下操作が検出されるとともに、文字群「ＵＪＭ」が特定されたとする。そして、Ｔ＝ｔ１よりも後の時刻であるＴ＝ｔ２に撮影された画像に基づいて、文字群「ＵＪＭ」の内の一つの文字が決定される。
【００６８】
図８Ａは、Ｔ＝ｔ１における指位置に対して、Ｔ＝ｔ２では、Ｘ軸の正方向への移動が検出された例である。ユーザは、押下操作後に、指を右へスライドさせる動作を行ったこととなる。
【００６９】
決定部３６は、Ｔ＝ｔ２の指位置のＸ座標に基づいて、文字群「ＵＪＭ」より「Ｍ」を決定する。また、決定部３６は、Ｔ＝ｔ１における指位置Ｘ座標と、Ｔ＝ｔ２における指位置Ｘ座標との差が、Ｘ軸の正方向に一定以上であれば、右方向へ指がスライドされたと認識してもよい。
【００７０】
ここで、Ｔ＝ｔ２よりも後の時刻であるＴ＝ｔ３において、指がＹ軸方向に所定距離以上移動したことを検知した場合に、決定部３６は、先に決定した文字「Ｍ」を、入力文字として確定する。なお、指が設定情報以上の高さになった場合に、先に決定した文字「Ｍ」を入力文字として確定してもよい。
【００７１】
図８Ｂは、Ｔ＝ｔ１における指位置に対して、Ｔ＝ｔ２では、Ｘ軸の負方向への移動が検出された例である。例えば、決定部３６は、Ｔ＝ｔ２の指位置のＸ座標に基づいて、文字群「ＵＪＭ」より「Ｕ」を決定する。また、例えば、決定部３６は、Ｔ＝ｔ１における指位置のＸ座標と、Ｔ＝ｔ２における指位置のＸ座標との差が、Ｘ軸の負方向に一定以上であれば、左方向へ指がスライドされたと認識してもよい。
【００７２】
ここで、Ｔ＝ｔ２よりも後の時刻であるＴ＝ｔ３において、指がＹ軸方向に所定距離以上移動したことを検知した場合に、決定部３６は、先に決定した文字「Ｕ」を、入力文字として確定する。
【００７３】
図８Ｃは、Ｔ＝ｔ１における指位置に対して、Ｔ＝ｔ２では、Ｘ軸方向への移動がない、または小さい場合の例である。例えば、決定部３６は、Ｔ＝ｔ２の指位置のＸ座標に基づいて、文字群「ＵＪＭ」より「Ｊ」を決定する。また、例えば、決定部３６は、Ｔ＝ｔ１における指位置のＸ座標と、Ｔ＝ｔ２における指位置のＸ座標との差が、閾値未満である為、スライドがないと認識してもよい。
【００７４】
ここで、Ｔ＝ｔ２よりも後の時刻であるＴ＝ｔ３において、指がＹ軸方向に所定距離以上移動したことを検知した場合に、決定部３６は、先に決定した文字「Ｊ」を、入力文字として確定する。
【００７５】
なお、表示制御部３６は、画像における指領域の位置の変化に応じて、決定された文字をユーザが識別可能に表示してもよい。例えば、表示制御部３６は、図８のように、決定された文字のキーイメージを、他の文字のキーイメージとは異なる態様で表示する。
【００７６】
図９は、実施例１に係る情報処理装置により実行される文字入力処理のフローチャートである。取得部３１は、カメラ１１より画像を取得する（ＯＰ．１）。なお、図９では、取得部３１が画像を取得する度に一連の処理を行うこととして説明を行うが、複数枚の画像を取得する度に、一連の処理を一度行うとしても良い。
【００７７】
特定部３４は、画像から手領域を抽出する（ＯＰ．２）。そして、特定部３４は、手領域から、さらに指領域を抽出する（ＯＰ．３）。そして、特定部３４は、各指領域の指位置（Ｘ座標およびＹ座標）を算出する。
【００７８】
特定部３４は、設定情報および各指領域の指位置に基づいて、ユーザによる押下操作を検出する（ＯＰ．４）。特定部３４は、各指領域の指位置のＹ座標が、設定情報以下になった場合に、押下操作がなされたと判定する。
【００７９】
押下操作が検出された場合には（ＯＰ．４Ｙｅｓ）、特定部３４は、押下操作を行った指の指位置を、記憶部３３に記憶する（ＯＰ．５）。特定部３４は、記憶部３３を参照し、過去の指位置が記憶されているか否かを判定する（ＯＰ．６）。処理対象の画像が押下操作をはじめに検出した画像である場合は、過去の指位置は記憶されていない。一方、処理対象の画像が、はじめに押下操作を検出した画像ではない場合には、過去の指位置が記憶されている。
【００８０】
過去の指位置が記憶されていない場合には（ＯＰ．６Ｎｏ）、特定部３４は、指位置のＸ座標に基づいて、文字群を特定する（ＯＰ．７）。
【００８１】
つまり、特定部３４は、手領域を複数の小領域に分割するとともに、各小領域に領域ＩＤを付与する。そして、指位置が含まれる小領域の領域ＩＤから、対応テーブルを参照し、当該小領域に割り当てられる文字群ＩＤを特定する。
【００８２】
本実施例においては、文字群を特定する処理において、手領域を複数の小領域に分割し、各小領域に領域ＩＤを付与するとする。特定部３４は、入力操作が進むにつれて、画像における手領域の範囲がずれても、文字群を特定することができる。一方、例えば、初期設定処理時に、設定部３２は、各小領域の範囲を決定してもよい。そして、設定部３２は、対応テーブルの各小領域の領域ＩＤに、範囲の情報を対応付けて記憶してもよい。特定部３４による文字群の特定処理の負荷が軽減される。
【００８３】
また、過去の指位置が記憶されている場合（ＯＰ．６Ｙｅｓ）には、決定部３６は、Ｘ軸方向への指の移動距離が閾値以上であるかを判定する（ＯＰ．８）。つまり、処理対象の画像における指位置のＸ座標と、過去の指位置のＸ座標との差が、閾値以上であるか否かを判定する。また、ＯＰ．８において、差は、正または負の値として得られる為、決定部３６は、当該差の絶対値と閾値とを比較する。
【００８４】
過去の指位置が複数記憶されている場合は、決定部３６は、直前の処理対象の画像における指位置との差を算出してもよいし、もっとも古い指位置との差を算出してもよい。もっとも古い指位置とは、文字群を特定する際に用いられた指位置である。
【００８５】
移動距離が閾値未満である場合（ＯＰ．８Ｎｏ）は、決定部３６は、対応テーブル３３３を参照し、特定された文字群のうち、中央文字として設定されている文字に決定する（ＯＰ．１２）。図９の例では、設定テーブルにおける文字情報２が、文字群のうちの中央文字であるとする。例えば、ＱＷＥＲＴＹ配列においては、文字群「ＱＡＺ」においては、中段「Ａ」が中央文字とされる。また、日本語ひらがな入力においては、文字群「あいうえお」のうち、「あ」が中央文字とされる。
【００８６】
一方、移動距離が閾値以上である場合（ＯＰ．８Ｙｅｓ）は、決定部３６は、移動が正方向の移動であるかを判定する（ＯＰ．９）。具体的には、決定部３６は、処理対象の画像における指位置のＸ座標と、過去の指位置のＸ座標との差が、正の値であるかを判定する。正方向への移動である場合（ＯＰ．９Ｙｅｓ）は、決定部３６は、特定された文字群のうち、右文字として設定されている文字に決定する（ＯＰ．１１）。図９の例では、設定テーブルにおける文字３が、文字群のうちの右文字であるとする。
【００８７】
正方向への移動でない場合（ＯＰ．９Ｎｏ）は、決定部３６は、特定された文字群のうち、左文字として設定されている文字に決定する（ＯＰ．１０）。図９の例では、設定テーブルにおける文字１が、文字群のうちの左文字であるとする。ＯＰ．１０乃至ＯＰ．１２で文字が決定された場合には、情報処理装置は、ＯＰ．１に戻る。
【００８８】
一方、ＯＰ．４において、押下操作を検出しない場合（ＯＰ．４Ｎｏ）、特定部３６は、過去の指位置が記憶されているか否かを判定する（ＯＰ．１３）。過去の指位置が記憶されていない場合は（ＯＰ．１３Ｎｏ）、情報処理装置は、ＯＰ．１に戻る。つまり、押下操作を検出せず、かつ過去の指位置が記憶されていない場合は、ユーザは文字入力操作を行っていないということとなる。
【００８９】
過去の指位置が記憶されている場合には（ＯＰ．１３Ｙｅｓ）、決定部３６は、処理対象の画像よりも過去の画像に対して、ＯＰ．１０乃至ＯＰ．１２のいずれかで決定した文字を、入力文字として確定する（ＯＰ．１４）。つまり、押下操作を検出せず、かつ過去の指位置が記憶されている場合は、処理対象の画像よりも過去に取得した画像において、ユーザによる押下操作が検出されていることとなる。よって、処理対象の画像において、押下操作が解除され、ユーザが文字の確定操作を行ったこととなる。
【００９０】
次に、決定部３６は、記憶された指位置を消去する（ＯＰ．１５）。ＯＰ．１５により、ユーザにより押下操作から確定操作までに情報処理装置が記憶した指位置は消去される。そして、情報処理装置は、文字入力処理を終了する。
【００９１】
なお、図９に示す処理以外に、表示制御部３５は、表示制御を行ってもよい。例えば、ＯＰ，７において文字群が特定された場合に、表示制御部は、図７Ｂのような表示を行う。また、ＯＰ．１０乃至ＯＰ．１２において文字が決定された場合に、表示制御部３５は、先に特定された文字群のうち、決定された文字を他の文字と識別可能な態様で表示する。
【００９２】
また、文字群が４つ以上である場合には、左右各々について、移動した距離に基づいて、４つの文字の内、ひとつの文字に決定すれば良い。
【００９３】
図１０は、日本語ひらがな入力における、文字の決定する処理を説明するための図である。図１０の例では、文字群には５つのひらがなが含まれる。例えば、文字群「あいうえお」であって、左から「え」「い」「あ」「う」「お」という表示がなされている。つまり、中央文字となる文字「あ」であって、第一の左文字が「え」、第二の左文字が「い」、第一の右文字が「う」、第二の右文字が「お」である。
【００９４】
ＯＰ．８において、正方向の移動であると判定された場合に、さらに、決定部３６は、移動距離が他の閾値よりも大きいか否かを判定する。移動距離が他の閾値未満であれば、決定部３６は、ユーザが指定した文字を、文字群の内の第一の右文字である「う」に決定する。一方、移動距離が他の閾値以上である場合は、決定部３６は、ユーザが指定した文字を、文字群の内の第二の右文字である「お」に決定する。
【００９５】
また、ＯＰ．８において、正方向の移動でないと判定された場合も同様に、決定部３６は、移動距離が他の閾値よりも大きいか判定する事で、第一の左文字と第二の左文字の内、ユーザが指定した文字を決定する。
【００９６】
以上の処理によって、１台のカメラで、ソフトウェアキーボードが実現可能となる。画像における２軸を、ユーザによる押下操作の方向と、文字群の配列方向とに割当てることで、ユーザにより押下された文字群を特定する。さらに、先の文字群の配列方向に、文字群に含まれる各々の文字を展開することで、ユーザは、文字群のうちの一つの文字を指定することができる。
【００９７】
（実施例２）  
実施例２は、指位置の変化は、スライドによる変化であるのか、指が変更されたことによる変化であるのかを識別することで、より正確に文字入力処理を行うものである。
【００９８】
ある画像において、押下操作を検出し、文字群のうち位置の文字を決定したとする。本来、その後の画像において、ユーザによる押下操作の解除がなされた場合に、決定した文字が確定される。つまり、その後の画像に対して、本来、ＯＰ．４において、押下操作が検出されなくなることで、ひとつの文字が確定される。
【００９９】
しかし、画像から抽出した手領域や指領域の情報と、設定情報との比較で押下操作を検出する場合には、押下操作の解除から次の押下操作までの時間が短い場合や、ある指による押下操作が解除される前に、他の指による押下操作がなされる場合に、押下操作の解除を検出できない場合がある。これらの場合には、ユーザが入力した文字を正確に特定することができない。実施例２における情報処理装置１０は、ひとつのカメラでソフトウェアキーボードの文字入力を可能とすると共に、より正確な文字入力を行う。
【０１００】
図１１は、実施例２に係る情報処理装置により実行される文字入力処理のフローチャートである。実施例１における処理フローと同様の処理については、同様の番号を付し、説明を省略する。なお、実施例２における情報処理装置は、実施例１と同様の機能ブロック図であらわされる。
【０１０１】
ＯＰ．４において、押下操作を検出した場合には（ＯＰ．４Ｙｅｓ）、特定部３４は、指位置とともに、ＯＰ．２で抽出した手領域の重心を算出し、記憶部３３に記憶する（ＯＰ．２１）。なお、手領域の重心は、以下の数１乃至数４により算出される。
【０１０２】
Ｆ（ｘ、ｙ）は、手領域を表す関数である。ｍ０，０は、手領域全体の面積を表す。ｍ１，０およびｍ０，１は一次モーメントである。手領域の重心位置ｇ（ｘ、ｙ）は、一次モーメントを手領域全体の面積で除算することで得られる。
【０１０３】
【数１】
2014006594.tif 000003
【０１０４】
【数２】
2014006594.tif 000004
【０１０５】
【数３】
2014006594.tif 000005
【０１０６】
【数４】
2014006594.tif 000006
【０１０７】
さらに、ＯＰ．８において、指位置に関して、Ｘ軸方向の移動距離が閾値以上であると判定された場合（ＯＰ．８Ｙｅｓ）は、決定部３６は、処理ＯＰ．２２を実行する。
【０１０８】
決定部３６は、処理対象の画像における手領域の重心位置が、過去の画像における手領域の重心位置から変化したかを判定する（ＯＰ．２２）。例えば、決定部３６は、処理対象の画像における手領域の重心のＸ座標と、過去の画像における手領域の重心のＸ座標との差が閾値以上であれば、重心位置が変化したと判定する。
【０１０９】
以下の数５に基づいて、処理対象の画像における手領域の重心のＸ座標と、過去の画像における手領域の重心のＸ座標との差は算出される。数５において、例えば、直前の処理対象の画像における重心と、今回の処理対象の画像における重心を比較する場合は、ｎは１である。なお、ｔは、カメラが取得した画像のフレーム番号を示す。
【０１１０】
【数５】
2014006594.tif 000007
【０１１１】
手領域の重心位置が変化した場合は（ＯＰ．２２Ｙｅｓ）、決定部３６はＯＰ．９以降の処理を実行する。これは、手領域の重心位置が変化することは、ユーザがスライド操作を行ったとみなせる為である。
【０１１２】
図１２は、指がスライドされた場合と、押下操作を行う指が変更された場合とにおける、手の重心の変化を説明するための図である。図１２Ａは、スライド操作がなされた場合を示す図である。なお、図１２Ａは、Ｔ＝ｔ１における手領域のイメージと、スライド操作後のＴ＝ｔ２における手領域のイメージである。Ｔ＝ｔ１の手領域においては、重心は位置１００である。Ｔ＝ｔ２の手領域においては、重心は位置１０１である。ユーザによるスライド操作の前後では、手領域の重心の位置が、変化することが分かる。
【０１１３】
一方、図１２Ｂは、押下操作を行う指が変更された場合を示す図である。なお、Ｔ＝ｔ１における手領域のイメージと、指が変更された後のＴ＝ｔ２における手領域のイメージである。Ｔ＝ｔ１の手領域においては、重心は位置１０２である。Ｔ＝ｔ２の手領域においては、重心は位置１０３である。このように、指が変更された場合には、スライド時と比較して、手領域の重心の位置は、ほぼ変化しないことが分かる。
【０１１４】
図１３は、手領域の重心の位置変化と、指位置の変化の関係を検証した実験結果である。図１３Ａおよび１３Ｂにおいて、縦軸は、手領域の重心の変位であって、横軸は、実験における操作回数である。
【０１１５】
図１３Ａは、人差し指で押下操作を行った後に中指の押下操作に切り替えられた場合において、手領域の重心のＸ座標の変位と、指位置のＸ座標の変位とを比較した図である。三角で示す値は、指位置のＸ座標の変位を示す。四角で示す値は、手領域の重心のＸ座標の変位を示す。このように、人差し指で押下指示を行った後に中指の押下指示に切り替えられた場合は、手領域の重心の変位は、指位置の変位と比較して小さいことが分かる。
【０１１６】
一方、図１３Ｂは、スライド操作がなされた場合において、手領域の重心のＸ座標の変位と、指位置のＸ座標の変位との比較した図である。三角で示す値は、指位置のＸ座標の変位を示す。四角で示す値は、手領域の重心のＸ座標の変位を示す。このように、スライド操作がなされた場合は、手領域の重心の変位も、指位置の変位と同様に、変化が大きいことが分かる。
【０１１７】
図１３Ａにおいて四角で示す値と、図１３Ｂにおいて四角で示す値とを比較すると、手領域の重心の変位を利用することで、押下操作を行う指が変更された場合と、スライド操作がなされた場合とを判別することができる。
【０１１８】
したがって、ＯＰ．２２で手領域の重心のＸ座標が変化したことを判定した場合に、スライド操作がなされたと判断し、決定部３６は、実施例１と同様にスライド方向に応じた文字を、文字群の中から決定する（ＯＰ．１０乃至ＯＰ．１２）。また、過去の手領域とは、処理対象の画像よりもひとつ前に処理対象となった画像における手領域である。
【０１１９】
一方、ＯＰ．８において指位置が閾値以上移動しているにも関わらず、ＯＰ．２２で手領域の重心のＸ座標が変化しなかった（ＯＰ．２２Ｎｏ）ということは、押下操作を行う指が変更されたと判断できる。
【０１２０】
したがって、ＯＰ．２２で手領域の重心のＸ座標が変化したことを判定しなかった場合（ＯＰ．２２Ｎｏ）に、決定部３６は、過去の処理対象画像において決定した文字を、入力文字として確定する（ＯＰ．２３）。次に、決定部３６は、過去の処理対象の画像について、各々記憶されている指位置と手領域の重心とを消去する（ＯＰ．２４）。なお、今回の処理対象の画像について、ＯＰ．２１において記憶した指位置および手領域の重心は、削除されない。
【０１２１】
次に、特定部３４は、現在、処理対象となっている画像における指位置に基づいて、新たな文字群を特定する（ＯＰ．２５）。なお、文字群の特定方法については、ＯＰ．７と同様である。そして、処置ＯＰ．１へ戻る。
【０１２２】
一方、ＯＰ．４において、押下処理が検出されない場合であって、過去の指位置が記憶されていない場合は（ＯＰ．１３Ｙｅｓ）、決定部３６は、実施例１と同様に、入力文字を確定する（ＯＰ．１４）。そして、決定部３６は、全ての指位置および手領域の重心を消去する（ＯＰ．２６）。
【０１２３】
以上の処理によって、１台のカメラで、物理的なキーボードを用いずに、文字入力が可能となる。さらに、指位置の変化は、スライドによる変化であるのか、押下操作を行う指が変更されたことによる変化であるのかを判別することで、より正確に文字入力処理を行うことができる。
【０１２４】
（実施例３）
実施例１および２においては、ユーザが指を押下したままスライドすることで、情報処理装置は、文字群から１の文字を決定する。実施例３においては、ユーザが指を押下した状態を解除しながらスライド操作を行う場合でも、情報処理装置は、文字群から一つの文字を決定することができる。具体的には、押下を解除する際の指の動き方向に応じて、文字群から一つの文字を決定する。例えば、ユーザは左上、真上、右上に対して指を引き上げる操作を行う。
【０１２５】
図１４は、実施例３に係る文字入力処理のフローチャートである。実施例１および実施例２における処理フローと同様の処理については、同様の番号を付し、説明を省略する。なお、実施例３における情報処理装置は、実施例１および２と同様の機能ブロック図であらわされる。
【０１２６】
特定部３４は、記憶部３３を参照し、過去の指位置が記憶されているか否かを判定する（ＯＰ．６）。過去の指位置が記憶されていない場合には（ＯＰ．６Ｎｏ）、実施例１と同様、特定部３４は、指位置のＸ座標に基づいて、文字群を特定する（ＯＰ．７）。
【０１２７】
一方、過去の指位置が記憶されている場合（ＯＰ．６Ｙｅｓ）には、決定部３６は、処理ＯＰ．１へ処理を戻す。実施例３に係る情報処理装置１０は、ユーザにより押下操作が継続されている間は、特定された文字群からいずれの文字も未だ選択されていないと判定する為である。
【０１２８】
また、押下操作を検出しない場合（ＯＰ．４Ｎｏ）、特定部３６は、過去の指位置が記憶されているか否かを判定する（ＯＰ．１３）。過去の指位置が記憶されていない場合は（ＯＰ．１３Ｎｏ）、情報処理装置は、処理１に戻る。つまり、押下操作を検出せず、かつ過去の指位置が記憶されていない場合は、ユーザはいずれの文字入力操作も行っていないということとなる。
【０１２９】
一方、過去の指位置が記憶されている場合には（ＯＰ．１３Ｙｅｓ）、決定部３６は、Ｘ軸方向への指の移動距離が閾値以上であるかを判定する（ＯＰ．３０）。つまり、処理対象の画像における指位置のＸ座標と、過去の指位置のＸ座標との差が、閾値以上であるか否かを判定する。なお、差は、正または負の値として得られる為、決定部３６は、当該差の絶対値と閾値とを比較する。
【０１３０】
移動距離が閾値未満である場合（ＯＰ．３０Ｎｏ）は、決定部３６は、対応テーブル３３３を参照し、特定された文字群のうち、中央文字として設定されている文字を入力文字として確定する（ＯＰ．３４）。
【０１３１】
一方、移動距離が閾値以上である場合（ＯＰ．３０Ｙｅｓ）は、決定部３６は、移動が正方向の移動であるかを判定する（ＯＰ．３１）。具体的には、決定部３６は、処理対象の画像における指位置のＸ座標と、過去の指位置のＸ座標との差が、正の値であるかを判定する。
【０１３２】
正方向への移動である場合（ＯＰ．３１Ｙｅｓ）は、決定部３６は、特定された文字群のうち、右文字として設定されている文字を、入力文字として確定する（ＯＰ．３３）。正方向への移動でない場合（ＯＰ．３１Ｎｏ）は、決定部３６は、特定された文字群のうち、左文字として設定されている文字を、入力文字として確定する（ＯＰ．３２）。次に、決定部３６は、記憶された指位置を消去する（ＯＰ．３５）。そして、情報処理装置は、文字入力処理を終了する。
【０１３３】
図１５は、実施例３におけるユーザの操作と、入力文字の確定との関係を説明する為の図である。図１５Ａ乃至図１５Ｂは、Ｔ＝ｔ１における指位置が、Ｔ＝ｔ２の指位置まで移動したことを示す。また、紙面のＹ軸は、実空間におけるＹ軸２３に対応し、ユーザはＹ軸方向に押下操作を行う。さらに紙面のＸ軸方向は、実空間におけるＸ軸２２に対応し、ユーザはＸ軸方向に文字群を指定する操作、さらには、文字群からひとつの文字を選択する操作を行う。
【０１３４】
図１５Ａは、ユーザが押下操作を行った位置に対してＸ軸負の方向に指を引き上げた様子を示している。つまり、Ｙ軸の正の方向かつＸ軸の負の方向に指位置が変化することで、決定部３６は、押下操作の解除を検出するとともに、特定された文字群のうち左文字を入力文字として確定することができる。
【０１３５】
図１５Ｂは、ユーザが押下操作を行った位置から、Ｘ軸方向への移動を行う事無く、指を引き上げた様子を示している。つまり、Ｙ軸の正の方向に指位置が変化することで、決定部３６は、押下操作の解除を検出するとともに、特定された文字群のうち中央文字を入力文字として確定することができる。
【０１３６】
図１５Ｃは、ユーザが押下操作を行った位置から、Ｘ軸正の方向に指を引き上げた様子を示している。つまり、Ｙ軸の正の方向かつＸ軸の正の方向に指位置が変化することで、決定部３６は、押下操作の解除を検出するとともに、特定された文字群のうち右文字を入力文字として確定することができる。
【０１３７】
以上の処理によって、１台のカメラで、物理的なキーボードを用いずに、文字入力が可能となる。さらに、ユーザは押下の解除とともに、入力文字を確定することができる為、より少ない操作で、文字入力が可能となる。
【０１３８】
（変形例）
上記実施例は、次の様に変形することも可能である。
【０１３９】
例えば、各小領域に一つの文字群を割り当てる実施例に変えて、各指に一つの文字群を予め割り当ててもよい。つまり、設定部３２は、初期設定時に、各指を検出し、各指の特徴量を記憶する。特徴量は、指の形状を表す関数や、肌や爪の色等の情報である。そして、設定部３２は、左右各々の指に、一つずつ文字群を割り当てた対応テーブルを生成する。
【０１４０】
次に、文字入力処理においては、特定部３４は、押下操作を検出した場合に、押下操作を行った指の特徴量から、押下操作を行った指を特定する。そして、特定部３４は、対応テーブルを参照し、押下操作を行った指に予め割り当てられた文字群を特定する。なお、文字群からひとつの文字を決定する処理は、実施例１乃至３と同様である。
【０１４１】
また、他の変型例として、表示制御部３６が、特定部３４により特定された文字群を、表示する際に、他の表示を行ってもよい。例えば、実施例３のように、ユーザが指を引き上げる動作で、文字を決定する場合には、例えば、図１６に示すような３次元的な表示を行ってもよい。
【０１４２】
図１６は、他の画面表示を示すイメージ図である。図１６では、中央文字「Ｆ」に対して、右文字「Ｖ」と左文字「Ｒ」が、紙面の裏から表方向に高さを持っているかのように表示されている。ユーザによる指を引き上げる動作とより連動した表示が可能となる。
【０１４３】
図１７は情報処理装置１０のハードウェア構成の一例を示す図である。コンピュータ１０００は、上述した文字入力処理を実行し、情報処理装置１０として機能する。コンピュータ１０００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００２，ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００３，ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１００５、表示装置１００７、媒体読取装置１００９を有しており、各部はバス１００８を介して相互に接続されている。そしてＣＰＵ１００１による管理下で相互にデータの送受を行うことができる。
【０１４４】
各実施例のフローチャートに示した文字入力処理が記述された文字入力プログラムは、コンピュータが読み取り可能な記録媒体に記録される。コンピュータが読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。
【０１４５】
光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  −  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ  −  ＯＰｔｉｃａｌ  ｄｉｓｋ）などがある。このプログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売されることが考えられる。
【０１４６】
そして文字入力プログラムを実行するコンピュータ１０００は、例えば媒体読取装置１００９が、文字入力プログラムを記録した記録媒体から、該プログラムを読み出す。なお、読みだすプログラムによって、コンピュータ１０００は、情報処理装置１０として機能する。ＣＰＵ１００１は、読み出されたプログラムをＨＤＤ１００５若しくはＲＯＭ１００２、ＲＡＭ１００３に格納する。
【０１４７】
ＣＰＵ１００１は、情報処理装置全体の動作制御を司る中央処理装置である。ＨＤＤ１００５には、上記の各実施例に示した情報処理装置１０と同様の機能をコンピュータに発揮させるプログラムとして、各処理をコンピュータに実行させるプログラムが記憶されている。
【０１４８】
そして、ＣＰＵ１００１が、管理プログラムをＨＤＤ１００５から読み出して実行することで、図２に示す取得部３１、設定部３２、特定部３４、表示制御部３５、決定部３６として機能するようになる。また、管理プログラムはＣＰＵ１００１とアクセス可能なＲＯＭ１００２またはＲＡＭ１００３に格納されていても良い。
【０１４９】
さらにＨＤＤ１００５にはＣＰＵ１００１の管理下で図２に示す記憶部として機能する。つまり、図３や図６に示す情報を記憶する。プログラム同様、記憶部のデータテーブルに相当する情報はＣＰＵ１００１とアクセス可能なＲＯＭ１００２またはＲＡＭ１００３に格納されても良い。つまり、記憶部のデータは、ＨＤＤ１００５や、ＲＯＭ１００２またはＲＡＭ１００３などの記憶装置に格納される。また、ＲＯＭ１００２またはＲＡＭ１００３は、処理の過程で一時的に生成された情報も記憶する。表示装置１００７は、各画面を表示するする。
【０１５０】
また、情報処理装置１０として機能するコンピュータ１０００は、通信装置１００４、入力装置１００６、撮像装置１０１０をさらに有してもよい。通信装置１００４はネットワークを介して他の装置からの信号を受信し、その信号の内容をＣＰＵ１００１に渡す。さらに通信装置１００４はＣＰＵ１００１からの指示に応じてネットワークを介して他の装置に信号を送信する。
【０１５１】
入力装置１００６は、ユーザからの情報の入力を受け付ける。入力装置１００６は、物理キーボードであってもよいが、コンピュータ１０００においては、本実施例に開示された文字入力処理によって文字入力が実現される。また、入力装置１００６としては、タッチパネルも採用される場合がある。
【０１５２】
例えば、ユーザの指示に基づいて、タッチパネルによる文字入力を無効化し、本実施例に開示の文字入力処理を情報処理装置１０が実行してもよい。コンピュータ１０００は、ユーザは、タッチパネルによる文字入力と、本実施例に開示の文字入力処理を選択可能としてもよい。
【０１５３】
撮像装置１０１０は、所定のフレーム間隔で撮影を行い、撮影した画像をＣＰＵ１００１に対して出力する。撮像装置１０１０は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）センサ又はＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）センサを有し、例えば、ユーザの手を撮影する。
【０１５４】
以下に付記する。
【０１５５】
（付記１）コンピュータに、撮像装置から第一の画像を取得し、前記第一の画像から対象物を検出し、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、前記撮像装置から前記第一の画像とは取得時間が異なる第二の画像を取得し、前記第二の画像から対象物を検出し、前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行させることを特徴とする文字入力プログラム。
【０１５６】
（付記２）前記コンピュータに、前記決定する処理において、前記第一の位置と前記第二の位置との変化量、および該第一の位置から該第二の位置への変化の方向に基づいて、前記一の文字を決定する処理を実行させることを特徴とする付記１記載の文字入力プログラム。
【０１５７】
（付記３）前記対象物はユーザの指であって、前記コンピュータに、前記指の前記第一の位置と前記第二の位置との前記変化量が閾値以上である場合に、該第一の画像における手領域の重心と、該第二の画像における手領域の重心との変化に基づき、該第一の画像と該第二の画像間で、ユーザによるスライド操作を検出し、前記スライド操作が検出された場合に、前記決定する処理を実行させることを特徴とする付記２に記載の文字入力プログラム。
【０１５８】
（付記４）前記スライド操作が検出されない場合に、前記第一の画像における前記第一の位置に基づいて、前記文字群から一の文字を決定することを特徴とする付記３記載の文字入力プログラム。
【０１５９】
（付記５）前記コンピュータに、前記文字群を特定する処理において、前記第一の位置のうちの第一の軸方向の位置が、所定の条件を満たす場合に、前記第一の位置のうち、第二の軸方向の位置に基づいて、前記文字群を特定する処理を実行させることを特徴とする付記１乃至付記４のいずれか一つに記載の文字入力プログラム。
【０１６０】
（付記６）前記コンピュータに、前記第一の軸方向と前記第二の軸方向の各々に対する前記対象物の移動を撮像可能な位置に取り付けられた前記撮像装置から、前記第一の画像および前記第二の画像を取得する処理を実行させることを特徴とする付記５に記載の文字入力プログラム。
【０１６１】
（付記７）前記コンピュータに、さらに、前記一の文字を決定した後に、第三の画像を取得し、前記第三の画像における前記対象物の前記第一軸方向の位置が、他の所定の条件を満たす場合に、前記一の文字を入力文字として確定する処理を実行させることを特徴とする付記５または付記６に記載の文字入力プログラム。
【０１６２】
（付記８）前記コンピュータに、さらに、前記文字群を特定した場合に、該文字群に含まれる複数の文字を、前記第一の軸の方向とは異なる方向に配置した画面を表示する処理を実行させることを特徴とする付記５乃至付記７のいずれか一つに記載の文字入力プログラム。
【０１６３】
（付記９）撮像装置から第一の画像および、該第一の画像より後に撮影された第二の画像を取得する取得部と、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を記憶する記憶部と、前記第一の画像から対象物を検出するとともに、前記記憶部の前記対応情報を参照し、該第一の画像から検出された対象物の第一の位置に対応する文字群を特定する特定部と、前記第二の画像から対象物を検出するとともに、該第二の画像から検出された対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する決定部とを有することを特徴とする情報処理装置。
【０１６４】
（付記１０）コンピュータが、撮像装置から第一の画像を取得し、前記第一の画像から対象物を検出し、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、前記撮像装置から第二の画像を取得し、前記第二の画像から対象物を検出し、前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する処理を実行することを特徴とする文字入力方法。
【０１６５】
（付記１１）メモリと、プロセッサーとを有し、前記メモリは対応情報を記憶し、撮像装置から第一の画像を取得し、前記第一の画像から対象物を検出し、前記第一の画像に対して複数設定される領域毎に、複数の文字を含む文字群が各々対応付けられた対応情報を参照し、前記第一の画像から検出された前記対象物の第一の位置に対応する文字群を特定し、前記撮像装置から第二の画像を取得し、前記第二の画像から対象物を検出し、前記第二の画像から検出された前記対象物の第二の位置に基づき、特定された前記文字群の中から一の文字を決定する情報処理装置。
【符号の説明】
【０１６６】
１０        情報処理装置
１１        カメラ
３１        取得部
３２        設定部
３３        記憶部
３４        特定部
３５        表示制御部
３６        決定部
１０００    コンピュータ
１００１    ＣＰＵ
１００２    ＲＯＭ
１００３    ＲＡＭ
１００４    通信装置
１００５    ＨＤＤ
１００６    入力装置
１００７    表示装置
１００８    バス
１００９    媒体読取装置
１０１０    撮像装置
【図１】
2014006594.tif 000008
【図２】
2014006594.tif 000009
【図３】
2014006594.tif 000010
【図４】
2014006594.tif 000011
【図５】
2014006594.tif 000012
【図７】
2014006594.tif 000013
【図８】
2014006594.tif 000014
【図９】
2014006594.tif 000015
【図１０】
2014006594.tif 000016
【図１１】
2014006594.tif 000017
【図１２】
2014006594.tif 000018
【図１３】
2014006594.tif 000019
【図１４】
2014006594.tif 000020
【図１５】
2014006594.tif 000021
【図１６】
2014006594.tif 000022
【図１７】
2014006594.tif 000023
【図６】
2014006594.tif 000024