(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0021】
(ゲーム装置の構成例)
以下、本発明の一例示的な実施形態に係るゲーム装置について説明する。
図1および
図2は、ゲーム装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置であり、
図1および
図2に示すように折り畳み可能に構成されている。
図1は、開いた状態(開状態)におけるゲーム装置10を示し、
図2は、閉じた状態(閉状態)におけるゲーム装置10を示している。
【0022】
図1は、開状態におけるゲーム装置10の正面図である。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、着脱可能な記憶媒体(例えば、後述の外部メモリ44)に記憶された、または、サーバや他のゲーム装置から受信した、あるいは内蔵する記憶領域(例えば、後述のデータ保存用内部メモリ35)に記憶された、ゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0023】
まず、
図1および
図2を参照して、ゲーム装置10の外観構成について説明する。
図1および
図2に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0024】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。
図1および
図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0025】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0026】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(
図1および
図2(d)に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0027】
各操作ボタン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の電源をオン/オフするために用いられる。
【0028】
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0029】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(
図3参照)が設けられ、当該マイク42がゲーム装置10の外部の音を検出する。
【0030】
図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が備えるスピーカの音量を調整するために用いられる。
【0031】
図2(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
【0032】
また、
図2(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
【0033】
また、
図1および
図2(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(
図2(c)参照)。
【0034】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0035】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。
図1および
図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0036】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0037】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左眼用画像と右眼用画像が表示される。具体的には、左眼用画像と右眼用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左眼用画像と右眼用画像とを左眼および右眼のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右眼用画像と左眼用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左眼に左眼用画像をユーザの右眼に右眼用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右眼にも左眼にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切替えは、後述する3D調整スイッチ25によって行われる。
【0038】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。
【0039】
外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
【0040】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
【0041】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。
【0042】
3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置に応じて、右眼用画像および左眼用画像における横方向の位置のずれ量が調整される。
【0043】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。
【0044】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0045】
(ゲーム装置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でもよい)内に収納される。
【0046】
情報処理部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に当該画像が表示される。
【0047】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0048】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0049】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22および/または下側LCD12に当該画像を表示することができる。
【0050】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0051】
無線通信モジュール36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0052】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、
図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸または2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0053】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0054】
また、情報処理部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に対して入力が行われた位置を知ることができる。
【0055】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0056】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0057】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右眼用画像と左眼用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右眼用画像について縦方向に1ライン分の画素データを読み出す処理と、左眼用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右眼用画像と左眼用画像とを読み出す。これにより、右眼用画像および左眼用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右眼用画像の短冊状画像と左眼用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右眼に右眼用画像が、ユーザの左眼に左眼用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0058】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って実世界を撮像し、撮像した実世界の画像データを情報処理部31に出力する。なお、撮像画像をリアルタイムで上側LCD22または下側LCDに表示したり、撮像画像に対してリアルタイムに色認識や顔認識等の画像処理を行ったりする場合、外側撮像部23や内側撮像部24は、所定の時間間隔で実世界を撮像して、画像データを情報処理部31に出力するようになっている。
【0059】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0060】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の内部構成の説明である。
【0061】
(ゲーム装置10における情報処理の概要)
以下、例示的な実施形態に係るゲーム装置10における情報処理の概要について説明する。
【0062】
本実施形態において、情報処理部31は、実世界の絶対座標(例えば、マーカ座標系における座標)に対して、ビジュアルマーカ60(以下、マーカ60)を基準に仮想空間における座標の対応を取る。情報処理部31は、マーカ60を含む画像に対して特徴抽出処理を行なうことでマーカ60の像を含む画像の少なくとも一部を認識する。次いで、情報処理部31は、認識されたマーカ60における所定位置をマーカ座標系の原点として設定する。次に、情報処理部31は、実世界を撮影した外側撮像部23と、仮想空間における仮想カメラとが、基準であるマーカ60に対して同じ位置・姿勢をとるように設定する。そして、情報処理部31は、仮想カメラの特性(例えば、レンズ歪み、焦点距離、画角などのパラメータ)を、外側撮像部23に必要に応じて合致させる。このようにして、マーカ60を含む実世界画像に対応する実世界と、仮想世界画像に対応する仮想空間との適切な重ね合わせが行われる。
【0063】
なお、上述の特徴抽出処理は、入力した画像の認識を可能にするための特徴を抽出する処理である。画像の特徴としては、点、線、領域が挙げられる。点、線、領域は、固有の特徴量を有している。点の特徴量としては、例えば、座標、明るさ、色が挙げられる。線の特徴量としては、例えば、長さ、方向が挙げられる。また、領域の特徴量としては、例えば、面積、テクスチャ(明るさ、色などの規則的に変化するパターン)が挙げられる。
【0064】
情報処理部31は、入力画像に対して特徴抽出を行い、得られた特徴量を用いて当該画像を認識し、マーカ60に関連づけられた情報を取得する。より具体的には、情報処理部31は、モノクロまたはカラーで描かれたパターンを有するマーカの像を含む入力画像に対する画像認識処理により、その描かれたパターンに対応する識別情報を取得し得る。また、情報処理部31は、入力画像と予め登録された画像との類似度を求めるテンプレートマッチングにより、マーカ60に対応づけられる識別情報を取得し得る。もしくは、情報処理部31は、入力画像に描かれたデータセルのマトリックス(例えば、白黒の1ビット((0,1)の2通り)を表す点としての微細な正方形を上下左右に配列させたマトリックスコード)を認識することにより、マーカ60に対応づけられる識別情報を取得し得る。
【0065】
本実施形態に係る情報処理プログラムは、当該ゲームプログラム70の一部として機能するように提供される。なお、この情報処理プログラムは、モジュール化されて当該ゲームプログラムから分離可能なプログラムとして存在していてもよく、また、一体不可分なプログラムとして存在していてもよい。
【0066】
ゲームプログラム70の基本的な処理は、次のような流れである。
(1)情報処理部31は、外側撮像部23により撮像された実世界の画像を取得する。
(2)情報処理部31は、取得された画像に対する画像処理によってマーカ60を検出し、マーカ60に描かれているパターンを認識する。
(3)
情報処理部31は、撮像された画像中のマーカ60の位置情報から射影幾何学的な計算により3次元空間でのマーカ60の位置・姿勢を計測する。
(4)情報処理部31は、計測した位置情報をもとに3次元仮想オブジェクトを合成した画像を生成する。情報処理部31は、立体視が行なわれる場合には、当該画像を立体糸可能な態様に加工した画像を生成する。
(5)情報処理部31は、生成された画像をゲーム装置10の所定の表示面に表示する。例示的実施形態における新規の特徴は、上述の(1)から(5)までの処理の中のうち、特に、処理(2)に関連する。
【0067】
以下、
図4A以降の図を中心にさらに参照して、ゲーム装置10においてゲームプログラム70に基づいて実行される情報処理のさらなる詳細について説明する。
【0068】
図4Aは、外側撮像部23によってマーカ60が撮像されているときに上側LCD22の画面に表示される画像の一例である。情報処理部31は、外側撮像部23から取得される画像(実世界画像)に対して画像処理を行う。情報処理部31は、その画像処理の結果に基づき、その実世界画像にマーカ60が含まれているか否かを判定できる。ここで、情報処理部31は、認識されたマーカ60を基準とするマーカ座標系(実世界におけるマーカ60の位置に対応する仮想空間内の所定点を原点とした座標系)を規定する。
【0069】
情報処理部31は、マーカ60の位置・姿勢またはその位置等から算出された情報を基準にして、複数の仮想オブジェクト(例えば、オブジェクトOBJ1)が、上側LCD22において、立体視可能に表示する。ここで、情報処理部31は、実世界画像と情報処理の過程で生成される仮想空間の画像(仮想世界画像)とを適切に融合する。実環境から受ける知覚情報を拡張・強化するために、情報処理部31は、マーカ60を含む実世界画像に対応する実空間と、仮想世界画像に対応する仮想空間とを適切に重ね合わせる。
【0070】
図4Bは、マーカ60の一例およびそのマーカにおいて定義づけられるマーカ座標系の一例を示す模式図である。この例示的な実施形態において、マーカ60は、正方形(L
1[mm]×L
1[mm])の主面を有する。そして、このマーカ60は、その主面に描かれた黒色の太枠(以下、外枠部Q1)の中に、描かれた識別用のパターン(白黒またはフルカラーの図柄)を有している。この外枠部Q1の形状は、正方形(L
2[mm]×L
2[mm])である。また、外枠部Q1は、白色の太枠(以下、最外枠部Q2)に囲まれている。なお、最外枠部Q2は、マーカ60を精度良く検出するために設けている領域であるが、本領域がなくともよい。これは、本発明の実施形態において用いられ得るマーカ60の一例であるが、当業者は本明細書の具体的な記載に基づき本発明の思想を逸脱せずに種々の改変を達成し得る。
【0071】
本例では、マーカ座標系の原点Oは、マーカ60の中心の位置におかれている。また、このマーカ座標系の点は、(X
m,Y
m,Z
m)で表現される。
図4Bに示されるように、マーカの主面は、マーカ座標系における平面X
m−Y
mに相当する。Z
m軸は、当該平面に直交する座標軸である。仮想オブジェクト(例えば、仮想オブジェクトOBJ1)は、マーカ座標系に表現される。情報処理部31は、仮想オブジェクトと実世界を撮像した画像とを重畳的に表示するために、撮像する視点を原点とした座標系をその処理において使用する。
【0072】
ゲーム装置10は、ユーザに立体視を提供する機能を備えている。立体視可能な画像を提供するために、ゲーム装置10は、視点としての右眼および左眼の両方に対して別々に座標系を設定する場合がある。しかし、以下の説明では、マーカ60とそれを含む実世界を撮像する際の視点との相対的位置に関係する説明の簡素化のため、「カメラ座標系」に基づき説明を行なう。この「カメラ座標系」は、代表点としての視点を原点とする座標系である。立体視のための右眼用画像および左眼用画像を提供するために導入すべき座標系およびそれに基づく座標変換行列は、上述のカメラ座標系における以下の説明に基づいて、右眼用画像と左眼用画像との間に成立すべき両眼像差を考慮することで得られることが当業者によって理解される。
【0073】
また、実際に、外側撮像部23から取り込まれた生の画像データは、その光学系の特性(例えば、レンズの特性)により歪みを含む場合がある(例えば、撮像部において広角レンズが用いられる場合は、樽型歪みが発生し得る)。情報処理部31は、このような光学系の特性に依存した歪みなどを、適宜、歪み関数などを利用した座標変換処理を行なうことで、必要に応じて除去し得る。
【0074】
よって、以下では、マーカ座標系と、カメラ座標系との関係性に基づき、本発明の例示的な実施形態について説明する。
【0075】
図4Cは、ゲーム装置10の情報処理に関わる座標系を示した模式図である。
【0076】
カメラ座標系は、視点を原点、画像平面に垂直な方向をZ
c軸、透視変換モデルによって投影される画像平面のx
c,y
c軸に平行な方向を各Xc,Yc軸とする。マーカ座標系で表現された点(X
m,Y
m,Z
m)は、回転・平行移動でカメラ座標系に変換可能である。カメラ座標系の点は、(X
c,Y
c,Z
c)と表記される。本明細書において、透視変換モデルによって投影される画像平面をスクリーン座標系と呼ぶ。カメラ座標系の点(X
c,Y
c,Z
c)は、スクリーン座標系における点(x
c,y
c)に写るものとする。
【0077】
図4Dは、マーカ60のパターンにおいて定義づけられる領域の一例を示す模式図である。なお、
図4Eは、
図4Dで示されたマーカ60の例を認識する過程を説明するための模式図であるが、その詳細については後述する。なお、
図4Dおよび
図4Eにおいては、最外枠部Q2の記載を省略している。
【0078】
図4Dは、その紙面に向かって左側上に、マーカ60の主面に描かれるパターンの一例を示している。このマーカ60は、外枠部Q1の内側に識別用パターンを有している。この例では、外枠部Q1を除いたマーカ60の領域(識別パターン領域)は、格子状に16分割された区域毎に扱われる(
図4Dの右側上を参照)。すなわち、当該区域は、白または黒に塗られている。
【0079】
情報処理部31は、外側撮像部23から実世界の画像を取得する。次いで、情報処理部31は、この取得された画像(以下、「カメラ画像」)を2値画像に変換する。そして、情報処理部31は、この2値画像からマーカ60を検出しそのパターンの認識を行なう。
【0080】
情報処理部31は、2値化したカメラ画像からマーカ60を検出して認識するとき、認識対象となっているマーカ60のパターンを含む面の領域を複数の領域に分けて段階的に取り扱う。
【0081】
具体的には、情報処理部31は、マーカ60を認識するとき、まず、その中央領域A1のパターンを認識する。
図4Dの右側上に記載されるように、識別パターン領域は、例えば、格子状に16分割されて領域を単位として取り扱われる。なお、図中の点線は、説明の便宜のためであり、実際のマーカ60に含まれるわけではない。さらに、情報処理部31は、その識別パターン領域に含まれる単位領域群を、中央の4個(2×2個)の単位領域からなる単位領域群(以下、中央領域A1)とその周囲に位置づけられる12個の単位領域からなる単位領域群(以下、外側領域A2)に分けて取り扱う。
【0082】
識別パターン領域のパターンを認識する過程で、情報処理部31は、まず、中央領域A1の認識処理を行なう。そして、情報処理部31は、中央領域A1の認識結果に依存して、マーカ60の外側領域を認識する。情報処理部31が、中央領域A1を認識して、その認識結果をその他の領域に認識に利用することで、認識精度の向上を達成する。
【0083】
より具体的な認識の方法について説明する。情報処理部31は、例えば、カメラ画像全体の画素値(例えば、輝度値)に基づいてマーカ検出における2値化処理のための閾値を設定する。そして、情報処理部31は、マーカの中央領域A1に属するパターン(白黒パターン)の認識にこの閾値を利用する。情報処理部31は、この認識結果に対応する情報を、所定長(例えば、4ビット長)のビット列として取得する。ここで、白または黒は、それぞれ、「0」または「1」と対応づけて表現される。
【0084】
次いで、情報処理部31は、この取得したビット列が、所定の組合せ(例えば、{1,0,0,0}、{0,1,1,1})であるか否かを判定する。そして、情報処理部31は、ビット列がこの所定の組合せを構成すると判定したときに、残りの領域(外側領域A2)のパターンを判定する処理に進む。情報処理部31が、中央領域A1のみを取り出して、先に認識させることによって、認識の効率を向上させ得る。これは任意の方向からみて画素がつぶれにくい中央領域A1が認識される。その認識がうまくいかない場合、外側の領域についても画質が認識のための要件を満たしていない状態である場合が多い。したがって、中央領域A1が先に認識されて、その領域の認識結果に依存してその外側領域の認定の要否が決定されるため、無駄な処理を行なわずに処理を進めることもできる。
【0085】
さらに、情報処理部31は、中央領域A1の画素値に基づいて残りの外側領域の認識のための閾値を設定する。そして、情報処理部31は、この新たな閾値を利用することで、外側領域に属する画素の白黒判定を実行する。中央領域A1の画素値に基づいて残りの外側領域を認識するための閾値を設定することで、周囲環境の変化にも対応することができる認識処理が達成される。
【0086】
そして、情報処理部31は、この閾値を利用してマーカの外側領域に属するパターン(白黒パターン)の判定結果のみから所定長のビット列からなる情報(例えば、9ビット長の情報)を取得する。なお、外側の領域のパターンには、あらかじめ、誤り検出のための情報(パリティ・ビット)として機能する情報に対応する領域(例えば、総計3ビット分)が存在する。この外側の領域に誤り検出を導入することで、画素がつぶれやすい外側の領域についても精度良い認識結果が得られる。
【0087】
(処理の詳細)
(処理に使用される主要なデータの一例)
まず、ゲームプログラム70の実行中にメインメモリ32に記憶される主なデータについて説明する。
【0088】
図5は、ゲーム装置10のメインメモリ32のメモリマップを示す図である。
図5に示されるように、メインメモリ32には、ゲームプログラム70、実世界画像71、
座標変換行列72、仮想オブジェクト情報73、各種変数74等が記憶される。この各種変数には、上述の情報処理プログラムの処理過程において現れる画像における画像処理に用いられるパラメータあるいは一時的な処理対象データが含まれる。本明細書において特に明示しなければ、いずれ
のパラメータも、ゲーム装置10の当該メインメモリ32において記憶され、また再利用されることが可能である。代替的に、これらのパラメータ等を示すデータは、ゲーム装置10の別の記憶領域に保存され、さらにそこから読み出されることで再利用されてもよい。
【0089】
ゲームプログラム70は、情報処理部31に情報処理を実行させるためのプログラムである。
【0090】
実世界画像71は、外側撮像部23によって撮像された実世界の画像である。実世界画像71は、外側撮像部(左)23aによって撮像された実世界の画像(左実世界画像)および/または外側撮像部(右)23bによって撮像された実世界の画像(左実世界画像)であり得る。
【0091】
座標変換行列72は、仮想カメラからみた仮想オブジェクトを描画する際に用いられる行列であり、マーカ座標系で表された座標を仮想カメラ座標系で表された座標へと変換するための座標変換行列である。立体視を提供する場合にあっては、左眼用画像と右眼用画像との間に生じる両眼像差を考慮した設定のもと、情報処理部31は、その処理過程において、左眼用の仮想カメラ座標系と右眼用の仮想カメラ座標系、ならびに座標変換行列を設ける。
【0092】
仮想オブジェクト情報73は、仮想オブジェクトに関連する情報であって、仮想オブジェクトの形状や模様を表すモデル情報や、仮想空間における仮想オブジェクトの現在位置などを含む。
【0093】
各種変数74は、ゲームプログラム70の実行の際に用いられる各種変数である。
【0094】
ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリ32等の各ユニットが初期化される。次に、データ保存用内部メモリ35に記憶されたゲームプログラムがメインメモリ32に読み込まれ、情報処理部31によって当該ゲームプログラムの実行が開始される。
【0095】
以下、
図6のフローチャートを参照して、例示的な実施形態に係る情報処理プログラムに基づいて実行される処理の流れを説明する。本図では、「ステップ」を、「S」と略記する。なお、
図6のフローチャートは、単なる一例にすぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、導入した座標系、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、
図6に示すフローチャートの全ステップの処理を情報処理部31(例えば、CPU311)が実行するものとして説明するが、
図6に示すフローチャートの一部のステップの処理を、情報処理部31以外のプロセッサや専用回路が実行するようにしてもよい。
【0096】
(具体的な処理の一例)
図6は、本発明の例示的実施形態における情報処理プログラムにおける、入力画像の読み込みから、マーカ60の検出・認識の過程を経て、仮想オブジェクトと入力画像とを重畳的に表示するまでの一連の処理(メインループ処理)の例を示したフローチャートである。
【0097】
このメインループ処理は、入力画像の取得からそれに施される画像処理、その処理結果に基づいた画像表示までを含む処理である。情報処理部31が、付属のハードウェアの起動時の処理、ゲームプログラム70をゲーム装置10の記憶領域から読み出す処理などについては、説明を簡素化のために一部を省略している。本アプリケーションのフレームレートは、カメラ画像の取得間隔を含む諸設定によって決定され得る。また、外側撮像部23は、所定の取得間隔で連続的に実世界を撮像する。ゲームプログラム70は、所定の取得間隔で連続的に実世界を撮像した画像を取得して、その画像を入力画像としてメインループ処理を繰り返し実行し得る。
【0098】
以下、メインループ処理のステップごとに説明する。
【0099】
ステップ101において、情報処理部31は、カメラ画像を取得する処理を実行する。
上述のように、情報処理部31は、実世界を撮像した画像を入力画像として取得し、次の処理に進む。
【0100】
具体的には、情報処理部31は、例えば、実世界画像71としてゲーム装置10の記憶領域に読み込まれた画像を、本ステップ以降の処理対象(入力画像)として得る。
【0101】
ステップ102において、情報処理部31は、取得したカメラ画像に基づき当該カメラ画像を2値化処理するための閾値(以下、第1の閾値)を決定する処理を実行する。
【0102】
具体的には、情報処理部31は、取得されたカメラ画像の全てに対して予め設定された値、または取得したカメラ画像の特性に基づき、取得した画像を2値化処理のための閾値を決定する処理を実行する。ここで、2値化処理とは、「多値画像(階調が2ビット以上の画像)」から「2値画像(階調が1ビットである画像)」を得るための処理である。2値化処理は、多値画像の各画素が濃度のある基準値(閾値)より明るいか暗いかによって白または黒に変換される。多値画像は、グレイスケール、カラーいずれの画像であってもよい。また、第1の閾値は、予め定められた固定値でもよく、また、取得したカメラ画像を入力として算出した閾値であってもよい。
【0103】
第1の閾値が、予め与えられた値に基づき設定される場合、次のような値が利用され得る。例えば、画素の輝度が0から255までの値の範囲であるとき、情報処理部31が閾値として取り扱う値を、例えば、100から130までの範囲のある値(例えば、128)などに予め設定してもよい。
【0104】
他方、情報処理部31は、取得したカメラ画像の特性に基づき、その入力画像を読み込んだ時点で第1の閾値を決定してもよい。情報処理部31が入力画像に基づき第1の閾値を決定する方法としては、例えば、モード法、P−タイル法、微分ヒストグラム法などが挙げられるが、これに限定されない。モード法は、入力画像の濃度ヒストグラムにおいて谷間がある場合、その谷間の点の濃度を閾値にする方法である。微分ヒストグラム法は、入力画像における対象の画素の微分ヒストグラムが最大となる点を閾値とする方法である。
【0105】
なお、情報処理部31は、入力画像全体を2値化する方法として動的閾値法に基づき処理を行なう処理を前提にその処理のための閾値を第1の閾値として決定してもよい。すなわち、情報処理部31は、処理対象とする画素の濃淡レベルと、その近傍(4近傍または8近傍)での局所平均値との比較によって2値化し得る。この場合、この局所平均値が、第1の閾値としての役割を果たす。
【0106】
また、情報処理部31は、第1の閾値を予め設定された固定値として有し、フローチャートのステップ103以降のマーカ検出が失敗した場合にのみ、第1の閾値を新たに更新するような構成をとってもよい。この場合、具体的には、情報処理部31は、エッジ検出を行い、エッジ部分の輝度の変化から閾値を決定することもできる。エッジとは輝度の変化が一定以上の画素を指す。実際には、情報処理部31は、そのような画素を複数サンプリングして、サンプリングした画素の(重み付きの)平均値を求めることで第1の閾値を求めることが可能である。
【0107】
ステップ103において、情報処理部31は、第1の閾値を利用して、マーカ60を検出する処理を実行する。情報処理部
31が本ステップで
行うマーカ60の検出処理の一例を説明する。
【0108】
具体的には、まず、情報処理部31は、ステップ102において得た第1の閾値に基づいて入力画像を2値化する。次に、情報処理部31は、2値化した画像(白黒画像)において、黒色画素の連結成分ごとにラベリング(識別情報づけ)を実行する。この処理により、マーカ60の外枠部Q1は、ラベルづけされた連結成分のいずれかに含まれることになる。情報処理部31は、連結成分の外接四角形の大きさと縦横比を考慮して、マーカ60が含まれている可能性の低い領域は除去する。
【0109】
より具体的に説明すると、情報処理部31は、例えば、連結成分の面積値(例えば、画素数)を評価することによって巨大領域および微少領域を除外することができる。また、情報処理部31は、外接四角形情報から画像境界に接する連結成分も除外することができる。
【0110】
次に、情報処理部31は、残された連結成分に対して輪郭線追跡を行い、輪郭線上の画素位置をすべて記憶する。さらに、情報処理部31は、輪郭線データに対して折れ線近似を行い、4本の線分によって十分な精度で近似できた連結成分をマーカの候補とする。また、情報処理部31は、このときの4つの折れ点に係る座標値を記憶しておく。
【0111】
なお、マーカ60の識別用パターン領域には、所定のパターン(図柄)が描かれている。情報処理部31は、この所定のパターンの少なくとも一部と対応づけられる特徴を、マーカ60の像を含む画像から抽出する処理を行なうことによって、マーカ60の像を含む画像の少なくとも一部を認識する。このマーカ60の識別処理の過程では、情報処理部31は、画像の正規化処理を行う。マーカ60は、透視変換モデルによってスクリーン座標系に投影されるので、情報処理部31は、マーカ座標系X
m−Y
m平面内の点(X
m,Y
m,0)を、以下の式でスクリーン座標系上の点(x
c,y
c)に変換する。
【数1】
【0112】
情報処理部31は、マーカ60のサイズが既知であるため、マーカ60の大きさの情報と折れ線
近似を行なった際の近似検出された4頂点の座標値を用いることで、この式におけるすべてのC
ij(i=1〜3,j=1〜3)の値を算出し得る。ここで、hはスカラーである。情報処理部31は、マーカ60の内部パターンを上述の式によって正規化し得る。
【0113】
次いで、情報処理部31は、マーカ60の各辺に対応する輪郭線データに最小2乗法で
直線当てはめを行い、それら直線の交点を頂点座標値とする。なお、情報処理部31は、これまでの処理において、必要に応じて、この直線当てはめの際、必要に応じて、歪み関数による変換を行い、スクリーン座標系における頂点座標値を算出する。
【0114】
以上のように得られた4頂点座標値は、情報処理部31が、マーカ60の3次元位置情報を計算するのに利用される。具体的には、マーカ60の3次元位置情報の計算は、マーカ座標系からカメラ座標系への座標変換行列(T
cm)を求める処理である。
【0115】
以下、マーカ60の3次元位置情報の計算についてもあわせて説明する。
【0116】
この座標変換行列は、回転移動成分R
3x3と平行移動成分T
3x1からなる。一般に、スクリーン座標系とカメラ座標系の間は透視変換モデルで変換できる。これらの座標系の関係は、例えば、次の式のように表現できる。
【数2】
【0117】
ここで、行列Pは、スクリーン座標系を[x
c,y
c,1]
Tで定義したときの、カメラ座標系からスクリーン座標系への射影変換を表す行列である。hは、スカラーである。また、行列Pは、画像を取得するための撮像部(例えば、外側撮像部23)の特性を反映するためのキャリブレーション処理によって事前に求められている。
【0118】
上述のように、マーカ座標系におけるマーカ60の4頂点の座標値は、原点の位置およびマーカ60の各辺の長さの情報(L
1[mm]、L
2[mm])を利用して設定される。このマーカ座標系とスクリーン座標系との対応関係も、上述したように把握し得る。したがって、これらの情報に基づき、情報処理部31は、上述の変換行例T
cmを算出する。
【0119】
具体的には、情報処理部31は、(1)回転移動成分R
3×
3の推定、(2)平行移動成分T
3x1の推定を行うことで変換行列T
cmを取得する。このように、情報処理部31は、この変換行例T
cmを用いてマーカ60の3次元位置情報を取得し得る。
【0120】
ステップ104において、情報処理部31は、マーカ60の検出の成否を判定する処理を実行する。すなわち、情報処理部31は、ステップ103において実施される一連のマーカ検出処理の結果として、マーカ60を検知できたか否かを判定する。情報処理部31は、マーカ60の検知ができた場合(ステップ104、Yes)は、ステップ105の処理に進む。
【0121】
ステップ105において、情報処理部31は、第1の閾値を利用することで中央領域A1に属する4つ単位領域より得られた画素値(輝度値)から、その単位領域の各々の属性として黒色(1)・白色(0)を判定する。そして、情報処理部31は、この判定結果として得られる4ビットのビット列を取得する。なお、ここで便宜上、黒色と判定した結果に、値1を対応づけ、他方、白色と判定した結果に、値0とを対応づけているが、この割り当りあての仕方は一例であって、逆の割り当てでもよい。黒色と判定した結果に、値0を対応づけ、他方、白色と判定した結果に、値1とを対応づけてもよい。
【0122】
具体的には、情報処理部31は、マーカ60の4頂点の位置から中央領域A1に相当する範囲にあるサンプリングすべき画素群(以下、サンプリング点と呼ぶ)の位置を特定する。そして、情報処理部31は、特定されたサンプリング点にある画素各々の輝度を、第1の閾値と比較することで、サンプリング点の属性(白色・黒色)を判定する。具体的には、情報処理部31は、第1の閾値未満の輝度値を有する点を、黒色(1)と判別する。他方で、情報処理部31は、第1の閾値以上の輝度値を有する点を、白色(0)と判別する。さらに、情報処理部31は、中央領域A1に属する単位領域の各々の属性(白色・黒色)の判定を、サンプリング点の属性の判定結果に基づき行なう。ここで、情報処理部31は、サンプリング点の属性の判別結果を、そのサンプリング点が位置づけられる単位領域内での相対位置に依存的に重み付けして評価してもよい。例えば、情報処理部31は、そのサンプリング点の属性に基づく評価にあたっては、単位領域の中心に位置するサンプリング点の属性を重視するように重み付けをして評価する。そのサンプリング点の数は、単位領域あたり所定の個数(例えば、9点、4点など)であればよい。
【0123】
このようにして、情報処理部31は、中央領域A1に属する単位領域の各々黒(1)または白(0)を判別し、その中央領域A1に存在する単位領域の黒(1)・白(0)判別結果の組合せを得る。すなわち、情報処理部31は、中央領域A1の4つの単位領域から、4ビット分の情報を得る。
【0124】
ステップ106において、情報処理部31は、判定した結果として得られたビット列(4ビット)における組合せが{1,0,0,0}または{0,1,1,1}である否かを判定する。なお、{1,0,0,0}または{0,1,1,1}は、その要素の組合せを表す。すなわち、その要素の出現順序を考慮しなくてよい。情報処理部31は、ステップ105で得た4ビットの組合せが{1,0,0,0}または{0,1,1,1}である場合(ステップ106、Yes)、その処理をステップ107に進める。他方、ステップ105で得た4ビットの組合せが{1,0,0,0}または{0,1,1,1}でない場合(ステップ106、No)、情報処理部31は、このメインループ処理を終了する。
【0125】
ステップ107において、情報処理部31は、4ビットの組合せに基づいてマーカ60の向きと、中央領域A1の判別結果から割り当てられる代表ビット(以下、「内部1ビット」)を検出する処理を実行する。
【0126】
情報処理部31は、マーカ60の向きを、例えば、次のように決定し得る。4ビットの組合せが{1,0,0,0}である場合、中央領域A1における黒(1)の単位領域の位置でマーカ60の方向を決定することができる。
【0127】
具体的な例を、
図4Eを参照しながら説明する。
図4Eは、マーカ60の識別パターン領域に描かれたパターンの一例を示す模式図である。
図4Eの最左欄には、4つのマーカ60が記載されている。この4つのマーカ60((1−1)から(4−1)まで)は、最上段から最下段に向かって、同一のマーカを順に時計回りに90°ずつ回転した態様で記載されているものである。左から2番目の欄には、最左欄のマーカ60の識別パターン領域のみが記載されている((1−2)から(4−2)まで)。左から3番目の欄には、最左欄のマーカ60の中央領域A1のみが記載されている((1−3)から(4−3)まで)。ここでは、白または黒に対応して、0または1を便宜上記載している。なお、参考までに、最右欄には、最左欄のマーカ60の
外側領域A2のみを記載した((1−4)から(4−4)まで)。
【0128】
左から3番目の欄から理解されるように、4ビットの組合せが{1,0,0,0}である場合、例えば、中央領域A1の白黒判別結果の読み取り起点(例えば、
図4Eの紙面に向かって右上)と、その順番(例えば、その起点から時計回り)とを予め設定しておけば、情報処理部31は、マーカ60の方向が、上述の(1−1)から(4−1)までのいずれの方向であるかを、簡便に判別できる。
【0129】
同様にして、判定結果の4ビットの組合せが{0,1,1,1}である場合、中央領域A1(2×2領域)における白(0)の位置でマーカ60の方向を決定することができる。すなわち、4ビットの組合せが{1,0,0,0}であるときと同様の方法が、この場合にも適用され得る。
【0130】
なお、例えば、マーカ60の回転に対処するために、90度おきに回転したマーカ60のテンプレートを4枚作成しておき、それらと入力画像に対して類似度を計算し、最大値をとるものをマーカ60の方向と見なすことも可能である。
【0131】
内部1ビットの決定は、例えば、次のように行なわれ得る。情報処理部31は、4ビットの組合せが{1,0,0,0}である場合に、内部1ビットの属性として、1を割り当てることができる。また、他方で、情報処理部31は、4ビットの組合せが{0,1
,1,1}である場合に、内部1ビットの属性として、ゼロ(0)を割り当てることができる。
【0132】
このようにして、情報処理部31は、中央領域A1の4ビットの組合せ情報に基づいてマーカ60の方向と内部1ビットの情報を取得し得る。
【0133】
ステップ108において、情報処理部31は、4ビットの画素値に基づいて第2の閾値を設定する処理を実行する。
【0134】
具体的には、情報処理部31は、中央領域A1に属する画素の画素値(輝度値)によって「外部の12ビット」の白(0)または黒(1)の判定に用いられる第2の閾値を決定する。第2の閾値の具体的な算出方法としては、中央領域A1において、例えば、白と判定された画素の輝度値と黒と判定された画素の輝度値との平均値を、第2の閾値とすることができる。この際、単位領域の中心付近の重みを大きくするように単位領域の白黒を判定することが可能である。
【0135】
より具体的には、ステップ108において、情報処理部31は、例えば、第2の閾値を次のように算出する。ここでは、例示目的で、入力画像の画素の輝度値が、0〜255の範囲をとり、第1の閾値が128である場合について説明する。
【0136】
上述のように、情報処理部31は、中央領域A1に存在する4つの単位領域の各々において、画素の輝度値を複数点サンプリングして得られた輝度値の重み付き平均値を算出している(ステップ105)。この処理によって、単位領域ごとの重み付き平均値がその単位領域の代表値として得られる。すなわち、情報処理部31は、中央領域A1の4つの単位領域に対応して、例えば、{22,204,198,210}との輝度値の組合せを取得する。
【0137】
そして、情報処理部31は、この輝度値の組合せの各要素(すなわち、22、204、198および210)を、第1の閾値(128)と比較する判別処理を行なう。ここで、その要素(単位領域の輝度値)が第1の閾値(128)以上であれば、情報処理部31は、その要素に対する判別結果として値1を与える。他方、その要素の輝度値が、第1の閾値未満であれば、情報処理部31は、その要素に対する判別結果として値0を与える。
【0138】
この判別処理の結果、情報処理部31は、4つの単位領域に対応する4ビット分の情報(4要素の組合せ)を得る。上述の例の場合では、情報処理部31は、{0,1,1,1}を得る。上述の判別処理において0と判別された要素に対応する輝度値の平均値は、22である(22÷1=22)。他方、上述の判別処理において1と判別された要素に対応する輝度値の平均値は、204である((204+198+210)÷3=204)。そして、この2者の平均値は、113である((22+204)÷2=113)。情報処理部31は、例えば、この平均値(113)を第2の閾値と設定することができる。
【0139】
次に、別の例として、入力画像の画面全体がより暗い状態である場合についても説明する。入力画像の画面全体がより暗い状態である場合としては、例えば、中央領域A1の4つの単位領域についての輝度値の組合せが{10、151、142、145}である場合が挙げられる。この場合であって、第1の閾値が128であるとき、情報処理部31は、中央領域A1の4つの単位領域に対応する4ビット分の情報として、{0,1,1,1}を得る。そして、情報処理部31は、このときの第2の閾値として、78を設定し得る。
【0140】
さらに、別の例として、入力画像の画面全体がより明るい状態である場合についても説明する。入力画像の画面全体がより明るい状態である場合としては、例えば、中央領域A1の4つの単位領域についての輝度値の組合せが{82、232、224、228}である場合が挙げられる。この場合であって、第1の閾値が128であるとき、情報処理部31は、中央領域A1の4つの単位領域に対応する4ビット分の情報として、{0,1,1,1}を得る。そして、情報処理部31は、このときの第2の閾値として、155を設定し得る。
【0141】
このように、第2の閾値は、入力画像おける中央領域A1の状態に依存して変化する。
【0142】
ステップ109において、情報処理部31は、第2の閾値を利用して?外側部の12ビットを判定する処理を実行する。情報処理部31は、ステップ105と同様に、外側部に存在する12の単位領域における黒(1)・白(0)の判定を行なう。
【0143】
ステップ110において、情報処理部31は、エラービットを検出する処理を実行する。
【0144】
具体的には、情報処理部31は、例えば、外側部に属する12の単位領域を3分割し、4つの単位領域を1組(以下、これを「ブロック」と称する)として取り扱う。この1つのブロックのうち、1つの単位領域は、誤り検出用の領域として機能する。情報処理部31は、上述のブロックの白黒判定結果に基づき、4ビット長のビット列を取得する。そして、誤り検出用の領域に対応するビットは、パリティ・ビットとしての役割を果たす。すなわち、この4ビット長のビット列は、認識対象である3ビット長のビット列、および1ビットのパリティ・ビットからなる。
【0145】
マーカ60の誤り検出用の単位領域は、そのブロックにおける他の単位領域群に対応するビットにおける「1」の個数が奇数であるときに「0」に対応する状態(上述の例では、白色)となるように予め作られている。また、このマーカ60の誤り検出用の領域は、他の領域に対応するビットにおける「1」の個数が偶数であるとき、「1」に対応する状態(上述の例では、黒色)となるように予め作られている。
【0146】
そして、このステップ110において、情報処理部31は、この認識対象である3ビット長のビット列に含まれる「1」の個数と、誤り検出用の領域に対応するパリティ・ビットとの整合性に基づき、外側部のパターンの読み取りにエラーを含むか否かを判定する。
【0147】
具体的には、このステップ110では、情報処理部31が、各ブロック毎の「1」の個数の和が奇数であれば、エラービットなしと判定し(ステップ110、NO)、ステップ111の処理に進む。他方、情報処理部31が、各ブロック毎の「1」の個数の和が偶数であれば、エラービットありと判定し(ステップ110、
YES)、
メインループ処理を終了する。
【0148】
ステップ111において、情報処理部31は、中央領域A1の判定結果による内部1ビットと、外部の12ビットのうち(パリティビットを除いた)9ビットの組合せ(以下、「外部9ビット」)に基づき識別用ビット列を決定する処理を実行する。
【0149】
具体的には、情報処理部31は、例えば、「内部1ビット」として取得された1ビットと、「外部9ビット」として取得された9ビットを合わせた、10ビット長のビット列(以下、識別用ビット列)に基づき、その識別用ビット列と予め対応づけられたオブジェクト(例えば、仮想オブジェクトOBJ1に対応する画像)を表示対象として選択する。そして、情報処理部31は、その処理をステップ112に進める。内部1ビットによってマーカ60の方向についての情報も利用できるので、オブジェクトの方向と当該内部ビットとの対応づけを行なってもよい。なお、本実施形態では、内部ビット1ビットと外部9ビットとを組み合わせた10ビットのビット列を、識別用ビット列として機能させて、オブジェクトと対応づけた。しかし、必要に応じて、例えば、外部ビットのみを、オブジェクトと対応づける識別用ビットとして機能させてもよい。
【0150】
ステップ112において、情報処理部31は、識別用ビット列に応じたオブジェクトの画像を表示し、このメインループ処理を終了する。なお、このメインループ処理の終了後、
情報処理部31は、その他の設定(例えば、入力画像に係るフレーレート)などに基づき、必要に応じて、新たな入力画像に対してメインループ処理を実行する。外側撮像部23が、逐次的、連続的に入力画像を読み込みメインループ処理を実行することで、連続的かつ/またはリアルタイムの態様で、仮想オブジェクトと実世界画像との重畳的な表示を提供し得る。
【0151】
(例示的な実施形態によって奏される効果の一例)
(1)まず、マーカ60の2段階読み取りが達成されることで、マーカ60の認識処理に伴う負荷が軽減されつつも、マーカ60の認識精度の良さは担保されるシステムが提供された。処理の負荷という点では、撮像部で撮像された図柄領域の一部について認識ができない場合、または誤りを含んで認識された場合であっても、はじめから図柄領域全体に対して画像認識を行う必要がないため、処理負荷が軽減される。このマーカ60の2段階読みにおいて、任意の方向からみて画素が不鮮明になりにくい中央領域A1が先に認識されることは、外側領域A2ほど厳しい認識条件が要求されることなく、より信頼性の高い認識を提供し得る。
(2)この中央領域A1を認識するための第1の閾値が、画像全体の画素値から算出されることで、周囲環境の変化に対応できる。したがって、従来より安定した認識結果を達成し得る。
(3)マーカ60の検出も第1の閾値を用いることで、第1の領域における識別情報を検出するときに用いるものを流用できる。
(4)認識を2段階に分け、中央領域の周辺に位置する外側領域にのみの認識に誤り検出の処理を追加することで、処理負荷を増やさずにつぶれやすい周辺の外側領域についても精度良く認識することが可能となる。
【0152】
(変形例等)
他の実施形態において、情報処理部31は、中央領域A1と外側領域A2の両方の情報を検出(取得)して、中央領域A1から得られた情報が所定の条件を満たす場合にのみ、中央領域A1と外側領域A2から得られた情報を用いて所定の情報処理を行ってもよい。このような構成において、別の実施形態では、情報処理部31は、外側領域A2から得られた情報のみを用いて所定の情報処理を行うようにしてもよい。さらに、情報処理部31は、外側領域A2から得られた情報のみを用いて所定の情報処理を行う場合には、中央領域A1から得られる識別情報が予め定める識別情報と一致するかを判定してもよく、中央領域A1から得られる画像のパターンが予め定める画像のパターンと一致するか否かを判定してもよい。
【0153】
また、上記実施形態では、外側撮像部23によってリアルタイムに撮像される実世界画像に基づいて上側LCD22に立体画像を表示しているが、他の実施形態では、外側撮像部23や外部のステレオカメラ等によって過去に撮像された動画像データに基づいて上側LCD22に立体画像を表示するようにしてもよい。
【0154】
また、上記実施形態では、外側撮像部23がゲーム装置10に予め搭載されているが、他の実施形態では、ゲーム装置10に着脱可能な外付け型のカメラを利用してもよい。
【0155】
また、上記実施形態では、上側LCD22がゲーム装置10にあらかじめ搭載されているが、他の実施形態では、ゲーム装置10に着脱可能な外付け型の立体視ディスプレイを利用してもよい。
【0156】
また、上記実施形態では、ゲーム装置10を用いて実世界画像に仮想オブジェクトを合成表示しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例えば、PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ等)を用いて実世界画像に仮想オブジェクトを合成表示してもよい。
【0157】
また、上記実施形態では、一台の装置(ゲーム装置10)のみによって
情報処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が情報処理を分担して実行するようにしてもよい。
【0158】
なお、汎用的なプラットフォームにおいて本発明の情報処理プログラム等が使用される場合には、当該情報処理プログラムが、当該プラットフォームにおいて標準的に提供されるプログラムモジュールを用いることを前提として提供されてもよい。上述のようなモジュールによって機能が補完されることを前提に、上記情報処理プログラムから上述のようなモジュールに対応する機能を除いたものは、実質的にこの情報処理プログラムに相当すると理解されるべきである。
【0159】
また、本実施形態においては、外側撮像部23により撮像したカメラ画像と仮想オブジェクト(例えば、オブジェクトOBJ1など)とを重ね合わせて上側LCD22に表示させるビデオシースルー方式を説明したが、本発明はこれに限定されない。例えば、光学シースルー方式を実現する構成であってもよい。
【0160】
光学シースルー方式は、少なくとも撮像部を備えたユーザの頭部に装着する表示装置(以下、ヘッドマウンドディスプレイ)を用いる。ヘッドマウンドディスプレイを装着したユーザは、メガネのレンズ部分に相当する位置を有する表示部(画面)を通して実世界を視認できる。この表示部は、実世界を光学的に透過してユーザの眼に直接導くことが可能な素材によって構成されている。他方で、この表示部は、コンピュータにより生成した仮想オブジェクトの画像を表示させることができる。さらに、この表示部は液晶表示装置等を備え、この液晶表示装置等にコンピュータにより生成した仮想オブジェクトの画像を表示させ、この液晶表示装置からの光を(例えば、ハーフミラー等で反射させて)ユーザの網膜に導くことができるようになっている。これにより、ユーザは、実世界と仮想オブジェクトの画像とが光学的に重ね合わせられた像を視認することができる。なお、ヘッドマウンドディスプレイに備えられたカメラは実世界に配置されたマーカ60を検出するために用いられる。また、他の光学シースルー方式として、ハーフミラーを使用せずに表示部に重ね合わせて透過型液晶表示装置を備える方式があるが、本発明はこの方式を採用してもよい。この場合には、透過型液晶表示装置に仮想オブジェクトの画像を表示することで、表示部に透過された実世界と透過型液晶表示装置に表示された仮想オブジェクトの画像とが重ね合わされてユーザに視認される。
【0161】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。ここで、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて均等な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用されるすべての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。