傾き検出方法及びエンタテインメント・システム
撮影された再帰反射シート13(剣11)の最大X座標maxX、最小X座標minX、最大Y座標maxY、及び最小Y座標minYを求める。X座標が最大X座標maxXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[maxX]を取得するとともに、X座標が最小X座標minXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[minX]を取得する。AY[maxX]とAY[minX]とを比較して、比較結果に応じて、第1特定点(X1,Y1)及び第2特定点(X2,Y2)を決定し、剣11の傾き角度Anを算出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、本発明は、反射体を備えた操作物をストロボ撮影して、その操作物の傾きを検出する傾き検出方法及びその関連技術に関する。
【背景技術】
【0002】
本件出願人による特開2004−85524号公報に開示されているゴルフゲームシステムは、ゲーム機及びゴルフクラブ型入力装置(操作物)を含み、ゲーム機のハウジングの内部には撮像ユニットが収納され、この撮像ユニットは、イメージセンサ及び赤外発光ダイオード等から構成される。赤外発光ダイオードによって撮像ユニットの上方の所定範囲に赤外光が間欠的に照射され、したがって、イメージセンサは、その範囲内で移動するゴルフクラブ型入力装置に設けられた反射体を間欠的に撮影する。このような反射体のストロボ映像を処理することによって、ゴルフクラブ型入力装置の位置や速度を検出する。
【発明の開示】
【0003】
そこで、本発明の目的は、操作物に取り付けられた反射体のストロボ映像を処理することにより、操作物の傾きを検出する傾き検出方法及びその関連技術を提供することである。
【0004】
本発明の観点によれば、傾き検出方法は、オペレータに保持されて動きが与えられる操作物の傾きを検出する傾き検出方法であって、反射体を有する前記操作物に、予め定められた周期で、光を照射するステップと、前記光の発光時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる発光時画像データを取得するステップと、前記光の消灯時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる消灯時画像データを取得するステップと、前記発光時画像データと前記消灯時画像データとの差分を求めて、差分画像データを生成するステップと、前記差分画像データに基づく差分画像上の前記操作物の最大X座標を求めるステップと、前記差分画像上の前記操作物の最小X座標を求めるステップと、前記差分画像上の前記操作物の最大Y座標を求めるステップと、前記差分画像上の前記操作物の最小Y座標を求めるステップと、前記差分画像データを構成する複数のピクセルデータのうち、X座標が前記最大X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、前記差分画像データを構成する前記複数のピクセルデータのうち、X座標が前記最小X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、X座標が前記最大X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、X座標が前記最小X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、を比較して、その大小を判別するステップと、前記判別の結果、並びに、前記最大X座標、前記最小X座標、前記最大Y座標、及び、前記最小Y座標に基づいて、前記差分画像上の前記操作物の第1特定点の座標及び第2特定点の座標を求めるステップと、前記第1特定点の座標及び前記第2特定点の座標に基づいて、前記差分画像上の前記操作物の傾きを求めるステップと、を含む。
【0005】
この構成によれば、操作物が有する反射体のストロボ映像を基に、操作物の傾きを検出できる。
【0006】
上記傾き検出方法は、前記最大X座標と前記最小X座標との差を求めるステップと、前記最大Y座標と前記最小Y座標との差を求めるステップと、前記最大X座標と前記最小X座標との前記差と、前記最大Y座標と前記最小Y座標との前記差と、の比に応じて、前記差分画像上の前記操作物の前記傾きを求めるステップと、をさらに含む。
【0007】
この構成によれば、操作物が特定の傾きで撮影された場合、特定の傾きであることを適切に判別できる。特に、特定の傾きが、垂直あるいは水平の場合に有効である。
【0008】
上記傾き検出方法は、過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む。
【0009】
この構成によれば、操作物の傾きだけでなく、操作物の方向をも検出できる。
【0010】
本発明の別の観点によれば、エンタテインメント・システムは、前記エンタテインメント・システムを利用する際に、ユーザーが操作する操作物と、前記操作物に光を照射する発光装置と、前記操作物で反射した光を検出することにより異なる時間における前記操作物の画像を取得するイメージセンサとからなる撮影装置と、前記イメージセンサに接続され、前記イメージセンサから前記操作物の画像を受け取り、前記操作物の画像に基づいて、前記操作物の方向を決定する情報処理装置とを備え、前記操作物の方向の傾きは、前記イメージセンサで取得された前記操作物の対応する画像に基づいて算出され、前記撮影装置で取得された現時点の画像における前記操作物の方向の向きの決定は、同じ傾きを持つ2つの方向の候補の夫々と、前記撮影装置で取得され、時間的に先行する前記操作物の画像に基づいて決定された前回の方向との角度差を算出し、この角度差が小さい候補を選択することによって行われる。
【0011】
この構成によれば、操作物の方向の向きの決定を、高速に行うことができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。ここで、本実施の形態では、操作物11の1例として、剣型の操作物11(以下、本実施の形態では、「剣11」と呼ぶ。)を挙げている。
【0013】
剣11の刀身部の両面には、縦長の再帰反射シート13が取り付けられる。また、剣11の鍔部の両面には、半円柱状部材が取り付けられ、この半円柱状部材の曲面には、再帰反射シート15が取り付けられる。
【0014】
ゲーム機1は、A/Vケーブル9により、テレビジョンモニタ7に接続される。さらに、ゲーム機1には、図示していないが、ACアダプタあるいは電池により電源電圧が供給される。
【0015】
ゲーム機1は、その前面側に、赤外光のみを透過する赤外線フィルタ5が設けられ、さらに、赤外線フィルタ5を囲むように、赤外光を発生する4つの赤外発光ダイオード3が露出している。赤外線フィルタ5の背面側には、後述のイメージセンサ19が配置される。
【0016】
4つの赤外発光ダイオード3は、間欠的に赤外光を発光する。そして、赤外発光ダイオード3からの赤外光は、剣11に貼付された再帰反射シート13あるいは15により反射され、赤外線フィルタ5の背面側に設けられたイメージセンサ19に入力される。このようにして、イメージセンサ19により、剣11が撮影される。赤外光は間欠的に照射されるところ、赤外光の非照射時においても、イメージセンサ19による撮影処理は行われている。ゲーム機1は、プレイヤ17により動かされた剣11の、赤外光照射時の画像信号と非照射時の画像信号との差分を求めて、この差分信号を基に、剣11の位置、面積、傾き、及び方向などを検出する。
【0017】
図2は、図1のゲーム機1の電気的構成を示す図である。図2に示すように、ゲーム機1は、イメージセンサ19、赤外発光ダイオード3、高速プロセッサ23、ROM(read only memory)25、及びバス27を含む。
【0018】
剣11は、赤外発光ダイオード3の赤外光に照射され、その赤外光を再帰反射シート13あるいは15で反射する。この再帰反射シート13あるいは15からの反射光がイメージセンサ19によって撮影され、したがって、イメージセンサ19からは再帰反射シート13あるいは15の画像信号が出力される。イメージセンサ19からのこのアナログ画像信号は高速プロセッサ23に内蔵されたA/Dコンバータ(図示せず)によってデジタルデータに変換される。赤外光消灯時も同様の処理が行われる。このようなストロボ撮影のために、高速プロセッサ23は、赤外発光ダイオード3を間欠的に点滅する。
【0019】
高速プロセッサ23は、図示しないが、CPU(central processing unit)、グラフィックプロセッサ、サウンドプロセッサおよびDMAプロセッサ等の各種プロセッサを含むとともに、アナログ信号を取り込むときに用いられるA/Dコンバータや、キー操作信号のような入力信号を受けかつ出力信号を外部機器に与える入出力制御回路を含む。イメージセンサ19や赤外発行ダイオード3は、入出力制御回路を介してCPUにより制御される。CPUは、ROM25に格納されたゲームプログラムを実行し、演算結果をグラフィックプロセッサ及びサウンドプロセッサに与える。したがって、グラフィックプロセッサやサウンドプロセッサはその演算結果に応じた画像処理や音声処理を実行する。
【0020】
高速プロセッサ23には、図示しないが内部メモリが設けられ、この内部メモリは、例えば、RAM(random access memory)により構成される。内部メモリは、ワーキング領域、カウンタ領域、レジスタ領域、テンポラリデータ領域、及び/又はフラグ領域等として利用される。
【0021】
高速プロセッサ23は、バス27を通じて、ROM25にアクセスできる。従って、高速プロセッサ23は、ROM25に格納されたゲームプログラムを実行し、また、ROM25に格納された画像データや音声データをリードして処理する。
【0022】
高速プロセッサ23は、イメージセンサ19からA/Dコンバータを介して入力されるデジタル画像信号を処理して、剣11の位置、面積、傾き、及び方向などを検出するとともに、他の演算、グラフィック処理、及びサウンド処理等を実行し、ビデオ信号およびオーディオ信号を出力する。ビデオ信号およびオーディオ信号は、A/Vケーブル9によりテレビジョンモニタ7に与えられ、応じて、テレビジョンモニタ7に映像が表示され、そのスピーカ(図示せず)から音声が出力される。
【0023】
図3は、図1のゲーム機1の全体の処理の流れの一例を示すフローチャートである。図3に示すように、ステップS1にて、高速プロセッサ23は、システムの初期設定を実行する。ステップS2にて、高速プロセッサ23は、赤外発光ダイオード3を駆動して、剣11の撮影処理を行う。
【0024】
図4は、図3のステップS2の撮影処理の流れの一例を示すフローチャートである。図4に示すように、ステップS20において、高速プロセッサ23は、赤外発光ダイオード3を点灯する。ステップS21で、高速プロセッサ23は、イメージセンサ19から、赤外光点灯時の画像データを取得して、内部メモリに格納する。
【0025】
ここで、本実施の形態では、イメージセンサ19の例として、32ピクセル×32ピクセルのCMOSイメージセンサを使用する。そして、水平方向をX軸、垂直方向をY軸とする。従って、イメージセンサ19からは、画像データとして、32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ)が出力される。このピクセルデータは、A/Dコンバータにより、デジタルデータに変換されて、内部メモリ上の配列P1[X][Y]に格納される。
【0026】
ステップS22で、高速プロセッサ23は、赤外発光ダイオード3を消灯する。ステップS23にて、高速プロセッサ23は、イメージセンサ19から、赤外光消灯時の画像データ(32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ))を取得して、内部メモリに格納する。この場合、赤外光消灯時の画像データは、内部メモリ上の配列P2[X][Y]に格納される。
【0027】
以上のようにして、ストロボ撮影が行われる。なお、本実施の形態では、32ピクセル×32ピクセルのイメージセンサ19を用いているため、X=0〜31、Y=0〜31であり、左上角を原点とする。
【0028】
図3に戻って、ステップS3にて、高速プロセッサ23は、赤外発光ダイオード3の点灯時のピクセルデータP1[X][Y]と、赤外発光ダイオード3の消灯時のピクセルデータP2[X][Y]と、の差分を算出して、差分データを、配列Dif[X][Y]に代入する。
【0029】
このように、差分データ(差分画像)を求めることで、剣11(再帰反射シート13及び15)からの反射光以外の光によるノイズを極力除去でき、精度良く剣11(再帰反射シート13及び15)を検出できる。
【0030】
ステップS4では、高速プロセッサは、差分データつまり配列Dif[X][Y]をスキャンして、剣11の位置、面積、最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxY等を算出する。
【0031】
ステップS5にて、高速プロセッサ23は、剣11が垂直になっているか、あるいは、剣11が水平になっているか、を判定する。ステップS6にて、高速プロセッサ23は、剣11の傾き(水平/垂直を除く。)を判断する。ステップS7にて、高速プロセッサ23は、剣11が向いている方向を判断する。
【0032】
ここで、剣11の「傾き」は、傾きの大きさだけを持つスカラ量であり、剣11の「方向」は、傾きの大きさと向きを持つベクトル量である。
【0033】
ステップS8にて、高速プロセッサ23は、ステップS4〜S7の処理結果を利用した情報処理を実行する。
【0034】
高速プロセッサ23は、ステップS9にて、「YES」であれば、即ち、ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS9に戻る。一方、ステップS9で「NO」であれば、即ち、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS10に進む。ステップS10では、高速プロセッサ23は、テレビジョンモニタ7に表示される画面の更新処理を実行して、ステップS2に進む。
【0035】
ステップS11の音声処理は、音声割り込みが発生したときに実行され、それによって、音楽や効果音を出力する。
【0036】
図5は、図3のステップS4の差分Dif[X][Y]スキャンの流れの一例を示すフローチャートである。図5に示すように、ステップS30にて、高速プロセッサ23は、変数X,Y,maxX,maxY,AY[X],CMAX,LMAX,Xm,Ym,Caに「0」を代入する。また、同じステップS30にて、変数minX,minYに「31」を代入する。
【0037】
ステップS31にて、高速プロセッサ23は、配列Dif[X][Y]の要素を所定の閾値ThLと比較する。ステップS32にて、高速プロセッサ23は、配列Dif[X][Y]の要素が所定の閾値ThLより大きい場合は、ステップS33に進み、所定の閾値ThL以下の場合は、ステップS43に進む。
【0038】
ステップS31,S32の処理は、再帰反射シート13あるいは15が撮影されたか否かを検出するための処理である。再帰反射シート13あるいは15が撮影されると、差分画像上では、再帰反射シートに相当するピクセルの輝度値が大きくなるため、閾値ThLにより、輝度値の大小を峻別して、閾値ThLより大きい輝度値を持つピクセルを、撮影された再帰反射シート13あるいは15の一部であると認識する。
【0039】
ステップS33にて、高速プロセッサ23は、所定の閾値ThLを超えた差分データ(配列Dif[X][Y]の要素)の数を計数すべく、カウント値Caを1つインクリメントする。
【0040】
ステップS34にて、高速プロセッサ23は、上記差分データDif[X][Y]に基づく差分画像上の剣11の最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYの算出処理を実行する。この点を図面を用いて説明する。
【0041】
図6は、図2のイメージセンサ19の撮影に基づく差分画像上の剣11の概念図である。図6では、剣11の再帰反射シート13が撮影された例を示している。図6に示すように、図5のステップS34の処理は、差分画像(32×32ピクセル)上の剣11の最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYを求めるための処理であり、図5のステップS47でX=32と判断されたときに、最終的にこれらの値が確定する。
【0042】
図7は、図5のステップS34のminX,maxX,minY,maxY算出処理の流れの一例を示すフローチャートである。図7に示すように、ステップS50にて、高速プロセッサ23は、カウント値Caが「1」か否かを判断して、「1」である場合は、ステップS51に進み、それ以外はステップS52に進む。
【0043】
ステップS51では、高速プロセッサ23は、最小X座標minXに、現在のX座標を代入する。つまり、スキャンは、Y=0から開始して、Y=31まで行い、Xをインクリメントして、再び、Y=0から開始して、Y=31まで行う、という処理を繰り返すので(図5のステップS43〜S47参照)、最初に閾値ThLを超えた配列Dif[X][Y](つまりピクセル)の「X」が最小X座標minXとなる。
【0044】
ステップS52では、高速プロセッサ23は、現在の最大X座標maxXと現在のX座標とを比較する。ステップS53にて、高速プロセッサ23は、現在のX座標が大きい場合は、ステップS54に進み、それ以外はステップS55に進む。ステップS54では、高速プロセッサ23は、最大X座標maxXに、現在のX座標を代入する。
【0045】
ステップS55では、高速プロセッサ23は、現在の最小Y座標minYと現在のY座標とを比較する。ステップS56にて、高速プロセッサ23は、現在のY座標が小さい場合は、ステップS57に進み、それ以外はステップS58に進む。ステップS57では、高速プロセッサ23は、最小Y座標minYに、現在のY座標を代入する。
【0046】
ステップS58では、高速プロセッサ23は、現在の最大Y座標maxYと現在のY座標とを比較する。ステップS59にて、高速プロセッサ23は、現在のY座標が大きい場合は、ステップS60に進み、それ以外はリターンする。ステップS60では、高速プロセッサ23は、最大Y座標maxYに、現在のY座標を代入する。
【0047】
上記ステップS50〜S60を繰り返すことにより、X=32となった時点で(図5のステップS47参照)、最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYが全て確定する。
【0048】
図5に戻って、ステップS35にて、高速プロセッサ23は、現在の最大輝度値CMAXと配列Dif[X][Y]とを比較する。ステップS36にて、高速プロセッサ23は、現在の配列Dif[X][Y]の要素が大きかった場合、つまり、現在のX座標及びY座標に位置するピクセルの輝度値が大きかった場合、ステップS37に進み、そうでない場合は、ステップS39に進む。
【0049】
ステップS37では、高速プロセッサ23は、配列AY[X]に、現在のY座標を格納する。図6を参照して、この配列AY[X]の要素数は「32」であり、X座標(0〜31)に対応しており、Y=32になった時点では(ステップS44参照)、同じX座標に位置する(同じ列の)32個のピクセルのうち、最大の輝度値を持つピクセルのY座標が、配列AY[X]に代入される。ステップS38では、最大輝度値CMAXに現在の配列Dif[X][Y]の要素を代入する。
【0050】
図5に戻って、ステップS39では、高速プロセッサ23は、現在の最大輝度値LMAXと、配列Dif[X][Y]とを比較する。ステップS40にて、配列Dif[X][Y]が大きい場合はステップS41に進み、それ以外はステップS43に進む。ステップS41では、高速プロセッサ23は、座標Xm及びYmにそれぞれ、現在のX座標及びY座標を代入する。ステップS42では、高速プロセッサ23は、現在の最大輝度値LMAXに、配列Dif[X][Y]の要素を代入する。X=32になった時点では(ステップS47参照)、32×32のピクセルのうち、最大の輝度値を持つピクセルのX座標及びY座標がそれぞれ、座標Xm及びYmに代入される。そして、座標Xmを剣11の中心X座標、座標Ymを剣11の中心Y座標とする。
【0051】
ステップS43では、高速プロセッサ23は、「Y」を1つインクリメントする。ステップS44にて、高速プロセッサ23は、Y=32のときは(つまり、差分画像のピクセル1列分の処理が終了したときは)ステップS45に進み、それ以外はステップS31に進む。
【0052】
ステップS45では、高速プロセッサ23は、「Y」及び「CMAX」に「0」を代入する。ステップS46にて、高速プロセッサ23は、「X」を1つインクリメントする。ステップS45,S46の処理は、差分画像の1列分の処理が終了したため、次の1列分の処理を進めるために実行される。
【0053】
ステップS47にて、高速プロセッサ23は、X=32のときは(つまり、差分画像の32×32ピクセル分の処理が終了したときは)ステップS48に進み、それ以外はステップS31に進む。
【0054】
ステップS48では、高速プロセッサ23は、カウント値Caが、所定値ThAより大きいか否かを判断して、大きいときはリターンし、それ以外は図3のステップS8に進む。最終的なカウント値Caは、閾値ThLを超えた輝度値を持つピクセルの数であり、再帰反射シート13あるいは15の差分画像上の面積に相当する。従って、カウント値Caが所定値ThAより大きい場合は、面積の大きい再帰反射シート13が撮影されたと判断し(再帰反射シート13がイメージセンサ19に向けられたと判断し)、カウント値Caが所定値ThA以下の場合は、面積の小さい再帰反射シート15が撮影されたと判断(再帰反射シート15がイメージセンサ19に向けられたと判断)する。
【0055】
図3のステップS5〜S7の処理は、高速プロセッサ23が、再帰反射シート13が撮影されたと判断した場合の処理である。再帰反射シート15が撮影されたと判断した場合は、ステップS8において、再帰反射シート15の中心座標(Xm,Ym)を基に、プレイヤ17が剣11を振ったときの速さや動きの方向などが算出され、さらに、その結果に基づく情報処理が実行される。
【0056】
図8は、図3のステップS5の垂直/水平判定の流れの一例を示すフローチャートである。図8に示すように、ステップS70にて、高速プロセッサ23は、maxX−minXを実行して、座標(minX,minY)、座標(minX,maxY)、座標(maxX,minY)、および座標(maxX,maxY)により形成される矩形の水平方向の幅wXを求める。また、高速プロセッサ23は、maxY−minYを実行して、上記矩形の垂直方向の幅wYを求める。
【0057】
ステップS71にて、高速プロセッサ23は、水平幅wXと所定値CX1とを比較する。ステップS72にて、水平幅wXが小さい場合はステップS73に進み、それ以外はステップS77に進む。ステップS73では、高速プロセッサ23は、垂直幅wYと所定値CY1とを比較する。ステップS74にて、垂直幅wYが大きい場合はステップS75に進み、それ以外はステップS77に進む。
【0058】
ここで、CX1<CY1であるため、wX<CX1、かつ、wY>CY1の場合は、剣11が、垂直な状態で撮影されたと判断できる。なぜなら、再帰反射シート13の形状は、剣11の長手方向に長く、幅方向に短くなっているからである。従って、ステップS75では、高速プロセッサ23は、剣11の傾き角度Anに、90度を示す「90」を代入し、図3のステップS7に進む。
【0059】
一方、ステップS77にて、高速プロセッサ23は、水平幅wXと所定値CX2とを比較する。ステップS78にて、水平幅wXが大きい場合はステップS79に進み、それ以外はリターンする。ステップS79では、高速プロセッサ23は、垂直幅wYと所定値CY2とを比較する。ステップS80にて、垂直幅wYが小さい場合はステップS81に進み、それ以外はリターンする。
【0060】
ここで、CX2>CY2であるため、wX>CX2、かつ、wY<CY2の場合は、剣11が、水平な状態で撮影されたと判断できる。なぜなら、再帰反射シート13の形状は、剣11の長手方向に長く、幅方向に短くなっているからである。なお、CX1=CY2、CX2=CY1とする。従って、ステップS81では、高速プロセッサ23は、剣11の傾き角度Anに、0度を示す「0」を代入し、図3のステップS7に進む。
【0061】
図9は、図3のステップS6の剣11の傾き算出の流れの一例を示すフローチャートである。図9に示すように、ステップS90にて、高速プロセッサ23は、Xが最大X座標maxXの場合の配列AY[X]の要素AY[maxX]と、Xが最小X座標minXの場合の配列AY[X]の要素AY[minX]と、を比較する。
【0062】
ここで、要素AY[maxX]は、X座標が最大X座標maxXである32個のピクセルのうち、最大輝度値CMAXを持つピクセルのY座標である。要素AY[minX]は、X座標が最小X座標minXである32個のピクセルのうち、最大輝度値CMAXを持つピクセルのY座標である。
【0063】
ステップS91では、高速プロセッサ23は、要素AY[maxX]が大きい場合は、ステップS92に進み、それ以外は、ステップS93に進む。
【0064】
ここで、要素AY[maxX]が要素AY[minX]より大きいということは、剣11(再帰反射シート13)が右上がりになっていることを意味する(図6に示す再帰反射シート13のような場合)。従って、ステップS92では、傾き角度An算出のための第1特定点の座標(X1,Y1)及び第2特定点の座標(X2,Y2)をそれぞれ、(maxX,minY)及び(minX,maxY)とする(図6参照)。
【0065】
一方、要素AY[maxX]が要素AY[minX]より小さいということは、剣11(再帰反射シート13)が右下がりになっていることを意味する(図6に示す再帰反射シート13を左右反転したような場合)。従って、ステップS93では、傾き角度An算出のための座標(X1,Y1)及び(X2,Y2)をそれぞれ、(minX,minY)及び(maxX,maxY)とする。
【0066】
ステップS94にて、高速プロセッサ23は、座標(X1,Y1)及び(X2,Y2)を基に、剣11の傾き角度Anを算出する。本実施の形態では、傾き角度Anは、水平から反時計回りの角度として算出する。傾き角度Anについて図面を用いて説明する。
【0067】
図10は、図1のゲーム機1が判断する剣11の傾き及び方向の説明図である。図10に示すように、本実施の形態では、360度を32分割し、11.25度に1つの方向を割り当てる。つまり、32の方向a0〜a31を定めている。ただし、図9の処理では、剣11の傾きを判断できても、剣11の向きまでは分からない。例を挙げる。
【0068】
図11Aは、図10の方向a13を向いている剣11の図、図11Bは、方向a29を向いている剣11の図である。これらから分かるように、剣11の傾きは同じであるが、その向きが異なることがある。図9の処理では、剣11の向きを判別することはできない。
【0069】
つまり、座標(X1,Y1)及び(X2,Y2)から算出した傾き角度Anは、0〜180度の範囲で求められる。従って、例えば、傾き角度Anが、100度の場合は、100度に対応する方向は、方向a9と方向a25とが存在し、両者を判別することはできない。そこで、図3のステップS7を実行する。
【0070】
図12は、図3のステップS7の剣11の方向検出の流れの一例を示すフローチャートである。図12に示すように、ステップS100にて、高速プロセッサ23は、前回の剣11の方向DrPと今回の傾き角度Anとの差の絶対値を、角度差An1に代入する。ただし、角度差An1が180度より大きくなった場合は、角度差An1を、(360−An1)とする。
【0071】
ここで、方向DrPは、0〜360度の範囲で求められており、角度で示される(ステップS106参照)。つまり、方向DrPは、前回の剣11の方向(傾きと向き)を示す。従って、ステップS100の処理は、前回の剣11の方向DrPと、今回の剣11の方向Drの第1の候補(つまり傾き角度An)と、の角度差を求める処理である。
【0072】
ステップS101にて、高速プロセッサ23は、前回の剣11の方向DrPと、今回の傾き角度Anに180度を加算したものと、の差の絶対値を、角度差An2に代入する。ただし、角度差An2が180度より大きくなった場合は、角度差An2を、(360−An2)とする。
【0073】
ここで、今回の傾き角度Anに180度を加算したものは、今回の剣11の方向Drの第2の候補である。従って、ステップS101の処理は、前回の剣11の方向DrPと、今回の剣11の方向Drの第2の候補(つまり傾き角度An+180度)と、の角度差を求める処理である。
【0074】
ステップS102では、高速プロセッサ23は、角度差An1とAn2とを比較して、角度差An1が小さい場合は、ステップS104に進み、それ以外はステップS103に進む。角度差An1が角度差An2より小さいということは、今回の剣11の方向Drの第1の候補が、第2の候補よりも、前回の剣11の方向に近いことを意味する。従って、ステップS104では、高速プロセッサ23は、今回の方向Drに、第1の候補(傾き角度An)を代入する。
【0075】
一方、角度差An2が角度差An1より小さいということは、今回の剣11の方向Drの第2の候補が、第1の候補よりも、前回の剣11の方向に近いことを意味する。従って、ステップS103では、高速プロセッサ23は、今回の方向Drに、第2の候補(傾き角度An+180)を代入する。
【0076】
ステップS105では、高速プロセッサ23は、剣11の方向を示す方向フラグDFを、方向Drに応じた値にセットする。つまり、方向Drが、図10の方向a0〜a31のいずれに属するかを判断して、属する方向a0,…,a30あるいはa31に応じた値に、方向フラグDFをセットする。
【0077】
ステップS106では、高速プロセッサ23は、方向DrPに、今回の方向Drを代入して、方向DrPを、次回の方向Drの算出に使用する。
【0078】
なお、方向DrPには、初期値として、0〜180度の範囲のいずれかの角度が代入される(図3のステップS1)。
【0079】
図3に戻って、ステップS8では、高速プロセッサ23は、再帰反射シート13が検出された場合、方向フラグDFに応じた、帯状オブジェクトの格納位置情報と、再帰反射シート13の中心座標(Xm,Ym)と、を内部メモリに格納する。つまり、再帰反射シート13が検出された場合に、剣11の方向Drに応じた帯状オブジェクトをテレビジョンモニタ7に表示すべく、このような処理を行う。なお、この処理は、ステップS8での一部の処理に過ぎない。
【0080】
図13は、本実施の形態でROM25に用意される帯状オブジェクトA0〜A8の例示図である。図13の帯状オブジェクトA0〜A8はそれぞれ、図10の方向a0〜a8に対応している。従って、剣11の方向フラグDFが方向a0〜a8のいずれかを示している場合は、対応する帯状オブジェクトA0〜A8がそのまま使用・表示される。剣11の方向フラグDFが方向a9〜a16のいずれかを示している場合は、対応する帯状オブジェクトA7〜A0が左右反転して使用・表示される。剣11の方向フラグDFが方向a17〜a23のいずれかを示している場合は、対応する帯状オブジェクトA1〜A7が左右反転かつ上下反転して使用・表示される。剣11の方向フラグDFが方向a24〜a31のいずれかを示している場合は、対応する帯状オブジェクトA8〜A1を上下反転して使用・表示される。
【0081】
図3に戻って、ステップS10では、高速プロセッサ23は、ステップS8で内部メモリに格納された帯状オブジェクトの格納位置情報を基に、ROM25から帯状オブジェクトの画像情報を読み出して、必要な処理を行い、剣11の中心座標(Xm,Ym)に応じた位置に、帯状オブジェクトを表示する。この場合、帯状オブジェクトの中心位置が、剣11の中心座標(Xm,Ym)に応じた位置に合わせられる。ここでは、帯状オブジェクトを中心に説明したが、背景画像やその他のオブジェクト画像の表示処理も行われる。
【0082】
図14は、図1のテレビジョンモニタ7に表示された帯状オブジェクトA2の例示図である。図14に示すように、テレビジョンモニタ7には、帯状オブジェクトA2を左右反転したものが表示されている。従って、この例では、剣11が、図11Aに示した状態であり、方向フラグDFが、方向a13を示している場合の表示例ということになる。このように、方向フラグDFが示す方向(つまり剣11の方向)に応じた帯状オブジェクトがテレビジョンモニタ7に表示される。
【0083】
さて、以上のように、本実施の形態によれば、差分画像上の剣11の最大X座標maxX、最小X座標minX、最大Y座標maxY、及び最小Y座標minYを求める。そして、X座標が最大X座標maxXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[maxX]を取得するとともに、X座標が最小X座標minXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[minX]を取得する。さらに、Y座標AY[maxX]とY座標AY[minX]とを比較して、比較結果に応じて、第1特定点(X1,Y1)及び第2特定点(X2,Y2)を決定し、剣11の傾き角度Anを算出する。このようにして、本実施の形態では、剣11が有する再帰反射シート13のストロボ映像を基に、剣11の傾きを検出できる。
【0084】
また、本実施の形態では、座標(minX,minY)、座標(minX,maxY)、座標(maxX,minY)、および座標(maxX,maxY)により形成される矩形の水平幅wX及び垂直幅wYを求める。そして、これらの比wX/wYに応じて、剣11が、垂直な状態か、あるいは、水平な状態か、を決定する。このように、剣11が特定の傾き(水平/垂直)で撮影された場合、特定の傾きであることを適切に判別できる。
【0085】
さらに、本実施の形態では、過去に求めた、差分画像上の剣11の方向DrPと、今回求めた、差分画像上の剣11の傾き角度Anと、に基づいて、差分画像上の剣11の方向を求める。このように、剣11の傾きだけでなく、剣11の方向をも検出できる。
【0086】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0087】
(1)上記では、操作物として剣型の操作物11を例に挙げたが、操作物の形状はこれに限定されない。また、操作物の傾きや方向を求めるための再帰反射シートの形状は、図1の再帰反射シート13の形状に限定されない。従って、全体のアスペクト比(縦横比)が1でなければ、細部の形状は任意であってもよい。
【0088】
(2)上記では、剣11の方向に応じた帯状オブジェクトをテレビジョンモニタ7に表示した。ただし、剣11の方向に応じて表示するオブジェクトはこれに限定されず、任意の形状や形態のオブジェクト(例えば、剣の形状のオブジェクト等)を表示できる。
【0089】
(3)図9では、傾き角度Anとして、角度そのものを求め、図12では、角度を直接代入して、角度差An1,An2や方向Drを求めたが、角度の表現方法は、これに限定されず、角度を間接的に表すものを用いることもできる。
【0090】
前述した実施例の説明は、例示説明の目的のために提示された。それは、説明された厳密な形式に発明を限定することを意図しておらず、上記教示を踏まえた変形が可能である。実施例は、発明の原理を最も明瞭に説明するために選択され、それによって当業者は、その現実的な適用が可能になり、意図された特定使用に向けられた様々な変形と形態で発明を最も効果的に利用することができる。
【図面の簡単な説明】
【0091】
付随する図面を使用した好ましい実施例の下記説明を参照することによって、本発明の前述の及び他の特徴と目的並びにそれらの達成方法は、より明らかになり、そして、その発明そのものも、最も良く理解できるであろう。
【0092】
【図1】図1は、本発明の実施の形態によるゲームシステムの全体構成を示すブロック図である。
【図2】図2は、図1のゲーム機1の電気的構成を示す図である。
【図3】図3は、図1のゲーム機1の全体の処理の流れの一例を示すフローチャートである。
【図4】図4は、図3のステップS2の撮影処理の流れの一例を示すフローチャートである。
【図5】図5は、図3のステップS4の差分Dif[X][Y]スキャンの流れの一例を示すフローチャートである。
【図6】図6は、図2のイメージセンサ19の撮影に基づく差分画像上の剣11の概念図である。
【図7】図7は、図5のステップS34のminX,maxX,minY,maxY算出処理の流れの一例を示すフローチャートである。
【図8】図8は、図3のステップS5の垂直/水平判定の流れの一例を示すフローチャートである。
【図9】図9は、図3のステップS6の剣11の傾き算出の流れの一例を示すフローチャートである。
【図10】図10は、図1のゲーム機1が判断する図1の剣11の傾き及び方向の説明図である。
【図11】図11Aは、図10の方向a13を向いている剣11の図である。図11Bは、図10の方向a29を向いている剣11の図である。
【図12】図12は、図3のステップS7の剣11の方向検出の流れの一例を示すフローチャートである。
【図13】図13は、図1のゲーム機1が生成する帯状オブジェクトA0〜A8の例示図である。
【図14】図14は、図1のテレビジョンモニタ7に表示された帯状オブジェクトA2の例示図である。
【技術分野】
【0001】
本発明は、本発明は、反射体を備えた操作物をストロボ撮影して、その操作物の傾きを検出する傾き検出方法及びその関連技術に関する。
【背景技術】
【0002】
本件出願人による特開2004−85524号公報に開示されているゴルフゲームシステムは、ゲーム機及びゴルフクラブ型入力装置(操作物)を含み、ゲーム機のハウジングの内部には撮像ユニットが収納され、この撮像ユニットは、イメージセンサ及び赤外発光ダイオード等から構成される。赤外発光ダイオードによって撮像ユニットの上方の所定範囲に赤外光が間欠的に照射され、したがって、イメージセンサは、その範囲内で移動するゴルフクラブ型入力装置に設けられた反射体を間欠的に撮影する。このような反射体のストロボ映像を処理することによって、ゴルフクラブ型入力装置の位置や速度を検出する。
【発明の開示】
【0003】
そこで、本発明の目的は、操作物に取り付けられた反射体のストロボ映像を処理することにより、操作物の傾きを検出する傾き検出方法及びその関連技術を提供することである。
【0004】
本発明の観点によれば、傾き検出方法は、オペレータに保持されて動きが与えられる操作物の傾きを検出する傾き検出方法であって、反射体を有する前記操作物に、予め定められた周期で、光を照射するステップと、前記光の発光時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる発光時画像データを取得するステップと、前記光の消灯時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる消灯時画像データを取得するステップと、前記発光時画像データと前記消灯時画像データとの差分を求めて、差分画像データを生成するステップと、前記差分画像データに基づく差分画像上の前記操作物の最大X座標を求めるステップと、前記差分画像上の前記操作物の最小X座標を求めるステップと、前記差分画像上の前記操作物の最大Y座標を求めるステップと、前記差分画像上の前記操作物の最小Y座標を求めるステップと、前記差分画像データを構成する複数のピクセルデータのうち、X座標が前記最大X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、前記差分画像データを構成する前記複数のピクセルデータのうち、X座標が前記最小X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、X座標が前記最大X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、X座標が前記最小X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、を比較して、その大小を判別するステップと、前記判別の結果、並びに、前記最大X座標、前記最小X座標、前記最大Y座標、及び、前記最小Y座標に基づいて、前記差分画像上の前記操作物の第1特定点の座標及び第2特定点の座標を求めるステップと、前記第1特定点の座標及び前記第2特定点の座標に基づいて、前記差分画像上の前記操作物の傾きを求めるステップと、を含む。
【0005】
この構成によれば、操作物が有する反射体のストロボ映像を基に、操作物の傾きを検出できる。
【0006】
上記傾き検出方法は、前記最大X座標と前記最小X座標との差を求めるステップと、前記最大Y座標と前記最小Y座標との差を求めるステップと、前記最大X座標と前記最小X座標との前記差と、前記最大Y座標と前記最小Y座標との前記差と、の比に応じて、前記差分画像上の前記操作物の前記傾きを求めるステップと、をさらに含む。
【0007】
この構成によれば、操作物が特定の傾きで撮影された場合、特定の傾きであることを適切に判別できる。特に、特定の傾きが、垂直あるいは水平の場合に有効である。
【0008】
上記傾き検出方法は、過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む。
【0009】
この構成によれば、操作物の傾きだけでなく、操作物の方向をも検出できる。
【0010】
本発明の別の観点によれば、エンタテインメント・システムは、前記エンタテインメント・システムを利用する際に、ユーザーが操作する操作物と、前記操作物に光を照射する発光装置と、前記操作物で反射した光を検出することにより異なる時間における前記操作物の画像を取得するイメージセンサとからなる撮影装置と、前記イメージセンサに接続され、前記イメージセンサから前記操作物の画像を受け取り、前記操作物の画像に基づいて、前記操作物の方向を決定する情報処理装置とを備え、前記操作物の方向の傾きは、前記イメージセンサで取得された前記操作物の対応する画像に基づいて算出され、前記撮影装置で取得された現時点の画像における前記操作物の方向の向きの決定は、同じ傾きを持つ2つの方向の候補の夫々と、前記撮影装置で取得され、時間的に先行する前記操作物の画像に基づいて決定された前回の方向との角度差を算出し、この角度差が小さい候補を選択することによって行われる。
【0011】
この構成によれば、操作物の方向の向きの決定を、高速に行うことができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。ここで、本実施の形態では、操作物11の1例として、剣型の操作物11(以下、本実施の形態では、「剣11」と呼ぶ。)を挙げている。
【0013】
剣11の刀身部の両面には、縦長の再帰反射シート13が取り付けられる。また、剣11の鍔部の両面には、半円柱状部材が取り付けられ、この半円柱状部材の曲面には、再帰反射シート15が取り付けられる。
【0014】
ゲーム機1は、A/Vケーブル9により、テレビジョンモニタ7に接続される。さらに、ゲーム機1には、図示していないが、ACアダプタあるいは電池により電源電圧が供給される。
【0015】
ゲーム機1は、その前面側に、赤外光のみを透過する赤外線フィルタ5が設けられ、さらに、赤外線フィルタ5を囲むように、赤外光を発生する4つの赤外発光ダイオード3が露出している。赤外線フィルタ5の背面側には、後述のイメージセンサ19が配置される。
【0016】
4つの赤外発光ダイオード3は、間欠的に赤外光を発光する。そして、赤外発光ダイオード3からの赤外光は、剣11に貼付された再帰反射シート13あるいは15により反射され、赤外線フィルタ5の背面側に設けられたイメージセンサ19に入力される。このようにして、イメージセンサ19により、剣11が撮影される。赤外光は間欠的に照射されるところ、赤外光の非照射時においても、イメージセンサ19による撮影処理は行われている。ゲーム機1は、プレイヤ17により動かされた剣11の、赤外光照射時の画像信号と非照射時の画像信号との差分を求めて、この差分信号を基に、剣11の位置、面積、傾き、及び方向などを検出する。
【0017】
図2は、図1のゲーム機1の電気的構成を示す図である。図2に示すように、ゲーム機1は、イメージセンサ19、赤外発光ダイオード3、高速プロセッサ23、ROM(read only memory)25、及びバス27を含む。
【0018】
剣11は、赤外発光ダイオード3の赤外光に照射され、その赤外光を再帰反射シート13あるいは15で反射する。この再帰反射シート13あるいは15からの反射光がイメージセンサ19によって撮影され、したがって、イメージセンサ19からは再帰反射シート13あるいは15の画像信号が出力される。イメージセンサ19からのこのアナログ画像信号は高速プロセッサ23に内蔵されたA/Dコンバータ(図示せず)によってデジタルデータに変換される。赤外光消灯時も同様の処理が行われる。このようなストロボ撮影のために、高速プロセッサ23は、赤外発光ダイオード3を間欠的に点滅する。
【0019】
高速プロセッサ23は、図示しないが、CPU(central processing unit)、グラフィックプロセッサ、サウンドプロセッサおよびDMAプロセッサ等の各種プロセッサを含むとともに、アナログ信号を取り込むときに用いられるA/Dコンバータや、キー操作信号のような入力信号を受けかつ出力信号を外部機器に与える入出力制御回路を含む。イメージセンサ19や赤外発行ダイオード3は、入出力制御回路を介してCPUにより制御される。CPUは、ROM25に格納されたゲームプログラムを実行し、演算結果をグラフィックプロセッサ及びサウンドプロセッサに与える。したがって、グラフィックプロセッサやサウンドプロセッサはその演算結果に応じた画像処理や音声処理を実行する。
【0020】
高速プロセッサ23には、図示しないが内部メモリが設けられ、この内部メモリは、例えば、RAM(random access memory)により構成される。内部メモリは、ワーキング領域、カウンタ領域、レジスタ領域、テンポラリデータ領域、及び/又はフラグ領域等として利用される。
【0021】
高速プロセッサ23は、バス27を通じて、ROM25にアクセスできる。従って、高速プロセッサ23は、ROM25に格納されたゲームプログラムを実行し、また、ROM25に格納された画像データや音声データをリードして処理する。
【0022】
高速プロセッサ23は、イメージセンサ19からA/Dコンバータを介して入力されるデジタル画像信号を処理して、剣11の位置、面積、傾き、及び方向などを検出するとともに、他の演算、グラフィック処理、及びサウンド処理等を実行し、ビデオ信号およびオーディオ信号を出力する。ビデオ信号およびオーディオ信号は、A/Vケーブル9によりテレビジョンモニタ7に与えられ、応じて、テレビジョンモニタ7に映像が表示され、そのスピーカ(図示せず)から音声が出力される。
【0023】
図3は、図1のゲーム機1の全体の処理の流れの一例を示すフローチャートである。図3に示すように、ステップS1にて、高速プロセッサ23は、システムの初期設定を実行する。ステップS2にて、高速プロセッサ23は、赤外発光ダイオード3を駆動して、剣11の撮影処理を行う。
【0024】
図4は、図3のステップS2の撮影処理の流れの一例を示すフローチャートである。図4に示すように、ステップS20において、高速プロセッサ23は、赤外発光ダイオード3を点灯する。ステップS21で、高速プロセッサ23は、イメージセンサ19から、赤外光点灯時の画像データを取得して、内部メモリに格納する。
【0025】
ここで、本実施の形態では、イメージセンサ19の例として、32ピクセル×32ピクセルのCMOSイメージセンサを使用する。そして、水平方向をX軸、垂直方向をY軸とする。従って、イメージセンサ19からは、画像データとして、32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ)が出力される。このピクセルデータは、A/Dコンバータにより、デジタルデータに変換されて、内部メモリ上の配列P1[X][Y]に格納される。
【0026】
ステップS22で、高速プロセッサ23は、赤外発光ダイオード3を消灯する。ステップS23にて、高速プロセッサ23は、イメージセンサ19から、赤外光消灯時の画像データ(32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ))を取得して、内部メモリに格納する。この場合、赤外光消灯時の画像データは、内部メモリ上の配列P2[X][Y]に格納される。
【0027】
以上のようにして、ストロボ撮影が行われる。なお、本実施の形態では、32ピクセル×32ピクセルのイメージセンサ19を用いているため、X=0〜31、Y=0〜31であり、左上角を原点とする。
【0028】
図3に戻って、ステップS3にて、高速プロセッサ23は、赤外発光ダイオード3の点灯時のピクセルデータP1[X][Y]と、赤外発光ダイオード3の消灯時のピクセルデータP2[X][Y]と、の差分を算出して、差分データを、配列Dif[X][Y]に代入する。
【0029】
このように、差分データ(差分画像)を求めることで、剣11(再帰反射シート13及び15)からの反射光以外の光によるノイズを極力除去でき、精度良く剣11(再帰反射シート13及び15)を検出できる。
【0030】
ステップS4では、高速プロセッサは、差分データつまり配列Dif[X][Y]をスキャンして、剣11の位置、面積、最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxY等を算出する。
【0031】
ステップS5にて、高速プロセッサ23は、剣11が垂直になっているか、あるいは、剣11が水平になっているか、を判定する。ステップS6にて、高速プロセッサ23は、剣11の傾き(水平/垂直を除く。)を判断する。ステップS7にて、高速プロセッサ23は、剣11が向いている方向を判断する。
【0032】
ここで、剣11の「傾き」は、傾きの大きさだけを持つスカラ量であり、剣11の「方向」は、傾きの大きさと向きを持つベクトル量である。
【0033】
ステップS8にて、高速プロセッサ23は、ステップS4〜S7の処理結果を利用した情報処理を実行する。
【0034】
高速プロセッサ23は、ステップS9にて、「YES」であれば、即ち、ビデオ同期の割込み待ちであれば(ビデオ同期信号による割り込みがなければ)、同じステップS9に戻る。一方、ステップS9で「NO」であれば、即ち、ビデオ同期の割込み待ちでなければ(ビデオ同期信号による割り込みがあれば)、ステップS10に進む。ステップS10では、高速プロセッサ23は、テレビジョンモニタ7に表示される画面の更新処理を実行して、ステップS2に進む。
【0035】
ステップS11の音声処理は、音声割り込みが発生したときに実行され、それによって、音楽や効果音を出力する。
【0036】
図5は、図3のステップS4の差分Dif[X][Y]スキャンの流れの一例を示すフローチャートである。図5に示すように、ステップS30にて、高速プロセッサ23は、変数X,Y,maxX,maxY,AY[X],CMAX,LMAX,Xm,Ym,Caに「0」を代入する。また、同じステップS30にて、変数minX,minYに「31」を代入する。
【0037】
ステップS31にて、高速プロセッサ23は、配列Dif[X][Y]の要素を所定の閾値ThLと比較する。ステップS32にて、高速プロセッサ23は、配列Dif[X][Y]の要素が所定の閾値ThLより大きい場合は、ステップS33に進み、所定の閾値ThL以下の場合は、ステップS43に進む。
【0038】
ステップS31,S32の処理は、再帰反射シート13あるいは15が撮影されたか否かを検出するための処理である。再帰反射シート13あるいは15が撮影されると、差分画像上では、再帰反射シートに相当するピクセルの輝度値が大きくなるため、閾値ThLにより、輝度値の大小を峻別して、閾値ThLより大きい輝度値を持つピクセルを、撮影された再帰反射シート13あるいは15の一部であると認識する。
【0039】
ステップS33にて、高速プロセッサ23は、所定の閾値ThLを超えた差分データ(配列Dif[X][Y]の要素)の数を計数すべく、カウント値Caを1つインクリメントする。
【0040】
ステップS34にて、高速プロセッサ23は、上記差分データDif[X][Y]に基づく差分画像上の剣11の最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYの算出処理を実行する。この点を図面を用いて説明する。
【0041】
図6は、図2のイメージセンサ19の撮影に基づく差分画像上の剣11の概念図である。図6では、剣11の再帰反射シート13が撮影された例を示している。図6に示すように、図5のステップS34の処理は、差分画像(32×32ピクセル)上の剣11の最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYを求めるための処理であり、図5のステップS47でX=32と判断されたときに、最終的にこれらの値が確定する。
【0042】
図7は、図5のステップS34のminX,maxX,minY,maxY算出処理の流れの一例を示すフローチャートである。図7に示すように、ステップS50にて、高速プロセッサ23は、カウント値Caが「1」か否かを判断して、「1」である場合は、ステップS51に進み、それ以外はステップS52に進む。
【0043】
ステップS51では、高速プロセッサ23は、最小X座標minXに、現在のX座標を代入する。つまり、スキャンは、Y=0から開始して、Y=31まで行い、Xをインクリメントして、再び、Y=0から開始して、Y=31まで行う、という処理を繰り返すので(図5のステップS43〜S47参照)、最初に閾値ThLを超えた配列Dif[X][Y](つまりピクセル)の「X」が最小X座標minXとなる。
【0044】
ステップS52では、高速プロセッサ23は、現在の最大X座標maxXと現在のX座標とを比較する。ステップS53にて、高速プロセッサ23は、現在のX座標が大きい場合は、ステップS54に進み、それ以外はステップS55に進む。ステップS54では、高速プロセッサ23は、最大X座標maxXに、現在のX座標を代入する。
【0045】
ステップS55では、高速プロセッサ23は、現在の最小Y座標minYと現在のY座標とを比較する。ステップS56にて、高速プロセッサ23は、現在のY座標が小さい場合は、ステップS57に進み、それ以外はステップS58に進む。ステップS57では、高速プロセッサ23は、最小Y座標minYに、現在のY座標を代入する。
【0046】
ステップS58では、高速プロセッサ23は、現在の最大Y座標maxYと現在のY座標とを比較する。ステップS59にて、高速プロセッサ23は、現在のY座標が大きい場合は、ステップS60に進み、それ以外はリターンする。ステップS60では、高速プロセッサ23は、最大Y座標maxYに、現在のY座標を代入する。
【0047】
上記ステップS50〜S60を繰り返すことにより、X=32となった時点で(図5のステップS47参照)、最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYが全て確定する。
【0048】
図5に戻って、ステップS35にて、高速プロセッサ23は、現在の最大輝度値CMAXと配列Dif[X][Y]とを比較する。ステップS36にて、高速プロセッサ23は、現在の配列Dif[X][Y]の要素が大きかった場合、つまり、現在のX座標及びY座標に位置するピクセルの輝度値が大きかった場合、ステップS37に進み、そうでない場合は、ステップS39に進む。
【0049】
ステップS37では、高速プロセッサ23は、配列AY[X]に、現在のY座標を格納する。図6を参照して、この配列AY[X]の要素数は「32」であり、X座標(0〜31)に対応しており、Y=32になった時点では(ステップS44参照)、同じX座標に位置する(同じ列の)32個のピクセルのうち、最大の輝度値を持つピクセルのY座標が、配列AY[X]に代入される。ステップS38では、最大輝度値CMAXに現在の配列Dif[X][Y]の要素を代入する。
【0050】
図5に戻って、ステップS39では、高速プロセッサ23は、現在の最大輝度値LMAXと、配列Dif[X][Y]とを比較する。ステップS40にて、配列Dif[X][Y]が大きい場合はステップS41に進み、それ以外はステップS43に進む。ステップS41では、高速プロセッサ23は、座標Xm及びYmにそれぞれ、現在のX座標及びY座標を代入する。ステップS42では、高速プロセッサ23は、現在の最大輝度値LMAXに、配列Dif[X][Y]の要素を代入する。X=32になった時点では(ステップS47参照)、32×32のピクセルのうち、最大の輝度値を持つピクセルのX座標及びY座標がそれぞれ、座標Xm及びYmに代入される。そして、座標Xmを剣11の中心X座標、座標Ymを剣11の中心Y座標とする。
【0051】
ステップS43では、高速プロセッサ23は、「Y」を1つインクリメントする。ステップS44にて、高速プロセッサ23は、Y=32のときは(つまり、差分画像のピクセル1列分の処理が終了したときは)ステップS45に進み、それ以外はステップS31に進む。
【0052】
ステップS45では、高速プロセッサ23は、「Y」及び「CMAX」に「0」を代入する。ステップS46にて、高速プロセッサ23は、「X」を1つインクリメントする。ステップS45,S46の処理は、差分画像の1列分の処理が終了したため、次の1列分の処理を進めるために実行される。
【0053】
ステップS47にて、高速プロセッサ23は、X=32のときは(つまり、差分画像の32×32ピクセル分の処理が終了したときは)ステップS48に進み、それ以外はステップS31に進む。
【0054】
ステップS48では、高速プロセッサ23は、カウント値Caが、所定値ThAより大きいか否かを判断して、大きいときはリターンし、それ以外は図3のステップS8に進む。最終的なカウント値Caは、閾値ThLを超えた輝度値を持つピクセルの数であり、再帰反射シート13あるいは15の差分画像上の面積に相当する。従って、カウント値Caが所定値ThAより大きい場合は、面積の大きい再帰反射シート13が撮影されたと判断し(再帰反射シート13がイメージセンサ19に向けられたと判断し)、カウント値Caが所定値ThA以下の場合は、面積の小さい再帰反射シート15が撮影されたと判断(再帰反射シート15がイメージセンサ19に向けられたと判断)する。
【0055】
図3のステップS5〜S7の処理は、高速プロセッサ23が、再帰反射シート13が撮影されたと判断した場合の処理である。再帰反射シート15が撮影されたと判断した場合は、ステップS8において、再帰反射シート15の中心座標(Xm,Ym)を基に、プレイヤ17が剣11を振ったときの速さや動きの方向などが算出され、さらに、その結果に基づく情報処理が実行される。
【0056】
図8は、図3のステップS5の垂直/水平判定の流れの一例を示すフローチャートである。図8に示すように、ステップS70にて、高速プロセッサ23は、maxX−minXを実行して、座標(minX,minY)、座標(minX,maxY)、座標(maxX,minY)、および座標(maxX,maxY)により形成される矩形の水平方向の幅wXを求める。また、高速プロセッサ23は、maxY−minYを実行して、上記矩形の垂直方向の幅wYを求める。
【0057】
ステップS71にて、高速プロセッサ23は、水平幅wXと所定値CX1とを比較する。ステップS72にて、水平幅wXが小さい場合はステップS73に進み、それ以外はステップS77に進む。ステップS73では、高速プロセッサ23は、垂直幅wYと所定値CY1とを比較する。ステップS74にて、垂直幅wYが大きい場合はステップS75に進み、それ以外はステップS77に進む。
【0058】
ここで、CX1<CY1であるため、wX<CX1、かつ、wY>CY1の場合は、剣11が、垂直な状態で撮影されたと判断できる。なぜなら、再帰反射シート13の形状は、剣11の長手方向に長く、幅方向に短くなっているからである。従って、ステップS75では、高速プロセッサ23は、剣11の傾き角度Anに、90度を示す「90」を代入し、図3のステップS7に進む。
【0059】
一方、ステップS77にて、高速プロセッサ23は、水平幅wXと所定値CX2とを比較する。ステップS78にて、水平幅wXが大きい場合はステップS79に進み、それ以外はリターンする。ステップS79では、高速プロセッサ23は、垂直幅wYと所定値CY2とを比較する。ステップS80にて、垂直幅wYが小さい場合はステップS81に進み、それ以外はリターンする。
【0060】
ここで、CX2>CY2であるため、wX>CX2、かつ、wY<CY2の場合は、剣11が、水平な状態で撮影されたと判断できる。なぜなら、再帰反射シート13の形状は、剣11の長手方向に長く、幅方向に短くなっているからである。なお、CX1=CY2、CX2=CY1とする。従って、ステップS81では、高速プロセッサ23は、剣11の傾き角度Anに、0度を示す「0」を代入し、図3のステップS7に進む。
【0061】
図9は、図3のステップS6の剣11の傾き算出の流れの一例を示すフローチャートである。図9に示すように、ステップS90にて、高速プロセッサ23は、Xが最大X座標maxXの場合の配列AY[X]の要素AY[maxX]と、Xが最小X座標minXの場合の配列AY[X]の要素AY[minX]と、を比較する。
【0062】
ここで、要素AY[maxX]は、X座標が最大X座標maxXである32個のピクセルのうち、最大輝度値CMAXを持つピクセルのY座標である。要素AY[minX]は、X座標が最小X座標minXである32個のピクセルのうち、最大輝度値CMAXを持つピクセルのY座標である。
【0063】
ステップS91では、高速プロセッサ23は、要素AY[maxX]が大きい場合は、ステップS92に進み、それ以外は、ステップS93に進む。
【0064】
ここで、要素AY[maxX]が要素AY[minX]より大きいということは、剣11(再帰反射シート13)が右上がりになっていることを意味する(図6に示す再帰反射シート13のような場合)。従って、ステップS92では、傾き角度An算出のための第1特定点の座標(X1,Y1)及び第2特定点の座標(X2,Y2)をそれぞれ、(maxX,minY)及び(minX,maxY)とする(図6参照)。
【0065】
一方、要素AY[maxX]が要素AY[minX]より小さいということは、剣11(再帰反射シート13)が右下がりになっていることを意味する(図6に示す再帰反射シート13を左右反転したような場合)。従って、ステップS93では、傾き角度An算出のための座標(X1,Y1)及び(X2,Y2)をそれぞれ、(minX,minY)及び(maxX,maxY)とする。
【0066】
ステップS94にて、高速プロセッサ23は、座標(X1,Y1)及び(X2,Y2)を基に、剣11の傾き角度Anを算出する。本実施の形態では、傾き角度Anは、水平から反時計回りの角度として算出する。傾き角度Anについて図面を用いて説明する。
【0067】
図10は、図1のゲーム機1が判断する剣11の傾き及び方向の説明図である。図10に示すように、本実施の形態では、360度を32分割し、11.25度に1つの方向を割り当てる。つまり、32の方向a0〜a31を定めている。ただし、図9の処理では、剣11の傾きを判断できても、剣11の向きまでは分からない。例を挙げる。
【0068】
図11Aは、図10の方向a13を向いている剣11の図、図11Bは、方向a29を向いている剣11の図である。これらから分かるように、剣11の傾きは同じであるが、その向きが異なることがある。図9の処理では、剣11の向きを判別することはできない。
【0069】
つまり、座標(X1,Y1)及び(X2,Y2)から算出した傾き角度Anは、0〜180度の範囲で求められる。従って、例えば、傾き角度Anが、100度の場合は、100度に対応する方向は、方向a9と方向a25とが存在し、両者を判別することはできない。そこで、図3のステップS7を実行する。
【0070】
図12は、図3のステップS7の剣11の方向検出の流れの一例を示すフローチャートである。図12に示すように、ステップS100にて、高速プロセッサ23は、前回の剣11の方向DrPと今回の傾き角度Anとの差の絶対値を、角度差An1に代入する。ただし、角度差An1が180度より大きくなった場合は、角度差An1を、(360−An1)とする。
【0071】
ここで、方向DrPは、0〜360度の範囲で求められており、角度で示される(ステップS106参照)。つまり、方向DrPは、前回の剣11の方向(傾きと向き)を示す。従って、ステップS100の処理は、前回の剣11の方向DrPと、今回の剣11の方向Drの第1の候補(つまり傾き角度An)と、の角度差を求める処理である。
【0072】
ステップS101にて、高速プロセッサ23は、前回の剣11の方向DrPと、今回の傾き角度Anに180度を加算したものと、の差の絶対値を、角度差An2に代入する。ただし、角度差An2が180度より大きくなった場合は、角度差An2を、(360−An2)とする。
【0073】
ここで、今回の傾き角度Anに180度を加算したものは、今回の剣11の方向Drの第2の候補である。従って、ステップS101の処理は、前回の剣11の方向DrPと、今回の剣11の方向Drの第2の候補(つまり傾き角度An+180度)と、の角度差を求める処理である。
【0074】
ステップS102では、高速プロセッサ23は、角度差An1とAn2とを比較して、角度差An1が小さい場合は、ステップS104に進み、それ以外はステップS103に進む。角度差An1が角度差An2より小さいということは、今回の剣11の方向Drの第1の候補が、第2の候補よりも、前回の剣11の方向に近いことを意味する。従って、ステップS104では、高速プロセッサ23は、今回の方向Drに、第1の候補(傾き角度An)を代入する。
【0075】
一方、角度差An2が角度差An1より小さいということは、今回の剣11の方向Drの第2の候補が、第1の候補よりも、前回の剣11の方向に近いことを意味する。従って、ステップS103では、高速プロセッサ23は、今回の方向Drに、第2の候補(傾き角度An+180)を代入する。
【0076】
ステップS105では、高速プロセッサ23は、剣11の方向を示す方向フラグDFを、方向Drに応じた値にセットする。つまり、方向Drが、図10の方向a0〜a31のいずれに属するかを判断して、属する方向a0,…,a30あるいはa31に応じた値に、方向フラグDFをセットする。
【0077】
ステップS106では、高速プロセッサ23は、方向DrPに、今回の方向Drを代入して、方向DrPを、次回の方向Drの算出に使用する。
【0078】
なお、方向DrPには、初期値として、0〜180度の範囲のいずれかの角度が代入される(図3のステップS1)。
【0079】
図3に戻って、ステップS8では、高速プロセッサ23は、再帰反射シート13が検出された場合、方向フラグDFに応じた、帯状オブジェクトの格納位置情報と、再帰反射シート13の中心座標(Xm,Ym)と、を内部メモリに格納する。つまり、再帰反射シート13が検出された場合に、剣11の方向Drに応じた帯状オブジェクトをテレビジョンモニタ7に表示すべく、このような処理を行う。なお、この処理は、ステップS8での一部の処理に過ぎない。
【0080】
図13は、本実施の形態でROM25に用意される帯状オブジェクトA0〜A8の例示図である。図13の帯状オブジェクトA0〜A8はそれぞれ、図10の方向a0〜a8に対応している。従って、剣11の方向フラグDFが方向a0〜a8のいずれかを示している場合は、対応する帯状オブジェクトA0〜A8がそのまま使用・表示される。剣11の方向フラグDFが方向a9〜a16のいずれかを示している場合は、対応する帯状オブジェクトA7〜A0が左右反転して使用・表示される。剣11の方向フラグDFが方向a17〜a23のいずれかを示している場合は、対応する帯状オブジェクトA1〜A7が左右反転かつ上下反転して使用・表示される。剣11の方向フラグDFが方向a24〜a31のいずれかを示している場合は、対応する帯状オブジェクトA8〜A1を上下反転して使用・表示される。
【0081】
図3に戻って、ステップS10では、高速プロセッサ23は、ステップS8で内部メモリに格納された帯状オブジェクトの格納位置情報を基に、ROM25から帯状オブジェクトの画像情報を読み出して、必要な処理を行い、剣11の中心座標(Xm,Ym)に応じた位置に、帯状オブジェクトを表示する。この場合、帯状オブジェクトの中心位置が、剣11の中心座標(Xm,Ym)に応じた位置に合わせられる。ここでは、帯状オブジェクトを中心に説明したが、背景画像やその他のオブジェクト画像の表示処理も行われる。
【0082】
図14は、図1のテレビジョンモニタ7に表示された帯状オブジェクトA2の例示図である。図14に示すように、テレビジョンモニタ7には、帯状オブジェクトA2を左右反転したものが表示されている。従って、この例では、剣11が、図11Aに示した状態であり、方向フラグDFが、方向a13を示している場合の表示例ということになる。このように、方向フラグDFが示す方向(つまり剣11の方向)に応じた帯状オブジェクトがテレビジョンモニタ7に表示される。
【0083】
さて、以上のように、本実施の形態によれば、差分画像上の剣11の最大X座標maxX、最小X座標minX、最大Y座標maxY、及び最小Y座標minYを求める。そして、X座標が最大X座標maxXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[maxX]を取得するとともに、X座標が最小X座標minXである複数のピクセルから、最大輝度値を有するピクセルを検出して、そのピクセルのY座標AY[minX]を取得する。さらに、Y座標AY[maxX]とY座標AY[minX]とを比較して、比較結果に応じて、第1特定点(X1,Y1)及び第2特定点(X2,Y2)を決定し、剣11の傾き角度Anを算出する。このようにして、本実施の形態では、剣11が有する再帰反射シート13のストロボ映像を基に、剣11の傾きを検出できる。
【0084】
また、本実施の形態では、座標(minX,minY)、座標(minX,maxY)、座標(maxX,minY)、および座標(maxX,maxY)により形成される矩形の水平幅wX及び垂直幅wYを求める。そして、これらの比wX/wYに応じて、剣11が、垂直な状態か、あるいは、水平な状態か、を決定する。このように、剣11が特定の傾き(水平/垂直)で撮影された場合、特定の傾きであることを適切に判別できる。
【0085】
さらに、本実施の形態では、過去に求めた、差分画像上の剣11の方向DrPと、今回求めた、差分画像上の剣11の傾き角度Anと、に基づいて、差分画像上の剣11の方向を求める。このように、剣11の傾きだけでなく、剣11の方向をも検出できる。
【0086】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0087】
(1)上記では、操作物として剣型の操作物11を例に挙げたが、操作物の形状はこれに限定されない。また、操作物の傾きや方向を求めるための再帰反射シートの形状は、図1の再帰反射シート13の形状に限定されない。従って、全体のアスペクト比(縦横比)が1でなければ、細部の形状は任意であってもよい。
【0088】
(2)上記では、剣11の方向に応じた帯状オブジェクトをテレビジョンモニタ7に表示した。ただし、剣11の方向に応じて表示するオブジェクトはこれに限定されず、任意の形状や形態のオブジェクト(例えば、剣の形状のオブジェクト等)を表示できる。
【0089】
(3)図9では、傾き角度Anとして、角度そのものを求め、図12では、角度を直接代入して、角度差An1,An2や方向Drを求めたが、角度の表現方法は、これに限定されず、角度を間接的に表すものを用いることもできる。
【0090】
前述した実施例の説明は、例示説明の目的のために提示された。それは、説明された厳密な形式に発明を限定することを意図しておらず、上記教示を踏まえた変形が可能である。実施例は、発明の原理を最も明瞭に説明するために選択され、それによって当業者は、その現実的な適用が可能になり、意図された特定使用に向けられた様々な変形と形態で発明を最も効果的に利用することができる。
【図面の簡単な説明】
【0091】
付随する図面を使用した好ましい実施例の下記説明を参照することによって、本発明の前述の及び他の特徴と目的並びにそれらの達成方法は、より明らかになり、そして、その発明そのものも、最も良く理解できるであろう。
【0092】
【図1】図1は、本発明の実施の形態によるゲームシステムの全体構成を示すブロック図である。
【図2】図2は、図1のゲーム機1の電気的構成を示す図である。
【図3】図3は、図1のゲーム機1の全体の処理の流れの一例を示すフローチャートである。
【図4】図4は、図3のステップS2の撮影処理の流れの一例を示すフローチャートである。
【図5】図5は、図3のステップS4の差分Dif[X][Y]スキャンの流れの一例を示すフローチャートである。
【図6】図6は、図2のイメージセンサ19の撮影に基づく差分画像上の剣11の概念図である。
【図7】図7は、図5のステップS34のminX,maxX,minY,maxY算出処理の流れの一例を示すフローチャートである。
【図8】図8は、図3のステップS5の垂直/水平判定の流れの一例を示すフローチャートである。
【図9】図9は、図3のステップS6の剣11の傾き算出の流れの一例を示すフローチャートである。
【図10】図10は、図1のゲーム機1が判断する図1の剣11の傾き及び方向の説明図である。
【図11】図11Aは、図10の方向a13を向いている剣11の図である。図11Bは、図10の方向a29を向いている剣11の図である。
【図12】図12は、図3のステップS7の剣11の方向検出の流れの一例を示すフローチャートである。
【図13】図13は、図1のゲーム機1が生成する帯状オブジェクトA0〜A8の例示図である。
【図14】図14は、図1のテレビジョンモニタ7に表示された帯状オブジェクトA2の例示図である。
【特許請求の範囲】
【請求項1】
オペレータに保持されて動きが与えられる操作物の傾きを検出する傾き検出方法であって、
反射体を有する前記操作物に、予め定められた周期で、光を照射するステップと、
前記光の発光時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる発光時画像データを取得するステップと、
前記光の消灯時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる消灯時画像データを取得するステップと、
前記発光時画像データと前記消灯時画像データとの差分を求めて、差分画像データを生成するステップと、
前記差分画像データに基づく差分画像上の前記操作物の最大X座標を求めるステップと、
前記差分画像上の前記操作物の最小X座標を求めるステップと、
前記差分画像上の前記操作物の最大Y座標を求めるステップと、
前記差分画像上の前記操作物の最小Y座標を求めるステップと、
前記差分画像データを構成する複数のピクセルデータのうち、X座標が前記最大X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、
前記差分画像データを構成する前記複数のピクセルデータのうち、X座標が前記最小X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、
X座標が前記最大X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、X座標が前記最小X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、を比較して、その大小を判別するステップと、
前記判別の結果、並びに、前記最大X座標、前記最小X座標、前記最大Y座標、及び、前記最小Y座標に基づいて、前記差分画像上の前記操作物の第1特定点の座標及び第2特定点の座標を求めるステップと、
前記第1特定点の座標及び前記第2特定点の座標に基づいて、前記差分画像上の前記操作物の傾きを求めるステップと、を含む傾き検出方法。
【請求項2】
前記最大X座標と前記最小X座標との差を求めるステップと、
前記最大Y座標と前記最小Y座標との差を求めるステップと、
前記最大X座標と前記最小X座標との前記差と、前記最大Y座標と前記最小Y座標との前記差と、の比に応じて、前記差分画像上の前記操作物の前記傾きを求めるステップと、をさらに含む請求項1記載の傾き検出方法。
【請求項3】
過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む請求項1記載の傾き検出方法。
【請求項4】
過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む請求項2記載の傾き検出方法。
【請求項5】
エンタテインメント・システムであって、
前記エンタテインメント・システムを利用する際に、ユーザーが操作する操作物と、
前記操作物に光を照射する発光装置と、前記操作物で反射した光を検出することにより異なる時間における前記操作物の画像を取得するイメージセンサとからなる撮影装置と、
前記イメージセンサに接続され、前記イメージセンサから前記操作物の画像を受け取り、前記操作物の画像に基づいて、前記操作物の方向を決定する情報処理装置とを備え、
前記操作物の方向の傾きは、前記イメージセンサで取得された前記操作物の対応する画像に基づいて算出され、
前記撮影装置で取得された現時点の画像における前記操作物の方向の向きの決定は、同じ傾きを持つ2つの方向の候補の夫々と、前記撮影装置で取得され、時間的に先行する前記操作物の画像に基づいて決定された前回の方向との角度差を算出し、この角度差が小さい候補を選択することによって行われるエンタテインメント・システム。
【請求項1】
オペレータに保持されて動きが与えられる操作物の傾きを検出する傾き検出方法であって、
反射体を有する前記操作物に、予め定められた周期で、光を照射するステップと、
前記光の発光時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる発光時画像データを取得するステップと、
前記光の消灯時において、前記操作物を撮影して、各々輝度値を含む複数のピクセルデータからなる消灯時画像データを取得するステップと、
前記発光時画像データと前記消灯時画像データとの差分を求めて、差分画像データを生成するステップと、
前記差分画像データに基づく差分画像上の前記操作物の最大X座標を求めるステップと、
前記差分画像上の前記操作物の最小X座標を求めるステップと、
前記差分画像上の前記操作物の最大Y座標を求めるステップと、
前記差分画像上の前記操作物の最小Y座標を求めるステップと、
前記差分画像データを構成する複数のピクセルデータのうち、X座標が前記最大X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、
前記差分画像データを構成する前記複数のピクセルデータのうち、X座標が前記最小X座標である複数のピクセルデータから、最大輝度値を有するピクセルデータを検出して、そのピクセルデータのY座標を取得するステップと、
X座標が前記最大X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、X座標が前記最小X座標である最大輝度値を有する前記ピクセルデータの前記Y座標と、を比較して、その大小を判別するステップと、
前記判別の結果、並びに、前記最大X座標、前記最小X座標、前記最大Y座標、及び、前記最小Y座標に基づいて、前記差分画像上の前記操作物の第1特定点の座標及び第2特定点の座標を求めるステップと、
前記第1特定点の座標及び前記第2特定点の座標に基づいて、前記差分画像上の前記操作物の傾きを求めるステップと、を含む傾き検出方法。
【請求項2】
前記最大X座標と前記最小X座標との差を求めるステップと、
前記最大Y座標と前記最小Y座標との差を求めるステップと、
前記最大X座標と前記最小X座標との前記差と、前記最大Y座標と前記最小Y座標との前記差と、の比に応じて、前記差分画像上の前記操作物の前記傾きを求めるステップと、をさらに含む請求項1記載の傾き検出方法。
【請求項3】
過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む請求項1記載の傾き検出方法。
【請求項4】
過去に求めた、前記差分画像上の前記操作物の方向と、今回求めた、前記差分画像上の前記操作物の前記傾きと、に基づいて、前記差分画像上の前記操作物の方向を求めるステップをさらに含む請求項2記載の傾き検出方法。
【請求項5】
エンタテインメント・システムであって、
前記エンタテインメント・システムを利用する際に、ユーザーが操作する操作物と、
前記操作物に光を照射する発光装置と、前記操作物で反射した光を検出することにより異なる時間における前記操作物の画像を取得するイメージセンサとからなる撮影装置と、
前記イメージセンサに接続され、前記イメージセンサから前記操作物の画像を受け取り、前記操作物の画像に基づいて、前記操作物の方向を決定する情報処理装置とを備え、
前記操作物の方向の傾きは、前記イメージセンサで取得された前記操作物の対応する画像に基づいて算出され、
前記撮影装置で取得された現時点の画像における前記操作物の方向の向きの決定は、同じ傾きを持つ2つの方向の候補の夫々と、前記撮影装置で取得され、時間的に先行する前記操作物の画像に基づいて決定された前回の方向との角度差を算出し、この角度差が小さい候補を選択することによって行われるエンタテインメント・システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公表番号】特表2008−512643(P2008−512643A)
【公表日】平成20年4月24日(2008.4.24)
【国際特許分類】
【出願番号】特願2007−511134(P2007−511134)
【出願日】平成17年9月1日(2005.9.1)
【国際出願番号】PCT/JP2005/016468
【国際公開番号】WO2006/028158
【国際公開日】平成18年3月16日(2006.3.16)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
【公表日】平成20年4月24日(2008.4.24)
【国際特許分類】
【出願日】平成17年9月1日(2005.9.1)
【国際出願番号】PCT/JP2005/016468
【国際公開番号】WO2006/028158
【国際公開日】平成18年3月16日(2006.3.16)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
[ Back to top ]