(57)【要約】【課題】３次元空間の画像において輪郭を検出する際において、状況によって処理付加が増大することを防止する。【解決手段】ゲーム装置は、オブジェクトが配置された３次元仮想空間を所定の視点から見た画像を生成する。次に、ゲーム装置は、３次元仮想空間における視点からの視線方向への奥行きを表す奥行値（Ｚ値）を画像の画素毎に取得する。さらに、ゲーム装置は、オブジェクトの輪郭に対応する画素を奥行値に基づいて検出する。具体的には、複数の画素を参照画素として特定し、対象画素および複数の参照画素についての画素間の奥行値の差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する。【選択図】図１８
2008302130.tif 000002
【特許請求の範囲】
【請求項１】
３次元仮想空間の画像を生成する処理をコンピュータに実行させる画像処理プログラムであって、
オブジェクトが配置された３次元仮想空間を所定の視点から見た画像を生成する画像生成ステップと、
前記３次元仮想空間における前記視点からの視線方向への奥行きを表す奥行値を前記画像の画素毎に取得する奥行値取得ステップと、
前記オブジェクトの輪郭に対応する画素を前記奥行値に基づいて検出する輪郭検出ステップと、を前記コンピュータに実行させる、画像処理プログラム。
【請求項２】
前記画像処理プログラムは、前記画像の各画素のうちから、輪郭に対応するか否かを判定する処理の処理対象となる対象画素を選択する対象画素選択ステップをさらに前記コンピュータに実行させ、
前記輪郭検出ステップは、
前記対象画素に対して所定の位置関係にある少なくとも１つの参照画素を特定する参照画素特定ステップと、
前記対象画素の奥行値と前記参照画素の奥行値との差に基づいて、当該対象画素が輪郭に対応するか否かを判定する輪郭判定ステップとを含む、請求項１に記載の画像処理プログラム。
【請求項３】
前記参照画素特定ステップにおいて、前記コンピュータは、複数の画素を参照画素として特定し、
前記輪郭判定ステップにおいて、前記コンピュータは、前記対象画素および前記複数の参照画素に関する奥行値の差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する、請求項２に記載の画像処理プログラム。
【請求項４】
前記参照画素特定ステップにおいて、前記コンピュータは、前記対象画素を中心に点対称な位置にある少なくとも２つの画素を参照画素として特定し、
前記輪郭判定ステップにおいて、前記コンピュータは、前記対象画素の奥行値と各参照画素の奥行値とのそれぞれの差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する、請求項３に記載の画像処理プログラム。
【請求項５】
前記輪郭判定ステップにおいて、前記コンピュータは、前記参照画素の奥行値の平均と前記対象画素の奥行値との差を前記変化度として用いる、請求項３または請求項４に記載の画像処理プログラム。
【請求項６】
前記輪郭判定ステップにおいて、前記コンピュータは、前記参照画素の奥行値の平均から前記対象画素の奥行値を引いた差が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定する、請求項５に記載の画像処理プログラム。
【請求項７】
前記輪郭判定ステップにおいて、前記コンピュータは、前記対象画素の奥行値から前記参照画素の奥行値の平均を引いた差が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定する、請求項５に記載の画像処理プログラム。
【請求項８】
前記輪郭判定ステップにおいて、前記コンピュータは、前記参照画素の奥行値の平均と前記対象画素の奥行値との差の絶対値が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定する、請求項５に記載の画像処理プログラム。
【請求項９】
前記輪郭判定ステップにおいて、前記コンピュータは、前記参照画素の奥行値の平均と前記対象画素の奥行値との比を前記変化度として用いる、請求項３または請求項４に記載の画像処理プログラム。
【請求項１０】
前記輪郭判定ステップにおいて、前記コンピュータは、輪郭に対応する画素について、輪郭の濃さを表す輪郭値を前記変化度の大きさに応じて算出し、
前記輪郭判定ステップにおいて輪郭に対応すると判定された画素に対して、前記輪郭値に応じた濃さで輪郭を描画する輪郭画像描画ステップを前記コンピュータにさらに実行させる、請求項３から請求項９のいずれかに記載の画像処理プログラム。
【請求項１１】
前記参照画素特定ステップにおいて、前記コンピュータは、前記対象画素を中心に点対称な位置にある２個１組の画素を複数組、当該対象画素から各組の画素への方向が異なるように特定し、
前記輪郭判定ステップにおいて、前記コンピュータは、前記変化度を前記画素の組毎に算出し、算出された各変化度に基づいて、前記対象画素が輪郭に対応するか否かを判定する、請求項４に記載の画像処理プログラム。
【請求項１２】
前記参照画素特定ステップにおいて、前記コンピュータは、前記対象画素を中心に点対称な位置にあり、前記画像の縦方向に並ぶ２個の画素と、前記対象画素を中心に点対称な位置にあり、当該画像の横方向に並ぶ２個の画素とを少なくとも参照画素として特定する、請求項１１に記載の画像処理プログラム。
【請求項１３】
前記参照画素特定ステップにおいて、前記コンピュータは、前記対象画素を中心に点対称な位置にあり、前記画像の斜め方向に並ぶ２個の画素を少なくとも参照画素として特定する、請求項１１に記載の画像処理プログラム。
【請求項１４】
前記輪郭判定ステップは、
前記変化度を前記画素の組毎に算出し、算出された各変化度に基づいて、前記対象画素が輪郭に対応するか否かを当該組毎に予備的に判定する第１判定ステップと、
前記第１判定ステップによる判定結果に基づいて、前記対象画素が輪郭に対応するか否かを判定する第２判定ステップとを含む、請求項１１に記載の画像処理プログラム。
【請求項１５】
前記第１判定ステップにおいて、前記コンピュータは、前記対象画素が輪郭に対応するか否かを予備的に判定するための判定条件として、参照画素の組毎に異なる条件を用いる、請求項１４に記載の画像処理プログラム。
【請求項１６】
前記参照画素特定ステップにおいて、前記コンピュータは、前記対象画素から参照画素までの距離が参照画素の組毎に異なるように参照画素を特定する、請求項１４に記載の画像処理プログラム。
【請求項１７】
前記画像生成ステップにおいて生成された画像を描画するとともに、前記輪郭検出ステップによって検出された画素に対して所定の色で描画処理を行う輪郭画像描画ステップを前記コンピュータにさらに実行させる、請求項１から請求項４のいずれかに記載の画像処理プログラム。
【請求項１８】
前記輪郭検出ステップによって検出された輪郭のみの画像を生成する輪郭画像生成ステップを前記コンピュータにさらに実行させる、請求項１から請求項４のいずれかに記載の画像処理プログラム。
【請求項１９】
前記輪郭検出ステップによって検出された画素に従って決められる領域内の画素を対象として、アンチエイリアシング処理を実行する処理実行ステップを前記コンピュータにさらに実行させる、請求項１から請求項４のいずれかに記載の画像処理プログラム。
【請求項２０】
前記奥行値取得ステップにおいて、前記コンピュータは、Ｚバッファに記憶されているＺ値を前記奥行値として取得する、請求項１から請求項４のいずれかに記載の画像処理プログラム。
【請求項２１】
前記奥行値は、前記視点から画素に描画されるオブジェクトまでの前記仮想空間における奥行方向の位置を表す、請求項１から請求項４のいずれかに記載の画像処理プログラム。
【請求項２２】
前記奥行値取得ステップにおいて、前記コンピュータは、Ｚバッファに記憶されているＺ値を変換することによって前記奥行値を取得する、請求項２１に記載の画像処理プログラム。
【請求項２３】
前記奥行値取得ステップにおいて、前記コンピュータは、Ｗバッファに記憶されている値を前記奥行値として取得する、請求項１から請求項３のいずれかに記載の画像処理プログラム。
【請求項２４】
３次元仮想空間の画像を生成する処理を実行する画像処理装置であって、
オブジェクトが配置された３次元仮想空間を所定の視点から見た画像を生成する画像生成手段と、
前記３次元仮想空間における前記視点からの視線方向への奥行きを表す奥行値を前記画像の画素毎に取得する奥行値取得手段と、
前記オブジェクトの輪郭に対応する画素を前記奥行値に基づいて検出する輪郭検出手段とを備える、画像処理装置。
【請求項２５】
前記画像の各画素のうちから、輪郭に対応するか否かを判定する処理の処理対象となる対象画素を選択する対象画素選択手段をさらに備え、
前記輪郭検出手段は、
前記対象画素に対して所定の位置関係にある少なくとも１つの参照画素を特定する参照画素特定手段と、
前記対象画素の奥行値と前記参照画素の奥行値との差に基づいて、当該対象画素が輪郭に対応するか否かを判定する輪郭判定手段とを含む、請求項２４に記載の画像処理装置。
【請求項２６】
前記参照画素特定手段は、複数の画素を参照画素として特定し、
前記輪郭判定手段は、前記対象画素および前記複数の参照画素に関する奥行値の差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する、請求項２５に記載の画像処理装置。
【請求項２７】
前記参照画素特定手段は、前記対象画素を中心に点対称な位置にある少なくとも２つの画素を参照画素として特定し、
前記輪郭判定手段は、前記対象画素の奥行値と各参照画素の奥行値とのそれぞれの差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する、請求項２６に記載の画像処理装置。
【請求項２８】
前記輪郭判定手段は、前記参照画素の奥行値の平均と前記対象画素の奥行値との差を前記変化度として用いる、請求項２６または請求項２７に記載の画像処理装置。
【請求項２９】
前記輪郭判定手段は、輪郭に対応する画素について、輪郭の濃さを表す輪郭値を前記変化度の大きさに応じて算出し、
前記輪郭判定手段によって輪郭に対応すると判定された画素に対して、前記輪郭値に応じた濃さの輪郭を示す画像を描画する輪郭画像描画手段をさらに備える、請求項２６から請求項２８のいずれかに記載の画像処理装置。
【請求項３０】
前記参照画素特定手段は、前記対象画素を中心に点対称な位置にある２個１組の画素を複数組、当該対象画素から各組の画素への方向が異なるように特定し、
前記輪郭判定手段は、前記変化度を前記画素の組毎に算出し、算出された各変化度に基づいて、前記対象画素が輪郭に対応するか否かを判定する、請求項２７に記載の画像処理装置。
【請求項３１】
前記輪郭判定手段は、
前記変化度を前記画素の組毎に算出し、算出された各変化度に基づいて、前記対象画素が輪郭に対応するか否かを当該組毎に予備的に判定する第１判定手段と、
前記第１判定手段による判定結果に基づいて、前記対象画素が輪郭に対応するか否かを判定する第２判定手段とを含む、請求項３０に記載の画像処理装置。
【請求項３２】
前記第１判定手段は、前記対象画素が輪郭に対応するか否かを予備的に判定するための判定条件として、参照画素の組毎に異なる条件を用いる、請求項３１に記載の画像処理装置。
【請求項３３】
前記参照画素特定手段は、前記対象画素から参照画素までの距離が参照画素の組毎に異なるように参照画素を特定する、請求項３１に記載の画像処理装置。
【請求項３４】
前記画像生成手段によって生成された画像を描画するとともに、前記輪郭検出手段によって検出された画素に対して所定の色で描画処理を行う輪郭画像描画手段をさらに備える、請求項２４から請求項２７のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、３次元仮想空間の画像を生成する画像処理を実行するための画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【０００２】
従来、３次元画像処理において劇画風（アニメ風）の画像を生成するために、ポリゴンによって構成されるモデルにアウトライン（輪郭）を描くための処理が提案されている。例えば、特許文献１〜３に記載された画像処理装置は、キャラクタ等を表すモデル（基本モデル）と、アウトラインを描くための拡大モデルとを用いている。拡大モデルは、基本モデルを拡大したもので、基本モデルを内包するように配置される。また、拡大モデルを構成するポリゴンの法線ベクトルは、基本モデルの法線ベクトルに比べて法線ベクトルが反転されており、基本モデルの法線ベクトルがモデルの外側を向くように設定されるのに対して、拡大モデルの法線ベクトルはモデルの内側を向くように設定される。これによれば、陰面処理等を用いた３次元画像処理によって基本モデルおよび拡大モデルを描画する際には、拡大モデルは、視点から見て基本モデルの後方で、かつ基本モデルの縁よりも外側の部分のみが描画されることになる。したがって、当該拡大モデルを例えば黒等で塗りつぶすことにより、基本モデルの外側にアウトラインが付された画像を生成することができる。
【特許文献１】特開２０００−２５１０９４号公報
【特許文献２】特開２００１−１２６０８６号公報
【特許文献３】特開２００１−０８４４０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載の画像処理装置では、１つのキャラクタを描画するために基本モデルおよび拡大モデルという２つのモデルが必要となるので、１つのキャラクタで１つのモデルを利用する場合に比べて処理が増加する。このため、１つのモデルを構成するポリゴン数が多くなるほど処理負担が増加し、また描画対象のモデルの数が多くなるほど処理負荷が増大するという問題がある。
【０００４】
また、特許文献１に記載の画像処理装置では、基本モデルの外側にある拡大モデルの部分がアウトラインとなるので、生成される画像においては始点からモデルまでの距離によってアウトラインの太さが変わる。したがって、カメラからモデルまでの距離が遠いとアウトラインが視認できないほど細くなったり、逆に距離が近すぎるとアウトラインが太くなりすぎたりするという問題がある。
【０００５】
それ故、本発明の目的は、３次元空間の画像において輪郭を検出する際において、状況によって処理負荷が増大し過ぎることを防止し、安定した負荷で処理することができる画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、３次元仮想空間の画像を生成する処理をコンピュータ（ＣＰＵ１０および／またはＧＰＵ１１ｂ）に実行させる画像処理プログラム（ゲームプログラム６０）である。画像処理プログラムは、画像生成ステップ（Ｓ２）と、奥行値取得ステップ（Ｓ１１）と、輪郭検出ステップ（Ｓ３）とをコンピュータに実行させる。画像生成ステップにおいて、コンピュータは、オブジェクトが配置された３次元仮想空間を所定の視点から見た画像を生成する。奥行値取得ステップにおいて、コンピュータは、３次元仮想空間における視点からの視線方向への奥行きを表す奥行値（Ｚ値）を画像の画素毎に取得する。輪郭検出ステップにおいて、コンピュータは、オブジェクトの輪郭に対応する画素を奥行値に基づいて検出する。
【０００８】
第２の発明においては、画像処理プログラムは、画像の各画素のうちから、輪郭に対応するか否かを判定する処理の処理対象となる対象画素を選択する対象画素選択ステップ（Ｓ２１）をさらにコンピュータに実行させてもよい。このとき、輪郭検出ステップは、参照画素特定ステップ（Ｓ２２）と、輪郭判定ステップ（Ｓ１３，Ｓ１４）とを含む。参照画素特定ステップにおいて、コンピュータは、対象画素に対して所定の位置関係にある少なくとも１つの参照画素を特定する。輪郭判定ステップにおいて、コンピュータは、対象画素の奥行値と参照画素の奥行値との差（Ｚｄｉｆ１）に基づいて、当該対象画素が輪郭に対応するか否かを判定する。
【０００９】
第３の発明においては、参照画素特定ステップにおいて、コンピュータは、複数の画素を参照画素として特定してもよい。このとき、輪郭判定ステップにおいて、コンピュータは、対象画素および複数の参照画素に関する奥行値の差の変化度（Ｚｄｉｆ２）に基づいて、当該対象画素が輪郭に対応するか否かを判定する。
【００１０】
第４の発明においては、参照画素特定ステップにおいて、コンピュータは、対象画素を中心に点対称な位置にある少なくとも２つの画素を参照画素として特定してもよい。このとき、輪郭判定ステップにおいて、コンピュータは、対象画素の奥行値と各参照画素の奥行値とのそれぞれの差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定する。
【００１１】
第５の発明においては、輪郭判定ステップにおいて、コンピュータは、参照画素の奥行値の平均と対象画素の奥行値との差を変化度として用いてもよい。
【００１２】
第６の発明においては、輪郭判定ステップにおいて、コンピュータは、参照画素の奥行値の平均から対象画素の奥行値を引いた差が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定してもよい。
【００１３】
第７の発明においては、輪郭判定ステップにおいて、コンピュータは、対象画素の奥行値から参照画素の奥行値の平均を引いた差が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定してもよい。
【００１４】
第８の発明においては、輪郭判定ステップにおいて、コンピュータは、参照画素の奥行値の平均と対象画素の奥行値との差の絶対値が所定値よりも大きい場合、当該対象画素が輪郭に対応すると判定してもよい。
【００１５】
第９の発明においては、輪郭判定ステップにおいて、コンピュータは、参照画素の奥行値の平均と対象画素の奥行値との比を変化度として用いてもよい。
【００１６】
第１０の発明においては、輪郭判定ステップにおいて、コンピュータは、輪郭に対応する画素について、輪郭の濃さを表す輪郭値（第１〜第３輪郭値）を変化度の大きさに応じて算出してもよい。このとき、画像処理プログラムは、輪郭判定ステップにおいて輪郭に対応すると判定された画素に対して、輪郭値に応じた濃さで輪郭を描画する輪郭画像描画ステップ（Ｓ５）をコンピュータにさらに実行させる。
【００１７】
第１１の発明においては、参照画素特定ステップにおいて、コンピュータは、対象画素を中心に点対称な位置にある２個１組の画素を複数組、当該対象画素から各組の画素への方向が異なるように特定してもよい。このとき、輪郭判定ステップにおいて、コンピュータは、変化度を画素の組毎に算出し、算出された各変化度に基づいて、対象画素が輪郭に対応するか否かを判定する。
【００１８】
第１２の発明においては、参照画素特定ステップにおいて、コンピュータは、対象画素を中心に点対称な位置にあり、画像の縦方向に並ぶ２個の画素と、対象画素を中心に点対称な位置にあり、当該画像の横方向に並ぶ２個の画素とを少なくとも参照画素として特定してもよい。
【００１９】
第１３の発明においては、参照画素特定ステップにおいて、コンピュータは、対象画素を中心に点対称な位置にあり、画像の斜め方向に並ぶ２個の画素を少なくとも参照画素として特定してもよい。
【００２０】
第１４の発明においては、輪郭判定ステップは、第１判定ステップ（Ｓ１３，Ｓ１４）と、第２判定ステップ（Ｓ１５）とを含んでいてもよい。第１判定ステップにおいて、コンピュータは、変化度を画素の組毎に算出し、算出された各変化度に基づいて、対象画素が輪郭に対応するか否かを当該組毎に予備的に判定する。第２判定ステップにおいて、コンピュータは、第１判定ステップによる判定結果に基づいて、対象画素が輪郭に対応するか否かを判定する。
【００２１】
第１５の発明においては、第１判定ステップにおいて、コンピュータは、対象画素が輪郭に対応するか否かを予備的に判定するための判定条件として、参照画素の組毎に異なる条件を用いてもよい。
【００２２】
第１６の発明においては、参照画素特定ステップにおいて、コンピュータは、対象画素から参照画素までの距離（幅ｗ）が参照画素の組毎に異なるように参照画素を特定してもよい。
【００２３】
第１７の発明においては、画像生成ステップにおいて生成された画像を描画するとともに、輪郭検出ステップによって検出された画素に対して所定の色で描画処理を行う輪郭画像描画ステップ（Ｓ５）をコンピュータにさらに実行させてもよい。
【００２４】
第１８の発明においては、輪郭検出ステップによって検出された輪郭のみの画像を生成する輪郭画像生成ステップをコンピュータにさらに実行させてもよい。
【００２５】
第１９の発明においては、輪郭検出ステップによって検出された画素に従って決められる領域内の画素を対象として、アンチエイリアシング処理を実行する処理実行ステップをコンピュータにさらに実行させてもよい。
【００２６】
第２０の発明においては、奥行値取得ステップにおいて、コンピュータは、Ｚバッファに記憶されているＺ値を奥行値として取得してもよい。
【００２７】
第２１の発明においては、奥行値は、視点から画素に描画されるオブジェクトまでの仮想空間における奥行方向の位置を表すものであってもよい。
【００２８】
第２２の発明においては、奥行値取得ステップにおいて、コンピュータは、Ｚバッファに記憶されているＺ値を変換する（ステップＳ１２）ことによって奥行値を取得してもよい。
【００２９】
第２３の発明においては、奥行値取得ステップにおいて、コンピュータは、Ｗバッファに記憶されている値を奥行値として取得してもよい。
【発明の効果】
【００３０】
第１の発明によれば、３次元空間の画像において輪郭を検出する処理を、当該画像を用いて行うことができる。これによれば、従来の方法のように輪郭付加用に３次元のオブジェクト（モデル）を用意する必要がなく、画像から輪郭を検出することができる。すなわち、第１の発明によれば、従来の方法のようにオブジェクトの数等の状況によって処理量が増大することを防止することができ、コンピュータの処理付加を安定することができる。
【００３１】
第２の発明によれば、対象画素と参照画素との奥行値の差に基づいて、対象画素が輪郭に対応するか否かを判定するので、輪郭を簡易な方法で高速に検出することができる。
【００３２】
第３の発明によれば、対象画素および複数の参照画素に関する奥行値の差の変化度に基づいて、当該対象画素が輪郭に対応するか否かを判定するので、単に奥行値の差をそのまま用いて判定を行う場合よりも、さらに正確に判定を行うことができる。
【００３３】
第４の発明によれば、対象画素を中心に点対称な位置にある少なくとも２つの画素を参照画素として特定することにより、対象画素の両側にある画素と対象画素とについて奥行値の差の変化度を算出することができる。これによれば、対象画素が輪郭に対応するか否かをより正確に判定することができる。
【００３４】
第５の発明によれば、参照画素の奥行値の平均と対象画素の奥行値との差を変化度とするので、変化度を容易に算出することができる。
【００３５】
第６の発明によれば、対象画素が輪郭に対応すると判定するための条件として、参照画素の奥行値の平均から対象画素の奥行値を引いた差が所定値よりも大きいことを条件とする。これによれば、対象画素の部分でオブジェクトの断面が凸になっている場合に、当該部分を輪郭として検出することができる。
【００３６】
第７の発明によれば、対象画素が輪郭に対応すると判定するための条件として、対象画素の奥行値から参照画素の奥行値の平均を引いた差が所定値よりも大きいことを条件とする。これによれば、対象画素の部分でオブジェクトの断面が凹になっている場合に、当該部分を輪郭として検出することができる。
【００３７】
第８の発明によれば、対象画素が輪郭に対応すると判定するための条件として、参照画素の奥行値の平均と対象画素の奥行値との差の絶対値が所定値よりも大きいことを条件とする。これによれば、対象画素の部分でオブジェクトの断面が凸または凹になっている場合に、当該部分を輪郭として検出することができる。
【００３８】
第９の発明によれば、参照画素の奥行値の平均と対象画素の奥行値との比を変化度とするので、変化度を容易に算出することができる。
【００３９】
第１０の発明によれば、変化度の大きさに応じて輪郭の濃さに変化を付けて輪郭を描画することができる。ここで、３次元空間内のオブジェクトが移動したり、仮想カメラが移動・回転したりすることによって、仮想カメラの視線に対するオブジェクトの向きが変化することがある。第１０の発明によれば、このような場合、３次元の画像が新たに生成される度に輪郭画像描画ステップを実行することによって、上記向きの変化に応じて変化度の値が変わり、輪郭の色の濃さを変化させることができる。したがって、オブジェクトの向きが変化する結果新たな輪郭が表示される場合には、最初は薄い色の輪郭が表示され、その後輪郭は次第に濃くなっていくように表示される。つまり、第１０の発明によれば、新たに輪郭が描かれる場合には、急に輪郭が現れるのではなく、次第に輪郭が浮かび上がってくるように表現することができ、輪郭を自然に表示させることができる。
【００４０】
第１１〜第１３の発明によれば、３次元の画像における複数の方向に関して輪郭検出処理を行うので、様々な方向に延びる輪郭を検出することができる。
【００４１】
第１４の発明によれば、３次元の画像における複数の方向に関して別々に輪郭検出処理を行うので、様々な方向に延びる輪郭をより正確に検出することができる。
【００４２】
第１５および第１６の発明によれば、参照画素の組によって輪郭判定ステップの判定結果が異なることになるので、画素における各方向によって輪郭が検出されやすかったり、検出されにくかったりすることになる。これによれば、ある方向に関しては太く、他の方向に関しては細くなるように輪郭を検出することができる。したがって、例えば、検出した輪郭を描画する場合には、マーカペンのような、描く方向によって太さが異なるペンで描かれたような輪郭を表現することができる。
【００４３】
第１７の発明によれば、３次元空間の画像に輪郭が付された画像を生成して表示することができる。また、第１８の発明によれば、３次元空間の画像の輪郭のみを表す画像を生成して表示することができる。さらに、第１７および第１８の発明によれば、輪郭付加用の３次元のオブジェクトを用いるわけではないので、検出される輪郭の太さは視点とオブジェクトとの間の距離に依存しない。したがって、第１７および第１８の発明によれば、カメラからオブジェクトまでの距離が遠いために輪郭が視認できないほど細くなったり、逆に距離が近すぎるために輪郭が太くなりすぎたりすることを防止することができ、距離に依存しない線幅で輪郭を描くことができる。
【００４４】
第１９の発明によれば、輪郭に対応するとして検出された画素に従って決められる領域を対象として、アンチエイリアシング処理を行うので、アンチエイリアシング処理を効率良く行うことができ、画像における輪郭の部分におけるエイリアシングを改善することができる。
【００４５】
第２０、第２２および第２３の発明によれば、Ｚバッファに記憶されているＺ値や、Ｗバッファに記憶されている値を奥行値とすることにより、奥行値を容易に取得することができる。また、第２１の発明によれば、奥行値は、視点から画素に描画されるオブジェクトまでの仮想空間における距離を表すので、奥行値を用いた輪郭の検出処理を正確に行うことができる。
【発明を実施するための最良の形態】
【００４６】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係る画像処理装置の一例として、ゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、およびマーカ部６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００４７】
本発明に係る情報処理装置の一例であるゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラム（本発明に係る画像処理プログラムの一例）が記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００４８】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００４９】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００５０】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００５１】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００５２】
また、システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５３】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００５４】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００５５】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５６】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５７】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５８】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００５９】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００６０】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６１】
（コントローラ５の構成）
次に、図３〜図６を参照して、コントローラ５について説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００６２】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００６３】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００６４】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のコントローラ）を接続するために利用される。
【００６５】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００６６】
また、コントローラ５は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００６７】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５Ａ）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００６８】
次に、図５Ａおよび図５Ｂを参照して、コントローラ５の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ５の内部構造を示す図である。なお、図５Ａは、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す斜視図は、図５Ａに示す基板３０を裏面から見た斜視図となっている。
【００６９】
図５Ａにおいて、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図５Ｂ参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００７０】
一方、図５Ｂにおいて、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００７１】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５Ａおよび図５Ｂに示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００７２】
なお、図３〜図５Ａ、図５Ｂに示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００７３】
図６は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００７４】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００７５】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００７６】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００７７】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００７８】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系における３次元のベクトル（ＡＸ，ＡＹ，ＡＺ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００７９】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（姿勢）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データに基づいてコントローラ５の姿勢を判断する。
【００８０】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾き角度を算出してもよいし、当該傾き角度を算出せずに、コントローラ５の傾き方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾きまたは姿勢を判定することができる。
【００８１】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００８２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００８３】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００８４】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うことができる。図７は、コントローラ５を用いてゲーム操作を行うときの様子を示す図解図である。本実施形態では、プレイヤは、図７に示すように、コントローラ５を動かすゲーム操作、および、コントローラ５によってテレビ２の画面上の位置Ｐを指し示すゲーム操作を行うことができる。
【００８５】
（ゲーム装置における処理の概要）
以下、ゲーム装置３で実行される処理の概要について説明する。以下では、３次元仮想空間の画像に対して輪郭を付す画像処理について主に説明する。この処理は、例えば、ゲーム空間に登場するプレイヤキャラクタ等のオブジェクトを劇画風（アニメ風）に表現する等の目的で行われる。
【００８６】
図８は、３次元空間の画像の一例を示す図である。図８では、３次元の仮想空間（ゲーム空間）に地面オブジェクト５１が配置され、地面オブジェクト５１の上に第１オブジェクト５２および第２オブジェクト５３が配置されている。第１オブジェクト５２は、球体を２つ接続したひょうたん型の形状であり、図８では、小さい方の球体の側から見たときの第１オブジェクト５２が示されている。第２オブジェクト５３は三角柱である。図８に示すような３次元空間の画像は、周知の方法により、３次元空間に配置される仮想カメラに基づいて生成される。すなわち、ゲーム装置３は、３次元空間に対して仮想カメラの位置を基準として例えば透視変換を行うことによって、仮想カメラの位置（視点位置）から仮想カメラの方向（視線方向）に見た３次元空間の画像を生成する。なお、３次元空間の画像が生成される際、画像の画素毎に、当該画素として表示される対象の３次元空間における（視点から視線方向への）奥行きを表すＺ値が算出される。後述する輪郭検出処理では、このＺ値を用いて、輪郭に対応する画素（輪郭を描画すべき画素）が検出される。
【００８７】
図９は、図８に示す画像に対して輪郭を付した画像の一例を示す図である。なお、図９においては、本ゲーム装置３による処理によって付される輪郭を太線で表している。また、図８および図９においては、実際の画像とは異なるが、図面をわかりやすくする目的で、あるオブジェクトと他のオブジェクトとの境界部分やオブジェクトの尖っている部分等を示す線を細線で表している。本実施形態では、ゲーム装置３は、図８に示す画像から、図９のように輪郭が付された画像を生成する処理を行う。なお、以下では、図８に示すような輪郭が付される前の画像を元画像と呼び、図９に示すような元画像に輪郭が付された画像を輪郭画像と呼ぶ。
【００８８】
本実施形態では、ゲーム装置３は、従来手法のように３次元の拡大モデルを新たに用意することによって輪郭を描くのではなく、元画像および元画像の各画素について設定されるＺ値を用いて輪郭画像を生成する。すなわち、ゲーム装置３は、元画像の各画素のうちで輪郭に対応する画素をＺ値を用いて検出し、検出された画素に輪郭の色（例えば黒色）を描画することによって輪郭画像を得る。これによれば、新たなモデルを用意する必要がなく、輪郭の描画自体には描画するオブジェクトの数やオブジェクトのデータ量等に負荷が依存せず、変動のない画素数に応じた安定した処理量で輪郭画像を生成することができる。以下、輪郭に対応する画素を検出する処理（輪郭検出処理）について説明する。
【００８９】
輪郭検出処理においては、ゲーム装置３は、元画像の各画素について、その画素と所定の位置関係にある画素とのＺ値の差分に基づいて、その画素が輪郭に対応する画素であるか否かを判定する判定処理を実行することによって、輪郭に対応する画素を検出する。以下では、上記判定処理の処理対象となる画素を「対象画素」と呼ぶ。また、対象画素と所定の位置関係にある画素を「参照画素」と呼ぶ。参照画素は、上記判定処理においてＺ値が参照される画素である。以上のように、本実施形態では、対象画素と参照画素とのＺ値の差を用いて、対象画素が輪郭に対応するか否かを判定する。
【００９０】
図１０は、３次元空間内のオブジェクトが描画される画素と、画素に設定されるＺ値との関係を示す図である。図１０は、仮想カメラの視線方向に垂直な方向から第１および第２オブジェクト５２および５３を見たときの３次元空間の所定位置での断面を模式的に示している。すなわち、１列分の画素に相当する３次元空間を表している。図１０では説明を容易にする目的でマス目を付しており、縦方向のマス目は画素の単位を表し、横方向のマス目はＺ値の単位を表している。すなわち、縦方向の１マスは１つの画素を表しており、図１０では、上から順に画素Ｐ１から画素Ｐ３０まで３０個の画素が表されている。これらの画素Ｐ１〜Ｐ３０は、画像上においては縦または横に一列に並ぶ画素である。また、横方向の１マスはＺ値の最小単位を表している。また、図１０において、斜線で描かれているマス目は、画素に描かれるオブジェクトの部分を示している。例えば、上から３つ目の画素Ｐ３には、第１オブジェクト５２の縁の部分が描かれることになり、画素Ｐ３のＺ値は、基準（図１０の左端）から１３マス分の大きさとなる。なお、ここでは、各オブジェクトは透明でないものとする。また、オブジェクトが描かれない画素には背景が描画されることとなり、当該画素のＺ値は、Ｚ値の取り得る最大値となる。以下では、図１０に示すような、画素とＺ値との関係を示す図を用いて輪郭検出処理を説明する。
【００９１】
図１１は、輪郭検出処理の第１の方法を説明する図である。図１１は、図１０に示す図と同様、３次元空間の所定位置での断面を模式的に示す図である。なお、図１１では、画素３つ分の領域のみを示している。第１の方法では、対象画素に対して所定方向の側で隣接する（１つの）画素が参照画素とされる。図１１を例にとって説明すると、画素Ｐａを対象画素とした場合、所定方向の側（図では上側）で隣接する画素Ｐｂが参照画素となる。第１の方法では、ゲーム装置３は、対象画素ＰａのＺ値Ｚａと、参照画素ＰｂのＺ値Ｚｂとの差（差の絶対値）Ｚｄｉｆ１を算出する。そして、差Ｚｄｉｆ１が所定の閾値Ｚｓよりも大きい場合、対象画素Ｐａは輪郭に対応すると判定される（輪郭であるとして検出される）。ここで、差Ｚｄｉｆ１が閾値Ｚｓよりも大きい場合には、対象画素Ｐａに描画されるオブジェクトと参照画素Ｐ２に描画されるオブジェクトとは、奥行が相当程度離れていることから、連続していないオブジェクト（異なるオブジェクト）と推測することができる。つまり、第１の方法では、差Ｚｄｉｆ１が閾値Ｚｓよりも大きいか否かを判定することによって、対象画素Ｐａが連続していないオブジェクトの境界であるか否かを判断し、輪郭を検出している。
【００９２】
図１２は、第１の方法で輪郭を検出した結果を示す図である。図１２は、図１０から、輪郭として検出された画素のマス目を黒く塗りつぶした図である。なお、図１２では、上記閾値Ｚｃを“３（マス）”としている、すなわち、対象画素のＺ値と参照画素（上隣の画素）のＺ値との差が横方向に３マス分よりも大きい場合、対象画素が輪郭に対応すると判断するようにしている。
【００９３】
図１２に示されるように、第１の方法による輪郭検出処理によって、第１オブジェクト５２の大きい方の球体の縁に対応する画素Ｐ３およびＰ１５が輪郭と検出され、また、第１オブジェクト５２の小さい方の球体の縁に対応する画素Ｐ６およびＰ１２が輪郭と検出される。このように、第１オブジェクト５２については、第１の方法による輪郭検出処理によって、輪郭を検出できることがわかる。したがって、第１の方法によって、２つの画素のＺ値の差を算出するという簡易な方法で、元画像から輪郭を検出することができる。
【００９４】
ここで、第１の方法では、仮想カメラの視線方向に対して角度が小さい面（視線方向に対して平行に近い面）については、輪郭を正しく検出することができないおそれがある。例えば図１２の例では、三角柱である第２オブジェクト５３の側面が描画される画素Ｐ２２，Ｐ２３，Ｐ２５，およびＰ２６が輪郭として検出されてしまう。上記側面のように視線方向に対して角度が小さい面については、対象画素と参照画素とのＺ値の差が大きくなるので、差が閾値Ｚｓよりも大きくなるからである。
【００９５】
また、第１の方法では、対象画素に対していずれの方向の画素を参照画素とするかによって、検出される輪郭に若干のずれが生じる。すなわち、図１２の例では、対象画素に対して上側で隣接する画素を参照画素としているので、第１オブジェクト５２について言えば画素Ｐ３，Ｐ６，Ｐ１２，およびＰ１５が輪郭として検出される。しかし、対象画素に対して下側で隣接する画素を参照画素とした場合には、第１オブジェクト５２については画素Ｐ２，Ｐ５，Ｐ１１，およびＰ１４が輪郭として検出される。つまり、対象画素に対していずれの方向の画素を参照画素とするかによって、輪郭として検出される画素が１画素分ずれてしまう。また、第１の方法では、第１オブジェクト５２のように対称な図形であっても、輪郭として検出される画素が１画素分ずれてしまい、検出される輪郭は対称にならなくなる。通常の画像では画素数が大きいので問題にならない場合もあるが、以上のように、上記第１の方法では、検出される輪郭にずれが生じることから、正確に輪郭を検出することができないおそれがある。
【００９６】
上記第１の方法は、検出が簡単ではあるものの、以上の点を考慮して、必要に応じて、輪郭検出処理として第２の方法を用いる。図１３は、輪郭検出処理の第２の方法を説明する図である。図１３は、図１１と同様、図１０の一部を拡大した図である。第２の方法では、対象画素の両隣の画素をそれぞれ参照画素とする。図１３を例にとって説明すると、画素Ｐａが対象画素とした場合、両隣の画素ＰｂおよびＰｃが参照画素となる。第２の方法では、ゲーム装置３はまず、２つの参照画素ＰｂおよびＰｃのＺ値の平均値Ｚａｖを算出する。次に、対象画素ＰａのＺ値Ｚａから平均値Ｚａｖを引いた差Ｚｄｉｆ２を算出する。そして、差Ｚｄｉｆ２が所定の閾値Ｚｓ（＞０）よりも大きい場合、対象画素Ｐａは輪郭に対応すると判定する。
【００９７】
ここで、第２の方法において、差Ｚｄｉｆ２は、次の式（１）のように表される。
Ｚｄｉｆ２＝Ｚａ−（Ｚｂ＋Ｚｃ）／２  …（１）
さらに、上式（１）は、次式（２）のように変換することができる。
Ｚｄｉｆ２＝｛（Ｚｂ−Ｚａ）−（Ｚａ−Ｚｃ）｝／２  …（２）
上式（２）から明らかなように、差Ｚｄｉｆ２は、一方の参照画素ＰｂのＺ値Ｚｂから対象画素ＰａのＺ値Ｚａを引いた差（Ｚｂ−Ｚａ）と、対象画素ＰａのＺ値Ｚａから他方の参照画素ＰｃのＺ値Ｚｃを引いた差（Ｚａ−Ｚｃ）との変化量（差）の１／２の値となる。したがって、差Ｚｄｉｆ２は、対象画素のＺ値と参照画素のＺ値との差の変化の度合い（変化度）を表していることがわかる。ここで、上記変化度が所定の値より大きい場合、対象画素Ｐａに描画されるオブジェクトと、それに隣接する参照画素ＰｂまたはＰｃのいずれかに描画されるオブジェクトとは、連続していないオブジェクト（異なるオブジェクト）と推測することができる。第２の方法では、上記変化度の大きさを判定することによって、対象画素Ｐａが連続していないオブジェクトの境界であるか否かを判定し、輪郭を検出している。
【００９８】
図１４は、第２の方法で輪郭を検出した結果を示す図である。図１４は、図１２と同様、図１０から、輪郭として検出された画素のマス目を黒く塗りつぶした図である。第２の方法によれば、両隣の画素のＺ値との差の変化度を用いるので、例えば画素Ｐ２２や画素Ｐ２３では差Ｚｄｉｆ２＝０となる。そのため、図１４に示されるように、これらの画素Ｐ２２およびＰ２３は輪郭として検出されない。このように、第２の方法によれば、視線方向に対して角度が小さい面が輪郭として検出されることがなく、正確に輪郭を検出することができる。また、第２の方法によれば、対象画素に対して両側の画素を参照画素とするので、参照画素の設定の仕方によって、検出される輪郭にずれが生じることもない。したがって、図１４に示されるように、第１オブジェクト５２のように対称な図形に関しては、検出される輪郭も対称になり、正確に輪郭を付すことができる。
【００９９】
なお、上記第２の方法では、上記変化度として、対象画素のＺ値Ｚａから平均値Ｚａｖを引いた差Ｚｄｉｆ２を用いた。この場合、対象画素のＺ値Ｚａが平均値Ｚａｖよりもある程度大きい場合にのみ輪郭が付されるので、図１４に示すように、断面が凹となる箇所に輪郭が付される。また、この場合、図１４に示すように、断面が凸となる箇所には輪郭が付されない。例えば、三角柱の側面の辺に対応する画素Ｐ２４は輪郭として検出されない。この場合、上述した図９に示されるような画像が輪郭画像として生成される。
【０１００】
本実施形態において、断面が凸となる箇所に輪郭を付す場合には、上記変化度として、平均値Ｚａｖから対象画素のＺ値Ｚａを引いた差Ｚｄｉｆ２’（＝−Ｚｄｉｆ２）を用いればよい。図１５は、差Ｚｄｉｆ２’を変化度として用いた場合における輪郭の検出結果を示す図である。この場合、図１５に示すように、対象画素のＺ値Ｚａが平均値Ｚａｖよりもある程度大きい場合に輪郭が付されるので、断面が凸となる箇所に輪郭が付されることとなる。図１６は、図１５に示した場合に得られる輪郭画像の一例を示す図である。図１６に示すように、差Ｚｄｉｆ２’を変化度として用いることによって、第２オブジェクト５３における断面が凸の箇所（三角柱の辺）にも輪郭を付すことができる。なお、図１４および図１５を比較するとわかるように、差Ｚｄｉｆ２を用いる場合と差Ｚｄｉｆ２’を用いる場合とでは、輪郭として検出される画素が１画素分ずれている。例えば第１オブジェクト５２について言えば、差Ｚｄｉｆ２を用いる場合（図１４）では画素Ｐ２，Ｐ５，Ｐ１２，Ｐ１５が検出されるのに対して、差Ｚｄｉｆ２’を用いる場合（図１５）では画素Ｐ３，Ｐ６，Ｐ１１，Ｐ１４が検出される。ただし、いずれの場合でも、輪郭の形状に大きな歪みが生じるわけではない（例えば対称なオブジェクトの輪郭は対称に付される）ので、格別大きな問題はない。なお、変化度として、Ｚｄｉｆ２’を用いることに代えて、Ｚｄｉｆ２が所定の閾値Ｚｓ（＜０）よりも小さいことを条件として判定を行うようにしても、当然に同様の結果が得られる。
【０１０１】
本実施形態においては、さらに、上記変化度として、上記差Ｚｄｉｆ２（または差Ｚｄｉｆ２’）の絶対値を用いてもよい。このとき、対象画素のＺ値Ｚａが平均値Ｚａｖよりも大きい場合、および、平均値Ｚａｖが対象画素のＺ値Ｚａよりも大きい場合の両方の場合において輪郭が付されるので、断面が凸となる箇所と凹となる箇所との両方に輪郭を付すことができる。このように、第２の方法によれば、変化度として用いる差を変更することで、輪郭を付したい箇所を容易に変更することができる。
【０１０２】
また、他の実施形態においては、上記差Ｚｄｉｆ２に代えて、平均値Ｚａｖと対象画素のＺ値Ｚａとの比を変化度として用いてもよい。例えば、“Ｚａ／Ｚａｖ”（もしくはＺａｖ／Ｚａ）の値が所定の閾値以上（もしくは以下）であれば、対象画素は輪郭に対応すると判定するようにしてもよい。
【０１０３】
なお、以上に説明した第１および第２の方法においては、元画像の縦方向または横方向のいずれかについて、対象画素に隣接する参照画素を特定して輪郭検出処理を実行する場合について説明した。ここで、本実施形態では、ゲーム装置３は、縦方向および横方向の両方について輪郭検出処理を行う。縦方向の場合も横方向の場合も、対象画素に縦方向に隣接する画素を参照画素とするか、対象画素に横方向に隣接する画素を参照画素とするかという点を除いては、輪郭検出処理の内容は同様である。詳細は後述するが、ゲーム装置３は、縦方向および横方向の両方について輪郭検出処理を行った後、それぞれの検出結果に基づいて対象画素が輪郭に対応する画素であるか否かを最終的に判定する。
【０１０４】
（ゲーム装置における処理の詳細）
以下、図１７〜図２２を参照して、本実施形態における画像生成処理の詳細について説明する。なお、以下では、上記第１および第２の方法のうち、第２の方法を用いて変化度を算出する場合について説明する。図１７は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１７に示すように、メインメモリには、ゲームプログラム６０および画像処理用データ６１等が記憶される。なお、メインメモリには、図１７に示すデータの他、コントローラ５から送信されてくる操作データや、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【０１０５】
ゲームプログラム６０は、本実施形態に係る画像処理プログラムの一例であり、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム６０には、図１８に示す画像生成処理をＣＰＵ１０に実行させるプログラムの他、所定のゲーム処理をＣＰＵ１０に実行させるプログラムが含まれている。
【０１０６】
画像処理用データ６１は、後述する画像生成処理（図１８）において用いられるデータである。画像処理用データ６１は、元画像データ６２、Ｚ値データ６３、変化度データ６４、第１輪郭値データ６５、第２輪郭値データ６６、第３輪郭値データ６７、および輪郭画像データ６８を含む。
【０１０７】
元画像データ６２は、上記元画像のデータであり、３次元空間を表すための２次元の画像のデータである。上述のように、元画像データ６２は、輪郭が付される前の画像である。Ｚ値データ６３は、元画像を生成する際に元画像の各画素について算出されるＺ値を示すデータである。Ｚ値データ６３は、通常、Ｚバッファと呼ばれるメモリ領域に記憶される。
【０１０８】
変化度データ６４は、対象画素について算出される上記変化度を示すデータである。以下では、上述した（図１３参照）、対象画素のＺ値Ｚａから平均値Ｚａｖを引いた差Ｚｄｉｆ２を変化度として用いる。なお、変化度データ６４は、対象画素として選択される各画素それぞれの変化度の値を示す。本実施形態では、元画像の全ての画素を対象として輪郭検出処理を行うので、変化度データ６４は、元画像の各画素それぞれについて設定される変化度の値を示す。
【０１０９】
各輪郭値データ６５〜６７は、元画像の各画素に対して設定される輪郭値を示す。輪郭値は、画素に描画される輪郭の色の濃さを表す。本実施形態では、輪郭値ｅは０≦ｅ≦１の範囲で表され、輪郭値が大きいほど輪郭の色が濃いことを表す。したがって、本実施形態では、輪郭の濃さは必ずしも一定ではなく、画素によって濃さを変えて輪郭を描画することが可能である。また、輪郭に対応しないと判定された画素（輪郭として検出されなかった画素）については、輪郭値は“０”に設定される。
【０１１０】
第１輪郭値データ６５は第１輪郭値を示し、第２輪郭値データ６６は第２輪郭値を示し、第３輪郭値データ６７は第３輪郭値を示す。このように、本実施形態では、第１〜第３輪郭値という３つの輪郭値が用いられる。第１輪郭値は、画像の横方向に関して輪郭検出処理を行った結果得られる各画素の輪郭値を示し、第２輪郭値は、画像の縦方向に関して輪郭検出処理を行った結果得られる各画素の輪郭値を示す。第３輪郭値は、第１および第２輪郭値に基づいて算出され、最終的に得られる輪郭画像における各画素の輪郭の濃さを示す。
【０１１１】
輪郭画像データ６８は、上記輪郭画像のデータである。詳細は後述するが、輪郭画像データ６８は、元画像データ６２と第３輪郭値データ６７とを用いて生成される。
【０１１２】
次に、ゲーム装置３において行われる画像生成処理の詳細を、図１８〜図２０を用いて説明する。図１８は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入され、ゲームプログラムが記憶された光ディスク４がゲーム装置３に挿入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１８に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図１８に示す処理は、ＣＰＵ１０およびＧＰＵ１１ｂの協働動作として行われる。
【０１１３】
図１８に示すステップＳ１において、まずＣＰＵ１０は、３次元空間の画像を生成するために必要な情報を計算する。具体的には、仮想の３次元空間に配置される各オブジェクトの位置を算出したり、仮想カメラの位置および向きを算出したりする。本実施形態では、例えば、コントローラ５に対して行われた操作に従ってプレイヤキャラクタを移動させたり、プレイヤキャラクタの位置に基づいて仮想カメラの位置および向きを算出したりする。なお、本実施形態においては、ステップＳ１〜Ｓ７の処理ループは、テレビ２に表示される画像が更新される時間間隔、すなわち、１フレーム時間（例えば１／６０秒）に１回の割合で実行される。
【０１１４】
続くステップＳ２において、ＣＰＵ１０は、３次元空間の画像（元画像）を生成する。すなわち、ステップＳ１で設定された仮想カメラに基づいて例えば透視変換を行うことによって、仮想カメラの位置（視点位置）から仮想カメラの方向（視線方向）に見た３次元空間の画像を生成する。なお、元画像を生成する処理において、メインメモリのＺバッファ領域には元画像の各画素について算出されたＺ値が記憶される。
【０１１５】
続くステップＳ３において、ＣＰＵ１０は、輪郭検出処理を実行する。輪郭検出処理は、元画像の各画素のうちで、輪郭に対応する画素を検出する処理である。以下、図１９を参照して、輪郭検出処理の詳細を説明する。
【０１１６】
図１９は、図１８に示す輪郭検出処理（ステップＳ３）の流れを示すフローチャートである。輪郭検出処理においては、まずステップＳ１１において、ＣＰＵ１０は、３次元空間の画像の各画素に設定される各Ｚ値をＺバッファからそれぞれ取得する。なお、描画精度を向上させる等の目的でＷバッファが用いられる場合があるが、この場合には、ステップＳ１１において、Ｚ値に代えてＷバッファの値を取得するようにしてもよい。また、それ以外であっても、奥行を表す値であれば適宜利用することが可能である。
【０１１７】
続くステップＳ１２において、ＣＰＵ１０は、３次元空間の距離に比例するように、ステップＳ１１で取得された各Ｚ値をそれぞれ変換する。ここで、Ｚバッファから取得されたＺ値そのままの値では、３次元空間における距離とＺ値の大きさとが比例関係にないことがある。具体的には、一般的なＺバッファのＺ値の精度は、手前ほど詳細であって、奥ほど粗くなっている。したがって、同じＺの値であっても、手前側の方が実際の長さは短いものとなっている。これは、一般的に、画面の手前側の方がデータの精度を要求されるためである。本実施形態においては、３次元空間における距離をより正確に表す奥行情報を得るために、３次元空間の距離に比例するようにＺ値を変換する。具体的には、ＣＰＵ１０は、取得されたＺ値に対して逆射影変換を行う。変換後の各Ｚ値を示すデータは、Ｚ値データ６３としてメインメモリに記憶される。なお、当該Ｚ値データ６３は、Ｚバッファに上書きされてもよいし、他の処理においてＺバッファのデータが必要となる場合等、Ｚバッファのデータを保持しておきたい場合には、Ｚバッファとは別のメモリ領域に記憶されてもよい。なお、Ｚバッファの値そのままであっても、前後関係自体は維持されているため、処理の軽減のためにＺバッファのＺ値をそのまま利用してもよい。
【０１１８】
なお、本実施形態においては、上記ステップＳ１２において、Ｚバッファに記憶されるＺ値を変換する処理を行ったが、他の実施形態においてはこの変換処理を実行しなくてもよい。すなわち、他の実施形態においては、ステップＳ１３以降の輪郭検出処理において、Ｚバッファに記憶されるＺ値をそのまま用いるようにしてもよい。
【０１１９】
ステップＳ１３において、ＣＰＵ１０は、第１輪郭値算出処理を実行する。第１輪郭値算出処理は、第１輪郭値を算出するための処理であり、具体的には、画像の横方向に関して輪郭検出処理を行う処理である。以下、図２０を参照して、輪郭検出処理の詳細を説明する。
【０１２０】
図２０は、図１９に示す第１輪郭値算出処理（ステップＳ１３）の流れを示すフローチャートである。第１輪郭値算出処理においては、まずステップＳ２１において、ＣＰＵ１０は、元画像の各画素のうちから対象画素を選択する。本実施形態においては、元画像の全ての画素のうちで、今回の第１輪郭値算出処理においてまだ選択されていない画素から対象画素が選択される。たとえば、全画素を左上から順番に選択していくような選択方法でもよいし、他の選択の仕方でもよい。
【０１２１】
ステップＳ２２において、ＣＰＵ１０は、ステップＳ２１で選択した対象画素に対して所定の位置関係にある参照画素を特定する。図２１は、画像上における対象画素と参照画素との関係を示す図である。本処理例においては、上述した第２の方法を採用する。すなわち、対象画素の両隣の画素が参照画素として特定される。第１輪郭値算出処理においては、図２１に示されるように、横方向（ｘ方向）に関して対象画素Ｐａの両隣、すなわち、対象画素Ｐａの左側で隣接する画素Ｐｄと右側で隣接する画素Ｐｅとが参照画素として特定される。また、後述する第２輪郭値算出処理（ステップＳ１４）においては、縦方向（ｙ方向）に関して対象画素Ｐａの両隣、すなわち、対象画素Ｐａの上側で隣接する画素Ｐｂと下側で隣接する画素Ｐｃとが参照画素として特定される。
【０１２２】
なお、ステップＳ２２において、対象画素が画像の端である場合、隣接する画素が存在しないので、２つの参照画素のうち一方の参照画素が特定されないこととなる。この場合、ＣＰＵ１０は、特定されない参照画素のＺ値の代わりに対象画素のＺ値の値を用いて後述するステップＳ２３の処理を実行する。つまり、対象画素が画像の端である場合には、その隣に対象画素のＺ値と同じＺ値が設定された画素が存在すると仮定して変化度を算出する。なお、他の実施形態においては、ステップＳ２１において、画像の端である画素を対象画素として選択しないようにしてもよい。
【０１２３】
図２０の説明に戻り、ステップＳ２３において、ＣＰＵ１０は、対象画素についてＺ値の差分の変化度を算出する。変化度は、メインメモリに記憶されているＺ値データ６３により示される、対象画素のＺ値および各参照画素のＺ値を用いて算出される。すなわち、ＣＰＵ１０は、対象画素のＺ値および各参照画素のＺ値を上述した式（１）に代入することによって変化度（対象画素のＺ値から２つの参照画素のＺ値の平均値を引いた差）Ｚｄｉｆ２を算出する。算出された変化度を示すデータは、変化度データ６４としてメインメモリに記憶される。
【０１２４】
なお、上記ステップＳ２３では、上記第２の方法を用いて変化度を算出する場合について説明したが、ＣＰＵ１０は、上記第１の方法を用いて変化度を算出するようにしてもよい。なお、第１の方法を用いる場合、ステップＳ２２において特定される画素は１つでよい。そして、ステップＳ２３では、ＣＰＵ１０は、対象画素のＺ値と参照画素のＺ値との差を変化度として算出する。
【０１２５】
ステップＳ２４において、ＣＰＵ１０は、ステップＳ２３において算出された変化度に基づいて第１輪郭値を算出する。図２２は、変化度と輪郭値との関係を示す図である。本実施形態においては、第１輪郭値は、図２２に示す関係に従って変化度から算出される。図２２に示されるように、変化度Ｚｄｉｆ２が所定の閾値Ｚｓ以下の場合、第１輪郭値ｅ１は“０”と算出される。すなわち、変化度Ｚｄｉｆ２が所定の閾値Ｚｓ以下の場合、対象画素は輪郭とは検出されない。一方、変化度Ｚｄｉｆ２が所定の閾値Ｚｓよりも大きい場合、対象画素は輪郭として検出され、第１輪郭値ｅ１は０よりも大きい値として算出される。ここで、本実施形態においては、変化度Ｚｄｉｆ２がＺｓ＜Ｚｄｉｆ２＜Ｚｓ’の範囲である場合、第１輪郭値ｅ１は、変化度Ｚｄｉｆ２が大きいほど大きい値となるように算出される。また、変化度Ｚｄｉｆ２が所定値Ｚｓ’以上である場合には第１輪郭値ｅ１は最大値（＝１）となるように算出される。ステップＳ２４で算出された第１輪郭値ｅ１を示すデータは、第１輪郭値データ６５としてメインメモリに記憶される。
【０１２６】
なお、本実施形態においては、図２２に示す関係に従って変化度から第１輪郭値を算出するようにしたが、他の実施形態においては、輪郭値は“０”または“１”の２値で表されてもかまわない。つまり、他の実施形態においては、変化度Ｚｄｉｆ２が所定の閾値Ｚｓ以下の場合、第１輪郭値ｅ１は“０”と算出され、変化度Ｚｄｉｆ２が当該閾値Ｚｓよりも大きい場合、第１輪郭値ｅ１は“１”と算出されるようにしてもよい。
【０１２７】
図２０の説明に戻り、ステップＳ２５において、ＣＰＵ１０は、元画像の全ての画素について第１輪郭値を算出したか否かを判定する。ステップＳ２５の判定結果が否定である場合、ステップＳ２１の処理が再度実行される。以降、ステップＳ２５で全ての画素について第１輪郭値を算出したと判定されるまで、ステップＳ２１〜Ｓ２５の処理が繰り返し実行される。一方、ステップＳ２５の判定結果が肯定である場合、ＣＰＵ１０は、図２０に示す第１輪郭値算出処理を終了する。
【０１２８】
図１９の説明に戻り、ステップＳ１３の次のステップＳ１４において、ＣＰＵ１０は、第２輪郭値算出処理を実行する。第２輪郭値算出処理は、第２輪郭値を算出するための処理であり、具体的には、画像の縦方向に関して輪郭検出処理を行う処理である。第２輪郭値算出処理の内容は、ステップＳ２２において特定する参照画素が異なる他は、第１輪郭値算出処理と同じである。第２輪郭値算出処理においては、図２１に示されるように、縦方向に関して対象画素Ｐａの両隣、すなわち、対象画素Ｐａの上側で隣接する画素Ｐｂと下側で隣接する画素Ｐｃとが参照画素として特定される。ステップＳ１４の結果、元画像の各画素について第２輪郭値がそれぞれ算出され、算出された各第２輪郭値を示すデータは、第２輪郭値データ６６としてメインメモリに記憶される。
【０１２９】
ステップＳ１５において、ＣＰＵ１０は、ステップＳ１２およびＳ１３で算出された第１および第２輪郭値に基づいて第３輪郭値を算出する。ここで、ある画素に設定される第３輪郭値ｅ３は、当該ある画素に設定される第１輪郭値ｅ１と第２輪郭値ｅ２とを加算することによって算出される。つまり、ＣＰＵ１０は、各画素について第１輪郭値ｅ１と第２輪郭値ｅ２とを加算することによって各画素の第３輪郭値ｅ３を得る。ここで、加算によって得られる第３輪郭値ｅ３は、０〜２の範囲の値をとることになるため、後述の処理のために０〜１の範囲となるように正規化する。算出された各第３輪郭値を示すデータは、第３輪郭値データ６７としてメインメモリに記憶される。以上のステップＳ１５の後、ＣＰＵ１０は輪郭検出処理を終了する。なお、第３輪郭値ｅ３は、第２輪郭値算出処理において、対象画素ごとの第２輪郭値ｅ２が算出される直後に算出しておくようにしてもよい。また、対象画素ごとに第１輪郭値ｅ１および第２輪郭値ｅ２を算出し、それらから第３輪郭値ｅ３を算出する順番であっても構わない。
【０１３０】
なお、本実施形態においては、第３輪郭値ｅ３を、第１輪郭値ｅ１と第２輪郭値ｅ２との和としたが、第３輪郭値ｅ３は、第１輪郭値ｅ１および第２輪郭値ｅ２を用いて算出されるものであれば、他の方法で算出されてもよい。例えば、他の実施形態においては、ある画素に設定される第３輪郭値ｅ３は、当該ある画素に設定される第１輪郭値ｅ１と第２輪郭値ｅ２とのうちの大きい方の値として算出してもよい。また、第１輪郭値ｅ１と第２輪郭値ｅ２の積であってもよい。
【０１３１】
なお、横方向に関して（対象画素の横方向にある参照画素を特定して）輪郭値を算出する第１輪郭値算出処理（ステップＳ１３）では、縦方向に平行に延びる輪郭を検出することはできない。また、縦方向に関して（対象画素の縦方向にある参照画素を特定して）輪郭値を算出する第２輪郭値算出処理（ステップＳ１４）では、横方向に平行に延びる輪郭を検出することはできない。つまり、第１輪郭値算出処理または第２輪郭値算出処理のいずれかのみでは、特定の方向に延びる輪郭を検出することができない。そこで、本実施形態においては、ゲーム装置３は、第１輪郭値算出処理と、第２輪郭値算出処理とをそれぞれ実行する。そして、第１輪郭値算出処理および第２輪郭値算出処理の処理結果（第１輪郭値および第２輪郭値）に基づいて対象画素の最終的な輪郭値（第３輪郭値）を算出する。これによって、どの方向に延びる輪郭であっても検出することができ、正確に輪郭を検出することができる。
【０１３２】
第１輪郭値算出処理および第２輪郭値算出処理で算出される第１輪郭値および第２輪郭値は、対象画素の最終的な輪郭値である第３輪郭値を算出するために用いられる。また、輪郭値は、その値が“０”であるか否かによって、対象画素が輪郭に対応するか否かを示すものである。以上より、第１輪郭値算出処理および第２輪郭値算出処理は、対象画素が輪郭に対応するか否かを予備的に判定する処理であると言える。そして、ステップＳ１５の処理は、第１および第２輪郭値に基づいて、対象画素が輪郭に対応するか否かを最終的に示す第３輪郭値を算出する処理である。つまり、ステップＳ１５の処理は、ステップＳ１３およびＳ１４における予備的な判定結果に基づいて、対象画素が輪郭に対応するか否かを判定する処理である。このように、本実施形態においては、画像の縦方向と横方向とのそれぞれについて予備的な判定処理を行った後で、対象画素が輪郭に対応するか否かを最終的に判定することによって、縦方向および横方向の両方を考慮した最終的な判定結果を得ることができる。
【０１３３】
図１８の説明に戻り、ステップＳ３の次のステップＳ４において、ＣＰＵ１０は、元画像に輪郭が付された輪郭画像を生成する。輪郭画像は、元画像と、上記第３輪郭値とに基づいて算出される。具体的には、輪郭画像のある画素の色値Ｃ３は、元画像における当該画素の色値Ｃ１と、当該画素に設定される第３輪郭値ｅ３とを用いて、以下の式（３）に従って算出される。
Ｃ３＝Ｃ１×（１−ｅ３）＋Ｃ２×ｅ３  …（３）
上式（３）において、定数Ｃ２は、輪郭の色を示す色値であり、予め定められている。各画素について上式（３）の計算を行うことによって、輪郭画像の各画素の色値を算出することができる。上式（３）によれば、輪郭と検出されない画素（すなわち、第３輪郭値ｅ３＝０の画素）では、元画像の色値Ｃ１がそのまま輪郭画像の色値Ｃ３となる。一方、輪郭と検出された画素では、第３輪郭値ｅ３の値が大きいほど、元画像の色の割合が低く、輪郭の色の割合が高くなる。つまり、第３輪郭値ｅ３の値が大きいほど輪郭の色が濃くなるように輪郭画像の色値Ｃ３が決定される。したがって、本実施形態によれば、変化度の値に応じて輪郭の色の濃さを変化させて輪郭を描くことができる。上式（３）に従って算出された輪郭画像の各画素の色値を示すデータは、輪郭画像データ６８としてメインメモリに記憶される。
【０１３４】
ステップＳ５において、ＣＰＵ１０は、輪郭画像をテレビ２の画面に表示させる。すなわち、ステップＳ４の処理で得られた輪郭画像データ６８を、ＶＲＡＭ１１ｄに設けられるフレームバッファに書き込み、書き込まれた輪郭画像がテレビ２に出力される。
【０１３５】
ステップＳ６において、ＣＰＵ１０は、ステップＳ１〜Ｓ５の処理を終了するか否かを判定する。この判定処理は、例えば、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ６の判定結果が否定である場合、ステップＳ１の処理が再度実行される。以降、ステップＳ６で画像生成処理を終了すると判定されるまで、ステップＳ１〜Ｓ６の処理が繰り返し実行される。一方、ステップＳ６の判定結果が肯定である場合、ＣＰＵ１０は、図１８に示す処理を終了する。
【０１３６】
以上に説明した処理によれば、毎フレーム生成される元画像に基づいて輪郭を検出して輪郭画像を生成する処理が毎フレーム繰り返される。ここで、上記処理においては、ステップＳ１においてオブジェクトが移動したり、仮想カメラが移動・回転したりするので、仮想カメラの視線に対するオブジェクトの向きが変化することがある。このとき、ある画素における上記変化度の値がフレーム毎に変化し、それまで検出されなかった新たな輪郭が、ある時点のフレームから検出されるようになる場合がある。すなわち、ある画素の変化度の値がオブジェクトや仮想カメラの移動につれて次第に大きくなっていき、当該変化度の値が閾値を超える結果、当該画素が輪郭として検出される場合がある。この場合、変化度は次第に大きくなるので、輪郭値（第３輪郭値）は０から次第に大きくなる。ここで、本実施形態においては、上記ステップＳ４で述べたように、輪郭値が大きいほど輪郭の色は濃くなる。したがって、上記のようにオブジェクトの向きが変化する結果新たな輪郭が表示される場合には、最初は薄い色の輪郭が表示され、その後輪郭は次第に濃くなっていくように表示される。このように、本実施形態によれば、新たに輪郭が描かれる場合には、急に輪郭が現れるのではなく、次第に輪郭が浮かび上がってくるように表現することができる。すなわち、急に輪郭が現れることによって見る者が違和感を感じることがなく、輪郭を自然に表示させることができる。
【０１３７】
以上に説明したように、本実施形態によれば、３次元空間の画像において輪郭を検出する処理を当該画像を用いて行うことができる。これによれば、輪郭付加用に３次元のオブジェクトを新たに生成しなくとも画像に輪郭を付加することができ、検出に関連した処理の回数は画素数に依存するため、オブジェクトの数やデータ量に起因して検出の処理量が増大することがなく、コンピュータの処理付加を軽減することができる。
【０１３８】
また、本実施形態で用いた第２の方法によれば、対象画素に対して複数の参照画素を特定し、対象画素および複数の参照画素について画素間のＺ値の差の変化度に基づいて、対象画素が輪郭に対応するか否かを判定した。これによれば、上述した第１の方法、すなわち、対象画素と１つの参照画素との間のＺ値の差に基づいて判定を行う方法に比べて輪郭を正確に検出することができる。
【０１３９】
（参照画素に関する変形例）
上記実施形態では、ゲーム装置３は、対象画素の変化度を算出するために用いられる参照画素として、対象画素の両側で隣接する２個１組の画素を複数組特定することとした。具体的には、対象画素から各組の参照画素への方向が異なるように、縦方向に並ぶ２個の画素（上側および下側で隣接する２個の画素）を１組として特定するとともに、横方向に並ぶ２個の画素（右側および左側で隣接する２個の画素）を１組として特定した。ここで、２個１組として特定される２つの参照画素は、２つの参照画素の中心に対象画素が位置するように、換言すれば、２つの参照画素が対象画素を中心に点対称となる位置にくるように特定されることが好ましい。これによれば、対象画素と２つの参照画素とが一直線に並ぶことになり、かつ、対象画素から各参照画素まで距離が等距離となるので、対象画素のＺ値と参照画素のＺ値との差から変化度を正確に算出することができる。なお、対象画素を中心に点対称となる位置にある２個１組の画素を参照画素として特定する場合の具体例としては、上記実施形態の他に、以下に説明する例が考えられる。
【０１４０】
図２３は、他の実施形態における対象画素と参照画素との関係を示す図である。上記実施形態においては、縦方向に並ぶ２個の画素を１組の参照画素として特定するとともに横方向に並ぶ２個の画素を１組の参照画素として特定したが、他の実施形態においては、図２３に示すように、（対象画素を中心に点対称となる位置にあり）斜め方向に並ぶ２個の画素を参照画素としてもよい。具体的には、図２３の例においては、対象画素Ｐａに対して斜めの位置にある画素Ｐｅ，Ｐｆ，Ｐｇ，およびＰｈを参照画素としている。このとき、ゲーム装置３は、画素ＰｅおよびＰｆを１組の参照画素として輪郭値（第４輪郭値）を算出するとともに、画素ＰｇおよびＰｈを１組の参照画素として輪郭値（第５輪郭値）を算出する。さらにこのとき、上記ステップＳ１５で算出される第３輪郭値は、第４および第５輪郭値に基づいて算出されてもよいし、第１、第２、第４および第５輪郭値に基づいて算出されてもよい。つまり、２個１組として特定される参照画素の組の数は、いくつであっても構わない。
【０１４１】
また、上記実施形態では、ゲーム装置３は、対象画素の両隣の画素を１組の参照画素として特定したが、他の実施形態においては、参照画素は、対象画素に隣接していなくてもよい。図２４は、他の実施形態における対象画素と参照画素との関係を示す図である。図２４に示すように、参照画素は、対象画素から複数個の画素分だけ離れた（図２４では２画素分だけ離れた）画素であってもよい。
【０１４２】
ここで、対象画素と参照画素との幅ｗは輪郭の太さに対応する。たとえば、図２４の画素Ｐａが丁度元のオブジェクトの輪郭部分であった場合には、画素Ｐａの両隣の画素も判定のための条件を満たす場合が多くなるため、画素Ｐａとその両隣の画素がすべて輪郭の画素と判定されることになる。つまり、対象画素からｗ画素分だけ離れた画素を参照画素として特定する場合、ｗの大きさに応じた太さの輪郭が描かれることになる。図２５および図２６は、上記実施形態による処理によって生成された輪郭画像の例を示す図である。図２５は、上記幅ｗ＝１である場合の輪郭画像を示し、図２６は、上記幅ｗを１より大きくした場合の輪郭画像を示している。なお、図２５に示す画像と図２６に示す画像とでは、仮想カメラの位置がやや異なっている。図２５および図２６からわかるように、幅ｗを大きくすることによって、輪郭が太くなることがわかる。したがって、本実施形態によれば、対象画素と参照画素との幅ｗを調整することにより、輪郭の太さを容易に変更することができる。
【０１４３】
また、他の実施形態においては、参照画素の組に応じて幅ｗの大きさを変えてもよい。すなわち、１組に含まれる２つの参照画素の並ぶ方向に応じて幅ｗの大きさを変えてもよい。図２７は、他の実施形態における対象画素と参照画素との関係を示す図である。図２７においては、対象画素Ｐａに対して右上および左下方向については、対象画素Ｐａから１画素分離れている画素ＰｅおよびＰｆを１組の参照画素としているのに対して、対象画素Ｐａに対して左上および右下方向については、対象画素Ｐａから２画素分離れている画素ＰｋおよびＰｌを１組の参照画素としている。図２８は、参照画素の並ぶ方向に応じて幅ｗの大きさを変えた場合に生成される輪郭画像の例を示す図である。図２８に示すように、上記方向に応じて幅ｗの大きさを変えた場合、描かれる輪郭の太さは、右上および左下方向に関しては細く、左上および右下方向に関しては太くなる。このように、本実施形態によれば、幅ｗを調整することによって、マーカペンのような、描く方向によって太さが異なるペンで描かれたような輪郭を表現することが可能である。
【０１４４】
また、他の実施形態においては、対象画素が輪郭に対応するか否かを判定する条件を、参照画素の組に応じて異ならせるようにしてもよい。例えば、縦方向に並ぶ２個の画素を１組の参照画素とし、横方向に並ぶ２個の画素を１組の参照画素として特定する場合、縦方向に関する輪郭値を算出する処理と、横方向に関する輪郭値を算出する処理とで、上記閾値Ｚｓの値を異ならせてもよい。より具体的には、縦方向に並ぶ参照画素を用いて輪郭値を算出する処理については上記閾値Ｚｓを相対的に大きく設定し、横方向に並ぶ参照画素を用いて輪郭値を算出する処理については上記閾値Ｚｓを相対的に小さく設定してもよい。これによっても、上記幅ｗを調整する場合と同様、方向に応じて太さが異なる輪郭を表現することが可能である。
【０１４５】
以上においては、対象画素を中心に点対称となる位置にある２個１組の画素を参照画素として特定する場合について説明したが、他の実施形態においては、１つの輪郭値を算出するために用いる参照画素の数は２つに限らない。ゲーム装置３は、例えば、対象画素に隣接する上下左右の４つの画素（または、対象画素の斜め方向にある画素を含む８つの画素）を参照画素として特定し、当該４つの画素のＺ値の平均値と対象画素のＺ値との差を用いて変化度を算出してもよい。このとき、ゲーム装置３は、第１輪郭値および第２輪郭値を算出せずに、算出された変化度に基づいて算出される輪郭値を上記第３輪郭値とすればよい。
【０１４６】
（元画像の一部に対して輪郭を付す変形例）
上記実施形態では、ゲーム装置３が画像の全体に輪郭を付す処理を行う場合を例として説明したが、他の実施形態においては、画像の一部（例えば、特定のオブジェクト）にのみ輪郭を付す処理を行うことも可能である。例えば、オブジェクトＡには輪郭を付け、オブジェクトＢには輪郭を付けない場合を考える。この場合、ゲーム装置３はまず、オブジェクトＡを描画し、オブジェクトＡのみが描画された画像に対して、上記実施形態と同様の輪郭を付す処理を実行する。これによって、輪郭が付されたオブジェクトＡの画像が生成されるので、ゲーム装置３は、当該画像に重ねてオブジェクトＢを描画する。これによって、オブジェクトＡのみに輪郭が付された画像を生成することができる。なお、ゲーム装置３は、輪郭が付されたオブジェクトＡの画像と、オブジェクトＢの画像とを合成することによって、オブジェクトＡのみに輪郭が付された画像を生成してもよい。
【０１４７】
ここで、輪郭が付されたオブジェクトＡの画像に重ねてオブジェクトＢを描画する際において、例えばオブジェクトＡよりも奥側にオブジェクトＢが存在する場合には、オブジェクトＡの輪郭がオブジェクトＢによって消されてしまうことがある。すなわち、輪郭がオブジェクトＡより外側に付されている場合には、オブジェクトＢが描画される画素では、オブジェクトＡの輪郭がオブジェクトＢによって上書きされて消されてしまう。これを防止するためには、輪郭が付されたオブジェクトＡの画像を生成する際に、輪郭に対応する画素のＺ値を変更しておけばよい。具体的には、ゲーム装置３は、対象画素が輪郭に対応すると判定された場合、当該対象画素についての参照画素のＺ値のうちで最小の値を、対象画素のＺ値とする。これによって、オブジェクトＡの輪郭に対応する画素のＺ値は、オブジェクトＡのＺ値と同程度の値となるので、当該画素の色値は、オブジェクトＢが描画される際にも変更されず、輪郭が正しく残ることになる。
【０１４８】
（輪郭検出の応用例）
上記実施形態においては、ゲーム装置３は、元画像の各画素のうちから輪郭に対応する画素を検出する処理（輪郭検出処理）を行い、さらに、検出された画素に輪郭の色を付すことによって輪郭画像を生成する（ステップＳ４）ものであった。ここで、本実施形態における輪郭検出処理は、輪郭画像を生成する他に、種々の目的に利用することが可能である。例えば、輪郭検出処理の検出結果に基づいて、輪郭のみの画像を生成することも可能である。具体的には、ステップＳ４において、上式（３）における変数Ｃ１を、背景の色値とすることによって、輪郭のみが描かれた画像を生成することができる。
【０１４９】
また、輪郭検出処理の検出結果に基づいて、元画像に対してアンチエイリアシング処理を行うことも可能である。具体的には、ゲーム装置３は、元画像の画素のうちで輪郭と検出された画素に従って決められる領域内の画素を対象として、画像をぼかす処理を行う。なお、ぼかし処理を行う対象となる画素領域は、例えば、輪郭と検出された画素のみを含む領域であってもよいし、輪郭と検出された画素と当該画素から所定距離内にある画素とからなる領域であってもよい。これによれば、元画像の輪郭の部分（または輪郭の周辺の部分）についてのみぼかし処理を行うことで、当該部分についてのエイリアシングを解消することができる。以上のように、本実施形態において実行される輪郭検出処理は、輪郭画像を生成する目的の他にも種々の目的に利用することが可能である。
【０１５０】
なお、上記実施形態においては、輪郭画像を生成する画像生成処理がゲーム装置３におけるゲーム処理中に実行される場合を例として説明したが、本発明は、ゲーム用途に用いられる場合に限定されず、３次元の仮想空間の画像に対して輪郭を検出する処理を実行する種々の画像処理装置に適用することが可能である。
【産業上の利用可能性】
【０１５１】
以上のように、本発明は、３次元空間の画像において輪郭を検出する際において、状況によって処理付加が増大することを防止すること等を目的として、例えば、ゲームキャラクタ等の画像に輪郭を付して表示するゲーム装置やゲームプログラムとして利用することが可能である。
【図面の簡単な説明】
【０１５２】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５Ａ】コントローラ５の内部構造を示す図
【図５Ｂ】コントローラ５の内部構造を示す図
【図６】コントローラ５の構成を示すブロック図
【図７】コントローラ５を用いてゲーム操作を行うときの様子を示す図解図
【図８】３次元空間の画像の一例を示す図
【図９】図８に示す画像に対して輪郭を付した画像の一例を示す図
【図１０】３次元空間内のオブジェクトが描画される画素と、画素に設定されるＺ値との関係を示す図
【図１１】輪郭検出処理の第１の方法を説明する図
【図１２】第１の方法で輪郭を検出した結果を示す図
【図１３】輪郭検出処理の第２の方法を説明する図
【図１４】第２の方法で輪郭を検出した結果を示す図
【図１５】差Ｚｄｉｆ２’を変化度として用いた場合における輪郭の検出結果を示す図
【図１６】図１５に示した場合に得られる輪郭画像の一例を示す図
【図１７】ゲーム装置３のメインメモリに記憶される主なデータを示す図
【図１８】ゲーム装置３において実行される処理の流れを示すメインフローチャート
【図１９】図１８に示す輪郭検出処理（ステップＳ３）の流れを示すフローチャート
【図２０】図１９に示す第１輪郭値算出処理（ステップＳ１３）の流れを示すフローチャート
【図２１】画像上における対象画素と参照画素との関係を示す図
【図２２】変化度と輪郭値との関係を示す図
【図２３】他の実施形態における対象画素と参照画素との関係を示す図
【図２４】他の実施形態における対象画素と参照画素との関係を示す図
【図２５】本実施形態による処理によって生成された輪郭画像の例を示す図
【図２６】本実施形態による処理によって生成された輪郭画像の他の例を示す図
【図２７】他の実施形態における対象画素と参照画素との関係を示す図
【図２８】参照画素の並ぶ方向に応じて幅ｗの大きさを変えた場合に生成される輪郭画像の例を示す図
【符号の説明】
【０１５３】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
１０    ＣＰＵ
１１ｃ  ＧＰＵ
１１ｅ  内部メインメモリ
１２    外部メインメモリ
５１，５２，５３  オブジェクト
【図１】
2008302130.tif 000003
【図２】
2008302130.tif 000004
【図３】
2008302130.tif 000005
【図４】
2008302130.tif 000006
【図５Ａ】
2008302130.tif 000007
【図５Ｂ】
2008302130.tif 000008
【図６】
2008302130.tif 000009
【図７】
2008302130.tif 000010
【図８】
2008302130.tif 000011
【図９】
2008302130.tif 000012
【図１０】
2008302130.tif 000013
【図１１】
2008302130.tif 000014
【図１２】
2008302130.tif 000015
【図１３】
2008302130.tif 000016
【図１４】
2008302130.tif 000017
【図１５】
2008302130.tif 000018
【図１６】
2008302130.tif 000019
【図１７】
2008302130.tif 000020
【図１８】
2008302130.tif 000021
【図１９】
2008302130.tif 000022
【図２０】
2008302130.tif 000023
【図２１】
2008302130.tif 000024
【図２２】
2008302130.tif 000025
【図２３】
2008302130.tif 000026
【図２４】
2008302130.tif 000027
【図２７】
2008302130.tif 000028
【図２５】
2008302130.tif 000029
【図２６】
2008302130.tif 000030
【図２８】
2008302130.tif 000031