物体検出装置、それを用いたインタラクティブシステム、物体検出方法、それを用いたインタラクティブシステム構築方法、コンピュータプログラム、及び記録媒体
【課題】 対象物への反射部材の装着や取付けを行うことなく、撮影により、対象物を検出できる物体検出装置を提供することである。
【解決手段】 スクリーン15に取付けられ、受けた光を再帰反射する再帰反射シート17−1〜17−3,19−1,19−2と、これら再帰反射シートを撮像する撮像ユニット7と、撮像により得られた差分画像を解析するMCU33と、を備える。MCU33は、差分画像から、プレイヤ25の足により再帰反射シートが遮蔽された部分に対応する遮蔽領域を検出する。遮蔽領域の検出は、プレイヤ25の足を検出することに相当する。足が再帰反射シート上に位置する場合、その部分は差分画像に現れず、遮蔽領域となって現れるからである。足への再帰反射シートの装着や取付けを行うことなく、撮影により、足を検出できる。
【解決手段】 スクリーン15に取付けられ、受けた光を再帰反射する再帰反射シート17−1〜17−3,19−1,19−2と、これら再帰反射シートを撮像する撮像ユニット7と、撮像により得られた差分画像を解析するMCU33と、を備える。MCU33は、差分画像から、プレイヤ25の足により再帰反射シートが遮蔽された部分に対応する遮蔽領域を検出する。遮蔽領域の検出は、プレイヤ25の足を検出することに相当する。足が再帰反射シート上に位置する場合、その部分は差分画像に現れず、遮蔽領域となって現れるからである。足への再帰反射シートの装着や取付けを行うことなく、撮影により、足を検出できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置からの画像を解析して、対象物を検出する物体検出装置及びその関連技術に関する。
【背景技術】
【0002】
本件出願人によるゴルフゲームシステムが特許文献1に開示されている。このゴルフゲームシステムは、ゲーム機及びゴルフクラブ型入力装置を含む。ゲーム機のハウジングの内部には撮像装置が収納される。この撮像装置は、イメージセンサと赤外発光ダイオードとを含む。赤外発光ダイオードによって撮像装置の上方の所定範囲に赤外光が間欠的に照射される。したがって、イメージセンサは、その範囲内で移動するゴルフクラブ型入力装置に設けられた反射部材を間欠的に撮影する。このような反射部材のストロボ映像を処理することによって、ゲーム機の入力となる位置や速度等を計算する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−85524号
【発明の概要】
【発明が解決しようとする課題】
【0004】
この従来技術では、反射部材を検知対象物に装着ないしは取り付ける必要がある。例えば、検知対象物が人間である場合、その人間は、反射部材を装着する必要がある。このため、人によっては、反射部材の装着を煩わしく感じる場合もある。特に、検知対象物が幼児の場合、装着を拒否したり、口に入れたり、好ましくない事態が発生し得る。また、反射部材の紛失や品質劣化等もあり得る。
【0005】
そこで、本発明は、対象物への反射部材の装着や取付けを行うことなく、撮影により、対象物を検出できる物体検出装置及びその関連技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の観点によれば、物体検出装置は、実空間中の対象物を検出する物体検出装置であって、静止物体に取付けられ、受けた光を反射する反射部材と、前記反射部材を撮像する撮像手段と、撮像により得られた画像を解析する解析手段と、を備え、前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含む。
【0007】
この構成によれば、静止物体に取付けられた反射部材を撮影して、その画像から、対象物による遮蔽領域を検出する。遮蔽領域の検出は、対象物を検出することに相当する。なぜなら、対象物が反射部材上に位置する場合、その部分は画像に現れず、遮蔽領域となって現れるからである。このように、対象物への反射部材の装着や取付けを行うことなく、撮影により、対象物を検出できる。
【0008】
また、画像上の遮蔽領域の移動を検出することにより、対象物の動きを検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動し、あるいは、ある反射部材から他の反射部材へ対象物が移動した場合、遮蔽領域もまた、当該ある反射部材の像から当該他の反射部材の像へ移動するからである。
【0009】
例えば、前記反射部材は、帯状である。
【0010】
この構成によれば、反射部材の長さ方向の対象物の移動を検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動するからである。
【0011】
また、例えば、複数の前記反射部材が、前記静止物体に取付けられ、前記反射部材の各々は、帯状であり、前記複数の反射部材は、前記静止物体上に互いに平行に配置される。
【0012】
この構成によれば、反射部材の長さ方向の対象物の移動及び反射部材の長さ方向に垂直な方向の対象物の移動を検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動するからである。また、ある反射部材から他の反射部材へ対象物が移動した場合、遮蔽領域もまた、当該ある反射部材の像から当該他の反射部材の像へ移動するからである。
【0013】
この場合、前記反射部材の厚さ方向の幅は、前記撮像手段からの距離が大きくなるほど太くなるように設定される。
【0014】
この構成によれば、比較的低解像度の撮像手段を使用する場合でも、撮像手段からの距離が大きい位置に配置された反射部材の像が認識できない(写り込まない)といった不都合を回避できる。
【0015】
また、この場合、前記反射部材間の距離は、前記撮像手段からの距離が大きくなるほど大きくなるように設定される。
【0016】
この構成によれば、比較的低解像度の撮像手段を使用する場合でも、撮像手段からの距離が大きい位置に配置された2つの反射部材の像を区別できないといった不都合を回避できる。
【0017】
上記物体検出装置において、複数の前記反射部材が、前記静止物体に取付けられる。
【0018】
この構成によれば、各反射部材への対象物の移動を検出できる。また、遮蔽された反射部材の位置により、対象物の位置を検出できる。
【0019】
例えば、前記複数の反射部材のうち、少なくとも所定数の反射部材は、二次元状に配置される。
【0020】
この構成によれば、二次元方向の、対象物の位置や移動を検出できる。
【0021】
また、例えば、前記複数の反射部材のうち、少なくとも所定数の反射部材は、一次元状に配置されてもよい。
【0022】
この構成によれば、一次元方向の、対象物の位置や移動を検出できる。
【0023】
上記物体検出装置において、前記複数の反射部材は、ユーザがコンピュータに所定コマンドを入力するための反射部材を含む。
【0024】
この構成によれば、ユーザは、この反射部材を遮蔽することにより、所定コマンドを入力できる。この反射部材が遮蔽されたことが画像上で検出された場合に、所定コマンドが入力されたとみなせばよいからである。
【0025】
上記物体検出装置において、前記静止物体は、水平面を含み、前記反射部材は、前記水平面に取付けられる。
【0026】
この構成によれば、反射部材の取り付けが容易であり、より確実に固定できる。また、反射部材の加工も少なくて済む。
【0027】
この場合、前記静止物体は、床面に配置又は床面である。
【0028】
この構成によれば、例えば、対象物が人間の場合、足の位置及び動きを検出する場合に好適である。
【0029】
上記物体検出装置は、光を発光して、前記反射部材に向けて前記光を照射する照射手段をさらに備える。
【0030】
この構成によれば、反射部材が照射光を反射することで、よりはっきりと画像上に写りこみ、より精度良く遮蔽領域を検出できる。
【0031】
この物体検出装置において、前記反射部材は、受けた光を再帰反射する。
【0032】
この構成によれば、照射手段と撮像手段とをほぼ同じ位置に配置することにより、より確実に反射部材からの反射光を撮像手段に入力できる。
【0033】
この物体検出装置において、前記照射手段は、間欠的に前記光を発光して、前記反射部材に向けて前記光を照射し、前記検出手段は、前記撮像手段によって、前記光の発光時の撮像により得られた画像と前記光の消灯時の撮像により得られた画像との差分画像から、前記遮蔽領域を検出する。
【0034】
この構成によれば、差分を求めるといった簡易な処理で、反射部材からの反射光以外の光によるノイズを極力除去でき、精度良く反射部材の像のみを検出できる。反射部材の像を精度良く検出できるということは、遮蔽領域を精度良く検出できることを意味する。
【0035】
この物体検出装置において、前記照射手段は、赤外光を発光し、前記撮像手段は、赤外光のみを透過する赤外線フィルタを介して、前記反射部材を撮像する。
【0036】
この構成によれば、赤外光以外のノイズを簡易に除去できる。
【0037】
上記物体検出装置は、少なくとも前記反射部材を覆う透明又は半透明の部材をさらに備える。
【0038】
この構成によれば、反射部材が足で踏まれるものである場合等において、反射部材を保護でき、その耐久性を向上できる。
【0039】
ここで、反射部材を覆う透明又は半透明の部材は、反射部材を透明又は半透明の物質によりコーティングする場合を含む。
【0040】
本発明の第2の観点によれば、インタラクティブシステムは、実空間中の対象物を検出する物体検出手段と、前記物体検出手段による検出結果に従って情報処理を実行する情報処理手段と、を備え、前記物体検出手段は、静止物体に取付けられ、受けた光を反射する反射部材と、前記反射部材を撮像する撮像手段と、撮像により得られた画像を解析する解析手段と、を含み、前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含み、前記情報処理手段は、前記検出手段による検出結果に従って、映像を生成する映像生成手段を含む。
【0041】
この構成によれば、上記第1の観点による物体検出装置と同様の構成を含むので、それと同様の効果を奏する。また、映像により、ユーザ(対象物の一種)に情報を提示し、この提示に従って動作するユーザを検出し、その検出結果に基づいて映像を生成できる。つまり、インタラクティブなシステムが構築される。この場合、ユーザの動作を検出する構成は、第1の観点による物体検出装置と同様である。従って、第1の観点による物体検出装置を利用したインタラクティブなシステムを構築できる。なお、ユーザの立場からは、検出されることは、入力を行うことを意味する。
【0042】
このインタラクティブシステムにおいて、前記映像生成手段は、複数の画面に表示するための複数の前記映像を生成する。
【0043】
この構成によれば、複数の画面に同時に複数の映像を表示できるので、エンターテインメント性を向上できる。
【0044】
この場合、前記映像生成手段は、前記複数の画面に映し出される前記複数の映像同士を連動させる。
【0045】
この構成によれば、臨場感の向上を図ることができる。
【0046】
このインタラクティブシステムにおいて、前記映像生成手段は、前記複数の映像のうちの第1映像を水平面に映し出す手段と、前記複数の映像のうちの第2映像を垂直面に映し出す手段と、を含む。
【0047】
この構成によれば、ユーザ(対象物の一種)は、水平面に映し出された映像及び垂直面に映し出された映像を見ながら、身体を動かし、入力を行うことができる。
【0048】
このインタラクティブシステムにおいて、前記静止物体は、前記水平面を含み、前記反射部材は、前記水平面に取付けられる。
【0049】
この構成によれば、反射部材の取り付けが容易であり、より確実に固定できる。また、反射部材の加工も少なくて済む。
【0050】
このインタラクティブシステムにおいて、前記静止物体は、床面に配置又は床面である。
【0051】
この構成によれば、例えば、対象物が人間の場合、足の位置及び動きを検出する場合、つまり、足を動かして入力を行う場合に好適である。
【0052】
本発明の第3の観点によれば物体検出方法は、静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出する物体検出方法であって、前記反射部材を撮像するステップと、撮像により得られた画像を解析するステップと、を含み、解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含む。
【0053】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0054】
本発明の第4の観点によればインタラクティブシステム構築方法は、静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出するステップと、検出する前記ステップによる検出結果に従って情報処理を実行するステップと、を含み、検出する前記ステップは、前記反射部材を撮像するステップと、撮像により得られた画像を解析するステップと、を含み、解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含み、情報処理を実行する前記ステップは、前記遮蔽領域を検出する前記ステップによる検出結果に従って、映像を生成するステップを含む。
【0055】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0056】
本発明の第5の観点によるコンピュータプログラムは、上記第3の観点による物体検出方法をコンピュータに実行させるコンピュータプログラムである。
【0057】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0058】
本発明の第6の観点によるコンピュータプログラムは、上記第4の観点によるインタラクティブシステム構築方法をコンピュータに実行させるコンピュータプログラムである。
【0059】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0060】
本発明の第7の観点による記録媒体は、上記第5の観点によるコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体である。
【0061】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0062】
本発明の第8の観点による記録媒体は、上記第6の観点によるコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体である。
【0063】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0064】
本明細書及び特許請求の範囲において、記録媒体には、例えば、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、CD(CD−ROM、Video−CDを含む)、DVD(DVD−Video、DVD−ROM、DVD−RAMを含む)、ROMカートリッジ、バッテリバックアップ付きのRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等を含む。
【0065】
本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
【図面の簡単な説明】
【0066】
【図1】本発明の実施の形態によるインタラクティブシステム1の全体構成を示す図である。
【図2】図1のインタラクティブシステム1の電気的構成を示す図である。
【図3】図1のスクリーン15の説明図である。
【図4】システム起動時における差分画像89のスキャンの説明図である。
【図5】システム起動中における差分画像89のスキャンの説明図である。
【図6】(a)図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答前)。(b)図1のスクリーン15に映し出される画面71Pの例示図である(回答前)。
【図7】(a)図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答後)。(b)図1のスクリーン15に映し出される画面71Pの例示図である(回答後)。
【図8】図2のMCU33による撮影処理の流れの一例を示すフローチャートである。
【図9】図2のMCU33による起動時検出処理の流れの一例を示すフローチャートである。
【図10】図9のステップS3の垂直端点検出処理の流れの一例を示すフローチャートである。
【図11】図9のステップS5の水平端点検出処理の流れの一例を示すフローチャートである。
【図12】図2のMCU33による起動中検出処理の流れの一例を示すフローチャートである。
【図13】図12のステップS205のキック前処理の流れの一例を示すフローチャートである。
【図14】図12のステップS207の足数判定処理の流れの一例を示すフローチャートである。
【図15】図14のステップS325の幅判定処理の流れの一例を示すフローチャートである。
【図16】図12のステップS209の左右判定処理の流れの一部の一例を示すフローチャートである。
【図17】図12のステップS209の左右判定処理の流れの他の一部の一例を示すフローチャートである。
【図18】図12のステップS211のキック判定処理の流れの一例を示すフローチャートである。
【図19】図12のステップS213のヒット判定処理の流れの一例を示すフローチャートである。
【図20】図12のステップS215のコマンド生成処理の流れの一例を示すフローチャートである。
【図21】図2のマスタプロセッサ41による処理の流れの一例を示すフローチャートである。
【図22】図2のスレイブプロセッサ45による処理の流れの一例を示すフローチャートである。
【図23】システム起動時における差分画像89のスキャンの詳細な説明図である。
【図24】システム起動中における差分画像89のスキャンの詳細な説明図である。
【発明を実施するための形態】
【0067】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書において、数字の後尾に付した「h」は、16進数であることを示す。
【0068】
図1は、本発明の実施の形態によるインタラクティブシステム1の全体構成を示す図である。図1を参照して、このインタラクティブシステム1は、制御装置3、テレビジョンモニタ5、撮像ユニット7、プロジェクタ9、スピーカ11、及びスクリーン15を備える。制御装置3、テレビジョンモニタ5、撮像ユニット7、プロジェクタ9、及びスピーカ11は、それぞれ、床面に直立して設置される筐体13の第5段、第4段、第3段、第2段、及び第1段に設置される。スクリーン15は、矩形状であり、筐体13の前方の水平な床面に固定される。プレイヤ(検出対象物)25は、このスクリーン15の上にのってプレイする。
【0069】
ここで、スクリーン15の筐体13側をスクリーン15の上側、その反対側をスクリーンの下側と呼ぶことにする。そうすると、スクリーン15の下側半分の領域には、帯状の再帰反射シート(再帰反射部材)17−1,17−2及び17−3が互いに平行に、かつ、スクリーン15の上辺に平行に固定される。また、スクリーン15には、円形の再帰反射シート(再帰反射部材)19−1及び19−2が、再帰反射シート17−3とスクリーン15の下辺との間に、再帰反射シート17−3に沿って固定される。再帰反射シート17−1〜17−3並びに19−1及び19−2は、受けた光を再帰反射する。
【0070】
なお、スクリーン15は、プロジェクタ9からのビデオ映像が投影されると同時に、撮像ユニット7により撮影されるので、被撮影面と呼ぶこともできる。また、スクリーン15は専用のものを用いてもよいが、床面が平らで、投影されたビデオ映像の内容を容易に認識できるものであれば、床面そのものをスクリーンとして使用することもできる。この場合は、床面が被撮影面となり、床面に再帰反射シート17−1〜17−3並びに19−1及び19−2が固定される。
【0071】
ここで、プレイヤ25は、動く物体であるのに対して、スクリーン15は固定されるので静止物体と言える。
【0072】
さて、制御装置3は、インタラクティブシステム1全体の制御を行うと共に、テレビジョンモニタ5に与えるビデオ信号VD1、プロジェクタ9に与えるビデオ信号VD2、及びスピーカ11に与えるオーディオ信号(ボイスを含む。)AUMを生成する。テレビジョンモニタ5は、制御装置3が生成したビデオ信号VD1に応じた映像を表示する。プロジェクタ9は、制御装置3が生成したビデオ信号VD2に応じた映像をスクリーン15に投影する。
【0073】
撮像ユニット7は、スクリーン15を俯瞰し、再帰反射シート17−1〜17−3並びに19−1及び19−2を撮像する。撮像ユニット7は、赤外光のみを透過する赤外線フィルタ21及びその周りに配置された4個の赤外発光ダイオード23を含む。赤外線フィルタ21の裏側には、後述のイメージセンサ31が配置される。
【0074】
赤外発光ダイオード23は、再帰反射シート17−1〜17−3並びに19−1及び19−2に対して、間欠的に赤外光を照射する。再帰反射シート17−1〜17−3並びに19−1及び19−2は、照射された赤外光を再帰反射し、この反射赤外光が、赤外線フィルタ21を介してイメージセンサ31に入力される。イメージセンサ31は、赤外光照射時の画像と非照射時の画像との差分画像を生成する。後述するように、制御装置3は、この差分画像に基づいて、プレイヤ25の検出処理を実行する。このように、本システム1は、検出装置を含む。検出装置として機能する部分は、主に、制御装置3、撮像ユニット7、及び再帰反射シート17−1〜17−3,19−1,19−2である。
【0075】
図2は、図1のインタラクティブシステム1の電気的構成を示す図である。図2を参照して、制御装置3は、マスタプロセッサ41、外部メモリ43、スイッチ群51、スレイブプロセッサ45、外部メモリ47、ミキシング回路49、及び電源スイッチ53を含む。撮像ユニット7は、MCU(Micro Controler Unit)33、イメージセンサ31、及び赤外発光ダイオード23を含む。
【0076】
マスタプロセッサ41には、外部メモリ43が接続される。外部メモリ43は、例えば、フラッシュメモリ、ROM、及び/又はRAM等により構成される。外部メモリ43は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、各種処理(例えば、撮像ユニット7及びスレイブプロセッサ45の制御、撮像ユニット7からのコマンド等の受け付け、及びプロジェクタ9に与える映像の制御等)をマスタプロセッサ41に実行させる制御プログラムが格納される。画像データ領域には、ビデオ信号VD1を生成するために必要な画像データが格納されている。音声データ領域には、ボイス、効果音、及び音楽等のオーディオ信号AU1を生成するための音声データが格納されている。マスタプロセッサ41は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号(ビデオ映像)VD1及びオーディオ信号AU1を生成する。ビデオ信号VD1及びオーディオ信号AU1は、それぞれ、プロジェクタ9及びミキシング回路49に与えられる。
【0077】
マスタプロセッサ41は、図示しないが、中央演算処理装置(以下、「CPU」と呼ぶ。)、グラフィックスプロセシングユニット(以下、「GPU」と呼ぶ。)、サウンドプロセシングユニット(以下、「SPU」と呼ぶ。)、ジオメトリエンジン(以下、「GE」と呼ぶ。)、外部インタフェースブロック、メインRAM、及びA/Dコンバータ(以下、「ADC」と呼ぶ。)等の各種機能ブロックを具備する。
【0078】
CPUは、外部メモリ43に格納されたプログラムを実行して、各種演算やマスタプロセッサ41内の各種機能ブロックの制御を行う。グラフィックス処理に関するCPUの処理として、外部メモリ43に格納されたプログラムを実行して、各オブジェクトの拡大・縮小、回転、及び/又は平行移動のパラメータ、視点座標(カメラ座標)、並びに視線ベクトルの算出等を行う。ここで、1または複数のポリゴン又はスプライトから構成され、同じ拡大・縮小、回転、及び平行移動の変換が適用される単位を「オブジェクト」と呼ぶ。
【0079】
GPUは、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成し、アナログのコンポジットビデオ信号VD1に変換する。SPUは、PCM(pulse code modulation)波形データ、アンプリチュードデータ、及びメインボリュームデータを生成し、これらをアナログ乗算して、アナログオーディオ信号AU1を生成する。GEは、三次元イメージを表示するための幾何演算を実行する。具体的には、GEは、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)などの演算を実行する。
【0080】
外部インタフェースブロックは、周辺装置(本実施の形態では、スレイブプロセッサ45、MCU33及びスイッチ群51)とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。ADCは、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置から入力されたアナログ信号をデジタル信号に変換する。メインRAMは、CPUのワーク領域、変数格納領域、および仮想記憶機構管理領域等として利用される。
【0081】
さて、スイッチ群51は、方向キー等の各種操作を行うためのキーを含み、それらのキーステータスがマスタプロセッサ41に与えられる。マスタプロセッサ41は、受け取ったキーステータスに応じて処理を実行する。
【0082】
また、スレイブプロセッサ45には、外部メモリ47が接続される。外部メモリ47は、例えば、フラッシュメモリ、ROM、及び/又はRAM等により構成される。外部メモリ47は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、各種処理(例えば、テレビジョンモニタ5に表示する映像の制御等)をスレイブプロセッサ45に実行させる制御プログラムが格納される。画像データ領域には、ビデオ信号VD2を生成するために必要な画像データが格納されている。音声データ領域には、効果音等のオーディオ信号AU2を生成するための音声データが格納されている。スレイブプロセッサ45は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号(ビデオ映像)VD2及びオーディオ信号AU2を生成する。ビデオ信号VD2及びオーディオ信号AU2は、それぞれ、テレビジョンモニタ5及びミキシング回路49に与えられる。
【0083】
なお、スレイブプロセッサ45の内部構成は、マスタプロセッサ41のそれと同じであり、説明を省略する。
【0084】
また、マスタプロセッサ41とスレイブプロセッサ45とは、通信を行い、互いにデータを送受信して、プロジェクタ9に与える映像VD1とテレビジョンモニタ5に与える映像VD2との同期(映像内容の)をとる。この場合、プロセッサ41が、マスタとなって、スレイブとしてのプロセッサ45を制御する。
【0085】
さて、ミキシング回路49は、マスタプロセッサ41が生成したオーディオ信号AU1とスレイブプロセッサ45が生成したオーディオ信号AU2とを合成し、オーディオ信号AUMとして、スピーカ11へ出力する。
【0086】
また、撮像ユニット7のイメージセンサ31は、例えば、64画素×64画素のCMOSイメージセンサである。イメージセンサ31は、MCU33からの制御を受けて動作する。具体的には、次の通りである。イメージセンサ31は、赤外発光ダイオード23を間欠的に駆動する。従って、赤外発光ダイオード23は、間欠的に赤外光を発光する。これにより、再帰反射シート17−1〜17−3並びに19−1及び19−2には、間欠的に赤外光が照射される。イメージセンサ31は、赤外光点灯時及び消灯時のそれぞれにおいて、再帰反射シート17−1〜17−3並びに19−1及び19−2を撮影する。そして、イメージセンサ31は、赤外光点灯時の画像信号と赤外光消灯時の画像信号との差分画像信号を生成して、MCU33に出力する。差分画像信号を求めることで、再帰反射シート17−1〜17−3並びに19−1及び19−2からの反射光以外の光によるノイズを極力除去でき、精度良く再帰反射シート17−1〜17−3並びに19−1及び19−2のみを検出できる。つまり、再帰反射シート17−1〜17−3並びに19−1及び19−2は、赤外光を再帰反射するので、発光時では、背景に比べ、高い輝度の像として画像に写り込むが、消灯時では、赤外光を受けないので、背景と同様に低い輝度の像として画像に写り込み、差分画像を生成することにより、再帰反射17−1〜17−3並びに19−1及び19−2の像だけを抽出できるのである。
【0087】
MCU33は、メモリ30を有し、このメモリ30に格納された制御プログラムを実行して、後述のフローチャートに示す処理を実行する。すなわち、MCU33は、イメージセンサ31からの差分画像を所定の閾値を用いて2値化し、2値化後の差分画像を解析して、プレイヤ25を検出して、コマンド及び座標(後述)をマスタプロセッサ41に送信する。マスタプロセッサ41は、MCU33から受け取ったコマンド及び座標に基づいて、プロジェクタ9に与える映像、スピーカ11に与える音声、及びスレイブプロセッサ45を制御する。これらの処理の詳細は後述する。
【0088】
プロジェクタ9は、マスタプロセッサ41から与えられたビデオ信号VD1に基づくビデオ映像をスクリーン15に投影する。テレビジョンモニタ5は、スレイブプロセッサ45から与えられたビデオ信号VD2に基づくビデオ映像を表示する。スピーカ11は、ミキシング回路49から与えられたオーディオ信号AUMに基づく音声を出力する。
【0089】
図3は、図1のスクリーン15の説明図である。図3を参照して、スクリーン15上の再帰反射シート17−1の幅d1、再帰反射シート17−2の幅d2、及び再帰反射シート17−3の幅d3の関係は、d1<d2<d3、である。このように、撮像ユニット7(イメージセンサ31)からの距離が大きくなるほど、帯状の再帰反射シートの幅を大きくする。また、再帰反射シート17−1と再帰反射シート17−2との間の距離L1及び再帰反射シート17−2と再帰反射シート17−3との間の距離L2の関係は、L1<L2、である。このように、撮像ユニット7(イメージセンサ31)からの距離が大きくなるほど、再帰反射シートの間隔を大きくする。これらの理由は、次の通りである。
【0090】
まず、説明の便宜のため、撮像ユニット7のイメージセンサ31の光軸をスクリーン15に正射影した軸18を想定する。なお、この軸18に直交するように、再帰反射シート17−1〜17−3が配置される。また、スクリーン15上で、軸18に沿った一定長さの線分Dを想定する。
【0091】
撮像ユニット7のイメージセンサ31は、スクリーン15を俯瞰する。従って、イメージセンサ31からの差分画像には、台形歪みが発生する。つまり、矩形のスクリーン15は、差分画像中では、台形状の像となって写り込む。この場合、台形歪みは、イメージセンサ31からの距離が大きくなるほど大きくなる。従って、スクリーン15の上側(イメージセンサ31に近い側)の線分Dの差分画像中の像の長さは、スクリーン15の下側(イメージセンサ31に遠い側)の線分Dの差分画像中の像の長さより大きくなる。
【0092】
このため、再帰反射シート17−1〜17−3を等間隔で配置すると(L1=L2)、差分画像上では、再帰反射シート17−2の像と再帰反射シート17−3の像との間の距離が、再帰反射シート17−1の像と再帰反射シート17−2の像との間の距離より短くなってしまう。比較的低解像度(例えば64画素×64画素)のイメージセンサ31を使用する場合、特に再帰反射シート17−2の像と再帰反射シート17−3の像とを区別できないことも発生しうる。従って、スクリーン15上で、距離L1<距離L2とすることにより、低解像度のイメージセンサ31を使用した場合であっても、差分画像上で、再帰反射シート17−2の像及び17−3の像を確実に区別できる。
【0093】
同様に、再帰反射シート17−1〜17−3の幅を等しくすると(d1=d2=d3)、台形歪みにより、差分画像上では、再帰反射シート17−3の像の幅は、再帰反射シート17−2の像の幅より小さく、再帰反射シート17−2の像の幅は、再帰反射シート17−1の像の幅より小さくなる。このため、比較的低解像度(例えば64画素×64画素)のイメージセンサ31を使用する場合、特に再帰反射シート17−3の像が認識できない(写り込まない)ことも発生しうる。従って、スクリーン15上で、幅d3>幅d2>幅d1、とすることにより、低解像度のイメージセンサ31を使用した場合であっても、差分画像上で、再帰反射シート17−3の像を確実に認識できる。また、再帰反射シート17−2の幅は、再帰反射シート17−3ほど太くする必要はないが、再帰反射シート17−1の幅より大きくして(d2>d1)、認識の確実性を向上している。
【0094】
次に、撮像ユニット7のMCU33によるプレイヤ25の検出方法を説明する。まず、システム起動時の処理を説明し、その後、システム起動中の処理を説明する。また、説明に用いる差分画像は2値化後のものとする。
【0095】
図4は、システム起動時における差分画像89のスキャンの説明図である。図4を参照して、イメージセンサ31が生成する差分画像89の左上角を原点とし、水平右方向を正とするX軸、及び垂直下方向を正とするY軸を想定する。この差分画像89には、再帰反射シート17−1,17−2,17−3,19−1及び19−2にそれぞれ対応する像90−1,90−2,90−3,92−1及び92−2が写り込んでいる。
【0096】
電源スイッチ53がオンされると、マスタプロセッサ41の命令により、撮像ユニット7のMCU33は、イメージセンサ31に対して、撮影指示を出す。この撮影指示を受けて、イメージセンサ31は、撮像処理を開始する。この撮像処理には、赤外発光ダイオード23の間欠的な駆動、点灯時及び消灯時のそれぞれでの撮影、並びに、点灯時画像と消灯時画像との差分画像の生成を含む。MCU33は、この差分画像を解析して、解析結果(コマンド及び座標)をマスタプロセッサ41に送信する。
【0097】
図4に示すように、特に電源投入時(システム起動時)では、MCU33は、マスタプロセッサ41からの命令で、差分画像89をスキャンして、像90−1の最小X座標Bx1及び最大X座標Ex1、像90−2の最小X座標Bx2及び最大X座標Ex2、並びに、像90−3の最小X座標Bx3及び最大X座標Ex3を検出し、その内部のメモリに格納する。
【0098】
これは、次の理由による。プレイ中では、プレイヤ25が、再帰反射シート17−1の左端あるいは右端を踏む可能性もある。再帰反射シート17−2及び17−3についても同様である。従って、プレイヤ25がスクリーン15にのっていない起動時に、各再帰反射シート17−1〜17−3の各像90−1〜90−3の左端(基準左端)及び右端(基準右端)を予め検出しておく。そして、プレイ中の各像90−1〜90−3の左端と、対応する基準左端と、を比較して、プレイヤ25が左端にのっているか否かを判断し、また、プレイ中の各像90−1〜90−3の右端と、対応する基準右端と、を比較して、プレイヤ25が右端にのっているか否かを判断する。
【0099】
また、電源投入時(システム起動時)にて、MCU33は、マスタプロセッサ41からの命令で、差分画像89をスキャンして、像90−1の最小Y座標By1及び最大Y座標Ey1、像90−2の最小Y座標By2及び最大Y座標Ey2、並びに、像90−3の最小Y座標By3及び最大Y座標Ey3を検出し、その内部のメモリに格納することもできる。
【0100】
ここで、再帰反射シート17−1の像90−1の最小X座標Bx1、最大X座標Ex1、最小Y座標By1、及び最大Y座標Ey1で定義される矩形を矩形範囲#1と呼ぶ。再帰反射シート17−2の像90−2の最小X座標Bx2、最大X座標Ex2、最小Y座標By2、及び最大Y座標Ey2で定義される矩形を矩形範囲#2呼ぶ。再帰反射シート17−3の像90−3の最小X座標Bx3、最大X座標Ex3、最小Y座標By3、及び最大Y座標Ey3で定義される矩形を矩形範囲#3と呼ぶ。再帰反射シート19−1及び19−2に対応する像92−1及び92−1を1つの像90−4と考えたときの像90−4の最小X座標、最大X座標、最小Y座標、及び最大Y座標で定義される矩形を矩形範囲#4と呼ぶ。
【0101】
図5は、システム起動中における差分画像89のスキャンの説明図である。図5を参照して、この差分画像89は、プレイヤ25が再帰反射シート17−1の上に両足を置いている(両足で踏んでいる)場合の撮影処理で得られたものである。従って、差分画像89には、像1−0,1−1,1−2,2−0,2−1,2−2,3−0,3−1,3−2,92−1及び92−2が写り込んでいる。領域(以下、「遮蔽領域」と呼ぶ。)1−5,1−6,2−5,2−6,3−5及び3−6は、説明の便宜上、ハッチングを施しているが、実際は何も写っていない部分である。
【0102】
像1−0,1−1及び1−2は、再帰反射シート17−1の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、その部分の再帰反射シート17−1が隠れてしまい、隠れていない部分の再帰反射シート17−1だけが、差分画像89に写り込んだからである。遮蔽領域1−5は、プレイヤ25の左足が置かれた部分に対応し、遮蔽領域1−6は、プレイヤ25の右足が置かれた部分に対応する。つまり、遮蔽領域1−5は、プレイヤ25の左足であり、遮蔽領域1−6は、プレイヤ25の右足である。このように、遮蔽領域1−5及び1−6は、プレイヤ25の両足の位置を示す。
【0103】
像2−0,2−1及び2−2は、再帰反射シート17−2の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、再帰反射シート17−2のうち、両足の陰になっている部分は差分画像89には写り込まず、陰になっていない部分の再帰反射シート17−2だけが、差分画像89に写り込んだからである。遮蔽領域2−5は、プレイヤ25の左足の陰になっている部分に対応し、遮蔽領域2−6は、プレイヤ25の右足の陰になっている部分に対応する。
【0104】
像3−0,3−1及び3−2は、再帰反射シート17−3の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、再帰反射シート17−3のうち、両足の陰になっている部分は差分画像89には写り込まず、陰になっていない部分の再帰反射シート17−3だけが、差分画像89に写り込んだからである。遮蔽領域3−5は、プレイヤ25の左足の陰になっている部分に対応し、遮蔽領域3−6は、プレイヤ25の右足の陰になっている部分に対応する。
【0105】
ここで、この例では、矩形範囲#1は、再帰反射シート17−1の像1−0,1−1及び1−2を1つの像と考えたときの最小X座標bx1、最大X座標ex1、最小Y座標by1、及び最大Y座標ey1で定義される。矩形範囲#2は、再帰反射シート17−2の像2−0,2−1及び2−2を1つの像と考えたときの最小X座標bx2、最大X座標ex2、最小Y座標by2、及び最大Y座標ey2で定義される。矩形範囲#3は、再帰反射シート17−3の像3−0,3−1及び3−2を1つの像と考えたときの最小X座標bx3、最大X座標ex3、最小Y座標by3、及び最大Y座標ey3で定義される。矩形範囲#4は、起動時と同じである。
【0106】
さて、撮像ユニット7のMCU33は、システム起動中、つまり、プレイ中において、次の処理を実行する。
【0107】
MCU33は、矩形範囲#1をスキャンして、遮蔽領域1−5及び1−6を検出する。具体的には、MCU33は、矩形範囲(bx1≦X≦ex1、by1≦Y≦ey1)において、輝度値が0の画素であり、しかも、輝度値が1の画素の隣に位置する画素のX座標(「隣接X座標」と呼ぶ。)であって、かつ、矩形範囲(by1≦Y≦ey1)において、X座標が隣接X座標と同じである全ての画素の輝度値が0である場合の隣接X座標、つまり、X座標sbx0,sex0,sbx1及びsex1を検出し、内部のメモリに格納する。なお、輝度値が1の画素は、写りこんだ像の一部であり、輝度値が0の画素は、像の一部ではなく、何も写りこんでいないことを意味する。
【0108】
同様にして、MCU33は、矩形範囲#2をスキャンして、遮蔽領域2−5及び2−6、つまり、X座標sbx2,sex2,sbx3及びsex3を検出し、内部のメモリに格納する。また、同様にして、MCU33は、矩形範囲#3をスキャンして、遮蔽領域3−5及び3−6、つまり、X座標sbx4,sex4,sbx5及びsex5を検出し、内部のメモリに格納する。
【0109】
また、MCU33は、次式により、遮蔽領域1−5の座標(X15,Y15)、遮蔽領域1−6の座標(X16,Y16)、遮蔽領域2−5の座標(X25,Y25)、遮蔽領域2−6の座標(X26,Y26)、及び、遮蔽領域3−5の座標(X35,Y35)、遮蔽領域3−6の座標(X36,Y36)を算出し、内部のメモリに格納する。
【0110】
X15=(sbx0+sex0)/2
Y15=(by1+ey1)/2
X16=(sbx1+sex1)/2
Y16=(by1+ey1)/2
X25=(sbx2+sex2)/2
Y25=(by2+ey2)/2
X26=(sbx3+sex3)/2
Y26=(by2+ey2)/2
X35=(sbx4+sex4)/2
Y35=(by3+ey3)/2
X36=(sbx5+sex5)/2
Y36=(by3+ey3)/2
【0111】
さらに、MCU33は、MCU33は、矩形範囲#1に、2つの遮蔽領域1−5及び1−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域1−5及び1−6が存在する場合、遮蔽領域1−5がプレイヤ25の左足に相当すると判断し、遮蔽領域1−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0112】
MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在すると判断した場合、後述する第1左右決定処理を実行する。
【0113】
また、MCU33は、2つの遮蔽領域1−5及び1−6が存在しないと判断した場合、矩形範囲#2に、2つの遮蔽領域2−5及び2−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域2−5及び2−6が存在する場合、遮蔽領域2−5がプレイヤ25の左足に相当すると判断し、遮蔽領域2−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0114】
MCU33は、矩形範囲#2に1つの遮蔽領域のみが存在すると判断した場合、後述する第1左右決定処理を実行する。
【0115】
また、MCU33は、2つの遮蔽領域2−5及び2−6が存在しないと判断した場合、矩形範囲#3に、2つの遮蔽領域3−5及び3−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域3−5及び3−6が存在する場合、遮蔽領域3−5がプレイヤ25の左足に相当すると判断し、遮蔽領域3−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0116】
さらに、MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在し、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、又は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に遮蔽領域が存在せず、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、後述する第2左右決定処理を実行する。
【0117】
上記の第1左右決定処理を説明する。MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在すると判断した場合、その遮蔽領域のX座標が、遮蔽領域2−6のX座標X26よりも遮蔽領域2−5のX座標X25に近い場合、矩形範囲#1の遮蔽領域を遮蔽領域1−5とみなし、プレイヤ25の左足に相当すると判断し、遮蔽領域2−6をプレイヤ25の右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#1の遮蔽領域のX座標が、遮蔽領域2−5のX座標X25よりも遮蔽領域2−6のX座標X26に近い場合、矩形範囲#1の遮蔽領域を遮蔽領域1−6とみなし、プレイヤ25の右足に相当すると判断し、遮蔽領域2−5をプレイヤ25の左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0118】
また、MCU33は、矩形範囲#2に1つの遮蔽領域のみが存在すると判断した場合、その遮蔽領域のX座標が、遮蔽領域3−6のX座標X36よりも遮蔽領域3−5のX座標X35に近い場合、矩形範囲#2の遮蔽領域を遮蔽領域2−5とみなし、プレイヤ25の左足に相当すると判断し、遮蔽領域3−6をプレイヤ25の右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#2の遮蔽領域のX座標が、遮蔽領域3−5のX座標X35よりも遮蔽領域3−6のX座標X36に近い場合、矩形範囲#2の遮蔽領域を遮蔽領域2−6とみなし、プレイヤ25の右足に相当すると判断し、遮蔽領域3−5をプレイヤ25の左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0119】
上記の第2左右決定処理を説明する。MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在し、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、矩形範囲#1の遮蔽領域のX方向の長さA((sex0−sbx0)又は(sex1−sbx1)であるが、この段階では、どちらに相当するか不明である。)と矩形範囲#2の遮蔽領域のX方向の長さB((sex2−sbx2)又は(sex3−sbx3)であるが、この段階では、どちらに相当するか不明である。)と、を比較する。そして、MCU33は、値Bが値(2*A)より大きい場合、プレイヤ25の片足が再帰反射シート17−1に置かれ、他方の片足が再帰反射シート17−2に置かれているとみなす(この時点で左右は不明)。
【0120】
そして、MCU33は、矩形範囲#2の遮蔽領域をY軸に平行な線(つまり、X座標が当該遮蔽領域のX座標に常に等しい直線)で二分し、得られたそれぞれの領域(左領域及び右領域と呼ぶ。)のX座標を算出する。具体的には、MCU33は、矩形範囲#2の遮蔽領域のX座標と、当該遮蔽領域の左端座標(sbx2又はsbx3であるが、この段階では、どちらに相当するか不明である。)と、の平均値を求め、これを左領域のX座標とする。また、MCU33は、矩形範囲#2の遮蔽領域のX座標と、当該遮蔽領域の右端座標(sex2又はsex3であるが、この段階では、どちらに相当するか不明である。)と、の平均値を求め、これを右領域のX座標とする。
【0121】
そして、MCU33は、矩形範囲#1の遮蔽領域のX座標が、右領域のX座標より左領域のX座標に近い場合、矩形範囲#1の遮蔽領域を領域1−5とみなし、プレイヤ25の左足に相当すると判断し、矩形範囲#2の遮蔽領域をプレイヤの右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#1の遮蔽領域のX座標が、左領域のX座標より右領域のX座標に近い場合、矩形範囲#1の当該遮蔽領域を領域1−6とみなし、プレイヤ25の右足に相当すると判断し、矩形範囲#2の遮蔽領域をプレイヤの左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0122】
また、MCU33は、値Bが値(2*A)と等しいか小さい場合、左右が不定と判断して、判断結果を内部のメモリに格納する。
【0123】
さらに、MCU33は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、上記と同様にして、左右及び不定の判断を行う。また、MCU33は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に遮蔽領域が存在せず、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、不定の判断を行う。
【0124】
さて、マスタプロセッサ41は、ビデオ同期信号に同期して映像を更新する。ビデオ同期信号は、例えば、1/60秒ごとに生成される。ビデオ同期信号の生成から次のビデオ同期信号の生成までの期間をフレーム期間と呼ぶ。これらについては、スレイブプロセッサ45についても同じである。
【0125】
マスタプロセッサ41は、ビデオ同期信号が生成される度に、MCU33にリクエスト信号を送信する。MCU33は、このリクエスト信号に応答して、撮像ユニット7への撮影指示及び上記の各種処理を実行する。従って、MCU33は、1フレーム期間に、撮影処理及び上記の各種処理を完了して、次のリクエスト信号を待つ。
【0126】
ここで、スクリーン15及びテレビジョンモニタ5に映し出されるゲーム内容については、後で詳述するが、次の説明の関連部分を簡単に説明する。後述する図6(b)に示すように、2つのボールオブジェクト81LP及び81RPが、スクリーン15に投影される。この場合、投影されたボールオブジェクト81LPの左端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上のX座標(左ボール左端X座標と呼ぶ。)と、投影されたボールオブジェクト81LPの右端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上でのX座標(左ボール右端X座標と呼ぶ。)と、を予め算出し、メモリ30に格納しておく。同様に、投影されたボールオブジェクト81RPの左端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上のX座標(右ボール左端X座標と呼ぶ。)と、投影されたボールオブジェクト81RPの右端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上でのX座標(右ボール右端X座標と呼ぶ。)と、を予め算出し、メモリ30に格納しておく。
【0127】
さて、MCU33は、プレイヤ25がスクリーン15に投影されたボールオブジェクトに対してキック動作を行ったか否かを判断する。具体的には、次の通りである。MCU33は、再帰反射シート19−1及び19−2に対応する像92−1及び92−2の双方が検出されなかった場合であって、かつ、差分画像89上の全ての矩形範囲#1〜#3に遮蔽領域が検出されなかった場合、内部のメモリに格納された第1キックフラグをオンにする。
【0128】
MCU33は、第1キックフラグがオンの場合、プレイヤ25が再帰反射シート19−1及び19−2にそれぞれ左右の足を置いていると判断して、プレイヤの準備が整ったとみなす。再帰反射シート19−1及び19−2が左右の足に隠れている場合、差分画像89に像92−1及び92−2が検出されないからである。ただし、プレイヤ25の両足が、再帰反射シート17−1,17−2又は17−3にある場合にも、再帰反射シート19−1及び19−2が陰になって、像92−1及び92−1が検出されない場合もある。このため、全ての矩形範囲#1〜#3に遮蔽領域が検出されなかったこと、つまり、プレイヤ25が、再帰反射シート17−1,17−2及び17−3のいずれにも足を置いていないことを、第1キックフラグをオンにするための条件の一つとしている。
【0129】
このように、再帰反射シート19−1及び19−2は、プレイヤ25が準備が整ったことを制御装置3に通知するために使用される。このため、再帰反射シート19−1及び19−2は、プレイヤ25から制御装置3へのコマンド入力のための再帰反射シートと言える。
【0130】
また、MCU33は、第1キックフラグがオンになった後、差分画像89上に少なくとも1つの遮蔽領域が検出されたと判断した場合、内部のメモリに格納した第2キックフラグをオンにする。
【0131】
さらに、MCU33は、再帰反射シート17−2にプレイヤ25の両足が置かれているか否か、つまり、差分画像89中の矩形範囲#2に2つの遮蔽領域(2−5及び2−6)が検出されたか否かを判断する。そして、MCU33は、矩形範囲#2に2つの遮蔽領域が検出されたと判断した場合、第3キックフラグをオンにする。
【0132】
そして、さらに、MCU33は、矩形範囲#1において、2つの遮蔽領域が検出されない状態から、1つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第1パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に両足が位置している状態から、再帰反射シート17−1にいずれか一方の足が位置する状態に遷移したと判断した場合、第4キックフラグをオンにする。
【0133】
また、MCU33は、矩形範囲#1において、1つの遮蔽領域が検出された状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第2パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−1に一方の足が位置している状態から、再帰反射シート17−1に他方の足が位置する状態に遷移したと判断した場合、第4キックラグをオンにする。
【0134】
さらに、MCU33は、矩形範囲#1において、遮蔽領域が検出されない状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第3パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に両足が位置している状態から、再帰反射シート17−1に両足が位置する状態に遷移したと判断した場合、第4キックラグをオンにする。
【0135】
さらに、MCU33は、矩形範囲#1に遮蔽領域が検出されない状態であって、矩形範囲#2において、1つの遮蔽領域が検出された状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第4パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に片足が位置している状態から、再帰反射シート17−2に両足が位置する状態に遷移したと判断した場合、第4キックフラグをオンにする。
【0136】
第4キックフラグがオンの時、MCU33は、第5キックフラグに関する処理を実行する。具体的には次の通りである。MCU33は、左の遮蔽領域のうち先端の遮蔽領域(左先端遮蔽領域と呼ぶ。)のX座標及び右の遮蔽領域のうち先端の遮蔽領域(右先端遮蔽領域と呼ぶ。)のX座標に基づいて、プレイヤ25がスクリーン15に投影されたボールオブジェクトに対して蹴る動作を行ったか否かを判断する。この場合、「左の先端」とは、左の遮蔽領域のうち、Y座標が最も小さい遮蔽領域を指し(図5の例では、左の遮蔽領域1−5,2−5及び3−5のうち、Y座標が最も小さい遮蔽領域1−5)、「右の先端」とは、右の遮蔽領域のうち、Y座標が最も小さい遮蔽領域を指す(図5の例では、右の遮蔽領域1−6,2−6及び3−6のうち、Y座標が最も小さい遮蔽領域1−6)。
【0137】
つまり、MCU33は、左先端遮蔽領域のX座標が、左ボール左端X座標と左ボール右端X座標との間(左キックレンジと呼ぶ。)に位置する場合、プレイヤ25がボールオブジェクト81LPを適切に蹴る動作を行ったとみなして、第5キックフラグを、ボールオブジェクト81LPが蹴られたことを示す01hに設定する。また、MCU33は、左先端遮蔽領域のX座標が左キックレンジに入っていない場合でも、右先端遮蔽領域のX座標が左キックレンジに入っている場合は、プレイヤ25がボールオブジェクト81LPを適切に蹴る動作を行ったとみなして、第5キックフラグに01hを設定する。
【0138】
また、MCU33は、左先端遮蔽領域のX座標が、右ボール左端X座標と右ボール右端X座標との間(右キックレンジと呼ぶ。)に位置する場合、プレイヤ25がボールオブジェクト81RPを適切に蹴る動作を行ったとみなして、第5キックフラグを、ボールオブジェクト81RPが蹴られたことを示す10hに設定する。また、MCU33は、左先端遮蔽領域のX座標が右キックレンジに入っていない場合でも、右先端遮蔽領域のX座標が右キックレンジに入っている場合は、プレイヤ25がボールオブジェクト81RPを適切に蹴る動作を行ったとみなして、第5キックフラグを10hに設定する。
【0139】
さらに、左先端遮蔽領域のX座標及び右先端遮蔽のX座標のいずれもが、左ヒットレンジに入っておらず、かつ、右ヒットレンジにも入っていない場合は、MCU33は、第5キックフラグを、ボールオブジェクト81LP及び81RPが蹴られなかったことを示す00hに設定する。
【0140】
さて、MCU33は、マスタプロセッサ41からの上記のリクエスト信号に応答して、第1キックフラグがオンであることを示す信号(第1コマンドと呼ぶ。)、第2キックフラグ又は第3キックフラグがオンであることを示す信号(第2コマンドと呼ぶ。)、第5キックフラグがオン(01h又は10hの場合)であることを示す信号(第3コマンドと呼ぶ。)、又は、それらのいずれでもないことを示す信号(第0コマンド)をマスタプロセッサ41に出力する。
【0141】
なお、MCU33は、第2コマンド及び/又は第3コマンドを送信する場合、左先端遮蔽領域のXY座標及び右先端遮蔽領域のXY座標を当該コマンドに付加して送信する。
【0142】
さて、次に、スクリーン15及びテレビジョンモニタ5に映し出されるゲームの内容を説明する。
【0143】
図6(a)は、図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答前)。図6(b)は、図1のスクリーン15に映し出される画面71Pの例示図である(回答前)である。図7(a)は、図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答後)。図7(b)は、図1のスクリーン15に映し出される画面71Pの例示図である(回答後)である。
【0144】
図6(b)を参照して、マスタプロセッサ41は、MCU33から第1コマンドを受信した場合、画面71Pを表すビデオ信号VD1を生成して、プロジェクタ9に与える。すると、プロジェクタ9は、ビデオ信号VD1に基づいて、画面71Pの映像をスクリーン15に投影する。この画面71Pは、出題オブジェクト79L及び79R、並びに、ボールオブジェクト81LP及び81RPを含む。
【0145】
ボールオブジェクト81LP及び81RPは、再帰反射シート17−1に沿って、所定距離だけ離れて配置されるように、画面71P中に配置される。また、出題オブジェクト79Lは、ボールオブジェクト81LPの直上に配置される。出題オブジェクト79Rは、ボールオブジェクト81RPの直上に配置される。
【0146】
図6(a)を参照して、マスタプロセッサ41は、MCU33から第1コマンドを受信した場合、スレイブプロセッサ45に対して、画面71Tの生成指示を出す。スレイブプロセッサ45は、この生成指示を受けて、画面71Tを表すビデオ信号VD2を生成して、テレビジョンモニタ5に与える。すると、テレビジョンモニタ5は、ビデオ信号VD2に基づいて、画面71Tの映像を表示する。この画面71Tは、ゴールキーパーオブジェクト73、ゴールオブジェクト75及び出題領域77を含む。スレイブプロセッサ45は、出題テーブルの中からランダムに選択した英単語を出題領域77に表示する。
【0147】
プレイヤ25は、画面71Pの出題オブジェクト79L及び79Rのうち、画面71Tの出題領域77の英単語に対応する出題オブジェクトの直下に位置するボールオブジェクト81LP又は81RPを蹴る動作を行う。
【0148】
マスタプロセッサ41は、MCU33からの第3コマンドにより、プレイヤ25がボールオブジェクト81LP又は81RPを蹴る動作を行ったこと、及び、ボールオブジェクト81LP及び81RPのうち、どのボールオブジェクトに対して蹴る動作を行ったか、を知ることができる。
【0149】
マスタプロセッサ41は、第3コマンドに基づいて、プレイヤ25が正解に対応するボールオブジェクトを蹴る動作を行ったと判断した場合、つまり、この例では、出題領域77の英単語が「Apple」であるので、プレイヤ25が、「りんご」を表す出題オブジェクト79Lの直下のボールオブジェクト81LPを蹴る動作を行ったと判断した場合、図示は省略したが、ボールオブジェクト81LPがスクリーン15の上側に向かって飛んでいく映像を表すビデオ信号VD1を生成してプロジェクタ9に与える。これに応じて、プロジェクタ9は、ビデオ信号VD1に対応する映像をスクリーン15に投影する。また、この場合、図7(b)に示すように、マスタプロセッサ41は、映像中のボールオブジェクト81LPが静止していた場所に、正解であることを示す結果オブジェクト83を配置する。
【0150】
また、マスタプロセッサ41は、ボールオブジェクト81LPがスクリーン15の上端に接した時、スレイブプロセッサ45に対して、ボールオブジェクト81LTの生成指示を出す。この生成指示を受けて、図7(a)に示すように、スレイブプロセッサ45は、ボールオブジェクト81LTが画面71Tの下端から出現してゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がボールオブジェクト81LTに向かってジャンプするがジャンプのタイミングがずれてボールオブジェクト81LTのキャッチに失敗しゴールする映像を表すビデオ信号VD2を生成してテレビジョンモニタ5に与える。これに応じて、テレビジョンモニタ5は、ビデオ信号VD2に対応する映像を表示する。この場合、プレイヤ25が見たときに、画面71Pのボールオブジェクト81LPと画面71Tのボールオブジェクト81LTとの軌道が、滑らかに接続するように、プロセッサ41及び45は、それぞれ画面71T及び71Pを生成する。
【0151】
このような画面71T及び71Pを生成して表示することにより、プレイヤ25は、正解であることを認識でき、また、あたかもボールを蹴ってゴールしたかのような爽快さを感じることができる。
【0152】
また、マスタプロセッサ41は、プレイヤ25が正解を出したと判断した場合、ボールオブジェクト81LPの静止位置からの移動と同時に、爽快にボールを蹴ったような音を表すオーディオ信号AU1を生成する。一方、スレイブプロセッサ45は、ボールオブジェクト81LTがゴールオブジェクト75に到達した時に、あたかもボールがゴールネットに捕らえられたかのような音を表すオーディオ信号AU2を生成する。
【0153】
一方、図示は省略したが、マスタプロセッサ41は、第3コマンドに基づいて、プレイヤ25が不正解に対応するボールオブジェクトを蹴る動作を行なったと判断した場合、つまり、この例では、出題領域77の英単語が「Apple」であるので、プレイヤ25が、「りんご」を表す出題オブジェクト79Lの直下のボールオブジェクト81LPではなく、「バナナ」を表す出題オブジェクト79Rの直下のボールオブジェクト81RPを蹴る動作を行ったと判断した場合、ボールオブジェクト81RPがスクリーン15の上側に向かって飛んでいく映像を表すビデオ信号VD1を生成してプロジェクタ9に与える。これに応じて、プロジェクタ9は、ビデオ信号VD1に対応する映像をスクリーン15に投影する。また、この場合、マスタプロセッサ41は、映像中のボールオブジェクト81RPが位置していた場所に、不正解であることを示す結果オブジェクトを配置する。
【0154】
また、マスタプロセッサ41は、ボールオブジェクト81RPがスクリーン15の上端に接した時、スレイブプロセッサ45に対して、ボールオブジェクト81RTの生成指示を出す。この生成指示を受けて、スレイブプロセッサ45は、ボールオブジェクト81RTが画面71Tの下端から出現してゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がボールオブジェクト81RPに向かってタイミング良くジャンプし、ボールオブジェクト81RTをキャッチする映像を表すビデオ信号VD2を生成してテレビジョンモニタ5に与える。これに応じて、テレビジョンモニタ5は、ビデオ信号VD2に対応する映像を表示する。この場合、プレイヤ25が見たときに、画面71Pのボールオブジェクト81RPと画面71Tのボールオブジェクト81RTとの軌道が、滑らかに接続するように、プロセッサ41及び45は、それぞれ画面71T及び71Pを生成する。
【0155】
このような画面71T及び71Pを生成して表示することにより、プレイヤ25は、不正解であることを認識でき、また、あたかもボールを蹴ってゴールできなかったかのような残念さを感じることができる。
【0156】
また、マスタプロセッサ41は、プレイヤ25が不正解を出したと判断した場合、ボールオブジェクト81RPの静止位置からの移動と同時に、爽快にボールを蹴ったような音を表すオーディオ信号AU1を生成する。一方、スレイブプロセッサ45は、ボールオブジェクト81RTがゴールキーパーオブジェクト73にキャッチされた時に、あたかもボールがキャッチされたかのような音を表すオーディオ信号AU2を生成する。
【0157】
ところで、図示は省略したが、図6(a)の画面71T及び図6(b)の画面71Pが生成される前では、画面71Tの出題領域77には、英単語は表示されない。また、画面71Pには、出題オブジェクト79L及び79R並びにボールオブジェクト81LP及び81RPは表示されない。ただし、再帰反射シート19−1に重なるように左足裏画像及び再帰反射シート19−2に重なるように右足裏画像を含む画面71Pが生成され投影される。
【0158】
そして、マスタプロセッサ41は、第1コマンドを受信すると、図6(b)の画面71Pを表すビデオ信号VD1を生成する。同時に、マスタプロセッサ41は、スレイブプロセッサ45に対して、図6(a)の画面71Tの生成指示を出す。この生成指示を受けて、スレイブプロセッサ45は、当該画面71Tを表すビデオ信号VD2を生成する。
【0159】
さて、次に、差分画像89のスキャンの詳細を説明する。この場合、再帰反射シート17−1〜17−3、並びに、再帰反射シート19−1及び19−2を1つとみなしたときの再帰反射シート17−4を一般的に表す場合、再帰反射シート17−k(k=1,2,3,4)と表記する。再帰反射シート17−1〜17−4に対応する矩形範囲#1〜#4を一般的に表す場合、矩形範囲#k(k=1,2,3,4)と表記する。
【0160】
システム起動時において、矩形範囲#kの最小X座標、最大X座標、最小Y座標、及び最大Y座標を、それぞれ、Bx[k][m]、Ex[k][m]、By[k]、及びEy[k](k=1,2,3,4)と表記する。要素番号mは、1つの矩形範囲#kに含まれる像を表す。従って、システム起動時では、再帰反射シート17−kは踏まれておらず、陰にもなっていないので、m=0、である。
【0161】
システム起動中において、矩形範囲#kの最小X座標、最大X座標、最小Y座標、及び最大Y座標を、それぞれ、bx[k][m]、ex[k][m]、by[k]、及びey[k](k=1,2,3,4)と表記する。要素番号mは、1つの矩形範囲#kに含まれる像を表す。従って、1つの矩形範囲#kに含まれる像が1つの場合、つまり、再帰反射シート17−kが踏まれていない場合又は陰になっていない場合(遮蔽領域がない場合)はm=0、1つの矩形範囲#kに含まれる像が2つの場合、つまり、再帰反射シート17−kが片足で踏まれている場合又は片足の陰になっている場合(遮蔽領域が1つの場合)はm=0,1、1つの矩形範囲#kに含まれる像が3つの場合、つまり、再帰反射シート17−kが両足で踏まれている場合又は両足の陰になっている場合(遮蔽領域が2つの場合)はm=0,1,2、である。
【0162】
踏まれていない時(又は陰になっていない時)の再帰反射シート17−kの像を、像90−k(k=1,2,3,4)と表記する。再帰反射シート17−kが片足で踏まれており(又は片足の陰になっており)、1つの矩形範囲#kに含まれる像が2つの場合、左から、像k−0、像k−1と表記し、その時の遮蔽領域を遮蔽領域k−5と表記する。再帰反射シート17−kが両足で踏まれており(又は両足の陰になっており)、1つの矩形範囲#kに含まれる像が3つの場合、左から、像k−0、像k−1、像k−2と表記し、その時の2つの遮蔽領域を遮蔽領域k−5,k−6と表記する。
【0163】
図23は、システム起動時における差分画像89のスキャンの詳細な説明図である。図23を参照して、MCU33は、X座標をインクリメントしながら、X=0〜63まで、差分画像89をスキャンする(水平スキャン)。そして、MCU33は、Y座標を1つインクリメントする。そして、MCU33は、水平スキャンを実行する。このように、MCU33は、Y座標をインクリメントしながらY=63まで水平スキャンを実行する。
【0164】
なお、差分画像89は2値化後のものであり、各画素値は、配列D[x][y]に代入されているものとする。要素番号xは差分画像89のX座標に対応し、要素番号yは、差分画像89のY座標に対応する。
【0165】
スキャンの際、配列D[x][y]に「1」が代入されている場合(つまり、再帰反射シートの像を構成する画素である場合)、配列V[y]及びH[x]に「1」を代入する。一旦、「1」が代入された配列V[y]及びH[x]は「1」が維持される。
【0166】
そして、64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列V[y]のうち、要素番号yが一番小さい要素番号yが、矩形範囲#kを定義する最小Y座標By[k]であり、要素番号yが一番大きい要素番号yが、矩形範囲#kを定義する最大Y座標Ey[k]である。また、64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列H[x]のうち、要素番号xが一番小さい要素番号xが、矩形範囲#kを定義する最小X座標Bx[k][0]であり、要素番号xが一番大きい要素番号xが、矩形範囲#kを定義する最大X座標Ex[k][0]である。ただし、矩形範囲#kは、再帰反射シート17−kごとに検出される。図23では、簡略化のため、1つの再帰反射シート17−kに対応する1つの像90−kだけを記載している。
【0167】
図24は、システム起動中における差分画像89のスキャンの詳細な説明図である。図24を参照して、MCU33は、起動時と同様に、Y座標をインクリメントしながらY=63まで水平スキャンを実行する。この場合、配列V[y]及びH[x]へ値を代入する際のアルゴリズムは、起動時と同じである。
【0168】
64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列V[y]のうち、要素番号yが一番小さい要素番号yが、矩形範囲#kを定義する最小Y座標by[k]であり、要素番号yが一番大きい要素番号yが、矩形範囲#kを定義する最大Y座標ey[k]である。
【0169】
また、64×64画素のスキャンが完了したときにおいて、「1」が代入されている左端の配列H[x]のうち、要素番号xが一番小さい要素番号xが、左端の像k−0の最小X座標bx[k][0]であり、要素番号xが一番大きい要素番号xが、左端の像k−0の最大X座標ex[k][0]である。64×64画素のスキャンが完了したときにおいて、「1」が代入されている中央の配列H[x]のうち、要素番号xが一番小さい要素番号xが、中央の像k−1の最小X座標bx[k][1]であり、要素番号xが一番大きい要素番号xが、中央の像k−1の最大X座標ex[k][1]である。64×64画素のスキャンが完了したときにおいて、「1」が代入されている右端の配列H[x]のうち、要素番号xが一番小さい要素番号xが、右端の像k−2の最小X座標bx[k][2]であり、要素番号xが一番大きい要素番号xが、右端の像k−2の最大X座標ex[k][2]である。
【0170】
ただし、これらの処理は、再帰反射シート17−kごとに実行されるものである。図23では、簡略化のため、1つの再帰反射シート17−kに対応する像k−0〜k−2だけを記載している。なお、図24では、1つの矩形範囲#kに3つの像が存在する例を挙げたが、像が1つ、あるいは、2つの場合もある。また、この例では、矩形範囲#kの最小X座標は、像k−0の最小X座標bx[k][0]であり、最大X座標は、像k−2の最大X座標ex[k][2]である。
【0171】
なお、起動時と起動中とで、矩形範囲#kの大きさは変化することがある。なぜなら、プレイヤ25が、再帰反射シート17−kの左端又は右端を踏んでいたり、陰になっていたりする場合もあるからである。
【0172】
図8は、図2のMCU33による撮影処理の流れの一例を示すフローチャートである。図8を参照して、ステップS1001において、MCU33は、イメージセンサ31に赤外発光ダイオード23を点灯させる。ステップS1003にて、MCU33は、イメージセンサ31に赤外光点灯時の撮影を実行させる。ステップS1005にて、MCU33は、イメージセンサ31に赤外発光ダイオード23を消灯させる。ステップS1007にて、MCU33は、イメージセンサ31に赤外光消灯時の撮影を実行させる。ステップS1009にて、MCU33は、イメージセンサ31に、赤外光点灯時の画像と赤外光消灯時の画像との差分画像(カメラ画像)を生成及び出力させる。ステップS1011にて、MCU33は、イメージセンサ31が生成した差分画像の各画素(輝度値)を所定の閾値と比較して、2値化し、配列D[x][y]に代入する。なお、画素が閾値を超えていた場合、再帰反射シートの像を構成する画素とみなして「1」を設定し、それ以外は再帰反射シートの像が写っていないとみなして「0」を設定する。要素番号xは差分画像のX座標に対応し、要素番号yは、差分画像のY座標に対応する。
【0173】
ステップS1013にて、MCU33は、マスタプロセッサ41からリクエスト信号を受信した場合ステップS1001に進み、受信していない場合ステップS1013に戻る。
【0174】
以上のようにして、MCU33の制御に応答して、イメージセンサ31は、赤外光の点灯時及び消灯時の撮影、つまり、ストロボ撮影を実行する。また、以上の制御により、赤外発光ダイオード23は、ストロボスコープとして機能する。
【0175】
図9は、図2のMCU33による起動時検出処理の流れの一例を示すフローチャートである。図9を参照して、ステップS1にて、MCU33は、起動時に必要な初期設定を実行する。ステップS3にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kの最小Y座標及び最大Y座標(垂直端点)を検出する処理を実行する。ステップS5にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kの最小X座標及び最大X座標(水平端点)を検出する処理を実行する。以上のステップS3及びS5によって、矩形範囲#kが検出される。
【0176】
図10は、図9のステップS3の垂直端点検出処理の流れの一例を示すフローチャートである。図10を参照して、ステップS11にて、MCU33は、変数x、y、ND、並びに配列V[]に0をセットする。変数x及びyのそれぞれは、差分画像のX座標及びY座標に相当する。
【0177】
ステップS13にて、MCU33は、2値化された差分画像を構成する配列D[x][y]の値が1か否かを判断し、1の場合ステップS15に進み、それ以外の場合ステップS17に進む。ステップS15では、MCU33は、変数V[y]に1を代入して、ステップS21に進む。一方、ステップS17では、MCU33は、変数V[y]にすでに1が格納されているか否か判断し、格納されている場合ステップS21に進み、1が格納されていない場合、ステップS19に進む。ステップS19では、MCU33は、変数V[y]に0を代入してステップS21に進む。
【0178】
ステップS21では、MCU33は、変数xを1つインクリメントする。ステップS23にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS25に進み、それ以外はステップS13に戻る。
【0179】
ステップS25にて、MCU33は、変数yを1つインクリメントし、変数xに0を代入する。ステップS27にて、MCU33は、変数yの値が64か否かを判断し、64の場合(全水平スキャン完了)ステップS29に進み、それ以外はステップS13に戻る。
【0180】
ステップS29にて、MCU33は、変数y及びk、並びに、配列By[]及びEy[]に0をセットする。ステップS31にて、MCU33は、カウンタkを1つインクリメントする。
【0181】
カウンタkの値は、上述した符号kと同じ意味を有する。この点は、後述のフローチャートについても同じである。
【0182】
ステップS33にて、MCU33は、変数V[y]の値が1か否かを判断し、1の場合ステップS35に進み、それ以外の場合ステップS39に進む。
【0183】
ステップS35では、MCU33は、変数V[y−1]の値が0か否かを判断し、0の場合ステップS37に進み、それ以外の場合ステップS45に進む。ステップS37では、MCU33は、変数By[k]にyの値を代入してステップS45に進む。一方、ステップS39では、MCU33は、変数V[y−1]の値が1か否かを判断し、1の場合ステップS41に進み、それ以外の場合ステップS45に進む。ステップS41では、MCU33は、変数Ey[k]にy−1を代入する。ステップS43にて、MCU33は、カウンタkを1つインクリメントしてステップS45に進む。
【0184】
ステップS45では、MCU33は、変数yを1つインクリメントする。ステップS47にて、MCU33は、変数yの値が64か否かを判断し、64の場合ステップS49に進み、それ以外はステップS33に戻る。ステップS49では、MCU33は、変数NDに変数kの値を代入してリターンする。
【0185】
配列By[k]は、矩形範囲#kの最小Y座標であり、配列Ey[k]は、矩形範囲#kの最大Y座標である。従って、変数NDは、検出された矩形範囲#kの数を表す。矩形範囲は最大で4つ検出される。ただし、再帰反射シート19−1及び19−2のそれぞれに足が置かれている場合は、3つの矩形範囲が検出される。
【0186】
図11は、図9のステップS5の水平端点検出処理の流れの一例を示すフローチャートである。図11を参照して、ステップS101にて、MCU33は、変数k、q、及び、配列R[]に0をセットする。ステップS103にて、MCU33は、カウンタkを1つインクリメントする。ステップS105にて、MCU33は、変数x及び配列H[]に0を代入し、また、変数yに配列By[k]の値を代入する。
【0187】
ステップS107にて、MCU33は、差分画像を構成する配列D[x][y]が1か否かを判断し、1の場合ステップS109に進み、それ以外の場合ステップS111に進む。ステップS109では、MCU33は、変数H[x]に1を代入して、ステップS115に進む。一方、ステップS111では、MCU33は、変数H[x]にすでに1が格納されているか否か判断し、格納されている場合ステップS115に進み、1が格納されていない場合ステップS113に進む。ステップS113では、MCU33は、変数H[x]に0を代入してステップS115に進む。
【0188】
ステップS115では、MCU33は、変数xを1つインクリメントする。ステップS117にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS119に進み、それ以外はステップS107に戻る。
【0189】
ステップS119にて、MCU33は、変数yを1つインクリメントし、また、変数xに0を代入する。ステップS121にて、MCU33は、変数yの値が、配列Ey[k+1]の値と等しいか否かを判断し、等しい場合ステップS123に進み、それ以外はステップS107に戻る。
【0190】
ステップS123では、MCU33は、変数x及びm、並びに、配列Bx[k][]及びEx[k][]に0を代入する。ステップS125では、MCU33は、変数H[x]の値が1か否かを判断し、1の場合ステップS127に進み、それ以外の場合ステップS131に進む。ステップS127では、MCU33は、配列H[x−1]の値が0か否かを判断し、0の場合ステップS129に進み、それ以外はステップS137に進む。ステップS129では、MCU33は、配列Bx[k][m]に変数xの値を代入する。一方、ステップS131では、MCU33は、配列H[y−1]の値が1か否かを判断し、1の場合ステップS133に進み、それ以外はステップS137に進む。ステップS133では、MCU33は、配列Ex[k][m]にx−1を代入する。ステップS135にて、MCU33は、カウンタmを1つインクリメントしてステップS137に進む。
【0191】
カウンタmの値は、上述した符号mと同じ意味を有する。この点は、後述のフローチャートについても同じである。
【0192】
ステップS137では、MCU33は、変数xの値を1つインクリメントする。ステップS139にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS141に進み、それ以外はステップS125に戻る。
【0193】
ステップS141では、MCU33は、配列R[k]に変数mの値を代入する。配列R[k]の値は、1つの矩形範囲#kに含まれる像の数を示す。ステップS143にて、MCU33は、変数R[k]が1か否かを判断し、1の場合ステップS145に進み、それ以外はステップS147に進む。ステップS145では、MCU33は、変数qの値を1つインクリメントする。ステップS147にて、MCU33は、変数kの値が3か否かを判断し、3の場合リターンし、それ以外はステップS103に戻る。なぜなら、像92−1及び92−2に対応する矩形範囲#4の最小X座標及び最大Y座標は、後の処理で使用しないからである。
【0194】
ここで、ステップS147で肯定判断がされた後の変数qの値が3の場合、3つの矩形範囲#1〜#3のそれぞれに、1つの像だけが含まれることを意味する。つまり、再帰反射シート17−1〜17−3のいずれにも、プレイヤ25がのっておらず、また、陰にもなっていないことを意味する。
【0195】
また、配列Bx[k][m]の値は、矩形範囲#kを定義する最小X座標であり、配列Ex[k][m]の値は、矩形範囲#kを定義する最大X座標である。ただし、起動時では、1つの矩形範囲#kに1つの像のみが存在するので、これらはそれぞれ、Bx[k][0]及びEx[k][0]である。
【0196】
図12は、図2のMCU33による起動中検出処理の流れの一例を示すフローチャートである。図12を参照して、ステップS101にて、MCU33は、起動中に必要な初期設定を実行する。この初期設定において、後述の第1〜第5キックフラグが初期化される。
【0197】
ステップS201にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kのそれぞれに含まれる各像の最小Y座標及び最大Y座標(垂直端点)を検出する。ステップS201の処理は、図10の垂直端点検出処理と同様であり、説明を省略する。ただし、図10において、配列By[k]を配列by[k]と、配列Ey[k]を配列ey[k]と、読み替える。
【0198】
ステップS203にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kのそれぞれに含まれる各像の最小X座標及び最大X座標(水平端点)を検出する。ステップS203の処理は、図11の水平端点検出処理と同様であり、説明を省略する。ただし、図11において、配列Bx[k][m]を配列bx[k][m]と、配列Ex[k][m]を配列ex[k][m]と、読み替える。
【0199】
ステップS205にて、MCU33は、キック前処理を実行する。ステップS207にて、MCU33は、スクリーン15上の足数を判定する処理を実行する。ステップS209にて、MCU33は、スクリーン15上のプレイヤ25の足の左右判定処理を実行する。ステップS211にて、MCU33は、プレイヤ25がキック動作を行なったか否かの判定処理を実行する。ステップS213にて、MCU33は、キック動作が、ボールオブジェクト81LP又は81RPにヒットしたか否かの判定処理を実行する。ステップS215にて、MCU33は、ステップS201〜S213の処理結果に基づいて、コマンドCDを生成する。
【0200】
ステップS217にて、MCU33は、マスタプロセッサ41からリクエスト信号を受信したか否かを判断し、受信していない場合ステップS217に戻り、受信した場合ステップS219に進む。ステップS219にて、MCU33は、ステップS215で生成したコマンドCDをマスタプロセッサ41に送信して、ステップS201に進む。
【0201】
図13は、図12のステップS205のキック前処理の流れの一例を示すフローチャートである。図13を参照して、ステップS251にて、MCU33は、第3キックフラグがオンか否かを判断し、オンの場合リターンし、オフの場合ステップS253に進む。ステップS253にて、MCU33は、第2キックフラグがオンか否かを判断し、オンの場合ステップS255に進み、オフの場合ステップS261に進む。
【0202】
ステップS254では、MCU33は、配列R[1]が1か否かを判断し、つまり、再帰反射シート17−1に対応する矩形範囲#2に1つの像のみが含まれるか否かを判断し、1の場合ステップS255に進み、それ以外はステップS257に進む。矩形範囲#1に1つの像のみが含まれるということは、再帰反射シート17−1にプレイヤ25がのっておらず、陰にもなっていないことを意味する。
【0203】
ステップS255にて、MCU33は、配列R[2]の値が3か否かを判断し、つまり、再帰反射シート17−2に対応する矩形範囲#2に3つの像が含まれるか否かを判断し、3の場合ステップS259に進み、それ以外はステップS257に進む。矩形範囲#2に3つの像が含まれるということは、再帰反射シート17−2に両足がのっており(又は、両足の陰になっており)、遮蔽領域が2つ存在することを意味する。従って、ステップS259では、MCU33は、第3キックフラグをオンにし、第2キックフラグをオフにして、リターンする。また、ステップS257では、MCU33は、第2キックフラグをオフにしてステップS263に進む。
【0204】
ステップS261では、MCU33は、第1キックフラグがオンか否かを判断し、オンの場合ステップS263に進み、オフの場合ステップS267に進む。ステップS263では、MCU33は、配列R[1],R[2]及びR[3]のうちのどれかが1より大きいか否かを判断し、つまり、再帰反射シート17−1,17−2及び17−3のどれかに、片足又は両足がのっているか否か及び片足又は両足の陰になっているか否かを判断し、肯定判断の場合ステップS265に進み、それ以外は図12のステップS215に進む。ステップS265では、MCU33は、第2キックフラグをオンにし、第1キックフラグをオフにして、図12のステップS215に進む。
【0205】
ステップS267では、MCU33は、変数NDの値が3か否かを判断し、つまり、検出された矩形範囲#kの数が3か否かを判断し、3の場合ステップS269に進み、それ以外は図12のステップS215に進む。矩形範囲#kの数が3ということは、再帰反射シート19−1及び19−2の像92−1及び92−2が検出されなかったことを意味する。ステップS269にて、MCU33は、変数qの値が3か否かを判断し、つまり、3つの矩形範囲#1〜#3のそれぞれに、1つの像だけが含まれるか否かを判断し、3の場合ステップS271に進み、それ以外は図12のステップS215に進む。ステップS271にて、MCU33は、第1キックフラグをオンにして、図12のステップS215に進む。
【0206】
図14は、図12のステップS207の足数判定処理の流れの一例を示すフローチャートである。図14を参照して、ステップS301にて、MCU33は、変数k及び配列F[]に0をセットする。ステップS303にて、MCU33は、カウンタkを1つインクリメントする。ステップS305にて、MCU33は、配列R[k]の値が3か否かを判断し、3の場合ステップS307に進み、それ以外はステップS309に進む。ステップS307では、MCU33は、矩形範囲#kに3つの像が含まれて2つの遮蔽領域(二つの足)が存在することを示す20hを配列F[k]に代入してステップS341に進む。
【0207】
ステップS309では、MCU33は、配列Bx[k][0]の値(起動時の矩形範囲#kの最小X座標)と配列bx[k][0]の値(現在の矩形範囲#kの最小X座標)とを比較する。
【0208】
ステップS311にて、MCU33は、配列Bx[k][0]の値と配列bx[k][0]の値とが等しい場合、つまり、矩形範囲#kに対応する再帰反射シートの左端が踏まれていない場合、ステップS313に進み、それ以外は、つまり、左端が踏まれている場合ステップS335に進む。ステップS335では、MCU33は、配列R[k]の値が2か否かを判断し、2の場合ステップS337に進み、それ以外はステップS339に進む。ステップS337では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていることを示す21hを配列F[k]に代入してステップS341に進む。また、ステップS339では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ、かつ、その再帰反射シート17−kの別の部位が踏まれていないことを示す11hを配列F[k]に代入してステップS341に進む。
【0209】
ステップS313にて、MCU33は、配列R[k]の値が2か否かを判断し、2の場合ステップS315に進み、それ以外はステップS327に進む。ステップS327では、MCU33は、配列Ex[k][0]の値(起動時の矩形範囲#kの最大X座標)と配列ex[k][0]の値(現在の矩形範囲#kの最大X座標)とを比較する。ステップS329にて、MCU33は、配列Ex[k][0]の値と配列ex[k][0]の値とが等しい場合ステップS333に進み、それ以外はステップS331に進む。ステップS333では、MCU33は、矩形範囲#kに対応する再帰反射シー17−kが踏まれていないことを示す00hを配列F[k]に代入する。ステップS331では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていないことを示す12hを配列F[k]に代入する。
【0210】
ステップS315では、MCU33は、配列Ex[k][0]の値(起動時の矩形範囲#kの最大X座標)と配列ex[k][1]の値(現在の矩形範囲#kの最大X座標)とを比較する。ステップS317にて、MCU33は、配列Ex[k][0]の値と配列ex[k][1]の値とが等しい場合ステップS321に進み、それ以外はステップS319に進む。ステップS319では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていることを示す22hを、配列F[k]に代入する。
【0211】
ステップS321では、MCU33は、カウンタkの値が1か否かを判断し、1の場合ステップS323に進み、それ以外はステップS325に進む。ステップS323では、MCU33は、矩形範囲#1に対応する再帰反射シート17−1の左端及び右端以外の部分に一本の足が置かれている(あるいは片足の陰になっている)ことを示す10hを配列F[k]に代入する。ステップS325では、MCU33は、幅判定処理を実行する。
【0212】
ステップS341では、MCU33は、カウンタkが3になったか否かを判断し、3の場合リターンし、それ以外はステップS303に戻る。
【0213】
図15は、図14のステップS325の幅判定処理の流れの一例を示すフローチャートである。図15を参照して、ステップS361にて、MCU33は、変数Aに、次式により得られた値を代入する。
【0214】
A←bx[k−1][1]−ex[k−1][0]
【0215】
変数bx[k−1][1]は、矩形範囲#kの1つ下の矩形範囲#k−1に含まれる左から二番目の像の最小X座標であり、変数ex[k−1][0]は、矩形範囲#k−1に含まれる左から一番目の像の最大X座標である。つまり、変数Aは、矩形範囲#k−1に含まれる遮蔽領域の幅である。
【0216】
また、ステップS363にて、MCU33は、変数Bに、次式により得られた値を代入する。
【0217】
B←bx[k][1]−ex[k][0]
【0218】
変数bx[k][1]は、矩形範囲#kに含まれる左から二番目の像の最小X座標であり、変数ex[k][0]は、矩形範囲#kに含まれる左から一番目の像の最大X座標である。つまり、変数Bは、矩形範囲#kに含まれる遮蔽領域の幅である。
【0219】
そして、ステップS365にて、MCU33は、変数Bの値が、変数Aを2倍した値より大ききか否かを判断し、大きい場合ステップS367に進み、それ以外はステップS369に進む。ステップS367にて、MCU33は、矩形範囲#kに対応する再帰反射シート17−kが近接した両足で踏まれていることを示す23hを変数F[k]に代入してリターンする。ステップS369では、MCU33は、10hを変数F[k]に代入してリターンする。
【0220】
ここで、変数F[k]に設定される内容について整理する。20hは、矩形範囲#kに3つの像が含まれて2つの遮蔽領域(二つの足)が存在することを示す。21hは、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ(あるいは陰になり)、かつ、その再帰反射シート17−kの別の場所が踏まれていること(あるいは陰になっていること)を示す。11hは、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ(あるいは陰になり)、かつ、その再帰反射シート17−kの別の部位が踏まれていないこと(陰にもなっていないこと)を示す。00hは、矩形範囲#kに対応する再帰反射シー17−kが踏まれていないこと(陰にもなっていないこと)を示す。12hは、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ(あるいは陰になっており)、かつ、その再帰反射シート17−kの別の場所が踏まれていないこと(陰にもなっていないこと)を示す。22hは、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ(あるいは陰になっており)、かつ、その再帰反射シート17−kの別の場所が踏まれていること(あるいは陰になっていること)を示す。10hは、矩形範囲#1に対応する再帰反射シート17−1の左端及び右端以外の部分に一本の足が置かれている(あるいは片足の陰になっている)ことを示す。23hは、矩形範囲#kに対応する再帰反射シート17−kが近接した両足で踏まれている(あるいは近接した両足の陰になっている)ことを示す。つまり、両足が近接しているために、本来二つであるべき遮蔽領域が分離されていない状態である。
【0221】
図16及び図17は、図13のステップS209の左右判定処理の流れの一例を示すフローチャートである。図16を参照して、ステップS401にて、MCU33は、左右フラグLRF[]に00hをセットする。ステップS403にて、MCU33は、変数k、並びに、配列XL[]、YL[]、XR[]、YR[]、XI[]、及びYI[]に0をセットする。
【0222】
ステップS405にて、MCU33は、カウンタkを1つインクリメントする。ステップS407にて、変数YL[k]及びYR[k]に次式により得られる値を代入する。
【0223】
YL[k]←(By[k]+Ey[k])/2
YR[k]←(By[k]+Ey[k])/2
【0224】
変数YL[k]は、矩形範囲#kに含まれる、左足に対応する遮蔽領域のY座標、つまり、左足のY座標である。変数YR[k]は、矩形範囲#kに含まれる、右足に対応する遮蔽領域のY座標、つまり、右足のY座標である。
【0225】
ステップS409にて、MCU33は、変数F[k]の値が20hか否かを判断し、20hの場合ステップS411に進み、それ以外はステップS413に進む。ステップS411では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0226】
XL[k]←(ex[k][0]+bx[k][1])/2
XR[k]←(ex[k][1]+bx[k][2])/2
【0227】
変数XL[k]は、矩形範囲#kに含まれる、左足に対応する遮蔽領域のX座標、つまり、左足のX座標である。変数XR[k]は、矩形範囲#kに含まれる、右足に対応する遮蔽領域のX座標、つまり、右足のX座標である。
【0228】
ステップS413にて、MCU33は、変数F[k]の値が21hか否かを判断し、21hの場合ステップS415に進み、それ以外はステップS417に進む。ステップS415では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0229】
XL[k]←(Bx[k][0]+bx[k][0])/2
XR[k]←(ex[k][0]+bx[k][1])/2
【0230】
ステップS417にて、MCU33は、変数F[k]の値が22hか否かを判断し、22hの場合ステップS419に進み、それ以外はステップS421に進む。ステップS419では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0231】
XL[k]←(ex[k][0]+bx[k][1])/2
XR[k]←(ex[k][1]+Ex[k][0])/2
【0232】
ステップS421にて、MCU33は、変数F[k]の値が23hか否かを判断し、23hの場合ステップS423に進み、それ以外はステップS429に進む。ステップS423では、変数Cxに次式により得られる値を代入する。
【0233】
Cx←(ex[k][0]+bx[k][1])/2
【0234】
ステップS425にて、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0235】
XL[k]←(ex[k][0]+Cx)/2
XR[k]←(Cx+bx[k][1])/2
【0236】
ステップS427では、MCU33は、左右フラグLRF[k]に、矩形範囲#kに2つの遮蔽領域(つまり、両足)が検出されたことを示す11hを代入する。ステップS429では、MCU33は、カウンタkの値が3か否かを判断し、3の場合図17のステップS451に進み、それ以外はステップS405に戻る。
【0237】
図17を参照して、ステップS451にて、MCU33は、変数kに0を代入する。ステップS453にて、MCU33は、変数kを1つインクリメントする。ステップS455にて、MCU33は、変数F[k]の値が、10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS457に進み、否定判断の場合ステップS491に進む。ステップS491にて、MCU33は、変数F[k]の値が00hか否かを判断し、肯定判断の場合ステップS493に進み、否定判断の場合ステップS495に進む。ステップS493では、MCU33は、変数YL[k]及びYR[k]にそれぞれ0を代入してステップS495に進む。
【0238】
ステップS457にて、MCU33は、変数F[k]の値が10hか否かを判断し、10hの場合ステップS459に進み、それ以外はステップS461に進む。ステップS459では、MCU33は、変数Txに次式により得られる値を代入する。変数Txは、矩形範囲#kに含まれる1つの遮蔽領域のX座標である。
【0239】
Tx←(ex[k][0]+bx[k][1])/2
【0240】
ステップS461では、MCU33は、変数F[k]の値が11か否かを判断し、11hの場合ステップS463に進み、それ以外はステップS465に進む。ステップS463では、MCU33は、変数Txに次式により得られる値を代入する。
【0241】
Tx←(Bx[k][0]+bx[k][0])/2
【0242】
ステップS465では、MCU33は、変数Txに次式により得られる値を代入する。
【0243】
Tx←(Ex[k][0]+ex[k][0])/2
【0244】
ステップS469にて、MCU33は、変数F[k+1]の値が、20h、21h、22h、あるいは23hであるか否かを判断し、肯定判断の場合ステップS471に進み、否定判断の場合ステップS485に進む。
【0245】
ステップS485では、MCU33は、変数XI[k]及びYI[k]にそれぞれ次式により得られる値を代入する。
【0246】
XI[k]←Tx
YI[k]←YL[k]
【0247】
変数XI[k]及びYI[k]は、矩形範囲#kに1つの遮蔽領域のみが存在するが、左右が決定できなかった場合に(左右不定の場合に)、その遮蔽領域のXY座標を代入する変数である。
【0248】
ステップS487では、MCU33は、変数YL[k]及びYR[k]にそれぞれ0を代入する。ステップS489にて、MCU33は、左右フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域の左右が不定であることを示すAAhを代入する。
【0249】
ステップS471にて、MCU33は、変数CM1及びCM2にそれぞれ次式により得られる値を代入する。
【0250】
CM1←|Tx−XL[k+1]|
CM2←|Tx−XR[k+1]|
【0251】
変数CM1は、矩形範囲#kの遮蔽領域のX座標と、1つ下の矩形範囲#k+1の左の遮蔽領域のX座標と、の差の絶対値である。変数CM2は、矩形範囲#kの遮蔽領域のX座標と、1つ下の矩形範囲#k+1の右の遮蔽領域のX座標と、の差の絶対値である。
【0252】
ステップS475にて、MCU33は、変数CM1の値がCM2の値より小さいか否かを判断し、小さい場合、つまり、矩形範囲#kの遮蔽領域のX座標が、矩形範囲#k+1の左の遮蔽領域のX座標に近い場合、ステップS477に進み、それ以外は、つまり、矩形範囲#kの遮蔽領域のX座標が、矩形範囲#k+1の右の遮蔽領域のX座標に近い場合、ステップS481に進む。
【0253】
ステップS477では、MCU33は、変数XL[k]及びYR[k]にそれぞれ次式により得られる値を代入する。
【0254】
XL[k]←Tx
YR[k]←0
【0255】
ステップS479では、MCU33は、フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域が左足に対応することを示す01hを代入する。
【0256】
ステップS481では、MCU33は、変数XR[k]及びYL[k]にそれぞれ次式により得られる値を代入する。
【0257】
XR[k]←Tx
YL[k]←0
【0258】
ステップS483では、MCU33は、フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域が右足に対応することを示す10hを代入する。
【0259】
ステップS495にて、MCU33は、変数kの値が3か否かを判断し、3の場合リターンし、それ以外はステップS453に戻る。
【0260】
図18は、図13のステップS211のキック判定処理の流れの一例を示すフローチャートである。図18を参照して、ステップS551にて、MCU33は、変数F[1]が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS553に進み、否定判断の場合ステップS563に進む。
【0261】
ステップS553にて、MCU33は、前回の変数F[1]の値が00hか否かを判断し、00hの場合ステップS555に進み、それ以外はステップS563に進む。ステップS555にて,MCU33は、左右フラグLRF[1]が01hか否かを判断し、01hの場合ステップS561に進み、それ以外はステップS557に進む。ステップS561にて、MCU33は、第4キックフラグYFに1101hを代入してリターンする。代入値1101hは、上記の第1パターンのキックが左足でなされたことを示す。
【0262】
ステップS557にて、MCU33は、フラグLRF[1]が10hか否かを判断し、10hの場合ステップS559に進み、それ以外はステップS563に進む。ステップS559では、MCU33は、第4キックフラグYFに1110hを代入してリターンする。代入値1110hは、上記の第1パターンのキックが右足でなされたことを示す。
【0263】
ステップS563にて、MCU33は、変数F[1]が20h、21h、22hあるいは23hであるか否かを判断し、肯定判断の場合ステップS565に進み、否定判断の場合ステップS579に進む。
【0264】
ステップS565にて、MCU33は、前回の変数F[1]の値が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS567に進み、否定判断の場合ステップS575に進む。ステップS567にて,MCU33は、前回の左右フラグLRF[1]が01hか否かを判断し、01hの場合ステップS569に進み、それ以外はステップS571に進む。ステップS569にて、MCU33は、第4キックフラグYFに2210hを代入してリターンすする。代入値2210hは、上記の第2パターンのキックが右足でなされたことを示す。
【0265】
ステップS571にて、MCU33は、前回のフラグLRF[1]が10hか否かを判断し、10hの場合ステップS573に進み、それ以外はステップS579に進む。ステップS573では、MCU33は、第4キックフラグYFに2201hを代入してリターンする。代入値2201hは、上記の第2パターンのキックが左足でなされたことを示す。
【0266】
ステップS575では、MCU33は、前回のフラグLRF[1]が00hか否かを判断し、00hの場合ステップS577に進み、それ以外はステップS579に進む。ステップS577では、MCU33は、第4キックフラグYFに3311hを代入してリターンする。代入値3311hは、上記の第3パターンのキックがなされたことを示す。
【0267】
ステップS579にて、MCU33は、変数F[2]が20h、21h、22hあるいは23hであるか否かを判断し、肯定判断の場合ステップS581に進み、否定判断の場合ステップS591に進む。
【0268】
ステップS581にて、MCU33は、前回の変数F[2]の値が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS583に進み、否定判断の場合ステップS591に進む。ステップS583にて,MCU33は、前回の左右フラグLRF[2]が01hか否かを判断し、01hの場合ステップS585に進み、それ以外はステップS587に進む。ステップS585にて、MCU33は、第4キックフラグYFに4410hを代入してリターンすする。代入値4410hは、上記の第4パターンのキックが右足でなされたことを示す。
【0269】
ステップS587にて、MCU33は、前回のフラグLRF[2]が10hか否かを判断し、10hの場合ステップS589に進み、それ以外はステップS591に進む。ステップS589では、MCU33は、第4キックフラグYFに4401hを代入してリターンする。代入値4401hは、上記の第4パターンのキックが左足でなされたことを示す。
【0270】
ステップS591では、MCU33は、第4キックフラグYFに0000hを代入して図12のステップS215に進む。代入値0000hは、プレイヤ25がキックしていないことを示す。
【0271】
図19は、図13のステップS213のヒット判定処理の流れの一例を示すフローチャートである。図19を参照して、ステップS651にて、MCU33は、第4キックフラグYFが1101hあるいは2201hか否かを判断し、肯定判断の場合ステップS653に進み、否定判断の場合はステップS663に進む。ステップS653にて、MCU33は、変数XL[1]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS655に進み、レンジ外の場合ステップS657に進む。ステップS655にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。代入値01hは、左のボール81LPをキックしたことを示す。
【0272】
ステップS657にて、MCU33は、変数XL[1]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS659に進み、レンジ外の場合ステップS661に進む。ステップS659では、MCU33は、第5キックフラグGFに10hを代入してリターンする。代入値10hは、右のボール81RPをキックしたことを示す。
【0273】
また、ステップS661では、MCU33は、第5キックフラグGFに00hを代入してリターンする。代入値00hは、空振りを示す。
【0274】
ステップS663にて、MCU33は、第4キックフラグYFが1110hあるいは2210hか否かを判断し、肯定判断の場合ステップS665に進み、否定判断の場合はステップS675に進む。ステップS665にて、MCU33は、変数XR[1]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS667に進み、レンジ外の場合ステップS669に進む。
【0275】
ステップS667にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS669にて、MCU33は、変数XR[1]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS673に進み、レンジ外の場合ステップS671に進む。ステップS673では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS671では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0276】
ステップS675にて、MCU33は、第4キックフラグYFが3311hか否かを判断し、3311hの場合ステップS677に進み、それ以外はステップS689に進む。ステップS677にて、MCU33は、変数AVに次式により得られる値を代入する。
【0277】
AV←(XL[1]+XR[1])/2
【0278】
ステップS679にて、MCU33は、変数AVの値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS681に進み、レンジ外の場合ステップS683に進む。
【0279】
ステップS681にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS683にて、MCU33は、変数AVの値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS687に進み、レンジ外の場合ステップS685に進む。ステップS687では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS685では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0280】
ステップS689にて、MCU33は、第4キックフラグYFが4401hか否かを判断し、4401hの場合ステップS691に進み、それ以外はステップS701に進む。ステップS691にて、MCU33は、変数XL[2]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS693に進み、レンジ外の場合ステップS695に進む。
【0281】
ステップS693にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS695にて、MCU33は、変数XL[2]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS697に進み、レンジ外の場合ステップS699に進む。ステップS697では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS699では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0282】
ステップS701にて、MCU33は、第4キックフラグYFが4410hか否かを判断し、4410hの場合ステップS703に進み、それ以外はステップS713に進む。ステップS703にて、MCU33は、変数XR[2]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS705に進み、レンジ外の場合ステップS707に進む。
【0283】
ステップS705にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS707にて、MCU33は、変数XR[2]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS709に進み、レンジ外の場合ステップS711に進む。ステップS709では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS711では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0284】
図20は、図13のステップS215のコマンド生成処理の流れの一例を示すフローチャートである。図20を参照して、ステップS751にて、MCU33は、コマンドCDにAAAAhをセットする。代入値AAAAhは、第1〜第5キックフラグが全てオフであることを示す。
【0285】
ステップS753にて、MCU33は、第1キックフラグがオンか否かを判断し、オンの場合ステップS755に進み、オフの場合ステップS757に進む。ステップS755にて、MCU33は、コマンドCDに、第1キックフラグのオンを示す1100hをセットする。
【0286】
ステップS757にて、MCU33は、第2キックフラグ又は第3キックフラグがオンか否かを判断し、オンの場合ステップS759に進み、オフの場合ステップS761に進む。ステップS759にて、MCU33は、コマンドCDに、第2キックフラグ又は第3キックフラグのオンを示す2200hをセットする。
【0287】
ステップS761にて、MCU33は、第5キックフラグGFが10hあるいは01hか否かを判断し、肯定判断の場合ステップS763に進み、否定判断の場合リターンする。ステップS763にて、MCU33は、第5キックフラグGFが10hの場合、コマンドCDに、右のボール81RPが蹴られたことを示す5510hをセットする。また、MCU33は、第5キックフラグGFが01hの場合、コマンドCDに、左のボール81LPが蹴られたことを示す5501hをセットする。
【0288】
ステップS765では、MCU33は、第3キックフラグ、第4キックフラグYF、及び第5キックフラグGFをクリアしてリターンする。
【0289】
図21は、図2のマスタプロセッサ41による処理の流れの一例を示すフローチャートである。図21を参照して、ステップS801にて、マスタプロセッサ41は、初期設定を実行する。ステップS803にて、マスタプロセッサ41は、MCU33へリクエスト信号を送信する。ステップS805にて、マスタプロセッサ41は、リクエスト信号に応答したMCU33からコマンドCDを受信する。ステップS807にて、マスタプロセッサ41は、コマンドCDがAAAAhか否かを判断し、AAAAhの場合ステップS809に進み、それ以外はステップS821に進む。
【0290】
ステップS809では、マスタプロセッサ41は、ヒット後アニメーションを実行中か否かを判断し、実行中の場合ステップS815に進み、それ以外はステップS811に進む。ヒット後アニメーションとは、ボール81LP又は81RPが蹴られたと判断されて、ボールがゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がキャッチするか、あるいは、ゴールオブジェクト75に入るアニメーションである。
【0291】
ステップS811では、マスタプロセッサ41は、再帰反射シート19−1及び19−2の上にそれぞれ足裏画像が投影されるように、2つの足裏画像を設定する。ステップS813にて、マスタプロセッサ41は、スレイブプロセッサ45に対して、ゴールキーパーオブジェクト73及びゴールオブジェクト75の生成指示を与える。
【0292】
なお、コマンドCDがAAAAhであり、かつ、ヒット後アニメーションが実行中でないことは、ヒット後アニメーションが終了して、次のプレイの準備状態を示す。あるいは、このことは、最初のプレイの準備状態を示す。このため、プレイヤ25に、次のプレイ又は最初のプレイを促すため、再帰反射シート19−1及び19−2の上に、足裏画像を投影するのである。
【0293】
ステップS821にて、マスタプロセッサ41は、コマンドCDが1100hか否かを判断し、1100hの場合ステップS823に進み、それ以外はステップS829に進む。ステップS823では、マスタプロセッサ41は、足裏画像を消去する。ステップS825にて、マスタプロセッサ41は、出題オブジェクト79L及び79R及びボールオブジェクト81LP及び81RPを設定する。ステップS827では、マスタプロセッサ41は、スレイブプロセッサ45に対して、出題領域77に表示する出題の指示を出す。
【0294】
なお、ステップS821で肯定判断がされたことは、第1キックフラグがオンであり、プレイヤがプレイの準備を整えたことを示す。
【0295】
ステップS829にて、マスタプロセッサ41は、コマンドCDが5510hあるいは5501hか否かを判断し、肯定判断の場合ステップS831に進み、否定判断の場合ステップS823に進む。ステップS823に進むのは、プレイヤ25が、未だボールオブジェクト81LP及び81RPのいずれも蹴っていないからである。
【0296】
ステップS831では、マスタプロセッサ41は、コマンドCDに設定された値に従って、プレイヤの回答の正否を判定する。ステップS833にて、マスタプロセッサ41は、判定結果に基づいて、結果オブジェクト83を設定する。ステップS835にて、マスタプロセッサ41は、ボールオブジェクトの初速度ベクトルを設定する。ステップS837にて、マスタプロセッサ41は、キック音を設定する。
【0297】
また、ヒット後アニメーション実行中の場合、ステップS815にて、マスタプロセッサ41は、ステップS833の結果オブジェクト83を引き続き設定する。ステップS817にて、マスタプロセッサ41は、蹴られたボールオブジェクト81LP又は81RPの軌道を計算し設定する。ステップS819にて、マスタプロセッサ41は、ボールオブジェクトの位置に応じて、スレイブプロセッサ45に指示を出す。すなわち、マスタプロセッサ41は、画面71Pのボールオブジェクトと画面71Tのボールオブジェクトとの軌道が、滑らかに接続するように、座標及び速度ベクトルを、スレイブプロセッサ45に渡す。
【0298】
さて、ステップS839にて、マスタプロセッサ41は、ビデオ同期信号による割込み待ちか否かを判断し、割込み待ちの場合ステップS839に戻り、割込み待ちでない場合、つまり、ビデオ同期信号による割込みが発生した場合はステップS841に進む。マスタプロセッサ41は、テップS841では、設定内容(ステップS811,S815,S817,S823,S825,S833,S835)に応じて、ビデオ信号VD1を生成し、画面71Pを更新し、ステップS843では、設定内容(S837)に応じて、オーディオ信号AU1を生成して、ステップS803に戻る。
【0299】
図22は、図2のスレイブプロセッサ45による処理の流れの一例を示すフローチャートである。図22を参照して、ステップS901にて、スレイブプロセッサ45は、初期設定を実行する。ステップS903では、スレイブプロセッサ45は、マスタプロセッサ41の指示(図21のステップS813,S819,S827)に応じて、画像を設定する。ステップS905にて、スレイブプロセッサ45は、ステップS903で設定した画像に応じて、音声を設定する。ステップS907にて、スレイブプロセッサ45は、ビデオ同期信号による割込み待ちか否かを判断し、割込み待ちの場合ステップS907に戻り、割込み待ちでない場合、つまり、ビデオ同期信号による割込みが発生した場合はステップS909に進む。スレイブプロセッサ45は、テップS909では、設定内容(ステップS903)に従ってビデオ信号VD2を生成して、画面71Tを更新し、ステップS911では、設定内容(ステップS905)に従ってオーディオ信号AU2を生成して、ステップS903に戻る。
【0300】
さて、以上のように、本実施の形態によれば、静止物体(上記ではスクリーン15)に取付けられた再帰反射シート17−1〜17−3,19−1,19−2を撮影して、その差分画像から、プレイヤ25の足による遮蔽領域を検出する。遮蔽領域の検出は、プレイヤ25の足を検出することに相当する。なぜなら、足が再帰反射シート上に位置する場合(足が再帰反射シートの上を通過する場合において、足がまさに再帰反射シートの上にある場合を含む。)、その部分は差分画像に現れず、遮蔽領域となって現れるからである。このように、プレイヤ25への再帰反射シートの装着や取付けを行うことなく、撮影により、プレイヤ25の足を検出できる。
【0301】
また、差分画像上の遮蔽領域の移動を検出することにより、足の動きを検出できる。なぜなら、再帰反射シートのある位置から他の位置へ足が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動し、あるいは、ある再帰反射シートから他の再帰反射シートへ足が移動した場合、遮蔽領域もまた、当該ある再帰反射シートの像から当該他の再帰反射シートの像へ移動するからである。
【0302】
特に、本実施の形態では、再帰反射シート17−1〜17−3は、帯状である。このため、再帰反射シートの長さ方向(差分画像のX方向)の足の移動を検出できる。また、複数の再帰反射シート17−1〜17−3が互いに平行に配置される。このため、再帰反射シートの長さ方向に垂直な方向(差分画像のY方向)の足の移動を検出できる。
【0303】
また、本実施の形態では、再帰反射シート17−1〜17−3の厚さ方向の幅は、イメージセンサ31からの距離が大きくなるほど太くなるように設定される。このため、比較的低解像度のイメージセンサ31を使用する場合でも、イメージセンサ31からの距離が大きい位置に配置された再帰反射シート(例えば、17−3)の像が認識できない(写り込まない)といった不都合を回避できる。
【0304】
さらに、再帰反射シート17−1〜17−3の互いの間隔は、イメージセンサ31からの距離が大きくなるほど大きくなるように設定される。このため、比較的低解像度のイメージセンサ31を使用する場合でも、イメージセンサ31からの距離が大きい位置に配置された2つの再帰反射シート(例えば、17−2と17−3)の像を区別できないといった不都合を回避できる。
【0305】
また、本実施の形態では、プレイヤ25が制御装置3にコマンドを入力するための再帰反射シート19−1及び19−2を備える。このため、プレイヤ25は、この再帰反射シート19−1及び19−2を遮蔽することにより、コマンドを入力できる。この再帰反射シート19−1及び19−2が遮蔽されたことが差分画像上で検出された場合に、コマンドが入力されたとみなせばよいからである。
【0306】
さらに、本実施の形態では、再帰反射シート17−1〜17−3,19−1,19−2は、水平なスクリーン15に固定される。このため、再帰反射シートの取り付けが容易であり、より確実に固定できる。また、再帰反射シートの加工も少なくて済む。また、再帰反射シート17−1〜17−3,19−1,19−2が固定されるスクリーン15は床面に配置又は床面である。このため、プレイヤ25の足の位置及び動きを検出する場合、つまり、足を動かして入力を行う場合に好適である。
【0307】
さらに、本実施の形態では、赤外発光ダイオード23は、再帰反射シート17−1〜17−3,19−1,19−2に、赤外光を照射する。このため、再帰反射シートが照射光を反射することで、よりはっきりと差分画像上に写りこみ、より精度良く遮蔽領域を検出できる。また、再帰反射シート17−1〜17−3,19−1,19−2は受けた光を再帰反射するので、赤外発光ダイオード23とイメージセンサ31とをほぼ同じ位置に配置することにより、より確実に再帰反射シートからの反射光をイメージセンサ31に入力できる。また、赤外発光ダイオード23は、間欠的に赤外光を照射し、MCU33は、発光時画像と消灯時画像との差分画像から、遮蔽領域を検出する。このように、差分を求めるといった簡易な処理で、再帰反射シートからの反射光以外の光によるノイズを極力除去でき、精度良く再帰反射シートの像のみを検出できる。再帰反射シートの像を精度良く検出できるということは、遮蔽領域を精度良く検出できることを意味する。さらに、赤外光を照射し、赤外線フィルタ21を介して、撮像を行うことにより、赤外光以外のノイズを簡易に除去できる。
【0308】
さらに、本実施の形態によれば、映像により、プレイヤ25(対象物の一種)に情報を提示し、この提示に従って動作するプレイヤ25を検出し、その検出結果に基づいて映像を生成できる。つまり、インタラクティブなシステムが構築される。この場合、プレイヤ25の動作はこれまで述べてきた新規な手段(方法)で検出される。従って、この新規な手段を利用したインタラクティブなシステムを構築できる。なお、プレイヤ25の立場からは、検出されることは、入力を行うことを意味する。
【0309】
また、本実施形態では、複数の画面(上記ではスクリーン15及びテレビジョンモニタ5)に表示するための複数の映像(上記では画面71P及び71T)を生成する。このように、複数の画面に同時に複数の映像を表示できるので、エンターテインメント性を向上できる。この場合、複数の画面に映し出される複数の映像同士を連動させる(上記では、蹴られたボールオブジェクトの軌道が、画面71Pと71Tとの間で滑らかに接続される)。その結果、臨場感の向上を図ることができる。また、画面71Pは、水平なスクリーン15に映し出され、画面71Tは、垂直なテレビジョンモニタ5に映し出される。その結果、プレイヤ25(対象物の一種)は、水平面に映し出された映像及び垂直面に映し出された映像を見ながら、身体を動かし、入力を行うことができる。
【0310】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0311】
(1)再帰反射シート17−1〜17−3に代えて、もしくは加えて、二次元状(例えば格子状)に配置された複数の再帰反射シート(例えば円形)をスクリーン15に固定してもよい。もちろん、各再帰反射シートは任意の形状をとることができる。この場合、二次元方向の、プレイヤ(対象物)の位置や移動を検出できる。
【0312】
また、再帰反射シート17−1〜17−3に代えて、もしくは加えて、一次元状に配置された再帰反射シート(例えば円形)をスクリーン15に固定してもよい。もちろん、各再帰反射シートは任意の形状をとることができる。この場合、一次元方向の、プレイヤ(対象物)の位置や移動を検出できる。
【0313】
さらに、再帰反射シート17−1〜17−3に代えて、もしくは加えて、大きな一枚の再帰反射シート(例えば矩形)をスクリーン15に固定することもできる。もちろん、再帰反射シートは任意の形状をとることができる。
【0314】
(2)差分画像上で、再帰反射シート17−2の像と再帰反射シート17−3の像との間の距離が、再帰反射シート17−1の像と再帰反射シート17−2の像との間の距離と等しくなるように、距離L1及びL2を設定することが好ましい。
【0315】
また、差分画像上で、再帰反射シート17−1の像の幅と再帰反射シート17−2の像の幅と再帰反射シート17−3の像の幅とが、差分画像上で等しくなるように、幅d1,d2及びd3を設定することもできる。
【0316】
(3)上記では、物体検出装置をインタラクティブシステム1に適用する例を挙げた。しかし、適用例はこれに限定されない。また、上記では、2つの画面71P及び71Tを2つのスクリーン15及び5に表示したが、いずれか一方のみでもよい。また、プロジェクタ9を使用して、スクリーン15に映像を投影したが、床面にテレビジョンモニタを埋め込むこともできる。逆に、テレビジョンモニタ5に代えて、プロジェクタにより画面71Tを投影してもよい。また、表示装置は、プロジェクタやテレビジョンモニタに限定されず、任意のものを使用できる。上記では、物体検出装置を、映像を提供する装置と組み合わせたが、組合せの対象はこれに限定されない。
【0317】
(4)上記では、プレイヤ25の足を検出したが、検出対象物は、足に限定されず、また、動物(上記では人間)以外の他の物体であってもよい。また、再帰反射シートを水平面に固定したが、対象物に応じて、垂直面に固定したり、水平面及び垂直面のそれぞれに固定してもよい。再帰反射シート17−1〜17−3の数は三本に限定されず、それ以外の数でもよい。再帰反射シート19−1,19−2についても同様である。
【0318】
(5)上記では、MCU33が画像解析を行ったが、マスタプロセッサ41が差分画像を受け取って解析を行うこともできる。また、上記では、差分画像を2値化した後に、各種処理を実行したが、2値化処理を行いながら各種処理を行うこともできる。また、上記では、遮蔽領域、つまり、足の座標のみを求めたが、足の座標の移動、つまり、足の速度を検出及び算出することもできる。もちろん、足の加速度を検出及び算出することもできる。
【0319】
(6)コンテンツは、図6(a)、図6(b)、図7(a)及び図7(b)に示したものに限定されない。任意のコンテンツを作成できる。上記では、知育を意識したゲームを提供したが、純粋なゲームであってもよいし、教育やスポーツ、その他様々な分野のコンテンツを提供できる。また、メモリカートリッジやCD−ROM等のリムーバルメディアにより、コンテンツを実行するコンピュータプログラムや画像等を提供することもできる。また、インターネット等のネットワークから、これらを提供することもできる。
【0320】
(7)上記では、左先端遮蔽領域及び右先端遮蔽領域のいずれかが、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断した。ただし、ヒット判定はこれに限定さない。例えば、左先端遮蔽領域のX座標と右先端遮蔽領域のX座標との平均値が、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断することもできる。また、例えば、蹴る動作を行った方の足に対応する先端遮蔽領域のX座標が、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断することもできる。
【0321】
(8)スクリーン15に再帰反射シートを取り付ける代わりに、赤外発光ダイオードのような自発光装置を埋め込むこともできる。この場合は、撮像ユニット7には、赤外発光ダイオード23は不要である。また、撮像装置は、イメージセンサに限定されず、CCDなどの他の撮像装置を使用してもよい。
【0322】
(9)上記のストロボ撮影(赤外発光ダイオード23の点滅)及び差分処理は、好適な例を示しただけであって、本発明に必須の要素ではない。つまり、赤外発光ダイオード23は、点滅させなくてもよいし、また、赤外発光ダイオード23がなくてもよい。照射する光は赤外光に限られない。
【0323】
(10)上記では、再帰反射シート17−1〜17−3,19−1,19−2は、プレイヤ25に踏まれるものであるため、これらを透明又は半透明の部材(例えば、ポリカーボネートやアクリル等の薄い板、あるいはポリエステル等のシートやフィルム)で覆うことにより、保護し耐久性を向上できる。また、再帰反射シートを透明又は半透明の物質でコーティングすることもできる。もちろん、再帰反射シートを固定したスクリーン15の全体をこれらで保護してもよい。
【0324】
(11)上記では、再帰反射シートをスクリーン15に固定した。ただし、これは好適な例であり、再帰反射をしない、反射部材(例えば、光を乱反射する部材、鏡面反射する部材)を使用することもできる。
【0325】
(12)上記では、演算装置として、MCU33、マスタプロセッサ41、及び、スレイブプロセッサ45を設けた。ただし、これは一例であって、1つのコンピュータにより全ての処理を行なうこともできる。つまり、どの処理をどの演算装置に実行させるかは任意に決定できる。
【0326】
(13)MCU33からマスタプロセッサ41に与える情報は、上記のものに限定されず、仕様に合わせて、適宜設定できる。
【0327】
(14)遮蔽領域は、再帰反射シートに足が置かれた場合、再帰反射シートに足が置かれなくても足がその上空に位置する場合、あるいは、再帰反射シートが足の陰になる場合に、発生する。従って、上記において、遮蔽領域の原因として、これら全てを列挙していない場合でも、その遮蔽領域は、これらいずれかの場合が発生したことを意味する。
【産業上の利用可能性】
【0328】
本発明は、ビデオゲーム等のエンターテインメントの分野、及び、教育の分野などに利用可能である。
【符号の説明】
【0329】
1…インタラクティブシステム、3…制御装置、5…テレビジョンモニタ、7…撮像ユニット、9…プロジェクタ、11…スピーカ、13…筐体、15…スクリーン、17−1〜17−3,19−1,19−2…再帰反射シート。
【0330】
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。
【技術分野】
【0001】
本発明は、撮像装置からの画像を解析して、対象物を検出する物体検出装置及びその関連技術に関する。
【背景技術】
【0002】
本件出願人によるゴルフゲームシステムが特許文献1に開示されている。このゴルフゲームシステムは、ゲーム機及びゴルフクラブ型入力装置を含む。ゲーム機のハウジングの内部には撮像装置が収納される。この撮像装置は、イメージセンサと赤外発光ダイオードとを含む。赤外発光ダイオードによって撮像装置の上方の所定範囲に赤外光が間欠的に照射される。したがって、イメージセンサは、その範囲内で移動するゴルフクラブ型入力装置に設けられた反射部材を間欠的に撮影する。このような反射部材のストロボ映像を処理することによって、ゲーム機の入力となる位置や速度等を計算する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−85524号
【発明の概要】
【発明が解決しようとする課題】
【0004】
この従来技術では、反射部材を検知対象物に装着ないしは取り付ける必要がある。例えば、検知対象物が人間である場合、その人間は、反射部材を装着する必要がある。このため、人によっては、反射部材の装着を煩わしく感じる場合もある。特に、検知対象物が幼児の場合、装着を拒否したり、口に入れたり、好ましくない事態が発生し得る。また、反射部材の紛失や品質劣化等もあり得る。
【0005】
そこで、本発明は、対象物への反射部材の装着や取付けを行うことなく、撮影により、対象物を検出できる物体検出装置及びその関連技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の観点によれば、物体検出装置は、実空間中の対象物を検出する物体検出装置であって、静止物体に取付けられ、受けた光を反射する反射部材と、前記反射部材を撮像する撮像手段と、撮像により得られた画像を解析する解析手段と、を備え、前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含む。
【0007】
この構成によれば、静止物体に取付けられた反射部材を撮影して、その画像から、対象物による遮蔽領域を検出する。遮蔽領域の検出は、対象物を検出することに相当する。なぜなら、対象物が反射部材上に位置する場合、その部分は画像に現れず、遮蔽領域となって現れるからである。このように、対象物への反射部材の装着や取付けを行うことなく、撮影により、対象物を検出できる。
【0008】
また、画像上の遮蔽領域の移動を検出することにより、対象物の動きを検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動し、あるいは、ある反射部材から他の反射部材へ対象物が移動した場合、遮蔽領域もまた、当該ある反射部材の像から当該他の反射部材の像へ移動するからである。
【0009】
例えば、前記反射部材は、帯状である。
【0010】
この構成によれば、反射部材の長さ方向の対象物の移動を検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動するからである。
【0011】
また、例えば、複数の前記反射部材が、前記静止物体に取付けられ、前記反射部材の各々は、帯状であり、前記複数の反射部材は、前記静止物体上に互いに平行に配置される。
【0012】
この構成によれば、反射部材の長さ方向の対象物の移動及び反射部材の長さ方向に垂直な方向の対象物の移動を検出できる。なぜなら、反射部材のある位置から他の位置へ対象物が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動するからである。また、ある反射部材から他の反射部材へ対象物が移動した場合、遮蔽領域もまた、当該ある反射部材の像から当該他の反射部材の像へ移動するからである。
【0013】
この場合、前記反射部材の厚さ方向の幅は、前記撮像手段からの距離が大きくなるほど太くなるように設定される。
【0014】
この構成によれば、比較的低解像度の撮像手段を使用する場合でも、撮像手段からの距離が大きい位置に配置された反射部材の像が認識できない(写り込まない)といった不都合を回避できる。
【0015】
また、この場合、前記反射部材間の距離は、前記撮像手段からの距離が大きくなるほど大きくなるように設定される。
【0016】
この構成によれば、比較的低解像度の撮像手段を使用する場合でも、撮像手段からの距離が大きい位置に配置された2つの反射部材の像を区別できないといった不都合を回避できる。
【0017】
上記物体検出装置において、複数の前記反射部材が、前記静止物体に取付けられる。
【0018】
この構成によれば、各反射部材への対象物の移動を検出できる。また、遮蔽された反射部材の位置により、対象物の位置を検出できる。
【0019】
例えば、前記複数の反射部材のうち、少なくとも所定数の反射部材は、二次元状に配置される。
【0020】
この構成によれば、二次元方向の、対象物の位置や移動を検出できる。
【0021】
また、例えば、前記複数の反射部材のうち、少なくとも所定数の反射部材は、一次元状に配置されてもよい。
【0022】
この構成によれば、一次元方向の、対象物の位置や移動を検出できる。
【0023】
上記物体検出装置において、前記複数の反射部材は、ユーザがコンピュータに所定コマンドを入力するための反射部材を含む。
【0024】
この構成によれば、ユーザは、この反射部材を遮蔽することにより、所定コマンドを入力できる。この反射部材が遮蔽されたことが画像上で検出された場合に、所定コマンドが入力されたとみなせばよいからである。
【0025】
上記物体検出装置において、前記静止物体は、水平面を含み、前記反射部材は、前記水平面に取付けられる。
【0026】
この構成によれば、反射部材の取り付けが容易であり、より確実に固定できる。また、反射部材の加工も少なくて済む。
【0027】
この場合、前記静止物体は、床面に配置又は床面である。
【0028】
この構成によれば、例えば、対象物が人間の場合、足の位置及び動きを検出する場合に好適である。
【0029】
上記物体検出装置は、光を発光して、前記反射部材に向けて前記光を照射する照射手段をさらに備える。
【0030】
この構成によれば、反射部材が照射光を反射することで、よりはっきりと画像上に写りこみ、より精度良く遮蔽領域を検出できる。
【0031】
この物体検出装置において、前記反射部材は、受けた光を再帰反射する。
【0032】
この構成によれば、照射手段と撮像手段とをほぼ同じ位置に配置することにより、より確実に反射部材からの反射光を撮像手段に入力できる。
【0033】
この物体検出装置において、前記照射手段は、間欠的に前記光を発光して、前記反射部材に向けて前記光を照射し、前記検出手段は、前記撮像手段によって、前記光の発光時の撮像により得られた画像と前記光の消灯時の撮像により得られた画像との差分画像から、前記遮蔽領域を検出する。
【0034】
この構成によれば、差分を求めるといった簡易な処理で、反射部材からの反射光以外の光によるノイズを極力除去でき、精度良く反射部材の像のみを検出できる。反射部材の像を精度良く検出できるということは、遮蔽領域を精度良く検出できることを意味する。
【0035】
この物体検出装置において、前記照射手段は、赤外光を発光し、前記撮像手段は、赤外光のみを透過する赤外線フィルタを介して、前記反射部材を撮像する。
【0036】
この構成によれば、赤外光以外のノイズを簡易に除去できる。
【0037】
上記物体検出装置は、少なくとも前記反射部材を覆う透明又は半透明の部材をさらに備える。
【0038】
この構成によれば、反射部材が足で踏まれるものである場合等において、反射部材を保護でき、その耐久性を向上できる。
【0039】
ここで、反射部材を覆う透明又は半透明の部材は、反射部材を透明又は半透明の物質によりコーティングする場合を含む。
【0040】
本発明の第2の観点によれば、インタラクティブシステムは、実空間中の対象物を検出する物体検出手段と、前記物体検出手段による検出結果に従って情報処理を実行する情報処理手段と、を備え、前記物体検出手段は、静止物体に取付けられ、受けた光を反射する反射部材と、前記反射部材を撮像する撮像手段と、撮像により得られた画像を解析する解析手段と、を含み、前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含み、前記情報処理手段は、前記検出手段による検出結果に従って、映像を生成する映像生成手段を含む。
【0041】
この構成によれば、上記第1の観点による物体検出装置と同様の構成を含むので、それと同様の効果を奏する。また、映像により、ユーザ(対象物の一種)に情報を提示し、この提示に従って動作するユーザを検出し、その検出結果に基づいて映像を生成できる。つまり、インタラクティブなシステムが構築される。この場合、ユーザの動作を検出する構成は、第1の観点による物体検出装置と同様である。従って、第1の観点による物体検出装置を利用したインタラクティブなシステムを構築できる。なお、ユーザの立場からは、検出されることは、入力を行うことを意味する。
【0042】
このインタラクティブシステムにおいて、前記映像生成手段は、複数の画面に表示するための複数の前記映像を生成する。
【0043】
この構成によれば、複数の画面に同時に複数の映像を表示できるので、エンターテインメント性を向上できる。
【0044】
この場合、前記映像生成手段は、前記複数の画面に映し出される前記複数の映像同士を連動させる。
【0045】
この構成によれば、臨場感の向上を図ることができる。
【0046】
このインタラクティブシステムにおいて、前記映像生成手段は、前記複数の映像のうちの第1映像を水平面に映し出す手段と、前記複数の映像のうちの第2映像を垂直面に映し出す手段と、を含む。
【0047】
この構成によれば、ユーザ(対象物の一種)は、水平面に映し出された映像及び垂直面に映し出された映像を見ながら、身体を動かし、入力を行うことができる。
【0048】
このインタラクティブシステムにおいて、前記静止物体は、前記水平面を含み、前記反射部材は、前記水平面に取付けられる。
【0049】
この構成によれば、反射部材の取り付けが容易であり、より確実に固定できる。また、反射部材の加工も少なくて済む。
【0050】
このインタラクティブシステムにおいて、前記静止物体は、床面に配置又は床面である。
【0051】
この構成によれば、例えば、対象物が人間の場合、足の位置及び動きを検出する場合、つまり、足を動かして入力を行う場合に好適である。
【0052】
本発明の第3の観点によれば物体検出方法は、静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出する物体検出方法であって、前記反射部材を撮像するステップと、撮像により得られた画像を解析するステップと、を含み、解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含む。
【0053】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0054】
本発明の第4の観点によればインタラクティブシステム構築方法は、静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出するステップと、検出する前記ステップによる検出結果に従って情報処理を実行するステップと、を含み、検出する前記ステップは、前記反射部材を撮像するステップと、撮像により得られた画像を解析するステップと、を含み、解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含み、情報処理を実行する前記ステップは、前記遮蔽領域を検出する前記ステップによる検出結果に従って、映像を生成するステップを含む。
【0055】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0056】
本発明の第5の観点によるコンピュータプログラムは、上記第3の観点による物体検出方法をコンピュータに実行させるコンピュータプログラムである。
【0057】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0058】
本発明の第6の観点によるコンピュータプログラムは、上記第4の観点によるインタラクティブシステム構築方法をコンピュータに実行させるコンピュータプログラムである。
【0059】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0060】
本発明の第7の観点による記録媒体は、上記第5の観点によるコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体である。
【0061】
この構成によれば、上記第1の観点による物体検出装置と同様の効果を奏する。
【0062】
本発明の第8の観点による記録媒体は、上記第6の観点によるコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体である。
【0063】
この構成によれば、上記第2の観点によるインタラクティブシステムと同様の効果を奏する。
【0064】
本明細書及び特許請求の範囲において、記録媒体には、例えば、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、CD(CD−ROM、Video−CDを含む)、DVD(DVD−Video、DVD−ROM、DVD−RAMを含む)、ROMカートリッジ、バッテリバックアップ付きのRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等を含む。
【0065】
本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
【図面の簡単な説明】
【0066】
【図1】本発明の実施の形態によるインタラクティブシステム1の全体構成を示す図である。
【図2】図1のインタラクティブシステム1の電気的構成を示す図である。
【図3】図1のスクリーン15の説明図である。
【図4】システム起動時における差分画像89のスキャンの説明図である。
【図5】システム起動中における差分画像89のスキャンの説明図である。
【図6】(a)図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答前)。(b)図1のスクリーン15に映し出される画面71Pの例示図である(回答前)。
【図7】(a)図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答後)。(b)図1のスクリーン15に映し出される画面71Pの例示図である(回答後)。
【図8】図2のMCU33による撮影処理の流れの一例を示すフローチャートである。
【図9】図2のMCU33による起動時検出処理の流れの一例を示すフローチャートである。
【図10】図9のステップS3の垂直端点検出処理の流れの一例を示すフローチャートである。
【図11】図9のステップS5の水平端点検出処理の流れの一例を示すフローチャートである。
【図12】図2のMCU33による起動中検出処理の流れの一例を示すフローチャートである。
【図13】図12のステップS205のキック前処理の流れの一例を示すフローチャートである。
【図14】図12のステップS207の足数判定処理の流れの一例を示すフローチャートである。
【図15】図14のステップS325の幅判定処理の流れの一例を示すフローチャートである。
【図16】図12のステップS209の左右判定処理の流れの一部の一例を示すフローチャートである。
【図17】図12のステップS209の左右判定処理の流れの他の一部の一例を示すフローチャートである。
【図18】図12のステップS211のキック判定処理の流れの一例を示すフローチャートである。
【図19】図12のステップS213のヒット判定処理の流れの一例を示すフローチャートである。
【図20】図12のステップS215のコマンド生成処理の流れの一例を示すフローチャートである。
【図21】図2のマスタプロセッサ41による処理の流れの一例を示すフローチャートである。
【図22】図2のスレイブプロセッサ45による処理の流れの一例を示すフローチャートである。
【図23】システム起動時における差分画像89のスキャンの詳細な説明図である。
【図24】システム起動中における差分画像89のスキャンの詳細な説明図である。
【発明を実施するための形態】
【0067】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書において、数字の後尾に付した「h」は、16進数であることを示す。
【0068】
図1は、本発明の実施の形態によるインタラクティブシステム1の全体構成を示す図である。図1を参照して、このインタラクティブシステム1は、制御装置3、テレビジョンモニタ5、撮像ユニット7、プロジェクタ9、スピーカ11、及びスクリーン15を備える。制御装置3、テレビジョンモニタ5、撮像ユニット7、プロジェクタ9、及びスピーカ11は、それぞれ、床面に直立して設置される筐体13の第5段、第4段、第3段、第2段、及び第1段に設置される。スクリーン15は、矩形状であり、筐体13の前方の水平な床面に固定される。プレイヤ(検出対象物)25は、このスクリーン15の上にのってプレイする。
【0069】
ここで、スクリーン15の筐体13側をスクリーン15の上側、その反対側をスクリーンの下側と呼ぶことにする。そうすると、スクリーン15の下側半分の領域には、帯状の再帰反射シート(再帰反射部材)17−1,17−2及び17−3が互いに平行に、かつ、スクリーン15の上辺に平行に固定される。また、スクリーン15には、円形の再帰反射シート(再帰反射部材)19−1及び19−2が、再帰反射シート17−3とスクリーン15の下辺との間に、再帰反射シート17−3に沿って固定される。再帰反射シート17−1〜17−3並びに19−1及び19−2は、受けた光を再帰反射する。
【0070】
なお、スクリーン15は、プロジェクタ9からのビデオ映像が投影されると同時に、撮像ユニット7により撮影されるので、被撮影面と呼ぶこともできる。また、スクリーン15は専用のものを用いてもよいが、床面が平らで、投影されたビデオ映像の内容を容易に認識できるものであれば、床面そのものをスクリーンとして使用することもできる。この場合は、床面が被撮影面となり、床面に再帰反射シート17−1〜17−3並びに19−1及び19−2が固定される。
【0071】
ここで、プレイヤ25は、動く物体であるのに対して、スクリーン15は固定されるので静止物体と言える。
【0072】
さて、制御装置3は、インタラクティブシステム1全体の制御を行うと共に、テレビジョンモニタ5に与えるビデオ信号VD1、プロジェクタ9に与えるビデオ信号VD2、及びスピーカ11に与えるオーディオ信号(ボイスを含む。)AUMを生成する。テレビジョンモニタ5は、制御装置3が生成したビデオ信号VD1に応じた映像を表示する。プロジェクタ9は、制御装置3が生成したビデオ信号VD2に応じた映像をスクリーン15に投影する。
【0073】
撮像ユニット7は、スクリーン15を俯瞰し、再帰反射シート17−1〜17−3並びに19−1及び19−2を撮像する。撮像ユニット7は、赤外光のみを透過する赤外線フィルタ21及びその周りに配置された4個の赤外発光ダイオード23を含む。赤外線フィルタ21の裏側には、後述のイメージセンサ31が配置される。
【0074】
赤外発光ダイオード23は、再帰反射シート17−1〜17−3並びに19−1及び19−2に対して、間欠的に赤外光を照射する。再帰反射シート17−1〜17−3並びに19−1及び19−2は、照射された赤外光を再帰反射し、この反射赤外光が、赤外線フィルタ21を介してイメージセンサ31に入力される。イメージセンサ31は、赤外光照射時の画像と非照射時の画像との差分画像を生成する。後述するように、制御装置3は、この差分画像に基づいて、プレイヤ25の検出処理を実行する。このように、本システム1は、検出装置を含む。検出装置として機能する部分は、主に、制御装置3、撮像ユニット7、及び再帰反射シート17−1〜17−3,19−1,19−2である。
【0075】
図2は、図1のインタラクティブシステム1の電気的構成を示す図である。図2を参照して、制御装置3は、マスタプロセッサ41、外部メモリ43、スイッチ群51、スレイブプロセッサ45、外部メモリ47、ミキシング回路49、及び電源スイッチ53を含む。撮像ユニット7は、MCU(Micro Controler Unit)33、イメージセンサ31、及び赤外発光ダイオード23を含む。
【0076】
マスタプロセッサ41には、外部メモリ43が接続される。外部メモリ43は、例えば、フラッシュメモリ、ROM、及び/又はRAM等により構成される。外部メモリ43は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、各種処理(例えば、撮像ユニット7及びスレイブプロセッサ45の制御、撮像ユニット7からのコマンド等の受け付け、及びプロジェクタ9に与える映像の制御等)をマスタプロセッサ41に実行させる制御プログラムが格納される。画像データ領域には、ビデオ信号VD1を生成するために必要な画像データが格納されている。音声データ領域には、ボイス、効果音、及び音楽等のオーディオ信号AU1を生成するための音声データが格納されている。マスタプロセッサ41は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号(ビデオ映像)VD1及びオーディオ信号AU1を生成する。ビデオ信号VD1及びオーディオ信号AU1は、それぞれ、プロジェクタ9及びミキシング回路49に与えられる。
【0077】
マスタプロセッサ41は、図示しないが、中央演算処理装置(以下、「CPU」と呼ぶ。)、グラフィックスプロセシングユニット(以下、「GPU」と呼ぶ。)、サウンドプロセシングユニット(以下、「SPU」と呼ぶ。)、ジオメトリエンジン(以下、「GE」と呼ぶ。)、外部インタフェースブロック、メインRAM、及びA/Dコンバータ(以下、「ADC」と呼ぶ。)等の各種機能ブロックを具備する。
【0078】
CPUは、外部メモリ43に格納されたプログラムを実行して、各種演算やマスタプロセッサ41内の各種機能ブロックの制御を行う。グラフィックス処理に関するCPUの処理として、外部メモリ43に格納されたプログラムを実行して、各オブジェクトの拡大・縮小、回転、及び/又は平行移動のパラメータ、視点座標(カメラ座標)、並びに視線ベクトルの算出等を行う。ここで、1または複数のポリゴン又はスプライトから構成され、同じ拡大・縮小、回転、及び平行移動の変換が適用される単位を「オブジェクト」と呼ぶ。
【0079】
GPUは、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成し、アナログのコンポジットビデオ信号VD1に変換する。SPUは、PCM(pulse code modulation)波形データ、アンプリチュードデータ、及びメインボリュームデータを生成し、これらをアナログ乗算して、アナログオーディオ信号AU1を生成する。GEは、三次元イメージを表示するための幾何演算を実行する。具体的には、GEは、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)などの演算を実行する。
【0080】
外部インタフェースブロックは、周辺装置(本実施の形態では、スレイブプロセッサ45、MCU33及びスイッチ群51)とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。ADCは、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置から入力されたアナログ信号をデジタル信号に変換する。メインRAMは、CPUのワーク領域、変数格納領域、および仮想記憶機構管理領域等として利用される。
【0081】
さて、スイッチ群51は、方向キー等の各種操作を行うためのキーを含み、それらのキーステータスがマスタプロセッサ41に与えられる。マスタプロセッサ41は、受け取ったキーステータスに応じて処理を実行する。
【0082】
また、スレイブプロセッサ45には、外部メモリ47が接続される。外部メモリ47は、例えば、フラッシュメモリ、ROM、及び/又はRAM等により構成される。外部メモリ47は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、各種処理(例えば、テレビジョンモニタ5に表示する映像の制御等)をスレイブプロセッサ45に実行させる制御プログラムが格納される。画像データ領域には、ビデオ信号VD2を生成するために必要な画像データが格納されている。音声データ領域には、効果音等のオーディオ信号AU2を生成するための音声データが格納されている。スレイブプロセッサ45は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号(ビデオ映像)VD2及びオーディオ信号AU2を生成する。ビデオ信号VD2及びオーディオ信号AU2は、それぞれ、テレビジョンモニタ5及びミキシング回路49に与えられる。
【0083】
なお、スレイブプロセッサ45の内部構成は、マスタプロセッサ41のそれと同じであり、説明を省略する。
【0084】
また、マスタプロセッサ41とスレイブプロセッサ45とは、通信を行い、互いにデータを送受信して、プロジェクタ9に与える映像VD1とテレビジョンモニタ5に与える映像VD2との同期(映像内容の)をとる。この場合、プロセッサ41が、マスタとなって、スレイブとしてのプロセッサ45を制御する。
【0085】
さて、ミキシング回路49は、マスタプロセッサ41が生成したオーディオ信号AU1とスレイブプロセッサ45が生成したオーディオ信号AU2とを合成し、オーディオ信号AUMとして、スピーカ11へ出力する。
【0086】
また、撮像ユニット7のイメージセンサ31は、例えば、64画素×64画素のCMOSイメージセンサである。イメージセンサ31は、MCU33からの制御を受けて動作する。具体的には、次の通りである。イメージセンサ31は、赤外発光ダイオード23を間欠的に駆動する。従って、赤外発光ダイオード23は、間欠的に赤外光を発光する。これにより、再帰反射シート17−1〜17−3並びに19−1及び19−2には、間欠的に赤外光が照射される。イメージセンサ31は、赤外光点灯時及び消灯時のそれぞれにおいて、再帰反射シート17−1〜17−3並びに19−1及び19−2を撮影する。そして、イメージセンサ31は、赤外光点灯時の画像信号と赤外光消灯時の画像信号との差分画像信号を生成して、MCU33に出力する。差分画像信号を求めることで、再帰反射シート17−1〜17−3並びに19−1及び19−2からの反射光以外の光によるノイズを極力除去でき、精度良く再帰反射シート17−1〜17−3並びに19−1及び19−2のみを検出できる。つまり、再帰反射シート17−1〜17−3並びに19−1及び19−2は、赤外光を再帰反射するので、発光時では、背景に比べ、高い輝度の像として画像に写り込むが、消灯時では、赤外光を受けないので、背景と同様に低い輝度の像として画像に写り込み、差分画像を生成することにより、再帰反射17−1〜17−3並びに19−1及び19−2の像だけを抽出できるのである。
【0087】
MCU33は、メモリ30を有し、このメモリ30に格納された制御プログラムを実行して、後述のフローチャートに示す処理を実行する。すなわち、MCU33は、イメージセンサ31からの差分画像を所定の閾値を用いて2値化し、2値化後の差分画像を解析して、プレイヤ25を検出して、コマンド及び座標(後述)をマスタプロセッサ41に送信する。マスタプロセッサ41は、MCU33から受け取ったコマンド及び座標に基づいて、プロジェクタ9に与える映像、スピーカ11に与える音声、及びスレイブプロセッサ45を制御する。これらの処理の詳細は後述する。
【0088】
プロジェクタ9は、マスタプロセッサ41から与えられたビデオ信号VD1に基づくビデオ映像をスクリーン15に投影する。テレビジョンモニタ5は、スレイブプロセッサ45から与えられたビデオ信号VD2に基づくビデオ映像を表示する。スピーカ11は、ミキシング回路49から与えられたオーディオ信号AUMに基づく音声を出力する。
【0089】
図3は、図1のスクリーン15の説明図である。図3を参照して、スクリーン15上の再帰反射シート17−1の幅d1、再帰反射シート17−2の幅d2、及び再帰反射シート17−3の幅d3の関係は、d1<d2<d3、である。このように、撮像ユニット7(イメージセンサ31)からの距離が大きくなるほど、帯状の再帰反射シートの幅を大きくする。また、再帰反射シート17−1と再帰反射シート17−2との間の距離L1及び再帰反射シート17−2と再帰反射シート17−3との間の距離L2の関係は、L1<L2、である。このように、撮像ユニット7(イメージセンサ31)からの距離が大きくなるほど、再帰反射シートの間隔を大きくする。これらの理由は、次の通りである。
【0090】
まず、説明の便宜のため、撮像ユニット7のイメージセンサ31の光軸をスクリーン15に正射影した軸18を想定する。なお、この軸18に直交するように、再帰反射シート17−1〜17−3が配置される。また、スクリーン15上で、軸18に沿った一定長さの線分Dを想定する。
【0091】
撮像ユニット7のイメージセンサ31は、スクリーン15を俯瞰する。従って、イメージセンサ31からの差分画像には、台形歪みが発生する。つまり、矩形のスクリーン15は、差分画像中では、台形状の像となって写り込む。この場合、台形歪みは、イメージセンサ31からの距離が大きくなるほど大きくなる。従って、スクリーン15の上側(イメージセンサ31に近い側)の線分Dの差分画像中の像の長さは、スクリーン15の下側(イメージセンサ31に遠い側)の線分Dの差分画像中の像の長さより大きくなる。
【0092】
このため、再帰反射シート17−1〜17−3を等間隔で配置すると(L1=L2)、差分画像上では、再帰反射シート17−2の像と再帰反射シート17−3の像との間の距離が、再帰反射シート17−1の像と再帰反射シート17−2の像との間の距離より短くなってしまう。比較的低解像度(例えば64画素×64画素)のイメージセンサ31を使用する場合、特に再帰反射シート17−2の像と再帰反射シート17−3の像とを区別できないことも発生しうる。従って、スクリーン15上で、距離L1<距離L2とすることにより、低解像度のイメージセンサ31を使用した場合であっても、差分画像上で、再帰反射シート17−2の像及び17−3の像を確実に区別できる。
【0093】
同様に、再帰反射シート17−1〜17−3の幅を等しくすると(d1=d2=d3)、台形歪みにより、差分画像上では、再帰反射シート17−3の像の幅は、再帰反射シート17−2の像の幅より小さく、再帰反射シート17−2の像の幅は、再帰反射シート17−1の像の幅より小さくなる。このため、比較的低解像度(例えば64画素×64画素)のイメージセンサ31を使用する場合、特に再帰反射シート17−3の像が認識できない(写り込まない)ことも発生しうる。従って、スクリーン15上で、幅d3>幅d2>幅d1、とすることにより、低解像度のイメージセンサ31を使用した場合であっても、差分画像上で、再帰反射シート17−3の像を確実に認識できる。また、再帰反射シート17−2の幅は、再帰反射シート17−3ほど太くする必要はないが、再帰反射シート17−1の幅より大きくして(d2>d1)、認識の確実性を向上している。
【0094】
次に、撮像ユニット7のMCU33によるプレイヤ25の検出方法を説明する。まず、システム起動時の処理を説明し、その後、システム起動中の処理を説明する。また、説明に用いる差分画像は2値化後のものとする。
【0095】
図4は、システム起動時における差分画像89のスキャンの説明図である。図4を参照して、イメージセンサ31が生成する差分画像89の左上角を原点とし、水平右方向を正とするX軸、及び垂直下方向を正とするY軸を想定する。この差分画像89には、再帰反射シート17−1,17−2,17−3,19−1及び19−2にそれぞれ対応する像90−1,90−2,90−3,92−1及び92−2が写り込んでいる。
【0096】
電源スイッチ53がオンされると、マスタプロセッサ41の命令により、撮像ユニット7のMCU33は、イメージセンサ31に対して、撮影指示を出す。この撮影指示を受けて、イメージセンサ31は、撮像処理を開始する。この撮像処理には、赤外発光ダイオード23の間欠的な駆動、点灯時及び消灯時のそれぞれでの撮影、並びに、点灯時画像と消灯時画像との差分画像の生成を含む。MCU33は、この差分画像を解析して、解析結果(コマンド及び座標)をマスタプロセッサ41に送信する。
【0097】
図4に示すように、特に電源投入時(システム起動時)では、MCU33は、マスタプロセッサ41からの命令で、差分画像89をスキャンして、像90−1の最小X座標Bx1及び最大X座標Ex1、像90−2の最小X座標Bx2及び最大X座標Ex2、並びに、像90−3の最小X座標Bx3及び最大X座標Ex3を検出し、その内部のメモリに格納する。
【0098】
これは、次の理由による。プレイ中では、プレイヤ25が、再帰反射シート17−1の左端あるいは右端を踏む可能性もある。再帰反射シート17−2及び17−3についても同様である。従って、プレイヤ25がスクリーン15にのっていない起動時に、各再帰反射シート17−1〜17−3の各像90−1〜90−3の左端(基準左端)及び右端(基準右端)を予め検出しておく。そして、プレイ中の各像90−1〜90−3の左端と、対応する基準左端と、を比較して、プレイヤ25が左端にのっているか否かを判断し、また、プレイ中の各像90−1〜90−3の右端と、対応する基準右端と、を比較して、プレイヤ25が右端にのっているか否かを判断する。
【0099】
また、電源投入時(システム起動時)にて、MCU33は、マスタプロセッサ41からの命令で、差分画像89をスキャンして、像90−1の最小Y座標By1及び最大Y座標Ey1、像90−2の最小Y座標By2及び最大Y座標Ey2、並びに、像90−3の最小Y座標By3及び最大Y座標Ey3を検出し、その内部のメモリに格納することもできる。
【0100】
ここで、再帰反射シート17−1の像90−1の最小X座標Bx1、最大X座標Ex1、最小Y座標By1、及び最大Y座標Ey1で定義される矩形を矩形範囲#1と呼ぶ。再帰反射シート17−2の像90−2の最小X座標Bx2、最大X座標Ex2、最小Y座標By2、及び最大Y座標Ey2で定義される矩形を矩形範囲#2呼ぶ。再帰反射シート17−3の像90−3の最小X座標Bx3、最大X座標Ex3、最小Y座標By3、及び最大Y座標Ey3で定義される矩形を矩形範囲#3と呼ぶ。再帰反射シート19−1及び19−2に対応する像92−1及び92−1を1つの像90−4と考えたときの像90−4の最小X座標、最大X座標、最小Y座標、及び最大Y座標で定義される矩形を矩形範囲#4と呼ぶ。
【0101】
図5は、システム起動中における差分画像89のスキャンの説明図である。図5を参照して、この差分画像89は、プレイヤ25が再帰反射シート17−1の上に両足を置いている(両足で踏んでいる)場合の撮影処理で得られたものである。従って、差分画像89には、像1−0,1−1,1−2,2−0,2−1,2−2,3−0,3−1,3−2,92−1及び92−2が写り込んでいる。領域(以下、「遮蔽領域」と呼ぶ。)1−5,1−6,2−5,2−6,3−5及び3−6は、説明の便宜上、ハッチングを施しているが、実際は何も写っていない部分である。
【0102】
像1−0,1−1及び1−2は、再帰反射シート17−1の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、その部分の再帰反射シート17−1が隠れてしまい、隠れていない部分の再帰反射シート17−1だけが、差分画像89に写り込んだからである。遮蔽領域1−5は、プレイヤ25の左足が置かれた部分に対応し、遮蔽領域1−6は、プレイヤ25の右足が置かれた部分に対応する。つまり、遮蔽領域1−5は、プレイヤ25の左足であり、遮蔽領域1−6は、プレイヤ25の右足である。このように、遮蔽領域1−5及び1−6は、プレイヤ25の両足の位置を示す。
【0103】
像2−0,2−1及び2−2は、再帰反射シート17−2の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、再帰反射シート17−2のうち、両足の陰になっている部分は差分画像89には写り込まず、陰になっていない部分の再帰反射シート17−2だけが、差分画像89に写り込んだからである。遮蔽領域2−5は、プレイヤ25の左足の陰になっている部分に対応し、遮蔽領域2−6は、プレイヤ25の右足の陰になっている部分に対応する。
【0104】
像3−0,3−1及び3−2は、再帰反射シート17−3の像である。プレイヤ25の両足が再帰反射シート17−1上に置かれているため、再帰反射シート17−3のうち、両足の陰になっている部分は差分画像89には写り込まず、陰になっていない部分の再帰反射シート17−3だけが、差分画像89に写り込んだからである。遮蔽領域3−5は、プレイヤ25の左足の陰になっている部分に対応し、遮蔽領域3−6は、プレイヤ25の右足の陰になっている部分に対応する。
【0105】
ここで、この例では、矩形範囲#1は、再帰反射シート17−1の像1−0,1−1及び1−2を1つの像と考えたときの最小X座標bx1、最大X座標ex1、最小Y座標by1、及び最大Y座標ey1で定義される。矩形範囲#2は、再帰反射シート17−2の像2−0,2−1及び2−2を1つの像と考えたときの最小X座標bx2、最大X座標ex2、最小Y座標by2、及び最大Y座標ey2で定義される。矩形範囲#3は、再帰反射シート17−3の像3−0,3−1及び3−2を1つの像と考えたときの最小X座標bx3、最大X座標ex3、最小Y座標by3、及び最大Y座標ey3で定義される。矩形範囲#4は、起動時と同じである。
【0106】
さて、撮像ユニット7のMCU33は、システム起動中、つまり、プレイ中において、次の処理を実行する。
【0107】
MCU33は、矩形範囲#1をスキャンして、遮蔽領域1−5及び1−6を検出する。具体的には、MCU33は、矩形範囲(bx1≦X≦ex1、by1≦Y≦ey1)において、輝度値が0の画素であり、しかも、輝度値が1の画素の隣に位置する画素のX座標(「隣接X座標」と呼ぶ。)であって、かつ、矩形範囲(by1≦Y≦ey1)において、X座標が隣接X座標と同じである全ての画素の輝度値が0である場合の隣接X座標、つまり、X座標sbx0,sex0,sbx1及びsex1を検出し、内部のメモリに格納する。なお、輝度値が1の画素は、写りこんだ像の一部であり、輝度値が0の画素は、像の一部ではなく、何も写りこんでいないことを意味する。
【0108】
同様にして、MCU33は、矩形範囲#2をスキャンして、遮蔽領域2−5及び2−6、つまり、X座標sbx2,sex2,sbx3及びsex3を検出し、内部のメモリに格納する。また、同様にして、MCU33は、矩形範囲#3をスキャンして、遮蔽領域3−5及び3−6、つまり、X座標sbx4,sex4,sbx5及びsex5を検出し、内部のメモリに格納する。
【0109】
また、MCU33は、次式により、遮蔽領域1−5の座標(X15,Y15)、遮蔽領域1−6の座標(X16,Y16)、遮蔽領域2−5の座標(X25,Y25)、遮蔽領域2−6の座標(X26,Y26)、及び、遮蔽領域3−5の座標(X35,Y35)、遮蔽領域3−6の座標(X36,Y36)を算出し、内部のメモリに格納する。
【0110】
X15=(sbx0+sex0)/2
Y15=(by1+ey1)/2
X16=(sbx1+sex1)/2
Y16=(by1+ey1)/2
X25=(sbx2+sex2)/2
Y25=(by2+ey2)/2
X26=(sbx3+sex3)/2
Y26=(by2+ey2)/2
X35=(sbx4+sex4)/2
Y35=(by3+ey3)/2
X36=(sbx5+sex5)/2
Y36=(by3+ey3)/2
【0111】
さらに、MCU33は、MCU33は、矩形範囲#1に、2つの遮蔽領域1−5及び1−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域1−5及び1−6が存在する場合、遮蔽領域1−5がプレイヤ25の左足に相当すると判断し、遮蔽領域1−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0112】
MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在すると判断した場合、後述する第1左右決定処理を実行する。
【0113】
また、MCU33は、2つの遮蔽領域1−5及び1−6が存在しないと判断した場合、矩形範囲#2に、2つの遮蔽領域2−5及び2−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域2−5及び2−6が存在する場合、遮蔽領域2−5がプレイヤ25の左足に相当すると判断し、遮蔽領域2−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0114】
MCU33は、矩形範囲#2に1つの遮蔽領域のみが存在すると判断した場合、後述する第1左右決定処理を実行する。
【0115】
また、MCU33は、2つの遮蔽領域2−5及び2−6が存在しないと判断した場合、矩形範囲#3に、2つの遮蔽領域3−5及び3−6が存在するか否かを判断する。そして、MCU33は、2つの遮蔽領域3−5及び3−6が存在する場合、遮蔽領域3−5がプレイヤ25の左足に相当すると判断し、遮蔽領域3−6がプレイヤ25の右足に相当すると判断して、結果を内部のメモリに格納する。
【0116】
さらに、MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在し、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、又は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に遮蔽領域が存在せず、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、後述する第2左右決定処理を実行する。
【0117】
上記の第1左右決定処理を説明する。MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在すると判断した場合、その遮蔽領域のX座標が、遮蔽領域2−6のX座標X26よりも遮蔽領域2−5のX座標X25に近い場合、矩形範囲#1の遮蔽領域を遮蔽領域1−5とみなし、プレイヤ25の左足に相当すると判断し、遮蔽領域2−6をプレイヤ25の右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#1の遮蔽領域のX座標が、遮蔽領域2−5のX座標X25よりも遮蔽領域2−6のX座標X26に近い場合、矩形範囲#1の遮蔽領域を遮蔽領域1−6とみなし、プレイヤ25の右足に相当すると判断し、遮蔽領域2−5をプレイヤ25の左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0118】
また、MCU33は、矩形範囲#2に1つの遮蔽領域のみが存在すると判断した場合、その遮蔽領域のX座標が、遮蔽領域3−6のX座標X36よりも遮蔽領域3−5のX座標X35に近い場合、矩形範囲#2の遮蔽領域を遮蔽領域2−5とみなし、プレイヤ25の左足に相当すると判断し、遮蔽領域3−6をプレイヤ25の右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#2の遮蔽領域のX座標が、遮蔽領域3−5のX座標X35よりも遮蔽領域3−6のX座標X36に近い場合、矩形範囲#2の遮蔽領域を遮蔽領域2−6とみなし、プレイヤ25の右足に相当すると判断し、遮蔽領域3−5をプレイヤ25の左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0119】
上記の第2左右決定処理を説明する。MCU33は、矩形範囲#1に1つの遮蔽領域のみが存在し、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、矩形範囲#1の遮蔽領域のX方向の長さA((sex0−sbx0)又は(sex1−sbx1)であるが、この段階では、どちらに相当するか不明である。)と矩形範囲#2の遮蔽領域のX方向の長さB((sex2−sbx2)又は(sex3−sbx3)であるが、この段階では、どちらに相当するか不明である。)と、を比較する。そして、MCU33は、値Bが値(2*A)より大きい場合、プレイヤ25の片足が再帰反射シート17−1に置かれ、他方の片足が再帰反射シート17−2に置かれているとみなす(この時点で左右は不明)。
【0120】
そして、MCU33は、矩形範囲#2の遮蔽領域をY軸に平行な線(つまり、X座標が当該遮蔽領域のX座標に常に等しい直線)で二分し、得られたそれぞれの領域(左領域及び右領域と呼ぶ。)のX座標を算出する。具体的には、MCU33は、矩形範囲#2の遮蔽領域のX座標と、当該遮蔽領域の左端座標(sbx2又はsbx3であるが、この段階では、どちらに相当するか不明である。)と、の平均値を求め、これを左領域のX座標とする。また、MCU33は、矩形範囲#2の遮蔽領域のX座標と、当該遮蔽領域の右端座標(sex2又はsex3であるが、この段階では、どちらに相当するか不明である。)と、の平均値を求め、これを右領域のX座標とする。
【0121】
そして、MCU33は、矩形範囲#1の遮蔽領域のX座標が、右領域のX座標より左領域のX座標に近い場合、矩形範囲#1の遮蔽領域を領域1−5とみなし、プレイヤ25の左足に相当すると判断し、矩形範囲#2の遮蔽領域をプレイヤの右足に相当すると判断して、判断結果を内部のメモリに格納する。一方、MCU33は、矩形範囲#1の遮蔽領域のX座標が、左領域のX座標より右領域のX座標に近い場合、矩形範囲#1の当該遮蔽領域を領域1−6とみなし、プレイヤ25の右足に相当すると判断し、矩形範囲#2の遮蔽領域をプレイヤの左足に相当すると判断して、判断結果を内部のメモリに格納する。
【0122】
また、MCU33は、値Bが値(2*A)と等しいか小さい場合、左右が不定と判断して、判断結果を内部のメモリに格納する。
【0123】
さらに、MCU33は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に1つの遮蔽領域のみが存在し、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、上記と同様にして、左右及び不定の判断を行う。また、MCU33は、矩形範囲#1に遮蔽領域が存在せず、かつ、矩形範囲#2に遮蔽領域が存在せず、かつ、矩形範囲#3に1つの遮蔽領域のみが存在すると判断した場合、不定の判断を行う。
【0124】
さて、マスタプロセッサ41は、ビデオ同期信号に同期して映像を更新する。ビデオ同期信号は、例えば、1/60秒ごとに生成される。ビデオ同期信号の生成から次のビデオ同期信号の生成までの期間をフレーム期間と呼ぶ。これらについては、スレイブプロセッサ45についても同じである。
【0125】
マスタプロセッサ41は、ビデオ同期信号が生成される度に、MCU33にリクエスト信号を送信する。MCU33は、このリクエスト信号に応答して、撮像ユニット7への撮影指示及び上記の各種処理を実行する。従って、MCU33は、1フレーム期間に、撮影処理及び上記の各種処理を完了して、次のリクエスト信号を待つ。
【0126】
ここで、スクリーン15及びテレビジョンモニタ5に映し出されるゲーム内容については、後で詳述するが、次の説明の関連部分を簡単に説明する。後述する図6(b)に示すように、2つのボールオブジェクト81LP及び81RPが、スクリーン15に投影される。この場合、投影されたボールオブジェクト81LPの左端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上のX座標(左ボール左端X座標と呼ぶ。)と、投影されたボールオブジェクト81LPの右端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上でのX座標(左ボール右端X座標と呼ぶ。)と、を予め算出し、メモリ30に格納しておく。同様に、投影されたボールオブジェクト81RPの左端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上のX座標(右ボール左端X座標と呼ぶ。)と、投影されたボールオブジェクト81RPの右端から再帰反射シート17−1に下ろした垂線の足に対応する差分画像89上でのX座標(右ボール右端X座標と呼ぶ。)と、を予め算出し、メモリ30に格納しておく。
【0127】
さて、MCU33は、プレイヤ25がスクリーン15に投影されたボールオブジェクトに対してキック動作を行ったか否かを判断する。具体的には、次の通りである。MCU33は、再帰反射シート19−1及び19−2に対応する像92−1及び92−2の双方が検出されなかった場合であって、かつ、差分画像89上の全ての矩形範囲#1〜#3に遮蔽領域が検出されなかった場合、内部のメモリに格納された第1キックフラグをオンにする。
【0128】
MCU33は、第1キックフラグがオンの場合、プレイヤ25が再帰反射シート19−1及び19−2にそれぞれ左右の足を置いていると判断して、プレイヤの準備が整ったとみなす。再帰反射シート19−1及び19−2が左右の足に隠れている場合、差分画像89に像92−1及び92−2が検出されないからである。ただし、プレイヤ25の両足が、再帰反射シート17−1,17−2又は17−3にある場合にも、再帰反射シート19−1及び19−2が陰になって、像92−1及び92−1が検出されない場合もある。このため、全ての矩形範囲#1〜#3に遮蔽領域が検出されなかったこと、つまり、プレイヤ25が、再帰反射シート17−1,17−2及び17−3のいずれにも足を置いていないことを、第1キックフラグをオンにするための条件の一つとしている。
【0129】
このように、再帰反射シート19−1及び19−2は、プレイヤ25が準備が整ったことを制御装置3に通知するために使用される。このため、再帰反射シート19−1及び19−2は、プレイヤ25から制御装置3へのコマンド入力のための再帰反射シートと言える。
【0130】
また、MCU33は、第1キックフラグがオンになった後、差分画像89上に少なくとも1つの遮蔽領域が検出されたと判断した場合、内部のメモリに格納した第2キックフラグをオンにする。
【0131】
さらに、MCU33は、再帰反射シート17−2にプレイヤ25の両足が置かれているか否か、つまり、差分画像89中の矩形範囲#2に2つの遮蔽領域(2−5及び2−6)が検出されたか否かを判断する。そして、MCU33は、矩形範囲#2に2つの遮蔽領域が検出されたと判断した場合、第3キックフラグをオンにする。
【0132】
そして、さらに、MCU33は、矩形範囲#1において、2つの遮蔽領域が検出されない状態から、1つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第1パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に両足が位置している状態から、再帰反射シート17−1にいずれか一方の足が位置する状態に遷移したと判断した場合、第4キックフラグをオンにする。
【0133】
また、MCU33は、矩形範囲#1において、1つの遮蔽領域が検出された状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第2パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−1に一方の足が位置している状態から、再帰反射シート17−1に他方の足が位置する状態に遷移したと判断した場合、第4キックラグをオンにする。
【0134】
さらに、MCU33は、矩形範囲#1において、遮蔽領域が検出されない状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第3パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に両足が位置している状態から、再帰反射シート17−1に両足が位置する状態に遷移したと判断した場合、第4キックラグをオンにする。
【0135】
さらに、MCU33は、矩形範囲#1に遮蔽領域が検出されない状態であって、矩形範囲#2において、1つの遮蔽領域が検出された状態から、2つの遮蔽領域が検出された状態へ遷移したと判断し、かつ、第3キックフラグがオンの場合、第4キックフラグをオンにする(「第4パターンのキック」と呼ぶ。)。つまり、MCU33は、再帰反射シート17−2に片足が位置している状態から、再帰反射シート17−2に両足が位置する状態に遷移したと判断した場合、第4キックフラグをオンにする。
【0136】
第4キックフラグがオンの時、MCU33は、第5キックフラグに関する処理を実行する。具体的には次の通りである。MCU33は、左の遮蔽領域のうち先端の遮蔽領域(左先端遮蔽領域と呼ぶ。)のX座標及び右の遮蔽領域のうち先端の遮蔽領域(右先端遮蔽領域と呼ぶ。)のX座標に基づいて、プレイヤ25がスクリーン15に投影されたボールオブジェクトに対して蹴る動作を行ったか否かを判断する。この場合、「左の先端」とは、左の遮蔽領域のうち、Y座標が最も小さい遮蔽領域を指し(図5の例では、左の遮蔽領域1−5,2−5及び3−5のうち、Y座標が最も小さい遮蔽領域1−5)、「右の先端」とは、右の遮蔽領域のうち、Y座標が最も小さい遮蔽領域を指す(図5の例では、右の遮蔽領域1−6,2−6及び3−6のうち、Y座標が最も小さい遮蔽領域1−6)。
【0137】
つまり、MCU33は、左先端遮蔽領域のX座標が、左ボール左端X座標と左ボール右端X座標との間(左キックレンジと呼ぶ。)に位置する場合、プレイヤ25がボールオブジェクト81LPを適切に蹴る動作を行ったとみなして、第5キックフラグを、ボールオブジェクト81LPが蹴られたことを示す01hに設定する。また、MCU33は、左先端遮蔽領域のX座標が左キックレンジに入っていない場合でも、右先端遮蔽領域のX座標が左キックレンジに入っている場合は、プレイヤ25がボールオブジェクト81LPを適切に蹴る動作を行ったとみなして、第5キックフラグに01hを設定する。
【0138】
また、MCU33は、左先端遮蔽領域のX座標が、右ボール左端X座標と右ボール右端X座標との間(右キックレンジと呼ぶ。)に位置する場合、プレイヤ25がボールオブジェクト81RPを適切に蹴る動作を行ったとみなして、第5キックフラグを、ボールオブジェクト81RPが蹴られたことを示す10hに設定する。また、MCU33は、左先端遮蔽領域のX座標が右キックレンジに入っていない場合でも、右先端遮蔽領域のX座標が右キックレンジに入っている場合は、プレイヤ25がボールオブジェクト81RPを適切に蹴る動作を行ったとみなして、第5キックフラグを10hに設定する。
【0139】
さらに、左先端遮蔽領域のX座標及び右先端遮蔽のX座標のいずれもが、左ヒットレンジに入っておらず、かつ、右ヒットレンジにも入っていない場合は、MCU33は、第5キックフラグを、ボールオブジェクト81LP及び81RPが蹴られなかったことを示す00hに設定する。
【0140】
さて、MCU33は、マスタプロセッサ41からの上記のリクエスト信号に応答して、第1キックフラグがオンであることを示す信号(第1コマンドと呼ぶ。)、第2キックフラグ又は第3キックフラグがオンであることを示す信号(第2コマンドと呼ぶ。)、第5キックフラグがオン(01h又は10hの場合)であることを示す信号(第3コマンドと呼ぶ。)、又は、それらのいずれでもないことを示す信号(第0コマンド)をマスタプロセッサ41に出力する。
【0141】
なお、MCU33は、第2コマンド及び/又は第3コマンドを送信する場合、左先端遮蔽領域のXY座標及び右先端遮蔽領域のXY座標を当該コマンドに付加して送信する。
【0142】
さて、次に、スクリーン15及びテレビジョンモニタ5に映し出されるゲームの内容を説明する。
【0143】
図6(a)は、図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答前)。図6(b)は、図1のスクリーン15に映し出される画面71Pの例示図である(回答前)である。図7(a)は、図1のテレビジョンモニタ5に映し出される画面71Tの例示図である(回答後)。図7(b)は、図1のスクリーン15に映し出される画面71Pの例示図である(回答後)である。
【0144】
図6(b)を参照して、マスタプロセッサ41は、MCU33から第1コマンドを受信した場合、画面71Pを表すビデオ信号VD1を生成して、プロジェクタ9に与える。すると、プロジェクタ9は、ビデオ信号VD1に基づいて、画面71Pの映像をスクリーン15に投影する。この画面71Pは、出題オブジェクト79L及び79R、並びに、ボールオブジェクト81LP及び81RPを含む。
【0145】
ボールオブジェクト81LP及び81RPは、再帰反射シート17−1に沿って、所定距離だけ離れて配置されるように、画面71P中に配置される。また、出題オブジェクト79Lは、ボールオブジェクト81LPの直上に配置される。出題オブジェクト79Rは、ボールオブジェクト81RPの直上に配置される。
【0146】
図6(a)を参照して、マスタプロセッサ41は、MCU33から第1コマンドを受信した場合、スレイブプロセッサ45に対して、画面71Tの生成指示を出す。スレイブプロセッサ45は、この生成指示を受けて、画面71Tを表すビデオ信号VD2を生成して、テレビジョンモニタ5に与える。すると、テレビジョンモニタ5は、ビデオ信号VD2に基づいて、画面71Tの映像を表示する。この画面71Tは、ゴールキーパーオブジェクト73、ゴールオブジェクト75及び出題領域77を含む。スレイブプロセッサ45は、出題テーブルの中からランダムに選択した英単語を出題領域77に表示する。
【0147】
プレイヤ25は、画面71Pの出題オブジェクト79L及び79Rのうち、画面71Tの出題領域77の英単語に対応する出題オブジェクトの直下に位置するボールオブジェクト81LP又は81RPを蹴る動作を行う。
【0148】
マスタプロセッサ41は、MCU33からの第3コマンドにより、プレイヤ25がボールオブジェクト81LP又は81RPを蹴る動作を行ったこと、及び、ボールオブジェクト81LP及び81RPのうち、どのボールオブジェクトに対して蹴る動作を行ったか、を知ることができる。
【0149】
マスタプロセッサ41は、第3コマンドに基づいて、プレイヤ25が正解に対応するボールオブジェクトを蹴る動作を行ったと判断した場合、つまり、この例では、出題領域77の英単語が「Apple」であるので、プレイヤ25が、「りんご」を表す出題オブジェクト79Lの直下のボールオブジェクト81LPを蹴る動作を行ったと判断した場合、図示は省略したが、ボールオブジェクト81LPがスクリーン15の上側に向かって飛んでいく映像を表すビデオ信号VD1を生成してプロジェクタ9に与える。これに応じて、プロジェクタ9は、ビデオ信号VD1に対応する映像をスクリーン15に投影する。また、この場合、図7(b)に示すように、マスタプロセッサ41は、映像中のボールオブジェクト81LPが静止していた場所に、正解であることを示す結果オブジェクト83を配置する。
【0150】
また、マスタプロセッサ41は、ボールオブジェクト81LPがスクリーン15の上端に接した時、スレイブプロセッサ45に対して、ボールオブジェクト81LTの生成指示を出す。この生成指示を受けて、図7(a)に示すように、スレイブプロセッサ45は、ボールオブジェクト81LTが画面71Tの下端から出現してゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がボールオブジェクト81LTに向かってジャンプするがジャンプのタイミングがずれてボールオブジェクト81LTのキャッチに失敗しゴールする映像を表すビデオ信号VD2を生成してテレビジョンモニタ5に与える。これに応じて、テレビジョンモニタ5は、ビデオ信号VD2に対応する映像を表示する。この場合、プレイヤ25が見たときに、画面71Pのボールオブジェクト81LPと画面71Tのボールオブジェクト81LTとの軌道が、滑らかに接続するように、プロセッサ41及び45は、それぞれ画面71T及び71Pを生成する。
【0151】
このような画面71T及び71Pを生成して表示することにより、プレイヤ25は、正解であることを認識でき、また、あたかもボールを蹴ってゴールしたかのような爽快さを感じることができる。
【0152】
また、マスタプロセッサ41は、プレイヤ25が正解を出したと判断した場合、ボールオブジェクト81LPの静止位置からの移動と同時に、爽快にボールを蹴ったような音を表すオーディオ信号AU1を生成する。一方、スレイブプロセッサ45は、ボールオブジェクト81LTがゴールオブジェクト75に到達した時に、あたかもボールがゴールネットに捕らえられたかのような音を表すオーディオ信号AU2を生成する。
【0153】
一方、図示は省略したが、マスタプロセッサ41は、第3コマンドに基づいて、プレイヤ25が不正解に対応するボールオブジェクトを蹴る動作を行なったと判断した場合、つまり、この例では、出題領域77の英単語が「Apple」であるので、プレイヤ25が、「りんご」を表す出題オブジェクト79Lの直下のボールオブジェクト81LPではなく、「バナナ」を表す出題オブジェクト79Rの直下のボールオブジェクト81RPを蹴る動作を行ったと判断した場合、ボールオブジェクト81RPがスクリーン15の上側に向かって飛んでいく映像を表すビデオ信号VD1を生成してプロジェクタ9に与える。これに応じて、プロジェクタ9は、ビデオ信号VD1に対応する映像をスクリーン15に投影する。また、この場合、マスタプロセッサ41は、映像中のボールオブジェクト81RPが位置していた場所に、不正解であることを示す結果オブジェクトを配置する。
【0154】
また、マスタプロセッサ41は、ボールオブジェクト81RPがスクリーン15の上端に接した時、スレイブプロセッサ45に対して、ボールオブジェクト81RTの生成指示を出す。この生成指示を受けて、スレイブプロセッサ45は、ボールオブジェクト81RTが画面71Tの下端から出現してゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がボールオブジェクト81RPに向かってタイミング良くジャンプし、ボールオブジェクト81RTをキャッチする映像を表すビデオ信号VD2を生成してテレビジョンモニタ5に与える。これに応じて、テレビジョンモニタ5は、ビデオ信号VD2に対応する映像を表示する。この場合、プレイヤ25が見たときに、画面71Pのボールオブジェクト81RPと画面71Tのボールオブジェクト81RTとの軌道が、滑らかに接続するように、プロセッサ41及び45は、それぞれ画面71T及び71Pを生成する。
【0155】
このような画面71T及び71Pを生成して表示することにより、プレイヤ25は、不正解であることを認識でき、また、あたかもボールを蹴ってゴールできなかったかのような残念さを感じることができる。
【0156】
また、マスタプロセッサ41は、プレイヤ25が不正解を出したと判断した場合、ボールオブジェクト81RPの静止位置からの移動と同時に、爽快にボールを蹴ったような音を表すオーディオ信号AU1を生成する。一方、スレイブプロセッサ45は、ボールオブジェクト81RTがゴールキーパーオブジェクト73にキャッチされた時に、あたかもボールがキャッチされたかのような音を表すオーディオ信号AU2を生成する。
【0157】
ところで、図示は省略したが、図6(a)の画面71T及び図6(b)の画面71Pが生成される前では、画面71Tの出題領域77には、英単語は表示されない。また、画面71Pには、出題オブジェクト79L及び79R並びにボールオブジェクト81LP及び81RPは表示されない。ただし、再帰反射シート19−1に重なるように左足裏画像及び再帰反射シート19−2に重なるように右足裏画像を含む画面71Pが生成され投影される。
【0158】
そして、マスタプロセッサ41は、第1コマンドを受信すると、図6(b)の画面71Pを表すビデオ信号VD1を生成する。同時に、マスタプロセッサ41は、スレイブプロセッサ45に対して、図6(a)の画面71Tの生成指示を出す。この生成指示を受けて、スレイブプロセッサ45は、当該画面71Tを表すビデオ信号VD2を生成する。
【0159】
さて、次に、差分画像89のスキャンの詳細を説明する。この場合、再帰反射シート17−1〜17−3、並びに、再帰反射シート19−1及び19−2を1つとみなしたときの再帰反射シート17−4を一般的に表す場合、再帰反射シート17−k(k=1,2,3,4)と表記する。再帰反射シート17−1〜17−4に対応する矩形範囲#1〜#4を一般的に表す場合、矩形範囲#k(k=1,2,3,4)と表記する。
【0160】
システム起動時において、矩形範囲#kの最小X座標、最大X座標、最小Y座標、及び最大Y座標を、それぞれ、Bx[k][m]、Ex[k][m]、By[k]、及びEy[k](k=1,2,3,4)と表記する。要素番号mは、1つの矩形範囲#kに含まれる像を表す。従って、システム起動時では、再帰反射シート17−kは踏まれておらず、陰にもなっていないので、m=0、である。
【0161】
システム起動中において、矩形範囲#kの最小X座標、最大X座標、最小Y座標、及び最大Y座標を、それぞれ、bx[k][m]、ex[k][m]、by[k]、及びey[k](k=1,2,3,4)と表記する。要素番号mは、1つの矩形範囲#kに含まれる像を表す。従って、1つの矩形範囲#kに含まれる像が1つの場合、つまり、再帰反射シート17−kが踏まれていない場合又は陰になっていない場合(遮蔽領域がない場合)はm=0、1つの矩形範囲#kに含まれる像が2つの場合、つまり、再帰反射シート17−kが片足で踏まれている場合又は片足の陰になっている場合(遮蔽領域が1つの場合)はm=0,1、1つの矩形範囲#kに含まれる像が3つの場合、つまり、再帰反射シート17−kが両足で踏まれている場合又は両足の陰になっている場合(遮蔽領域が2つの場合)はm=0,1,2、である。
【0162】
踏まれていない時(又は陰になっていない時)の再帰反射シート17−kの像を、像90−k(k=1,2,3,4)と表記する。再帰反射シート17−kが片足で踏まれており(又は片足の陰になっており)、1つの矩形範囲#kに含まれる像が2つの場合、左から、像k−0、像k−1と表記し、その時の遮蔽領域を遮蔽領域k−5と表記する。再帰反射シート17−kが両足で踏まれており(又は両足の陰になっており)、1つの矩形範囲#kに含まれる像が3つの場合、左から、像k−0、像k−1、像k−2と表記し、その時の2つの遮蔽領域を遮蔽領域k−5,k−6と表記する。
【0163】
図23は、システム起動時における差分画像89のスキャンの詳細な説明図である。図23を参照して、MCU33は、X座標をインクリメントしながら、X=0〜63まで、差分画像89をスキャンする(水平スキャン)。そして、MCU33は、Y座標を1つインクリメントする。そして、MCU33は、水平スキャンを実行する。このように、MCU33は、Y座標をインクリメントしながらY=63まで水平スキャンを実行する。
【0164】
なお、差分画像89は2値化後のものであり、各画素値は、配列D[x][y]に代入されているものとする。要素番号xは差分画像89のX座標に対応し、要素番号yは、差分画像89のY座標に対応する。
【0165】
スキャンの際、配列D[x][y]に「1」が代入されている場合(つまり、再帰反射シートの像を構成する画素である場合)、配列V[y]及びH[x]に「1」を代入する。一旦、「1」が代入された配列V[y]及びH[x]は「1」が維持される。
【0166】
そして、64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列V[y]のうち、要素番号yが一番小さい要素番号yが、矩形範囲#kを定義する最小Y座標By[k]であり、要素番号yが一番大きい要素番号yが、矩形範囲#kを定義する最大Y座標Ey[k]である。また、64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列H[x]のうち、要素番号xが一番小さい要素番号xが、矩形範囲#kを定義する最小X座標Bx[k][0]であり、要素番号xが一番大きい要素番号xが、矩形範囲#kを定義する最大X座標Ex[k][0]である。ただし、矩形範囲#kは、再帰反射シート17−kごとに検出される。図23では、簡略化のため、1つの再帰反射シート17−kに対応する1つの像90−kだけを記載している。
【0167】
図24は、システム起動中における差分画像89のスキャンの詳細な説明図である。図24を参照して、MCU33は、起動時と同様に、Y座標をインクリメントしながらY=63まで水平スキャンを実行する。この場合、配列V[y]及びH[x]へ値を代入する際のアルゴリズムは、起動時と同じである。
【0168】
64×64画素のスキャンが完了したときにおいて、「1」が代入されている配列V[y]のうち、要素番号yが一番小さい要素番号yが、矩形範囲#kを定義する最小Y座標by[k]であり、要素番号yが一番大きい要素番号yが、矩形範囲#kを定義する最大Y座標ey[k]である。
【0169】
また、64×64画素のスキャンが完了したときにおいて、「1」が代入されている左端の配列H[x]のうち、要素番号xが一番小さい要素番号xが、左端の像k−0の最小X座標bx[k][0]であり、要素番号xが一番大きい要素番号xが、左端の像k−0の最大X座標ex[k][0]である。64×64画素のスキャンが完了したときにおいて、「1」が代入されている中央の配列H[x]のうち、要素番号xが一番小さい要素番号xが、中央の像k−1の最小X座標bx[k][1]であり、要素番号xが一番大きい要素番号xが、中央の像k−1の最大X座標ex[k][1]である。64×64画素のスキャンが完了したときにおいて、「1」が代入されている右端の配列H[x]のうち、要素番号xが一番小さい要素番号xが、右端の像k−2の最小X座標bx[k][2]であり、要素番号xが一番大きい要素番号xが、右端の像k−2の最大X座標ex[k][2]である。
【0170】
ただし、これらの処理は、再帰反射シート17−kごとに実行されるものである。図23では、簡略化のため、1つの再帰反射シート17−kに対応する像k−0〜k−2だけを記載している。なお、図24では、1つの矩形範囲#kに3つの像が存在する例を挙げたが、像が1つ、あるいは、2つの場合もある。また、この例では、矩形範囲#kの最小X座標は、像k−0の最小X座標bx[k][0]であり、最大X座標は、像k−2の最大X座標ex[k][2]である。
【0171】
なお、起動時と起動中とで、矩形範囲#kの大きさは変化することがある。なぜなら、プレイヤ25が、再帰反射シート17−kの左端又は右端を踏んでいたり、陰になっていたりする場合もあるからである。
【0172】
図8は、図2のMCU33による撮影処理の流れの一例を示すフローチャートである。図8を参照して、ステップS1001において、MCU33は、イメージセンサ31に赤外発光ダイオード23を点灯させる。ステップS1003にて、MCU33は、イメージセンサ31に赤外光点灯時の撮影を実行させる。ステップS1005にて、MCU33は、イメージセンサ31に赤外発光ダイオード23を消灯させる。ステップS1007にて、MCU33は、イメージセンサ31に赤外光消灯時の撮影を実行させる。ステップS1009にて、MCU33は、イメージセンサ31に、赤外光点灯時の画像と赤外光消灯時の画像との差分画像(カメラ画像)を生成及び出力させる。ステップS1011にて、MCU33は、イメージセンサ31が生成した差分画像の各画素(輝度値)を所定の閾値と比較して、2値化し、配列D[x][y]に代入する。なお、画素が閾値を超えていた場合、再帰反射シートの像を構成する画素とみなして「1」を設定し、それ以外は再帰反射シートの像が写っていないとみなして「0」を設定する。要素番号xは差分画像のX座標に対応し、要素番号yは、差分画像のY座標に対応する。
【0173】
ステップS1013にて、MCU33は、マスタプロセッサ41からリクエスト信号を受信した場合ステップS1001に進み、受信していない場合ステップS1013に戻る。
【0174】
以上のようにして、MCU33の制御に応答して、イメージセンサ31は、赤外光の点灯時及び消灯時の撮影、つまり、ストロボ撮影を実行する。また、以上の制御により、赤外発光ダイオード23は、ストロボスコープとして機能する。
【0175】
図9は、図2のMCU33による起動時検出処理の流れの一例を示すフローチャートである。図9を参照して、ステップS1にて、MCU33は、起動時に必要な初期設定を実行する。ステップS3にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kの最小Y座標及び最大Y座標(垂直端点)を検出する処理を実行する。ステップS5にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kの最小X座標及び最大X座標(水平端点)を検出する処理を実行する。以上のステップS3及びS5によって、矩形範囲#kが検出される。
【0176】
図10は、図9のステップS3の垂直端点検出処理の流れの一例を示すフローチャートである。図10を参照して、ステップS11にて、MCU33は、変数x、y、ND、並びに配列V[]に0をセットする。変数x及びyのそれぞれは、差分画像のX座標及びY座標に相当する。
【0177】
ステップS13にて、MCU33は、2値化された差分画像を構成する配列D[x][y]の値が1か否かを判断し、1の場合ステップS15に進み、それ以外の場合ステップS17に進む。ステップS15では、MCU33は、変数V[y]に1を代入して、ステップS21に進む。一方、ステップS17では、MCU33は、変数V[y]にすでに1が格納されているか否か判断し、格納されている場合ステップS21に進み、1が格納されていない場合、ステップS19に進む。ステップS19では、MCU33は、変数V[y]に0を代入してステップS21に進む。
【0178】
ステップS21では、MCU33は、変数xを1つインクリメントする。ステップS23にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS25に進み、それ以外はステップS13に戻る。
【0179】
ステップS25にて、MCU33は、変数yを1つインクリメントし、変数xに0を代入する。ステップS27にて、MCU33は、変数yの値が64か否かを判断し、64の場合(全水平スキャン完了)ステップS29に進み、それ以外はステップS13に戻る。
【0180】
ステップS29にて、MCU33は、変数y及びk、並びに、配列By[]及びEy[]に0をセットする。ステップS31にて、MCU33は、カウンタkを1つインクリメントする。
【0181】
カウンタkの値は、上述した符号kと同じ意味を有する。この点は、後述のフローチャートについても同じである。
【0182】
ステップS33にて、MCU33は、変数V[y]の値が1か否かを判断し、1の場合ステップS35に進み、それ以外の場合ステップS39に進む。
【0183】
ステップS35では、MCU33は、変数V[y−1]の値が0か否かを判断し、0の場合ステップS37に進み、それ以外の場合ステップS45に進む。ステップS37では、MCU33は、変数By[k]にyの値を代入してステップS45に進む。一方、ステップS39では、MCU33は、変数V[y−1]の値が1か否かを判断し、1の場合ステップS41に進み、それ以外の場合ステップS45に進む。ステップS41では、MCU33は、変数Ey[k]にy−1を代入する。ステップS43にて、MCU33は、カウンタkを1つインクリメントしてステップS45に進む。
【0184】
ステップS45では、MCU33は、変数yを1つインクリメントする。ステップS47にて、MCU33は、変数yの値が64か否かを判断し、64の場合ステップS49に進み、それ以外はステップS33に戻る。ステップS49では、MCU33は、変数NDに変数kの値を代入してリターンする。
【0185】
配列By[k]は、矩形範囲#kの最小Y座標であり、配列Ey[k]は、矩形範囲#kの最大Y座標である。従って、変数NDは、検出された矩形範囲#kの数を表す。矩形範囲は最大で4つ検出される。ただし、再帰反射シート19−1及び19−2のそれぞれに足が置かれている場合は、3つの矩形範囲が検出される。
【0186】
図11は、図9のステップS5の水平端点検出処理の流れの一例を示すフローチャートである。図11を参照して、ステップS101にて、MCU33は、変数k、q、及び、配列R[]に0をセットする。ステップS103にて、MCU33は、カウンタkを1つインクリメントする。ステップS105にて、MCU33は、変数x及び配列H[]に0を代入し、また、変数yに配列By[k]の値を代入する。
【0187】
ステップS107にて、MCU33は、差分画像を構成する配列D[x][y]が1か否かを判断し、1の場合ステップS109に進み、それ以外の場合ステップS111に進む。ステップS109では、MCU33は、変数H[x]に1を代入して、ステップS115に進む。一方、ステップS111では、MCU33は、変数H[x]にすでに1が格納されているか否か判断し、格納されている場合ステップS115に進み、1が格納されていない場合ステップS113に進む。ステップS113では、MCU33は、変数H[x]に0を代入してステップS115に進む。
【0188】
ステップS115では、MCU33は、変数xを1つインクリメントする。ステップS117にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS119に進み、それ以外はステップS107に戻る。
【0189】
ステップS119にて、MCU33は、変数yを1つインクリメントし、また、変数xに0を代入する。ステップS121にて、MCU33は、変数yの値が、配列Ey[k+1]の値と等しいか否かを判断し、等しい場合ステップS123に進み、それ以外はステップS107に戻る。
【0190】
ステップS123では、MCU33は、変数x及びm、並びに、配列Bx[k][]及びEx[k][]に0を代入する。ステップS125では、MCU33は、変数H[x]の値が1か否かを判断し、1の場合ステップS127に進み、それ以外の場合ステップS131に進む。ステップS127では、MCU33は、配列H[x−1]の値が0か否かを判断し、0の場合ステップS129に進み、それ以外はステップS137に進む。ステップS129では、MCU33は、配列Bx[k][m]に変数xの値を代入する。一方、ステップS131では、MCU33は、配列H[y−1]の値が1か否かを判断し、1の場合ステップS133に進み、それ以外はステップS137に進む。ステップS133では、MCU33は、配列Ex[k][m]にx−1を代入する。ステップS135にて、MCU33は、カウンタmを1つインクリメントしてステップS137に進む。
【0191】
カウンタmの値は、上述した符号mと同じ意味を有する。この点は、後述のフローチャートについても同じである。
【0192】
ステップS137では、MCU33は、変数xの値を1つインクリメントする。ステップS139にて、MCU33は、変数xの値が64か否かを判断し、64の場合(1水平スキャン完了)ステップS141に進み、それ以外はステップS125に戻る。
【0193】
ステップS141では、MCU33は、配列R[k]に変数mの値を代入する。配列R[k]の値は、1つの矩形範囲#kに含まれる像の数を示す。ステップS143にて、MCU33は、変数R[k]が1か否かを判断し、1の場合ステップS145に進み、それ以外はステップS147に進む。ステップS145では、MCU33は、変数qの値を1つインクリメントする。ステップS147にて、MCU33は、変数kの値が3か否かを判断し、3の場合リターンし、それ以外はステップS103に戻る。なぜなら、像92−1及び92−2に対応する矩形範囲#4の最小X座標及び最大Y座標は、後の処理で使用しないからである。
【0194】
ここで、ステップS147で肯定判断がされた後の変数qの値が3の場合、3つの矩形範囲#1〜#3のそれぞれに、1つの像だけが含まれることを意味する。つまり、再帰反射シート17−1〜17−3のいずれにも、プレイヤ25がのっておらず、また、陰にもなっていないことを意味する。
【0195】
また、配列Bx[k][m]の値は、矩形範囲#kを定義する最小X座標であり、配列Ex[k][m]の値は、矩形範囲#kを定義する最大X座標である。ただし、起動時では、1つの矩形範囲#kに1つの像のみが存在するので、これらはそれぞれ、Bx[k][0]及びEx[k][0]である。
【0196】
図12は、図2のMCU33による起動中検出処理の流れの一例を示すフローチャートである。図12を参照して、ステップS101にて、MCU33は、起動中に必要な初期設定を実行する。この初期設定において、後述の第1〜第5キックフラグが初期化される。
【0197】
ステップS201にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kのそれぞれに含まれる各像の最小Y座標及び最大Y座標(垂直端点)を検出する。ステップS201の処理は、図10の垂直端点検出処理と同様であり、説明を省略する。ただし、図10において、配列By[k]を配列by[k]と、配列Ey[k]を配列ey[k]と、読み替える。
【0198】
ステップS203にて、MCU33は、2値化された差分画像D[x][y]から、矩形範囲#kのそれぞれに含まれる各像の最小X座標及び最大X座標(水平端点)を検出する。ステップS203の処理は、図11の水平端点検出処理と同様であり、説明を省略する。ただし、図11において、配列Bx[k][m]を配列bx[k][m]と、配列Ex[k][m]を配列ex[k][m]と、読み替える。
【0199】
ステップS205にて、MCU33は、キック前処理を実行する。ステップS207にて、MCU33は、スクリーン15上の足数を判定する処理を実行する。ステップS209にて、MCU33は、スクリーン15上のプレイヤ25の足の左右判定処理を実行する。ステップS211にて、MCU33は、プレイヤ25がキック動作を行なったか否かの判定処理を実行する。ステップS213にて、MCU33は、キック動作が、ボールオブジェクト81LP又は81RPにヒットしたか否かの判定処理を実行する。ステップS215にて、MCU33は、ステップS201〜S213の処理結果に基づいて、コマンドCDを生成する。
【0200】
ステップS217にて、MCU33は、マスタプロセッサ41からリクエスト信号を受信したか否かを判断し、受信していない場合ステップS217に戻り、受信した場合ステップS219に進む。ステップS219にて、MCU33は、ステップS215で生成したコマンドCDをマスタプロセッサ41に送信して、ステップS201に進む。
【0201】
図13は、図12のステップS205のキック前処理の流れの一例を示すフローチャートである。図13を参照して、ステップS251にて、MCU33は、第3キックフラグがオンか否かを判断し、オンの場合リターンし、オフの場合ステップS253に進む。ステップS253にて、MCU33は、第2キックフラグがオンか否かを判断し、オンの場合ステップS255に進み、オフの場合ステップS261に進む。
【0202】
ステップS254では、MCU33は、配列R[1]が1か否かを判断し、つまり、再帰反射シート17−1に対応する矩形範囲#2に1つの像のみが含まれるか否かを判断し、1の場合ステップS255に進み、それ以外はステップS257に進む。矩形範囲#1に1つの像のみが含まれるということは、再帰反射シート17−1にプレイヤ25がのっておらず、陰にもなっていないことを意味する。
【0203】
ステップS255にて、MCU33は、配列R[2]の値が3か否かを判断し、つまり、再帰反射シート17−2に対応する矩形範囲#2に3つの像が含まれるか否かを判断し、3の場合ステップS259に進み、それ以外はステップS257に進む。矩形範囲#2に3つの像が含まれるということは、再帰反射シート17−2に両足がのっており(又は、両足の陰になっており)、遮蔽領域が2つ存在することを意味する。従って、ステップS259では、MCU33は、第3キックフラグをオンにし、第2キックフラグをオフにして、リターンする。また、ステップS257では、MCU33は、第2キックフラグをオフにしてステップS263に進む。
【0204】
ステップS261では、MCU33は、第1キックフラグがオンか否かを判断し、オンの場合ステップS263に進み、オフの場合ステップS267に進む。ステップS263では、MCU33は、配列R[1],R[2]及びR[3]のうちのどれかが1より大きいか否かを判断し、つまり、再帰反射シート17−1,17−2及び17−3のどれかに、片足又は両足がのっているか否か及び片足又は両足の陰になっているか否かを判断し、肯定判断の場合ステップS265に進み、それ以外は図12のステップS215に進む。ステップS265では、MCU33は、第2キックフラグをオンにし、第1キックフラグをオフにして、図12のステップS215に進む。
【0205】
ステップS267では、MCU33は、変数NDの値が3か否かを判断し、つまり、検出された矩形範囲#kの数が3か否かを判断し、3の場合ステップS269に進み、それ以外は図12のステップS215に進む。矩形範囲#kの数が3ということは、再帰反射シート19−1及び19−2の像92−1及び92−2が検出されなかったことを意味する。ステップS269にて、MCU33は、変数qの値が3か否かを判断し、つまり、3つの矩形範囲#1〜#3のそれぞれに、1つの像だけが含まれるか否かを判断し、3の場合ステップS271に進み、それ以外は図12のステップS215に進む。ステップS271にて、MCU33は、第1キックフラグをオンにして、図12のステップS215に進む。
【0206】
図14は、図12のステップS207の足数判定処理の流れの一例を示すフローチャートである。図14を参照して、ステップS301にて、MCU33は、変数k及び配列F[]に0をセットする。ステップS303にて、MCU33は、カウンタkを1つインクリメントする。ステップS305にて、MCU33は、配列R[k]の値が3か否かを判断し、3の場合ステップS307に進み、それ以外はステップS309に進む。ステップS307では、MCU33は、矩形範囲#kに3つの像が含まれて2つの遮蔽領域(二つの足)が存在することを示す20hを配列F[k]に代入してステップS341に進む。
【0207】
ステップS309では、MCU33は、配列Bx[k][0]の値(起動時の矩形範囲#kの最小X座標)と配列bx[k][0]の値(現在の矩形範囲#kの最小X座標)とを比較する。
【0208】
ステップS311にて、MCU33は、配列Bx[k][0]の値と配列bx[k][0]の値とが等しい場合、つまり、矩形範囲#kに対応する再帰反射シートの左端が踏まれていない場合、ステップS313に進み、それ以外は、つまり、左端が踏まれている場合ステップS335に進む。ステップS335では、MCU33は、配列R[k]の値が2か否かを判断し、2の場合ステップS337に進み、それ以外はステップS339に進む。ステップS337では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていることを示す21hを配列F[k]に代入してステップS341に進む。また、ステップS339では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ、かつ、その再帰反射シート17−kの別の部位が踏まれていないことを示す11hを配列F[k]に代入してステップS341に進む。
【0209】
ステップS313にて、MCU33は、配列R[k]の値が2か否かを判断し、2の場合ステップS315に進み、それ以外はステップS327に進む。ステップS327では、MCU33は、配列Ex[k][0]の値(起動時の矩形範囲#kの最大X座標)と配列ex[k][0]の値(現在の矩形範囲#kの最大X座標)とを比較する。ステップS329にて、MCU33は、配列Ex[k][0]の値と配列ex[k][0]の値とが等しい場合ステップS333に進み、それ以外はステップS331に進む。ステップS333では、MCU33は、矩形範囲#kに対応する再帰反射シー17−kが踏まれていないことを示す00hを配列F[k]に代入する。ステップS331では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていないことを示す12hを配列F[k]に代入する。
【0210】
ステップS315では、MCU33は、配列Ex[k][0]の値(起動時の矩形範囲#kの最大X座標)と配列ex[k][1]の値(現在の矩形範囲#kの最大X座標)とを比較する。ステップS317にて、MCU33は、配列Ex[k][0]の値と配列ex[k][1]の値とが等しい場合ステップS321に進み、それ以外はステップS319に進む。ステップS319では、MCU33は、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ、かつ、その再帰反射シート17−kの別の場所が踏まれていることを示す22hを、配列F[k]に代入する。
【0211】
ステップS321では、MCU33は、カウンタkの値が1か否かを判断し、1の場合ステップS323に進み、それ以外はステップS325に進む。ステップS323では、MCU33は、矩形範囲#1に対応する再帰反射シート17−1の左端及び右端以外の部分に一本の足が置かれている(あるいは片足の陰になっている)ことを示す10hを配列F[k]に代入する。ステップS325では、MCU33は、幅判定処理を実行する。
【0212】
ステップS341では、MCU33は、カウンタkが3になったか否かを判断し、3の場合リターンし、それ以外はステップS303に戻る。
【0213】
図15は、図14のステップS325の幅判定処理の流れの一例を示すフローチャートである。図15を参照して、ステップS361にて、MCU33は、変数Aに、次式により得られた値を代入する。
【0214】
A←bx[k−1][1]−ex[k−1][0]
【0215】
変数bx[k−1][1]は、矩形範囲#kの1つ下の矩形範囲#k−1に含まれる左から二番目の像の最小X座標であり、変数ex[k−1][0]は、矩形範囲#k−1に含まれる左から一番目の像の最大X座標である。つまり、変数Aは、矩形範囲#k−1に含まれる遮蔽領域の幅である。
【0216】
また、ステップS363にて、MCU33は、変数Bに、次式により得られた値を代入する。
【0217】
B←bx[k][1]−ex[k][0]
【0218】
変数bx[k][1]は、矩形範囲#kに含まれる左から二番目の像の最小X座標であり、変数ex[k][0]は、矩形範囲#kに含まれる左から一番目の像の最大X座標である。つまり、変数Bは、矩形範囲#kに含まれる遮蔽領域の幅である。
【0219】
そして、ステップS365にて、MCU33は、変数Bの値が、変数Aを2倍した値より大ききか否かを判断し、大きい場合ステップS367に進み、それ以外はステップS369に進む。ステップS367にて、MCU33は、矩形範囲#kに対応する再帰反射シート17−kが近接した両足で踏まれていることを示す23hを変数F[k]に代入してリターンする。ステップS369では、MCU33は、10hを変数F[k]に代入してリターンする。
【0220】
ここで、変数F[k]に設定される内容について整理する。20hは、矩形範囲#kに3つの像が含まれて2つの遮蔽領域(二つの足)が存在することを示す。21hは、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ(あるいは陰になり)、かつ、その再帰反射シート17−kの別の場所が踏まれていること(あるいは陰になっていること)を示す。11hは、矩形範囲#kに対応する再帰反射シート17−kの左端が踏まれ(あるいは陰になり)、かつ、その再帰反射シート17−kの別の部位が踏まれていないこと(陰にもなっていないこと)を示す。00hは、矩形範囲#kに対応する再帰反射シー17−kが踏まれていないこと(陰にもなっていないこと)を示す。12hは、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ(あるいは陰になっており)、かつ、その再帰反射シート17−kの別の場所が踏まれていないこと(陰にもなっていないこと)を示す。22hは、矩形範囲#kに対応する再帰反射シート17−kの右端が踏まれ(あるいは陰になっており)、かつ、その再帰反射シート17−kの別の場所が踏まれていること(あるいは陰になっていること)を示す。10hは、矩形範囲#1に対応する再帰反射シート17−1の左端及び右端以外の部分に一本の足が置かれている(あるいは片足の陰になっている)ことを示す。23hは、矩形範囲#kに対応する再帰反射シート17−kが近接した両足で踏まれている(あるいは近接した両足の陰になっている)ことを示す。つまり、両足が近接しているために、本来二つであるべき遮蔽領域が分離されていない状態である。
【0221】
図16及び図17は、図13のステップS209の左右判定処理の流れの一例を示すフローチャートである。図16を参照して、ステップS401にて、MCU33は、左右フラグLRF[]に00hをセットする。ステップS403にて、MCU33は、変数k、並びに、配列XL[]、YL[]、XR[]、YR[]、XI[]、及びYI[]に0をセットする。
【0222】
ステップS405にて、MCU33は、カウンタkを1つインクリメントする。ステップS407にて、変数YL[k]及びYR[k]に次式により得られる値を代入する。
【0223】
YL[k]←(By[k]+Ey[k])/2
YR[k]←(By[k]+Ey[k])/2
【0224】
変数YL[k]は、矩形範囲#kに含まれる、左足に対応する遮蔽領域のY座標、つまり、左足のY座標である。変数YR[k]は、矩形範囲#kに含まれる、右足に対応する遮蔽領域のY座標、つまり、右足のY座標である。
【0225】
ステップS409にて、MCU33は、変数F[k]の値が20hか否かを判断し、20hの場合ステップS411に進み、それ以外はステップS413に進む。ステップS411では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0226】
XL[k]←(ex[k][0]+bx[k][1])/2
XR[k]←(ex[k][1]+bx[k][2])/2
【0227】
変数XL[k]は、矩形範囲#kに含まれる、左足に対応する遮蔽領域のX座標、つまり、左足のX座標である。変数XR[k]は、矩形範囲#kに含まれる、右足に対応する遮蔽領域のX座標、つまり、右足のX座標である。
【0228】
ステップS413にて、MCU33は、変数F[k]の値が21hか否かを判断し、21hの場合ステップS415に進み、それ以外はステップS417に進む。ステップS415では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0229】
XL[k]←(Bx[k][0]+bx[k][0])/2
XR[k]←(ex[k][0]+bx[k][1])/2
【0230】
ステップS417にて、MCU33は、変数F[k]の値が22hか否かを判断し、22hの場合ステップS419に進み、それ以外はステップS421に進む。ステップS419では、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0231】
XL[k]←(ex[k][0]+bx[k][1])/2
XR[k]←(ex[k][1]+Ex[k][0])/2
【0232】
ステップS421にて、MCU33は、変数F[k]の値が23hか否かを判断し、23hの場合ステップS423に進み、それ以外はステップS429に進む。ステップS423では、変数Cxに次式により得られる値を代入する。
【0233】
Cx←(ex[k][0]+bx[k][1])/2
【0234】
ステップS425にて、MCU33は、変数XL[k]及びXR[k]にそれぞれ次式により得られる値を代入する。
【0235】
XL[k]←(ex[k][0]+Cx)/2
XR[k]←(Cx+bx[k][1])/2
【0236】
ステップS427では、MCU33は、左右フラグLRF[k]に、矩形範囲#kに2つの遮蔽領域(つまり、両足)が検出されたことを示す11hを代入する。ステップS429では、MCU33は、カウンタkの値が3か否かを判断し、3の場合図17のステップS451に進み、それ以外はステップS405に戻る。
【0237】
図17を参照して、ステップS451にて、MCU33は、変数kに0を代入する。ステップS453にて、MCU33は、変数kを1つインクリメントする。ステップS455にて、MCU33は、変数F[k]の値が、10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS457に進み、否定判断の場合ステップS491に進む。ステップS491にて、MCU33は、変数F[k]の値が00hか否かを判断し、肯定判断の場合ステップS493に進み、否定判断の場合ステップS495に進む。ステップS493では、MCU33は、変数YL[k]及びYR[k]にそれぞれ0を代入してステップS495に進む。
【0238】
ステップS457にて、MCU33は、変数F[k]の値が10hか否かを判断し、10hの場合ステップS459に進み、それ以外はステップS461に進む。ステップS459では、MCU33は、変数Txに次式により得られる値を代入する。変数Txは、矩形範囲#kに含まれる1つの遮蔽領域のX座標である。
【0239】
Tx←(ex[k][0]+bx[k][1])/2
【0240】
ステップS461では、MCU33は、変数F[k]の値が11か否かを判断し、11hの場合ステップS463に進み、それ以外はステップS465に進む。ステップS463では、MCU33は、変数Txに次式により得られる値を代入する。
【0241】
Tx←(Bx[k][0]+bx[k][0])/2
【0242】
ステップS465では、MCU33は、変数Txに次式により得られる値を代入する。
【0243】
Tx←(Ex[k][0]+ex[k][0])/2
【0244】
ステップS469にて、MCU33は、変数F[k+1]の値が、20h、21h、22h、あるいは23hであるか否かを判断し、肯定判断の場合ステップS471に進み、否定判断の場合ステップS485に進む。
【0245】
ステップS485では、MCU33は、変数XI[k]及びYI[k]にそれぞれ次式により得られる値を代入する。
【0246】
XI[k]←Tx
YI[k]←YL[k]
【0247】
変数XI[k]及びYI[k]は、矩形範囲#kに1つの遮蔽領域のみが存在するが、左右が決定できなかった場合に(左右不定の場合に)、その遮蔽領域のXY座標を代入する変数である。
【0248】
ステップS487では、MCU33は、変数YL[k]及びYR[k]にそれぞれ0を代入する。ステップS489にて、MCU33は、左右フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域の左右が不定であることを示すAAhを代入する。
【0249】
ステップS471にて、MCU33は、変数CM1及びCM2にそれぞれ次式により得られる値を代入する。
【0250】
CM1←|Tx−XL[k+1]|
CM2←|Tx−XR[k+1]|
【0251】
変数CM1は、矩形範囲#kの遮蔽領域のX座標と、1つ下の矩形範囲#k+1の左の遮蔽領域のX座標と、の差の絶対値である。変数CM2は、矩形範囲#kの遮蔽領域のX座標と、1つ下の矩形範囲#k+1の右の遮蔽領域のX座標と、の差の絶対値である。
【0252】
ステップS475にて、MCU33は、変数CM1の値がCM2の値より小さいか否かを判断し、小さい場合、つまり、矩形範囲#kの遮蔽領域のX座標が、矩形範囲#k+1の左の遮蔽領域のX座標に近い場合、ステップS477に進み、それ以外は、つまり、矩形範囲#kの遮蔽領域のX座標が、矩形範囲#k+1の右の遮蔽領域のX座標に近い場合、ステップS481に進む。
【0253】
ステップS477では、MCU33は、変数XL[k]及びYR[k]にそれぞれ次式により得られる値を代入する。
【0254】
XL[k]←Tx
YR[k]←0
【0255】
ステップS479では、MCU33は、フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域が左足に対応することを示す01hを代入する。
【0256】
ステップS481では、MCU33は、変数XR[k]及びYL[k]にそれぞれ次式により得られる値を代入する。
【0257】
XR[k]←Tx
YL[k]←0
【0258】
ステップS483では、MCU33は、フラグLRF[k]に、矩形範囲#kの1つのみの遮蔽領域が右足に対応することを示す10hを代入する。
【0259】
ステップS495にて、MCU33は、変数kの値が3か否かを判断し、3の場合リターンし、それ以外はステップS453に戻る。
【0260】
図18は、図13のステップS211のキック判定処理の流れの一例を示すフローチャートである。図18を参照して、ステップS551にて、MCU33は、変数F[1]が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS553に進み、否定判断の場合ステップS563に進む。
【0261】
ステップS553にて、MCU33は、前回の変数F[1]の値が00hか否かを判断し、00hの場合ステップS555に進み、それ以外はステップS563に進む。ステップS555にて,MCU33は、左右フラグLRF[1]が01hか否かを判断し、01hの場合ステップS561に進み、それ以外はステップS557に進む。ステップS561にて、MCU33は、第4キックフラグYFに1101hを代入してリターンする。代入値1101hは、上記の第1パターンのキックが左足でなされたことを示す。
【0262】
ステップS557にて、MCU33は、フラグLRF[1]が10hか否かを判断し、10hの場合ステップS559に進み、それ以外はステップS563に進む。ステップS559では、MCU33は、第4キックフラグYFに1110hを代入してリターンする。代入値1110hは、上記の第1パターンのキックが右足でなされたことを示す。
【0263】
ステップS563にて、MCU33は、変数F[1]が20h、21h、22hあるいは23hであるか否かを判断し、肯定判断の場合ステップS565に進み、否定判断の場合ステップS579に進む。
【0264】
ステップS565にて、MCU33は、前回の変数F[1]の値が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS567に進み、否定判断の場合ステップS575に進む。ステップS567にて,MCU33は、前回の左右フラグLRF[1]が01hか否かを判断し、01hの場合ステップS569に進み、それ以外はステップS571に進む。ステップS569にて、MCU33は、第4キックフラグYFに2210hを代入してリターンすする。代入値2210hは、上記の第2パターンのキックが右足でなされたことを示す。
【0265】
ステップS571にて、MCU33は、前回のフラグLRF[1]が10hか否かを判断し、10hの場合ステップS573に進み、それ以外はステップS579に進む。ステップS573では、MCU33は、第4キックフラグYFに2201hを代入してリターンする。代入値2201hは、上記の第2パターンのキックが左足でなされたことを示す。
【0266】
ステップS575では、MCU33は、前回のフラグLRF[1]が00hか否かを判断し、00hの場合ステップS577に進み、それ以外はステップS579に進む。ステップS577では、MCU33は、第4キックフラグYFに3311hを代入してリターンする。代入値3311hは、上記の第3パターンのキックがなされたことを示す。
【0267】
ステップS579にて、MCU33は、変数F[2]が20h、21h、22hあるいは23hであるか否かを判断し、肯定判断の場合ステップS581に進み、否定判断の場合ステップS591に進む。
【0268】
ステップS581にて、MCU33は、前回の変数F[2]の値が10h、11hあるいは12hであるか否かを判断し、肯定判断の場合ステップS583に進み、否定判断の場合ステップS591に進む。ステップS583にて,MCU33は、前回の左右フラグLRF[2]が01hか否かを判断し、01hの場合ステップS585に進み、それ以外はステップS587に進む。ステップS585にて、MCU33は、第4キックフラグYFに4410hを代入してリターンすする。代入値4410hは、上記の第4パターンのキックが右足でなされたことを示す。
【0269】
ステップS587にて、MCU33は、前回のフラグLRF[2]が10hか否かを判断し、10hの場合ステップS589に進み、それ以外はステップS591に進む。ステップS589では、MCU33は、第4キックフラグYFに4401hを代入してリターンする。代入値4401hは、上記の第4パターンのキックが左足でなされたことを示す。
【0270】
ステップS591では、MCU33は、第4キックフラグYFに0000hを代入して図12のステップS215に進む。代入値0000hは、プレイヤ25がキックしていないことを示す。
【0271】
図19は、図13のステップS213のヒット判定処理の流れの一例を示すフローチャートである。図19を参照して、ステップS651にて、MCU33は、第4キックフラグYFが1101hあるいは2201hか否かを判断し、肯定判断の場合ステップS653に進み、否定判断の場合はステップS663に進む。ステップS653にて、MCU33は、変数XL[1]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS655に進み、レンジ外の場合ステップS657に進む。ステップS655にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。代入値01hは、左のボール81LPをキックしたことを示す。
【0272】
ステップS657にて、MCU33は、変数XL[1]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS659に進み、レンジ外の場合ステップS661に進む。ステップS659では、MCU33は、第5キックフラグGFに10hを代入してリターンする。代入値10hは、右のボール81RPをキックしたことを示す。
【0273】
また、ステップS661では、MCU33は、第5キックフラグGFに00hを代入してリターンする。代入値00hは、空振りを示す。
【0274】
ステップS663にて、MCU33は、第4キックフラグYFが1110hあるいは2210hか否かを判断し、肯定判断の場合ステップS665に進み、否定判断の場合はステップS675に進む。ステップS665にて、MCU33は、変数XR[1]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS667に進み、レンジ外の場合ステップS669に進む。
【0275】
ステップS667にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS669にて、MCU33は、変数XR[1]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS673に進み、レンジ外の場合ステップS671に進む。ステップS673では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS671では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0276】
ステップS675にて、MCU33は、第4キックフラグYFが3311hか否かを判断し、3311hの場合ステップS677に進み、それ以外はステップS689に進む。ステップS677にて、MCU33は、変数AVに次式により得られる値を代入する。
【0277】
AV←(XL[1]+XR[1])/2
【0278】
ステップS679にて、MCU33は、変数AVの値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS681に進み、レンジ外の場合ステップS683に進む。
【0279】
ステップS681にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS683にて、MCU33は、変数AVの値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS687に進み、レンジ外の場合ステップS685に進む。ステップS687では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS685では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0280】
ステップS689にて、MCU33は、第4キックフラグYFが4401hか否かを判断し、4401hの場合ステップS691に進み、それ以外はステップS701に進む。ステップS691にて、MCU33は、変数XL[2]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS693に進み、レンジ外の場合ステップS695に進む。
【0281】
ステップS693にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS695にて、MCU33は、変数XL[2]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS697に進み、レンジ外の場合ステップS699に進む。ステップS697では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS699では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0282】
ステップS701にて、MCU33は、第4キックフラグYFが4410hか否かを判断し、4410hの場合ステップS703に進み、それ以外はステップS713に進む。ステップS703にて、MCU33は、変数XR[2]の値が左キックレンジ内か否かを判断し、レンジ内の場合ステップS705に進み、レンジ外の場合ステップS707に進む。
【0283】
ステップS705にて、MCU33は、第5キックフラグGFに01hを代入してリターンする。ステップS707にて、MCU33は、変数XR[2]の値が右キックレンジ内か否かを判断し、レンジ内の場合ステップS709に進み、レンジ外の場合ステップS711に進む。ステップS709では、MCU33は、第5キックフラグGFに10hを代入してリターンする。また、ステップS711では、MCU33は、第5キックフラグGFに00hを代入してリターンする。
【0284】
図20は、図13のステップS215のコマンド生成処理の流れの一例を示すフローチャートである。図20を参照して、ステップS751にて、MCU33は、コマンドCDにAAAAhをセットする。代入値AAAAhは、第1〜第5キックフラグが全てオフであることを示す。
【0285】
ステップS753にて、MCU33は、第1キックフラグがオンか否かを判断し、オンの場合ステップS755に進み、オフの場合ステップS757に進む。ステップS755にて、MCU33は、コマンドCDに、第1キックフラグのオンを示す1100hをセットする。
【0286】
ステップS757にて、MCU33は、第2キックフラグ又は第3キックフラグがオンか否かを判断し、オンの場合ステップS759に進み、オフの場合ステップS761に進む。ステップS759にて、MCU33は、コマンドCDに、第2キックフラグ又は第3キックフラグのオンを示す2200hをセットする。
【0287】
ステップS761にて、MCU33は、第5キックフラグGFが10hあるいは01hか否かを判断し、肯定判断の場合ステップS763に進み、否定判断の場合リターンする。ステップS763にて、MCU33は、第5キックフラグGFが10hの場合、コマンドCDに、右のボール81RPが蹴られたことを示す5510hをセットする。また、MCU33は、第5キックフラグGFが01hの場合、コマンドCDに、左のボール81LPが蹴られたことを示す5501hをセットする。
【0288】
ステップS765では、MCU33は、第3キックフラグ、第4キックフラグYF、及び第5キックフラグGFをクリアしてリターンする。
【0289】
図21は、図2のマスタプロセッサ41による処理の流れの一例を示すフローチャートである。図21を参照して、ステップS801にて、マスタプロセッサ41は、初期設定を実行する。ステップS803にて、マスタプロセッサ41は、MCU33へリクエスト信号を送信する。ステップS805にて、マスタプロセッサ41は、リクエスト信号に応答したMCU33からコマンドCDを受信する。ステップS807にて、マスタプロセッサ41は、コマンドCDがAAAAhか否かを判断し、AAAAhの場合ステップS809に進み、それ以外はステップS821に進む。
【0290】
ステップS809では、マスタプロセッサ41は、ヒット後アニメーションを実行中か否かを判断し、実行中の場合ステップS815に進み、それ以外はステップS811に進む。ヒット後アニメーションとは、ボール81LP又は81RPが蹴られたと判断されて、ボールがゴールオブジェクト75に向かって移動し、ゴールキーパーオブジェクト73がキャッチするか、あるいは、ゴールオブジェクト75に入るアニメーションである。
【0291】
ステップS811では、マスタプロセッサ41は、再帰反射シート19−1及び19−2の上にそれぞれ足裏画像が投影されるように、2つの足裏画像を設定する。ステップS813にて、マスタプロセッサ41は、スレイブプロセッサ45に対して、ゴールキーパーオブジェクト73及びゴールオブジェクト75の生成指示を与える。
【0292】
なお、コマンドCDがAAAAhであり、かつ、ヒット後アニメーションが実行中でないことは、ヒット後アニメーションが終了して、次のプレイの準備状態を示す。あるいは、このことは、最初のプレイの準備状態を示す。このため、プレイヤ25に、次のプレイ又は最初のプレイを促すため、再帰反射シート19−1及び19−2の上に、足裏画像を投影するのである。
【0293】
ステップS821にて、マスタプロセッサ41は、コマンドCDが1100hか否かを判断し、1100hの場合ステップS823に進み、それ以外はステップS829に進む。ステップS823では、マスタプロセッサ41は、足裏画像を消去する。ステップS825にて、マスタプロセッサ41は、出題オブジェクト79L及び79R及びボールオブジェクト81LP及び81RPを設定する。ステップS827では、マスタプロセッサ41は、スレイブプロセッサ45に対して、出題領域77に表示する出題の指示を出す。
【0294】
なお、ステップS821で肯定判断がされたことは、第1キックフラグがオンであり、プレイヤがプレイの準備を整えたことを示す。
【0295】
ステップS829にて、マスタプロセッサ41は、コマンドCDが5510hあるいは5501hか否かを判断し、肯定判断の場合ステップS831に進み、否定判断の場合ステップS823に進む。ステップS823に進むのは、プレイヤ25が、未だボールオブジェクト81LP及び81RPのいずれも蹴っていないからである。
【0296】
ステップS831では、マスタプロセッサ41は、コマンドCDに設定された値に従って、プレイヤの回答の正否を判定する。ステップS833にて、マスタプロセッサ41は、判定結果に基づいて、結果オブジェクト83を設定する。ステップS835にて、マスタプロセッサ41は、ボールオブジェクトの初速度ベクトルを設定する。ステップS837にて、マスタプロセッサ41は、キック音を設定する。
【0297】
また、ヒット後アニメーション実行中の場合、ステップS815にて、マスタプロセッサ41は、ステップS833の結果オブジェクト83を引き続き設定する。ステップS817にて、マスタプロセッサ41は、蹴られたボールオブジェクト81LP又は81RPの軌道を計算し設定する。ステップS819にて、マスタプロセッサ41は、ボールオブジェクトの位置に応じて、スレイブプロセッサ45に指示を出す。すなわち、マスタプロセッサ41は、画面71Pのボールオブジェクトと画面71Tのボールオブジェクトとの軌道が、滑らかに接続するように、座標及び速度ベクトルを、スレイブプロセッサ45に渡す。
【0298】
さて、ステップS839にて、マスタプロセッサ41は、ビデオ同期信号による割込み待ちか否かを判断し、割込み待ちの場合ステップS839に戻り、割込み待ちでない場合、つまり、ビデオ同期信号による割込みが発生した場合はステップS841に進む。マスタプロセッサ41は、テップS841では、設定内容(ステップS811,S815,S817,S823,S825,S833,S835)に応じて、ビデオ信号VD1を生成し、画面71Pを更新し、ステップS843では、設定内容(S837)に応じて、オーディオ信号AU1を生成して、ステップS803に戻る。
【0299】
図22は、図2のスレイブプロセッサ45による処理の流れの一例を示すフローチャートである。図22を参照して、ステップS901にて、スレイブプロセッサ45は、初期設定を実行する。ステップS903では、スレイブプロセッサ45は、マスタプロセッサ41の指示(図21のステップS813,S819,S827)に応じて、画像を設定する。ステップS905にて、スレイブプロセッサ45は、ステップS903で設定した画像に応じて、音声を設定する。ステップS907にて、スレイブプロセッサ45は、ビデオ同期信号による割込み待ちか否かを判断し、割込み待ちの場合ステップS907に戻り、割込み待ちでない場合、つまり、ビデオ同期信号による割込みが発生した場合はステップS909に進む。スレイブプロセッサ45は、テップS909では、設定内容(ステップS903)に従ってビデオ信号VD2を生成して、画面71Tを更新し、ステップS911では、設定内容(ステップS905)に従ってオーディオ信号AU2を生成して、ステップS903に戻る。
【0300】
さて、以上のように、本実施の形態によれば、静止物体(上記ではスクリーン15)に取付けられた再帰反射シート17−1〜17−3,19−1,19−2を撮影して、その差分画像から、プレイヤ25の足による遮蔽領域を検出する。遮蔽領域の検出は、プレイヤ25の足を検出することに相当する。なぜなら、足が再帰反射シート上に位置する場合(足が再帰反射シートの上を通過する場合において、足がまさに再帰反射シートの上にある場合を含む。)、その部分は差分画像に現れず、遮蔽領域となって現れるからである。このように、プレイヤ25への再帰反射シートの装着や取付けを行うことなく、撮影により、プレイヤ25の足を検出できる。
【0301】
また、差分画像上の遮蔽領域の移動を検出することにより、足の動きを検出できる。なぜなら、再帰反射シートのある位置から他の位置へ足が移動した場合、遮蔽領域もまた、当該ある位置に対応する画像上の位置から当該他の位置に対応する画像上の位置へ移動し、あるいは、ある再帰反射シートから他の再帰反射シートへ足が移動した場合、遮蔽領域もまた、当該ある再帰反射シートの像から当該他の再帰反射シートの像へ移動するからである。
【0302】
特に、本実施の形態では、再帰反射シート17−1〜17−3は、帯状である。このため、再帰反射シートの長さ方向(差分画像のX方向)の足の移動を検出できる。また、複数の再帰反射シート17−1〜17−3が互いに平行に配置される。このため、再帰反射シートの長さ方向に垂直な方向(差分画像のY方向)の足の移動を検出できる。
【0303】
また、本実施の形態では、再帰反射シート17−1〜17−3の厚さ方向の幅は、イメージセンサ31からの距離が大きくなるほど太くなるように設定される。このため、比較的低解像度のイメージセンサ31を使用する場合でも、イメージセンサ31からの距離が大きい位置に配置された再帰反射シート(例えば、17−3)の像が認識できない(写り込まない)といった不都合を回避できる。
【0304】
さらに、再帰反射シート17−1〜17−3の互いの間隔は、イメージセンサ31からの距離が大きくなるほど大きくなるように設定される。このため、比較的低解像度のイメージセンサ31を使用する場合でも、イメージセンサ31からの距離が大きい位置に配置された2つの再帰反射シート(例えば、17−2と17−3)の像を区別できないといった不都合を回避できる。
【0305】
また、本実施の形態では、プレイヤ25が制御装置3にコマンドを入力するための再帰反射シート19−1及び19−2を備える。このため、プレイヤ25は、この再帰反射シート19−1及び19−2を遮蔽することにより、コマンドを入力できる。この再帰反射シート19−1及び19−2が遮蔽されたことが差分画像上で検出された場合に、コマンドが入力されたとみなせばよいからである。
【0306】
さらに、本実施の形態では、再帰反射シート17−1〜17−3,19−1,19−2は、水平なスクリーン15に固定される。このため、再帰反射シートの取り付けが容易であり、より確実に固定できる。また、再帰反射シートの加工も少なくて済む。また、再帰反射シート17−1〜17−3,19−1,19−2が固定されるスクリーン15は床面に配置又は床面である。このため、プレイヤ25の足の位置及び動きを検出する場合、つまり、足を動かして入力を行う場合に好適である。
【0307】
さらに、本実施の形態では、赤外発光ダイオード23は、再帰反射シート17−1〜17−3,19−1,19−2に、赤外光を照射する。このため、再帰反射シートが照射光を反射することで、よりはっきりと差分画像上に写りこみ、より精度良く遮蔽領域を検出できる。また、再帰反射シート17−1〜17−3,19−1,19−2は受けた光を再帰反射するので、赤外発光ダイオード23とイメージセンサ31とをほぼ同じ位置に配置することにより、より確実に再帰反射シートからの反射光をイメージセンサ31に入力できる。また、赤外発光ダイオード23は、間欠的に赤外光を照射し、MCU33は、発光時画像と消灯時画像との差分画像から、遮蔽領域を検出する。このように、差分を求めるといった簡易な処理で、再帰反射シートからの反射光以外の光によるノイズを極力除去でき、精度良く再帰反射シートの像のみを検出できる。再帰反射シートの像を精度良く検出できるということは、遮蔽領域を精度良く検出できることを意味する。さらに、赤外光を照射し、赤外線フィルタ21を介して、撮像を行うことにより、赤外光以外のノイズを簡易に除去できる。
【0308】
さらに、本実施の形態によれば、映像により、プレイヤ25(対象物の一種)に情報を提示し、この提示に従って動作するプレイヤ25を検出し、その検出結果に基づいて映像を生成できる。つまり、インタラクティブなシステムが構築される。この場合、プレイヤ25の動作はこれまで述べてきた新規な手段(方法)で検出される。従って、この新規な手段を利用したインタラクティブなシステムを構築できる。なお、プレイヤ25の立場からは、検出されることは、入力を行うことを意味する。
【0309】
また、本実施形態では、複数の画面(上記ではスクリーン15及びテレビジョンモニタ5)に表示するための複数の映像(上記では画面71P及び71T)を生成する。このように、複数の画面に同時に複数の映像を表示できるので、エンターテインメント性を向上できる。この場合、複数の画面に映し出される複数の映像同士を連動させる(上記では、蹴られたボールオブジェクトの軌道が、画面71Pと71Tとの間で滑らかに接続される)。その結果、臨場感の向上を図ることができる。また、画面71Pは、水平なスクリーン15に映し出され、画面71Tは、垂直なテレビジョンモニタ5に映し出される。その結果、プレイヤ25(対象物の一種)は、水平面に映し出された映像及び垂直面に映し出された映像を見ながら、身体を動かし、入力を行うことができる。
【0310】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0311】
(1)再帰反射シート17−1〜17−3に代えて、もしくは加えて、二次元状(例えば格子状)に配置された複数の再帰反射シート(例えば円形)をスクリーン15に固定してもよい。もちろん、各再帰反射シートは任意の形状をとることができる。この場合、二次元方向の、プレイヤ(対象物)の位置や移動を検出できる。
【0312】
また、再帰反射シート17−1〜17−3に代えて、もしくは加えて、一次元状に配置された再帰反射シート(例えば円形)をスクリーン15に固定してもよい。もちろん、各再帰反射シートは任意の形状をとることができる。この場合、一次元方向の、プレイヤ(対象物)の位置や移動を検出できる。
【0313】
さらに、再帰反射シート17−1〜17−3に代えて、もしくは加えて、大きな一枚の再帰反射シート(例えば矩形)をスクリーン15に固定することもできる。もちろん、再帰反射シートは任意の形状をとることができる。
【0314】
(2)差分画像上で、再帰反射シート17−2の像と再帰反射シート17−3の像との間の距離が、再帰反射シート17−1の像と再帰反射シート17−2の像との間の距離と等しくなるように、距離L1及びL2を設定することが好ましい。
【0315】
また、差分画像上で、再帰反射シート17−1の像の幅と再帰反射シート17−2の像の幅と再帰反射シート17−3の像の幅とが、差分画像上で等しくなるように、幅d1,d2及びd3を設定することもできる。
【0316】
(3)上記では、物体検出装置をインタラクティブシステム1に適用する例を挙げた。しかし、適用例はこれに限定されない。また、上記では、2つの画面71P及び71Tを2つのスクリーン15及び5に表示したが、いずれか一方のみでもよい。また、プロジェクタ9を使用して、スクリーン15に映像を投影したが、床面にテレビジョンモニタを埋め込むこともできる。逆に、テレビジョンモニタ5に代えて、プロジェクタにより画面71Tを投影してもよい。また、表示装置は、プロジェクタやテレビジョンモニタに限定されず、任意のものを使用できる。上記では、物体検出装置を、映像を提供する装置と組み合わせたが、組合せの対象はこれに限定されない。
【0317】
(4)上記では、プレイヤ25の足を検出したが、検出対象物は、足に限定されず、また、動物(上記では人間)以外の他の物体であってもよい。また、再帰反射シートを水平面に固定したが、対象物に応じて、垂直面に固定したり、水平面及び垂直面のそれぞれに固定してもよい。再帰反射シート17−1〜17−3の数は三本に限定されず、それ以外の数でもよい。再帰反射シート19−1,19−2についても同様である。
【0318】
(5)上記では、MCU33が画像解析を行ったが、マスタプロセッサ41が差分画像を受け取って解析を行うこともできる。また、上記では、差分画像を2値化した後に、各種処理を実行したが、2値化処理を行いながら各種処理を行うこともできる。また、上記では、遮蔽領域、つまり、足の座標のみを求めたが、足の座標の移動、つまり、足の速度を検出及び算出することもできる。もちろん、足の加速度を検出及び算出することもできる。
【0319】
(6)コンテンツは、図6(a)、図6(b)、図7(a)及び図7(b)に示したものに限定されない。任意のコンテンツを作成できる。上記では、知育を意識したゲームを提供したが、純粋なゲームであってもよいし、教育やスポーツ、その他様々な分野のコンテンツを提供できる。また、メモリカートリッジやCD−ROM等のリムーバルメディアにより、コンテンツを実行するコンピュータプログラムや画像等を提供することもできる。また、インターネット等のネットワークから、これらを提供することもできる。
【0320】
(7)上記では、左先端遮蔽領域及び右先端遮蔽領域のいずれかが、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断した。ただし、ヒット判定はこれに限定さない。例えば、左先端遮蔽領域のX座標と右先端遮蔽領域のX座標との平均値が、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断することもできる。また、例えば、蹴る動作を行った方の足に対応する先端遮蔽領域のX座標が、左ヒットレンジ及び右ヒットレンジのいずれかに入っていれば、ボールオブジェクトを蹴る動作が行われたと判断することもできる。
【0321】
(8)スクリーン15に再帰反射シートを取り付ける代わりに、赤外発光ダイオードのような自発光装置を埋め込むこともできる。この場合は、撮像ユニット7には、赤外発光ダイオード23は不要である。また、撮像装置は、イメージセンサに限定されず、CCDなどの他の撮像装置を使用してもよい。
【0322】
(9)上記のストロボ撮影(赤外発光ダイオード23の点滅)及び差分処理は、好適な例を示しただけであって、本発明に必須の要素ではない。つまり、赤外発光ダイオード23は、点滅させなくてもよいし、また、赤外発光ダイオード23がなくてもよい。照射する光は赤外光に限られない。
【0323】
(10)上記では、再帰反射シート17−1〜17−3,19−1,19−2は、プレイヤ25に踏まれるものであるため、これらを透明又は半透明の部材(例えば、ポリカーボネートやアクリル等の薄い板、あるいはポリエステル等のシートやフィルム)で覆うことにより、保護し耐久性を向上できる。また、再帰反射シートを透明又は半透明の物質でコーティングすることもできる。もちろん、再帰反射シートを固定したスクリーン15の全体をこれらで保護してもよい。
【0324】
(11)上記では、再帰反射シートをスクリーン15に固定した。ただし、これは好適な例であり、再帰反射をしない、反射部材(例えば、光を乱反射する部材、鏡面反射する部材)を使用することもできる。
【0325】
(12)上記では、演算装置として、MCU33、マスタプロセッサ41、及び、スレイブプロセッサ45を設けた。ただし、これは一例であって、1つのコンピュータにより全ての処理を行なうこともできる。つまり、どの処理をどの演算装置に実行させるかは任意に決定できる。
【0326】
(13)MCU33からマスタプロセッサ41に与える情報は、上記のものに限定されず、仕様に合わせて、適宜設定できる。
【0327】
(14)遮蔽領域は、再帰反射シートに足が置かれた場合、再帰反射シートに足が置かれなくても足がその上空に位置する場合、あるいは、再帰反射シートが足の陰になる場合に、発生する。従って、上記において、遮蔽領域の原因として、これら全てを列挙していない場合でも、その遮蔽領域は、これらいずれかの場合が発生したことを意味する。
【産業上の利用可能性】
【0328】
本発明は、ビデオゲーム等のエンターテインメントの分野、及び、教育の分野などに利用可能である。
【符号の説明】
【0329】
1…インタラクティブシステム、3…制御装置、5…テレビジョンモニタ、7…撮像ユニット、9…プロジェクタ、11…スピーカ、13…筐体、15…スクリーン、17−1〜17−3,19−1,19−2…再帰反射シート。
【0330】
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。
【特許請求の範囲】
【請求項1】
実空間中の対象物を検出する物体検出装置であって、
静止物体に取付けられ、受けた光を反射する反射部材と、
前記反射部材を撮像する撮像手段と、
撮像により得られた画像を解析する解析手段と、を備え、
前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含む、物体検出装置。
【請求項2】
前記反射部材は、帯状である、請求項1記載の物体検出装置。
【請求項3】
複数の前記反射部材が、前記静止物体に取付けられ、
前記反射部材の各々は、帯状であり、
前記複数の反射部材は、前記静止物体上に互いに平行に配置される、請求項1記載の物体検出装置。
【請求項4】
前記反射部材の厚さ方向の幅は、前記撮像手段からの距離が大きくなるほど太くなるように設定される、請求項3記載の物体検出装置。
【請求項5】
前記反射部材間の距離は、前記撮像手段からの距離が大きくなるほど大きくなるように設定される、請求項3又は4記載の物体検出装置。
【請求項6】
複数の前記反射部材が、前記静止物体に取付けられる、請求項1記載の物体検出装置。
【請求項7】
前記複数の反射部材のうち、少なくとも所定数の反射部材は、二次元状に配置される、請求項6記載の物体検出装置。
【請求項8】
前記複数の反射部材のうち、少なくとも所定数の反射部材は、一次元状に配置される、請求項6記載の物体検出装置。
【請求項9】
前記複数の反射部材は、ユーザがコンピュータに所定コマンドを入力するための反射部材を含む、請求項6から8のいずれかに記載の物体検出装置。
【請求項10】
前記静止物体は、水平面を含み、
前記反射部材は、前記水平面に取付けられる、請求項1から9のいずれかに記載の物体検出装置。
【請求項11】
前記静止物体は、床面に配置又は床面である、請求項10記載の物体検出装置。
【請求項12】
光を発光して、前記反射部材に向けて前記光を照射する照射手段をさらに備える請求項1から11のいずれかに記載の物体検出装置。
【請求項13】
前記反射部材は、受けた光を再帰反射する、請求項12記載の物体検出装置。
【請求項14】
前記照射手段は、間欠的に前記光を発光して、前記反射部材に向けて前記光を照射し、
前記検出手段は、前記撮像手段によって、前記光の発光時の撮像により得られた画像と前記光の消灯時の撮像により得られた画像との差分画像から、前記遮蔽領域を検出する、請求項13記載の物体検出装置。
【請求項15】
前記照射手段は、赤外光を発光し、
前記撮像手段は、赤外光のみを透過する赤外線フィルタを介して、前記反射部材を撮像する、請求項12から14のいずれかに記載の物体検出装置。
【請求項16】
少なくとも前記反射部材を覆う透明又は半透明の部材をさらに備える請求項1から15のいずれかに記載の物体検出装置。
【請求項17】
実空間中の対象物を検出する物体検出手段と、
前記物体検出手段による検出結果に従って情報処理を実行する情報処理手段と、を備え、
前記物体検出手段は、
静止物体に取付けられ、受けた光を反射する反射部材と、
前記反射部材を撮像する撮像手段と、
撮像により得られた画像を解析する解析手段と、を含み、
前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含み、
前記情報処理手段は、前記検出手段による検出結果に従って、映像を生成する映像生成手段を含む、インタラクティブシステム。
【請求項18】
前記映像生成手段は、複数の画面に表示するための複数の前記映像を生成する、請求項17記載のインタラクティブシステム。
【請求項19】
前記映像生成手段は、前記複数の画面に映し出される前記複数の映像同士を連動させる、請求項18記載のインタラクティブシステム。
【請求項20】
前記映像生成手段は、
前記複数の映像のうちの第1映像を水平面に映し出す手段と、
前記複数の映像のうちの第2映像を垂直面に映し出す手段と、を含む請求項18又は19記載のインタラクティブシステム。
【請求項21】
前記静止物体は、前記水平面を含み、
前記反射部材は、前記水平面に取付けられる、請求項20記載のインタラクティブシステム。
【請求項22】
前記静止物体は、床面に配置又は床面である、請求項21記載のインタラクティブシステム。
【請求項23】
静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出する物体検出方法であって、
前記反射部材を撮像するステップと、
撮像により得られた画像を解析するステップと、を含み、
解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含む、物体検出方法。
【請求項24】
静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出するステップと、
検出する前記ステップによる検出結果に従って情報処理を実行するステップと、を含み、
検出する前記ステップは、
前記反射部材を撮像するステップと、
撮像により得られた画像を解析するステップと、を含み、
解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含み、
情報処理を実行する前記ステップは、前記遮蔽領域を検出する前記ステップによる検出結果に従って、映像を生成するステップを含む、インタラクティブシステム構築方法。
【請求項25】
請求項23記載の物体検出方法をコンピュータに実行させるコンピュータプログラム。
【請求項26】
請求項24記載のインタラクティブシステム構築方法をコンピュータに実行させるコンピュータプログラム。
【請求項1】
実空間中の対象物を検出する物体検出装置であって、
静止物体に取付けられ、受けた光を反射する反射部材と、
前記反射部材を撮像する撮像手段と、
撮像により得られた画像を解析する解析手段と、を備え、
前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含む、物体検出装置。
【請求項2】
前記反射部材は、帯状である、請求項1記載の物体検出装置。
【請求項3】
複数の前記反射部材が、前記静止物体に取付けられ、
前記反射部材の各々は、帯状であり、
前記複数の反射部材は、前記静止物体上に互いに平行に配置される、請求項1記載の物体検出装置。
【請求項4】
前記反射部材の厚さ方向の幅は、前記撮像手段からの距離が大きくなるほど太くなるように設定される、請求項3記載の物体検出装置。
【請求項5】
前記反射部材間の距離は、前記撮像手段からの距離が大きくなるほど大きくなるように設定される、請求項3又は4記載の物体検出装置。
【請求項6】
複数の前記反射部材が、前記静止物体に取付けられる、請求項1記載の物体検出装置。
【請求項7】
前記複数の反射部材のうち、少なくとも所定数の反射部材は、二次元状に配置される、請求項6記載の物体検出装置。
【請求項8】
前記複数の反射部材のうち、少なくとも所定数の反射部材は、一次元状に配置される、請求項6記載の物体検出装置。
【請求項9】
前記複数の反射部材は、ユーザがコンピュータに所定コマンドを入力するための反射部材を含む、請求項6から8のいずれかに記載の物体検出装置。
【請求項10】
前記静止物体は、水平面を含み、
前記反射部材は、前記水平面に取付けられる、請求項1から9のいずれかに記載の物体検出装置。
【請求項11】
前記静止物体は、床面に配置又は床面である、請求項10記載の物体検出装置。
【請求項12】
光を発光して、前記反射部材に向けて前記光を照射する照射手段をさらに備える請求項1から11のいずれかに記載の物体検出装置。
【請求項13】
前記反射部材は、受けた光を再帰反射する、請求項12記載の物体検出装置。
【請求項14】
前記照射手段は、間欠的に前記光を発光して、前記反射部材に向けて前記光を照射し、
前記検出手段は、前記撮像手段によって、前記光の発光時の撮像により得られた画像と前記光の消灯時の撮像により得られた画像との差分画像から、前記遮蔽領域を検出する、請求項13記載の物体検出装置。
【請求項15】
前記照射手段は、赤外光を発光し、
前記撮像手段は、赤外光のみを透過する赤外線フィルタを介して、前記反射部材を撮像する、請求項12から14のいずれかに記載の物体検出装置。
【請求項16】
少なくとも前記反射部材を覆う透明又は半透明の部材をさらに備える請求項1から15のいずれかに記載の物体検出装置。
【請求項17】
実空間中の対象物を検出する物体検出手段と、
前記物体検出手段による検出結果に従って情報処理を実行する情報処理手段と、を備え、
前記物体検出手段は、
静止物体に取付けられ、受けた光を反射する反射部材と、
前記反射部材を撮像する撮像手段と、
撮像により得られた画像を解析する解析手段と、を含み、
前記解析手段は、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出する検出手段を含み、
前記情報処理手段は、前記検出手段による検出結果に従って、映像を生成する映像生成手段を含む、インタラクティブシステム。
【請求項18】
前記映像生成手段は、複数の画面に表示するための複数の前記映像を生成する、請求項17記載のインタラクティブシステム。
【請求項19】
前記映像生成手段は、前記複数の画面に映し出される前記複数の映像同士を連動させる、請求項18記載のインタラクティブシステム。
【請求項20】
前記映像生成手段は、
前記複数の映像のうちの第1映像を水平面に映し出す手段と、
前記複数の映像のうちの第2映像を垂直面に映し出す手段と、を含む請求項18又は19記載のインタラクティブシステム。
【請求項21】
前記静止物体は、前記水平面を含み、
前記反射部材は、前記水平面に取付けられる、請求項20記載のインタラクティブシステム。
【請求項22】
前記静止物体は、床面に配置又は床面である、請求項21記載のインタラクティブシステム。
【請求項23】
静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出する物体検出方法であって、
前記反射部材を撮像するステップと、
撮像により得られた画像を解析するステップと、を含み、
解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含む、物体検出方法。
【請求項24】
静止物体に取付けられ、受けた光を反射する反射部材を利用して、実空間中の対象物を検出するステップと、
検出する前記ステップによる検出結果に従って情報処理を実行するステップと、を含み、
検出する前記ステップは、
前記反射部材を撮像するステップと、
撮像により得られた画像を解析するステップと、を含み、
解析する前記ステップは、前記画像から、前記対象物により前記反射部材が遮蔽された部分に対応する遮蔽領域を検出するステップを含み、
情報処理を実行する前記ステップは、前記遮蔽領域を検出する前記ステップによる検出結果に従って、映像を生成するステップを含む、インタラクティブシステム構築方法。
【請求項25】
請求項23記載の物体検出方法をコンピュータに実行させるコンピュータプログラム。
【請求項26】
請求項24記載のインタラクティブシステム構築方法をコンピュータに実行させるコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2010−169668(P2010−169668A)
【公開日】平成22年8月5日(2010.8.5)
【国際特許分類】
【出願番号】特願2009−283730(P2009−283730)
【出願日】平成21年12月15日(2009.12.15)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
【公開日】平成22年8月5日(2010.8.5)
【国際特許分類】
【出願日】平成21年12月15日(2009.12.15)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】
[ Back to top ]