(57)【要約】【課題】グラフィックオブジェクトの重心の包含関係の分類を利用した、仮想空間でのインタラクションよって命令を生成するインタフェース方法を提供する。【解決手段】ビデオカメラで撮影した映像からユーザのみを切り出したものとオブジェクトとの、映像上での重なりの重心が、ユーザとオブジェクトとのどの領域に属すかという帰属情報と、生成と消滅というイベントと、を得る。それらにより、１つのオブジェクトに対する複数の命令を区別するインタフェース方法と装置。 【選択図】図１
2012014550.tif 000002
【特許請求の範囲】
【請求項１】
ユーザを撮影しライブ映像を取得する撮影手段と、該ライブ映像から背景差分法よりユーザ領域を抽出するユーザ領域抽出手段と、１つまたは複数のオブジェクト画像と該オブジェクト画像の領域を表すオブジェクト領域を提供するオブジェクト提供手段と、該ユーザ領域と該オブジェクト領域と、が同じピクセル座標のピクセルを持つか否かを表す重なり判定データを作り出す重なり判定手段と、該ユーザ領域と該オブジェクト領域と、の重なり領域の重心である重なり重心を算出する重心計算手段と、該重なり重心から、該オブジェクト画像および該オブジェクト領域の、移動の向きと大きさ、または回転の中心と角度と、を表す特徴量を算出する特徴量計算手段と、該特徴量によって該オブジェクト画像および該オブジェクト領域を移動または回転させるオブジェクト加工手段と、該ライブ映像のうち該ユーザ領域に含まれるピクセルにより上書きされた、該オブジェクト画像のうち該オブジェクト領域に含まれるピクセルである合成映像を作り出す映像重ね合わせ手段と、該合成映像を表示する表示手段と、を備え、ユーザによってオブジェクトを操作するインタフェース方法において、
該重なり重心の位置と該ユーザ領域と該オブジェクト領域から、該重なり重心が該ユーザ領域と該オブジェクト領域の両方にあるか、該ユーザ領域だけにあるか、該オブジェクト領域だけにあるか、どちらにもないか、のいずれの場合かを分類した重心帰属データを作り出す重心帰属分類手段と、過去の該重なり判断データである重なり履歴情報を格納する重なり履歴格納手段と、該重なり履歴情報と該重なり判定データから、該重なり履歴情報と該重なり判定データの両方が重なっているという判定か、該重なり履歴情報だけが重なっているという判定か、該可な重なり判定データだけが重なっているという判定か、どちらも重なっていないという判定か、のいずれの場合かを分類したイベントを作り出すイベント分類手段と、該イベントと該帰属判断データから移動および回転するという命令種類である操作命令信号を作り、該操作命令信号に該特徴量を割り当てる操作命令生成手段と、を備えたことを特徴とするインタフェース方法。
【請求項２】
前記操作命令および前記特徴量を、外部機器の命令および指示値に変換する外部機器用命令意味変換手段を備えることを特徴とする請求項１および請求項２のグラフィック特徴量計算機。
【請求項３】
前記外部機器はコンピュータであり、該コンピュータのソフトウエアとインタラクションすることを特徴とする請求項３のグラフィック特徴量計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックオブジェクトの重心を用いた、仮想空間でのインタラクションよって命令を生成するインタフェース方法に関する。
【背景技術】
【０００２】
日常的な身体動作で遠隔機器を操作できるようにするための技術として、操作者をビデオ撮影して映像化し、その映像と操作対象を表すグラフィックオブジェクトとのインタラクションを通じて、実際の機器に命令を入力する方法が知られている。従来、このような技術では、ビデオカメラで撮影されたユーザ映像の重心位置を、機器を制御するためのパラメータとして利用していた。
【０００３】
たとえば、特開２００６―２６８２０９では、ユーザの手の映像の重心が操作対象を表すグラフィックオブジェクトの領域に含まれたときに、ユーザがダイアルを“選択（接触）”したと解釈し、対応する命令を発行する。
【０００４】
また、特開平７−２８１６６６では、ユーザ映像の領域が、操作対象のオブジェクトの領域に重なったときに、「選択（接触）」したと解釈されるだけでなく、同時に、重なった領域の重心とユーザ映像の重心の離間距離にもとづいて「入力データ」（入力パラメータ）を生成する。これによってあたかも音量レバーを押下する操作感覚を実現できる。
【０００５】
映像重心を用いて実現できるインタラクションは１種類だけではない。たとえば、実世界で物体を手で押して動かすには、物体の後ろから重心に向かって押せばよい。このインタラクションを前述の特開平７−２８１６６６の映像重心を用いて仮想空間に実現するには、ユーザ映像とグラフィックオブジェクトとの重なり重心（複数の映像が重なっている領域の重心）の移動の、オブジェクト重心に向かう成分だけオブジェクトを移動させればよい。別のインタラクションとして、オブジェクトをダイアルのように回転させるには、重なり重心の、あらかじめ定めた点を回転中心とする回転角度だけオブジェクトを回せばよい。
【０００６】
このように、映像の重心位置をパラメータとして用いることで、仮想空間内の身体を用いたインタラクションを、実世界でのある種の物理的なインタラクションのように、多様でなめらかかつ直観的なものにすることが可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６―２６８２０９
【特許文献２】特開平７−２８１６６６
【発明の開示】
【発明が解決しようとする課題】
【０００８】
実世界にはダイアル付きリモコンのように、回転して状態を変えると同時に移動させることが可能なものもある。このように現実のオブジェクトは複数のインタラクションに応答することが一般的である。仮想世界のインタラクションの現実感と機能を高めるためにこのような複数のインタラクションを１つの仮想オブジェクトに実現することがのぞましい。
【０００９】
しかしながら重心の位置にもとづく従来手法では、複数のインタラクションを１つのオブジェクトに実現することは困難である。たとえば、前述のダイアルを上記方法（重なり重心の平行移動）で押して動かせるようにすることを考える。単純に、押す機能と回す機能を同居させただけでは、押す向きがぴったり中心に向かうか、中心からぴったり等距離になるように動かない限り、移動の成分と回転の成分の両方が現れてしまい、二つの操作を使い分けることが困難になる。
このように、一般に１つのオブジェクトに複数の種類のインタラクションをわりあてることを映像内の重心位置を用いた技術だけで実現することは困難である。
【００１０】
本発明は、従来技術が抱える上記問題点を解決するためになされた。すなわち、できるだけ多くのインタラクションを１つのオブジェクト上に実現し、仮想世界のインタラクションの現実感と機能を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
ユーザを撮影しライブ映像を取得する撮影手段と、該ライブ映像から背景差分法よりユーザ領域を抽出するユーザ領域抽出手段と、１つまたは複数のオブジェクト画像と該オブジェクト画像の領域を表すオブジェクト領域を提供するオブジェクト提供手段と、該ユーザ領域と該オブジェクト領域と、が同じピクセル座標のピクセルを持つか否かを表す重なり判定データを作り出す重なり判定手段と、該ユーザ領域と該オブジェクト領域と、の重なり領域の重心である重なり重心を算出する重心計算手段と、該重なり重心から、該オブジェクト画像および該オブジェクト領域の、移動の向きと大きさ、または回転の中心と角度と、を表す特徴量を算出する特徴量計算手段と、該特徴量によって該オブジェクト画像および該オブジェクト領域を移動または回転させるオブジェクト加工手段と、該ライブ映像のうち該ユーザ領域に含まれるピクセルにより上書きされた、該オブジェクト画像のうち該オブジェクト領域に含まれるピクセルである合成映像を作り出す映像重ね合わせ手段と、該合成映像を表示する表示手段と、を備え、ユーザによってオブジェクトを操作するインタフェース方法において、該重なり重心の位置と該ユーザ領域と該オブジェクト領域から、該重なり重心が該ユーザ領域と該オブジェクト領域の両方にあるか、該ユーザ領域だけにあるか、該オブジェクト領域だけにあるか、どちらにもないか、のいずれの場合かを分類した重心帰属データを作り出す重心帰属分類手段と、過去の該重なり判断データである重なり履歴情報を格納する重なり履歴格納手段と、該重なり履歴情報と該重なり判定データから、該重なり履歴情報と該重なり判定データの両方が重なっているという判定か、該重なり履歴情報だけが重なっているという判定か、該可な重なり判定データだけが重なっているという判定か、どちらも重なっていないという判定か、のいずれの場合かを分類したイベントを作り出すイベント分類手段と、該イベントと該帰属判断データから移動および回転するという命令種類である操作命令信号作り、該操作命令信号に該特徴量を割り当てる操作命令生成手段と、を備えたことを特徴とするインタフェース方法。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、できるだけ多くのインタラクションを１つのオブジェクト上に実現し、仮想世界のインタラクションの現実感と機能を向上させることを目的とする。
【発明を実施するための形態】
【００１３】
［実施形態１］
本発明の実施形態１について図面を参照して説明する。なお、同一部位は同一符号で示し、重複した説明を省略する。
【００１４】
まず、本発明に係わる情報の流れについて図１を参照しながら以下で説明する。図でボックスはフレームごとに行う処理の機能モジュールを表し、矢印は機能モジュール間の情報の流れを表す。行き先のボックスよりも下に描かれたボックスから出る矢印で表された情報は、次のフレームで用いるものであり、上から下への矢印のみを出すボックスの処理が終わった後に出力される。なお説明で言及されるハードウエアについてはハードウエア構成（後述、図２）を参照し、各機能モジュールの詳細については後述を参照のこと。
【００１５】
ビデオカメラ（撮影手段）２１によって、ユーザの全身または身体部位を撮影し、そのライブ映像を接続されたＰＣ２４内のライブ映像取得器に送る。
【００１６】
ライブ映像取得器（ライブ映像取得手段） １は、ビデオカメラ２１からのライブ映像をフレームごとにピクセルごとのデータとしてとりこみ、ユーザ領域抽出器２（ユーザ領域抽出手段）および映像重ね合わせ器１４（映像重ね合わせ手段）に送る。
【００１７】
ファイルシステム２２には背景画像（ビデオカメラ２１でユーザがいない状態で撮った静止物体のみの画像）、オブジェクト画像、オブジェクト可触領域情報、オブジェクト可視領域情報、オブジェクトの変換特徴量（変換で用いるパラメータ）の初期値がそれぞれ、背景画像ファイル、オブジェクト画像ファイル、オブジェクト可触領域定義ファイル、オブジェクト可視領域定義ファイル、変換特徴量定義ファイルとして格納されている。これらはそれぞれ、ユーザ領域抽出器２、オブジェクト画像格納器３、オブジェクト可触領域格納器４、オブジェクト可視領域格納器５、変換特徴量格納器１０１に送られる。
【００１８】
ユーザ領域抽出器２は、後述の背景差分法によって、ファイルシステム２２から取得した背景情報を用いてライブ映像取得器で得られるライブ映像のフレームからユーザの領域情報（各ピクセルがユーザの領域に含まれるか否かの情報）を抽出し、得たユーザ領域情報を重なり判定器９（重なり判定手段）、重心帰属分類器１０２、重心計算器１０、映像重ね合わせ器１４に送る。
【００１９】
オブジェクト画像格納器５（オブジェクト画像提供手段）は、ファイルシステム２２から一度だけ、オブジェクト画像ファイルの内容をメモリ２７内の初期オブジェクト画像格納エリアＭ４（詳細後述）にロードする。このメモリ領域はオブジェクト画像加工器８から参照される。
【００２０】
オブジェクト可触領域格納器３（オブジェクト可触領域提供手段）は、ファイルシステム２２から一度だけ、オブジェクト可触領域定義ファイルの内容をメモリ２７内の初期オブジェクト可触領域格納エリアＭ２にロードする。このメモリ領域の内容は初期オブジェクト可触領域情報としてオブジェクト可触領域加工器６（オブジェクト可触領域加工手段）から参照される。
【００２１】
オブジェクト可視領域ローダ４（オブジェクト可視領域提供手段）は、ファイルシステム２２から一度だけ、オブジェクト可視領域定義ファイルの内容をメモリ２７内の初期オブジェクト可視領域格納エリアＭ３にロードする。このメモリ領域の内容は初期オブジェクト可視領域情報としてオブジェクト可視領域加工器７（オブジェクト可視領域加工手段）から参照される。
【００２２】
変換特徴量格納器１０１は、ファイルシステム２２から一度だけ、変換特徴量定義ファイルを読み込み、回転中心の初期位置と現フレームの変換特徴量を保持する。これらの値はオブジェクト画像加工器８、オブジェクト可触領域加工器６、オブジェクト可視領域加工器７、グラフィック変換特徴量計算器１２、変換特徴量更新器１３で参照される。これらのうち変換特徴量はフレームごとの処理（図１）の最後に次フレームの変換特徴量に置き換えられる。これらの値の格納にはレジスタ２６内の専用レジスタを用いている。
【００２３】
オブジェクト画像加工器８は、現フレームの変換特徴量に従い初期オブジェクト画像に対して移動・回転等の変換を施し、得たオブジェクト画像を映像重ね合わせ器１４に送る。
【００２４】
オブジェクト可触領域加工器６は、現フレームの変換特徴量に従って初期オブジェクト可触領域に対して移動・回転等の変換を施し、得たオブジェクト可触領域を重なり判定器９、重心計算器１０、重心帰属分類器１０２に送る。
【００２５】
オブジェクト可視領域加工器７は、現フレームの変換特徴量に従って初期オブジェクト可視領域に対して移動・回転等の変換を施し、得たオブジェクト可視領域を映像重ね合わせ器１４に送る。
【００２６】
重なり判定器９は、ユーザ領域とオブジェクト可触領域との重なり（重なっているか否か）を判定する。すなわちユーザ領域およびオブジェクト可触領域の両方が同じピクセル座標のピクセルを持つか否かを判断する。ここで得た重なり判定結果を重なり履歴更新器１０５（重なり履歴更新手段）、イベント分類器１０４、重心計算器１０、重心帰属分類器１０２に送る。
【００２７】
重なり履歴格納器１０３は、当該フレームの処理開始時には前フレームの重なり判定結果が格納されている。この値の格納にはレジスタ２６内の専用レジスタを用いている。ここに格納された判定結果はイベント分類器１０４で用いられる。この値はその後、後述するように、重なり履歴更新器１０５によって現フレームの重なり判定結果に置き換えられる。
【００２８】
重心計算器１０は、重なり判定器で得られた重なり判定がＹｅｓの場合のみ、ユーザ領域抽出器２とオブジェクト可触領域加工器６の出力を用いて重なり領域の重心の位置を算出し、得た重心位置を重心帰属分類器１０２、グラフィック変換特徴量計算器１２に送る。
【００２９】
重心帰属分類器１０２は、重なり判定がＹｅｓの場合のみ重なり重心がオブジェクト領域に含まれるか否か、およびユーザ領域に含まれるか否かを判定し、結果をグラフィック操作命令生成器１０６に送る。以下で、重なり重心が含まれる領域については、重なり重心がオブジェクト領域やユーザ領域に帰属していると表記する場合もある。
【００３０】
イベント分類器１０４は、重なり判定結果と重なり判定結果履歴をもとに１フレーム前の重なり（Ｙｅｓ／Ｎｏ）と現フレームの重なり（Ｙｅｓ／Ｎｏ）の組み合わせが４つのうちいずれであるかをイベントとしてグラフィック操作命令生成器１０６に送る。
【００３１】
重なり履歴更新器１０５は、前述したように、重なり判定器１０３の結果を重なり履歴格納器１０４に格納する。
【００３２】
グラフィック操作命令生成器１０６は、イベントと帰属種に応じてあらかじめ定められた命令（グラフィック操作命令）を生成しグラフィック変換特徴量計算器１２、変換特徴量更新器１３、外部機器用操作命令意味変換器３１に送る。
【００３３】
グラフィック変換特徴量計算器１２は、グラフィック操作命令に応じて、変換特徴量と重なり重心位置から既定の演算により算出されるパラメータからなる、オブジェクトのグラフィックを変換・加工するためのグラフィック変換特徴量を生成し、変換特徴量更新器１３と外部機器用操作命令意味変換器３１に送る。
【００３４】
変換特徴量更新器１３は、変換特徴量格納器１０１から取得した現フレームのグラフィックの変換特徴量のうち、グラフィック操作命令生成器１０６が生成した命令ごとにあらかじめ定めたものの値、にグラフィック変換特徴量計算器１２で得られた値を加算して得た結果で変換特徴量格納器１０１が保持する変換特徴量を更新する。
【００３５】
外部機器用操作命令意味変換器３１は、グラフィック変換特徴量とグラフィック操作命令を、外部機器３２に固有の、あらかじめ定めた外部機器操作命令に変換し、得た外部機器用操作命令を外部機器３２に送る。
【００３６】
外部機器３２は、操作対象の機器であって、外部機器３２に固有の操作命令で動作するものである。
【００３７】
映像重ね合わせ器１４は、オブジェクト画像のうちオブジェクト可視領域で定義されている部分の情報と、ライブ映像のうちユーザ領域情報によって定義されている部分の情報を白い背景上に重ね合わせ、得た合成映像をディスプレイ２３（表示手段）に送る。
【００３８】
ディスプレイ２３は、合成映像を表示する。
【００３９】
図２は、本実施形態のハードウエア構成図である。ビデオカメラ２１、ディスプレイ２３、外部機器３２、ビデオ画像取得器１〜映像重ね合わせ器１４までの各種処理器を備えた（インストールした）ＰＣ２４で構成される。ＰＣ２４は、ＣＰＵ２５（演算部）、メモリ２７、レジスタ２６、ファイルシステム２２（ハードディスク）、を備えている。
【００４０】
各処理器は、本実施形態のように汎用のＰＣ上に構築する代わりに、機能モジュールごとに専用の装置を用いても良い。
【００４１】
以下、画像を構成するピクセルの配置が横Ｎ縦Ｍ（ピクセル）であることをピクセルＮ×Ｍのように表す。ピクセルの位置を横縦それぞれ何番目かを示す数字の組（ｘ，ｙ）をピクセル座標と呼ぶ。以下で画像に関する幾何学的言及においては、この座標系を仮定するものとする。画像がピクセルＮ×Ｍであるとき、横０〜Ｎ−１、縦０〜Ｍ−１、の範囲をピクセル座標の有効範囲と呼ぶ。Ｎ、Ｍの値を当該画像の横幅、高さと呼ぶ。なお、本実施形態で取り扱う画像は主にピクセル３２０×２４０である。
【００４２】
本実施形態で使用する各種データが格納される専用メモリについて説明する。この専用メモリは１ワード３２ビットの列で構成されていて、メモリ２７の一部を用いている。この専用メモリは格納されるデータごとのセグメントに分かれている。セグメントの先頭アドレスを当該セグメントのオフセットと呼び、セグメントに含まれるワード数を当該セグメントのサイズと呼ぶ。オフセットがｆであるようなセグメントに含まれるアドレスｆ＋ｍ(０ ≦ ｍ < 当該セグメントのサイズ)のことを「当該セグメントのｍ番地」と呼ぶことにする。さらに、セグメントがピクセル３４０×２４０の画像または領域情報を格納する場合、アドレスｆ＋２４０×ｘ＋ｙはピクセル座標（ｘ，ｙ）のピクセル値が格納されるので「当該セグメントの（ｘ，ｙ）番地」と呼ぶことにする。
【００４３】
ひとつのセグメントすべてのビットを０にすることをセグメントのゼロリセットと呼ぶことにする。また、サイズ３２０×２４０のセグメントに格納するものがピクセル３２０×２４０の画像または領域情報である場合、ｘ＝０〜３１９、ｙ＝０〜２３９のすべてのｘ、ｙに対してセグメントの（ｘ，ｙ）番地に画像または領域情報Ｇのピクセル座標（ｘ，ｙ）のピクセル値を格納することを、当該セグメントにＧを格納すると呼ぶことにする。さらに、ピクセルデータは、３２ビットのうち下位２４ビットを高位から８ビットごとに赤・緑・青と区切った値で表す。たとえば、赤色を１６進数で表記と０ｘ００ＦＦ００００となる。
【００４４】
専用メモリを構成するセグメントＭ１〜Ｍ１１の詳細は以下のとおりである。セグメントの配置例を図３に示す。
【００４５】
Ｍ１は、サイズ３２０×２４０ワードのセグメントであって、ライブ映像格納エリアである。このセグメントには、ビデオカメラ２１からのライブ映像の１フレームのピクセルデータ（ピクセル３２０×２４０）が格納される。このセグメントは、一定周期ごとにビデオカメラ２１からのライブ映像が格納され更新される。
【００４６】
Ｍ２は、サイズ３２０×２４０ワードのセグメントであって、初期オブジェクト可触領域格納エリアである。このセグメントは、ピクセルごとに、その場所がオブジェクト可触領域に含まれるか否かを表す値１、０を格納する。これらの値全体によって回転・移動等加工前のオブジェクト可触領域が指定される。オブジェクト可触領域を回転・移動等加工するときに、これらの値を用いる。
【００４７】
Ｍ３は、サイズ３２０×２４０ワードのセグメントであって、初期オブジェクト可視領域格納エリアである。このセグメントは、ピクセルごとに、その場所がオブジェクト可視領域に含まれるか否かを表す値１、０を格納する。これらの値全体によって回転・移動等加工前のオブジェクト可視領域が指定される。オブジェクト可視領域を回転・移動等加工するときに、これらの値を用いる。
【００４８】
Ｍ４は、サイズ３２０×２４０ワードのセグメントであって、初期オブジェクト画像格納エリアである。このセグメントにはオブジェクト画像のピクセルデータが格納される。これらの値は回転・移動等加工して現フレームのオブジェクト画像を得るためのオブジェクト原画像として用いられる。
【００４９】
Ｍ５は、サイズ３２０×２４０ワードのセグメントであって、ユーザ領域格納エリアである。このセグメントは各ピクセルがユーザ領域に含まれるか否かを表す値１、０を格納する。このデータがユーザの領域を表現する。
【００５０】
Ｍ６は、サイズ３２０×２４０ワードのセグメントであって、背景画像格納エリアである。このセグメントは背景画像のピクセルデータにセットされる。このデータは背景差分法の背景画像として利用される。
【００５１】
Ｍ７は、サイズ３２０×２４０ワードのセグメントであって、オブジェクト可触領域格納エリアである。このセグメントは、各ピクセルがオブジェクト可触領域に含まれるか否かを表す値１、０を格納する。これらの値全体によってオブジェクトの領域が表される。
【００５２】
Ｍ８は、サイズ３２０×２４０ワードのセグメントであって、オブジェクト可視領域格納エリアである。このセグメントは、各ピクセルがオブジェクト可視領域に含まれるか否かを表す値１、０を格納する。これらの値全体によってオブジェクトの領域が表される。
【００５３】
Ｍ９は、サイズ３２０×２４０ワードのセグメントであって、オブジェクト画像格納エリアである。このセグメントにはオブジェクト画像のピクセルデータが格納される。
【００５４】
Ｍ１０は、サイズ３２０×２４０ワードのセグメントであって、表示用映像格納エリアである。このセグメントは、オブジェクト映像の各ピクセルを、ユーザ領域の同じ位置のピクセルの値が１の場合に限り、ライブ映像格納エリアＭ１の当該ピクセルの値で置き換えたものを格納している。このデータは、ディスプレイ２３に表示する映像である。
【００５５】
本実施形態で使用する各種データが格納されるレジスタについて説明する。このレジスタは１ワード３２ビットの列で構成されていて、レジスタ２６の一部を用いている。この専用レジスタは格納されるデータごとのセグメントに分かれている。なお、以下で「レジスタｚ」は格納場所として言及するときはレジスタzそのものを、値として参照するときはレジスタｚに格納された値を、意味する。
【００５６】
レジスタＸおよびＹは、画像を格納したセグメントの（Ｘ，Ｙ）番地を指定するときに使用されるもので複数のモジュールで利用される。
【００５７】
専用レジスタについて説明する。この専用レジスタはレジスタ２６の一部を用いている。専用レジスタは２４個あり、それぞれは１ワードである。
【００５８】
次に説明する７つのレジスタ（ＩｎｉｔＣｅｎｔｅｒＸ、ＩｎｉｔＣｅｎｔｅｒＹ、Ｒｏｔａｔｅ、ＣｅｎｔｅｒＸ、ＣｅｎｔｅｒＹ、ＤｉｓｐｌａｃｅｍｅｎｔＸ、ＤｉｓｐｌａｃｅｍｅｎｔＹ）（変換特徴量格納手段）は、初期オブジェクト可触領域、初期オブジェクト可視領域、初期オブジェクト画像の変換に用いる変換特徴量を格納する。
【００５９】
レジスタＩｎｉｔＣｅｎｔｅｒＸ, ＩｎｉｔＣｅｎｔｅｒＹは回転変換で用いる中心座標（Ｘ，Ｙ）の初期値を格納する。
【００６０】
レジスタＲｏｔａｔｅは、初期オブジェクト画像をどれだけ回転すべきかを示す値（ラジアン）を格納する。
【００６１】
レジスタＣｅｎｔｅｒＸおよびＣｅｎｔｅｒＹは、回転中心のピクセル座標（ｘ，ｙ）を格納する。
【００６２】
レジスタＤｉｓｐｌａｃｅｍｅｎｔＸおよびＤｉｓｐｌａｃｅｍｅｎｔＹは、オブジェクトの初期位置からの変位量のｘ、ｙ成分（ピクセル）を格納する。
【００６３】
レジスタＰｒｖＯｖｅｒｌａｐは重なり履歴格納エリア（重なり履歴格納手段）である。このレジスタは、ユーザ領域とオブジェクト領域が前フレームで重なっていたか否かを表す値１、０を保持する。
【００６４】
レジスタＧｒａｖｉｔｙＸおよびＧｒａｖｉｔｙＹは、重なり領域の重心のピクセル座標（ｘ，ｙ）を格納する。
【００６５】
レジスタＰｒｖＧｒａｖｉｔｙＸおよびＰｒｖＧｒａｖｉｔｙＹは、前の重なり領域の重心のピクセル座標（ｘ，ｙ）を格納する。
【００６６】
レジスタＯｒｉｇｉｎａｌＸおよびＯｒｉｇｉｎａｌＹは、オブジェクトを移動・回転等加工するときの移動元のピクセル座標（ｘ，ｙ）を格納する。
【００６７】
レジスタＯｖｅｒｌａｐは、ユーザ領域とオブジェクト領域と、が同じピクセル座標を持っているか否かを重なり判定結果として格納する。
【００６８】
レジスタＣＯＵＮＴは、重なり領域が何ピクセルあるかを表す値を格納する。この値は、重なり重心を算出するときに用いる。
【００６９】
レジスタｔｏｔａｌＸおよびｔｏｔａｌＹは、ピクセルのｘ ，ｙ座標それぞれの重なり領域全体にわたる和を格納する。
【００７０】
レジスタＥＶＥＮＴはイベント分類の結果を０〜３の値として格納する。
【００７１】
レジスタＩＮ＿ＵＳＥＲは重なり重心がユーザ領域に帰属するか否かを１、０の値として格納する。
【００７２】
レジスタＩＮ＿ＯＢＪＥＣＴは重なり重心がオブジェクト可触領域に帰属するか否かを１，０の値として格納する
【００７３】
次に説明する４つのレジスタは、操作命令用の値を格納する。
【００７４】
レジスタＯｂｊｅｃｔＣｏｍｍａｎｄは、グラフィック操作命令を格納する。
【００７５】
レジスタＤｉｆｆｅｒｅｎｃｅＲｏｔａｔｅは、次フレームで加算すべきグラフィック変換特徴量のうち回転角（ラジアン）を格納する。
【００７６】
レジスタＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸおよびＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹは、次フレームで加算すべきグラフィック変換得量のうち移動量のｘ，ｙ成分（ピクセル）を格納する。
【００７７】
次に、上記モジュールごとの詳細処理について、フローチャートを用いて説明する。
【００７８】
ビデオカメラ２１では、ユーザを含む映像を取得する。本実施例では、解像度３２０×２４０のビデオカメラを１台用いる。
【００７９】
ライブ映像取得器１の処理フローを、図４を参照しながら説明する。ステップＡ１では、ビデオカメラ２１から１フレーム分の画像を取得し、得た画像のピクセルデータをライブ映像格納エリアＭ１に格納する。
【００８０】
オブジェクト可触領域格納器３の処理フローを、図５を参照しながら説明する。ステップＢ１では、ファイルシステム２２からオブジェクト可触領域定義ファイルを読み込む。このオブジェクト可触領域定義ファイルは、ピクセル３２０×２４０の画像に対応したピクセルごとにオブジェクト可触領域に含まれるか否かを示す値（１，０）を記述したものである。得たオブジェクト可触領域情報を初期オブジェクト可触領域格納エリアＭ２に格納する。
【００８１】
オブジェクト領域格納器Ｍ５の処理フローを、図６を参照しながら説明する。ステップＣ１では、ファイルシステム２２からオブジェクト可視領域定義ファイルを読み込む。このオブジェクト可視領域定義ファイルは、ピクセル３２０×２４０の画像に対応したピクセルごとにオブジェクトが可視領域に含まれるか否かを示す値（１，０）を記述したものである。得たオブジェクト可視領域情報を初期オブジェクト可視領域格納エリアＭ３に格納する。
【００８２】
オブジェクト画像格納器５の処理フローを、図７を参照しながら説明する。ステップＤ１では、ファイルシステム２２からオブジェクト画像ファイルを読み込み、得たオブジェクト画像のピクセルデータを初期オブジェクト画像格納エリアＭ４に格納する。
【００８３】
変換特徴量格納器の処理フローを、図８を参照しながら説明する。ステップＥ１では、ファイルシステム２２から変換特徴量定義ファイルを読み込む。この変換特徴量定義ファイルは、オブジェクトを移動・回転等加工するための、移動ベクトルのｘ，ｙ成分（ピクセル）、回転中心（ピクセル座標）、回転角（ラジアン）を記述したものである。これらの値は、ＩｎｉｔＣｅｎｔｅｒＸ、ＩｎｉｔＣｅｎｔｅｒＹには回転中心の初期のピクセル座標（ｘ，ｙ）, Ｒｏｔａｔｅには回転角、ＣｅｎｔｅｒＸには回転中心のピクセル座標のｘ成分、ＣｅｎｔｅｒＹには回転中心のピクセル座標のｙ成分、ＤｉｓｐｌａｃｅｍｅｎｔＸには移動量のｘ成分、ＤｉｓｐｌａｃｅｍｅｎｔＹには移動量のｙ成分が格納される。
【００８４】
ユーザ領域抽出器２の処理フローを、図９を参照しながら説明する。ステップＦ１では、背景画像格納エリアＭ６にファイルシステム２２から読み込んだ背景画像を格納する。ステップＦ２では、ＸおよびＹをゼロリセットする。
【００８５】
ステップＦ３では、ライブ映像の各ピクセルが背景のものであるかユーザのものであるかを判断する。このことは、ライブ映像格納エリアＭ１の（Ｘ，Ｙ）番地に格納されている値と背景画像格納エリアＭ６の（Ｘ，Ｙ）番地に格納されている値が同じか否かを判断することによる。具体的には、同じである場合には、判断結果がＹｅｓとなり、ステップＦ４に進む。一方、異なる場合には、判断結果はＮｏとなり、ステップＦ５に進む。ステップＦ４では、ユーザ領域格納エリアＭ５の（Ｘ，Ｙ）番地に値０を格納する。ステップＦ５では、ユーザ領域格納エリアＭ５の（Ｘ，Ｙ）番地に値１を格納する。ここで、値０はライブ映像のその座標のピクセルデータと背景画像の該当ピクセルデータとが一致しないことを表し、値１は一致することを表す。ステップＦ６では、Ｙを１インクリメントする。ステップＦ７では、セグメントの縦方向の座標が画像の高さより大きいか否かを判断する。このことは、Ｙが配列サイズ２４０以上か否かを判断することによる。具体的には、２４０より小さい場合には、判断結果がＮｏとなり、前述のステップＦ３に戻る。これにより、Ｙ＝０〜２３９に対してステップＦ３〜Ｆ７が繰り返され、ピクセル座標を縦方向に１列分スキャンしてピクセルを比較したことになる。一方、２４０以上場合には、判断結果がＹｅｓになり、ステップＦ８に進む。ステップＦ８では、Ｘを１インクリメントし、Ｙをゼロリセットする。これにより、ピクセル座標は、横方向は１ピクセル進み、縦方向は先頭に戻る。ステップＦ９では、セグメントの横方向の座標が画像の横幅より大きいか否かを判断する。このことは、Ｘが配列サイズ３２０以上か否かを判断することによる。具体的には、３２０より小さい場合には、判断結果がＮｏとなり、前述したステップＦ４に戻る。これにより、Ｘ＝０〜３１９に対してステップＦ３〜Ｆ９が繰り返され、結局、ピクセル座標すべてをスキャンして１フレーム分の映像と背景を比較することになり、ユーザのみの領域を抽出したことになる。一方、大きい場合には、判断結果がＹｅｓとなり、ユーザ領域抽出の処理を終了する。
【００８６】
オブジェクト可触領域加工器４の処理フローを、図１０を参照しながら説明する。ステップＧ１では、ＸとＹをゼロリセットする。
【００８７】
初期オブジェクト可触領域格納エリアＭ２に格納された画像をθだけ回転させたり、指定された向きと大きさだけ移動させたりした画像をオブジェクト可触領域格納エリアＭ７に格納するために、初期オブジェクト可触領域格納エリアＭ２の式１で計算される番地ｕ＝（ｘ，ｙ）に格納されている値をオブジェクト可触領域格納エリアＭ７のｕ´＝（Ｘ，Ｙ）番地に格納する。
【００８８】
ステップＧ２では、ｕ´は回転および移動後の座標とし、Ｃは回転中心の座標とし、Ｄは移動量として、回転および移動前の座標ｕを式１によって算出する。具体的には、ｕはｘ成分がレジスタＸ、ｙ成分がＹであり、Ｃはｘ成分がＣｅｎｔｅｒＸ、ｙ成分がＣｅｎｔｅｒＹであり（式２）、Ｍはｘ成分がＤｉｓｐｌａｃｅｍｅｎｔＸ、ｙ成分がＤｅｓｐｌａｃｅｍｅｎｔＹであり（式３）、式１を用いて得たｕの、ｘ成分をＯｒｉｇｉｎａｌＸに、ｙ成分をＯｒｉｇｉｎａｌＹにセットする。
【数１】
2012014550.tif 000003
【数２】
2012014550.tif 000004
【数３】
2012014550.tif 000005
【数４】
2012014550.tif 000006
【００８９】
ここで、Ｒ［φ］は回転ベクトルであり、ｃｏｓφ、ｓｉｎφ、−ｓｉｎφ、ｃｏｓφから成る（式４）。
【００９０】
ステップＧ３では、変換後の画像のピクセル座標（Ｘ，Ｙ）が有効範囲内のピクセル座標を変換したものか否か、言い換えればピクセル座標（Ｘ，Ｙ）を逆変換したら有効範囲内に入るか否か、を判断する。このことは、ＯｒｉｇｉｎａｌＸが０〜３１９かつＯｒｉｇｉｎａｌＹが０〜２３９か否かを判断することによる。具体的には、ＯｒｉｇｉｎａｌＸが０〜３１９かつＯｒｉｇｉｎａｌＹが０〜２３９である場合、判断結果がＹｅｓとなり、ステップＧ４に進む。一方、それ以外の場合、判断結果はＮｏとなり、ステップＧ５に進む。ステップＧ４では、初期オブジェクト可触領域格納エリアＭ２の（ＯｒｉｇｉｎａｌＸ、ＯｒｉｇｉｎａｌＹ）番地に格納されている値をオブジェクト可触領域格納エリアＭ７の（Ｘ，Ｙ）番地に格納する。ステップＧ５では、オブジェクト可触領域格納エリアの（Ｘ，Ｙ）番地に値０を格納する。ステップＧ８では、Ｙを１インクリメントする。ステップＧ６では、セグメントの縦方向の座標が画像の高さより大きいか否かを判断する。このことは、Ｙが配列サイズ２４０以上か否かを判断することによる。具体的には、２４０より小さい場合には、判断結果がＮｏとなり、前述のステップＧ２に戻る。これにより、Ｙ＝０〜２３９に対してステップＧ２〜Ｇ７が繰り返され、ピクセル座標を縦方向に１列分スキャンしてピクセルを比較したことになる。一方、２４０以上場合には、判断結果がＹｅｓになり、ステップＧ８に進む。ステップＧ８では、Ｘを１インクリメントし、Ｙをゼロリセットする。これにより、ピクセル座標は、横方向は１ピクセル進み、縦方向は先頭に戻る。ステップＧ９では、セグメントの横方向の座標が画像の横幅よりも大きいか否かを判断する。このことは、Ｘが配列サイズ３２０以上か否かを判断することによる。具体的には、３２０より小さい場合には、判断結果がＮｏとなり、前述したステップＧ４に戻る。これにより、Ｘ＝０〜３１９に対してステップＧ４〜Ｇ１１が繰り返され、ピクセル座標すべてをスキャンしたことになる。このようにして、可触領域を回転・移動する。一方、３２０以上の場合には、判断結果がＹｅｓとなり、オブジェクト可触領域加工の処理を終了する。
【００９１】
オブジェクト可視領域加工器７の処理フローは、オブジェクト可触領域格納エリアの代わりにオブジェクト可視領域格納エリアを用いる点を除いてオブジェクト可触領域加工器６の処理フローと同じである。（図１１）
【００９２】
オブジェクト画像加工器８の処理フローは、オブジェクト可触領域格納エリアの代わりにオブジェクト画像格納エリアを用いる点を除いてオブジェクト可触領域加工器６の処理フローと同じである。（図１２）
【００９３】
重なり判定器９の処理フローを、図１３を参照しながら説明する。ステップＪ１では、ＸおよびＹをゼロリセットする。
【００９４】
ステップＪ２では、座標（Ｘ，Ｙ）のピクセルがユーザ領域およびオブジェクト可触領域のピクセル座標の少なくとも一方に含まれていないか、両方に含まれるか、を判断する。このことは、ユーザ領域格納エリアＭ５の（Ｘ，Ｙ）番地に格納されている値またはオブジェクト可触領域格納エリアＭ７の（Ｘ，Ｙ）番地に格納されている値のどちらかが０であるか否かを判断するによる。具体的には、どちらも０でない場合には、判断結果がＮｏとなり、ステップＪ８に進む。ステップＪ８では、Ｏｖｅｒｌａｐを値１にセットして重なり判定の処理を終了する。ここで、値１はユーザとオブジェクトとが重なっていることを表す。一方、共に０の場合には、判断結果がＹｅｓとなり、ステップＪ３に進む。ステップＪ３では、Ｙを１インクリメントする。ステップＪ４では、セグメントの縦方向の座標が画像の高さより大きいか否かを判断する。このことは、Ｙが配列サイズ２４０以上か否かを判断するによる。具体的には、２４０より小さい場合には、判断結果がＮｏとなり、前述のステップＪ２に戻る。これにより、Ｙ＝０〜２３９に対してステップＪ２〜Ｊ４が繰り返され、ピクセル座標を縦方向に１列分スキャンして結果を比較したことになる。一方、２４０以上場合には、判断結果がＹｅｓになり、ステップＪ５に進む。ステップＪ５では、Ｘを１インクリメントし、Ｙをゼロリセットする。これにより、ピクセル座標は、横方向は１ピクセル進み、縦方向は先頭に戻る。ステップＪ６では、セグメントの横方向の座標が画像の横幅より大きいか否かを判断する。このことは、Ｘが配列サイズ３２０以上か否かを判断するによる。具体的には、３２０より小さい場合には、判断結果がＮｏとなり、前述したステップＪ２に戻る。これにより、Ｘ＝０〜３１９に対してステップＪ２〜Ｊ６が繰り返され、ピクセル座標すべてをスキャンして判定することになり、ユーザ領域とオブジェクト可触領域が重なっているか否かを判断したことになる。一方、大きい場合には、判断結果がＹｅｓとなり重なりステップＪ７に進む。ステップＪ７ではＯｖｅｒｌａｐに値０をセットして処理を終了する。ここで、値０はユーザとオブジェクトとが重なっていないことを表す。
【００９５】
重心計算器１０の処理フローを、図１４を参照しながら説明する。ステップＫ１では、Ｘ、Ｙ、ＣＯＵＮＴ、ｔｏｔａｌＸ、ｔｏｔａｌＹをゼロリセットする。
【００９６】
ステップＫ２では、座標（Ｘ，Ｙ）のピクセルがユーザ領域およびオブジェクト可触領域のピクセル座標の両方に含まれているか否か、を判断する。このことは、ユーザ領域格納エリアＭ５の（Ｘ，Ｙ）番地に格納されている値と、オブジェクト可触領域格納エリアＭ７の（Ｘ，Ｙ）番地に格納されている値と、がともに１であるか否かを判断することによる。具体的には、どちらかが１でない場合、判断結果がＮｏとなり、ステップＫ４に進む。一方、０の場合、判断結果がＹｅｓとなり、ステップＫ３に進む。ステップＫ３では、ＣＯＵＮＴを１インクリメントし、ｔｏｔａｌＸをｔｏｔａｌＸ＋Ｘにセットし、ｔｏｔａｌＹをｔｏｔａｌＹ＋Ｙにセットする。ステップＫ４では、Ｙを１インクリメントする。ステップＫ５では、セグメントの縦方向の座標が画像の高さより大きいか否かを判断する。このことは、Ｙが配列サイズ２４０以上か否かを判断することによる。具体的には、２４０より小さい場合には、判断結果がＮｏとなり、前述のステップＫ２に戻る。これにより、Ｙ＝０〜２３９に対してステップＫ２〜Ｋ５が繰り返され、ピクセル座標を縦方向に１列分スキャンして結果を比較したことになる。一方、２４０以上場合には、判断結果がＹｅｓになり、ステップＫ６に進む。ステップＫ６では、Ｘを１インクリメントし、Ｙをゼロリセットする。これにより、ピクセル座標は、横方向は１進み、縦方向は先頭に戻る。ステップＫ７では、セグメントの横方向の座標が画像の横幅より大きいか否かを判断する。このことは、Ｘが配列サイズ３２０以上か否かを判断するによる。具体的には、３２０より小さい場合には、判断結果がＮｏとなり、前述したステップＫ２に戻る。これにより、Ｘ＝０〜３１９に対してステップＫ２〜Ｋ７が繰り返され、ピクセル座標すべてをスキャンし、計算し、重なり領域の座標の和と重なっているデータ数を取得したことになる。一方、大きい場合には、判断結果がＹｅｓとなり、ステップＫ８に進む。ステップ+Ｋ８では、ＧｒａｖｉｔｙＸをｔｏｔａｌＸ／ＣＯＵＮＴにセットし、ＧｒａｖｉｔｙＹをｔｏｔａｌＹ／ＣＯＵＮＴにセットする。これにより、ＧＸ、ＧＹに重心座標がセットされたことになる。
【００９７】
重心帰属分類器１０２の処理フローを、図１５を参照しながら説明する。ステップＬ１では、座標（Ｘ，Ｙ）のピクセルがユーザ領域およびオブジェクト可触領域のピクセル座標の少なくとも一方に含まれていないか、両方に含まれるか、を判断する。このことは、Ｏｖｅｒｌａｐに格納された値が０か否かを判断することによる。具体的には、０の場合、判断結果はＹｅｓとなり、処理を終了する。一方、０でない場合、判断結果はＮｏとなり、ステップＬ２に進む。ステップＬ２では、即ち重なり重心がユーザ領域に含まれていない（図２５）か含まれている（図２６）かを判断する。このことはユーザ領域格納エリアＭ５の（ＧｒａｖｉｔｙＸ、ＧｒａｖｉｔｙＹ）番地に格納されている値が０か否かを判断することによる。具体的には、０の場合、判断結果がＹｅｓとなり、ステップＬ３に進む。一方、０でない場合、判断結果がＮｏとなり、ステップＬ４に進む。なお、以下図では、Ｕがユーザ領域、Ｏがオブジェクト領域、Ｇは重なり重心（ＧｒａｖｉｔｙＸ、ＧｒａｖｉｔｙＹ）を表す。ステップＬ３では、レジスタＩＮ＿ＵＳＥＲを値０にセットする。ステップＬ４では、ＩＮ＿ＵＳＥＲを値１にセットする。次にステップＬ５では、重なり重心がオブジェクト可触領域に含まれていないのか含まれているのかを判断する。このことは、オブジェクト可触領域格納エリアＭ７の（ＧｒａｖｉｔｙＸ、ＧｒａｖｉｔｙＹ）番地に格納されている値が０か否かを判断することによる。具体的には、０の場合、判断結果はＹｅｓとなり、ステップＬ６に進む。一方、０でない場合、判断結果がＮｏとなり、ステップＬ７に進む。ステップＬ６では、レジスタＩＮ＿ＯＢＪＥＣＴを値０にセットする。ステップＬ７では、レジスタＩＮ＿ＯＢＪＥＣＴを値１にセットする。
【００９８】
イベント分類手段１０４の処理フローを、図１６を参照しながら説明する。ステップＭ１では、前フレームで重なり重心が存在していなかったか存在していたかを判断する。このことは、ｐｒｖＯｖｅｒｌａｐに格納されている値が０か否かを判断することによる。具体的には、０である場合、判断結果がＹｅｓとなり、ステップＭ２に進む。ステップＭ２では、座標（Ｘ，Ｙ）のピクセルがユーザ領域およびオブジェクト可触領域のピクセル座標の少なくとも一方に含まれていないか、両方に含まれるか、を判断する。このことは、Ｏｖｅｒｌａｐに格納されている値が０であるか否かを判断することによる。具体的には、ステップＭ２で、０である場合、判断結果がＹｅｓとなり、ステップＭ３に進む。一方ステップＭ２で、０でない場合、判断結果がＮｏとなり、ステップＭ４に進む。ステップＭ３では、ＥＶＥＮＴをゼロリセットする。この０という値は、重なっていないというイベント（以下でＮｏｎｅと表す）を表す。ステップＭ４では、ＥＶＥＮＴを値１にセットする。この１という値は、重なり領域が発生したというイベント（以下でＯｎｔｏｕｃｈと表す）を表す。一方ステップＭ１で、０でない場合、判断結果がＮｏとなり、ステップＭ５に進む。ステップＭ５では、映像内でユーザとオブジェクトとが重なっていないのか重なっているのかを判断する。このことは、Ｏｖｅｒｌａｐに格納されている値が０であるか否かを判断することによる。具体的には、ステップＭ５で、０である場合、判断結果がＹｅｓとなり、ステップＭ６に進む。一方、ステップＭ５で、０でない場合、判断結果がＮｏとなり、ステップＭ７に進む。ステップＭ６では、ＥＶＥＮＴを値２にセットする。この２という値は、重なり領域が消滅したというイベント（以下でＲｅｌｅａｓｅを表す）を表す。ステップＭ７では、ＥＶＥＮＴを値３にセットする。この３という値は、重なり重心が存在し続けているというイベント（以下でＩｎｔｏｕｃｈと表す）を表している。
【００９９】
重なり履歴更新器１０５の処理フローを、図１７を参照しながら説明する。ステップＮ１でレジスタＯｖｅｒｌａｐに格納された値をＰｒｖＯｖｅｒｌａｐにコピーする。これは次フレームで使用する。
【０１００】
グラフィック操作命令生成器１０６の処理フローを、図１８を参照しながら説明する。ステップＯ１ではレジスタＯｂｊｅｃｔＣｏｍｍａｎｄをゼロリセットする。ＯｂｊｅｃｔＣｏｍｍａｎｄの値が０であることは命令がない状態（「空命令」）を意味する。
【０１０１】
ステップＯ２では、映像内でユーザとオブジェクトとが重なっていないか重なっているかを判断する。このことは、レジスタＥＶＥＮＴの値が０か否かを判断することによる。具体的には、０の場合、判断結果がＹｅｓとなり、グラフィック操作命令生成の処理を終了する。一方、０でない場合、判断結果がＮｏとなり、ステップＯ３に進む。
【０１０２】
ステップＯ３では、映像内でユーザとオブジェクトとの重なりが発生したか否かを判断する。このことは、ＥＶＥＮＴの値が１か否かを判断することによる。具体的には、１の場合、判断結果がＹｅｓとなり、ステップＯ４に進む。一方、１でない場合、判断結果がＮｏとなり、ステップＯ５に進む。
【０１０３】
ステップＯ４ではレジスタＯｂｊｅｃｔＣｏｍｍａｎｄに値１を格納してグラフィック操作命令生成の処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値が１であることは、指がダイアルに「接触」したことを意味する。
【０１０４】
ステップＯ５では、映像内でユーザとオブジェクトとの重なりが消滅したか存在しているかを判断する。このことは、ＥＶＥＮＴに格納されている値が２か否かを判断することによる。具体的には、２の場合、判断結果がＹｅｓとなり、グラフィック操作命令生成の処理を終了する。一方２でない場合、判断結果がＮｏとなり、ステップＯ６に進む。
【０１０５】
ステップＯ６ではダイアル操作命令生成ルーチンの処理（後述）を行い、終了後グラフィック操作命令生成の処理を終了する。
【０１０６】
前述のダイアル操作命令生成ルーチンの処理フローを、図１９を参照しながら説明する。ステップＰ１では、重なり重心の場所がユーザ領域の中であるか（図２５）否（図２６）かを判断する。このことは、レジスタＩＮ＿ＵＳＥＲが１であるか否かを判定することによる。具体的には、１の場合、判断結果がＹｅｓとなり、ステップＰ２に進む。一方、１でない場合、判断結果がＮｏになり、ステップＰ３に進む。ステップＰ２ではレジスタＯｂｊｅｃｔＣｏｍｍａｎｄに２を格納し、ダイアル操作命令生成の処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値２はダイアルを「回転」させる命令を表す。ステップＰ３ではＯｂｊｅｃｔＣｏｍｍａｎｄに３を格納して、ダイアル操作命令生成の処理を終了する。 ＯｂｊｅｃｔＣｏｍｍａｎｄの値３はダイアルを「移動」させる命令を表す。
【０１０７】
グラフィック変換特徴量計算器１２の処理フローを、図２０を参照しながら説明する。ステップＱ１では、空命令か特定の命令が発行されたのかを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄが０であるか否かを判定することによる。具体的には、０の場合、判断結果がＹｅｓとなり、グラフィック変換特徴量計算器の処理を終了する。一方０でない場合、判断結果がＮｏとなり、ステップＱ２に進む。ステップＱ２では、命令が接触か否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄが１か否かを判定するとこによる。具体的には、１の場合、判断結果がＹｅｓとなり、ステップＱ４に進む。一方１でない場合、判断結果がＮｏとなり、ステップＱ３に進む。  ステップＱ３ではダイアル変換特徴量計算ルーチンの処理を行い、終了後、ステップＱ４に進む。ステップＱ４では、レジスタＰｒｖＧｒａｖｉｔｙＸ、ＰｒｖＧｒａｖｉｔｙＹにそれぞれＧｒａｖｉｔｙＸ、ＧｒａｖｉｔｙＹを格納し、グラフィック変換特徴量計算器の処理を終了する。
【０１０８】
前述のダイアル変換特徴量計算ルーチンの処理フローを、図２１を参照しながら説明する。ステップＲ１では、命令が回転か否かを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに格納されている値が２か否かを判断することによる。具体的には、２である場合、判断結果がＹｅｓとなり、ステップＲ２に進む。一方、２でない場合、判断結果はＮｏとなり、ステップＲ４に進む。
【０１０９】
ステップＲ２では、現フレームと前フレームで、重なり重心がオブジェクトの回転の中心とが同一座標になったか否かを判断する。このことは、ＧｒａｖｉｔｙＸ＝ＣＸかつＧｒａｖｉｔｙＹ＝ＣｅｎｔｅｒＹであるか、またはＰｒｖＧｒａｖｉｔｙＸ＝ＣｅｎｔｅｒＸかつＰｒｖＧｒａｖｉｔｙＹ＝ＣｅｎｔｅｒＹであるかのいずれかが成り立つか否かを判断する。これが成り立つのは後述する算出方法が使えないとき、すなわち重なり重心の移動を算出するための２点のうちいずれかが回転中心と一致するために回転角が定義できなくなることを意味する。（この場合回転は生じないものとする。）具体的には、成り立つ場合、判断結果がＹｅｓとなり、ステップダイアル変換特徴量計算イベントの処理を終了する。一方、成り立たない場合、判断結果がＮｏとなり、ステップＲ３に進む。
【０１１０】
ステップＲ３では、連続した２フレームの重なり重心の、オブジェクトの回転中心からみた回転角度を求める。図２７で、ｐはオブジェクトの回転中心Ｃから前フレームの重なり重心Ｇ´へ向かうベクトル、ｑはオブジェクトの回転中心Ｃから重なり重心Ｇに向かうベクトル、θはＣからみたＧからＧ´の回転角度である。θは式５によって算出する。
【数５】
2012014550.tif 000007
【０１１１】
ここで、ｄｅｔＡは正方行列Ａの行列式を表し、ｍ次元縦ベクトルｐ１、…、ｐｎを横に並べて作るｍ×ｎ行列を（ｐ１  …  ｐｎ）で表す。また、ベクトルａの大きさを｜ａ｜で表す。実数を引数にとる関数ｓｉｇｎ（ｚ）の値は、ｚ≧０のときは１、ｚ＜０のときは−１と定義する。ａ・ｂはベクトルａ、ｂの内積を表す。
具体的には、ｐはｘ成分がレジスタＣｅｎｔｅｒＸ−ｐｒｖＧｒａｖｉｔｙＸ、ｙ成分がＣｅｎｔｅｒＹ−ｐｒｖＧｒａｖｉｔｙＹで表されており（式６）、ｑはｘ成分がＣｅｎｔｅｒＸ−ＧｒａｖｉｔｙＸ、ｙ成分がＣｅｎｔｅｒＹ―ＧｒａｖｉｔｙＹで表されており（式７）、式５を用いて得た値をｄｉｆｆｅｒｅｎｃｅＴｈｅｔａにセットする。
【数６】
2012014550.tif 000008
【数７】
2012014550.tif 000009
【０１１２】
図２７では、Ｃは回転中心（ＣｅｎｔｅｒＸ、ＣｅｎｔｅｒＹ）、Ｇ´は（ＰｒｖＧｒａｖｉｔｙＸ、ＰｒｖＧｒａｖｉｔｙＹ）である。以上でダイアル変換特徴量計算ルーチンの処理を終了する。
【０１１３】
ステップＲ４では、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸをＧｒａｖｉｔｙＸ−ＰｒｖＧｒａｖｉｔｙＸに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹをＧｒａｖｉｔｙＹ−ＰｒｖＧｒａｖｉｔｙＹにセットし、ダイアル変換特徴量計算イベントの処理を終了する。
【０１１４】
変換特徴量更新器１３の処理フローを、図２２を参照しながら説明する。ステップＳ１では、命令が空命令または接触であるか、またはどちらでもないかを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が０または１であるか否かを判断することによる。具体的には、０または１の場合、判断結果がＹｅｓとなり、特徴量更新器の処理を終了する。一方、０または１以外の場合、判断結果がＮｏとなり、ステップＳ２に進む。ステップＳ２では、命令が回転か否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が２であるか否かを判定することによる。具体的には、２の場合、判断結果がＹｅｓとなり、ステップＳ３に進む。一方、２ではない場合、判断結果がＮｏとなり、ステップＳ４に進む。ステップＳ３では、ＲｏｔａｔｅにＲｏｔａｔｅ＋ＤｉｆｆｅｒｅｎｃｅＲｏｔａｔｅを格納し、処理を終了する。ステップＳ４では、ＣｅｎｔｅｒＸにＣｅｎｔｅｒＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＣｅｎｔｅｒＹにＣｅｎｔｅｒＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、ＤｉｓｐｌａｃｅｍｅｎｔＸにＤｉｓｐｌａｃｅｍｅｎｔＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＤｉｓｐｌａｃｅｍｅｎｔＹにＤｉｓｐｌａｃｅｍｅｎｔＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、それぞれ格納し、処理を終了する。これにより、変換特徴量がグラフィック操作命令生成器１０６で生成された変換を施した結果得られる、新しい値に更新される。
【０１１５】
映像重ね合わせ器１４の処理フローを、図２３を参照しながら説明する。このモジュールでは、まず、オブジェクト画像を表示用の画像バッファにコピーする。次に、ユーザ画像を表示用の画像バッファにコピーする。ステップＴ１では、レジスタＸおよびＹをゼロリセットする。
【０１１６】
ステップＴ２では、オブジェクト可視領域格納エリアの（Ｘ，Ｙ）番地に格納された値が０か否かを判断することによる。具体的には、０である場合、判断結果がＹｅｓとなり、ステップＴ３に進む。一方、０でない場合、判断結果がＮｏとなり、ステップＴ４に進む。ステップＴ３では、表示用映像格納エリアの（Ｘ，Ｙ）番地に値０を格納する。ステップＴ４では、オブジェクト画像格納エリアの（Ｘ，Ｙ）番地に格納されている値を表示用映像格納エリアの（Ｘ，Ｙ）番地に格納する。これにより、表示すべきオブジェクトを画像から抽出し、その画像を表示領域に格納したことになる。ステップＴ５では、ユーザ領域格納エリアの（Ｘ，Ｙ）番地に格納された値が０か否かを判断することによる。具体的には、０でない場合、判断結果がＮｏになり、ステップＴ６に進む。一方、０である場合、判断結果がＹｅｓになり、ステップＴ７に進む。ステップＴ６では、にライブ映像格納エリアの（Ｘ，Ｙ）番地を格納されている値を表示用映像格納エリアの（Ｘ，Ｙ）番地に格納する。ステップＴ７では、Ｙを１インクリメントする。ステップＴ8では、セグメントの縦方向の座標が画像の高さより大きいか否かを判断する。このことは、Ｙが配列サイズ２４０以上か否かを判断することによる。具体的には、２４０より小さい場合には、判断結果がＮｏとなり、前述のステップＴ２に戻る。これにより、Ｙ＝０〜２３９に対してステップＴ２〜Ｔ８が繰り返され、ピクセル座標を縦方向に１列分スキャンして結果を比較したことになる。一方、２４０以上場合には、判断結果がＹｅｓになり、ステップＴ９に進む。ステップＴ9では、Ｘを１インクリメントし、Ｙをゼロリセットする。これにより、ピクセル座標は、横方向は１ピクセル進み、縦方向は先頭に戻る。ステップＴ１０では、セグメントの横方向の座標が画像の横幅より大きいか否かを判断する。このことは、Ｘが配列サイズ３２０以上か否かを判断することによる。具体的には、３２０より小さい場合には、判断結果がＮｏとなり、前述したステップＴ２に戻る。これにより、Ｘ＝０〜３１９に対してステップＴ２〜Ｔ１０が繰り返され、画像（ピクセル）座標すべてをスキャンして表示用映像格納エリアに重ね合わせた映像のピクセルデータを格納したことになる。一方、大きい場合には、判断結果がＹｅｓとなり、ユーザ映像切抜きの処理を終了する。
【０１１７】
外部機器用操作命令意味変換器３１の処理フローを、図２４を参照しながら説明する。ステップＵ１では、命令が空命令または接触であるか、またはどちらでもないかを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄの値が０または１であるか否かを判定することによる。具体的には、０または１の場合、判断結果がＹｅｓとなり、外部機器用操作命令意味変換の処理を終了する。一方、それ以外の場合、判断結果がＮｏとなり、ステップＵ２に進む。Ｕ２では、命令が回転か否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が２であるか否かを判定することによる。具体的には、２の場合、判断結果がＹｅｓとなり、「回転」に対してあらかじめ定めた外部機器の命令と、レジスタＤｉｆｆｅｒｅｎｃｅＲｏｔａｔｅに格納されている値を、例えば３倍するなど、外部機器に応じてあらかじめ定めた関数により変換して得たパラメータを組とした外部機器操作命令を外部機器に送る。一方、２でない場合、判断結果がＮｏとなり、「移動」に対してあらかじめ定めた外部機器の命令と、レジスタＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸ、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹに格納されている値を、例えば３倍するなど、外部機器に応じてあらかじめ定めた関数により変換して得たパラメータを組とした外部機器操作命令を外部機器に送る。
【０１１８】
外部機器３２は、外部機器用操作命令に従ってあらかじめ定められた、例えば後述の実施例に示すような動作をする。
【０１１９】
以下で表示と触れる領域が一致しているオブジェクトをあつかう。すなわち、オブジェクト可視領域とオブジェクト可触領域が同一である場合に限る。
【０１２０】
上記実施形態１を用いれば、１つのオブジェクトに、３種類のイベントと、重なり重心のユーザ領域とオブジェクト領域への帰属４種類を組み合わせた１２種類の条件を網羅するようにインタラクションを割り当てることができる。オブジェクトが円盤の場合、２つの命令（回転、移動）を割り当てることができる。「回転」が発行される条件は、イベントＩｎｔｏｕｃｈのときに重なり重心がユーザとオブジェクト両方に帰属することである（図２５）。「移動」が発行される条件は、イベントＩｎｔｏｕｃｈのときに重なり重心がオブジェクトのみに帰属することである（図２６）。それ以外では、オブジェクトの位置や回転角度を記録する等の命令を発行する。
【０１２１】
実施形態１では一般にダイアルの位置によりＸ、Ｙの２パラメータ、回転角により１パラメータ、計３パラメータの指定が可能であって、３つのパラメータで指定できる機器の制御に適している。
【０１２２】
使用法は、実施形態１では図２８に示すように、ユーザはディスプレイに表示されたオブジェクトを見ながら、ビデオカメラで撮影したユーザ自身の映像で該オブジェクトとのインタラクションを行うことで関連付けられた外部機器を操作する。さらに、ディスプレイに表示される映像では実世界でユーザがオブジェクトを操作しているかのように見える。このことは、ユーザ自身の実際の手でオブジェクトを触っているかのような操作感を呼び起こす。
【０１２３】
次に、実施形態１を利用した６つの実施例を説明する。なお、上記で参照した図と同一部分は、同一番号を付すことにより、説明は省略する。
【０１２４】
実施例１―１では、扇風機の制御装置に適用した。この装置は、ディスプレイに表示されるダイアルを回転させたり移動させたりするといった直観的な操作で、扇風機の風量と風向を制御できる。このような用途では、手を用いてダイアルを操作するのが通例なのでユーザ映像として手の映像を用いる。手の映像の抽出には、ユーザ領域抽出器２にて特定色（肌色）部位領域の抽出に変更しても良い。
【０１２５】
図２９に、扇風機の風量を調整しているときのディスプレイに表示される画像を示す。ディスプレイには部屋の間取りの上に、扇風機オブジェクト３３、ダイアル４２、ユーザの手の映像４１が表示されている。この部屋の間取り上の扇風機オブジェクト３３の位置は実際の部屋に置いてある扇風機の位置に対応している。ここでは、ユーザの手の映像４１によってディスプレイ上のダイアル４２を操作している。ダイアル４２の、回転角に関連付けられた風量と、部屋の間取り上での位置が表す場所に風が当たるような風向きとが実際の扇風機に設定される。
【０１２６】
実施例１―２は地図の制御であり、ディスプレイに表示されるダイアルを回転させたり移動させたりといった直観的な操作で、地図の縮尺を制御できる。ダイアルの、回転角が表す縮尺と、番組表上の位置が表す地図上の場所とが実際の地図の表示に設定される。
【０１２７】
実施例１−３は監視カメラの制御であり、ディスプレイに表示されるダイアルを回転させたり移動させたりといった直観的な操作で、監視カメラの撮影方向とズーム率を制御できる。ダイアルの、回転角が表すズーム率と、部屋の間取り上の位置が表す場所を撮影するような方向とが実際の監視カメラに設定される。
【０１２８】
実施例１−４はカーオーディオの制御であり、ディスプレイに表示されるダイアルを回転させたり移動させたりといった直観的な操作で、カーオーディオの音のバランスと音量を調節できる。ダイアルの、回転角が表すカーオーディオの音量と、車の内部の図上の位置が表す場所が最適になるような左右の音量比・位相とが実際のカーオーディオに設定される。
【０１２９】
上記の実施例１−４は、ホームシアター等のサラウンドシステムにも利用できる。
【０１３０】
実施例１−５はスポットライトの制御であり、ディスプレイに表示されるダイアルを回転させたり移動させたりといった直観的な操作で、スポットライトの向きと光の量を制御できる。ダイアルの、回転角が表す光の強さと、舞台上の位置が表す場所が照らされるような向きとが実際のスポットライトに設定される。
【０１３１】
実施例１−６は、地図表示の制御装置であり、操作画面に表示されるダイアルを回転させたり移動させたりといった直観的な操作で、別画面の地図を表示する地点の移動とその地図の縮尺の変更を制御できる。ダイアルの、回転角が表す縮尺と、操作画面の地図上の位置が表す場所が中心となる座標とが地図表示の制御装置に設定される。
【０１３２】
［実施形態２］
次に第２の実施形態について図面を参照して説明する。
【０１３３】
実施形態２の、基本構成と情報の流れは図１に示す実施形態１のものと同一である。ただし、変換特徴量格納器１０１、グラフィック操作命令生成器１０６、グラフィック変換特徴量計算器１２、変換特徴量更新器１３、の４つの機能モジュールの処理は実施形態１とは異なっている。それらについて、処理フローを参照しながら説明する。また、実施形態２では、オブジェクトが２つに分かれている場合を想定している。
【０１３４】
変換特徴量格納器１０１（変換特徴量格納手段）は、次に説明する５つのレジスタ（ＩｎｉｔＣｅｎｔｅｒＸ、ＩｎｉｔＣｅｎｔｅｒＹ、ＴｏｇｇｌｅＳｗｉｔｃｈ、ＤｉｓｐｌａｃｅｍｅｎｔＸ、ＤｉｓｐｌａｃｅｍｅｎｔＹ）であり、初期オブジェクト可触領域、初期オブジェクト可視領域、初期オブジェクト画像の変換に用いる変換特徴量を格納する。
【０１３５】
レジスタＩｎｉｔＣｅｎｔｅｒＸ, ＩｎｉｔＣｅｎｔｅｒＹは画像移動で用いる中心座標（Ｘ，Ｙ）の初期値を格納する。
【０１３６】
レジスタＴｏｇｇｌｅＳｗｉｔｃｈは、トグルスイッチであり、スイッチのオン・オフを表す値を格納する。
【０１３７】
レジスタＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈは、前フレームからスイッチのオン・オフが変化したかどうかを表す値を格納する。
【０１３８】
レジスタＤｉｓｐｌａｃｅｍｅｎｔＸおよびＤｉｓｐｌａｃｅｍｅｎｔＹは、オブジェクトの初期位置からの変位量のｘ、ｙ成分（ピクセル）を格納する。
【０１３９】
グラフィック操作命令生成器１０６の処理フローを、図３０を参照しながら説明する。
【０１４０】
ステップＶ１ではレジスタＯｂｊｅｃｔＣｏｍｍａｎｄをゼロリセットする。ＯｂｊｅｃｔＣｏｍｍａｎｄの値が０であることは命令がない状態（「空命令」）を意味する。
【０１４１】
ステップＶ２では、命令が空命令であるか特定の命令であるかを判断する。このことは、レジスタＥＶＥＮＴの値が０か否かを判断することによる。具体的には、０である場合、判断結果がＹｅｓとなり、グラフィック操作命令生成の処理を終了する。一方、０でない場合、判断結果がＮｏとなり、ステップＶ３に進む。
【０１４２】
ステップＶ３では、命令が接触であるか否かを判断する。このことは、ＥＶＥＮＴの値が１か否かを判断することによる。具体的には、１である場合、判断結果がＹｅｓとなり、ステップＶ４に進む。一方、１でない場合、判断結果がＮｏとなり、ステップＶ５に進む。
【０１４３】
ステップＶ４ではトグルスイッチオーバラップルーチンの処理を行い、終了後グラフィック操作命令生成の処理を終了する。
【０１４４】
ステップＶ５では、命令が切り替えであるか否かを判断する。このことは、ＥＶＥＮＴの値が２か否かを判断することによる。具体的には、２である場合、判断結果がＹｅｓとなり、グラフィック操作命令生成の処理を終了する。一方、２でない場合、判断結果がＮｏとなり、ステップＶ６に進む。
【０１４５】
ステップＶ６ではトグルスイッチ操作命令生成の処理を行い、終了後グラフィック操作命令生成の処理を終了する。
【０１４６】
前述のトグルスイッチオーバラップルーチンの処理フローを、図３１を参照しながら説明する。
【０１４７】
ステップＷ１では、重なり重心の場所がユーザ領域の中であるか否かを判断する。このことは、レジスタＩＮ＿ＵＳＥＲが１であるか否かを判定するによる。具体的には、１の場合、判断結果がＹｅｓとなり、トグルスイッチオーバラップの処理を終了する。一方、１でない場合、判断結果がＮｏとなり、ステップＷ２に進む。
【０１４８】
ステップＷ２では、重なり重心の場所がオブジェクト領域の中であるか否かを判断する。このことは、レジスタＩＮ＿ＵＳＥＲが１であるか否かを判定することによる。具体的には、１の場合、判断結果がＹｅｓとなり、ステップＷ３に進む。一方、１でない場合、判断結果がＮｏとなり、ステップＷ４に進む。ステップＷ３では、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに１２を格納し、ダイアルオーバラップの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値１２はトグルスイッチを「切り替え」させる命令を表す。ステップW４ではＯｂｊｅｃｔＣｏｍｍａｎｄに１１を格納して、トグルスイッチオーバラップルーチンの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値１１はトグルスイッチと「接触」し始めたという命令を表す。
【０１４９】
前述のトグルスイッチ操作命令生成ルーチンの処理フローを、図３２を参照しながら説明する。
【０１５０】
ステップＸ１では、重なり重心の場所がユーザ領域の中であるか否かを判断する。このことは、レジスタＩＮ＿ＵＳＥＲが１であるか否かを判定することによる。具体的には、１の場合、判断結果がＹｅｓとなり、トグルスイッチ操作命令生成ルーチンを終了する。一方、１でない場合、判断結果がＮｏとなり、ステップＸ２に進む。ステップＸ２では、重なり重心の場所がオブジェクト領域の外か否かを判断する。このことは、レジスタＩＮ＿ＯＢＪＥＣＴが１であるか否かを判定することによる。具体的には、１でない場合、判断結果がＮｏとなり、ステップＸ３に進む。一方、１である場合、判断結果がＹｅｓとなり、ステップＸ４に進む。ステップＸ３では、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに１２を格納し、トグルスイッチ操作命令生成ルーチンの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値１２はトグルスイッチを「切り替え」させる命令を表す。ステップＸ４ではＯｂｊｅｃｔＣｏｍｍａｎｄに１３を格納して、トグルスイッチ操作命令生成ルーチンの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値１３はトグルスイッチを「移動」させる命令を表す。
【０１５１】
グラフィック変換特徴量計算器１２の処理フローを、図３３を参照しながら説明する。
【０１５２】
ステップＹ１では、命令が空命令であるか特定の命令であるかを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄが０であるか否かを判定することによる。具体的には、０の場合、判断結果がＹｅｓとなり、グラフィック変換特徴量計算器の処理を終了する。一方、０でない場合、判断結果がＮｏとなり、ステップＹ２に進む。ステップＹ２では、命令が接触か否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄが１１か否かを判定することによる。具体的には、１１の場合、判断結果がＹｅｓとなり、ステップＹ３に進む。一方、１１でない場合、判断結果がＮｏとなり、ステップＹ４に進む。ステップＹ４ではトグルスイッチ変換特徴量計算ルーチンの処理を行い、終了後、ステップＹ３に進む。ステップＹ３ではレジスタＰｒｖＧｒａｖｉｔｙＸ、ＰｒｖＧｒａｖｉｔｙＹにそれぞれＧｒａｖｉｔｙＸ、ＧｒａｖｉｔｙＹの値を格納し、グラフィック変換特徴量計算器１２の処理を終了する。
【０１５３】
前述のトグルスイッチ変換特徴量計算ルーチンの処理フローを、図３４を参照しながら説明する。
【０１５４】
ステップ Ｚ１では、命令が切り替えか否かを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに格納されている値が１２か否かを判断することによる。具体的には、１２である場合、判断結果がＹｅｓとなり、ステップＺ２に進む。一方、０でない場合、判断結果はＮｏとなり、ステップＺ８に進む。
【０１５５】
ステップＺ２では、トグルスイッチがオフか否かを判断する。このことは、レジスタＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈに格納されている値が０か否かを判断することによる。具体的には、０である場合、判断結果がＹｅｓとなり、ステップＺ３に進む。一方、０でない場合、判断結果はＮｏとなり、ステップＺ４に進む。ステップＺ３では、ＤｉｆｆｉｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈを１にセットし、トグルスイッチ特徴量計算ルーチンの処理を終了する。ＤｉｆｆｉｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈの値１は、トグルスイッチがオンということを表す。ステップＺ４では、ＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈを０にセットし、トグルスイッチ特徴量計算ルーチンの処理を終了する。ＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈの値０は、トグルスイッチがオフということを表す。ステップＺ５では、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸをＧｒａｖｉｔｙＸ−ＰｒｖＧｒａｖｉｔｙＸに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹをＧｒａｖｉｔｙＹ−ＰｒｖＧｒａｖｉｔｙＹにセットし、ダイアル特徴量計算イベントの処理を終了する。
【０１５６】
変換特徴量更新器１３の処理フローを、図３５を参照しながら説明する。
【０１５７】
ステップＡＡ１では、命令が空命令または接触であるか、どちらでもないのかを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が０または１１であるか否かを判定することによる。具体的には、０または１１の場合、判断結果がＹｅｓとなり、特徴量更新器の処理を終了する。一方、０または１１以外の場合、判断結果がＮｏとなり、ステップＡＡ２に進む。ステップＡＡ２では、命令が切り替えか否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が１２であるか否かを判定することによる。具体的には、１２の場合、判断結果がＹｅｓとなり、ステップＡＡ３に進む。一方、１２でない場合、判断結果がＮｏとなり、ステップＡＡ４に進む。ステップＡＡ３では、ＴｏｇｇｌｅＳｗｉｔｃｈにＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈを格納し、処理を終了する。ステップＡＡ４では、ＣｅｎｔｅｒＸにＣｅｎｔｅｒＸ + ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＣｅｎｔｅｒＹにＣｅｎｔｅｒＹ + ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、ＤｉｓｐｌａｃｅｍｅｎｔＸにＤｉｓｐｌａｃｅｍｅｎｔＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＤｉｓｐｌａｃｅｍｅｎｔＹにＤｉｓｐｌａｃｅｍｅｎｔＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、それぞれ格納し、処理を終了する。これにより、変換特徴量がグラフィック操作命令生成器１３で生成された変換を施した結果得られる、新しい値に更新される。
【０１５８】
外部機器用操作命令意味変換器３１の処理フローを、図３６を参照しながら説明する。
【０１５９】
ステップＢＢ１では、命令が空命令または接触であるか、どちらでもないのかを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄの値が０または１１であるか否かを判定することによる。具体的には、０または１１の場合、判断結果がＹｅｓとなり、外部機器用操作命令意味変換の処理を終了する。一方、０または１１以外の場合、判断結果がＮｏとなり、ステップＢＢ２に進む。ＢＢ２では、命令が切り替えか否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄの値が１２であるか否かを判定することによる。具体的には、１２の場合、判断結果がＹｅｓになり、ステップＢＢ３に進む。一方、１２でない場合、判断結果がＮｏとなり、ステップＢＢ４に進む。ステップ３では、「切り替え」に対してあらかじめ定めた外部機器の命令と、レジスタＤｉｆｆｅｒｅｎｃｅＴｏｇｇｌｅＳｗｉｔｃｈに格納されている値を、例えば３倍するなど、外部機器に応じてあらかじめ定めた関数により変換して得たパラメータを組とした外部機器操作命令を外部機器に送る。ステップ４では、「移動」に対してあらかじめ定めた外部機器の命令と、レジスタＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸ、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹに格納されている値を、例えば３倍するなど、外部機器に応じてあらかじめ定めた関数により変換して得たパラメータを組とした外部機器操作命令を外部機器に送る。
【０１６０】
上記実施形態２を用いれば、３種類のイベントと、重なり重心のユーザ領域とオブジェクト領域への帰属４種類（ユーザ領域とオブジェクト領域、ユーザ領域、オブジェクト領域、それ以外）を組み合わせた１２種類の条件を網羅するようにインタラクションを割り当てることができる。２つの命令（切り替え、移動）を発行できる。「切り替え」が発行される条件は、イベントＯｎｔｏｕｃｈとＩｎｔｏｕｃｈのときに重なり重心がユーザとオブジェクトのどちらにも帰属しないことである（図３７）。「移動」が発行される条件は、Ｉｎｔｏｕｃｈの場合に重なり重心がオブジェクトのみに帰属することである（図３８）。本実施形態では重なり重心が存在していても命令が発行されない条件が存在する。この条件は、ＯｎｔｏｕｃｈとＩｎｔｏｕｃｈの場合に重なり重心がユーザのみに帰属することである（図３９）。この状態はユーザが接触を意図していていないとみなし、命令がないということを割り当てる。それ以外では、オブジェクトの位置や回転角度を記録する等の命令を発行する。
【０１６１】
実施形態２では一般にトグルスイッチオベジェクトの位置によりＸ、Ｙの２パラメータ、スイッチによりオン・オフパラメータ、計３パラメータの指定が可能であって、特に２つの状態の切り替えを含むような操作に向いている。
【０１６２】
使用法は、実施形態１と同様である（図２８）。
【０１６３】
次に、実施形態２を利用した３つの実施例を説明する。
【０１６４】
実施例２−１では、ＰＣのグラフィカルユーザインタフェース（ＧＵＩ）に適用した。ディスプレイに表示されるアイコンを移動させたりと選択させたりといった直観的な操作で、マウスを使用しているかのようなＧＵＩを提供する。このような用途では、手を用いてアイコンを操作するのが通例なのでユーザ映像として手の映像を用いる。手の映像の抽出には、ユーザ領域抽出器２にて特定色（肌色）の抽出に変更しても良い。
【０１６５】
図４０に、ディスプレイ内のファルダオブジェクトを選択しているときにディスプレイに表示される画像を示す。ディスプレイには、フォルダオブジェクト４３、ユーザの手の映像４１が表示されている。フォルダオブジェクト４３はＰＣのファイルシステムのフォルダに対応している。ユーザの手の映像４１で、ファルダオブジェクト４３をつかんで移動させたり、選択するとこで開いたり・閉じたりできる。
【０１６６】
実施例２―２はビデオ録画器の制御であり、ディスプレイに表示されるトグルスイッチを切り替えたり移動させたりといった直観的な操作で、チャンネルと録画のオン・オフを制御できる。トグルスイッチの、オン・オフ状態が表す録画指示と、テレビ番組表上の位置が表す番組がビデオ機器に設定される。
【０１６７】
実施例２−３は仮想ペンの制御であり、ディスプレイに表示されるトグルスイッチを切り替えたり移動させたりといった直感的な操作で、ディスプレイ上に曲線を引いたりできる。トグルスイッチの、オン・オフ状態が表す描画可否状態と、ディスプレイ上の位置が表す座標が描画ソフトに設定される。
【０１６８】
［実施形態３］
次に第３の実施形態について図面を参照して説明する。
【０１６９】
実施形態３の基本構成とデータの流れは図１に示す実施形態１のものと同一である。ただし、外部機器用操作命令意味変換器と外部機器の２つのモジュールは存在しない。さらに、変換特徴量格納器１０１、グラフィック操作命令生成器１０６、グラフィック変換特徴量計算器１２、変換特徴量更新器１３、の４つのモジュールの処理フローは実施形態１とは異なっている。それらについて、次に処理フローを参照しながら説明する。
【０１７０】
変換特徴量格納器１０１（変換特徴量格納手段）は、次に説明する６つのレジスタ（ＩｎｉｔＣｅｎｔｅｒＸ、ＩｎｉｔＣｅｎｔｅｒＹ、ＶｅｌｏｃｉｔｙＸ、ＶｅｌｏｃｉｔｙＹ、ＤｉｓｐｌａｃｅｍｅｎｔＸ、ＤｉｓｐｌａｃｅｍｅｎｔＹ）であり、初期オブジェクト可触領域、初期オブジェクト可視領域、初期オブジェクト画像の変換に用いる変換特徴量を格納する。
【０１７１】
レジスタＩｎｉｔＣｅｎｔｅｒＸ、ＩｎｉｔＣｅｎｔｅｒＹは画像移動で用いる中心座標（Ｘ，Ｙ）の初期値を格納する。
【０１７２】
レジスタＶｅｌｏｃｉｔｙＸおよびＶｅｌｏｃｉｔｙＹは、速度ベクトルのｘ、ｙ成分を格納する。
【０１７３】
レジスタＣｅｎｔｅｒＸおよびＣｅｎｔｅｒＹは、回転中心のピクセル座標（ｘ，ｙ）を格納する。
【０１７４】
レジスタＤｉｓｐｌａｃｅｍｅｎｔＸおよびＤｉｓｐｌａｃｅｍｅｎｔＹは、オブジェクトの初期位置からの変位量のｘ、ｙ成分（ピクセル）を格納する。
【０１７５】
グラフィック操作命令生成器１０６の処理フローを、図４１を参照しながら説明する。
【０１７６】
ステップＣＣ１ではレジスタＯｂｊｅｃｔＣｏｍｍａｎｄをゼロリセットする。ＯｂｊｅｃｔＣｏｍｍａｎｄの値が０であることはボールを「自由落下」させる命令を表す。
【０１７７】
ステップＣＣ２では、命令が空命令であるか特定の命令であるかを判断する。このことは、レジスタＥＶＥＮＴの値が０か否かを判断することによる。具体的には、０である場合、判断結果がＹｅｓとなり、グラフィック操作命令生成の処理を終了する。一方、０でない場合、判断結果がＮｏとなり、ステップＣＣ３に進む。
【０１７８】
ステップＣＣ３では、命令が接触であるか否かを判断する。このことは、ＥＶＥＮＴに格納されている値が１か否かを判断することによる。具体的には、１である場合、判断結果がＹｅｓとなり、ステップＣＣ４に進む。一方、１でない場合、判断結果がＮｏとなり、ステップＣＣ５に進む。
【０１７９】
ステップＣＣ４では、ステップ４では、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに２１を格納し、グラフィック操作命令生成器・ボールの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値２１はボールと「接触した」ということを意味する命令を表す。
【０１８０】
ステップＣＣ５では、切り替えであるか否かを判断する。このことは、ＥＶＥＮＴに格納されている値が２か否かを判断することによる。具体的には、２である場合、判断結果がＹｅｓとなり、ステップ６に進む。一方、２でない場合、判断結果がＮｏとなり、ステップＶ７に進む。
【０１８１】
ステップＣＣ６では、ＯｂｊｅｃｔＣｏｍｍａｎｄに２４を格納し、グラフィック操作命令生成器・ボールの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値２４はボールと「離れた」ということを意味する命令を表す。
【０１８２】
ステップＣＣ７ではボール操作命令生成ルーチンの処理を行い、終了後グラフィック操作命令生成・ボールの処理を終了する。
【０１８３】
前述のボール操作命令生成ルーチンの処理フローを、図４２を参照しながら説明する。ステップＤＤ１では、重なり重心の場所がユーザ領域の中であるか否かを判断する。このことは、レジスタＩＮ＿ＵＳＥＲが１であるか否かを判定することによる。具体的には、１の場合、判断結果がＹｅｓとなり、ステップ２に進む。ステップＤＤ２では、重なり重心の場所がオブジェクト領域の中であるか否かを判断する。このことは、レジスタＩＮ＿ＯＢＪＥＣＴが１であるか否かを判定することによる。具体的には、１の場合、判断結果がＹｅｓとなり、キャッチボール操作命令生成ルーチンの処理を終了する。一方、１でない場合、判断結果がＮｏとなり、ステップＤＤ３に進む。ステップ３では、ＯｂｊｅｃｔＣｏｍｍａｎｄに２２を格納し、キャッチボール操作命令生成ルーチンの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値２３はボールを「反射」という意味の命令を表す。
【０１８４】
一方、ステップＤＤ１で、１でない場合、判断結果がＮｏとなり、ステップＤＤ４に進む。ステップＤＤ４では、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに２２を格納し、ボール操作命令生成ルーチンの処理を終了する。ＯｂｊｅｃｔＣｏｍｍａｎｄの値２２はボールを「持つ」という意味の命令を表す。
【０１８５】
グラフィック変換特徴量計算器１２の処理フローを、図４３を参照しながら説明する。ステップＥＥ１では、命令が自由落であるか否かを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄが０であるか否かを判定することによる。具体的には、０の場合、判断結果がＹｅｓとなり、ステップＥＥ２に進む。ステップＥＥ２では、ボール軌道計算ルーチンの処理（後述）を行い、終了後、グラフィック変換特徴量の処理を終了する。
【０１８６】
一方、ステップＥＥ１で、０でない場合、判断結果がＮｏとなり、ステップＥＥ３に進む。ステップＥＥ３では、命令が離れたか否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄが２４か否かを判定することによる。具体的には、２４の場合、判断結果がＹｅｓとなり、ステップＥＥ４に進む。一方、２４でない場合、判断結果がＮｏとなり、ステップＥＥ５に進む。ステップＥＥ５では、命令が接触したか否かを判断する。このことは、ＯｂｊｅｃｔＣｏｍｍａｎｄが２１か否かを判定することによる。具体的には、２１の場合、判断結果がＹｅｓとなり、ステップＥＥ６に進む。一方、２１でない場合、判断結果がＮｏとなり、ステップＥＥ７に進む。ステップＥＥ６では、ボール軌道計算ルーチンの処理（後述）を行ない、ステップＥＥ８に進む。ステップＥＥ７では、ボール変換特徴量計算ルーチンの処理（後述）を行い、終了後、ステップＥＥ８に進む。ステップＥＥ８では、レジスタＰｒｖＧｒａｖｉｔｙＸ, ＰｒｖＧｒａｖｉｔｙＹにそれぞれＧｒａｖｉｔｙＸ,ＧｒａｖｉｔｙＹを格納し、グラフィック変換特徴量計算器の処理を終了する。
【０１８７】
前述のボール軌道計算ルーチンの処理フローを、図４４を参照しながら説明する。ステップ ＦＦ１では、レジスタＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸをＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸ＋ＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＸに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹをＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸ＋ＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹに、ＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹをＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹ−１にそれぞれセットし、ボール軌道計算ルーチンの処理を終了する。 
【０１８８】
前述のボール変換特徴量計算ルーチンの処理フローを、図４５を参照しながら説明する。ステップ ＧＧ１では、命令が「持つ」か否かを判断する。このことは、レジスタＯｂｊｅｃｔＣｏｍｍａｎｄに格納されている値が２２か否かを判断することによる。具体的には、２２である場合、判断結果がＹｅｓとなり、ステップＧＧ２に進む。一方、２２でない場合、判断結果はＮｏとなり、ステップＧＧ３に進む。
【０１８９】
ステップＧＧ２では、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸをＧｒａｖｉｔｙＸ−ＰｒｖＧｒａｖｉｔｙＸに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹをＧｒａｖｉｔｙＹ−ＰｒｖＧｒａｖｉｔｙＹに、ＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＸを得たＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸに、ＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹを得たＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹに、ＰｒｖＯｂｊｅｃｔＣｏｍｍａｎｄをＯｂｊｅｃｔＣｏｍｍａｎｄに、それぞれセットし、ボール変換特徴量計算ルーチンの処理を終了する。
【０１９０】
ステップＧＧ３では、前フレームの命令が「持つ」だったか否かを判断する。このことは、レジスタＰｒｖＯｂｊｅｃｔＣｏｍｍａｎｄに格納されている値が２２か否かを判断することによる。具体的には、２２である場合、判断結果がＹｅｓとなり、ステップＧＧ４に進む。一方、２２でない場合、判断結果はＮｏとなり、ステップＧＧ５に進む。
【０１９１】
ステップＧＧ４ではボール軌道計算ルーチンの処理を行ない、ボール変換特徴量計算ルーチンの処理を終了する。
【０１９２】
ステップＧＧ５では、速度の変化のベクトルδｖとオブジェクトが１フレームで移動する量を表す速度ベクトルｖを足し合わせて反射ベクトルｖ´を算出する（式８）。δｖは式９を用いて算出する。
【数８】
2012014550.tif 000010
【数９】
2012014550.tif 000011
【０１９３】
ここで、ｎは、重なり重心からオブジェクトの中心に向かう単位ベクトルであり、仮想的な反射面の法線ベクトルを表わす。オブジェクトの重心Ｃから重なり重心Ｇに引く線の長さがオブジェクトの半径に近いときは、ｎは式１０で近似できる。ここで式１０のｎはオブジェクトの中心座標Ｃと重なり重心の座標Ｇから成る。具体的には、ｖはｘ成分がＶｅｌｏｃｉｔｙＸ、ｙ成分がＶｅｌｏｃｉｔｙＹで表されており（式１１）、Ｃはｘ成分がＣｅｎｔｅｒＸ、ｙ成分がＣｅｎｔｅｒＹで表されており（式２）。Ｇはｘ成分がＧｒａｖｉｔｙＸ、ｙ成分がＧｒａｖｉｔｙＹで表されており（式１２）、式８により得た値の、ｘ成分をＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＸに、ｙ成分をＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを得たＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸに、ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを得たＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹに、それぞれセットする。
【数１０】
2012014550.tif 000012
【数１１】
2012014550.tif 000013
【数１２】
2012014550.tif 000014
【０１９４】
それぞれの点とベクトルの関係を図４７に示す。最後にボール変換特徴量計算イベントの処理を終了する。
【０１９５】
変換特徴量更新器１３の処理フローを、図４６を参照しながら説明する。ステップＨＨ１では、ＤｉｓｐｌａｃｅｍｅｎｔＸにＤｉｓｐｌａｃｅｍｅｎｔＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＤｉｓｐｌａｃｅｍｅｎｔＹにＤｉｓｐｌａｃｅｍｅｎｔＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、ＣｅｎｔｅｒＸにＣｅｎｔｅｒＸ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＸを、ＣｅｎｔｅｒＹにＣｅｎｔｅｒＹ＋ＤｉｆｆｅｒｅｎｃｅＤｉｓｐｌａｃｅｍｅｎｔＹを、ＶｅｌｏｃｉｔｙＸにＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＸを、ＶｅｌｏｃｉｔｙＹにＤｉｆｆｅｒｅｎｃｅＶｅｌｏｃｉｔｙＹを、それぞれセットし、特徴量更新器１３の処理を終了する。これにより、変換特徴量がグラフィック操作命令生成器１３で生成された変換を施した結果得られる、新しい値に更新される。
【０１９６】
上記実施形態３を用いれば、１つのオブジェクトに、３種類のイベントと、重なり重心のユーザ領域とオブジェクト領域への帰属４種類（ユーザ領域とオブジェクト領域、ユーザ領域、オブジェクト領域、それ以外）を組み合わせた１２種類の条件を網羅するようにインタラクションを割り当てることができる。オブジェクトが中抜きの円盤の場合、３つの命令（反射、持つ、離す）を発行できる。「反射」が発行される条件は、イベントＩｎｔｏｕｃｈのときに重なり重心がオブジェクトのみに帰属することである（図４８）。「持つ」が発行される条件は、イベントＩｎｔｏｕｃｈのときに重なり重心がオブジェクトのみに帰属することである（図４９）。「離す」が発行される条件は、イベントＩｎｔｏｕｃｈのときに重なり重心がユーザとオブジェクト両方に帰属することである（図５０）。それ以外では、オブジェクトの位置や回転角度を記録する等の命令を発行する。
【０１９７】
実施形態３では一般にオブジェクトの位置によりＸ、Ｙの２パラメータ、速度のＶＸ、ＶＹの２パラメータ、計４パラメータの指定が可能であって、オブジェクトの動きや位置を４つのパラメータで指定するようなゲームでの利用に適している。
【０１９８】
使用法は、実施形態１と同様である（図２８）。
【０１９９】
次に、実施形態３を利用した実施例を説明する。
【０２００】
実施例３−１では、ドッジボールソフトの制御システムに適用した。ディスプレイに表示されるボールオブジェクトを持つといった操作や、そのボールオブジェクトが反射するといった物理現象を模倣した実世界のようなドッジボールゲームを提供する。ドッジボールは、ユーザ映像は体全身で行うこと望ましい。
【図面の簡単な説明】
【０２０１】
【図１】本発明におけるインタフェース方法の一実施例の機能モジュールである。
【図２】本発明におけるハードウエア構成を示す図である。
【図３】本発明におけるメモリマップを示す図である。
【図４】本発明におけるライブ映像取得器の操作手順の一例を示すフローチャートである。
【図５】本発明におけるオブジェクト可触領域格納器の操作手順の一例を示すフローチャートである。
【図６】本発明におけるオブジェクト可視領域格納器の操作手順の一例を示すフローチャートである。
【図７】本発明におけるオブジェクト画像格納器の操作手順の一例を示すフローチャートである。
【図８】本発明における変換特徴量格納器の操作手順の一例を示すフローチャートである。
【図９】本発明におけるユーザ領域抽出機の操作手順の一例を示すフローチャートである。
【図１０】本発明におけるオブジェクト可触領域加工器の操作手順の一例を示すフローチャートである。
【図１１】本発明におけるオブジェクト可視領域加工器の操作手順の一例を示すフローチャートである。
【図１２】本発明におけるオブジェクト画像加工器の操作手順の一例を示すフローチャートである。
【図１３】本発明における重なり判定器の操作手順の一例を示すフローチャートである。
【図１４】本発明における重心計算器の操作手順の一例を示すフローチャートである。
【図１５】本発明における重心帰属分類器の操作手順の一例を示すフローチャートである。
【図１６】本発明におけるイベント分類器の操作手順の一例を示すフローチャートである。
【図１７】本発明における重なり履歴更新器の操作手順の一例を示すフローチャートである。
【図１８】本発明におけるグラフィック操作命令生成器の操作手順の一例を示すフローチャートである。
【図１９】本発明におけるダイアル操作命令生成ルーチンの操作手順の一例を示すフローチャートである。
【図２０】本発明におけるグラフィック変換特徴量計算器の操作手順の一例を示すフローチャートである。
【図２１】本発明におけるダイアル変換特徴量計算ルーチンの操作手順の一例を示すフローチャートである。
【図２２】本発明における変換特徴量更新器の操作手順の一例を示すフローチャートである。
【図２３】本発明における映像重ね合わせ器の操作手順の一例を示すフローチャートである。
【図２４】本発明における外部機器用操作命令意味変換器の操作手順の一例を示すフローチャートである。
【図２５】本発明における重なり重心がユーザ領域とオブジェクト領域と、の両方に帰属している一例を示す図である。
【図２６】本発明におけるかなさり重心がオブジェクト領域のみに帰属している一例を示す図である。
【図２７】本発明における連続した２フレームの重なり重心の、オブジェクトの回転中心からみた回転角度を示す図である。
【図２８】本発明による実施例を使用している外観を示す図である。
【図２９】本発明を扇風機の制御に適用したインタフェースの画面を示す図である。
【図３０】本発明におけるグラフィック操作命令生成器の操作手順の一例を示すフローチャートである。
【図３１】本発明におけるトグルスイッチオーバラップルーチンの操作手順の一例を示すフローチャートである。
【図３２】本発明におけるトグルスイッチ操作命令生成ルーチンの操作手順の一例を示すフローチャートである。
【図３３】本発明におけるグラフィック変換特徴量計算器の操作手順の一例を示すフローチャートである。
【図３４】本発明におけるトグルスイッチ変換特徴量計算ルーチンの操作手順の一例を示すフローチャートである。
【図３５】本発明における変換特徴量更新器の操作手順の一例を示すフローチャートである。
【図３６】本発明における外部機器操作命令意味変換器の操作手順の一例を示すフローチャートである。
【図３７】本発明における重なり重心がユーザ領域とオブジェクト領域のどちらにも帰属しない一例を示す図である。
【図３８】本発明における重なり重心がオブジェクト領域のみに帰属している一例を示す図である。
【図３９】本発明における重なり重心がオブジェクト領域のみに帰属している一例を示す図である。
【図４０】本発明をファイルシステムに適用したインタフェースの様子を示す図である。
【図４１】本発明におけるグラフィック操作命令生成器の操作手順の一例を示す図である。
【図４２】本発明におけるボール操作命令生成ルーチンの操作手順の一例を示す図である。
【図４３】本発明におけるグラフィック変換特徴量計算器の操作手順の一例を示す図である。
【図４４】本発明におけるボール軌道計算ルーチンの操作手順の一例を示す図である。
【図４５】本発明におけるボール特徴量計算ルーチンの操作手順の一例を示す図である。
【図４６】本発明における変換特徴量更新器の操作手順の一例を示す図である。
【図４７】本発明におけるボールが反射する場合のオブジェクトに関わるベクトルと点を示す図である。
【図４８】本発明における重なり重心がユーザ領域のみに帰属している一例を示す図である。
【図４９】本発明における重なり重心がオブジェクト領域のみに帰属している一例を示す図である。
【図５０】本発明における重なり重心がユーザ領域とオブジェクト領域と、の両方に帰属している一例を示す図である。
【図１】
2012014550.tif 000015
【図２】
2012014550.tif 000016
【図３】
2012014550.tif 000017
【図４】
2012014550.tif 000018
【図５】
2012014550.tif 000019
【図６】
2012014550.tif 000020
【図７】
2012014550.tif 000021
【図８】
2012014550.tif 000022
【図９】
2012014550.tif 000023
【図１０】
2012014550.tif 000024
【図１１】
2012014550.tif 000025
【図１２】
2012014550.tif 000026
【図１３】
2012014550.tif 000027
【図１４】
2012014550.tif 000028
【図１５】
2012014550.tif 000029
【図１６】
2012014550.tif 000030
【図１７】
2012014550.tif 000031
【図１８】
2012014550.tif 000032
【図１９】
2012014550.tif 000033
【図２０】
2012014550.tif 000034
【図２１】
2012014550.tif 000035
【図２２】
2012014550.tif 000036
【図２３】
2012014550.tif 000037
【図２４】
2012014550.tif 000038
【図２５】
2012014550.tif 000039
【図２６】
2012014550.tif 000040
【図２７】
2012014550.tif 000041
【図２８】
2012014550.tif 000042
【図２９】
2012014550.tif 000043
【図３０】
2012014550.tif 000044
【図３１】
2012014550.tif 000045
【図３２】
2012014550.tif 000046
【図３３】
2012014550.tif 000047
【図３４】
2012014550.tif 000048
【図３５】
2012014550.tif 000049
【図３６】
2012014550.tif 000050
【図３７】
2012014550.tif 000051
【図３８】
2012014550.tif 000052
【図３９】
2012014550.tif 000053
【図４０】
2012014550.tif 000054
【図４１】
2012014550.tif 000055
【図４２】
2012014550.tif 000056
【図４３】
2012014550.tif 000057
【図４４】
2012014550.tif 000058
【図４５】
2012014550.tif 000059
【図４６】
2012014550.tif 000060
【図４７】
2012014550.tif 000061
【図４８】
2012014550.tif 000062
【図４９】
2012014550.tif 000063
【図５０】
2012014550.tif 000064