JP2018173907A - 情報処理装置、および情報処理装置の制御方法、プログラム - Google Patents
情報処理装置、および情報処理装置の制御方法、プログラム Download PDFInfo
- Publication number
- JP2018173907A JP2018173907A JP2017072919A JP2017072919A JP2018173907A JP 2018173907 A JP2018173907 A JP 2018173907A JP 2017072919 A JP2017072919 A JP 2017072919A JP 2017072919 A JP2017072919 A JP 2017072919A JP 2018173907 A JP2018173907 A JP 2018173907A
- Authority
- JP
- Japan
- Prior art keywords
- state
- distance
- user
- fingertip
- acquired
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
【課題】 本発明は、ユーザの指先と操作面の距離が所定の閾値よりも近づいてから所定時間が経過したときに、ユーザの指先がある位置を情報処理装置に対する入力の開始位置に決定することを目的とする。【解決手段】 本発明は、撮像部により撮像された画像から所定の形状の物体を抽出する抽出手段と、操作面と前記抽出手段により抽出された物体との距離を取得する取得手段と、前記取得手段により取得された距離が第1の閾値より大きい状態から小さい状態に移行したかを判定する判定手段と、前記判定手段により、前記取得された距離が前記第1の閾値より大きい状態から小さい状態に移行したと判定されてから第1の時間後に前記撮像部により撮像された画像を取得し、該取得した前記画像から抽出された前記所定の形状の物体の位置を入力の開始位置に決定する決定手段と、を有することを特徴とする。【選択図】 図8
Description
本発明は、情報処理装置、および情報処理装置の制御方法、プログラムに関する。
近年、プロジェクタとカメラ、距離センサを備えたカメラスキャナ等の情報処理装置が開示されている。例えば、プロジェクタがユーザインターフェイス(以下、UI)を壁や机などの任意の操作面に投影する。ユーザが指先やスタイラスの先等でUIの投影された操作面に触れて、情報処理装置を操作する。
上記のような情報処理装置では、カメラから操作面までの距離、および、カメラからユーザの指先までの距離を、距離センサがリアルタイムで計測する。そして、情報処理装置は、操作面とユーザの指先の距離が所定の閾値以下になったときに、ユーザの指先が操作面に触れたとして、ユーザの指先が操作面のどこに触れているかを決定する。
上記のような情報処理装置は、例えば、ユーザが指先やスタイラスを移動させて描画を行うペイントアプリケーションや写真や絵をトリミングする画像編集アプリケーションを実行することが考えられている。描画等を行うアプリケーションでは、入力の開始位置と、終了位置を正確に決定することが必要である。例えばユーザが画像のトリミングを行っているときに、入力の開始位置や終了位置がユーザの意図したものと違う位置であった場合、ユーザは画像を意図した通りに加工することができず、トリミング操作を再度行わなくてはならない。また、描画を行う場合、入力の開始位置や終了位置が正確に決定されないと、ユーザの意図していない領域に描画がなされてしまう。
ここで、図13をもちいてユーザが直線を描画するときの操作と情報処理装置の動作を説明する。図13は、ユーザが点1202から点1203に直線を描画するときの模式図である。図13(a)は、操作面をz軸方向から見た図であり、図13(b)はy軸方向から操作面を見たときの図である。ユーザは、図13(b)のようにA1、A2、A3の順で指先を動かす。ユーザの指先が点1201に到達したとき、情報処理装置は点1201の座標を入力の開始位置に決定する。その後、点1202、点1203を通過し、ユーザの指先が点1204に到達したとき、情報処理装置は点1204の座標を入力の終了位置に決定する。そのため、操作面は図13(a)に示すように点1202から点1203の直線に加えて、点1201から点1202、点1203から点1204の直線が描画されてしまう。このように、ユーザの指先の動かし方によっては、入力の開始位置と終了位置がユーザの意図したものと異なる位置になってしまう。
特許文献1には、ユーザの指先と操作面の距離が所定の距離よりも小さくなった後、最初に指先の位置が静止した位置を、ユーザが入力を開始した位置として決定する情報処理装置が記載されている。さらに、特許文献1には、ユーザの指先と操作面の距離が所定の距離よりも小さい状態から大きい状態に変わる前であって、ユーザの指先が静止した最後の位置を、入力の終了位置として決定する情報処理装置が記載されている。このようにすることで、ユーザが意図する入力の開始位置と終了位置と、情報処理装置の決定する入力の開始位置と終了位置の差を小さくすることができる。
しかしながら、ユーザが情報処理装置を操作するときに、必ず指先を静止させるとは限らない。ユーザが指先を静止させなかった場合、情報処理装置は操作面とユーザの指先の距離が所定の閾値よりも小さくなった点を入力の開始位置として決定する。そして、情報処理装置は操作面とユーザの指先の距離が所定の閾値より小さい状態から、所定の閾値より大きくなった点を入力の終了位置として決定する。そのため、ユーザの指先が静止しない場合、情報処理装置が決定する入力の開始位置または、終了位置が、ユーザの意図する位置と大きく異なる位置になる場合がある。
ユーザの指先が静止しない場合でも、情報処理装置が決定する入力の開始位置、または終了位置と、ユーザの意図する入力の開始位置、または終了位置の差は小さい方が望ましい。図13(b)に示す経路で指先が移動する場合、点1201よりも、操作面と指先の距離が閾値よりも大きい状態から小さい状態に移行してから所定時間経過後の点1205のほうが、指先が操作面に触れる点1202に近い。また、点1204よりも、操作面と指先が所定の閾値よりも小さい状態から大きい状態に移行する所定時間前の点1206の方が、指先が操作面から離れる点1203に近い。
そこで、本願発明はユーザの指先と操作面の距離が所定の閾値よりも近づいてから所定時間が経過したときに、ユーザの指先がある位置を情報処理装置に対する入力の開始位置に決定することを目的とする。また、ユーザの指先と操作面の距離が所定の閾値よりも小さい状態から大きい状態に移行する所定時間前にユーザの指先がある位置を入力の終了位置とすることを目的とする。
本発明は、撮像部により撮像された画像から所定の形状の物体を抽出する抽出手段と、操作面と前記抽出手段により抽出された物体との距離を取得する取得手段と、前記取得手段により取得された距離が第1の閾値より大きい状態から小さい状態に移行したかを判定する判定手段と、前記判定手段により、前記取得された距離が前記第1の閾値より大きい状態から小さい状態に移行したと判定されてから第1の時間後に前記撮像部により撮像された画像を取得し、該取得した前記画像から抽出された前記所定の形状の物体の位置を入力の開始位置に決定する決定手段と、を有することを特徴とする。
また、本発明は、撮像部により撮像された画像から所定の形状の物体を抽出する抽出手段と、操作面と前記抽出手段により抽出される前記所定の形状の物体の距離を取得する取得手段と、前記取得手段により取得される距離が第2の閾値よりも小さい状態から大きい状態に移行したことを判定する判定手段と、前記取得された距離が前記第2の閾値よりも小さい状態から大きい状態に移行したと前記判定手段により判定されたときより、第2の時間前に前記撮像部により撮像された画像を取得し、取得された前記画像から抽出された前記所定の形状の物体の位置を入力の終了位置に決定する決定手段と、を有することを特徴とする。
本願発明は、ユーザの指先と操作面の距離が所定の閾値よりも近づいてから所定時間が経過したときに、ユーザの指先がある位置を情報処理装置に対する入力の開始位置に決定することを目的とする。また、ユーザの指先と操作面の距離が所定の閾値よりも小さい状態から大きい状態に移行する所定時間前にユーザの指先がある位置を入力の終了位置とすることができる。
また、本願発明は、ユーザの指先と操作面の距離が所定の閾値よりも小さい状態から大きい状態に移行する所定時間前に前記ユーザの指先がある位置を入力の終了位置として決定することができる。
以下、本発明を実施するための裁量の形態について図面を参照して説明する。なお、以下で説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、これに限るものではない。
[第1の実施形態]
第1の実施形態に係る情報処理装置は、たとえば撮像部(カメラ)と投影部(プロジェクタ)、距離画像センサを含むカメラスキャナである。ユーザは指先を操作面に近づける、または、指先を操作面に接触させることでカメラスキャナの操作を行う。
第1の実施形態に係る情報処理装置は、たとえば撮像部(カメラ)と投影部(プロジェクタ)、距離画像センサを含むカメラスキャナである。ユーザは指先を操作面に近づける、または、指先を操作面に接触させることでカメラスキャナの操作を行う。
以降、ユーザの指先と操作面の距離が所定の距離よりも近い状態を「タッチ状態」、ユーザの指先と操作面の距離が所定の距離よりも大きい状態を「非タッチ状態」と記載する。ユーザの指先が操作面から所定の距離以上離れた状態(非タッチ状態)から、ユーザの指先と操作面の距離が所定の距離よりも近づいた状態(タッチ状態)に移行したことを「入力が開始される」と記載する。非タッチ状態からタッチ状態に移行したことを「入力が終了される」という。
図1は、第1の実施形態に係る情報処理装置の一例であるカメラスキャナ101が含まれるネットワーク構成を示す図である。本実施形態において、カメラスキャナ101は、机等の平な操作面上に設置されている。
図1に示すように、カメラスキャナ101はローカルエリアネットワーク等のネットワーク104にてホストコンピュータ102およびプリンタ103に接続されている。図1のネットワーク構成において、ホストコンピュータ102からの指示により、カメラスキャナ101は机等の平面にかれた原稿を読み取り画像データを生成するスキャン機能を実行する。また、ホストコンピュータ102からの指示により、カメラスキャナ101がスキャン機能を実行して生成した画像データをプリンタ103が出力するプリント機能を実行する。また、ユーザがカメラスキャナ101を操作すると、カメラスキャナ101がスキャン機能を実行したり、カメラスキャナ101が生成した画像データをプリンタ103が出力するプリント機能を実行する。
<カメラスキャナの構成>
図2(a)は、本実施形態に係るカメラスキャナ101の構成例を示す図である。
図2(a)は、本実施形態に係るカメラスキャナ101の構成例を示す図である。
図2(a)に示すように、カメラスキャナ101は、コントローラ部201、カメラ202、腕部203、プロジェクタ207、距離画像センサ208で構成される。カメラスキャナの本体であるコントローラ部201と、撮像を行うためのカメラ202、プロジェクタ207および距離画像センサ208は、腕部203により連結されている。腕部203は曲げ伸ばしが可能である。
操作面204はカメラスキャナ101が設置されている平面である。カメラ202および距離画像センサ208のレンズは操作面204方向に向けられており、破線で囲まれた読み取り領域205内の画像を読み取り可能である。距離画像センサ208は所定時間毎に操作面を撮像し、撮像画像からユーザ指先の動きを認識する。図2(a)で、カメラスキャナ101は読み取り領域205内に置かれている原稿206を読み取ることができる。
カメラ202は単一解像度で画像を撮像するものとしてもよいし、高解像度画像撮像と低解像度画像撮像を撮像するものとしてもよい。たとえば、カメラスキャナ101がスキャン機能を実行するときには、高解像度画像を撮像する。このようにすることで、カメラスキャナ101は読み取り領域205内の原稿を高解像度で取得することができる。一方で、カメラスキャナ101は読み取り領域205内でユーザによるタッチ操作を検出するときには低下像度画像を取得する。このようにすることで、カメラスキャナ101が読み取り領域205内の画像を取得するのにかかる時間を少なくして、ユーザによる操作の検出にかかる時間を少なくすることができる。
操作面204は、ターンテーブル209を備えていてもよい。ターンテーブル209はコントローラ部201からの指示によって回転する。操作面204に立体が置かれている場合、ターンテーブル209を回転させることで、カメラ202は立体をさまざまな角度で当該立体を撮像することができる。
また、操作面204内に、タッチパネル330が設けられていてもよい。タッチパネル330はユーザが手やペンで触れた位置情報を感知して情報信号として出力する。カメラスキャナ101は、不図示のスピーカ340を備えていてもよい。さらに、カメラスキャナ101が周囲に人がいるかを検知するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを備えていてもよい。
図2(b)は、カメラスキャナ101における座標系を表す図である。カメラスキャナ101では各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。カメラ座標系は、カメラ202が撮影する撮影面をXY平面とし、撮影面に対して奥行方向がZ方向と定義される。距離画像座標系は、距離画像センサ208が撮影する画像平面をXY平面とし、奥行方向がZ方向と定義される。プロジェクタ座標系は、プロジェクタ207が投影する画像平面をそれぞれXY平面とし、画像平面に直交した方向をZ方向として定義したものと定義される。さらに、これらの独立した座標系を統一的に扱うために、操作面204を含む平面をXY平面とし、このXY平面から上方に垂直な向きをZ軸とする直交座標系が定義される。
図2(c)は、直行座標系とカメラ座標系の関係を示した図である。直交座標系における3次元点P[X,Y,Z]は、(1)式によって、カメラ座標系における3次元点Pc[Xc,Yc,Zc]へ変換される。
[Xc,Yc,Zc]T=[Rc│tc][X,Y,Z,l]T・・・(1)
[Xc,Yc,Zc]T=[Rc│tc][X,Y,Z,l]T・・・(1)
ここで、Rcおよびtcは、直交座標系に対するカメラの姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成される行列である。Rcは3×3の回転行列であり、tcは並進ベクトルである。カメラ座標系で定義された3次元点は(2)式によって、直交座標系へ変換される。
[X,Y,Z]T=[Rc−1│−Rc−1tc][Xc,Yc,Zc,l]T・・・(2)
[X,Y,Z]T=[Rc−1│−Rc−1tc][Xc,Yc,Zc,l]T・・・(2)
さらに、カメラ202で撮影されるカメラ画像平面は、2次元の画像である。すなわち、カメラ座標系上での3次元点Pc[Xc,Yc,Zc]は、(3)式によって2次元座標pc[xp,yp]に変換される。
λ[xp,yp,l]T=A[Xc,Yc,Zc]T・・・(3)
λ[xp,yp,l]T=A[Xc,Yc,Zc]T・・・(3)
ここで、Aは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される3×3の行列である。
以上のように、(1)式と(3)式を用いることで、直交座標系で表された3次元点群は、カメラ座標系での3次元点群座標やカメラ画像平面に変換される。なお、各ハードウェアデバイスの内部パラメータおよび直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法によりあらかじめキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
<カメラスキャナのコントローラのハードウェア構成>
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。
図3に示すように、コントローラ部201は、システムバス301に接続されたCPU302、RAM303、ROM304、HDD305、ネットワークI/F306、画像処理プロセッサ307、カメラI/F308を含む。さらに、コントローラ部201はディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311およびUSBコントローラ312を含む。
CPU302はコントローラ部201全体の動作を制御する中央演算装置である。RAM303は揮発性メモリである。ROM304は不揮発性メモリであり、CPU302の起動用プログラムが格納されている。HDD305はRAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201が実行する、カメラスキャナ101の制御用プログラムが格納されている。
CPU302は電源ON等の起動時、ROM304に格納されている起動用プログラムをRAM303に展開して、実行する。CPU302は起動用プログラムを実行すると、続けてRAM303上に展開した制御用プログラムを実行し、コントローラ部201の制御を行う。また、CPU302は制御用プログラムによる動作に用いるデータをRAM303に格納して読み書きする。さらに、HDD305は制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納する。これらのデータはCPU302によって読み書きされる。CPU302はネットワークI/F306を介してネットワーク104上の他の機器との通信を行う。
画像処理プロセッサ307はRAM303に格納された画像データを読み出して処理し、回転、変倍、色変換等の画像処理を実行し、画像処理が実行された画像データをRAM303へ書き戻す。
カメラI/F308はカメラ202および距離画像センサ208と接続されている。CPU302はカメラI/F308を介してカメラ202の撮像する画像データをRAM303に書き込む。また、CPU302は距離画像センサ208から距離画像データを取得してRAM303へ書き込む。また、CPU302からの制御コマンドはカメラI/F308を介してカメラ202および距離画像センサ208へ送信される。カメラ202および距離画像センサ208は、カメラI/F308を介して受信した制御コマンドに従い、設定を行う。
また、コントローラ部201は、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311およびUSBコントローラ312をさらに含む。コントローラ部201は上記の構成のうち少なくとも1つの構成を含むとしてもよい。
ディスプレイコントローラ309はプロジェクタ207、タッチパネル330に接続されている。ディスプレイコントローラ309はCPU302の指示に応じてプロジェクタ207やタッチパネル330が表示する画像データの表示を制御する。
シリアルI/F310はコントローラ部201とタッチパネル330、ターンテーブル209の間のシリアル信号の入出力を行う。たとえば、シリアルI/F310はCPU302に制御されて、ターンテーブル209に回転開始・終了の指示および回転角度の指示をターンテーブル209へ送信する。また、CPU302はタッチパネル330が押下されたときに、シリアルI/F310を介して押下された座標を取得する。CPU302はシリアルI/F310を介して、タッチパネル330が接続されているかどうかを判断する。
オーディオコントローラ311はスピーカ340に接続され、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。
USBコントローラ312はCPU302の指示に応じて外付けのUSBデバイスの制御を行う。ここでは、USBコントローラ312はUSBメモリやSDカードなどの外部メモリ350に接続され、外部メモリ350へのデータの読み書きを行う。
<カメラスキャナの制御用プログラムの機能構成>
図4は、CPU302が実行するカメラスキャナ101の制御用プログラムの機能構成401を示す図である。
図4は、CPU302が実行するカメラスキャナ101の制御用プログラムの機能構成401を示す図である。
カメラスキャナ101の制御用プログラムは前述のようにHDD305に格納されている。CPU302が起動時に当該プログラムをRAM303上に展開して、実行する。
メイン制御部402は制御の中心であり、機能構成401内の他の各モジュールを制御する。
画像取得部416は画像入力処理を行うモジュールであり、カメラ画像取得部407と距離画像取得部408で構成される。カメラ画像取得部407はカメラI/F308を介してカメラ202が出力する画像データを取得し、RAM303へ格納する。距離画像取得部408はカメラI/F308を介して距離画像センサ208が出力する距離画像データを取得し、RAM303へ格納する。距離画像取得部408の処理の詳細は図5を用いて後述する。
画像処理部411は、各種画像処理モジュールで構成されており、カメラ202および距離画像センサ208から取得した画像を画像処理プロセッサ307で解析する。前述のジェスチャ認識部409は画像処理部411の各種画像処理モジュールを利用して実行される。
ユーザインターフェイス部403は、メイン制御部402からの要求を受け、メッセージやボタン等のGUI部品を生成する。そして、ユーザインターフェイス部403は、表示部406へ生成したGUI部品の表示を要求する。表示部406はプロジェクタ207を用いて、生成したGUI部品を表示する。また、ユーザインターフェイス部403は、ジェスチャ認識部409が認識したタッチ等のジェスチャ操作、およびそれらの座標を、メイン制御部402経由で受信する。ユーザインターフェイス部403は表示中の操作画面の内容と受信した操作座標を対応させて操作内容(押下されたボタン等)を判定する。ユーザインターフェイス部403は、判定した操作内容をメイン制御部402へ通知する。ユーザインターフェイス部403が操作内容をメイン制御部402へ通知することで、カメラスキャナ101はユーザの操作を判定する。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。
データ管理部405は、制御用プログラムの実行において生成した作業データなど様々なデータをHDD305上の所定の領域へ保存し、管理する。
<距離画像センサおよび距離画像取得部の説明>
図5は距離画像センサ208が距離画像を取得するときの処理を示す図である。距離画像センサ208は赤外線パターン投射部361、赤外線カメラ362、RGBカメラ363で構成され、赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部361は対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は対象物に投射した3次元測定パターンを読み取るカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
図5は距離画像センサ208が距離画像を取得するときの処理を示す図である。距離画像センサ208は赤外線パターン投射部361、赤外線カメラ362、RGBカメラ363で構成され、赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部361は対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は対象物に投射した3次元測定パターンを読み取るカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
距離画像取得部408の実行する処理を図5(a)のフローチャートを用いて説明する。また、図5(b)〜(d)はパターン投射方式による距離画像の計測原理を説明するための図である。
図5(a)に示す処理は、カメラスキャナ101の電源がONになることで開始される。図5(a)に示す処理を実行するためのプログラムは、HDD305に記憶されており、CPU302がHDD305に記憶されているプログラムを読み出して実行することで当該処理が実現される。
距離画像取得部408は赤外線パターン投射部361を制御して赤外線による3次元形状測定パターン522を対象物521に投射する(S501)。
距離画像取得部408は、RGBカメラ363を制御して、対象物を撮影したRGBカメラ画像523を取得する。さらに、距離画像取得部408は赤外線カメラ362を制御してS501で赤外線投射部31が投射した3次元形状測定パターン522を撮影した赤外線カメラ画像524を取得する(S502)。なお、赤外線カメラ362とRGBカメラ363とは設置位置が異なるため、図5(c)に示すようにRGBカメラ画像523および赤外線カメラ画像524の撮影領域が異なる。
距離画像取得部408は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像524をRGBカメラ画像523の座標系に変換する(S503)。なお、赤外線カメラ362とRGBカメラ363の相対位置や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとする。
距離画像取得部408は、図5(d)に示すように、3次元形状測定パターン522とS503で座標変換を行った後の赤外線カメラ画像524を比較して、対応点を抽出する(S504)。例えば、距離画像取得部408は赤外線カメラ画像524上の1点を抽出する。距離画像取得部408は、抽出した点に対応する点を3次元形状測定パターン522上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、距離画像取得部408は、赤外線カメラ画像524から任意の画素を抽出し、抽出した画素の周囲のパターンと同一のパターンを3次元形状測定パターン522上から探す。距離画像取得部408は最も周囲のパターンの類似度が高い画素と抽出した画素と対応づける。
距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線525として三角測量の原理を用いて計算を行い、赤外線カメラ362から当該画素に写っている物体までの距離を算出する(S505)。距離画像取得部408は、S504で対応付けが出来た画素について、赤外線カメラ362からの距離を算出して画素値としてRAM303に保存する。距離画像取得部408は、S504で対応付けが出来なかった画素について、距離の計測が出来なかった部分として無効値をRAM303に保存する。距離画像取得部408は、上記の処理をS503で座標変換を行った赤外線カメラ画像524の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
距離画像取得部408は、距離画像の各画素にRGBカメラ画像523のRGB値を保存することにより、1画素につきR、G、B、距離の4つの値を持つ距離画像を生成する(S506)。距離画像取得部408が取得した距離画像は距離画像センサ208のRGBカメラ363で定義された距離画像センサ座標系が基準となっている。
図2(b)を用いて上述したように、距離画像取得部408は、距離画像センサ座標系として得られた距離データを直交座標系における3次元点群に変換する(S507)。(以後、特に指定がなく3次元点群と表記した場合は、直交座標系における3次元点群を示すものとする。)距離画像取得部408が距離データを直行座標系に変換したのち、図5(a)に記載の処理を終了する。
なお、本実施例では上述したように、距離画像センサ208として赤外線パターン投射方式が採用されている。カメラスキャナ101が他の方式の距離画像センサを用いて距離画像を取得してもよい。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式など、他の計測手段が用いられてもよい。
<ジェスチャ認識部の説明>
ジェスチャ認識部409の処理の詳細を、図6(a)のフローチャートを用いて説明する。図6(a)に示される処理は、カメラスキャナ101の電源がONになったときに実行される。図6(a)に記載される処理は、CPU302がHDD305に記憶されているプログラムを読み出して実行することで実現される。
ジェスチャ認識部409の処理の詳細を、図6(a)のフローチャートを用いて説明する。図6(a)に示される処理は、カメラスキャナ101の電源がONになったときに実行される。図6(a)に記載される処理は、CPU302がHDD305に記憶されているプログラムを読み出して実行することで実現される。
ジェスチャ認識部409は初期化処理を行う(S601)。ジェスチャ認識部409は距離画像取得部408から距離画像を1フレーム分取得する。電源がONになった直後は、操作面204上に距離を測定する対象物が置かれていない。ジェスチャ認識部409は、初期状態として操作面204の認識を行う。ジェスチャ認識部409は取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、操作面204の平面パラメータと呼ぶ)を算出し、RAM303に保存する。
ジェスチャ認識部409は、S621〜622に後述する処理を実行し、操作面204上に存在する物体の3次元点群を取得する(S602)。S602に記載の処理は、距離画像センサ208が所定時間毎に操作面の撮像した画像に対して行われる。
ジェスチャ認識部409は、距離画像取得部408から距離画像と3次元点群を1フレーム取得する(S621)。ジェスチャ認識部409は、S601で特定された操作面204を用いて、取得した3次元点群から操作面204を含む平面にある点群を除去する(S622)。
ジェスチャ認識部409は、S631〜S634で後述する処理を実行し、取得した3次元点群から操作者の手の形状および指先を検出する(S603)。S603においてジェスチャ認識部409が実行する処理を、図6(b)〜(d)に示す、指先検出処理の方法を模式的に表した図を用いて説明する。ジェスチャ認識部409は、S602で取得した3次元点群と距離画像に含まれるRGB信号の情報を用いて、操作面204を含む平面から所定の高さ以上にある、肌色の3次元点群を抽出する(S631)。ジェスチャ認識部409がS631に記載の処理を実行することで、手の3次元点群が得られる。図6(b)の601は抽出した手の3次元点群を表している。
ジェスチャ認識部409は、S631で抽出した手の3次元点群を、操作面204の平面に射影した2次元画像を生成して、その手の外形を検出する(S632)。図6(b)の602は、3次元点群601を操作面204の平面に投影した3次元点群を表している。図6(c)は、投影された3次元点群から、xy座標の値だけを取りだして、z軸方向から見た2次元画像603を示している。ジェスチャ認識部409は、手の3次元点群601の各点が、操作面204の平面に投影した2次元画像603のどの点に対応するかを、記憶する。
ジェスチャ認識部409はS632で検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する(S633)。図6(d)は、外形の曲率から指先を検出する方法を模式的に表したものである。604は、操作面204の平面に投影された2次元画像603の外形を表す点の一部である。ジェスチャ認識部409は、604のような、外形を表す点のうち、隣り合う5個の点を含むように円を描いたときの直径を算出する。円605、607は、2次元画像603において隣り合う5つの点が含まれるように描かれた円である。この円を、全ての外形の点に対して順に描き、その直径(例えば606、608)が所定の値より小さい(曲率が小さい)場合、ジェスチャ認識部409は当該点が指先を構成する点であると判定する。本実施形態では隣り合う5個の点としたが、その数は限定されるものではない。また、本実施形態では曲率を用いたが、ジェスチャ認識部409が外形に対して楕円フィッティングを行って、指先を検出してもよい。
ジェスチャ認識部409は、検出した指先の個数および各指先の座標を算出する(S634)。ジェスチャ認識部409は、S633において指先として検出した2次元画像603の点に対応する3次元点群601の座標を取得する。本実施形態では、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法(外形の曲率計算等)で、ジェスチャ認識部409が手領域から指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標である。そこで、ジェスチャ認識部409は検出した2次元の座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
ジェスチャ認識部409は、S641〜S643に後述する、検出した手の形状および指先からのジェスチャ判定処理を行う(S604)。ジェスチャ認識部409は、S603で検出した指先が1つかどうか判定する(S641)。指先が1つでなければ、ジェスチャ認識部409はユーザインターフェイス部403に通知するイベントはないと判定する(S643)。このとき、ジェスチャ認識部409は操作者の指先が操作面204上に存在することを示すようなイベントを生成してもよい。S641においてジェスチャ認識部409が検出した指先が1つであれば、ジェスチャ認識部は後述する平面タッチジェスチャ判定処理を行う(S642)。
ユーザインターフェイス部403は、S604でジェスチャ認識部409から受信したイベントに従って、プロジェクタ207が操作面204に投影する画面を制御する(S605)。その後、ジェスチャ認識部409は処理をS602に戻してジェスチャ認識処理を繰り返す。図6(a)に記載の処理は、カメラスキャナ101の電源がOFFになったときに終了される。
なお、本実施形態では、一本指でのジェスチャ認識について説明を行ったが、カメラスキャナ101が複数の指あるいは複数の手、あるいは腕や体全体でのジェスチャ操作を認識するとしてもよい。
平面タッチジェスチャ判定処理(S642)を詳細に記載する前に、本実施形態において、ユーザがタップ操作を行ったときのタッチ位置と、ユーザがムーブ操作を行ったときの入力の開始位置、終了位置の決定方法を図7、図8、図9を用いて説明する。
本実施形態において、カメラスキャナ101のジェスチャ認識部409はユーザインターフェイス部403にユーザの指先の動きを示すイベントを通知する。ユーザインターフェイス部403は通知されたイベントに従って、プロジェクタが操作面に投影する画面の制御を行う。ジェスチャ認識部409が通知するイベントとは、たとえば、「タッチ」イベントや、「タップ」イベント、「ムーブ」イベントや「ムーブスタート」イベント、「ムーブエンド」イベント、「リリース」イベントがある。
「タッチ」イベントとは、ユーザの指先が非タッチ状態からタッチ状態に変わったことを示すイベントである。「リリース」イベントとはユーザの指先が非タッチ状態からタッチ状態に変わったことを示すイベントである。
「タップ」イベントとは、「タッチ」イベントに含まれる座標と「リリース」イベントに含まれる座標が所定距離以下であるときに通知されるイベントである。すなわち、「タップ」イベントは、ユーザが指先を操作面に近づけてから操作面上で動かさずに指先を操作面から離したことを示すイベントである。「タップ」イベントは、ユーザが操作面に表示されたアイコンや画像を選択するときに用いられる。
「ムーブスタート」イベント、「ムーブ」イベント、「ムーブエンド」イベントはムーブ操作に関するイベントであり、ユーザが直線や図形を描画したり、操作面に表示されるアイコンを移動したりするときに用いられるイベントである。「ムーブスタート」イベントは、ユーザがムーブ操作を開始した座標を含むムーブ操作の開始を通知するイベントである。「ムーブ」イベントは、ムーブ操作中にユーザの指先の座標を含み、ムーブ操作中であることを示すイベントである。「ムーブエンド」イベントはムーブ操作が終了した座標を含む、ムーブ操作の終了を通知するイベントである。
図7は、ユーザがタップ操作を行ったときの模式図である。図7(a)は操作面204を真上(z軸方向)から見た図であり、(b)は操作面204をy軸方向から見た図である。点702はユーザの指先が操作面204に触れた点である。閾値902は、ユーザの指先が非タッチ状態からタッチ状態に移行したことを検出するための閾値である。700c、700dはユーザの指先が移動した経路を示している。点112〜点115はカメラスキャナ101が検出するユーザの指先の位置である。ユーザの指先が点112に到達すると、カメラスキャナ101はユーザの指先が非タッチ状態からタッチ状態に移行したことを検出する。そして、所定時間経過後(図7では3フレーム経過後)の点113のxy座標と「タッチ」イベントをジェスチャ認識部409がユーザインターフェイス部403に通知する。ユーザの指先が点114に到達すると、ジェスチャ認識部409はタッチ状態から非タッチ状態に移行したことを検出する。ジェスチャ認識部409はユーザインターフェイス部403に点114の所定時間前(図7では4フレーム前)の点115の座標を含む「リリース」イベントをユーザインターフェイス部403に通知する。このとき、ジェスチャ認識部409は、ユーザの指先が点113から所定の距離以上移動していなければ、タップ操作が行われたと判定し、ユーザインターフェイス部403に点113の座標を含む「タップ」イベントを通知する。上記のような流れで、カメラスキャナ101はユーザが行った操作がタップ操作であることを判定して、操作面204に表示するアイテムの選択等、タップ操作に対応する処理を実行する。
図8は、ユーザが操作面204に指を近づけて、操作面204に触れた後、操作面204上で指を動かしたムーブ操作の開始およびムーブ操作中を示す模式図である。図8(a)は、ユーザが操作面204上で指先を静止させずに動かした場合を示している。図8(b)は、ユーザが操作面204上で指先を静止させた場合を示している。r1、r2は、ユーザの指先の軌跡である。点904、点905、点906で示す丸印は、カメラスキャナ101が各フレームのユーザの指先の位置である。点910は、ユーザが実際に操作面204に接触した点である。
図8(a)では、ユーザの指先が点904まで移動すると、カメラスキャナ101はユーザの指先と操作面204の距離が閾値703よりも小さくなったこと、すなわち非タッチ状態からタッチ状態に移行したことを検出する。ユーザの指先が操作面204に近づいてから所定時間が経過した後の点906で、ジェスチャ認識部409はユーザインターフェイス部403に点906の座標を含む「タッチ」イベントを通知する。
その後ユーザの指先のx軸方向の移動量907が所定の閾値以上となると、ジェスチャ認識部409はユーザインターフェイス部403に「タッチ」イベントで通知した座標と同じ座標を含む「ムーブスタート」イベントを通知する。ここで、ユーザインターフェイス部403に通知された「ムーブスタート」イベントに含まれる座標がムーブ操作の開始位置である。
図8(b)では、ユーザの指差が点904を通過した3フレーム後に、ジェスチャ認識部409がユーザインターフェイス部403に点906の座標を含む「タッチ」イベントを通知する。その後、ユーザの指先のx軸方向の移動量907が所定の閾値以上になる前の点909で所定時間静止した場合、ジェスチャ認識部409は点909の座標を含む「ムーブスタート」イベントをユーザインターフェイス部403に通知する。ここで、ユーザインターフェイス部403に通知された「ムーブスタート」イベントに含まれる座標がムーブ操作の開始位置である。
ユーザの指先が所定の閾値よりも近づいた位置(点904)をムーブ操作の開始位置とすると、カメラスキャナ101がムーブ操作の開始位置として決定した位置と、ユーザが実際に操作面204に触れた位置(点910)の差が大きくなる。しかし、上記のようにすることで、カメラスキャナ101が決定するムーブ操作の開始位置(点906)と実際にユーザが操作面204に触れた位置(点910)の差を少なくすることができる。
さらに、本実施形態では、図9(b)に示すように、ユーザの指先が点909で静止した場合、カメラスキャナ101はユーザの指先が静止した位置(点909)をムーブ操作の開始位置に決定する。このようにすると、ユーザが意図的に指先を静止させた場合、カメラスキャナ101はユーザの意図した位置をムーブ操作の開始位置として決定することができる。
次に、図9(a)(b)を用いて、ユーザの指先が操作面204から離れるときに、カメラスキャナ101がムーブ操作の終了位置を決定する方法を説明する。図9(a)は、ユーザが指先を静止させることなく、指先をr2,r3の経路をたどって動かした場合の模式図である。図9(b)は、ユーザが指先を点1008で静止させた後にr3の経路をたどって動かした場合の模式図である。点1004、点1005、点1006は、カメラスキャナ101が撮像する各フレームのユーザの指先の位置を示す点である。点1011は、ユーザの指先が操作面204から離れた位置を示している。
図9(a)より、ユーザの指先が点1005まで移動したときに、ジェスチャ認識部409はユーザインターフェイス部403に所定時間前(図9(a)では4フレーム前)の点1006の座標を含む「ムーブエンド」イベントを通知する。ここで、ユーザインターフェイス部403に通知された「ムーブエンド」イベントに含まれる座標がムーブ操作の終了位置である。
さらに、本実施形態では、図9(b)に示すように、ユーザの指先が点1008で静止させたときに、ジェスチャ認識部409は「ムーブエンド」イベントを生成してRAM303に保持しておく。その後、ユーザの指先のx軸方向の移動量1009が所定の距離より小さいまま、タッチ状態から非タッチ状態に移行した場合、ジェスチャ認識部409は点1008で生成した「ムーブエンド」イベントをユーザインターフェイス部403に通知する。ここで、「ムーブエンド」イベントに含まれる点1008の座標がムーブ操作の終了位置となる。
図9(c)(d)をもちいて、ユーザがムーブ操作中に指先を静止させた後、ムーブ操作を継続した場合の処理を説明する。図10(c)は操作面をz軸方向から操作面204をみたときの図である。図(d)は、操作面をy軸方向から見た図である。ユーザがr2、r2´、r3の順で指先を移動させたとする。点1008はユーザの指先が静止した位置である。ユーザの指先が点1008で静止した後、ユーザの指先のx軸方向の移動量1009が所定の閾値以上となると、ジェスチャ認識部409はユーザインターフェイス部403に現在のユーザの指先の座標を含む「ムーブ」イベントを通知する。ユーザの指先が点1005に到達したとき、ジェスチャ認識部409はユーザインターフェイス部403に点1006の座標を含む「ムーブエンド」イベントを通知する。ここで、「ムーブエンド」イベントに含まれる点1006の座標がムーブ操作の終了位置である。
本実施形態では、入力の開始時には、非タッチ状態からタッチ状態に移行した3フレーム後の画像での、ユーザの指先の位置をカメラスキャナ101はムーブ操作の開始位置とする。一方で、カメラスキャナ101は、タッチ状態から非タッチ状態に移行する4フレーム前の画像でのユーザの指先の位置をムーブ操作の終了位置とする。入力の開始時のフレーム数と入力終了時のフレーム数は同じフレーム数であっても構わない。
<平面タッチジェスチャ判定処理>
次に、本実施形態における平面タッチジェスチャ判定処理の流れについてフローチャートを用いて説明する。図10は図6のS642で行う平面タッチジェスチャ判定処理の流れの一例を示すフローチャートである。図10に記載の処理を実行するためのプログラムはHDD305に記憶されており、CPU302が当該プログラムを読み出して実施することで本処理が実行される。
次に、本実施形態における平面タッチジェスチャ判定処理の流れについてフローチャートを用いて説明する。図10は図6のS642で行う平面タッチジェスチャ判定処理の流れの一例を示すフローチャートである。図10に記載の処理を実行するためのプログラムはHDD305に記憶されており、CPU302が当該プログラムを読み出して実施することで本処理が実行される。
本フローチャートにおける、閾値1はジェスチャ認識部409が非タッチ状態からタッチ状態への移行を検出する閾値であり、たとえば、図8の703である。閾値2は、ジェスチャ認識部409がタッチ状態から非タッチ状態への移行を検出する閾値であり、たとえば、図9の閾値703である。閾値3は、ユーザの指先がタッチ状態で操作平面上を所定の距離以上移動したか否かを判定するための閾値である。
まず、ジェスチャ認識部409が、ユーザの指先と操作面204の距離が閾値1以下であるかを判定する(S801)。すなわち、ユーザの指先が操作面にタッチしている状態であるか否かを判定する。
ユーザの指先と操作面の距離が閾値1以下の場合、ジェスチャ認識部409は、RAM303に保持されるタッチ判定フラグが「1」であるかを判定する(S802)。タッチ判定フラグとは、タッチ状態が所定フレーム継続されたかどうかを示すフラグである。タッチ判定フラグの値は、初期状態で「0」である。タッチ判定フラグが「1」の場合(S802でYES)、ジェスチャ認識部409はS819に記載の処理を実行する。タッチ判定フラグが「0」であった場合、ジェスチャ認識部409はS803以降に記載の処理を実行する。
ジェスチャ認識部409は、タッチ状態が継続されているフレームカウントが所定のフレームカウントになったかを判定する(S802)。RAM303は、ユーザの指先と操作面204の距離が閾値1以下になってからのフレーム数をフレームカウントとして保持する。ジェスチャ認識部409は、RAM303に保持されたフレームカウントを読み出して、タッチ状態が継続されているフレームカウントが所定のフレームカウントに達しているかを判定する。本実施形態では、所定のフレームカウントは、例えば、距離画像センサ208の分解能に合わせてあらかじめ設定される固定の値とする。しかし、たとえば、タッチ閾値付近でのユーザの指先の移動速度等によって、ジェスチャ認識部409が所定のフレームカウントを変更するとしてもよい。ユーザの指先と操作面204の距離が閾値1よりも近くなってから所定のフレームカウントが経過していなかった場合、ジェスチャ認識部409はRAM303に保持されるフレームカウントを1増やす(S804)。このとき、ジェスチャ認識部409は、ユーザインターフェイス部403にイベントを通知せず平面タッチジェスチャ判定を終了し、図6のS605に遷移する。本実施形態では、ユーザインターフェイス部403へのイベントの通知は行わないが、ジェスチャ認識部409が、ユーザインターフェイス部403にユーザの指先が操作面204上にあることを示すイベントなど、状態を示すイベントを通知してもよい。
一方、ユーザの指先と操作面204の距離が閾値1以下になってから所定のフレームカウントが経過していた場合、ジェスチャ認識部409がRAM303に保持されているタッチ判定フラグを「1」に更新する(S805)。そして、ジェスチャ認識部409は「タッチ」イベントを生成してユーザインターフェイス部403に通知する(S806)。「タッチ」イベントに含まれる位置情報は、ジェスチャ認識部409がタッチ判定フラグを「1」に更新したときに検出されるユーザの指先のxy座標である。たとえば、図7(b)ではユーザの指先と操作面204の距離が閾値1(703)よりも小さくなる点112から所定フレームカウント(3フレーム)後の点113のxy座標が「タッチ」イベントの座標としてユーザインターフェイス部403に通知される。このように、ユーザの指先と操作面204の距離が閾値1よりも小さくなってから所定フレーム数後の、ユーザの指先の位置を入力の開始位置としてRAM303に格納する。これにより、ユーザがタッチしようとした位置の座標と、ジェスチャ認識部409がユーザインターフェイス部403に通知する「タッチ」イベントの座標の差を小さくすることができる。
また、S806において、ジェスチャ認識部409は、生成したイベントの種類および座標をRAM303に格納する。RAM303に格納されたイベントの種類および座標は、少なくとも当該入力が終了するまではRAM303に保持されたままである。
ジェスチャ認識部409は「タッチ」イベントをユーザインターフェイス部403に通知した後、「タップ」イベントを生成し、当該イベントをRAM303に格納する(S807)。このとき、「タップ」イベントに含まれる座標はS806で生成される「タッチ」イベントに含まれる座標と同様のものである。
ジェスチャ認識部409は、S802においてタッチ判定フラグが「1」であった場合、後述するS819〜S827に記載の処理を実行する。
ジェスチャ認識部409は、RAM303にタップイベントが保持されているかを判定する(S819)。RAM303にタップイベントが保持されている場合、ジェスチャ認識部409は、S820〜S824に後述する処理を実行する。RAM303にタップイベントが保持されていない場合、ジェスチャ認識部409は、S825〜S827に後述する処理を実行する。
ジェスチャ認識部409はS806においてユーザインターフェイス部403に通知した「タッチ」イベントの座標と、平面タッチジェスチャ判定処理を実行している画像内のユーザの指先の座標の距離が、所定の閾値3以上であるかを判定する(S820)。閾値3は、ユーザの指先がタッチ状態で、操作面204上を移動したか否かを判定するための閾値である。S820において、「タッチ」イベントの座標、すなわち入力の開始位置と現在の指先の座標が閾値3以上離れていれば、ジェスチャ認識部409はユーザがタッチ状態で指先を動かしたと判定する。一方で、「タッチ」イベントの座標、すなわち入力の開始位置と、現在の指先の座標が閾値3未満であれば、ジェスチャ認識部409はユーザの指先が操作面204上で移動していないと判定する。
ユーザの指先が入力の開始位置から閾値3以上移動した場合、ジェスチャ認識部409は、RAM303に保持している「タップ」イベントを破棄して、「ムーブスタート」イベントを生成し、ユーザインターフェイス部403に通知する(S821)。S821は図8(a)に対応する。ジェスチャ認識部409は、S806でユーザインターフェイス部403に通知した座標、すなわち点906の座標を含む「ムーブスタート」イベントをユーザインターフェイス部403に通知する。
S820において、ユーザの指先の位置を示す座標と「タッチ」イベントが生成されたときの座標の距離が閾値3未満の場合、ジェスチャ認識部409は、ユーザの指先が静止しているか否かを判定する(S822)。本実施形態では、画像取得部416によって取得された前のフレームの画像から取得されるユーザの指先のxy座標と最新のフレームの画像から検出されたユーザの指先のxy座標から指先の移動距離を算出する。そして、算出した距離が所定の閾値よりも小さい場合、ジェスチャ認識部409はタッチ位置が静止していると判定する。本実施形態では、ジェスチャ認識部409が一つ前のフレームと本フレームにおけるユーザのタッチ位置の違いを検出して、タッチ位置が静止しているかを判定するとした。S822において、ジェスチャ認識部409が直前の複数フレームの間にユーザの指先が移動した距離が所定の閾値以下であればユーザの指先が静止したとしてもよい。
ユーザの指先が静止していると判定された場合、ジェスチャ認識部409はS823に記載する処理を実行する。ユーザの指先が静止していないと判定された場合、ジェスチャ認識部409はS824に記載する処理を実行する。
ジェスチャ認識部409は、RAM303に保持されている「タップ」イベントを廃棄し、「ムーブスタート」イベントを生成し、ユーザインターフェイス部403に通知する(S823)。S823は、図8(b)に対応している。S823でユーザインターフェイス部403に通知される「ムーブスタート」イベントに含まれる座標は、S822においてユーザの指先の静止が検出された点909の座標である。「ムーブスタート」イベントを通知後、ジェスチャ認識部409は平面タッチジェスチャ判定処理を終了する。
S822においてユーザの指先が静止していないと判定された場合、ジェスチャ認識部409はユーザインターフェイス部403に対してイベントの通知を行わずに、平面タッチジェスチャ判定処理を終了する(S824)。このときジェスチャ認識部409は、ユーザの指先が操作面204上にあることを示すイベントをユーザインターフェイス部403に通知してもよい。
S819において、RAM303に「タップ」イベントが保持されていなかった場合、ジェスチャ認識部409は、S822と同様にユーザの指先が静止したかを判定する(S825)。S825で行う処理は前述したS822の処理と同様である。
ユーザの指先が静止したと判定された場合、ジェスチャ認識部409は、ムーブ操作の終点を示す「ムーブエンド」イベントをRAM303上に保持し、平面タッチジェスチャ判定処理を終了する(S826)。S826は、図9(b)の点1008で指が静止したときの処理である。ジェスチャ認識部409は、S825でユーザの指先の静止が検出された点1008の座標を含む「ムーブエンド」イベントをRAM303に保持する。
S826において、RAM303にすでに「ムーブエンド」イベントが保持されている場合がある。たとえば、ユーザがムーブ操作の途中で一度、タッチ位置を静止させた後、もう一度、指先を動かしてムーブ操作をし、指先を静止させた場合である。このとき、ジェスチャ認識部409は、RAM303に保持されている「ムーブエンド」イベントを破棄して、現在のユーザの指先の位置を示す座標と「ムーブエンド」イベントをRAM303に格納する。
S825において、ユーザの指先の位置の静止が検出されなかった場合、ジェスチャ認識部409は、「ムーブ」イベントをユーザインターフェイス部403に通知し、平面タッチジェスチャ判定処理を終了する(S827)。「ムーブ」イベントに含まれる座標情報は、現在のユーザの指先の位置を示す座標である。
S819〜S827に記載の処理は、ユーザの指先が閾値1よりも操作面204に近い位置にあり、さらにRAM303のタッチ判定フラグが「1」のときにジェスチャ認識部409が実行する処理である。
一方、S801においてユーザの指先と操作面204の距離が閾値1よりも大きい場合、ジェスチャ認識部409は、S808〜S818に記載の処理を実行する。
ジェスチャ認識部409はユーザの指先と操作面204の距離が閾値2以上であるかを判定する(S808)。閾値2は、タッチ状態から非タッチ状態への移行を検出するための閾値である。閾値1と閾値2は同じ値であってもよいが、本実施形態では、閾値2は閾値1よりも大きい値であるとする。閾値2を閾値1よりも大きくすることで、ユーザの指先が閾値1の付近でわずかに上下に動いたときに、短時間の間にタッチとリリースが繰り返し検出されてしまうことを防ぐことができる。
S808において、ユーザの指先と操作面204の距離が閾値2よりも小さい場合、ユーザの指先は閾値1よりも高い位置にあり、閾値2よりも低い位置にある。このとき、ジェスチャ認識部409は、図8に記載の平面タッチジェスチャ処理を終了して、ジェスチャ認識部409は図6のS605に記載の処理を実行する。
ユーザの指先と操作面204の距離が閾値2以上であると判定された場合、ジェスチャ認識部409はRAM303に保持されたタッチ判定フラグが「0」であるかを判定する(S809)。タッチ判定フラグが「0」であった場合、ジェスチャ認識部409は本フローチャートに記載の処理を終了して、図6のS605に記載の処理を実行する。
タッチ判定フラグが「1」の場合、ジェスチャ認識部409はRAM303に保持されているタッチ判定フラグを「0」に更新する(S810)。
ジェスチャ認識部409はユーザインターフェイス部403に「リリース」イベントを通知する(S811)。S811において、ジェスチャ認識部409は、所定フレーム前の画像について図8に示す平面タッチジェスチャ判定処理を実行したときに生成されたイベントに含まれる座標を読み出す。ジェスチャ認識部409は、所定フレーム前の画像について平面タッチジェスチャ判定処理を行ったときに生成したイベントに含まれる座標を含む「リリース」イベントをユーザインターフェイス部403に通知する。例えば、図9(a)でユーザの指先が点1005に到達した場合、点1006のxy座標を含む「リリース」イベントをユーザインターフェイス部403に通知する。本実施形態では、上述の指定フレームは予め決められる固定のフレーム数であるとする。しかし、ユーザの指先の移動速度等に応じてフレーム数を動的に変化させてもよい。例えば、タッチ位置の移動速度が速い場合、リリース座標を決定するために遡るフレーム数を少なくし、タッチ位置の移動が遅い場合、リリース座標を決定するために遡るフレーム数を多くする。
「リリース」イベントをユーザインターフェイス部403に通知した後、ジェスチャ認識部409は「タップ」イベントがRAM303上に保持されているかを判定する(S812)。S807で生成される「タップ」イベントはS821またはS823で「ムーブスタート」イベントが生成されるまで、RAM303に保持される。このようにすることで、ジェスチャ認識部409が「リリース」イベントを生成するときに、タップ操作がおこなわれたのか、ムーブ操作が行われたのかを判別することができる。
RAM303に「タップ」イベントが保持されている場合、ジェスチャ認識部409は「タップ」イベントをユーザインターフェイス部403に通知する(S813)。ジェスチャ認識部409は、「タップ」イベントをユーザインターフェイス部403に通知した後、本フローチャートに記載の処理を終了する。S813は、図7に対応する。S813においてユーザインターフェイス部403に通知される「タップ」イベントの座標は、S807でジェスチャ認識部409が生成してRAM303に保持した「タップ」イベントの座標、すなわち点113の座標である。ただし、「タップ」イベントの座標の決め方はここに示す限りではない。例えば、ジェスチャ認識部409がS807で得られる「タッチ」イベントの座標とS811で得られる「リリース」イベントの座標の中点をS813でユーザインターフェイス部403に通知される「タップ」イベントの座標に決定してもよい。
ジェスチャ認識部409が「リリース」イベントを通知したとき、「タップ」イベントがRAM303上に保持されていない場合、ジェスチャ認識部409は「ムーブエンド」イベントがRAM303上に保持されているかを判定する(S814)。
「ムーブエンド」イベントがRAM303に保持されていない場合、ジェスチャ認識部409が「ムーブエンド」イベントを生成し、ユーザインターフェイス部403に「ムーブエンド」イベントを通知する(S818)。ジェスチャ認識部409は、ユーザインターフェイス部403に「ムーブエンド」イベントを通知した後、図8に記載の処理を終了する。S818は、図9(a)に対応する処理である。ジェスチャ認識部409は点1006のxy座標を含む「ムーブエンド」イベントをユーザインターフェイス部403に通知する。
RAM303に「ムーブエンド」イベントが保持されている場合、ジェスチャ認識部409は、「ムーブエンド」イベントのxy座標と「リリース」イベントのxy座標の距離があらかじめ設定された閾値4以上かどうかを判定する(S815)。この処理は、「ムーブエンド」イベントが発生した後に、ユーザが改めてムーブ操作を続けたかどうかを、xy方向の移動距離を基準として判別するためのものである。
xy方向の距離が閾値4よりも大きいと判断された場合、ジェスチャ認識部409は、「リリース」イベントに含まれる座標を用いて「ムーブエンド」イベントを更新する(S816)。S816は図9(d)の場合にジェスチャ認識部409が実行する処理である。点1008と点1007の距離が閾値4以上である場合、ジェスチャ認識部409はRAM303に保持されている「ムーブエンド」イベントを破棄して、点1007の座標を含む「ムーブエンド」イベントをユーザインターフェイス部403に通知する。
保持されている「ムーブエンド」イベントと「リリース」イベントのxy平面上での距離が閾値4未満の場合、ジェスチャ認識部409が、RAM303に保持されている「ムーブエンド」イベントをユーザインターフェイス部403に通知する(S817)。これは、図9(b)に示すように、ユーザが操作面204で指先を静止させた後、操作面204から指先を離した場合の処理である。ジェスチャ認識部409は点1008の座標を含む「ムーブエンド」イベントをユーザインターフェイス部403に通知する。
以上、S808〜S818の処理は、ムーブ操作の終了位置を決定する「ムーブエンド」イベントの座標の決定の方法を示している。ユーザが操作面204上で指先を静止させることなく、操作面204から指先を離した場合、「ムーブエンド」イベントに含まれる座標は、「リリース」イベントに含まれる座標と同じ座標となる。すなわち、「ムーブエンド」イベントに含まれる座標は、ユーザの指先と操作面204の距離が閾値2よりも小さい状態から、大きい状態に移行するよりも所定フレーム数前の画像におけるユーザの指先の位置である。これにより、カメラスキャナ101が決定するムーブ操作の終了位置とユーザが意図するムーブ操作の終了位置の差を小さくすることができる。
第1の実施形態では、ムーブ操作の開始時に、ユーザの指先と操作面204の距離が所定の閾値より大きい状態から、所定の閾値よりも小さい状態に移行した所定時間後のユーザの指先の位置をカメラスキャナ101がムーブ操作の開始位置に決定する。さらに、ユーザの指先と操作面204の距離が所定の閾値より小さいタッチ状態から、閾値よりも大きい非タッチ状態に移行する所定時間前のユーザの指先の位置をムーブ操作の終了位置とする。このようにすることで、ユーザが指先を操作面204に対して垂直に動かさなかった場合でも、カメラスキャナ101が決定するムーブ操作の開始位置および終了位置と、ユーザの意図するムーブ操作の開始位置と終了位置の差を少なくすることができる。
また、ユーザがムーブ操作の開始時および終了時に指先を操作面上で静止させた場合、情報処理装置はユーザが指先を静止させた位置をムーブ操作の開始位置または終了位置として認識する。このようにすることで、ユーザが意識的にムーブ操作の開始位置または終了位置を指定した場合、カメラスキャナ101は当該位置をムーブ操作の開始位置または終了位置に決定することができる。
[第2の実施形態]
第1の実施形態で情報処理装置は、常に、ユーザの動作に合わせてムーブ操作の開始位置および終了位置を決定していた。すなわち、ユーザが操作面をタッチしたときに、一度指先を静止させた場合には、情報処理装置が指先の静止した座標を入力座標として補正をしていた。一方で、ユーザが指先を静止させることなく操作を行った場合、情報処理装置はユーザの指先が所定の閾値よりも近づいた後、所定時間経過後に検出される指先の座標をムーブ操作の開始位置に決定した。
第1の実施形態で情報処理装置は、常に、ユーザの動作に合わせてムーブ操作の開始位置および終了位置を決定していた。すなわち、ユーザが操作面をタッチしたときに、一度指先を静止させた場合には、情報処理装置が指先の静止した座標を入力座標として補正をしていた。一方で、ユーザが指先を静止させることなく操作を行った場合、情報処理装置はユーザの指先が所定の閾値よりも近づいた後、所定時間経過後に検出される指先の座標をムーブ操作の開始位置に決定した。
第2の実施形態では、ユーザの指先が静止した位置をムーブ操作の開始位置とするか、ユーザの指先と操作面の距離が所定の距離よりも近くなった後、所定時間経過後の指先の座標をムーブ操作の開始位置とするかをアプリケーションによって区別する。写真等画像の編集を行うアプリケーションのように、ムーブ操作の開始位置および終了位置を正確に決定することが必要なアプリケーションでは、情報処理装置がユーザの指先が静止した位置をムーブ操作の開始位置および終了位置として決定する。一方で、フリーハンドで描画を行うアプリケーションでは描画位置の正確さよりもユーザが短時間に効率よく描画をすることが望まれる。上記のようなアプリケーションでは、情報処理装置が、非タッチ状態からタッチ状態へ移行した所定時間後の指先の位置をムーブ操作の開始位置に決定し、タッチ状態から非タッチ状態へ移行する所定時間前の指先の位置をムーブ操作の終了位置に決定する。第2の実施形態では、アプリケーションごとにムーブ操作の開始位置および終了位置を決定する方法を切りかえる。
第2の実施形態では、アプリケーションごとに静止フラグが設定される。静止フラグとは、当該アプリケーションを利用するときに、ユーザが指先を静止させることでムーブ操作の開始、終了を指示するアプリケーションであるか否かを示すフラグである。静止フラグが「0」の場合、当該アプリケーションはユーザが指先を静止させることなくムーブ操作の開始、終了を指示することのできるアプリケーションである。静止フラグが「1」の場合、当該アプリケーションは、ユーザが指先を静止させることでムーブ操作の開始、終了を指示することのできるアプリケーションである。
例えば、図11(a)(b)に示すような、スライダーバーを表示するアプリケーションでは、ユーザがスライダ1101をタッチして、指先を移動させることで、スライダ1101の位置を変化させることができる。この場合、スライダ1101を正確に移動させるためにはユーザによるムーブ操作の終了を正確に決定することが必要である。そこでスライダーバーを表示するアプリケーションで、静止フラグは「1」に設定される。また、図11(c)の画像をトリミングするアプリケーションでは、ユーザが元の画像か切り取る範囲を正確に選択することが必要である。ユーザが意図した範囲と異なる範囲を切り取ってしまうと、ユーザは操作をはじめからやり直さなくてはならない。また、図11(d)に示す矩形や円を描画するアプリケーションでは、各図形の描画の開始位置、終了位置を正確に決定することが必要である。このように、画像をトリミングするアプリケーションや図形の描画を行うアプリケーションでは、ユーザがムーブ操作を開始した位置、また終了した位置を正確に決定することが必要とされる。そこで、画像をトリミングするアプリケーションや円・矩形等予め決められた図形を描画するアプリケーションでも、静止フラグが「1」に設定される。
一方で、図11(e)はユーザがフリーハンドで描画を行うアプリケーションである。ユーザがフリーハンドで描画を行うアプリケーションでは、ユーザが入力を行った後すぐにその入力が反映された画面を表示することが望まれる。そこで、フリーハンドで描画を行うアプリケーションでは、静止フラグが「0」に設定され、ユーザが指先を静止させなくても入力を行うことができるようにする。
第2の実施形態に係る情報処理装置は、第1の実施形態と同様に、例えばカメラスキャナ101である。第2の実施形態に係るカメラスキャナ101のシステム構成、ハードウェア構成、プログラム機能構成図等は第1の実施形態と同様である。さらに、図5、図6に示す処理も第1の実施形態と同様である。ここでは、第1の実施形態と異なる点のみを説明する。
アプリケーションを立ち上げたときに、ジェスチャ認識部409はRAM303に格納される静止フラグが「1」か「0」かを判定する。RAM303に保持されている静止フラグが「0」の場合、図6のS642でジェスチャ認識部409は第1の実施形態の図8に示す処理と同様の処理を実行する。RAM303に保持されるアプリケーションフラグが「1」の場合、ジェスチャ認識部409は図6のS642で図12に示す平面ジェスチャ判定処理を実行する。
第2の実施形態における、平面タッチジェスチャ判定処理について図12を用いて説明する。本フローチャートに記載の処理を実行するためのプログラムは、HDD305等の記憶装置に記憶されている。CPU302がHDD305に記載のプログラムを読み出して、RAM303に展開し、実行することで処理が実現される。ここでは、第1の実施形態と異なる点のみを説明する。
S820においてユーザの指先が「タッチ」イベントの座標から閾値3以上移動している場合、ジェスチャ認識部409はユーザインターフェイス部403にエラーを通知する(S1301)。ユーザインターフェイス部403は通知されたエラーの通知に従って、操作面204にプロジェクタ207で、ユーザの指先の静止が検出されずムーブ操作が正しく開始されなかったことを通知する画面を投影する。
S814において、「リリース」イベントが生成されたときにRAM303に「ムーブエンド」イベントが保持されていなかった場合、ジェスチャ認識部409はユーザインターフェイス部403にエラーを通知する(S1302)。ユーザインターフェイス部403は通知されたエラーの通知に従って、操作面204にプロジェクタ207でユーザの指先の静止が検出されずムーブ操作が正しく終了されなかったことを通知する画面を投影する。
また、S815において、「リリース」イベントに含まれるxy座標と「ムーブエンド」イベントに含まれるxy座標の距離が閾値4以上である場合、ジェスチャ認識部409はユーザインターフェイス部403にエラーを通知する(S1303)。ユーザインターフェイス部403はエラーの通知に従って、操作面204にプロジェクタ207でユーザの指先の静止が検出されずムーブ操作が正しく終了されなかったことを通知する画面を表示する。
第2の実施形態では、静止フラグが「0」のアプリケーションでは、第1の実施形態と同様に、ユーザが指先を静止させた場合は、ユーザの指先が静止した位置をムーブ操作の開始または終了位置に決定した。一方で、ユーザの指先が静止していない場合、非タッチ状態からタッチ状態に移行して所定時間後のユーザの指先の位置がムーブ操作の開始位置に決定される。そして、タッチ状態から非タッチ状態に移行する所定時間前のユーザの指先の位置がムーブ操作の終了位置に決定された。しかし、静止フラグが「0」のアプリケーションについては、ユーザの指先が静止したかしていないかにかかわらず、ジェスチャ認識部409がムーブ操作の開始位置および終了位置を決定するとしてもよい。たとえば、常に、非タッチ状態からタッチ状態に移行して、所定フレーム数経過後のユーザの指先の位置がムーブ操作の開始位置に決定される。そして、常に、タッチ状態から非タッチ状態に移行する所定フレーム数前のユーザの指先の位置がムーブ操作の終了位置に決定されるとしてもよい。
第2の実施形態では、アプリケーションの種類ごとに静止フラグが設けられた。静止フラグはアプリケーションごとでなくてもよい。例えば、操作面204に投影される画面毎に静止フラグが設定されていてもよい。たとえば、ムーブ操作により描画を行うことのできる画面は静止フラグが「1」に設定されていて、ムーブ操作による描画を行わない画面では静止フラグが「0」に設定されてもよい。このようにすることで、画面毎にムーブ操作の開始位置と終了位置を決定する方法を切り替えることができる。また、操作面204に投影されるGUI部品毎に静止フラグが決められていてもよい。例えばスクロールバーを構成するGUI部品や、ムーブ操作による描画を行うためのGUI部品では静止フラグが「1」に設定される。一方で、ボタンを表示するGUI部品等では静止フラグが「0」に設定される。このようにすることで、アプリケーションごとや画面毎に静止フラグを設けるよりも細かくムーブ操作の開始と終了の決定方法を設定することができる。
第2の実施形態に記載の情報処理装置は、ムーブ操作の開始と終了の座標を決定する方法をアプリケーションごとに切り替えることができる。このようにすることで、ムーブ操作の開始と終了の座標の検出を正確に行いたいアプリケーションでは、ユーザに指先を静止させて、ムーブ操作の開始位置、または、終了位置を決定することができる。一方で、ムーブ操作の開始と終了を正確に決定することが不要なアプリケーションでは、ユーザが指先を静止させなくても、ムーブ操作の開始と終了の座標を情報処理装置が決定することができる。また、このとき、情報処理装置が決定するムーブ操作の開始位置および終了位置と、ユーザが意図したムーブ操作の開始位置および終了位置の差を小さくすることができる。
[その他の実施形態]
本実施形態では、ユーザが指先を動かして、情報処理装置の操作を行うとした。ユーザの指先でなくても、スタイラスやペン先等で情報処理装置の操作を行うことができるとしてもよい。
本実施形態では、ユーザが指先を動かして、情報処理装置の操作を行うとした。ユーザの指先でなくても、スタイラスやペン先等で情報処理装置の操作を行うことができるとしてもよい。
本実施形態では、非タッチ状態からタッチ状態に移行が検出された所定時間後のユーザの指先の位置をムーブ操作の開始位置とし、タッチ状態から非タッチ状態に移行が検出される所定時間前のユーザの指先の位置をムーブ操作の終了位置とした。ムーブ操作の開始時のみ、または終了時のみ本実施形態に記載の処理を実行するとしてもよい。たとえば、情報処理装置が非タッチ状態からタッチ状態に移行を検出してから所定時間後のユーザの指先の位置をムーブ操作の開始位置とし、タッチ状態から非タッチ状態に移行したときのユーザの指先の位置をムーブ操作の終了位置としてもよい。また、非タッチ状態からタッチ状態に移行したときのユーザの指先の位置をムーブ操作の開始位置とし、非タッチ状態からタッチ状態に移行する所定時間前のユーザの指先の位置をムーブ操作の終了位置としてもよい。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム又は装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
Claims (18)
- 撮像部により撮像された画像から所定の形状の物体を抽出する抽出手段と、
操作面と前記抽出手段により抽出された物体との距離を取得する取得手段と、
前記取得手段により取得された距離が第1の閾値より大きい状態から小さい状態に移行したかを判定する判定手段と、
前記判定手段により、前記取得された距離が前記第1の閾値より大きい状態から小さい状態に移行したと判定されてから第1の時間後に前記撮像部により撮像された画像を取得し、該取得した前記画像から抽出された前記所定の形状の物体の位置を入力の開始位置に決定する決定手段と、を有することを特徴とする情報処理装置。 - 前記決定手段は、前記取得された距離が前記第1の閾値よりも大きい状態から小さい状態に移行したと前記判定手段により判定されたのち、最初に前記所定の形状の物体が静止した位置を前記入力の開始位置に決定することを特徴とする請求項1に記載の情報処理装置。
- 前記撮像部は所定時間毎に前記操作面を含む領域を撮像することを特徴とする請求項1または2に記載の情報処理装置。
- 前記判定手段は、前記取得された距離が第2の閾値よりも小さい状態から大きい状態に移行したと判定し、
前記決定手段は、前記取得された距離が前記第2の閾値よりも小さい状態から大きい状態に移行したと前記判定手段により判定されたときより、第2の時間前に前記撮像部により撮像された画像を取得して、該取得した前記画像から抽出された前記所定の形状の物体の位置を前記入力の終了位置に決定することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。 - 前記決定手段は、前記取得された距離が前記第1の閾値よりも大きい状態から小さい状態に移行したと前記判定手段により判定されてから、前記第2の閾値よりも小さい状態から大きい状態に移行したと前記判定手段により判定されるまでの間であって、最後に前記所定の形状の物体が静止している位置を、前記入力の終了位置に決定することを特徴とする請求項4に記載の情報処理装置。
- 前記情報処理装置は、前記操作面に画面を投影する投影手段をさらに有し、
前記投影手段は、前記決定手段により決定される前記入力の開始位置および終了位置にから特定される操作に基づいて、前記操作面に投影される前記画面を更新することを特徴とする請求項4または5に記載の情報処理装置。 - 前記決定手段により決定される前記入力の開始位置と終了位置が所定の距離よりも小さい操作をタップ操作とする請求項6に記載の情報処理装置。
- 前記決定手段により決定される前記入力の開始位置と終了位置が前記所定の距離よりも大きい操作をムーブ操作とする請求項7に記載の情報処理装置。
- 前記第2の閾値は前記第1の閾値よりも大きい値であることを特徴とする請求項4乃至8のいずれか一項に記載の情報処理装置。
- 前記第2の時間は前記第1の時間よりも長い時間であることを特徴とする請求項4乃至9のいずれか一項に記載の情報処理装置。
- 前記抽出手段により抽出される前記所定の形状の物体は、ユーザの指先またはスタイラスのペン先であることを特徴とする請求項1乃至10のいずれか一項に記載の情報処理装置。
- 前記決定手段が、前記取得される距離が前記第1の閾値より大きい状態から小さい状態に移行したと前記判定手段により判定されてから所定の時間が経過した後に前記撮像部により撮像された画像を取得し、取得された前記画像から抽出される前記所定の形状の物体の位置を前記入力の開始位置に決定するか、前記取得される距離が前記第1の閾値よりも大きい状態から小さい状態に移行したと前記判定手段により判定されてから、最初に前記所定の形状の物体が静止した位置を前記入力の開始位置に決定するかが、アプリケーションごとに設定されていることを特徴とする請求項4乃至10のいずれか一項に記載の情報処理装置。
- 前記決定手段が、前記取得される距離が前記第2の閾値より小さい状態から大きい状態に移行したと前記判定手段により判定されたときより所定の時間前に前記撮像部により撮像された画像を取得し、取得された前記画像から抽出される前記所定の形状の物体の位置を前記入力の終了位置にするか、
前記取得される距離が前記第1の閾値よりも大きい状態から小さい状態に移行したと前記判定手段により判定されてから、前記取得される距離が前記第2の閾値よりも小さい状態から大きい状態に移行したと前記判定手段により判定されるまでの間であって、最後に前記所定の形状の物体が静止した位置を前記入力の終了位置に決定するかが、アプリケーションごとに設定されていることを特徴とする、請求項5乃至10のいずれか一項に記載の情報処理装置。 - 前記判定手段は、所定時間に前記所定の形状の物体が移動した距離が、所定の閾値よりも小さい場合に前記所定の形状の物体が静止していると判定することを特徴とする請求項2乃至13のいずれか一項に記載の情報処理装置。
- 撮像部により撮像された画像から所定の形状の物体を抽出する抽出手段と、
操作面と前記抽出手段により抽出される前記所定の形状の物体の距離を取得する取得手段と、
前記取得手段により取得される距離が第2の閾値よりも小さい状態から大きい状態に移行したことを判定する判定手段と、
前記取得された距離が前記第2の閾値よりも小さい状態から大きい状態に移行したと前記判定手段により判定されたときより、第2の時間前に前記撮像部により撮像された画像を取得し、取得された前記画像から抽出された前記所定の形状の物体の位置を入力の終了位置に決定する決定手段と、を有することを特徴とする情報処理装置。 - 情報処理装置の制御方法であって、
撮像部により撮像された画像から所定の形状の物体を抽出する抽出ステップと、
操作面と前記抽出ステップにおいて抽出された前記所定の形状の物体との距離を取得する取得ステップと、
前記取得ステップにおいて取得された距離が第1の閾値よりも大きい状態から小さい状態に移行したかを判定する判定ステップと、
前記判定ステップにおいて、前記取得された距離が第1の閾値より大きい状態から小さい状態に移行したことが判定されてから第1の時間が経過した後に前記撮像部により撮像された画像を取得し、該取得した前記画像から抽出される前記所定の形状の物体の位置を入力の開始位置に決定する決定ステップと、を有することを特徴とする情報処理装置の制御方法。 - 撮像部により撮像された画像から所定の形状の物体を抽出する抽出ステップと、
操作面と前記抽出ステップにおいて抽出された前記所定の形状の物体の距離を取得する取得ステップと、
前記取得ステップにおいて取得された距離が第2の閾値よりも大きい状態から小さい状態に移行したことを判定する判定ステップと、
前記判定ステップにおいて、前記取得された距離が前記第2の閾値よりも大きい状態から小さい状態に移行したことが判定されたときより、第2の時間前に前記撮像部により撮像された画像を取得し、該取得した前記画像から抽出された前記所定の形状の物体の位置を入力の終了位置に決定する決定ステップと、を有することを特徴とする情報処理装置の制御方法。 - 請求項16および請求項17に記載の処理をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017072919A JP2018173907A (ja) | 2017-03-31 | 2017-03-31 | 情報処理装置、および情報処理装置の制御方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017072919A JP2018173907A (ja) | 2017-03-31 | 2017-03-31 | 情報処理装置、および情報処理装置の制御方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018173907A true JP2018173907A (ja) | 2018-11-08 |
Family
ID=64108738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017072919A Pending JP2018173907A (ja) | 2017-03-31 | 2017-03-31 | 情報処理装置、および情報処理装置の制御方法、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018173907A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021140286A (ja) * | 2020-03-03 | 2021-09-16 | アルパイン株式会社 | 近接検出装置及び情報処理システム |
-
2017
- 2017-03-31 JP JP2017072919A patent/JP2018173907A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021140286A (ja) * | 2020-03-03 | 2021-09-16 | アルパイン株式会社 | 近接検出装置及び情報処理システム |
JP7346331B2 (ja) | 2020-03-03 | 2023-09-19 | アルパイン株式会社 | 近接検出装置及び情報処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10268277B2 (en) | Gesture based manipulation of three-dimensional images | |
US10310675B2 (en) | User interface apparatus and control method | |
US9544556B2 (en) | Projection control apparatus and projection control method | |
JP5783828B2 (ja) | 情報処理装置およびその制御方法 | |
US20170214856A1 (en) | Method for controlling motions and actions of an apparatus including an image capture device having a moving device connected thereto using a controlling device | |
US20230071534A1 (en) | Image Projection Device | |
JP6381361B2 (ja) | データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム | |
JP2015215720A (ja) | 画像表示撮影システム、撮影装置、表示装置、画像の表示および撮影の方法、およびコンピュータープログラム | |
JP2016103137A (ja) | ユーザインタフェース装置、画像処理装置及び制御用プログラム | |
JP2017117373A (ja) | 操作装置とその制御方法、及びプログラム | |
JP6685742B2 (ja) | 操作装置、移動装置、およびその制御システム | |
JP6746419B2 (ja) | 情報処理装置、及びその制御方法ならびにコンピュータプログラム | |
JPWO2018150569A1 (ja) | ジェスチャー認識装置、ジェスチャー認識方法、ジェスチャー認識装置を備えたプロジェクタおよび映像信号供給装置 | |
JP2018112894A (ja) | システムおよび制御方法 | |
JP2015198406A (ja) | 画像読取装置、方法およびプログラム | |
JP2018173907A (ja) | 情報処理装置、および情報処理装置の制御方法、プログラム | |
JP2017162126A (ja) | 入力システム、入力方法、制御用プログラム、及び記憶媒体 | |
JP6643825B2 (ja) | 装置及び方法 | |
JP6618301B2 (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP2018063555A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP2017022590A (ja) | 画像処理装置、画像処理装置の制御方法、及びプログラム | |
JP2017117372A (ja) | 操作装置とその制御方法、及びプログラム | |
JP2005190283A (ja) | 情報入力装置 | |
JP2018116360A (ja) | 手入力装置、手入力装置の制御方法 | |
JP2018006803A (ja) | 撮像装置、撮像装置の制御方法及びプログラム |