以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の画像処理装置は、第1に、それぞれの画像に含まれる顔の画像である顔画像を検出するとともに、検出された前記顔画像の顔の方向を検出する検出手段(例えば、図3の顔検出部32)と、前記画像を順に切り替えて表示する場合、前記顔画像に応じた、画像の切り替えの効果を適用した前記画像の表示を制御する表示制御手段(例えば、図3の表示制御部36)とを備え、前記表示制御手段は、表示する前記画像に含まれる前記顔画像の顔の方向が正面を向いていない場合に、前記顔の方向にスライドインする前記効果を適用する。
本発明の一側面の画像処理装置は、第2に、前記検出手段が、それぞれの前記画像に含まれる前記顔画像の数も検出し、画像処理装置に、予め記憶されている前記画像のうち、1つ以上の前記顔画像が検出された前記画像を読み出すように前記画像の読み出しを制御する読み出し制御手段(例えば、図3の読み出し制御部35)をさらに設け、前記表示制御手段が、読み出された前記画像の表示を制御することができる。
本発明の一側面の画像処理装置は、第3に、少なくとも前記顔画像の数と前記顔の方向を、前記画像の属性情報として前記画像と関係付けて、前記画像とともに記憶する記憶手段(例えば、図3の画像データベース31と顔情報データベース33)をさらに設け、前記表示制御手段は、前記記憶手段から読み出された前記属性情報に応じた、画像の切り替えの効果を適用した前記画像の表示を制御することができる。
本発明の一側面の画像処理方法またはプログラムは、それぞれの画像に含まれる顔の画像である顔画像を検出するとともに、検出された前記顔画像の顔の方向を検出する検出ステップ(例えば、図4のステップS31乃至ステップS38)と、前記画像を順に切り替えて表示する場合、前記顔画像に応じた、画像の切り替えの効果を適用した前記画像の表示を制御する表示制御ステップ(例えば、図8のステップS56)とを含み、前記表示制御ステップの処理は、表示する前記画像に含まれる前記顔画像の顔の方向が正面を向いていない場合に、前記顔の方向にスライドインする前記効果を適用する。
図1は、本発明の一実施の形態のパーソナルコンピュータを説明する図である。画像1は、デジタルスチルカメラ、携帯電話機、デジタルスキャナ、携帯情報端末装置などの被写体を撮影する撮影装置によって撮影された静止画像である。1または複数の画像1は、画像データとして、パーソナルコンピュータ2に供給される。
ここで、画像データとしての画像1は、ビットマップ方式、JPEG(Joint Photographic Experts Group)方式、JPEG2000方式、GIF(Graphics Interchange Format)、またはTIFF(Tagged Image File Format)などとすることができる。
パーソナルコンピュータ2は、画像1のそれぞれから顔(の画像)を検出し、画像1のそれぞれに、顔の検出の結果を示す顔検出情報3のそれぞれを関係付ける。
図2は、パーソナルコンピュータ2の構成の例を示すブロック図である。CPU(Central Processing Unit)11は、ROM(Read Only Memory)12、または記憶部18に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)13には、CPU11が実行するプログラムやデータなどが適宜記憶される。これらのCPU11、ROM12、およびRAM13は、バス14により相互に接続されている。
なお、CPU11として、”Cell誕生”、日経エレクトロニクス、日経BP社、2005年2月28日、89頁乃至117頁に記載されているCellを採用することができる。
CPU11にはまた、バス14を介して入出力インターフェース15が接続されている。入出力インターフェース15には、キーボード、マウス、マイクロホン、静止画像を撮影する撮影部などよりなる入力部16、ディスプレイ、スピーカなどよりなる出力部17が接続されている。CPU11は、入力部16から入力される指令に対応して各種の処理を実行する。そして、CPU11は、処理の結果を出力部17に出力する。
入出力インターフェース15に接続されている記憶部18は、例えばハードディスクからなり、CPU11が実行するプログラムや各種のデータを記憶する。通信部19は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部19を介してプログラムを取得し、記憶部18に記憶してもよい。
入出力インターフェース15に接続されているドライブ20は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア21が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部18に転送され、記憶される。
図3は、プログラムを実行するパーソナルコンピュータ2において実現される、機能の構成の例を示すブロック図である。プログラムを実行するパーソナルコンピュータ2において、画像データベース31、顔検出部32、顔情報データベース33、読み出し条件設定部34、読み出し制御部35、および表示制御部36が実現される。
画像データベース31は、外部の装置によって撮影され、入力部16によって入力された画像1を画像データとしてを記憶する。画像データベース31は、記憶している画像1を顔検出部32または読み出し制御部34に供給する。
例えば、画像データベース31は、ハードディスクである記憶部18への、画像1の画像データとしての記憶を管理し、画像1を画像データとして、記憶部18に記憶させたり、記憶部18に画像データとして記憶されている画像1を読み出す。
顔検出部32は、それぞれの画像1に含まれる顔の画像を検出する。例えば、顔検出部32は、画像データベース31から供給された画像データとしての画像1に含まれる顔の画像を検出する。顔検出部32は、検出した顔の画像についての情報である顔検出情報3を顔情報データベース33に供給する。
顔情報データベース33は、それぞれの画像1と、それぞれの画像1から検出された顔の画像についての顔検出情報3とを関係付ける。例えば、顔情報データベース33は、それぞれの画像1と顔検出情報3とを関係付けて、記憶する。
なお、顔情報データベース33は、顔検出情報3が記憶部18に記憶されるように構成される。
読み出し条件設定部34は、キーボードまたはマウスなどからなる入力部16への使用者による操作に応じた入力部16からの信号を基に、画像1を読み出す条件を設定する。読み出し条件設定部34は、設定した条件を読み出し制御部35に供給する。
読み出し制御部35は、読み出し条件設定部34から供給された、設定された条件、および顔情報データベース33に記憶されている顔検出情報3に基づいて、顔情報データベース33からの画像1の読み出しを制御する。読み出し制御部35は、読み出した画像1を表示制御部36に供給する。
表示制御部36は、読み出し制御部35から供給された画像1をディスプレイとしての出力部17に表示させるように画像1の表示を制御する。表示制御部36は、判定部51およびエフェクト適用部52を備える。
判定部51は、顔情報データベース33に記憶されている顔検出情報3を基に、表示する画像1に含まれる顔の画像が所定の条件を満たすか否かを判定する。
エフェクト適用部52は、判定部51による判定の結果に対応した表示の効果を、表示する画像1に適用する。
図4は、顔の検出の処理を説明するフローチャートである。ステップS31において、顔検出部32は、画像データベース31から画像1を入力し、入力された画像1から顔の画像を検出する。
例えば、ステップS31において、顔検出部32は、画像データベース31から、図5に例示される画像1を入力し、入力された画像1から顔の画像を検出する。
より具体的には、例えば、顔検出部32は、ステップS31において、画像1の画素のうち、人の肌の色に対応する所定の色の範囲に属する色を示す画素値を有する画素を特定する。そして、顔検出部32は、色によって特定された画素のうち、所定の数以上、相互に隣接している画素により構成される領域を顔の画像とする。
ステップS32において、顔検出部32は、ステップS31の処理で検出された顔の画像の数を数える。すなわち、ステップS32において、顔検出部32は、それぞれの画像1に含まれる顔の画像の数を検出する。
ステップS33において、顔検出部32は、1つ以上の顔の画像が検出されたか否かを判定し、1つ以上の顔の画像が検出されたと判定された場合、ステップS34に進み、検出された顔の画像のうちの、1つの顔の画像を選択する。
ステップS35において、顔検出部32は、選択された顔の画像について、画像1における顔の位置を検出する。
例えば、ステップS35において、顔検出部32は、画像1の全体の高さおよび全体の幅をそれぞれ1とした場合、画像1における顔の画像の位置として、画像1の全体に対する相対的な、顔の画像の縦方向の位置および横方向の位置を検出する。
ステップS36において、顔検出部32は、選択された顔の画像について、顔の画像の大きさを検出する。
例えば、ステップS36において、顔検出部32は、画像1の全体の高さおよび全体の幅をそれぞれ1とした場合、画像1における顔の画像の大きさとして、画像1の全体に対する相対的な、顔の画像の高さおよび幅を検出する。
ステップS37において、顔検出部32は、選択された顔の画像について、顔の向きを検出する。なお、詳細は後述するが、ステップS37において、顔検出部32は、顔の向きとして、顔のロール角、ピッチ角、およびヨー角を検出する。
例えば、ステップS37において、顔検出部32は、予め定義されている、想定される顔の方向ごとの複数のパターンと、選択された顔の画像と一致するか否かを判定し、顔の向きを、顔の画像と一致するパターンに対応する向きとすることで、顔の向きを検出する。
ステップS38において、顔検出部32は、総ての顔の画像を選択したか否かを判定し、総ての顔の画像を選択していないと判定された場合、ステップS34に進み、次の顔の画像を選択して、上述した処理を繰り返す。
このように、例えば、顔検出部32は、画像データベース31に格納されている画像1のそれぞれについて、顔の画像を検出して、さらに、顔の画像の数を検出し、顔の画像のそれぞれの位置、顔の画像のそれぞれの大きさ、顔の画像のそれぞれにおける顔の向きを検出する。
ステップS38において、総ての顔の画像を選択したと判定された場合、ステップS39に進み、顔検出部32は、検出した顔の画像の数、およびそれぞれの顔の画像についての、顔の位置、顔の大きさ、顔の向きを示す顔検出情報3を出力し、顔情報データベース33は、画像1とその顔検出情報3とを関係付けて、その顔検出情報3を記憶して、処理は終了する。
例えば、顔検出部32は、図5に例示される画像1に対して、図6に示される例の顔検出情報3を出力する。顔検出情報3は、例えば、XML(eXtensible Mark-up Language)方式で記述される。
<photo>タグおよび</photo>タグの間には、画像1との関係付けを示す情報および顔の画像に関する情報が配置される。
<filepath>タグおよび</filepath>タグの間に配置されているC:\hoge\hoge.jpgは、図6に例示される顔検出情報3が、Cドライブ(との名前を付された記録媒体)のルートフォルダの下の、hogeであるフォルダ名のフォルダに格納されている、hoge.jpgであるファイル名のファイルに格納されている画像データである画像1と関係付けられていることを示す。
<Faceinfo>タグおよび</Faceinfo>タグの間には、hoge.jpgであるファイル名のファイルに格納されている画像データである画像1に関する情報が配置される。すなわち、<Faceinfo>タグおよび</Faceinfo>タグの間には、hoge.jpgであるファイル名のファイルに格納されている画像データである画像1に含まれる顔の画像に関する情報が配置される。
<TotalFace>タグおよび</TotalFace>タグの間に配置されている1は、hoge.jpgであるファイル名のファイルに格納されている画像データである画像1に含まれる顔の画像の数が1つであることを示す。すなわち、<TotalFace>タグおよび</TotalFace>タグの間に配置されている値は、画像1に含まれる顔の画像の総数を示す。
<FaceEntry>タグおよび</FaceEntry>タグの間には、1つの顔の画像についての情報が配置される。図6に例示される顔検出情報3における顔の画像の総数が1なので、1組の<FaceEntry>タグおよび</FaceEntry>タグが配置されることになる。
<x>タグおよび</x>タグの間に配置されている値は、画像1における顔の画像の横方向の位置を示す。図6において、<x>タグおよび</x>タグの間に配置されている0.328767は、画像1の左端を0.0とし、画像1の右端を1.0とした場合に、顔の画像の右端の横方向の位置が、0.328767であることを示す。
<y>タグおよび</y>タグの間に配置されている値は、画像1における顔の画像の縦方向の位置を示す。図6において、<y>タグおよび</y>タグの間に配置されている0.204082は、画像1の上端を0.0とし、画像1の下端を1.0とした場合に、顔の画像の上端の縦方向の位置が、0.204082であることを示す。
すなわち、<x>タグおよび</x>タグの間には、顔の画像の正規化された横方向の位置が配置され、<y>タグおよび</y>タグの間には、顔の画像の正規化された縦方向の位置が配置される。
<width>タグおよび</width>タグの間に配置されている値は、画像1における顔の画像の幅(横方向のサイズ)を示す。図6において、<width>タグおよび</width>タグの間に配置されている0.408163は、画像1の幅を1.0とした場合に、顔の画像の幅が、0.408163であることを示す。
<height>タグおよび</height>タグの間に配置されているは、画像1における顔の画像の高さ(縦方向のサイズ)を示す。図6において、<height>タグおよび</height>タグの間に配置されている0.273973は、画像1の高さを1.0とした場合に、顔の画像の高さが、0.273973であることを示す。
すなわち、<width>タグおよび</width>タグの間には、顔の画像の正規化された幅が配置され、<height>タグおよび</height>タグの間には、顔の画像の正規化された高さが配置される。
<roll>タグおよび</roll>タグの間に配置されている値は、顔の画像における顔のロール角を示す。図6において、<roll>タグおよび</roll>タグの間に配置されている0.000000は、顔の画像における顔のロール角が、0.000000度であることを示す。
<pitch>タグおよび</pitch>タグの間に配置されている値は、顔の画像における顔のピッチ角を示す。図6において、<pitch>タグおよび</pitch>タグの間に配置されている0.000000は、顔の画像における顔のピッチ角が、0.000000度であることを示す。
<yaw>タグおよび</yaw>タグの間に配置されている値は、顔の画像における顔のヨー角を示す。図6において、<yaw>タグおよび</yaw>タグの間に配置されている0.000000は、顔の画像における顔のヨー角が、0.000000度であることを示す。
ここで、図7で示されるように、ロール角は、顔の前後方向の位置を示す前後軸(x軸)の周りの移動角である。ピッチ角は、顔の左右方向の位置を示す横軸(y軸)の周りの移動角である。ヨー角は、顔の上下方向の位置を示す垂直軸(z軸)の周りの移動角である。
ステップS33において、1つ以上の顔の画像が検出されていないと判定された場合、ステップS39に進み、顔検出部32は、検出した顔の画像の数が0であることを示す顔検出情報3を出力して、顔情報データベース33は、画像1とその顔検出情報3とを関係付けて、その顔検出情報3を記憶して、処理は終了する。
図4を参照して説明した顔の検出の処理は、それぞれの画像1に適用され、それぞれの画像1について、顔の画像が検出される。その結果、それぞれの画像1について、検出した顔の画像の数、およびそれぞれの顔の画像についての、顔の位置、顔の大きさ、顔の向きを示す顔検出情報3が画像1に関係付けられて、顔情報データベース33に記憶される。
顔検出情報3は、画像1とは別に、顔情報データベース33に記録されると説明したが、Exifの規格に準拠した画像1のデータの付加情報として、画像1を格納するファイルに格納するようにしてもよい。
顔検出情報3を用いることで、例えば、図8で示されるように、画像1における顔の画像の範囲を表示することができるようになる。
図9は、表示の処理を説明するフローチャートである。ステップS51において、読み出し条件設定部34は、使用者による操作に応じた入力部16からの信号またはROM12またはRAM13に予め記憶されているモードを示すデータを基に、顔の画像が検出された画像1である顔検出画像のみを表示するモードであるか否かを判定し、顔検出画像のみを表示するモードであると判定された場合、ステップS52に進み、読み出す画像1の顔の数を1以上に設定する。例えば、ステップS52において、読み出し条件設定部34は、読み出し制御部35に、読み出す画像1の顔の数が1以上であることを示す値を書き込むことで、読み出す画像1の顔の数を1以上に設定する。
ステップS51において、顔検出画像のみを表示するモードでないと判定された場合、ステップS53に進み、読み出し条件設定部34は、使用者による操作に応じた入力部16からの信号またはROM12またはRAM13に予め記憶されているモードを示すデータを基に、顔の画像が検出されていない画像1である非顔検出画像のみを表示するモードであるか否かを判定する。ステップS53において、非顔検出画像のみを表示するモードであると判定された場合、ステップS54に進み、読み出し条件設定部34は、読み出す画像1の顔の数を0に設定する。例えば、ステップS54において、読み出し条件設定部34は、読み出し制御部35に、読み出す画像1の顔の数が0であることを示す値を書き込むことで、読み出す画像1の顔の数を0に設定する。
ステップS53において、非顔検出画像のみを表示するモードでないと判定された場合、総ての画像を表示するモードなので、ステップS55に進み、読み出し条件設定部34は、読み出す画像1の顔の数を0以上に設定する。例えば、ステップS55において、読み出し条件設定部34は、読み出し制御部35に、読み出す画像1の顔の数が0以上であることを示す値を書き込むことで、読み出す画像1の顔の数を0以上に設定する。
ステップS56において、スライドショーの処理が実行され、処理は終了する。
このように、読み出す画像1の顔の数を1以上、0、または0以上のいずれかに設定することで、スライドショーにおいて、顔検出情報3を基に、画像1を選別することで、顔の画像が検出されている画像1に限定して表示したり、顔の画像が検出されていない風景画である画像1に限定して表示したり、全部の画像1を表示したりすることができる。
なお、使用者による操作に応じて内部処理で、読み出す画像1の顔の数を1以上、0、または0以上のいずれかに設定すると説明したが、図10で示されるように、顔検出画像のみを表示するモードである場合、読み出す画像1の顔の数を1以上とし、非顔検出画像のみを表示するモードである場合、読み出す画像1の顔の数を0とし、全ての画像1を表示するモードである場合、読み出す画像1の顔の数を0以上とすることを示す設定ファイルを予め記憶しておいて、スライドショーを開始するときに、この設定ファイルを読み込んで、設定ファイルおよび顔検出情報3を基に、画像1を選別するようにしてもよい。
図11は、図9のステップS56に対応するスライドショーの処理の詳細を説明するフローチャートである。ステップS71において、読み出し制御部35は、画像1の表示の順序を決める。
すなわち、例えば、ステップS71において、読み出し制御部35は、顔情報データベース33から、それぞれの画像1の顔検出情報3を読み出す。読み出し制御部35は、それぞれの画像1の顔検出情報3および設定された読み出す画像1の顔の数を基に、表示する画像1を決定する。
より具体的には、読み出し制御部35は、読み出す画像1の顔の数が1以上に設定されている場合には、顔検出情報3で示される顔の数が1以上である画像1を、表示する画像1と決定し、読み出す画像1の顔の数が0に設定されている場合には、顔検出情報3で示される顔の数が0である画像1を、表示する画像1と決定し、読み出す画像1の顔の数が0以上に設定されている場合には、顔検出情報3で示される顔の数が0以上である画像1(すなわち全ての画像1)を、表示する画像1と決定する。
そして、読み出し制御部35は、決定された表示する画像1の表示する順序を決める。より具体的には、例えば、読み出し制御部35は、Exifの規格に準拠した画像1のデータの付加情報として、画像1を格納するファイルに格納されている撮影された日付の順に表示させるように、決定された表示する画像1の表示する順序を決める。また、例えば、読み出し制御部35は、画像1の名前を基に、決定された表示する画像1の表示する順序を決める。
ステップS72において、読み出し制御部35は、決められた順序で、画像データベース31から、1つの画像1を読み出す。読み出し制御部35は、読み出した画像1を表示制御部36に供給する。ステップS73において、読み出し制御部35は、顔情報データベース33から、ステップS72の処理で読み出した画像1に関係付けられている顔検出情報3を読み出す。読み出し制御部35は、読み出した顔検出情報3を表示制御部36に供給する。
このように、顔情報データベースに格納されている顔検出情報3を用いて画像1がフィルタリングされ、スライドショーに用いる画像1が選別される。
ステップS74において、表示制御部36の判定部51は、読み出し制御部35から供給された画像1があるかを基に、次に表示する画像1があるか否かを判定する。ステップS74において、読み出し制御部35から供給された画像1があるので、次に表示する画像1があると判定された場合、ステップS75に進み、判定部51は、画像1に関係付けられている顔検出情報3に示されている顔の画像の数から、顔の数が1つであるか否かを判定する。
ステップS75において、顔の数が1つであると判定された場合、ステップS76に進み、判定部51は、画像1に関係付けられている顔検出情報3に示されている顔の向きを基に、顔が正面を向いているか否かを判定する。
ここで、顔が正面を向いているとは、いわゆる正面顔である状態をいい、顔の画像における顔のロール角、ピッチ角、およびヨー角が全て0度である状態をいう。なお、顔の画像における顔のロール角、ピッチ角、およびヨー角が0度を中心とした所定の範囲(例えば、プラスマイナス10度など)にある場合、顔が正面を向いていると判定するようにしてもよい。
ステップS76において、顔が正面を向いていると判定された場合、ステップS77に進み、表示制御部36のエフェクト適用部52は、顔からズームアウトするエフェクトを画像1に適用して、表示制御部36は、顔からズームアウトするように画像1を、ディスプレイである出力部17に表示する。ステップS77の処理の後、手続きは、ステップS72に戻り、上述した処理を繰り返す。
図12および図13は、顔からズームアウトするように表示される画像1の例を示す図である。
ステップS77において、まず最初に、エフェクト適用部52は、顔の大きさにズームインするエフェクトを画像1に適用する。顔の大きさにズームインされた画像1は、顔の画像の中心位置が、ディスプレイである出力部17の表示領域の中央位置(Xd/2,Yd/2)に配置され、顔の画像の幅および高さが表示領域の短辺を超えないように拡大されて表示される。ここで、Xdは、出力部17の表示領域の横幅を示し、Ydは、出力部17の表示領域の高さを示す。
すなわち、顔の画像の中心点(x,y)は、式(1)で表される。
顔の画像の中心点(x,y)=(Xd/2,Yd/2) ・・・(1)
また、表示領域の短辺が縦方向である場合、画像1の高さを1.0としているので、顔の画像の拡大率Zrは、式(2)で表される。
Zr=1/face_height ・・・(2)
face_heightは、顔検出情報3の<height>タグおよび</height>タグの間に配置されている顔の画像の高さである。
表示領域の短辺が横方向である場合、画像1の幅を1.0としているので、顔の画像の拡大率Zrは、式(3)で表される。
Zr=1/face_width ・・・(3)
face_widthは、<width>タグおよび</width>タグの間に配置されている顔の画像の幅である。
例えば、エフェクト適用部52は、図12で示されるように、顔の画像の幅または顔の画像の高さを基に、顔の画像の全体が出力部17の表示領域に表示されるように、式(2)または式(3)を基に、顔の画像の拡大率Zrを決定する。図12で示される例において、表示領域の短辺が縦方向なので、エフェクト適用部52は、式(2)を基に、顔の画像の拡大率Zrを決定する。
図12において、太線は、顔の画像の範囲を示す。顔の大きさにズームインされている場合、顔の画像の拡大率Zrは、式(2)を基に、決定された値とされ、顔の画像の高さが出力部17の表示領域の高さと一致するように、顔の画像が拡大される。顔の画像を含む画像1の領域であって、出力部17の表示領域に表示される画像1の領域である表示エリアの高さYは、顔の画像の高さface_heightに等しくされる。
顔の画像を含む画像1の領域であって、出力部17の表示領域に表示される画像1の領域である表示エリアの幅Xは、Xd/Zrとされる。表示領域の長辺が横方向なので、表示エリアの幅Xは、表示エリアの高さYより長くなる。
表示エリアは、Zrだけ拡大されて、出力部17の表示領域に表示される。すなわち、表示エリアの高さYは、Zrだけ拡大されて、拡大された画像の高さPY=Y/face_widthとされ、表示エリアの幅Xは、Zrだけ拡大されて、拡大された画像の幅PX=X/face_widthとされて、拡大された画像は、出力部17の表示領域の全体に表示される。ここで、PY=Yd、PX=Xdとなる。
次に、エフェクト適用部52は、ズームアウトするエフェクトを画像1に適用する。
すなわち、エフェクト適用部52は、拡大された画像の頂点のそれぞれ(4隅のそれぞれ)から、表示エリアの頂点のそれぞれ(4隅のそれぞれ)までの距離dnをそれぞれ算出し、一番遠い距離dnにある点に対して指定された時間で縮小されるように拡大率Zrを小さくしつつ、最終的に出力部17の表示領域の全体に画像1の全体を描画させる。
これにより、図13で示されるように、画像1の切り替えにおいて、時間の経過に応じて、顔の画像にズームインした状態から、全体の画像1にズームアウトされるように画像1が表示されることになる。
この場合、前に表示されている画像1の透過率を変化させながら画像を入れ替える処理を行うようにしてもよい。
ステップS76において、顔が正面を向いていないと判定された場合、ステップS78に進み、表示制御部36のエフェクト適用部52は、顔の方向にスライドインするエフェクトを画像1に適用して、表示制御部36は、顔の方向にスライドインするように画像1を、ディスプレイである出力部17に表示する。ステップS78の処理の後、手続きは、ステップS72に戻り、上述した処理を繰り返す。
図14および図15は、顔の方向にスライドインするように表示される画像1の例を示す図である。
例えば、ステップS78において、エフェクト適用部52は、顔の方向にスライドインするエフェクトを画像1に適用する場合、最初に、2次元の平面に投影された顔の角度θと、顔の画像の位置とから、スライドを開始する画像1の位置を求める。
ここで、2次元の平面に投影された顔の角度θについて説明する。顔の画像は、平面に表示されるので、図7で示されるように、顔の正面から垂直に伸びる垂直ベクトルLを画面に投影したときの角度が、2次元の平面に投影された顔の角度θとされる。
エフェクト適用部52は、スライドを開始する画像1の位置として、画像1を、顔の角度θに対して逆の方向に移動させて、表示領域(描画領域)の境界に画像1の顔の画像が接する位置を求める。
例えば、図14で示されるように、エフェクト適用部52は、2次元の平面に投影された顔の角度θに対して逆の方向に画像1を移動させて、画像1が左側に表示オフセットX0だけ移動され、画像1が上側に表示オフセットY0だけ移動した位置をスライドを開始する画像1の位置とする。図14で示される例において、エフェクト適用部52は、画像1の顔の画像の左端が、表示領域の左端と一致し、画像1の顔の画像の上端が、表示領域の上端と一致する位置、すなわち、表示領域の左上に顔の画像が配置される位置を画像1の位置とする。
図14で示される例において、オフセット距離d0は、(X02+Y02)1/2である。スライドを開始する画像1の位置において、画像1の顔の画像の全体が出力部17の表示領域に表示されることになる。
エフェクト適用部52は、オフセット距離d0に対して指定された時間で画像1のスライドが完了するように顔の角度θの方向に画像1のオブジェクトを移動させつつ描画する。
次の画像1を表示させるように画像1の表示が移る(表示が切り替えられる)場合には、画像1の全体が表示されている状態から、顔の角度θの方向に画像1がさらにスライドされて、顔の画像が表示領域(描画領域)の境界に接するまで移動するように、画像1が出力部17の表示領域に表示される。
これにより、図15で示されるように、画像1の切り替えにおいて、顔の方向にスライドインするように画像1が表示されることになる。
スライドインして画像1を表示させる場合に、画像1の透過率を変化させるようにしてもよい。
ステップS75において、顔の数が1つでないと判定された場合、ステップS79に進み、表示制御部36の判定部51は、画像1に関係付けられている顔検出情報3に示されている顔の数から、顔の数が4つであるか否かを判定する。
ステップS79において、顔の数が4つであると判定された場合、ステップS80に進み、表示制御部36のエフェクト適用部52は、4分割した画面の領域のそれぞれにおいて、顔にズームしつつ、クロスフェードするエフェクトを画像1に適用して、表示制御部36は、4分割した画面の領域のそれぞれにおいて、顔にズームしつつ、クロスフェードするように画像1を、ディスプレイである出力部17に表示する。ステップS80の処理の後、手続きは、ステップS72に戻り、上述した処理を繰り返す。
例えば、図16で示されるように、エフェクト適用部52は、出力部17の表示領域を4つに分割した領域のそれぞれに、今表示されている画像1に含まれている顔の画像を徐々に表示させるように、画像の透過率を変化させながら顔の画像を表示させる。そして、エフェクト適用部52は、4つに分割した領域のそれぞれに顔の画像を、次に表示しようとする画像1に含まれている顔の画像に徐々に変化させて表示させるように、画像の透過率を変化させながら顔の画像を表示させる。
さらに、エフェクト適用部52は、出力部17の表示領域の全体に画像1全体を徐々に表示させるように、画像の透過率を変化させながら次の画像1を表示させる。
ステップS79において、顔の数が4つでないと判定された場合、ステップS81に進み、表示制御部36は、顔検出情報3を基に、注目する顔を選択する。例えば、ステップS81において、表示制御部36は、顔検出情報3を基に、最も大きい顔を選択する。例えば、顔の数が0であると判定され、画像1が風景画像である場合、この場合、顔は選択されない。または、例えば、画像1が風景画像である場合、画像1に含まれている画像オブジェクトをランダムに選択する。
ステップS82において、表示制御部36のエフェクト適用部52は、選択した顔の方向にスライドインするエフェクトを画像1に適用して、表示制御部36は、選択した顔の方向にスライドインするように画像1を、ディスプレイである出力部17に表示する。例えば、顔の数が0であると判定され、画像1が風景画像である場合、顔は選択されていないので、表示制御部36のエフェクト適用部52は、予め定めた方向にスライドインするエフェクトを画像1に適用して、表示制御部36は、予め定めた方向にスライドインするように画像1を、ディスプレイである出力部17に表示する。
また、ランダムに選択された画像オブジェクトに対して、顔の画像と同様に処理を適用するようにしてもよい。
ステップS82の処理の後、手続きは、ステップS72に戻り、上述した処理を繰り返す。
ステップS74において、次に表示する画像1がないと判定された場合、処理は終了する。
なお、画像1に適用するエフェクトは、ズームインズームアウト、スライドイン、またはクロスフェードに限らず、顔検出情報3に含まれる情報から、画像1に適用する効果(エフェクト)を選択するようにしてもよい。この場合、選択方法は、ランダムに選択するようにしても良く、また、顔の画像の大きさまたは位置に、重み付けをして効果を選択するようにしてもよい。
このように、画像1に含まれる顔の画像により適したエフェクトを適用して画像1を表示することができる。すなわち、画像1の内容により適した効果を適用して画像1を表示することができる。
顔の画像の検出の結果得られたメタ情報(顔検出情報3)を用いてスライドショーの処理を実行することで、画像1の中身に応じた効果を作り出すことができる。これにより、表示される画像1の印象がさらに高まり、使用者は、思い出をより想起しやすくなる。
また、人が写っている画像1を用いたスライドショーだけでなく、人が写っていない画像1を用いてスライドショーの処理を実行することができる。選択する画像1から人が写っている画像1を排除することで、純粋に風景を楽しむスライドショーを提供したり、画像1に写っている人のプライバシーに配慮したスライドショーを提供できるようになる。
このように、記憶している画像1を読み出し、画像1を表示するようにした場合には、画像を表示することができる。また、それぞれの画像に含まれる顔の画像である顔画像を検出し、画像を順に切り替えて表示する場合、顔画像に応じた、画像の切り替えの効果を適用した画像の表示を制御するようにした場合には、画像の内容により適した効果を適用して画像を表示することができる。
なお、パーソナルコンピュータ2を例に説明したが、これに限らず、図17で示されるようにデジタルスチルカメラ101に本発明を適用するようにしてもよい。この場合、デジタルスチルカメラ101は、上述した処理を実行して、デジタルスチルカメラ101が撮影した画像1から顔を検出して、顔検出情報3を生成する。デジタルスチルカメラ101は、撮影した画像1と顔検出情報3とを関係付ける。デジタルスチルカメラ101は、上述したスライドショーの処理を実行する。
このようにすることで、デジタルスチルカメラ101の表示部において、画像1の内容により適した効果を適用して画像1を表示することができる。
また、パーソナルコンピュータ2またはデジタルスチルカメラ101に限らず、携帯電話機、デジタルスキャナ、携帯情報端末装置、デジタルビデオカメラ、テレビジョン装置、ハードディスクビデオレコーダなど、画像を表示する機能を有する電子機器であれば、本発明を適用することができる。
なお、他の装置で関係付けられた画像1および顔検出情報3を基に、スライドショーの処理を実行するようにしてもよい。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図2に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)を含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア21、または、プログラムが一時的もしくは永続的に格納されるROM12や、記憶部18を構成するハードディスクなどにより構成される。プログラム格納媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部19を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 画像, 2 パーソナルコンピュータ, 3 顔検出情報, 11 CPU, 12 ROM, 13 RAM, 17 出力部, 18 記憶部, 21 リムーバブルメディア, 31 画像データベース, 32 顔検出部, 33 顔情報データベース, 34 読み出し条件設定部, 35 読み出し制御部, 36 表示制御部, 51 判定部, 52 エフェクト適用部