説明

画像処理プログラムおよび画像処理装置

【構成】 ゲーム装置(12)のコンピュータ(40)は、たとえば描画バッファ(136)から描画データを読み出し、その描画データに含まれるピクセル毎の色データ(R0,G0,B0)と奥行き値(Z)とを用いて仮想3次元画像を表示する。撮影指示が入力されたとき、操作情報に基づいてピント合わせ位置を検出する(S23)。描画データに含まれる各ピクセル(Dn)の奥行き値(DZ)と、当該ピント合わせ位置の奥行き値(PZ)との差分を算出し(S25,S29)、ぼかし対象ピクセルについて、ぼかし処理した色データを生成し(S31,S33,S35,S37)、ピクセル毎に、演算バッファ(138)に書き込む。コンピュータは、演算バッファに格納されている各ピクセルの色データに基づいて、ぼかし画像を含む表示画像データを生成する(S37,S43)。
【効果】 より自然なぼかし表現を実現することができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は画像処理プログラムおよび画像処理装置に関し、特にたとえば、ぼかしを加えて現実に近い画像表現を実現する、画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
たとえば、特許文献1には、各ピクセルの画像データがその周囲のピクセルに与える影響度の情報をぼかし値としてピクセル単位で記憶し、ピクセル毎のぼかし値に従うぼかし処理を施すことで、ぼかし処理が行われた画像を表示することが記載されている。このぼかし値は、たとえばピクセル毎のZ値と被写界深度との差等を演算することにより求められる。
【0003】
また、特許文献2には、3次元図形の画素毎に保持しているZ値と被写界深度との偏差に基づいて当該画素の複写画素距離を算出し、当該画素から所定方向に複写画素距離だけ離れた複数の近隣画素に当該画素の輝度値を等分割して分散させることにより、ぼかし処理を行うことが記載されている。
【特許文献1】特開平10−222694 [G06T 15/00, 15/40]
【特許文献2】特開平11−242753 [G06T 15/00, 17/00, 15/40]
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記特許文献1は、各ピクセルがその周囲のピクセルに与える影響度をぼかし値として算出するものであるが、各ピクセルをぼかす範囲を算出するものではなかった。つまり、特許文献1は、各ピクセルをぼかすぼかし範囲がその周囲のピクセルに固定的に決められていた。そのため、各ピクセルのぼかし範囲が画一的になり、ぼかし表現が不自然なものになってしまうといった問題があった。
【0005】
また、上記特許文献2は、画素毎のZ値と被写界深度との偏差に基づいて算出された複写画素距離に応じて輝度を分散させる近隣画素を決定するものであり、ぼかし範囲を算出するものではない。つまり、特許文献2は、輝度を分散させる近隣画素の数が予め決められている(たとえば4つ)。したがって、特許文献2にも特許文献1と同様の問題があった。
【0006】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラムおよび画像処理装置を提供することである。
【0007】
この発明の他の目的は、より自然なぼかし表現を実現することのできる、画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【0008】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0009】
第1の発明は、ピクセル毎に色データと奥行き値とを含む描画データを用いて仮想3次元画像を表示する画像処理装置のコンピュータに、ピント合わせ位置を検出する検出ステップ、描画データに含まれる各ピクセルの奥行き値とピント合わせ位置の奥行き値との差分をピクセル毎に算出し、当該差分に基づいてぼかし範囲を算出するぼかし範囲算出ステップ、ぼかし範囲に基づいて特定されたぼかし対象ピクセルについてぼかし処理した色データを生成する色データ生成ステップ、および色データ生成ステップで生成した色データに基づいて表示画像データを生成する表示画像生成ステップを実行させる、画像処理プログラムである。
【0010】
第1の発明では、画像処理プログラムは、実施例ではゲーム装置(12)のコンピュータ(40)において実行される。コンピュータ(40)は、たとえば描画バッファ(136)から描画データを読み出し、その描画データに含まれるピクセル毎の色データ(R0,G0,B0)と奥行き値(Z)とを用いて仮想3次元画像を表示する。コンピュータは、検出ステップ(S23)で、たとえば操作情報に基づいて、仮想3次元画像を撮影するときの、ピント合わせ位置を検出する。ぼかし範囲算出ステップ(S25,S29)において、コンピュータは、描画データに含まれる各ピクセル(Dn)の奥行き値(DZ)と、同じく描画データから読み出した当該ピント合わせ位置の奥行き値(PZ)との差分をピクセル毎に算出し、上記差分に基づいてぼかし範囲を算出する。色データ生成ステップ(S31,S33,S35,S37)において、ぼかし範囲に含まれるぼかし対象ピクセルについて、たとえば拡散値によって描画データに含まれていた色データを修飾するなどの手法で、ぼかし処理した色データを生成する。ただし、拡散値とは、ピクセル毎のぼかしの程度に関する値であり、たとえば、上記差分に相関する値である。生成した色データは、ピクセル毎に、たとえば演算バッファに書き込まれる。表示画像生成ステップ(S43)においては、コンピュータは、そのような描画バッファに格納されている各ピクセルの色データに基づいて、ぼかし画像を含む表示画像データ(出力色データ)を生成する。
【0011】
第1の発明によれば、各ピクセル(Dn)の奥行き値(DZ)とピント合わせ位置の奥行き値(PZ)との差分に基づいて算出されるぼかし範囲によってぼかし対象ピクセルを特定し、そのぼかし対象ピクセル毎にその差分に応じてぼかし処理した色データを生成するようにしているので、より自然なぼかし表現を実現することができる。
【0012】
第2の発明は、第1の発明に従属し、色データ生成ステップは、ぼかし対象とするピクセルを特定するぼかし対象ピクセル特定ステップを含む、画像処理プログラムである。
【0013】
第2の発明では、コンピュータは、色データ生成ステップで、ぼかし対象ピクセル特定ステップ(S35,S37)を実行して、ぼかし処理すべき対象ピクセルを特定する。第2の発明によれば、ぼかし対象となるピクセルを容易に特定できる。
【0014】
第3の発明は、第2の発明に従属し、ぼかし対象ピクセル特定ステップは、ぼかし範囲と予め設定されているぼかし形状データとを照合してぼかし対象ピクセルを特定する照合ステップを含む、画像処理プログラムである。
【0015】
第3の発明では、コンピュータは、ぼかし範囲と、予め設定されているぼかし形状データ(たとえば、6角形のような)とを照合する照合ステップ(S35)を実行することによって、ぼかし対象ピクセルを特定する。第3の発明によれば、ぼかし形状を変更すれば、ぼかし対象となるピクセルの範囲(または範囲の形状)を容易に変更することができる。
【0016】
第4の発明は、第3の発明に従属し、色データ生成ステップは、ぼかし範囲算出ステップで算出されたぼかし範囲に含まれるピクセルの拡散値を算出する拡散値算出ステップ、および照合ステップでぼかし対象とされたピクセルの描画データに含まれる色データを拡散値に基づいて変更する色データ変更ステップを含む、画像処理プログラムである。
【0017】
第4の発明では、コンピュータは、拡散値算出ステップ(S31,S33)において、ぼかし範囲算出ステップで算出されたぼかし範囲に含まれるピクセルの拡散値(DR,DG,DB)を算出する。そして、色データ変更ステップ(S37)で、照合ステップ(35)でぼかし対象とされたピクセルの描画データに含まれる色データを拡散値に基づいて変更する。たとえば、R1=R1+DR,G1=G1+DG,B1=B1+DB。重みデータH+DH。第4の発明によれば、ぼかしの程度に応じてぼかし処理した色データ(および必要に応じて重みデータも)を簡単に計算することができる。
【0018】
第5の発明は、第4の発明に従属し、拡散値算出ステップは、描画データに含まれる各ピクセルの色データの大きさに比例しかつぼかし範囲の大きさに反比例する演算式に基づいて重みを算出する重み算出ステップを含み、重みに基づいて拡散値を算出する、画像処理プログラムである。
【0019】
第5の発明では、コンピュータは、まず、重み(DH)を計算し、その重みに基づいて拡散値を計算する。実施例では、各色要素R,G,Bをベクトルのように見立てて、その大きさで光の強さを表現するようにしている。このいわば「色ベクトル」の大きさを表す係数値が、「重み」である。第5の発明によれば、ピクセルの色データの大きさに比例しかつぼかし範囲の大きさに反比例するようにそのピクセルをぼかす程度を算出することができるので、ぼかし表現をより自然なものにすることができる。
【0020】
第6の発明は、第1の発明に従属し、撮影指示が入力されたかどうか判断する判断ステップをコンピュータにさらに実行させ、検出ステップは、判断ステップで撮影指示が入力されたと判断したとき、ピント合わせ位置を検出し、色データ生成ステップは、ぼかし対象ピクセルについて、描画データに含まれる色データを拡散値で変更する色データ変更ステップを含む、画像処理プログラムである。
【0021】
第6の発明では、コンピュータは、撮影指示は、たとえばユーザが操作装置(ゲーム装置の場合にはコントローラ)を操作することによってコンピュータに入力することができるが、コンピュータは、判断ステップ(S9)において、そのような撮影指示が入力されたかどうか判断する。撮影指示が入力されたと判断したとき、コンピュータは、検出ステップ(S23)で、たとえばその操作情報に基づいて、仮想3次元画像を撮影するときの、ピント合わせ位置を検出する。そして、色データ生成ステップでは、ぼかし対象ピクセルのそれぞれについて描画データに含まれる色データを拡散値に基づいて変更することによって、ぼかし処理した色データを生成する。第6の発明によれば、ぼかし画像のための色データを簡単に求めることができる。
【0022】
第7の発明は、第1ないし第6の発明のいずれかに従属し、ユーザによる操作情報を取得する操作情報取得ステップをコンピュータにさらに実行させ、そして検出ステップでは、操作情報に基づいて指定されたピクセルを特定し、当該ピクセルの奥行き値をピント合わせ位置として検出する、画像処理プログラムである。
【0023】
第7の発明では、コンピュータは、操作情報取得ステップ(S5)において、ユーザによる操作情報を取得すし、そして検出ステップ(S23)では、操作情報に基づいて、ユーザがピントを合わせるピクセルであると指定したピクセルを特定し、当該ピクセルの奥行き値をピント合わせ位置として検出する。第7の発明によれば、仮想3次元画像中において、ピント合わせ位置として任意の位置をユーザに自由に選択させることができる。
【0024】
第8の発明は、ピクセル毎に色データと奥行き値とを含む描画データを用いて仮想3次元画像を表示する画像処理装置であって、ピント合わせ位置を検出する検出手段、描画データに含まれる各ピクセルの奥行き値とピント合わせ位置の奥行き値との差分をピクセル毎に算出し、当該差分に基づいてぼかし範囲を算出するぼかし範囲算出手段、ぼかし範囲に基づいて特定されたぼかし対象ピクセルについてぼかし処理した色データを生成する色データ生成手段、および色データ生成ステップで生成した色データに基づいて表示画像データを生成する表示画像生成手段を備える、画像処理装置である。
【0025】
第8の発明では、画像処理装置として、実施例のゲーム装置(12)が想定されている。そして、このゲーム装置のコンピュータ(40)は、たとえば描画バッファ(136)から描画データを読み出し、その描画データに含まれるピクセル毎の色データ(R0,G0,B0)と奥行き値(Z)とを用いて仮想3次元画像(ゲーム画像)を表示する。また、各手段はこのコンピュータによって実行されるプログラムステップとして特定できる。たとえば撮影指示に応答して、検出手段(40,S23)は、仮想3次元画像を撮影するときの、ピント合わせ位置を検出する。ぼかし範囲算出手段(S25,S29)は、コンピュータは、描画データに含まれる各ピクセル(Dn)の奥行き値(DZ)と、同じく描画データから読み出した当該ピント合わせ位置の奥行き値(PZ)との差分をピクセル毎に算出し、上記差分に基づいてぼかし範囲を算出する。色データ生成手段(S31,S33,S35,S37)によって、ぼかし範囲に含まれるぼかし対象ピクセルについて、たとえば拡散値によって描画データに含まれていた色データを修飾するなどの手法で、ぼかし処理した色データを生成し、それをピクセル毎に、たとえば演算バッファに書き込む。表示画像生成手段(40,S43)は、そのような描画バッファに格納されている各ピクセルの色データに基づいて、ぼかし画像を含む表示画像データを生成する。
【0026】
第8の発明は、上述の第1の発明の画像処理プログラムと同様の効果を奏する。
【発明の効果】
【0027】
この発明によれば、各ピクセルの奥行き値とピント合わせ位置の奥行き値との差分に基づいて算出されたぼかし範囲によって特定したぼかし対象ピクセルについて、ぼかし処理した色データを生成するようにしているので、より自然なぼかし表現を実現することができる。
【0028】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0029】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12およびコントローラ14を含む。なお、以下に説明する実施例では、画像処理の一例としてゲーム画像処理について説明するが、この発明が適用できる画像処理は、ゲーム画像処理に限られないことに予め留意されたい。この意味で、図1に示すゲームシステム10を画像処理システムと呼び、ゲーム装置12を画像処理装置と呼ぶことができる。
【0030】
図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ14と通信可能に設計されている。また、ゲーム装置12と各コントローラ14とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
【0031】
ゲーム装置12は、略直方体のハウジング16を含み、ハウジング16の前面にはディスクスロット18が設けられる。ディスクスロット18から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク24が挿入されて、ハウジング16内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット18の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット18を点灯または点滅させることが可能である。
【0032】
また、ゲーム装置12のハウジング16の前面の上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット18の近傍には、外部メモリカード用コネクタカバー22が設けられる。この外部メモリカード用コネクタカバー22の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク24から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【0033】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0034】
図1では省略するが、ゲーム装置12のハウジング16の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル26を通してゲーム装置12にモニタ28およびスピーカ30を接続する。このモニタ28およびスピーカ30は典型的にはカラーテレビジョン受像機であり、AVケーブル26によって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置12からの音声信号が音声入力端子に入力される。したがって、カラーテレビ(モニタ)28の画面上にたとえば3次元(3D)ビデオゲームの仮想3次元ゲーム画像が表示され、左右のスピーカ30からゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ28の周辺(この実施例では、モニタ28の上側)には、2つの赤外LED(マーカ)32aおよび32bを備えるマーカ部32が設けられる。このマーカ部32は、電源線34を通してゲーム装置12に接続される。したがって、マーカ部32には、ゲーム装置12から電源が供給される。これによって、マーカ32aおよび32bは発光し、それぞれモニタ28の前方に向けて赤外光を出力する。
【0035】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0036】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザは電源スイッチ20aによってまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク24を選択し、その光ディスク24をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク24に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始める。ユーザはゲーム装置12に入力を与えるためにコントローラ14を操作する。たとえば操作ボタンなどを含む入力手段36のどれかの操作ボタンを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段36に対する操作以外にも、コントローラ14自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0037】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ44(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク24のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【0038】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング16内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0039】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク24からプログラムやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0040】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【0041】
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。
【0042】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0043】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画命令を実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0044】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0045】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ30から出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0046】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ28およびスピーカ30に出力される。したがって、ゲーム画面がモニタ28に表示され、ゲームに必要な音(音楽)がスピーカ30から出力される。
【0047】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0048】
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワーク(図示せず)に接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ダウンロードサーバ(図示せず)からダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶することもできる。
【0049】
また、入出力プロセッサ42aは、コントローラ14から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
【0050】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格に従ってコントローラ14との間で通信を行う。
【0051】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ14とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0052】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング16)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を
必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
【0053】
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
【0054】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【0055】
また、図示は省略するが、ゲーム装置12のハウジング16内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0056】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0057】
また、通常モードとスタンバイモードとの切り替えは、コントローラ14の電源スイッチ86(図3)のオン/オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0058】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク24が排出される。
【0059】
図3(A)および図3(B)は、コントローラ14の外観の一例を示す。図3(A)はコントローラ14の正面、上面および右側面を見せる斜視図であり、図3(B)はコントローラ14の背面、下面および左側面を見せる斜視図である。
【0060】
図3(A)および図3(B)を参照して、コントローラ14は、たとえばプラスチック成型によって形成されたハウジング70を有している。ハウジング70は、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング70(コントローラ14)には、前述のように入力手段(複数のボタンないしスイッチ)36が設けられる。具体的には、図3(A)に示すように、ハウジング70の上面には、十字キー72,1ボタン74,2ボタン76,Aボタン78,−(マイナス)ボタン80,HOMEボタン82,+(プラス)ボタン84および電源スイッチ86が設けられる。また、図3(B)に示すように、ハウジング70の下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ88が設けられる。
【0061】
十字キー72は、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0062】
1ボタン74および2ボタン76は、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン74および2ボタン76は、Aボタン78およびBトリガースイッチ88と同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0063】
Aボタン78は、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタン78は、ゲーム画面上でポインタ(指示画像)が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令(ゲームのコマンド)を入力することができる。
【0064】
−ボタン80、HOMEボタン82、+ボタン84および電源スイッチ86もまた、押しボタンスイッチである。−ボタン80は、ゲームモードを選択するために使用される。HOMEボタン82は、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン84は、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ86は、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0065】
なお、この実施例では、コントローラ14自体をオン/オフするための電源スイッチは設けておらず、コントローラ14の入力手段36のいずれかを操作することによってコントローラ14はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0066】
Bトリガースイッチ88もまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ14で選択した位置を指定したりするために使用される。また、Bトリガースイッチ88を押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ88は、通常のBボタンと同様に機能し、Aボタン78によって決定したアクションやコマンドなどを取り消すなどのために使用される。
【0067】
また、図3(A)に示すように、ハウジング70の後端面に外部拡張コネクタ90が設けられ、また、図3(B)に示すように、ハウジング70の上面であり、後端面側にはインジケータ92が設けられる。外部拡張コネクタ90は、コントローラ14とは異なる拡張コントローラ(図示せず)を接続するためなどに使用される。インジケータ92は、たとえば、4つのLEDで構成される。たとえば、インジケータ92では、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、コントローラ14の識別情報(コントローラ番号)を示すことができる。また、インジケータ92では、点灯させるLEDの個数によってコントローラ14の電池残量を示すこともできる。
【0068】
さらに、コントローラ14は、撮像情報演算部108(図4参照)を有しており、図3(B)に示すように、ハウジング70の先端面には撮像情報演算部108の光入射口94が設けられる。また、コントローラ14は、スピーカ114(図4参照)を有しており、このスピーカ114は、図3(A)に示すように、ハウジング70の上面であり、1ボタン74とHOMEボタン82との間に設けられる音抜き孔96に対応して、ハウジング70内部に設けられる。
【0069】
なお、図3(A)および図3(B)に示したコントローラ14の形状や、各入力手段36の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変されてもよい。
【0070】
図4はコントローラ14の電気的な構成を示すブロック図である。この図4を参照して、コントローラ14はプロセッサ100を含み、このプロセッサ100には、内部バス(図示せず)によって、外部拡張コネクタ90、入力手段36、メモリ102、加速度センサ104、無線モジュール106、撮像情報演算部108、LED110(インジケータ92)、バイブレータ112、スピーカ114および電源回路116が接続される。また、無線モジュール106には、アンテナ118が接続される。
【0071】
なお、簡単のため、図4では省略するが、上述したように、インジケータ92は4つのLED110によって構成される。
【0072】
プロセッサ100は、コントローラ14の全体制御を司り、入力手段36、加速度センサ104および撮像情報演算部108によって入力された情報(入力情報)を、入力データとして無線モジュール106およびアンテナ118を介してゲーム装置12に送信(入力)する。このとき、プロセッサ100は、メモリ102を作業領域ないしバッファ領域として用いる。また、上述した入力手段36(72‐84)からの操作信号(操作データ)は、プロセッサ100に入力され、プロセッサ100は操作データを一旦メモリ102に記憶する。
【0073】
加速度センサ104は、図3に示すようにコントローラ14の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ104は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0074】
たとえば、加速度センサ104は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ100に入力する。たとえば、加速度センサ104は、各軸方向の加速度を、−2.0G〜2.0G(Gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ100は、加速度センサ104から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ102に記憶する。
【0075】
プロセッサ100は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
【0076】
なお、図3では省略したが、この実施例では、加速度センサ104は、ハウジング70内部の基板上の十字キー72が配置される付近に設けられる。
【0077】
ここで、加速度センサ104から出力される加速度データに基づいて、ゲーム装置12のプロセッサ(たとえば、CPU40)またはコントローラ14のプロセッサ(たとえば、プロセッサ100)などのコンピュータが処理を行うことによって、コントローラ14に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【0078】
たとえば、コントローラ14に1軸の加速度センサ104を搭載し、当該コントローラ14が静的な状態であることを前提としてコンピュータ側で処理する場合、すなわち、加速度センサ104によって検出される加速度が重力加速度のみであるとして処理する場合、コントローラ14が現実に静的な状態であれば、検出された加速度データに基づいてコントローラ14の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ104の検出軸が鉛直下方向である状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかを知ることもできる。
【0079】
また、コントローラ14に多軸の加速度センサ104を搭載する場合には、さらに各軸の加速度データに対して処理を施すことによって、重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ104の出力に基づいて、プロセッサ100がコントローラ14の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータの算出処理を行うことなく、加速度センサ104からの出力に基づいて、おおよその傾きを推定できるような処理としてもよい。このように、加速度センサ104をプロセッサ100と組み合わせることによって、コントローラ14の傾き、姿勢または位置を判定することができる。
【0080】
一方、加速度センサ104が動的な状態を前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動きの方向などを知ることができる。具体的には、加速度センサ104を搭載するコントローラ14がユーザの手で動的に加速されて動かされている場合に、加速度センサ104によって生成される加速度データを処理することによって、コントローラ14の様々な動きおよび/または位置を算出することができる。
【0081】
なお、加速度センサ104が動的な状態であることを前提とする場合であっても、加速度センサ104の動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることができる。他の実施例では、加速度センサ104は、加速度データをプロセッサ100に出力する前に、内蔵の加速度検出手段から出力される加速度信号(加速度データ)に対して所望の処理を行うための、組込み式の信号処理装置また他の種類の専用の処理装置を備えてもよい。たとえば、組込み式または専用の処理装置は、加速度センサ104が静的な加速度(たとえば、重力加速度)を検出するためのものである場合、検知された加速度データをそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0082】
無線モジュール106は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ118から放射する。つまり、入力データは、無線モジュール106によって微弱電波信号に変調されてアンテナ118(コントローラ14)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ14からの入力データを取得することができる。そして、CPU40は、取得した入力データとアプリケーションプログラム(ゲームプログラム)とに従ってアプリケーションの処理(ゲーム処理)を行う。
【0083】
さらに、上述したように、コントローラ14には、撮像情報演算部108が設けられる。この撮像情報演算部108は、赤外線フィルタ108a、レンズ108b、撮像素子108cおよび画像処理回路108dによって構成される。赤外線フィルタ108aは、コントローラ14の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ28の表示画面近傍(周辺)に配置されるマーカ32aおよび32bは、モニタ28の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ108aを設けることによってマーカ32aおよび32bの画像をより正確に撮像することができる。レンズ108bは、赤外線フィルタ108aを透過した赤外線を集光して撮像素子108cへ出射する。撮像素子108cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ108bによって集光された赤外線を撮像する。したがって、撮像素子108cは、赤外線フィルタ108aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子108cによって撮像された画像を撮像画像と呼ぶ。撮像素子108cによって生成された画像データは、画像処理回路108dで処理される。画像処理回路108dは、撮像画像内における撮像対象(マーカ32aおよび32b)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データ(後述するマーカ座標データ)としてプロセッサ100に出力する。なお、画像処理回路108dにおける処理については後述する。
【0084】
図5は、コントローラ14を用いてゲームプレイするときの状態を概説する図解図である。図5に示すように、ビデオゲームシステム10でコントローラ14を用いてゲームをプレイする際、プレイヤは、一端がコントローラ14に結び付けられたストラップ120を一方の手の手首に巻いた状態で、その同じ手の手のひらでコントローラ14を把持する。厳密に言うと、プレイヤは、コントローラ14の先端面(図3で示す撮像情報演算部108が撮像する光の入射口94側)がマーカ32aおよび32bの方を向く状態でコントローラ14を把持する。これらマーカ32aおよび32bは、図示したように、モニタ28の画面の横(水平)方向と平行に配置されている。この状態で、プレイヤは、コントローラ14が指示する画面上の位置を変更したり、コントローラ14と各マーカ32aおよび32bとの距離を変更したりすることによってゲーム操作を行う。
【0085】
図6は、マーカ32aおよび32bと、コントローラ14との視野角を説明するための図である。図6に示すように、マーカ32aおよび32bは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部108の撮像素子108cは、コントローラ14の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ32aおよび32bの視野角θ1は、共に34°(半値角)であり、一方、撮像素子108cの視野角θ2は41°である。プレイヤは、撮像素子108cが2つのマーカ32aおよび32bからの赤外光を受光することが可能な位置および向きとなるように、コントローラ14を把持する。具体的には、撮像素子108cの視野角θ2の中にマーカ32aおよび32bの少なくとも一方が存在し、かつ、マーカ32aまたは32bの少なくとも一方の視野角θ1の中にコントローラ14が存在する状態となるように、プレイヤはコントローラ14を把持する。この状態にあるとき、コントローラ14は、マーカ32aおよび32bの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ14の位置および向きを変化させることによってゲーム操作を行うことができる。
【0086】
なお、コントローラ14の位置および向きがこの範囲外となった場合、コントローラ14の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、必要な場合、上記範囲を「操作可能範囲」と呼ぶ。
【0087】
操作可能範囲内でコントローラ14が把持される場合、撮像情報演算部108によって各マーカ32aおよび32bの画像が撮像される。すなわち、撮像素子108cによって得られる撮像画像には、撮像対象である各マーカ32aおよび32bの画像(対象画像)が含まれる。図7は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路108dは、各マーカ32aおよび32bの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0088】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路
108dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路108dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ32aおよび32bに対応する画像32a’および32b’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像32a’および32b’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0089】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路108dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子108cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子108cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0090】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0091】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路108dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ100によって入力データに含まれ、ゲーム装置12に送信される。
【0092】
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ14の指示位置P(指示座標PX,PY)と、コントローラ14からマーカ32aおよび32bまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ14の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ14と、マーカ32aおよび32bとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ14とマーカ32aおよび32bとの間の距離を把握できる。
【0093】
図1‐図7で説明した実施例のゲームシステム10で一例としてゲームおよびそれのための画像処理を実行する際のメモリマップの一例が図8に示される。メインメモリ42eはプログラム記憶領域122およびデータ記憶領域124を含む。プログラムおよびデータの一部は、光ディスク22から一度に全部または必要に応じて部分的にかつ順次的に読み出され、メインメモリ48に記憶され、図2に示すCPU40やシステムLSI42内のGPU42bやDSP42cなどで処理される。なお、図8にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。
【0094】
プログラム記憶領域122において記憶領域126には、この実施例のゲームプログラムでゲーム画像を表示するためのゲーム画像表示プログラムが記憶される。記憶領域128にはコントローラ14の入力手段36の操作信号やコントローラ14を動かしたときのマーカ座標データや加速度データなどを含む操作情報を取得するための操作情報取得プログラムが記憶されている。このプログラムによって、CPU40にはコントローラ14からの操作情報(「コントローラデータ」ということもある。)が取得される。上述のように、Bluetooth通信ユニット74を介してコントローラ14からのコントローラデータが定期的に受信される。受信されたコントローラデータは、データ記憶領域124の作業データ記憶領域136に記憶される。コントローラデータは、上述のようにコントローラ14の入力データを含み、したがって、コントローラデータは、コントローラ14の加速度センサ104で検出された加速度を示すデータを含む。この操作情報取得プログラムによって、1フレームごとに、コントローラデータからコントローラ14の加速度データを取得する。なお、上述のように、加速度センサ104によって、各軸の加速度はゲーム装置12の1フレーム(たとえば1/60秒)よりも短いサンプリング周期(たとえば1/200秒)で検出されるので、コントローラデータには各軸ごとに複数の加速度値が含まれている。したがって、平均値、最大値、最小値などのような適宜な値を抽出することによって、現フレームにおける各軸の加速度を取得する。取得されたコントローラ14の各軸加速度は、同じく作業データ記憶領域134に記憶される。
【0095】
記憶領域130にはゲーム処理のために必要な、画像表示プログラムを除く、プログラム(ゲーム処理プログラム)が記憶されている。
【0096】
記憶領域132には、この実施例の特徴であるぼかし画像生成処理プログラムが記憶されている。実施例のゲームでは、上述のコントローラ14を用いて「撮影操作」を行なったとき、ゲーム画像(たとえば、仮想3次元画像)を静止画(写真)として切り出すような画像処理を実行するのであるが、「ぼかし画像生成処理」とは、その静止画を切り出すとき、実際の写真のように、ピントが合った場所や物の画像は鮮明に映し出すが、そのピント位置の前後ではいわゆる「ピンぼけ」のようにぼけたような画像(これを「ぼかし画像」という。)に表現するような画像処理である。具体的には、後述の図10に示すフロー図に従って実行される。
【0097】
このぼかし画像生成処理プログラムに含まれる各プログラムコンポーネントを簡単に説明すると、ピント合わせ位置検出プログラムは、ユーザがコントローラ14で撮影操作したときのピントを合わせた位置P(PX,PY)を特定するためのプログラムである。ぼかし範囲算出プログラムは、ピクセル毎にぼかし画像を生成する範囲(「ぼかし範囲」または「ぼかしの大きさ」:後述の「SZ)」)を計算するためのプログラムである。
【0098】
重み算出プログラムは、ぼかし処理のために必要な各色毎の拡散値(後述)を計算するのに必要な係数である。この実施例では、各色要素R,G,Bをベクトルのように見立てて、そのベクトルの大きさで光の強さを表現する、いわば「色ベクトル」のような概念を利用し、その色ベクトルの大きさで各色の拡散値を決定するようにしている。そして、この色ベクトルの大きさを示す係数が「重み」である。
【0099】
拡散値とは、各ピクセル各色の拡散の程度を示す値でこの拡散値が大きいほど、ぼかしの程度が大きくなる。
【0100】
形状照合プログラムは、ぼかし形状と上述のぼかし範囲とを照合して実際にぼかし対象とするピクセルを確定するためのプログラムである。ここで、「ぼかし形状」とは、ぼかし画像の外形形状を規定する形状であり、矩形や3角形の多角形、さらには円形、菱形、星形などの比較的単純な任意形状が考えられる。実施例では、後述のように、6角形を想定している。
【0101】
ただし、このような「ぼかし形状」という外形形状を特に規定しないでもぼかし画像生成処理はできるので、この「ぼかし形状」やそれとぼかし範囲(SZ)とを照合する照合プログラムが不要な場合もある。
【0102】
データ記憶領域124の記憶領域134は、上で述べたように、コントローラデータやフラグ、レジスタ、計算結果、パラメータなどの作業データを一時的に保存しておくためのワーキングエリアである。パラメータデータとしては、上述のピント合わせ位置検出プログラムで検出したピント合わせ位置P(PX,PY)、F値、上述のぼかし範囲算出プログラムで計算したぼかし範囲(SZ)、重み算出プログラムで計算した重み(H)、さらには拡散値などがある。なお、F値とは、よく知られているように、f値(焦点距離)/d(レンズの有効口径)で表される「レンズの明るさ」を示す「Fナンバー」または「Fトップス」である。ここで、f値とは焦点距離の範囲を指し、焦点距離が長くなれば被写界深度は浅くなり、ピントの合う範囲が狭くなるため被写体の背景がぼけて被写体がより強調される。そして、F値が大きいほど被写界深度は深くなり、たとえば、F値がたとえば「2.8」のとき被写界深度は浅く、F値をたとえば「4.0」にすると被写界深度が深くなる。
【0103】
なお、この作業データ記憶領域134に、上述の「ぼかし形状」のデータ、たとえば6角形のデータを一時的に保存するようにしてもよい。
【0104】
記憶領域136は、描画バッファであり、モニタ28の画面上でゲーム画像を形成するための全てのピクセル(ドット)(たとえば、640×456ドット)についての、位置座標(X,Y)、色データ(R,G,B)および奥行き値(Z値)(ZD)を記憶する。なお、この描画バッファ136の色データはデフォルト値であり、ぼかし画像生成処理においてこの色データを修飾してぼかし画像を含む実際の表示用(出力用)ピクセルデータを生成する。
【0105】
記憶領域138は、演算バッファであり、モニタ28の画面上で実際にゲーム画像を形成する全てのピクセル(ドット)についての、位置座標(X,Y)、色データ(R,G,B)および重み(H)を記憶する。
【0106】
図9に示すフロー図を参照して、この実施例におけるゲーム動作の一例について説明する。図9のステップS1からS13の処理は単位時間(1フレーム)ごとに実行される。処理を開始すると、ステップS1で、CPU40は初期設定動作を実行し、図8のデータ記憶領域124の作業データ記憶領域134や描画バッファ136に必要なデータを、たとえばプログラム記憶領域122から読み出すなどして、設定する。
【0107】
ステップS3でCPU40は、図8に示す領域126に読み出して展開しているゲーム画像表示プログラムを実行することによって、描画バッファ136に読み出した各ピクセルの色データ(R0,G0,B0)や奥行き値(ZD)に従ってゲーム画像をモニタ28の画面上に表示する。具体的には、描画バッファ136のデフォルトの色データ(R0,G0,B0)や奥行き値(ZD)を演算して、各ピクセルの表示用色データ(R1,G1,B1)や重み(H)を演算バッファ138に書き込み、その演算バッファ138のデータをAVIC56(図2)に出力することによって、仮想3次元のゲーム画像を表示する。
【0108】
続くステップS5で、CPU40は、入出力プロセッサ42a(図2)からデータを受け取り、ユーザまたはプレイヤが操作したコントローラ14の操作情報を取得する。この操作情報は、入力手段36の各操作ボタンや操作スイッチの操作信号や、マーカ座標データ、加速度データなどを含み、ステップS7では、たとえば「Wii」(登録商標)などとしてよく知られているゲーム装置と同様に、そのようにして取得した操作情報に基づいてゲーム処理、たとえば、プレイヤキャラクタを移動させたりする処理、プレイヤキャラクタに特定のアクションを行なわせたりする処理を実行する。ただし、このステップS7における具体的なゲーム処理そのものは発明の要点ではないので、ここでは詳細な説明は省略する。
【0109】
次のステップS9で、コンピュータないしCPU40は、ステップS5で取得した操作情報に撮影操作の情報が含まれていたかどうかを検出することによって、撮影指示があったかどうか、判断する。実施例では、たとえば図5に示すように、コントローラ14の先端の受光部をモニタ28の画面内に向け、かつAボタン78(図3)が操作されたとき、ユーザまたはプレイヤが撮影指示を入力したものと判断する。
【0110】
ここで、「撮影」とは、上述の仮想3次元画像であるゲーム画像をその「撮影」タイミングで静止画として切り出す処理または操作を意味し、写真を撮る動作に相当するところから、「撮影」と呼ぶようにしたものである。ぼかし処理をしない、写真ないし静止画の一例が、図11に示されている。このように、3次元画像を写真のように切り出すことを撮影と呼ぶが、図11は、ぼかし処理を適用していない、元の写真であるので、全ての物(オブジェクト)にピントが合った状態として表現されている。
【0111】
この実施例では、このような「写真」において、ピントを奥行き方向のどこに合わせるかによって、ピントがはずれた部分の画像をぼかし処理することによって、通常のカメラと同様に自然な遠近感を表現しようとするものである。「ぼかし処理」はステップS11で実行されるが、このステップS11は図10に詳細に示されている。
【0112】
なお、CPU40は、ステップS13で、たとえばステップS5で取得した操作情報に基づいてユーザがゲーム終了を指示したか、もしくはステップS7でゲーム終了が必要になったかを判断し、“NO”なら先のステップS3に戻り、ステップS3‐S13を繰り返し実行するが、“YES”ならそのまま終了処理する。
【0113】
図10のステップS21で、コンピュータすなわちCPU40は、演算バッファ138(図8)をクリアして以下の処理に備える。
【0114】
続くステップS23で、CPU40は、ステップS5(図9)で取得した操作情報(マーカ座標データ等に基づいて算出された画面上の指示位置。コントローラ14の先端が向けられている位置)に基づいて、Aボタン78が操作されたときの図5に示すピント合わせ位置Pの位置座標(PX,PY)を検出する。この指示位置の検出は先に図6や図7を参照して説明したので、ここでは繰り返さない。
【0115】
続いて、ステップS25において、CPU40は、描画バッファ136に読み出している描画データから、ピント合わせ位置Pにおける奥行き値PZを検出する。
【0116】
そして、ステップS27で、ピクセル数nをn=1に設定し、ステップS41で全部のピクセルを処理したことを検出するまで、ステップS29‐S41を繰り返し実行する。
【0117】
S29では、n番目のピクセルDnの奥行き値DZとステップS25で求めたピント合わせ位置における奥行き値PZとの差分に基づいて、ぼかし処理すべき範囲すなわちぼかしの大きさSZを次式(1)に従って算出する。
【0118】
[数1]
SZ=|(DZ−PZ)×F| …(1)
ただし、Fは上述したF値(Fナンバー)である。
【0119】
このぼかし範囲は、図12に示すように、そのとき対象となっているピクセルD(DX,DY)を中心とする縦SZ横SZの大きさを有する正方形の領域150である。
【0120】
続くステップS31で、CPU40は、次式(2)に従って、そのピクセルDnの重みDHを計算する。上述したように、「重み」は当該ピクセルの光の強さに相関する値であり、その光の強さをベクトル表現したときの大きさである。この重みDHは、したがって、光の強さに比例し、ぼかし範囲(面積)すなわち上記ぼかしの大きさSZに反比例する。
【0121】
【数2】

【0122】
次のステップS33で、ピクセルDnの各色の拡散値DR,DG,DBを次式(3)で算出する。なお、拡散値とは、ぼかしの程度を示す係数であり、上述のぼかしの大きさSZの相関値である。図12に示す中心位置D(DX,DY)がステップS33で対象となっているピクセルDnのことであるが、拡散値は、この中心位置すなわち対象ピクセルのどの程度の範囲までぼかしの影響がでるかという指標であると考えられる。
【0123】
[数3]
DR=R0×DH
DG=G0×DH
DB=B0×DH …(3)
【0124】
続くステップS35で、CPU40は、ぼかし範囲の大きさSZとぼかし形状とを照合する。図12の実施例では、ぼかし範囲150に対して、6角形のぼかし形状152を想定していて、このぼかし範囲150とぼかし形状152との重なった領域(図12で斜め線のハッチングで示す)のピクセルがぼかし対象ピクセルとなる。
【0125】
そして、このぼかし対象ピクセル全てについて、次式(4)に従って、色データR1,G1,B1と重みデータHとを計算して、それを該当のピクセルの色データおよび重みでとして演算バッファ138のそのピクセルの領域に書き込む。
【0126】
[数4]
R1=R1+DR
G1=G1+DG
B1=B1+DB
H=H+DH …(4)
【0127】
その後ステップS39でピクセル番号を順次更新し、最後のピクセル(n=max)まで、上記の計算を繰り返し、演算バッファ138に、モニタ28の画面の全ピクセル、すなわち描画バッファ136の各ピクセルにそのとき実際に描画すべき属性データ(色データ、重みデータ)を書き込む。つまり、全ピクセルの各々毎に、重みを持って拡散した色データとそれに掛けられた重みデータとが蓄積される。
【0128】
そして、次のステップS43で、CPU40は、演算バッファ138に格納されている各ピクセルの色データおよび重みデータに基づいて、次式(5)によって出力色データ(表示画像データ)を計算し、それをAVIC56に出力する。それによって、撮影指示に応じたかつ自然なぼかし処理を施した静止画像すなわち表示画像をモニタ28に表示する。このようにして、(5)式に従って、蓄積された重みで色の蓄積を割ることによって、正しい色情報(色データ)を出力するようにしている。
【0129】
[数5]
出力R=演算バッファの同座標のR1/演算バッファの同座標のH
出力G=演算バッファの同座標のG1/演算バッファの同座標のH
出力B=演算バッファの同座標のB1/演算バッファの同座標のH …(5)
【0130】
このようにして、図11に示すぼかし処理のない写真画像が、たとえば図13または図14に示すようにぼかし処理された写真画像になる。図13の例は、手前の岩にピントが合っており、それより奥の魚(くまのみ)などが全てぼかし処理された画像となっている。図14の例は、ちょうど魚(くまのみ)にピントが合っていて、それの前後でピントがずれている画像である。
【0131】
なお、実施例では、ステップS35におけるぼかしサイズSZとぼかし形状との照合は、たとえば図8の作業データ記憶領域134に設定され得る「照合フラグ」(図示せず)が「1」にセットされているときだけ実行するようにしている。ここで、ぼかし範囲SZの形状は、実施例の正方形以外にも、円形などが考えられる。
【0132】
ただし、このようなぼかしサイズSZとぼかし形状との重なり範囲でぼかし対象ピクセルを確定するようにしなくても、たとえば、デフォルトのぼかし形状を前述の奥行き値の差分の大きさに応じて相似形に変形(たとえば、ぼかし形状の直径を変化させたり縦横の長さを固定比のまま変化させる等)させ、その相似形の範囲内に含まれるピクセルをぼかし処理対象ピクセルとして特定するようにしてもよい。具体的には、ステップS25と同じようにして差分を計算し、その差分の大きさに応じて、そのとき作業データ記憶領域134(図8)から読み出したデフォルトのぼかし形状を大きくしまたは小さくしもしくはそのまま用いて、そのぼかし形状の中に存在するピクセルをぼかし対象ピクセルとして特定する、方法が考えられる。そして、そのようにして決定したぼかし処理対象ピクセルについてのみステップS33およびS37を実行し、ぼかし処理した色データを作成すればよい。
【0133】
なお、上述の実施例では、図9のステップS9において撮影操作があったときにぼかし処理を施した静止(写真)画像を生成するようにしたが、これに限らず、図9のステップS3において表示されるゲーム画像(プレイヤの操作に応じて変化する動画像)に対して上述のぼかし処理を行うようにしてもよい。
【図面の簡単な説明】
【0134】
【図1】図1はこの発明の一実施例のゲームシステムの概要を示す外観図である。
【図2】図2はゲームシステムの電気的構成の一例を示すブロック図である。
【図3】図3は実施例で用いられるコントローラの外観の一例を示す図解図であり、図3(A)は後方上側から見た斜視図であり、図3(B)は前方下側から見た斜視図である。
【図4】図4はコントローラの電気的構成の一例を示すブロック図である。
【図5】図5は実施例のコントローラを用いてゲームをプレイするときの状態を示す図解図である。
【図6】図6は実施例におけるマーカおよびコントローラの視野角を示す図解図である。
【図7】図7は対象画像を含む撮像画像の一例を示す図解図である。
【図8】図8はメモリマップの一例を示す図解図である。
【図9】図9はゲーム装置のCPUのゲーム動作の一例を示すフロー図である。
【図10】図10は図9のぼかし画像生成処理動作の一例を示すフロー図である。
【図11】図11はぼかし処理をしていない元の静止画像(撮影画像)を示す図解図である。
【図12】図12はぼかし範囲(ぼかしの大きさ)とぼかし形状との重なり状態を示す図解図である。
【図13】図13は図12の静止画像(撮影画像)で手前側のピントを合わせたときの画像を示す図解図である。
【図14】図14は図12の静止画像(撮影画像)で魚にピントを合わせたときの画像を示す図解図である。
【符号の説明】
【0135】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
40 …CPU
42e …内部メインメモリ

【特許請求の範囲】
【請求項1】
ピクセル毎に色データと奥行き値とを含む描画データを用いて仮想3次元画像を表示する画像処理装置のコンピュータに、
ピント合わせ位置を検出する検出ステップ、
前記描画データに含まれる各ピクセルの奥行き値と前記ピント合わせ位置の奥行き値との差分をピクセル毎に算出し、当該差分に基づいてぼかし範囲を算出するぼかし範囲算出ステップ、
前記ぼかし範囲に基づいて特定されたぼかし対象ピクセルについてぼかし処理した色データを生成する色データ生成ステップ、および
前記色データ生成ステップで生成した色データに基づいて表示画像データを生成する表示画像生成ステップ
を実行させる、画像処理プログラム。
【請求項2】
前記色データ生成ステップは、ぼかし対象とするピクセルを特定するぼかし対象ピクセル特定ステップを含む、請求項1記載の画像処理プログラム。
【請求項3】
前記ぼかし対象ピクセル特定ステップは、前記ぼかし範囲と予め設定されているぼかし形状データとを照合してぼかし対象ピクセルを特定する照合ステップを含む、請求項2記載の画像処理プログラム。
【請求項4】
前記色データ生成ステップは、前記ぼかし範囲算出ステップで算出された前記ぼかし範囲に含まれるピクセルの拡散値を算出する拡散値算出ステップ、および前記照合ステップでぼかし対象とされたピクセルの前記描画データに含まれる色データを前記拡散値に基づいて変更する色データ変更ステップを含む、請求項3記載の画像処理プログラム。
【請求項5】
前記拡散値算出ステップは、前記描画データに含まれる各ピクセルの色データの大きさに比例しかつ前記ぼかし範囲の大きさに反比例する演算式に基づいて重みを算出する重み算出ステップを含み、前記重みに基づいて前記拡散値を算出する、請求項4記載の画像処理プログラム。
【請求項6】
撮影指示が入力されたかどうか判断する判断ステップをコンピュータにさらに実行させ、
前記検出ステップは、前記判断ステップで撮影指示が入力されたと判断したとき、ピント合わせ位置を検出し、
前記色データ生成ステップは、前記ぼかし対象ピクセルについて、前記描画データに含まれる色データを拡散値に基づいて変更する色データ変更ステップを含む、請求項1記載の画像処理プログラム。
【請求項7】
ユーザによる操作情報を取得する操作情報取得ステップをコンピュータにさらに実行させ、そして
前記検出ステップでは、前記操作情報に基づいて指定されたピクセルを特定し、当該ピクセルの奥行き値を前記ピント合わせ位置として検出する、請求項1ないし6のいずれかに記載の画像処理プログラム。
【請求項8】
ピクセル毎に色データと奥行き値とを含む描画データを用いて仮想3次元画像を表示する画像処理装置であって、
ピント合わせ位置を検出する検出手段、
前記描画データに含まれる各ピクセルの奥行き値と前記ピント合わせ位置の奥行き値との差分をピクセル毎に算出し、当該差分に基づいてぼかし範囲を算出するぼかし範囲算出手段、
前記ぼかし範囲に基づいて特定されたぼかし対象ピクセルについてぼかし処理した色データを生成する色データ生成手段、および
前記色データ生成ステップで生成した色データに基づいて表示画像データを生成する表示画像生成手段を備える、画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−9266(P2009−9266A)
【公開日】平成21年1月15日(2009.1.15)
【国際特許分類】
【出願番号】特願2007−168686(P2007−168686)
【出願日】平成19年6月27日(2007.6.27)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(397077483)株式会社アリカ (4)
【Fターム(参考)】