【解決手段】タッチスクリーンはタッチ面11aに対する指の接触領域から検出座標107を生成する。ユーザはタッチ操作のときに爪151の表面に存在する視線ターゲット155をターゲット座標105に位置付けようとするためオフセットが生じる。タッチ操作をしている指を撮影した画像からピッチ角β、ロール角γ、爪の長さs、指の高さh1などを計算してオフセットΔx、Δyを計算する。オフセットで検出座標を補正してターゲット座標を出力する。
前記補正量を計算するステップが、前記ターゲット座標を指の所定の位置に想定した視線ターゲットの真下に設定するステップを含む請求項1に記載のコンピュータ・プログラム。
前記補正量を計算するステップが、前記検出座標を前記撮影画像が含む指の特徴的部位の真下に想定するステップ含む請求項2または請求項3に記載のコンピュータ・プログラム。
前記補正量を計算するステップが、前記撮影画像から特定した指の軸と前記タッチ面が形成するピッチ角を計算するステップを含む請求項4に記載のコンピュータ・プログラム。
前記補正量を計算するステップが、前記カメラと前記検出座標の距離を計算して前記撮影画像から特定した爪の長さを計算するステップを含む請求項5に記載のコンピュータ・プログラム。
前記補正量を計算するステップが、前記カメラと前記検出座標の距離を計算して前記撮影画像から特定した前記タッチ面に対する指の高さを計算するステップを含む請求項7に記載のコンピュータ・プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0008】
非特許文献1が指摘するように、カメラを利用した入力デバイスで従来の静電容量型のタッチスクリーンよりも精度の高い操作をすることができるとしても、携帯式電子機器に指を真上から撮影するようなカメラを搭載することは困難である。特許文献1のように画像だけで座標を検出する場合は、2台のカメラを搭載する必要がある。特許文献2の方法では、指の接近前にアイコンが表示されないためアイコンが多くなると指を接近させたときに目的とするアイコンが表示されないことも予想され、さらに常時画面にアイコンを表示しておきたい場合には採用できない。
【0009】
タブレット端末およびスマートフォンには、ユーザの顔および風景を切り換えて撮影することができる1台のカメラを標準的に搭載する。また近年のノートブック型パーソナル・コンピュータ(ノートPC)では、ユーザの顔を撮影することができる1台のカメラとタッチスクリーンを搭載するものがある。そして、このような携帯式電子機器においてコスト上昇を抑制しながらタッチスクリーンの操作精度を向上することが求められている。
【0010】
そこで本発明の目的は、電子機器が実装するタッチスクリーンの操作精度を向上する方法を提供することにある。さらに本発明の目的は、電子機器が実装するタッチスクリーンのオブジェクトを小さくする方法を提供することにある。さらに本発明の目的は、そのような方法を採用した電子機器およびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の1つの態様では、電子機器がタッチ面に対する指の接触領域から座標を検出するタッチスクリーンを搭載する。電子機器がタッチスクリーンに対するタッチ操作に応じて検出座標を生成する。電子機器はカメラでタッチ操作をしている指を撮影する。つづいて電子機器は指の撮影画像から特定した指の姿勢に基づいて補正量を計算し、検出座標と補正量から計算したターゲット座標を出力する。
【0012】
その結果、タッチ操作をする指の姿勢に起因して発生したオフセットを補正して操作精度を向上することができる。また、タッチ操作の対象となるオブジェクトを小さくすることができる。電子機器は、スマートフォン、タブレット端末、またはノートPCのいずれかとすることができる。タッチスクリーンは静電容量式、FTIR(Frustrated Total Internal Reflection)式、または抵抗式のいずれかとすることができる。カメラを広角レンズ・カメラまたは魚眼レンズ・カメラとすれば、顔と指の両方の撮影に利用でき、かつ、タッチスクリーンの縁枠がタッチ面と同じ平面にあってもタッチ操作する指を撮影することができる。
【0013】
補正量の計算においては、ターゲット座標を指の所定の位置に想定した視線ターゲットの真下に設定することができる。このとき視線ターゲットをタッチ面に対する指の投影が形成する指の幅の中心線上でかつ指の底部より指先側に設定することができる。さらに補正量の計算においては、検出座標を撮影画像が含む指の特徴的部位の真下に想定することができる。このとき指の特徴的部位を爪の底部に設けることができる。補正量の計算においては、撮影画像から特定した指の軸とタッチ面が形成するピッチ角を計算することができる。このとき、カメラと検出座標の距離を計算して撮影画像から特定した爪の長さを計算することができる。カメラと検出座標の距離を計算することでカメラは1台にすることができる。
【0014】
また、補正量の計算においては、撮影画像から特定した指の軸の回りのロール角を計算することができる。このとき、カメラと検出座標の距離を計算して、撮影画像から特定したタッチ面に対する指の高さを計算することができる。上記の構成においてピッチ方向の傾斜とロール方向の回転は同時に発生していてもよい。本発明はスマートフォンまたはタブレット端末のような小型の電子機器に搭載するタッチスクリーンに適用すると特に有効である。
【0015】
本発明の他の態様は、電子機器にユーザが入力を意図するターゲット座標とタッチスクリーンが検出する検出座標の差に相当するオフセットをOFSとし、指の姿勢に対応する変数をuとする関数をf(u)とし、係数をrとした式(a)を用意する。
OFS=r×f(u) (a)
【0016】
つづいてタッチスクリーンが検出座標を生成し、カメラでタッチ操作をしている指を撮影する。つづいて指の撮影画像から特定した指の姿勢に基づいて計算した変数uの値を式(a)に代入してオフセット値を計算し、検出座標とオフセット値から計算したターゲット座標を出力する。係数rは、あらかじめ複数の被験者に平均的に適用できる値を登録しておいてもよいし、個別のユーザに適用できる値を登録しておいてもよい。
【0017】
変数uをピッチ角βとし、ピッチ方向のオフセットをΔyとし、係数rを係数pとしたときに式(a)は、
Δy=p×cosβ (b)
とすることができる。また、変数uをロール角γとしピッチ方向のオフセットをΔxとし、係数rを係数qとしたときに式(a)は、
Δx=q×tanγ (c)
とすることができる。
【0018】
係数rは、タッチスクリーンにターゲット・オブジェクトを表示し、ターゲット・オブジェクトに対するタッチ操作に応答して検出した検出座標とターゲット・オブジェクトの座標の差からオフセット値を計算し、撮影画像から変数uの値を計算し、オフセット値と変数uの値を式(a)に代入して計算することができる。よって、指の形状や視線ターゲットの位置がユーザごとに異なっていても、ユーザごとに係数rを計算することで精度の高い補正をすることができる。
【発明の効果】
【0019】
本発明により、電子機器が実装するタッチスクリーンの操作精度を向上する方法を提供することができた。さらに本発明により、電子機器が実装するタッチスクリーンのオブジェクトを小さくする方法を提供することができた。さらに本発明により、そのような方法を採用した電子機器およびコンピュータ・プログラムを提供することにある。
【発明を実施するための形態】
【0021】
図1は、本実施の形態にかかる携帯式電子機器の一例であるスマートフォン10およびタブレット端末20のタッチスクリーン11、21を指で操作するときの様子を説明する図である。スマートフォン10およびタブレット端末20は、タッチスクリーン11、21の周囲を囲む縁枠15、25にカメラ・モジュール13、23を搭載している。スマートフォン10には1本の指でタッチ操作をするシングルタッチ操作の様子を例示し、タブレット端末20には複数の指でタッチ操作をするマルチタッチ操作の様子を例示している。タッチ操作をするタッチスクリーン11、21の表面をタッチ面11a、21aという。
【0022】
図2は、タッチ面11aに対するタッチ操作に構造的なオフセットが発生する様子を説明するための図である。ユーザはタッチスクリーン11に表示されている矩形状のアイコン111に対して指150でタッチ操作をする。ユーザは、タッチスクリーン11が指150とタッチ面が接触する接触領域109の中心で座標を検出することを知っているため、アイコン111の中心に接触領域109の中心が位置するようにタッチ操作をする。ここでアイコン111の中心部はユーザが指を位置付ける際の目標となる座標であり、これをターゲット座標105ということにする。
【0023】
しかし、日常的なタッチ操作の経験から、アイコン111の面積が小さいときに、アイコン111が選択されない場合があることが判っている。非特許文献1の研究では、このときユーザは暗黙のうちに爪151の表面の中央部をターゲット座標105に位置付けていると指摘している。ユーザがターゲット座標105に指を位置付ける際に意識しないで目印にしていると想定した爪151または皮膚の表面の所定の位置を視線ターゲット155ということにする。このときターゲット座標105は視線ターゲット155からタッチ面に下ろした垂線上に存在すると想定する。
【0024】
ただし本発明は、視線ターゲット155が爪151の中心に存在すると想定する場合だけでなく、視線ターゲット155の位置に個人差がある場合でも補正することができる。ここで、タッチスクリーン11が検出する座標を検出座標107ということにする。検出座標107は、タッチスクリーン11の原理として接触領域109の幾何学的な重心または中心であるため、検出座標107とターゲット座標105の間には指の形状および姿勢に起因してオフセットOFSが発生する。
【0025】
オフセットOFSがアイコン111のサイズに対して大きい場合は、アイコン111に対するタッチ操作は失敗するか隣接するオブジェクトに誤って行うことになる。視線ターゲット155はユーザの意識の中に潜む存在であるが、検出座標107からシフトした位置にターゲット座標105が発生する原因を作っており、その位置を想定することでオフセットOFSを計算するという側面において本実施の形態の原理を構成する。
【0026】
図3、
図4は、カメラ・モジュール13が撮影した画像のデータ(画像データ)を使ってタッチスクリーン11が検出した座標を補正する方法を説明するための図である。
図3では矩形状のタッチスクリーン11の短辺と長辺に沿ってX−Y直交座標を定義している。タッチスクリーン11は、指150の接触領域109から計算した検出座標107をシステムにX−Y直交座標で出力する。検出座標107は、カメラ・モジュール13から距離dの位置に存在する。距離dは後に説明するように、1台のカメラ・モジュール13が撮影した指の画像データから爪の長さs、爪の幅nおよび指の高さh1などを計算するために利用する。
【0027】
図3では、指150の長さ方向にy軸を設定して指のx−y直交座標を定義している。指のy軸とタッチスクリーン11のY軸が作る角度をヨー角αという。
図4は、タッチ操作に関連する指150の範囲として、指先から第1関節付近までを示している。
図4において、指の断面を楕円形とみなしたときに、その中心を指150の長さ方向(y軸方向)に通過するラインを指の軸160ということにする。
【0028】
図4(A)、
図4(C)は指の軸160がタッチ面11aと平行になるようにタッチ面11a上に指が置かれた状態を真上から視た平面図である。
図4(A)は爪151の正面を示し、
図4(C)は指150が指の軸を160中心にして右方向(ロール方向)にわずかに回転した様子を示している。
図4(A)において、タッチ面11aに対する投影において、爪の底部157を通過してタッチ面11aに平行なライン154と皮膚の両側の表面がそれぞれ交差する位置が形成する長さを指の幅w1と定義する。
【0029】
タッチ面11aに対する投影にいて、指の軸160に垂直な方向の爪151の長さを爪の幅nと定義する。爪の底部157における指の幅w1の中心を指の幅の中心162といい、爪の幅nの中心を爪の幅の中心168と定義する。タッチ面11aに対する投影において指の幅の中心162を通る線と指の軸160は一致するとみなし、指の底部157において指の幅の中心162と爪の幅の中心168は一致するとみなす。
【0030】
タッチ面11aに対する投影において、爪の底部157を通過してタッチ面11aに平行なライン154から指150の皮膚の先端または爪151の先端までの指の軸160上での長さを爪の長さsとする。一例としてタッチ面11aに対する投影において、指の軸160と爪の長さの中心線152が交差する位置に対応する爪151の表面を視線ターゲット155と想定する。タッチ面11aに対する投影において、指の幅の中心162を通り指の軸160に平行にy軸を定義し、指の幅の中心162を通ってライン154に平行にx軸を定義する。x−y直交座標はタッチ面11aに平行になる。
【0031】
図4(C)では、タッチ面11aに対する投影において、爪の底部157を通過してタッチ面11aに平行なライン154と皮膚の両端の表面がそれぞれ交差する位置が形成する長さを指の幅w2と定義する。指の幅w1、w2はいずれもタッチ面11aに対する皮膚の投影のなかで爪の底部157を通過するライン154が形成する幅に相当する。指の形状から指の幅w1は、指の幅w2の最大値に相当する。爪の底部157を通過するライン154における指の幅w2の中心が位置する皮膚または爪の表面を指の幅の中心164ということにする。
【0032】
本実施の形態における補正量の計算においては、ロール角γの大きさにかかわらず指150がロール方向に回転したときに指の幅w2を適用する。
図4(A)に対応させてタッチ面11aに対する投影において指の軸160と爪の長さの中心線152が交差する位置に対応する爪151または皮膚の表面を、視線ターゲット155と想定する。タッチ面11aに対する投影において、指の幅の中心164を通り指の軸160に平行にy軸を定義し、指の幅の中心164を通りライン154に平行にx軸を定義する。この場合もx−y直交座標はタッチ面11aに平行になる。
【0033】
図4(B)は、ロール方向に回転していない指150をx軸方向から視た側面図である。指の幅の中心162を通過して指の軸160に平行に爪151の表面を沿うライン156はタッチ面11aに対してピッチ方向に傾斜している。ライン156とタッチ面11aが形成する角度をピッチ角βという。なお、ライン156と指の軸160は平行として扱うことができるため、ピッチ角βをタッチ面11aと指の軸160との間の角度で定義することもできる。さらにピッチ角βは、タッチ面11aとそれに対向する指150の裏側の皮膚との間の角度で定義してもよい。
【0034】
ここで
図4(B)において、視線ターゲット155は
図4(A)と同様に、タッチ面11aに対する投影において指の軸160と爪の長さの中心線152が交差する位置に対応する爪151の表面に想定する。ただし、視線ターゲット155は、ライン156上で指の底部157より先端側の爪151の表面に想定してもよい。また、指の幅の中心162からタッチ面11aに下ろした垂線上に検出座標107が存在すると想定する。このとき、視線ターゲット155の真下にあるターゲット座標105と、想定した検出座標107の間にはy軸方向のオフセットΔyが発生している。オフセットΔyは、ピッチ角βと爪の長さsから、式(1)で計算することができる。
Δy=(s/2)×cosβ (1)
【0035】
図4(D)は、
図4(C)のx軸を含みタッチ面11aに垂直な平面で指150を切断したときの断面を指先から視た断面図である。このとき、爪の中心168は、
図4(A)のタッチ面11aに対する鉛直方向からロール角γだけ回転している。このとき指150は断面が完全な円形ではないため、検出座標107がターゲット座標105からx軸方向にシフトする。
図4(B)と同様に視線ターゲット155の真下にターゲット座標105を設定し、ロール角γだけ回転した位置での爪の幅の中心168の真下に検出座標107を想定する。ただし、視線ターゲット155は、タッチ面11aに対する投影において、指の幅の中心164を通過しかつ指の底部157より先端側の爪151の表面または皮膚に想定してもよい。このとき検出座標107とターゲット座標105の間にはx軸方向のオフセットΔxが発生している。
【0036】
オフセットΔxは、ロール角γとロール状態でのタッチ面11aに対する指の高さh1から式(2)で計算することができる。
Δx=(h1/2)×tanγ (2)
オフセットΔxの方向はロール方向に一致するが、指の可動範囲の特質から通常はユーザからみて右手の指は右回転で左手の指は左回転になる。
【0037】
指150がピッチ方向に傾斜し、かつ、ロール方向に回転しているときは、タッチ面11aに対する投影において、指の軸160と爪の長さの中心線152が交差する位置に対応する爪151または皮膚の表面に視線ターゲット155を設定し、画像から抽出したピッチ角βとロール角γからオフセットΔy、Δxをそれぞれ計算することができる。オフセットΔx、Δyは、x−y直交座標上の値であるが、タッチスクリーン11はX−Y直交座標上の値を出力する必要がある。
【0038】
指150のy軸がタッチスクリーン11のY軸に対してヨー角αだけ傾斜しているときは、
図5に示すように式(3)、(4)でオフセットΔx、ΔyをX−Y直交座標上のターゲット座標(X
1,Y
1)に投影して検出座標(X
0,Y
0)を補正することができる。
X
1=X
0−Δx×cosα (3)
Y
1=Y
0+Δy×cosα (4)
【0039】
図6は、スマートフォン10のハードウェアの構成を説明するための図である。スマートフォン10は、CPU51、システム・メモリ53、I/Oインターフェース55、SSD57、タッチスクリーン11、無線モジュール59およびカメラ・モジュール13などの要素を含む。スマートフォン10を構成する多くのハードウェアは周知であるため、本発明の理解に必要な範囲で説明する。SSD57は、座標補正システム200(
図7)の主要な要素を構成するソフトウェアを格納する。
【0040】
タッチスクリーン11は、液晶や有機ELなどのディスプレイと透明なタッチパネルを積層した構造で、ディスプレイに表示したオブジェクトに対して指でタッチ操作をするとタッチパネルが指の座標を検出して検出座標107を出力する。本発明は、静電容量型、FTIR型または抵抗膜型といったような、指150が接触した接触領域109の中心または重心の座標を出力するタイプのタッチスクリーンに適用することができる。このようなタイプのタッチパネルを含むタッチスクリーンは、
図2で説明したようにターゲット座標105と検出座標107との間に構造的なオフセットを発生させる。
【0041】
カメラ・モジュール13は、CMOSまたはCCDなどのイメージ・センサおよびイメージ・シグナル・プロセッサなどを含んでいる。カメラ・モジュール13は、魚眼レンズまたは超広角レンズを搭載しており、水平方向が360度で垂直方向が180度の半球状の被写体を撮影することができる。本実施の形態におけるカメラ・モジュール13の台数は1台でよい。したがって、カメラ・モジュール13は、ユーザの顔や風景を撮影するためにスマートフォン10が標準的に搭載するカメラ・モジュールと共用することができる。
【0042】
スマートフォン10は縁枠15とタッチ面11aが同一平面上に存在するいわゆるフルフラット・ディスプレイ方式を採用している。多くのタブレット端末もフルフラット・ディスプレイ方式を採用する。カメラ・モジュール13は魚眼レンズまたは超広角レンズを搭載しているためフルフラット・ディスプレイの縁枠15に実装してもタッチ操作をするユーザの顔と指を同時に撮影することができる。縁枠にレンズの軸がタッチ操作をする指に向くようにカメラ・モジュールを実装できる場合は、標準レンズ・カメラまたは広角レンズ・カメラを採用することもできる。
【0043】
図7は座標補正システム200の構成を説明するための機能ブロック図である。画像データ取得部201、補正量演算部203、登録部204、座標取得部205、アプリケーション実行部207および画像データ出力部209は、
図6に示したCPU51、システム・メモリ53などのハードウェアとSSD57が格納するソフトウェアの協働により構成している。カメラ・モジュール13は動作を開始すると、タッチ操作をしている指150およびユーザの顔の画像を含んだ画像データを一例として30fpsのフレーム・レートで画像データ取得部201に転送する。タッチスクリーン13は、所定のサンプリング周期でタッチ面11aに指150が接触している間、接触領域109から検出座標107を生成して座標取得部205に出力する。
【0044】
画像データ取得部201は、座標取得部205からタッチスクリーン11が生成した検出座標107を受け取ったときにカメラ・モジュール13に画像データの転送開始の指示をする。また、検出座標107を所定の時間だけ受け取らないときにカメラ・モジュール13に画像データの転送終了の指示をする。画像データ取得部201は、カメラ・モジュール13から受け取った画像データと座標取得部205から受け取った検出座標107を組にした補正データを補正量演算部203に送る。
【0045】
補正量演算部203は、オブジェクト認識機能および必要に応じて顔認識機能を備えている。補正量演算部203は、受け取った補正データから
図3に示した距離dを計算する。補正量演算部203は距離dを計算し、オブジェクト認識機能を使って、指150のヨー角α、ピッチ角β、ロール角γ、爪の長さs、爪の幅n、タッチ操作をしたときの指の幅w1、w2、および指の高さh1などを計算する。補正量演算部203は、ユーザの顔を認識して現在タッチ操作をしているユーザの識別子および指の識別子とともに、タッチ操作をしている指の姿勢で変化しない爪の長さs、爪の幅nを登録部204に登録する。
【0046】
補正量演算部203は、新しいユーザがタッチ操作をするたびに爪の長さs、爪の幅nを登録部204に登録する。補正量演算部203は、式(1)〜(4)を使ってオフセットΔx、Δyを計算し、さらにターゲット座標105を計算して座標取得部205が画像データ取得部201に検出座標107を送る際に付加したタイムスタンプとともに座標取得部205に送る。
【0047】
他の例では、補正量演算部203は後に説明する式(5)、(6)を保有し、アプリケーション実行部207からの指示を受けて補正に必要なデータの登録処理をする。座標取得部205は、タッチスクリーン11から所定のサンプリング周期で生成された検出座標107を受け取るたびにタイムスタンプを付加して画像データ取得部201に送る。タイムスタンプはシステムが保持している時刻情報で、座標補正システム200の各要素が共有できるようになっている。
【0048】
座標取得部205は、補正量演算部203から検出座標107を関連付けたタイムスタンプに対応するターゲット座標105を受け取ったときは、当該ターゲット座標105をアプリケーション実行部207に送る。座標取得部205は、補正量演算部203から検出座標107を関連付けたタイムスタンプに対応するターゲット座標105を受け取らないときは当該タイムスタンプを関連付けた検出座標107をアプリケーション実行部207に送る。
【0049】
アプリケーション実行部207は、タッチスクリーン11にソフトウェア・キーボードを表示する文書入力プログラム、ハイパーリンクが埋め込まれた画像を表示するWebブラウザ、ホーム画面にアイコンを表示するOSのインターフェース・プログラムなどを含む。アプリケーション実行部207はさらに、補正量演算部203を通じて登録部204に補正に必要なデータの登録をする登録プログラムを含む。
【0050】
アプリケーション実行部207のプログラムは、それぞれ自らがタッチスクリーン11に表示するオブジェクトの座標を認識している。アプリケーション実行部207は、画像データ出力部209にタッチスクリーン11に表示するための画像データを出力する。アプリケーション実行部207は、自らが表示したタッチスクリーン11のオブジェクトに対して行われたタッチ操作に対応する検出座標107またはターゲット座標105を座標取得部205から受け取ってそれに応じた動作をする。画像データ出力部209は、アプリケーション実行部207から受け取った画像データを表示形式のデータに変換してタッチスクリーン11に出力する。
【0051】
つぎに、座標補正システム200の動作を
図8のフローチャートを参照して説明する。ブロック301では、アプリケーション実行部207がタッチスクリーン11にタッチ操作の対象となるオブジェクトを含む画像を表示している。アプリケーション実行部207は事前に爪151の表面をカメラ・モジュール13に向けるようにユーザに促して爪151を正面から撮影し、高い精度で測定した爪の長さsおよび爪の幅nを登録部204に登録しておいてもよい。
【0052】
ブロック303で指150がタッチ面11aに接触してタッチ操作が開始される。タッチ操作は、タッチした位置で指150をリリースするタップ操作と、タッチした状態を維持しながら指を移動させるスライド操作を含む。座標補正システム200はスライド操作のときは、その軌跡に沿ってタッチスクリーン11が生成した検出座標107を補正することができる。指150の接触を検出したタッチスクリーン11はブロック305で、所定のサンプリング周期で検出座標107の出力を開始する。検出座標107を受け取るたびに座標取得部205は、受け取った検出座標107にタイムスタンプを付加して画像データ取得部201に送る。検出座標107を受け取った画像データ取得部201はブロック307でカメラ・モジュール13に画像データの転送を指示する。
【0053】
指示を受けたカメラ・モジュール13は所定のフレーム・レートでユーザの顔と指150を撮影した画像データの転送を開始する。カメラ・モジュール13のフレーム・レートとタッチスクリーン11の検出座標107の転送周期は同期している必要はないが、画像データ取得部201はブロック309で、検出座標107のタイムスタンプに最も近い時刻で取得した画像データと当該検出座標107を組にした補正データをタイムスタンプとともに補正量演算部203に送る。補正データを受け取った補正量演算部203はブロック311で、顔認識機能を使って現在タッチ操作をしているユーザの指150の爪の長さsおよび爪の幅nなどの爪のサイズを登録部204が登録しているか否かを判断する。スマートフォン10が同一のユーザだけで使用する場合はこの手順は省略してもよい。
【0054】
登録しているときはブロック317に移行し、登録していないときはブロック313に移行する。補正量演算部203はブロック313で検出座標107から計算した距離dとオブジェクト認識機能を使って、画像データから爪のサイズの計算が可能か否かを判断する。補正量演算部203はピッチ角βが小さい状態の指150をy軸方向から撮影している画像からは、爪の長さsを正確に計算することができない。また、x軸方向から撮影している画像からは、爪の幅nを正確に計算することができない。
【0055】
爪のサイズを計算できない場合はブロック351に移行する。座標取得部205はブロック351で、補正量演算部203から検出座標107に関連付けたタイムスタンプに対応するターゲット座標105を受け取らないときはブロック351で検出座標107をアプリケーション実行部207に送る。この場合は、本発明の効果が得られない状態でタッチ操作が処理されるが、補正がされないことによる操作の中断は発生しない。爪のサイズの計算ができる場合は、ブロック315で補正量演算部203は登録部204に計算した爪のサイズを登録してブロック317に移行する。
【0056】
補正量演算部203はブロック317でオブジェクト認識機能を使って、画像データからピッチ角βの計算が可能か否かを判断する。カメラ・モジュール13がy軸方向から指150を撮影している場合はピッチ角βを正確に計算することができない場合がある。所定の精度でピッチ角βの計算が可能な場合はブロック319に移行し、計算できない場合はブロック353に移行する。座標取得部205はブロック353で、所定の検出座標107に関連付けたタイムスタンプに対応するターゲット座標105を受け取らないときは検出座標107をアプリケーション実行部207に送る
【0057】
補正量演算部203はブロック319でオブジェクト認識機能を使って、画像データからロール角γの計算が可能か否かを判断する。カメラ・モジュール13がx軸方向から指150を撮影している場合はロール角γを正確に計算することができない場合がある。所定の精度でロール角γの計算が可能な場合はブロック321に移行し、計算できない場合はブロック353に移行する。
【0058】
補正量演算部203はブロック321でオブジェクト認識機能を使って指の高さh1を計算する。補正量演算部203はブロック323で式(1)、(2)に爪の長さs、指の高さh1、ピッチ角β、およびロール角γを代入してオフセットΔx、Δyを計算する。補正量演算部203はさらに、画像データから計算したヨー角αを式(3)、(4)に代入してターゲット座標105を計算する。
【0059】
補正量演算部203はブロック325でタイムスタンプを付加したターゲット座標105を座標取得部205に送る。座標取得部205は、すでに取得していた同一のタイムスタンプの検出座標107に代えて、ターゲット座標105をアプリケーション実行部207に送る。スライド操作の場合はブロック327からブロック305に戻ってタッチスクリーン13が検出座標107を出力する間、ブロック305からの手順を繰り返す。
図1(B)に示したようにマルチタッチ操作を行う場合は、上記の手順で各指についてターゲット座標105を計算することができる。
【0060】
つぎに座標補正システム200が検出座標107を補正する他の方法を説明する。
図8の手順では、視線ターゲット155を爪の中心に設定し、さらに検出座標107の位置を
図4(B)、(C)に示すように指の特徴部に関係づけることで多数のユーザに平均的に満足のいくターゲット座標105を生成することができる。しかし、ユーザの指の形状による検出座標107と指の特徴部との関係、押圧力の強さによる指の変形の度合い、および視線ターゲット155の位置などはユーザごとに異なるため必ずしも満足する結果を得られないユーザまたはより精度の高いターゲット座標105を求めるユーザも存在する。
【0061】
式(1)、(2)で計算したオフセットΔy、Δxに誤差が生じる原因は、画像データから計算したピッチ角βおよびロール角γの精度に加えて、爪の長さsおよび指の高さh1の計算が当該ユーザにとって適切でないことが挙げられる。
図9は、画像データから爪の長さsおよび指の高さh1を計算したり、視線ターゲット155の位置および検出座標107と指の特徴的部位の関係を想定したりしないで補正する座標補正システム200の動作を説明するフローチャートである。
【0062】
ここでは、アプリケーション実行部207を構成する登録プログラムが、式(5)、式(6)における係数p、qを、ユーザが行うキャリブレーションのためのタッチ操作から計算した値で推定する。
Δy=p×cosβ (5)
Δx=q×tanγ (6)
【0063】
ブロック401でアプリケーション実行部207の登録プログラムが動作して補正量演算部203と座標取得部205に登録動作をするように指示する。アプリケーション実行部207はブロック403で、タッチスクリーン11の所定のターゲット座標105に
図10に示すクロス・ライン501aを表示し、さらに所定の指でクロス・ライン501aをターゲットとするタッチ操作をすることを示すプロンプトを表示する。
【0064】
タッチ操作のときの指の押圧力により係数p、qは変化するためプロンプトには、ユーザが通常操作をするときの力でタッチ操作をすることを促すメッセージを含むようにすることが望ましい。ブロック405でユーザがクロス・ライン501aをターゲットとするタッチ操作をする。このときユーザは
図4に示した視線ターゲット155を目印にしないかもしれないが、そのようなユーザにとって
図9の手順は有効である。また、指の特徴的な部位と検出座標107の関係が、
図4(B)、(D)で示した関係とは異なるユーザにとっても
図9の手順は有効である。
【0065】
ブロック407でアプリケーション実行部207は、クロス・ライン501aの座標であるターゲット座標105を補正量演算部203に転送する。ブロック409でタッチスクリーン11がクロス・ライン501aをターゲットとするタッチ操作に応じて検出座標107を座標取得部205に送る。座標取得部205が検出座標107にタイムスタンプを付加して画像データ取得部201に送ると、カメラ・モジュール13が画像データの転送を開始する。
【0066】
ブロック411で補正量演算部203は、画像データからヨー角α、ピッチ角β、ロール角γを計算し、検出座標107とターゲット座標105からオフセットΔx、Δyを計算する。ブロック413で補正量演算部203はピッチ角β、ロール角γ、オフセットΔx、Δyを式(5)、(6)に代入して係数p、qを計算する。つづいて補正量演算部203は指の識別子とともに係数p、qを登録部204に登録する。ブロック415で補正量演算部203から登録の終了通知を受け取ったアプリケーション実行部207は、ブロック403に戻ってクロス・ライン501bを表示して同じ手順を繰り返す。
【0067】
すべてのクロス・ライン501a〜501fに対する登録が終了すると、ブロック417でアプリケーション実行部207はブロック403に戻って次の指を示すプロンプトを表示して同じ手順を繰り返す。すべての指の登録が終了するとアプリケーション実行部207はブロック419で、指ごとの6個の係数p、qの平均値または中央値を計算してユーザの顔を示す識別子および指の識別子とともに登録部204に登録する。ブロック421で登録処理が終了すると、補正量演算部203はそれ以降の各検出座標107について、画像データから計算した指の姿勢を示すピッチ角β、ロール角γと、登録部204に登録した係数p、qの平均値または中央値を式(5)、(6)に代入して、オフセットΔx、Δyを計算することができる。
【0068】
補正量演算部203が
図9の手順で係数p、qを登録して式(5)、(6)を使用する場合は、
図8のブロック311〜315、321の手順を省略することができる。式(5)、(6)では、視線ターゲット155の位置の想定および検出座標107と指の特徴的部位との関係を想定する必要がない。式(5)、(6)では式(1)、(2)を使うときに想定した2つの関係は表面に出てこないが、
図9の登録手順において計算した係数p、qがこれらの想定を含んでいる。
【0069】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。