以下、図面に基づき、本発明の実施形態に係る撮像装置の一例について説明する。なお、本発明は、デジタルカメラなどの撮像装置の他、パーソナルコンピュータなどあらゆる画像処理装置に適用することができる。
まず、図1を用いて、本発明の実施形態に係る撮像装置100の構成を説明する。撮像装置100は、被写体を含む空間を撮像して画像を生成し、生成した画像にCG(Computer Graphics)技術などを用いて生成したキャラクタ画像を合成する装置である。なお、本実施形態においては、被写体は人物の顔であり、キャラクタは動物のキャラクタであるものとして説明する。そして、人物の顔とキャラクタの顔との画像上における位置に基づいて、キャラクタの配置位置を算出する例を示す。
図1に示すように、撮像装置100は、制御部10と、光学系11と、光学系制御部12と、光学系駆動部13と、撮像素子14と、A/D(Analog/Digital)変換器15と、画像処理部16と、画像処理メモリ17と、フラッシュ制御部18と、フラッシュ発光部19と、CG生成部20と、画像合成部21と、画像合成メモリ22と、記憶部23と、操作部24と、表示部25と、電源制御部26と、を備える。
制御部10は、撮像装置100全体の動作を制御する。制御部10は、例えば、CPU、ROM及びRAMなどから構成される。この場合、CPUがRAMをワークエリアとしてROMに記憶されているプログラムを実行することにより、CPU、ROM及びRAMが全体として制御部10として機能する。
光学系11は、ズームレンズ、フォーカスレンズ、絞り、シャッターなどから構成される。
光学系制御部12は、制御部10や画像処理部16による制御に従って、光学系駆動部13を制御する。具体的には、光学系制御部12は、光学系駆動部13を制御することにより、光学系11が備えるズームレンズの位置を調節してズームを合わせるとともに、光学系11が備えるフォーカスレンズの位置を調節して焦点を合わせる。また、光学系制御部12は、光学系駆動部13を制御することにより、光学系11が備える絞りやシャッターを駆動する。
撮像素子14は、光学系11から入射された光を電気信号に変換する素子である。撮像素子14は、CCD(Charge Coupled Device)などから構成され、変換した電気信号をアナログ信号として出力する。
A/D変換器15は、撮像素子14から供給されたアナログ信号をデジタル信号に変換して出力する。
画像処理部16は、A/D変換器15から供給されたデジタル信号を処理して、撮像された画像を示す画像データを生成する。また、画像処理部16は、供給された画像のノイズ除去、配列変換、色変換、認識処理、圧縮処理を実行する。画像処理部16は、シャッターボタンが押されたときは、比較的高画質の画像を示す大容量の画像データを生成し、プレビュー表示(スルー表示)をするときは、比較的低画質の画像を示す小容量の画像データを生成することもできる。しかしながら、本実施形態においては、理解を容易にするため、シャッターボタンが押されたときに生成される画像の画質と、プレビュー表示をするときに生成される画像の画質は同じものとする。すなわち、撮像装置100は、シャッターボタンが押されたときは、プレビュー表示している画像を保存するものとして説明する。なお、画像処理部16は、画像データを生成する際に、画像処理メモリ17をバッファとして用いる。画像処理部16は、例えば、CPU、ROM及びRAMなどから構成される。
画像処理メモリ17は、画像処理部16がデジタル信号から画像データを生成するまでに生成される中間データなどを記憶する。画像処理メモリ17は、例えば、DRAM(Dynamic Random Access Memory)などから構成される。
フラッシュ制御部18は、制御部10による制御に従って、フラッシュ発光部19を制御する。フラッシュ発光部19は、閃光電球などから構成される。
CG生成部20は、記憶部23に記憶されているキャラクタ生成情報などに基づいて、三次元の仮想空間上のキャラクタのCGを生成する。CG生成部20は、例えば、CPU、ROM及びRAMなどから構成される。
画像合成部21は、画像処理部16から供給された画像データにより示される画像とCG生成部20から供給されたCGとを合成する。なおCG生成部20から供給されるCGは三次元の仮想空間上のキャラクタのCGである。従って、画像合成部21は、当該CGを、三次元の仮想空間上の所定の点を基準として、三次元の仮想空間上の所定の投影面に投影したときに得られる画像(以下「キャラクタ画像」という。)を抽出し、抽出したキャラクタ画像を画像処理部16から供給された画像データにより示される画像と合成する。なお、画像合成部21は、画像を合成する際に、画像合成メモリ22をバッファとして用いる。画像合成部21は、例えば、CPU、ROM及びRAMなどから構成される。
画像合成メモリ22は、画像合成部21が画像を合成するまでに生成される中間データなどを記憶する。画像合成メモリ22は、例えば、DRAM(Dynamic Random Access Memory)などから構成される。
記憶部23は、画像処理部16が生成した画像データ、画像合成部21が生成した画像データ、3次元の仮想空間上のキャラクタのCGを生成するためのキャラクタ生成情報などを記憶する。記憶部23は、フラッシュメモリなどから構成される。
操作部24は、ユーザから各種のキー操作を受け付ける。操作部24は、シャッターボタン、ズームボタン、カーソルキー、決定ボタン、メニューボタンなどを備える。操作部24は、ユーザから受け付けた各種のキー操作を示す信号を制御部10に供給する。一方、制御部10は、操作部24からこれらの信号を受信すると、受信した信号に基づいた処理を実行する。
表示部25は、記憶部23に記憶されている画像データにより表現される画像などを表示する。表示部25は、液晶ディスプレイなどから構成される。
電源制御部26は、図示しない電源のオン/オフの制御や、充電の制御を実行する。電源制御部26は、例えば、所定の時間継続して操作部24に操作入力がない場合に、電源をオフにする機能を有する。電源制御部26は、例えば、CPU、ROM及びRAMなどから構成される。
次に、図2に示すフローチャートを用いて、撮像装置100が実行する画像合成処理を説明する。撮像装置100は、電源が投入されると、図2のフローチャートにより示される画像合成処理を実行する。また、画像合成処理は、シャッターボタンが押されるまでは、スルー画像とキャラクタ画像とを合成して合成画像を生成してプレビュー表示する処理を繰り返し、シャッターボタンが押されたことに応答して、合成画像を保存する処理である。なお、理解を容易にするため、「撮像された画像」を「スルー画像」、「スルー画像とキャラクタ画像とを合成して得られる画像」を「合成画像」とする。
まず、制御部10は、スルー画像を取得する(ステップS101)。具体的には、制御部10は、画像処理部16を制御してスルー画像を生成する。
そして、制御部10は、キャラクタの選択を求める要求があるか否かを判別する(ステップS102)。例えば、制御部10は、キャラクタの選択を求める操作入力がユーザから操作部24になされたか否かを判別することにより、キャラクタの選択を求める要求があるか否かを判別する。なお、キャラクタの選択を求める要求は、ユーザからのものに限られない。例えば、制御部10は、記憶部23に記憶されているデータに基づいてキャラクタの選択を求める要求があるか否かを判別してもよい。
制御部10は、キャラクタの選択を求める要求があると判別すると(ステップS102:YES)、キャラクタの選択を実行する(ステップS103)。具体的には、制御部10は、キャラクタの選択を促す画面を表示部25に表示し、操作部24を介してユーザからのキャラクタの選択を受け付ける。
なお、制御部10は、キャラクタを指定する情報とともに、キャラクタの顔の中心の座標の初期値を指定する情報や、キャラクタの顔の半径を指定する情報などをキャラクタ指定情報として、ユーザから受け付けるようにしてもよい。キャラクタの顔の中心の座標の初期値は、キャラクタの配置位置の初期値を示し、スルー画像上の座標で示される。キャラクタの顔の半径は、キャラクタのスルー画像上での大きさを示し、画素数(ピクセル)で示される。以下、本明細書において、座標は、スルー画像(または、合成画像)上の座標を示し、顔の半径は、スルー画像(または、合成画像)上での顔の半径を示す。
図3に示す例では、キャラクタとして犬が指定され、キャラクタの顔の中心座標の初期値として(Xc0,Yc0)が指定され、キャラクタの顔の半径として20(ピクセル)が指定されている。なお、キャラクタの顔の中心座標の初期値、キャラクタの顔の半径などは、ユーザから受け付けずに、あらかじめ記憶部23に記憶されている値などを使用してもよい。
次に、制御部10は、選択されたキャラクタのキャラクタ画像を生成する(ステップS104)。具体的には、まず、制御部10は、三次元の仮想空間上のキャラクタのCGをCG生成部20に生成させる。例えば、制御部10は、犬を指定する情報をCG生成部20に供給する。そして、CG生成部20は、記憶部23に記憶されているキャラクタ生成情報のうち、三次元の仮想空間上の犬のCGを生成するためのキャラクタ生成情報を読み出す。CG生成部20は、読み出したキャラクタ生成情報に基づいて、三次元の仮想空間上の犬のCGを生成する。そして、制御部10は、生成された犬のCGを変換して犬のキャラクタ画像を生成する。具体的には、制御部10は、CG生成部20により生成された犬のCGと、キャラクタの顔の半径とを画像合成部21に供給し、画像合成部21を制御して、犬のキャラクタ画像を生成する。
次に、制御部10は、生成したキャラクタ画像を保存する(ステップS105)。具体的には、制御部10は、生成した犬のキャラクタ画像を記憶部23に記憶する。
制御部10は、キャラクタの選択を求める要求がないと判別する(ステップS102:NO)、若しくは、キャラクタ画像の保存(ステップS105)を終了すると、キャラクタ配置方法の変更を求める要求があるか否かを判別する(ステップS106)。例えば、制御部10は、キャラクタ配置方法の変更を求める操作入力がユーザから操作部24になされたか否かを判別することにより、キャラクタ配置方法の変更を求める要求があるか否かを判別する。なお、キャラクタ配置方法の変更を求める要求は、ユーザからのものに限られない。例えば、制御部10は、記憶部23に記憶されているデータに基づいてキャラクタ配置方法の変更を求める要求があるか否かを判別してもよい。
制御部10は、キャラクタ配置方法の変更を求める要求があると判別すると(ステップS106:YES)、キャラクタ配置方法を変更する(ステップS107)。具体的には、制御部10は、キャラクタ配置方法の変更を促す画面を表示部25に表示し、操作部24を介してユーザからのキャラクタ配置方法の変更を受け付ける。
なお、制御部10は、キャラクタ配置方法を指定する情報とともに、配置パラメータや、優先度を指定する情報などをキャラクタ配置方法指定情報として、ユーザから受け付けるようにしてもよい。
図3(B)にキャラクタ配置方法指定情報の一例を示す。キャラクタ配置方法指定情報は、キャラクタ配置方法を示す情報と、配置パラメータと、優先度を示す情報とを含む。ここで、配置パラメータは、キャラクタ配置方法毎に用意されるパラメータである。優先度は、対応するキャラクタ配置方法でのキャラクタ配置を実行するか否かを示すとともに、複数のキャラクタ配置方法でキャラクタ配置を実行する場合の優先度を示す。例えば、優先度が−1に設定されたキャラクタ配置方法でのキャラクタ配置は実行されず、優先度が0に設定されたキャラクタ配置方法でのキャラクタ配置は実行される。そして、例えば、優先度が−1、0以外に設定された場合、優先度に従って、対応するキャラクタ配置方法でのキャラクタ配置が実行されるか否かが決定される。具体的には、例えば、キャラクタ配置を実行しようとしているキャラクタ配置方法に対応する優先度よりも高い優先度(数字が小さい優先度)に対応するキャラクタ配置方法でのキャラクタ配置が全て失敗している場合は、当該キャラクタ配置方法によるキャラクタ配置を実行する。一方、キャラクタ配置を実行しようとしているキャラクタ配置方法に対応する優先度よりも高い優先度(数字が小さい優先度)に対応するキャラクタ配置方法でのキャラクタ配置が成功している場合は、当該キャラクタ配置方法によるキャラクタ配置は実行しない。
なお、例えば、キャラクタの顔が撮像領域からはみ出る場合やキャラクタの顔が撮像しようとする人の顔と重なる場合にキャラクタ配置が失敗したものとみなすことができる。なお、優先度などを設定せずに、所定のキャラクタ配置方法でキャラクタ配置を実行するようにしてもよい。
ここで、図3(B)を参照して、各キャラクタ配置方法について説明する。図3(B)に示すように、キャラクタ配置方法には、左右均等配置、左右隣接配置、上下隣接配置、等間隔配置、非登録顔置換配置などがある。
左右均等配置は、検出された顔とキャラクタの顔とが合成画像上で左右均等に配置されるようにキャラクタを配置する方法である。なお、左右均等配置は、検出された顔が1つの場合にのみ実行され、検出された顔が複数ある場合は、当該キャラクタ配置は失敗となる。
左右隣接配置は、検出された顔の左端部の左右方向の座標とキャラクタの顔の右端部の左右方向の座標とが一致、若しくは、検出された顔の右端部の左右方向の座標とキャラクタの顔の左端部の左右方向の座標とが一致するようにキャラクタを配置する方法である。また、左右隣接配置は、検出された顔の左/右のどちらにキャラクタの顔を配置するかを示す情報を配置パラメータとして有する。なお、左右隣接配置は、検出された顔が1つの場合にのみ実行され、検出された顔が複数ある場合は、当該キャラクタ配置は失敗となる。
上下隣接配置は、検出された顔の下端部の上下方向の座標とキャラクタの顔の上端部の上下方向の座標とが一致、若しくは、検出された顔の上端部の上下方向の座標とキャラクタの顔の下端部の上下方向の座標とが一致するようにキャラクタを配置する方法である。また、上下隣接配置は、検出された顔の上/下のどちらにキャラクタの顔を配置するかを示す情報を配置パラメータとして有する。なお、上下隣接配置は、検出された顔が1つの場合にのみ実行され、検出された顔が複数ある場合は、当該キャラクタ配置は失敗となる。
等間隔配置は、検出された複数の顔とキャラクタの顔とが合成画像上で等間隔に配置されるようにキャラクタを配置する方法である。等間隔配置は、複数の顔の左/右のどちらにキャラクタの顔を配置するかを示す情報を配置パラメータとして有する。なお、等間隔配置は、複数の顔が検出された場合にのみ実行され、検出された顔が1つである場合は、当該キャラクタ配置は失敗となる。
非登録顔置換配置は、検出された顔のうち、登録されていない顔、すなわち、顔認証で認証されない顔の中心の座標と、キャラクタの顔の中心の座標とが一致するように、キャラクタを配置する方法である。なお、非登録顔置換配置は、登録されていない顔のうち正面向きの顔(視線方向が撮像装置である顔)のみを対象とするか、若しくは、登録されていない全ての顔を対象にするかを示す情報を配置パラメータとして有する。
次に、制御部10は、キャラクタ配置方法指定情報を保存する(ステップS108)。具体的には、制御部10は、ステップS107で変更したキャラクタ配置方法指定情報を記憶部23に記憶する。
制御部10は、キャラクタ配置方法の変更を求める要求がないと判別する(ステップS106:NO)、若しくは、キャラクタ配置方法指定情報の保存(ステップS108)を終了すると、キャラクタを配置する位置を算出する処理を実行する(ステップS109)。
キャラクタ配置位置算出処理(ステップS109)については、図4に示すフローチャートを参照して詳細に説明する。
まず、制御部10は、スルー画像から顔を検出する(ステップS201)。具体的には、制御部10は、記憶部23に記憶されているスルー画像を示す画像データを解析することにより、スルー画像に含まれる顔を検出する。例えば、制御部10は、スルー画像から主に肌色と黒とから構成される画像部分を検出し、当該検出された画像部分を、顔を示す画像部分であると判別する。或いは、あらかじめ記憶部23に記憶されている顔を示す画像と類似する画像部分をスルー画像から検出し、検出された画像部分を、顔を示す画像部分であると判別する。なお、制御部10は、スルー画像に複数の顔が含まれる場合は、スルー画像に含まれる全ての顔を検出する。
そして、制御部10は、検出した顔の中心の座標を取得する(ステップS202)。例えば、制御部10は、検出した顔を示す画像部分をスルー画像から抽出する。そして、制御部10は、抽出した画像部分を構成する全ての画素についてスルー画像上の座標の平均値を求め、求めた平均値を当該顔の中心の座標に設定する。制御部10は、検出した顔の中心の座標を示す情報を記憶部23に記憶する。なお、制御部10は、スルー画像に複数の顔が含まれる場合は、スルー画像に含まれる全ての顔の中心の座標を取得する。
また、制御部10は、検出した顔の半径を取得する(ステップS203)。例えば、制御部10は、検出した顔を示す画像部分を構成する画素数を求め、求めた画素数の画素から構成される円の半径を当該顔の半径に設定する。制御部10は、検出した顔の半径を示す情報を記憶部23に記憶する。なお、制御部10は、スルー画像に複数の顔が含まれる場合は、スルー画像に含まれる全ての顔の半径を取得する。
次に、制御部10は、検出した顔について顔認証を行う(ステップS204)。具体的には、制御部10は、検出した顔があらかじめ登録されている顔と一致するか否かを判別し、判別結果を記憶部23に記憶する。検出した顔とあらかじめ登録されている顔とが一致するか否かを判別する手法は任意であるが、例えば、制御部10は、パターンマッチングにより判別する。この場合、顔画像を示す画像データをあらかじめ複数個記憶部23に記憶しておく。そして、制御部10は、検出した顔を示す画像と当該記憶部23に記憶されている顔画像とのマッチングを試みる。そして、制御部10は、検出した顔を示す画像が記憶部23に記憶されているいずれかの顔画像とマッチするか否かを判別する。なお、制御部10は、スルー画像に複数の顔が含まれる場合は、スルー画像に含まれる全ての顔について顔認証を行う。
顔画像を示す画像データの代わりに、当該顔画像から抽出された特徴量を示すデータを記憶部23に記憶しておき、当該特徴量を示すデータと検出した顔から抽出された特徴量を示すデータとを比較することにより、顔認証を行うようにしてもよい。
次に、制御部10は、検出した顔がカメラ目線であるか否かを判別する(ステップS205)。具体的には、例えば、制御部10は、スルー画像に基づいて、顔の向きと目に対する瞳(黒目)の相対的な位置とを検出し、検出した顔の向きと瞳の位置とに基づいて、カメラ目線であるか否かを判別する。例えば、顔の向きが正面向きであり、瞳の位置が目の中心にある場合は、カメラ目線であると判別する。また、例えば、顔の向きが左(右)向きであり、瞳の位置が目の中心から右(左)にずれている場合は、カメラ目線であると判別する。また、例えば、顔の向きが上(下)向きであり、瞳の位置が目の中心から下(上)にずれている場合は、カメラ目線であると判別する。なお、顔を示す画像部分において、肌色と黒とがどのように分布しているかを解析することにより、顔の向きを検出することができる。また、目を示す画像部分において、白と黒とがどのように分布しているかを解析することにより、目に対する瞳の相対的な位置を検出することができる。
或いは、制御部10は、検出した顔を示す画像部分が、あらかじめ記憶部23に記憶されているカメラ目線である顔を示す画像と類似すると判別した場合に、検出した顔がカメラ目線であると判別する。制御部10は、検出した顔がカメラ目線であるか否かを示す情報を記憶部23に記憶する。なお、制御部10は、スルー画像に複数の顔が含まれる場合は、スルー画像に含まれる全ての顔についてカメラ目線であるか否かを判別する。
そして、制御部10は、左右均等配置を実行するか否かを判別する(ステップS206)。具体的には、制御部10は、左右均等配置に対応付けられて記憶部23に記憶されている優先度が−1でなく、且つ、当該優先度よりも優先度が高いキャラクタ配置方法に対応する配置成功フラグが1にセットされていない場合に、左右均等配置を実行すると判別する。なお、配置成功フラグは、キャラクタ配置方法に対応付けられて記憶部23に記憶されているフラグである。そして、配置成功フラグは、当該キャラクタ配置方法によるキャラクタ配置が成功である場合に1にセットされ、当該キャラクタ配置方法によるキャラクタ配置が失敗である場合に0にクリアされる。
制御部10は、左右均等配置を実行すると判別すると(ステップS206:YES)、左右均等配置用のキャラクタ配置位置算出処理を実行する(ステップS207)。左右均等配置用のキャラクタ配置位置算出処理(ステップS207)については、図5に示すフローチャートを参照して詳細に説明する。なお、理解を容易にするため、左右均等配置用のキャラクタ配置位置算出処理の説明においては、スルー画像からは1つの顔のみが検出されたものとして説明する。
まず、図6(A)、(B)、並びに、図7を参照して合成画像を説明する。
図6(A)は、スルー画像の一例を示す図である。図6(A)に示す例では、スルー画像には人物31を示す画像部分が含まれている。図6(B)は、キャラクタの一例を示す図である。図6(B)には、ステップS103において選択されたキャラクタ41が例示されている。
図7は、スルー画像にキャラクタ画像を合成することにより得られる合成画像の一例を示す図である。ここで、図7に示されている記号について説明する。XmaxはX軸方向の画素数であり、YmaxはY軸方向の画素数である。すなわち、合成画像の画像サイズは、Xmax×Ymaxである。Xf1は、人物31の顔の中心のX軸方向の座標(合成画像上、または、スルー画像上の座標)であり、Yf1は、人物31の顔の中心のY軸方向の座標である。すなわち、人物31の顔の中心の座標は(Xf1,Yf1)である。Rf1は、人物31の顔の半径(合成画像上、または、スルー画像上の顔の半径)である。Xcは、キャラクタ41の顔の中心のX軸方向の座標であり、Ycは、キャラクタ41の顔の中心のY軸方向の座標である。すなわち、キャラクタ41の顔の中心の座標は(Xc,Yc)である。Rcは、キャラクタ41の顔の半径である。なお、X座標の基準は合成画像の左端であり、Y座標の基準は合成画像の上端であるものとして説明する。従って、合成画像の左上端の画素の座標は(0,0)となる。
本実施形態においては、人物31の顔(検出された顔)の中心の座標に基づいて、キャラクタ41の顔の中心の座標を定める。なお、図7において、太線で囲まれた部分が人物31若しくはキャラクタ41の顔を示す画像部分である。
図5のフローチャートの説明に戻る。
制御部10は、キャラクタの顔の中心のX座標を算出する(ステップS301)。具体的には、制御部10は、キャラクタ41の顔の中心のX座標Xcを式(1)により算出する。なお、キャラクタ41の顔の中心の座標の初期値は(Xc0,Yc0)である。従って、キャラクタ41の顔の中心のY座標はYc=Yc0である。
Xc=Xmax−Xf1 (1)
次に、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なるか否かを判別する(ステップS302)。具体的には、例えば、制御部10は、式(2)を満たすと判別した場合に、検出した顔とキャラクタの顔とが合成画像上で重なると判別する。
(Xf1−Xc)2+(Yf1−Yc)2<(Rf1+Rc)2 (2)
制御部10は、検出した顔とキャラクタの顔とが合成画像上で重ならないと判別した場合(ステップS302:NO)、キャラクタの顔が合成画像の画像領域からはみ出るか否かを判別する(ステップS303)。具体的には、例えば、制御部10は、式(3)〜(6)の少なくとも1つの式を満たすと判別した場合に、キャラクタの顔が合成画像の画像領域からはみ出ると判別する。
Xc+Rc>Xmax (3)
Xc<Rc (4)
Yc+Rc>Ymax (5)
Yc<Rc (6)
制御部10は、キャラクタの顔が合成画像の画像領域からはみ出ないと判別した場合(ステップS303:NO)、配置成功フラグをセットする(ステップS304)。具体的には、制御部10は、キャラクタ配置方法に対応付けられて記憶部23に記憶されている配置成功フラグを1にセットする。
一方、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なると判別した場合(ステップS302:YES)、若しくは、キャラクタの顔が合成画像の画像領域からはみ出ると判別した場合(ステップS303:YES)、配置成功フラグをクリアする(ステップS305)。具体的には、制御部10は、キャラクタ配置方法に対応付けられて記憶部23に記憶されている配置成功フラグを0にクリアする。
制御部10は、配置成功フラグのセット(ステップS304)、若しくは、配置成功フラグのクリア(ステップS305)を終了すると、左右均等配置用キャラクタ配置位置算出処理を終了する。
図4に示すフローチャートの説明に戻る。左右均等配置を実行しない(ステップS206:NO)、若しくは、左右均等配置用キャラクタ配置位置算出処理(ステップS207)を終了すると、制御部10は、左右隣接配置を実行するか否かを判別する(ステップS208)。具体的には、制御部10は、左右隣接配置に対応付けられて記憶部23に記憶されている優先度が−1でなく、且つ、当該優先度よりも優先度が高いキャラクタ配置方法に対応する配置成功フラグが1にセットされていない場合に、左右隣接配置を実行すると判別する。
制御部10は、左右隣接配置を実行すると判別すると(ステップS208:YES)、左右隣接配置用のキャラクタ配置位置算出処理を実行する(ステップS209)。左右隣接配置用のキャラクタ配置位置算出処理(ステップS209)については、図8に示すフローチャートを参照して詳細に説明する。なお、理解を容易にするため、左右隣接配置用のキャラクタ配置位置算出処理の説明においては、スルー画像からは1つの顔のみが検出されたものとして説明する。
まず、制御部10は、キャラクタを右に配置するか否かを判別する(ステップS401)。具体的には、制御部10は、記憶部23に記憶されている配置パラメータが右を示す情報であるか否かを判別する。
制御部10は、キャラクタを右に配置すると判別した場合(ステップS401:YES)、右配置用の計算式によりキャラクタの顔の中心のX座標を算出する(ステップS402)。具体的には、制御部10は、キャラクタ41の顔の中心のX座標Xcを式(7)により算出する。
Xc=Xf1+Rf1+Rc (7)
一方、制御部10は、キャラクタを右に配置しないと判別した場合(ステップS401:NO)、左配置用の計算式によりキャラクタの顔の中心のX座標を算出する(ステップS403)。具体的には、制御部10は、キャラクタ41の顔の中心のX座標Xcを式(8)により算出する。
Xc=Xf1−Rf1−Rc (8)
次に、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なるか否かを判別する(ステップS404)。
制御部10は、検出した顔とキャラクタの顔とが合成画像上で重ならないと判別した場合(ステップS404:NO)、キャラクタの顔が合成画像の画像領域からはみ出るか否かを判別する(ステップS405)。
制御部10は、キャラクタの顔が合成画像の画像領域からはみ出ないと判別した場合(ステップS405:NO)、配置成功フラグをセットする(ステップS406)。
一方、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なると判別した場合(ステップS404:YES)、若しくは、キャラクタの顔が合成画像の画像領域からはみ出ると判別した場合(ステップS405:YES)、配置成功フラグをクリアする(ステップS407)。
制御部10は、配置成功フラグのセット(ステップS406)、若しくは、配置成功フラグのクリア(ステップS407)を終了すると、左右隣接配置用キャラクタ配置位置算出処理を終了する。
ここで、図9(A)、(B)を参照して合成画像を説明する。
図9(A)は、キャラクタ配置方法が左右隣接配置であって、配置パラメータが右である場合に生成される合成画像の一例を示す図である。図9(A)に示すように、配置パラメータが右である場合は、人物31の顔の右端を示す画素のX座標とキャラクタ41の顔の左端を示す画素のX座標とがほぼ同じ値になるように、人物31の顔の右側にキャラクタ41の顔が隣接して並ぶように配置される。
一方、図9(B)は、キャラクタ配置方法が左右隣接配置であって、配置パラメータが左である場合に生成される合成画像の一例を示す図である。図9(B)に示すように、配置パラメータが左である場合は、人物31の顔の左端を示す画素のX座標とキャラクタ41の顔の右端を示す画素のX座標とがほぼ同じ値になるように、人物31の顔の左側にキャラクタ41の顔が隣接して並ぶように配置される。
図4に示すフローチャートの説明に戻る。制御部10は、左右隣接配置を実行しない(ステップS208:NO)、若しくは、左右隣接配置用キャラクタ配置位置算出処理(ステップS209)を終了すると、上下隣接配置を実行するか否かを判別する(ステップS210)。具体的には、制御部10は、上下隣接配置に対応付けられて記憶部23に記憶されている優先度が−1でなく、且つ、当該優先度よりも優先度が高いキャラクタ配置方法に対応する配置成功フラグが1にセットされていない場合に、上下隣接配置を実行すると判別する。
制御部10は、上下隣接配置を実行すると判別すると(ステップS210:YES)、上下隣接配置用のキャラクタ配置位置算出処理を実行する(ステップS211)。上下隣接配置用のキャラクタ配置位置算出処理(ステップS211)については、図10に示すフローチャートを参照して詳細に説明する。なお、理解を容易にするため、上下隣接配置用のキャラクタ配置位置算出処理の説明においては、スルー画像からは1つの顔のみが検出されたものとして説明する。
まず、制御部10は、キャラクタを下に配置するか否かを判別する(ステップS501)。具体的には、制御部10は、記憶部23に記憶されている配置パラメータが下を示す情報であるか否かを判別する。
制御部10は、キャラクタを下に配置すると判別した場合(ステップS501:YES)、下配置用の計算式によりキャラクタの顔の中心のY座標を算出する(ステップS502)。具体的には、制御部10は、キャラクタ41の顔の中心のY座標Ycを式(9)により算出する。
Yc=Yf1+Rf1+Rc (9)
一方、制御部10は、キャラクタを下に配置しないと判別した場合(ステップS501:NO)、上配置用の計算式によりキャラクタの顔の中心のY座標を算出する(ステップS503)。具体的には、制御部10は、キャラクタ41の顔の中心のY座標Ycを式(10)により算出する。
Yc=Yf1−Rf1−Rc (10)
次に、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なるか否かを判別する(ステップS504)。
制御部10は、検出した顔とキャラクタの顔とが合成画像上で重ならないと判別した場合(ステップS504:NO)、キャラクタの顔が合成画像の画像領域からはみ出るか否かを判別する(ステップS505)。
制御部10は、キャラクタの顔が合成画像の画像領域からはみ出ないと判別した場合(ステップS505:NO)、配置成功フラグをセットする(ステップS506)。
一方、制御部10は、検出した顔とキャラクタの顔とが合成画像上で重なると判別した場合(ステップS504:YES)、若しくは、キャラクタの顔が合成画像の画像領域からはみ出ると判別した場合(ステップS505:YES)、配置成功フラグをクリアする(ステップS507)。
制御部10は、配置成功フラグのセット(ステップS506)、若しくは、配置成功フラグのクリア(ステップS507)を終了すると、上下隣接配置用キャラクタ配置位置算出処理を終了する。
ここで、図11(A)、(B)を参照して合成画像を説明する。
図11(A)は、キャラクタ配置方法が左右隣接配置であって、キャラクタ画像が合成画像の画像領域からはみ出る場合に生成される合成画像の一例を示す図である。キャラクタ配置方法が左右隣接配置であって、式(4)を満たす場合は(Xc<Rc)は、図11(A)に示すように、キャラクタ画像が合成画像の画像領域からはみ出てしまう。このような場合に、キャラクタ配置方法として上下隣接配置が設定されていれば、図11(B)に示すように、キャラクタ画像が合成画像の画像領域からはみ出ないように合成画像を生成することができる。なお、図11(B)には、キャラクタ配置方法が上下隣接配置であって、配置パラメータが下である場合を示す。
図4に示すフローチャートの説明に戻る。制御部10は、上下隣接配置を実行しない(ステップS210:NO)、若しくは、上下隣接配置用キャラクタ配置位置算出処理(ステップS211)を終了すると、等間隔配置を実行するか否かを判別する(ステップS212)。具体的には、制御部10は、等間隔配置に対応付けられて記憶部23に記憶されている優先度が−1でなく、且つ、当該優先度よりも優先度が高いキャラクタ配置方法に対応する配置成功フラグが1にセットされていない場合に、等間隔配置を実行すると判別する。
制御部10は、等間隔配置を実行すると判別すると(ステップS212:YES)、等間隔配置用のキャラクタ配置位置算出処理を実行する(ステップS213)。等間隔配置用のキャラクタ配置位置算出処理(ステップS213)については、図12に示すフローチャートを参照して詳細に説明する。なお、理解を容易にするため、等間隔配置用のキャラクタ配置位置算出処理の説明においては、スルー画像からは5つの顔が検出され、そのうちの3つの顔がステップS204において顔認証されたものとして説明する。
まず、図13(A)、(B)を参照して合成画像を説明する。
図13(A)は、スルー画像の一例を示す図である。図13(A)に示す例では、スルー画像には人物31〜35をそれぞれが示す画像部分が含まれている。なお、人物31〜33は、ステップS204において顔認証された人物であり、人物34、35は、ステップS204において顔認証されなかった人物である。なお、図13(A)において、認証された顔を太線の実線で囲み、認証されなかった顔を太線の破線で囲んでいる。人物31の顔の中心の座標は(Xf1,Yf1)であり、人物32の顔の中心の座標は(Xf2,Yf2)であり、人物33の顔の中心の座標は(Xf3,Yf3)である。また、Rf1は人物31の顔の半径であり、Rf2は人物32の顔の半径であり、Rf3は人物33の顔の半径である。
図13(B)は、スルー画像にキャラクタ画像を合成することにより得られる合成画像の一例を示す図である。ここで、キャラクタ41の顔の中心の座標は(Xc,Yc)である。また、Rcは、キャラクタ41の顔の半径である。そして、d12は、顔認証された人物の中で左から1番目の人物31の顔と顔認証された人物の中で左から2番目の人物32の顔との間隔である。d23は、顔認証された人物の中で左から2番目の人物32の顔と顔認証された人物の中で左から3番目の人物33の顔との間隔である。dcは、顔認証された人物の中で最もキャラクタ41に近い人物31の顔とキャラクタ41の顔との間隔である。
図12のフローチャートの説明に戻る。
まず、制御部10は、左から1番目の人物の顔と左から2番目の人物の顔との間隔を算出する(ステップS601)。具体的には、制御部10は、顔認証された人物の中で左から1番目の人物31の顔と顔認証された人物の中で左から2番目の人物32の顔との間隔であるd12を式(11)により算出する。
d12=Xf2−Xf1−Rf2−Rf1 (11)
次に、制御部10は、左から2番目の人物の顔と左から3番目の人物の顔との間隔を算出する(ステップS602)。具体的には、制御部10は、顔認証された人物の中で左から2番目の人物の顔と顔認証された人物の中で左から3番目の人物の顔との間隔であるd23を式(12)により算出する。
d23=Xf3−Xf2−Rf3−Rf2 (12)
そして、制御部10は、キャラクタと最も近い人物の顔とキャラクタの顔との間隔を算出する(ステップS603)。具体的には、制御部10は、顔認証された人物の中で最もキャラクタ41に近い人物31の顔とキャラクタ41の顔との間隔であるdcを式(13)により算出する。
dc=(d12+d23)/2 (13)
そして、制御部10は、キャラクタを左に配置するか否かを判別する(ステップS604)。具体的には、制御部10は、記憶部23に記憶されている配置パラメータが左を示す情報であるか否かを判別する。
制御部10は、キャラクタを左に配置すると判別した場合(ステップS604:YES)、左配置用の計算式によりキャラクタの顔の中心のX座標を算出する(ステップS605)。具体的には、制御部10は、キャラクタ41の顔の中心のX座標Xcを式(14)により算出する。
Xc=Xf1−Rf1−Rc−dc (14)
一方、制御部10は、キャラクタを左に配置しないと判別した場合(ステップS604:NO)、右配置用の計算式によりキャラクタの顔の中心のX座標を算出する(ステップS606)。具体的には、制御部10は、キャラクタ41の顔の中心のX座標Xcを式(15)により算出する。
Xc=Xf3+Rf3+Rc+dc (15)
次に、制御部10は、認証された顔のいずれかとキャラクタの顔とが合成画像上で重なるか否かを判別する(ステップS607)。具体的には、例えば、制御部10は、式(16)〜(18)の少なくとも1つの式を満たすと判別した場合に、認証された顔とキャラクタの顔とが合成画像上で重なると判別する。
(Xf1−Xc)2+(Yf1−Yc)2<(Rf1+Rc)2 (16)
(Xf2−Xc)2+(Yf2−Yc)2<(Rf2+Rc)2 (17)
(Xf3−Xc)2+(Yf3−Yc)2<(Rf3+Rc)2 (18)
制御部10は、認証された顔のいずれともキャラクタの顔が合成画像上で重ならないと判別した場合(ステップS607:NO)、キャラクタの顔が合成画像の画像領域からはみ出るか否かを判別する(ステップS608)。
制御部10は、キャラクタの顔が合成画像の画像領域からはみ出ないと判別した場合(ステップS608:NO)、配置成功フラグをセットする(ステップS609)。
一方、制御部10は、認証された顔のいずれかとキャラクタの顔とが合成画像上で重なると判別した場合(ステップS607:YES)、若しくは、キャラクタの顔が合成画像の画像領域からはみ出ると判別した場合(ステップS608:YES)、配置成功フラグをクリアする(ステップS610)。
制御部10は、配置成功フラグのセット(ステップS609)、若しくは、配置成功フラグのクリア(ステップS610)を終了すると、等間隔配置用キャラクタ配置位置算出処理を終了する。
図4に示すフローチャートの説明に戻る。制御部10は、等間隔配置を実行しない(ステップS212:NO)、若しくは、等間隔配置用キャラクタ配置位置算出処理(ステップS213)を終了すると、非登録顔置換配置を実行するか否かを判別する(ステップS214)。具体的には、制御部10は、非登録顔置換配置に対応付けられて記憶部23に記憶されている優先度が−1でなく、且つ、当該優先度よりも優先度が高いキャラクタ配置方法に対応する配置成功フラグが1にセットされていない場合に、非登録顔置換配置を実行すると判別する。
制御部10は、非登録顔置換配置を実行すると判別すると(ステップS214:YES)、非登録顔置換配置用のキャラクタ配置位置算出処理を実行する(ステップS215)。非登録顔置換配置用のキャラクタ配置位置算出処理(ステップS215)については、図14に示すフローチャートを参照して詳細に説明する。なお、理解を容易にするため、非登録顔置換配置用のキャラクタ配置位置算出処理の説明においては、スルー画像からは5つの顔が検出され、そのうちの3つの顔がステップS204において顔認証され、顔認証されなかった2つの顔のうち1つの顔がステップS205においてカメラ目線であると判別されたものとして説明する。
まず、図15(A)、(B)を参照して合成画像を説明する。
図15(A)は、スルー画像の一例を示す図である。図15(A)に示す例では、スルー画像には人物31〜35をそれぞれが示す画像部分が含まれている。なお、人物31〜33は、ステップS204において顔認証された人物であり、人物34、35は、ステップS204において顔認証されなかった人物である。また、人物34は、ステップS205においてカメラ目線であると判別された人物である。なお、図15(A)において、認証された顔を太線の実線で囲み、認証されなかった顔のうちカメラ目線である顔を太線の破線で囲んでいる。
図15(B)は、スルー画像にキャラクタ画像を合成することにより得られる合成画像の一例を示す図である。人物34の顔の中心の座標は(Xd1,Yd1)である。そして、キャラクタ41の顔の中心の座標は(Xc,Yc)である。
図14のフローチャートの説明に戻る。
まず、制御部10は、認証されない顔のうちカメラ目線である顔の中心の座標を取得する(ステップS701)。具体的には、制御部10は、ステップS204において顔認証された人物の中でステップS205においてカメラ目線であると判別された人物34の顔の中心の座標である(Xd1,Yd1)を記憶部23から読み出す。
そして、制御部10は、キャラクタの顔の中心の座標を算出する(ステップS702)。具体的には、制御部10は、キャラクタの顔の中心の座標を式(19)、(20)により算出する。すなわち、人物34の顔の中心の座標をキャラクタの顔の中心の座標とする。
Xc=Xd1 (19)
Yc=Yd1 (20)
次に、制御部10は、認証された顔のいずれかとキャラクタの顔とが合成画像上で重なるか否かを判別する(ステップS703)。
制御部10は、認証された顔のいずれともキャラクタの顔が合成画像上で重ならないと判別した場合(ステップS703:NO)、キャラクタの顔が合成画像の画像領域からはみ出るか否かを判別する(ステップS704)。
制御部10は、キャラクタの顔が合成画像の画像領域からはみ出ないと判別した場合(ステップS704:NO)、配置成功フラグをセットする(ステップS705)。
一方、制御部10は、認証された顔のいずれかとキャラクタの顔とが合成画像上で重なると判別した場合(ステップS703:YES)、若しくは、キャラクタの顔が合成画像の画像領域からはみ出ると判別した場合(ステップS704:YES)、配置成功フラグをクリアする(ステップS706)。
制御部10は、配置成功フラグのセット(ステップS705)、若しくは、配置成功フラグのクリア(ステップS706)を終了すると、非登録顔置換配置用キャラクタ配置位置算出処理を終了する。
制御部10は、非登録顔置換配置を実行しない(ステップS214:NO)、若しくは、非登録顔置換配置用キャラクタ配置位置算出処理(ステップS215)を終了すると、キャラクタ配置位置算出処理(ステップS109)を終了する。
図4に示すフローチャートの説明に戻る。次に、制御部10は、スルー画像とキャラクタ画像とを合成して合成画像を生成する(ステップS110)。具体的には、制御部10は、画像合成部21を制御して、画像処理部16により生成された画像データにより示されるスルー画像と、CG生成部20により生成されたCGを変換して得られたキャラクタ画像とを合成し、合成画像を示す画像データを生成する。なお、CGは三次元の仮想空間上のものであるため、スルー画像と合成するのはキャラクタ画像である。
そして、制御部10は、合成画像を表示する(ステップS111)。具体的には、制御部10は、ステップS110で生成した合成画像を表示部25に供給することにより、合成画像を表示部25に表示する。なお、ステップS103においてキャラクタが選択されるまでは、制御部10は、合成画像を表示する代わりにスルー画像を表示する。なお、表示する合成画像は、キャラクタ配置位置算出処理(ステップS109)において図面を参照して説明したため、ここでの説明は省略する。
次に、制御部10は、シャッターボタンが押圧されているか否かを判別する(ステップS112)。具体的には、制御部10は、操作部24を監視することにより、ユーザによりシャッターボタンが押されているか否かを判別する。制御部10は、シャッターボタンが押圧されていないと判別した場合(ステップS112:NO)、スルー画像を取得する処理(ステップS101)に処理を戻す。一方、制御部10は、シャッターボタンが押圧されていると判別した場合(ステップS112:YES)、合成画像を圧縮する(ステップS113)。制御部10は、合成画像を表現する画像データを圧縮して、JPEG(Joint Photographic Experts Group)形式、或いは、GIF(Graphic Interchange Format)形式の画像データを生成する。
そして、制御部10は、合成画像を保存する(ステップS114)。具体的には、制御部10は、ステップS113において圧縮された画像データを記憶部23に記憶する。
制御部10は、合成画像の保存(ステップS114)を終了すると、スルー画像を取得する処理(ステップS101)に処理を戻す。以下、制御部10は、撮像装置100の電源がオフになるまで、上述した処理を繰り返す。
ここで、図16(A)、(B)を参照して、合成画像の記録形式について説明する。図16(A)に示す例では、合成画像は、ヘッダーと、圧縮された合成画像とから構成される。このように、合成画像を記録することにより、一般的な画像処理装置において合成画像を編集することができる。
一方、図16(B)に示す例では、合成画像は、ヘッダーと、キャラクタ配置座標と、キャラクタサイズと、キャラクタ生成情報と、圧縮されたスルー画像(圧縮された撮像画像)とから構成される。このように、キャラクタ配置座標、キャラクタサイズ、キャラクタ生成情報、などのキャラクタを生成するための情報と、圧縮されたスルー画像とを分離して保存することにより、後にキャラクタの配置位置や大きさなどを編集することが可能となる。
以上、説明したように、本実施形態にかかる撮像装置100によれば、撮像した画像の適切な位置にキャラクタ画像を合成することができる。より詳細には、登録済の被写体と非登録の被写体とを区別してキャラクタを配置することにより、撮像者の意に叶った合成画像を生成することができる。
また、種々のキャラクタ配置方法を組み合わせることにより、撮像領域における被写体(人物の顔)の位置や大きさなどに応じた柔軟なキャラクタ(動物のキャラクタ)の配置が可能となる。すなわち、優先して実行させたいキャラクタ配置方法におけるキャラクタ配置が失敗した場合(キャラクタが被写体と重なる、キャラクタが撮像領域内に収まらない場合など)、次に優先して実行させたいキャラクタ配置方法におけるキャラクタ配置を実行できる。なお、各キャラクタ配置方法におけるキャラクタ配置を単独で実行した場合であっても、以下に示すような効果がある。
例えば、左右均等配置では、被写体とキャラクタとが撮像領域内で左右均等に配置されるため、バランスの良い合成画像を生成することができる。
例えば、左右隣接配置では、被写体とキャラクタとが撮像領域内で左右に隣接して配置されるため、あたかも被写体とキャラクタとが一緒に撮像されているような合成画像を生成することができる。
例えば、上下隣接配置では、被写体とキャラクタとが撮像領域内で上下に隣接して配置されるため、あたかも被写体とキャラクタとが一緒に撮像されているような合成画像を生成することができる。特に、被写体の左右方向の位置とキャラクタの左右方向の位置とが近い場合、あたかも被写体がキャラクタとが一緒に撮像されているような合成画像を生成することができる。
例えば、等間隔配置では、複数の被写体とキャラクタとが撮像領域内で等間隔に並んで配置されるため、あたかもキャラクタが複数の被写体と一緒に並んで撮像されているような合成画像を生成することができる。
例えば、非登録顔置換配置では、非登録の被写体に重なるようにキャラクタが配置される。このため、撮像したくない被写体(非登録の被写体)を撮像してしまった場合に、撮像したくなかった被写体にキャラクタを重ねて、当該被写体が表示されないように合成画像を生成することができる。特に撮像したくない被写体(登録されていない被写体)の視線が撮像装置の方を向いていた場合(カメラ目線であった場合)、撮像したい人物(登録されている被写体)と一緒に撮像しているような不自然な合成画像ができてしまう。このような場合に、非登録の被写体のうちカメラ目線である被写体にキャラクタが重なるように構成することにより、自然な合成画像を生成することができる。
(変形例)
本発明は、上記実施形態において示したものに限定されず、様々な変形が可能である。
上記実施形態では、非登録顔置換配置において、非登録の顔(非登録の被写体)のうちカメラ目線である顔のみにキャラクタの顔を重ねるように合成画像を生成した。しかし、全ての非登録の顔にキャラクタを重ねるようにしてもよい。ここでは、スルー画像が、図17(A)に示すように、顔認証された人物31〜33と、顔認証されなかった人物34、35とがスルー画像に含まれ、人物34がカメラ目線であり人物35がカメラ目線でない場合について説明する。
人物35は、カメラ目線でないが顔認証されなかった人物である。従って、撮像装置100は、非登録顔置換配置において、人物34の顔だけでなく人物35の顔にもキャラクタが重なるように合成画像を生成する。
また、上記実施形態においては、各キャラクタ配置方法におけるキャラクタ配置を別々に説明した。しかし、複数のキャラクタ配置方法におけるキャラクタ配置を実行するようにしてもよい。例えば、図17(B)に示すように、等間隔配置におけるキャラクタ配置と、非登録顔置換配置におけるキャラクタ配置とを共に実行してもよい。また、図17(B)に示すように、キャラクタは同じキャラクタでなく、異なるキャラクタを用いても良い。
上記実施形態では、非登録顔置換配置において、スルー画像中から検出された顔のうちどの顔が撮像対象の顔であるか否かを判別するために、スルー画像とあらかじめ記憶部23に記憶されている複数の顔画像とを比較することにより顔認証を行う手法を示した。しかしながら、撮像対象の顔であるか否かを判別する手法は、この方法に限られない。
例えば、撮像対象の顔の人物には、所定のパターンで点滅する発光機器を身につけさせた状態で撮像する。そして、制御部10は、スルー画像中で所定のパターンで点滅する画像部分があるか否かを検出し、スルー画像上で当該画像部分から所定の距離以内の顔を撮像対象の顔であると判別する。
ここでは、スルー画像が、図18(A)に示すように、撮像対象の顔の人物31、32、34と、撮像対象でない顔の人物33、35とがスルー画像に含まれ、撮像対象の顔の人物31、32、34はそれぞれ発光機器51を身につけている場合について説明する。なお、図18(A)において、撮像対象の顔を太線の実線で囲み、撮像対象でない顔を太線の破線で囲んでいる。
制御部10は、ステップS204において検出した顔の顔認証を実行する代わりに、検出した顔の人物が発光機器51を身につけているか否かを判別する処理を実行する。具体的には、まず、制御部10は、スルー画像に含まれている発光機器51を検出し、検出した発光機器51の中心の座標を検出する。そして、制御部10は、検出した顔の中心と検出した発光機器51の中心とのスルー画像上での距離を求める。制御部10は、検出した顔のうち、顔の中心と発光機器51の中心とのスルー画像上での距離が所定の距離以内である顔を発光機器51を身につけている人物の顔であると判別する。以降の処理では、発光機器51を身につけている人物の顔であると判別した顔を、撮像対象の顔であるものとして取り扱う。
なお、所定のパターンで点滅する発光機器51を検出するためには、当該所定のパターンに対応する時間間隔でスルー画像を複数回抽出し、時間経過と共に輝度が大きく変化する部分を検出すればよい。
また、撮像対象の顔であるか否かを判別するために、撮像対象の顔の人物に持たせるのは、所定のパターンで点滅する発光機器に限られず、継続して点灯する発光機器であってもよいし、発光機器でなくてもよい。なお、スルー画像から継続して点灯する発光機器を検出する場合は、輝度が高い画像部分を検出すればよい。撮像対象の顔の人物に持たせるものが発光機器でない場合は、特徴のある形状、模様などを有するものであることが望ましい。
このように、撮像対象の顔の人物に所定のパターンで点滅する発光機器等を持たせることにより、顔認証など複雑な処理を行うことなく撮像対象の顔を特定することができる。
上記実施形態では、キャラクタは動物のキャラクタであり、被写体は人物の顔である場合について説明した。しかしながら、キャラクタは、動物に限られず、物品や文字など、画像と認識できるものであれば何でもよい。また、被写体も、人物の顔に限られず、人物、動物、植物、建築物など何でもよい。
上記実施形態では、キャラクタの頭の中心の座標、キャラクタの頭の半径、人物の頭の中心の座標、人物の頭の半径などに基づいて、キャラクタを配置する位置を決定する例を示した。これは、キャラクタが動物であり、被写体が人物の頭であるためであり、頭の位置や大きさを重視してキャラクタを配置することが望ましいと考えられるためである。しかしながら、キャラクタ全体の中心の座標、キャラクタ全体の大きさなどに基づいて、キャラクタを配置する位置を決定するように構成してもよい。また、人物そのものを被写体として、人物の中心の座標、人物の大きさなどに基づいて、キャラクタを配置する位置を決定するように構成してもよい。さらに、キャラクタや被写体の大きさは、半径でなく面積で定義してもよいし、形状などを考慮して定義してもよい。
上記実施形態では、左右均等配置、左右隣接配置、及び、上下隣接配置においては、スルー画像中に検出された顔が1つである場合にのみ、キャラクタ配置が成功するものとして説明した。しかしながら、検出された顔が複数ある場合でもキャラクタ配置が可能となるように構成してもよい。この場合、例えば、配置パラメータとして、左から何番目の顔をキャラクタ配置の基準とするかを示す情報を設定するように構成する。
上記実施形態では、撮像装置100が静止画像を撮像する場合について説明したが、動画像を撮像する場合にも本発明を適用することができる。また、本発明は、撮像装置だけでなく、あらゆる画像処理装置に適用することができる。
さらに、本発明は、上述した構成例やフローチャートに示される手順に限定されないことは勿論である。
上記実施形態では、プログラムが、記憶装置に予め記憶されているものとして説明した。しかし、撮像装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
10・・・制御部、11・・・光学系、12・・・光学系制御部、13・・・光学系駆動部、14・・・撮像素子、15・・・A/D変換器、16・・・画像処理部、17・・・画像処理メモリ、18・・・フラッシュ制御部、19・・・フラッシュ発光部、20・・・CG生成部、21・・・画像合成部、22・・・画像合成メモリ、23・・・記憶部、24・・・操作部、25・・・表示部、26・・・電源制御部、31、32、33、34、35・・・人物、41、42、43・・・キャラクタ、51・・・発光機器、100・・・撮像装置