説明

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

【課題】 ユーザが位置を指定しなくても、画像の輪郭位置に描画を行うことができる、画像処理装置を提供する。
【解決手段】 画像処理装置(10)は、原画像100から輪郭線104を検出し(S53〜S69)、輪郭線104を含む候補区画106Cから対象区画106Sを選出し(S71〜S87)、そして対象区画106Sの位置にオブジェクトSt1,St2…を描画する(S91)。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像処理プログラムおよび画像処理装置に関し、特にたとえば、画像にオブジェクトを配置したりエフェクトを加えたりする、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関する。
【背景技術】
【0002】
従来、画像の編集において、画像上の任意の位置に所定のオブジェクトを配置したり、所定のエフェクト効果を加えたりするものが存在する。
【0003】
非特許文献1では、タッチペンでタッチした箇所へスタンプを押すように飾りを配置することができるプログラムが開示されている。
【0004】
また、非特許文献2では、輝きを演出するための光(ハイライト効果)を配置する「逆光フィルタ」について開示されている。ハイライトの位置は、ユーザの指定によって調整することができる。
【非特許文献1】任天堂株式会社、“いつでもプリクラ☆キラデコプレミアム:こんなプリが撮影できます!”、[online]、[平成21年12月25日検索]、インターネット<URL:http://www.nintendo.co.jp/ds/dsiware/khdj/film/frame/page3.html>
【非特許文献2】アドビシステムズ、“Adobe Photoshop Elements”、“「逆光」フィルタで写真を演出しよう”、[online]、[平成21年12月25日検索]、インターネット<URL:http://www.adobe.com/jp/digitalimag/consumer/portal/tips/04/stepupTip.html>
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、プリクラなどのアプリケーションにおいて、画像に含まれる輪郭に星などのオブジェクトを配置したりシャープネスなどのエフェクトを加えたりすることで、画像の見栄えをよくしたいという要求がある。
【0006】
しかし、非特許文献1および非特許文献2に開示されたいずれのプログラムも、ユーザが指定した位置にオブジェクトを配置したりエフェクトを加えたりするものであるため、輪郭に沿った位置を逐一指定する手間がかかってしまう。
【0007】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【0008】
この発明の他の目的は、ユーザが自ら指定する必要なく画像の輪郭位置に所定の描画を行うことを可能にする、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【課題を解決するための手段】
【0009】
この発明は、上記の課題を解決するために、以下の構成を採用した。
【0010】
第1の発明は、画像処理プログラムであって、画像処理装置のコンピュータを、画像から輪郭を検出する輪郭検出手段、輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段として機能させる。
【0011】
ここで、位置は、たとえば複数の画素からなる区画ないし画素を単位とする位置である。所定の描画は、たとえばオブジェクトの描画および/またはエフェクトの描画を含む。なお、エフェクトを描画するとは、画像にエフェクト(特殊効果:たとえば、ぼかし,シャープネス,グラデーション,色彩など)を付加することをいい、たとえばフィルタ演算などの計算によって画素値を変化させることで実現される。
【0012】
第1の発明によれば、輪郭から描画対象位置を選出し、その位置に描画するので、輪郭に関連する位置に対する所定の描画をユーザの指示に基づくことなく容易に行うことができる。
【0013】
第2の発明は、第1の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、輪郭に関連する位置から、所定の割合に従って描画の対象となる位置を選出する。
【0014】
ここで、割合は、たとえば位置の数量的な割合および/または間隔的な割合を含む。ある実施例では、10個あたり1個といった数量的な割合に従って位置を選出し、他の実施例では、非選択が9個続くと1個選択といった間隔的な割合に従って位置を選出する。その他の実施例では、たとえば後述する第10の発明のように、輪郭に関連する各位置が描画の対象となるか否かを確率に基づいて決定することによって、結果として、位置の数量的な割合および間隔的な割合が、平均的に所定の割合となるようにしている。さらに、第11の発明のように、確率を位置毎に設定ないしは補正し、各位置が描画の対象となるか否かをその確率に基づいて個別に決定すれば、画像における描画の配置を調整する(たとえば画像のある部分は疎に、他の部分は密に描画する)ことができる。
【0015】
第2の発明によれば、輪郭に関連する位置から、描画の対象となる位置を所定割合によって選出するため、輪郭に関連する位置にオブジェクトやエフェクトを適度に描画することができ、見栄えのよい描画を行うことができる。
【0016】
第3の発明は、第2の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、輪郭に関連する位置を計数し、輪郭に関連する位置の数に応じた割合を設定し、そして割合に従って輪郭に関連する位置から描画の対象となる位置を選出する。
【0017】
第3の発明では、輪郭に関連する位置がいくつあるかによって、割合ひいては、選出される位置の数が変化する。
【0018】
第3の発明によれば、輪郭部分が多い/少ないに応じて、画像全体での描画の数を調整することができる。
【0019】
第4の発明は、第3の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、輪郭に関連する位置の数が多いほど、小さい割合を設定する。
【0020】
第4の発明によれば、輪郭に関連する位置が多いほど割合は小さくなるので、輪郭部分が多い画像/少ない画像など、どのような画像に対して描画を行っても、画像全体での描画の数が同程度になるよう描画の数を調整することができる。
【0021】
第5の発明は、第1の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、画像の所定位置から各輪郭に関連する位置までの距離を算出し、距離に応じて、描画の対象となる位置が選出される割合を設定し、そして輪郭に関連する位置から、割合設定手段によって設定された割合に従って描画の対象となる位置を選出する。
【0022】
第5の発明では、画像の所定位置から各位置までの距離に応じた割合が、個別に設定される。
【0023】
なお、前述のような、各位置が描画の対象となるか否かを確率(p)に基づいて決定する実施例では、その確率が、画像の所定位置から各位置までの距離に応じて個別に補正される。
【0024】
第5の発明によれば、所定位置からの距離に応じて描画の割合を変化させることができる。例えば、被写体が所定位置にあり、その他の位置に背景があるような画像では、被写体と背景で異なる密度によって描画を行うことができる。
【0025】
第6の発明は、第5の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、画像の中心から各輪郭に関連する位置までの距離を算出し、距離が大きいほど、大きい割合を設定する。
【0026】
第6の発明によれば、各位置には、画像の中心からの距離が大きいものほど大きい割合が設定されるので、中心から遠い(つまり画像の外側)ほど、描画の数を多くすることができる。例えば、被写体が中央にあり外側に背景があるような画像が多いという前提に立てば、被写体に重なる描画を少なくし、背景に重なる描画を多くできるので、被写体を際立たせることができる。
【0027】
第7の発明は、第1の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、輪郭に関連する位置から、描画の対象となる位置をランダムに選出する。
【0028】
第7の発明によれば、輪郭に関連する位置(たとえば輪郭を含む区画、あるいは輪郭を構成する画素など)から、描画の対象となる位置をランダムに選出するので、輪郭にオブジェクトやエフェクトを描画するパターンに多様性を与えることができ、意外性・偶然性を楽しむことができる。
【0029】
第8の発明は、第1の発明に従属する画像処理プログラムであって、輪郭検出手段は、画像を構成する各画素について、色成分ごとに、当該画素または、当該画素とその周辺に存在する1以上の画素の色成分値の合計である第1合計値と、当該画素を含まない当該画素の周辺に存在する、第1合計値の算出に用いた画素数と同数の画素の色成分値の合計である第2合計値との差分値を算出し、各色成分について算出された当該差分値を合算することで当該画素における合計差分値(A=ΔR+ΔG+ΔB)を算出し、画像の各画素における合計差分値(A)が第1閾値(ThA)以上か否かを判別し、そして第1閾値以上であると判別された画素を、輪郭を構成する画素として検出する。
【0030】
第8の発明では、輪郭検出にあたって、当該画素を含む複数の画素と当該画素を含まない周辺の複数の画素との間で色成分ごとに差分を算出し、各色成分の当該差分値を合計し、その合計差分値が第1閾値以上であれば、当該画素を輪郭と判別する。なお、第1合計値と第2合計値との差分値を算出する代わりに、当該画素とその周辺の1つの画素との差分値を算出してもよい。
【0031】
第8の発明によれば、第1閾値にて判別するため、ノイズを排除し輪郭を適切に検出できる。また、色成分ごとに差分値を算出して、色成分ごとの差分値を合計するので、色味の変化を反映できる。例えば、物体と背景とが写っている画像において、物体と背景との間で色(たとえばRGB)の差はあっても、輝度(たとえばY)では差がないようなことがあるが、このような場合にも正しく輪郭を検出することができる。
【0032】
第9の発明は、第1の発明に従属する画像処理プログラムであって、画像は2以上の画素からなる複数の区画に分割され、輪郭検出手段は、画像を構成する各画素について、色成分(R,G,B)ごとに、当該画素または、当該画素とその周辺に存在する1以上の画素の色成分値の合計である第1合計値と、当該画素を含まない当該画素の周辺に存在する、第1合計値の算出に用いた画素数と同数の画素の色成分値の合計である第2合計値との差分値を算出し、各色成分について算出された当該差分値を合算することで当該画素における合計差分値(A=ΔR+ΔG+ΔB)を算出し、各区画を構成する画素の前記合計差分値が第1閾値以上であるか否かを判別し、第1閾値以上であると判別された当該画素における合計差分値(A)を当該区画の積算差分値(B)に積算し、各区画の積算差分値(B)が第2閾値(ThB)以上であるか否かを判別し、そして第2閾値以上であると判別された区画を輪郭に関連する区画として検出し、描画対象位置選出手段は、輪郭に関連する区画から、描画の対象となる区画を選出する。
【0033】
第9の発明では、区画を構成する各画素について、合計差分値を第1閾値と比較し、第1閾値以上である画素の合計差分値を区画毎に積算(累積して加算)する。そして、この積算差分値を第2閾値と比較し、第2閾値以上である区画を輪郭に関連する区画として選出する。
【0034】
第9の発明によれば、輪郭を構成する画素の合計差分値が区画毎に積算され、その積算差分値によって輪郭に関連する区画が選出されるため、効率的に描画の対象となる区画を選出することができる。
【0035】
第10の発明は、第2の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、輪郭に関連する位置を計数し、輪郭に関連する位置の数(C)に応じた確率を設定し、そして各輪郭に関連する位置が描画の対象となるか否かを確率に基づいて決定する。
【0036】
第10の発明では、確率(p)に基づいて各位置が描画対象か否かを決定するので、結果として、位置の数量的な割合および間隔的な割合が、平均的に所定の割合となる。なぜなら、何度も描画を試みると、割合はその都度変化するが、その平均値は所定値に近づくからである。
【0037】
第10の発明によれば、輪郭に沿って適宜な間隔で適宜な数量の描画を、偶発的な変化を与えつつ行うことができる。
【0038】
第11の発明は、第10の発明に従属する画像処理プログラムであって、描画対象位置選出手段は、さらに、画像の所定位置から各輪郭に関連する位置までの距離を算出し、確率を距離に応じて補正し、そして補正後の確率に基づいて決定を行う。
【0039】
第11の発明では、設定された確率は、画像の所定位置から各位置までの距離(d)に応じて補正される。
【0040】
第11の発明によれば、画像における描画の配置を、所定位置を基準に調整することができる。たとえば、所定位置を画像の中心(P)とし、確率を距離が大きいほど大きな値に補正することによって、画像の中心部は疎に、周辺部は密に描画することができる。
【0041】
第12の発明は、第1の発明に従属する画像処理プログラムであって、画像処理装置は、撮像手段をさらに備え、画像処理プログラムは、コンピュータを、撮像手段によって撮像された画像を読み込む画像読込手段としてさらに機能させ、輪郭検出手段は、画像読込手段によって読み込まれた画像から輪郭を検出する。
【0042】
第12の発明によれば、カメラなどの撮像手段で写真を撮影して描画を行うことができる。なお、画像は、カメラ画像のほか、手書き画像,スキャナ画像,CG画像などでもよい。
【0043】
第13の発明は、画像から輪郭を検出する輪郭検出手段、輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段を備える、画像処理装置である。
【0044】
第14の発明は、画像から輪郭を検出する輪郭検出ステップ、輪郭検出ステップによって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出ステップ、および描画対象位置選出ステップによって選出された位置に所定の描画を行う描画ステップを備える、画像処理方法である。
【0045】
第15の発明は、画像から輪郭を検出する輪郭検出手段、輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段を備える、画像処理システムである。
【0046】
第13〜第15の各発明でも、第1の発明と同様に、輪郭に関連する位置に対する所定の描画をユーザの指示に基づくことなく容易に行うことができる。
【発明の効果】
【0047】
この発明によれば、ユーザが自ら指定する必要なく画像の輪郭位置に所定の描画を行うことを可能にする、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムが実現される。
【0048】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0049】
【図1】この発明の一実施例であるゲーム装置の外観図であり、開状態における正面を示す。
【図2】ゲーム装置の外観図であり、開状態における側面を示す。
【図3】ゲーム装置の外観図であり、(A)は閉状態における一方側面を、(B)は閉状態における上面を、(C)は閉状態における他方側面を、そして(D)は閉状態における下面をそれぞれ示す。
【図4】ゲーム装置がユーザによって把持された様子を示す図解図である。
【図5】ゲーム装置の電気的構成の一例を示すブロック図である。
【図6】原画像から輪郭線をフィルタで検出する方法を説明するための図解図であり、(A)が原画像を示し、(B)がフィルタの動きを示し、(C)がフィルタの参照画素を示し、そして(D)がフィルタの係数を示す。
【図7】原画像と区画との関係を説明するための図解図であり、(A)が原画像を分割して得られる複数の区画を示し、(B)が原画像と各区画との位置関係を示す。
【図8】対象区画の選出にあたって参照されるテーブルを示す図解図であり、(A)が確率テーブルを示し、(B)が係数テーブルを示す。
【図9】描画にあたって参照されるオブジェクトテーブルを示す図解図である。
【図10】描画の一例(輪郭が多い場合)を示す図解図であり、(A)が原画像を示し、(B)が輪郭線と各区画との関係を示し、そして(C)が星付画像を示す。
【図11】描画の他の一例(輪郭が中位の場合)を示す図解図であり、(A)が原画像を示し、(B)が輪郭線と各区画との関係を示し、そして(C)が星付画像を示す。
【図12】描画のその他の一例(輪郭が少ない場合)を示す図解図であり、(A)が原画像を示し、(B)が輪郭線と各区画との関係を示し、そして(C)が星付画像を示す。
【図13】メインメモリのメモリマップの一部を示す図解図である。
【図14】区画データの一例を示す図解図であり、図10(B)と対応する。
【図15】区画データの他の一例を示す図解図であり、図11(B)と対応する。
【図16】区画データのその他の一例を示す図解図であり、図12(B)と対応する。
【図17】CPU動作の一部を示すフロー図である。
【図18】CPU動作の他の一部を示すフロー図である。
【図19】CPU動作のその他の一部を示すフロー図である。
【図20】CPU動作のさらにその他の一部を示すフロー図である。
【図21】CPU動作の他の一部を示すフロー図である。
【図22】メインメニュー画面の一例を示す図解図である。
【図23】ノート作成画面の一例を示す図解図である。
【図24】加工メニュー画面の一例を示す図解図である。
【図25】変形例に関する図解図であり、(A)が原画像および区画を示し、(B)が確率テーブルを示し、そして(C)が係数テーブルを示す。
【図26】図25の変形例による描画の一例(輪郭が少ない場合)を示す図解図であり、(A)が原画像を示し、(B)が星付画像を示す。
【図27】図25の変形例による描画の他の一例(輪郭が多い場合)を示す図解図であり、(A)が原画像を示し、(B)が星付画像を示す。
【図28】図25の変形例において、確率テーブルおよび係数テーブルを利用しなかった場合に得られる星付画像を示す図解図であり、図27(B)と比較される。
【図29】他の変形例に関する図解図であり、星およびグラデーション付の画像を示す。
【図30】その他の変形例に関する図解図であり、図25(A)と対応する。
【図31】さらにその他の変形例に関する図解図であり、サイズが可変の区画を示す。
【発明を実施するための形態】
【0050】
図1〜図3には、本発明の一実施例であるゲーム装置10の外観が示される。ゲーム装置10は折り畳み型のゲーム装置であり、図1および図2は、開いた状態(開状態)におけるゲーム装置10を示し、図3は、閉じた状態(閉状態)におけるゲーム装置10を示している。また、図1は、開状態におけるゲーム装置10の正面図であり、図2は、開状態におけるゲーム装置の側面図である。ゲーム装置10は、2つの表示装置(LCD12および14)および2つのカメラ(カメラ16および18)を有し、カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることができる。
【0051】
ゲーム装置10は、開いた状態において両手または片手で把持することができるような小型のサイズとされる。
【0052】
ゲーム装置10は、下側ハウジング20および上側ハウジング22という2つのハウジングを有する。下側ハウジング20と上側ハウジング22とは、開閉可能(折り畳み可能)に接続されている。この実施例では、各ハウジング20および22はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
【0053】
上側ハウジング22は、下側ハウジング20の上側の一部で回動自在に支持されている。これによって、ゲーム装置10は、閉状態(下側ハウジング20と上側ハウジング22とのなす角度が約0°の状態(図3参照))と、開状態(下側ハウジング20と上側ハウジング22とのなす角度が約180°の状態(図2参照))とをとることができる。ユーザは通常、開状態でゲーム装置10を使用し、ゲーム装置10を使用しない場合には閉状態としてゲーム装置10を保管する。また、ゲーム装置10は、上記閉状態および開状態のみでなく、下側ハウジング20と上側ハウジング22とのなす角度を、ヒンジに発生する摩擦力などによって閉状態と開状態との間の任意の角度に維持することができる。つまり、上側ハウジング22を下側ハウジング20に対して任意の角度で静止させることができる。
【0054】
まず、下側ハウジング20に設けられる構成について説明する。図1に示すように、ゲーム装置10は、下側LCD(液晶表示装置)12を有する。下側LCD12は横長形状であり、長辺方向が下側ハウジング20の長辺方向に一致するように配置される。下側LCD12は下側ハウジング20に収納される。下側LCD12は、下側ハウジング20の内側面に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。なお、この実施例では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、ゲーム装置10は任意の解像度の表示装置を利用することができる。なお、ゲーム装置10を撮像装置として利用する場合、下側LCD12は主に、カメラ16または18で撮像されている画像をリアルタイムに表示(スルー表示)するために用いられる。
【0055】
下側ハウジング20の内側面はほぼ平面状に形成される。当該内側面の中央には、下側LCD12を露出させるための開口部20bが形成される。当該開口部20bの左側(図示y軸負側)には開口部20cが形成され、当該開口部20bの右側には開口部20dが形成される。開口部20bおよび20cは、各キートップ(各ボタン24a〜24eの上面)を露出させるためのものである。そして、下側ハウジング20の内部に収納される下側LCD12の画面が開口部20bから露出し、各キートップが開口部20cおよび20dから露出される。このように、下側ハウジング20の内側面には、中央に設けられる下側LCD12用の開口部20bの左右両側に非画面領域(図1に示す点線領域A1およびA2。具体的には、各ボタン24a〜24eを配置するための領域;ボタン配置領域)がそれぞれ設けられる。
【0056】
下側ハウジング20には、入力装置として、各ボタン24a〜24iおよびタッチパネル28が設けられる。図1に示されるように、各ボタン24a〜24iのうち、方向入力ボタン24a、ボタン24b、ボタン24c、ボタン24d、ボタン24e、および電源ボタン24fは、下側ハウジング20の内側面に設けられる。方向入力ボタン24aは例えば選択操作等に用いられ、各ボタン24b〜24eは例えば決定操作やキャンセル操作等に用いられる。電源ボタン24fは、ゲーム装置10の電源をオン/オフするために用いられる。ここでは、方向入力ボタン24aおよび電源ボタン24fは、下側ハウジング20の中央付近に設けられる下側LCD12に対して一方の側(図1では左側)に設けられ、ボタン24b〜24eは下側LCD12に対して他方の側(図1では右側)に設けられる。方向入力ボタン24aおよびボタン24b〜24eは、ゲーム装置10に対する各種操作を行うために用いられる。
【0057】
図3(A)は閉状態におけるゲーム装置10の左側面図であり、図3(B)は当該ゲーム装置10の正面図であり、図3(C)は当該ゲーム装置10の右側面図であり、そして図3(D)は当該ゲーム装置10の背面図である。図3(C)に示されるように、また、図3(A)に示されるように、音量ボタン24iは、下側ハウジング20の左側面に設けられる。音量ボタン24iは、ゲーム装置10が備えるスピーカ34の音量を調整するために用いられる。また、図3(D)に示されるように、ボタン24hは、下側ハウジング20の上面の右端部に設けられる。ボタン24gは、下側ハウジング20の上面の左端部に設けられる。各ボタン24gおよび24hは、ゲーム装置10に対して例えば撮影指示操作(シャッタ操作)を行うために用いられる。各ボタン24gおよび24hの両方をシャッターボタンとして機能させてもよく、この場合、右利きのユーザはボタン24hを使用し、左利きのユーザはボタン24gを使用することができ、いずれのユーザにも使い勝手が良い。なお、ゲーム装置10は、各ボタン24gおよび24hを常にシャッターボタンとして有効としておいてもよいし、右利きか左利きかの設定をして(メニュープログラムなどによりユーザに設定入力をさせ、設定されたデータを記憶しておく)、右利き設定のときにはボタン24hのみ有効とし、左利き設定のときにはボタン24gのみ有効とするようにしてもよい。
【0058】
図1に示されるように、ゲーム装置10は、各操作ボタン24a〜24iとは別の入力装置として、タッチパネル28をさらに備えている。タッチパネル28は、下側LCD12の画面上に装着されている。なお、この実施例では、タッチパネル28は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。この実施例では、タッチパネル28として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル28の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング20の右側面には挿入口30(図1および図3(D)に示す点線)が設けられている。挿入口30は、タッチパネル28に対する操作を行うために用いられるタッチペン36を収納することができる。なお、タッチパネル28に対する入力は通常タッチペン36を用いて行われるが、タッチペン36に限らずユーザの指でタッチパネル28を操作することも可能である。
【0059】
図2や図3(C)に示されるように、下側ハウジング20の右側面には開閉可能なカバー部11bが設けられる。このカバー部11bの内側には、ゲーム装置10とメモリカード38とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード38は、コネクタに着脱自在に装着される。メモリカード38は、例えば、ゲーム装置10で動作するプログラムを記憶するため、あるいは、ゲーム装置10によって撮像された画像のデータを記憶(保存)するためにも用いられる。
【0060】
図1に示されるように、下側ハウジング20の軸部20aの左側部分には、3つのLED26a〜26cが取り付けられる。ここで、ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED26aは、無線通信が確立している場合に点灯する。第2LED26bは、ゲーム装置10の充電中に点灯する。第3LED26cは、ゲーム装置10の電源がオンである場合に点灯する。したがって、3つのLED26a〜26cによって、ゲーム装置10の通信確立状況、充電状況、および、電源のオン/オフ状況をユーザに通知することができる。
【0061】
以上に説明したように、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ユーザは、ゲーム装置10を使用する際には下側ハウジング20を把持してゲーム装置10に対する操作を行うことができる。図4は、ユーザがゲーム装置10を両手で把持した様子を示す図である。図4に示すように、ユーザは、各LCD12および14がユーザの方向を向く状態で、両手の掌と中指、薬指および小指とで下側ハウジング20の側面および外側面(内側面の反対側の面)を把持する。このように把持することで、ユーザは、下側ハウジング20を把持したまま、各ボタン24a〜24eに対する操作を親指で行い、ボタン24gおよび24hに対する操作を人差し指で行うことができる。
【0062】
一方、上側ハウジング22には、画像を撮像するための構成(カメラ)、および、撮像した画像を表示するための構成(表示装置)が設けられる。以下、上側ハウジング22に設けられる構成について説明する。
【0063】
図1に示すように、ゲーム装置10は、上側LCD14を有する。上側LCD14は上側ハウジング22に収納される。上側LCD14は横長形状であり、長辺方向が上側ハウジング22の長辺方向に一致するように配置される。上側LCD14は、上側ハウジング22の内側面(ゲーム装置10が閉状態となった場合に内側となる面)に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、上側LCD14の画面が汚れたり傷ついたりすることを防止することができる。なお、下側LCD12と同様、上側LCD14に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、他の実施形態においては、上側LCD14上にもタッチパネルを設けてもよい。
【0064】
また、ゲーム装置10は、2つのカメラ16および18を有する。各カメラ16および18はともに上側ハウジング22に収納される。図1に示されるように、内側カメラ16は、上側ハウジング22の内側面に取り付けられる。一方、図3(B)に示されるように、外側カメラ18は、内側カメラ16が取り付けられる面の反対側の面、すなわち、上側ハウジング22の外側面(ゲーム装置10が閉状態となった場合に外側となる面)に取り付けられる。これによって、内側カメラ16は、上側ハウジング22の内側面が向く方向を撮像することが可能であり、外側カメラ18は、内側カメラ16の撮像方向の逆方向、すなわち、上側ハウジング22の外側面が向く方向を撮像することが可能である。以上のように、この実施例では、2つのカメラ16および18が撮像方向が互いに逆方向となるように設けられる。したがって、ユーザはゲーム装置10を持ち替えることなく、異なる2方向を撮像することができる。例えば、ユーザは、ゲーム装置10からユーザの方を見た景色を内側カメラ16で撮影することができるとともに、ゲーム装置10からユーザの反対側の方向を見た景色を外側カメラ18で撮影することができる。
【0065】
また、内側カメラ16は、上側ハウジング22の下側の中央部に形成される軸部22aの中央に取り付けられる。つまり、内側カメラ16は、2つのハウジング20および22が接続される部分の中央に取り付けられる。したがって、ゲーム装置10を開状態にした場合、内側カメラ16は、2つのLCD12および14の間に配置されることになる(図1参照)。換言すれば、内側カメラ16は、ゲーム装置10の中心付近に配置されることになる。なお、「ゲーム装置10の中心」とは、ゲーム装置10の操作面(開状態における各ハウジング20および22の内側面からなる面)の中心という意味である。なお、内側カメラ16は、LCD12および14の横方向の中心付近に配置されているということもできる。
この実施例では、ゲーム装置10を開状態にした場合に内側カメラ16はゲーム装置10の中心付近に配置されるので、ユーザは、内側カメラ16によってユーザ自身を撮影する場合、ユーザがゲーム装置10に正対する位置でゲーム装置10を把持すればよい。つまり、通常の把持位置でゲーム装置を把持すれば、ユーザは撮像範囲の中心付近に位置することになり、ユーザ自身を撮像範囲内に収めることが容易になる。
【0066】
また、図3(B)に示されるように、外側カメラ18は、ゲーム装置10を開状態とした場合において上側ハウジング22の上部(下側ハウジング20から遠い側の部分)に配置される。なお、外側カメラ18は、ゲーム装置10を把持するユーザを撮影するものではないので、ゲーム装置10の中心に設ける必要性は高くない。
【0067】
また、図1または図3(B)に示されるように、マイク32は、上側ハウジング22に収納されている。具体的には、マイク32は、上側ハウジング22の軸部22aに取り付けられる。この実施例では、マイク32は、内側カメラ16の周囲(図ではy軸の側方)に取り付けられ、より具体的には、内側カメラ16からy軸正方向側の側方に取り付けられる。また、軸部22aにおいては、マイク32がゲーム装置10外部の音を検知することができるように、マイク32に対応する位置(内側カメラ16の側方)にマイクロフォン用孔22cが設けられる。なお、マイク32は下側ハウジング20に収納されてもよい。たとえば、マイクロフォン用孔22cを下側ハウジング20の内側面、具体的には下側ハウジング20の内側面の左下部分(ボタン配置領域A1)に設け、マイク32を、下側ハウジング20内における、マイクロフォン用孔22cの近傍に配置することができる。また、マイク32は、その集音方向(感度が最大となる方向)が内側カメラ16の撮像方向(光軸)と略並行(言い換えれば集音方向および撮像方向がそれぞれz軸と略並行)となる向きに取り付けられる。これによって、内側カメラ16の撮像範囲内で発せられた音声は、マイク32によって好適に捉えられる。すなわち、マイク32による音声入力の検出と内側カメラ16の撮像画像によるユーザの検出とを同時行うことができるとともに、検出の精度を向上させることができる。
【0068】
図3(B)に示されるように、上側ハウジング22の外側面には、第4LED26dが取り付けられる。第4LED26dは、外側カメラ18の周囲(この実施例では、外側カメラ18の右側)に取り付けられる。第4LED26dは、内側カメラ16または外側カメラ18によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ16または外側カメラ18によって動画が撮影される間点灯する。第4LED26dによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者に通知することができる。
【0069】
また、上側ハウジング22の内側面はほぼ平面状に形成される。図1に示すように、当該内側面の中央には、上側LCD14を露出させるための開口部22bが形成される。上側ハウジング22の内部に収納される上側LCD14の画面は、開口部22bから露出する。また、上記開口部22bの左右両側には音抜き孔22dがそれぞれ1つずつ形成される。音抜き孔22dの奥の上側ハウジング22内にはスピーカ34が収納されている。音抜き孔22dは、スピーカ34からの音を外部に放出するための孔である。
【0070】
このように、上側ハウジング22の内側面には、中央に設けられる上側LCD14用の開口部22bの左右両側に非画面領域(図1に示す点線領域B1およびB2。具体的には、スピーカ34を配置するための領域;スピーカ配置領域)がそれぞれ設けられる。2つの音抜き孔22dは、左右方向については、各スピーカ配置領域の左右方向における中央部付近に配置され、上下方向については、各スピーカ配置領域の下部領域(下側ハウジング20に近い側の領域)に配置される。
【0071】
なお、上記のように、下側ハウジング20および上側ハウジング22に左右方向に関して同じ位置に非画面領域をそれぞれ設けたことで、ゲーム装置10は、図4に示すような横持ちで把持される場合だけでなく、縦持ち(図4に示す状態からゲーム装置10を左または右回りに90°回転させた状態)で把持される場合にも持ちやすい構成となっている。
【0072】
以上に説明したように、上側ハウジング22には、画像を撮像するための構成であるカメラ16および18、および、撮像された画像を表示するための表示手段である上側LCD14が設けられる。一方、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ゲーム装置10を撮像装置として使用する際には、ユーザは、上側LCD14に表示される撮像画像(カメラによって撮像された画像)を見ながら、下側ハウジング20を把持して入力装置に対する入力を行うことができる。
【0073】
また、上側ハウジング22のカメラ16近傍には、音声を入力するための構成であるマイク32が設けられており、したがってゲーム装置10は、録音装置としても使用可能である。さらに、ユーザがマイク32を通して音声入力を行い、ゲーム装置10はこのマイク入力情報に基づいてゲーム処理やゲーム以外のアプリケーション処理を実行することもできる。
【0074】
図5は、ゲーム装置10の内部構成(電気的構成)を示すブロック図である。図5に示すように、ゲーム装置10は、CPU42、メインメモリ48、メモリ制御回路50、保存用データメモリ52、プリセットデータ用メモリ54、メモリカードインターフェース(メモリカードI/F)44、無線通信モジュール56、ローカル通信モジュール58、リアルタイムクロック(RTC)60、電源回路46、およびインターフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング20(または上側ハウジング22でもよい)内に収納される。
【0075】
CPU42は、各種のプログラムを実行するための情報処理手段である。ゲーム装置10を撮像装置として利用する場合には、そのためのプログラムがゲーム装置10内のメモリ(例えば保存用データメモリ52)に記憶される。CPU42が当該プログラムを実行することで、ゲーム装置10は撮影装置として機能する。なお、CPU42によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶されていてもよいし、メモリカード38から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
【0076】
CPU42には、メインメモリ48、メモリ制御回路50、およびプリセットデータ用メモリ54が接続される。また、メモリ制御回路50には保存用データメモリ52が接続される。メインメモリ48は、CPU42のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ48は、ゲーム処理やアプリケーション処理に用いられる各種データを記憶したり、外部(メモリカード38や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ48として例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ52は、CPU42によって実行されるプログラムや各カメラ16および18によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ52は、例えばNAND型フラッシュメモリで構成される。メモリ制御回路50は、CPU42の指示に従って、保存用データメモリ52に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ54は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ54としては、SPI(Serial Peripheral Interface)バスによってCPU42と接続されるフラッシュメモリを用いることができる。
【0077】
メモリカードI/F44はCPU42に接続される。メモリカードI/F44は、コネクタに装着されたメモリカード38に対するデータの読み出しおよび書き込みをCPU42の指示に従って行う。この実施例では、各カメラ16および18によって撮像された画像データがメモリカード38に書き込まれたり、メモリカード38に記憶された画像データがメモリカード38から読み出されて保存用データメモリ52に記憶されたりする。
【0078】
無線通信モジュール56は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール58は、所定の通信方式たとえば赤外線方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール56およびローカル通信モジュール58はCPU42に接続される。CPU42は、無線通信モジュール56を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール58を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0079】
なお、ローカル通信モジュール58は、この実施例ではゲーム装置10に内蔵されるようになっているが、例えばメモリカード38に設けてもよい。この場合、CPU42は、メモリカードI/F44を介して通信の制御を行うことになる。
【0080】
また、CPU42には、RTC60および電源回路46が接続される。RTC60は、時間をカウントしてCPU42に出力する。CPU42は、RTC60によって計時された時間に基づいて、現在時刻(日付)を計算したり、画像取り込み等の動作タイミングを検知したりする。電源回路46は、ゲーム装置10が有する電源(電池;下ハウジングに収納される)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0081】
また、ゲーム装置10は、マイク32およびスピーカ34を備えている。マイク32およびスピーカ34はそれぞれI/F回路40に接続される。マイク32は、ユーザの音声を検知して音声信号をI/F回路40に出力する。スピーカ34は、I/F回路40からの音声信号に応じた音声を出力する。I/F回路40はCPU42に接続される。また、タッチパネル28はI/F回路40に接続される。I/F回路40は、マイク32およびスピーカ34の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。変換された音声データは、メインメモリ48の音声エリア(図示せず)に書き込まれる。ゲーム装置10を録音装置として利用する場合には、音声エリアに格納された音声データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。また、音声エリアに格納された音声データ(マイク入力情報)は、各種のゲーム処理にも利用される。タッチパネル制御回路は、タッチパネル28からの信号に基づいて所定の形式のタッチ位置データを生成してCPU42に出力する。タッチ位置データは、タッチパネル28の入力面のうちで入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル28からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU42は、タッチ位置データを取得することにより、タッチパネル28に対して入力が行われた位置を知ることができる。
【0082】
操作部24は、上記各ボタン24a〜24iからなり、CPU42に接続される。操作部24からCPU42へは、各ボタン24a〜24iに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU42は、操作部24から操作データを取得することによって、操作部24に対する入力に従った処理を実行する。
【0083】
各カメラ16および18はCPU42に接続される。各カメラ16および18は、CPU42の指示に従って画像を撮像し、撮像した画像データをCPU42に出力する。CPU42は、各カメラ16および18からの画像データをメインメモリ48の画像エリア(図示せず)に書き込む。ゲーム装置10を撮像装置として利用する場合には、画像エリアに格納された画像データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。また、画像エリアに格納された画像データは、各種のゲーム処理にも利用される。
【0084】
また、各LCD12および14はCPU42に接続される。各LCD12および14はCPU42の指示に従って画像を表示する。ゲーム装置10を撮像装置として利用する場合、CPU42は、各カメラ16および18のいずれかから取得した画像を上側LCD14に表示させ、所定の処理によって生成した操作画面を下側LCD12に表示させる。ゲーム装置10でゲームをプレイする場合には、LCD12および14の一方または両方にゲーム画像が表示される。
【0085】
以上のように構成されたゲーム装置10で、この実施例の画像管理アプリケーションを実行すると、各カメラ16,18で撮像した画像(原画像)に対して、そこに含まれる被写体等の輪郭線に沿った適宜な位置に、星などのオブジェクトを配置(描画)する画像加工処理を施すことができる。なお、画像加工処理では、輪郭線に沿ってシャープネス,ぼかしなどのエフェクトを加えることも可能である。以下、この画像加工処理について詳しく説明するが、最初に概要を説明しておく。
【0086】
画像加工処理では、まず、図10(A),図11(A),図12(A)に示すような原画像100から被写体102の輪郭線104が図6に示す要領で検出される。原画像100はまた、図7(A)に示す要領で複数(たとえば9×6個)の区画106に分割される。
【0087】
次に、原画像100を構成する9×6個の区画106のうち輪郭線104を含む区画106が候補区画106C(薄いまたは濃い網掛け部分)として選出され、そして、選出された候補区画106Cの中から対象区画106S(濃い網掛け部分)が、図8(A)に示す確率テーブルおよび図8(B)に示す係数テーブルに基づいて決定される(図10(B),図11(B),図12(B)参照)。原画像100には、こうして決定された対象区画106Sを中心に星オブジェクトSt1,St2…が配置される(図10(C),図11(C),図12(C)参照)。
【0088】
このように、画像加工処理は大まかに、輪郭線104の検出,区画106への分割,候補区画106Cの選出および対象区画106Sの決定の4工程で構成される。輪郭線104の検出で注目すべき第1は、各画素について周辺画素との差分値を計算するためのフィルタ係数(図6(D)参照)であり、これによって、少ない処理量で検出が行えるようになる。
【0089】
輪郭線104の検出で注目すべき第2は、このフィルタ係数による差分値計算を色成分(RGB)毎に行い、その合計を当該画素の差分値(A)とする点であり、これによって、検出の精度を高めることができる。
【0090】
候補区画106Cの選出で注目すべきは、原画像100を複数の区画106に分割して、各画素の差分値(A)を区画106毎に積算し、そしてこの積算差分値(B)に基づいて候補区画106Cを選出する点であり、これによって、候補を画素単位で選出する場合と比べ、処理量を削減でき、ノイズの影響も抑制できる。
【0091】
対象区画106Sの決定で注目すべき第1は、上記のように全区画106から選出された候補区画106Cの総数(候補区画数(C))に応じた確率(p)を設定し、この確率(p)に基づいて全候補区画106Cの中から対象区画106Sを決定する点であり、これによって、全候補区画106Cに占める対象区画106Sの割合を制御できるようになる。たとえば、候補区画数(C)が多いほど小さな確率(p)を設定することで、原画像100には、そこに含まれる輪郭の多少によらず、略一定数の星オブジェクト(St1,St2…)が配置される結果となる。
【0092】
対象区画106Sの決定で注目すべき第2は、上記のように設定された確率(p)を、候補区画106C毎に、原画像100の中心Pからの距離(d)に応じて補正する点であり、これによって、原画像100内での対象区画106Sの配置を制御できるようになる。たとえば、中心Pに近い候補区画106Cほど確率(p)が低く(小さく)なるように補正すれば、中心Pまたはその近傍に星オブジェクト(St1,St2…)が配置されにくくなる。逆に、中心Pに近い候補区画106Cほど確率(p)が高く(大きく)なるように補正すれば、中心Pまたはその近傍に星オブジェクト(St1,St2…)が配置されやすくなる。
【0093】
次に、CPU42による具体的な画像加工処理について説明する。CPU42は最初、原画像100に対し、図6のような輪郭線検出処理を施す。図6は、この実施例の輪郭線検出方法(差分画像作成方法)を示す図解図であり、(A)が原画像の一例を示し、(B)が輪郭判定(差分値算出)を行うフィルタの動きを示し、(C)がフィルタの参照画素を示し、そして(D)がフィルタの係数を示している。
【0094】
加工処理の対象である原画像100は、図6(A)に示すように、横(x)方向180画素,縦(x)方向120画素(180×120)のサイズを有し、そして各画素(0,0)〜(179,119)がR,GおよびBの3つの色成分を含む。なお、原画像100のサイズは、180×120とは限らず、たとえば216×160(図25(A)参照),432×320(図30参照)など、適宜な値でよい。
【0095】
CPU42は、このような原画像100を構成する各画素(0,0)〜(179,119)について、図6(B)に示すように、注目画素と周辺画素との差分を算出するフィルタFltをラスタ走査の態様で移動させつつ、当該画素の差分値を色成分毎に計算していく。こうして原画像100から、180×120画素にそれぞれ対応する180×120個の差分値が、色成分毎に得られることになる。180×120個のR差分値でR差分画像が構成され、180×120個のG差分値でG差分画像が構成され、そして180×120個のB差分値でB差分画像が構成される。
【0096】
CPU42は、これらR差分画像,B差分画像およびG差分画像を画素毎に加算することで、輝度(Y)に関する差分画像(いわゆるグレースケール)を生成する。
【0097】
なお、こうして、RGB毎の差分画像を作成し、これらを互いに加算してY差分画像を得る代わりに、予め各画素のRGB成分を加算してY画像を作成し、そこからY差分画像を得てもよいが、その場合、被写体と背景との間で色が異なっていても明るさが同程度であれば、差分(輪郭線)の検出は困難となる。
【0098】
より詳しくは、フィルタFltは、図6(C)に示すように、注目画素(0)ならびにその下(1),右(2)および右下(3)の周辺3画素を参照して、これら2×2個の参照画素0〜3に対応する2×2個の画素値に、図6(D)に示すような2×2個の係数をそれぞれ乗算して、その乗算結果の合計を求める演算に対応する。したがって、参照画素0〜3の画素値をそれぞれX(0)〜X(3)とすると、差分値ΔX(0)は、次の(式1)のように計算される。
【0099】
ΔX(0)=|1・X(0)−1・X(1)−1・X(2)+1・X(3)|=|(X(0)+X(3))−(X(1)+X(2))| …(式1)
つまり、フィルタFltによって、注目画素および右下画素の和(第1合計値)と、下画素および右画素の和(第2合計値)との間の差が、注目画素の差分値(エッジの強さ)として計算される。
【0100】
このような計算が色成分毎に行われるので、フィルタFltの出力は、次の(式2)〜(式4)のようになる。
【0101】
ΔR(0)=(R(0)+R(3))−(R(1)+R(2)) …(式2)
ΔG(0)=(G(0)+G(3))−(G(1)+G(2)) …(式3)
ΔB(0)=(B(0)+B(3))−(B(1)+B(2)) …(式4)
注目画素の差分値A(0)は、上の(式2)〜(式4)で定義される各色成分の差分値の合計として、次の(式5)により計算される。
【0102】
A(0)=ΔR(0)+ΔG(0)+ΔB(0) …(式5)
上の(式2)〜(式5)による計算を各画素(0,0)〜(179,119)について行うことで、180×120個の差分値Aからなる差分画像(上述のY差分画像)が得られる。
【0103】
その一方で、原画像100は、図7(A)に示すように複数(ここでは9×6)の区画106に分割される。なお、各区画106を区別する場合には、区画(1,1)〜区画(9,6)のように記述する。CPU42は、差分画像データを構成する180×120個の差分値Aのうち第1閾値ThA以上のものを、これら9×6の区画106毎に積算する。つまり、積算に当たって、各画素の差分値Aは第1閾値ThAと比較され、第1閾値ThAに満たない差分値は除外される。こうして、差分画像データおよび第1閾値ThAに基づいて、9×6個の積算差分値Bが得られる。
【0104】
なお、この実施例では、区画毎の差分値Aの積算に当たって、各画素の差分値Aを第1閾値ThAと比較し、第1閾値ThAに満たない差分値を積算の対象から除外したが、第1閾値ThAによる選別は行わずに、各画素の差分値Aを全て積算の対象としてもよい。ただし、第1閾値ThAによる選別を行う方が、ノイズの影響を受けにくくなる。
【0105】
また、この実施例では、区画毎の差分値Aの積算に当たって、第1閾値ThA以上の差分値Aそれ自体を積算したが、第1閾値ThAに満たない差分値Aをたとえば“0”に、第1閾値ThA以上の差分値Aをたとえば“1”に2値化して、これら2値化された差分値を積算してもよい。これはつまり、差分値Aが第1閾値(ThA)以上である画素の個数を区画106毎に計数しているのと同じである。
【0106】
次に、CPU42は、9×6個の積算差分値Bを参照して、9×6個の区画106の中から候補区画106Cを選択する。詳しくは、各区画106について積算差分値Bを第2閾値ThBと比較し、積算差分値Bが第2閾値ThBよりも大きい区画を候補区画106Cとする。つまり、9×6の区画106の中から、輪郭線104を含んだ候補区画106C(たとえば図10(B)参照)が選択される。
【0107】
次に、CPU42は、こうして選択された候補区画106Cの中から、画像加工の対象となる対象区画106Sを確率に基づいて決定する。具体的には、まず、図8(A)に示すような確率テーブルを参照して、候補区画106Cの個数Cに応じた確率(p)が決定される。この確率テーブルによれば、確率(p)は、C<8の場合は40%に、8≦C<10の場合は35%に、10≦C<12の場合は30%に、そして12≦Cの場合は25%にそれぞれ決定される。
【0108】
このように、候補区画数(C)が多いほど確率(p)を低くすることで、対象区画106Sの平均数を候補区画数(C)によらず一定範囲に収めることができる。図8(A)の例では、候補区画数(C)が概ね5〜13個の範囲であれば何個であっても、対象区画106Sの数は2ないし3個となる。なお、この2ないし3個という数値は、確率に基づく平均値(期待値)なので、時には1個や4個の場合があり、まれに0個や5個以上の場合もあるのはいうまでもない。
【0109】
次に、CPU42は、こうして決定された確率(p)に対し、図8(B)に示すような係数テーブルを参照して、候補区画106C毎に原画像100の中心Pからの距離dに応じた係数を乗算する補正を行う。この係数テーブルによれば、確率(p)は、d<30(単位は画素:以下同様)の候補区画106Cについては0.25倍され、30≦dの候補区画106Cについては1倍される(つまり元の確率(p)のままである)。なお、係数は、ここでは0.25倍および1倍の2種類であるが、3種類以上を用いてもよい(たとえば図25(C)参照)。
【0110】
ここで、中心Pから各区画106(各候補区画106C)までの距離dは、たとえば図7(B)に示すように、原画像100のサイズをw×hとし、区画106の中心Qの座標を(x,y)として、次の(式6)により計算される。
【0111】
d=√{(x−w/2)+(y−h/2)} …(式6)
なお、図7(B)の例では、中心Pは原画像100の重心(対角線の交点)と一致し、中心Qは区画106の重心と一致しているが、いずれも重心と一致している必要はない。たとえば、中心Pは、原画像100の重心近傍に位置する1つの画素と一致していてよく、中心Qもまた、区画106の重心近傍に位置する1つの画素と一致していてよい。この場合、PQ間の距離は、上の(式6)で近似的に計算される。
【0112】
こうして確率(p)を、中心Pに近い候補区画106Cほど小さい値に補正することで、星オブジェクトは原画像100の中心Pまたはその近くに配置されにくくなる。
【0113】
次に、CPU42は、各候補区画106Cを補正後の確率(p)に基づいて対象区画106Sに決定する。具体的には、候補区画106Cの各々について、0〜99のいずれかの整数値をランダムに設定し、その設定値が補正後の確率(p)未満であるか否かを判別する。そして、設定値が補正後の確率(p)未満である候補区画106Cを対象区画106Sに決定する。このため、たとえば、設定値が25で補正後の確率(p)が30%である候補区画106Cは、設定値25が確率値「30」未満であるため、対象区画106Sとなるが、設定値が55で補正後の確率(p)が40%の候補区画106Cは、設定値55が確率値「40」未満ではないため、対象区画106Sとはならない。
【0114】
したがって、C個の候補区画106Cがどれも原画像100の中心Pから遠い場合には、平均{C×(p/100)}個が対象区画106Sに決定される。中心Pに近い候補区画106Cがあれば、そのような候補区画106Cの確率(p)が小さな値に補正される結果、対象区画106Sの平均個数は{C×(p/100)}よりも少なくなる。
【0115】
なお、中心Pと各候補区画106Cとの位置関係によらず、略一定数の対象区画106Sを確保したい場合には、中心Pに近い候補区画106Cの確率を小さな値に補正する一方で、中心Pから遠い候補区画106Cの確率を大きな値に補正すればよい。たとえば、図8(B)の係数テーブルにおいて、30≦dに対応する係数を1.25倍とすれば、補正に伴う平均個数の増減が緩和される。
【0116】
次に、CPU42は、各対象区画106Sについて、描画すべき星オブジェクトの形態を、図9のようなオブジェクトテーブルに基づいてランダムに決定する。このオブジェクトテーブルには、描画可能な複数の星オブジェクトについて、オブジェクト番号(1,2…)および形態(大きさ,形状,色,明るさなど)が登録されている。なお、星オブジェクトを周期的に点滅させたり変色させたり回転させたりすることも可能であり、その場合、点滅周期,変色パターン,回転速度なども形態に含めてよい。
【0117】
そして、CPU42は、原画像100に対し、上記のように決定した各対象区画106Sの位置に、上記のように決定した形態の星オブジェクトSt1,St2…を描画する。描画にあたっては、対象区画106Sの中心Qまたはその近傍にある画素(中心画素)に星オブジェクトの中心を合わせて描画する。なお、これに限らず、例えば、「対象区画106Sの右上」と星オブジェクトの中心や右上とを合わせるようにしてもよい。あるいは、対象区画106S内において輪郭を構成する画素の平均位置(重心)と星オブジェクトの中心とを合わせる手法もある。この手法によれば、区画106が多くの画素によって構成されているときに、区画106を構成する画素群のうち輪郭を構成する画素の偏りに適合するように、星オブジェクトの配置位置を設定することができる。
【0118】
以上のような画像加工処理の具体例が、図10〜図12に示されている。図10〜図12では、原画像100に含まれる被写体102の大きさや形状が異なっている。
【0119】
まず図10を参照して、図10(A)に示す原画像100に対して輪郭線検出処理を施すと、図10(B)に実線R,点線Gおよび一点鎖線Bで示すような3本の輪郭線(より具体的には、このようなR輪郭線,G輪郭線およびB輪郭線をそれぞれ含むR差分画像,G差分画像およびB差分画像)が得られる。次に、これら3本の輪郭線に沿って(より具体的には、R差分画像,G差分画像およびB差分画像を画素毎に加算したY差分画像に基づいて)、一連の区画(4,2),(5,2),(6,2),(3,3),(7,3),(2,4),(8,4),(3,5),(7,5),(4,6),(5,6)および(6,6)が候補区画106Cとして選出される。
【0120】
この場合、12個の候補区画106Cが選出されたので(C=12)、図8(A)の確率テーブルから確率は25%に決定される(p=25)。また、どの候補区画106Cも、中心Pからの距離は30画素以上なので(d≧30)、図8(B)の係数テーブルから係数は1倍に決定される。したがって、どの候補区画106Cも25%の確率で対象区画106Sに決定されることになり、全部で12個の候補区画106Cのうち平均3個が対象区画106Sとなる。
【0121】
たとえば、(6,2),(3,3)および(4,6)の各候補区画106Cが対象区画106Sとなったとすると、次に、これら3つの対象区画106Sの各々について、図9のオブジェクトテーブルから星オブジェクトの形態がランダムに決定される。この結果、(6,2)の対象区画106Sにはオブジェクト番号1の形態(小さな星)が、(3,3)の対象区画106Sにはオブジェクト番号2の形態(大きな星)が、そして(4,6)の対象区画106Sにはオブジェクト番号1の形態(小さな星)が割り当てられたとすると、原画像100には、図10(C)に示されるように、(6,2)の対象区画106Sの位置に小さな星オブジェクトSt1が、(3,3)の対象区画106Sの位置に大きな星オブジェクトSt2が、そして(4,6)の対象区画106Sの位置に小さな星オブジェクトSt1が描画される。
【0122】
次に図11を参照して、図11(A)に示す原画像100に対して輪郭線検出処理を施すと、図11(B)に実線R,点線Gおよび一点鎖線Bで示すような3本の輪郭線が得られる。次に、これら3本の輪郭線に沿って、一連の区画(4,2),(5,2),(6,2),(3,3),(7,3),(3,4),(7,4),(4,5),(5,5)および(6,5)が候補区画106Cとして選出される。
【0123】
この場合、10個の候補区画106Cが選出されたので(C=10)、確率は30%に決定される(p=30)。また、どの候補区画106Cも、中心Pからの距離は30画素以上なので(d≧30)、係数は1倍に決定される。したがって、どの候補区画106Cも30%の確率で対象区画106Sに決定されることになり、全部で10個の候補区画106Cのうち平均3個が対象区画106Sとなる。
【0124】
たとえば、(4,2),(7,3)および(6,5)の各候補区画106Cが対象区画106Sとなったとすると、次に、これら3つの対象区画106Sの各々について星オブジェクトの形態がランダムに決定される。この結果、(4,2)の対象区画106Sにはオブジェクト番号2の形態(大きな星)が、(7,3)の対象区画106Sにはオブジェクト番号2の形態(大きな星)が、そして(6,5)の対象区画106Sにはオブジェクト番号1の形態(小さな星)が割り当てられたとすると、原画像100には、図11(C)に示されるように、(4,2)の対象区画106Sの位置に大きな星オブジェクトSt2が、(7,3)の対象区画106Sの位置に大きな星オブジェクトSt2が、そして(6,5)の対象区画106Sの位置に小さな星オブジェクトSt1が描画される。
【0125】
次に図12を参照して、図12(A)に示す原画像100に対して輪郭線検出処理を施すと、図12(B)に実線R,点線Gおよび一点鎖線Bで示すような3本の輪郭線が得られる。次に、これら3本の輪郭線に沿って、一連の区画(6,2),(4,3),(5,3),(7,3),(3,4),(6,4),(4,5)および(5,5)が候補区画106Cとして選出される。
【0126】
この場合、8個の候補区画106Cが選出されたので(C=8)、確率は35%に決定される(p=35)。また、中心Pから各候補区画106Cまでの距離は、(4,3),(5,3)および(6,4)の各候補区画106Cが30画素未満であり(d<30)、(6,2),(7,3),(3,4),(4,5)および(5,5)の各候補区画106Cが30画素以上なので(30≦d)、前者つまりd<30である各候補区画106Cの確率は、35%の0.25倍(=8.75%)に補正され、後者つまり30≦dである各候補区画106Cの確率は、35%の1倍(=35%)に補正される。したがって、全部で8個の候補区画106Cのうち平均2.0125個(=3×0.0875+5×0.35)が対象区画106Sとなる(なお、確率補正を行わない場合の平均個数は2.8個である)。
【0127】
したがって、p=35である5つの候補区画106Cのうち2つが対象区画106Sとなる場合が多い。ただし、対象区画106Sの個数は、時には3個、まれに1個や4個以上となる場合もあるし、その中にp=8.75である候補区画Cから決定されたものが含まれている場合もあるのは、いうまでもない。
【0128】
たとえば、(6,2)および(3,4)の各候補区画106Cが対象区画106Sとなったとすると、次に、これら2つの対象区画106Sの各々について星オブジェクトの形態がランダムに決定される。この結果、(6,2)の対象区画106Sにはオブジェクト番号1の形態が、(3,4)の対象区画106Sにはオブジェクト番号2の形態が割り当てられたとすると、原画像100には、図12(C)に示されるように、(6,2)の対象区画106Sの位置に小さな星オブジェクトSt1が、そして(3,4)の対象区画106Sの位置に大きな星オブジェクトSt2が描画される。
【0129】
こうして、原画像100には、被写体102の大きさや形状ひいては輪郭線104の長短によらず、輪郭線104に沿う適宜な位置に、適宜な数の星オブジェクトSt1,St2…が配置される結果となる。
【0130】
以上のような動作は、ゲーム装置10のCPU42が、メインメモリ48に記憶された図13に示すようなプログラムおよびデータに基づいて、図17〜図21に示すようなフローに従う処理を実行することにより実現される。
【0131】
すなわち、この実施例の画像管理アプリケーションを実行するとき、図13に示すように、メインメモリ48には、プログラムエリア48aおよびデータエリア48bが形成され、プログラムエリア48aにアプリケーションプログラム70および入出力制御プログラム72などが格納される。
【0132】
アプリケーションプログラム70は、CPU42を介して各種ハードウェア(12〜40,44〜60)を制御して画像管理アプリケーションを実現するメインのソフトウェアプログラムであり、図17〜図21のフローに対応している。入出力制御プログラム72は、アプリケーションプログラム70によって利用されるサブのソフトウェアプログラムであり、主として下側LCD12,操作部24,I/F回路40などを制御してタッチ入力,ボタン入力,画像出力などを実現する。
【0133】
データエリア48bは、定数エリア74,変数エリア76,原画像エリア78,差分画像エリア80および区画エリア82などを含む。定数エリア74には、差分値(A)に関する第1閾値(ThA),積算差分値(B)に関する第2閾値(ThB)といった、アプリケーションプログラム70によって参照される定数が記憶される。変数エリア76には、差分値(A),積算差分値(B),候補区画数(C),確率(p)といった、アプリケーションプログラム70によって制御される変数が記憶される。原画像エリア78には、アプリケーションプログラム70によって管理ないし加工される原画像(100:図10(A),図11(A),図12(A)等参照)が記憶される。差分画像エリア80には、アプリケーションプログラム70によって画像加工を行うとき作成される差分画像(実線R,点線Gおよび一点鎖線B:図10(B),図11(B),図12(B)等参照)が記憶される。区画エリア82には、アプリケーションプログラム70によって画像加工を行うとき作成される区画データが記憶される。
【0134】
データエリア48bにはまた、図8(A)に示したような確率テーブル84,図8(B)に示したような係数テーブル86,および図9に示したようなオブジェクトテーブル88も格納される。
【0135】
図14,図15および図16には、区画エリア82に記憶される区画データの具体例が示されている。なお、図14の区画データは、図10(B)に示した9×6の区画106に関するデータであり、図15の区画データは、図11(B)に示した9×6の区画106に関するデータであり、そして図16の区画データは、図12(B)に示した9×6の区画106に関するデータである。
【0136】
区画データには、各区画106について、区画番号,位置,距離(d),積算差分値(B),候補フラグ,確率(p),対象フラグおよびオブジェクト番号が含まれる。
【0137】
区画番号は、各区画106を識別する番号であり、(1,1),(2,1)…(9,6)のように記述される。位置は、各区画106の左上端および右下端を示す画素の座標であり、たとえば区画(1,1)については(0,0)−(19,19)、区画(4,2)については(60,20)−(79,39)などのように記述される。距離は、原画像100の中心Pから各区画106の中心Qまでの距離(d:図7(B)参照)であり、たとえば区画(1,1)については94、区画(4,2)については36などのように記述される。
【0138】
積算差分値(B)は、各区画106に含まれる20×20個の差分値(A)のうち第1閾値(ThA)以上のものを積算した値である。候補フラグは、各区画106が候補区画106Cか否かを示すフラグであり、積算差分値(B)と第2閾値(ThB)との比較に基づいてON/OFFされる。ここでONは候補区画106Cであることを、OFFは候補区画106Cでない(非候補区画である)ことを示す。
【0139】
確率(p)は、各候補区画106Cが対象区画106Sに決定される確率であり、確率テーブル84(図8(A)参照)を参照して、候補区画数(C)に応じた値に設定される。こうして設定された確率(p)は、係数テーブル86(図8(B)参照)を参照して補正される。対象フラグは、各区画106が対象区画106Sか否かを示すフラグであり、補正後の確率(p)に基づいてON/OFFされる。ここでONは対象区画106Sであることを、OFFは対象区画106Sでない(非対象区画である)ことを示す。
【0140】
そしてオブジェクト番号は、各対象区画106Sに描画すべきオブジェクトを示す番号であり、オブジェクトテーブル88(図9参照)に登録された番号1,2…の中からランダムに決定される。
【0141】
図17を参照して、アプリケーションプログラム70が起動されると、CPU42は、まずステップS1で、図22のようなメインメニュー画面をLCD12に表示する。このメインメニュー画面は、3枚の「保存されているノート」112と、「新しいノート」アイコン114とを含む。3枚の「保存されているノート」112には、それぞれ手書き文字が記されており、そのうち1枚には、写真112aおよび音声アイコン112bが貼り付けられている。
【0142】
次に、ステップS3で「新しいノート」アイコン114が選択されたか否かを判別し、NOであればステップS5に移って、「保存されているノート」112が選択されたか否かをさらに判別する。ステップS5でもNOであれば、ステップS1に戻って同様の処理を繰り返す。
【0143】
メインメニュー画面上でいずれかの「保存されているノート」112がタッチされると、ステップS5でYESと判別して、ステップS7に進む。ステップS7では、選択された「保存されているノート」をLCD12に表示し、次のステップS9では、貼り付けてある写真112aの編集を行うか否かを判別する。いずれかの写真112aが選択されると、ステップS21(後述)に進む。選択された「保存されているノート」112に写真112aが貼り付けられていなかったり、音声アイコン112bが選択されたり、キャンセル操作が行われたりした場合には、ステップS9でNOと判別し、ステップS1に戻る。なお、図示はしていないが、音声アイコン112bが選択された場合には、対応する音声(ボイスメモ)がスピーカ34から出力される。
【0144】
メインメニュー画面上で「新しいノート」アイコン114が選択されると、ステップS3でYESと判別して、ステップS11に進む。ステップS11では、図23に示すようなノート作成画面をLCD12に表示する。このノート作成画面には、「鉛筆」アイコン116a,「消しゴム」アイコン116b,「カメラ」アイコン116c,「マイク」アイコン116dなどが含まれる。
【0145】
次に、ステップS13で「カメラ」アイコン116cが選択されたか否かを判別して、YESであればステップS15に進む一方、NOであればステップS1に戻る。なお、ステップS13でNOと判別されるのは、「カメラ」以外のアイコン(116a,116bまたは116d)が選択されたり、キャンセル操作が行われたりした場合である。図示はしていないが、「カメラ」以外のアイコンが選択された場合には、選択されたアイコンに対応する処理(手書き入力,入力取り消し,音声入力,オプション設定など)が実行された後で、保存等の処理が行われた後、ステップS1に戻ることになる。
【0146】
ステップS15では、カメラのプレビュー(カメラ16または18からのスルー画像)をLCD12に表示し、次のステップS17では、撮影ボタン(たとえばボタン24b)が押下されたか否かを判別する。ステップS17でNOであれば、ステップS15に戻って同様の動作を繰り返す。ステップS17でYESであれば、ステップS19で画像を記録した後、ステップS21に進んで、図24に示すような加工メニュー画面をLCD12に表示する。なお、上側LCD14に、ステップS19で記録された画像が表示され、後述のフィルタ等の画像処理の指示に従って、画像処理が行われた後の画像に逐一変更される。
【0147】
この加工メニュー画面には、3種類の「キラキラフィルタ」アイコン118,「ぼかし」アイコン120,「シャープネス」アイコン122,「落書き」ボタン124,「ノートに貼る(保存)」ボタン126,「撮り直す」ボタン128,「OK」ボタン130および「戻る」ボタン132などが含まれる。なお、3種類の「キラキラフィルタ」では、画像加工処理で描画されるオブジェクトの形態が異なる(たとえば星と雪、同じ星でも五角形,十字型など)だけなので、以下では特に区別しない。
【0148】
図18を参照して、次に、ステップS23〜S29のループを通じて、加工メニュー画面内のどの項目が選択されたかを判別する。詳しくは、ステップS23で「キラキラフィルタ」が選択されたか否かを判別し、ステップS25では「OK」または「ノートに貼る」が選択されたか否かを判別し、ステップS27では「戻る」が選択されたか否かを判別し、そしてステップS29では「撮り直す」が選択されたか否かを判別する。ステップS23〜S29のいずれの判別もNOであれば、キャンセル操作が行われるまで、処理はこのループを巡回する。
【0149】
加工メニュー画面上で「キラキラフィルタ」アイコン118が選択されると、ステップS23でYESと判別して、ステップS31に進む。ステップS31では、「キラキラフィルタ」に対応する画像加工処理(図19〜図21参照:後述)を実行し、その後ステップS1に戻る。「OK」ボタン130または「ノートに貼る」ボタン126が押下されると、ステップS25でYESと判別してステップS33に進み、保存が指示されたか否かをさらに判別するためのダイアログを表示する。ここで保存を本当に行う旨がユーザによって指示されると、ステップS35で画像を保存し、その後ステップS1に戻る。
【0150】
加工メニュー画面上で「戻る」ボタン132が押下されると、ステップS27でYESと判別して、ステップS1に戻る。なおここでは、ステップS19で記録した画像を破棄してもよい。「撮り直す」ボタン128が押下されると、ステップS29でYESと判別して、ステップS15に戻る。
【0151】
なお、フロー図には示していないが、「ぼかし」,「シャープネス」,「落書き」が選択されると、それぞれ対応する画像処理が実行される。これらの画像処理については、この実施例の主題ではないので説明を省略する。ただし、他の実施例では、「ぼかし」または「シャープネス」に対応する画像処理において、「キラキラフィルタ」の場合と同様に、輪郭線104に沿った候補区画106Cの選択、および候補区画数(C)に応じた確率(p)に基づく対象区画106Sの決定を行い、そして決定された対象区画106Sに(局所的に)、「ぼかし」または「シャープネス」を加えることも可能である。
【0152】
上記ステップS31の画像加工処理は、詳しくは、図19〜図21に示すサブルーチンに従って実行される。図19を参照して、CPU42は、まずステップS40で、処理対象となる画像たとえばカメラ16または18で撮像した画像を原画像エリア78(図13参照)に読み込む。次に、ステップS41で、メインメモリ48の変数エリア76に記憶された各種の変数(差分値(A),積算差分値(B),候補区画数(C),確率(p)など)を初期化する。次に、ステップS43で、原画像エリア78に記憶された原画像100(たとえば図10(A),図11(A),図12(A)参照)を構成する全画素(180×120画素)について差分値を算出したか否かを判別し、NOであればステップS45に進み、たとえば図6(B)に点線で示すラスタ走査に従う順序で、未選択画素の1つを選択する。
【0153】
次に、ステップS47で、図6に示したフィルタFltによって、当該画素の差分値を色成分毎に求める。色成分毎の差分値(ΔR,ΔGおよびΔB)は、具体的には、先述の(式2)〜(式4)により計算される。そしてステップS49で、色成分毎の差分値の和を求め、これを当該画素の差分値(A)として差分画像エリア80に記録する。差分値の和は、具体的には、先述の(式5)により計算される。その後、ステップS43に戻って同様の処理を繰り返す。
【0154】
原画像100の最後の画素、たとえば画素(179,119)について、上記のような差分値計算が終わると、ステップS43でYESと判別し、ステップS51に進む。この時点で、差分画像エリア80には、原画像100に対応するY差分画像(グレースケール)が記憶されている。ステップS51では、原画像100(およびこれに対応するY差分画像)の区画106への分割と、区画エリア82に記憶されている区画データの初期化とを行う。これにより、180×120画素の原画像100は、たとえば9×6個の区画106に分割され(図10(B),図11(B),図12(B)参照)、区画データ(図14,図15,図16参照)に含まれる変数やフラグが初期化される。
【0155】
図20を参照して、次に、ステップS53で、全区画106について閾値判定(候補か否かの判断)を行ったか否かを判別し、NOであればステップS55に進んで、たとえば図7(A)に点線で示すラスタ走査に従う順序で、未判断区画106の1つを選択する。そして、当該区画106の各画素について、ステップS57〜S63の処理を実行する。
【0156】
具体的には、まずステップS57で、当該区画106の全画素について閾値判定(輪郭か否かの判断)を行ったか否かを判別し、NOであればステップS59に進んで、未判断画素の1つを選択する。次に、当該画素の差分値(A)は第1閾値(ThA)以上か否か、つまり当該画素は輪郭か否かをステップS61で判別し、NO(A<ThA)であればステップS57に戻る。ステップS61でYES(ThA≦A)であれば、ステップS63に進んで、区画データに含まれている当該区画106の積算差分値(B)に、当該画素の差分値(A)を加算する(B=B+A)。そしてステップS57に戻り、同様の処理を繰り返す。
【0157】
当該区画106の最後の画素、たとえば区画(1,1)の場合は画素(19,19)について、上記のような閾値判定が終わると、ステップS57でYESと判別し、ステップS65に移る。ステップS65では、当該区画106の積算差分値(B)は第2閾値(ThB)以上か否か、つまり当該区画106は候補か否かを判別し、ここでNO(B<ThB)であれば、ステップS67で当該区画106の候補フラグをOFFした後、ステップS53に戻る。ステップS65でYES(ThB≦B)であれば、ステップS69で、当該区画106の候補フラグをONすると共に、候補区画数(C)をインクリメントする(C=C+1)。そして、ステップS53に戻る。
【0158】
最後の区画106たとえば区画(9,6)について、上記のような閾値判定を終えると、ステップS53でYESと判別し、ステップS71に進む。図21を参照して、ステップS71では、候補区画数(C)に応じた確率(p)を確率テーブル(図8(A)参照)に基づいて決定する。決定された確率(p)は、区画データ(たとえば図14参照)に補正前の確率として登録される。補正前の確率は、全候補区画106Cに共通である。
【0159】
次に、ステップS73で、全候補区画106Cについて、0〜99のうちいずれか1つの値をランダムに設定する。そして、ステップS75で、全候補区画106Cについて設定値と確率との比較(対象か否かの判断)を行ったか否かを判別し、NOであればステップS77に進んで、未判断候補区画106Cの1つを選択する。次のステップS79では、当該候補区画106Cの画像中心からの距離(d)、たとえば原画像100の中心Pから当該候補区画106Cの中心Qまでの距離d(図7(B)参照)を上記の(式6)で算出し、結果を区画データに登録する。なお、ここで各候補区画106Cについて距離を算出する代わりに、上記ステップS51(図19参照)で区画106への分割を行った直後に、全区画106について距離(d)を計算し、計算結果を区画データに記述しておいてもよい。
【0160】
次に、ステップS81で、当該候補区画106Cの確率(p)を距離(d)に応じて補正する。具体的には、たとえば図8(B)の係数テーブルから、距離(d)に対応する係数(0.25または1)を取得し、その係数を補正前の確率に乗算し、そして乗算結果を補正後の確率として区画データに登録する。
【0161】
次に、ステップS83で、当該候補区画106Cの設定値は補正後の確率(p)未満か否かを判別し、NOであればステップS85で当該候補区画106Cの対象フラグをOFFする一方、YESであればステップS87で当該候補区画106Cの対象フラグをONする。したがって、当該候補区画106Cは、補正後の確率(p)で、つまり100回にp回の頻度で、対象区画106Sに決定される結果となる。その後、ステップS75に戻る。
【0162】
最後の候補区画106Cについて対象とするか否かの判断を終えると、ステップS75でYESと判別し、ステップS89に移る。ステップS89では、各対象区画106Sについて、たとえば図9のオブジェクトテーブルに登録された形態の中から、描画すべきオブジェクトの形態をランダムに決定する。区画データには、こうして決定された形態に対応するオブジェクト番号が登録される。この時点で、図14,図15,図16に示したような区画データが完成する。
【0163】
そして、ステップS91で、このような区画データに基づいて、原画像100(図10(A),図11(A),図12(A)参照)に対し、各対象区画106Sを中心に、番号(1,2…)に対応するオブジェクト(St1,St2…)を描画する。こうして、原画像100には、輪郭線104沿いの適宜な位置に、適宜な数のオブジェクトSt1,St2…が配置される結果となる(図10(C),図11(C),図12(C)参照)。その後、処理はメインルーチン(図17,図18参照)に復帰する。
【0164】
以上から明らかなように、この実施例のゲーム装置10では、CPU42は、原画像エリア78に格納された原画像100から輪郭線104をフィルタFltで検出し(S53〜S69)、検出された輪郭線104に関連する位置(輪郭線104を含む候補区画106C)から描画の対象となる位置(対象区画106S)を選出し(S71〜S87)、そして選出された位置(対象区画106S)に星オブジェクトSt1,St2…を描画する(S91)。
【0165】
こうして、輪郭に関連する位置から対象となる位置を選出し、その位置に描画するので、ユーザが位置を指定しなくても、画像の輪郭位置にオブジェクトの描画を行うことができる。
【0166】
なお、原画像100のサイズ,区画106のサイズ,確率テーブル,係数テーブルなどは、この実施例のものに限らない。変形例では、図25(A)に示すように、216×160画素の原画像100を4×4画素の区画106に分割し(総区画数2160)、図25(B)に示すような確率テーブルおよび図25(C)に示すような係数テーブルを用いて対象区画106Sを決定する。
【0167】
この場合、図26(A)に示すような輪郭の少ない原画像から、たとえば図26(B)に示すような星付画像が得られる。また、図27(A)に示すような輪郭の多い原画像から、たとえば図27(B)に示すような星付画像が得られる。すなわち、輪郭線の多少によらず、星の数は略一定である。
【0168】
比較のために、図27(A)の原画像から確率テーブルおよび係数テーブルを用いずに作成された星付画像を図28に示す。この場合、多数の星が重なり合うように配置され、「テスト」の文字も読み取りにくい。これに対して、図27(B)の星付画像では、星同士の重なり合いが少なく、特に中心付近で星が少ないので、文字を読み取りやすい。
【0169】
他の変形例では、図29に示すように、輪郭線に沿ってより多様な形態のオブジェクトを描画してもよく、さらには、このようなオブジェクトの描画に加えて、画像中心からの距離に応じたグラデーションなどのエフェクトを加えてもよい。逆光フィルタのようなエフェクトをかけてもよい。ここでエフェクトを「加える」ないし「かける」とは、計算(フィルタ演算など)によって画素値を変化させることをいう。なお、オブジェクトの描画も、画素値を変化させることによって実現されるのだから、画素値を変化させることを「描画する」と定義すれば、「エフェクトを描画する」という表現も可能である。
【0170】
なお、輪郭線検出に用いるフィルタは、図6のフィルタFltに限らず、たとえば、Sobelフィルタ,Prewittフィルタ,Laplacianフィルタ,Robertsフィルタなど、既存のものでもよい。いずれのフィルタでも、注目画素およびその周辺画素に対してそれぞれ係数を掛け合わせ、それらを合計することで注目画素と周辺画素との差分値(ないし変化率)を計算するが、フィルタによって、周辺画素の数や配置、および各画素に割り当てる係数が異なっており、それぞれ、エッジを強調したり、ノイズの影響を抑えたり、緩やかなエッジに対する感度を高めたり、エッジの方向による感度差を緩和したりすることができる。これに対して、上述してきた図6のフィルタFltでは、斜めの輪郭は検出できるが、X軸やY軸に沿うような輪郭線の検出は困難である。しかし、この実施例では、輪郭線自体を描画したり、輪郭線に沿って画像を切り抜いたりするわけではなく、輪郭線沿いに適宜な数のオブジェクトを描画すればよいので、検出精度を必要以上に高める必要はなく、少ない演算量で必要な検出精度が得られる図6のフィルタFltの方が好適である。
【0171】
なお、この実施例では、各カメラ16および18で撮像した画像を原画像100として加工したが、原画像100は、タッチパネル28で手書き入力した画像や、メモリカードI/F44を通してメモリカード38から取り込んだ各種の画像(カメラ画像,手書き画像,スキャナ画像,CG画像など)でもよい。
【0172】
なお、この実施例では、確率(p)を決定したあとで、各区画106について中心からの距離(d)を求め、この距離(d)に応じて確率(p)に係数を掛けることで確率補正を行うようにしているが、候補区画数(C)と距離(d)との2つの条件を混ぜたテーブル(図示せず)をあらかじめ用意しておけば、確率(p)を決定するステップS71において、併せて確率補正を行うことができる。
【0173】
なお、この実施例では、被写体102は原画像100の中央部に位置することを前提に、原画像100の中心Pから各区画106の中心Qまでの距離(d)を求めたが、原画像100の適宜な基準点から各区画106の適宜な基準点までの距離を求めてもよい。さらには、ユーザが原画像100側の基準点の位置を選択できるようにして、たとえば原画像100の右上部に被写体102がある場合には、ユーザが原画像100の右上端の位置をタッチなどにより選択(指示)したことに応じて当該右上端の位置からの距離を求めてもよい。
【0174】
また、この実施例では、確率(p)を原画像100の中心P(適宜な基準点)に近い区画106ほど低くなるように補正したが、他の実施例では、基準点から遠いほど低くなる(基準点に近いほど高くなる)ように補正してもよい。これによって、対象区画106Sが基準点に集まりやすくなるので、たとえば、被写体の輪郭線104沿いに多くのオグジェクトを描画して、被写体を強調することができる。
【0175】
また、原画像100が大きいほど区画106を大きくしてもよい。一例を図30に示す。この原画像100は、432×320のサイズを有する。すなわち、図25(A)に示した原画像100と比べ、縦横2倍のサイズなので、区画106のサイズも縦横2倍つまり8×8とする。この場合、どちらの原画像100でも、総区画数は2160個となる。これによって、大きな原画像100であっても小さな原画像100であっても、全体的に見て同程度のオブジェクトを配置することができる。これは、候補区画数(C)に応じて確率(p)を変化させる補正処理と趣旨は同様である。
【0176】
あるいは、オブジェクトの大きさによって区画106を変化させてもよい。例えば大きい星を描画する場合は、近接する場所に2以上の星が描画されてしまうと重なっているように見えて見栄えが悪いので、区画106を大きくする。小さい星の場合は、有る程度近接しても重なるようには見えないので、区画106は小さくてもよい。この場合、ステップS51で区画106への分割を行う前に、区画サイズを決定する必要がある。たとえば、ステップS23でキラキラフィルタを選択する際に星の大きさ(たとえば平均サイズ、あるいは最小サイズおよび最大サイズ)を指定すれば、ステップS51で区画106への分割を行う際に、指定された星の大きさに応じた区画サイズを決定することができる。
【0177】
また、この実施例では、たとえば全候補区画106Cの平均10%にオブジェクトを配置したい場合、各候補区画106Cの確率を10%に設定すればよく、そしてこの場合、オブジェクトの配置はランダムになるが、他の実施例では、9個の非対象区画が続いた後に1個の対象区画106S、といったように順番に対象区画106Sを配置してもよい。オブジェクトの間隔は、均等である必要もなく、平均で10個に付き1個であればよい。したがって、たとえば、9個の非対象区画が続いた後に1個の対象区画106S、次は4個の非対象区画が続いた後に1個の対象区画106S、その次は14個の非対象区画が続いた後に1個の対象区画106S、といった不均等な配置でもよい。
【0178】
なお、この実施例では、各対象区画106Sに配置するオブジェクトの形態をランダムに決定したが、各対象区画106Sの積算差分値(B)に基づいて決定してもよい。これにより、エッジの強さに応じた形態のオブジェクトを配置できる。たとえば、積算差分値(B)が大きいほどオブジェクトを大きくすれば、オブジェクトの大きさでエッジの強さが直感的にわかる。
【0179】
また、互いに隣接する候補区画106Cがあれば、その数をカウントして、その数が多いほどオブジェクトを大きく表示し、その反面、それらが対象区画106Sとなる確率を下げるようにしてもよい。つまり、互いに隣接する候補区画106Cをひとまとめにして、そのまとめられた候補区画106Cにオブジェクトを大きく描画することもできる。
【0180】
なお、この実施例では、原画像100を複数の区画106に分割して、その中から候補区画106Cを選出し、そして各候補区画106Cを候補区画数(C)に応じた確率で対象区画106Sに決定したが、このような処理を画素単位で行ってもよい(すなわち、区画=画素と扱ってよい)。すなわち、原画像100を構成する全画素の中から輪郭線を構成している候補画素を選出し、そして各候補画素を候補画素数に応じた確率で対象画素に決定することも可能である。ただし、画素単位で行うと、処理量が膨大となり、ノイズも出やすい。一方、区画単位で行えば、処理量は抑制され、ノイズも出にくいのに加え、区画サイズを適宜選ぶことで、オブジェクトの間隔を確保できる利点がある。よって、この実施例には、複数の画素から構成される区画単位の方が適する。
【0181】
なお、たとえば画素単位で処理を行う場合には、連続(接近)してオブジェクトが描画されやすいため、連続した画素が描画対象とならないように、オブジェクトの間隔を調整する処理を入れることができる。また、区画単位で処理を行う場合にも、より間隔を空けて描画させたいときに、同様の間隔調整方法を適用することができる。間隔調整方法の例としては、オブジェクト同士が重ならない(所定値以上の隙間が確保される)最短距離を計算して、各オブジェクトを中心間の距離がこの最短距離以上となるように配置していく方法がある。また、同様に最短距離を計算して、いったんオブジェクトの位置(対象画素)を決定した後に、ある対象画素から最短距離内に別の対象画素が2つ以上存在していれば、そのうち1つを残して削除する(あるいは最短距離外に移動させる)方法もある。
【0182】
以上では、ゲーム装置10について説明したが、この発明は、コンピュータ(CPU)を備える画像処理装置(ゲーム機のほか、たとえばPC,PDA,携帯電話機など)に適用できる。各処理が複数のコンピュータ等によって分散処理されるような画像処理システムにも適用可能である。
【符号の説明】
【0183】
10 …ゲーム装置
12,14 …(下側,上側)LCD
16,18 …(第1,第2)カメラ
42 …CPU
48 …メインメモリ
100 …原画像
104 …輪郭線
106 …区画
106C …候補区画
106S …対象区画
St1,St2 …(星)オブジェクト

【特許請求の範囲】
【請求項1】
画像処理プログラムであって、画像処理装置のコンピュータを、
画像から輪郭を検出する輪郭検出手段、
前記輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および
前記描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段として機能させる、画像処理プログラム。
【請求項2】
前記描画対象位置選出手段は、前記輪郭に関連する位置から、所定の割合に従って描画の対象となる位置を選出する、請求項1記載の画像処理プログラム。
【請求項3】
前記描画対象位置選出手段は、
前記輪郭に関連する位置を計数し、
前記輪郭に関連する位置の数に応じた割合を設定し、そして
前記割合に従って前記輪郭に関連する位置から描画の対象となる位置を選出する、請求項2記載の画像処理プログラム。
【請求項4】
前記描画対象位置選出手段は、前記輪郭に関連する位置の数が多いほど、小さい割合を設定する、請求項3記載の画像処理プログラム。
【請求項5】
前記描画対象位置選出手段は、
前記画像の所定位置から各前記輪郭に関連する位置までの距離を算出し、
前記距離に応じて、描画の対象となる位置が選出される割合を設定し、そして
前記輪郭に関連する位置から、前記割合設定手段によって設定された割合に従って描画の対象となる位置を選出する、請求項1記載の画像処理プログラム。
【請求項6】
前記描画対象位置選出手段は、
前記画像の中心から各前記輪郭に関連する位置までの距離を算出し、
前記距離が大きいほど、大きい割合を設定する、請求項5記載の画像処理プログラム。
【請求項7】
前記描画対象位置選出手段は、前記輪郭に関連する位置から、描画の対象となる位置をランダムに選出する、請求項1記載の画像処理プログラム。
【請求項8】
前記輪郭検出手段は、
前記画像を構成する各画素について、色成分ごとに、当該画素または、当該画素とその周辺に存在する1以上の画素の色成分値の合計である第1合計値と、当該画素を含まない当該画素の周辺に存在する、第1合計値の算出に用いた画素数と同数の画素の色成分値の合計である第2合計値との差分値を算出し、各色成分について算出された当該差分値を合算することで当該画素における合計差分値を算出し、
前記画像の各画素における前記合計差分値が第1閾値以上か否かを判別し、そして
第1閾値以上であると判別された画素を、輪郭を構成する画素として検出する、請求項1記載の画像処理プログラム。
【請求項9】
前記画像は2以上の画素からなる複数の区画に分割され、
前記輪郭検出手段は、
前記画像を構成する各画素について、色成分ごとに、当該画素または、当該画素とその周辺に存在する1以上の画素の色成分値の合計である第1合計値と、当該画素を含まない当該画素の周辺に存在する、第1合計値の算出に用いた画素数と同数の画素の色成分値の合計である第2合計値との差分値を算出し、各色成分について算出された当該差分値を合算することで当該画素における合計差分値を算出し、
各区画を構成する画素の前記合計差分値が第1閾値以上であるか否かを判別し、
第1閾値以上であると判別された当該画素における合計差分値を当該区画の積算差分値に積算し、
各区画の積算差分値が第2閾値以上であるか否かを判別し、そして
前記第2閾値以上であると判別された区画を輪郭に関連する区画として検出し、
前記描画対象位置選出手段は、前記輪郭に関連する区画から、描画の対象となる区画を選出する、請求項1記載の画像処理プログラム。
【請求項10】
前記描画対象位置選出手段は、
前記輪郭に関連する位置を計数し、
前記輪郭に関連する位置の数に応じた確率を設定し、そして
各前記輪郭に関連する位置が描画の対象となるか否かを前記確率に基づいて決定する、請求項2記載の画像処理プログラム。
【請求項11】
前記描画対象位置選出手段は、
前記画像の所定位置から各前記輪郭に関連する位置までの距離を算出し、
前記確率を前記距離に応じて補正し、そして
前記補正後の確率に基づいて前記決定を行う、請求項10記載の画像処理プログラム。
【請求項12】
前記画像処理装置は、撮像手段をさらに備え、
前記画像処理プログラムは、前記コンピュータを、前記撮像手段によって撮像された画像を読み込む画像読込手段としてさらに機能させ、
前記輪郭検出手段は、前記画像読込手段によって読み込まれた画像から輪郭を検出する、請求項1記載の画像処理プログラム。
【請求項13】
画像から輪郭を検出する輪郭検出手段、
前記輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および
前記描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段を備える、画像処理装置。
【請求項14】
画像から輪郭を検出する輪郭検出ステップ、
前記輪郭検出ステップによって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出ステップ、および
前記描画対象位置選出ステップによって選出された位置に所定の描画を行う描画ステップを備える、画像処理方法。
【請求項15】
画像から輪郭を検出する輪郭検出手段、
前記輪郭検出手段によって検出された輪郭に関連する位置から、描画の対象となる位置を選出する描画対象位置選出手段、および
前記描画対象位置選出手段によって選出された位置に所定の描画を行う描画手段を備える、画像処理システム。

【図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

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate