Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4837405B2 - 座標算出装置および座標算出プログラム - Google Patents
[go: Go Back, main page]

JP4837405B2 - 座標算出装置および座標算出プログラム - Google Patents

座標算出装置および座標算出プログラム Download PDF

Info

Publication number
JP4837405B2
JP4837405B2 JP2006064437A JP2006064437A JP4837405B2 JP 4837405 B2 JP4837405 B2 JP 4837405B2 JP 2006064437 A JP2006064437 A JP 2006064437A JP 2006064437 A JP2006064437 A JP 2006064437A JP 4837405 B2 JP4837405 B2 JP 4837405B2
Authority
JP
Japan
Prior art keywords
coordinate
position coordinates
coordinates
target position
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2006064437A
Other languages
English (en)
Other versions
JP2007241735A (ja
Inventor
敬三 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=36441382&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP4837405(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2006064437A priority Critical patent/JP4837405B2/ja
Priority to US11/405,664 priority patent/US7834848B2/en
Priority to EP06008497.7A priority patent/EP1832967B1/en
Publication of JP2007241735A publication Critical patent/JP2007241735A/ja
Application granted granted Critical
Publication of JP4837405B2 publication Critical patent/JP4837405B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a three-dimensional [3D] space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • G06F3/0325Detection arrangements using opto-electronic means using a plurality of light emitters or reflectors or a plurality of detectors forming a reference frame from which to derive the orientation of the object, e.g. by triangulation or on the basis of reference deformation in the picked up image

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Position Input By Displaying (AREA)
  • Length Measuring Devices By Optical Means (AREA)

Description

本発明は、座標算出装置および座標算出プログラムに関し、より特定的には、撮像手段を用いて所定のマーカを撮像することによって座標を算出するための座標算出装置および座標算出プログラムに関する。
特許文献1には、撮像手段を備えたポインティングデバイスが開示されている。このポインティングデバイスは、表示画面上における任意の位置を指定するためのものである。ポインティングデバイスは、撮像手段によって撮像された画像中の2つのマーカを検出し、画像内におけるマーカの位置を算出する。そして、ポインティングデバイスが指定する表示画面上の位置(指定位置)をマーカの位置から算出する。また、特許文献1には、赤色および緑色の2色のマーカを用いる場合、表示画面にはマーカの色を表示しないこと(段落0029)や、撮像画像の中に2つのマーカが検出されない場合にはエラー処理を行うこと(段落0042)が記載されている。
特開平8−335136号公報
特許文献1に記載されたポインティングデバイスでは、2つのマーカが検出されない場合、すなわち、マーカが1つでも撮像できなくなった場合にはエラー処理が行われる。つまり、撮像された画像に2つのマーカが含まれている場合に限りポインティングデバイスの操作が可能となる。したがって、1つのマーカが検出できなかった場合には、たとえもう1つのマーカが検出されていてもポインティングデバイスの操作が不可能となるので、ポインティングデバイスの操作が不可能になる可能性が高かった。
また、ユーザがポインティングデバイスを動かすことができる範囲は、2つのマーカが撮像される範囲に限られるので、狭い範囲でしかポインティングデバイスを動かすことができず、ユーザにとって使いにくいものになるおそれがあった。特に、2つのマーカ間の距離が大きい場合や、ポインティングデバイスとマーカとの距離が近い場合には、少なくとも一方のマーカの画像が撮像画像の端に近い部分に位置することになる。この場合、ポインティングデバイスを少し動かしただけでも撮像画像から一方のマーカが消失してエラー処理がなされてしまう。
それ故、本発明の目的は、操作可能な範囲を広くし、操作不可能になるおそれが少ない座標算出装置および座標算出プログラムを提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、撮像装置(撮像素子40)によって撮像される撮像画像から、撮像画像に対応する平面(図9に示す座標平面)上における所定の2つの撮像対象(マーカ8aおよび8b)の位置を示す2つの対象位置座標(マーカ座標)を算出する座標算出装置(ゲーム装置3およびコントローラ7)である。座標算出装置は、座標検出手段(画像処理回路41)と、ベクトル設定手段(ステップS63およびS64、または、ステップS92およびS93を実行するCPU10等。以下、単にステップ番号のみを示す。)と、座標決定手段(S62,S66およびS67、または、S96およびS98)とを備える。座標検出手段は、撮像画像内において所定条件に合致する領域の位置座標(検出座標)を当該領域毎に検出する。ベクトル設定手段は、撮像画像内における2つの位置座標の相対的な位置関係を示すベクトル(想定ベクトル)を設定する。座標決定手段は、座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の対象位置座標に決定し、当該1つの位置座標とベクトルとを用いて他方の対象位置座標を決定する。
第2の発明においては、ベクトル設定手段は、撮像装置の傾きを算出する傾き算出手段によって算出された傾きに基づいてベクトルの方向を設定する方向設定手段(S63)と、所定の長さとなるようにベクトルの長さを設定する長さ設定手段(S64)とを含んでいてもよい。
第3の発明においては、座標算出装置は、座標決定手段によって決定された2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データ(マーカ座標データ534aおよび534b)を、座標決定手段による決定が行われる度に記憶する対象位置記憶手段(メインメモリ13)をさらに備えていてもよい。このとき、長さ設定手段は、最後に記憶された対象位置座標データにより示される2つの対象位置座標を結ぶ長さとなるようにベクトルの長さを設定する。
第4の発明においては、方向設定手段は、撮像装置が所定の傾きとなった状態において傾き算出手段によって算出される傾きと、当該状態において撮像装置によって撮像される撮像画像から検出される2つの撮像対象の位置座標を結ぶ方向との対応関係に基づいてベクトルの方向を設定してもよい。
第5の発明においては、傾き算出手段は、撮像装置と共通の筐体に固定的に配置され、撮像装置の撮像方向に垂直な2軸方向の加速度を検出する加速度センサ(37)を含んでいてもよい。このとき、ベクトル設定手段は、加速度センサによって検出された各軸方向の加速度に基づいてベクトルを算出する。
第6の発明においては、座標算出装置は、座標決定手段によって決定された2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データ(マーカ座標データ534aおよび534b)を、座標決定手段による決定が行われる度に記憶する対象位置記憶手段(メインメモリ13)をさらに備えていてもよい。このとき、ベクトル設定手段は、最後に記憶された対象位置座標データから2つの対象位置座標を結ぶベクトル(前回ベクトル)を算出または取得する。
第7の発明においては、座標決定手段は、座標検出手段によって検出された位置座標のうちの1つの位置座標が、2つの対象位置座標のうちの第1の対象位置座標および第2の対象位置座標のいずれであるかを決定する第1決定手段(S62)と、第1決定手段によって第1の対象位置座標が決定されたとき、当該第1の対象位置座標にベクトルを加算することによって第2の対象位置座標を決定し、第1決定手段によって第2の対象位置座標が決定されたとき、当該第2の対象位置座標からベクトルを減算することによって第1の対象位置座標を決定する第2決定手段(S66およびS67)とを含んでいてもよい。
第8の発明においては、座標算出装置は、座標決定手段によって決定された2つの対象位置座標を含む対象位置座標データ(マーカ座標データ534aおよび534b)を、座標決定手段による決定が行われる度に記憶する対象位置記憶手段(メインメモリ13)をさらに備えていてもよい。このとき、第1決定手段は、前記座標検出手段によって検出されたそれぞれの位置座標と、最後に記憶された対象位置座標データにより示される第1の対象位置座標および第2の対象位置座標それぞれとの距離を算出し、座標検出手段によって検出された位置座標のうちのある位置座標と、最後に記憶された対象位置座標データにより示される第1の対象位置座標との距離が最短となるとき、当該ある位置座標を第1の対象位置座標に決定し、座標検出手段によって検出された位置座標のうちのある位置座標と、最後に記憶された対象位置座標データにより示される第2の対象位置座標との距離が最短となるとき、当該ある位置座標を第2の対象位置座標に決定する。
第9の発明においては、座標決定手段は、仮座標算出手段(S94)と、決定実行手段(S96およびS97)とを含んでいてもよい。仮座標算出手段は、座標検出手段によって検出された位置座標のうちの1つを確定座標として当該確定座標の位置座標にベクトルを加算した位置座標を第1仮座標とし、当該位置座標からベクトルを減算した位置座標を第2仮座標として算出する。決定実行手段は、第1仮座標および第2仮座標のうちで第1仮座標のみが撮像画像の領域外となったとき、当該第1仮座標と確定座標とを2つの対象位置座標に決定し、第1仮座標および第2仮座標のうちで第2仮座標のみが撮像画像の領域外となったとき、当該第2仮座標と確定座標とを2つの対象位置座標に決定する。
第10の発明においては、座標算出装置は、座標検出手段によって検出された位置座標が2つ以上であるとき、当該各位置座標を用いて2つの対象位置座標を算出する対象位置座標算出手段(S12またはS17)をさらに備えていてもよい。このとき、座標決定手段は、対象位置座標算出手段によって2つの対象位置座標を算出することが不可能であったとき、2つの対象位置座標を決定する。
第11の発明は、撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置である。座標算出装置は、座標検出手段(画像処理回路41)と、基準設定手段(S35またはS75)と、選択手段(S41またはS81)と、判定手段(S13、S18、またはS22)と、出力手段(S41またはS81)と、ベクトル設定手段(S63およびS64、または、S92およびS93)と、座標決定手段(S62,S66およびS67、または、S96およびS98)とを備える。座標検出手段は、撮像画像内において所定条件に合致する領域の位置座標を当該領域毎に検出する。基準設定手段は、座標検出手段によって複数の位置座標が検出されたとき、撮像画像内における2つの位置座標を結ぶ方向と当該2つの位置座標間の長さとの少なくともいずれかに対する基準を設定する。選択手段は、複数の位置座標のうちの2つの位置座標の組み合わせの中から、基準設定手段によって設定された基準に最も近い2つの位置座標の組み合わせを選択する。判定手段は、選択手段によって選択された2つの位置座標が選択できたか否かを判定する。出力手段は、判定手段による判定結果が肯定であるとき、選択手段によって選択された2つの位置座標を2つの対象位置座標として出力する。ベクトル設定手段は、判定手段による判定結果が否定であるとき、撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定する。座標決定手段は、判定手段による判定結果が否定であるとき、座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の対象位置座標に決定し、当該1つの位置座標とベクトルとを用いて他方の対象位置座標を決定する。
なお、本発明は、上記発明を座標算出装置のコンピュータに実行させるための座標算出プログラムの形態で提供されてもよい。
第1の発明によれば、ベクトル設定手段によって設定されたベクトルを用いて、検出された位置座標からもう一方の対象位置座標を算出することができる。したがって、位置座標が1つしか検出されなかった場合でも、もう一方の座標をベクトルによって推定することによって2つの対象位置座標を決定することができる。
第2の発明によれば、傾き算出手段によって撮像装置の傾きを算出し、当該傾きに対応する方向を示すベクトルを設定することによって、撮像装置の傾きを考慮して2つの対象位置座標を決定することができる。2つ対象位置座標を結ぶ方向は撮像装置の傾きに対応するので、撮像装置の傾きを考慮して2つの対象位置座標を決定することによって、2つの対象座標位置を正確に決定することができる。
第3の発明によれば、以前の対象位置座標のデータを用いて、当該対象位置座標間の長さとなるようにベクトルの長さが設定される。ここで、選択処理が1秒間に数十〜数百回の頻度で実行される場合等には、以前の対象位置座標から今回の対象位置座標への変化量が大きくないと想定することができる。したがって、ベクトルの長さを、以前の対象位置座標間の長さとすることによって、2つの対象位置座標を正確に選択することができる。
第4の発明によれば、以前の対象位置座標のデータを用いて、当該対象位置座標間の長さとなるようにベクトルの方向および長さが設定される。上述したように、選択処理が1秒間に数十〜数百回の頻度で実行される場合等には、以前の対象位置座標から今回の対象位置座標への変化量が大きくないと想定することができる。したがって、以前の対象位置座標のデータを用いてベクトルを設定することによって、2つの対象座標位置をより正確に選択することができる。
第5の発明によれば、撮像装置の傾きと、対象位置座標を結ぶ方向との対応関係に基づいて第1ベクトルが算出されるので、撮像装置の傾きに対応した第1ベクトルを正確に算出することができる。
第6の発明によれば、加速度センサを用いることによって、重力加速度(すなわち、9.8m/s2 )に応じた加速度センサの出力信号から撮像装置の傾きを容易に検出することができる。
第7の発明によれば、検出された位置座標に対してベクトルを加算または減算することによって、もう一方の対象位置座標を正確に算出することができる。
第8の発明によれば、検出された位置座標のうちで、以前の対象位置座標に最も近い位置座標が一方の対象位置座標に決定される。さらに、決定された対象位置座標が、以前の対象位置座標(第1および第2の対象位置座標)のいずれに近かったかによって、決定された対象位置座標が第1の対象位置座標であるか第2の対象位置座標であるかが決定される。これによって、第8の発明によれば、検出された位置座標が第1の対象位置座標であるか第2の対象位置座標であるかを正確に決定することができる。また、他方の対象位置座標を算出するためにベクトルを加算するか減算するかを正確に判断することができる。
第9の発明によれば、対象位置座標のうち検出されなかった方の位置座標は、撮像画像の外側にあると推定することによって、以前の対象位置座標のデータを用いたり、撮像装置の傾きを算出したりすることなく、簡易にもう一方の対象位置座標を決定することができる。
第10の発明によれば、2つ以上の検出された位置座標を用いて対象位置座標を算出する方法によって対象位置座標が算出することができなかった場合に、1つの検出された位置座標を用いて対象位置座標を算出する方法が行われる。これによって、対象位置座標を算出する確実性を高めることができるとともに、対象位置座標が算出不可能となる可能性を低くすることができる。
第11の発明によれば、基準設定手段によって設定された基準を用いることによって、複数の位置座標の中から2つの対象位置座標を選択することができる。したがって、ノイズの影響によって3つ以上の位置座標が座標検出手段によって検出された場合でも、その中から2つの位置座標を特定することができ、ノイズの影響を排除することができる。これによって、ノイズの影響があった場合でも撮像対象の位置座標を算出することができる。さらに、第11の発明によれば、基準を用いて対象位置座標を選択する方法によって得られた対象位置座標が正しいものでない可能性を、対象位置座標と基準との類似度を用いて判定する。そして、類似度が所定値を上回っている場合、すなわち、上記可能性が高い場合、1つの位置座標と、ベクトル設定手段によって設定されたベクトルとを用いて、当該位置座標からもう一方の対象位置座標を算出する。これによって、検出される位置座標の数がいくつであっても対象位置座標を算出することができる。また、基準を用いて対象位置座標を選択する方法を先に行うことによって、正しい対象位置座標が算出される確率を高めることができるとともに、ベクトルを用いた方法を後に行うことによって、対象位置座標が算出不可能となる可能性を低くすることができる。
図1を参照して、本発明の一実施形態に係る座標算出装置の一例であるゲーム装置を含むゲームシステム1について説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明の座標算出装置について説明する。
図1において、ゲームシステム1は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作データを与えるコントローラ7によって構成される。また、モニタ2の周辺(図では画面の上側)には、2つのマーカ8aおよび8bが設置される。マーカ8aおよび8bは、具体的には赤外LEDであり、それぞれモニタ2の前方に向かって赤外光を出力する。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される操作データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、その内部に備える通信部36(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて操作データを無線送信する。コントローラ7は、操作対象(モニタ2に表示されるオブジェクト)を操作するための操作手段である。コントローラ7は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像するための撮像情報演算部35(後述)を備えている。すなわち、撮像情報演算部35は、モニタ2の周辺に配置された各マーカ8aおよび8bを撮像対象として、各マーカ8aおよび8bの画像を撮像する。ゲーム装置3は、この画像を用いてコントローラ7の位置および姿勢に対応した操作信号を得る。
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ11には、所定のバスを介して、コントローラI/F(インターフェース)16、ビデオI/F17、外部メモリI/F18、オーディオI/F19、およびディスクI/F21が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ22、およびディスクドライブ20が接続されている。
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、これらを用いてモニタ2に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ11およびビデオI/F17を介してモニタ2に出力する。
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムや各種データ等がCPU10によって実行される。
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F19を介してモニタ2に備えるスピーカ22に出力させる。
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F16は、例えば4つのコントローラI/Fで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F16を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの操作データを受信し、コントローラI/F16を介して当該操作データをCPU10へ出力する。なお、他の実施形態においては、ゲーム装置3は、受信ユニット6に代えて、コントローラ7から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU10に出力される。ビデオI/F17には、モニタ2が接続される。外部メモリI/F18には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F19にはモニタ2に内蔵されるスピーカ22が接続され、DSP14がARAM15から読み出したサウンドデータやディスクドライブ20から直接出力されるサウンドデータをスピーカ22から出力可能に接続される。ディスクI/F21には、ディスクドライブ20が接続される。ディスクドライブ20は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F19に出力する。
次に、図3〜図7を参照して、コントローラ7について説明する。図3〜図5は、コントローラ7の外観構成を示す斜視図である。図3Aは、コントローラ7の上面後方から見た斜視図であり、図3Bは、コントローラ7を下面後方から見た斜視図である。図4は、コントローラ7を前方から見た図である。
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7を用いることによって、それに設けられたボタンを押下することと、コントローラ7自体の位置や向きを変えることとによってゲーム操作を行うことができる。例えば、プレイヤは、長手方向を軸としてコントローラ7を回転させることによって、操作対象に移動動作を行わせることができる。また、プレイヤは、コントローラ7によって指し示される画面上の位置を変える操作によって、ゲーム空間に登場するオブジェクトを移動させることができる。ここで、「コントローラ7によって指し示される画面上の位置」とは、理想的には、コントローラ7の前端部から上記長手方向に延ばした直線とモニタ2の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ7によって指し示される画面上の位置を「指示位置」と呼ぶ。また、コントローラ7(ハウジング31)の長手方向を、「コントローラ7の指示方向」と呼ぶことがある。
ハウジング31には、複数の操作ボタンが設けられる。ハウジング31の上面には、十字キー32a、Xボタン32b、Yボタン32c、Bボタン32d、セレクトスイッチ32e、メニュースイッチ32f、およびスタートスイッチ32gが設けられる。一方、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはAボタン32iが設けられる。これらの各ボタン(スイッチ)は、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング31の上面には、遠隔からゲーム装置3本体の電源をオン/オフするための電源スイッチ32hが設けられる。
また、コントローラ7は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射口35aが設けられる。一方、ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、例えば32ピンのエッジコネクタであり、コントローラ7に他の機器を接続するために利用される。また、ハウジング31上面の後面側には複数のLED34が設けられる。ここで、コントローラ7には、他のコントローラ7と区別するためにコントローラ種別(番号)が付与される。LED34は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ操作データを送信する際、上記コントローラ種別に応じて複数のLED34のいずれか1つが点灯する。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。図5Aおよび図5Bは、コントローラ7の内部構造を示す図である。なお、図5Aは、コントローラ7の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す基板300は、図5Aに示す基板300の裏面から見た斜視図となっている。
図5Aにおいて、ハウジング31の内部には基板300が固設されており、当該基板300の上主面上に操作ボタン32a〜32h、加速度センサ37、LED34、水晶振動子46、無線モジュール44、およびアンテナ45等が設けられる。そして、これらは、基板300等に形成された配線(図示せず)によってマイコン42(図6参照)に接続される。また、無線モジュール44およびアンテナ45によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子46は、後述するマイコン42の基本クロックを生成する。
一方、図5Bにおいて、基板300の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ7の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41によって構成されおり、それぞれ基板300の下主面に取り付けられる。また、基板300の下主面上の後端縁にコネクタ33が取り付けられる。そして、撮像情報演算部35の後方であって基板300の下主面上に操作ボタン32iが取り付けられていて、それよりさらに後方に、電池47が収容される。電池47とコネクタ33との間の基板300の下主面上には、バイブレータ48が取り付けられる。このバイブレータ48は、例えば振動モータやソレノイドであってよい。バイブレータ48が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
図6は、コントローラ7の構成を示すブロック図である。コントローラ7は、上述した操作部32(各操作ボタン)および撮像情報演算部35の他に、その内部に通信部36および加速度センサ37を備えている。
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ7の動きでも追跡して解析することができる。
具体的には、撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8aおよび8bは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ38を設けることによってマーカ8aおよび8bの画像をより正確に撮像することができる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ39が集光した赤外線を撮像する。したがって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を算出する。画像処理回路41は、各マーカ8aおよび8bの撮像画像内における位置を示す各座標値を撮像データとして通信部36へ出力する。なお、画像処理回路41における処理の詳細については後述する。
図6に示すように、コントローラ7は3軸の加速度センサ37を備えていることが好ましい。この3軸の加速度センサ37は、3方向、すなわち、上下方向(図3Aおよび図3Bに示すY軸)、左右方向(図3Aおよび図3Bに示すX軸)、および前後方向(図3Aおよび図3Bに示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ37は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ37は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ37が提供されてもよい。
当業者には公知であるように、加速度センサ37に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ37からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ37は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
しかしながら、加速度センサ37から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ37からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを推測することができる。このように、加速度センサ37をマイコン42(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を決定することができる。同様に、加速度センサ37を備えるコントローラ7が例えばユーザの手で動的に加速されて動かされる場合に、加速度センサ37によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出または推測することができる。他の実施例では、加速度センサ37は、信号をマイコン42に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。
この3軸の加速度センサの加速度出力を用いて、X軸方向、Y軸方向およびZ軸方向に対するコントローラ7の傾きを算出することができる。このように、ゲーム装置3は、撮像した画像からだけではなく加速度センサ37からの加速度信号を用いることによってもZ軸を中心としたコントローラ7の回転角を判定することができる。加速度センサ37で検知された加速度を示すデータは通信部36に出力される。
他の実施形態では、加速度センサ37の代わりに、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ37と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途に応じていずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、前記初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性も当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
通信部36は、マイクロコンピュータ(Micro Computer:マイコン)42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理の際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータを無線送信する無線モジュール44を制御する。
操作部32、加速度センサ37、および撮像情報演算部35からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。ここで、通信部36から受信ユニット6への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン42は、受信ユニット6への送信タイミングが到来すると、メモリ43に格納されているデータを操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ7から送信される。微弱電波信号はゲーム装置3側の受信ユニット6で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
なお、図3〜図5に示したコントローラ7の形状や、各操作スイッチの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ7における撮像情報演算部35の位置(撮像情報演算部35の光入射口35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ7の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子40の撮像方向となる。
上記コントローラ7を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ7自身の位置を動かしたり、コントローラ7を回転させたりするというゲーム操作を行うことができる。以下、上記コントローラ7を用いたゲーム操作について説明する。
図7は、コントローラ7を用いてゲーム操作するときの状態を概説する図解図である。図7に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ7を把持する。ここで、マーカ8aおよび8bは、モニタ2の画面の横方向と平行に配置されている。プレイヤは、コントローラ7の前面(撮像情報演算部35が撮像する光の入射口側)がマーカ8aおよび8bの方向を向く状態でコントローラ7を把持する。この状態で、プレイヤは、コントローラ7が指し示す画面上の位置(指示位置)を変更したり、コントローラ7と各マーカ8aおよび8bとの距離を変更したりすることによってゲーム操作を行う。
図8は、マーカ8aおよび8bとコントローラ7との視野角を説明するための図である。図8に示すように、各マーカ8aおよび8bは、それぞれ視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部35の撮像素子40は、上記コントローラ7の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。例えば、各マーカ8aおよび8bの視野角θ1は共に34°(半値角)であり、撮像素子40の視野角θ2は41°である。プレイヤは、撮像素子40が2つのマーカ8aおよび8bからの赤外光を受光することが可能な位置および向きとなるように、コントローラ7を把持する。具体的には、撮像素子40の視野角θ2の中に少なくとも一方のマーカ8aおよび8bが存在し、かつ、マーカ8aまたは8bの少なくとも一方の視野角θ1の中にコントローラ7が存在する状態となるように、プレイヤはコントローラ7を把持する。この状態にあるとき、コントローラ7は、マーカ8aおよび/または8bを検知することができる。プレイヤは、この状態を満たす範囲でコントローラ7の位置および向きを変化させることによってゲーム操作を行うことができる。なお、コントローラ7の位置および向きがこの範囲外となった場合、コントローラ7の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
操作可能範囲内でコントローラ7が把持される場合、撮像情報演算部35によって各マーカ8aおよび8bの画像が撮像される。すなわち、撮像素子40によって得られる撮像画像には、撮像対象である各マーカ8aおよび8bの画像(対象画像)が含まれる。図9は、対象画像を含む撮像画像の一例を示す図である。なお、図9において、点線で囲まれる領域A1は撮像画像内の領域を示す。対象画像を含む撮像画像の画像データを用いて、画像処理回路41は、各マーカ8aおよび8bの撮像画像における位置を表す座標を検出する。
具体的には、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に検出する。ここで、所定条件とは、対象画像を検出するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域(高輝度領域)であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を検出するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。撮像画像の画像データにおいて対象画像は高輝度領域として現れるので、画像処理回路41は、まず、この高輝度領域を対象画像の候補として検出する。次に、検出された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ8aおよび8bの画像8a’および8b’の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。上記の判定処理は、対象画像であるマーカ8aおよび8bの画像8a’および8b’とそれ以外の画像とを区別し、対象画像を正確に検出するための処理である。具体的には、当該判定処理においては、検出された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路41は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子40の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子40によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、重心位置の座標は、(0,0)から(1024,768)までの整数値で表現される。なお、撮像画像における位置は、図9に示すように、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とする座標系(xy座標系)で表現されるものとする。画像処理回路41は、上記算出処理によって算出された座標を示すデータを出力する。出力された座標のデータは、上述したように、マイコン42によって操作データとしてゲーム装置3に送信される。なお、本実施例では、撮像画像から対象画像の位置を示す座標を算出する処理までをコントローラ7の画像処理回路41および/またはマイコン42で行ったが、例えば撮像画像をゲーム装置3に送り、以降の処理と同等の処理をゲーム装置3のCPU10等で行わせることもできる。
以上のようにして、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に検出する。なお、以下では、画像処理回路41によって検出される座標を、後述するマーカ座標と区別する目的で「検出座標」と呼ぶことがある。
ここで、画像処理回路41によってマーカ8aおよび8bが正しく検出される場合、検出座標の数は2個になるが、マーカが正しく検出されない場合には、上記所定範囲内の大きさとなる高輝度領域の数が2個になるとは限らないので、検出座標の数が0個になったり、1個になったり、3個以上になったりすることもある。例えば、撮像画像にノイズが含まれる場合には、3つ以上の座標が検出されることがあり得る。撮像画像にノイズが含まれる場合とは、例えば、モニタ2の画面にマーカと同じような画像が表示されたり、モニタ2の周辺にマーカと同様の赤外光を放射する物体が存在したりする場合である。また、例えば、コントローラ7とマーカ8aおよび8bとが離れすぎていたり、コントローラとマーカ8aおよび8bとの間に何らかの障害物が存在したりする場合には、2つの座標が検出されず、0個または1個の座標のみが検出されることがあり得る。さらに、マーカ8aおよび8bのいずれか一方のみがコントローラ7の撮像素子40の視野角に含まれる場合には、当該一方のマーカに対応する1個の座標のみが検出される。
なお、検出座標が2個である場合、例えば後述するような方法(図16参照)によってコントローラ7の移動状態や回転状態を検出座標から検知することができる。しかし、検出される座標が2個でない場合には、検出座標をそのまま用いてもコントローラの移動や回転を正確に検知することができない。
そこで、本実施形態では、検出座標を用いて、マーカ8aおよび8bに対応する正しい2つの座標を算出する処理(算出処理)を行う。以下では、算出処理の結果算出される、マーカ8aおよび8bに対応する正しい2つの座標を「マーカ座標」と呼ぶ。さらに、本実施形態では、2つのマーカ座標を区別する目的で、マーカ座標の一方を第1マーカ座標と呼び、他方を第2マーカ座標と呼ぶ。なお、詳細は後述するが、本実施形態に係るゲーム装置3では、第1算出処理から第4算出処理という4種類の算出処理が用いられる。詳細は後述するが、本実施形態に係るゲーム装置3は、第1〜第4算出処理を状況に応じて使い分けることによって、第1〜第4算出処理を効果的に用いる。以下、図10〜図15を用いて第1〜第4算出処理の概要について説明する。
まず、第1算出処理について説明する。第1算出処理は、2つ以上の座標の中からマーカ座標を選択する処理である。第1算出処理は、検出座標が2つ以上の場合に用いることが可能である。図10は、第1算出処理を説明するための図である。図10において、点p1、点p2、および点p3は、今回検出された座標の位置を示す。つまり、図10においては、画像処理回路41によって3つの座標が検出され、当該3つの座標を示すデータを含む操作データがコントローラ7からゲーム装置3へ送信されたものとする。また、図10において、点P’1および点P’2は、前回のマーカ座標の位置を示し、具体的には、点P’1が第1マーカ座標に対応し、点P’2が第2マーカ座標に対応する。前回のマーカ座標とは、前回に決定されたマーカ座標、すなわち、画像処理回路41によって前回に検出された座標を用いた前回の算出処理の結果算出されたマーカ座標である。なお、図10において、点線で囲まれる領域A1は撮像画像の領域を示す。
第1算出処理において、まず、ゲーム装置3は、3つの検出座標の組み合わせの中から、正しいマーカ8aおよび8bの位置を示す2つの検出座標の組み合わせを選択する。具体的には、まず、ゲーム装置3は、検出座標のうちの1つを始点とし、他の1つを終点とするベクトルを全ての検出座標の組み合わせについて算出する。図10の例では、検出座標は3つであるので、ゲーム装置3は、次の6つのベクトルを算出する。
(1)点p1を始点とし点p2を終点とするベクトルv12
(2)点p2を始点とし点p1を終点とするベクトルv21
(3)点p1を始点とし点p3を終点とするベクトルv13
(4)点p3を始点とし点p1を終点とするベクトルv31
(5)点p2を始点とし点p3を終点とするベクトルv23
(6)点p3を始点とし点p2を終点とするベクトルv32
第1算出処理においては、これらのベクトルの中から基準となるベクトル(後述する前回ベクトル)に最も類似するベクトルが選択される。
次に、ゲーム装置3は、前回のマーカ座標によって決められる前回ベクトルを算出する。前回ベクトルは、検出座標から算出される各ベクトルから1つのベクトルを選択する基準となるベクトルである。本実施形態では、前回ベクトルは、第1マーカ座標を始点とし、第2マーカ座標を終点とするベクトルである。図10の例では、ゲーム装置3は、第1マーカ座標に対応する点P’1を始点とし、第2マーカ座標に対応する点P’2を終点とするベクトルVを前回ベクトルとして算出する。
次に、ゲーム装置3は、検出座標から算出された各ベクトルのうちで、前回ベクトルに最も類似するベクトルを選択する。本実施形態では、当該各ベクトルについて、ベクトルの長さおよび方向に関する類似度を算出し、類似度が最も高いベクトルを選択する。図10の例では、例えばベクトルv12が前回ベクトルVに最も類似するベクトルとして選択される。なお、類似度の算出方法については後述する。そして、選択したベクトルの始点となる座標を第1マーカ座標に決定し、終点となる座標を第2マーカ座標に決定する。
上記第1算出処理では、前回ベクトルに最も近いベクトルとなる2つの座標の組み合わせが選択される。ここで、2つのマーカ座標を算出する処理は、上述したように1秒間に数十〜数百回の頻度で実行される一方、当該処理が1回行われる間にプレイヤがコントローラをZ軸方向に平行移動させる距離はわずかであると考えられる。また、当該処理が1回行われる間にプレイヤがコントローラをZ軸周りに回転させる角度はわずかであると考えられる。したがって、マーカ座標を結ぶベクトルの長さおよび方向が上記処理が1回行われる間に変化する量は、わずかであると考えられる。それ故、検出された各座標の中から、前回ベクトルに最も近いベクトルとなる2つの座標を選択することによって、3つ以上の座標が検出される場合であっても2つのマーカ座標を正確に算出することができる。
次に、第2算出処理について説明する。第2算出処理は、第1算出処理と同様、2つ以上の座標の中からマーカ座標を選択する処理である。第2算出処理は、検出座標が2つ以上の場合に用いることが可能である。図11は、第2算出処理を説明するための図である。図11において、点p4、点p5、および点p6は、今回検出された座標の位置を示す。また、図11においてxy座標系の座標領域外に示されたベクトルV’は、想定ベクトルである。想定ベクトルとは、現在のマーカ座標を結ぶベクトルとして想定されるベクトルである。より具体的には、想定ベクトルは、現在の第1マーカ座標として想定される座標を始点とし、現在の第2マーカ座標として想定される座標を終点とするベクトルである。想定ベクトルは、加速度センサ37の出力に基づいて算出される。
第2算出処理において、まず、ゲーム装置3は、第1算出処理の場合と同様、3つの検出座標の組み合わせの中から、正しいマーカ8aおよび8bの位置を示す2つの検出座標の組み合わせを選択する。図11の例では、検出座標は3つであるので、ゲーム装置3は、点p4を始点とし点p5を終点とするベクトルv45、点p5を始点とし点p4を終点とするベクトルv54、点p4を始点とし点p6を終点とするベクトルv46、点p6を始点とし点p4を終点とするベクトルv64、点p5を始点とし点p6を終点とするベクトルv56、および、点p6を始点とし点p5を終点とするベクトルv65という6つのベクトルを算出する。第2算出処理においては、これらのベクトルの中から基準となるベクトル(想定ベクトル)に最も類似するベクトルが選択される。
次に、ゲーム装置3は、上記想定ベクトルを算出する。想定ベクトルは、第1算出処理で用いられる前回ベクトルと同様、検出座標から算出される各ベクトルから1つのベクトルを選択する基準となるベクトルである。本実施形態では、想定ベクトルは、加速度センサ37によって検知された加速度を示すベクトルに基づいて算出される。なお、想定ベクトルの具体的な算出方法については後述する。図11の例では、図11に示す想定ベクトルV’が算出されたものとする。なお、本実施形態における第2算出処理では、想定ベクトルV’は、例えばその長さが1の単位ベクトルである。
次に、ゲーム装置3は、検出座標から算出された各ベクトルのうちで、想定ベクトルにより示される方向に最も近い方向を示すベクトルを選択する。図11の例では、ベクトルv45により示される方向が想定ベクトルにより示される方向に最も近いので、ベクトルv45が選択される。ゲーム装置3は、選択したベクトルの始点となる座標を第1マーカ座標に決定し、終点となる座標を第2マーカ座標に決定する。
上記第2算出処理では、想定ベクトルの方向に最も近い方向を示すベクトルとなる2つの座標の組み合わせが選択される。第2算出処理では、加速度センサの加速度出力からコントローラ7の傾きを算出し、撮像画像においてマーカ8aおよび8bの画像がどのような位置関係となるかをコントローラ7の傾きから想定している。このように、第2算出処理では、コントローラ7の実際の傾きを考慮して選択を行うので、第2算出処理によれば、3つ以上の座標が検出される場合であっても2つのマーカ座標を正確に算出することができる。
以上のように、上記第1算出処理および第2算出処理によれば、複数の検出座標から2つのマーカ座標を選択するための基準が設定される。すなわち、第1算出処理では前回ベクトルが基準として設定され、第2算出処理では想定ベクトルが基準として設定される。このように、基準を用いることによって、検出座標が3つ以上である場合でも2つのマーカ座標を選択することができる。上記基準は、2つの座標間の長さを示すものであって、当該基準となる長さと2つの座標間の長さとをそれぞれ比較するものであってもよいし、上記第2算出処理で用いられる想定ベクトルのように、2つの座標を結ぶ方向を示すものであってもよいし、上記第1算出処理で用いられる前回ベクトルのように、2つの座標間の長さおよび2つの座標を結ぶ方向を示すものであってもよい。また、本実施形態では、上記基準は、前回のマーカ座標およびコントローラ7の傾きといった状況に応じて変化するものであったが、他の実施形態では、上記基準は予め定められていてもよい。例えば、撮像方向を軸とした傾きが一定の状態でコントローラ7を使用することが前提とされる場合には、x軸に平行な方向を示すベクトルを上記基準として用いてもよい。また、例えば、コントローラ7からマーカ8aおよび8bまでの距離がほぼ一定の状態でコントローラ7を使用することが前提とされる場合には、予め定められた所定長さのベクトルを上記基準として用いてもよい。
上記第1算出処理および第2算出処理は、検出座標が3つ以上の場合に正しい2つのマーカ座標を選択する目的で行われる処理である。ここで、第1算出処理では、前回のマーカ座標を用いて今回のマーカ座標を算出するのに対して、第2算出処理では、加速度センサ37の出力を用いて今回のマーカ座標を算出する点で両者は異なる。なお、加速度センサ37の検出精度等にもよるが、前回のマーカ座標の算出処理においてマーカ座標が正しく算出されている場合には、第1算出処理を用いることで正確にマーカ座標を算出することができる。一方、第2算出処理は、前回のマーカ座標を用いずに今回のマーカ座標を算出することができるので、前回のマーカ座標が算出されなかった場合、および、前回のマーカ座標が正確であるかどうか疑わしい場合には、第2算出処理を用いることが有効である。
次に、第3算出処理について説明する。第3算出処理は、検出座標のうちの1つをマーカ座標とし、マーカ座標とした検出座標からもう一方のマーカ座標を算出する処理である。なお、第3算出処理は、検出座標が1つ以上の場合に用いることが可能である。図12は、第3算出処理を説明するための図である。図12において、点p7および点p8は、今回検出された座標の位置を示す。図12において、点P’3および点P’4は、前回のマーカ座標の位置を示し、具体的には、点P’3が第1マーカ座標に対応し、点P’4が第2マーカ座標に対応する。また、図12においてxy座標系の座標領域外に示されたベクトルV’は、想定ベクトルである。第3算出処理では、想定ベクトルは、前回のマーカ座標および加速度センサ37の出力に基づいて算出される。
第3算出処理においては、まず、ゲーム装置3は、検出座標のうちで正しいマーカ8aおよび8bのいずれかに対応する検出座標を選択する。具体的には、前回のマーカ座標それぞれと検出座標それぞれとのの間の距離を算出し、距離が最短の組み合わせに含まれる検出座標を選択する。図12の例では、点P’3と点p7との距離をd1とし、点P’4と点p7との距離をd2とし、点P’3と点p8との距離をd3とし、点P’4と点p8との距離をd1とすると、点P’3と点p7との距離d1が最短となる。したがって、距離が最短となる組み合わせは、点P’3に対応する第1マーカ座標と点p7に対応する検出座標との組み合わせとなるので、当該組み合わせに含まれる検出座標が選択される。また、ゲーム装置3は、当該組み合わせに含まれる前回のマーカ座標が第1マーカ座標であるか第2マーカ座標であるかに従って、選択した検出座標が第1マーカ座標であるか第2マーカ座標であるかを決定する。図12の例では、点P’3に対応するマーカ座標は前回の第1マーカ座標であるので、点p7に対応する検出座標が第1マーカ座標に決定される。
次に、ゲーム装置3は、第2算出処理と同様に想定ベクトルを算出する。ここで、第2算出処理においては想定ベクトルは例えば長さが1の単位ベクトルであったのに対して、第3算出処理では、さらに想定ベクトルの長さが決定される。具体的には、ゲーム装置3は、想定ベクトルの長さを、前回の2つのマーカ座標間の長さとする。
次に、ゲーム装置3は、決定していないもう一方のマーカ座標を、想定ベクトルを用いて算出する。具体的には、第1マーカ座標がすでに決定している場合、もう一方のマーカ座標である第2マーカ座標は、第1マーカ座標の位置を基点とし、想定ベクトルの方向へ想定ベクトルの長さだけ移動した位置を示す座標となる。また、第2マーカ座標がすでに決定している場合、もう一方のマーカ座標である第1マーカ座標は、第2マーカ座標の位置を基点とし、想定ベクトルの逆方向へ想定ベクトルの長さだけ移動した位置を示す座標となる。図13は、第3算出処理におけるもう一方のマーカ座標を算出する処理を説明するための図である。図13の例においては、点p7の位置の座標が第1マーカ座標として決定されているものとする。このとき、もう一方のマーカ座標である第2マーカ座標は、点p9の位置を示す座標として算出される。なお、点p9は、補正された想定ベクトルの始点の位置を点p7とした場合における当該想定ベクトルの終点の位置である。なお、図13の例において点p7が第2マーカ座標であるとされる場合には、第1マーカ座標の位置は、補正された想定ベクトルの終点の位置を点p7とした場合における当該想定ベクトルの始点の位置となる。
上記第3算出処理では、検出座標の中から1つ目のマーカ座標を選択した後、2つ目のマーカ座標を想定ベクトルを用いて算出する。第2算出処理の説明おいて述べたように、想定ベクトルを用いることによってコントローラ7の実際の傾きを考慮して2つ目のマーカ座標を算出することができる。したがって、第3算出処理によれば、検出座標が1つの場合であっても2つのマーカ座標を結ぶ方向を正確に算出することができる。さらに、第3算出処理では、想定ベクトルの長さを、最後に算出されたマーカ座標間の長さとすることによって、2つのマーカ座標間の長さは前回のマーカ座標間の長さと同じになる。第1算出処理の説明において述べたように、2つのマーカ座標を算出する処理が1回行われる間にマーカ座標を結ぶベクトルの長さが変化する量は、わずかであると考えられる。したがって、第3算出処理によれば、検出座標が1つの場合であっても2つのマーカ座標を結ぶ長さを少ない誤差の範囲で決定することができる。つまり、第3算出処理によれば、検出座標が1つの場合であっても2つのマーカ座標を算出することができる。また、検出座標が2つ以上であっても、算出の結果の信頼性が低い場合には、第3算出処理によってより妥当なマーカ座標の算出を行うことができる。
次に、第4算出処理について説明する。第4算出処理は、検出座標が1つのみの場合に用いることが可能であり、検出座標を一方のマーカ座標とし、当該検出座標からもう一方のマーカ座標を算出する処理である。図14は、第4算出処理を説明するための図である。図14において、点p10は、今回検出された座標の位置を示す。図14において、点P’5および点P’6は、最後のマーカ座標の位置を示し、具体的には、点P’5が第1マーカ座標に対応し、点P’6が第2マーカ座標に対応する。ここで、最後のマーカ座標とは、最後に算出されたマーカ座標である。例えば、前回のマーカ座標の算出処理においてマーカ座標の算出に失敗したときには、前々回のマーカ座標が最後のマーカ座標となる。また、図14においてxy座標系の座標領域外に示されたベクトルV’は、想定ベクトルである。第4算出処理では、想定ベクトルは、第3算出処理と同様、前回のマーカ座標および加速度センサ37の出力に基づいて算出される。
第4算出処理においては、まず、ゲーム装置3は、検出座標を一方のマーカ座標とした場合における、もう一方のマーカ座標となり得る座標を算出する。ここでは、この座標を仮座標と呼ぶ。この仮座標は、上記想定ベクトルと検出座標とに基づいて算出することができる。ここで用いられる想定ベクトルは、その長さが最後のマーカ座標間の長さとされるベクトルである。具体的には、ゲーム装置3は、2つの仮座標を算出する。第1仮座標は、検出座標の位置を基点とし、想定ベクトルの方向へ想定ベクトルの長さだけ移動した位置を示す座標である。第2仮座標は、検出座標の位置を基点とし、想定ベクトルの逆方向へ想定ベクトルの長さだけ移動した位置を示す座標となる。図14の例においては、点p10の位置を示す座標が検出座標であるとき、2つの仮座標は、点p11の位置を示す座標および点p12の位置を示す座標となる。なお、点p12は、想定ベクトルの始点の位置を点p10とした場合における当該想定ベクトルの終点の位置であり、点p11は、想定ベクトルの終点の位置を点p10とした場合における当該想定ベクトルの始点の位置である。なお、図14に示すように、仮座標は撮像画像の領域A1の外側になることもあるが、領域A1の外側の位置は、(0,0)から(1024,768)の範囲外の座標値となるだけであり、領域A1の外側の位置であってもxy座標系によって表すことは可能である。
2つの仮座標が算出された後、ゲーム装置3は、2つの仮座標が妥当なマーカ座標であるか否かを判定する。具体的には、2つの仮座標のうちの一方のみが領域A1の外側となるとき、領域A1の外側の位置を示す仮座標がマーカ座標であると判定される。これは、検出座標が1つである理由として、片方のマーカが領域外であることが妥当な理由として考えられるからである。ここでは、領域内であればマーカが検出されているとみなし、領域内の仮座標はマーカ座標ではないものとみなす。なお、図15Aに示すように、2つの仮座標が共に領域A1の内側の位置となるとき、2つの仮座標は共にマーカ座標ではないと判定される。これは、どちらのマーカが妥当なマーカであるかの判別ができないからであり、また、上記のように、領域内であればマーカが検出されていると考えられるからである。また、図15Bに示すように、2つの仮座標が共に領域A1の外側の位置となるときは、どちらのマーカが妥当なマーカであるかの判別ができないため、2つの仮座標は共にマーカ座標ではないと判定される。なお、2つの仮座標は共にマーカ座標ではないと判定される場合、マーカ座標の認識は失敗となる。
上記第4算出処理では、検出座標を1つ目のマーカ座標として仮定し、2つ目のマーカ座標を、想定ベクトルを用いて算出する。したがって、第4算出処理によれば、検出座標が1つの場合であっても2つのマーカ座標を結ぶ長さを少ない誤差の範囲で決定することができる。つまり、第4算出処理によれば、検出座標が1つの場合であっても2つのマーカ座標を算出することができる。
上記第3算出処理および第4算出処理は、検出座標が1つの場合に2つのマーカ座標を算出する目的で行われる処理である。ここで、第3算出処理では、前回のマーカ座標を用いて今回のマーカ座標を算出するのに対して、第4算出処理では、最後のマーカ座標を用いて今回のマーカ座標を算出する点で両者は異なる。したがって、前回のマーカ座標が算出されている場合には、より確実にマーカ座標を算出することができる第3算出処理を用い、前回のマーカ座標が算出されていない場合に、前回のマーカ座標を用いずに今回のマーカ座標を算出することができる第4算出処理を用いる。
以上のようにして、2つのマーカ座標が算出されると、ゲーム装置3は、2つのマーカ座標を用いてコントローラ7の操作状態(上記指示位置、コントローラ7の傾き、およびコントローラ7から各マーカ8aおよび8bまでの距離)をゲーム操作として算出し、ゲーム操作に応じたゲーム処理を行う。すなわち、ゲーム装置3は、2つのマーカ座標を用いて、上記指示位置と、コントローラ7の指示方向を軸とした回転角度(姿勢)と、コントローラ7から各マーカ8aおよび8bまでの距離を算出することができる。
図16は、コントローラ7の位置および/または向きを変化させた場合における撮像画像の変化を示す図である。図16は、コントローラの状態と、その状態にあるときに得られる撮像画像との対応を示している。図16において、コントローラ7が状態Aにあるとき、第1マーカ座標の位置は点p’1の位置となり、第2マーカ座標の位置は点p’2の位置となっている。このとき、2つのマーカ座標の位置は、x軸方向にほぼ平行な配置となる。
図16に示す状態Bは、状態Aから指示方向を軸として(Z軸周りに)右回りに90°コントローラ7を回転させた状態である。なお、以下、本明細書では、コントローラ7に関する「右回り」および「左回り」とは、コントローラ7の後方(図3に示すZ軸負方向側)から見たときの回転方向を言うものとする。この状態Bにおいては、各マーカ座標の位置は、状態Aから左回りに90°回転している。したがって、2つのマーカ座標を結ぶ方向(例えば、第1マーカ座標から第2マーカ座標への向き)を算出することによって、コントローラ7の指示方向を軸とした傾き(姿勢)を知ることができる。
図16に示す状態Cは、状態Aを基準としてコントローラ7を右方向(X軸正方向)に平行移動させた状態である。この状態Cにおいては、各マーカ座標の位置は、状態Aを基準として左方向(x軸負方向)に平行移動している。なお、状態Cは、コントローラ7の指示方向を状態Aから右方向に向けた状態である。ここで、コントローラ7を右方向に平行移動させる場合だけでなく、コントローラ7をY軸周りに回転させることによっても、コントローラ7の指示方向を右方向に向けることができる。コントローラ7をY軸周りに回転させる場合にも状態Cとほぼ同様のマーカ座標が得られる。以上より、コントローラ7の指示方向を右方向に向けるようにコントローラ7を移動または回転させた場合、状態Cとほぼ同様のマーカ座標が得られる。したがって、2つのマーカ座標の位置を検出することによって、コントローラ7の指示位置を知ることができる。
図16に示す状態Dは、状態Aを基準としてコントローラ7を各マーカ8aおよび8bから遠ざけた(すなわち、後方向に平行移動させた)状態である。この状態Dにおいては、第1マーカ座標から第2マーカ座標までの距離が、状態Aの場合よりも短くなっている。したがって、第1マーカ座標から第2マーカ座標までの距離を検出することによって、コントローラ7の指示方向に関する移動状態(コントローラ7と各マーカ8aおよび8bとの距離)を知ることができる。
以上のようにして、2つのマーカ座標を算出することによって、ゲーム装置3は、コントローラ7の移動状態や回転状態を知ることができ、コントローラ7の移動状態や回転状態をゲーム操作として用いることができる。なお、本実施形態では、マーカ座標をゲーム操作として用いるゲーム処理であればどのようなゲーム処理が行われてもよい。ゲーム処理としては例えば、ゲーム空間に登場するプレイヤキャラクタを、2つのマーカ座標の位置に応じて移動させるゲーム処理等が考えられる。
以上のように、本実施形態によれば、検出座標が1つであったり3つ以上である場合であっても2つのマーカ座標を正確に算出することができる。また、検出座標が3つ以上であってもマーカ座標を算出することができ、モニタの画面にマーカと同じような色の画像が表示されても問題ないので、従来のように画面の表示内容が制限されることがない。また、検出座標が1つであってもマーカ座標を算出することができるので、プレイヤは、コントローラ7をより広い範囲で動かすことができ、コントローラ7自体を動かす操作の自由度を向上することができる。
次に、ゲーム装置3において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図17を用いて説明する。図17は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図17に示すように、メインメモリ13には、ゲームプログラム51、操作データ52、および算出処理用データ53等が記憶される。なお、メインメモリ13には、図17に示すデータの他、ゲームに登場するキャラクタの画像データや、キャラクタの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
ゲームプログラム51は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム51には、座標算出プログラム511が含まれる。座標算出プログラム511は、検出座標を用いてマーカ座標を算出する処理(第1〜第4算出処理)を行うためのプログラムである。ゲームプログラム51には、座標算出プログラム511の他、ゲーム処理の実行に必要なプログラムが含まれている。
操作データ52は、コントローラ7からゲーム装置3へ送信されてきて、メインメモリ13に記憶される。操作データ52には、検出座標データ521および加速度データ522が含まれる。検出座標データ521は、画像処理回路41によって検出される座標を示すデータである。上述したように検出座標の数は決まっていないので、検出座標データ521は、複数個の検出座標を示すこともあるし、1個のみの検出座標を示すこともあるし、検出座標がないことを示すこともある。また、加速度データ522は、加速度センサ37によって検知された加速度を示すデータである。ここでは、加速度データ522は、図3に示すXYZの3軸の方向に関する加速度を示すデータである。換言すれば、加速度データ522は、コントローラ7の姿勢を算出するために用いられるデータである。検出座標データおよび加速度データは、コントローラ7からゲーム装置3へ送信されてくる操作データに含まれている。
算出処理用データ53は、マーカ座標を算出する処理(第1〜第4算出処理)において用いられるデータである。算出処理用データ53には、第1および第2選出座標データ531aおよび531b、第1および第2候補座標データ532aおよび532b、第1および第2仮座標データ533aおよび533b、第1および第2マーカ座標データ534aおよび534b、選出ベクトルデータ535、前回ベクトルデータ536、想定ベクトルデータ537、相違度データ538、一致度データ539、座標間距離データ540、および処理結果データ541が含まれる。
第1および第2選出座標データ531は、第1〜第4算出処理において、検出座標の中から処理対象として選出されている座標(選出座標)を示す。算出処理においては検出座標の中から2つの座標が一度に選出されるので、一方を第1選出座標データ531aとし、他方を第2選出座標データ531bとする。第1および第2候補座標データ532aおよび532bは、検出座標のうちでマーカ座標の候補となっている座標を示す。以下では、この座標を候補座標と呼ぶ。ここでは、第1候補座標データ532aは、第1マーカ座標の候補となっている座標を示し、この座標を第1候補座標と呼ぶ。また、第2候補座標データ532bは、第2マーカ座標の候補となっている座標を示し、この座標を第2候補座標と呼ぶ。仮座標データ533aおよび533bは、第4算出処理で用いられる上記仮座標を示す。第4算出処理においては2つの仮座標が一度に算出されるので、一方を第1仮座標データ533aとし、他方を第2仮座標データ533bとする。また、第1マーカ座標データ534aは、上記第1マーカ座標を示し、第2マーカ座標データ534bは、上記第2マーカ座標を示す。本実施形態においては、第1〜第4算出処理の結果各マーカ座標データがメインメモリ13に記憶され、当該各マーカ座標データがゲーム処理に用いられる。なお、他の実施形態においては、第1マーカ座標データ534aおよび第2マーカ座標データ534bに代えて、第1マーカ座標と第2マーカ座標とを結ぶベクトルを示すデータを記憶してもよい。例えば、ベクトルの始点の座標(第1マーカ座標に相当)と、ベクトルの方向および長さとを示すデータをメインメモリ13に記憶してもよい。
選出ベクトルデータ535は、上記第1選出座標を始点とし第2選出座標を終点とする選出ベクトルを示す。前回ベクトルデータ536は上記前回ベクトルを示す。想定ベクトルデータ537は上記想定ベクトルを示す。相違度データ538は、第1算出処理で用いられ、各選出ベクトルと前回ベクトルとの相違度のうちの最小値を示す。一致度データ539は、第2算出処理で用いられ、各選出ベクトルと想定ベクトルとの一致度の最大値を示す。座標間距離データ540は、第3算出処理で用いられ、各選出座標と前回の各マーカ座標との距離のうちの最小値を示す。なお、相違度データ538および一致度データ539は、用いられる処理が異なるため異なるデータとなっているが、そのデータ内容が相違度であるか一致度であるかの違いについては便宜上のものであり、最も近いものを選び出す処理に用いられるのであれば、相違度の最小値と一致度の最大値のいずれを用いることに変えてもよい。処理結果データ541は、前回のマーカ座標の算出処理が、第1〜第4算出処理のうちのいずれの算出処理であったかを示す。
次に、ゲーム装置3において行われるゲーム処理の詳細を、図18〜図26を用いて説明する。図18は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図18に示すフローチャートにおいては、ゲーム処理のうち、コントローラ7によって検出された座標からマーカ座標を算出する処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
まず、ステップS1において、ゲーム空間が構築されてモニタ2に表示される。CPU10は、例えば3次元のゲーム空間(2次元でもよい)を構築し、さらに、ゲーム空間に登場するオブジェクトを所定の初期位置に配置する。以上のように構築されたゲーム空間を表すゲーム画像が生成され、生成されたゲーム画像がモニタ2に表示される。以降、ステップS2〜S6の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
ステップS2において、CPU10は、コントローラ7から操作データを取得する。すなわち、コントローラ7は所定時間間隔(例えば、1フレーム時間間隔)で操作データをゲーム装置3へ送信してくるので、CPU10は、送信されてきた操作データをメインメモリ13に記憶する。操作データに検出座標データが含まれている場合、CPU10は、当該検出座標データをメインメモリ13に記憶する。また、操作データに加速度データが含まれている場合、CPU10は、当該加速度データをメインメモリ13に記憶する。なお、操作データには、上記検出座標データおよび加速度データの他、操作部32に対して行われた操作を示すデータが含まれていてもよい。
続くステップS3において、CPU10が座標算出プログラム511を実行することによって座標算出処理が実行される。座標算出処理においては、ステップS2で取得された操作データに基づいてマーカ座標が算出される。以下、図19〜図26を用いて座標算出処理の詳細を説明する。
図19は、図18に示すステップS3の座標算出処理の詳細を示すフローチャートである。座標算出処理においては、まず、ステップS11において、前回の座標算出処理において2個の検出座標からマーカ座標を算出したか否かが判定される。すなわち、前回の座標算出処理において第1算出処理または第2算出処理によってマーカ座標が算出されたか否かが判定される。なお、CPU10は、前回の座標算出処理において第1〜第4算出処理のうちのいずれの算出処理によってマーカ座標が算出されたかを、メインメモリ13に記憶されている処理結果データ541を参照することによって知ることができる。なお、前回の座標算出処理においてマーカ座標が算出不可能であった場合、ステップS11の判定結果は否定となる。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS16の処理が実行される。
ステップS12においては、第1算出処理が実行される。図20は、図19に示すステップS12の第1算出処理の詳細を示すフローチャートである。第1算出処理においては、まずステップS31において、コントローラ7によって2個以上の座標が検出されたか否かが判定される。ステップS31の判定は、検出座標が2つ以上であるか否か、すなわち、メインメモリ13に記憶されている操作データに含まれる検出座標データ521が2つ以上の検出座標を示すか否かによって行われる。ステップS31の判定結果が肯定である場合、ステップS32の処理が実行される。一方、ステップS31の判定結果が否定である場合、ステップS42の処理が実行される。この場合、第1算出処理によってはマーカ座標が算出されない。第1算出処理は、2つ以上の検出座標を用いてマーカ座標を算出する処理だからである。
ステップS32においては、後述する選出ベクトルと前回ベクトルとの相違度の最小値M1が初期化される。すなわち、CPU10は、メインメモリ13に記憶されている相違度データ538の内容を、予め定められた所定値を示すデータに更新する。なお、この所定値は、十分に大きい値であり、具体的には、後述するステップS40で用いられるしきい値よりも大きな値である。ステップS32の次にステップS33の処理が実行される。
ステップS33において、CPU10は、検出座標から2つの座標を選出する。具体的には、2つ以上の検出座標のうちの1つを第1選出座標に選出し、第1選出座標に選出された座標以外の検出座標のうちの1つを第1選出座標に選出する。このとき、CPU10は、第1選出座標に選出された座標を示すデータを第1選出座標データ531aとしてメインメモリ13に記憶し、第2選出座標に選出された座標を示すデータを第2選出座標データ531bとしてメインメモリ13に記憶する。
なお、他の実施形態においては、コントローラ7の画像処理回路41は、検出座標に加え、検出座標に対応する領域の大きさを検出するものであってもよく、操作データには当該大きさを示すデータが含まれるようにしてもよい。このとき、ステップS33においては、検出座標に対応する領域の大きさを用いて、当該大きさが同程度となる検出座標の組み合わせのみを選出するようにしてもよい。これによって、不要な組み合わせを選出する処理を省略することができる。
続くステップS34において、第1選出座標を始点とし第2選出座標を終点とする選出ベクトルが算出される。CPU10は、メインメモリ13に記憶されている第1選出座標データ531aおよび第2選出座標データ531bに基づいて、選出ベクトルを算出する。算出された選出ベクトルを示すデータは、選出ベクトルデータ535としてメインメモリ13に記憶される。
続くステップS35において、前回ベクトルが算出される。前回ベクトルとは、上述したように、前回の第1マーカ座標を始点とし、前回の第2マーカ座標を終点とするベクトルである。ここで、前回の第1および第2マーカ座標は、メインメモリ13に記憶されている各マーカ座標データ534aおよび534bを参照することによって知ることができる。CPU10は、これらのマーカ座標データ534aおよび534bに基づいて前回ベクトルを算出する。算出された前回ベクトルを示すデータは、前回ベクトルデータ536としてメインメモリ13に記憶される。
続くステップS36において、選出ベクトルと前回ベクトルとの相違度eが算出される。具体的には、CPU10は、まず、選出ベクトルの方向と前回ベクトルの方向との第1相違度vを算出する。本実施形態では、第1相違度vは、選出ベクトルと前回ベクトルとをそれぞれ正規化して長さが1の単位ベクトルとし、正規化した選出ベクトルと前回ベクトルとの内積値を算出することによって得られる。当該内積値は、それぞれのベクトルの向きが相違しているほど小さな値をとるため、向きが相違するほど(すなわち、内積値が小さな値ほど)大きな値をとるように第1相違度vを設定する。次に、CPU10は、選出ベクトルの長さと前回ベクトルの長さとの第2相違度wを算出する。本実施形態では、第2相違度wは、選出ベクトルと前回ベクトルとの差分のベクトルを算出し、差分のベクトルの長さを算出することによって得られる。当該差分が大きいほど、第2相違度wは大きくなる。第2相違度は、ベクトルの長さの相違する度合いを表すものであるから、差分以外にも、例えばベクトルの長さの比から算出するようにしてもよい。次に、CPU10は、上記第1相違度vと上記第2相違度wとを加算して相違度eを得る。なお、相違度eは、選出ベクトルと前回ベクトルとが相違するほど大きい値をとるものであれば、上記の方法以外であっても、どのような方法で算出されてもよい。
続くステップS37において、現在の相違度の最小値M1が、ステップS36で算出された相違度eよりも大きいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている相違度データ538を参照することによって現在の相違度の最小値M1を知ることができる。ステップS37の判定結果が肯定である場合、ステップS38の処理が実行される。一方、ステップS37の判定結果が否定である場合、ステップS38の処理がスキップされてステップS39の処理が実行される。
ステップS38においては、現在の選出座標が候補座標に設定される。すなわち、CPU10は、メインメモリ13に記憶されている第1候補座標データ532aの内容を、メインメモリ13に記憶されている第1選出座標データ531aの内容に更新し、メインメモリ13に記憶されている第2候補座標データ532bの内容を、メインメモリ13に記憶されている第2選出座標データ531bの内容に更新する。また、メインメモリ13に記憶されている相違度データ538の内容が、ステップS36で算出された相違度eを示す内容に更新される。ステップS38の処理によって、ステップS33〜S39の処理ループにおいてそれまでに選出された選出ベクトルの中で前回ベクトルに最も類似する選出ベクトルを構成する第1選出座標および第2選出座標が、第1候補座標および第2候補座標として設定されることとなる。ステップS38の次にステップS39の処理が実行される。
ステップS39においては、2つ以上の検出座標から第1選出座標および第2選出座標を選出する組み合わせについて、ステップS33で全ての組み合わせが選出されたか否かが判定される。なお、ここでは、ある座標Aを第1選出座標とし、ある座標Bを第2選出座標とする組み合わせと、座標Bを第1選出座標とし、座標Aを第2選出座標とする組み合わせとは異なる組み合わせとして考える。ステップS39の判定結果が肯定である場合、ステップS40の処理が実行される。一方、ステップS39の判定結果が否定である場合、他の組み合わせについてステップS33以降の処理が再度実行され、以降、全ての組み合わせが選出されるまでステップS33〜S39の処理が繰り返される。
ステップS40においては、現在の相違度の最小値M1が、予め定められたしきい値よりも小さいか否かが判定される。すなわち、CPU10は、メインメモリ13に記憶されている相違度データ538により示される最小値M1が、しきい値よりも小さいか否かを判定する。ステップS40の判定結果が肯定である場合、ステップS41の処理が実行される。一方、ステップS40の判定結果が否定である場合、ステップS42の処理が実行される。
ステップS41においては、現在設定されている各候補座標が各マーカ座標に決定される。すなわち、現在第1候補座標として設定されている座標が第1マーカ座標に決定され、現在第2候補座標として設定されている座標が第2マーカ座標に決定される。具体的には、CPU10は、メインメモリ13に記憶されている第1マーカ座標データ534aの内容を、メインメモリ13に記憶されている第1候補座標データ532aの内容に更新し、メインメモリ13に記憶されている第2マーカ座標データ534bの内容を、メインメモリ13に記憶されている第2候補座標データ532bの内容に更新する。これによって、第1算出処理において各マーカ座標が算出されたこととなる。なお、ステップS41において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第1算出処理を示す内容に更新する。ステップS41の終了後、CPU10は第1算出処理を終了する。
一方、ステップS42においては、第1算出処理によるマーカ座標の算出が不可能であると判断される。本実施形態では、現在の相違度の最小値M1が上記しきい値以上である場合、マーカ座標の算出は不可能と判断される。このように判断する理由は、現在の相違度の最小値M1が上記しきい値以上である場合には、いずれの選出ベクトルも前回ベクトルと類似していないと考えられ、このような場合にまでマーカ座標を決定すると正確なマーカ座標を得ることができない可能性があるからである。例えば、撮像画像にノイズが含まれる状況で、さらにマーカの少なくとも一方が領域から外れている場合等には、検出座標からの算出処理が行われたとしても、算出結果は妥当なものにはならない。つまり、本実施形態では、ステップS40の判定を行うことによって、不正確なマーカ座標が算出されることを防止している。ステップS42の終了後、CPU10は第1算出処理を終了する。
図19の説明に戻り、ステップS12の次のステップS13において、第1算出処理においてマーカ座標が算出されたか否かが判定される。すなわち、第1算出処理のステップS41が実行された場合、ステップS13の判定結果は肯定となる。一方、ステップS42が実行された場合、ステップS13の判定結果は否定となる。ステップS13の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS13の判定結果が否定である場合、ステップS14の処理が実行される。
ステップS14においては、第3算出処理が実行される。図21および図22は、図19に示すステップS14の第3算出処理の詳細を示すフローチャートである。第3算出処理においては、まずステップS51において、コントローラ7によって1個以上の座標が検出されたか否かが判定される。ステップS51の判定は、検出座標が1つ以上であるか否か、すなわち、メインメモリ13に記憶されている操作データに含まれる検出座標データ521が1つ以上の検出座標を示すか否かによって行われる。ステップS51の判定結果が肯定である場合、ステップS52の処理が実行される。一方、ステップS51の判定結果が否定である場合、ステップS68の処理が実行される。この場合、第3算出処理によってはマーカ座標が算出されない。第3算出処理は、1つ以上の検出座標を用いてマーカ座標を算出する処理だからである。
ステップS52においては、選出座標と前回のマーカ座標との間の距離の最小値M3が初期化される。すなわち、CPU10は、メインメモリ13に記憶されている座標間距離データ540の内容を、予め定められた所定値を示すデータに更新する。なお、この所定値は、十分に大きい値であり、具体的には、後述するステップS61で用いられるしきい値よりも大きな値である。また、第3算出処理で用いられる上記所定値およびしきい値は、第1算出処理で用いられる所定値およびしきい値とは関連しないものである。ステップS52の次にステップS53の処理が実行される。
ステップS53において、CPU10は、検出座標から1つの座標を選出する。このとき、CPU10は、選出座標を示すデータを第1選出座標データ531aとしてメインメモリ13に記憶する。なお、第3算出処理においては選出座標は1つのみであるので、第1選出座標と第2選出座標との区別はない。
続くステップS54において、選出座標と前回の第1マーカ座標との距離D1が算出される。なお、前回の第1マーカ座標は、メインメモリ13に記憶されている第1マーカ座標データ534aを参照することによって知ることができる。CPU10は、メインメモリ13に記憶されている第1選出座標データ531aおよび第1マーカ座標データ534aに基づいて、上記距離D1を算出する。
続くステップS55において、現在の座標間距離の最小値M3が、ステップS54で算出された距離D1よりも大きいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている座標間距離データ540を参照することによって現在の座標間距離の最小値M3を知ることができる。ステップS55の判定結果が肯定である場合、ステップS56の処理が実行される。一方、ステップS55の判定結果が否定である場合、ステップS56の処理がスキップされてステップS57の処理が実行される。
ステップS56においては、現在の選出座標が第1候補座標に設定される。すなわち、CPU10は、メインメモリ13に記憶されている第1候補座標データ532aの内容を、メインメモリ13に記憶されている第1選出座標データ531aの内容に更新する。このとき、メインメモリ13に記憶されている第2候補座標データ532bは削除される。また、メインメモリ13に記憶されている座標間距離データ540の内容が、ステップS54で算出された距離D1を示す内容に更新される。ステップS56の処理によって、ステップS53〜S60の処理ループにおいてそれまでに選出された選出座標の中で前回のマーカ座標に最も近い選出座標が第1候補座標として設定されることとなる。ステップS56の次にステップS57の処理が実行される。
ステップS57においては、選出座標と前回の第2マーカ座標との距離D2が算出される。なお、前回の第2マーカ座標は、メインメモリ13に記憶されている第2マーカ座標データ534bを参照することによって知ることができる。CPU10は、メインメモリ13に記憶されている第1選出座標データ531aおよび第2マーカ座標データ534bに基づいて、上記距離D2を算出する。
続くステップS58において、現在の座標間距離の最小値M3が、ステップS57で算出された距離D2よりも大きいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている座標間距離データ540を参照することによって現在の座標間距離の最小値M3を知ることができる。ステップS58の判定結果が肯定である場合、ステップS59の処理が実行される。一方、ステップS58の判定結果が否定である場合、ステップS59の処理がスキップされてステップS60の処理が実行される。
ステップS59においては、現在の選出座標が第2候補座標に設定される。すなわち、CPU10は、メインメモリ13に記憶されている第2候補座標データ532bの内容を、メインメモリ13に記憶されている第1選出座標データ531aの内容に更新する。このとき、メインメモリ13に記憶されている第1候補座標データ532aは削除される。また、メインメモリ13に記憶されている座標間距離データ540の内容が、ステップS57で算出された距離D2を示す内容に更新される。ステップS59の処理によって、ステップS53〜S60の処理ループにおいてそれまでに選出された選出座標の中で前回のマーカ座標に最も近い選出座標が第2候補座標として設定されることとなる。ステップS59の次にステップS60の処理が実行される。
ステップS60においては、1つ以上の検出座標の全ての座標が選出されたか否かが判定される。ステップS60の判定結果が肯定である場合、ステップS61の処理が実行される。一方、ステップS60の判定結果が否定である場合、他の検出座標についてステップS53以降の処理が再度実行され、以降、全ての検出座標が選出されるまでステップS53〜S60の処理が繰り返される。
図22に示すステップS61においては、現在の座標間距離の最小値M3が、予め定められたしきい値よりも小さいか否かが判定される。すなわち、CPU10は、メインメモリ13に記憶されている座標間距離データ540により示される最小値M3が、しきい値よりも小さいか否かを判定する。ステップS61の判定結果が肯定である場合、ステップS62の処理が実行される。一方、ステップS61の判定結果が否定である場合、ステップS68の処理が実行される。
ステップS62においては、一方のマーカ座標が特定される。すなわち、現在第1候補座標が設定されている場合には、第1候補座標として設定されている座標が第1マーカ座標として決定され、現在第2候補座標が設定されている場合には、第2候補座標として設定されている座標がマーカ座標として決定される。具体的には、CPU10は、メインメモリ13に記憶されている第1マーカ座標データ534aの内容を、メインメモリ13に記憶されている第1候補座標データ532aの内容に更新するか、または、メインメモリ13に記憶されている第2マーカ座標データ534bの内容を、メインメモリ13に記憶されている第2候補座標データ532bの内容に更新する。
続くステップS63において、加速度データに基づいて想定ベクトルが算出される。以下、図23および図24を用いて、想定ベクトルの算出方法について説明する。
図23は、ある状態におけるコントローラ7とマーカ8aおよび8bとの位置関係を示す図であり、図24は、当該状態において想定されるマーカ座標の位置を示す図である。図23においては、コントローラ7は、コントローラ7の指示方向を軸とした回転方向に関して傾いた状態である。このとき、加速度センサ37は、重力加速度の向きを示すベクトルVaを検知して出力する。ここでは、ベクトルVaは、コントローラ7の後面から見て右方向を正方向とするX’軸と、コントローラ7の上方向を正方向とするY’軸とからなる座標系によって表される。加速度センサ37は、コントローラ7が水平な状態にあるときにY’軸負方向を向くベクトルを出力するものとする。なお、加速度センサ37は、X’軸およびY’軸に垂直なZ’軸成分の加速度についても検知するものであってもよいが、本実施形態ではZ’軸成分の加速度は不要であるので省略する。ベクトルVaは、X’Y’座標系において(va1,va2)と表すことができる。一方、図23に示す状態では、第1マーカ座標を始点とし第2マーカ座標を終点とするベクトルと同一方向のベクトルであるベクトルVcの方向は、図24に示すような方向になると考えられる。
ここで、本実施形態では、2つのマーカ8aおよび8bは水平に配置されることを前提とする。また、上述のように、加速度センサ37は、コントローラ7が水平な状態にあるときにY’軸負方向を向くベクトルを出力するものとする。したがって、加速度センサ37から出力されるベクトルVaがY’軸負方向を向くとき、マーカ座標を結ぶベクトルVcはx軸正方向を向くことになる。つまり、Y’軸負方向を向くベクトルVaとx軸正方向を向くベクトルVcとが対応する。この対応関係に基づいて、加速度センサ37から出力されるベクトルVaから、マーカ座標を結ぶベクトルVcの方向を算出することができる。具体的には、ベクトルVc=(vc1,vc2)は、上記加速度を示すベクトルVaから以下の式を用いて算出することができる。
vc1=−va2
vc2=−va1
上式によって得られたベクトルVcを正規化して単位ベクトルとすることによって、想定ベクトルの方向を得ることができる。
なお、本実施形態では、上記対応関係があるために上式によってベクトルVcを算出したが、対応関係が変わればベクトルVcを算出する式を変更する必要がある。なお、他の実施形態では、対応関係をプレイヤが変更するようにしてもよい。具体的には、任意の傾きにしてコントローラ7を把持した状態でプレイヤが所定の操作(操作ボタンを押下する操作等)を行う。ゲーム装置3は、当該操作が行われた時点で撮像された撮像画像からマーカ座標を算出し、マーカ座標を結ぶベクトルに沿った方向のベクトルVc’を算出する。さらに、ゲーム装置3は、当該操作が行われた時点において加速度センサ37から出力されるベクトルVa’の方向と、ベクトルVc’の方向とを対応付けて記憶する。対応関係を記憶した後は、ゲーム装置3は、加速度センサ37から出力されたベクトルVaの方向と、対応関係に含まれるベクトルVa’との差分を算出し、当該差分だけVc’を回転させることによってベクトルVaに対応するベクトルVcを算出することができる。
なお、図23および図24に示した想定ベクトルの算出方法は一例であり、想定ベクトルの算出方法は、コントローラ7が任意の姿勢となったときにおける2つのマーカ座標を結ぶ方向を示す想定ベクトルを、コントローラ7(撮像素子40)の姿勢から算出する方法であればどのような方法であってもよい。
図22の説明に戻り、ステップ63においては、以上に示したような方法で想定ベクトルが算出される。CPU10は、算出された想定ベクトルを示すデータを、想定ベクトルデータ537としてメインメモリ13に記憶する。
続くステップS64において、想定ベクトルの長さが決定される。具体的には、CPU10は、最後に算出されたマーカ座標間の長さとなるように想定ベクトルの長さを決定する。想定ベクトルの長さは、メインメモリ13に記憶されているマーカ座標データ534aおよび534bに基づいて算出することができる。CPU10は、想定ベクトルの長さを決定すると、当該想定ベクトルを示すデータを想定ベクトルデータ537としてメインメモリ13に記憶する。
なお、他の実施形態においては、コントローラ7の画像処理回路41は、検出座標に加え、検出座標に対応する領域の大きさを検出するものであってもよく、操作データには当該大きさを示すデータが含まれるようにしてもよい。このとき、ステップS64においては、検出座標(具体的には、ステップS62でマーカ座標として特定された検出座標)に対応する領域の大きさに基づいて、マーカ座標間の長さを推定し、想定ベクトルの長さを推定した長さに補正するようにしてもよい。つまり、検出座標に対応する領域が大きければ、マーカ座標間の距離も大きいと想定されるものであるから、当該領域の大きさに応じてマーカ座標間の距離を推定することが可能である。
また、上記ステップS64においては、CPU10は、予め定められた所定長さとなるように想定ベクトルを補正してもよい。例えば、コントローラ7からマーカ8aおよび8bまでの距離がほぼ一定で使用される状況下では、予め定められた所定長さとなるように想定ベクトルを補正ことによって、簡易かつ正確に想定ベクトルを補正することができる。
続くステップS65において、ステップS62ですでに特定されているマーカ座標は第1マーカ座標であるか否かが判定される。ステップS65の判定結果が肯定である場合、ステップS66の処理が実行される。一方、ステップS65の判定結果が否定である場合、すなわち、ステップS62ですでに特定されているマーカ座標は第2マーカ座標である場合、ステップS67の処理が実行される。
ステップS66においては、想定ベクトルを用いて第2マーカ座標が算出される。第2マーカ座標は、第1マーカ座標の位置を基点とし、想定ベクトルの方向へ想定ベクトルの長さだけ移動した位置を示す座標として算出される。具体的には、想定ベクトルを(vx,vy)とし、第1マーカ座標を(m1x,m1y)とすると、第2マーカ座標(m2x,m2y)は次の式を用いて算出される。
m2x=m1x+vx
m2y=m1y+vy
上式によって算出された第2マーカ座標を示すデータは、第2マーカ座標データ534bとしてメインメモリ13に記憶される。なお、ステップS66において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第3算出処理を示す内容に更新する。ステップS66の終了後、CPU10は第3算出処理を終了する。
ステップS67においては、想定ベクトルを用いて第1マーカ座標が算出される。第1マーカ座標は、第2マーカ座標の位置を基点とし、想定ベクトルの逆方向へ想定ベクトルの長さだけ移動した位置を示す座標として算出される。具体的には、想定ベクトルを(vx,vy)とし、第2マーカ座標を(m2x,m2y)とすると、第1マーカ座標(m1x,m1y)は次の式を用いて算出される。
m1x=m2x−vx
m1y=m2y−vy
上式によって算出された第1マーカ座標を示すデータは、第1マーカ座標データ534aとしてメインメモリ13に記憶される。なお、ステップS67において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第3算出処理を示す内容に更新する。ステップS67の終了後、CPU10は第3算出処理を終了する。
なお、他の実施形態においては、ステップS66またはS67の後に、ステップS66またはS67で算出されたマーカ座標が、撮像画像の外側の領域にあるか否かを判定するようにしてもよい。そして、マーカ座標が撮像画像の外側の領域にあるときのみ、当該マーカ座標を正しいマーカ座標と判断し、マーカ座標が撮像画像の内側の領域にあるとき、当該マーカ座標は正しくないと判断し、ステップS68の処理を行うようにしてもよい。「コントローラ7が撮像可能範囲にある場合にはマーカ8aおよび8bが必ず撮像される」という前提では、上記のようにすることによって、誤ったマーカ座標が算出されることを防止することができる。
一方、ステップS68においては、第3算出処理によるマーカ座標の算出が不可能であると判断される。本実施形態では、現在の座標間距離の最小値M3が上記しきい値以上である場合、マーカ座標の算出は不可能と判断される。このように判断する理由は、現在の座標間距離の最小値M3が上記しきい値以上である場合には、いずれの検出座標も前回のマーカ座標から離れていることを意味するので、このような場合にまでマーカ座標を決定すると正確なマーカ座標を得ることができない可能性があるからである。つまり、本実施形態では、ステップS61の判定を行うことによって、不正確なマーカ座標が算出されることを防止している。ステップS68の終了後、CPU10は第3算出処理を終了する。
図19の説明に戻り、ステップS14の次のステップS15において、第3算出処理においてマーカ座標が算出されたか否かが判定される。すなわち、第3算出処理のステップS62,S66,およびS67においてマーカ座標が算出された場合、ステップS15の判定結果は肯定となる。一方、ステップS68においてマーカ座標の算出が不可能であると判断された場合、ステップS15の判定結果は否定となる。ステップS15の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS15の判定結果が否定である場合、後述するステップS25の処理が実行される。
次に、ステップS11の判定結果が否定である場合の処理を説明する。この場合、ステップS16において、前回の座標算出処理において1個の検出座標からマーカ座標を算出したか否かが判定される。すなわち、前回の座標算出処理において第3算出処理または第4算出処理によってマーカ座標が算出されたか否かが判定される。なお、CPU10は、前回の座標算出処理において第1〜第4算出処理のうちのいずれの算出処理によってマーカ座標が算出されたかを、メインメモリ13に記憶されている処理結果データ541を参照することによって知ることができる。なお、前回の座標算出処理においてマーカ座標が算出不可能であった場合、ステップS16の判定結果は否定となる。ステップS16の判定結果が肯定である場合、ステップS17の処理が実行される。一方、ステップS16の判定結果が否定である場合、ステップS21の処理が実行される。
ステップS17においては、第2算出処理が実行される。図25は、図19に示すステップS17の第2算出処理の詳細を示すフローチャートである。第2算出処理においては、まずステップS71において、コントローラ7によって2個以上の座標が検出されたか否かが判定される。ステップS71の処理は、第1算出処理におけるステップS31の処理と同様の処理である。ステップS71の判定結果が肯定である場合、ステップS72の処理が実行される。一方、ステップS71の判定結果が否定である場合、ステップS82の処理が実行される。この場合、第2算出処理によってはマーカ座標が算出されない。第2算出処理は、2つ以上の検出座標を用いてマーカ座標を算出する処理だからである。
ステップS72においては、選出ベクトルと想定ベクトルとの一致度の最大値M2が初期化される。すなわち、CPU10は、メインメモリ13に記憶されている一致度データ539の内容を、予め定められた所定値を示すデータに更新する。なお、この所定値は、十分に小さい値であり、具体的には、後述するステップS80で用いられるしきい値よりも小さな値である。また、第2算出処理で用いられる上記所定値およびしきい値は、第1および第3算出処理で用いられる所定値およびしきい値とは関連しないものである。ステップS72の次にステップS73の処理が実行される。
ステップS73において、CPU10は、検出座標から2つの座標を選出する。ステップS73の処理は、第1算出処理におけるステップS33と同様の処理である。続くステップS74において、第1算出処理におけるステップS34と同様の方法で、第1選出座標を始点とし第2選出座標を終点とする選出ベクトルが算出される。さらに、続くステップS75において、第3算出処理におけるステップS63と同様の方法で想定ベクトルが算出される。
続くステップS76において、選出ベクトルの方向と想定ベクトルの方向との一致度kが算出される。本実施形態では、一致度kは、選出ベクトルと想定ベクトルとをそれぞれ正規化して長さが1の単位ベクトルとし、正規化した選出ベクトルと想定ベクトルとの内積値を算出することによって得られる。当該内積値は、それぞれのベクトルの向きが一致しているほど大きくなるため、一致度kは、内積値が大きいほど大きく設定される。なお、一致度kは、選出ベクトルの方向と想定ベクトルの方向との類似度を示すものであればよく、他の実施形態では、例えば、選出ベクトルと想定ベクトルとのなす角度であってもよい。なお、当該角度を類似度として用いる場合、角度が小さいほど類似していると判断される。また、第1算出処理においては、上記ステップS36において用いられる第1相違度vに代えて上記角度を用いるようにしてもよい。
続くステップS77において、現在の一致度の最大値M2が、ステップS76で算出された一致度kよりも小さいか否かが判定される。なお、CPU10は、メインメモリ13に記憶されている一致度データ539を参照することによって現在の一致度の最小値M2を知ることができる。ステップS77の判定結果が肯定である場合、ステップS78の処理が実行される。一方、ステップS77の判定結果が否定である場合、ステップS78の処理がスキップされてステップS79の処理が実行される。
ステップS78においては、現在の選出座標が候補座標に設定される。すなわち、CPU10は、メインメモリ13に記憶されている第1候補座標データ532aの内容を、メインメモリ13に記憶されている第1選出座標データ531aの内容に更新し、メインメモリ13に記憶されている第2候補座標データ532bの内容を、メインメモリ13に記憶されている第2選出座標データ531bの内容に更新する。また、メインメモリ13に記憶されている一致度データ539の内容が、ステップS76で算出された一致度kを示す内容に更新される。ステップS78の処理によって、ステップS73〜S79の処理ループにおいてそれまでに選出された選出ベクトルの中で想定ベクトルに方向が最も類似する選出ベクトルを構成する第1選出座標および第2選出座標が、第1候補座標および第2候補座標として設定されることとなる。ステップS78の次にステップS79の処理が実行される。
ステップS79においては、2つ以上の検出座標から第1選出座標および第2選出座標を選出する組み合わせについて、ステップS73で全ての組み合わせが選出されたか否かが判定される。ステップS79の処理は、第1算出処理におけるステップS39の処理と同様の処理である。ステップS79の判定結果が肯定である場合、ステップS80の処理が実行される。一方、ステップS79の判定結果が否定である場合、他の組み合わせについてステップS73以降の処理が再度実行され、以降、全ての組み合わせが選出されるまでステップS73〜S79の処理が繰り返される。
ステップS80においては、現在の一致度の最大値M2が、予め定められたしきい値よりも大きいか否かが判定される。すなわち、CPU10は、メインメモリ13に記憶されている一致度データ539により示される最大値M2が、しきい値よりも大きいか否かを判定する。ステップS80の判定結果が肯定である場合、ステップS81の処理が実行される。一方、ステップS80の判定結果が否定である場合、ステップS82の処理が実行される。
ステップS81においては、現在設定されている各候補座標が各マーカ座標に決定される。ステップS81の処理は、第1算出処理におけるステップS41の処理と同様の処理である。ステップS81によって、第2算出処理において各マーカ座標が算出されたこととなる。なお、ステップS81において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第2算出処理を示す内容に更新する。ステップS80の終了後、CPU10は第2算出処理を終了する。
一方、ステップS82においては、第2算出処理によるマーカ座標の算出が不可能であると判断される。本実施形態では、一致度の最大値M2が上記しきい値以下である場合、マーカ座標の算出は不可能と判断される。このように判断する理由は、一致度の最大値M2が上記しきい値以下である場合には、いずれの選出ベクトルも想定ベクトルと類似していないと考えられ、このような場合にまでマーカ座標を決定すると正確なマーカ座標を得ることができない可能性があるからである。つまり、本実施形態では、ステップS80の判定を行うことによって、不正確なマーカ座標が算出されることを防止している。ステップS82の終了後、CPU10は第2算出処理を終了する。
なお、本実施形態における第2算出処理において用いられる想定ベクトルは単位ベクトルであったが、上記第3算出処理や後述する第4算出処理と同様、想定ベクトルの長さを用いるようにしてもよい。
図19の説明に戻り、ステップS17の次のステップS18において、第2算出処理においてマーカ座標が算出されたか否かが判定される。すなわち、第2算出処理のステップS80においてマーカ座標が算出された場合、ステップS18の判定結果は肯定となる。一方、ステップS81においてマーカ座標の算出が不可能であると判断された場合、ステップS18の判定結果は否定となる。ステップS18の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS18の判定結果が否定である場合、ステップS19の処理が実行される。
ステップS19においては、第3算出処理が実行される。第3算出処理の詳細な内容はステップS14の場合と同様である。すなわち、2個以上の検出座標から2つのマーカ座標を算出することに失敗したため、1個以上の検出座標から2つのマーカ座標を算出することができる第3算出処理が実行される。続くステップS20において、第3算出処理においてマーカ座標が算出されたか否かが判定される。ステップS20の判定処理は、ステップS15の判定処理と同様の処理である。ステップS20の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS20の判定結果が否定である場合、後述するステップS25の処理が実行される。
次に、ステップS16の判定結果が否定である場合の処理を説明する。この場合、ステップS21において、第2算出処理が実行される。第2算出処理の詳細な内容はステップS17の場合と同様である。続くステップS22において、第2算出処理においてマーカ座標が算出されたか否かが判定される。ステップS22の判定処理は、ステップS15の判定処理と同様の処理である。ステップS22の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS22の判定結果が否定である場合、ステップS23の処理が実行される。
ステップS23においては、第4算出処理が実行される。図26は、図19に示すステップS23の第4算出処理の詳細を示すフローチャートである。第4算出処理においては、まずステップS91において、コントローラ7によって1個の座標が検出されたか否かが判定される。ステップS91の判定は、検出座標が1つであるか否か、すなわち、メインメモリ13に記憶されている操作データ52に含まれる検出座標データ521が1つの検出座標を示すか否かによって行われる。ステップS91の判定結果が肯定である場合、ステップS92の処理が実行される。一方、ステップS91の判定結果が否定である場合、ステップS98の処理が実行される。この場合、第4算出処理によってはマーカ座標が算出されない。第4算出処理は、検出座標が1つのみである場合にマーカ座標を算出することが可能な処理だからである。これは、図19のステップS16およびS22における判定において、前回は座標の算出が行われず、しかも2つ以上の検出座標からの2つのマーカ座標の算出ができなかったと判定された場合にも、1個の検出座標からマーカ座標を算出する処理を可能とするためのものである。
ステップS92においては、加速度データに基づいて想定ベクトルが算出される。ステップS92の処理は、第3算出処理におけるステップS63と同様の処理である。続くステップS93において、想定ベクトルの長さが決定される。第4算出処理においては、第3算出処理におけるステップS64とは異なり、最後に算出されたマーカ座標間の長さに基づいて想定ベクトルの長さが決定される。なお、本実施形態では、マーカ座標が算出されなかった場合、メインメモリ13のマーカ座標データ534aおよび534bの内容が更新されずに維持されるので、最後に算出されたマーカ座標はマーカ座標データ534aおよび534bを参照することによって知ることができる。CPU10は、最後に算出されたマーカ座標間の長さをマーカ座標データ534aおよび534bに基づいて算出し、算出した長さとなるように想定ベクトルの長さを決定する。想定ベクトルの長さが決定されると、補正後の想定ベクトルを示すデータは想定ベクトルデータ537としてメインメモリ13に記憶される。
なお、ステップS93においても上記ステップS64と同様、検出座標に対応する領域の大きさに基づいて、マーカ座標間の長さを推定し、想定ベクトルの長さを推定した長さに補正するようにしてもよい。また、CPU10は、予め定められた所定長さとなるように想定ベクトルを決定してもよい。
続くステップS94において、想定ベクトルを用いて2つの仮座標が算出される。各仮座標は、検出座標および想定ベクトルに基づいて算出される。具体的には、想定ベクトルを(vx,vy)とし、検出座標を(mx,my)とすると、第1仮座標(p1x,p1y)および第2仮座標(p2x,p2y)は、次の式を用いて算出される。
p1x=mx+vx
p1y=my+vy
p2x=mx−vx
p2y=my−vy
上式によって算出された第1仮座標を示すデータは、第1仮座標データ533aとしてメインメモリ13に記憶され、上式によって算出された第2仮座標を示すデータは、第2仮座標データ533bとしてメインメモリ13に記憶される。
続くステップS95において、ステップS94で算出された各仮座標のうちで第1仮座標のみが撮像領域の範囲外に位置するか否かが判定される。本実施形態では撮像領域は0≦x≦1024,0≦y≦768の範囲であるので、第1仮座標が当該範囲外の値をとり、第2仮座標が当該範囲内の値をとる場合、ステップS95の判定結果は肯定となる。ステップS95の判定結果が肯定である場合、ステップS96の処理が実行される。一方、ステップS95の判定結果が否定である場合、ステップS97の処理が実行される。
ステップS96においては、検出座標が第1マーカ座標として決定され、第1仮座標が第2マーカ座標として決定される。具体的には、CPU10は、メインメモリ13に記憶されている第1マーカ座標データ534aの内容を、メインメモリ13に記憶されている検出座標データ521の内容に更新し、メインメモリ13に記憶されている第2マーカ座標データ534bの内容を、メインメモリ13に記憶されている第1仮座標データ533aの内容に更新する。これによって、第4算出処理において各マーカ座標が算出されたこととなる。なお、ステップS96において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第4算出処理を示す内容に更新する。ステップS96の終了後、CPU10は第4算出処理を終了する。
一方、ステップS97においては、ステップS94で算出された各仮座標のうちで第2仮座標のみが撮像領域の範囲外に位置するか否かが判定される。すなわち、撮像領域は0≦x≦1024,0≦y≦768の範囲であるので、第1仮座標が当該範囲内の値をとり、第2仮座標が当該範囲外の値をとる場合、ステップS97の判定結果は肯定となる。ステップS97の判定結果が肯定である場合、ステップS98の処理が実行される。一方、ステップS97の判定結果が否定である場合、ステップS99の処理が実行される。
ステップS98においては、第2仮座標が第1マーカ座標として決定され、検出座標が第2マーカ座標として決定される。具体的には、CPU10は、メインメモリ13に記憶されている第1マーカ座標データ534aの内容を、メインメモリ13に記憶されている第2仮座標データ533bの内容に更新し、メインメモリ13に記憶されている第2マーカ座標データ534bの内容を、メインメモリ13に記憶されている検出座標データ521の内容に更新する。これによって、第4算出処理において各マーカ座標が算出されたこととなる。なお、ステップS98において、CPU10は、メインメモリ13に記憶されている処理結果データ541の内容を、第4算出処理を示す内容に更新する。ステップS98の終了後、CPU10は第4算出処理を終了する。
一方、ステップS99においては、第4算出処理によるマーカ座標の算出が不可能であると判断される。つまり、本実施形態では、第1および第2仮座標が共に撮像領域の範囲外にある場合、マーカ座標の算出が不可能であると判断されることになる。この場合、いずれが正しいマーカ座標であるかを判断できないからである。また、第1および第2仮座標が共に撮像領域の範囲内にある場合にも、マーカ座標の算出が不可能であると判断される。これは、第4算出処理は、検出が行われなかったのは範囲から外れたことによるものと考えて算出を行うものであるからである。ステップS99の終了後、CPU10は第4算出処理を終了する。
図19の説明に戻り、ステップS23の次のステップS24において、第4算出処理においてマーカ座標が算出されたか否かが判定される。すなわち、第4算出処理のステップS96およびS98においてマーカ座標が算出された場合、ステップS24の判定結果は肯定となる。一方、ステップS99においてマーカ座標の算出が不可能であると判断された場合、ステップS24の判定結果は否定となる。ステップS24の判定結果が肯定である場合、CPU10は図19に示す座標算出処理を終了する。一方、ステップS24の判定結果が否定である場合、ステップS25の処理が実行される。
ステップS25においては、マーカ座標の算出に失敗したと判断される。なお、マーカ座標の算出に失敗したと判断されるのは、第1算出処理および第3算出処理においてマーカ座標の算出が不可能であった場合、第2算出処理および第3算出処理においてマーカ座標の算出が不可能であった場合、第2算出処理および第4算出処理においてマーカ座標の算出が不可能であった場合、および、検出座標が0個であった場合の4通りである。ステップS25の後、CPU10は図19に示す座標算出処理を終了する。
図18の説明に戻り、ステップS4の座標算出処理の次に、ステップS5の処理が実行される。すなわち、ステップS5において、ステップS4で算出された各マーカ座標に基づくゲーム処理が実行される。例えば、ゲーム空間に登場するプレイヤキャラクタを、2つのマーカ座標の位置に応じて移動させる処理等が実行される。なお、図19に示すステップS25でマーカ座標の算出に失敗したと判断された場合には、プレイヤによる入力が行われなかったものとしてゲーム処理が行われてもよいし、前回に算出されたマーカ座標を用いてゲーム処理が行われてもよい。
続くステップS6において、ステップS5で実行されたゲーム処理の結果を反映したゲーム画像が生成されて、ゲーム画像がモニタ2に表示される。続くステップS7において、CPU10はゲームを終了するか否かを判定する。ステップS7の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップS7の判定結果が否定である場合、ステップS2の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップS2〜S7の処理ループが実行される。一方、ステップS7の判定結果が肯定である場合、CPU10は図18に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
以上のように、本実施形態によれば、第1または第2算出処理によって、検出座標が3つ以上である場合であっても、その中から2つのマーカ座標を算出することができる。また、第3または第4算出処理によって、検出座標が1つである場合であっても、2つのマーカ座標を算出することができる。
なお、本実施形態では、最初に第1または第2算出処理が行われ、第1または第2算出処理によってマーカ座標が算出不可能であった場合、次に第3または第4算出処理が行われる。第1および第2算出処理は、検出座標の中からマーカ座標を選択する方法であるので、正しいマーカ座標を算出することができる可能性は第3および第4算出処理よりも高いと言える。したがって、第1または第2算出処理を第3または第4算出処理よりも先に行うことによって、正しいマーカ座標を算出する確率を高くすることができる。一方、第3および第4算出処理は、正しいマーカ座標が検出座標として検出されない場合でも、正しいマーカ座標を算出することができる。したがって、第1または第2算出処理で算出不可能であった場合に第3または第4算出処理を行うことによって、できるだけマーカ座標を算出するようにし、マーカ座標が算出不可能となる確率を減らすことができる。
また、上記実施形態では、検出座標はコントローラ7側で検出され、ゲーム装置3は検出座標をコントローラ7から受け取ってマーカ座標を算出するものとした。ここで、他の実施形態では、ゲーム装置3は、撮像手段(撮像素子)によって撮像された撮像画像をコントローラ7から受け取って、撮像画像から検出座標を算出し、検出座標からマーカ座標を算出するようにしてもよい。さらに、コントローラ7側で検出座標からマーカ座標を算出するようにしてもよい。
また、上記実施形態では、コントローラ7は撮像手段を備え、撮像対象であるマーカ8aおよび8bがコントローラとは別に配置される態様であった。ここで、他の実施形態では、コントローラ7はマーカ8aおよび8bを備え、撮像手段がコントローラ7とは別に配置される(例えばモニタ2の上に配置される)態様であってもよい。このような態様であっても撮像手段によって撮像対象を撮像することができ、撮像手段とゲーム装置3とを接続することによってゲーム装置3は撮像画像を取得することができる。
また、他の実施形態では、第1算出処理において、前回のマーカ座標を結ぶ前回ベクトルに代えて、メインメモリ13に最後に記憶されたマーカ座標を結ぶベクトルを用いてもよい。また、最後に記憶されたマーカ座標が古すぎる場合、すなわち、最後に記憶されたマーカ座標が、所定のフレーム数よりも前に記憶されたものである場合には、上記ベクトルを用いないようにしてもよい。なお、この場合、第1算出処理においてはマーカ座標の算出が不可能であると判断する。
また、他の実施形態においては、第3および第4算出処理において用いられた想定ベクトルに代えて、上記前回ベクトルを用いるようにしてもよい。これによって、加速度センサ等の傾き算出手段が不要となるので、装置の構成を簡易化することができる。
また、上記実施形態では、2つのマーカ座標を第1マーカ座標および第2マーカ座標として区別したが、2つのマーカ座標を区別しなくてもよい。この場合、ステップS39およびS79の処理では、2つの検出座標の組み合わせを順不同で考えればよい。すなわち、ある座標Aと一方の選出座標とし、ある座標Bを他方の選出座標とする組み合わせと、座標Bを一方の選出座標とし、座標Aを他方の選出座標とする組み合わせとを同じ組み合わせとして考えればよい。なお、コントローラ7の上面が上側となる状態とコントローラ7の上面が下側となる状態との区別がつかなくなるが、コントローラ7の上面が下側となるようなコントローラ7の使用が想定されない場合には、2つのマーカ座標を区別しなくても問題はない。
以上のように、本発明は、操作可能な範囲を広くし、操作不可能になるおそれが少なくすること等を目的として、例えばゲームシステム等に利用することが可能である。
本発明の一実施形態に係る座標算出装置一例であるゲーム装置を含むゲームシステムの外観図 ゲーム装置3の機能ブロック図 コントローラ7の斜視図 コントローラ7の斜視図 コントローラ7を前方から見た図 コントローラ7の内部構造を示す図 コントローラ7の内部構造を示す図 コントローラ7の構成を示すブロック図 コントローラ7を用いてゲーム操作するときの状態を概説する図解図 マーカ8aおよび8bとコントローラ7との視野角を説明するための図 対象画像を含む撮像画像の一例を示す図 第1算出処理を説明するための図 第2算出処理を説明するための図 第3算出処理を説明するための図 第3算出処理におけるもう一方のマーカ座標を算出する処理を説明するための図 第4算出処理を説明するための図 第4算出処理を説明するための図 第4算出処理を説明するための図 コントローラ7の位置および/または向きを変化させた場合における撮像画像の変化を示す図 ゲーム装置3のメインメモリ13に記憶される主なデータを示す図 ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート 図18に示すステップS3の座標算出処理の詳細を示すフローチャート 図19に示すステップS12の第1算出処理の詳細を示すフローチャート 図19に示すステップS14の第3算出処理の詳細を示すフローチャート 図19に示すステップS14の第3算出処理の詳細を示すフローチャート ある状態におけるコントローラ7とマーカ8aおよび8bとの位置関係を示す図 図23の状態において想定されるマーカ座標の位置を示す図 図19に示すステップS17の第2算出処理の詳細を示すフローチャート 図19に示すステップS23の第4算出処理の詳細を示すフローチャート
符号の説明
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 ゲームプログラム
511 座標算出プログラム

Claims (26)

  1. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置であって、
    前記撮像画像内において所定条件に合致する領域の位置座標を当該領域毎に検出する座標検出手段と、
    前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定手段と、
    前記座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定手段とを備える、座標算出装置。
  2. 前記ベクトル設定手段は、
    前記撮像装置の傾きを算出する傾き算出手段によって算出された傾きに基づいて前記ベクトルの方向を設定する方向設定手段と、
    所定の長さとなるように前記ベクトルの長さを設定する長さ設定手段とを含む、請求項1に記載の座標算出装置。
  3. 前記座標決定手段によって決定された前記2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データを、前記座標決定手段による決定が行われる度に記憶する対象位置記憶手段をさらに備え、
    前記長さ設定手段は、最後に記憶された対象位置座標データにより示される前記2つの対象位置座標を結ぶ長さとなるように前記ベクトルの長さを設定する、請求項2に記載の座標算出装置。
  4. 前記方向設定手段は、前記撮像装置が所定の傾きとなった状態において前記傾き算出手段によって算出される傾きと、当該状態において前記撮像装置によって撮像される撮像画像から検出される前記2つの撮像対象の位置座標を結ぶ方向との対応関係に基づいて前記ベクトルの方向を設定する、請求項2に記載の座標算出装置。
  5. 前記傾き算出手段は、前記撮像装置と共通の筐体に固定的に配置され、前記撮像装置の撮像方向に垂直な2軸方向の加速度を検出する加速度センサを含み、
    前記ベクトル設定手段は、前記加速度センサによって検出された各軸方向の加速度に基づいて前記ベクトルを算出する、請求項2に記載の座標算出装置。
  6. 前記座標決定手段によって決定された前記2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データを、前記座標決定手段による決定が行われる度に記憶する対象位置記憶手段をさらに備え、
    前記ベクトル設定手段は、最後に記憶された対象位置座標データから前記2つの対象位置座標を結ぶベクトルを算出または取得する、請求項1に記載の座標算出装置。
  7. 前記座標決定手段は、
    前記座標検出手段によって検出された位置座標のうちの1つの位置座標が、前記2つの対象位置座標のうちの第1の対象位置座標および第2の対象位置座標のいずれであるかを決定する第1決定手段と、
    前記第1決定手段によって第1の対象位置座標が決定されたとき、当該第1の対象位置座標に前記ベクトルを加算することによって第2の対象位置座標を決定し、前記第1決定手段によって第2の対象位置座標が決定されたとき、当該第2の対象位置座標から前記ベクトルを減算することによって第1の対象位置座標を決定する第2決定手段とを含む、請求項1に記載の座標算出装置。
  8. 前記座標決定手段によって決定された前記2つの対象位置座標を含む対象位置座標データを、前記座標決定手段による決定が行われる度に記憶する対象位置記憶手段をさらに備え、
    前記第1決定手段は、前記座標検出手段によって検出されたそれぞれの位置座標と、最後に記憶された対象位置座標データにより示される第1の対象位置座標および第2の対象位置座標それぞれとの距離を算出し、前記座標検出手段によって検出された位置座標のうちのある位置座標と、前回記憶された対象位置座標データにより示される第1の対象位置座標との距離が最短となるとき、当該ある位置座標を第1の対象位置座標に決定し、前記座標検出手段によって検出された位置座標のうちのある位置座標と、前回記憶された対象位置座標データにより示される第2の対象位置座標との距離が最短となるとき、当該ある位置座標を第2の対象位置座標に決定する、請求項7に記載の座標算出装置。
  9. 前記座標決定手段は、
    前記座標検出手段によって検出された位置座標のうちの1つの位置座標を確定座標として当該確定座標に前記ベクトルを加算した位置座標を第1仮座標とし、当該位置座標から前記ベクトルを減算した位置座標を第2仮座標として算出する仮座標算出手段と、
    前記第1仮座標および前記第2仮座標のうち、前記第1仮座標のみが撮像画像の領域外となったとき、当該第1仮座標と前記確定座標とを前記2つの対象位置座標に決定し、前記第1仮座標および前記第2仮座標のうちで前記第2仮座標のみが撮像画像の領域外となったとき、当該第2仮座標と前記確定座標とを前記2つの対象位置座標に決定する決定実行手段とを含む、請求項1に記載の座標算出装置。
  10. 前記座標検出手段によって検出された位置座標が2つ以上であるとき、当該各位置座標を用いて前記2つの対象位置座標を算出する対象位置座標算出手段をさらに備え、
    前記座標決定手段は、前記対象位置座標算出手段によって前記2つの対象位置座標を算出することが不可能であったとき、前記2つの対象位置座標を決定する、請求項1に記載の座標算出装置。
  11. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置であって、
    前記撮像画像内において所定条件に合致する領域の位置座標を当該領域毎に検出する座標検出手段と、
    前記座標検出手段によって複数の位置座標が検出されたとき、前記撮像画像内における2つの位置座標を結ぶ方向と当該2つの位置座標間の長さとの少なくともいずれかに対する基準を設定する基準設定手段と、
    前記複数の位置座標のうちの2つの位置座標の組み合わせの中から、前記基準設定手段によって設定された基準に最も近い2つの位置座標の組み合わせを選択する選択手段と、
    前記選択手段によって選択された2つの位置座標が選択できたか否か判定する判定手段と、
    前記判定手段による判定結果が肯定であるとき、前記選択手段によって選択された2つの位置座標を前記2つの対象位置座標として出力する出力手段と、
    前記判定手段による判定結果が否定であるとき、前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定手段と、
    前記判定手段による判定結果が否定であるとき、前記座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定手段とを備える、座標算出装置。
  12. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置のコンピュータで実行されるプログラムであって、
    前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定ステップと、
    前記撮像画像内において所定条件に合致する各領域の位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定ステップとを前記コンピュータに実行させる座標算出プログラム。
  13. 前記ベクトル設定ステップは、
    前記撮像装置の傾きを算出する傾き算出手段によって算出された傾きに基づいて前記ベクトルの方向を設定する方向設定ステップと、
    所定の長さとなるように前記ベクトルの長さを設定する長さ設定ステップとを含む、請求項12に記載の座標算出プログラム。
  14. 前記座標決定ステップにおいて決定された前記2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データを、前記座標決定ステップにおける決定が行われる度に前記座標算出装置のメモリに記憶させる対象位置記憶ステップを前記コンピュータにさらに実行させ、
    前記長さ設定ステップにおいては、前記コンピュータは、最後に記憶された対象位置座標データにより示される前記2つの対象位置座標を結ぶ長さとなるように前記ベクトルの長さを設定する、請求項13に記載の座標算出プログラム。
  15. 前記方向設定ステップにおいては、前記コンピュータは、前記撮像装置が所定の傾きとなった状態において前記傾き算出手段によって算出される傾きと、当該状態において前記撮像装置によって撮像される撮像画像から検出される前記2つの撮像対象の位置座標を結ぶ方向との対応関係に基づいて前記ベクトルの方向を設定する、請求項13に記載の座標算出プログラム。
  16. 前記傾き算出手段は、前記撮像装置と共通の筐体に固定的に配置され、前記撮像装置の撮像方向に垂直な2軸方向の加速度を検出する加速度センサを含み、
    前記ベクトル設定においては、前記コンピュータは、前記加速度センサによって検出された各軸方向の加速度に基づいて前記ベクトルを算出する、請求項13に記載の座標算出プログラム。
  17. 前記座標決定ステップにおいて決定された前記2つの対象位置座標、および、当該2つの対象位置座標を結ぶベクトルの少なくともいずれか一方を示す対象位置座標データを、前記座標決定ステップにおける決定が行われる度に前記座標算出装置のメモリに記憶させる対象位置記憶ステップを前記コンピュータにさらに実行させ、
    前記ベクトル設定ステップにおいては、前記コンピュータは、最後に記憶された対象位置座標データから前記2つの対象位置座標を結ぶベクトルを算出または取得する、請求項12に記載の座標算出プログラム。
  18. 前記座標決定ステップは、
    前記検出された位置座標のうちの1つの位置座標が、前記2つの対象位置座標のうちの第1の対象位置座標および第2の対象位置座標のいずれかであるかを決定する第1決定ステップと、
    前記第1決定ステップにおいて第1の対象位置座標が決定されたとき、当該第1の対象位置座標に前記ベクトルを加算することによって第2の対象位置座標を決定し、前記第1決定ステップにおいて第2の対象位置座標が決定されたとき、当該第2の対象位置座標から前記ベクトルを減算することによって第1の対象位置座標を決定する第2決定ステップとを含む、請求項12に記載の座標算出プログラム。
  19. 前記座標決定ステップにおいて決定された前記2つの対象位置座標を含む対象位置座標データを、前記座標決定ステップにおける決定が行われる度に前記座標算出装置のメモリに記憶させる対象位置記憶ステップを前記コンピュータにさらに実行させ、
    前記第1決定ステップは、前記座標検出手段によって検出されたそれぞれの位置座標と、最後に記憶された対象位置座標データにより示される第1の対象位置座標および第2の対象位置座標それぞれとの距離を算出し、前記検出された位置座標のうちのある位置座標と、前回記憶された対象位置座標データにより示される第1の対象位置座標との距離が最短となるとき、当該ある位置座標を第1の対象位置座標に決定し、前記検出された位置座標のうちのある位置座標と、前回記憶された対象位置座標データにより示される第2の対象位置座標との距離が最短となるとき、当該ある位置座標を第2の対象位置座標に決定する、請求項18に記載の座標算出プログラム。
  20. 前記座標決定ステップは、
    前記検出された位置座標のうちの1つの位置座標を確定座標とし当該確定座標に前記ベクトルを加算した位置座標を第1仮座標とし、当該位置座標から前記ベクトルを減算した位置座標を第2仮座標として算出する仮座標算出ステップと、
    前記第1仮座標および前記第2仮座標のうちで前記第1仮座標のみが撮像画像の領域外となったとき、当該第1仮座標と前記確定座標とを前記2つの対象位置座標に決定し、前記第1仮座標および前記第2仮座標のうちで前記第2仮座標のみが撮像画像の領域外となったとき、当該第2仮座標と前記確定座標とを前記2つの対象位置座標に決定する決定実行ステップとを含む、請求項12に記載の座標算出プログラム。
  21. 前記検出された位置座標が2つ以上であるとき、当該各位置座標を用いて前記2つの対象位置座標を算出する対象位置座標算出ステップを前記コンピュータにさらに実行させ、
    前記座標決定ステップは、前記対象位置座標算出ステップにおいて前記2つの対象位置座標を算出することが不可能であったときに実行される、請求項12に記載の座標算出プログラム。
  22. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置のコンピュータで実行されるプログラムであって、
    前記撮像画像内における2つの位置座標を結ぶ方向と当該2つの位置座標間の長さとの少なくともいずれかに対する基準を設定する基準設定ステップと、
    前記撮像画像内において所定条件に合致する領域の位置座標のうちの2つの位置座標の組み合わせの中から、前記基準設定ステップにおいて設定された基準に最も近い2つの位置座標の組み合わせを選択する選択ステップと、
    前記選択ステップにおいて選択された2つの位置座標が選択できたか否かを判定する判定ステップと、
    前記判定ステップにおける判定結果が肯定であるとき、前記選択ステップにおいて選択された2つの位置座標を前記2つの対象位置座標として出力する出力ステップと、
    前記判定ステップにおける判定結果が否定であるとき、前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定ステップと、
    前記判定ステップにおける判定結果が否定であるとき、前記撮像画像内において所定条件に合致する領域の位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定ステップとを前記コンピュータに実行させる座標算出プログラム。
  23. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出システムであって、
    前記撮像画像内において所定条件に合致する領域の位置座標を当該領域毎に検出する座標検出手段と、
    前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定手段と、
    前記座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定手段とを備える、座標算出システム。
  24. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出システムであって、
    前記撮像画像内において所定条件に合致する領域の位置座標を当該領域毎に検出する座標検出手段と、
    前記座標検出手段によって複数の位置座標が検出されたとき、前記撮像画像内における2つの位置座標を結ぶ方向と当該2つの位置座標間の長さとの少なくともいずれかに対する基準を設定する基準設定手段と、
    前記複数の位置座標のうちの2つの位置座標の組み合わせの中から、前記基準設定手段によって設定された基準に最も近い2つの位置座標の組み合わせを選択する選択手段と、
    前記選択手段によって選択された2つの位置座標が選択できたか否か判定する判定手段と、
    前記判定手段による判定結果が肯定であるとき、前記選択手段によって選択された2つの位置座標を前記2つの対象位置座標として出力する出力手段と、
    前記判定手段による判定結果が否定であるとき、前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定手段と、
    前記判定手段による判定結果が否定であるとき、前記座標検出手段によって検出された位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定手段とを備える、座標算出システム。
  25. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置で実行される座標算出方法であって、
    前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定ステップと、
    前記撮像画像内において所定条件に合致する各領域の位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定ステップとを含む座標算出方法。
  26. 撮像装置によって撮像される撮像画像から、撮像画像に対応する平面上における所定の2つの撮像対象の位置を示す2つの対象位置座標を算出する座標算出装置で実行される座標算出方法であって、
    前記撮像画像内における2つの位置座標を結ぶ方向と当該2つの位置座標間の長さとの少なくともいずれかに対する基準を設定する基準設定ステップと、
    前記撮像画像内において所定条件に合致する領域の位置座標のうちの2つの位置座標の組み合わせの中から、前記基準設定ステップにおいて設定された基準に最も近い2つの位置座標の組み合わせを選択する選択ステップと、
    前記選択ステップにおいて選択された2つの位置座標が選択できたか否かを判定する判定ステップと、
    前記判定ステップにおける判定結果が肯定であるとき、前記選択ステップにおいて選択された2つの位置座標を前記2つの対象位置座標として出力する出力ステップと、
    前記判定ステップにおける判定結果が否定であるとき、前記撮像画像内における2つの位置座標の相対的な位置関係を示すベクトルを設定するベクトル設定ステップと、
    前記判定ステップにおける判定結果が否定であるとき、前記撮像画像内において所定条件に合致する領域の位置座標のうちの1つの位置座標を一方の前記対象位置座標に決定し、当該1つの位置座標と前記ベクトルとを用いて他方の前記対象位置座標を決定する座標決定ステップとを含む座標算出方法。
JP2006064437A 2006-03-09 2006-03-09 座標算出装置および座標算出プログラム Expired - Lifetime JP4837405B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006064437A JP4837405B2 (ja) 2006-03-09 2006-03-09 座標算出装置および座標算出プログラム
US11/405,664 US7834848B2 (en) 2006-03-09 2006-04-18 Coordinate calculating apparatus and coordinate calculating program
EP06008497.7A EP1832967B1 (en) 2006-03-09 2006-04-25 Coordinate calculating apparatus and coordinate calculating program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006064437A JP4837405B2 (ja) 2006-03-09 2006-03-09 座標算出装置および座標算出プログラム

Publications (2)

Publication Number Publication Date
JP2007241735A JP2007241735A (ja) 2007-09-20
JP4837405B2 true JP4837405B2 (ja) 2011-12-14

Family

ID=36441382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006064437A Expired - Lifetime JP4837405B2 (ja) 2006-03-09 2006-03-09 座標算出装置および座標算出プログラム

Country Status (3)

Country Link
US (1) US7834848B2 (ja)
EP (1) EP1832967B1 (ja)
JP (1) JP4837405B2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7221287B2 (en) 2002-03-05 2007-05-22 Triangle Software Llc Three-dimensional traffic report
WO2005013063A2 (en) 2003-07-25 2005-02-10 Landsonar, Inc. System and method for determining recommended departure time
US9229540B2 (en) 2004-01-30 2016-01-05 Electronic Scripting Products, Inc. Deriving input from six degrees of freedom interfaces
US7961909B2 (en) 2006-03-08 2011-06-14 Electronic Scripting Products, Inc. Computer interface employing a manipulated object with absolute pose detection component and a display
JP4773170B2 (ja) 2005-09-14 2011-09-14 任天堂株式会社 ゲームプログラムおよびゲームシステム
JP5089079B2 (ja) * 2006-05-08 2012-12-05 任天堂株式会社 プログラム、情報記憶媒体及び画像生成システム
JP2007300974A (ja) * 2006-05-08 2007-11-22 Nintendo Co Ltd プログラム、情報記憶媒体及び画像生成システム
US9364755B1 (en) * 2006-05-08 2016-06-14 Nintendo Co., Ltd. Methods and apparatus for using illumination marks for spatial pointing
GB0620332D0 (en) * 2006-10-13 2006-11-22 Malvern Scient Solutions Ltd Switch arrangement and method for effecting switching
US9937577B2 (en) 2006-12-20 2018-04-10 Lincoln Global, Inc. System for a welding sequencer
US10994358B2 (en) 2006-12-20 2021-05-04 Lincoln Global, Inc. System and method for creating or modifying a welding sequence based on non-real world weld data
US9104195B2 (en) 2006-12-20 2015-08-11 Lincoln Global, Inc. Welding job sequencer
JP4918376B2 (ja) * 2007-02-23 2012-04-18 任天堂株式会社 情報処理プログラムおよび情報処理装置
JP5060798B2 (ja) * 2007-02-23 2012-10-31 任天堂株式会社 情報処理プログラムおよび情報処理装置
US20100292007A1 (en) 2007-06-26 2010-11-18 Nintendo Of America Inc. Systems and methods for control device including a movement detector
KR101348346B1 (ko) * 2007-09-06 2014-01-08 삼성전자주식회사 포인팅 장치, 포인터 제어 장치, 포인팅 방법 및 포인터제어 방법
US8493324B2 (en) * 2008-01-10 2013-07-23 Symax Technology Co., Ltd. Apparatus and method generating interactive signal for a moving article
JP5224832B2 (ja) * 2008-01-21 2013-07-03 任天堂株式会社 情報処理プログラムおよび情報処理装置
GB2458297B (en) * 2008-03-13 2012-12-12 Performance Designed Products Ltd Pointing device
TWI396967B (zh) * 2008-05-16 2013-05-21 Htc Corp 信號過濾方法及應用其之電子裝置與可讀取記錄媒體
US8851896B2 (en) 2008-08-21 2014-10-07 Lincoln Global, Inc. Virtual reality GTAW and pipe welding simulator and setup
US8911237B2 (en) 2008-08-21 2014-12-16 Lincoln Global, Inc. Virtual reality pipe welding simulator and setup
US9280913B2 (en) 2009-07-10 2016-03-08 Lincoln Global, Inc. Systems and methods providing enhanced education and training in a virtual reality environment
US8834168B2 (en) 2008-08-21 2014-09-16 Lincoln Global, Inc. System and method providing combined virtual reality arc welding and three-dimensional (3D) viewing
US9318026B2 (en) 2008-08-21 2016-04-19 Lincoln Global, Inc. Systems and methods providing an enhanced user experience in a real-time simulated virtual reality welding environment
US8884177B2 (en) 2009-11-13 2014-11-11 Lincoln Global, Inc. Systems, methods, and apparatuses for monitoring weld quality
US8747116B2 (en) 2008-08-21 2014-06-10 Lincoln Global, Inc. System and method providing arc welding training in a real-time simulated virtual reality environment using real-time weld puddle feedback
US9196169B2 (en) 2008-08-21 2015-11-24 Lincoln Global, Inc. Importing and analyzing external data using a virtual reality welding system
US9483959B2 (en) * 2008-08-21 2016-11-01 Lincoln Global, Inc. Welding simulator
US9330575B2 (en) 2008-08-21 2016-05-03 Lincoln Global, Inc. Tablet-based welding simulator
CN101676682B (zh) * 2008-09-19 2012-10-10 鸿富锦精密工业(深圳)有限公司 具有遥控感测系统的游戏机
JP5532865B2 (ja) * 2008-12-04 2014-06-25 セイコーエプソン株式会社 データ処理装置およびデータ処理システム
US8982116B2 (en) 2009-03-04 2015-03-17 Pelmorex Canada Inc. Touch screen based interaction with traffic data
US8619072B2 (en) 2009-03-04 2013-12-31 Triangle Software Llc Controlling a three-dimensional virtual broadcast presentation
US9046924B2 (en) 2009-03-04 2015-06-02 Pelmorex Canada Inc. Gesture based interaction with traffic data
US8274013B2 (en) 2009-03-09 2012-09-25 Lincoln Global, Inc. System for tracking and analyzing welding activity
US9221117B2 (en) 2009-07-08 2015-12-29 Lincoln Global, Inc. System for characterizing manual welding operations
US9773429B2 (en) 2009-07-08 2017-09-26 Lincoln Global, Inc. System and method for manual welder training
US10748447B2 (en) 2013-05-24 2020-08-18 Lincoln Global, Inc. Systems and methods providing a computerized eyewear device to aid in welding
US9011154B2 (en) 2009-07-10 2015-04-21 Lincoln Global, Inc. Virtual welding system
US8569655B2 (en) 2009-10-13 2013-10-29 Lincoln Global, Inc. Welding helmet with integral user interface
US8569646B2 (en) 2009-11-13 2013-10-29 Lincoln Global, Inc. Systems, methods, and apparatuses for monitoring weld quality
US9468988B2 (en) 2009-11-13 2016-10-18 Lincoln Global, Inc. Systems, methods, and apparatuses for monitoring weld quality
US8428394B2 (en) * 2010-05-25 2013-04-23 Marcus KRIETER System and method for resolving spatial orientation using intelligent optical selectivity
US8718910B2 (en) 2010-11-14 2014-05-06 Pelmorex Canada Inc. Crowd sourced traffic reporting
US9316717B2 (en) * 2010-11-24 2016-04-19 Samsung Electronics Co., Ltd. Position determination of devices using stereo audio
CA2821671C (en) 2010-12-13 2018-01-09 Edison Welding Institute, Inc. Welding training system
WO2012159083A2 (en) 2011-05-18 2012-11-22 Triangle Software Llc System for providing traffic data and driving efficiency data
US9141234B2 (en) * 2011-08-29 2015-09-22 Lenovo (Singapore) Pte. Ltd. Pressure and position sensing pointing devices and methods
CA2883973C (en) 2012-01-27 2021-02-23 Edgar Rojas Estimating time travel distributions on signalized arterials
US20160093233A1 (en) 2012-07-06 2016-03-31 Lincoln Global, Inc. System for characterizing manual welding operations on pipe and other curved structures
US9767712B2 (en) 2012-07-10 2017-09-19 Lincoln Global, Inc. Virtual reality pipe welding simulator and setup
US10223909B2 (en) 2012-10-18 2019-03-05 Uber Technologies, Inc. Estimating time travel distributions on signalized arterials
TWI468997B (zh) * 2013-01-09 2015-01-11 Pixart Imaging Inc 具有較大可操作範圍的指向系統及影像系統
US10930174B2 (en) 2013-05-24 2021-02-23 Lincoln Global, Inc. Systems and methods providing a computerized eyewear device to aid in welding
US20150072323A1 (en) 2013-09-11 2015-03-12 Lincoln Global, Inc. Learning management system for a real-time simulated virtual reality welding training environment
US10083627B2 (en) 2013-11-05 2018-09-25 Lincoln Global, Inc. Virtual reality and real welding training system and method
US9836987B2 (en) 2014-02-14 2017-12-05 Lincoln Global, Inc. Virtual reality pipe welding simulator and setup
CN106233358A (zh) 2014-06-02 2016-12-14 林肯环球股份有限公司 用于人工焊工培训的系统和方法
US11577159B2 (en) 2016-05-26 2023-02-14 Electronic Scripting Products Inc. Realistic virtual/augmented/mixed reality viewing and interactions
EP3319066A1 (en) 2016-11-04 2018-05-09 Lincoln Global, Inc. Magnetic frequency selection for electromagnetic position tracking
US10913125B2 (en) 2016-11-07 2021-02-09 Lincoln Global, Inc. Welding system providing visual and audio cues to a welding helmet with a display
US20180130226A1 (en) 2016-11-07 2018-05-10 Lincoln Global, Inc. System and method for calibrating a welding trainer
US10997872B2 (en) 2017-06-01 2021-05-04 Lincoln Global, Inc. Spring-loaded tip assembly to support simulated shielded metal arc welding
US11557223B2 (en) 2018-04-19 2023-01-17 Lincoln Global, Inc. Modular and reconfigurable chassis for simulated welding training
US11475792B2 (en) 2018-04-19 2022-10-18 Lincoln Global, Inc. Welding simulator with dual-user configuration
CN109190157B (zh) * 2018-07-26 2023-05-23 中国核电工程有限公司 一种用于Autodesk AutoCAD P&ID的对象位置信息的刷新方法
GB2583535B (en) * 2019-05-03 2021-11-10 Sony Interactive Entertainment Inc Data processing

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5309137A (en) 1991-02-26 1994-05-03 Mitsubishi Denki Kabushiki Kaisha Motor car traveling control device
JPH05127809A (ja) 1991-04-19 1993-05-25 Sharp Corp 三次元空間座標入力装置
US5598187A (en) * 1993-05-13 1997-01-28 Kabushiki Kaisha Toshiba Spatial motion pattern input system and input method
US5574479A (en) 1994-01-07 1996-11-12 Selectech, Ltd. Optical system for determining the roll orientation of a remote unit relative to a base unit
GB2289756B (en) 1994-05-26 1998-11-11 Alps Electric Co Ltd Space coordinates detecting device and input apparatus using same
JP3517482B2 (ja) * 1995-06-08 2004-04-12 キヤノン株式会社 座標検出装置及び方法
JPH11305935A (ja) 1998-04-24 1999-11-05 Image Tec Kk 位置検出システム
US6707443B2 (en) 1998-06-23 2004-03-16 Immersion Corporation Haptic trackball device
KR20040016766A (ko) * 2000-04-10 2004-02-25 허니웰 인터내셔널 인코포레이티드 원격 자세 및 위치 지시 장치
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US6864877B2 (en) 2000-09-28 2005-03-08 Immersion Corporation Directional tactile feedback for haptic feedback interface devices
JP2003173237A (ja) * 2001-09-28 2003-06-20 Ricoh Co Ltd 情報入出力システム、プログラム及び記憶媒体
US6982697B2 (en) 2002-02-07 2006-01-03 Microsoft Corporation System and process for selecting objects in a ubiquitous computing environment
US20040095317A1 (en) * 2002-11-20 2004-05-20 Jingxi Zhang Method and apparatus of universal remote pointing control for home entertainment system and computer
JP2005021458A (ja) * 2003-07-03 2005-01-27 Tamura Seisakusho Co Ltd 指示位置特定装置とその方法ならびに画像表示システム
JP2005165700A (ja) * 2003-12-03 2005-06-23 Tamura Seisakusho Co Ltd マークユニット
US7389171B2 (en) 2003-12-22 2008-06-17 Ford Global Technologies Llc Single vision sensor object detection system
US7561720B2 (en) 2004-04-30 2009-07-14 Visteon Global Technologies, Inc. Single camera system and method for range and lateral position measurement of a preceding vehicle
PL1741088T3 (pl) 2004-04-30 2012-08-31 Hillcrest Lab Inc Urządzenia wskazujące w przestrzeni swobodnej, z kompensacją nachylenia i usprawnioną użytecznością
WO2006014810A2 (en) 2004-07-29 2006-02-09 Kevin Ferguson A human movement measurement system
US7672543B2 (en) 2005-08-23 2010-03-02 Ricoh Co., Ltd. Triggering applications based on a captured text in a mixed media environment
US7545956B2 (en) 2005-08-12 2009-06-09 Visteon Global Technologies, Inc. Single camera system and method for range and lateral position measurement of a preceding vehicle
JP5424373B2 (ja) 2006-03-09 2014-02-26 任天堂株式会社 画像処理装置、画像処理プログラム、画像処理システム、および画像処理方法

Also Published As

Publication number Publication date
EP1832967B1 (en) 2013-10-16
US20070211026A1 (en) 2007-09-13
EP1832967A2 (en) 2007-09-12
EP1832967A3 (en) 2012-09-05
US7834848B2 (en) 2010-11-16
JP2007241735A (ja) 2007-09-20

Similar Documents

Publication Publication Date Title
JP4837405B2 (ja) 座標算出装置および座標算出プログラム
JP4530419B2 (ja) 座標算出装置および座標算出プログラム
JP4684147B2 (ja) 傾き算出装置、傾き算出プログラム、ゲーム装置およびゲームプログラム
JP4907129B2 (ja) 情報処理システムおよびプログラム
JP5075330B2 (ja) 情報処理プログラム
JP4773170B2 (ja) ゲームプログラムおよびゲームシステム
JP4471910B2 (ja) 仮想位置決定プログラム
JP4260814B2 (ja) ゲーム装置およびゲームプログラム
JP4689585B2 (ja) 情報処理装置および情報処理プログラム
JP4547346B2 (ja) 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム
JP4863761B2 (ja) ゲーム装置およびゲームプログラム
GB2493701A (en) Stereoscopic and touchpad input device using light strip
JP5037842B2 (ja) 情報処理装置およびプログラム
JP5031260B2 (ja) オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法
JP5756796B2 (ja) リモートコントローラの加速度計センサの較正
JP5735866B2 (ja) 情報処理システムおよびプログラム
JP2008307409A (ja) 情報処理装置および情報処理プログラム
JP4151983B2 (ja) 移動方向算出装置および移動方向算出プログラム
JP5352626B2 (ja) 情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101026

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110902

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110927

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141007

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4837405

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250