説明

オブジェクト操作装置、及び、デジタル画像フレームデータからマーカを特定する方法

【課題】マウス以外の指や口によるコンピュータへの入力をサポートする入力装置を提供する。
【解決手段】本発明に係るオブジェクト操作装置は、撮像した操作体に基づき画面中のオブジェクトを操作するオブジェクト操作装置であって、演算装置と、上記演算装置と接続する表示装置と、上記演算装置と接続する撮像装置とを備え、上記撮像装置は所定の操作体を撮像し、上記演算装置は撮像された上記操作体の画像をマーカとして上記表示装置に表示し、上記マーカの動きにより上記表示装置の画面におけるオブジェクトが操作されることを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータにおけるオブジェクト操作装置、及び、デジタル画像フレームデータからマーカを特定する方法に関する。
【背景技術】
【0002】
コンピュータのGUIをサポートする入力デバイスとして、現在、マウスが広く用いられている。しかしながら、マウスは例えば手や腕に障害を持つ人にとって、必ずしも有用な入力デバイスとは言えない。
【0003】
また、コンピュータ画像上で、マウスは必ず一点に関する入力動作を行う。しかしながら、コンピュータ画像に対して複数の点を介して同時に入力動作を行う入力デバイスは、現在見当たらない。即ち、コンピュータ操作者が複数の指で画面上の対象物にアプローチするような動作をサポートする入力デバイスは殆ど開発されていないといえる。
【0004】
なお、本願の先行技術として以下のようなものが挙げられるが、いずれも、コンピュータ操作者が複数の指で画面上の対象物にアプローチするような動作をサポートする入力デバイスを開示するものではない。
【特許文献1】特開2006−277666号公報
【特許文献2】特開2005−301693号公報
【特許文献3】特開2004−078488号公報
【特許文献4】特開2004−038429号公報
【特許文献5】特開2000−132340号公報
【特許文献6】特開2000−105671号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、マウス以外の指や口によるコンピュータへの入力をサポートする入力装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は上記の目的を達成するためになされたものである。本発明に係るオブジェクト操作装置は、
撮像した操作体に基づき画面中のオブジェクトを操作するオブジェクト操作装置であって、
演算装置と、
上記演算装置と接続する表示装置と、
上記演算装置と接続する撮像装置と
を備え、
上記撮像装置は所定の操作体を撮像し、上記演算装置は撮像された上記操作体の画像をマーカとして上記表示装置に表示し、
上記マーカの動きにより上記表示装置の画面におけるオブジェクトが操作されることを特徴とする。
【0007】
また、本発明に係るデジタル画像フレームデータからマーカを特定する方法は、
デジタル画像フレームデータにて、所定の色に着目して画素単位でビットマップB(x,y)を作成する工程と、
各々のy(縦軸)値におけるビットの存在を、始点(x)及び幅(w)による線分要素(x,y,w)で表す工程と、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とする工程と、
物体要素のうちからノイズを除去する工程と
を含む。
【発明の効果】
【0008】
本発明を利用することにより、表示画面に対する指や口などの相対的な動作によって、直接的にコンピュータへの入力操作を行うことができる。
【発明を実施するための最良の形態】
【0009】
以下、図面を参照して本発明に係る好適な実施形態を説明する。
【0010】
[[オブジェクト操作装置]]
図1は、本発明の実施形態に係るオブジェクト操作装置2の概略の機能を示すブロック図である。図2にも示すように、本発明に係るオブジェクト操作装置2は、表示装置4及び演算装置6を備えるコンピュータ8、該コンピュータ8に接続するデジタル撮像装置(DVカメラ)10、及び、シール12で構成される。演算装置6の各機能部であるマーカ情報取得部14、マーカ作成部16、マーカ表示部18、及び対象オブジェクト操作部20は、CPUが適切なコンピュータプログラムを実行することで実現される。デジタル撮像装置(DVカメラ)10は、コンピュータ8の表示装置4の上端に組み込まれるものであってもよい(図2参照)。
【0011】
デジタル撮像装置(DVカメラ)10は、図3に示すような指先に貼付された操作体としてのシール12、及びその周辺や背景を撮像する。図3では、親指の先端部と人差し指の先端部とにシール12が2枚貼付されているが、その他の指の先端部に付されてもよい。また、指先ではなく、手のひらなどにシール12が付されてもよい。
【0012】
なお、デジタル撮像装置(DVカメラ)10は、ごく短い単位時間(例えば、1/60秒)毎にフレームの形態で画像データを作成する。従って、オブジェクト操作装置2に含まれるマーカ情報取得部14、マーカ作成部16、マーカ表示部18、及び対象オブジェクト操作部20は、フレーム単位で画像データを処理する。
【0013】
シール12は、指先を全部又は一部覆う大きさであればよく、どのような形状であってもよいが円に近い形状であるのが好ましい。更に、シール12表面には所定の色、好ましくは一つの色(例えば、黄色)が付けられている。
【0014】
マーカ情報取得部14は、シール12の画像・位置の情報を含む画像情報をデジタル撮像装置10から取得し、マーカ作成部16に画像データを渡す。これを受けて、マーカ作成部16は、画像データの中から、シールの画像データを特定して抽出しこれをマーカ22とする。ここでマーカ22とは、コンピュータ画面上の対象(オブジェクト)に対して操作を行う手段であり、通常マウス及びその(表示画面上の)ポインタが果たす役割の代わりと成り得る手段である。マーカ22は、コンピュータ8に実装されたソフトウエア上ではオブジェクトの一つとして扱われる。
【0015】
マーカ作成部16は、形状及び大きさの特定された明確なマーカ22を作成することが望ましい。マーカ22の作成の具体例については、後で説明する。
【0016】
マーカ作成部16により作成されるマーカ22は、マーカ表示部18によりコンピュータの表示装置4に表示される。このときマーカ表示部18は、撮像した画像データの鏡像を表示装置4に表示させる。そうすると、図2に示すようなDVカメラ10により撮像されたシール12が、鏡像となってマーカ22として表示される。つまり、図2における親指に貼られたシール12(図では(A)を付している)は、表示画面の左側のマーカとして表示され、人差し指に貼られたシール12(図では(B)を付している)は、表示画面の右側のマーカとして表示される。
【0017】
これらマーカ22が、図2における表示画面上のオブジェクト(図2ではウインドウ24)に作用を及ぼすことにより、表示画面上のウインドウ(オブジェクト)24が操作される。即ち、操作者は、表示画面上のマーカ22を見て確認しつつ、自らの指や手の動きによりウインドウ24を操作することができる。
【0018】
図4は、鏡像たるマーカ22の画像(図4(1))が、ウインドウ24を表示する画面(図4(2))に重ねられて、マーカ22とウインドウ(オブジェクト)24とを表示する画面となる様子を模式的に示している。
【0019】
マーカ22がウインドウ(オブジェクト)24に作用を及ぼすことにより、ウインドウ24を操作する機能は、対象オブジェクト操作部20が行う。例えば、図5(2)に示すように、2つのマーカ22がウインドウ24の右端辺に接してその右側にある場合2つのマーカ22が左に動けば(即ち、シールを貼った操作者の指が左に動けば)右端辺を含むウインドウ24全体が右から左へ動くように、対象オブジェクト操作部20は、ウインドウ24の位置や形状を変化させる制御を行う。
【0020】
[[対象オブジェクト操作部]]
次に、対象オブジェクト操作部20の動作を説明する。対象オブジェクト操作部20の動作に係るコンピュータプログラムでは、
(1)マーカ、
(2)レシーバ、
(3)テンプレート、
(4)オペレーション
が定義されて利用される。なお、図11は、本明細書におけるマーカ、レシーバ、テンプレート及びオペレーションの表記法を示す一覧表である。この表記法はコンピュータプログラムでの表現を基にしている。
【0021】
マーカ22は、コンピュータ画面上の対象(オブジェクト)に対して操作を行う手段であり、形(a)、面積(s)、速度ベクトル(v)、重心(g)などをパラメータとして保持するオブジェクトである。その他のパラメータを含んでもよい。n個のマーカの集合は例えば{Mn}で表現し、n個目のマーカはMnと表現する。n番目のマーカの面積はMn→sと表現し、速度ベクトルのx成分はMn→v.xと表現する。速度ベクトル(v)は、後でも説明するように、直前の一つ又は数枚のフレームと現在のフレームとにおける同一マーカの重心座標の差異から求められる。
【0022】
なお、マーカ作成部16、マーカ表示部18及び表示装置4は、マーカ22を表示するにあたり、マーカの撮像そのものを表示するのではなく、マーカ22の重心を中心とする所定半径の円(例えば、半透明の円)を表示するようにしてもよい。
【0023】
レシーバとは、コンピュータ画面上での操作の対象になるオブジェクトであり、本明細書では具体的な例としてウインドウ24を取り上げる。ウインドウ24は、左下座標(x,y)と大きさ(w,h)を保持するオブジェクトである(wは幅であり、hは高さである)(図4(2)参照)。更にレシーバは、直前フレームで当該レシーバになされた操作(オペレーション)を記録するパラメータ(p)も保持する。例えば、直前フレームで当該レシーバになされた操作が、右から押す操作であったならば、pは、
p=kActionPushFromRight
等の定数となる。このpは、(後で詳述する)ノイズが多い場合などに、発行すべきオペレーションを決定するパラメータとなり得る。例えば、ノイズが多い場合には直前のpと現在のpが一致するときのみ、そのpが示すオペレーションが発行される、というように利用される。
n個のレシーバの集合は{Rn}で表現し、n個目のマーカはRnと表現する。表示画面において、RnはRn+1より必ず手前にある(即ち、RnはRn+1の上に重なっている)ものとする。また、n番目のレシーバの左下x座標はRn→xと表現する。
【0024】
テンプレートとは、コンピュータ画面上での操作のテンプレートであり、特にレシーバを押す、握る、つかむというような操作の、一つ一つの条件を表す。テンプレートは次数dと条件Qを保持し、Tn=(d,Q(r,m))で表現される。ここで、次数(d)とは、レシーバの幾つの辺に関わっているかを表す数であり(下記表1参照)、例えば、一つの辺を外部から押す操作ならば“1”(図5(2)参照)、左右の辺で挟む操作ならば“2”(図5(3)参照)、外側をつかむ操作ならば“3”又は“4”(図5(5)参照)、レシーバの内側をつかむ操作ならば“0”となる(図5(1)参照)。
Q(Rk,{Mn}) は、一つのレシーバRkと、マーカの集合{Mn}とを引数とする関数である。この関数Qは、{Mn}がRkに対するその操作を表している場合には“True”(真)を、表していない場合には“False”(偽)を、返す。
テンプレートは複数設けられ、{Tn}で表現される。また、常に、
Tn→d≦Tn+1→d
が成り立つように、コンパイル時に{Tn}の内容の順番(適用の優先順位)が項数として決定される。表1は、テンプレートの内容である。表の上から下へ{Tn}のn(項数)が順に大きくなる。なお、表1の内容やn(項数)の順序は、一つの例に過ぎないが、単純な動作から複雑な動作へと移行するように並べられている。
【0025】
【表1】

【0026】
オペレーションとは、コンピュータ画面上での操作である。本発明では特に、レシーバを押す、握る、つかむというような操作の一つ一つを表す(下記表2参照)。一つのオペレーション、例えば押すオペレーションには、押すテンプレートがあり、両者は対応している。本発明に係るオペレーションはプログラミングでいうところの関数であり、数列{On}で表される。また、On=(O(r,m))である。例えば、
On→O(Rp,{Mq})
は、マーカの集合{Mq}がn番目のオペレーションOnを引き起こし、そのオペレーションOnを一個のレシーバRpに適用する、という意味である。
【0027】
【表2】

【0028】
オペレーションは、以下のようなものである。
【0029】
まず図5(1)に示すように、複数のシールによる複数のマーカ22をウインドウ24の内側で互いに接近させる場合、ウインドウ24が表示画面の前面にないならばウインドウが前面に移動し(図5(1−2)参照)、ウインドウが表示画面の前面にあるならばウインドウがドラッグされる。
【0030】
次に、図5(2)に示すように、複数のシールによる複数のマーカ22をウインドウ24外側からウインドウ24の一辺に接近させると、ウインドウ24が表示画面の座標軸に平行に移動する(図5(2−2)参照)。
【0031】
次に、図5(3)に示すように、複数のシールによる複数のマーカ22のうち、1個以上ずつのマーカ22をウインドウ24の一組の対辺の夫々の外側から中心に近づけさせると、ウインドウ24が、その一組の対辺の夫々に交差し且つ中心に向かう方向に縮小する(図5(3−2)参照)。
【0032】
次に、図5(4)に示すように、複数のシールによる複数のマーカ22のうち、1個以上ずつのマーカ22をウインドウ24の一組の対辺の夫々の内側から、対辺の夫々に接して広げさせると、ウインドウ24が、その一組の対辺の夫々に交差し且つ中心から遠ざかる方向に広がる(図5(4−2)参照)。
【0033】
次に、図5(5)に示すように、3個以上のシールによる3個以上のマーカ22のうち、1個以上ずつのマーカ22をウインドウ24の3乃至4辺の夫々の外側に接して存在させ且つそれらマーカ22を同じ速度ベクトルで移動させると、ウインドウ24が平行に移動する(図5(5−2)参照)。
【0034】
更に、図5(6)に示すように、3個以上のシールによる3個以上のマーカ22のうち、1個以上ずつのマーカ22をウインドウ24の3乃至4辺の夫々の内側に接して存在させ且つそれらマーカ22を中心から遠ざかる方向へ移動させると、マーカ22の動きに合わせてウインドウ24の幅及び高さが広がる(図5(6−2)参照)。
【0035】
ここで、マーカからウインドウの辺への作用について、図6を用いて説明する。図6(1)の辺ABに対しウインドウの外側からマーカ22が作用する場合を取り上げる。まず、辺ABに関して長方形領域pqrsを設定する。このとき、q、pが辺ABを所定の比率(例えば、1:5:1)で内分し、qr及びpsが所定の長さ(例えば5)となるように、点p、q、r及びsを設ける。次に、マーカ22の重心が、その長方形領域pqrsに包含されるか、が判定される。マーカ22の重心が長方形領域pqrsに包含される場合、マーカ22の速度ベクトルの、マーカ22の重心から辺ABに直交する半直線に関するcosθが求められ、cosθからθが求められる。θが所定の範囲(例えば、−40°以上+40°以下)にあれば、マーカ22が辺ABに外側から作用しているものとする。このとき、マーカ22は、速度ベクトルの辺ABに直交する成分(のみ)、つまり直交するベクトルへの正射影、で辺ABを動かそうとしているとしてもよいし、速度ベクトルそのもので辺ABを動かそうとしているとしてもよい。
【0036】
辺ABに対しウインドウの内側からマーカ22が作用する場合には、辺ABに関して長方形領域tuqpを設定し、マーカ22重心がその長方形領域tuqpに包含されるが判定され、更に、マーカ22の速度ベクトルとマーカ22重心から辺ABに直交する半直線との角θが所定の範囲にあるか、が判定される。同様に、夫々の辺に対する作用では、長方形領域(S11、S12、S21、S22、S31、S32)を設定して、マーカ22の重心の包含が判定されることになる。なお、図6(2)に示すように、ウインドウが近接する場合には、近接する辺の中線(図6(2)では、vw)により、両方の長方形領域が設定されることになる。
【0037】
続いて、マーカ、レシーバ、テンプレート、及びオペレーションの具体的関係を説明する。
【0038】
後で説明するようにマーカの特定がなされると、マーカがレシーバに対してどのような操作(作用)を行うものであるかが特定される。このとき、レシーバとテンプレートとの照合が、行われる。
【0039】
まず、画面上で一番手前のレシーバRについて、テンプレートTからテンプレートTまで、
条件T∀p=[1,n]→Q(R,{Mq})
が、Trueを返すのかFalseを返すのかを調べる。最初にFalseが返されたときのテンプレートの項数を“k”と置くと、オペレーションとして、
k-1→O(R,{Mq})
が実行される。
【0040】
また、テンプレートTとテンプレートTとのいずれについても、
条件Tp=1and2→Q(R1,{Mq})
がFalseを返す場合、対象レシーバはRに移行する。つまり、より単純な動作であり、T以降のテンプレートの基本動作となるTとTのテンプレートの条件Qが偽(False)を返す場合、Rにはマーカは作用しないものとする。
【0041】
上記に続き、レシーバRについて、
条件T→Q(R,{Mq})
が、Trueを返すのかFalseを返すのかを調べるのであるが、テンプレートTのうち、つかむ動作のみが照合の対象となる。表1では、「内側をつかむ」(T)のみが照合の対象となる。けだし、一般的に、人間の行為は最も手前にあるもの(オブジェクト)に集中するからであり、「押す」「挟む」「広げる」「内側から押し広げる」などの操作はR(最も手前のレシーバ)のみが対象とされるべきだからである。また、内側を掴む動作の場合でも、それに関わるマーカがレシーバRの可視領域内(つまり、他のレシーバーで隠れていない部分)に存在することが条件となる。
【0042】
なお、上記「つかむ」動作により、レシーバRは一番手前に移動される。一番手前に移動されれば、このオブジェクトは以降のフレームにおいて、「つかむ」動作以外の動作の対象と成り得る。
【0043】
について、「つかむ」動作のテンプレートの条件QがいずれもFalseであれば、以下順次同様に、レシーバRp(p≧3)についても、
→Q(Rp,{Mq})
が、Trueを返すのかFalseを返すのかを調べるのであるが、テンプレートTのうち、つかむ動作のみが照合の対象となる。
【0044】
対象オブジェクト操作部20は、以上のようにフレーム単位で画像データを処理する。以降のフレームについても、同様に処理を行う。
【0045】
[[マーカ作成部]]
図7は、オブジェクト操作装置2におけるマーカ作成部16の、フレーム単位の画像データからマーカを抽出するまでの処理を表すフローチャート図である。また、図8は、図7に示すフローチャート図における「ノイズを除去する」工程(S08)を更に詳細化したフローチャート図である。図7及び図8を用いてマーカ作成部のマーカ抽出処理を説明する。
【0046】
まず、フレーム単位の画像データに対してメジアンフィルタをかける(工程S02)。メジアンフィルタは従来技術のものでよい。また、この工程S02は省略されてもよい。
【0047】
次に、画像データをビットマップ化する(工程S04)。この工程S04において、まず、画像データを画素単位でRGB値からHSV値に変換しH(Hue;色相)、S(Saturation;彩度)及びV(Value;明度)の値を取得する。予め設定されているマーカ色(例えば、黄色)の所定のHSV値(H,S,V)と、個々の画素(x,y)でのHSV値を、H、S、V夫々について比較し、夫々の差異が夫々の閾値以下の画素のみマーカ候補部分として抜き出して、ビットマップを作成する。
【0048】
次に、マーカ候補ビットマップデータをエレメント指向データ化する(工程S06)。このエレメント指向については、後で説明する。
【0049】
最後に、ノイズの除去を行う(工程S08)。ノイズの除去により、マーカが明確化され且つマーカの速度が把握される。このノイズ除去処理の詳細については、後で説明する。
【0050】
[[エレメント指向]]
エレメント指向とは、n次元の弧状連結の立体を、互いに接している個々の(n−1)次元の立体で表すアルゴリズム、及びその背景にある考え方を言い、本願発明者が案出した考え方である。本明細書では、2次元の弧状連結の平面図形を、互いに接している個々の線分で表す、というエレメント指向の考え方を利用することになる。このエレメント指向は、例えば、多数の平行平面画像で構成される人体のCTスキャンの画像から3次元の立体臓器のモデルを形成する場合や、コンピュータグラフィックスの3次元のモデリングツールを構築する場合などに、利用され得る。
【0051】
なお、本明細書では、プログラミング言語としてC言語の表記を利用するが、他の言語であってもよい。図12は、本明細書におけるエレメント指向表記法を示す一覧表である。この表記法はコンピュータプログラムでの表現を基にしている。
【0052】
まず、ビットマップを用意する。ビットマップでは、任意の点(画素)(x,y)における値がTrueかFalseか(即ち、オン“1”かオフ“0”か)である。(x,y)におけるビットマップの値を、B(x,y)と表すことにする。
【0053】
次に、B(x,y)の値から、線分要素を初期化する。以下のプログラム(表3)に示されるように、B(x,y)を連続的に観察する。まず、y(縦軸)を固定してx(横軸)を連続的に増加させる。B(x,y)==Trueとなる点が(x,y)から(x,y)まで分布しているとすると、そこに線分が成立している。この線分を線分要素とし、始点である(x,y)の座標と横幅x−x=wの値を、(x,y,w)=(x,y,x−x)として保持する。ここで、線分要素が複数存在するものと考え、それら線分要素を、{Ln}という数列で表し、線分要素の始点座標と幅とを、夫々Ln→x、Ln→wというように表すものとする。例えば、図9(2)には、L〜Lが示されていることになる。
【0054】
【表3】

【0055】
{Ln}の全てを頂点とする位相幾何学的な無向グラフG:={g,{Ln},E}を考える。そして、LaとLbとが代数幾何学的に接触していれば、LaとLbとの間に辺が存在すると考える。接触は以下のように判断する。
【0056】
【表4】


(判断基準): La→yとLb→yとの差の絶対値が1のとき、上式のDが正ならば接触していない、Dが0ならば点で接触している、Dが負ならば線分で接触している。La→yとLb→yとの差が0のとき、上式のDが0ならば接触している。それ以外の場合は接触していない。
【0057】
上述に従い、線分要素の接触関係の存否を整理する(即ち、上述に従い必要に応じて辺を設定する)。できあがったグラフGにおいて、弧状連結な部分グラフの集合{G’}を物体要素の集合とし、{G’}の一項目G’→{Ln}要素を物体要素とする。そうすると、個々の物体要素は、一つの弧状連結である形状を表すことになる(図9(2)参照)。
【0058】
物体要素に様々なアルゴリズムを適応して、様々な数値を簡易に表現できる。以下では、面積、重心座標、正円からの変形率を示す。なお、以下のAnは一つの物体要素である。
【0059】
面積は、以下の式で表される。
【数1】

ここで、pはAnを構成する線分要素の数である。上式は、線分要素を総和すれば面積となることを示しているに過ぎない。
【0060】
重心座標は以下の式で表される。
【数2】

【0061】
正円からの変形率は以下の式で表される。
【数3】

【0062】
図9は、従来技術のラベリング処理とエレメント指向との対比を示す概念図である。図9(1)が、ラベリング処理による図形の表現の図であり、図9(2)が、本発明に係るエレメント指向データによる図形の表現の図である。図から明白なように、ラベリング処理に比べてエレメント指向では、データ量が大幅に減少する。
【0063】
[[ノイズの除去]]
図8は、ノイズの除去の工程を詳細化したフローチャート図である。このノイズの除去の工程を、図10に示す画面の物体要素の例を用いて説明する。図10に示す物体要素の例では、3つの黄色いマーカ、黄色い筆記具、黄色い人形、及び、黄色の模様の入ったカーテンが含まれている。
【0064】
最初に、物体要素の面積Mn→sが、非常に大きい値のもの又は非常に小さい値のものを除去する(S0802)。例えば、1画素の物体要素や、画面の略半分を覆うような物体要素を、除去する。図10の例では、筆記具が除去され得る。
【0065】
次に、正円率の低い物体要素を除去する(S0804)。物体要素の正円率は、上記[数3]の5つめの式の右辺第2項で表される。つまり、物体要素の形状が円に近い程、正円率は1に近くなり、従って、変形率c[物体要素における変形率M(n(c))]が小さくなる。そこで、変形率M(n(c))が所定値より大きいものを除去する。この除去により、例えば、とても変わった形状の物体要素や砂嵐状のノイズを示す物体要素が省かれる。図10に示す人形はこの工程で除去される。仮に、工程S0802にて、図10に示す筆記具が除去されなかったとしても、この工程で除去される。
【0066】
次に、数珠状ノイズを除去する(S0806)。数珠状ノイズとは、図10に示す模様付きのカーテンのように、局所的に複数の動きのある物体要素が集中しておりそれら物体要素の面積が比較的等しいもののようなノイズである。数珠状ノイズの除去は、以下のように行う。
【0067】
関数F(x,d)(xは物体要素、dは正の数)が、ある物体要素xから距離がd以内である他の物体要素の集合を返す関数であるとする(但し、2つの物体要素の距離は、両者の重心の距離である)。また、関数G(x,d)(xは物体要素、dは正の数)は、ある物体要素xに関して{y}=F(x,d)を実行し、返り値の集合が空集合でなければその集合の要素全てyに関して更に{z}=F(y,d)を実行し、またその返り値の集合の要素zにつきF(z,d)を実行し、またその返り値の要素につき・・・と再帰的に繰り返して空集合が返されるまで続け、空集合が返された時点でそれまでに返り値に含まれていた物体要素全てを集合に入れて返す関数であるとする。
【0068】
更に、関数H(x,d)(xは物体要素、dは正の数)は、関数G(x,d)の返り値の集合の要素の数を返す関数であるとする。
【数4】

上式のように関数H’(x,d)を定義したとき、H’(x,d)の値が所定の閾値を超えているならば、G(x,d)にノイズが含まれている可能性が高いことになる。従って、G(x,d)の物体要素全てについて面積に関する偏差値を求め、その偏差値が50に近いものをノイズであると判断して、除去する。
【0069】
上記の関数F、G、H、H’による判断及び除去は、例えば、3×3=9分割の分割画面ごとになされてもよい。
【0070】
この時点で残っている物体要素はマーカとすることができる。前に説明したように、マーカでは重心と速度(ベクトル)が重要であるから、上記[数2]の式に従いマーカの重心を求め、更に速度ベクトルを求めておく。まずこの時点で、現フレーム上の各物体要素と、一つ前のフレーム上の各物体要素とを対比させて、同じ物体要素を結び付ける(S0808)。前後2つのフレーム間で同じ物体要素を結び付けるに当たっては、重心座標が同じ又は重心座標の差異が所定値以下である2つの物体要素を、同じ物体要素とすればよい。また、後続のフレームにおける処理のために、この時点での物体要素を含む現フレームのフレームデータを記録しておく。
【0071】
次に、物体要素の速度ベクトルMn→vを算出する(S0810)。速度ベクトルMn→vは、直前の一つ又は数枚のフレームと現在のフレームとにおける同一物体要素の重心座標の差異から求められる。前にも説明したように、マーカを表示するにあたっては、マーカの撮像そのものを表示するのではなく、マーカの重心を中心とする所定半径の円(例えば、半透明の円)を表示するようにしてもよい。これに加えて、随時変化する速度ベクトルを表す矢印をマーカの重心から伸ばして示すようにしてもよい。
【0072】
以上の工程S02〜工程S08、及び、工程S0802〜工程S0810により、フレーム毎のマーカが作成される。
【0073】
[変形例1]
上記ノイズの除去の説明において、図8に示すフローチャートを用いてノイズの除去の工程を詳細に示したが、ノイズの除去の工程は上述のものに限定されるわけではない。図13に示すように、物体要素が他のサイクル状の物体要素内部にある状況を考える。なお、図13には示されていないが、内部の物体要素は「緑」の物体要素G(Green Area)、その外延にサイクル状に存在する物体要素は「青」の物体要素B(Blue Area)であるとする。
【0074】
このようにある物体要素が別の物体要素のサイクル内に存在する場合、サイクル状の物体要素はノイズであると考えられる。
【0075】
以下(表5)に、物体要素Gが別の物体要素Bのサイクル内に存在するのか否かを判定する工程を述べる。判定する工程は、図8のフローチャートを構成する各工程間のどこで行われてもよいし、工程S0810の後に行われてもよい。
【0076】
[表5]
BOOL GreenAreaIsInsideBlueArea(AreaElement G, AreaElement B)
{
int i,j;
for (i=0 ; i<Gの線分要素の個数 ; i++)
{
int l[十分大きな整数];
BOOL inside = NO;
int x = G(i(x)); //Gのi番目の線分要素の始点のx座標
int y = G(i(y)); //Gのi番目の線分要素の始点のy座標
int w = G(i(w)); //Gのi番目の線分要素の幅
int c = 0; //y座標が一致する線分要素の数
for (j=0 ; j<Bの線分要素の個数 ; j++)
{
if (y == B(j(y))) //y座標が一致するものがあれば
{
l[c] = j;
c = c+1; //一致しているから数を1プラス
}
}
if (c > 1)
{
BOOL left_exists = NO;BOOL right_exists = NO; //Gの線分要素の左、右にBの線分要素があるか
int k;
for (k=0 ; k<c ; k++) //y座標が同じものについてループ
{
LineElement L = B(l[c]);
if (x + w < L(x))
{
right_exists = YES;
} else if (L(x) + L(w) < x) {
left_exists = YES;
}
}
if (left_exists)
{
if (right_exists)
{
inside = YES;
} else {
inside = NO;
}
} else {
inside = NO;
}
} else {
inside = NO;
}

if (inside == NO)
{
return NO; //左右ともに囲まれていない線分があれば直ちに関数から抜け出してNOを返す
}
}
return YES; //一度もinsideがNOになっていないから、全ての線分要素が左右囲まれているから、物体要素も左右囲まれている。よって、GはBの中にある。
}
【0077】
ある物体要素が別の物体要素のサイクル内に存在することを数学的に表記すると、以下のようになる。
【数5】

つまり、上記3式全てを満たす有限数列{Sn}、自然数t、自然数uが存在し、t≠uであるとき、AqはApの内部にあることになる。
【0078】
なお、上記表5に示す、物体要素Gが別の物体要素Bのサイクル内に存在するのか否かを判定する工程は、2次元の物体要素G、Bに関するものである。エレメント指向はn次元(n≧3)の物体要素を対象にできる考え方であるから、あるn次元の物体要素が別のn次元の物体要素のサイクル内に存在するか否かの判定にもエレメント指向の考え方を利用できる。但し、n次元(n≧3)の物体要素のサイクル関係の判定では、2次元の物体要素のサイクル関係の判定(表5参照)よりも考慮すべき点が増大する。
【0079】
このように、エレメント指向は、単に物体の代数幾何学的な不連続(性)を表すのに適するだけでなく、物体の位相幾何学的な特徴を表すのにも適する考え方であるといえる。
【0080】
[変形例2]
上記マーカ作成部の説明において、マーカ作成の一例を述べたが、マーカ及びシールは上述のものに限定されるわけではない。例えば、親指には赤色のシールを、親指以外の指には黄色のシールを貼り、親指以外の指のシールの鏡像たるマーカは、上述の「対象オブジェクト操作部」の説明で述べたマーカと同じ機能を有し、親指の(赤色の)シールの鏡像たるマーカ(の表示)は、マウスのクリックの機能を有するようにしてもよい。
【0081】
つまり、親指を曲げて親指の赤色シールがDVカメラに写らないようにした上で、他の4本の指でウインドウ24を操作し、途中で親指を伸ばして親指の赤色シールがDVカメラに写るようにする(即ち、赤色シールの鏡像たるマーカが突然表示される)とクリック操作が発生する。
【0082】
また、左手の親指には赤色のシールを、右手の5本の指には黄色のシールを貼り、右手の指のシールの鏡像たるマーカは、上述の「対象オブジェクト操作部」の説明で述べたマーカと同じ機能を有し、左手親指の(赤色の)シールの鏡像たるマーカの表示は、マウスのクリックの機能を有するものであってもよい。
【0083】
また、シールがストロー等の短い棒状物の先端に貼られ、操作者がそのストローをくわえ口によりシール及びマーカを動かすようにしてもよい。
【0084】
タッチスクリーンがマーカの入力源(マーカ情報取得部14)であってもよい。つまり、画面がタッチスクリーンを兼ねており、その画面への圧力を伴う接触による接触領域がマーカとなるようにしてもよい。
【図面の簡単な説明】
【0085】
【図1】本発明に係るオブジェクト操作装置の概略の機能を示すブロック図である。
【図2】本発明に係るオブジェクト操作装置における、シールとマーカの関係を示す図である。
【図3】指先にシールを付した様子を示す図である。
【図4】鏡像たるマーカの画像(図4(1))が、ウインドウを表示する画面(図4(2))に重ねられて、マーカとウインドウ(オブジェクト)とを表示する画面となる様子を模式的に示す図である。
【図5】マーカとウインドウとの関係を示す6つの図である。
【図6】マーカからウインドウの辺への作用を説明するための図である。
【図7】本発明に係るオブジェクト操作装置におけるマーカ作成部の、フレーム単位の画像データからマーカを抽出するまでの処理のフローチャート図である。
【図8】図7に示すフローチャート図における「ノイズを除去する」工程(S08)を更に詳細化したフローチャート図である。
【図9】従来技術のラベリング処理とエレメント指向との対比を示す概念図である。
【図10】画面上の物体要素の例を示す図である。
【図11】本明細書におけるマーカ、レシーバ、テンプレート及びオペレーションの表記法を示す一覧表である。
【図12】本明細書におけるエレメント指向表記法を示す一覧表である。
【図13】2つの物体要素の例を示す図である。
【符号の説明】
【0086】
2・・・オブジェクト操作装置、4・・・表示装置、8・・・コンピュータ、10・・・デジタル撮像装置(DVカメラ)、12・・・シール、14・・・マーカ情報所得部、16・・・マーカ作成部、18・・・マーカ表示部、20・・・対象オブジェクト操作部、22・・・マーカ、24・・・ウインドウ。

【特許請求の範囲】
【請求項1】
撮像した操作体に基づき画面中のオブジェクトを操作するオブジェクト操作装置であって、
演算装置と、
上記演算装置と接続する表示装置と、
上記演算装置と接続する撮像装置と
を備え、
上記撮像装置は所定の操作体を撮像し、上記演算装置は撮像された上記操作体の画像をマーカとして上記表示装置に表示し、
上記マーカの動きにより上記表示装置の画面におけるオブジェクトが操作されることを特徴とするオブジェクト操作装置。
【請求項2】
上記撮像装置が撮像したフレームデータから、上記演算装置がビットマップB(x,y)を作成し、
更に上記演算装置は、
上記フレームデータから物体要素を抽出し、上記物体要素を、始点及び幅で表される線分要素の集合として表現し処理することにより上記マーカを生成することを特徴とする請求項1に記載のオブジェクト操作装置。
【請求項3】
上記演算装置は上記操作体の画像の鏡像をマーカとして上記表示装置に表示することを特徴とする請求項2に記載のオブジェクト操作装置。
【請求項4】
上記撮像装置は複数の操作体を撮像し、上記複数の操作体の各々に対応したマーカを上記オブジェクトに作用させることでオブジェクトが操作されることを特徴とする請求項3に記載のオブジェクト操作装置。
【請求項5】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカを上記ウインドウの内側で互いに接近させると、
上記ウインドウが表示画面の前面にないならば上記ウインドウが前面に移動し、上記ウインドウが表示画面の前面にあるならば上記ウインドウがドラッグされることを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項6】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカを上記ウインドウ外側から上記ウインドウの一辺に接近させると、
上記ウインドウが表示画面の座標軸に平行に移動することを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項7】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカのうち、1個以上ずつのマーカを上記ウインドウの一組の対辺の夫々の外側から中心に近づけさせると、
上記ウインドウが、上記一組の対辺の夫々に交差し且つ中心に向かう方向に、縮小することを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項8】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカのうち、1個以上ずつのマーカを上記ウインドウの一組の対辺の夫々の内側から、対辺の夫々に接して広げさせると、
上記ウインドウが、上記一組の対辺の夫々に交差し且つ中心から遠ざかる方向に、広がることを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項9】
上記オブジェクトがウインドウであり、
3個以上の上記操作体による3個以上の上記マーカのうち、1個以上ずつのマーカを上記ウインドウの3乃至4辺の夫々の外側に接して存在させ且つそれらマーカを同じ速度ベクトルで移動させると、
上記ウインドウが平行に移動することを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項10】
上記オブジェクトがウインドウであり、
3個以上の上記操作体による3個以上の上記マーカのうち、1個以上ずつのマーカを上記ウインドウの3乃至4辺の夫々の内側に接して存在させ且つそれらマーカを中心から遠ざかる方向へ移動させると、
マーカの動きに合わせて上記ウインドウの幅及び高さが広がることを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項11】
上記演算装置において、マーカとオブジェクトの関係が操作内容毎に予め定義され、更に、複数の上記操作内容が基本的操作から複雑な操作へと予め順序付けされており、
更に、上記演算装置におけるフレームデータの処理において、上記順序に沿って、マーカとオブジェクトとが予め定義された上記関係を満たすか否かが確認され、満たさないことが確認されたときの上記順序付けにおける項数を“k”と置くと、(k−1)番目の上記順序付けに対応する操作内容がマーカからオブジェクトに対する操作となることを特徴とする請求項4に記載のオブジェクト操作装置。
【請求項12】
上記演算装置におけるフレームデータの処理において、上記表示装置の画面上の複数のオブジェクトは、画面の手前から画面の奥へと順番付けされ、
マーカの操作の対象がどのオブジェクトであるかが、上記順番付けに沿って確認されることを特徴とする請求項11に記載のオブジェクト操作装置。
【請求項13】
上記表示装置の画面上の最も手前にあるオブジェクト以外のオブジェクトに対して為される操作の種類が、上記表示装置の画面上の最も手前にあるオブジェクトに対して為される操作の種類よりも少ないことを特徴とする請求項12に記載のオブジェクト操作装置。
【請求項14】
デジタル画像フレームデータにて、所定の色に着目して画素単位でビットマップB(x,y)を作成する工程と、
各々のy(縦軸)値におけるビットの存在を、始点(x)及び幅(w)による線分要素(x,y,w)で表す工程と、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とする工程と、
物体要素のうちからノイズを除去する工程と
を含む、デジタル画像フレームデータからマーカを特定する方法。
【請求項15】
ビットマップB(x,y)を作成する工程が、
デジタル画像フレームデータの画素ごとにRGB値からHSV値に変換してH(Hue;色相)、S(Saturation;彩度)及びV(Value;明度)の値を取得する工程と、
予め設定されているHSV値(H,S,V)と、個々の画素(x,y)での上記HSV値を、H、S、V夫々について比較し、夫々の差異が夫々の閾値以下の画素のみマーカ候補部分として抜き出してビットをオンとし、それ以外の画素ではビットをオフとする工程と
を含むことを特徴とする請求項14に記載の方法。
【請求項16】
上記物体要素のうちからノイズを除去する工程が、
物体要素の面積が、第1の所定値より大きい値のもの、又は第2の所定値より小さい値のものを除去する工程と、
正円率が所定値より低い物体要素を除去する工程と、
数珠状のノイズを除去する工程と、
現在のフレーム上の各物体要素と、記録されている一つ前のフレーム上の各物体要素を対比させて、重心座標が同じ又は重心座標の差異が所定値以下である物体要素同士を、同じ物体要素として結び付ける工程と、
直前の一つ又は数枚のフレームと現在のフレームとにおける同一物体要素の重心座標の差異から、各物体要素の速度ベクトルを求める工程と
を含むことを特徴とする請求項14に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2009−99042(P2009−99042A)
【公開日】平成21年5月7日(2009.5.7)
【国際特許分類】
【出願番号】特願2007−271491(P2007−271491)
【出願日】平成19年10月18日(2007.10.18)
【出願人】(507346579)
【Fターム(参考)】