説明

画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法

【課題】実空間画像を用いて新たな画像を設定して画像処理することができる画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法を提供すること。
【解決手段】画像処理プログラムであって、現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理装置のコンピュータを、実空間画像取得手段、特定対象物検出手段、算出手段、設定手段、識別手段、イベント提供手段、仮想空間画像生成手段、および表示制御手段として機能させる、画像処理プログラムなど。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法に関し、より具体的には、実空間画像を用いて仮想オブジェクトを設定して画像処理する画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法に関する。
【背景技術】
【0002】
従来、実空間画像と仮想空間画像とを重ね合わせた画像を表示する装置が提案されている(例えば、特許文献1参照)。上記特許文献1で開示されたゲーム装置は、外部カメラによって撮像された画像を背景画像としてゲーム画像に重ね合わせて表示している。具体的には、上記ゲーム装置は、上記背景画像が一定時間毎に更新され、最新の背景画像をゲーム画像と重ね合わせて表示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−113746号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1で開示されたゲーム装置は、外部カメラによって撮像された画像が単に背景画像として表示されるだけであり、重ね合わされる背景画像とゲーム画像とが何ら関連のない状態で表示される。したがって、表示される画像自体が単調であり、面白味のある画像をユーザに提示することはできない。
【0005】
それ故に、本発明の目的は、実空間画像を用いて新たな画像を設定して画像処理することができる画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、その一例として、以下のような態様で提供され得る。以下で示した具体的な記載のいずれもが、本発明の外延を理解するために示した例示的な記載であって、本発明がこの例に限定されることを意図するものではない。すなわち、当業者は、その具体的な記載から、本発明に関する記載および技術常識に基づいて均等な範囲を実施することができることが理解される。
【0007】
1つの態様において、本発明は、画像処理プログラムを提供し得る。当該画像処理処理プログラムは、現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理装置のコンピュータを、実空間画像取得手段、特定対象物検出手段、算出手段、設定手段、識別手段、イベント提供手段、仮想空間画像生成手段、および表示制御手段として機能させる。
【0008】
ここで、実空間画像取得手段は、上記実カメラによって上記現実空間が撮像されることにより得られた実空間画像を取得する。特定対象物検出手段は、上記実空間画像から特定対象物を検出する。算出手段は、上記特定対象物検出手段による特定対象物の検出の結果に基づき、上記実カメラと上記特定対象物との間の相対的位置を算出することを少なくとも実行する。設定手段は、上記相対的位置に基づき、仮想空間に仮想カメラを設定する。識別手段は、上記実空間画像のうち上記特定対象物に対応する部分の画像以外の画像から、当該画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する。イベント提供手段は、上記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、上記仮想空間に提供する。仮想空間画像生成手段は、上記イベントが生じた上記仮想空間を上記仮想カメラで撮影することにより、仮想空間画像を生成する。そして、表示制御手段は、上記表示領域上の現実空間に重ね合わせて上記表示領域において視認されるように、上記仮想空間画像を上記表示装置に表示させる。
【0009】
本明細書において使用される場合、「色空間」とは、特定数(代表的には、3または4であるがこれに限られない)のタプルとして色を記述するための特定の形式(モデル)をいう。ここで、タプルは、順序づけられた要素(例えば、値または色成分)の組である。
【0010】
本明細書において使用される場合、「表色系」は、心理的概念または心理物理的概念に従い、色を定量的に表す体系であって、色空間を構成するものである。表色系としては、例えば、RGB表色系、XYZ表色系、xyY表色系、L*u*v*表色系、L*a*b*表色系、マンセル表色系、HSV(HSB)表色系、オストワルト表色系、NCS(Natural Color System)、DIN表色系などが挙げられるが、これに限定されない。
【0011】
本明細書において使用される場合、「色成分」または「色空間を構成する要素」とは、その色空間を構成する表色系において当該表色系を記述するための要素(例えば、値または色成分)をいう。例えば、RGB表色系(以下、単に、RGBともいう)は、原色をR(赤、波長700nm付近)、G(緑、波長546.1nm付近)、B(青、波長435.8nm付近)とする表色系であり、このR、GおよびBが、それぞれ、「色成分」または「色空間を構成する要素」となり得る。また、別の例において、HSV表色系は、色相(H)、明度(V)および彩度(S)の色の3属性を用いる表色系であるが、この色相、明度および彩度のそれぞれが、「色成分」または「色空間を構成する要素」となり得る。したがって、表色系の各々において、色成分が満たしている関係性を規定することで、その表色系における任意の色が与えられる。
【0012】
本明細書において使用される場合、「特定対象物」とは、現実空間において存在する物体であって、当該現実空間(またはその現実空間を表す画像)に対して、任意の仮想物体を含む仮想空間を表す画像のような情報を付加提示するときの位置合わせ基準として機能するものである。
【0013】
特定対象物としては、例えば、幾何学的な特徴を有するビジュアルマーカ(以下、マーカ)、所定の3次元形状特徴を有する物体、画像化された場合に所定の特徴点を提供する物体などが挙げられる。ここで、マーカは、印刷物(例えば、カード、書籍などを含み、また、紙以外の材料で構成されるものも含む)の形態、表面に幾何学的形状を表示することが可能な生活日用品の形態で提供されるものに限られず、液晶などの表示装置に表示される画像などの形態で提供されてもよい。また、マーカ60は、そこに具現化される幾何学的特徴が必ずしも人間の肉眼により視認されるものでなくともよく、適宜、検出用の装置等を使用することによって幾何学的特徴が認識されるものであってもよい。このようなマーカの例としては、透明な再帰性反射材(入射した光を光源の方向に反射する特殊素材)で作製されたマーカなどが挙げられる。例えば、この再帰性反射材によるマーカは、人間の肉眼を通して観察された場合は透明な物体であるが、赤外線カメラにより撮影されたときにその特徴が認識され得る。
【0014】
本明細書において使用される場合、「イベント」は、情報処理(特に、ゲーム処理、画像処理)の過程における、なんらかのアクションである。「イベント」の代表的な例としては、仮想オブジェクトの仮想空間内への配置および/または表示領域への表示(仮想オブジェクの仮想空間への提供)、仮想オブジェクトの仮想空間内、表示領域からの消去(仮想オブジェクトの消滅)、仮想オブジェクトの表示態様の変更(例えば、仮想オブジェクトに対応した3次元モデルの形状の変更、レンダリングされるテクスチャの変更)、演出方法の変更(例えば、仮想空間内の環境(例えば、仮想空間内に風が吹いていることを表示している状態)の変更;音声・効果音の変更;照明の方法の変更など)が挙げられるが、これに限定されない。
【0015】
なお、本明細書において使用される場合、装置またはシステムが、別の装置またはシステムに「接続する(接続される)」状態は、有線で接続される状態に限らず、無線で接続される状態も包含し得る。
【0016】
他の実施形態において、上記所定の色条件を満たす画素を識別するために上記識別手段が処理対象とする上記実空間画像の領域は、上記特定対象物に対応する部分に対する相対的な位置関係に基づいて規定された領域であってもよい。
【0017】
他の実施形態において、上記所定の色条件を満たす画素を識別するために上記識別手段が処理対象とする上記実空間画像の領域は、上記実空間において上記特定対象物の近傍領域に対応する部分であってもよい。なお、本明細書で使用される場合、特定対象物の「近傍」とは、当該特定対象物を含む実空間画像が取得された場合であって、当該特定対象物が、その形状的特徴が認識されるのに十分な実空間画像上の位置にあるときに、当該実空間画像に含まれて特定対象物を基準として位置決めが可能である領域である。また、このような「特定対象物の近傍」は、代表的な例において、その特定対象物(例えば、マーカ)の輪郭を基準にして位置決めが可能である領域である。
【0018】
他の実施形態において、上記所定の色条件を満たす画素を識別するために上記識別手段が処理対象とする上記実空間画像の領域は、複数の部分領域からなり、上記識別手段が、上記部分領域ごとに、上記所定の色条件を満たす画素を識別する処理を行い、上記部分領域ごとに得られた上記識別する処理の結果の組合わせに応じて、上記イベント提供手段は、上記所定のイベントを仮想空間に提供してもよい。
【0019】
他の実施形態において、上記複数の部分領域のうち少なくとも2つの部分領域において、上記所定の色条件を満たす画素を識別する処理の結果が実質的に同一となった場合に、上記イベント提供手段は、上記所定のイベントを上記仮想空間に提供してもよい。
【0020】
他の実施形態において、上記イベント提供手段は、上記複数の部分領域のそれぞれにおいて、上記所定の色条件を満たす画素を識別する処理の結果と、当該部分領域の位置情報とに応じた、上記所定のイベントを仮想空間に提供してもよい。
【0021】
上記識別手段が所定の色条件を満たす画素を識別した状態が、所定の時間継続することを契機として、上記イベント提供手段は、上記所定イベントを上記仮想空間に提供してもよい。
【0022】
上記イベント提供手段が上記所定イベントを仮想空間に提供した後において、上記識別手段が所定の色条件を満たす画素を識別していない状態が、所定の時間継続することを契機として、当該所定イベントが上記仮想空間から消去されてもよい。
【0023】
上記識別手段は、上記特定対象物に対応する部分の画像以外の画像が有するRGBカラーモデルに基づく色情報をHSVカラーモデルに基づく色情報に変換して、所定の色条件を満たす画素を識別した結果を取得し、その後、当該結果と上記RGBカラーモデルに基づく色情報のみで識別した結果とが合致することをもって所定の色条件を満たしている状態として識別してもよい。
【0024】
上記所定のイベントは、所定のオブジェクトを上記仮想空間に提供するイベントであってもよい。
【0025】
上記オブジェクトの提供において、上記仮想空間に提供されるオブジェクトが、複数のオブジェクトから、上記識別された画素が有する色成分またはその組合わせに応じて選択されもよい。
【0026】
また、別の態様において、上述の画像処理プログラムは、それを実行する装置として使用されたとしても、1または複数の装置が通信可能に構成されるシステムとして使用されてもよい。また、本発明は、上述のようなプログラム、装置、システムとして実装され得る、方法も含む。
【0027】
なお、本明細書で使用される場合、「コンピュータ読み取り可能な記憶媒体」との用語は、プログラム、コードおよび/またはデータをコンピュータシステムによって使用するために記憶することが可能な、任意の装置または媒体をいう。コンピュータ読み取り可能な記憶媒体は、コンピュータシステムによって読み取りが可能である限りにおいて、揮発性であっても、不揮発性であってもよい。コンピュータ読み取り可能な記憶媒体としては、例えば、磁気テープ、ハードディスクドライブ(HDD)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、ブルーレイディスク(BD)、半導体メモリなどが挙げられるが、これらに限られない。
【0028】
また、本明細書において使用される場合、「システム」(例えば、ゲームシステム、情報処理システム)との用語は、1つの装置で構成されてもよく、また、複数の装置であって、その各々の装置が他の装置のいずれかと通信可能であるものであってもよい。
【発明の効果】
【0029】
本発明の画像処理プログラム等は、ゲームとして表現にこれまでに以上の広がりを持たせて、興趣性を向上を提供し得る。
【図面の簡単な説明】
【0030】
【図1】開状態におけるゲーム装置10の正面図
【図2】閉状態におけるゲーム装置10の左側面図、正面図、右側面図および背面図
【図3】ゲーム装置10の内部構成を示すブロック図
【図4A】外側撮像部23によってマーカ60が撮像されているときに上側LCD22の画面に表示される画像の一例
【図4B】仮想カメラと、マーカ60に対する相対的位置の一例を模式的に示した図
【図4C】仮想空間に配置される水面オブジェクト61の一例を示す図
【図4D】仮想空間における仮想オブジェクト等の例示的な位置関係を示す図
【図4E】魚影が現れる領域(図中、斜線部)を制限する態様の一例を示す図
【図4F】マーカ60に対する相対的な位置が所定の関係を満たす一群の点と、それぞれの点を代表点として定義される領域とを模式的に示した図
【図4G】ゲーム装置10が、色の識別処理の結果に応じて仮想オブジェクトが出現するイベントを発生させた一例を示す模式図
【図5】ゲーム装置10のメインメモリ32のメモリマップを示す図
【図6A】ゲームプログラム70に基づいてCPU311によって実行されるゲーム処理の流れの一例を示すフローチャート
【図6B】図6Aのフローチャートの処理の中で行われるイベント制御処理の一例
【図6C】図6Bの中で実行される色情報取得処理の一例を示すフローチャート
【図7】左実空間画像および右実空間画像の一例を示す図
【図8】マーカ認識処理の結果に応じて算出される左仮想カメラ80Lの位置および姿勢を示す図
【図9】マーカ認識処理の結果に応じて算出される右仮想カメラ80Rの位置および姿勢を示す図
【図10】左仮想カメラ80Lの位置および姿勢に基づいて決定される右仮想カメラ80Rの位置を示す図
【発明を実施するための形態】
【0031】
(ゲーム装置の構成例)
以下、本発明の一例示的な実施形態に係るゲーム装置について説明する。図1および図2は、ゲーム装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置であり、図1および図2に示すように折り畳み可能に構成されている。図1は、開いた状態(開状態)におけるゲーム装置10を示し、図2は、閉じた状態(閉状態)におけるゲーム装置10を示している。図1は、開状態におけるゲーム装置10の正面図である。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、着脱可能な記憶媒体(例えば、後述の外部メモリ44)に記憶された、または、サーバや他のゲーム装置から受信した、あるいは内蔵する記憶領域(例えば、後述のデータ保存用内部メモリ35)に記憶された、ゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0032】
まず、図1および図2を参照して、ゲーム装置10の外観構成について説明する。図1および図2に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0033】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。図1および図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0034】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0035】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1および図2(d)に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0036】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0037】
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0038】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(図3参照)が設けられ、当該マイク42がゲーム装置10の外部の音を検出する。
【0039】
図2(a)は閉状態におけるゲーム装置10の左側面図であり、図2(b)は閉状態におけるゲーム装置10の正面図であり、図2(c)は閉状態におけるゲーム装置10の右側面図であり、図2(d)は閉状態におけるゲーム装置10の背面図である。図2(b)および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、図2(a)に示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0040】
図2(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
【0041】
また、図2(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
【0042】
また、図1および図2(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図2(c)参照)。
【0043】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0044】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。図1および図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0045】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0046】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左眼用画像と右眼用画像が表示される。具体的には、左眼用画像と右眼用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左眼用画像と右眼用画像とを左眼および右眼のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右眼用画像と左眼用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左眼に左眼用画像をユーザの右眼に右眼用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右眼にも左眼にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切替えは、後述する3D調整スイッチ25によって行われる。
【0047】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
【0048】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
【0049】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。
3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置に応じて、右眼用画像および左眼用画像における横方向の位置のずれ量が調整される。
【0050】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。
【0051】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0052】
(ゲーム装置10の内部構成)
次に、図3を参照して、ゲーム装置10の内部の電気的構成について説明する。図3は、ゲーム装置10の内部構成を示すブロック図である。図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0053】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理(例えば、撮影処理や、後述するゲーム処理)を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、CPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、GPU312は、VRAM313に描画された画像を上側LCD22および/または下側LCD12に出力し、上側LCD22および/または下側LCD12に当該画像が表示される。
【0054】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0055】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0056】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22および/または下側LCD12に当該画像を表示することができる。
【0057】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0058】
無線通信モジュール36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0059】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸または2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0060】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0061】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しないアンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0062】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0063】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0064】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右眼用画像と左眼用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右眼用画像について縦方向に1ライン分の画素データを読み出す処理と、左眼用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右眼用画像と左眼用画像とを読み出す。これにより、右眼用画像および左眼用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右眼用画像の短冊状画像と左眼用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右眼に右眼用画像が、ユーザの左眼に左眼用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0065】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って実空間を撮像し、撮像した実空間の画像データを情報処理部31に出力する。なお、撮像画像をリアルタイムで上側LCD22または下側LCDに表示したり、撮像画像に対してリアルタイムに色認識や顔認識等の画像処理を行ったりする場合、外側撮像部23や内側撮像部24は、所定の時間間隔で実空間を撮像して、画像データを情報処理部31に出力するようになっている。
【0066】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0067】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の内部構成の説明である。
【0068】
(ゲーム装置10の動作の概要)
以下、本実施形態におけるゲーム装置10の動作の概要について説明する。本実施形態では、ゲームプログラム70(図5のメモリマップ参照)に基づいて、外側撮像部23(外側撮像部(左)23a、外側撮像部(右)23b)によって現在撮像されている実空間の画像と、3次元の仮想空間に存在する仮想オブジェクトの画像とを合成した合成画像が、上側LCD22の画面に立体視可能に表示される。
【0069】
図4Aは、ゲーム装置10において提供されるゲーム処理の過程で得られる画像の一例である。具体的には、図4Aは、外側撮像部23によってビジュアルマーカ(以下、マーカ)60が撮像されているときに上側LCD22に表示される画像の一例を示している。
【0070】
例示的な実施形態において、本発明は、一連の拡張現実感技術などを応用したゲーム処理を提供する。ここでは、この例示的なゲーム処理の流れの概要を、図4Aなどを参照しつつ説明する。特に、この一連のゲーム処理の中で、この例示的なゲーム装置10は、外側撮像部23が撮像した実空間の画像の色情報を利用することで、これまでにない画像処理を提供する。なお、以下の説明では、ゲーム装置10に実装されているゲームの全体的な流れを説明しつつ、当該色情報を用いて画像処理を行う具体的な態様について説明する。
【0071】
図4Aに示されるように、マーカ60は、その表面に、矢印記号を含む正方形の模様を有している。情報処理部31は、外側撮像部23から取得される画像(実空間画像)に対して画像処理(例えば、パターンマッチングなど)を行うことによって、その実空間画像にマーカが含まれているか否かを判定することができる。また、認識されたマーカ60の位置・姿勢に基づいて、マーカ座標系(実空間におけるマーカ60の位置に対応する仮想空間内の所定点を原点とした座標系)が規定される。
【0072】
次いで、情報処理部31は、マーカ60の位置・姿勢またはその位置等から算出された情報を基準にして、複数の仮想オブジェクト(例えば、釣竿オブジェクト62)が、上側LCD22において、立体視可能に表示する。ここで、実空間画像と本ゲーム処理の過程で生成される仮想空間の画像(仮想空間画像)とを適切に融合し、実環境から受ける知覚情報を拡張・強化するためには、マーカ60を含む実空間画像に対応する現実空間(実空間)と、仮想空間画像に対応する仮想空間との適切な重ね合わせが必要である。
【0073】
まず、情報処理部31は、現実空間における基準点と、仮想空間における基準点とを、現実空間に置かれたマーカ60の位置に基づき対応づける。次に、情報処理部31は、現実空間を撮影した外側撮像部23と、仮想空間における仮想カメラとが、基準点であるマーカ60に対して同じ位置・姿勢をとるように設定する。そして、情報処理部31は、仮想カメラの特性(例えば、レンズ歪み、焦点距離、画角などのパラメータ)を、外側撮像部23に必要に応じて合致させる。このようにして、マーカ60を含む実空間画像に対応する現実空間と、仮想空間画像に対応する仮想空間との適切な重ね合わせが行われる。
【0074】
仮想空間に配置される仮想オブジェクトの一つとして、一定面積を有した水面を模した仮想オブジェクト(以下、水面オブジェクト)61が、マーカ60を含む平面(図4Bの平面Π1)とほぼ平行にかつ当該平面の上に配置されている。水面オブジェクト61は、大気と(池、海のような)大量の水との界面を模したモデルであり、この水面オブジェクト61は、仮想空間内で規定される仮想面として機能する。図4Aは、実空間画像中のマーカ60が仮想オブジェクトと融合して表示されている結果(図中、60a)を示している。
【0075】
この例示的な実施形態において、水面オブジェクト61を表現するためのモデルは完全な平面ではなく、そのモデルは、表面波(異なる媒体の間の界面に沿って進行する力学的な波)を表現するために波打った曲面を有する3次元モデルである。この曲面は、ゲームの進行に応じて所定の時間間隔で変形してもよい。
【0076】
水面オブジェクト61を規定するモデルの表面が、仮想空間内における仮想面として機能し、当該仮想面は、その仮想空間を幾つかの部分空間に分割して規定し得る。例えば、本実施形態においては、水面オブジェクト61の3次元モデルの表面または水面オブジェクト61の主面(モデルの凹凸をならし近似した平面。例えば、上述の平面Π1)が、「水上側」の空間と「水中側」の空間とに仮想空間を分離する仮想面として規定され得る。ここで、当該主面を無限遠まで延ばして考えた場合、仮想空間はその主面により二分される。そして、この二分した仮想空間のうち、仮想カメラが存在する空間を、「水上側」の空間とし、他方、「水中側」の空間として規定することが可能である。実際には、その水オブジェクト61の主面は、一定の面積を有している領域として規定されるので、その領域による制限を前提として、ゲーム処理が行われる。
【0077】
なお、ここで示した仮想面を規定する態様は、例示的なものであり、本発明における仮想面は、この例に限定されるべきものではない。また、水面オブジェクト61は、必ずしも、マーカ60を含む平面と平行またはその上に配置されなくともよく、ゲームの進行上の妥当な表現を確保できる位置に配されればよい。
【0078】
釣針と釣糸を有する釣竿を模した仮想オブジェクト(以下、釣竿オブジェクト)62が、「水上側」の空間において、上記水面オブジェクト61よりも仮想カメラ側に配置される。釣竿オブジェクト62は、ユーザ(プレイヤ)により操作可能なプレイヤオブジェクトとして機能する。ユーザが、把持するゲーム装置10本体をマーカ60に対して移動し、その移動にしたがって仮想カメラの位置が更新され、仮想オブジェクトの表示位置も更新される。釣竿オブジェクト62は、仮想空間において、仮想カメラの前方に位置づけられるように更新される。これにより、ユーザは、自身が把持するゲーム装置10が仮想空間中の釣竿オブジェクト61と一続きになっている感覚を受け得る。この釣竿オブジェクト62は、釣竿本体を表す部分(以下、釣竿本体)62a、釣糸に対応する部分(以下、釣糸部分)62b、および釣針に対する部分(以下、釣針部分)62cからなる(図4Dを参照)。
【0079】
マーカ60に対するゲーム装置10の移動を含む操作をユーザが行うことにより、釣竿オブジェクト62の釣針部分62cは、水面オブジェクト61より下の領域(すなわち、「水中側」の空間)に投げ入れられ得る。これにより、ゲーム装置10で提供されるゲームが進行する。
【0080】
この釣りゲームでは、ユーザは、水面オブジェクト61に投影された魚影(図4Aでは、符号63および64で例示する)をめがけて釣針部分62cを投入する。この魚影は、魚を模したオブジェクト(以下、魚オブジェクト)が「水中側」の空間(仮想空間における一部分空間)に存在することを示唆するための演出用画像の一部である。他方、ユーザが操作可能な釣竿オブジェクト62は、「水上側」の空間(「水中側」の空間とは別の仮想空間における部分空間)に位置づけられている。
【0081】
すなわち、ゲーム進行上、ユーザは、マーカ60に対してゲーム装置10を移動する操作を行って釣竿オブジェクト62を操作し、その釣竿オブジェクト62が位置づけられる空間とは別の部分空間に位置する魚オブジェクトに対して、一定の相互関係を確立させる。
【0082】
ゲームの進行に従い、一定の引上げ条件が充足されると、ユーザは、上記魚影に対応する魚オブジェクトを釣り上げることができる。この一連のゲーム処理のさらに詳細な説明については後述するが(「第1実施形態に係る処理」)、本実施形態により、実際の釣りの過程で釣り人が感じる感覚を、より忠実に再現することが可能である。
【0083】
すなわち、ユーザが操作のために把持するゲーム装置本体10に釣竿オブジェクト61が実際に接続されて、その釣竿オブジェクト62から、実空間と空間的に一体となった水面オブジェクト61へと釣糸部分62bを垂らしているような感覚をユーザに喚起し得る。これによって、ユーザが感じる没入感、実在感が増強され得る。
【0084】
以上のように、ゲーム装置10が提供する表示領域において、マーカ60を基準として現実空間と仮想空間との適切な重ね合わせが実現されることで、ユーザは現実空間の情報が強化される効果を享受する。そして、例示的な実施形態においてゲーム装置10は、現実空間を撮像して得られた画像のうちマーカ60に対応する部分の画像以外の画像から、所定の条件を満たす色情報を有する画素(または一群の画素)を識別し、当該条件と予め関連づけられている所定のイベントを仮想空間に提供する。これにより、ユーザは、さらに強化された効果をゲーム装置10より享受する。
【0085】
図4Fは、上述のゲームで用いられるマーカ60に対する相対的な位置が所定の関係を満たす一群の点(Gn;n=1〜8)と、それぞれの点を代表点として有する領域(An;n=1〜8)とを模式的に示した図である。なお、このnの範囲は、例示的なものであって別の範囲の数値であってもよい。この代表点の各々は、マーカ60の位置を基準として定義づけられる実空間画像上の所定の位置を占めている点である。そして、領域Anは、代表点Gnが規定された位置において所定の面積(例えば、1個の画素に対応する面積、一群の画素が構成する領域の面積)を有する領域として定義される。また、この領域の形状として、正方形(例えば、2×2、4×4または8×8などの画素群)は一例であり、任意の幾何学的形状であり得る。なお、代表点Gnの配置の仕方は、任意である。図4Fで示された例では、その代表点Gnの8点は、マーカ60から一定距離を離した外周に沿って、長方形のマーカの各辺に2個ずつ配置されている。
【0086】
ゲーム装置10は、マーカ60を撮像すると、その周囲で規定される領域(An)の色情報を識別する。そして、ゲーム装置10は、領域(An)の各々で識別された色情報の組合わせによって、所定のイベントをゲーム処理の過程で提供する。例示的なイベントとしては、所定のオブジェクトを仮想空間に提供するイベントが挙げられる。より具体的な例としては、例えば、領域Anのいずれか2カ所で、「赤色」として定義づけられる色情報が識別された場合に、その色情報に対応した所定の仮想オブジェクト(例えば、図4Gの仮想オブジェクト69)を含む仮想空間を示す画像をゲーム装置10の表示領域に表示することが挙げられる。ここで、図4Gは、ゲーム装置10が色の識別処理の結果に応じて仮想オブジェクトが出現するイベントを発生させた一例を示す模式図である。なお、識別された色情報の識別手法、および判断基準等の詳細については、後述する。このように、本実施形態では、ゲーム装置10は、現実空間における、物体の色情報を、ゲーム処理の過程に発生するイベントに反映させることで、これまでにない幅広い表現を提供する。
【0087】
以下、図4A以降の図を中心にさらに参照して、ゲーム装置10においてゲームプログラム70に基づいて実行されるゲーム処理のさらなる詳細について説明する。本発明の例示的実施形態に係る画像処理プログラムは、当該ゲームプログラム70の一部として機能するように提供される。なお、この画像処理プログラムは、モジュール化されて当該ゲームプログラムから分離可能なプログラムとして存在していてもよく、また、一体不可分なプログラムとして存在していてもよい。
【0088】
(メモリマップ)
まず、ゲームプログラムの実行中にメインメモリ32に記憶される主なデータについて説明する。図5は、ゲーム装置10のメインメモリ32のメモリマップを示す図である。図5に示されるように、メインメモリ32には、ゲームプログラム70、左実空間画像71L、右実空間画像71R、左ビュー行列72L、右ビュー行列72R、仮想オブジェクト情報73、各種変数74等が記憶される。この各種変数には、上述の画像処理プログラムの処理過程において現れる画像における色情報に係る処理に用いられるパラメータあるいは一時的な処理対象データが含まれる。本明細書において特に明示しなければ、いずれにパラメータも、ゲーム装置10の当該メインメモリ32において記憶され、また再利用されることが可能である。代替的に、これらのパラメータ等を示すデータは、ゲーム装置10の別の記憶領域に保存され、さらにそこから読み出されることで再利用されてもよい。
【0089】
ゲームプログラム70は、情報処理部31に上記画像表示処理を実行させるためのプログラムである。
【0090】
左実空間画像71Lは、外側撮像部(左)23aによって撮像された実空間の画像である。
【0091】
右実空間画像71Rは、外側撮像部(右)23bによって撮像された実空間の画像である。
【0092】
左ビュー行列72Lは、左仮想カメラ80Lから見た仮想オブジェクトを描画する際に用いられる行列であり、マーカ座標系で表された座標を左仮想カメラ座標系で表された座標へと変換するための座標変換行列である。
【0093】
右ビュー行列72Rは、右仮想カメラ80Rから見た仮想オブジェクトを描画する際に用いられる行列であり、マーカ座標系で表された座標を右仮想カメラ座標系で表された座標へと変換するための座標変換行列である。
【0094】
仮想オブジェクト情報73は、仮想オブジェクトに関連する情報であって、仮想オブジェクトの形状や模様を表すモデル情報や、仮想空間における仮想オブジェクトの現在位置などを含む。
【0095】
各種変数74は、ゲームプログラム70の実行の際に用いられる各種変数である。
【0096】
ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリ32等の各ユニットが初期化される。次に、データ保存用内部メモリ35に記憶されたゲームプログラムがメインメモリ32に読み込まれ、情報処理部31のCPU311によって当該ゲームプログラムの実行が開始される。
【0097】
以下、図6Aから図6Cまでのフローチャートを参照して、ゲームプログラムに基づいて実行される処理の流れを説明する。本図および後続の図では、「ステップ」を、「S」と略記する。なお、図6Aから図6Cまでのフローチャートは、単なる一例にすぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図6Aから図6Cまでのフローチャートのすべてのステップの処理をCPU311が実行するものとして説明するが、図6Aから図6Cのフローチャートの一部のステップの処理を、CPU311以外のプロセッサや専用回路が実行するようにしてもよい。
【0098】
図6Aは、ゲームプログラム70に基づいてCPU311によって実行されるゲーム処理の流れの一例を示すフローチャート(第1実施形態に対応の処理)である。
【0099】
図6Bは、図6Aのフローチャートの処理の中で行われるイベント制御処理の一例を示すフローチャートである。また、図6Cは、図6Bの中で実行される色情報取得処理の一例を示すフローチャートである。
【0100】
(第1実施形態に係る処理:釣りゲーム)
具体的には、図6Aは、現実世界における釣りの要素をゲームの進行に取り入れたゲームに係る例示的な処理を示している。以下、ゲーム処理の詳細について説明する。
【0101】
図6Aのステップ101において、CPU311は、ゲーム装置10の外側撮像部23により取り込まれた画像に基づき認識されたマーカ60の位置等の情報を基準に、水面オブジェクト61を設定する。
【0102】
本実施形態において、CPU311は、現実空間の絶対座標(例えば、マーカ座標系における座標)に対して、マーカ60を基準に仮想空間における座標の対応を取る。CPU311は、パターンマッチング等により認識されたマーカ60における所定位置をマーカ座標系の原点として設定する(図4B)。図4Bは、仮想カメラ(本図では、左仮想カメラ80Lを実線で、右仮想カメラ80Rを点線で示す)と、マーカ70との相対的位置の一例を模式的に示した図である。ここで行われるマーカを認識する処理は、原理的には、後続のステップ102のマーカ認識・更新に係る処理の一部と同等の処理である。
【0103】
次に、CPU311は、現実空間を撮影した外側撮像部23と、仮想空間における仮想カメラとが、基準点であるマーカ60に対して同じ位置・姿勢をとるように設定する。そして、CPU311は、仮想カメラの特性(例えば、レンズ歪み、焦点距離、画角などのパラメータ)を、外側撮像部23に必要に応じて合致させる。このようにして、マーカ60を含む実空間画像に対応する現実空間と、仮想空間画像に対応する仮想空間との適切な重ね合わせが行われる。ここで行われる仮想カメラの設定は、原理的には、後続のステップ103の仮想カメラの位置の更新の処理の一部と同等の処理である。
【0104】
次いで、CPU311は、マーカ60を含む平面Π1に平行な位置関係となるように水面オブジェクト61を仮想空間に配置する(図4C参照)。図4Cは、仮想空間に配置される水面オブジェクト61の一例を示す。ここで、CPU311は、この水面オブジェクト61を示す3次元モデル(例えば、ポリゴンによるモデル)の表面に、外側撮像部23で撮影された画像をマッピングする。また、CPU311は、マーカ60を含む実空間を撮像した画像を、水面オブジェクト61の3次元モデルの表現にマッピングする。
【0105】
このように、CPU311は、仮想空間における仮想カメラと、外側撮像部23(実カメラ)とをマーカ60を基準に重ね合わせた位置関係とした上で、上述の撮像された画像を水面オブジェクト61を示す3次元モデル(ポリゴン)にマッピングする。これによって、あたかも実空間に水面が浮き出たようにユーザからは見える重畳的画像の合成が可能となる。ちなみに、撮像画像は、マッピングされることによって水面オブジェクト61の3次元モデルの形状に従い、一部は変形されて見える(例えば、マーカ60は、図4Cにおける、60aにより示される態様となる)。
【0106】
ステップ102では、CPU311は、外側撮像部23により得られた画像に基づいて、マーカ60の認識処理を行い、マーカ座標系の座標を更新する。
【0107】
ステップ103では、CPU311は、ステップ102において算出された更新座標に基づき、仮想カメラの位置・姿勢を更新する。後述するが、仮想カメラの位置・姿勢の更新は、CPU311がビュー行列(実空間画像におけるマーカの位置および姿勢に基づいて計算される仮想カメラの位置および姿勢を反映した行列)を算出することにより行われる。また、ステップ101と同様に、CPU311は、仮想カメラの特性(例えば、レンズ歪み、焦点距離、画角などのパラメータ)を、外側撮像部23に必要に応じて合致させ得る。
【0108】
これ以降、ステップ101からステップ103までの一連の処理の詳細を以下に説明する。まず、ステップ101およびステップ102で行われるマーカ認識処理について説明する。なお、ここで説明するマーカ認識処理は、ゲーム装置10が立体視可能な画像をユーザに提供する態様を前提として説明している。立体視を行うことを必要としない場合、当業者は、以下の記載から立体視を行わない場合におけるマーカ認識処理についても具体的に理解し得る。
【0109】
前述のように、上側ハウジング21において、外側撮像部(左)23aと外側撮像部(右)23bとの間には、一定の間隔(例えば3.5cm)が存在する。したがって、外側撮像部(左)23aと外側撮像部(右)23bによって同時にマーカ60を撮像した場合、図7に示すように、外側撮像部(左)23aによって撮像された左実空間画像におけるマーカ60の位置および姿勢と、外側撮像部(右)23bによって撮像された右実空間画像におけるマーカ60の位置および姿勢との間には、視差によるずれが生じる。CPU311は、左実空間画像および右実空間画像の少なくとも一方に対してマーカ認識処理を行う。
【0110】
例えば、左実空間画像に対してマーカ認識処理を行う場合には、CPU311は、パターンマッチング手法等によって左実空間画像にマーカ60が含まれているか否かを判断し、左実空間画像にマーカ60が含まれている場合には、左実空間画像におけるマーカ60の位置および姿勢に基づいて、左ビュー行列72Lを算出する。なお、左ビュー行列72Lは、左実空間画像におけるマーカ60の位置および姿勢に基づいて計算される左仮想カメラの位置および姿勢を反映した行列である。
【0111】
より正確には、図8に示すように、左ビュー行列72Lは、仮想空間におけるマーカ座標系(実空間におけるマーカ60の位置に対応する仮想空間内の所定点を原点とした座標系)で表された座標を、左実空間画像におけるマーカ60の位置および姿勢に基づいて計算された左仮想カメラ80L(実空間の外側撮像部(左)23aに対応する仮想空間内の仮想カメラ)の位置および姿勢を基準とした左仮想カメラ座標系で表される座標へと変換するための座標変換行列である。
【0112】
さらに、右実空間画像に対してマーカ認識処理を行う場合には、CPU311は、パターンマッチング手法等によって右実空間画像にマーカ60が含まれているか否かを判断し、右実空間画像にマーカ60が含まれている場合には、右実空間画像におけるマーカ60の位置および姿勢に基づいて、右ビュー行列72Rを算出する。なお、右ビュー行列72Rは、右実空間画像におけるマーカ60の位置および姿勢に基づいて計算される右仮想カメラの位置および姿勢を反映した行列である。
【0113】
より正確には、図9に示すように、右ビュー行列72Rは、仮想空間におけるマーカ座標系(実空間におけるマーカ60の位置に対応する仮想空間内の所定点を原点とした座標系)で表された座標を、右実空間画像におけるマーカ60の位置および姿勢に基づいて計算された右仮想カメラ80R(実空間の外側撮像部(右)23bに対応する仮想空間内の仮想カメラ)の位置および姿勢を基準とした右仮想カメラ座標系で表される座標へと変換するための座標変換行列である。
【0114】
なお、マーカ認識精度に誤差が全く無く、かつゲーム装置10に対する外側撮像部(左)23aおよび外側撮像部(右)23bの取付け精度に誤差が全くないと仮定すると、右実空間画像のマーカ認識結果から計算される右仮想カメラ80Rの位置は、左実空間画像のマーカ認識結果から計算される左仮想カメラ80Lの位置を、左仮想カメラ座標系のx軸方向に沿って一定距離だけずらした位置となり、右実空間画像のマーカ認識結果から計算される右仮想カメラ80Rの姿勢と左実空間画像のマーカ認識結果から計算される左仮想カメラ80Lの姿勢は同じとなる(すなわち、左仮想カメラ座標系のx軸,y軸,z軸が、右仮想カメラ座標系のx軸,y軸,z軸とそれぞれ平行となる)。
【0115】
しかしながら実際には、マーカ認識精度にも、ゲーム装置10に対する外側撮像部(左)23aおよび外側撮像部(右)23bの取付け精度にも誤差があるため、左実空間画像のマーカ認識結果から計算される左仮想カメラ80Lの位置および姿勢と、右実空間画像のマーカ認識結果から計算される右仮想カメラ80Rの位置および姿勢は、理想的な関係にはならない(例えば、左仮想カメラ80Lと右仮想カメラ80Rが近すぎたり、離れすぎたり、左仮想カメラ80Lの姿勢と右仮想カメラ80Rの姿勢が異なったりする)。よって、このようにして計算された左仮想カメラ80Lおよび右仮想カメラ80Rの位置および姿勢をそのまま用いて仮想オブジェクトを上側LCD22に立体表示する場合には、仮想オブジェクトが正常に立体視できないことがあり得る。そこで本実施形態では、一例として、図10に示すように、左実空間画像のマーカ認識結果から計算される左仮想カメラ80Lの位置および姿勢に基づいて、右仮想カメラ80Rの位置および姿勢を決定している。
【0116】
ステップ104において、CPU311は、イベント制御処理を実行する。具体的には、CPU311は、図6Bに示されるような一連の処理を行う。図6Bを参照して、イベント制御処理(ステップ201からステップ210まで)の一例の詳細を説明する。
【0117】
ステップ201において、CPU311は、釣竿オブジェクト62を仮想空間の所定位置に配置する。この釣竿オブジェクト62は、釣竿本体62a、釣糸部分62b、および釣針部分62cからなる。そして、釣竿オブジェクト62の釣竿本体62aは、例えば、図4Aに示されるように、ゲーム装置10を操作するユーザから見て、水面オブジェクト61よりも手前に配置される。CPU311が、上側LCD22において、釣竿オブジェクト61を仮想カメラ(すなわち、ユーザの視点側)からみて近位に位置づけることで、例えば、釣竿を持って前方に広がる水辺に対して釣針を投げいれる感覚をユーザに想起させることが可能である。この釣竿オブジェクト62は、ゲーム処理上、ユーザが操作することが可能なユーザオブジェクトである。ユーザは、ゲーム装置10を操作することで、仮想空間中で釣糸をのばし、釣針部分62cを水面オブジェクト61で示される領域に対して投げいれ、仮想的な水中空間に釣針部分62cを配置することができる。したがって、本ステップにおいて、CPU311は、ゲーム装置10に対するユーザの操作に応じた位置に、釣針部分62cの位置を更新する。
【0118】
ステップ202において、CPU311は、色情報取得処理を実行する。具体的には、CPU311は、図6Cに例示されるような色情報取得処理(ステップ301から307まで)を実行する。そして、CPU311は、この色情報取得処理を行うことで、マーカ60に対して所定の位置関係にある領域に対応づけられた色情報を取得し、取得された色情報を利用してステップ203以降の処理を行う。そして、CPU311は、ステップ203以降の一連の処理の結果に応じて、ゲーム装置10のユーザに提供される一連のイベントの生滅を制御する。ここで提供されるイベントとしては、代表的には、所定の仮想オブジェクトを仮想空間に配置および/または所定の仮想オブジェクトのゲーム装置10の表示領域への表示(仮想オブジェクトの仮想空間への提供)などが挙げられるが、これらに限定されない。
【0119】
ここで、図6Cを参照して、CPU311が、マーカ60と所定の位置関係にある領域に対応づけられた色情報を取得する過程(ステップ301から307まで)の一例を説明する。
【0120】
ステップ301において、CPU311は、本処理の制御用パラメータnの初期化を行う。具体的には、CPU311は、制御用のパラメータnの値を1に設定する。制御用パラメータnは、マーカ60と所定の位置関係にある代表点Gn(n=1〜8)、ならびにその代表点Gnの位置に基づいて規定される領域An(n=1〜8)への参照を制御するために使用されるパラメータである。
【0121】
ステップ302において、CPU311は、領域An(n=1〜8)に属する画素が有するRGB値の平均を算出する。具体的には、まず、CPU311は、取得された実空間画像において同定されたマーカ60に対応する部分の位置を基準にして、点Gnの位置を特定する。次いで、CPU311は、同定された点Gnの位置に基づいて規定され、所定の形状と面積とを有する領域Anに対応する実空間画像上の範囲を特定する。CPU311は、当該実空間画像上の範囲に含まれる画素が有するRGB値をそれぞれ取得し、その平均値を領域AnのRGBの平均値(RGB平均値の各要素(すなわち、R、G、およびBの値)は、例えば、0.0〜1.0の値で与えられる)とし、ゲーム装置10のメインメモリ32に記憶する。CPU311は、この領域AnのRGBの平均値を取得すると、次のステップ303に処理に進む。
【0122】
ステップ303において、CPU311は、ステップ302において算出されたRGBの平均値を、HSV形式に変換する処理を行う。具体的には、CPU311は、RGBからHSVへの一般的な変換手法を用いることで、本処理を達成し得る。例えば、上述のように得られた(領域Anの)RGBの平均値における各要素の値(以下、Rn、Gn、およびBn)が、0.0〜1.0の範囲の値で提供される場合を例にとり説明する。また、以下の説明において、変数MAXは、各要素の値を互いに比較した際の最大値であり、他方で、変数MINは、各要素の値を互いに比較した際の最小値である。RGBからHSVへの変換は、例えば、次の示す関係式で与えられる。
まず、色相Hnは、次の3通りの場合分けに従い与えられ得る。

(最大値MAXが、Rnの値で与えられる場合)
Hn=60×(Gn−Bn)/(MAX−MIN);
(最大値MAXが、Gnの値で与えられる場合)
Hn=60×(Bn−Rn)/(MAX−MIN)+120;
(最大値MAXが、Bnの値で与えられる場合))
Hn=60×(Rn−Gn)/(MAX−MIN)+240;

なお、上記数式を用いた変換によってHnが負の値となった場合、さらにHnに360を加算して色相Hnとする。
次に、彩度Snおよび明度Vnは、以下のような数式で変換される。

Sn=(MAX−MIN)/MAX;および
Vn=MAX

上記変換式を用いて、色相Hn、彩度Sn、および明度Vnを算出した場合、色相Hnが0.0〜360.0の範囲の値として提供され、彩度Snが0.0〜1.0の範囲の値として提供され、そして、明度Vnが0.0〜1.0の範囲の値として提供される。
【0123】
ステップ304において、CPU311は、ステップ303で得られたHSV形式の結果から領域Anが有する色の識別を行う。ここで、領域Anが有する色の識別処理は、代表的には、領域Anが有する色が、予め定められた特定色(例えば、赤色、青色、緑色、黄色など)のいずれに属するかを上述のHSVの情報に基づいて識別し、その領域Anに当該識別された色を、その領域Anが有する色として割り当てる処理である。しかしながら、他の実施形態において、この色識別処理は、上述の代表的な例に限られず、所定の色成分のみに情報に着目して領域Anが有する色として割り当てる処理を行ってもよい。また、別の実施形態において、この色識別処理は、所定の色成分の情報の組合わせに基づいて領域Anが有する色として割り当てる処理を行ってもよい。
【0124】
代表的な色の識別処理の一例を、以下に示す。具体的には、領域Anが、色相Hn、彩度Sn、および明度Vnを有する場合に、その値の組合わせに基づいて、領域Anが「赤色、緑色、青色、および黄色」の4つの特定色のうち、いずれの属性が割り当てられるかを決定する場合を説明する。当然ながら、特定色が必ずしも4色である必要はなく、任意の個数であってよい。
【0125】
この例では、CPU311は、まず、彩度Snおよび明度Vnが、一定の条件を満たしていることを前提として、その前提が満たされたもののみについて、色相Hnの値を基準として上記特定色(4色)を識別する対象とする処理を行う。この前提として用いられるこの彩度および明度に関する条件は、彩度Sn≧0.43であり;かつ明度Vn≧0.125であることである。
【0126】
そして、色相Hnの値が、一定範囲に収まった場合に、領域Anは、上記4色のいずれかの属性が与えられる。具体的には、色相Hnが、−5.0±15.0(0.0〜10.0および340.0〜360.0)の範囲の値である場合、領域Anは「赤色」であり;色相Hnが、60±15.0の範囲の値である場合、「黄色」である。色相Hnが120.0±60.0の範囲の値である場合、領域Anは「緑色」であり;色相Hnが220.0±25.0の範囲の値である場合、領域Anは、「青色」である。
【0127】
なお、本例においては、「黄色」に対応する値の範囲と「緑色」に対応する値の範囲とが一部重なっているが、この重なりの部分に属する値が与えられた場合は、CPU311は、次のように判定する。すなわち、判定対象となる値が、これらの2色の基準値(「黄色」については、60であり;「緑色」については、120.0である)のいずれに近い値であるかをCPU311は判定し、判定対象の値からより近い基準値に対応する属性(すなわち、「黄色」または「緑色」)を判定結果として採用する。例えば、色相Hnの値が70の場合には、「黄色」の基準値がより近い基準値であるので、このHnを有する領域Anは、「黄色」と判定される。なお、本例で示された具体的な値の範囲は、一例であって、別の実施形態においては、別の値の範囲、判定基準を使用してもよい。
【0128】
上述のような識別処理をなすことによって、次のような効果が提供され得る。すなわち、複数の色が、観測者(プレイヤ)の肉眼による観察では類似した色(例えば、両方とも「赤色」)として知覚される場合であって、撮像部を介した識別処理では、一方が「赤色」として認識され、他方は、「青色」と認識されると言った状況を回避し得る。これにより、ゲーム装置10の色識別処理の利用においてユーザを混乱させてしまうといった問題を回避し得る。
【0129】
なお、上述のように、CPU311が、RGB情報を、HSV情報に変換した上で色識別を行う際に、CPU311は、変換されたHSV情報のみに基づいて色識別を行わずに、その変換される前のRGB情報も併用する色識別を行ってもよい。
【0130】
例えば、まず、CPU311は、領域Anが有するRGB情報から変換されて得られたHSV情報のみに基づいてその領域Anの色属性(色成分およびその組合わせ)についての識別を行い、これとは別に、変換前のRGBの情報の各要素の値から、領域Anが有する色属性を識別する。そして、CPU311は、両方の識別の結果が合致した場合に、領域Anに当該合致した結果に基づいて色属性を与えるが、合致しない場合は、いずれの色属性も与えない。これにより、色識別における精度をさらに高めることが可能である。
【0131】
本ステップ304で識別され、領域Anの属性として割り当てられた色情報は、後続のステップにおいてゲーム処理の過程のイベントの制御を行うためのパラメータとして利用される。ステップ304の処理の後、CPU311は、ステップ305の処理を行う。
【0132】
ステップ305において、CPU311は、ステップ304の処理の結果から、イベント制御処理(図6B)のステップ203以降の処理に使用される色情報ならびに必要に応じた付加情報の抽出を行う。具体的には、CPU311は、ステップ304で得られた色情報とともに、領域Anの位置情報(実空間画像上の位置など)を取得し得る。
【0133】
ステップ306において、CPU311は、制御用パラメータnが所定の上限値nmaxに達しているか否かを判定する。具体的には、例えば、図4Fで示されている例のように、マーカ60の色識別のための代表点Gnが、マーカ60の周りに8点与えられ、そのGnに対応して領域Anが規定されるのであれば、パラメータnの上限値nmaxは、8となる。なお、本実施形態では、マーカ60の周囲に定義する代表点およびその代表点に基づいて規定される領域の個数を、それぞれ、8つとしたが、他の実施形態において、その個数は、別の個数であってもよい。
【0134】
ステップ307において、CPU311は、制御用パラメータnとして記憶されている値を1だけ増加させる。そして、CPU311は、ステップ302の処理に戻る。
【0135】
以上のように、CPU311は、図6Bのステップ202の色情報取得処理(ステップ301から307までに規定された一連の処理)を行った後、ステップ203(図6B)の処理を行う。
【0136】
ステップ203において、CPU311は、ステップ202の処理において得られた一群の色情報に基づいて、イベント発生条件のいずれかを満たすか否かを判定する。代表的な例では、ゲーム装置10は、色情報取得処理(ステップ202)で得られ得る色情報と対応づけられた所定のイベント群を予め規定している。より具体的な例を参照しつつ説明する。領域Anの各々について、上述のように(1)赤色、(2)緑色、(3)青色、または(4)黄色のいずれが色属性として割り当てられるか、または(5)いれずれの属性も割り当てられていない5つの場合が、領域Anの色属性に関して想定される場合であるとする。代表的な例では、色情報取得処理(ステップ202)において、前者の4つの場合において所定のイベントと上述の特定色が、1対1で関連づけられる。すなわち、上記4色のうちいずれかの色属性が、領域Anにおいて割り当てられていた場合に、所定のイベントを発生するとする。
【0137】
ここで定義づけられているイベントとしては、ゲーム処理の過程で提供可能ないずれのイベントであってもよい。代表的な場合では、このイベントとしては、仮想オブジェクトの仮想空間への配置および/または仮想オブジェクトの(ゲーム装置10の)表示領域への表示(仮想オブジェクトの仮想空間への提供)が挙げられるが、この例に限られない。より具体的には、例えば、領域Anの色属性として規定される、赤色、緑色、青色、および黄色が、それぞれ、仮想オブジェクトA、仮想オブジェクトB、仮想オブジェクトCおよび仮想オブジェクトDを仮想空間に発生させる条件として機能し得る。ここで、演出上、例えば、出現する仮想オブジェクトがそれの形状モデルの外観に有する色と、その発生条件となっている色とを対応づけてもよいが(例えば、赤色が領域Anが有する色属性として識別されていた場合に、赤色の魚型オブジェクトを配置するというイベントを対応づけること)、この例に限定される必要はない。
【0138】
また、イベントの発生条件は、領域Anが所定の色情報を有しているという条件だけでなく、別の条件を組合わせて設定されてもよい。この別の条件を組合わせた例としては、以下のものならびにそれらの組合わせが挙げられるが、これらに限定されるものではない。
【0139】
例えば、領域Anのうち、所定個数(例えば、2箇所)以上において、CPU311が、それぞれの領域Anで同一の色属性を有しているとして識別されたときに、イベントの発生を行うように設定してもよい。このときの領域Anが、所定個数の存在が確認されることのみをイベント発生条件としてもよいが、同一の色属性を有するとして識別された領域Anの位置関係なども組合わせてイベント発生条件としてもよい。
【0140】
より具体的には、例えば、同一の色属性を有するとして識別された領域Anが、マーカ60の外周上の配置において隣り合っている位置関係にあることを識別することが考えられる。また、別の例では、同一の色属性を有するとして識別された領域Anのいずれか2つが、マーカ60の外周上の同じ辺の上に配置されて隣合っている位置関係にあることを追加的に識別してよい。このような位置関係については、CPU311が、ステップ305(図6C)などで取得した情報に基づいて識別する。
【0141】
なお、CPU311が、所定数以上の領域Anで第一の色属性を認識し、これと並行して、所定数以上の別の領域Anで上述の第一の色属性とは異なる第二の色属性が認識された場合は、CPU311は、次のような処理を行ってもよい。すなわち、このような場合は、CPU311は、そこで認識されているいずれの色属性も領域Anに割り当てないとして処理することが可能である。また、別の例では、CPU311は、そこで認識されているいずれかの色属性(または、第三の色属性(例えば、第一の色属性と第二の色属性とを比較したときに、その表色系で中間の位置づけられる色属性など))を優先的に全ての領域Anに割り当てる処理をすることも可能である。
【0142】
さらに、イベント発生条件は、経時的要素を含んでもよい。具体的には、領域Anまたはその組合わせの色属性が所定の1フレーム分(描画単位)の画像にのみ認められたことをもってCPU311が、その領域Anの色属性を識別するのではなく、特定のフレーム数(例えば、30フレーム)の画像に連続して認められた場合に、はじめて、イベント発生条件を満たしたと判定するとしてもよい。CPU311が特定の色属性を認識している状態が所定時間(所定のフレーム数)継続している場合に、CPU311が、その色属性に応じたイベントを仮想空間に提供することによって、より安定したイベントの提供を達成することが可能となる(色の識別の誤りの影響を受けにくくなる)。
【0143】
また、ここで、「連続して」とは、完全に連続した場合の他に、(時間軸にそって)局所的に見た場合にその連続性が断絶していても大局的にみて連続している場合は、「連続して」いる状態として扱ってもよい(例えば、特定の31フレームを取り出した場合を例にとって、次のような条件を想定してもよい。例えば、次のような場合は、実質的に「連続している」とみなして処理してもよい:CPU311が、前半の15フレームにおいて連続して領域Anに所定の色属性を認識し、その直後の1フレームで領域Anに当該色属性が見出されず、その直後の15フレームにおいて、前半の15フレームと同一の色属性として割り当てられた場合)。
【0144】
このようにして、ステップ203では、CPU311は、イベントの発生条件のいずれを満たしているか否かを判定する。そして、CPU311が、イベントの発生条件が満たされていると判定した場合(ステップ203、Yes)、ステップ207の処理に進む。他方、CPU311が、イベントの発生条件が満たされていないと判定した場合(ステップ203、NO)、ステップ204の処理に進む。
【0145】
ステップ204において、CPU311は、現在進行中の所定のイベントが存在するか否かを判定する。ゲーム装置10のゲーム処理の過程では、多数のイベント(イベントが開始されるタイミング、終了するタイミング、継続する時間の長さ、繰り返し生じる場合の頻度などの違いによる広範なバリエーションも含む)が管理されている。CPU311は、そのうちのイベントのいずれかがその時点で進行中であるか否かを判定する。そして、CPU311が、進行中のイベントの存在を確認した場合(ステップ204,Yes)、ステップ205の処理に進む。他方、CPU311が、進行中のイベントの存在を確認できなかった場合(ステップ204,No)、CPU311は、ステップ210の処理に進む。
【0146】
ステップ205において、CPU311は、ステップ202の処理において得られた一群の色情報に基づいて、現在進行中のイベントのいずれに対応するイベント消滅条件が満たされているか否かを判定する。
【0147】
具体的には、ステップ204において進行中であるとして判定されたイベントのいずれが、イベント消滅条件を満たしているか否かを判定する。ここで用いられるイベント消滅条件は、代表的には、ステップ202で得られた、領域Anが有する色属性またはその組合わせ、あるいはそれらと別の付加的情報の組合わせに基づいて判断される条件である。より具体的には、CPU311が、領域Anが所定の色属性を割り当てられたことにより所定のイベントを仮想空間において発生させた(例えば、仮想オブジェクトAを発生させた)後に、所定時間(フレーム)の間にわたってCPU311が領域Anに当該色属性を割り当てられないときに、CPU311は、そのイベントを仮想空間から消去し得る。
【0148】
なお、ステップ203におけるイベント発生条件と同様、イベント消滅条件も、領域Anの個数に関する条件(例えば、CPU311が所定個数以上の領域Anで色属性を認識していれば、一部の領域Anで当該色属性の認識がなされていない場合であっても、CPUは、色属性を認識していると見なし得るなどの条件)、領域Anの位置的な情報および別の経時的要素などとの任意の組合わせにより、定義づけられてもよい。
【0149】
ステップ206において、CPU311は、イベント消滅条件を満たしたイベントの消滅処理(例えば、仮想オブジェクトの仮想空間からの消去、ゲーム装置10の表示領域への表示の中止)を含むイベント間調整処理を行う。具体的には、複数のイベントの生成および/または消滅が、ゲーム処理の過程上、不整合な結果とならないように当該生成および/または消滅の実行及びタイミング等を調整する処理を、CPU311が行う。これは、並行して生成、消滅等が起こりえるイベント同士について、予め処理手順を規定して、CPU311が、刻々と変わる状況を反映して当該処理を行うことで、達成され得る。
【0150】
ステップ207において、CPU311は、現在進行中のイベントが存在するか否かを判定する。CPU311が、進行中のイベントの存在を確認できなかった場合(ステップ207,No)、CPU311は、ステップ208の処理に進む。他方、CPU311が、進行中のイベントの存在を確認した場合(ステップ207,Yes)、ステップ209の処理に進む。
【0151】
ステップ208において、CPU311は、ステップ203においてイベント発生条件を満たしたイベントの発生処理(例えば、仮想オブジェクトの仮想空間への配置、ゲーム装置10の表示領域への表示など)を行う。具体的には、CPU311は、イベント発生条件を満たしたイベントを、所定のタイミングで行う。
【0152】
ステップ209において、CPU311は、ステップ203においてイベント発生条件を満たしたイベントの発生処理を含むイベント間調整処理を行う。具体的には、ステップ206と同様に、複数のイベントの生成および/または消滅が、ゲーム処理の過程上、不整合な結果とならないように当該生成および/または消滅の実行及びタイミング等を適当なものとする処理である。
【0153】
ステップ210において、CPU311は、本イベント制御処理を継続するか否かを判定する。具体的には、CPU311は、ステップ206、ステップ208またはステップ209のいずれかにおいて発生または消滅したイベントの条件(例えば、イベント発生の持続時間)、または、その他のゲーム処理上の設定(例えば、ゲーム処理開始からの経過時間など)を判定して、このイベント制御処理を継続するか否かを判定する。CPU311が、イベント制御処理を継続するべきと判定した場合(ステップ210、Yes)、ステップ201の処理に戻る。他方、CPU311が、イベント制御処理を継続するべきとしない場合(ステップ210、No)、このイベント制御処理を終了し、ステップ105の処理(図6A)に進む。
【0154】
以上のように、ステップ104のイベント制御処理(ステップ201からステップ210までに規定された一連の処理)を行った後、ステップ105(図6A)の処理を行う。
【0155】
ステップ105において、CPU311は、投げ入れられた釣竿オブジェクト62の釣針部分62cに、魚オブジェクトが釣針にかかっている状態(「魚(オブジェクト)が釣針部分にかかっている状態」)である否かを判定する。この「魚オブジェクトが針部分にかかっている状態」は、実環境で行われる釣りにおいて魚が釣針をくわえ込んだ状態であって、その魚が釣り上げられる(引き上げられる)前の状態を模したゲーム処理上定義された内部状態である。初期状態またはゲーム処理進行上、釣針部分62cに魚オブジェクトはかかっていない場合(ステップ105 No)は、CPU311は、後続のステップ106の処理を行う。他方、後続のステップ109でCPU311が「釣針部分にかかっている状態」であるとして設定した後に、ステップ105の判定が行われると(ステップ105 Yes)、CPU311は、その後、ステップ112の処理を行う。
【0156】
ステップ106において、CPU311は、釣竿オブジェクト62の釣針部分62cが、マーカ60の位置情報等をもとに規定された水面オブジェクト61よりも下に位置するか否かを判定する。配置された仮想オブジェクトのそれぞれについて、所定の座標系(例えば、マーカ座標系)における座標(例えば、各オブジェクトのy座標)を取得し、それらを比較することにより、当該判定を行う。ここで、釣針部分62cが、水面(すなわち、水面オブジェクト61に基づいて規定される仮想面)よりも下(すなわち、「水中側」の空間)に位置すると判定されたとき、CPU311は、ステップ107の処理に移行する。
【0157】
ステップ107において、CPU311は、魚オブジェクト(例えば、魚影63または64に対応する仮想オブジェクト)が釣針部分62cをつついている状態にあるか否かを判定する。ここで、「魚オブジェクトが釣針部分をつついている」状態とは、後続の処理で魚の引上げ(釣り上げ)条件の判定処理に入ることが可能な状態であって、実際の釣りで標的となり得る魚が仕掛けられた釣針に食いつこうとする過程をゲーム処理において表現している内部状態である。
【0158】
具体的には、水面下に投じられた釣針部分62cと、引上げ候補である魚オブジェクトとの距離が所定の範囲に収まったときに、CPU311は、引上げ条件の判定を行うことのできる状態(すなわち、魚オブジェクトが釣針部分をつついている状態)にあると判定(ステップ107)する。そして、その引上げ候補である魚オブジェクトと釣針部分62cとの距離が、所定の範囲に収まっている間、CPU311は、上側LCD22に表示される釣針部分62cを、その魚オブジェクトに対応する魚影が一定間隔で釣針部分62cをつついている様子に対応する画像を(ステップ115における描画処理で)表示する。
【0159】
なお、CPU311は、この処理の過程で、「魚オブジェクトが釣針部分をつついている」状態の解除条件を設定し得る。すなわち、仮に、ある時点で、釣針部分62cと、魚オブジェクトとの距離が所定の範囲に収まっていたとしても、所定時間が経過する前に、後述する「引上げ条件」が成立しない場合、CPU311は、ゲーム処理上の内部状態を、この「魚オブジェクトが釣針部分をつついている状態」から強制的に解除し得る。この強制的な解除が成立すると、このステップ107において、「魚オブジェクトが釣針部分をつついている状態」とはみなされず(ステップ107、No)、後続のステップ115の描画処理では、ユーザに対しては魚が逃げる態様の演出が行われる。したがって、いったん、「魚オブジェクトが釣針部分をつついている」状態がゲーム処理において成立しても、所定時間内に、引上げ条件を成立することができなければ、ユーザは魚を釣り上げることはできない。
【0160】
なお、「魚オブジェクトが釣針部分をつついている」状態の判定においては、釣針部分62cと、引上げ候補である魚オブジェクトとの距離を計算する。ここで、このような距離計算の例示的な方法について説明をするが、これに関連して、まず、魚影を水面オブジェクト61上に表示する方法について説明する。
【0161】
前述のように、CPU311は、図4Aに示されるように、魚影63および64を水面オブジェクト61に表示する。水面オブジェクト61の仮想空間での形状は、3次元モデル(ポリゴン)により規定される。そして、本実施形態において、CPU311は、外側撮像部23により撮影された画像を当該ポリゴンにマッピングすることで、実空間においてあたかも水面が生じたような重畳画像を生成する。ここで、CPU311は、魚影63および64を、その魚影を示すためのテクスチャと、上述のマッピングされる実空間の画像とをブレンドさせて、ポリゴン上で表示することにより表現することができる。
【0162】
ユーザがゲーム装置10の移動操作をすることによって仮想空間内で投入された釣針部分62cが、水面オブジェクト61よりもマーカ座標系におけるy軸負方向に位置づけられるとき(すなわち、ステップ106において、Yesの場合)、CPU311は、この釣針部分62cと、CPU311がランダムに生成した魚オブジェクトとの距離または、これと同等と見なされる距離を計算する。
【0163】
CPU311がこの距離計算を行う際、CPU311は、魚オブジェクトを配置する位置および釣針部分62cの位置を取得すればよく、必ずしも、この段階において、そこに配置する魚オブジェクトの3次元形状を示すモデルを割り当てる必要はない。
【0164】
具体的には、本実施形態において、CPU311が後述のステップ112の処理を行うまでは、CPU311は、標的である魚オブジェクトに、仮想空間内の位置を示す代表点を与え、その魚オブジェクトに対応する3次元モデルを用いた描画処理をおこなっていない。ここで、図4Dを参照する。図4Dは、図4Aで例示された仮想空間における仮想オブジェクトおよび仮想カメラの位置関係を、模式的に示すための図である。図4Dに示された例でいえば、CPU311は、平面Π2(仮想面Π1と平行な仮想面であって、釣針部分62cの仮想空間上の点Pを含む平面)上に、任意の点を、魚オブジェクトの位置としてランダムに割当てることが可能である。そして、本例では、CPU311は、点63aおよび点64aを、魚オブジェクトが配置される位置として割り当てる。この位置の割当て手法は、例えば、所定の分布を有する乱数の集合を用いて割り当てることが可能である。
【0165】
そして、点63aおよび点64aに対応させるように、水面オブジェクト61の表面にマッピングされる撮像画像に対して、所定のテクスチャ(例えば、黒などの単一の純色(例えば、黒色)を有するテクスチャ、または、平面Π1と平面Π2との距離に応じて一定の色の濃淡を割り振ったテクスチャ)をブレンド(例えば、アルファブレンディング)することで、CPU311は、魚影を表現し、ユーザに対して水面オブジェクト61により規定される水面の下に魚が存在するような表現を提供することができる。
【0166】
図4Dで示される例の場合、「魚オブジェクトが釣針部分をつついている」状態であるか否かの判断は、釣針部分62cの平面Π2上の点Pの座標と、点63aまたは点64aとの間の距離が、所定の範囲に収まった場合に、当該状態にあると判断することにより実行される。なお、本例では、平面Π2を想定した手法を用いたが、CPU311が、平面Π2を用いずに、ステップ107の処理を行ってもよい。すなわち、CPU311は、仮想空間に配された水面オブジェクト61の表面(または近似的に平面Π1)上に直接、魚影の位置をランダムに規定し、次いで、釣糸部分62bと水面オブジェクト61の表面との交点(Π2を用いる場合の点Pに対応)と、水面オブジェクト61上に配された魚影の位置を示す点との間の距離を、計算してもよい。
【0167】
ところで、ゲーム装置10で提供されるゲームの進行に伴い、ユーザがゲーム装置10を大きく動かしすぎて、マーカ60が外側撮像部23の撮影可能範囲から逸脱するといった状況が生じ得る。CPU311は、上側LCDに提示する魚影の位置を一定領域に制限することにより、外側撮像部23の位置・姿勢を、マーカ認識処理を行う上で都合のよい状態に誘導することができる。
【0168】
具体的には、CPU311は、仮想空間におけるマーカ60と仮想カメラとの間の領域に魚影が生じるように、またはその傾向が高くなるように、魚オブジェクトを配置し得る。例えば、図4Eは、魚影が現れる領域(図中、斜線部)を制限する態様の一例を示した模式図である。点線で示した位置は、マーカ60の位置である。また、図4Eにおける矢印記号示す方向は、仮想カメラ(外側撮像部23)の方向を示している。CPU311が、ランダムに魚オブジェクトの配置をする際に、斜線領域に魚影が高い頻度で出現するように、当該配置を制御すればよい。
【0169】
図6Aに戻り、ステップ107よりも後続の処理について説明する。「魚オブジェクトが釣針部分をつついている」状態が成立すると(ステップ107、Yes)、CPU311は、魚オブジェクトが引き上げ可能か否かを判定する処理(ステップ108)を行う。
【0170】
ステップ108において、CPU311は、次のような条件の判定を行い得る。引上げ条件は、(A)外側撮像部23とマーカ60との相対的位置に基づき規定される釣竿オブジェクト62の仮想空間内での移動量(ゲーム装置10がマーカ60に対して移動した量を反映する量)が一定値に達すること、または(B)この移動量が一定値に達してない場合であっても、外側撮像部23による撮像画像に対するマーカ認識において、マーカ60が検出されなかったことである。このいずれか条件を充足したときに(ステップ108において、Yes)、CPU311は、ユーザが魚を釣り上げた状態であると判定し、後続のステップ109に進む。他方、引上げ状態が成立しない場合(ステップ108において、No)、CPU311は、ユーザのゲーム装置10への入力操作等に基づいてオブジェクトの位置・姿勢の更新を行う処理(ステップ110)を行う。
【0171】
引上げ条件(A)についてより詳細に説明する。ゲームの進行(例えば、魚が釣針をつついている状態にある)にあわせて、ユーザは、把持したゲーム装置10(図4Aを参照)をマーカ60に対する相対的な位置が変化するように、(例えば、引上げようとする動作によって)移動させる。CPU311は、ゲーム処理上の所定の間隔(例えば、1フレーム)の間に、このユーザの操作により釣針部分62cが仮想空間内で移動した量(例えば、マーカ座標系におけるy軸正方向にそって移動した距離)を、引上げ条件の判定対象である移動量として使用することが可能である。
【0172】
つまり、上記移動量は、ユーザがゲーム装置10に対して操作を行った結果として得られる。ユーザが所定のアクション(例えば、魚を釣り上げようとしてゲーム装置10)を釣竿の一部とみなして上方に引き上げるアクション)により、ゲーム装置10自体をマーカ60に対して移動した場合、CPU31は、マーカ認識・座標更新(ステップ102)、仮想カメラの位置の更新(ステップ103)を介して得られる位置情報に基づき、実空間におけるユーザが行ったアクションを規定する物理量を、仮想空間における変化量(例えば、仮想オブジェクトの並進移動距離など)として割り当てることが可能である。例えば、釣針部分62cが、仮想空間において、図4Dに示すような位置に釣針部分62cが配置されている場合であって、その後、いずれかの魚オブジェクトが釣針部分62cにかかった状態になったとき、CPU311は、ユーザの操作により釣針部分62cがy軸正方向にそって移動した際の平面Π2からの距離(Δy)を、引上げ条件の判定対象である移動量として使用することが可能である。
【0173】
他方、引上げ条件(B)は、この移動量が所定値に達してない場合であっても、外側撮像部23による撮像画像に対するマーカ認識において、マーカ60が検出されない場合である。この条件は、ゲーム装置10を把持するユーザによるアクションの結果、当該移動量が上記所定値を超えているにもかかわらず、アクションが大きかったためにマーカ60の認識がうまくいかなくなるような場合を回避するための条件である。
【0174】
次に、ステップ109では、CPU311は、ゲーム進行状態の内部状態を、魚が針にかかっている状態として設定する。この設定を保持した状態で、ゲーム終了のための入力が行われるなどの終了条件(後続のステップ111を参照)とならずに、ゲーム処理が継続すれば、CPU311は、前述したステップ105において「魚(オブジェクト)が針(部分)にかかっている状態」と判断し(ステップ105、Yes)、ステップ112に進む。
【0175】
なお、ステップ111において、CPU311は、終了条件を満たしているか否かを判定する。この終了条件は、ゲーム処理の状況に応じて、ゲーム装置10に対する入力操作に割り振ってあるアクションを、ユーザがとったときに満たされるものとして設定され得る。例えば、このアクションは、ユーザが、ゲーム装置10における所定のボタン(例えば、スタートボタン14L、または電源ボタン14Fなど)を押圧操作し、ゲーム処理の終了操作を選択し得るメニュー表示に対して、終了とすることを選択することが挙げられるが、これに限定されない。
【0176】
ステップ112において、CPU311は、針の先に魚オブジェクトを配置する。本実施形態においては、例えば、図4Dの位置63aに想定する魚オブジェクトに対して、本ステップよりも上流の処理では、具体的な3次元モデル(ポリゴン)を与えた処理を行わなかった。ステップ112では、ユーザが、実際の釣り人が釣りの過程で魚を水上に引き上げる際に感じる魚の存在感を得るために、魚オブジェクトの引上げに際して、3次元オブジェクトを釣針部分62cの先に配置する。その後、CPU311は、次のステップ113に進む。
【0177】
ステップ113において、CPU311は、魚オブジェクトを水面より上げた状態か否かを判定する。このステップでは、CPU311は、ステップ108で行った移動量の算出・評価処理と同様の処理を行う。例えば、CPU311は、本ステップの直近の状態でゲーム装置10の移動量(例えば、y座標系に沿った移動量)が所定値以上であれば、「魚オブジェクトを水面より上げた」として判断し(ステップ113、Yes)、その後のステップ114の処理を行うことができる。他方、CPU311が、ステップ113において「魚オブジェクトを水面より上げてない」と判断した場合は、後続のステップ110の処理を行う。
【0178】
ステップ114において、CPU311は、魚オブジェクトを獲得したことを示す演出を行う。CPU311は、ステップ112で配置された3次元モデルを用いた演出を行う。
【0179】
ステップ115において、CPU311は、描画処理を行う。CPU311は、ゲーム処理上の内部状態に応じて、ゲーム装置10の記憶領域に記憶された手順に従い、ユーザに対してゲーム用の画像を表示する。
【0180】
(第1の実施形態によって奏される効果の一例)
本発明の画像処理プログラム等は、現実空間を撮像した画像のうちマーカに対応する画像以外の部分から色情報を抽出して利用することで、ゲームとして表現にこれまでに以上の広がりを持たせて、興趣性を向上を提供し得る。
【0181】
例示した実施形態において示されるように、色情報を識別するための画素の位置(領域An)が、特定対象物としてマーカの近傍に設定されることは、当該マーカを撮像する場合に自然とその周辺も撮像することになるため、安定した色識別処理が行われる状態を維持することが可能となる。
【0182】
例示した実施形態において示されるように、色情報を識別処理している状態が所定の時間継続した場合に、色情報に応じた仮想オブジェクトを仮想空間に提供することによって、色の誤識別処理によって意図せず仮想オブジェクトが出現してしまうことを防止することが可能となる。
【0183】
例示した実施形態において示されるように、仮想オブジェクトを提供した後に、色情報を識別処理していない状態が所定の時間継続した場合に、仮想オブジェクトを消去することで、色の誤識別処理によって意図せず仮想オブジェクトが消えてしまうことを防止することが可能となる。
【0184】
また上述の釣りゲームで実装された例示的な本実施形態の構成により、あたかも魚や釣竿が現実空間上に存在し、ゲーム装置10の本体に釣竿が接続されてそこから糸を水面に垂らしているような感覚をユーザに喚起することができる。そのため、ゲーム装置10を操作しながら、釣りゲームを行う際に、没入感、実在感などいった感覚を、従来のゲーム装置に比べて増強することができる。
【0185】
より具体的には、本実施形態のゲーム装置10において、実空間画像と仮想空間画像とを融合して重畳的な画像を生成するためのビジュアルマーカ(マーカ60)を基準に設定される仮想面(水面オブジェクト61)に対して、プレイヤオブジェクト(釣竿オブジェクト62)が仮想カメラ側の仮想空間(水上側の空間)に配置され、他方で、ノンプレイヤオブジェクト(魚オブジェクト)が、水上側の空間と隣り合い、それと仮想面によって隔てられるように規定される「水中側の空間」に配置される。このような構成のもと、ユーザは、ゲーム装置10に一体となった表示装置(上側LCD22)に表示される上述の重畳的な画像を視覚で捉えながら、ゲーム装置10本体を把持し、マーカ60を撮像する外側撮像部23その本体全体をマーカ60に対して相対的に移動操作することで、ゲームに参加する。そのため、没入感、実在感などいった感覚が従来より増強された態様でそのユーザに喚起され得る。
【0186】
また、ゲーム装置10は、そのゲーム処理において、プレイヤオブジェクトまたはノンプレイヤオブジェクトのいずれかまたはその両方を、仮想面に対する位置関係を変化させる。これによって、さらに、没入感、実在感などいった感覚が増強された態様でそのユーザに喚起され得る。
【0187】
また、上述のように、魚影を、水面オブジェクト61にマッピングされた撮像画像(不透明な画像)に所定のテクスチャをブレンドすることで表現する手法によって、水面下に想定される一群の魚オブジェクトを逐次的に3次元モデル(ポリゴン)を用いて描画することを回避し得る。これによって、ゲーム処理にかかる負荷を大きく低減しつつも、釣りを行う過程で釣り人が水辺で得る感覚を喚起することができる。
【0188】
ところで、従来、透過処理を用いて水面下に配置された3次元モデルが与えられた魚オブジェクトの魚影の表現しようとする場合であって、特に、実空間の画像と合わせて重畳的な画像を生成しようとするとき、水深の大きな領域(例えば、海底、湖底に対応する領域や、入射する可視光が行き届かない領域など)のよりリアルな描写と、仮想オブジェクトを実空間で撮像した画像にシームレスな態様で合成することとを両立することに困難が生じていた。しかし、上述の例示的な実施形態で使用する手法を用いれば、水深の大きな領域の描画に関する問題により拘束されずに、透過処理がなされない不透明な実空間画像を用いても、表面波を有する水面を、必要に応じて魚影を描画しつつ表現することが容易なものとなる。
【0189】
(変形例等)
また、上記実施形態では、実空間画像に含まれるマーカ60の位置および姿勢を認識して、その認識結果に応じて実空間画像に仮想オブジェクトを合成しているが、他の実施形態では、マーカ60に限らず、任意の認識対象の位置および/または姿勢を認識して、その認識結果に応じて実空間画像に仮想オブジェクトを合成してもよい。認識対象の一例として、人物の顔が挙げられる。
【0190】
また、上記実施形態では、外側撮像部23によってリアルタイムに撮像される実空間画像に基づいて上側LCD22に立体画像を表示しているが、他の実施形態では、外側撮像部23や外部のステレオカメラ等によって過去に撮像された動画像データに基づいて上側LCD22に立体画像を表示するようにしてもよい。
【0191】
また、上記実施形態では、外側撮像部23がゲーム装置10に予め搭載されているが、他の実施形態では、ゲーム装置10に着脱可能な外付け型のカメラを利用してもよい。
【0192】
また、上記実施形態では、上側LCD22がゲーム装置10にあらかじめ搭載されているが、他の実施形態では、ゲーム装置10に着脱可能な外付け型の立体視ディスプレイを利用してもよい。
【0193】
また、上記実施形態では、ゲーム装置10を用いて実空間画像に仮想オブジェクトを合成表示しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例えば、PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ等)を用いて実空間画像に仮想オブジェクトを合成表示してもよい。
【0194】
また、上記実施形態では、一台の装置(ゲーム装置10)のみによってゲーム処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行するようにしてもよい。
【0195】
なお、汎用的なプラットフォームにおいて本発明の画像処理プログラム等が使用される場合には、当該画像処理プログラムが、当該プラットフォームにおいて標準的に提供されるプログラムモジュールを用いることを前提として提供されてもよい。上述のようなモジュールによって機能が補完されることを前提に、上記画像処理プログラムから上述のようなモジュールに対応する機能を除いたものは、実質的にこの画像処理プログラムに相当すると理解されるべきである。
【0196】
また、本実施形態においては、外側撮像部23により撮像したカメラ画像と仮想オブジェクト(例えば、水面オブジェクト61など)とを重ね合わせて上側LCD22に表示させるビデオシースルー方式を説明したが、本発明はこれに限定されない。例えば、光学シースルー方式を実現する構成であってもよい。光学シースルー方式は、少なくとも撮像部を備えたユーザの頭部に装着する表示装置(以下、ヘッドマウンドディスプレイ)を用いる。ヘッドマウンドディスプレイを装着したユーザは、メガネのレンズ部分に相当する位置を有する表示部(画面)を通して現実空間を視認できる。この表示部は、現実空間を光学的に透過してユーザの眼に直接導くことが可能な素材によって構成されている。他方で、この表示部は、コンピュータにより生成した仮想オブジェクトの画像を表示させることができる。さらに、この表示部は液晶表示装置等を備え、この液晶表示装置等にコンピュータにより生成した仮想オブジェクトの画像を表示させ、この液晶表示装置からの光を(例えば、ハーフミラー等で反射させて)ユーザの網膜に導くことができるようになっている。これにより、ユーザは、現実空間と仮想オブジェクトの画像とが光学的に重ね合わせられた像を視認することができる。なお、ヘッドマウンドディスプレイに備えられたカメラは現実空間に配置されたマーカを検出するために用いられる。また、他の光学シースルー方式として、ハーフミラーを使用せずに表示部に重ね合わせて透過型液晶表示装置を備える方式があるが、本発明はこの方式を採用してもよい。この場合には、透過型液晶表示装置に仮想オブジェクトの画像を表示することで、表示部に透過された現実空間と透過型液晶表示装置に表示された仮想オブジェクトの画像とが重ね合わされてユーザに視認される。
【0197】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。ここで、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて均等な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用されるすべての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【符号の説明】
【0198】
10 ゲーム装置
11 下側ハウジング
12 下側LCD
13 タッチパネル
14 操作ボタン
15 アナログスティック
16 LED
21 上側ハウジング
22 上側LCD
23 外側撮像部
23a 外側撮像部(左)
23b 外側撮像部(右)
24 内側撮像部
25 3D調整スイッチ
26 3Dインジケータ
28 タッチペン
31 情報処理部
311 CPU
312 GPU
32 メインメモリ
60 マーカ
61 仮想オブジェクト(水面オブジェクト)
62 仮想オブジェクト(釣竿オブジェクト)
62a 釣竿オブジェクトの部分(釣竿本体)
62b 釣竿オブジェクトの部分(釣糸部分)
62c 釣竿オブジェクトの部分(釣針部分)
63 魚影
63a 魚影63に対応する魚オブジェクトの位置
64 魚影
64a 魚影64に対応する魚オブジェクトの位置
80L 左仮想カメラ
80R 右仮想カメラ

【特許請求の範囲】
【請求項1】
画像処理プログラムであって、
現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理装置のコンピュータを、
前記実カメラによって前記現実空間が撮像されることにより得られた実空間画像を取得する実空間画像取得手段、
前記実空間画像から特定対象物を検出する特定対象物検出手段、
前記特定対象物検出手段による特定対象物の検出の結果に基づき、前記実カメラと前記特定対象物との間の相対的位置を算出することを少なくとも実行する算出手段、
前記相対的位置に基づき、仮想空間に仮想カメラを設定する設定手段、
前記実空間画像のうち前記特定対象物に対応する部分の画像以外の画像から、当該画像を構成する画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する識別手段、
前記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、前記仮想空間に提供するイベント提供手段、
前記イベントが生じた前記仮想空間を前記仮想カメラで撮影することにより、仮想空間画像を生成する仮想空間画像生成手段、および
前記表示領域上の現実空間に重ね合わせて前記表示領域において視認されるように、前記仮想空間画像を前記表示装置に表示させる表示制御手段として機能させる、画像処理プログラム。
【請求項2】
前記所定の色条件を満たす画素を識別するために前記識別手段が処理対象とする前記実空間画像の領域は、前記特定対象物に対応する部分に対する相対的な位置関係に基づいて規定された領域である、請求項1に記載の画像処理プログラム。
【請求項3】
前記所定の色条件を満たす画素を識別するために前記識別手段が処理対象とする前記実空間画像の領域は、前記実空間において前記特定対象物の近傍領域に対応する部分である、請求項1または2に記載の画像処理プログラム。
【請求項4】
前記所定の色条件を満たす画素を識別するために前記識別手段が処理対象とする前記実空間画像の領域は、複数の部分領域からなり、
前記識別手段が、前記部分領域ごとに、前記所定の色条件を満たす画素を識別する処理を行い、前記部分領域ごとに得られた前記識別する処理の結果の組合わせに応じて、前記イベント提供手段は、前記所定のイベントを仮想空間に提供する、請求項1から3のいずれかに記載の画像処理プログラム。
【請求項5】
前記複数の部分領域のうち少なくとも2つの部分領域において、前記所定の色条件を満たす画素を識別する処理の結果が実質的に同一となった場合に、前記イベント提供手段は、前記所定のイベントを前記仮想空間に提供する、請求項4に記載の画像処理プログラム。
【請求項6】
前記イベント提供手段は、前記複数の部分領域のそれぞれにおいて、前記所定の色条件を満たす画素を識別する処理の結果と、当該部分領域の位置情報とに応じた、前記所定のイベントを仮想空間に提供する、請求項4または5に記載の画像処理プログラム。
【請求項7】
前記識別手段が所定の色条件を満たす画素を識別した状態が、所定の時間継続することを契機として、前記イベント提供手段は、前記所定イベントを前記仮想空間に提供する、請求項1から6までのいずれかに記載の画像処理プログラム。
【請求項8】
前記イベント提供手段が前記所定イベントを仮想空間に提供した後において、
前記識別手段が所定の色条件を満たす画素を識別していない状態が、所定の時間継続することを契機として、当該所定イベントを前記仮想空間から消去する、請求項1から7までのいずれかに記載の画像処理プログラム。
【請求項9】
前記識別手段は、前記特定対象物に対応する部分の画像以外の画像が有するRGBカラーモデルに基づく色情報をHSVカラーモデルに基づく色情報に変換して、所定の色条件を満たす画素を識別した結果を取得し、その後、当該結果と前記RGBカラーモデルに基づく色情報のみで識別した結果とが合致することをもって所定の色条件を満たしている状態として識別する、請求項1から8までのいずれかに記載の画像処理プログラム。
【請求項10】
前記所定のイベントは、所定のオブジェクトを前記仮想空間に提供するイベントである、請求項1から9までのいずれかに記載の画像処理プログラム。
【請求項11】
前記オブジェクトの提供において、前記仮想空間に提供されるオブジェクトが、複数のオブジェクトから、前記識別された画素が有する色成分またはその組合わせに応じて選択される、請求項10に記載の画像処理プログラム。
【請求項12】
現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理装置であって、
前記実カメラによって前記現実空間が撮像されることにより得られた実空間画像を取得する実空間画像取得手段、
前記実空間画像から特定対象物を検出する特定対象物検出手段、
前記特定対象物検出手段による特定対象物の検出の結果に基づき、前記実カメラと前記特定対象物との間の相対的位置を算出することを少なくとも実行する算出手段、
前記相対的位置に基づき、仮想空間に仮想カメラを設定する設定手段、
前記実空間画像のうち前記特定対象物に対応する部分の画像以外の画像から、当該画像を構成する画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する識別手段、
前記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、前記仮想空間に提供するイベント提供手段、
前記イベントが生じた前記仮想空間を前記仮想カメラで撮影することにより、仮想空間画像を生成する仮想空間画像生成手段、および
前記表示領域上の現実空間に重ね合わせて前記表示領域において視認されるように、前記仮想空間画像を前記表示装置に表示させる表示制御手段
を備える、画像処理装置。
【請求項13】
現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理システムであって、
前記実カメラによって前記現実空間が撮像されることにより得られた実空間画像を取得する実空間画像取得手段、
前記実空間画像から特定対象物を検出する特定対象物検出手段、
前記特定対象物検出手段による特定対象物の検出の結果に基づき、前記実カメラと前記特定対象物との間の相対的位置を算出することを少なくとも実行する算出手段、
前記相対的位置に基づき、仮想空間に仮想カメラを設定する設定手段、
前記実空間画像のうち前記特定対象物に対応する部分の画像以外の画像から、当該画像を構成する画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する識別手段、
前記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、前記仮想空間に提供するイベント提供手段、
前記イベントが生じた前記仮想空間を前記仮想カメラで撮影することにより、仮想空間画像を生成する仮想空間画像生成手段、および
前記表示領域上の現実空間に重ね合わせて前記表示領域において視認されるように、前記仮想空間画像を前記表示装置に表示させる表示制御手段
を備える、画像処理システム。
【請求項14】
現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理装置において行われる画像処理方法であって、
前記実カメラによって前記現実空間が撮像されることにより得られた実空間画像を取得する実空間画像取得ステップ、
前記実空間画像から特定対象物を検出する特定対象物検出ステップ、
前記特定対象物検出ステップによる特定対象物の検出の結果に基づき、前記実カメラと前記特定対象物との間の相対的位置を算出することを少なくとも実行する算出ステップ、
前記相対的位置に基づき、仮想空間に仮想カメラを設定する設定ステップ、
前記実空間画像のうち前記特定対象物に対応する部分の画像以外の画像から、当該画像を構成する画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する識別ステップ、
前記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、前記仮想空間に提供するイベント提供ステップ、
前記イベントが生じた前記仮想空間を前記仮想カメラで撮影することにより、仮想空間画像を生成する仮想空間画像生成ステップ、および
前記表示領域上の現実空間に重ね合わせて前記表示領域において視認されるように、前記仮想空間画像を前記表示装置に表示させる表示制御ステップ
を含む、方法。
【請求項15】
現実空間を撮像するための実カメラと、当該現実空間を表示領域において視認可能とする表示装置とに接続される画像処理システムであって、
前記実カメラで撮像され得るマーカ、
前記実カメラによって前記現実空間が撮像されることにより得られた実空間画像を取得する実空間画像取得手段、
前記実空間画像から前記マーカを検出するマーカ検出手段、
前記マーカ検出手段によるマーカの検出の結果に基づき、前記実カメラと前記マーカとの間の相対的位置を算出することを少なくとも実行する算出手段、
前記相対的位置に基づき、仮想空間に仮想カメラを設定する設定手段、
前記実空間画像のうち前記特定対象物に対応する部分の画像以外の画像から、当該画像を構成する画素が有する色成分または当該色成分の組合わせに基づき規定される所定の色条件を満たす画素を識別する識別手段、
前記所定の色条件を満たす画素が識別された結果に応じて、当該色条件に応じた所定のイベントを、前記仮想空間に提供するイベント提供手段、
前記イベントが生じた前記仮想空間を前記仮想カメラで撮影することにより、仮想空間画像を生成する仮想空間画像生成手段、および
前記表示領域上の現実空間に重ね合わせて前記表示領域において視認されるように、前記仮想空間画像を前記表示装置に表示させる表示制御手段
を備える、画像処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図4E】
image rotate

【図4F】
image rotate

【図4G】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−145981(P2012−145981A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2011−1486(P2011−1486)
【出願日】平成23年1月6日(2011.1.6)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(391041718)株式会社ハル研究所 (38)
【Fターム(参考)】