(57)【要約】【課題】  コントローラ２０のＬＥＤを利用したゲームシステムを提供する。【解決手段】  本発明のゲームシステム１において、撮像装置２がコントローラ２０を撮像する。コントローラ２０は、ゲームを進行させる操作入力を行うための複数の入力部と、実行されるゲームアプリケーションにおいてコントローラ２０に設定されるコントローラ番号を表現するためのＬＥＤを複数有する。ゲーム装置１０は、コントローラ２０における操作入力を受け付けて、ゲームアプリケーションの処理に反映するとともに、撮像装置２から撮像画像を取得して、撮像画像におけるＬＥＤの位置からコントローラ２０の撮像画像中の位置を取得して、取得した位置情報をゲームアプリケーションの処理に反映し、操作入力と、取得した位置情報とに基づいたアプリケーションの処理結果を示す画像信号を生成する。【選択図】  図１
2007244534.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが操作入力を行うための操作入力装置と、前記操作入力装置における操作入力をもとにアプリケーションを処理してアプリケーションの処理結果を示す画像信号を生成する処理装置と、前記操作入力装置を撮像する撮像装置と、前記処理装置において生成された画像信号を出力する画像表示装置とを備えたエンタテインメントシステムであって、
前記操作入力装置は、ユーザがアプリケーションを進行させる操作入力を行うための複数の入力部と、実行されるアプリケーションにおいて当該操作入力装置に設定される番号を表現するための発光素子を複数有し、
前記処理装置は、前記操作入力装置における操作入力を受け付けて、アプリケーションの処理に反映するとともに、前記撮像装置から撮像画像を取得して、撮像画像における前記発光素子の位置から前記操作入力装置の撮像画像中の位置を取得して、取得した位置情報をアプリケーションの処理に反映し、操作入力と、取得した位置情報とに基づいたアプリケーションの処理結果を示す画像信号を生成する、ことを特徴とするエンタテインメントシステム。
【請求項２】
前記操作入力装置は、複数の発光素子のうち当該操作入力装置に設定される番号に対応する発光素子のみを点灯させることで、発光素子を、当該番号を表現するインジケータとして機能させることを特徴とする請求項１に記載のエンタテインメントシステム。
【請求項３】
前記処理装置は、前記発光素子の点灯を制御する制御信号を前記操作入力装置に送り、
前記操作入力装置は、前記制御信号にしたがって前記発光素子を点灯することを特徴とする請求項１に記載のエンタテインメントシステム。
【請求項４】
前記処理装置は、前記操作入力装置の位置情報をアプリケーションの処理に反映させる際に、前記発光素子を低周波で点灯させる第１制御信号と、高周波で点灯させる第２制御信号のいずれかを前記操作入力装置に送ることを特徴とする請求項３に記載のエンタテインメントシステム。
【請求項５】
前記撮像装置は、前記画像表示装置の表示画面をユーザが視認可能な位置を撮像範囲に含むように、前記画像表示装置の近傍に配置されることを特徴とする請求項１から４のいずれかに記載のエンタテインメントシステム。
【請求項６】
ユーザによる操作入力をゲーム装置に伝送するゲームコントローラであって、
ユーザにより把持される把持部と、
ユーザにより前記把持部を把持された状態でユーザに操作入力を行わせるために筐体上面に設けられた複数の入力部と、
前記入力部を介して入力された操作入力をゲーム装置に伝送する伝送部と、
筐体背面に設けられた複数の発光素子と、
を備えたゲームコントローラ。
【請求項７】
前記複数の発光素子は、筐体背面において所定の配設領域に配置され、
当該配設領域は、その隣接する筐体色よりも明度の低い色をもつことを特徴とする請求項６に記載のゲームコントローラ。
【請求項８】
前記複数の発光素子は、筐体背面において２次元的に配設されていることを特徴とする請求項６または７に記載のゲームコントローラ。
【請求項９】
筐体上面には、発光素子付き入力部が設けられていることを特徴とする請求項６から８のいずれかに記載のゲームコントローラ。
【請求項１０】
複数の発光素子のそれぞれの点灯を制御する複数のＰＷＭ制御部が筐体内部に設けられることを特徴とする請求項６から９のいずれかに記載のゲームコントローラ。
【請求項１１】
前記ＰＷＭ制御部は、ゲーム装置からの制御信号をもとに、発光素子の点灯を制御することを特徴とする請求項１０に記載のゲームコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実空間上に存在するオブジェクトを認識する技術に関する。
【背景技術】
【０００２】
近年、２次元コードをカメラで撮像してコードデータを認識し、そのコードデータに対応付けられた所定の処理を実行させる技術が提案されている。１次元バーコードと比較すると２次元コードの方がコード化できる情報量が多く、現在では様々な種類の２次元コードが実用化されている。このような状況のもと、従来、２次元コードの画像認識に関する技術を提案するものがある（例えば、特許文献１参照）。
【０００３】
実空間上のオブジェクトの３次元的な位置や姿勢などを取得するために、磁気方式、超音波方式または光学方式を利用した様々な計測システムが存在する。磁気方式による計測システムは、環境に存在する電子機器や地磁気などの影響を受けやすく、また超音波方式による計測システムは、環境の気圧や温度などの影響を受けやすい。一方で、光学方式による計測システムは、カメラで撮像した撮影画像を利用するため、周辺の磁界や気圧、温度などの影響を受けることがない。光学方式を利用した計測システムとして、オブジェクトに設けた複数のＬＥＤをそれぞれ一意に定められる点滅パターンで点滅させて、２次元イメージセンサによる撮影画像を利用して３次元位置や姿勢などを認識する技術が提案されている（例えば、特許文献２参照）。特許文献２では、マーカとして機能するＬＥＤが、ＬＥＤごとに一意に識別可能な識別情報を有している。
【特許文献１】特開２０００−８２１０８号公報
【特許文献２】特開２００３−２５４７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年の技術進歩にともない、ゲームシステムのハードウェアスペックが飛躍的に向上している。これによりゲームアプリケーションも多様化し、最近では、カメラとゲーム装置を接続してユーザがカメラの前で体を動かすと、ゲーム装置が光学的にユーザの動きを認識してゲームへの入力として利用するゲームシステムも実現されている。このようなゲーム環境のもと、本発明者は、ゲーム装置と接続したカメラを効果的に利用することで、従来にないゲームシステムおよびコントローラを想到するに至った。また、実空間におけるオブジェクトをカメラで撮像して、撮像画像からオブジェクトに関して加工処理を施した情報を画像表示装置に表示できれば、ゲームシステムだけでなく、他の環境、たとえば教育現場やビジネスの現場などのエンタテインメントシステムにおいても有効なアプリケーションを生み出すことができると考えられる。
【０００５】
そこで本発明は、新規なアプリケーション処理機能をもつエンタテインメントシステムおよび当該エンタテインメントシステムにおいて利用される操作入力装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のエンタテインメントシステムは、ユーザが操作入力を行うための操作入力装置と、前記操作入力装置における操作入力をもとにアプリケーションを処理してアプリケーションの処理結果を示す画像信号を生成する処理装置と、前記操作入力装置を撮像する撮像装置と、前記処理装置において生成された画像信号を出力する画像表示装置とを備える。
【０００７】
この態様のエンタテインメントシステムにおいて、前記操作入力装置は、ユーザがアプリケーションを進行させる操作入力を行うための複数の入力部と、実行されるアプリケーションにおいて当該操作入力装置に設定される番号を表現するための発光素子を複数有し、前記処理装置は、前記操作入力装置における操作入力を受け付けて、アプリケーションの処理に反映するとともに、前記撮像装置から撮像画像を取得して、撮像画像における前記発光素子の位置から前記操作入力装置の撮像画像中の位置を取得して、取得した位置情報をアプリケーションの処理に反映し、操作入力と、取得した位置情報とに基づいたアプリケーションの処理結果を示す画像信号を生成する機能をもつ。
【０００８】
本発明の別の態様は、ユーザによる操作入力をゲーム装置に伝送するゲームコントローラに関する。この態様のゲームコントローラは、ユーザにより把持される把持部と、ユーザにより前記把持部を把持された状態でユーザに操作入力を行わせるために筐体上面に設けられた複数の入力部と、前記入力部を介して入力された操作入力をゲーム装置に伝送する伝送部と、筐体背面に設けられた複数の発光素子とを備える。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によると、新規なアプリケーション処理機能をもつエンタテインメントシステムおよび当該エンタテインメントシステムにおいて利用される操作入力装置を提供することができる。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明の実施例にかかるゲームシステムの使用環境を示す。ゲームシステム１は、撮像装置２、画像表示装置３、音声出力装置４、ゲーム装置１０およびコントローラ２０を備える。撮像装置２、画像表示装置３、音声出力装置４およびコントローラ２０は、ゲーム装置１０に接続される。
【００１２】
コントローラ２０は、ユーザが操作入力を行うための操作入力装置であり、またゲーム装置１０は、コントローラ２０における操作入力をもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号を生成する処理装置である。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム１について説明する。
【００１３】
撮像装置２は、ＣＣＤ撮像素子またはＣＭＯＳ撮像素子などから構成されるビデオカメラであり、実空間を所定の周期で撮像して、周期ごとのフレーム画像を生成する。たとえば、撮像装置２の撮像周期は３０枚／秒として、画像表示装置３のフレームレートと一致させてもよい。撮像装置２は、ＵＳＢ（Universal Serial Bus）あるいはその他のインタフェースを介してゲーム装置１０と接続する。
【００１４】
画像表示装置３は画像信号を出力するディスプレイであって、ゲーム装置１０において生成された画像信号を受けて、ゲーム画面を表示する。音声出力装置４は音声を出力するスピーカであって、ゲーム装置１０において生成された音声信号を受けて、ゲーム音声を出力する。画像表示装置３および音声出力装置４は、ゲームシステム１における出力装置を構成する。
【００１５】
ゲーム装置１０と画像表示装置３は、有線により接続されてもよく、また無線により接続されてもよい。ゲーム装置１０と画像表示装置３とはＡＶケーブルによって接続されてもよい。またゲーム装置１０と画像表示装置３との間には、ネットワーク（ＬＡＮ）ケーブルやワイヤレスＬＡＮなどで構築したホームネットワークが構築されてもよい。
【００１６】
コントローラ２０は、ユーザによる操作入力をゲーム装置１０に伝送する機能をもち、本実施例ではゲーム装置１０との間で無線通信可能な無線コントローラとして構成される。コントローラ２０とゲーム装置１０は、Bluetooth（ブルートゥース）（登録商標）プロトコルを用いて無線接続を確立してもよい。ゲーム装置１０は、複数のコントローラ２０との無線接続を可能とし、すなわちゲームシステム１においては、ゲーム装置１０とコントローラ２０の１対Ｎ接続を実現できる。ゲーム装置１０は親機すなわちマスタとして機能し、コントローラ２０は子機すなわちスレーブとして機能する。なおコントローラ２０は、無線コントローラに限らず、ゲーム装置１０とケーブルを介して接続される有線コントローラであってもよい。
【００１７】
コントローラ２０は、図示しないバッテリにより駆動され、ゲームを進行させる操作入力を行うための複数のボタンやキーを有して構成される。ユーザがコントローラ２０のボタンやキーを操作すると、その操作入力が無線によりゲーム装置１０に送信される。ゲーム装置１０は、コントローラ２０からゲームアプリケーションに関する操作入力を受信し、操作入力に応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置３および音声出力装置４により出力される。またゲーム装置１０は、ゲームアプリケーションの進行状況に応じて、コントローラ２０を振動させる振動制御信号をコントローラ２０に送信する機能ももつ。コントローラ２０は振動子を有し、振動制御信号を受信すると振動子を振動させる。
【００１８】
本実施例のゲームシステム１において、コントローラ２０は、複数の発光素子を有して構成される。複数の発光素子はそれぞれ同色のＬＥＤであって、ゲームアプリケーションで設定されるコントローラ番号を表現するインジケータとしての役割をもつ。ゲームアプリケーションにおけるコントローラ番号は、たとえばゲーム開始時にゲームキャラクタを選択する際などにユーザに利用されるため、ユーザに何らかの手段でコントローラ番号を通知する必要がある。そのためコントローラ２０では、複数のＬＥＤのうち、たとえば１番目のＬＥＤが点灯していればコントローラ番号が１であり、また２番目のＬＥＤが点灯していればコントローラ番号が２であるとしてユーザにコントローラ番号を知らしめる。なお、複数のＬＥＤの組合わせによりコントローラ番号を表現することも可能である。
【００１９】
コントローラ２０が有線コントローラである場合には、コントローラ２０から延びるケーブルコネクタをゲーム装置１０のポートに差し込んだ位置でコントローラ番号を決定することも可能である。しかしながら、複数のポートを備えたマルチポート装置をゲーム装置１０に外付けして使用するような場合には、ユーザはすぐにコントローラ番号を知ることはできないため、複数のＬＥＤを用いてユーザにコントローラ番号を通知することが好ましい。
【００２０】
ゲームシステム１においては、コントローラ２０のＬＥＤを、コントローラ番号のインジケータとしてだけではなく、ゲームアプリケーションの進行に影響を与えるゲーム入力としても利用する。この場合、ＬＥＤの制御は、インジケータとして点灯するのではなく、ゲームアプリケーションへの入力としての点灯に切り替えられる。撮像装置２はコントローラ２０のＬＥＤを撮像し、フレーム画像を生成してゲーム装置１０に供給する。ゲーム装置１０は、フレーム画像を取得して、フレーム画像におけるＬＥＤ画像の位置からコントローラ２０のフレーム画像中の位置や姿勢を推定して取得し、取得した位置情報および／または姿勢情報をゲームアプリケーションの処理に反映する。すなわち、本実施例のゲーム装置１０は、コントローラ２０において入力された操作入力だけでなく、取得したコントローラ２０の位置情報や姿勢情報も用いてゲームアプリケーションを処理して、その処理結果を示す画像信号を生成する機能をもつ。
【００２１】
図２は、コントローラの外観構成を示す。コントローラ２０には、方向キー２１、アナログスティック２７と、４種の操作ボタン２６が設けられている。方向キー２１、アナログスティック２７、操作ボタン２６は、筐体上面３０に設けられた入力部である。４種のボタン２２〜２５には、それぞれを区別するために、異なる色で異なる図形が記されている。すなわち、○ボタン２２には赤色の丸、×ボタン２３には青色のバツ、□ボタン２４には紫色の四角形、△ボタン２５には緑色の三角形が記されている。コントローラ２０の筐体背面２９には、複数のＬＥＤが設けられている。
【００２２】
ユーザは左手で左側把持部２８ａを把持し、右手で右側把持部２８ｂを把持して、コントローラ２０を操作する。方向キー２１、アナログスティック２７、操作ボタン２６は、ユーザが左側把持部２８ａ、右側把持部２８ｂを把持した状態で操作可能なように、筐体上面３０上に設けられる。
【００２３】
筐体上面３０には、ＬＥＤ付きボタン３１も設けられる。ＬＥＤ付きボタン３１は、たとえば画像表示装置３にメニュー画面を表示させるためのボタンとして利用される。また、ＬＥＤの発光状態によりユーザへのメールの着信の知らせや、コントローラ２０のバッテリの充電状態などを示す機能ももつ。たとえば充電中は赤色、充電が終了すると緑色に点灯し、充電残存量が残り少ないときには赤色を点滅させるようにＬＥＤを点灯させる。
【００２４】
ユーザは画像表示装置３に表示されるゲーム画面を見ながらゲームを行うため、画像表示装置３は、矢印Ａで示すコントローラ２０の前方に存在している。そのため、通常は、画像表示装置３に対して、ＬＥＤを配置された筐体背面２９が向き合うことになる。本実施例において撮像装置２は、ゲームアプリケーションの実行中にＬＥＤを撮像する必要があるため、その撮像範囲が画像表示装置３と同じ方向を向くように配置されて、コントローラ２０の筐体背面２９と向き合うことが好ましい。一般にユーザは画像表示装置３の正面でゲームをプレイすることが多いため、撮像装置２は、その光軸の方向が画像表示装置３の正面方向と一致するように配置される。具体的に、撮像装置２は、画像表示装置３の近傍において、画像表示装置３の表示画面をユーザが視認可能な位置を撮像範囲に含むように配置されることが好ましい。これにより、撮像装置２は、ユーザの身体およびコントローラ２０を撮像できる。
【００２５】
図３は、コントローラの背面側の外観構成を示す。図３では、コントローラ２０の筐体上面３０における方向キー２１や操作ボタン２６などの図示を省略している。筐体背面２９にはＬＥＤ配設領域４２が設けられ、ＬＥＤ配設領域４２内に第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄが配置される。以下、第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄを総称する場合には、「ＬＥＤ４０」と表記する。ＬＥＤ配設領域４２は、筐体背面２９における中央領域に形成される。ＬＥＤ配設領域４２の中央部には、ＵＳＢコネクタ４６が設けられる。ＵＳＢコネクタ４６には、ゲーム装置１０から延びるＵＳＢケーブルが接続されて、コントローラ２０の充電処理を行うことができる。なおＵＳＢケーブルが接続されると、コントローラ２０を有線コントローラとして利用することも可能である。
【００２６】
筐体背面２９側には、操作ボタン４８ａ、４８ｂ、４８ｃ、４８ｄがＬＥＤ配設領域４２を挟んで左右に設けられる。操作ボタン４８ａ、４８ｂ、４８ｃ、４８ｄは、ユーザが左側把持部２８ａ、右側把持部２８ｂを把持した状態でも人差指の先端で操作可能な位置に設けられる。これにより、操作ボタン４８ａ、４８ｂ、４８ｃ、４８ｄの操作時に、ＬＥＤ４０は人差指によって隠れない。
【００２７】
ＬＥＤ４０は、コントローラ番号を表現するインジケータとして利用されるが、コントローラ２０を使用しているユーザからすると、一度確認できれば十分であって、常に見える筐体上面３０に配置することは好ましくない。一方、他のユーザが存在する場合には、ＬＥＤ４０を筐体背面２９に配置することで、他のユーザから見えやすくなるという利点がある。また筐体上面３０にはＬＥＤ付きボタン３１が存在するため、ＬＥＤ４０を配置するとユーザが区別しづらくなる。そのため、コントローラ２０は、ＬＥＤ４０を筐体背面２９に配置して構成される。
【００２８】
撮像装置２は、各画素におけるＲＧＢの輝度値を取得する。発光したＬＥＤ４０を正確に検出するためには、ＬＥＤ４０とＬＥＤ４０周辺の領域とのコントラストが大きいことが好ましい。そのためＬＥＤ配設領域４２は、その隣接する筐体色よりも明度の低い色をもち、たとえば黒色の配色を施される。ＬＥＤ配設領域４２は、黒色の半透明板として構成され、ＬＥＤ４０は、その背後すなわち筐体内部側に設けられる。これにより、ＬＥＤ４０は点灯していなければ撮像装置２からは見えず、点灯したときのみ撮像される。黒色半透明板は、光を拡散してＬＥＤ４０の狭指向性を広指向性に変える役割ももつ。ＬＥＤ４０をＬＥＤ配設領域４２に設けることで、発光したＬＥＤ４０とのコントラストを高めることができ、後の画像処理において、フレーム画像からＬＥＤ画像を効果的に抽出することが可能となる。
【００２９】
第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄは、所定の２次元パターンで配設される。たとえば第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄは、矩形の頂点を構成する位置に配設される。ゲーム装置１０は、この位置関係を予め把握しており、ＬＥＤ画像の抽出処理に利用する。なお各ＬＥＤ４０の近傍には、数字が刻印または印刷されており、ユーザは点灯したＬＥＤ４０の近傍の数字をみて、コントローラ番号を知ることができる。
【００３０】
図４は、コントローラの内部構成を示す。コントローラ２０は、無線通信モジュール５８、処理部６０、ＬＥＤ４０および振動子４４を備える。無線通信モジュール５８は、ゲーム装置１０の無線通信モジュールとの間でデータを送受信する機能をもつ。処理部６０は、コントローラ２０における所期の処理を実行する。
【００３１】
処理部６０は、メイン制御部５０、入力受付部５２、ＰＷＭ制御部５４および駆動部５６を有する。メイン制御部５０は、無線通信モジュール５８との間で必要なデータの送受を行う。
【００３２】
入力受付部５２は、方向キー２１、操作ボタン２６、アナログスティック２７などの入力部からの入力情報を受け付け、メイン制御部５０に送る。メイン制御部５０は、受け取った入力情報を無線通信モジュール５８に供給し、無線通信モジュール５８は、所定のタイミングでゲーム装置１０に送信する。また、無線通信モジュール５８はゲーム装置１０から振動制御信号を受け取ると、メイン制御部５０に供給し、メイン制御部５０は、振動制御信号をもとに振動子４４を振動させる駆動部５６を動作させる。駆動部５６は、振動子４４を駆動するためのスイッチとして構成されてもよく、また供給電圧のデューティ比を可変とするＰＷＭ制御部として構成されてもよい。
【００３３】
本実施例において、ＰＷＭ制御部５４は、第１ＰＷＭ制御部５４ａ、第２ＰＷＭ制御部５４ｂ、第３ＰＷＭ制御部５４ｃおよび第４ＰＷＭ制御部５４ｄから構成される。第１ＰＷＭ制御部５４ａ、第２ＰＷＭ制御部５４ｂ、第３ＰＷＭ制御部５４ｃおよび第４ＰＷＭ制御部５４ｄは、それぞれ第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄの点灯を制御するために設けられる。ＰＷＭ制御部５４は、ＬＥＤ４０に印加する電圧をＰＷＭ（パルス幅変調）により制御する。たとえば、ＰＷＭ制御部５４は、数ｋＨｚの高周波で印加電圧をＰＷＭ制御することで、ＬＥＤ４０の輝度を調整することができる。またＰＷＭ制御部５４は、数Ｈｚ〜１００Ｈｚ程度の低周波で印加電圧をＰＷＭ制御することで、撮像装置２においてＬＥＤ４０の点灯のオンオフを認識させることができる。
【００３４】
本実施例のゲームシステム１において、まず、ゲームシステム１に参加を希望するユーザのコントローラ２０が、ゲーム装置１０との間で通信を確立する。このとき、コントローラ２０の識別情報、たとえばブルートゥースアドレスがゲーム装置１０に受け渡され、以後の通信は、このブルートゥースアドレスをもとに行われる。なお、通信プロトコルとしてブルートゥースを利用しない場合には、ＭＡＣアドレスなどの機器アドレスが利用されてもよい。接続確立後、ユーザはゲームアプリケーションに参加できる。
【００３５】
このときコントローラ２０には、ゲーム装置１０からコントローラ番号を指示する情報が送信される。メイン制御部５０は、この番号指示情報をもとに、設定されたコントローラ番号に対応するＬＥＤ４０のみを点灯させる。これによりユーザは、自身のコントローラ２０のコントローラ番号を知ることができる。なお、番号指示情報の代わりに、コントローラ番号に対応するＬＥＤ４０の点灯を指示する制御信号がゲーム装置１０から送信されてもよい。このようにメイン制御部５０は、任意のＬＥＤ４０を点灯させることができる。
【００３６】
本実施例のゲームシステム１において、ゲーム装置１０は、全てのＬＥＤ４０ａ〜４０ｄを点灯した状態で撮像されたフレーム画像をもとに、コントローラ２０の位置および姿勢を推定する。推定した位置および姿勢は、実行するゲームアプリケーションの入力として利用される。またゲーム装置１０は、コントローラ２０の方向キー２１や操作ボタン２６などの操作入力も受け付ける。これらの入力情報をもとに、ゲーム装置１０は、ゲームアプリケーションのゲームパラメータを生成し、ゲームを進行制御して、ゲーム画像およびゲーム音声のＡＶデータを生成する。ＡＶデータは、画像表示装置３および音声出力装置４において出力される。ユーザは、ゲーム画面を見ながら、コントローラ２０を実空間上で動かし、さらには方向キー２１や操作ボタン２６を操作入力してゲームを行う。以下に、ゲーム装置１０における処理を説明する。
【００３７】
図５は、ゲーム装置の構成を示す。ゲーム装置１０は、入力部１００、画像処理部１０２、位置推定部１０４、点滅指示部１０６、無線通信モジュール１０８、アプリケーション処理部１１０および出力部１１２を備える。本実施例におけるゲーム装置１０の処理機能は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置１０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置１０のＣＰＵが、画像処理部１０２、位置推定部１０４、点滅指示部１０６、アプリケーション処理部１１０としての機能をもつ。なお、ハードウェアの構成上、ゲーム装置１０は複数のＣＰＵを有してもよい。このような場合、１つのＣＰＵがゲームアプリケーションを実行するアプリケーション処理部１１０として機能し、他のＣＰＵが、撮像装置２による撮影画像を処理する画像処理部１０２、位置推定部１０４、点滅指示部１０６として機能してもよい。
【００３８】
無線通信モジュール１０８は、コントローラ２０の無線通信モジュール５８との間で無線通信を確立する。同期確立フェーズにおいては、無線通信モジュール１０８が、周辺のコントローラ２０を含む端末機器に対して接続照会すなわち「問い合わせ」処理を行う。具体的には、無線通信モジュール１０８が、近くにいる端末機器に対してＩＱ（問い合わせ）パケットをブロードキャストする。ＩＱパケットを受信したコントローラ２０の無線通信モジュール５８は、BluetoothアドレスとBluetoothクロック情報を含むＦＨＳ（Frequency Hop Synchronization）パケットをゲーム装置１０に返信する。この時点における送受信では、周波数ホッピングパターンに関する同意がゲーム装置１０とコントローラ２０との間で確立していないので、問い合わせ専用に定義された固定ホッピングパターンが用いられる。
【００３９】
無線通信モジュール１０８は、コントローラ２０からＦＨＳパケットを受け取り、どのようなコントローラ２０が存在するかを把握した後、特定のコントローラ２０に対してＩＤパケットを送信する。これは無線通信モジュール１０８による「呼び出し」処理である。特定のコントローラ２０からＩＤパケットに対する応答が返ると、無線通信モジュール１０８はＦＨＳパケットをコントローラ２０に送信し、自分のアドレスとクロックをコントローラ２０に知らせる。これにより、ゲーム装置１０とコントローラ２０は、同一のホッピングパターンを共有できるようになる。
【００４０】
「呼び出し」を行うと、コントローラ２０とゲーム装置１０との間にピコネットが形成され、「接続」状態に入る。ピコネットとは、Bluetooth端末同士を近づけたときに、端末の間で一時的に形成されるネットワークを意味し、最大で８台のBluetooth端末が１つのピコネットに参加することができる。接続したコントローラ２０は、無線通信モジュール１０８からスレーブ識別子、つまり接続中のコントローラ２０に与えられる３ビットのアドレス（１〜７）を割り振られる。このスレーブ識別子は、AM_ADDR（アクティブメンバーアドレス）と呼ばれる。「接続」状態になると、通信リンク設定のための制御パケットが送受信され、これにより「データ転送」が可能となる。
【００４１】
接続状態になり、コントローラ２０がゲームアプリケーションに参加すると、アプリケーション処理部１１０は、コントローラ２０のコントローラ番号を割り当て、コントローラ番号を指示する番号指示情報を生成する。無線通信モジュール１０８は、番号指示情報をコントローラ２０に送信する。コントローラ２０は、番号指示情報を受信すると、対応するＬＥＤ４０を点灯させる。なお、無線通信モジュール１０８は、番号指示情報の代わりに、コントローラ番号に対応するＬＥＤ４０の点灯を指示する制御信号をコントローラ２０に送信してもよい。
【００４２】
ゲームアプリケーションが開始されると、点滅指示部１０６は、コントローラ２０に対して所定の周期で点滅するように点滅パターンを指示する制御信号を生成する。この点滅制御信号は、無線通信モジュール１０８からコントローラ２０に送信される。
【００４３】
入力部１００はＵＳＢインタフェースとして構成され、撮像装置２から所定の撮像周期（たとえば３０フレーム／秒）でフレーム画像を取得する。画像処理部１０２は、後述するＬＥＤ抽出アルゴリズムにしたがって、フレーム画像からＬＥＤ画像を抽出する。位置推定部１０４は、抽出されたＬＥＤ画像からＬＥＤ画像の位置情報を取得し、コントローラ２０の位置や姿勢を推定する。位置推定部１０４は、ＬＥＤ画像の位置情報を取得することから、位置取得部として機能してもよい。なおコントローラ２０の位置は、４つのＬＥＤ画像の重心位置に定められてよい。
【００４４】
点灯する４つのＬＥＤ４０の位置や姿勢から推定されるコントローラ２０の位置情報および／または姿勢情報は、ゲームアプリケーションの入力として利用される。そのため位置推定部１０４で推定されたコントローラ２０の位置情報および姿勢情報は、アプリケーション処理部１１０に逐次送られて、アプリケーションの処理に反映される。アプリケーション処理部１１０には、ユーザがコントローラ２０の方向キー２１などを操作した入力も無線通信モジュール１０８を介して送信される。アプリケーション処理部１１０は、コントローラ２０の位置・姿勢情報と、コントローラ２０における操作入力からゲームを進行させて、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する。画像信号および音声信号は出力部１１２からそれぞれ画像表示装置３および音声出力装置４に送られ、出力される。
【００４５】
図６は、画像処理部の構成を示す。画像処理部１０２は、フレーム画像取得部１３０、現フレームバッファ１３２、前フレームバッファ１３４、差分画像生成部１３６、２値化画像生成部１３８、論理演算部１４０およびＬＥＤ画像抽出部１４２を備える。
【００４６】
フレーム画像取得部１３０は、入力部１００からフレーム画像データを取得し、現フレームバッファ１３２に一時記憶させる。前フレームバッファ１３４には、一つ前のフレーム画像データが記憶されている。差分画像生成部１３６は、現フレームバッファ１３２に記憶されている現フレームデータと、前フレームバッファ１３４に記憶されている前フレームデータとの差分画像を生成する。フレーム画像中の座標（ｘ，ｙ）における前フレームデータのＲ画素値をＰｒ、Ｇ画素値をＰｇ、Ｂ画素値をＰｂとし、現フレームデータのＲ画素値をＣｒ、Ｇ画素値をＣｇ、Ｂ画素値をＣｂとしたとき、差分画像関数Ｆ（ｘ，ｙ）は、以下の数式で表現される。
【００４７】
【数１】
2007244534.tif 000003
【００４８】
ここでＴｈは、所定の閾値である。Ｆ（ｘ，ｙ）が０より大きければ、座標（ｘ，ｙ）の画素値が“１”に符号化され、表示上、その画素は白色とされる。一方、Ｆ（ｘ，ｙ）が０以下であれば、画素値が“０”に符号化され、表示上、その画素は黒色とされる。このように差分画像生成部１３６で生成される差分画像は、２値化処理された画像となる。差分画像を生成することで、前フレーム画像と現フレーム画像との間で動きのないオブジェクトの影響を取り除くことができる。
【００４９】
２値化画像生成部１３８は、現フレームデータを所定の閾値を用いて２値化処理して、２値化された画像を生成する。２値化画像生成部１３８は、所定の閾値より大きい輝度を保持する画素の画素値を“１”に符号化し、所定の閾値以下の輝度を保持する画素の画素値を“０”に符号化する。現フレーム画像の２値化画像を生成することで、現フレーム画像において明るいオブジェクトのみを抽出することができる。
【００５０】
論理演算部１４０は、差分画像生成部１３６で生成された差分画像と、２値化画像生成部１３８で生成された２値化画像とを論理演算した論理演算画像を生成する。詳細には、論理演算部１４０は、画素ごとに、差分画像の画素値と２値化画像の画素値との論理積演算を行うことで、論理積画像を生成する。これは、差分画像と２値化画像の対応する画素同士の画素値を数学的に論理積演算することで生成される。
【００５１】
図７（ａ）は、現フレーム画像を示す。現フレーム画像では、ユーザがコントローラ２０を把持してゲームをプレイし、右側には照明が点灯している状態が撮像されている。このときコントローラ２０の全ＬＥＤ４０が点灯している。なお、全てのＬＥＤ４０は、同一の点灯パターンにより、同一輝度で発光している。
図７（ｂ）は、現フレーム画像と前フレーム画像の差分画像を示す。前フレーム画像の位置からコントローラ２０を動かすと、数式（１）により差分画像が生成される。この例では、コントローラ２０や、コントローラ２０と一緒に動く体の少なくとも一部の領域が、白色画像（画素値が“１”になる）として取得される。なお、常にこのような白色画像が取得されるわけではなく、図７（ｂ）は、あくまでも数式（１）を満足したときに生成される差分画像の一例である。このとき、照明は動かないため、差分画像には含まれない。なお、ユーザがコントローラ２０を動かさなければ、コントローラ２０の白色画像は取得されない。
【００５２】
図８（ａ）は、現フレーム画像の２値化画像を示す。２値化画像では、図７（ａ）における高輝度領域、すなわち発光しているＬＥＤと、照明のランプとが２値化されて白色画像に変換される。他のノイズを防ぐために、２値化処理する際に設定する閾値は、ＬＥＤの発光輝度から所定のマージン値を減じた輝度値に設定されていることが好ましい。
図８（ｂ）は、論理積画像を示す。論理積画像は、図７（ｂ）に示す差分画像と、図８（ａ）に示す２値化画像との論理積演算を行う。差分画像および２値化画像において、白色画素の画素値は“１”であり、黒色画素の画素値は“０”である。したがって、両方の画像において白色画素として存在している画素のみが、論理積画像において白色画素として生成されることになる。
【００５３】
このように差分画像と２値化画像の論理積をとることで、ＬＥＤ画像を抽出しやすい論理積画像を生成できる。論理積画像は、ＬＥＤ画像抽出部１４２に送られる。
【００５４】
論理積画像が生成されると、前フレームバッファ１３４に保持されている前フレームデータは、現フレームバッファ１３２に保持されている現フレームデータにより上書きされる。この上書き処理は、前フレームバッファ１３４が差分画像生成部１３６に読み出された直後に行われてもよい。その後、現フレームバッファ１３２に保持されている現フレームデータは、次のフレームデータにより上書きされて、次のフレームにおける論理積画像の生成処理を実行する。
【００５５】
ＬＥＤ画像抽出部１４２は、論理積画像からＬＥＤ画像を抽出する。ＬＥＤ画像を抽出するためには、まず、ＬＥＤ画像の候補を検出する。続いて、任意の候補を第１ＬＥＤ４０ａと仮定し、その周辺領域を探索して、第２ＬＥＤ４０ｂとなりうるＬＥＤ画像候補があるか調査する。第２ＬＥＤ４０ｂが見つかれば、また第１ＬＥＤ４０ａの周辺領域を探索して、第３ＬＥＤ４０ｃとなりうるＬＥＤ画像候補があるか調査する。第３ＬＥＤ４０ｃが見つかれば、その周辺領域を探索して、第４ＬＥＤ４０ｄとなりうるＬＥＤ画像候補があるか調査する。この際、ＬＥＤ画像抽出部１４２は、複数のＬＥＤ４０により形成される２次元パターンを予め認識しており、この２次元パターンを利用して、ＬＥＤ画像の抽出処理を行う。以下では、説明の便宜上、コントローラ２０の筐体背面２９において、第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃ、第４ＬＥＤ４０ｄが正方形の頂点を構成するように配置されている場合を例にとる。
【００５６】
なおＬＥＤ画像抽出部１４２は、論理積画像を用いずに、２値化画像からＬＥＤ画像を抽出することも可能である。２値化画像には、ＬＥＤ画像以外のノイズも含まれることになるが、たとえば差分画像においてＬＥＤ画像を取得できない場合には、２値化画像を利用することで、ＬＥＤ画像の位置および姿勢を検出できる。以下に示す処理手順は、論理積画像および２値化画像のいずれを用いても実行できるが、論理積画像にはＬＥＤ画像以外のノイズ成分が少ないため、論理積画像を利用する方が処理速度は速い。
【００５７】
図９は、ＬＥＤ画像候補の検出処理の処理手順を示すフローチャートである。ＬＥＤ画像抽出部１４２は、論理積画像において、白色画素（画素値が“１”になっている画素）が連続して存在する領域を１つの連結領域として取得する（Ｓ１００）。次に、ＬＥＤ画像抽出部１４２は、白色画素連結領域の縁部分を抽出して、短辺および長辺を決定する（Ｓ１０２）。
【００５８】
ＬＥＤ画像抽出部１４２は、短辺が所定画素数Ｍａ以上の画素で構成されているか否かを判定する（Ｓ１０４）。短辺が画素数Ｍａより少ない画素で構成されている場合（Ｓ１０４のＮ）、ＬＥＤ画像抽出部１４２は、ＬＥＤ画像ではないとして、この白色画素連結領域の処理を終了する。短辺が画素数Ｍａ以上の画素で構成されている場合（Ｓ１０４のＹ）、ＬＥＤ画像抽出部１４２は、長辺が所定画素数Ｍｂ以下の画素で構成されているか否かを判定する（Ｓ１０６）。長辺が画素数Ｍｂより多い画素で構成されている場合（Ｓ１０６のＮ）、ＬＥＤ画像抽出部１４２は、ＬＥＤ画像ではないとして、この白色画素連結領域の処理を終了する。長辺が画素数Ｍｂ以下の画素で構成されている場合（Ｓ１０６のＹ）、ＬＥＤ画像抽出部１４２は、ＬＥＤ画像の候補であるとして、白色画素連結領域を構成する画素数を取得する（Ｓ１０８）。このＬＥＤ画像候補検出処理は、全ての白色画素連結領域に対して繰り返される。これにより、論理積画像に含まれるＬＥＤ画像候補を検出できる。なお、ＬＥＤ画像候補の座標は、連結領域の重心に設定する。
【００５９】
図１０は、ＬＥＤ抽出処理の処理手順を示すフローチャートである。ＬＥＤ画像抽出部１４２は、検出されたＬＥＤ画像候補のうち、任意のＬＥＤ画像候補を第１ＬＥＤ４０ａであると仮定する（Ｓ１２０）。次に、第１ＬＥＤ４０ａに対して、第２ＬＥＤ４０ｂとなりうる条件を満足するＬＥＤ画像候補が存在するか否かを判定する（Ｓ１２２）。第２ＬＥＤ４０ｂとなるＬＥＤ画像候補が存在すれば（Ｓ１２２のＹ）、第１ＬＥＤ４０ａおよび第２ＬＥＤ４０ｂに対して、第３ＬＥＤ４０ｃとなりうる条件を満足するＬＥＤ画像候補が存在するか否かを判定する（Ｓ１２４）。第３ＬＥＤ４０ｃとなるＬＥＤ画像候補が存在すれば（Ｓ１２４のＹ）、第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂおよび第３ＬＥＤ４０ｃに対して、第４ＬＥＤ４０ｄとなりうる条件を満足するＬＥＤ画像候補が存在するか否かを判定する（Ｓ１２６）。第４ＬＥＤ４０ｄとなるＬＥＤ画像候補が存在すれば（Ｓ１２６のＹ）、コントローラ２０の第１ＬＥＤ４０ａ〜第４ＬＥＤ４０ｄを抽出したことになる。なお、第２ＬＥＤ画像候補が存在しない場合（Ｓ１２２のＮ）、第３ＬＥＤ画像候補が存在しない場合（Ｓ１２４のＮ）、第４ＬＥＤ画像候補が存在しない場合（Ｓ１２６のＮ）は、別のＬＥＤ画像候補を第１ＬＥＤ４０ａと仮定して、図８の処理を再実行する。
【００６０】
ＬＥＤ抽出処理においては、処理負荷を軽減するために、コントローラ２０の姿勢が所定角度以上傾いていないことを処理条件として設定してもよい。ＬＥＤ４０は比較的指向性が強いため、コントローラ２０を傾けすぎると、撮像装置２において受光が難しくなる。このＬＥＤ４０の指向性を利用して、ＬＥＤ画像候補を探索する際に、第１ＬＥＤ４０ａから所定角度（たとえば４５°）よりも傾いていないことを条件としてＬＥＤ画像の抽出処理を行うことで、処理負荷を大幅に軽減することが可能となる。
【００６１】
本実施例では、前フレーム画像と現フレーム画像の差分画像を利用するため、コントローラ２０に動きがない場合は、ＬＥＤ４０の画像は差分画像から除かれる。そのため、差分画像を用いる場合には、図１０に示すＬＥＤ抽出処理により、必ずＬＥＤ画像が見つかるわけではない。位置推定部１０４は、図１０に示すＬＥＤ抽出処理によりＬＥＤ画像が見つからなかった場合は、コントローラ２０が前フレームの位置から動いていないものと推定し、前フレームにおけるコントローラ２０の位置情報および姿勢情報を取得する。このとき位置推定部１０４は、２値化画像を用いてＬＥＤ画像を抽出してもよい。
【００６２】
図１１は、図１０のＳ１２２に示す第２ＬＥＤ検出処理の処理手順を示すフローチャートである。第１ＬＥＤ４０ａと仮定したＬＥＤ画像候補の構成画素数をＮとする。まずＬＥＤ画像抽出部１４２は、ＬＥＤ画像候補の画素数が１／２×Ｎ以上であって、且つ２Ｎ以下であるか否かを判定する（Ｓ１４０）。これは、ＬＥＤ画像であれば、大きさや形は第１ＬＥＤ４０ａと大きく変わらないという事実に基づいている。ＬＥＤ画像候補の構成画素数が、構成画素数Ｎに対して所定の範囲内にあれば（Ｓ１４０のＹ）、そのＬＥＤ画像候補が第１ＬＥＤ４０ａの右方に存在するか否かを判定する（Ｓ１４２）。右方であるか否かの判断は、第１ＬＥＤ４０ａの右上４５°から右下４５°の範囲内に存在するか否かにより決定される。第１ＬＥＤ４０ａの右方にある場合（Ｓ１４２のＹ）、第１ＬＥＤ４０ａとＬＥＤ画像候補との距離Ｄ１２が、Ｄａ以上であって且つＤｂ以下であるか否かを判定する（Ｓ１４４）。ここでは、互いの距離が近すぎたり、また離れすぎている場合には、第２ＬＥＤ４０ｂとして相応しくないことを判定している。距離Ｄ１２がＤａ以上であって且つＤｂ以下である場合（Ｓ１４４のＹ）、そのＬＥＤ画像候補が第２ＬＥＤ４０ｂとなりうることが判断され、第２ＬＥＤ４０ｂの存在が確認される（Ｓ１４６）。一方、ＬＥＤ画像候補の構成画素数が所定の範囲内にない場合（Ｓ１４０のＮ）、ＬＥＤ４０ａの右方に存在しない場合（Ｓ１４２のＮ）、距離Ｄ１２が所定の範囲内にない場合（Ｓ１４４のＮ）には、そのＬＥＤ画像候補が第２ＬＥＤ４０ｂでないと判断される。
【００６３】
図１２は、図１０のＳ１２４に示す第３ＬＥＤ検出処理の処理手順を示すフローチャートである。第１ＬＥＤ４０ａと仮定したＬＥＤ画像候補の構成画素数をＮとする。まずＬＥＤ画像抽出部１４２は、ＬＥＤ画像候補の画素数が１／２×Ｎ以上であって、且つ２Ｎ以下であるか否かを判定する（Ｓ１６０）。ＬＥＤ画像候補の構成画素数が、構成画素数Ｎに対して所定の範囲内にあれば（Ｓ１６０のＹ）、そのＬＥＤ画像候補が第１ＬＥＤ４０ａの下方に存在するか否かを判定する（Ｓ１６２）。下方であるか否かの判断は、第１ＬＥＤ４０ａの左下４５°から右下４５°の範囲内に存在するか否かにより決定される。第１ＬＥＤ４０ａの下方にある場合（Ｓ１６２のＹ）、第１ＬＥＤ４０ａとＬＥＤ画像候補との距離が、１／√２×Ｄ１２以上であって且つ√２Ｄ１２以下であるか否かを判定する（Ｓ１６４）。ここでは、互いの距離が近すぎたり、また離れすぎている場合には、第３ＬＥＤ４０ｃとして相応しくないことを判定している。距離が１／√２×Ｄ１２以上であって且つ√２Ｄ１２以下である場合（Ｓ１６４のＹ）、第１ＬＥＤ４０ａから第２ＬＥＤ４０ｂまでの線分と、第１ＬＥＤ４０ａからＬＥＤ画像候補までの線分の角度が所定の範囲内であるか否かが判定される（Ｓ１６６）。このとき、所定の範囲内にあれば（Ｓ１６６のＹ）、そのＬＥＤ画像候補が第３ＬＥＤ４０ｃとなりうることが判断され、第３ＬＥＤ４０ｃの存在が確認される（Ｓ１６８）。一方、ＬＥＤ画像候補の構成画素数が所定の範囲内にない場合（Ｓ１６０のＮ）、ＬＥＤ４０ａの下方に存在しない場合（Ｓ１６２のＮ）、第１ＬＥＤ４０ａとの距離が所定の範囲内にない場合（Ｓ１６４のＮ）、角度が所定の範囲内にない場合（Ｓ１６６のＮ）には、そのＬＥＤ画像候補が第３ＬＥＤ４０ｃでないと判断される（Ｓ１７０）。
【００６４】
図１３は、図１０のＳ１２６に示す第４ＬＥＤ検出処理の処理手順を示すフローチャートである。第１ＬＥＤ４０ａと仮定したＬＥＤ画像候補の構成画素数をＮとする。まずＬＥＤ画像抽出部１４２は、ＬＥＤ画像候補の画素数が１／２×Ｎ以上であって、且つ２Ｎ以下であるか否かを判定する（Ｓ１８０）。ＬＥＤ画像候補の構成画素数が、構成画素数Ｎに対して所定の範囲内にあれば（Ｓ１８０のＹ）、第１ＬＥＤ４０ａから第２ＬＥＤ４０ｂのベクトルと、第３ＬＥＤ４０ｃとＬＥＤ画像候補のベクトルのなす角度が所定値以下であるか否かを判定する（Ｓ１８２）。第１ＬＥＤ４０ａから第２ＬＥＤ４０ｂのベクトルと、第３ＬＥＤ４０ｃとＬＥＤ画像候補のベクトルのなす角度が所定値以下であれば（Ｓ１８２のＹ）、第１ＬＥＤ４０ａから第３ＬＥＤ４０ｃのベクトルと、第２ＬＥＤ４０ｂとＬＥＤ画像候補のベクトルのなす角度が所定値以下あるか否かを判定する（Ｓ１８４）。第１ＬＥＤ４０ａから第３ＬＥＤ４０ｃのベクトルと、第２ＬＥＤ４０ｂとＬＥＤ画像候補のベクトルのなす角度が所定値以下であれば（Ｓ１８４のＹ）、そのＬＥＤ画像候補が第４ＬＥＤ４０ｄとなりうることが判断され、第４ＬＥＤ４０ｄの存在が確認される（Ｓ１８６）。一方、ＬＥＤ画像候補の構成画素数が所定の範囲内にない場合（Ｓ１８０のＮ）、第１ＬＥＤ４０ａから第２ＬＥＤ４０ｂのベクトルと、第３ＬＥＤ４０ｃとＬＥＤ画像候補のベクトルのなす角度が所定値を超える場合（Ｓ１８２のＮ）、第１ＬＥＤ４０ａから第３ＬＥＤ４０ｃのベクトルと、第２ＬＥＤ４０ｂとＬＥＤ画像候補のベクトルのなす角度が所定値を超える場合は（Ｓ１８４のＮ）、そのＬＥＤ画像候補が第４ＬＥＤ４０ｄでないと判断される（Ｓ１８８）。
【００６５】
以上により、ＬＥＤ画像抽出部１４２は、論理積画像から第１ＬＥＤ４０ａ〜第４ＬＥＤ４０ｄの画像を抽出することができる。抽出された第１ＬＥＤ４０ａ〜第４ＬＥＤ４０ｄの画像の位置情報は、位置推定部１０４に送られる。
【００６６】
位置推定部１０４は、コントローラ２０におけるＬＥＤ４０の２次元配置に基づき、第１ＬＥＤ４０ａ〜第４ＬＥＤ４０ｄの画像のフレーム画像における位置情報を取得する。位置推定部１０４は、抽出した第１ＬＥＤ４０ａ、第２ＬＥＤ４０ｂ、第３ＬＥＤ４０ｃおよび第４ＬＥＤ４０ｄのアフィン変換を求めて、実空間における位置および姿勢を算出する。実空間における位置は、直交座標系における座標（Ｘ，Ｙ，Ｚ）であり、実空間における姿勢は、Ｘ軸、Ｙ軸、Ｚ軸における回転角である。３軸における座標および回転角を求めることで、位置推定部１０４は、撮像装置２からの距離も含めた空間内での位置を推定できる。位置推定部１０４は、アフィン変換を求めることで、コントローラ２０のフレーム画像中の位置を推定してもよい。たとえば、ＸＹＺ空間のうちのＸＹ座標をとることでフレーム画像中の位置を取得することができる。位置推定部１０４は、推定したコントローラ２０の位置や姿勢をアプリケーション処理部１１０に送る。
【００６７】
ＬＥＤ４０の誤認識を回避するために、位置推定部１０４は、前回取得したＬＥＤ画像の位置と、今回取得したＬＥＤ画像の位置の変化量が所定値を超える場合、今回取得したＬＥＤ画像の位置をエラーとして処理する。すなわち、１フレームの間に、位置や姿勢が所定値以上変化する場合は、外乱的な要素により他のオブジェクトをＬＥＤ４０として誤認識した可能性があるため、抽出したＬＥＤ４０の位置情報を破棄する。
【００６８】
しかしながら、そのような場合であっても、実際に大きな変化量でコントローラ２０が移動することもあり得るため、位置推定部１０４は、連続して発生するエラーの回数をカウントし、カウント値が所定値に到達した場合に、そのときに取得したＬＥＤ画像の位置を正常なものとして処理してもよい。
【００６９】
位置推定部１０４は、たとえば現フレーム画像や、論理積画像をもとに、ＬＥＤ４０の移動方向や速度を推定することも可能である。たとえば撮像装置２のシャッタースピードを落とすと、ＬＥＤ４０の画像が楕円や直方体として撮像されることになる。そこで、ＬＥＤ画像の形状から、移動方向のみならず、移動速度も推定することが可能である。たとえば移動方向および速度が推定できれば、撮像装置２において突然見えなくなった場合でも、コントローラ２０の位置や姿勢を予測できる。全てのＬＥＤ４０の形状が同じ方向に偏っているような場合に、コントローラ２０の移動方向と速度を推定してもよい。
【００７０】
アプリケーション処理部１１０は、推定されたコントローラ２０の位置や姿勢を、ゲーム入力としてゲームアプリケーションの処理に反映する。この反映の手法は様々考えられるが、最も直観的には、推定したコントローラ２０の位置に対応したゲーム画像中の位置に、仮想オブジェクトを追従させて表示する。ユーザが撮像装置２に対してコントローラ２０を動かすと、その動きに追従してゲーム画像内の仮想オブジェクトを動かすことができる。
【００７１】
なお、理想的な状態であればフレーム画像ごとにＬＥＤ４０の位置や姿勢を求めてゲーム画像に反映していけばよいが、一方で、コントローラ２０の向きや周辺光の環境などにより、フレーム画像においてＬＥＤ４０の位置や姿勢を求められない状況も発生しうる。そのような状況が続いた後に、突然、ＬＥＤ４０の位置や姿勢が求められると、停止していた仮想オブジェクトが新たな位置にいきなり移動することになり、ユーザに違和感を与える。そのため、論理積画像からＬＥＤ４０の位置や姿勢を検出できたとしても、ゲーム画像としては、仮想オブジェクトを取得した位置まで移動させるのではなく、仮に情報落ちがあった場合であっても、スムーズな動きを実現できるように追従処理を行わせることとする。
【００７２】
図１４（ａ）、図１４（ｂ）は、コントローラに対応する仮想オブジェクトがゲーム画面内で円滑な追従動作を実現するためのアルゴリズムを説明するための図である。説明の便宜上、仮想オブジェクトの位置変化について説明するが、姿勢変化についても同様のアルゴリズムを適用することができる。
【００７３】
位置推定部１０４において、アフィン変換を求めることで導出された位置パラメータが、Ｐｉ−１、Ｐｉ、Ｐｉ＋１（Ｐの添字は、ゲーム画面フレームの番号を示す）とする。まず、フレーム画像が切り替り、ＰｉからＰｉ＋１に位置パラメータが変化する場合を考える。
新たな位置パラメータ（Ｐｉ＋１）が得られたとき、ゲーム画面に反映する位置パラメータは、以下の式で求められる。
Ｑｉ＋１＝（Ｑｉ＋Ｐｉ＋１）／２
すなわち、新たな位置パラメータＰｉ＋１に直接移動するのではなく、前フレームのゲーム画面における位置パラメータと、現フレームの新たな位置パラメータＰｉ＋１との中点を、ゲーム画面における新たな位置パラメータとして設定する。なお、位置パラメータＱｉ＋１は、位置パラメータＱｉと位置パラメータＰｉ＋１の中点である必要はなく、位置パラメータＱｉと位置パラメータＰｉ＋１の間の線分をＡ：Ｂに分割する点であってもよい。
【００７４】
図１２（ｂ）は、位置パラメータとしてＰｉ＋１が取得できなかった場合の例である。このような場合は、本アルゴリズムの効果を発揮できる。この場合は、最新の位置パラメータがＰｉ＋１の代わりに利用される。ここで最新の位置パラメータはＰｉであり、
Ｑｉ＋１＝（Ｑｉ＋Ｐｉ）／２
として求められる。
本アルゴリズムによりゲーム画像における位置パラメータＱを取得すると、空間内のコントローラ２０が大きく変位したり、また論理積画像から抽出できない場合であっても、仮想オブジェクトは常に少しずつ移動できる。そのため、ゲーム画像中で仮想オブジェクトが急に動かなくなったり、また急に動いたりする状況の発生を回避でき、コントローラ２０に対して円滑な追従処理を実現できる。
【００７５】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７６】
本実施例では、コントローラ２０を撮像装置２で撮像して、フレーム画像からコントローラ２０の位置や姿勢を推定し、その位置情報や姿勢情報をゲームアプリケーションの処理に反映させることとした。コントローラ２０のＬＥＤ４０は、たとえばゲームアプリケーションの進行状況に応じて点灯パターンを変更してもよい。
【００７７】
ユーザがゲームアプリケーションに参加した直後に、ゲーム装置１０は、コントローラ２０に対して所定の低周波で４つのＬＥＤ４０を点灯させる制御信号を送信してもよい。点滅指示部１０６は、コントローラ２０に対して所定の低周波での点滅パターンを指示する制御信号を生成する。この低周波点滅制御信号は、無線通信モジュール１０８からコントローラ２０に送信される。なお、複数のコントローラ２０が存在する場合には、コントローラ２０ごとに点滅周波数が設定される。
【００７８】
コントローラ２０は、指定された低周波でＬＥＤ４０を点灯し、撮像装置２は、３０枚／秒の撮像周期でフレーム画像を撮像する。ゲーム装置１０は、複数のフレーム画像から、所定の周期で点灯をオンオフしているＬＥＤ画像を抽出する。ゲームシステム１内に複数のコントローラ２０が存在する場合は、コントローラ２０ごとに点灯の周期を設定する。これにより、コントローラ２０の位置を確認できるとともに、それぞれのコントローラ２０を区別して認識することもできる。この処理は、理想的にはゲームアプリケーションに参加後、１回行われればよいが、実空間内ではコントローラ２０が撮像装置２から突然見えなくなることもある。そのため、数秒ごとなどの所定の周期で、各コントローラ２０は、コントローラごとに設定された低周波でＬＥＤ４０を点滅させてもよい。
【００７９】
たとえば４つのＬＥＤ４０が低周波で点灯と消灯を行う場合には、ＬＥＤ４０を撮像できるフレームと、撮像できないフレームとが所定の周期で切り替わることになる。撮像周期（３０フレーム／秒）に対して、ＬＥＤ４０を４５Ｈｚで点灯制御すると、連続した２枚のフレームで撮像され、次は撮像されない、という状況が繰り返される。フレーム画像に撮像される場合と撮像されない場合とがあるため、ＬＥＤ４０が静止した状態であっても、位置情報を取得できる。
【００８０】
ここで低周波点灯とは、撮像周期に対して、ＬＥＤ発光が撮像されるフレームと撮像されないフレームとが存在しうるような周波数での点灯を意味する。一方、高周波点灯とは、撮像装置２の撮像周期（３０フレーム／秒）に対して常にフレーム画像に撮像されるような周波数での点灯を意味する。たとえば、１ｋＨｚでＬＥＤ４０を点灯した場合であっても、たとえば撮像装置２の撮像周期が非常に高ければ、ＬＥＤ発光が撮像されるフレームと撮像されないフレームとが出現するため、ＬＥＤ４０が静止した状態であっても、位置情報を取得できる。
【００８１】
高周波点灯するＬＥＤ４０の位置や姿勢は、ゲームアプリケーションの入力として利用される。そのため、位置推定部１０４で推定されたコントローラ２０の位置情報は、アプリケーション処理部１１０に逐次送られて、アプリケーションの処理に反映される。アプリケーション処理部１１０には、ユーザがコントローラ２０の方向キー２１などを操作した入力も無線通信モジュール１０８を介して送信される。アプリケーション処理部１１０は、コントローラ２０の位置・姿勢情報と、コントローラ２０における操作入力からゲームを進行させて、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する。
【００８２】
また、変形例として、４つのＬＥＤ４０のうちの１つを他のＬＥＤ４０とは異なる点滅パターンで点灯させることで、特定のＬＥＤ４０を認識することも可能となる。たとえば３つのＬＥＤは高周波点灯を行い、１つのＬＥＤに低周波点灯を行わせることで、たとえばフレーム画像中の第１ＬＥＤ４０ａがどれであるのかを確認することも可能となる。
【００８３】
実空間におけるコントローラ２０の位置や姿勢を検出してゲームアプリケーションの処理に反映することで、新たなゲームアプリケーションを実現できる。テニスゲームを例にとると、フレーム画像におけるコントローラ２０の高さをテニスボールの打点高さとし、コントローラ２０の向きをボールの打球方向、コントローラ２０を動かす速度を、ボールを打ち込む強さとして、コントローラ２０を動かすことでゲームを進行させることができる。これらの動きは、実際のラケットを振る動きに近似しているため、テニスを実際にプレイするのに近い感覚をユーザに与えることができる。このとき、コントローラ２０のボタンやキーをゲーム入力としてそのまま利用できるようにすることで、従来のゲーム操作入力を維持しながら、感覚的に斬新なゲーム入力を行わせることができる。このように、コントローラ２０にインジケータとして設けたＬＥＤを有効に活用することで、ゲームアプリケーションの幅を一層広げることができる。
【００８４】
たとえば、ボールを打ち込む強さをコントローラ２０のボタン操作により定めてもよい。従来型のボタン操作と、斬新なゲーム入力とを組み合わせることで、新しい遊技性を実現できる。たとえば、相手のコートにボールを落とす位置をコントローラ２０の向きで指定しながら、ボタン入力を行うことでボールを上げ、さらにコントローラ２０を動かすことで、強いサーブを打てるようなテニスゲームを作ることも可能である。
【００８５】
ゲームアプリケーションとしては、たとえばオートバイのドライブゲームで、コントローラ２０の姿勢を操作することで、オートバイをコントロールするゲーム入力として利用してもよい。このとき、スピードはコントローラ２０を動かす速度で決定してもよく、またボタン入力で決定してもよい。このように、従来型のボタン入力と、コントローラ２０の位置や姿勢による静的な入力と、またコントローラ２０の移動速度などの状態変化をもとにした動的な入力とを組み合わせて利用することで、ゲームアプリケーションの操作性を向上できる。
【００８６】
たとえば、コントローラ２０が画像表示装置３の画面からフレームアウトしそうな場合、アプリケーション処理部１１０は、コントローラ２０の位置情報をもとに、ユーザに対してフレームアウトしそうな旨を通知する処理を行ってもよい。たとえば、コントローラ２０がフレームアウトしそうな場合に、コントローラ２０に対して振動子を振動させるための振動制御信号を生成して、無線通信モジュール１０８より送信させてもよい。また、コントローラ２０の動きに追従する仮想オブジェクトをゲーム画像として表示させている場合には、ユーザに目立つように仮想オブジェクトを動かすことで、フレームアウトしそうなことをユーザに伝えてもよい。フレームアウトしそうであるか否かは、たとえばフレーム画像の位置で決定してもよく、フレーム画像の縁部に近い位置にコントローラ２０の位置が推定される場合に、この通知処理を行ってもよい。
【００８７】
実施例において開示された発明の特徴は、次の項目によって規定されてもよい。
（項目１）
入力されるフレーム画像から発光体画像の位置を取得する画像処理装置であって、
前フレーム画像と現フレーム画像の差分画像を生成する差分画像生成部と、
現フレーム画像を所定の閾値を用いて２値化処理して２値化画像を生成する２値化画像生成部と、
前記差分画像と前記２値化画像とを論理演算した論理演算画像を生成する論理演算部と、
前記論理演算画像から発光体画像を抽出する抽出部と、
発光体画像のフレーム画像における位置を取得する位置取得部と、
を備えることを特徴とする画像処理装置。
（項目２）
前記論理演算部は、画素ごとに、前記差分画像の画素値と前記２値化画像の画素値との論理積演算を行うことで、論理演算画像を生成することを特徴とする項目１に記載の画像処理装置。
（項目３）
前記抽出部は、複数の発光体により形成される２次元パターンを予め認識しており、当該２次元パターンを利用して、発光体画像の抽出処理を行うことを特徴とする項目１または２に記載の画像処理装置。
（項目４）
前記位置取得部は、前回取得した発光体画像の位置と今回取得した発光体画像の位置の変化量が所定値を超える場合、今回取得した発光体画像の位置を、エラーとして処理することを特徴とする項目１から３のいずれかに記載の画像処理装置。
（項目５）
前記位置取得部は、連続して発生するエラーの回数をカウントし、カウント値が所定値に到達した場合に、そのときに取得した発光体画像の位置を正常なものとして処理することを特徴とする項目４に記載の画像処理装置。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図２】コントローラの外観構成を示す図である。
【図３】コントローラの背面側の外観構成を示す図である。
【図４】コントローラの内部構成を示す図である。
【図５】ゲーム装置の構成を示す図である。
【図６】画像処理部の構成を示す図である。
【図７】（ａ）は現フレーム画像を示す図であり、（ｂ）は現フレーム画像と前フレーム画像の差分画像を示す図である。
【図８】（ａ）は現フレーム画像の２値化画像を示す図であり、（ｂ）は論理積画像を示す図である。
【図９】ＬＥＤ画像候補の検出処理の処理手順を示すフローチャートである。
【図１０】ＬＥＤ抽出処理の処理手順を示すフローチャートである。
【図１１】図１０のＳ１２２に示す第２ＬＥＤ検出処理の処理手順を示すフローチャートである。
【図１２】図１０のＳ１２４に示す第３ＬＥＤ検出処理の処理手順を示すフローチャートである。
【図１３】図１０のＳ１２６に示す第４ＬＥＤ検出処理の処理手順を示すフローチャートである。
【図１４】コントローラに対応する仮想オブジェクトがゲーム画面内で円滑な追従動作を実現するためのアルゴリズムを説明するための図である。
【符号の説明】
【００８９】
１・・・ゲームシステム、２・・・撮像装置、３・・・画像表示装置、４・・・音声出力装置、１０・・・ゲーム装置、２０・・・コントローラ、２９・・・筐体背面、３０・・・筐体上面、３１・・・ＬＥＤ付きボタン、４０・・・ＬＥＤ、４０ａ・・・第１ＬＥＤ、４０ｂ・・・第２ＬＥＤ、４０ｃ・・・第３ＬＥＤ、４０ｄ・・・第４ＬＥＤ、４２・・・ＬＥＤ配設領域、５０・・・メイン制御部、５２・・・入力受付部、５４・・・ＰＷＭ制御部、５４ａ・・・第１ＰＷＭ制御部、５４ｂ・・・第２ＰＷＭ制御部、５４ｃ・・・第３ＰＷＭ制御部、５４ｄ・・・第４ＰＷＭ制御部、５６・・・駆動部、５８・・・無線通信モジュール、６０・・・処理部、１００・・・入力部、１０２・・・画像処理部、１０４・・・位置推定部、１０６・・・点滅指示部、１０８・・・無線通信モジュール、１１０・・・アプリケーション処理部、１１２・・・出力部、１３０・・・フレーム画像取得部、１３２・・・現フレームバッファ、１３４・・・前フレームバッファ、１３６・・・差分画像生成部、１３８・・・２値化画像生成部、１４０・・・論理演算部、１４２・・・ＬＥＤ画像抽出部。
【図１】
2007244534.tif 000004
【図２】
2007244534.tif 000005
【図３】
2007244534.tif 000006
【図４】
2007244534.tif 000007
【図５】
2007244534.tif 000008
【図６】
2007244534.tif 000009
【図７】
2007244534.tif 000010
【図８】
2007244534.tif 000011
【図９】
2007244534.tif 000012
【図１０】
2007244534.tif 000013
【図１１】
2007244534.tif 000014
【図１２】
2007244534.tif 000015
【図１３】
2007244534.tif 000016
【図１４】
2007244534.tif 000017