画像処理装置および画像処理プログラム
【課題】撮像手段を備えた入力装置を用いて自由度の高い新たな操作を実現する画像処理装置および画像処理プログラムを提供する。
【解決手段】撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて所定の画像処理を行う。撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得し、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。そして、処理した表示画像を表示装置に表示させる。
【解決手段】撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて所定の画像処理を行う。撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得し、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。そして、処理した表示画像を表示装置に表示させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および画像処理プログラムに関し、より特定的には、撮像手段を備えた入力装置を用いて操作する画像処理装置および画像処理プログラムに関する。
【背景技術】
【0002】
従来、赤外線光源を標識として撮像し、その撮像結果を解析して照準位置を求める位置検出システムが開示されている(例えば、特許文献1参照)。
【0003】
特許文献1では、位置検出システムの実施例として撮像装置が取り付けられた銃をゲームコントローラとして狙い撃ちするゲームを開示している。撮像装置は、ブラウン管の4隅に配設された赤外線光源を撮像対象として、当該撮像対象が撮像された撮像画像上の位置に応じて銃がブラウン管に対して指し示している位置を検出する。そして、銃が指し示している位置を照準位置として仮想的な射撃ゲームが実行される。なお、特許文献1の第21段落に記載されているように、撮像装置と標的(標識)との距離を自由に変える場合、撮像装置に制御可能なズーム機能が備えられ、常に標識が最適な大きさで撮像されるようにズーム機能が制御されることによって、正確な照準位置が検出される。
【特許文献1】特開平11−305935号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来、入力装置(ゲームコントローラ)と撮像対象との距離自体を操作入力に用いるという発想はない。例えば、上記特許文献1で開示された位置検出システムにおいても、撮像装置と標識との距離は補正のために用いられており、当該距離の変動は操作入力にとってはむしろ正確な操作を阻害する要因となっている。
【0005】
それ故に、本発明の目的は、撮像手段を備えた入力装置を用いて自由度の高い新たな操作を実現する画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、ステップ番号(ステップをSと略称しステップ番号のみを記載する)、図面番号等は、本発明の理解を助けるために後述する最良の形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、撮像対象(8)を撮像するための撮像手段(74)を備えた入力装置(7)を用いた入力操作に応じて所定の画像処理を行う画像処理装置(3)である。画像処理装置は、対象画像データ取得手段(S72)、画像処理手段(S60、S62)、および表示制御手段(S63)を備える。対象画像データ取得手段は、撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データ(mi、diamL、diamR)を逐次取得する。画像処理手段は、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。表示制御手段は、画像処理手段が処理した表示画像を表示装置(2)に表示させる。なお、対象画像データは、複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離や、単一の撮像対象を撮像した撮像画像における単一の対象画像の大きさ(例えば、直径や幅)等を示すデータが含まれる。
【0008】
第2の発明は、上記第1の発明において、画像処理手段は、距離算出手段(S53、S83)および拡大縮小手段を含む。距離算出手段は、対象画像データに基づいて、撮像手段と撮像対象との間の距離(realD)を逐次算出する。拡大縮小手段は、距離の変化に応じて表示画像の拡大または縮小を行う。
【0009】
第3の発明は、上記第2の発明において、画像処理手段は、所定の期間における距離の変化に応じて表示画像の拡大または縮小を行う。
【0010】
第4の発明は、上記第3の発明において、入力装置は、押下可能な少なくとも1つの操作キー(72)を備え、その操作キーに対する押下状態に応じた操作情報(Da3)を少なくとも出力するものである。画像処理装置は、操作情報取得手段(S51、S81)および記憶手段(S56)を、さらに備える。操作情報取得手段は、操作情報を取得する。記憶手段は、操作キーが押下開始されたことを操作情報が示すとき、距離算出手段が算出した距離を記憶する(33)。画像処理手段は、差分算出手段(S58)を含む。差分算出手段は、記憶手段に記憶された距離(initD)と操作キーが押下されていることを操作情報が示している間に距離算出手段が算出する距離(realD)との距離差(moveD)を逐次算出することによって、操作キーが押下されている期間を所定の期間とした距離の変化を求める。画像処理手段は、距離差に基づいて表示画像の拡大または縮小を行う。
【0011】
第5の発明は、上記第2〜第4の発明の何れかにおいて、画像処理手段は、距離の増加に応じて表示画像の拡大を行い、距離の減少に応じて表示画像の縮小を行う(S>0)。
【0012】
第6の発明は、上記第2〜第4の発明の何れかにおいて、画像処理手段は、距離の増加に応じて表示画像の縮小を行い、距離の減少に応じて表示画像の拡大を行う(S<0)。
【0013】
第7の発明は、上記第2の発明において、指示座標算出手段を、さらに備える。指示座標算出手段は、撮像画像における対象画像の位置に基づいて、表示装置の表示領域に対応する指示座標を算出する。画像処理手段は、指示座標の変化に基づいて、表示画像の移動をさらに行う(図13(a))。
【0014】
第8の発明は、上記第2の発明において、傾き算出手段を、さらに備える。傾き算出手段は、撮像画像における対象画像の位置に基づいて、入力装置の傾きを算出する。画像処理手段は、傾きの変化に基づいて、表示画像の回転をさらに行う(図13(b))。
【0015】
第9の発明は、上記第2の発明において、画像処理手段は、距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、表示画像の拡大または縮小を行う。
【0016】
第10の発明は、上記第2の発明において、画像処理手段は、距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、表示画像の拡大または縮小を行う。
【0017】
第11の発明は、上記第1の発明において、速度算出手段(S84)を、さらに備える。速度算出手段は、対象画像データに応じて、撮像対象に対して入力装置が移動する速度(velD)を逐次算出する。画像処理手段は、速度に応じて表示画像の拡大または縮小を行う。
【0018】
第12の発明は、撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて画像処理を行うコンピュータ(30)で実行される画像処理プログラムである。画像処理プログラムは、対象画像データ取得ステップ、画像処理ステップ、および表示制御ステップを、コンピュータに実行させる。対象画像データ取得ステップは、撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する。画像処理ステップは、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。表示制御ステップは、画像処理手段が処理した表示画像を表示装置に表示させる。
【0019】
第13の発明は、上記第12の発明において、画像処理ステップは、距離算出ステップおよび拡大縮小ステップを含む。距離算出ステップは、対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する。拡大縮小ステップは、距離の変化に応じて表示画像の拡大または縮小を行う。
【0020】
第14の発明は、上記第13の発明において、画像処理ステップでは、所定の期間における距離の変化に応じて表示画像の拡大または縮小が行われる。
【0021】
第15の発明は、上記第14の発明において、入力装置は、押下可能な少なくとも1つの操作キーを備え、その操作キーに対する押下状態に応じた操作情報を少なくとも出力するものである。画像処理プログラムは、操作情報取得ステップおよび記憶制御ステップを、さらにコンピュータに実行させる。操作情報取得ステップは、操作情報を取得する。記憶制御ステップは、操作キーが押下開始されたことを操作情報が示すとき、距離算出ステップで算出した距離をメモリに記憶する。画像処理ステップは、差分算出ステップを含む。差分算出ステップは、メモリに記憶された距離と操作キーが押下されていることを操作情報が示している間に距離算出ステップで算出する距離との距離差を逐次算出することによって、操作キーが押下されている期間を所定の期間とした距離の変化を求める。画像処理ステップでは、距離差に基づいて表示画像の拡大または縮小が行われる。
【0022】
第16の発明は、上記第13〜第15の発明の何れかにおいて、画像処理ステップでは、距離の増加に応じて表示画像の拡大が行われ、距離の減少に応じて表示画像の縮小が行われる。
【0023】
第17の発明は、上記第13〜第15の発明の何れかにおいて、画像処理ステップでは、距離の増加に応じて表示画像の縮小が行われ、距離の減少に応じて表示画像の拡大が行われる。
【0024】
第18の発明は、上記第13の発明において指示座標算出ステップを、さらにコンピュータに実行させる。指示座標算出ステップは、撮像画像における対象画像の位置に基づいて、表示装置の表示領域に対応する指示座標を算出する。画像処理ステップでは、指示座標の変化に基づいて、表示画像の移動がさらに行われる。
【0025】
第19の発明は、上記第13の発明において、傾き算出ステップを、さらにコンピュータに実行させる。傾き算出ステップは、撮像画像における対象画像の位置に基づいて、入力装置の傾きを算出する。画像処理ステップでは、傾きの変化に基づいて、表示画像の回転がさらに行われる。
【0026】
第20の発明は、上記第13の発明において、画像処理ステップでは、距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、表示画像の拡大または縮小が行われる。
【0027】
第21の発明は、上記第13の発明において、画像処理ステップでは、距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、表示画像の拡大または縮小が行われる。
【0028】
第22の発明は、上記第12の発明において、速度算出ステップを、さらにコンピュータに実行させる。速度算出ステップは、対象画像データに応じて、撮像対象に対して入力装置が移動する速度を逐次算出する。画像処理ステップでは、速度に応じて表示画像の拡大または縮小が行われる。
【発明の効果】
【0029】
上記第1の発明によれば、対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データ(複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離や、単一の撮像対象を撮像した撮像画像における単一の対象画像の直径や幅などのサイズや面積等)に応じて、表示画像の拡大/縮小処理が可能となり、直感的で新規な画像処理操作が実現できる。
【0030】
上記第2の発明によれば、対象画像から得られる対象画像データから、入力装置と撮像対象との間の距離を得ることができるため、当該距離を利用した直感的で新規な操作が実現できる。
【0031】
上記第3の発明によれば、表示画像の拡大/縮小を行う期間を限定することにより拡大/縮小の制御がしやすい。
【0032】
上記第4の発明によれば、操作キーが押下されているときのみに表示画像の拡大/縮小を行う期間が限定されるため、ユーザによる拡大/縮小の制御がしやすい。
【0033】
上記第5の発明によれば、表示装置に表示されている画像を掴んでいるような感覚で直感的な操作が可能となる。
【0034】
上記第6の発明によれば、表示装置に表示されている画像を撮像するカメラを操作しているような感覚で直感的な操作が可能となる。
【0035】
上記第7の発明によれば、表示装置に表示されている画像を掴んで上下左右に移動させるような操作も可能となり、距離に加えて入力装置の位置も利用することで、より複雑かつ直感的な操作が可能となる。
【0036】
上記第8の発明によれば、表示装置に表示されている画像を掴んで回転させるような操作も可能となり、距離に加えて入力装置の傾きも利用することで、より複雑かつ直感的な操作が可能となる。
【0037】
上記第9の発明によれば、仮想空間内を表示装置で表示する際、表示する画像の拡大/縮小を容易に行うことができる。
【0038】
上記第10の発明によれば、2次元画像を表示装置で表示する際、表示する画像の拡大/縮小を容易に行うことができる。
【0039】
上記第11の発明によれば、対象画像から得られる対象画像データから、撮像対象に対して入力装置が移動する速度を得ることができるため、当該速度を利用した直感的で新規な操作が実現できる。
【0040】
本発明の画像処理プログラムによれば、コンピュータで実行することによって上述した画像処理装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0041】
図1を参照して、本発明の一実施形態に係る画像処理装置について説明する。以下、説明を具体的にするために、当該画像処理装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、本発明の画像処理装置の一例として据置型ゲーム装置を用いて、当該ゲームシステム1について説明する。
【0042】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0043】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。なお、本発明の画像処理プログラムは、光ディスク4に記憶されたゲームプログラムの一部に含まれているものとする。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0044】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
【0045】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0046】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0047】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0048】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0049】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0050】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0051】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0052】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0053】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0054】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0055】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびBボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0056】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0057】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0058】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばAボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。なお、本発明では、操作ボタン72iがモニタ2に表示された表示物を掴むような操作をするためのドラッグボタンとして機能し、操作ボタン72iを押下することによってモニタ2に表示された表示物を掴むことができる。
【0059】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0060】
次に、図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0061】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。また、無線モジュール753およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0062】
一方、図5(b)において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0063】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0064】
図6において、コントローラ7は、上述した操作部72および撮像情報演算部74の他に、その内部に通信部75および加速度センサ701を備えている。
【0065】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標やそれらの面積、直径、幅等を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
【0066】
加速度センサ701は、コントローラ7の上下方向、左右方向、および前後方向の3軸でそれぞれ加速度を検知する加速度センサである。なお、加速度センサ701は、必要な操作信号の種類によっては、上下方向および左右方向の2軸でそれぞれ加速度を検出する加速度センサが用いられてもかまわない。加速度センサ701が検知した加速度を示すデータは、通信部75へ出力される。なお、加速度センサ701は、典型的には静電容量式の加速度センサが用いられるが、他の方式の加速度センサを用いてもかまわない。この加速度センサ701から出力される加速度データに基づいて、マイコン751やCPU30などのコンピュータを利用したソフトウェア処理によってコントローラ7の動きを算出することができる。
【0067】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0068】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0069】
図7に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤは、一方の手(例えば右手)でコントローラ7を把持する(図8および図9参照)。そして、プレイヤは、コントローラ7の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコントローラ7を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象となる。
【0070】
プレイヤがその前面がモニタ2に向くようにコントローラ7を把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ8Lおよび8Rの位置情報(対象画像の位置)や面積、直径、幅等のサイズ情報を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置3へ送信することによって、ゲーム装置3では、基準からの上記位置情報の差に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコントローラ7の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ7が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、3次元空間に対してコントローラ7の移動方向に沿った方向入力や座標入力を行うことができる。なお、後述するゲーム処理動作例では、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの重心位置の座標を少なくとも取得し、上記処理結果データとして出力する例を用いる。
【0071】
また、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの面積、直径、および幅等の何れかを示すサイズ情報を利用することによって、さらに詳細な3次元空間に対するコントローラ7の位置を解析できる。具体的には、ゲーム装置3では、マーカ8Lおよび8Rに対して斜めの位置から撮像情報演算部74によって撮像された、すなわちモニタ2に対して斜めの位置からコントローラ7を操作した場合でも、そのマーカ8Lおよび8Rからの距離を求めることが可能となる。後述するゲーム処理動作例では、ゲーム装置3が上記重心位置の座標に加えて上記サイズ情報も処理結果データとして取得する態様も説明する。
【0072】
このように、コントローラ7の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置3におけるゲーム処理において、コントローラ7から出力されるデータを処理してコントローラ7の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコントローラ7の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ7の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力として用いることができる。なお、ゲームシステム1では、マーカ8Lおよび8Rを撮像した撮像画像を用いて、マーカ8Lおよび8Rからコントローラ7までの距離もモニタ2の表示画面に直接作用する操作入力として用いることができるが、詳細な動作については後述する。
【0073】
図8および図9を参照して、プレイヤがコントローラ7を一方の手で把持した状態について説明する。なお、図8は、プレイヤがコントローラ7を右手で把持した状態をコントローラ7の前面側から見た一例である。図9は、プレイヤがコントローラ7を右手で把持した状態をコントローラ7の左側面側から見た一例である。
【0074】
図8および図9に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコントローラ7の上面(例えば、十字キー72a付近)に添え、プレイヤの人差し指をコントローラ7下面の凹部(例えば、操作ボタン72i付近)に添えたとき、コントローラ7の前面に設けられている撮像情報演算部74の光入射口がプレイヤの前方方向に露出する。なお、このようなコントローラ7に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【0075】
このように、コントローラ7は、プレイヤが片手で把持した状態で十字キー72aや操作ボタン72i等の操作部72を容易に操作することができる。さらに、プレイヤがコントローラ7を片手で把持したとき、当該コントローラ7の前面に設けられている撮像情報演算部74の光入射口が露出するため、上述した2つのマーカ8Lおよび8Rからの赤外光を容易に当該光入射口から取り入れることができる。つまり、プレイヤは、コントローラ7が有する撮像情報演算部74の機能を阻害することなくコントローラ7を片手で把持することができる。したがって、プレイヤがコントローラ7を把持した手を表示画面に対して動かすことによって、コントローラ7は、プレイヤの手の運動が表示画面に直接作用する操作入力機能をさらに備えることができる。
【0076】
ここで、図10に示すように、マーカ8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、マーカ8Lおよび8Rの視野角θ1は共に34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にマーカ8Lおよび8Rが共に存在し、マーカ8Lの視野角θ1の中でかつマーカ8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置3は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコントローラ7の位置(マーカ8Lおよび8Rからの距離を含む)を算出する。
【0077】
次に、図11および図12を参照して、プレイヤの操作に応じてモニタ2に表示される画面例について説明する。なお、図11は、プレイヤUがマーカ8Lおよび8Rに対して前後方向へ操作する一例を示す上面図である。図12は、図11に示した操作に応じて、モニタ2に表示される画面例を示す図である。
【0078】
図11において、プレイヤUは、コントローラ7の前面をマーカ8Lおよび8R(モニタ2)に向けて、当該コントローラ7を把持している。そして、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離を距離realDとする。ここで、図11に示す状態Aでは、プレイヤUが距離realD0となる位置でコントローラ7を把持している。そして、プレイヤUは、コントローラ7をモニタ2に向かって前後に動かすことによって、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離realDを変化させることができる。例えば、プレイヤUが操作ボタン72i(ドラッグボタン)を押下した状態でコントローラ7をモニタ2に向かって前に動かすことによって、距離realD0から距離realDnの位置へコントローラ7を動かしている(状態B)。また、プレイヤUが操作ボタン72i(ドラッグボタン)を押下した状態でコントローラ7をモニタ2に向かって後ろに動かすことによって、距離realD0から距離realDfの位置へコントローラ7を動かしている(状態C)。
【0079】
図12(a)は、上記状態Aにおいてモニタ2に表示される画面例である。図12(b)は、上記状態Bにおいてモニタ2に表示される画面例である。図12(c)は、上記状態Cにおいてモニタ2に表示される画面例である。図12(a)において、モニタ2には、状態Aにおいてパズルが記述された領域(オブジェクトOBJ)の一部が表示されている。図12(b)において、モニタ2には、状態Aにおいて表示されていたオブジェクトOBJが縮小され、当該オブジェクトOBJ全体が表示されている。つまり、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2に近づけることによって、モニタ2に表示された表示物を縮小して表示することができる。一方、図12(c)において、モニタ2には、状態Aにおいて表示されていたオブジェクトOBJが拡大されて表示されている。つまり、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2から遠ざけることによって、モニタ2に表示された表示物を拡大して表示することができる。
【0080】
さらに、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2に対して上下左右に動かしたり、コントローラ7を左右にひねったりすることよって、モニタ2に表示された表示物を移動させて表示することができる。図13(a)に示すように、プレイヤUが操作ボタン72iを押下した状態でコントローラ7をモニタ2に対して上下左右に動かすことによって、オブジェクトOBJが上下左右に移動して表示される。また、図13(b)に示すように、プレイヤUが操作ボタン72iを押下した状態でコントローラ7をひねることによって、オブジェクトOBJが左右に回転移動して表示される。
【0081】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図14を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置3のメインメモリ33に記憶される主なデータを示す図である。
【0082】
図14に示すように、メインメモリ33には、操作情報Da、操作状態情報Db、および表示情報Dc等が記憶される。なお、メインメモリ33には、図14に示す情報に含まれるデータの他、ゲーム処理に必要なデータが適宜記憶される。
【0083】
操作情報Daは、コントローラ7から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Daには、上述の処理結果データの位置情報に相当する第1座標データDa1および第2座標データDa2が含まれる。第1座標データDa1は、撮像素子743が撮像した撮像画像に対して、2つのマーカ8Lおよび8Rのうちの一方の画像の位置(撮像画像内における位置)を表す座標のデータである。第2座標データDa2は、他方のマーカの画像の位置(撮像画像内における位置)を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるXY座標系によって表される。
【0084】
また、操作情報Daには、撮像画像から得られる処理結果データの一例の座標データ(第1座標データDa1および第2座標データDa2)の他、操作部72から得られるキーデータDa3等が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報Daを受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば1フレーム毎(1/60秒)に読み出され、その最新の情報がメインメモリ33に記憶される。
【0085】
操作状態情報Dbは、コントローラ7の操作状態を撮像画像に基づいて判断した情報である。操作状態情報Dbは、撮像画像に含まれる対象画像(マーカ)の位置や向きから得られるデータであり、具体的には、方向データDb1、中点データDb2、現在距離データDb3、初期処理データDb4、およびドラッグフラグDb5等を含む。方向データDb1は、第1座標データDa1から第2座標データDa2への方向を示すデータである。ここでは、方向データDb1は、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルのデータとする。中点データDb2は、第1座標データDa1と第2座標データDa2との中点の座標を示す。ここで、2つのマーカ(マーカ8Lおよび8R)の画像を1つの対象画像としてみた場合、中点データDb2は、対象画像の位置を示すことになる。現在距離データDb3は、第1座標データDa1および第2座標データDa2に基づいて算出された、マーカ8Lおよび8Rからコントローラ7までの現在距離realDを示すデータである。初期距離データDb4は、所定タイミング(例えば、ドラッグボタンを押下開始したタイミング)におけるマーカ8Lおよび8Rからコントローラ7までの距離initDを示すデータである。ドラッグフラグDb5は、プレイヤがドラッグボタンを押下しているか否かを区別するためのドラッグフラグisDragを示すデータである。
【0086】
表示情報Dcは、仮想現在距離データDc1、仮想初期距離データDc2、スケールデータDc3、カメラ行列データDc4、および画像データDc5を含んでいる。仮想現在距離データDc1は、現在距離realDをモニタ2に表現される仮想空間における距離に置換した仮想現在距離virtualDを示すデータである。仮想初期距離データDc2は、所定タイミング(例えば、ドラッグボタンを押下開始したタイミング)における仮想現在距離virtualDを仮想初期距離init_virtualDとして示すデータである。スケールデータDc3は、モニタ2に仮想空間を表現するための仮想カメラの視野の大きさを示すスケール値scaleを示すデータである。カメラ行列データDc4は、仮想カメラにおけるカメラの移動、ズーム、向きの回転、位置の回転等が適用されるカメラ行列を示すデータである。画像データDc5は、オブジェクトOBJ等を配置してモニタ2に表示する画像を生成するためのデータである。
【0087】
次に、図15〜図17を参照して、ゲーム装置3において行われるゲーム処理の詳細を説明する。なお、図15は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。図16は、図15におけるステップ53の距離算出処理の詳細な動作を示すサブルーチンである。図17は、現在距離realDを算出する動作を説明するための図である。なお、図15および図16に示すに示すフローチャートにおいては、処理のうち、ゲームプログラムに含まれる画像処理プログラムを実行してコントローラ7に関する操作に基づいて行われる画像拡大/縮小処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図15および図16では、CPU30が実行する各ステップを「S」と略称する。
【0088】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図15および図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0089】
図15において、CPU30は、コントローラ7から受信した操作情報を取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、操作情報を操作情報Daとしてメインメモリ33に記憶する。ここで、ステップ51で取得される操作情報には、マーカ8Lおよび8Rの撮像画像内における位置を示す座標データ(第1座標データDa1および第2座標データDa2)の他、コントローラ7の操作部72がどのように操作されたか示すデータ(キーデータDa3)が含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置3へ送信する。そして、CPU30は、1フレーム毎に操作情報を利用するものとする。したがって、図15に示すステップ51〜ステップ64の処理ループは、1フレーム毎に繰り返し実行される。
【0090】
次に、CPU30は、キーデータDa3を参照し、ドラッグボタンが押下されているか否かを判断する(ステップ52)。そして、CPU30は、ドラッグボタンが押下されている場合、処理を次のステップ53に進める。一方、CPU30は、ドラッグボタンが押下されていない場合、ドラッグフラグDb5に記述されたドラッグフラグisDragを0に設定して(ステップ65)、処理を次のステップ62に進める。
【0091】
ステップ53において、CPU30は、距離算出処理を行い、処理を次のステップに進める。距離算出処理においては、コントローラ7から送信され記憶された第1座標データDa1および第2座標データDa2に基づいて、コントローラ7とマーカ8Lおよび8Rとの現在距離realDが算出される。以下、図16および図17を参照して、ステップ53における詳細な動作について説明する。
【0092】
図16において、CPU30は、第1座標データDa1および第2座標データDa2を取得し(ステップ71)、距離miを算出する(ステップ72)。図17に示すように、距離miは、撮像画像内での2点間の距離である。この2点は、マーカ8Lおよび8Rを撮像した画像に相当し、それぞれの座標を第1座標データDa1および第2座標データDa2として得ている。したがって、CPU30は、第1座標データDa1および第2座標データDa2を用いれば、距離miを算出することができる。具体的には、第1座標データDa1が位置座標(Lx,Ly)、第2座標データDa2が位置座標(Rx,Ry)であるとすると、
【数1】
で算出される。
【0093】
次に、CPU30は、マーカ8Lおよび8Rの設置位置に対する撮像素子743の撮像可能範囲の幅w(図17参照)を算出する(ステップ73)。ここで、幅wは、
w=wi×m/mi
で算出される。ここで、mは、マーカ8Lおよび8Rの設置間隔(実際の設置間隔;例えば、20cm)であり、固定値である。また、wiは、幅wに対応する撮像素子743の撮像画像の幅wiであり、固定値である。これら設置間隔mおよび幅wiは、いずれも固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。なお、設置間隔mについては、プレイヤの設置環境に応じて任意の間隔でマーカ8Lおよび8Rを設置してもかまわない。この場合、マーカ8Lおよび8Rを設置した間隔を設置間隔mとしてプレイヤが入力するようにすれば、上記数式を同様に扱うことができる。
【0094】
次に、CPU30は、幅wおよび撮像素子743の視野角θを用いて、マーカ8Lおよび8Rと撮像素子743(コントローラ7)との現在距離realD(図17参照)を算出し、現在距離データDb3を更新して(ステップ74)、当該サブルーチンによる処理を終了する。ここで、現在距離realDは、
realD=(w/2)/{tan(θ/2)}
の関係式から算出することができる。ここで、視野角θは固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0095】
図15に戻り、ステップ53における現在距離realDの算出処理の後、CPU30は、ドラッグフラグDb5を参照し(ステップ54)、ドラッグフラグisDrag=0か否かを判断する(ステップ55)。そして、CPU30は、ドラッグフラグisDrag=0の場合(すなわち、ドラッグボタンを押し始めの状態)、処理を次のステップ56に進める。一方、CPU30は、ドラッグフラグisDrag=1の場合(すなわち、ドラッグボタンの押下を継続中)、処理を次のステップ58に進める。
【0096】
ステップ56において、CPU30は、上記ステップ53で算出した現在距離realDを初期距離initDに設定し、初期距離データDb4を更新する。次に、CPU30は、現在設定されている仮想現在距離virtualDを仮想初期距離init_virtualDに設定し、仮想初期距離データDc2を更新する(ステップ57)。なお、仮想現在距離virtualDが未設定の場合、CPU30は、仮想初期距離init_virtualDをデフォルト値に設定して、仮想初期距離データDc2を更新する。そして、CPU30は、処理を次のステップ61に進める。
【0097】
一方、ステップ58において、CPU30は、移動距離moveDを算出する。具体的には、CPU30は、上記ステップ53で算出された現在距離realDと、初期距離データDb4として格納されている初期距離initDとを用いて、移動距離moveDを、
moveD=realD−initD
によって算出する。次に、CPU30は、仮想現在距離virtualDを算出し、仮想現在距離データDc1を更新する(ステップ59)。具体的には、CPU30は、ステップ58で算出された移動距離moveDと、仮想初期距離データDc2して格納されている仮想初期距離init_virtualDとを用いて、仮想現在距離virtualDを、
virtualD=init_virtualD+moveD
によって算出する。そして、CPU30は、スケール値scaleを算出し、スケールデータDc3を更新する(ステップ60)。具体的には、CPU30は、仮想現在距離データDc1して格納されている仮想現在距離virtualDを用いて、スケール値scaleを、
scale=S×virtualD+T
によって算出する。ここで、S、Tは、任意の定数である。そして、CPU30は、処理を次のステップ61に進める。
【0098】
なお、後述する画像の描画処理において、定数S>0に設定することによって、マーカ8Lおよび8Rからコントローラ7を遠ざけるとモニタ2の表示を拡大することができる。これによって、モニタ2に表示されている画像を掴んでいるような感覚で直感的な操作が可能となる。また、定数S<0に設定することによって、マーカ8Lおよび8Rからコントローラ7を遠ざけるとモニタ2の表示を縮小することができる。これによって、モニタ2に表示されている画像を撮像するカメラを操作しているような感覚で直感的な操作が可能となる。
【0099】
ステップ61において、CPU30は、ドラッグフラグDb5に記述されたドラッグフラグisDragを1に設定して、処理を次のステップ62に進める。
【0100】
ステップ62において、CPU30は、スケール値scaleに基づいて、カメラ行列を算出し、カメラ行列データDc4を更新する。そして、CPU30は、処理を次のステップに進める。例えば、CPU30は、射影行列が透視射影行列であるとき、スケールデータDc3として格納されているスケール値scaleに基づいて、仮想カメラの位置と当該仮想カメラの注視点との距離を計算してカメラ行列を算出する。また、CPU30は、射影行列が正射影行列であるとき、スケールデータDc3として格納されているスケール値scaleに基づいて、正射影行列の視野の大きさを計算してカメラ行列を算出する。
【0101】
次に、CPU30は、上記ステップ62で算出されたカメラ行列を用いて、画像を描画し、モニタ2に表示する(ステップ63)。そして、CPU30は、表示を終了するか否かを判断する(ステップ64)。CPU30は、表示を継続する場合、上記ステップ51に戻って処理を繰り返す。一方、CPU30は、表示を終了する場合、当該フローチャートによる処理を終了する。
【0102】
なお、上記ステップ62およびステップ63においては、設定されているスケール値scaleに基づいた2次元の画像処理を行い、2次元画像の表示サイズを逐次変更することによって当該画像の拡大/縮小を行ってモニタ2に表示してもかまわない。このような画像の拡大/縮小方式を用いても、コントローラ7とマーカ8Lおよび8Rとの距離に応じて、画像の拡大/縮小を行うことができる。
【0103】
また、さらにコントローラ7がドラッグボタンを押下した状態で、モニタ2に対して上下左右に動かされたり、左右にひねられたりすることに応じて、モニタ2に表示された表示物を移動させて表示してもかまわない。例えば、上述した第1座標データDa1および第2座標データDa2への方向データDb1を算出する。具体的には、CPU30は、第1座標データDa1の位置座標(Lx,Ly)および第2座標データDa2の位置座標(Rx,Ry)を参照して、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルを算出し、方向データDb1を更新する。方向データDb1と所定の基準方向との差によって、コントローラ7の撮像面に垂直な方向を軸とする回転を算出することができる。そして、ドラッグボタンが押下されているときの方向データDb1の方向変化を計算し、当該方向変化に基づいて、回転処理を含んだカメラ行列を算出し描画に反映させれば、表示物を回転させてモニタ2に表示することができる(図13(b))。
【0104】
また、CPU30は、第1座標データDa1の位置座標(Lx,Ly)と第2座標データDa2の位置座標(Rx,Ry)との中点を示す中点データDb2を算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、当該中点の座標を算出し、中点データDb2を更新する。ここで、中点データDb2は、撮像画像内における対象画像(マーカ8Lおよび8R)を1つの画像とした場合、その画像の位置を示すデータとなる。そして、中点データDb2と所定の基準位置との差によって、モニタ2に対するコントローラ7の位置の変化を算出することができる。そして、ドラッグボタンが押下されているときの中点データDb2の位置変化を計算し、当該位置変化に基づいて、移動処理を含んだカメラ行列を算出し描画に反映させれば、表示物を上下左右に移動させてモニタ2に表示することができる(図13(a))。なお、上述した中点データDb2を画面座標系の値(指示座標)に変換し、当該指示座標の変化に基づいて表示物を移動させてもかまわない。この場合、指示座標がコントローラ7で指し示す位置になるように座標変換し、当該指示座標と一致する表示物を移動対象にすることによって、コントローラ7で指し示した表示物を任意に移動させることができる。また、上述した回転処理についても、指示座標と一致する表示物を回転対象にすることによって、コントローラ7で指し示した表示物を任意に回転させることができる。
【0105】
上述した処理では、ドラッグボタンを押下しているときにコントローラ7の移動距離を算出し、当該移動距離に応じて画像の拡大/縮小処理を行う例を説明した。以下、図18および図19を参照して、コントローラ7の移動速度を算出し、当該移動速度に応じて画像の拡大/縮小処理を行う例を説明する。なお、図18は、ゲーム装置3のメインメモリ33に記憶される他の例の主なデータを示す図である。図19は、ゲーム装置3において実行されるゲーム処理の流れの他の例を示すフローチャートである。なお、図19に示すに示すフローチャートにおいても、処理のうち、ゲームプログラムに含まれる画像処理プログラムを実行してコントローラ7に関する操作に基づいて行われる画像拡大/縮小処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図19では、CPU30が実行する各ステップを「S」と略称する。さらに、図19に示すフローチャートは、ゲームプログラムの実行が開始された後に行われる処理を示すフローチャートである。
【0106】
図18において、メインメモリ33には、操作情報Da、操作状態情報Db、および表示情報Dc等が記憶される。図14を用いて説明した態様と比較すると、図18に示すデータは、過去距離データDb6および移動速度データDb7が操作状態情報Dbに追加され、初期距離データDb4、ドラッグフラグDb5、および仮想初期距離データDc2が除かれている。図18に示す他のデータは図14と同様であるため、同じデータには同じ参照符号を付して詳細な説明を省略する。
【0107】
過去距離データDb6は、前フレームにおけるマーカ8Lおよび8Rからコントローラ7までの距離pastDを示すデータである。移動速度データDb7は、マーカ8Lおよび8Rに対してコントローラ7が移動する速度velDを示すデータである。
【0108】
図19において、CPU30は、コントローラ7から受信した操作情報を取得し(ステップ81)、処理を次のステップに進める。なお、ステップ81の動作は、上記ステップ51と同様であるため、詳細な説明を省略する。
【0109】
次に、CPU30は、現在設定されている現在距離realDを過去距離pastDに設定し、過去距離データDb6を更新する(ステップ82)。そして、CPU30は、距離算出処理を行い(ステップ83)、処理を次のステップに進める。なお、距離算出処理については、上記ステップ53と同様であるため、詳細な説明を省略する。
【0110】
次に、CPU30は、移動速度velDを算出し、移動速度データDb7を更新する(ステップ84)。具体的には、CPU30は、上記ステップ83で算出された現在距離realDと、上記ステップ82で設定された過去距離pastDとを用いて、移動速度velDを
velD=realD−pastD
によって算出する。そして、CPU30は、キーデータDa3を参照し、ドラッグボタンが押下されているか否かを判断する(ステップ85)。そして、CPU30は、ドラッグボタンが押下されている場合、処理を次のステップ86に進める。一方、CPU30は、ドラッグボタンが押下されていない場合、処理を次のステップ88に進める。
【0111】
ステップ86において、仮想現在距離virtualDを算出し、仮想現在距離データDc1を更新する。具体的には、CPU30は、ステップ84で算出された移動速度velDと、仮想現在距離データDc1して格納されている仮想現在距離virtualDとを用いて、新たな仮想現在距離virtualDを、
virtualD=virtualD+velD
によって算出する。そして、CPU30は、スケール値scaleを算出し、スケールデータDc3を更新する(ステップ87)。具体的には、CPU30は、仮想現在距離データDc1して格納されている仮想現在距離virtualDを用いて、スケール値scaleを、
scale=S×virtualD+T
によって算出する。ここで、S、Tは、任意の定数である。そして、CPU30は、処理を次のステップ88に進める。
【0112】
ステップ88において、CPU30は、スケール値scaleに基づいて、カメラ行列を算出し、カメラ行列データDc4を更新する。次に、CPU30は、上記ステップ62で算出されたカメラ行列を用いて、画像を描画し、モニタ2に表示する(ステップ89)。そして、CPU30は、表示を終了するか否かを判断する(ステップ90)。CPU30は、表示を継続する場合、上記ステップ81に戻って処理を繰り返す。一方、CPU30は、表示を終了する場合、当該フローチャートによる処理を終了する。なお、ステップ88のカメラ行列算出処理およびステップ89の描画処理については、上述したステップ62およびステップ63の処理と同様であるため、詳細な説明を省略する。
【0113】
なお、上述したステップ53およびステップ82で行った距離算出処理においては、コントローラ7がマーカ8Lおよび8Rを結ぶ方向に対して斜めに配置された場合、現在距離realDに誤差が生じる。以下、図20〜図23を参照して、距離算出処理の他の例について説明する。なお、図20は、距離算出処理の詳細な動作の他の例を示すサブルーチンである。図21〜図23は、現在距離realDを算出する他の例の動作を説明するための図である。
【0114】
以下に述べる距離算出処理では、上述した第1座標データDa1および第2座標データDa2に加えてサイズ情報も処理結果データとして取得する。サイズ情報とは、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの面積、直径、および幅等の何れかを示す情報であり、ここではマーカ8Lおよび8Rを示す撮像画像の直径を示すサイズ情報をそれぞれ第1サイズデータおよび第2サイズデータとして取得する一例を用いて説明する。
【0115】
図20において、CPU30は、第1サイズデータおよび第2サイズデータを取得し(ステップ101)、処理を次のステップに進める。図21に示すように、第1サイズデータおよび第2サイズデータは、それぞれマーカ8Lおよび8Rを示す撮像画像の直径を示すデータであり、第1サイズデータがマーカ8Lを撮像した画像の直径diamLを示し、第2サイズデータがマーカ8Rを撮像した画像の直径diamRを示している。例えば、図21に示すように、コントローラ7がマーカ8Lおよび8Rを結ぶ方向に対して斜めに配置された場合、直径diamLと直径diamRとに差が生じる。
【0116】
次に、CPU30は、第1サイズデータ(直径diamL)に基づいて、マーカ8Lの設置位置に対する撮像素子743の撮像可能範囲の幅w(図22参照)を算出する(ステップ102)。ここで、幅wは、
w=wi×diamM/diamL
で算出される。ここで、diamMは、設置されたマーカ8Lおよび8Rの直径(実際の直径)であり、固定値として予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0117】
次に、CPU30は、上記ステップ102で算出した幅wおよび撮像素子743の視野角θを用いて、マーカ8Lと撮像素子743(コントローラ7)との現在距離realDL(図22参照)を算出する(ステップ103)。ここで、現在距離realDLは、
realDL=(w/2)/{tan(θ/2)}
の関係式から算出することができる。ここで、視野角θは固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0118】
次に、CPU30は、第2サイズデータ(直径diamR)に基づいて、マーカ8Rの設置位置に対する撮像素子743の撮像可能範囲の幅wを算出する(ステップ104)。ここで、幅wは、
w=wi×diamM/diamR
で算出される。
【0119】
次に、CPU30は、上記ステップ104で算出した幅wおよび撮像素子743の視野角θを用いて、マーカ8Rと撮像素子743(コントローラ7)との現在距離realDRを算出する(ステップ105)。ここで、現在距離realDRは、
realDR=(w/2)/{tan(θ/2)}
の関係式から算出することができる。
【0120】
次に、CPU30は、現在距離realDLおよびrealDRとマーカ8Lおよび8Rの設置間隔mとを用いて、角度δ1を算出する(ステップ106)。図23に示すように、角度δ1は、マーカ8Lおよびコントローラ7を結ぶ直線と、マーカ8Lおよび8Rを結ぶ直線とによって成される角度である。角度δ1は、余弦定理を用いて、
cosδ1=(realDL2×m2−realDR2)/(2×realDL×m)
で算出される。
【0121】
次に、CPU30は、マーカ8Lおよび8R間の中点とコントローラ7との現在距離realD(図23参照)を算出し(ステップ107)、当該サブルーチンによる処理を終了する。現在距離realDは、余弦定理を用いて、
【数2】
で算出される。
【0122】
なお、上記中点およびコントローラ7を結ぶ直線と、マーカ8Lおよび8Rを結ぶ直線とによって成される角度δ2を求めることも可能である。角度δ2は、現在距離realD、現在距離realDL、および設置間隔mを用いて、余弦定理から、
cosδ2={realD2×(m/2)2−realDL2}
/{2×realD×(m/2)}
で算出される。この角度δ2を得ることによって、コントローラ7がマーカ8Lおよび8Rに対してどのような角度位置に配置されているか算出することができ、コントローラ7の角度位置に応じた処理が可能となる。
【0123】
このように、コントローラ7を固定的に設置された撮像対象を撮像し、当該撮像画像における対象画像から複数の対象画像間の間隔または対象画像の大きさを示す対象画像データに応じて画像の拡大/縮小が行われる。なお、複数の対象画像間の間隔を示す対象画像データは、複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離等であり、対象画像の大きさを示す対象画像データは、単一の撮像対象を撮像した撮像画像における単一の対象画像の大きさ(例えば、直径や幅)等が含まれる。例えば、2つのマーカ8Lおよび8Rからの赤外光が複数の撮像対象となり、対象画像データとしては、撮像画像に撮像された2つのマーカの間隔(距離mi)が用いられる。また、1つのマーカ(例えばマーカ8L)からの赤外光が単一の撮像対象であっても、当該マーカの大きさが対象画像データとして利用でき、1つマーカに含まれる複数箇所(例えば、両端)間の距離を対象画像データとしてもかまわない。この場合、対象画像データとしては、撮像画像に撮像された1つのマーカの直径等(直径diamL等)が用いられる。これらの対象画像データから、コントローラ7と撮像対象との間の距離を得ることができるため、当該距離や移動速度の増減に応じた画像の拡大/縮小処理が可能となり、操作距離を利用した直感的で新規な操作が実現できる。なお、上述した距離の演算手順は単なる一例に過ぎず、対象画像データそのものを距離として直接扱って処理を簡略化してもかまわない。
【0124】
また、上述した説明では、ドラッグボタン(操作ボタン72i)を押下している間のみ画像の拡大/縮小処理が行われる例を用いたが、現在距離realDに応じて常に画像の拡大/縮小処理が行われてもかまわない。これによって、マーカ8Lおよび8Rからコントローラ7までの距離が逐次画像処理に反映される画像がモニタ2に表示される。例えば、モニタ2からコントローラ7を所持するユーザまでの視聴距離に応じて視聴に最適なサイズの画像を表示することもできる。
【0125】
また、上述した説明では、撮像素子743で撮像した画像データを解析することによって現在距離realDを算出したが、それ以外の手段によっても、実空間内に配置された所定の測定対象との現在距離realDを測ることができれば、上記の発明を実施することが可能である。例えば、現在距離realDを算出するための手段として、超音波センサによるものや、磁気センサを用いたものなどを用いてもよい。また、撮像素子743と、撮像対象との距離に関連した値を得ることができれば、実際の現在距離realDを算出しなくとも操作入力は可能であるので、現在距離realDを算出せずに、撮像画像内のマーカ8Lと8Rとの間の長さに対応させたデータを予め用意し、当該対応データを用いて処理を行うようにしてもよい。
【0126】
また、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置3の接続端子に接続する。
【0127】
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
【0128】
また、撮像素子743で撮像した画像データを解析してマーカ8Lおよび8Rからの赤外光の位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコントローラ7内で生成してゲーム装置3へ送信する態様を説明したが、他の処理段階のデータをコントローラ7からゲーム装置3へ送信してもかまわない。例えば、撮像素子743が撮像した画像データをコントローラ7からゲーム装置3へ送信し、CPU30において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コントローラ7に設けられた画像処理回路744が不要となる。また、上記画像データの解析途中のデータをコントローラ7からゲーム装置3へ送信してもかまわない。例えば、画像データから得られる輝度、位置、および面積等を示すデータをコントローラ7からゲーム装置3へ送信し、CPU30において残りの解析処理を行って処理結果データを取得してもかまわない。
【0129】
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コントローラ7の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。例えば、所定の長さを有する1つのマーカをモニタ2の近傍に設置し、当該長さの両端を設置間隔m(図16参照)とすれば、本発明を同様に実現することができる。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコントローラ7の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
【0130】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0131】
また、上記実施例では、ゲーム装置3をコントローラ7で操作しているが、撮像手段を備えた入力装置で操作される一般的なパーソナルコンピュータなどの情報処理装置でもかまわない。この場合、この情報処理装置のコンピュータが実行するプログラムは、典型的にゲームに用いられるゲームプログラムに限らず、上記情報処理装置に対する画像処理に用いられる汎用的な画像処理プログラムである。
【産業上の利用可能性】
【0132】
本発明に係る画像処理装置および画像処理プログラムは、自由度の高い操作を実現することができ、物理的に分離したユニットを用いて操作するゲーム等の画像処理として有用である。
【図面の簡単な説明】
【0133】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図8】プレイヤがコントローラ7を右手で把持した状態をコントローラ7の前面側から見た一例
【図9】プレイヤがコントローラ7を右手で把持した状態をコントローラ7の左側面側から見た一例
【図10】マーカ8Lおよび8Rと撮像情報演算部74との視野角を説明するための図
【図11】プレイヤUがマーカ8Lおよび8Rに対して前後方向へ操作する一例を示す上面図
【図12】図11に示した操作に応じて、モニタ2に表示される画面例を示す図
【図13】コントローラ7をモニタ2に対して上下左右に移動させる、またはコントローラ7をひねることによって、モニタ2に表示されるオブジェクトOBJの表示例
【図14】ゲーム装置3のメインメモリ33に記憶される主なデータを示す図
【図15】ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート
【図16】図15におけるステップ53の距離算出処理の詳細な動作を示すサブルーチン
【図17】現在距離realDを算出する動作を説明するための図
【図18】ゲーム装置3のメインメモリ33に記憶される他の例の主なデータを示す図
【図19】ゲーム装置3において実行されるゲーム処理の流れの他の例を示すフローチャート
【図20】距離算出処理の詳細な動作の他の例を示すサブルーチン
【図21】現在距離realDを算出する他の例の動作を説明するための図
【図22】現在距離realDを算出する他の例の動作を説明するための図
【図23】現在距離realDを算出する他の例の動作を説明するための図
【符号の説明】
【0134】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
8…マーカ
【技術分野】
【0001】
本発明は、画像処理装置および画像処理プログラムに関し、より特定的には、撮像手段を備えた入力装置を用いて操作する画像処理装置および画像処理プログラムに関する。
【背景技術】
【0002】
従来、赤外線光源を標識として撮像し、その撮像結果を解析して照準位置を求める位置検出システムが開示されている(例えば、特許文献1参照)。
【0003】
特許文献1では、位置検出システムの実施例として撮像装置が取り付けられた銃をゲームコントローラとして狙い撃ちするゲームを開示している。撮像装置は、ブラウン管の4隅に配設された赤外線光源を撮像対象として、当該撮像対象が撮像された撮像画像上の位置に応じて銃がブラウン管に対して指し示している位置を検出する。そして、銃が指し示している位置を照準位置として仮想的な射撃ゲームが実行される。なお、特許文献1の第21段落に記載されているように、撮像装置と標的(標識)との距離を自由に変える場合、撮像装置に制御可能なズーム機能が備えられ、常に標識が最適な大きさで撮像されるようにズーム機能が制御されることによって、正確な照準位置が検出される。
【特許文献1】特開平11−305935号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来、入力装置(ゲームコントローラ)と撮像対象との距離自体を操作入力に用いるという発想はない。例えば、上記特許文献1で開示された位置検出システムにおいても、撮像装置と標識との距離は補正のために用いられており、当該距離の変動は操作入力にとってはむしろ正確な操作を阻害する要因となっている。
【0005】
それ故に、本発明の目的は、撮像手段を備えた入力装置を用いて自由度の高い新たな操作を実現する画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、ステップ番号(ステップをSと略称しステップ番号のみを記載する)、図面番号等は、本発明の理解を助けるために後述する最良の形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、撮像対象(8)を撮像するための撮像手段(74)を備えた入力装置(7)を用いた入力操作に応じて所定の画像処理を行う画像処理装置(3)である。画像処理装置は、対象画像データ取得手段(S72)、画像処理手段(S60、S62)、および表示制御手段(S63)を備える。対象画像データ取得手段は、撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データ(mi、diamL、diamR)を逐次取得する。画像処理手段は、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。表示制御手段は、画像処理手段が処理した表示画像を表示装置(2)に表示させる。なお、対象画像データは、複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離や、単一の撮像対象を撮像した撮像画像における単一の対象画像の大きさ(例えば、直径や幅)等を示すデータが含まれる。
【0008】
第2の発明は、上記第1の発明において、画像処理手段は、距離算出手段(S53、S83)および拡大縮小手段を含む。距離算出手段は、対象画像データに基づいて、撮像手段と撮像対象との間の距離(realD)を逐次算出する。拡大縮小手段は、距離の変化に応じて表示画像の拡大または縮小を行う。
【0009】
第3の発明は、上記第2の発明において、画像処理手段は、所定の期間における距離の変化に応じて表示画像の拡大または縮小を行う。
【0010】
第4の発明は、上記第3の発明において、入力装置は、押下可能な少なくとも1つの操作キー(72)を備え、その操作キーに対する押下状態に応じた操作情報(Da3)を少なくとも出力するものである。画像処理装置は、操作情報取得手段(S51、S81)および記憶手段(S56)を、さらに備える。操作情報取得手段は、操作情報を取得する。記憶手段は、操作キーが押下開始されたことを操作情報が示すとき、距離算出手段が算出した距離を記憶する(33)。画像処理手段は、差分算出手段(S58)を含む。差分算出手段は、記憶手段に記憶された距離(initD)と操作キーが押下されていることを操作情報が示している間に距離算出手段が算出する距離(realD)との距離差(moveD)を逐次算出することによって、操作キーが押下されている期間を所定の期間とした距離の変化を求める。画像処理手段は、距離差に基づいて表示画像の拡大または縮小を行う。
【0011】
第5の発明は、上記第2〜第4の発明の何れかにおいて、画像処理手段は、距離の増加に応じて表示画像の拡大を行い、距離の減少に応じて表示画像の縮小を行う(S>0)。
【0012】
第6の発明は、上記第2〜第4の発明の何れかにおいて、画像処理手段は、距離の増加に応じて表示画像の縮小を行い、距離の減少に応じて表示画像の拡大を行う(S<0)。
【0013】
第7の発明は、上記第2の発明において、指示座標算出手段を、さらに備える。指示座標算出手段は、撮像画像における対象画像の位置に基づいて、表示装置の表示領域に対応する指示座標を算出する。画像処理手段は、指示座標の変化に基づいて、表示画像の移動をさらに行う(図13(a))。
【0014】
第8の発明は、上記第2の発明において、傾き算出手段を、さらに備える。傾き算出手段は、撮像画像における対象画像の位置に基づいて、入力装置の傾きを算出する。画像処理手段は、傾きの変化に基づいて、表示画像の回転をさらに行う(図13(b))。
【0015】
第9の発明は、上記第2の発明において、画像処理手段は、距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、表示画像の拡大または縮小を行う。
【0016】
第10の発明は、上記第2の発明において、画像処理手段は、距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、表示画像の拡大または縮小を行う。
【0017】
第11の発明は、上記第1の発明において、速度算出手段(S84)を、さらに備える。速度算出手段は、対象画像データに応じて、撮像対象に対して入力装置が移動する速度(velD)を逐次算出する。画像処理手段は、速度に応じて表示画像の拡大または縮小を行う。
【0018】
第12の発明は、撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて画像処理を行うコンピュータ(30)で実行される画像処理プログラムである。画像処理プログラムは、対象画像データ取得ステップ、画像処理ステップ、および表示制御ステップを、コンピュータに実行させる。対象画像データ取得ステップは、撮像手段の撮像画像において撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する。画像処理ステップは、対象画像データの変化に応じて、表示画像の拡大または縮小を行う。表示制御ステップは、画像処理手段が処理した表示画像を表示装置に表示させる。
【0019】
第13の発明は、上記第12の発明において、画像処理ステップは、距離算出ステップおよび拡大縮小ステップを含む。距離算出ステップは、対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する。拡大縮小ステップは、距離の変化に応じて表示画像の拡大または縮小を行う。
【0020】
第14の発明は、上記第13の発明において、画像処理ステップでは、所定の期間における距離の変化に応じて表示画像の拡大または縮小が行われる。
【0021】
第15の発明は、上記第14の発明において、入力装置は、押下可能な少なくとも1つの操作キーを備え、その操作キーに対する押下状態に応じた操作情報を少なくとも出力するものである。画像処理プログラムは、操作情報取得ステップおよび記憶制御ステップを、さらにコンピュータに実行させる。操作情報取得ステップは、操作情報を取得する。記憶制御ステップは、操作キーが押下開始されたことを操作情報が示すとき、距離算出ステップで算出した距離をメモリに記憶する。画像処理ステップは、差分算出ステップを含む。差分算出ステップは、メモリに記憶された距離と操作キーが押下されていることを操作情報が示している間に距離算出ステップで算出する距離との距離差を逐次算出することによって、操作キーが押下されている期間を所定の期間とした距離の変化を求める。画像処理ステップでは、距離差に基づいて表示画像の拡大または縮小が行われる。
【0022】
第16の発明は、上記第13〜第15の発明の何れかにおいて、画像処理ステップでは、距離の増加に応じて表示画像の拡大が行われ、距離の減少に応じて表示画像の縮小が行われる。
【0023】
第17の発明は、上記第13〜第15の発明の何れかにおいて、画像処理ステップでは、距離の増加に応じて表示画像の縮小が行われ、距離の減少に応じて表示画像の拡大が行われる。
【0024】
第18の発明は、上記第13の発明において指示座標算出ステップを、さらにコンピュータに実行させる。指示座標算出ステップは、撮像画像における対象画像の位置に基づいて、表示装置の表示領域に対応する指示座標を算出する。画像処理ステップでは、指示座標の変化に基づいて、表示画像の移動がさらに行われる。
【0025】
第19の発明は、上記第13の発明において、傾き算出ステップを、さらにコンピュータに実行させる。傾き算出ステップは、撮像画像における対象画像の位置に基づいて、入力装置の傾きを算出する。画像処理ステップでは、傾きの変化に基づいて、表示画像の回転がさらに行われる。
【0026】
第20の発明は、上記第13の発明において、画像処理ステップでは、距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、表示画像の拡大または縮小が行われる。
【0027】
第21の発明は、上記第13の発明において、画像処理ステップでは、距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、表示画像の拡大または縮小が行われる。
【0028】
第22の発明は、上記第12の発明において、速度算出ステップを、さらにコンピュータに実行させる。速度算出ステップは、対象画像データに応じて、撮像対象に対して入力装置が移動する速度を逐次算出する。画像処理ステップでは、速度に応じて表示画像の拡大または縮小が行われる。
【発明の効果】
【0029】
上記第1の発明によれば、対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データ(複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離や、単一の撮像対象を撮像した撮像画像における単一の対象画像の直径や幅などのサイズや面積等)に応じて、表示画像の拡大/縮小処理が可能となり、直感的で新規な画像処理操作が実現できる。
【0030】
上記第2の発明によれば、対象画像から得られる対象画像データから、入力装置と撮像対象との間の距離を得ることができるため、当該距離を利用した直感的で新規な操作が実現できる。
【0031】
上記第3の発明によれば、表示画像の拡大/縮小を行う期間を限定することにより拡大/縮小の制御がしやすい。
【0032】
上記第4の発明によれば、操作キーが押下されているときのみに表示画像の拡大/縮小を行う期間が限定されるため、ユーザによる拡大/縮小の制御がしやすい。
【0033】
上記第5の発明によれば、表示装置に表示されている画像を掴んでいるような感覚で直感的な操作が可能となる。
【0034】
上記第6の発明によれば、表示装置に表示されている画像を撮像するカメラを操作しているような感覚で直感的な操作が可能となる。
【0035】
上記第7の発明によれば、表示装置に表示されている画像を掴んで上下左右に移動させるような操作も可能となり、距離に加えて入力装置の位置も利用することで、より複雑かつ直感的な操作が可能となる。
【0036】
上記第8の発明によれば、表示装置に表示されている画像を掴んで回転させるような操作も可能となり、距離に加えて入力装置の傾きも利用することで、より複雑かつ直感的な操作が可能となる。
【0037】
上記第9の発明によれば、仮想空間内を表示装置で表示する際、表示する画像の拡大/縮小を容易に行うことができる。
【0038】
上記第10の発明によれば、2次元画像を表示装置で表示する際、表示する画像の拡大/縮小を容易に行うことができる。
【0039】
上記第11の発明によれば、対象画像から得られる対象画像データから、撮像対象に対して入力装置が移動する速度を得ることができるため、当該速度を利用した直感的で新規な操作が実現できる。
【0040】
本発明の画像処理プログラムによれば、コンピュータで実行することによって上述した画像処理装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0041】
図1を参照して、本発明の一実施形態に係る画像処理装置について説明する。以下、説明を具体的にするために、当該画像処理装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、本発明の画像処理装置の一例として据置型ゲーム装置を用いて、当該ゲームシステム1について説明する。
【0042】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0043】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。なお、本発明の画像処理プログラムは、光ディスク4に記憶されたゲームプログラムの一部に含まれているものとする。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0044】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
【0045】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0046】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0047】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0048】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0049】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0050】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0051】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0052】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0053】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0054】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0055】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびBボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0056】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0057】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0058】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばAボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。なお、本発明では、操作ボタン72iがモニタ2に表示された表示物を掴むような操作をするためのドラッグボタンとして機能し、操作ボタン72iを押下することによってモニタ2に表示された表示物を掴むことができる。
【0059】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0060】
次に、図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0061】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。また、無線モジュール753およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0062】
一方、図5(b)において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0063】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0064】
図6において、コントローラ7は、上述した操作部72および撮像情報演算部74の他に、その内部に通信部75および加速度センサ701を備えている。
【0065】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標やそれらの面積、直径、幅等を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
【0066】
加速度センサ701は、コントローラ7の上下方向、左右方向、および前後方向の3軸でそれぞれ加速度を検知する加速度センサである。なお、加速度センサ701は、必要な操作信号の種類によっては、上下方向および左右方向の2軸でそれぞれ加速度を検出する加速度センサが用いられてもかまわない。加速度センサ701が検知した加速度を示すデータは、通信部75へ出力される。なお、加速度センサ701は、典型的には静電容量式の加速度センサが用いられるが、他の方式の加速度センサを用いてもかまわない。この加速度センサ701から出力される加速度データに基づいて、マイコン751やCPU30などのコンピュータを利用したソフトウェア処理によってコントローラ7の動きを算出することができる。
【0067】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0068】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0069】
図7に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤは、一方の手(例えば右手)でコントローラ7を把持する(図8および図9参照)。そして、プレイヤは、コントローラ7の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコントローラ7を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象となる。
【0070】
プレイヤがその前面がモニタ2に向くようにコントローラ7を把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ8Lおよび8Rの位置情報(対象画像の位置)や面積、直径、幅等のサイズ情報を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置3へ送信することによって、ゲーム装置3では、基準からの上記位置情報の差に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコントローラ7の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ7が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、3次元空間に対してコントローラ7の移動方向に沿った方向入力や座標入力を行うことができる。なお、後述するゲーム処理動作例では、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの重心位置の座標を少なくとも取得し、上記処理結果データとして出力する例を用いる。
【0071】
また、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの面積、直径、および幅等の何れかを示すサイズ情報を利用することによって、さらに詳細な3次元空間に対するコントローラ7の位置を解析できる。具体的には、ゲーム装置3では、マーカ8Lおよび8Rに対して斜めの位置から撮像情報演算部74によって撮像された、すなわちモニタ2に対して斜めの位置からコントローラ7を操作した場合でも、そのマーカ8Lおよび8Rからの距離を求めることが可能となる。後述するゲーム処理動作例では、ゲーム装置3が上記重心位置の座標に加えて上記サイズ情報も処理結果データとして取得する態様も説明する。
【0072】
このように、コントローラ7の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置3におけるゲーム処理において、コントローラ7から出力されるデータを処理してコントローラ7の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコントローラ7の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ7の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力として用いることができる。なお、ゲームシステム1では、マーカ8Lおよび8Rを撮像した撮像画像を用いて、マーカ8Lおよび8Rからコントローラ7までの距離もモニタ2の表示画面に直接作用する操作入力として用いることができるが、詳細な動作については後述する。
【0073】
図8および図9を参照して、プレイヤがコントローラ7を一方の手で把持した状態について説明する。なお、図8は、プレイヤがコントローラ7を右手で把持した状態をコントローラ7の前面側から見た一例である。図9は、プレイヤがコントローラ7を右手で把持した状態をコントローラ7の左側面側から見た一例である。
【0074】
図8および図9に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコントローラ7の上面(例えば、十字キー72a付近)に添え、プレイヤの人差し指をコントローラ7下面の凹部(例えば、操作ボタン72i付近)に添えたとき、コントローラ7の前面に設けられている撮像情報演算部74の光入射口がプレイヤの前方方向に露出する。なお、このようなコントローラ7に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【0075】
このように、コントローラ7は、プレイヤが片手で把持した状態で十字キー72aや操作ボタン72i等の操作部72を容易に操作することができる。さらに、プレイヤがコントローラ7を片手で把持したとき、当該コントローラ7の前面に設けられている撮像情報演算部74の光入射口が露出するため、上述した2つのマーカ8Lおよび8Rからの赤外光を容易に当該光入射口から取り入れることができる。つまり、プレイヤは、コントローラ7が有する撮像情報演算部74の機能を阻害することなくコントローラ7を片手で把持することができる。したがって、プレイヤがコントローラ7を把持した手を表示画面に対して動かすことによって、コントローラ7は、プレイヤの手の運動が表示画面に直接作用する操作入力機能をさらに備えることができる。
【0076】
ここで、図10に示すように、マーカ8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、マーカ8Lおよび8Rの視野角θ1は共に34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にマーカ8Lおよび8Rが共に存在し、マーカ8Lの視野角θ1の中でかつマーカ8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置3は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコントローラ7の位置(マーカ8Lおよび8Rからの距離を含む)を算出する。
【0077】
次に、図11および図12を参照して、プレイヤの操作に応じてモニタ2に表示される画面例について説明する。なお、図11は、プレイヤUがマーカ8Lおよび8Rに対して前後方向へ操作する一例を示す上面図である。図12は、図11に示した操作に応じて、モニタ2に表示される画面例を示す図である。
【0078】
図11において、プレイヤUは、コントローラ7の前面をマーカ8Lおよび8R(モニタ2)に向けて、当該コントローラ7を把持している。そして、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離を距離realDとする。ここで、図11に示す状態Aでは、プレイヤUが距離realD0となる位置でコントローラ7を把持している。そして、プレイヤUは、コントローラ7をモニタ2に向かって前後に動かすことによって、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離realDを変化させることができる。例えば、プレイヤUが操作ボタン72i(ドラッグボタン)を押下した状態でコントローラ7をモニタ2に向かって前に動かすことによって、距離realD0から距離realDnの位置へコントローラ7を動かしている(状態B)。また、プレイヤUが操作ボタン72i(ドラッグボタン)を押下した状態でコントローラ7をモニタ2に向かって後ろに動かすことによって、距離realD0から距離realDfの位置へコントローラ7を動かしている(状態C)。
【0079】
図12(a)は、上記状態Aにおいてモニタ2に表示される画面例である。図12(b)は、上記状態Bにおいてモニタ2に表示される画面例である。図12(c)は、上記状態Cにおいてモニタ2に表示される画面例である。図12(a)において、モニタ2には、状態Aにおいてパズルが記述された領域(オブジェクトOBJ)の一部が表示されている。図12(b)において、モニタ2には、状態Aにおいて表示されていたオブジェクトOBJが縮小され、当該オブジェクトOBJ全体が表示されている。つまり、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2に近づけることによって、モニタ2に表示された表示物を縮小して表示することができる。一方、図12(c)において、モニタ2には、状態Aにおいて表示されていたオブジェクトOBJが拡大されて表示されている。つまり、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2から遠ざけることによって、モニタ2に表示された表示物を拡大して表示することができる。
【0080】
さらに、プレイヤUは、操作ボタン72iを押下した状態でコントローラ7をモニタ2に対して上下左右に動かしたり、コントローラ7を左右にひねったりすることよって、モニタ2に表示された表示物を移動させて表示することができる。図13(a)に示すように、プレイヤUが操作ボタン72iを押下した状態でコントローラ7をモニタ2に対して上下左右に動かすことによって、オブジェクトOBJが上下左右に移動して表示される。また、図13(b)に示すように、プレイヤUが操作ボタン72iを押下した状態でコントローラ7をひねることによって、オブジェクトOBJが左右に回転移動して表示される。
【0081】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図14を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置3のメインメモリ33に記憶される主なデータを示す図である。
【0082】
図14に示すように、メインメモリ33には、操作情報Da、操作状態情報Db、および表示情報Dc等が記憶される。なお、メインメモリ33には、図14に示す情報に含まれるデータの他、ゲーム処理に必要なデータが適宜記憶される。
【0083】
操作情報Daは、コントローラ7から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Daには、上述の処理結果データの位置情報に相当する第1座標データDa1および第2座標データDa2が含まれる。第1座標データDa1は、撮像素子743が撮像した撮像画像に対して、2つのマーカ8Lおよび8Rのうちの一方の画像の位置(撮像画像内における位置)を表す座標のデータである。第2座標データDa2は、他方のマーカの画像の位置(撮像画像内における位置)を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるXY座標系によって表される。
【0084】
また、操作情報Daには、撮像画像から得られる処理結果データの一例の座標データ(第1座標データDa1および第2座標データDa2)の他、操作部72から得られるキーデータDa3等が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報Daを受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば1フレーム毎(1/60秒)に読み出され、その最新の情報がメインメモリ33に記憶される。
【0085】
操作状態情報Dbは、コントローラ7の操作状態を撮像画像に基づいて判断した情報である。操作状態情報Dbは、撮像画像に含まれる対象画像(マーカ)の位置や向きから得られるデータであり、具体的には、方向データDb1、中点データDb2、現在距離データDb3、初期処理データDb4、およびドラッグフラグDb5等を含む。方向データDb1は、第1座標データDa1から第2座標データDa2への方向を示すデータである。ここでは、方向データDb1は、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルのデータとする。中点データDb2は、第1座標データDa1と第2座標データDa2との中点の座標を示す。ここで、2つのマーカ(マーカ8Lおよび8R)の画像を1つの対象画像としてみた場合、中点データDb2は、対象画像の位置を示すことになる。現在距離データDb3は、第1座標データDa1および第2座標データDa2に基づいて算出された、マーカ8Lおよび8Rからコントローラ7までの現在距離realDを示すデータである。初期距離データDb4は、所定タイミング(例えば、ドラッグボタンを押下開始したタイミング)におけるマーカ8Lおよび8Rからコントローラ7までの距離initDを示すデータである。ドラッグフラグDb5は、プレイヤがドラッグボタンを押下しているか否かを区別するためのドラッグフラグisDragを示すデータである。
【0086】
表示情報Dcは、仮想現在距離データDc1、仮想初期距離データDc2、スケールデータDc3、カメラ行列データDc4、および画像データDc5を含んでいる。仮想現在距離データDc1は、現在距離realDをモニタ2に表現される仮想空間における距離に置換した仮想現在距離virtualDを示すデータである。仮想初期距離データDc2は、所定タイミング(例えば、ドラッグボタンを押下開始したタイミング)における仮想現在距離virtualDを仮想初期距離init_virtualDとして示すデータである。スケールデータDc3は、モニタ2に仮想空間を表現するための仮想カメラの視野の大きさを示すスケール値scaleを示すデータである。カメラ行列データDc4は、仮想カメラにおけるカメラの移動、ズーム、向きの回転、位置の回転等が適用されるカメラ行列を示すデータである。画像データDc5は、オブジェクトOBJ等を配置してモニタ2に表示する画像を生成するためのデータである。
【0087】
次に、図15〜図17を参照して、ゲーム装置3において行われるゲーム処理の詳細を説明する。なお、図15は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。図16は、図15におけるステップ53の距離算出処理の詳細な動作を示すサブルーチンである。図17は、現在距離realDを算出する動作を説明するための図である。なお、図15および図16に示すに示すフローチャートにおいては、処理のうち、ゲームプログラムに含まれる画像処理プログラムを実行してコントローラ7に関する操作に基づいて行われる画像拡大/縮小処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図15および図16では、CPU30が実行する各ステップを「S」と略称する。
【0088】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図15および図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0089】
図15において、CPU30は、コントローラ7から受信した操作情報を取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、操作情報を操作情報Daとしてメインメモリ33に記憶する。ここで、ステップ51で取得される操作情報には、マーカ8Lおよび8Rの撮像画像内における位置を示す座標データ(第1座標データDa1および第2座標データDa2)の他、コントローラ7の操作部72がどのように操作されたか示すデータ(キーデータDa3)が含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置3へ送信する。そして、CPU30は、1フレーム毎に操作情報を利用するものとする。したがって、図15に示すステップ51〜ステップ64の処理ループは、1フレーム毎に繰り返し実行される。
【0090】
次に、CPU30は、キーデータDa3を参照し、ドラッグボタンが押下されているか否かを判断する(ステップ52)。そして、CPU30は、ドラッグボタンが押下されている場合、処理を次のステップ53に進める。一方、CPU30は、ドラッグボタンが押下されていない場合、ドラッグフラグDb5に記述されたドラッグフラグisDragを0に設定して(ステップ65)、処理を次のステップ62に進める。
【0091】
ステップ53において、CPU30は、距離算出処理を行い、処理を次のステップに進める。距離算出処理においては、コントローラ7から送信され記憶された第1座標データDa1および第2座標データDa2に基づいて、コントローラ7とマーカ8Lおよび8Rとの現在距離realDが算出される。以下、図16および図17を参照して、ステップ53における詳細な動作について説明する。
【0092】
図16において、CPU30は、第1座標データDa1および第2座標データDa2を取得し(ステップ71)、距離miを算出する(ステップ72)。図17に示すように、距離miは、撮像画像内での2点間の距離である。この2点は、マーカ8Lおよび8Rを撮像した画像に相当し、それぞれの座標を第1座標データDa1および第2座標データDa2として得ている。したがって、CPU30は、第1座標データDa1および第2座標データDa2を用いれば、距離miを算出することができる。具体的には、第1座標データDa1が位置座標(Lx,Ly)、第2座標データDa2が位置座標(Rx,Ry)であるとすると、
【数1】
で算出される。
【0093】
次に、CPU30は、マーカ8Lおよび8Rの設置位置に対する撮像素子743の撮像可能範囲の幅w(図17参照)を算出する(ステップ73)。ここで、幅wは、
w=wi×m/mi
で算出される。ここで、mは、マーカ8Lおよび8Rの設置間隔(実際の設置間隔;例えば、20cm)であり、固定値である。また、wiは、幅wに対応する撮像素子743の撮像画像の幅wiであり、固定値である。これら設置間隔mおよび幅wiは、いずれも固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。なお、設置間隔mについては、プレイヤの設置環境に応じて任意の間隔でマーカ8Lおよび8Rを設置してもかまわない。この場合、マーカ8Lおよび8Rを設置した間隔を設置間隔mとしてプレイヤが入力するようにすれば、上記数式を同様に扱うことができる。
【0094】
次に、CPU30は、幅wおよび撮像素子743の視野角θを用いて、マーカ8Lおよび8Rと撮像素子743(コントローラ7)との現在距離realD(図17参照)を算出し、現在距離データDb3を更新して(ステップ74)、当該サブルーチンによる処理を終了する。ここで、現在距離realDは、
realD=(w/2)/{tan(θ/2)}
の関係式から算出することができる。ここで、視野角θは固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0095】
図15に戻り、ステップ53における現在距離realDの算出処理の後、CPU30は、ドラッグフラグDb5を参照し(ステップ54)、ドラッグフラグisDrag=0か否かを判断する(ステップ55)。そして、CPU30は、ドラッグフラグisDrag=0の場合(すなわち、ドラッグボタンを押し始めの状態)、処理を次のステップ56に進める。一方、CPU30は、ドラッグフラグisDrag=1の場合(すなわち、ドラッグボタンの押下を継続中)、処理を次のステップ58に進める。
【0096】
ステップ56において、CPU30は、上記ステップ53で算出した現在距離realDを初期距離initDに設定し、初期距離データDb4を更新する。次に、CPU30は、現在設定されている仮想現在距離virtualDを仮想初期距離init_virtualDに設定し、仮想初期距離データDc2を更新する(ステップ57)。なお、仮想現在距離virtualDが未設定の場合、CPU30は、仮想初期距離init_virtualDをデフォルト値に設定して、仮想初期距離データDc2を更新する。そして、CPU30は、処理を次のステップ61に進める。
【0097】
一方、ステップ58において、CPU30は、移動距離moveDを算出する。具体的には、CPU30は、上記ステップ53で算出された現在距離realDと、初期距離データDb4として格納されている初期距離initDとを用いて、移動距離moveDを、
moveD=realD−initD
によって算出する。次に、CPU30は、仮想現在距離virtualDを算出し、仮想現在距離データDc1を更新する(ステップ59)。具体的には、CPU30は、ステップ58で算出された移動距離moveDと、仮想初期距離データDc2して格納されている仮想初期距離init_virtualDとを用いて、仮想現在距離virtualDを、
virtualD=init_virtualD+moveD
によって算出する。そして、CPU30は、スケール値scaleを算出し、スケールデータDc3を更新する(ステップ60)。具体的には、CPU30は、仮想現在距離データDc1して格納されている仮想現在距離virtualDを用いて、スケール値scaleを、
scale=S×virtualD+T
によって算出する。ここで、S、Tは、任意の定数である。そして、CPU30は、処理を次のステップ61に進める。
【0098】
なお、後述する画像の描画処理において、定数S>0に設定することによって、マーカ8Lおよび8Rからコントローラ7を遠ざけるとモニタ2の表示を拡大することができる。これによって、モニタ2に表示されている画像を掴んでいるような感覚で直感的な操作が可能となる。また、定数S<0に設定することによって、マーカ8Lおよび8Rからコントローラ7を遠ざけるとモニタ2の表示を縮小することができる。これによって、モニタ2に表示されている画像を撮像するカメラを操作しているような感覚で直感的な操作が可能となる。
【0099】
ステップ61において、CPU30は、ドラッグフラグDb5に記述されたドラッグフラグisDragを1に設定して、処理を次のステップ62に進める。
【0100】
ステップ62において、CPU30は、スケール値scaleに基づいて、カメラ行列を算出し、カメラ行列データDc4を更新する。そして、CPU30は、処理を次のステップに進める。例えば、CPU30は、射影行列が透視射影行列であるとき、スケールデータDc3として格納されているスケール値scaleに基づいて、仮想カメラの位置と当該仮想カメラの注視点との距離を計算してカメラ行列を算出する。また、CPU30は、射影行列が正射影行列であるとき、スケールデータDc3として格納されているスケール値scaleに基づいて、正射影行列の視野の大きさを計算してカメラ行列を算出する。
【0101】
次に、CPU30は、上記ステップ62で算出されたカメラ行列を用いて、画像を描画し、モニタ2に表示する(ステップ63)。そして、CPU30は、表示を終了するか否かを判断する(ステップ64)。CPU30は、表示を継続する場合、上記ステップ51に戻って処理を繰り返す。一方、CPU30は、表示を終了する場合、当該フローチャートによる処理を終了する。
【0102】
なお、上記ステップ62およびステップ63においては、設定されているスケール値scaleに基づいた2次元の画像処理を行い、2次元画像の表示サイズを逐次変更することによって当該画像の拡大/縮小を行ってモニタ2に表示してもかまわない。このような画像の拡大/縮小方式を用いても、コントローラ7とマーカ8Lおよび8Rとの距離に応じて、画像の拡大/縮小を行うことができる。
【0103】
また、さらにコントローラ7がドラッグボタンを押下した状態で、モニタ2に対して上下左右に動かされたり、左右にひねられたりすることに応じて、モニタ2に表示された表示物を移動させて表示してもかまわない。例えば、上述した第1座標データDa1および第2座標データDa2への方向データDb1を算出する。具体的には、CPU30は、第1座標データDa1の位置座標(Lx,Ly)および第2座標データDa2の位置座標(Rx,Ry)を参照して、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルを算出し、方向データDb1を更新する。方向データDb1と所定の基準方向との差によって、コントローラ7の撮像面に垂直な方向を軸とする回転を算出することができる。そして、ドラッグボタンが押下されているときの方向データDb1の方向変化を計算し、当該方向変化に基づいて、回転処理を含んだカメラ行列を算出し描画に反映させれば、表示物を回転させてモニタ2に表示することができる(図13(b))。
【0104】
また、CPU30は、第1座標データDa1の位置座標(Lx,Ly)と第2座標データDa2の位置座標(Rx,Ry)との中点を示す中点データDb2を算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、当該中点の座標を算出し、中点データDb2を更新する。ここで、中点データDb2は、撮像画像内における対象画像(マーカ8Lおよび8R)を1つの画像とした場合、その画像の位置を示すデータとなる。そして、中点データDb2と所定の基準位置との差によって、モニタ2に対するコントローラ7の位置の変化を算出することができる。そして、ドラッグボタンが押下されているときの中点データDb2の位置変化を計算し、当該位置変化に基づいて、移動処理を含んだカメラ行列を算出し描画に反映させれば、表示物を上下左右に移動させてモニタ2に表示することができる(図13(a))。なお、上述した中点データDb2を画面座標系の値(指示座標)に変換し、当該指示座標の変化に基づいて表示物を移動させてもかまわない。この場合、指示座標がコントローラ7で指し示す位置になるように座標変換し、当該指示座標と一致する表示物を移動対象にすることによって、コントローラ7で指し示した表示物を任意に移動させることができる。また、上述した回転処理についても、指示座標と一致する表示物を回転対象にすることによって、コントローラ7で指し示した表示物を任意に回転させることができる。
【0105】
上述した処理では、ドラッグボタンを押下しているときにコントローラ7の移動距離を算出し、当該移動距離に応じて画像の拡大/縮小処理を行う例を説明した。以下、図18および図19を参照して、コントローラ7の移動速度を算出し、当該移動速度に応じて画像の拡大/縮小処理を行う例を説明する。なお、図18は、ゲーム装置3のメインメモリ33に記憶される他の例の主なデータを示す図である。図19は、ゲーム装置3において実行されるゲーム処理の流れの他の例を示すフローチャートである。なお、図19に示すに示すフローチャートにおいても、処理のうち、ゲームプログラムに含まれる画像処理プログラムを実行してコントローラ7に関する操作に基づいて行われる画像拡大/縮小処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図19では、CPU30が実行する各ステップを「S」と略称する。さらに、図19に示すフローチャートは、ゲームプログラムの実行が開始された後に行われる処理を示すフローチャートである。
【0106】
図18において、メインメモリ33には、操作情報Da、操作状態情報Db、および表示情報Dc等が記憶される。図14を用いて説明した態様と比較すると、図18に示すデータは、過去距離データDb6および移動速度データDb7が操作状態情報Dbに追加され、初期距離データDb4、ドラッグフラグDb5、および仮想初期距離データDc2が除かれている。図18に示す他のデータは図14と同様であるため、同じデータには同じ参照符号を付して詳細な説明を省略する。
【0107】
過去距離データDb6は、前フレームにおけるマーカ8Lおよび8Rからコントローラ7までの距離pastDを示すデータである。移動速度データDb7は、マーカ8Lおよび8Rに対してコントローラ7が移動する速度velDを示すデータである。
【0108】
図19において、CPU30は、コントローラ7から受信した操作情報を取得し(ステップ81)、処理を次のステップに進める。なお、ステップ81の動作は、上記ステップ51と同様であるため、詳細な説明を省略する。
【0109】
次に、CPU30は、現在設定されている現在距離realDを過去距離pastDに設定し、過去距離データDb6を更新する(ステップ82)。そして、CPU30は、距離算出処理を行い(ステップ83)、処理を次のステップに進める。なお、距離算出処理については、上記ステップ53と同様であるため、詳細な説明を省略する。
【0110】
次に、CPU30は、移動速度velDを算出し、移動速度データDb7を更新する(ステップ84)。具体的には、CPU30は、上記ステップ83で算出された現在距離realDと、上記ステップ82で設定された過去距離pastDとを用いて、移動速度velDを
velD=realD−pastD
によって算出する。そして、CPU30は、キーデータDa3を参照し、ドラッグボタンが押下されているか否かを判断する(ステップ85)。そして、CPU30は、ドラッグボタンが押下されている場合、処理を次のステップ86に進める。一方、CPU30は、ドラッグボタンが押下されていない場合、処理を次のステップ88に進める。
【0111】
ステップ86において、仮想現在距離virtualDを算出し、仮想現在距離データDc1を更新する。具体的には、CPU30は、ステップ84で算出された移動速度velDと、仮想現在距離データDc1して格納されている仮想現在距離virtualDとを用いて、新たな仮想現在距離virtualDを、
virtualD=virtualD+velD
によって算出する。そして、CPU30は、スケール値scaleを算出し、スケールデータDc3を更新する(ステップ87)。具体的には、CPU30は、仮想現在距離データDc1して格納されている仮想現在距離virtualDを用いて、スケール値scaleを、
scale=S×virtualD+T
によって算出する。ここで、S、Tは、任意の定数である。そして、CPU30は、処理を次のステップ88に進める。
【0112】
ステップ88において、CPU30は、スケール値scaleに基づいて、カメラ行列を算出し、カメラ行列データDc4を更新する。次に、CPU30は、上記ステップ62で算出されたカメラ行列を用いて、画像を描画し、モニタ2に表示する(ステップ89)。そして、CPU30は、表示を終了するか否かを判断する(ステップ90)。CPU30は、表示を継続する場合、上記ステップ81に戻って処理を繰り返す。一方、CPU30は、表示を終了する場合、当該フローチャートによる処理を終了する。なお、ステップ88のカメラ行列算出処理およびステップ89の描画処理については、上述したステップ62およびステップ63の処理と同様であるため、詳細な説明を省略する。
【0113】
なお、上述したステップ53およびステップ82で行った距離算出処理においては、コントローラ7がマーカ8Lおよび8Rを結ぶ方向に対して斜めに配置された場合、現在距離realDに誤差が生じる。以下、図20〜図23を参照して、距離算出処理の他の例について説明する。なお、図20は、距離算出処理の詳細な動作の他の例を示すサブルーチンである。図21〜図23は、現在距離realDを算出する他の例の動作を説明するための図である。
【0114】
以下に述べる距離算出処理では、上述した第1座標データDa1および第2座標データDa2に加えてサイズ情報も処理結果データとして取得する。サイズ情報とは、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの面積、直径、および幅等の何れかを示す情報であり、ここではマーカ8Lおよび8Rを示す撮像画像の直径を示すサイズ情報をそれぞれ第1サイズデータおよび第2サイズデータとして取得する一例を用いて説明する。
【0115】
図20において、CPU30は、第1サイズデータおよび第2サイズデータを取得し(ステップ101)、処理を次のステップに進める。図21に示すように、第1サイズデータおよび第2サイズデータは、それぞれマーカ8Lおよび8Rを示す撮像画像の直径を示すデータであり、第1サイズデータがマーカ8Lを撮像した画像の直径diamLを示し、第2サイズデータがマーカ8Rを撮像した画像の直径diamRを示している。例えば、図21に示すように、コントローラ7がマーカ8Lおよび8Rを結ぶ方向に対して斜めに配置された場合、直径diamLと直径diamRとに差が生じる。
【0116】
次に、CPU30は、第1サイズデータ(直径diamL)に基づいて、マーカ8Lの設置位置に対する撮像素子743の撮像可能範囲の幅w(図22参照)を算出する(ステップ102)。ここで、幅wは、
w=wi×diamM/diamL
で算出される。ここで、diamMは、設置されたマーカ8Lおよび8Rの直径(実際の直径)であり、固定値として予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0117】
次に、CPU30は、上記ステップ102で算出した幅wおよび撮像素子743の視野角θを用いて、マーカ8Lと撮像素子743(コントローラ7)との現在距離realDL(図22参照)を算出する(ステップ103)。ここで、現在距離realDLは、
realDL=(w/2)/{tan(θ/2)}
の関係式から算出することができる。ここで、視野角θは固定値であるため、予めゲーム装置3内の記憶手段(図示せず)に格納される。
【0118】
次に、CPU30は、第2サイズデータ(直径diamR)に基づいて、マーカ8Rの設置位置に対する撮像素子743の撮像可能範囲の幅wを算出する(ステップ104)。ここで、幅wは、
w=wi×diamM/diamR
で算出される。
【0119】
次に、CPU30は、上記ステップ104で算出した幅wおよび撮像素子743の視野角θを用いて、マーカ8Rと撮像素子743(コントローラ7)との現在距離realDRを算出する(ステップ105)。ここで、現在距離realDRは、
realDR=(w/2)/{tan(θ/2)}
の関係式から算出することができる。
【0120】
次に、CPU30は、現在距離realDLおよびrealDRとマーカ8Lおよび8Rの設置間隔mとを用いて、角度δ1を算出する(ステップ106)。図23に示すように、角度δ1は、マーカ8Lおよびコントローラ7を結ぶ直線と、マーカ8Lおよび8Rを結ぶ直線とによって成される角度である。角度δ1は、余弦定理を用いて、
cosδ1=(realDL2×m2−realDR2)/(2×realDL×m)
で算出される。
【0121】
次に、CPU30は、マーカ8Lおよび8R間の中点とコントローラ7との現在距離realD(図23参照)を算出し(ステップ107)、当該サブルーチンによる処理を終了する。現在距離realDは、余弦定理を用いて、
【数2】
で算出される。
【0122】
なお、上記中点およびコントローラ7を結ぶ直線と、マーカ8Lおよび8Rを結ぶ直線とによって成される角度δ2を求めることも可能である。角度δ2は、現在距離realD、現在距離realDL、および設置間隔mを用いて、余弦定理から、
cosδ2={realD2×(m/2)2−realDL2}
/{2×realD×(m/2)}
で算出される。この角度δ2を得ることによって、コントローラ7がマーカ8Lおよび8Rに対してどのような角度位置に配置されているか算出することができ、コントローラ7の角度位置に応じた処理が可能となる。
【0123】
このように、コントローラ7を固定的に設置された撮像対象を撮像し、当該撮像画像における対象画像から複数の対象画像間の間隔または対象画像の大きさを示す対象画像データに応じて画像の拡大/縮小が行われる。なお、複数の対象画像間の間隔を示す対象画像データは、複数の撮像対象を撮像した撮像画像における複数の対象画像間の距離等であり、対象画像の大きさを示す対象画像データは、単一の撮像対象を撮像した撮像画像における単一の対象画像の大きさ(例えば、直径や幅)等が含まれる。例えば、2つのマーカ8Lおよび8Rからの赤外光が複数の撮像対象となり、対象画像データとしては、撮像画像に撮像された2つのマーカの間隔(距離mi)が用いられる。また、1つのマーカ(例えばマーカ8L)からの赤外光が単一の撮像対象であっても、当該マーカの大きさが対象画像データとして利用でき、1つマーカに含まれる複数箇所(例えば、両端)間の距離を対象画像データとしてもかまわない。この場合、対象画像データとしては、撮像画像に撮像された1つのマーカの直径等(直径diamL等)が用いられる。これらの対象画像データから、コントローラ7と撮像対象との間の距離を得ることができるため、当該距離や移動速度の増減に応じた画像の拡大/縮小処理が可能となり、操作距離を利用した直感的で新規な操作が実現できる。なお、上述した距離の演算手順は単なる一例に過ぎず、対象画像データそのものを距離として直接扱って処理を簡略化してもかまわない。
【0124】
また、上述した説明では、ドラッグボタン(操作ボタン72i)を押下している間のみ画像の拡大/縮小処理が行われる例を用いたが、現在距離realDに応じて常に画像の拡大/縮小処理が行われてもかまわない。これによって、マーカ8Lおよび8Rからコントローラ7までの距離が逐次画像処理に反映される画像がモニタ2に表示される。例えば、モニタ2からコントローラ7を所持するユーザまでの視聴距離に応じて視聴に最適なサイズの画像を表示することもできる。
【0125】
また、上述した説明では、撮像素子743で撮像した画像データを解析することによって現在距離realDを算出したが、それ以外の手段によっても、実空間内に配置された所定の測定対象との現在距離realDを測ることができれば、上記の発明を実施することが可能である。例えば、現在距離realDを算出するための手段として、超音波センサによるものや、磁気センサを用いたものなどを用いてもよい。また、撮像素子743と、撮像対象との距離に関連した値を得ることができれば、実際の現在距離realDを算出しなくとも操作入力は可能であるので、現在距離realDを算出せずに、撮像画像内のマーカ8Lと8Rとの間の長さに対応させたデータを予め用意し、当該対応データを用いて処理を行うようにしてもよい。
【0126】
また、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置3の接続端子に接続する。
【0127】
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
【0128】
また、撮像素子743で撮像した画像データを解析してマーカ8Lおよび8Rからの赤外光の位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコントローラ7内で生成してゲーム装置3へ送信する態様を説明したが、他の処理段階のデータをコントローラ7からゲーム装置3へ送信してもかまわない。例えば、撮像素子743が撮像した画像データをコントローラ7からゲーム装置3へ送信し、CPU30において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コントローラ7に設けられた画像処理回路744が不要となる。また、上記画像データの解析途中のデータをコントローラ7からゲーム装置3へ送信してもかまわない。例えば、画像データから得られる輝度、位置、および面積等を示すデータをコントローラ7からゲーム装置3へ送信し、CPU30において残りの解析処理を行って処理結果データを取得してもかまわない。
【0129】
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コントローラ7の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。例えば、所定の長さを有する1つのマーカをモニタ2の近傍に設置し、当該長さの両端を設置間隔m(図16参照)とすれば、本発明を同様に実現することができる。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコントローラ7の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
【0130】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0131】
また、上記実施例では、ゲーム装置3をコントローラ7で操作しているが、撮像手段を備えた入力装置で操作される一般的なパーソナルコンピュータなどの情報処理装置でもかまわない。この場合、この情報処理装置のコンピュータが実行するプログラムは、典型的にゲームに用いられるゲームプログラムに限らず、上記情報処理装置に対する画像処理に用いられる汎用的な画像処理プログラムである。
【産業上の利用可能性】
【0132】
本発明に係る画像処理装置および画像処理プログラムは、自由度の高い操作を実現することができ、物理的に分離したユニットを用いて操作するゲーム等の画像処理として有用である。
【図面の簡単な説明】
【0133】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図8】プレイヤがコントローラ7を右手で把持した状態をコントローラ7の前面側から見た一例
【図9】プレイヤがコントローラ7を右手で把持した状態をコントローラ7の左側面側から見た一例
【図10】マーカ8Lおよび8Rと撮像情報演算部74との視野角を説明するための図
【図11】プレイヤUがマーカ8Lおよび8Rに対して前後方向へ操作する一例を示す上面図
【図12】図11に示した操作に応じて、モニタ2に表示される画面例を示す図
【図13】コントローラ7をモニタ2に対して上下左右に移動させる、またはコントローラ7をひねることによって、モニタ2に表示されるオブジェクトOBJの表示例
【図14】ゲーム装置3のメインメモリ33に記憶される主なデータを示す図
【図15】ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート
【図16】図15におけるステップ53の距離算出処理の詳細な動作を示すサブルーチン
【図17】現在距離realDを算出する動作を説明するための図
【図18】ゲーム装置3のメインメモリ33に記憶される他の例の主なデータを示す図
【図19】ゲーム装置3において実行されるゲーム処理の流れの他の例を示すフローチャート
【図20】距離算出処理の詳細な動作の他の例を示すサブルーチン
【図21】現在距離realDを算出する他の例の動作を説明するための図
【図22】現在距離realDを算出する他の例の動作を説明するための図
【図23】現在距離realDを算出する他の例の動作を説明するための図
【符号の説明】
【0134】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
8…マーカ
【特許請求の範囲】
【請求項1】
撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて所定の画像処理を行う画像処理装置であって、
前記撮像手段の撮像画像において前記撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する対象画像データ取得手段と、
前記対象画像データの変化に応じて、表示画像の拡大または縮小を行う画像処理手段と、
前記画像処理手段が処理した表示画像を表示装置に表示させる表示制御手段とを備える、画像処理装置。
【請求項2】
前記画像処理手段は、
前記対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する距離算出手段と、
前記距離の変化に応じて前記表示画像の拡大または縮小を行う拡大縮小手段とを含む、請求項1に記載の画像処理装置。
【請求項3】
前記画像処理手段は、所定の期間における前記距離の変化に応じて前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項4】
前記入力装置は、押下可能な少なくとも1つの操作キーを備え、当該操作キーに対する押下状態に応じた操作情報を少なくとも出力するものであって、
前記操作情報を取得する操作情報取得手段と、
前記操作キーが押下開始されたことを前記操作情報が示すとき、前記距離算出手段が算出した距離を記憶する記憶手段とを、さらに備え、
前記画像処理手段は、前記記憶手段に記憶された距離と前記操作キーが押下されていることを前記操作情報が示している間に前記距離算出手段が算出する距離との距離差を逐次算出することによって、前記操作キーが押下されている期間を前記所定の期間とした距離の変化を求める差分算出手段を含み、
前記画像処理手段は、前記距離差に基づいて前記表示画像の拡大または縮小を行う、請求項3に記載の画像処理装置。
【請求項5】
前記画像処理手段は、前記距離の増加に応じて表示画像の拡大を行い、前記距離の減少に応じて表示画像の縮小を行う、請求項2乃至4のいずれかに記載の画像処理装置。
【請求項6】
前記画像処理手段は、前記距離の増加に応じて表示画像の縮小を行い、前記距離の減少に応じて表示画像の拡大を行う、請求項2乃至4のいずれかに記載の画像処理装置。
【請求項7】
前記撮像画像における前記対象画像の位置に基づいて、前記表示装置の表示領域に対応する指示座標を算出する指示座標算出手段を、さらに備え、
前記画像処理手段は、前記指示座標の変化に基づいて、前記表示画像の移動をさらに行う、請求項2に記載の画像処理装置。
【請求項8】
前記撮像画像における前記対象画像の位置に基づいて、前記入力装置の傾きを算出する傾き算出手段を、さらに備え、
前記画像処理手段は、前記傾きの変化に基づいて、前記表示画像の回転をさらに行う、請求項2に記載の画像処理装置。
【請求項9】
前記画像処理手段は、前記距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項10】
前記画像処理手段は、前記距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項11】
前記画像処理装置は、前記対象画像データに応じて、前記撮像対象に対して前記入力装置が移動する速度を逐次算出する速度算出手段を、さらに備え、
前記画像処理手段は、前記速度に応じて前記表示画像の拡大または縮小を行う、請求項1に記載の画像処理装置。
【請求項12】
撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて画像処理を行うコンピュータで実行される画像処理プログラムであって、
前記撮像手段の撮像画像において前記撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する対象画像データ取得ステップと、
前記対象画像データの変化に応じて、表示画像の拡大または縮小を行う画像処理ステップと、
前記画像処理手段が処理した表示画像を表示装置に表示させる表示制御ステップとを、前記コンピュータに実行させる、画像処理プログラム。
【請求項13】
前記画像処理ステップは、
前記対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する距離算出ステップと、
前記距離の変化に応じて前記表示画像の拡大または縮小を行う拡大縮小ステップとを含む、請求項12に記載の画像処理プログラム。
【請求項14】
前記画像処理ステップでは、所定の期間における前記距離の変化に応じて前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項15】
前記入力装置は、押下可能な少なくとも1つの操作キーを備え、当該操作キーに対する押下状態に応じた操作情報を少なくとも出力するものであって、
前記操作情報を取得する操作情報取得ステップと、
前記操作キーが押下開始されたことを前記操作情報が示すとき、前記距離算出ステップで算出した距離をメモリに記憶する記憶制御ステップとを、さらに前記コンピュータに実行させ、
前記画像処理ステップは、メモリに記憶された距離と前記操作キーが押下されていることを前記操作情報が示している間に前記距離算出ステップで算出する距離との距離差を逐次算出することによって、前記操作キーが押下されている期間を前記所定の期間とした距離の変化を求める差分算出ステップを含み、
前記画像処理ステップでは、前記距離差に基づいて前記表示画像の拡大または縮小が行われる、請求項14に記載の画像処理プログラム。
【請求項16】
前記画像処理ステップでは、前記距離の増加に応じて表示画像の拡大が行われ、前記距離の減少に応じて表示画像の縮小が行われる、請求項13乃至15のいずれかに記載の画像処理プログラム。
【請求項17】
前記画像処理ステップでは、前記距離の増加に応じて表示画像の縮小が行われ、前記距離の減少に応じて表示画像の拡大が行われる、請求項13乃至15のいずれかに記載の画像処理プログラム。
【請求項18】
前記撮像画像における前記対象画像の位置に基づいて、前記表示装置の表示領域に対応する指示座標を算出する指示座標算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記指示座標の変化に基づいて、前記表示画像の移動がさらに行われる、請求項13に記載の画像処理プログラム。
【請求項19】
前記撮像画像における前記対象画像の位置に基づいて、前記入力装置の傾きを算出する傾き算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記傾きの変化に基づいて、前記表示画像の回転がさらに行われる、請求項13に記載の画像処理プログラム。
【請求項20】
前記画像処理ステップでは、前記距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項21】
前記画像処理ステップでは、前記距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項22】
前記対象画像データに応じて、前記撮像対象に対して前記入力装置が移動する速度を逐次算出する速度算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記速度に応じて前記表示画像の拡大または縮小が行われる、請求項12に記載の画像処理プログラム。
【請求項1】
撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて所定の画像処理を行う画像処理装置であって、
前記撮像手段の撮像画像において前記撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する対象画像データ取得手段と、
前記対象画像データの変化に応じて、表示画像の拡大または縮小を行う画像処理手段と、
前記画像処理手段が処理した表示画像を表示装置に表示させる表示制御手段とを備える、画像処理装置。
【請求項2】
前記画像処理手段は、
前記対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する距離算出手段と、
前記距離の変化に応じて前記表示画像の拡大または縮小を行う拡大縮小手段とを含む、請求項1に記載の画像処理装置。
【請求項3】
前記画像処理手段は、所定の期間における前記距離の変化に応じて前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項4】
前記入力装置は、押下可能な少なくとも1つの操作キーを備え、当該操作キーに対する押下状態に応じた操作情報を少なくとも出力するものであって、
前記操作情報を取得する操作情報取得手段と、
前記操作キーが押下開始されたことを前記操作情報が示すとき、前記距離算出手段が算出した距離を記憶する記憶手段とを、さらに備え、
前記画像処理手段は、前記記憶手段に記憶された距離と前記操作キーが押下されていることを前記操作情報が示している間に前記距離算出手段が算出する距離との距離差を逐次算出することによって、前記操作キーが押下されている期間を前記所定の期間とした距離の変化を求める差分算出手段を含み、
前記画像処理手段は、前記距離差に基づいて前記表示画像の拡大または縮小を行う、請求項3に記載の画像処理装置。
【請求項5】
前記画像処理手段は、前記距離の増加に応じて表示画像の拡大を行い、前記距離の減少に応じて表示画像の縮小を行う、請求項2乃至4のいずれかに記載の画像処理装置。
【請求項6】
前記画像処理手段は、前記距離の増加に応じて表示画像の縮小を行い、前記距離の減少に応じて表示画像の拡大を行う、請求項2乃至4のいずれかに記載の画像処理装置。
【請求項7】
前記撮像画像における前記対象画像の位置に基づいて、前記表示装置の表示領域に対応する指示座標を算出する指示座標算出手段を、さらに備え、
前記画像処理手段は、前記指示座標の変化に基づいて、前記表示画像の移動をさらに行う、請求項2に記載の画像処理装置。
【請求項8】
前記撮像画像における前記対象画像の位置に基づいて、前記入力装置の傾きを算出する傾き算出手段を、さらに備え、
前記画像処理手段は、前記傾きの変化に基づいて、前記表示画像の回転をさらに行う、請求項2に記載の画像処理装置。
【請求項9】
前記画像処理手段は、前記距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項10】
前記画像処理手段は、前記距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、前記表示画像の拡大または縮小を行う、請求項2に記載の画像処理装置。
【請求項11】
前記画像処理装置は、前記対象画像データに応じて、前記撮像対象に対して前記入力装置が移動する速度を逐次算出する速度算出手段を、さらに備え、
前記画像処理手段は、前記速度に応じて前記表示画像の拡大または縮小を行う、請求項1に記載の画像処理装置。
【請求項12】
撮像対象を撮像するための撮像手段を備えた入力装置を用いた入力操作に応じて画像処理を行うコンピュータで実行される画像処理プログラムであって、
前記撮像手段の撮像画像において前記撮像対象を示す対象画像から得られる複数の対象画像間の間隔または対象画像の大きさを表す対象画像データを逐次取得する対象画像データ取得ステップと、
前記対象画像データの変化に応じて、表示画像の拡大または縮小を行う画像処理ステップと、
前記画像処理手段が処理した表示画像を表示装置に表示させる表示制御ステップとを、前記コンピュータに実行させる、画像処理プログラム。
【請求項13】
前記画像処理ステップは、
前記対象画像データに基づいて、前記撮像手段と前記撮像対象との間の距離を逐次算出する距離算出ステップと、
前記距離の変化に応じて前記表示画像の拡大または縮小を行う拡大縮小ステップとを含む、請求項12に記載の画像処理プログラム。
【請求項14】
前記画像処理ステップでは、所定の期間における前記距離の変化に応じて前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項15】
前記入力装置は、押下可能な少なくとも1つの操作キーを備え、当該操作キーに対する押下状態に応じた操作情報を少なくとも出力するものであって、
前記操作情報を取得する操作情報取得ステップと、
前記操作キーが押下開始されたことを前記操作情報が示すとき、前記距離算出ステップで算出した距離をメモリに記憶する記憶制御ステップとを、さらに前記コンピュータに実行させ、
前記画像処理ステップは、メモリに記憶された距離と前記操作キーが押下されていることを前記操作情報が示している間に前記距離算出ステップで算出する距離との距離差を逐次算出することによって、前記操作キーが押下されている期間を前記所定の期間とした距離の変化を求める差分算出ステップを含み、
前記画像処理ステップでは、前記距離差に基づいて前記表示画像の拡大または縮小が行われる、請求項14に記載の画像処理プログラム。
【請求項16】
前記画像処理ステップでは、前記距離の増加に応じて表示画像の拡大が行われ、前記距離の減少に応じて表示画像の縮小が行われる、請求項13乃至15のいずれかに記載の画像処理プログラム。
【請求項17】
前記画像処理ステップでは、前記距離の増加に応じて表示画像の縮小が行われ、前記距離の減少に応じて表示画像の拡大が行われる、請求項13乃至15のいずれかに記載の画像処理プログラム。
【請求項18】
前記撮像画像における前記対象画像の位置に基づいて、前記表示装置の表示領域に対応する指示座標を算出する指示座標算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記指示座標の変化に基づいて、前記表示画像の移動がさらに行われる、請求項13に記載の画像処理プログラム。
【請求項19】
前記撮像画像における前記対象画像の位置に基づいて、前記入力装置の傾きを算出する傾き算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記傾きの変化に基づいて、前記表示画像の回転がさらに行われる、請求項13に記載の画像処理プログラム。
【請求項20】
前記画像処理ステップでは、前記距離の変化に応じて仮想空間内に配置された仮想カメラの位置を逐次変更することによって、前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項21】
前記画像処理ステップでは、前記距離の変化に応じて2次元画像の表示サイズを逐次変更することによって、前記表示画像の拡大または縮小が行われる、請求項13に記載の画像処理プログラム。
【請求項22】
前記対象画像データに応じて、前記撮像対象に対して前記入力装置が移動する速度を逐次算出する速度算出ステップを、さらに前記コンピュータに実行させ、
前記画像処理ステップでは、前記速度に応じて前記表示画像の拡大または縮小が行われる、請求項12に記載の画像処理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2007−236697(P2007−236697A)
【公開日】平成19年9月20日(2007.9.20)
【国際特許分類】
【出願番号】特願2006−64439(P2006−64439)
【出願日】平成18年3月9日(2006.3.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年9月20日(2007.9.20)
【国際特許分類】
【出願日】平成18年3月9日(2006.3.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]