(57)【特許請求の範囲】
【請求項１】
撮像した操作体に基づき画面中のオブジェクトを操作するオブジェクト操作装置であって、
演算装置と、
上記演算装置と接続する表示装置と、
上記演算装置と接続する撮像装置と
を備え、
上記撮像装置は所定の操作体を撮像し、上記演算装置は撮像された上記操作体の画像をマーカとして上記表示装置に表示し、
上記マーカの動きにより上記表示装置の画面におけるオブジェクトが操作されるオブジェクト操作装置において、
上記演算装置は、
上記撮像装置が撮像したデジタル画像フレームデータから、所定の色相、彩度若しくは明度を含む画像の持つ特性に着目して画素単位でビットマップＢ（ｘ，ｙ）を作成し、
上記ビットマップＢ（ｘ，ｙ）の、各々のｙ値におけるビットの存在を、始点（ｘ）及び幅（ｗ）による線分要素（ｘ，ｙ，ｗ）で表し、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とし、
上記物体要素から上記マーカを作成する
ことを特徴とするオブジェクト操作装置。
【請求項２】
上記演算装置は上記操作体の画像の鏡像をマーカとして上記表示装置に表示することを特徴とする請求項１に記載のオブジェクト操作装置。
【請求項３】
上記撮像装置は複数の操作体を撮像し、上記複数の操作体の各々に対応したマーカを上記オブジェクトに作用させることでオブジェクトが操作されることを特徴とする請求項２に記載のオブジェクト操作装置。
【請求項４】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカを上記ウインドウの内側で互いに接近させると、
上記ウインドウが表示画面の前面にないならば上記ウインドウが前面に移動し、上記ウインドウが表示画面の前面にあるならば上記ウインドウがドラッグされることを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項５】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカを上記ウインドウ外側から上記ウインドウの一辺に接近させると、
上記ウインドウが表示画面の座標軸に平行に移動することを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項６】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカのうち、１個以上ずつのマーカを上記ウインドウの一組の対辺の夫々の外側から中心に近づけさせると、
上記ウインドウが、上記一組の対辺の夫々に交差し且つ中心に向かう方向に、縮小することを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項７】
上記オブジェクトがウインドウであり、
複数の上記操作体による複数の上記マーカのうち、１個以上ずつのマーカを上記ウインドウの一組の対辺の夫々の内側から、対辺の夫々に接して広げさせると、
上記ウインドウが、上記一組の対辺の夫々に交差し且つ中心から遠ざかる方向に、広がることを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項８】
上記オブジェクトがウインドウであり、
３個以上の上記操作体による３個以上の上記マーカのうち、１個以上ずつのマーカを上記ウインドウの３乃至４辺の夫々の外側に接して存在させ且つそれらマーカを同じ速度ベクトルで移動させると、
上記ウインドウが平行に移動することを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項９】
上記オブジェクトがウインドウであり、
３個以上の上記操作体による３個以上の上記マーカのうち、１個以上ずつのマーカを上記ウインドウの３乃至４辺の夫々の内側に接して存在させ且つそれらマーカを中心から遠ざかる方向へ移動させると、
マーカの動きに合わせて上記ウインドウの幅及び高さが広がることを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項１０】
上記演算装置において、マーカとオブジェクトの関係が操作内容毎に予め定義され、更に、複数の上記操作内容が基本的操作から複雑な操作へと予め順序付けされており、
更に、上記演算装置におけるフレームデータの処理において、上記順序に沿って、マーカとオブジェクトとが予め定義された上記関係を満たすか否かが確認され、満たさないことが確認されたときの上記順序付けにおける項数を“ｋ”と置くと、（ｋ−１）番目の上記順序付けに対応する操作内容がマーカからオブジェクトに対する操作となることを特徴とする請求項３に記載のオブジェクト操作装置。
【請求項１１】
上記演算装置におけるフレームデータの処理において、上記表示装置の画面上の複数のオブジェクトは、画面の手前から画面の奥へと順番付けされ、
マーカの操作の対象がどのオブジェクトであるかが、上記順番付けに沿って確認されることを特徴とする請求項１０に記載のオブジェクト操作装置。
【請求項１２】
上記表示装置の画面上の最も手前にあるオブジェクト以外のオブジェクトに対して為される操作の種類が、上記表示装置の画面上の最も手前にあるオブジェクトに対して為される操作の種類よりも少ないことを特徴とする請求項１１に記載のオブジェクト操作装置。
【請求項１３】
デジタル画像フレームデータにて、所定の色相、彩度若しくは明度を含む画像の持つ特性に着目して画素単位でビットマップＢ（ｘ，ｙ）を作成する工程と、
各々のｙ値におけるビットの存在を、始点（ｘ）及び幅（ｗ）による線分要素（ｘ，ｙ，ｗ）で表す工程と、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とする工程と、
物体要素のうちからノイズを除去する工程と
を含む、デジタル画像フレームデータからマーカを特定する方法。
【請求項１４】
ビットマップＢ（ｘ，ｙ）を作成する工程が、
デジタル画像フレームデータの画素ごとにＲＧＢ値からＨＳＶ値に変換してＨ（Ｈｕｅ；色相）、Ｓ（Ｓａｔｕｒａｔｉｏｎ；彩度）及びＶ（Ｖａｌｕｅ；明度）の値を取得する工程と、
予め設定されているＨＳＶ値（Ｈ０，Ｓ０，Ｖ０）と、個々の画素（ｘ，ｙ）での上記ＨＳＶ値を、Ｈ、Ｓ、Ｖ夫々について比較し、夫々の差異が夫々の閾値以下の画素のみマーカ候補部分として抜き出してビットをオンとし、それ以外の画素ではビットをオフとする工程と
を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
上記物体要素のうちからノイズを除去する工程が、
物体要素の面積が、第１の所定値より大きい値のもの、又は第２の所定値より小さい値のものを除去する工程と、
正円率が所定値より低い物体要素を除去する工程と、
数珠状のノイズを除去する工程と、
現在のフレーム上の各物体要素と、記録されている一つ前のフレーム上の各物体要素を対比させて、重心座標が同じ又は重心座標の差異が所定値以下である物体要素同士を、同じ物体要素として結び付ける工程と、
直前の一つ又は数枚のフレームと現在のフレームとにおける同一物体要素の重心座標の差異から、各物体要素の速度ベクトルを求める工程と
を含むことを特徴とする請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおけるオブジェクト操作装置、及び、デジタル画像フレームデータからマーカを特定する方法に関する。
【背景技術】
【０００２】
コンピュータのＧＵＩをサポートする入力デバイスとして、現在、マウスが広く用いられている。しかしながら、マウスは例えば手や腕に障害を持つ人にとって、必ずしも有用な入力デバイスとは言えない。
【０００３】
また、コンピュータ画像上で、マウスは必ず一点に関する入力動作を行う。しかしながら、コンピュータ画像に対して複数の点を介して同時に入力動作を行う入力デバイスは、現在見当たらない。即ち、コンピュータ操作者が複数の指で画面上の対象物にアプローチするような動作をサポートする入力デバイスは殆ど開発されていないといえる。
【０００４】
なお、本願の先行技術として以下のようなものが挙げられるが、いずれも、コンピュータ操作者が複数の指で画面上の対象物にアプローチするような動作をサポートする入力デバイスを開示するものではない。
【特許文献１】特開２００６−２７７６６６号公報
【特許文献２】特開２００５−３０１６９３号公報
【特許文献３】特開２００４−０７８４８８号公報
【特許文献４】特開２００４−０３８４２９号公報
【特許文献５】特開２０００−１３２３４０号公報
【特許文献６】特開２０００−１０５６７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、マウス以外の指や口によるコンピュータへの入力をサポートする入力装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は上記の目的を達成するためになされたものである。本発明に係るオブジェクト操作装置は、
撮像した操作体に基づき画面中のオブジェクトを操作するオブジェクト操作装置であって、
演算装置と、
上記演算装置と接続する表示装置と、
上記演算装置と接続する撮像装置と
を備え、
上記撮像装置は所定の操作体を撮像し、上記演算装置は撮像された上記操作体の画像をマーカとして上記表示装置に表示し、
上記マーカの動きにより上記表示装置の画面におけるオブジェクトが操作されるオブジェクト操作装置である。そのようなオブジェクト操作装置において、
上記演算装置は、
上記撮像装置が撮像したデジタル画像フレームデータから、所定の色相、彩度若しくは明度を含む画像の持つ特性に着目して画素単位でビットマップＢ（ｘ，ｙ）を作成し、
上記ビットマップＢ（ｘ，ｙ）の、各々のｙ値におけるビットの存在を、始点（ｘ）及び幅（ｗ）による線分要素（ｘ，ｙ，ｗ）で表し、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とし、
上記物体要素から上記マーカを作成する
ことを特徴とする。
【０００７】
また、本発明に係るデジタル画像フレームデータからマーカを特定する方法は、
デジタル画像フレームデータにて、所定の色相、彩度若しくは明度を含む画像の持つ特性に着目して画素単位でビットマップＢ（ｘ，ｙ）を作成する工程と、
各々のｙ値におけるビットの存在を、始点（ｘ）及び幅（ｗ）による線分要素（ｘ，ｙ，ｗ）で表す工程と、
上記各線分要素の間の接触関係の存否を判断し、接触関係にある線分要素を一まとめにして物体要素とする工程と、
物体要素のうちからノイズを除去する工程と
を含む。
【発明の効果】
【０００８】
本発明を利用することにより、表示画面に対する指や口などの相対的な動作によって、直接的にコンピュータへの入力操作を行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明に係る好適な実施形態を説明する。
【００１０】
［［オブジェクト操作装置］］
図１は、本発明の実施形態に係るオブジェクト操作装置２の概略の機能を示すブロック図である。図２にも示すように、本発明に係るオブジェクト操作装置２は、表示装置４及び演算装置６を備えるコンピュータ８、該コンピュータ８に接続するデジタル撮像装置（ＤＶカメラ）１０、及び、シール１２で構成される。演算装置６の各機能部であるマーカ情報取得部１４、マーカ作成部１６、マーカ表示部１８、及び対象オブジェクト操作部２０は、ＣＰＵが適切なコンピュータプログラムを実行することで実現される。デジタル撮像装置（ＤＶカメラ）１０は、コンピュータ８の表示装置４の上端に組み込まれるものであってもよい（図２参照）。
【００１１】
デジタル撮像装置（ＤＶカメラ）１０は、図３に示すような指先に貼付された操作体としてのシール１２、及びその周辺や背景を撮像する。図３では、親指の先端部と人差し指の先端部とにシール１２が２枚貼付されているが、その他の指の先端部に付されてもよい。また、指先ではなく、手のひらなどにシール１２が付されてもよい。
【００１２】
なお、デジタル撮像装置（ＤＶカメラ）１０は、ごく短い単位時間（例えば、１／６０秒）毎にフレームの形態で画像データを作成する。従って、オブジェクト操作装置２に含まれるマーカ情報取得部１４、マーカ作成部１６、マーカ表示部１８、及び対象オブジェクト操作部２０は、フレーム単位で画像データを処理する。
【００１３】
シール１２は、指先を全部又は一部覆う大きさであればよく、どのような形状であってもよいが円に近い形状であるのが好ましい。更に、シール１２表面には所定の色、好ましくは一つの色（例えば、黄色）が付けられている。
【００１４】
マーカ情報取得部１４は、シール１２の画像・位置の情報を含む画像情報をデジタル撮像装置１０から取得し、マーカ作成部１６に画像データを渡す。これを受けて、マーカ作成部１６は、画像データの中から、シールの画像データを特定して抽出しこれをマーカ２２とする。ここでマーカ２２とは、コンピュータ画面上の対象（オブジェクト）に対して操作を行う手段であり、通常マウス及びその（表示画面上の）ポインタが果たす役割の代わりと成り得る手段である。マーカ２２は、コンピュータ８に実装されたソフトウエア上ではオブジェクトの一つとして扱われる。
【００１５】
マーカ作成部１６は、形状及び大きさの特定された明確なマーカ２２を作成することが望ましい。マーカ２２の作成の具体例については、後で説明する。
【００１６】
マーカ作成部１６により作成されるマーカ２２は、マーカ表示部１８によりコンピュータの表示装置４に表示される。このときマーカ表示部１８は、撮像した画像データの鏡像を表示装置４に表示させる。そうすると、図２に示すようなＤＶカメラ１０により撮像されたシール１２が、鏡像となってマーカ２２として表示される。つまり、図２における親指に貼られたシール１２（図では（Ａ）を付している）は、表示画面の左側のマーカとして表示され、人差し指に貼られたシール１２（図では（Ｂ）を付している）は、表示画面の右側のマーカとして表示される。
【００１７】
これらマーカ２２が、図２における表示画面上のオブジェクト（図２ではウインドウ２４）に作用を及ぼすことにより、表示画面上のウインドウ（オブジェクト）２４が操作される。即ち、操作者は、表示画面上のマーカ２２を見て確認しつつ、自らの指や手の動きによりウインドウ２４を操作することができる。
【００１８】
図４は、鏡像たるマーカ２２の画像（図４（１））が、ウインドウ２４を表示する画面（図４（２））に重ねられて、マーカ２２とウインドウ（オブジェクト）２４とを表示する画面となる様子を模式的に示している。
【００１９】
マーカ２２がウインドウ（オブジェクト）２４に作用を及ぼすことにより、ウインドウ２４を操作する機能は、対象オブジェクト操作部２０が行う。例えば、図５（２）に示すように、２つのマーカ２２がウインドウ２４の右端辺に接してその右側にある場合２つのマーカ２２が左に動けば（即ち、シールを貼った操作者の指が左に動けば）右端辺を含むウインドウ２４全体が右から左へ動くように、対象オブジェクト操作部２０は、ウインドウ２４の位置や形状を変化させる制御を行う。
【００２０】
［［対象オブジェクト操作部］］
次に、対象オブジェクト操作部２０の動作を説明する。対象オブジェクト操作部２０の動作に係るコンピュータプログラムでは、
（１）マーカ、
（２）レシーバ、
（３）テンプレート、
（４）オペレーション
が定義されて利用される。なお、図１１は、本明細書におけるマーカ、レシーバ、テンプレート及びオペレーションの表記法を示す一覧表である。この表記法はコンピュータプログラムでの表現を基にしている。
【００２１】
マーカ２２は、コンピュータ画面上の対象（オブジェクト）に対して操作を行う手段であり、形（ａ）、面積（ｓ）、速度ベクトル（ｖ）、重心（ｇ）などをパラメータとして保持するオブジェクトである。その他のパラメータを含んでもよい。ｎ個のマーカの集合は例えば｛Ｍｎ｝で表現し、ｎ個目のマーカはＭｎと表現する。ｎ番目のマーカの面積はＭｎ→sと表現し、速度ベクトルのｘ成分はＭｎ→v.xと表現する。速度ベクトル（ｖ）は、後でも説明するように、直前の一つ又は数枚のフレームと現在のフレームとにおける同一マーカの重心座標の差異から求められる。
【００２２】
なお、マーカ作成部１６、マーカ表示部１８及び表示装置４は、マーカ２２を表示するにあたり、マーカの撮像そのものを表示するのではなく、マーカ２２の重心を中心とする所定半径の円（例えば、半透明の円）を表示するようにしてもよい。
【００２３】
レシーバとは、コンピュータ画面上での操作の対象になるオブジェクトであり、本明細書では具体的な例としてウインドウ２４を取り上げる。ウインドウ２４は、左下座標（ｘ，ｙ）と大きさ（ｗ，ｈ）を保持するオブジェクトである（ｗは幅であり、ｈは高さである）（図４（２）参照）。更にレシーバは、直前フレームで当該レシーバになされた操作（オペレーション）を記録するパラメータ（ｐ）も保持する。例えば、直前フレームで当該レシーバになされた操作が、右から押す操作であったならば、ｐは、
ｐ＝ｋＡｃｔｉｏｎＰｕｓｈＦｒｏｍＲｉｇｈｔ
等の定数となる。このｐは、（後で詳述する）ノイズが多い場合などに、発行すべきオペレーションを決定するパラメータとなり得る。例えば、ノイズが多い場合には直前のｐと現在のｐが一致するときのみ、そのｐが示すオペレーションが発行される、というように利用される。
ｎ個のレシーバの集合は｛Ｒｎ｝で表現し、ｎ個目のマーカはＲｎと表現する。表示画面において、ＲｎはＲｎ+1より必ず手前にある（即ち、ＲｎはＲｎ+1の上に重なっている）ものとする。また、ｎ番目のレシーバの左下ｘ座標はＲｎ→xと表現する。
【００２４】
テンプレートとは、コンピュータ画面上での操作のテンプレートであり、特にレシーバを押す、握る、つかむというような操作の、一つ一つの条件を表す。テンプレートは次数ｄと条件Ｑを保持し、Ｔｎ＝（ｄ，Ｑ（ｒ，ｍ））で表現される。ここで、次数（ｄ）とは、レシーバの幾つの辺に関わっているかを表す数であり（下記表１参照）、例えば、一つの辺を外部から押す操作ならば“１”（図５（２）参照）、左右の辺で挟む操作ならば“２”（図５（３）参照）、外側をつかむ操作ならば“３”又は“４”（図５（５）参照）、レシーバの内側をつかむ操作ならば“０”となる（図５（１）参照）。
Ｑ（Ｒｋ，｛Ｍｎ｝） は、一つのレシーバＲｋと、マーカの集合｛Ｍｎ｝とを引数とする関数である。この関数Ｑは、｛Ｍｎ｝がＲｋに対するその操作を表している場合には“Ｔｒｕｅ”（真）を、表していない場合には“Ｆａｌｓｅ”（偽）を、返す。
テンプレートは複数設けられ、｛Ｔｎ｝で表現される。また、常に、
Ｔｎ→ｄ≦Ｔｎ+1→ｄ
が成り立つように、コンパイル時に｛Ｔｎ｝の内容の順番（適用の優先順位）が項数として決定される。表１は、テンプレートの内容である。表の上から下へ｛Ｔｎ｝のｎ（項数）が順に大きくなる。なお、表１の内容やｎ（項数）の順序は、一つの例に過ぎないが、単純な動作から複雑な動作へと移行するように並べられている。
【００２５】
【表１】
0004938617.tif 000002
【００２６】
オペレーションとは、コンピュータ画面上での操作である。本発明では特に、レシーバを押す、握る、つかむというような操作の一つ一つを表す（下記表２参照）。一つのオペレーション、例えば押すオペレーションには、押すテンプレートがあり、両者は対応している。本発明に係るオペレーションはプログラミングでいうところの関数であり、数列｛Ｏｎ｝で表される。また、Ｏｎ＝（Ｏ（ｒ，ｍ））である。例えば、
Ｏｎ→Ｏ（Ｒｐ，｛Ｍｑ｝）
は、マーカの集合｛Ｍｑ｝がｎ番目のオペレーションＯｎを引き起こし、そのオペレーションＯｎを一個のレシーバＲｐに適用する、という意味である。
【００２７】
【表２】
0004938617.tif 000003
【００２８】
オペレーションは、以下のようなものである。
【００２９】
まず図５（１）に示すように、複数のシールによる複数のマーカ２２をウインドウ２４の内側で互いに接近させる場合、ウインドウ２４が表示画面の前面にないならばウインドウが前面に移動し（図５（１−２）参照）、ウインドウが表示画面の前面にあるならばウインドウがドラッグされる。
【００３０】
次に、図５（２）に示すように、複数のシールによる複数のマーカ２２をウインドウ２４外側からウインドウ２４の一辺に接近させると、ウインドウ２４が表示画面の座標軸に平行に移動する（図５（２−２）参照）。
【００３１】
次に、図５（３）に示すように、複数のシールによる複数のマーカ２２のうち、１個以上ずつのマーカ２２をウインドウ２４の一組の対辺の夫々の外側から中心に近づけさせると、ウインドウ２４が、その一組の対辺の夫々に交差し且つ中心に向かう方向に縮小する（図５（３−２）参照）。
【００３２】
次に、図５（４）に示すように、複数のシールによる複数のマーカ２２のうち、１個以上ずつのマーカ２２をウインドウ２４の一組の対辺の夫々の内側から、対辺の夫々に接して広げさせると、ウインドウ２４が、その一組の対辺の夫々に交差し且つ中心から遠ざかる方向に広がる（図５（４−２）参照）。
【００３３】
次に、図５（５）に示すように、３個以上のシールによる３個以上のマーカ２２のうち、１個以上ずつのマーカ２２をウインドウ２４の３乃至４辺の夫々の外側に接して存在させ且つそれらマーカ２２を同じ速度ベクトルで移動させると、ウインドウ２４が平行に移動する（図５（５−２）参照）。
【００３４】
更に、図５（６）に示すように、３個以上のシールによる３個以上のマーカ２２のうち、１個以上ずつのマーカ２２をウインドウ２４の３乃至４辺の夫々の内側に接して存在させ且つそれらマーカ２２を中心から遠ざかる方向へ移動させると、マーカ２２の動きに合わせてウインドウ２４の幅及び高さが広がる（図５（６−２）参照）。
【００３５】
ここで、マーカからウインドウの辺への作用について、図６を用いて説明する。図６（１）の辺ＡＢに対しウインドウの外側からマーカ２２が作用する場合を取り上げる。まず、辺ＡＢに関して長方形領域ｐｑｒｓを設定する。このとき、ｑ、ｐが辺ＡＢを所定の比率（例えば、１：５：１）で内分し、ｑｒ及びｐｓが所定の長さ（例えば５）となるように、点ｐ、ｑ、ｒ及びｓを設ける。次に、マーカ２２の重心が、その長方形領域ｐｑｒｓに包含されるか、が判定される。マーカ２２の重心が長方形領域ｐｑｒｓに包含される場合、マーカ２２の速度ベクトルの、マーカ２２の重心から辺ＡＢに直交する半直線に関するｃｏｓθが求められ、ｃｏｓθからθが求められる。θが所定の範囲（例えば、−４０°以上＋４０°以下）にあれば、マーカ２２が辺ＡＢに外側から作用しているものとする。このとき、マーカ２２は、速度ベクトルの辺ＡＢに直交する成分（のみ）、つまり直交するベクトルへの正射影、で辺ＡＢを動かそうとしているとしてもよいし、速度ベクトルそのもので辺ＡＢを動かそうとしているとしてもよい。
【００３６】
辺ＡＢに対しウインドウの内側からマーカ２２が作用する場合には、辺ＡＢに関して長方形領域ｔｕｑｐを設定し、マーカ２２重心がその長方形領域ｔｕｑｐに包含されるが判定され、更に、マーカ２２の速度ベクトルとマーカ２２重心から辺ＡＢに直交する半直線との角θが所定の範囲にあるか、が判定される。同様に、夫々の辺に対する作用では、長方形領域（Ｓ１１、Ｓ１２、Ｓ２１、Ｓ２２、Ｓ３１、Ｓ３２）を設定して、マーカ２２の重心の包含が判定されることになる。なお、図６（２）に示すように、ウインドウが近接する場合には、近接する辺の中線（図６（２）では、ｖｗ）により、両方の長方形領域が設定されることになる。
【００３７】
続いて、マーカ、レシーバ、テンプレート、及びオペレーションの具体的関係を説明する。
【００３８】
後で説明するようにマーカの特定がなされると、マーカがレシーバに対してどのような操作（作用）を行うものであるかが特定される。このとき、レシーバとテンプレートとの照合が、行われる。
【００３９】
まず、画面上で一番手前のレシーバＲ１について、テンプレートＴ１からテンプレートＴｎまで、
条件Ｔ∀ｐ＝[１，ｎ]→Ｑ（Ｒ１，｛Ｍｑ｝）
が、Ｔｒｕｅを返すのかＦａｌｓｅを返すのかを調べる。最初にＦａｌｓｅが返されたときのテンプレートの項数を“ｋ”と置くと、オペレーションとして、
Ｏｋ-1→Ｏ（Ｒ１，｛Ｍｑ｝）
が実行される。
【００４０】
また、テンプレートＴ１とテンプレートＴ２とのいずれについても、
条件Ｔｐ＝１and２→Ｑ（Ｒ１，｛Ｍｑ｝）
がＦａｌｓｅを返す場合、対象レシーバはＲ２に移行する。つまり、より単純な動作であり、Ｔ３以降のテンプレートの基本動作となるＴ１とＴ２のテンプレートの条件Ｑが偽（Ｆａｌｓｅ）を返す場合、Ｒ１にはマーカは作用しないものとする。
【００４１】
上記に続き、レシーバＲ２について、
条件Ｔ１→Ｑ（Ｒ２，｛Ｍｑ｝）
が、Ｔｒｕｅを返すのかＦａｌｓｅを返すのかを調べるのであるが、テンプレートＴのうち、つかむ動作のみが照合の対象となる。表１では、「内側をつかむ」（Ｔ１）のみが照合の対象となる。けだし、一般的に、人間の行為は最も手前にあるもの（オブジェクト）に集中するからであり、「押す」「挟む」「広げる」「内側から押し広げる」などの操作はＲ１（最も手前のレシーバ）のみが対象とされるべきだからである。また、内側を掴む動作の場合でも、それに関わるマーカがレシーバＲ２の可視領域内（つまり、他のレシーバーで隠れていない部分）に存在することが条件となる。
【００４２】
なお、上記「つかむ」動作により、レシーバＲ２は一番手前に移動される。一番手前に移動されれば、このオブジェクトは以降のフレームにおいて、「つかむ」動作以外の動作の対象と成り得る。
【００４３】
Ｒ２について、「つかむ」動作のテンプレートの条件ＱがいずれもＦａｌｓｅであれば、以下順次同様に、レシーバＲｐ（ｐ≧３）についても、
Ｔ１→Ｑ（Ｒｐ，｛Ｍｑ｝）
が、Ｔｒｕｅを返すのかＦａｌｓｅを返すのかを調べるのであるが、テンプレートＴのうち、つかむ動作のみが照合の対象となる。
【００４４】
対象オブジェクト操作部２０は、以上のようにフレーム単位で画像データを処理する。以降のフレームについても、同様に処理を行う。
【００４５】
［［マーカ作成部］］
図７は、オブジェクト操作装置２におけるマーカ作成部１６の、フレーム単位の画像データからマーカを抽出するまでの処理を表すフローチャート図である。また、図８は、図７に示すフローチャート図における「ノイズを除去する」工程（Ｓ０８）を更に詳細化したフローチャート図である。図７及び図８を用いてマーカ作成部のマーカ抽出処理を説明する。
【００４６】
まず、フレーム単位の画像データに対してメジアンフィルタをかける（工程Ｓ０２）。メジアンフィルタは従来技術のものでよい。また、この工程Ｓ０２は省略されてもよい。
【００４７】
次に、画像データをビットマップ化する（工程Ｓ０４）。この工程Ｓ０４において、まず、画像データを画素単位でＲＧＢ値からＨＳＶ値に変換しＨ（Ｈｕｅ；色相）、Ｓ（Ｓａｔｕｒａｔｉｏｎ；彩度）及びＶ（Ｖａｌｕｅ；明度）の値を取得する。予め設定されているマーカ色（例えば、黄色）の所定のＨＳＶ値（Ｈ０，Ｓ０，Ｖ０）と、個々の画素（ｘ，ｙ）でのＨＳＶ値を、Ｈ、Ｓ、Ｖ夫々について比較し、夫々の差異が夫々の閾値以下の画素のみマーカ候補部分として抜き出して、ビットマップを作成する。
【００４８】
次に、マーカ候補ビットマップデータをエレメント指向データ化する（工程Ｓ０６）。このエレメント指向については、後で説明する。
【００４９】
最後に、ノイズの除去を行う（工程Ｓ０８）。ノイズの除去により、マーカが明確化され且つマーカの速度が把握される。このノイズ除去処理の詳細については、後で説明する。
【００５０】
［［エレメント指向］］
エレメント指向とは、ｎ次元の弧状連結の立体を、互いに接している個々の（ｎ−１）次元の立体で表すアルゴリズム、及びその背景にある考え方を言い、本願発明者が案出した考え方である。本明細書では、２次元の弧状連結の平面図形を、互いに接している個々の線分で表す、というエレメント指向の考え方を利用することになる。このエレメント指向は、例えば、多数の平行平面画像で構成される人体のＣＴスキャンの画像から３次元の立体臓器のモデルを形成する場合や、コンピュータグラフィックスの３次元のモデリングツールを構築する場合などに、利用され得る。
【００５１】
なお、本明細書では、プログラミング言語としてＣ言語の表記を利用するが、他の言語であってもよい。図１２は、本明細書におけるエレメント指向表記法を示す一覧表である。この表記法はコンピュータプログラムでの表現を基にしている。
【００５２】
まず、ビットマップを用意する。ビットマップでは、任意の点（画素）（ｘ，ｙ）における値がＴｒｕｅかＦａｌｓｅか（即ち、オン“１”かオフ“０”か）である。（ｘ，ｙ）におけるビットマップの値を、Ｂ（ｘ，ｙ）と表すことにする。
【００５３】
次に、Ｂ（ｘ，ｙ）の値から、線分要素を初期化する。以下のプログラム（表３）に示されるように、Ｂ（ｘ，ｙ）を連続的に観察する。まず、ｙ（縦軸）を固定してｘ（横軸）を連続的に増加させる。Ｂ（ｘ，ｙ）＝＝Ｔｒｕｅとなる点が（ｘ０，ｙ）から（ｘ１，ｙ）まで分布しているとすると、そこに線分が成立している。この線分を線分要素とし、始点である（ｘ０，ｙ）の座標と横幅ｘ１−ｘ０＝ｗの値を、（ｘ，ｙ，ｗ）＝（ｘ０，ｙ，ｘ１−ｘ０）として保持する。ここで、線分要素が複数存在するものと考え、それら線分要素を、｛Ｌｎ｝という数列で表し、線分要素の始点座標と幅とを、夫々Ｌｎ→ｘ、Ｌｎ→ｗというように表すものとする。例えば、図９（２）には、Ｌ１〜Ｌ５が示されていることになる。
【００５４】
【表３】
0004938617.tif 000004
【００５５】
｛Ｌｎ｝の全てを頂点とする位相幾何学的な無向グラフＧ:=｛ｇ，｛Ｌｎ｝，Ｅ｝を考える。そして、ＬａとＬｂとが代数幾何学的に接触していれば、ＬａとＬｂとの間に辺が存在すると考える。接触は以下のように判断する。
【００５６】
【表４】
0004938617.tif 000005
（判断基準）： La→yとLb→yとの差の絶対値が１のとき、上式のＤが正ならば接触していない、Ｄが０ならば点で接触している、Ｄが負ならば線分で接触している。La→yとLb→yとの差が０のとき、上式のＤが０ならば接触している。それ以外の場合は接触していない。
【００５７】
上述に従い、線分要素の接触関係の存否を整理する（即ち、上述に従い必要に応じて辺を設定する）。できあがったグラフＧにおいて、弧状連結な部分グラフの集合｛Ｇ’｝を物体要素の集合とし、｛Ｇ’｝の一項目Ｇ’→｛Ｌｎ｝要素を物体要素とする。そうすると、個々の物体要素は、一つの弧状連結である形状を表すことになる（図９（２）参照）。
【００５８】
物体要素に様々なアルゴリズムを適応して、様々な数値を簡易に表現できる。以下では、面積、重心座標、正円からの変形率を示す。なお、以下のＡｎは一つの物体要素である。
【００５９】
面積は、以下の式で表される。
【数１】
0004938617.tif 000006
ここで、ｐはＡｎを構成する線分要素の数である。上式は、線分要素を総和すれば面積となることを示しているに過ぎない。
【００６０】
重心座標は以下の式で表される。
【数２】
0004938617.tif 000007
【００６１】
正円からの変形率は以下の式で表される。
【数３】
0004938617.tif 000008
【００６２】
図９は、従来技術のラベリング処理とエレメント指向との対比を示す概念図である。図９（１）が、ラベリング処理による図形の表現の図であり、図９（２）が、本発明に係るエレメント指向データによる図形の表現の図である。図から明白なように、ラベリング処理に比べてエレメント指向では、データ量が大幅に減少する。
【００６３】
［［ノイズの除去］］
図８は、ノイズの除去の工程を詳細化したフローチャート図である。このノイズの除去の工程を、図１０に示す画面の物体要素の例を用いて説明する。図１０に示す物体要素の例では、３つの黄色いマーカ、黄色い筆記具、黄色い人形、及び、黄色の模様の入ったカーテンが含まれている。
【００６４】
最初に、物体要素の面積Ｍｎ→ｓが、非常に大きい値のもの又は非常に小さい値のものを除去する（Ｓ０８０２）。例えば、１画素の物体要素や、画面の略半分を覆うような物体要素を、除去する。図１０の例では、筆記具が除去され得る。
【００６５】
次に、正円率の低い物体要素を除去する（Ｓ０８０４）。物体要素の正円率は、上記［数３］の５つめの式の右辺第２項で表される。つまり、物体要素の形状が円に近い程、正円率は１に近くなり、従って、変形率ｃ［物体要素における変形率Ｍ（ｎ（ｃ））］が小さくなる。そこで、変形率Ｍ（ｎ（ｃ））が所定値より大きいものを除去する。この除去により、例えば、とても変わった形状の物体要素や砂嵐状のノイズを示す物体要素が省かれる。図１０に示す人形はこの工程で除去される。仮に、工程Ｓ０８０２にて、図１０に示す筆記具が除去されなかったとしても、この工程で除去される。
【００６６】
次に、数珠状ノイズを除去する（Ｓ０８０６）。数珠状ノイズとは、図１０に示す模様付きのカーテンのように、局所的に複数の動きのある物体要素が集中しておりそれら物体要素の面積が比較的等しいもののようなノイズである。数珠状ノイズの除去は、以下のように行う。
【００６７】
関数Ｆ（ｘ，ｄ）（ｘは物体要素、ｄは正の数）が、ある物体要素ｘから距離がｄ以内である他の物体要素の集合を返す関数であるとする（但し、２つの物体要素の距離は、両者の重心の距離である）。また、関数Ｇ（ｘ，ｄ）（ｘは物体要素、ｄは正の数）は、ある物体要素ｘに関して｛ｙ｝＝Ｆ（ｘ，ｄ）を実行し、返り値の集合が空集合でなければその集合の要素全てｙに関して更に｛ｚ｝＝Ｆ（ｙ，ｄ）を実行し、またその返り値の集合の要素ｚにつきＦ（ｚ，ｄ）を実行し、またその返り値の要素につき・・・と再帰的に繰り返して空集合が返されるまで続け、空集合が返された時点でそれまでに返り値に含まれていた物体要素全てを集合に入れて返す関数であるとする。
【００６８】
更に、関数Ｈ（ｘ，ｄ）（ｘは物体要素、ｄは正の数）は、関数Ｇ（ｘ，ｄ）の返り値の集合の要素の数を返す関数であるとする。
【数４】
0004938617.tif 000009
上式のように関数Ｈ’（ｘ，ｄ）を定義したとき、Ｈ’（ｘ，ｄ）の値が所定の閾値を超えているならば、Ｇ（ｘ，ｄ）にノイズが含まれている可能性が高いことになる。従って、Ｇ（ｘ，ｄ）の物体要素全てについて面積に関する偏差値を求め、その偏差値が５０に近いものをノイズであると判断して、除去する。
【００６９】
上記の関数Ｆ、Ｇ、Ｈ、Ｈ’による判断及び除去は、例えば、３×３＝９分割の分割画面ごとになされてもよい。
【００７０】
この時点で残っている物体要素はマーカとすることができる。前に説明したように、マーカでは重心と速度（ベクトル）が重要であるから、上記［数２］の式に従いマーカの重心を求め、更に速度ベクトルを求めておく。まずこの時点で、現フレーム上の各物体要素と、一つ前のフレーム上の各物体要素とを対比させて、同じ物体要素を結び付ける（Ｓ０８０８）。前後２つのフレーム間で同じ物体要素を結び付けるに当たっては、重心座標が同じ又は重心座標の差異が所定値以下である２つの物体要素を、同じ物体要素とすればよい。また、後続のフレームにおける処理のために、この時点での物体要素を含む現フレームのフレームデータを記録しておく。
【００７１】
次に、物体要素の速度ベクトルＭｎ→ｖを算出する（Ｓ０８１０）。速度ベクトルＭｎ→ｖは、直前の一つ又は数枚のフレームと現在のフレームとにおける同一物体要素の重心座標の差異から求められる。前にも説明したように、マーカを表示するにあたっては、マーカの撮像そのものを表示するのではなく、マーカの重心を中心とする所定半径の円（例えば、半透明の円）を表示するようにしてもよい。これに加えて、随時変化する速度ベクトルを表す矢印をマーカの重心から伸ばして示すようにしてもよい。
【００７２】
以上の工程Ｓ０２〜工程Ｓ０８、及び、工程Ｓ０８０２〜工程Ｓ０８１０により、フレーム毎のマーカが作成される。
【００７３】
［変形例１］
上記ノイズの除去の説明において、図８に示すフローチャートを用いてノイズの除去の工程を詳細に示したが、ノイズの除去の工程は上述のものに限定されるわけではない。図１３に示すように、物体要素が他のサイクル状の物体要素内部にある状況を考える。なお、図１３には示されていないが、内部の物体要素は「緑」の物体要素Ｇ（Ｇｒｅｅｎ  Ａｒｅａ）、その外延にサイクル状に存在する物体要素は「青」の物体要素Ｂ（Ｂｌｕｅ  Ａｒｅａ）であるとする。
【００７４】
このようにある物体要素が別の物体要素のサイクル内に存在する場合、サイクル状の物体要素はノイズであると考えられる。
【００７５】
以下（表５）に、物体要素Ｇが別の物体要素Ｂのサイクル内に存在するのか否かを判定する工程を述べる。判定する工程は、図８のフローチャートを構成する各工程間のどこで行われてもよいし、工程Ｓ０８１０の後に行われてもよい。
【００７６】
[表５]
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の中にある。
}
【００７７】
ある物体要素が別の物体要素のサイクル内に存在することを数学的に表記すると、以下のようになる。
【数５】
0004938617.tif 000010
つまり、上記３式全てを満たす有限数列｛Ｓｎ｝、自然数ｔ、自然数ｕが存在し、ｔ≠ｕであるとき、ＡｑはＡｐの内部にあることになる。
【００７８】
なお、上記表５に示す、物体要素Ｇが別の物体要素Ｂのサイクル内に存在するのか否かを判定する工程は、２次元の物体要素Ｇ、Ｂに関するものである。エレメント指向はｎ次元（ｎ≧３）の物体要素を対象にできる考え方であるから、あるｎ次元の物体要素が別のｎ次元の物体要素のサイクル内に存在するか否かの判定にもエレメント指向の考え方を利用できる。但し、ｎ次元（ｎ≧３）の物体要素のサイクル関係の判定では、２次元の物体要素のサイクル関係の判定（表５参照）よりも考慮すべき点が増大する。
【００７９】
このように、エレメント指向は、単に物体の代数幾何学的な不連続（性）を表すのに適するだけでなく、物体の位相幾何学的な特徴を表すのにも適する考え方であるといえる。
【００８０】
［変形例２］
上記マーカ作成部の説明において、マーカ作成の一例を述べたが、マーカ及びシールは上述のものに限定されるわけではない。例えば、親指には赤色のシールを、親指以外の指には黄色のシールを貼り、親指以外の指のシールの鏡像たるマーカは、上述の「対象オブジェクト操作部」の説明で述べたマーカと同じ機能を有し、親指の（赤色の）シールの鏡像たるマーカ（の表示）は、マウスのクリックの機能を有するようにしてもよい。
【００８１】
つまり、親指を曲げて親指の赤色シールがＤＶカメラに写らないようにした上で、他の４本の指でウインドウ２４を操作し、途中で親指を伸ばして親指の赤色シールがＤＶカメラに写るようにする（即ち、赤色シールの鏡像たるマーカが突然表示される）とクリック操作が発生する。
【００８２】
また、左手の親指には赤色のシールを、右手の５本の指には黄色のシールを貼り、右手の指のシールの鏡像たるマーカは、上述の「対象オブジェクト操作部」の説明で述べたマーカと同じ機能を有し、左手親指の（赤色の）シールの鏡像たるマーカの表示は、マウスのクリックの機能を有するものであってもよい。
【００８３】
また、シールがストロー等の短い棒状物の先端に貼られ、操作者がそのストローをくわえ口によりシール及びマーカを動かすようにしてもよい。
【００８４】
タッチスクリーンがマーカの入力源（マーカ情報取得部１４）であってもよい。つまり、画面がタッチスクリーンを兼ねており、その画面への圧力を伴う接触による接触領域がマーカとなるようにしてもよい。
【図面の簡単な説明】
【００８５】
【図１】本発明に係るオブジェクト操作装置の概略の機能を示すブロック図である。
【図２】本発明に係るオブジェクト操作装置における、シールとマーカの関係を示す図である。
【図３】指先にシールを付した様子を示す図である。
【図４】鏡像たるマーカの画像（図４（１））が、ウインドウを表示する画面（図４（２））に重ねられて、マーカとウインドウ（オブジェクト）とを表示する画面となる様子を模式的に示す図である。
【図５】マーカとウインドウとの関係を示す６つの図である。
【図６】マーカからウインドウの辺への作用を説明するための図である。
【図７】本発明に係るオブジェクト操作装置におけるマーカ作成部の、フレーム単位の画像データからマーカを抽出するまでの処理のフローチャート図である。
【図８】図７に示すフローチャート図における「ノイズを除去する」工程（Ｓ０８）を更に詳細化したフローチャート図である。
【図９】従来技術のラベリング処理とエレメント指向との対比を示す概念図である。
【図１０】画面上の物体要素の例を示す図である。
【図１１】本明細書におけるマーカ、レシーバ、テンプレート及びオペレーションの表記法を示す一覧表である。
【図１２】本明細書におけるエレメント指向表記法を示す一覧表である。
【図１３】２つの物体要素の例を示す図である。
【符号の説明】
【００８６】
２・・・オブジェクト操作装置、４・・・表示装置、８・・・コンピュータ、１０・・・デジタル撮像装置（ＤＶカメラ）、１２・・・シール、１４・・・マーカ情報所得部、１６・・・マーカ作成部、１８・・・マーカ表示部、２０・・・対象オブジェクト操作部、２２・・・マーカ、２４・・・ウインドウ。
【図１】
0004938617.tif 000011
【図２】
0004938617.tif 000012
【図３】
0004938617.tif 000013
【図４】
0004938617.tif 000014
【図５】
0004938617.tif 000015
【図６】
0004938617.tif 000016
【図７】
0004938617.tif 000017
【図８】
0004938617.tif 000018
【図９】
0004938617.tif 000019
【図１０】
0004938617.tif 000020
【図１１】
0004938617.tif 000021
【図１２】
0004938617.tif 000022
【図１３】
0004938617.tif 000023