以下に、本発明の実施の形態について図面を参照して説明する。
[情報処理装置の構成について]
図1は、本発明を適用した情報処理装置の一実施の形態の構成を示す図である。図1に示した情報処理装置13を含むシステムは、表示部11、操作部12、情報処理装置13、および記憶部14から構成される。情報処理装置13は、表示制御部21、操作判断部22、人物相関データ生成部23、人物相関データ更新部24、グループ化部25、顔クラスタリング部26、および画像解析部27から構成される。また、画像解析部27は、顔認識部31を含む構成とされる。記憶部14は、人物相関データベース41と画像データベース42の2つのデータベースを含む構成とされる。
表示部11は、後述する画面を表示する。その画面は、記憶部14の人物相関データベース41に記憶されている人物同士の相関を表すデータを基にした画面である。操作部12は、ユーザ側が操作する部材で構成されている。
表示制御部21は、記憶部14の人物相関データベース41に記憶されているデータに基づき表示部11の表示を制御する。人物相関データベース41に記憶されるデータは、人物相関データ生成部23により生成される。人物相関データ生成部23は、グループ化部25によるグループ化の結果や、顔クラスタリング部26のクラスタリングの結果に基づいて、人物同士の相関に関するデータを生成する。グループ化部25は、画像解析部27の顔認識部31による画像に写っている人物(顔)の認識結果に基づき、人物同士のグループを作成する。
顔認識部31は、記憶部14の画像データベース42に記憶されている画像データに基づく画像から、人物(顔)を抽出(認識)する機能を有する。顔クラスタリング部26は、グループ化部25の結果からクラスタリングの処理を行う。
操作判定部22は、操作部12が操作されたときに、その操作がどのような操作であるのかを判断する。操作判定部22による判定結果に基づき、人物相関データ更新部24は、人物相関データベース41に記憶されているデータを更新する。
このような構成を有する情報処理装置13は、例えば、デジタルカメラ、ビデオカメラ、携帯電話機、スマートフォン、PDA(Personal Data Assistance)、ホームサーバ、テレビジョン受像機などに組み込まれる。または、情報処理装置13の各機能を実現するパーソナルコンピュータなどのアプリケーションとして提供される。
以下に詳細を説明するように、本発明を適用した情報処理装置13は、複数の画像を分類することができ、その分類は画像に写っている人物同士の相関に基づくものとすることができる。よって、画像を記録する機能や、画像を処理する機能を有する、上記したような装置やアプリケーションとして実現することが可能である。
[グループ化の処理について]
次に情報処理装置13が行う処理について説明する。まず、図2のフローチャートを参照し、人物相関データベース41の作成に係わる処理について説明する。また、図2のフローチャートを参照した説明は、全体の流れを簡略化した説明とし、必要に応じて詳細を後述する。
ステップS11において、処理対象とされる画像データが取得される。ステップS11における処理は、顔認識部31が、画像データベース42から画像データを取得することで行われる。よって、このような処理が行われる前提として、画像データベース42には、複数の画像に関する画像データが記憶されている。
ステップS12において、顔認識処理が実行される。顔認識部31は、取得した画像データに基づく画像に写っている人物を、画像から顔を抽出することで認識する。顔認識部31は、画像データベース42から画像データを取得するとき、その画像データを一意に識別することができる画像IDも取得する。顔認識部31による顔認識処理が実行されることにより、画像内における顔の位置、顔の大きさ、顔の向き、顔の属性(例えば、性別、年齢など)、顔の特徴量などが抽出される。また、認識顔毎に、その顔を一意に識別するためのユニークなID(以下、顔IDと記述する)が割り振られる。
なお、顔認識部31が行う顔認識に係わるアルゴリズムは、本出願人が先に提案した顔認識技術を適用することができる。その顔認識技術については、特開2005−284487号公報、特開2005−157679号公報に記載があるため、ここでは、その説明を省略する。
ステップS13において、グループ化の処理が実行される。グループ化の処理は、グループ化部25が、顔認識部31の認識結果を用いて行う。グループとは、認識された顔を1以上含む集団である。このグループ化の処理については、図3以降のフローチャートを参照して後述する。
ステップS13において、グループ化の処理が実行され、グループが生成されると、ステップS14において、処理対象とされる画像データを全て処理したか否かが判断される。顔認識部31は、画像データベース42に、まだ顔認識の処理を実行していない画像データがあるか否かを判断し、まだ顔認識の処理を実行していない画像データがあると判断した場合、ステップS11に処理を戻し、新たに処理対象とする画像データを取得する。そして、ステップS11以降の処理が、新たな画像データに対して繰り返し行われる。
一方、ステップS14において、処理対象とされる画像データを全て処理したと判断された場合、ステップS15に処理が進められる。ステップS11乃至S14の処理は、画像データベース42に記憶されている1つの画像データに対して行われ(1枚の画像に対して行われ)、ステップS15以下の処理は、複数の画像データ(複数の画像)を処理対象として行われる。
ステップS11乃至S14の処理が実行されることにより、1枚の画像から、1以上のグループが検出された画像が複数存在する状態となる。なお、グループが検出されなかった画像は、ステップS15以下の処理対象とはされない。ステップS15以下の処理は、複数の画像から検出された複数のグループが、処理対象として行われる。グループには、少なくとも1人以上の人物(顔)が含まれている。換言すれば、認識された顔を1以上含むのがグループである。
ステップS15において、顔クラスタリング処理が実行される。顔クラスタリング部26は、複数のグループを対象として、顔のクラスタリング、すなわち、同じ顔は、同じ人物として扱うための処理を行う。その結果、1以上の複数の人物が検出される。顔クラスタリング部26は、顔認識部31から供給された顔識別特徴量および顔ID、画像IDを用いて、顔識別特徴量同士の類似度を用いて同一人物と判断される人毎にグルーピングを行なう。
ステップS16において、同一の人物と判断された顔は、同一の人物として扱われるように、例えば、顔IDが関連付ける処理が実行される。このようにして、複数の人物が生成される。ステップS17において、生成された複数の人物同士の親密度が算出される。親密度の算出に関しては、グループ化の処理などの説明が終わった後に、再度説明する。
ステップS17において、親密度が算出されると、その結果が用いられて、さらに人物間のタグが決定される。人物間のタグとは、人物Aと人物Bが“夫婦”である、“親子”である、“友達”であるといった人物間の関係を示すタグである。このタグの決定に関する詳細な説明は後述する。
ステップS17において、タグが決定されると、その情報から人物相関データが生成され、人物相関データベース41に記憶される(ステップS18)。このようにして、人物相関データベース41は生成される。この人物相関データベース41のデータは、画像から抽出された人物同士が、どのような関係にあるかに関するデータである。
[グループ化の処理について]
次に、図3のフローチャートを参照して、ステップS13において実行されるグループ化の処理について説明する。このグループ化の処理は、グループ化部25において行われる。
ステップS31において、顔情報が取得される。上記したように、グループ化部25は、顔認識部31から、所定の画像に写っている顔の認識結果として、画像内における顔の位置、顔の大きさ、顔の向き、顔の属性(例えば、性別、年齢など)、顔の特徴量といった情報が供給されるので、それらの情報を、ステップS31の処理として取得する。
ステップS32において、フィルタリングの処理が実行される。このフィルタリングの処理は、顔認識処理により認識された顔を全て処理対象とすると、処理が増大する、時間がかかるといった問題があるため、処理対象とする顔を少なくするために行われる。しかしながら、処理対象とすべき顔が処理対象外にされてしまうようなことなく行われる必要があり、その処理は、図4に示すフローチャートの処理に基づいて行われる。
図4は、ステップS32において実行されるフィルタリングの処理について説明するためのフローチャートである。ステップS51において、顔サイズの平均値が算出される。図5Aに示したように、画像50から顔51乃至55の5個の顔が検出された場合を例にあげて説明する。ステップS51においては、この5個の顔51乃至55の顔サイズの平均値が算出される。
顔サイズの平均値は、次式(1)に基づき算出される。
式(1)において、faceSize_ave は、平均顔サイズ[pix]を表し、N は「可」のタグのついた顔の数を表し、width_i は、顔iの幅[pix]を表し、height_i は、顔iの高さ[pix]を表す。
ステップS52において、算出された顔サイズの平均値と各顔サイズの比較が行われる。例えば、顔サイズの平均値と、顔51のサイズが比較される。このような比較が、顔毎に行われる。ステップS53において、除外対象となる顔があるか否かが判断される。この判断は、ステップS52における比較結果が用いられて行われる。顔サイズの平均値との比較の結果、平均値の所定の範囲よりも大きなサイズの顔、または小さなサイズの顔が除外対象の顔とされる。平均値の所定の範囲よりも大きいとは、例えば、平均値に、その平均値の所定のパーセンテージの値を加算した値よりも大きい(例えば、平均値の1.5倍の値以上よりも大きい)ことである。同様に、平均値の所定の範囲よりも小さいとは、例えば、平均値に、その平均値の所定のパーセンテージの値を減算した値よりも小さい(例えば、平均値の0.5倍の値以下よりも小さい)ことである。
平均値の所定の範囲よりも大きなサイズの顔を処理対象の顔から除外するのは、以下の理由からである。すなわち、例えば、ユーザが撮影を意図した人物Aの前を、撮影を意図しなかった人物Bが横切ったために、その人物Bが、人物Aよりも大きく撮影されてしまったような画像である可能性が高い。よって、そのようなユーザが撮影を意図しなかった人物Bは、後段の処理における処理対象からは除外されるようにする。例えば、図5Aに示した画像50が処理対象とされているときには、顔51が、平均値の所定の範囲よりも大きい顔と判断され、除外される。
また、平均値の所定の範囲よりも小さなサイズの顔を処理対象の顔から除外するのは、以下の理由からである。すなわち、例えば、ユーザが撮影を意図した人物Aの後ろに、撮影を意図しなかった人物Bが存在していたために、その人物Bが、人物Aよりも小さく撮影されてしまったような画像である可能性が高い。よって、そのようなユーザが撮影を意図しなかった人物Bは、後段の処理における処理対象からは除外されるようにする。例えば、図5Aに示した画像50が処理対象とされているときには、顔52が、平均値の所定の範囲よりも小さい顔と判断され、除外される。
除外対象とされた顔には、「不可」というタグが付けられる。「不可」というタグが付けられた顔は、処理対象としない顔であることを意味する。他のタグとして「可」というタグと、「未定」というタグがある。「可」というタグが付けられた顔は、処理対象とされている顔であることを意味する。「未定」というタグが付けられた顔は、後述する所定の処理においては、処理対象とされるが、他の処理では処理対象としない顔であることを意味する。
図4のフローチャートの説明に戻る。図4のフローチャートの処理が実行されるとき、すなわち、フィルタリングの処理が実行されるときは、認識されている顔には、全て「可」のタグが付けられている。そして、ステップS51、ステップS52の処理が上記したように実行され、ステップS53において、除外対象となる顔があると判断された場合、ステップS51に処理が戻され、それ以降の処理が繰り返される。ステップS53からステップS51に処理が戻されたときに、処理対象とされる画像は、除外対象とされた顔が除外された画像である。
すなわち、例えば、図5Aに示した画像50が処理対象とされていたときには、顔51と顔52が除外対象とされるため、図5Bに示し画像50’が、処理対象とされる。画像50’は、顔53乃至55の3個の顔が写っている状態の画像である。換言すれば、顔51と顔52は、「不可」のタグが付けられているため、処理対象とされない。そのために、「可」のタグが付けられている顔53、顔54、顔55が処理対象とされて、ステップS51の処理が再度行われる。
このときステップS51においては、図5Bに示した画像50’が処理対象とされるため、顔53乃至55の3個の顔の顔サイズの平均値が新たに算出される。そして、ステップS52において、新たに算出された平均値と各顔サイズ、この場合、顔53、顔54、顔55のそれぞれの顔サイズとの比較が行われる。そして、ステップS53において、除外対象とされる顔があるか否かが、上記した場合と同様の判断が行われることで判断される。
このような処理が繰り返されることで、所定の画像内に写っている顔のうち、同じようなサイズの顔、換言すれば、撮影者が意図して撮影したであろう人物が処理対象として残される。換言すれば、このようにして、処理対象とされている画像から、その画像に写っている顔のうち、他の顔と比較して極端に大きい顔や極端に小さい顔が検出され、後段の処理における処理では処理対象とされない顔として設定される。
ステップS53において、除外対象となる顔がないと判断されると、ステップS54に処理が進められる。ステップS54において、顔サイズが閾値以下の顔があるか否かが判断される。例えば、図5Bに示した画像50’が処理対象とされているとき、顔53、顔54、顔55のそれぞれの顔サイズと顔サイズの平均値の比が、閾値以下であるか否かが判断される。例えば、閾値が0.7と設定されている場合であり、顔53のサイズと平均値の比が0.7以下であったときには、ステップS54において、顔のサイズが閾値以下の顔であると判断される。
ステップS54において、顔のサイズが閾値以下の顔があるか否かを判断するのは、以下の理由からである。「可」のタグが付けられている顔のうち、他の顔よりも小さな顔は、撮影者が意図して撮影した顔であるが、例えば、子供の顔であるために他の顔(両親の顔)よりも小さかったり、他の顔よりも少し後方に位置しているために他の顔よりも小さかったりする場合(第1の場合とする)がある。または、撮影者が意図して撮影した人物ではないために、意図して撮影した人物よりは小さな顔サイズで撮影されている場合(第2の場合とする)がある。第1の場合であるのか、第2の場合であるのかを判断するために、ステップS54において、顔サイズが閾値以下の顔があるか否かが判断される。
ステップS54において、顔サイズが閾値以下の顔があると判断された場合、ステップS55に処理が進められる。ステップS55において、顔サイズが閾値以下であると判断された顔のタグが、「可」のタグから「未定」のタグに変更される。この時点では、「未定」のタグが付けられた顔は、撮影者が意図して撮影した人物であるか否かの判断が付けづらい状態の顔であり、後段の一部の処理を除く処理の処理対象とすべきか否かが未定のため、「未定」のタグが付けられる。
例えば、図5Bに示した画像50’の顔54は、顔53や顔55と比較して小さいので、顔サイズの平均値との比において、閾値以下の大きさしかない可能性がある。閾値以下であった場合、顔54は、「未定」のタグに変更される。ここでは、顔54は、「未定」のタグに変更されたとして説明を続ける。
ステップS56において、「可」のタグが付けられている顔(以下、「可」顔と記載する、他も同様に記載する)が1つであるか否かが判断される。図5Bに示したような画像50’の場合、顔53と顔55が「可」顔であるので、ステップS56において、NOと判断され、ステップS58に処理が進められるが、仮に顔53だけが「可」顔であった場合、ステップS56においてYESと判断され、ステップS57に処理が進められる。
ステップS57またはステップS58において、「未定」のタグを「可」のタグに変更し直すか否かの判断が行われる。上記したように、「未定」のタグが付けられている「未定」顔は、撮影者が意図して撮影した顔であるのか否かが判断付けづらい顔であり、ステップS57またはステップS58においては、そのような顔に対して、撮影者が意図して撮影した顔であるか否かを判断する処理である。
ステップS57においては、画像内に「可」顔が1つだけある画像に対して、条件1で判断が行われる。条件1とは、以下の式(2)の条件を満たすか否かで判断され、その式(2)における判断を行うのに式(3)に基づき算出される値が用いられる。
式(2)、式(3)において、flag_i は、「未定」顔iが条件を満たすかどうかを表し、faceDist_(i,j) は、「未定」顔iと「可」顔jとの距離を表す。
式(3)は、処理対象とされている「未定」顔と「可」顔の距離を算出する式である。式(3)における(xi,yi)は、「未定」顔の座標であり、(xj,yj)は、「可」顔の座標である。この2つの顔の距離faceDist_(i,j)が、顔サイズの平均値faceSize_aveに所定の閾値threshold_facedistを乗算した値よりも小さい場合に、trueと判定される(trueというフラグが立てられる)。ここで、trueとの判断結果は、「未定」とのタグを「可」とのタグに変更することを意味するとする。
このように、条件1とは、「可」顔と「未定」顔との距離が一定の範囲内にあるか否かを判断し、一定の範囲内にあるときには、「可」とのタグに変更するとの判断結果を出すための条件である。「可」顔と「未定」顔との距離が一定の範囲内にある場合、例えば、両親と子供が写っているような画像であり、互いに近い位置に位置する状態で撮影されたが、子供の方が小さいサイズで写ってしまったような画像であると判断できる。このような画像内の人物は、撮影者が意図して撮影した人物であると判断し、後段の処理における処理対象とされ、「可」とのタグが付けられる。
一方、ステップS58においては、条件2に基づき判断が行われる。条件2においては、まず、式(4)で表される近似直線lが求められる。式(4)で表される近似直線lの係数aと係数bは、それぞれ式(5)と式(6)に基づいて算出される。この近似直線lと、処理対象とされる「未定」顔との距離lineDist_(i,l)が、式(7)に基づき算出される。この算出された距離lineDist_(i,l)に所定の閾値threshold_facedistを乗算した値が、判断式である式(8)を満たす場合、trueと判断される。
近似直線(approxLine)l:y=ax+b ・・・(4)
条件2においては、2以上の「可」顔が存在する画像に対して、その2以上の「可」顔を通る近似直線lと、「未定」顔との距離が一定範囲内に存在するか否かが判断されることで、撮影者が意図して撮影した人物であるか否かが判断される。
ステップS59において、処理対象とされた「未定」とのタグが付けられた顔を、「可」とのタグを付ける顔に変更すると判断されたか否かが判断される。この判断は、ステップS57またはステップS58において、trueとの判断結果が出た顔であるか否かが判断されることで行われる。
ステップS59において、タグを変更すると判断された顔であると判断された場合、ステップS60に処理が進められる。ステップS60において、タグを変更すると判断された顔のタグが「未定」から「可」に変更される。
ステップS59において、処理対象とされた「未定」とのタグが付けられた顔は、「可」とのタグに変更しないと判断された場合、または、ステップS60において、タグが変更された場合、ステップS61において、全ての「未定」とのタグが付けられた顔が処理対象とされたか否かが判断される。
ステップS61において、全ての「未定」顔を処理対象としていないと判断された場合、ステップS56に処理が戻され、まだ処理対象とされていない「未定」とのタグが付けられた顔に対して、ステップS56以下の処理が繰り返される。ステップS56以下の処理が繰り返されるとき、ステップS60において「可」とのタグに変更された顔は、「可」顔として扱われて処理される。
ステップS54において、顔サイズが平均以下の顔はないと判断された場合、またはステップS61において、「未定」とのタグが付けられた顔を全て処理対象としたと判断された場合、図4に示したフィルタリングの処理は終了され、ステップS33(図3)に処理が進められる。フィルタリングの処理が終了されることで、ステップS33以下の処理において処理対象とされる顔、すなわち「可」顔が決定された状態となる。
[グループ作成の処理について]
ステップS33(図3)において、グループ作成の処理が実行される。この処理は、画像内の複数の人物を1または複数のグループに分類する処理である。このステップS33において実行されるグループ化の処理について、図6のフローチャートを参照して説明する。
ステップS81において、グループ作成前処理が実行される。この処理は、設けなくても良い処理(削除することが可能な処理)であるが、前処理として行うことで、後段の処理における処理負担を軽減することが可能となる。ステップS81において実行されるグループ作成前処理について、図7のフローチャートを参照して説明する。
[グループ作成の処理におけるグループ作成前処理について]
ステップS101において、処理対象とされた画像に「可」顔が3以上あるか否かが判断される。「可」顔が1、または2のために、ステップS101において、処理対象とされた画像に「可」顔が3以上はないと判断された場合、グループ作成前処理の処理は終了される。すなわち、処理対象とされた画像に「可」顔が1、または2の場合には、前処理を行わない。
一方、ステップS101において、処理対象とされた画像に「可」顔が3以上あると判断された場合、ステップS102に処理が進められる。ステップS102において、画像内の「可」顔の全てを対象として近似直線が作成される。ここでは、この近似直線を暫定近似直線と記述する。
暫定近似直線は、次式(9)に基づいて算出される。
暫定近似曲線(interim-approxLine) l_interim :y=ax+b ・・・(9)
式(9)における係数a、係数bは、それぞれ、式(5)、式(6)に基づいて算出される。ただし、nは、この場合、処理対象とされた画像内の「可」顔の数とされる。
なお、このステップS102において生成される暫定近似直線は、既に処理が終わっている図4のフローチャートを参照して説明したフィルタリングの処理で生成した近似直線を利用することも可能である。フィルタリングの処理で、ステップS58において、条件2での判断を行うときに、「可」顔を用いて近似直線を生成している。そのステップS58で生成した近似直線を、ステップS102で生成される暫定近似直線とすることも可能である。
ただし、「可」顔の分布の偏りが小さい場合には、そのステップS58で生成した近似直線を、ステップS102で生成される暫定近似直線として処理が行われるようにしても良いが、ステップS58で生成されて近似直線に対しての『可』顔の分布に偏りがある場合には、改めてステップS103において、暫定近似直線が生成される。
ステップS103において、画像内の各「可」顔と暫定近似直線との距離が求められる。この距離は、式(7)に基づいて算出される。ステップS104において、暫定近似直線に対して、「可」顔が、直線のどちら側に多く分布しているかが調査される。画像は、暫定近似直線により、2つの領域に分割できる。その分割された2つの領域のうち、どちらの領域に、「可」顔が多く存在しているかが判断される。ステップS105において、分布状況に偏りがあるか否かが判断される。偏りがあると判断されるのは、例えば、近似直線の上側と下側に、「可」顔が分布しているような場合である。
ステップS105において、分布に偏りがあると判断された場合、ステップS106に処理が進められる。ステップS106において、より多く分布している側の「可」顔が抽出される。すなわち、「可」顔が多く存在している領域に存在する「可」顔が抽出される。ここで、図8に示した画像101が処理対象とされている場合を例にあげ、上記したステップS102乃至S106における処理、およびステップS106以下の処理について説明を加える。
画像101には、「可」顔として顔111乃至115の5個の顔が検出されている。この5個の「可」顔111乃至115が用いられ、ステップS102において、暫定近似直線が作成される。生成された暫定近似直線を、図8の画像101では、暫定近似直線110として図示する。暫定近似直線110より図中上側には、顔111と顔112が存在し、暫定近似直線110より図中下側には、顔113、顔114、および顔115が存在している。よって、暫定近似直線110より図中下側に、図中上側よりも、より多くの顔が分布していることになる。
よって、画像101の場合、ステップS106において抽出される「可」顔は、顔113、顔114、および顔115となる。この顔113、顔114、顔115が、ステップS107において、「近似直線候補」顔とされる。顔111や顔112が、暫定近似直線110上に位置していた場合には、仮に、暫定近似直線110に対して多くの顔が存在している領域に存在していなくても、「近似直線候補」顔にされる。
ステップS108において、「近似直線候補」顔とされた「可」顔で、近似直線が次式(10)に基づき作成される。
近似曲線(approxLine) l: y=ax+b ・・・(10)
式(10)における係数a、係数bは、それぞれ、式(5)、式(6)に基づいて算出される。ただし、nは、この場合、「近似直線候補」顔の数とされる。
ステップS108において、近似直線が作成された場合、または、ステップS105において、分布に偏りがないと判断された場合、ステップS109に処理が進められる。ステップS109において、生成された近似直線からの距離の小さい順に、「可」顔がソートされる。このときソートの対象とされる「可」顔は、画像内で検出された全ての「可」顔であり、「近似直線候補」顔だけがソートの対象とされるのではない。例えば、図8に示した画像101の場合、顔111乃至115がソート対象とされる。
また、ステップS108からステップS109に処理が進められときには、ステップS108で作成された近似直線が用いられ、ステップS105からステップS109に処理が進められたときには、ステップS102において算出された暫定近似直線が、近似直線として用いられる。
このようにして、近似直線が生成され、その近似直線に対して距離が近い順に「可」顔がソートされると、グループ作成前処理に係わる処理が終了される。このような前処理が実行されることで、後述する後段の処理で、近似直線が用いられてグルーピングが実行されるため、初期の段階で、ある程度精度が高いグループ候補ができることになる。そのため、後段の処理で別の候補を作る際にも、かなり早い段階で精度比較により処理を打ち切ることができるなどの処理を実行することが可能となり、全体の処理速度を向上させることが可能となる。
[グループ作成の処理における重心からの距離によるグループ化について]
ステップS81(図6)におけるグループ作成前処理(図7)が終了されると、ステップS82に処理が進められる。ステップS82において、重心からの距離によるグループ化の処理が実行される。この“重心からの距離によるグループ化の処理”とは、処理対象とされる全ての顔(「可」顔)の重心を求め、その重心からの各顔の距離に基づきグループを生成する処理である。このステップS82において実行される重心からの距離によるグループ化の処理について、図9のフローチャートを参照して説明する。
ステップS131において、処理対象とされている画像内の「可」とのタグが付けられている「可」顔を対象として、「可」顔の平均顔サイズが算出される。平均顔サイズは、次式(11)に基づき算出される。
式(11)において、faceSize_ave は、平均顔サイズ[pix]を表し、Nは、「可」タグの付いた顔の数を表し、width_i は、顔iの幅[pix]を表し、height_i は、顔iの高さ[pix]を表す。
ステップS132において、画像内の全ての「可」顔の重心座標が、次式(12)に基づき算出される。
式(12)において、x_g は、重心のx座標を表し、y_g は、重心のy座標を表し、n は、「可」顔の総数を表す。
ステップS133において、画像内の各「可」顔と、重心との距離が算出される。そして、その算出された距離のうち、最大値と最小値が抽出され、その差分が算出される。ステップS134において、ステップS133において算出された差分値が、ステップS131で算出された平均顔サイズよりも小さいか否かが判断される。
ステップS134において、差分値が平均顔サイズよりも小さいと判断された場合、ステップS135に処理が進められ、画像内の全ての「可」顔を含む1つのグループが生成され、図9に示したフローチャートに基づく重心からの距離によりグループ化の処理は終了される。一方、ステップS134において、差分値が平均顔サイズよりも小さいと判断されなかった場合、図9に示したフローチャートに基づく重心からの距離によりグループ化の処理は終了される。
ここで図10を参照し、再度、重心からの距離によるグループ化について説明を加える。図10Aは、重心からの距離により、グループ化される場合の一例を示す図である。図10Aに示した画像131には、「可」顔141乃至146が撮像されている。これらの「可」顔141乃至146の位置関係から、ステップS132において、重心151が算出される。なお、図10Aにおいて、重心151や、矢印は説明のために付したものであり、画像131に撮像されているものではない。他の画像に関しても同様である。
画像131においては、重心151は、画像131の中心部分にあり、「可」顔141乃至146は、その重心151を取り囲むように存在している。ここで、「可」顔141と重心151との距離を距離L141とし、重心151との距離が他の「可」顔よりも短いとする。また、「可」顔143と重心151との距離を距離L143とし、重心151との距離が他の「可」顔よりも長いとする。しかしながら、図10Aに示したように、距離L141と距離L143は、大差ない距離であるとする。
このような状況の場合、ステップS133において、距離L141と距離L143との差分値が算出される。この差分値は、0もしくは、0に近い小さい値となる。よって、ステップS134において、差分値は、平均顔サイズよりも小さいと判断される。このような場合、「可」顔141乃至146は、1つのグループとされる。
画像131に対して、図10Bに示したような画像161のような場合、重心からの距離によるグループ化の処理ではグループが生成されない。画像161には、「可」顔171乃至176が、図10Bに示すような配置で撮像されている。画像161の場合、重心181からの距離はばらばらである。ここでは、「可」顔172と重心181との距離を距離L172とし、重心181との距離が他の「可」顔よりも短いとする。また、「可」顔176と重心181との距離を距離L176とし、重心181との距離が他の「可」顔よりも長いとする。
画像161のような「可」顔の配置の場合、距離173と距離176との差分は、ある程度の大きい値となる。そして、ステップS134における判断で、距離173と距離176との差分値は、平均顔サイズよりも小さくはないと判断される。よって、画像161の画像の場合、重心からの距離によるグループ化の処理ではグループが生成されないことになる。
このように、重心からの距離によるグループ化の処理により、グループが生成されるのは、図10Aに示したように、顔が円形上に配置されているような場合であり、状況としては、撮像されている人達が円陣を組んでいるような状況のときに撮影された画像のときである。このような円陣を組んでいるような人達は、何らかの関係を有する人達同士であると考えられる。よって、そのような人達でグループが生成されるようにするために、重心からの距離によるグループ化の処理が実行されるようにする。
このような処理が行われた結果、グループが生成された場合、図6のフローチャートにおけるステップS83以降の処理は省略され、生成されたグループに対しての処理が実行される。一方、このような処理が行われた結果、グループが生成されなかった場合、ステップS83(図6)に処理が進められ、近似直線を用いたグループ化の処理が実行される。
[グループ作成処理における近似直線を用いたグループ化の処理について]
ステップS83において、近似直線を用いたグループ化の処理が実行される。処理対象とされる各顔のなかから、基準となる第1の顔を選択し、その第1の顔と第2の顔との位置から近似直線を生成し、その近似直線からの距離と、処理対象とされる顔のサイズの平均値との比が一定値以下である顔を選択することでグループを生成する処理である。以下にステップS83において実行される近似直線を用いたグループ化の処理について、図11のフローチャートを参照して詳細に説明する。
ステップS161において、基準となる第1番目の顔が、画像内の全ての「可」顔の中から1つ選択される。この選択は、ステップS81(図6、図7)の処理結果を用いて行われる。すなわちソートされた結果が用いられ、近似直線からの距離が小さい順に選択されることで行われる。後に、他の顔も順次、第1番目の顔とされるため、ステップS163において、全ての顔を第1番目の顔としたか否かが判断される処理がある。
ステップS162において、第1番目の顔を含むグループ顔の抽出処理が実行される。このステップS162における処理が実行されることで、その時点で第1番目の顔とされた「可」顔を基準としたグループが生成される。換言すれば、第1番目の顔とグループ化される顔があるか否かが、ステップS162に処理において実行される。このステップS162における処理の詳細な説明は、図12のフローチャートを参照して後述する。
ステップS162において、第1番目の顔を含むグループ顔の抽出処理が終了されると、ステップS163に処理が進められ、全ての顔が第1番目の顔として処理が実行されたか否かが判断される。ステップS163において、全ての顔が第1番目の顔として処理は実行されてはいないと判断された場合、ステップS161に処理が戻され、それ以降の処理が繰り返される。
一方、ステップS163において、全ての顔が第1番目の顔として処理が実行されたと判断された場合、ステップS164に処理が進められる。ステップS164において、ステップS163までの処理でグループが生成された場合、そのグループに関する情報として、グループ化に使用した近似直線が登録される。
図12のフローチャートを参照し、ステップS162において実行される第1番目の顔を含むグループ顔の抽出処理について説明する。
ステップS191において、第2番目の顔iが選択される。この第2番目の顔iは、処理対象とされている画像内の「可」顔のうち、第1番目の顔以外の「可」顔から1つ選択される。ステップS192において、選択された第2番目の顔iと、第1番目の顔との距離が算出され、その算出された距離が、一定値(閾値)以下であるか否かが判断される。このステップS192における処理は、第1番目の顔と、近傍に位置する顔を探索するための処理である。
ステップS192において、第1番目の顔と第2番目の顔との距離は、一定値以下ではないと判断された場合、ステップS191に処理が戻され、新たに第2番目の顔が選択され、同様の処理が繰り返される。
一方、ステップS192において、第1番目の顔と第2番目の顔との距離は、一定値以下であると判断された場合、ステップS193に処理が進められ、カウンタの値が2に設定される。カウンタとは、その時点で、第1番目の顔を基準としたときに、その第1番目の顔とグループ化される可能性のある顔の個数を示す。カウンタの初期値は、第1番目の顔が選択されている状態であるので、1である。よって、ステップS192において、第1番目の顔と第2番目の顔との距離は、一定値以下であると判断された場合、その第2番目の顔が追加されたことになり、カウンタの値が2とされる。
ステップS194において、他顔探索処理が実行される。この他顔探索処理とは、第1番目の顔と第2番目の顔の他に、さらに第1番目の顔と第2番目の顔で構成されるグループに追加される顔があるか否かを探索するための処理である。ステップS194における他顔探索処理について、図13のフローチャートを参照して説明する。
ステップS231において、集合0に、第1番目の顔と第2番目の顔以外の全ての「可」顔が入れられる。そして、ステップS232において、集合Gに、第1番目の顔と第2番目の顔が入れられる。すなわちこの時点で、集合Gと集合0が生成され、集合Gは、第1番目の顔と第2番目の顔が含まれ、それ以外の顔は集合0に含まれる状態とされる。
ステップS233において、集合0から、顔jが選択される。ステップS234において、集合Gの顔に顔jを含めた近似直線が作成される。すなわちこの場合、第1番目の顔、第2番目の顔、および顔jから近似直線が生成される。そして、ステップS235において、顔jと近似直線の判断処理が実行される。このステップS235において実行される顔jと近似直線の判断処理について、図14のフローチャートを参照して説明する。
ステップS271において、近似直線と顔jとの距離が一定値(閾値)以下であるか否かが判断される。ステップS271において、近似直線と顔jとの距離が一定値以下であると判断された場合、ステップS272に処理が進められる。ステップS272において、顔jは、既にグループ化された顔のどれかとの距離が一定値以下であるか否かが判断される。ステップS272において、顔jは、既にグループ化された顔のどれかとの距離が一定値以下であると判断された場合、ステップS273に処理が進められる。
すなわち、顔jが近似直線と近く、かつ、近似直線を生成するのに用いられた顔j以外の顔(例えば、この場合、第1番目の顔と第2番目の顔)にも近接していると判断された場合、ステップS273において、真(true)との判断結果が出力される。そして、処理は、ステップS236(図13)に進められる。
一方、ステップS271において、近似直線と顔jとの距離が一定値以下ではないと判断された場合、または、ステップS272において、顔jは、既にグループ化された顔のどれかとの距離が一定値以下ではないと判断された場合、ステップS274に処理が進められる。ステップS274において、偽(false)との判断結果が出力される。
すなわち、顔jが近似直線と近くないか、または、近似直線には近いが、近似直線を生成するのに用いられた顔j以外の顔(例えば、この場合、第1番目の顔と第2番目の顔)には近接していないと判断された場合、ステップS274において、偽(false)との判断結果が出力される。そして、処理は、ステップS236(図13)に進められる。
図13のフローチャートの説明に戻る。ステップS235において、顔jと近似直線の判断処理が終了され、判断結果が出されると、ステップS236において、その判断結果は、真であるか否かが判断される。ステップS236において、その判断結果は、真であると判断された場合、ステップS237に処理が進められ、その判断結果は、偽であると判断された場合、ステップS237の処理はスキップされ、ステップS238に処理が進められる。
ステップS237において、真と判断された顔jと暫定近似直線との傾きの差が求められる。この暫定近似直線は、グループ作成前処理(図6のステップS81、図7のフローチャート)において作成された近似直線(ステップS102の処理で作成された暫定近似直線またはステップS108の処理で作成された近似直線)が用いられる。算出された暫定近似直線との傾きの差分値は、一旦記憶され、ステップS238に処理が進められる。また、このようにして差分値が算出された顔jは、その時点で処理対象とされているグループへの追加候補とされる。
ステップS238において、集合0内の全ての顔を処理対象としたか否かが判断される。ステップS238において、集合0内の全ての顔を処理対象としていないと判断された場合、ステップS233に処理が戻され、まだ処理対象とされていない顔が選択され、ステップS233以降の処理が繰り返される。このように、ステップS233乃至S238の処理が繰り返されることで、その時点で処理対象とされているグループへ追加する候補となる顔jが抽出される。そして、ステップS238において、集合0内の全ての顔を処理対象としたと判断された場合、ステップS239に処理が進められる。
ステップS239において、顔が追加されたか否かが判断される。換言すれば、その時点で処理対象とされているグループへ追加する候補とされた顔jがあるか否かが判断される。ステップS239において、顔が追加されたと判断された場合、ステップS240に処理が進められる。ステップS240において、暫定近似直線との傾きの差が最も小さい他顔が選択される。ステップS237において、追加候補とされた顔j毎に、暫定近似直線との傾きの差が求められ、記憶されているため、この記憶されている情報が用いられて、ステップS240における処理が実行される。
ステップS240において選択された他顔は、ステップS241において、集合0から削除され、集合Gに追加される。集合Gに新たな顔が追加されたことにより、ステップS242において、その時点で集合Gに含まれる顔の数を表すカウンタの値が、1だけ加算された値とされる。そして、処理は、ステップS233に戻され、それ以降の処理が繰り返される。
一方、ステップS239において、顔は追加されていないと判断された場合、換言すれば、その時点で処理対象とされているグループへ追加する候補となる顔jはないと判断された場合、図13に示した他顔探索処理のフローチャートに基づく処理は終了され、ステップS195(図12)に処理が進められる。
図12のフローチャートの説明に戻り、ステップS194において他顔探索処理が実行され、その結果が出されると、ステップS195において、カウンタの値が3以上であるか否かが判断される。ステップS195において、カウンタの値が3以上ではないと判断された場合、ステップS191に処理が戻され、それ以降の処理が繰り返される。この状態は、第1番目の顔と第2番目の顔以外の他顔は、グループ化されなかったことを表している。なお、この時点では、最終的なグループではなく、グループとしての候補の状態である。
一方、ステップS195において、カウンタの値が3以上であると判断された場合、ステップS196に処理が進められる。ステップS196において、グループ内顔評価処理が実行される。このグループ内顔評価処理は、その時点で、グループとして候補とされている顔が、グループとして登録して良いか否か、そのグループに含まれる顔として適切であるか否かなどを評価する処理である。
ステップS196において実行されるグループ内顔評価処理について、図15のフローチャートを参照して説明する。ステップS301において、グループ内の顔の距離と、グループ内の顔のサイズの平均値(平均顔サイズ)が算出される。例えば、図8に示したような画像101が処理対象とされている画像であり、顔113、顔114、顔115が、グループ内の顔として設定されている場合、顔113と顔114、顔113と顔115、および顔114と顔115の各距離が算出され、一旦記憶される。また、顔113乃至115の平均顔サイズが算出される。
ステップS301における算出結果は、ステップS302以降の処理に用いられる。ステップS302において、処理対象とするグループ内の顔が選択される。例えば、上記した例であれば、顔113が処理対象とするグループ内の顔として選択される。ステップS303において、その処理対象とされた顔(例えば、顔113)は、グループ内の他の顔(例えば、顔114や顔115)との距離が遠いか否かが判断される。この判断は、例えば、所定の閾値を設定しておき、その閾値以上の距離であれば遠いと判断されることで行われる。または、平均顔サイズが用いられ、例えば、平均顔サイズの2倍以内の距離ならば、遠くないと判断されるなどの処理が実行される。
ステップS303において、処理対象とされた顔は、グループ内の他の顔との距離が遠いと判断された場合、ステップS304に処理が進められる。この場合、グループを構成する顔の候補として選択はされているが、他の顔とは距離が離れているため、そのグループに含めるには好ましくない可能性があると考えられるときである。よって、ステップS304において、処理対象とされている顔が、グループから除外される。グループから除外されることで、そのグループに含まれる顔の数が変わるため、ステップS305において、カウンタの値が、1だけ減算される。
ステップS305において、カウンタの値が1だけ減算された場合、または、ステップS303において、処理対象とされた顔は、グループ内の他の顔との距離は遠くないと判断された場合、ステップS306に処理が進められる。ステップS306において、グループ内の全ての顔が処理対象とされたか否かが判断される。
ステップS306において、グループ内の全ての顔はまだ処理対象とされていないと判断された場合、ステップS302に処理が戻され、それ以降の処理が繰り返される。一方、ステップS306において、グループ内の全ての顔は処理対象とされたと判断された場合、図15に示したグループ内の顔評価処理が終了され、ステップS197(図12)に処理が進められる。
図12のフローチャートの説明に戻り、ステップS196において、グループ内の顔評価処理が終了されると、その評価結果により、グループ内の顔の数が減ったか否かが判断される。すなわち、ステップS197において、カウンタの値が3以上であるか否かが判断される。ステップS197において、カウンタの値が3以上ではないと判断された場合、ステップS191に処理が戻され、それ以降の処理が繰り返される。すなわち、第1番目の顔を含むグループ顔の抽出処理(この処理を含む近似直線を用いたグループ化の処理(図6のステップS83))によれば、1つのグループに最低3つの顔が含まれなければグループが形成されないような処理とされている。
一方、ステップS197において、カウンタの値が3以上であると判断された場合、ステップS198に処理が進められる。ステップS198において、近似直線と、グループに含まれている各顔との距離が、所定の範囲内であるか否かが判断される。ステップS198において、近似直線との距離の範囲は一定値以下ではないと判断された場合、ステップS191に処理が戻され、それ以降の処理が繰り返される。この場合、この処理対象とされていたグループは、グループとして設定されない。
一方、ステップS198において、近似直線との距離の範囲は一定値以下であると判断された場合、ステップS199に処理が進められる。ステップS199において、グループのメンバとして確定される。すなわち、その時点で、処理対象とされているグループは、グループの候補から確定とされ、そのグループに含まれる顔が、そのグループを構成するメンバとして確定される。
ステップS199において、グループが確定されると、ステップS200に処理が進められる。ステップS200において、全ての顔iを処理対象としたか否かが判断される。ステップS200において、全ての顔iを処理対象としていないと判断された場合、ステップS191に処理が戻され、それ以降の処理が繰り返される。一方、ステップS200において、全ての顔iを処理対象としたと判断された場合、図12に示した第1番目の顔を含むグループ顔の抽出処理は終了され、ステップS163(図11)に処理が進められる。
ステップS163において、全ての顔を第1番目の顔としたか否かが判断される。このステップS163以降の処理は、既に説明したので、ここではその説明を省略する。ステップS164において、グループ化に使用した近似直線が登録されると、ステップS84(図6)に処理が進められる。
図6に示したフローチャートの説明に戻る。ステップS84において、孤立顔の近似直線グループへの追加処理が実行される。ステップS84の処理は、ステップS83の処理で生成された近似直線によるグループに追加する顔があるか否かを判断する処理である。具体的には、近似直線によるグループ内の含まれる顔のサイズの平均値に対して、一定の大きさを有し、近似直線との距離が一定の範囲内の顔を、そのグループに追加する処理である。このステップS84において実行される、孤立顔の近似直線グループへの追加処理について、図16のフローチャートを参照して説明する。
[孤立顔の近似直線グループへの追加処理について]
ステップS331において、グループ化されていない「可」顔、および「未定」顔があるか否かが判断される。この“孤立顔の近似直線グループへの追加処理”においてのみ、「未定」顔も処理対象とされる。ステップS331において、グループ化されていない「可」顔、および「未定」顔はないと判断された場合、図16に示した孤立顔の近似直線グループへの追加処理に関する処理は終了される。すなわちこの場合、処理対象となる顔がないため、処理は終了される。よって、ステップS331において、グループ化されていない「可」顔、および「未定」顔はないと判断された場合、ステップS85やステップS86(図6)において実行されるグループ化のための処理を省略し、ステップS87に処理が進められるようにしても良い。
一方、ステップS331において、グループ化されていない「可」顔、および「未定」顔があると判断された場合、ステップS332に処理が進められる。ステップS332において、近似直線を利用したグループがあるか否かが判断される。近似直線を利用したグループとは、前段のステップS83において実行された“近似直線を用いたグループ化の処理”の結果、生成されたグループのことである。この図16に示した“孤立顔の近似直線グループへの追加処理”は、既に生成されている近似直線を用いて生成されたグループに対して、新たに顔を追加する処理なので、ステップS332において、近似直線を利用したグループはないと判断された場合、図16に示したフローチャートの処理は終了される。
一方、ステップS332において、近似直線を利用したグループがあると判断された場合、ステップS333に処理が進められる。ステップS333において、処理対象とされるグループが選択される。ステップS334において、選択されたグループ内に含まれる顔の平均顔サイズが算出される。そして、ステップS335において、グループ化されていない「可」顔または「未定」顔のうちの1つの顔が選択され、処理対象に設定される。
ステップS336において、処理対象として選択された顔が、ステップS334で算出された平均顔サイズに対して、一定範囲内の大きさであるか否かが判断される。選択された顔が、平均顔サイズよりも小さいか、または大きいかが判断される。この判断や、このような判断が行われる理由は、例えば、上述したステップS51乃至S53の処理と同様である。簡便に説明すれば、ステップS334乃至S336の処理により、既にグループとされている顔に対して、極端に大きい顔や小さい顔は、そのグループに含まれない顔であると判断され、除外されるために行われる(追加されないようにするために行われる)。
ステップS336において、選択された顔は、グループ内の平均顔サイズに対して一定範囲内ではないと判断された場合、すなわち選択された顔は、グループに追加しないと判断されたことを意味するため、追加するための処理であるステップS337乃至S341の処理をスキップし、ステップS342に処理が進められる。
一方、ステップS336において、選択された顔は、グループ内の平均顔サイズに対して一定範囲内であると判断された場合、すなわち選択された顔は、グループに追加する顔として候補にされたことを意味するため、追加するための処理であるステップS337乃至S341の処理が実行される。ステップS337において、選択されている顔とグループ化した近似直線との距離が求められる。近似直線は、ステップS164(図11)の処理で登録されているため、その登録されている近似直線であり、処理対象とされているグループに対応付けられている近似直線が読み出されて用いられる。
ステップS337において、選択された顔と近似直線との距離が求められると、ステップS338に処理が進められる。ステップS338において、処理対象として選択されている顔が「未定」顔であり、顔の位置が、グループ内のいずれかの顔から一定距離内に位置するか否かが判断される。ステップS338における判断は、処理対象とされている顔が「未定」顔である場合、ステップS338においてYESと判断され、ステップS339に処理が進められる。
処理対象とされている顔が「未定」顔であった場合、その「未定」顔と、グループ内の各顔(「可」顔)との距離が算出される。そして、その距離が、一定距離内であるか否かが判断される。ステップS338において、処理対象とされている「未定」顔とグループ内の各顔(「可」顔)との距離が一定距離内ではないと判断された場合、ステップS342に処理が進められる。すなわちこのような場合、「未定」顔は、処理対象とされているグループには追加されないと判断され、ステップS339乃至341の処理がスキップされて、ステップS341に処理が進められる。
一方、ステップS338において、処理対象とされている「未定」顔とグループ内の各顔(「可」顔)との距離が一定距離内であると判断された場合、ステップS339に処理が進められる。ステップS339において、顔j(この場合、処理対象とされている「可」顔または「未定」顔)と近似直線の判断処理が実行される。この顔jと近似直線の判断処理は、図14に示したフローチャートに基づいて行われる。図14に示したフローチャートについては既に説明したので、ここでは、その説明を省略する。
ステップS339における処理が実行されることにより、“真”または“偽”という判断結果が出力される。“真”との判断結果は、グループに追加する顔であったことを表し、“偽”という判断結果は、グループに追加しない顔であったことを表す。ステップS340において、判断結果は、“真”であったと判断された場合、ステップS341に処理が進められ、“偽”であったと判断された場合、ステップS341の処理はスキップされ、ステップS342に処理が進められる。
ステップS341において、処理対象とされている顔(「可」顔または「未定」顔)が、その時点で処理対象とされているグループに追加され、登録される。このようにして、既に生成されているグループに顔が追加、登録される。
ステップS342において、全てのグループ化されていない「可」顔および「未定」顔を処理対象としたか否かが判断される。ステップS342において、全てのグループ化されていない「可」顔および「未定」顔を処理対象としていないと判断された場合、ステップS335に処理が戻され、まだ処理対象とされていない「可」顔または「未定」顔が選択され、その選択された顔に対して、ステップS336以降の処理が繰り返される。
一方、ステップS342において、全てのグループ化されていない「可」顔および「未定」顔を処理対象としたと判断された場合、ステップS343に処理が進められる。ステップS343において、全てのグループ化に使用した近似直線を処理対象としたか否かが判断される。ステップS343において、全てのグループ化した近似直線(全てのグループ)を処理対象としていないと判断された場合、ステップS343に処理が戻され、まだ処理対象とされていないグループが選択され、ステップS334以降の処理が繰り返される。
一方、ステップS343において、全てのグループ化した近似直線を処理対象としたと判断された場合、図16に示したフローチャートに基づく孤立顔の近似直線グループへの追加処理は終了され、ステップS85(図6)に処理が進められる。
図6のフローチャートの説明に戻る。ステップS84において、孤立顔の近似直線グループへの追加処理が実行されたことにより、条件を満たす孤立顔が、グループに追加される。しかしながら、まだグループに追加されていない、グループ化されていない「可」顔が存在する可能性があるため、ステップS85において、座標の平均からの距離を利用したグループ化の処理が実行される。この“座標の平均からの距離を利用したグループ化”とは、処理対象とされる顔から、第1の顔を選択し、その第1の顔を含む他の顔との座標平均からの各顔の距離を求め、その距離に基づき、最も距離が小さくなるものをグループとして作成する処理である。
「グループ化の処理における座標の平均からの距離を利用したグループ化の処理」
ステップS85において実行される座標の平均からの距離を利用したグループ化の処理について、図17のフローチャートを参照して説明する。ステップS361において、集合Gが空にされる。この集合Gは、“他顔探索処理”(図13)の処理で用いられた集合Gであり、この集合Gは、第1番目の顔や第2番目の顔が入れられる集合である。ステップS361において、集合Gが空集合にされるのは、“他顔探索処理”(図13)のときに入れられた第1番目の顔などが残っている可能性があるため、それらをなくすために行われる。
ステップS362において、グループ化されてない「可」顔が2以上あるか否かが判断される。この“座標の平均からの距離を利用したグループ化の処理”は、“孤立顔の近似直線グループへの追加処理”(ステップS84(図6))と異なり、「可」とのタグが付けられている「可」顔のみが処理対象とされ、「未定」とのタグが付けられた「未定」顔は、処理対象とされない。
ステップS362において、グループ化されていない「可」顔は、2以上ないと判断された場合、図17に示した座標の平均からの距離を利用したグループ化の処理は、終了される。すなわち、グループには、2つの顔が最低限必要なため、2以上の「可」顔がない場合、処理は終了される。
一方、ステップS362において、グループ化されていない「可」顔は、2以上あると判断された場合、ステップS363に処理が進められる。ステップS363において、集合候補Gcが空集合にされる。この集合候補Gcは、集合Gに対して追加する「可」顔の候補が入れられる集合である。
ステップS364において、第1番目の顔が、グループ化されていない「可」顔から選択され、集合候補Gcに入れられる。ステップS364において、第1番目の顔とのグループ化候補判定処理が実行される。
図18のフローチャートを参照し、ステップS365で実行される“第1番目の顔とのグループ化候補判定処理”について説明する。
ステップS381において、ステップS364(図17)において選択された第1番目の顔が、集合候補Gcに追加される。ステップS382において、以下の3つの条件を満たす「可」顔が、処理対象とされている画像内にあるか否かが判断される。
条件1“グループ化されていない”、
条件2“集合候補Gcに含まれていない”、
条件3“k番目の追加顔として未使用の「可」顔である”
の、3つの条件を満たす「可」顔が、処理対象とされている画像内にあるか否かが判断される。条件3の“k番目の追加顔として未使用の「可」顔である”とは、その時点で処理対象とされている第1番目の顔に対して、集合候補Gcに入れるか否かの判断が行われていない「可」顔であることを意味する。
ステップS382において、条件1乃至3を満たす「可」顔があると判断された場合、ステップS383に処理が進められる。ステップS383において、集合候補Gcに対して追加する追加顔が、集合候補Gcに存在していない「可」顔から選択される。
ステップS384において、まず、集合候補Gc内の顔と追加顔との座標平均が算出される。少なくとも集合候補Gcには、ステップS381において追加された第1番目の顔があり、その第1番目の顔の座標と、ステップS383で追加された「可」顔(追加顔)の座標との距離が算出される。仮に、集合候補Gcに第1番目の顔のみが追加されていた場合には、この算出された距離が、集合候補Gcの顔と追加顔との座標平均とされる。
集合候補Gcに、第1番目の顔以外の顔も含まれていた場合、その第1番目の顔以外の顔の座標と、追加顔の座標が用いられ、距離が算出される。このようにして、集合候補Gc内の全ての顔と、追加顔との距離が求められ、求められた距離の総和が求められ、その総和を、集合候補Gc内の顔の数で除算することで、集合候補Gcの顔と追加顔との座標平均が算出される。
さらに、ステップS384においては、算出された座標平均と、集合候補Gc内の各顔との距離、算出された座標平均と追加顔の距離が、それぞれ一定の値(閾値)以下であるか否かが判断される。例えば、座標平均としての座標と、集合候補Gc内の第1番目の顔の座標とが用いられ、その間の距離(距離Aとする)が求められ、座標平均としての座標と、追加顔の座標とが用いられ、その間の距離(距離B)が求められる。この距離Aと距離Bが、ともに閾値以下であるか否かが判断される。
ステップS384において、距離が閾値以下ではないと判断された場合、ステップS382に処理が戻され、それ以降の処理が繰り返される。すなわち、新たに追加顔が選択され、その選択された追加顔に対して、ステップS383以降の処理が繰り返される。
一方、ステップS384において、距離が一定値以下であると判断された場合、ステップS385に処理が進められる。ステップS385において、集合候補Gc内の顔と追加顔との座標の平均と、集合候補Gc内の顔との距離の総和が求められる。集合候補Gc内の顔と追加顔との座標の平均は、ステップS384において算出された座標平均を用いることができる。
例えば、集合候補Gcに第1番目の顔のみが登録されている状態のときであれば、第1番目の顔と追加顔との座標の平均値が算出される(算出されている座標平均が用いられる)。そして、集合候補Gc内には、第1番目の顔のみが登録されている状態なので、第1番目の顔と座標平均との距離が求められ、その距離が、距離の総和とされる。
仮に、集合候補Gc内に、第1番目の顔以外の顔(第2番目の顔とする)が含まれていたような場合、その第2番目の顔と座標平均との距離も求められ、その距離と、第1番目の顔と座標平均との距離とが加算された距離が、距離の総和とされる。
このようにして座標平均と、集合候補Gc内の各顔との距離がそれぞれ求められ、距離の総和が算出される。距離の総和が算出されると、ステップS386に処理が進められる。ステップS386において、追加顔として、グループ化されていない全ての「可」顔が処理対象とされたか否かが判断される。
ステップS386において、追加顔として、グループ化されていない全ての「可」顔が処理対象とされていないと判断された場合、ステップS382に処理が戻され、それ以降の処理が繰り返される。
一方、ステップS386において、追加顔として、グループ化されていない全ての「可」顔が処理対象とされたと判断された場合、ステップS387に処理が進められる。ステップS382乃至S386の処理が繰り返されることで、集合候補Gcに追加される顔の候補が、複数存在している可能性がある。複数存在している場合、どの追加顔が、その時点で処理対象とされている集合候補Gcに追加するのに適しているかを判断し、追加する必要がある。そのために、ステップS387における処理が実行される。
ステップS387において、集合候補Gc内の顔と追加顔の座標平均と、集合候補Gc内の顔との距離との総和が最も小さくなる追加顔が集合候補Gc内に加えられる。
例えば、集合候補Gc内に、第1番目の顔、第2番目の顔、および第3番目の顔が存在し、追加顔Aと追加顔Bが集合候補Gcに追加される候補の顔として処理対象となっている場合を考える。この場合、まず、追加顔Aと座標平均の距離1、追加顔Aと第1番目の顔との距離2、追加顔Aと第2番目の顔との距離3、および追加顔Aと第3番目の顔との距離4がそれぞれ算出される。そして、距離1、距離2、距離3、距離4が加算された値が距離の総和5とされる。
同様に、追加顔Bと座標平均の距離6、追加顔Bと第1番目の顔との距離7、追加顔Bと第2番目の顔との距離8、および追加顔Bと第3番目の顔との距離9がそれぞれ算出される。そして、距離6、距離7、距離8、距離9が加算された値が距離の総和10とされる。
この場合、総和5と総和10が比較され、小さい値が算出された追加顔が、集合候補Gcに加えられる。例えば、総和5の方が、総和10よりも小さい値であった場合、追加顔Aが、集合候補Gcに加えられ、第4番目の顔とされる。
このようにして、集合候補Gcに追加顔が追加されると、ステップS382に処理が戻され、それ以降の処理が繰り返される。ステップS382乃至S387の処理が繰り返されることにより、その時点で、処理対象とされている第1番目の顔とグループとしても良い候補となる顔が、集合候補Gcに追加される。
ステップS387において、集合候補Gcに追加顔が追加されると、ステップS382に処理が戻される。ステップS382における処理については既に説明したが、条件1乃至3の3つの条件を満たすか否かが判断される処理である。ステップS382においては、条件のうちの1つとして条件3があり、その条件3として“k番目の追加顔として未使用の「可」顔があるか”という条件が満たされるか否かが判断される。また、ステップS386において、追加顔としてグループ化されていない全ての「可」顔が処理対象とされたか否かが判断され、その判断結果が、全ての「可」顔が処理対象とされたと判断されたときに、ステップS387に処理がくる。
よって、ステップS387に処理が来たときには、既に、全ての「可」顔が処理対象とされたときであるので、ステップS387からステップS382に処理が来たときには、基本的に、条件1乃至3は満たされないと判断され、処理は、ステップS388に進められる。
ステップS388において、集合Gは空であるか否かが判断される。ステップS388において、集合Gが空ではないと判断された場合、ステップS389に処理が進められる。ステップS389において、集合G内の顔の数の合計と、集合候補Gc内の顔の数の合計が比較され、集合候補Gc内の顔の数の合計の方が、集合G内の顔の数の合計よりも大きいか否かが判断される。
ステップS389において、集合候補Gc内の顔の数の合計の方が、集合G内の顔の数の合計よりも大きくはないと判断された場合、換言すれば、同数、またはそれ以下であると判断された場合、ステップS390に処理が進められる。ステップS390において、集合G内の顔の数の合計と、集合候補Gc内の顔の数の合計が、同数であり、座標平均と各顔の距離の総和は、集合候補Gcの方が小さいか否かが判断される。
座標平均と各顔の距離の総和は、集合G、集合候補Gcのともに、例えば、ステップS387の処理において算出されているため、その値を用いることができる。集合Gは、後述するように、集合候補Gcが集合Gと設定されるため、その集合Gも、ステップS387の処理を経ているため、座標平均と各顔の距離の総和も算出されている。
ステップS390において、集合G内の顔の数の合計と、集合候補Gc内の顔の数の合計が同数であり、座標平均と各顔の距離の総和は、集合候補Gcの方が小さいと判断された場合、ステップS391に処理が進められる。ステップS391には、ステップS388において、集合Gは空ではないと判断された場合、またはステップS389において、集合候補Gc内の顔の数の合計の方が、集合G内の顔の数の合計よりも大きくないと判断された場合にもくる。
ステップS391において、その時点で処理対象とされている集合候補Gcが、集合Gに設定される。すなわち、候補ではなく、グループとして設定される。
ステップS388からステップS391に処理が来るのは、集合Gが空である場合であるので、集合候補Gcと比較する対象がなく、そのためにステップS389とステップS390の処理がスキップされて、ステップS391に処理がくる。また、集合Gが空である場合には、集合候補Gcを集合Gと設定することで、新たなグループを作成するために、このように処理が行われるように構成されている。
ステップS389からステップS391に処理が来るのは、集合候補Gc内の顔の合計の方が、集合G内の顔の合計よりも大きいと判断された場合であり、集合候補Gcに含まれる顔の数が、グループとして設定するのにふさわしい数であると判断できる。よって、この場合も、ステップS391において、集合候補Gcが集合Gと設定される。
ステップS390からステップS391に処理が来るのは、集合G内の顔の合計と、集合候補Gc内の顔の合計が同数であり、座標平均と各顔の距離の総和は、集合候補Gcの方が小さいと判断された場合である。この場合、集合候補Gc内の顔同士は、集合G内の顔同士よりも、小さい範囲内に存在することを意味する。換言すれば、集合候補Gc内の顔同士は、集合G内の顔同士よりも、人間関係的には、より親しい関係にあると判断でき、そのようなときには、ステップS391において、集合候補Gcが集合Gに設定される。
このように、ステップS391において、集合候補Gcが集合Gに設定されると、“第1番目の顔とのグループ化候補判定処理”は終了され、ステップS366(図17)に処理が進められる。
一方、ステップS390において、集合G内の顔の合計と、集合候補Gc内の顔の合計が同数であり、座標平均と各顔の距離の総和は、集合候補Gcの方が小さいと判断された場合も、“第1番目の顔とのグループ化候補判定処理”は終了され、ステップS366(図17)に処理が進められる。
“第1番目の顔とのグループ化候補判定処理”が実行されることで、集合候補Gcが、集合Gに設定され、新たに集合Gが生成されるか、または、集合候補Gcが、集合Gに設定されずに、新たに生成された集合Gが存在しない状態となる。
ステップS366において、第1番目の顔として、グループ化されていない全ての「可」顔が処理対象とされたか否かが判断される。ステップS366において、第1番目の顔として、グループ化されていない全ての「可」顔は、まだ処理対象とされていないと判断された場合、ステップS364に処理が戻され、新たな「可」顔が第1番目の顔として選択され、それ以降の処理が繰り返される。
ステップS364乃至S366の処理が繰り返されることで、グループ化されていない全ての「可」顔が第1番目の顔とされたときに、集合Gが生成されるか否かが判断される。例えば、グループ化されていない「可」顔が3個あった場合、3回、ステップS364乃至S366の処理が繰り返される。
ステップS366において、第1番目の顔として、グループ化されていない全ての「可」顔が処理対象とされたと判断された場合、ステップS367に処理が進められる。ステップS367において、集合Gに顔が加えられているか否かが判断される。この判断は、ステップS391(図18)の処理が行われた否かにより判断結果が異なる。すなわち、ステップS391の処理が行われることにより、集合候補Gcが集合Gと設定された場合、ステップS367において、集合Gに顔が加えられたと判断され、ステップS368に処理が進められる。
一方、ステップS391の処理が行われなかった場合、集合候補Gcが集合Gと設定されることなく、集合候補Gcが残っているため、ステップS367において、集合Gに顔が加えられていないと判断され、ステップS363に処理が戻され、それ以降の処理が繰り返される。この場合、ステップS363において、集合候補Gcが空集合にされることにより、新たな集合候補Gcが作成されることになる。
ステップS368において、集合Gが新規グループとして追加され、ステップS361に処理が戻され、それ以降の処理が繰り返される。すなわち、ステップS361において、集合Gが空集合にされ、ステップS362以降の処理が繰り返されることにより、新たな集合Gに対する処理が実行されることになる。
ステップS368における処理で、集合Gが新規グループとして追加されることにより、その追加される集合Gに含まれる「可」顔は、グループ化された「可」顔になるため、ステップS362以降の処理の対象とはされなくなる。その結果、ステップS362において、グループ化されていない「可」顔が2個以上ないと判断された場合、換言すれば、グループ化されていない「可」顔が、1個または0個であると判断された場合、図17に示した“座標平均からの距離を利用したグループ化の処理”は終了され、ステップS86(図6)に処理が進められる。
図6のフローチャートの説明に戻る。ステップS85において、座標平均からの距離を利用したグループ化の処理が実行されることにより、グループ化されていない「可」顔の個数は、1個または0個となっている。1個の場合、まだグループ化されていない「可」顔が存在することになるため、ステップS86において、単独で残った顔のグループ化の処理が実行される。この“単独で残った顔のグループ化の処理”とは、グループに含まれていない顔を処理対象として、単独で残った顔をグループとする処理であり、顔のサイズが、顔のサイズの平均値に対して一定値以上の大きさがある顔を1つのグループとする処理である。
「グループ化の処理における単独で残った顔のグループ化の処理」
ステップS86において実行される単独で残った顔のグループ化の処理について、図19のフローチャートを参照して説明する。ステップS411において、グループ化されてない「可」顔があるか否かが判断される。この“単独で残った顔のグループ化の処理”は、「可」とのタグが付けられている「可」顔のみが処理対象とされ、「未定」とのタグが付けられた「未定」顔は、処理対象とされない。また、仮にグループ化されていない「可」顔が1つであった場合も処理が実行される。
ステップS411において、グループ化されていない「可」顔はないと判断された場合、処理すべき「可」顔がないことを意味するため、図19に示したフローチャートの処理は終了される。
一方、ステップS411において、グループ化されていない「可」顔があると判断された場合、ステップS412に処理が進められる。ステップS412において、グループ化されていない「可」顔から、1つの「可」顔が処理対象として選択される。ステップS413において、選択された「可」顔のサイズが、平均顔サイズに比べて閾値以上の大きさであるか否かが判断される。
ステップS413において用いられる平均顔サイズは、この処理の前までの処理で生成されたグループがあるか否かにより異なる。すなわち、ステップS83乃至S85の各処理が実行されたことにより、少なくとも1つのグループが生成されていた場合、グループ化されている全ての顔(グループに含まれる全ての顔)のサイズの平均値が、ステップS413において用いられる平均顔サイズとされる。
一方で、ステップS83乃至S85の各処理が実行されたが、グループが1つも生成されなかった場合、全ての「可」顔のサイズの平均値が、ステップS413において用いられる平均顔サイズとされる。この場合、全ての「可」顔の個数は1個である。これは、上述したように、ステップS362(図17)において、グループ化されていない「可」顔が2個以上ないと判断されたときに、ステップS86に処理が進められ、このステップS413の処理が実行されるため、この時点で、全ての「可」顔の個数は1個である。
よって、グループが1つも生成されていない状態で、ステップS413の処理が実行されるときには、平均顔サイズとは、1個の「可」顔のサイズとされる。
ステップS413において、処理対象とされている「可」顔が、平均顔サイズに比べて閾値上の大きさであると判断された場合、ステップS414に処理が進められる。ステップS414において、選択された「可」顔が、単独でグループ化される。すなわちこの場合、グループ化されていない「可」顔であるが、他の顔よりも比較的大きく撮影されている(平均顔サイズに比べて閾値以上の大きさで撮影されている)ため、撮影者が撮影を意図して撮影した人であると判断できる。よって、そのような人(顔)が、グループ化されないことにより、後段の処理対象とされないようなことを防ぐために、単独でもグループが作成されるようにする。
このようにしてステップS414において、単独でグループが作成された場合、または、ステップS413において、平均顔サイズに比べて閾値以上の大きさではないと判断された場合、ステップS415に処理が進められる。ステップS415において、グループ化されていない全ての「可」顔が処理対象とされたか否かが判断される。
ステップS415において、グループ化されていない全ての「可」顔は、処理対象とされていない(まだ処理対象とされていない「可」顔がある)と判断された場合、ステップS412に処理が戻され、まだ処理対象とされていない、グループ化されていない「可」顔が処理対象とされ、それ以降の処理が繰り返される。
一方、ステップS415において、グループ化されていない全ての「可」顔は、処理対象とされたと判断された場合、図19に示したフローチャートの処理は終了され、ステップS87(図6)に処理が進められる。
ステップS87の処理に関する説明の前に、ここまでの処理で作成されたグループについて、図20を参照して説明する。図20に示した処理対象とされた画像201には、顔211乃至227が撮像されている。図20中、顔の周りの四角形は、抽出された顔の範囲を示している。顔211乃至顔220は、ほぼ直線上に並んでいるため、“近似直線を用いたグループ化の処理”(図6のステップS83における処理)により、グループ化(グループAとする)される。ただし、顔216は、“孤立顔の近似直線への追加処理”(図6のステップS84の処理)によりグループAに追加される。同様に、顔221乃至顔225も、ほぼ直線上に並んでいるため、近似直線を用いたグループ化の処理(図6のステップS83における処理)により、グループ化(グループBとする)される。
顔226や顔227は、グループAが生成されたときに用いられた近似直線や、グループBが生成されたときに用いられた近似直線と離れているため、グループA、グループBのどちらにも含まれない。また、ステップS84(図6)において、“孤立顔の近似直線グループへの追加処理”においても、グループAの近似直線や、グループBの近似直線とは離れているため、この処理においては、グループ化されてない「可」顔として扱われる。
顔226と顔227は、比較的近い位置に存在している。このためステップS85における“座標平気からの距離を利用したグループ化の処理”が実行されることにより、顔226と顔227は、1つのグループ(グループCとする)とされる。
画像201からは、グループA乃至Cの3つのグループが生成される。この場合、ステップS85における処理が実行されることにより、グループ化されていない「可」顔が存在しない状態となる。よって、ステップS86において“単独で残った顔に対するグループ化の処理”が実行されても、ステップS411(図19)において、グループ化されていない「可」顔は存在しないと判断され、グループ化の処理は終了される。
[多層化の処理について]
このようにして複数のグループが生成された場合、ステップS87(図6)において、多層化の処理が実行される。上記したような処理が実行されることにより、1または複数の顔を含むグループが作成されると、作成されたグループを、さらにまとめるような処理が実行される。ステップS87において実行される多層化の処理について、図21を参照して説明する。
図21Aは、処理対象とされている画像について説明するための図である。図21Aに示したように、画像251には、顔261乃至266の6個の顔が撮像されている。顔261乃至顔263は、画像251の上側、左側部分で、横並びの状態で撮像され、顔264、顔265は、画像251の下側、左側部分で、横並びの状態で撮像されている。顔266は、顔261乃至265とは離れた位置で、下側、右側の部分に、単独で撮像されている。
このような画像251が、処理対象とされるとき、グループ化される前の状態を、擬似的に図示すると、図21Bとなる。図21Bは、画像251に撮像されている顔261乃至266を、横並びに並べた状態である。
このような画像251に対して、図6に示した“グループ化の作成処理”が実行されると、図21Cに示すようにグループが生成される。顔261乃至263は、近い範囲で横並びに撮像されているため、例えば、“近似直線を用いたグループ化の処理”(ステップS83)でグループ271とされる。
同様に、顔264、顔265も、近い範囲で横並びに撮像されているため、例えば、“近似直線を用いたグループ化の処理”(ステップS83)でグループ272とされる。これらに対して、顔266は、顔261乃至265とは離れた位置に単独で撮像されているため、“近似直線を用いたグループ化の処理”(ステップS83)でグループ化はされず、“単独で残った顔に対するグループ化の処理”(ステップS86)でグループ273にされる。
このように、画像251からは、図21Cに示すように、3つのグループ271、グループ272、およびグループ273が生成される。これらの3つのグループが、さらに多層化される。すなわち、図21Dに示すように、グループ271とグループ272が、比較的近い位置に存在するグループであるので、それらのグループ271とグループ272を含むグループ281が生成される。換言すれば、グループ271とグループ272は、そのグループ同士の距離が、所定の閾値内である場合、結合したグループ281が生成される。
さらに、グループ281とグループ273が、そのグループ同士の距離が、所定の閾値内であると判断され、結合したグループ291が生成される。
このように、グループが生成され、そのグループ同士の距離が所定の閾値内であるグループ同士が、さらに大きなグループとして生成され、といった処理が繰り返される。図21に示した例では、図21Cに示したグループ271,272,273が第1階層のグループとされ、図21Dに示したグループ281が第2階層のグループとされ、図21Eに示したグループ291が第3階層のグループとされる。
このように、複数の階層のグループは、最終的に全てのグループが1つの最上層グループにまとまるまで行われる。
このような多層化の処理は、後述するタグ付けのときに用いられるのだが、そのタグ付けの結果が、例えば、第1階層のグループは、子供のグループと親のグループであり、第2階層のグループは、家族のグループであるといったように分類し、処理することが可能となる。
このような処理により、多層化の処理が行われると、図6に示した“グループ化作成処理”は、終了され、処理は、ステップS34(図3)に進められる。
[構成タグの付加に関する処理について]
図3のフローチャートの説明に戻る。ステップS33において、グループ作成処理が実行されることにより、グループが生成されると、その生成されたグループにタグを付けるといった処理が、ステップS34において実行される。ステップS34において実行される“構成タグの付加に関する処理”について、図22のフローチャートを参照して説明する。
ステップS441において、処理対象とされている画像内の所定のグループに対して、そのグループ内の人数、性別、年齢が確認される。例えば、ステップS12(図2)において、顔認識処理が行われとき、顔認識部31により、画像内における顔の位置、顔の大きさ、顔の向き、顔の属性(例えば、性別、年齢など)、顔の特徴量などが抽出されている。また、認識顔毎に、その顔を一意に識別するためのユニークなID(顔ID)が割り振られる。
よって、このステップS441における処理では、所定のグループ内に存在する顔の顔IDが取得され、その顔IDに関連付けられて記憶されている性別や年齢などの顔の属性情報が取得される。
ステップS441においては、グループ内の合計人数、グループ内の顔が、大人の男性、大人の女性(さらには、老人の男性、老人の女性)、男の子、女の子、大人の人数、子供の人数といった情報が、グループ毎に生成される。
このような情報は、グループ内の人同士が、どのような構成なのか、例えば、家族、友人同士、といった関係を類推するための情報として用いることができる。例えば、処理対象とされるグループが家族であった場合、大人、かつ男女と、子供が含まれる場合が多く、そのような情報が取得されたときには、そのグループは家族関係があると類推できる。
ステップS442において、グループ内の各顔が、笑顔であるか否かが判断され、笑顔である顔の数が、グループ内の顔の数のどの程度を占めるかの割合が笑顔判定スコアとして算出される。この笑顔の判定は、既存の技術を用いることができる。また、ここでは、グループ内の顔の個数に対する笑顔の顔の個数の割合を笑顔判定スコアとするとして説明を続けるが、他の方法で算出される値を笑顔判定スコアとしても良い。
例えば、グループ内の各顔が、どの程度の笑い顔であるかのスコアを顔毎に算出し、そのスコアの総和や、乗算した値などを、そのグループに対する笑顔判定スコアとしても良い。このような笑顔判定スコアという情報を用いることで、例えば、笑顔であれば、楽しいときに撮った写真であると判断でき、そのような楽しいときに写真を撮影する仲である、例えば、親しい友人同士であると判断することができる。
ステップS443において、ズーム判定スコアが算出される。このズーム判定スコアとは、グループ内で一定の閾値以上の顔サイズの有無を示すスコアである。このズーム判定スコアという情報から、その画像における処理対象とされているグループ内での主役が、どの顔であるのかといったようなことを推測することが可能である。
ステップS444において、顔サイズスコアが算出される。この顔サイズスコアとは、グループ内の顔のサイズの平均値のことである。顔のサイズの平均値を求めることで、例えば、グループの顔のサイズの平均値が大きければ、そのグループの人達が、その画像内で重要な人達であるといった推測をすることが可能である。
なお、ステップS443でズーム判定スコアが算出されるときや、ステップS444で顔サイズスコアが算出されるとき、顔のサイズが算出されるが、このサイズは、グループを作成する上述した処理で、何度か算出されているため、その算出された値を用いることが可能であり、そのようにした方が、より効率的に処理を行うことができるため、好ましい構成である。
ステップS445において、グループ内の人数は、2人であるか否かが判断される。グループ内の人数が2人である場合、その2人は、等しい関係にある可能性が高いと判断される。例えば、カップルなどは、2人だけで撮像されていることが多いと考えられ、かつ、寄り添って撮像されていることが多いと考えられる。このようなことを考慮し、グループ内の人数が2人である場合、その2人の距離を測定することで、親密な関係であるか否かが判断されるようにする。
すなわち、ステップS445において、グループ内の人数は、2人であると判断された場合、ステップS446に処理が進められ、顔同士の距離が算出される。例えば、顔の中心部分の座標を用いることで、顔同士の距離が算出される。この算出された距離が、一定の閾値以下である場合、顔同士が近い位置にあると判断され、等しい間柄でると判断される。
このように、ステップS446において、顔同士の距離が算出された場合、または、ステップS445において、グループ内の人数は、2人ではないと判断された場合、ステップS447に処理が進められる。ステップS447において、各スコアから、属性候補が判断され、タグが付与される。
ここで、属性候補を判断するときに参照されるテーブルについて、図23を参照して説明する。また、属性候補が判断され、タグを付与するときに参照されるテーブルについて、図24を参照して説明する。
なおここでは、テーブルとして説明し、このテーブルは、例えば、グループ化の処理を実行するグループ化部25(図1)に記憶され、適宜参照されるとして説明する。しかしながら、テーブルとして保持され、参照されるのではなく、プログラムなどの処理フローの1ステップとして、順次判断が行われるなどの処理で実現されても良い。また、ここでは、図23に示したテーブル321と図24に示したテーブル322は、別々のテーブルであるとして説明をするが、1つのテーブルにまとめることも可能である。さらに、これらのテーブルは、更新することも可能であるため、システムのバージョンアップなどのときに適宜更新することが可能である。さらに、以下に示す数値などは、一例であり、限定を示すものではない。
図23に示したテーブル321は、タグ名と備考が関連付けられたテーブルである。また、備考欄には、そのタグ名が付与されるときの条件が記載されている。図24に示したテーブル322は、タグ名、ID、意味、および備考が関連付けられたテーブルである。
テーブル321を参照することで、“ATR_NONE”とのタグ名は、“ラベル情報がない”グループに対して付けられることがわかる。そして、ラベル情報がないとは、“タグ情報なし”という意味であり、そのようなグループに対してはIDとして“0”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_SOLO”とのタグ名は、“グループ化あり”であり“一人組”であるグループに対して付けられることがわかる。そして、“グループ化あり”であり“一人組”であるとは、“独り者”という意味であり、そのようなグループに対してはIDとして“1”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_FAMILY”とのタグ名は、“グループ化あり”であり、“人数 > 2 ”であり、“(ATR_MAN + ATR_WOMAN ) > 0 ”であり、“ ATR_CHILD > 0”であり、“ ATR_MAN とATR_CHILDの人数比 <= Th1”であるグループに対して付けられることがわかる。
“人数 > 2 ”とは、グループ内の人数が、2人より多いという条件(条件1とする)である。 “ATR_MAN”とは、後述するように男性の意味(男の子は含まない)であり、“ATR_WOMAN”とは女性の意味(女の子は含まない)である。よって、“(ATR_MAN + ATR_WOMAN ) > 0 ”とは、年齢が一定以上の、男性と女性が、合計で2人より多いときという条件(条件2とする)である。“ATR_CHILD”とは、子供(男の子、女の子を総称して子供とする)を意味する。よって、“ATR_CHILD > 0”とは、子供の数が、0人より多いときであるという条件(条件3とする)である。
さらに“ATR_MAN とATR_CHILDの人数比 <= Th1”とは、男性と子供の人数比が閾値Th1以下であるという条件(条件4とする)である。そして、これらの条件1乃至4が満たされるときは、“家族”という意味であり、そのようなグループに対してはIDとして“2”が付けられることが、テーブル322を参照することでわかる。
この条件1乃至4を満たすか否かのときに用いられる情報は、ステップS441(図22)の処理で取得されたグループ内の人数、性別、年齢に関する情報である。なお、これらの数値や条件は一例である。例えば、閾値Th1は、ユーザにより設定可能な値である。また、条件1乃至4との記述をしたが、これらの条件も、一例であり、適宜変更可能であり、またユーザにより変更可能に構成されていても良い。すなわち、“家族(Family)の定義として、ユーザが望む条件が、ユーザにより設定されるようにされていても良く、そのようにした場合、適宜、上述した数値は変更される。
テーブル321を参照することで、“ATR_PARENT_CHILD”とのタグ名は、“グループ化あり”であり、“ATR_MAN =1”または“ ATR_WOMAN = 1”という条件を満たし、かつ、“ATR_CHILD =1”であるグループに対して付けられることがわかる。すなわち、“ATR_PARENT_CHILD”とのタグ名は、グループ化されているグループに対して、男性が1人であるか、女性が1人であるグループであり、かつ、子供が1人であるグループに対して付けられタグ名であることが、テーブル321を参照することでわかる。
なお、“ATR_MAN =1”または“ ATR_WOMAN = 1”という条件にしたが、“ATR_MAN =1”および“ ATR_WOMAN = 1”という条件でも良い。また、親子(PARENT_CHILD)の定義として、子供が1人の親子や、2人の親子など、さまざまな構成が考えられるため、“ATR_CHILD =1”という条件の“1”という数値も、例えば、デフォルトとしておき、ユーザが、自分の家族構成を反映して、例えば、子供が2人なら、“2”と変更できる数値とされている。
これらの条件が満たされるか否かの判断のときに用いられる情報は、ステップS441(図22)の処理で取得されたグループ内の人数、性別、年齢に関する情報である。そして、これらの条件が満たされるとき、“親子(父母を問わず)”という意味であり、そのようなグループに対してはIDとして“20”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_COUPLE”とのタグ名は、“グループ化あり”であり、“ATR_MAN = 1”であり、“ ATR_WOMAN = 1”であり、かつ、“ 顔間距離<1.5”であるか、もしくは、“顔間距離 > 1.5”であり、“顔間距離 < 2”であり、“どちらかが笑顔”であるグループに対して付けられることがわかる。そして、これらの条件が満たされるとき、“ATR_COUPLE”とのタグ名が付けられ、“カップル”という意味であり、そのようなグループに対してはIDとして“21”が付けられることが、テーブル322を参照することでわかる。
カップルであるため、条件として、“ATR_MAN = 1”であり、かつ“ ATR_WOMAN = 1”という条件がある。すなわち、男性と女性が1人ずつであるという条件がある。この条件が満たされるとき、さらに、カップルであると判断されるために、“顔間距離<1.5”であるという条件もある。すなわち、男女の距離が、1.5未満である場合、お互い寄り添っている状態であると判断できるため、カップルと判断するための条件として入れてある。
または、男性と女性が1人ずつであるという条件が満たされるとき、さらにカップルであると判断されるために、“顔間距離 > 1.5”であるが、“顔間距離 < 2”であり、“どちらかが笑顔”であるという条件もある。すなわち、男女の距離が、1.5より大きいということで、多少の距離があるが、2よりも小さいということで、親しい間柄の距離であると判断できる。かつ、男女のうちのどちらかが笑顔であれば、カップルである可能性が高いと判断できるため、これらの条件が入れてある。
このカップルというタグ名を付与するか否かの判断を行うときの情報は、ステップS441の処理で取得されたグループ内の人数、性別、年齢といった情報、ステップS442で取得された笑顔判定スコアの情報、およびステップS446で取得された顔同士の距離に関する情報である。
なお、“顔間距離 > 1.5”や、“顔間距離 < 2”との表記をしたが、この“1.5”や“2”との数値は、顔同士の距離の算出の仕方、単位などに依存して変化する数値であるため、“1.5”や“2”に限定されるわけではない。また、これらの値は一例であり、実施のときに適切な数値が設定されることを意味する。以下の説明においても、数値をあげるが、その数値は限定を示すものではなく、一例を示すものである。
テーブル321を参照することで、“ATR_FRIENDS_ADULT”とのタグ名は、“グループ化あり”であり、“(ATR_MAN+ ATR_WOMAN) =2”であり、“顔間距離 < 2”であるか、または“ 顔間距離 > 2 ”であり、“顔間距離 < 4” であり、“どちらかが笑顔”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_FRIENDS_ADULT”とのタグ名は、“友人2人組(大人)”という意味であり、そのようなグループに対してはIDとして“22”が付けられることが、テーブル322を参照することでわかる。
大人の友人の2人組であることを判断するための条件として、まず、“(ATR_MAN+ ATR_WOMAN) =2”という条件が挙げられている。この条件は、男性の2人組であるか、女性の2人組であるか、または、男性1人と女性1人の組み合わせのいずれかであれば、満たされる条件である。
なおここでは、後述するように、“ATR_FRIENDS_GROUP_ADULT”というタグ名を設け、2人組の友達と、複数の友達のグループとを区別するために、“(ATR_MAN+ ATR_WOMAN) =2”との条件を例示したが、このような区別を行わない場合や、3人組の友達とのタグ名を付けたい場合など、適宜変更可能である。後述する“ATR_FRIENDS_GROUP_ADULT”なども、同様に、数値は、適宜変更可能であり、ユーザが所望な人数設定を行えるように構成されている。また、この設定された人数に応じて、図24の“意味”という欄に書き込まれている情報も更新される。例えば、ここでは、“友人2人組(大人)”との意味が書き込まれているが、“(ATR_MAN+ ATR_WOMAN) =3”と変更された場合、“友人3人組(大人)”との意味に更新される。他の部分においても同様である。
大人が2人存在するとき、“顔間距離 < 2”という条件が満たされれば、すなわち、顔同士が所定の閾値以下の距離であるときには、その2人は親しい間柄であると判断でき、友人であるというタグが付けられる。また、大人2人が存在するとき、“ 顔間距離 > 2 ”であり、少し離れた位置にいるが、“顔間距離 < 4” であるため、そんなに離れた位置にいるわけでもない、よって知らない仲ではないと推測できる状態の条件が満たされているとき、さらに“どちらかが笑顔”であるという条件が満たされれば、友人であると判断でき、友人とのタグが付けられる。
この“友人2人組(大人)”というタグ名を付与するか否かの判断を行うときの情報は、ステップS441の処理で取得されたグループ内の人数、性別、年齢といった情報、ステップS442で取得された笑顔判定スコアの情報、およびステップS446で取得された顔同士の距離に関する情報である。
テーブル321を参照することで、“ATR_FRIENDS_ CHILD”とのタグ名は、“グループ化あり”であり、“ATR_ CHILD =2”であり、“顔間距離 < 2”であるか、または“ 顔間距離 > 2 ”であり、“顔間距離 < 4” であり、“どちらかが笑顔”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_FRIENDS_A CHILD”とのタグ名は、“友人2人組(子供)”という意味であり、そのようなグループに対してはIDとして“23”が付けられることが、テーブル322を参照することでわかる。
子供の友人の2人組であることを判断するための条件として、まず、“ATR_ CHILD =2”という条件が挙げられている。この条件は、子供の2人組であるときに満たされる条件である。子供が2人存在するとき、“顔間距離 < 2”という条件が満たされれば、すなわち、顔同士が所定の閾値以下の距離であるときには、その2人は親しい間柄であると判断でき、友人であるというタグが付けられる。
また、子供2人が存在するとき、“ 顔間距離 > 2 ”であり、少し離れた位置にいるが、“顔間距離 < 4” であるため、そんなに離れた位置にいるわけでもない、よって知らない仲ではないと推測できる状態の条件が満たされているとき、さらに“どちらかが笑顔”であるという条件が満たされれば、友人であると判断でき、友人とのタグが付けられる。
この“友人2人組(子供)”というタグ名を付与するか否かの判断を行うときの情報は、ステップS441の処理で取得されたグループ内の人数、性別、年齢といった情報、ステップS442で取得された笑顔判定スコアの情報、およびステップS446で取得された顔同士の距離に関する情報である。
テーブル321を参照することで、“ATR_FRIENDS_GROUP_ADULT”とのタグ名は、“グループ化あり”であり、“人数>2”かつ“ (ATR_MAN+ ATR_WOMAN) > Th2* ATR_CHILD”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_FRIENDS_GROUP_ADULT”とのタグ名は、“友人3人以上(大人)”という意味であり、そのようなグループに対してはIDとして“30”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_FRIENDS_GROUP_CHILD”とのタグ名は、“グループ化あり”であり、“人数>2 ”かつ“ATR_CHILD > Th3* (ATR_MAN+ ATR_WOMAN)”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_FRIENDS_GROUP_CHILD”とのタグ名は、“友人3人以上(子供)”という意味であり、そのようなグループに対してはIDとして“31”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_MAN”とのタグ名は、“個人追加時”であり、“adult - baby > Th4 adult >Th 5 gender >= Th6”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_MAN”とのタグ名は、“男性”という意味であり、そのようなグループに対してはIDとして“51”が付けられることが、テーブル322を参照することでわかる。なお、Th4、Th5、Th6は、それぞれ所定の閾値である。
テーブル321を参照することで、“ATR_WOMAN”とのタグ名は、“個人追加時”であり、“adult - baby > Th7 adult > Th8 gender < Th9”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_WOMAN”とのタグ名は、“女性”という意味であり、そのようなグループに対してはIDとして“52”が付けられることが、テーブル322を参照することでわかる。なお、Th7、Th8、Th9は、それぞれ所定の閾値である。
テーブル321を参照することで、“ATR_CHILD”とのタグ名は、“個人追加時”であり、“≠ adult, unclear”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_CHILD”とのタグ名は、“子供”という意味であり、そのようなグループに対してはIDとして“53”が付けられることが、テーブル322を参照することでわかる。
テーブル321を参照することで、“ATR_UNCLEAR”とのタグ名は、“個人追加時”であり、“adult - baby > Th10 adult <= Th11”であるという条件が満たされるときのグループに対して付けられることがわかる。そして、これらの情報が満たされるとき、“ATR_UNCLEAR”とのタグ名は、“素性不明”という意味であり、そのようなグループに対してはIDとして“99”が付けられることが、テーブル322を参照することでわかる。なお、Th10、Th11は、それぞれ所定の閾値である。
このようなタグ名(タグ名に対応するID)が、図22のフローチャートを参照して説明した処理が実行されることで取得される各スコアが用いられて決定される。なお、図23や図24を参照したタグ名などは、一例である。よって、図23や図24に示していないタグ名や、そのタグ名と関連付けられる条件など、追加、削除、変更可能である。また、図24に示したIDも、一例である。
このようにして、ステップS447における処理、すなわち、各スコアから属性候補が判断され、タグが付与されるという処理が実行されることにより、画像内のグループに対してタグが付けられる。ステップS447における処理が終了されると、処理は、ステップS35(図3)に進められる。
[グループ構成データの出力について]
図3のフローチャートの説明に戻り、ステップS34において、構成タグの付与に関する処理が終了されると、ステップS35において、グループ構成データが出力される。グループ化の処理は、グループ化部25(図1)で行われ、その処理結果は、人物相関データ生成部23と、顔クラスタリング部26に供給される。
ステップS35の処理が終了されると、処理は、ステップS14(図2)に進められる。ステップS14において、処理対象とされる画像データの全てを処理したか否かが判断される。すなわち、上述したグループ化の処理は、1の画像データ(1の画像)毎に行われる。そこで、ステップS14において、処理対象とされる画像データの全てを処理したか否かが判断される。“処理対象とされる画像データ”とは、例えば、所定のフォルダ内に記憶されている画像データの全てであり、ここでは、画像データベース42に記憶されている画像データの全てである。
ステップS14において、処理対象とされる画像データの全ては処理していないと判断された場合、ステップS11に処理が戻され、それ以降の処理が繰り返される。ステップS11乃至S14の処理が繰り返されることにより、画像毎に、顔が検出され、グループが生成される。そして、ステップS14において、処理対象とされる画像データの全てを処理したと判断された場合、ステップS15に処理が進められる。
ステップS15において、顔クラスタリングの処理が実行される。また、ステップS16において、顔クラスタリングの処理の結果を利用して人物が生成される。上記したように、複数の画像が処理されることにより、複数の画像から、複数の顔が抽出されている。それらの複数の顔のうち、一致する顔、すなわち、同一人物の顔は、同一人物の顔であるとしてまとめ、処理できるようにするための処理が、ステップS15,S16において実行される。
顔クラスタリング部26は、顔認識部31から供給される顔識別特徴量、顔ID、画像IDを取得すると、それらの情報を用いて、顔クラスタリング処理を実行する。すなわち、顔識別特徴量同士の類似度を用いて、同一人物であると判断される顔を抽出することで、グループピングを行う。
各顔には、顔IDが付されているため、同一人物であると判断された顔の顔IDを統括するID(人物IDとする)を新たに割り振り、顔IDと人物IDで、1つの顔を管理するようにしても良い。または、同一人物であると判断された顔の顔IDを、同一のIDに書き直して、顔IDだけで、1つの顔を管理するようにしても良い。なお、このようにした場合であっても、上述してきた顔IDと区別するために、以下の説明においては、人物IDと記述する。すなわち、ここでは、顔IDは、顔画像を識別するためのIDであり、人物IDは、人物を識別するためのIDであるとして説明を続ける。
このような処理が繰り返されることにより、複数の人物が生成される。複数の人物が生成されると、それらの人物同士の親密度が計算される。すなわち、ステップS17において、人物間の親密度の算出処理が実行される。このステップS17において実行される人物間の親密度の算出処理について、図25のフローチャートを参照して説明する。
ステップS481において、顔クラスタリングにより同一人物の判断が行われる。この処理が実行される前の処理で、既に、同一人物と判断される顔は、グルーピングされているので、その結果を用いることができる。
ステップS482において、人物毎に登場回数が算出される。これは、グルーピングされたグループ内に、いくつの顔が含まれているかを判断することで算出される。算出された登場回数は、人物毎に記憶される。
ステップS482において、人物毎に登場回数が算出されると、ステップS483に処理が進められる。ステップS483において、処理対象とする人物が選択される。例えば、処理対象とされる人物IDが選択されることで行われる。
ステップS484において、他の人物との親密度スコアを算出するための距離スコアが算出される。ステップS484において、画像内でのグループ間の距離のスコア(距離スコア)が算出される。処理対象とされている画像内には、複数のグループが生成されている可能性がある。距離スコアは、次式(13)に基づいて算出される。
式(13)において、Scorefは、顔ID(人物ID)間のグループ間の距離スコアを表し、Ntreeは、グループ間の階層の差を表す。階層とは、多層化の処理のときに説明した階層であり、図21を参照して説明した階層のことである。なお、ここでは、式(13)に基づき距離スコアが算出されるとして説明するため、例えば、図26Cなどで、距離スコアとして、式(13)に基づき算出された具体的な数値を例示して説明している。しかしながら、式(13)は、距離スコアを算出する一例の式にすぎず、他の式に基づいて距離スコアが算出されても良い。よって、以下に例示する数値は、式(13)に基づくときであり、他の式に基づいて算出される場合には、異なる値となることは言うまでもない。ここで、図26を参照して、階層を用いた場合の距離スコアの算出についてさらに説明を加える。
図26Aに示した画像351が処理対象とされた画像であり、まだグループ化の処理が実行されていないときの画像であるとする。図26Aに示した画像351には、4つの顔361乃至364が抽出される。それぞれの顔の位置関係は、顔361と顔362が近く、顔363が、顔362よりも離れた位置であるが、他の顔よりも大きく、顔364は、顔361乃至363と離れた位置に位置している。
このような画像に対してグループ化の処理が実行された結果、図26Bに示したように、グループが生成されたとする。顔361と顔362は、グループ381に含まれ、そのタグは、“カップル”とのタグが付けられた。このグループ381は、第1階層のグループである。顔361乃至363は、グループ382に含まれ、そのタグは、“友達”とのタグが付けられた。このグループ382は、第2階層のグループである。顔361乃至364は、グループ383に含まれ、そのタグは、“友達”とのタグが付けられた。このグループ383は、第3階層のグループである。
このようにグループが生成され、タグが付けられている画像が、親密度スコアの算出対象とされた場合、顔ID同士のグループ間の距離スコアが算出される。顔361と顔362は、同一階層に属するため、Ntreeは、“0”である。よって、このNtree=0を、式(13)に代入すると、“2”というScorefが算出される。よって、顔361と顔362の距離スコアは、2である。
このような計算結果を、図26Cに示すような表に書き込むとする。なおここでは、説明の都合上、表形式で顔ID、距離スコア、およびタグが管理され、処理されるとして説明をするが、表形式で管理されることに限定を示すものではない。顔ID、距離スコア、およびタグを管理し、処理できる形式であれば、どのような形式であっても良い。
図26Cに示した表391の縦と横は、それぞれ顔IDが記載されている。顔IDとして、図26Cでは、図26Aに示した画像351のところで付した符号を用いる。顔IDとして“361”と顔IDとして“362”が交わる欄には、距離スコアとして“2”との数値が書き込まれる。また、顔361と顔362は、“カップル”というタグが付けられているので、“Couple”とのタグ名が書き込まれている。
同様に、顔361と顔363は、第1階層と第2の階層にそれぞれ属するため、Ntreeは、“1”である。よって、このNtree=1を、式(13)に代入すると、“1”というScorefが算出される。よって、顔361と顔363の距離スコアは、1である。図26Cに示した表391では、顔IDとして“361”と顔IDとして“363”が交わる欄には、距離スコアとして“1”との数値が書き込まれる。また、顔361と顔363は、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
同様に、顔361と顔364は、第1階層と第3の階層にそれぞれ属するため、Ntreeは、“2”である。よって、このNtree=2を、式(13)に代入すると、“0.5”というScorefが算出される。よって、顔361と顔364の距離スコアは、0.5である。図26Cに示した表391では、顔IDとして“361”と顔IDとして“364”が交わる欄には、距離スコアとして“0.5”との数値が書き込まれる。また、顔361と顔364は、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
同様に、顔362と顔363は、第1階層と第2の階層にそれぞれ属するため、Ntreeは、“1”である。よって、このNtree=1を、式(13)に代入すると、“1”というScorefが算出される。よって、顔362と顔363の距離スコアは、1である。図26Cに示した表391では、顔IDとして“362”と顔IDとして“363”が交わる欄には、距離スコアとして“1”との数値が書き込まれる。また、顔362と顔363は、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
同様に、顔362と顔364は、第1階層と第3の階層にそれぞれ属するため、Ntreeは、“2”である。よって、このNtree=2を、式(13)に代入すると、“0.5”というScorefが算出される。よって、顔362と顔364の距離スコアは、0.5である。図26Cに示した表391では、顔IDとして“362”と顔IDとして“364”が交わる欄には、距離スコアとして“0.5”との数値が書き込まれる。また、顔362と顔364は、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
同様に、顔363と顔364は、第2階層と第3の階層にそれぞれ属するため、Ntreeは、“1”である。よって、このNtree=1を、式(13)に代入すると、“1”というScorefが算出される。よって、顔363と顔364の距離スコアは、1である。図26Cに示した表391では、顔IDとして“363”と顔IDとして“364”が交わる欄には、距離スコアとして“1”との数値が書き込まれる。また、顔363と顔364は、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
このように、式(13)に基づいて顔ID同士のグループ間の距離スコアが算出されると、ステップS485に処理が進められる。ステップS485において、距離スコアを加算することにより、親密度スコアが算出される。親密度スコアは、画像内の顔ID間のグループ間距離スコアを、同一人物毎に足し合わせること算出される。
このことについて、図27を参照して説明する。まず、図27Aに他の画像に対して行われた処理の結果を示す。図27Aも、図26と同じく、顔361乃至364が撮像されている画像が処理対象とされたときであるとする。このとき、図27Aに示した処理結果では、顔361と顔363は、グループ401に含まれ、そのタグは、“カップル”とのタグが付けられた。このグループ401は、第1階層のグループである。顔361乃至363は、グループ402に含まれ、そのタグは、“友達”とのタグが付けられた。このグループ402は、第2階層のグループである。顔361乃至364は、グループ403に含まれ、そのタグは、“友達”とのタグが付けられた。このグループ403は、第3階層のグループである。
このようなグループが生成され、タグが付けられた場合、図27Bに示すような表411が算出される。表411に書き込まれている距離スコアの算出については、図26Cの表391の作成のときに説明したので、ここでは省略する。
表411において、顔IDとして“361”と顔IDとして“362”が交わる欄には、距離スコアとして“1”との数値が書き込まれ、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。表411において、顔IDとして“361”と顔IDとして“363”が交わる欄には、距離スコアとして“2”との数値が書き込まれ、“カップル”というタグが付けられているので、“Couple”とのタグ名が書き込まれている。
表411において、顔IDとして“361”と顔IDとして“364”が交わる欄には、距離スコアとして“0.5”との数値が書き込まれ、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。表411において、顔IDとして“362”と顔IDとして“363”が交わる欄には、距離スコアとして“1”との数値が書き込まれ、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
表411において、顔IDとして“362”と顔IDとして“364”が交わる欄には、距離スコアとして“1”との数値が書き込まれ、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。表411において、顔IDとして“363”と顔IDとして“364”が交わる欄には、距離スコアとして“0.5”との数値が書き込まれ、“友達”というタグが付けられているので、“Friend”とのタグ名が書き込まれている。
このように、画像毎に、顔ID同士の距離スコアが算出されるため、画像毎に、図26Cや図27Bに示したような表391(411)が生成される。このようにして画像毎に表が生成された場合、ステップS485において、画像内の顔ID間の距離スコアが、同一人物毎に足し合わされることで、親密度スコアが算出される。
表391と表411を参照しながら説明する。画像内の顔ID間の距離スコアは、表391と表411に既に書き込まれている。“距離スコアが、同一人物毎に足し合わされる”とは、例えば、顔361と顔362の距離スコアが足し合わされることを意味する。顔361と顔362の距離スコアは、表391では“2”であり、表411では“1”である。よって、顔361と顔362の距離スコアが足し合わされ結果は、“3”(=2+1)となる。この“3”が、顔361と顔362の親密度スコアとされる。
また、顔361と顔362のタグは、表391では“Couple”であり、表411では“Friend”である。よって、この場合、顔361と顔362のタグは、“Couple”と“Friend”という異なる2つのタグが付くことになる。このような処理が繰り返されることにより、表421が生成されるとする。なお、ここでは、表421が生成されるとして説明を続けるが、表形式でなくても良い。
表421において、顔IDとして“361”と顔IDとして“363”が交わる欄には、親密度スコアとして“3”との数値が書き込まれ、“Couple”というタグと、“Friend”というタグが付けられている。これは、顔361と顔363の距離スコアは、表391では“1”であり、表411では“2”であるため、それらの値が加算された“3”が、親密度スコアとして表421に書き込まれるからである。また、顔361と顔363のタグは、表391では“Friend”であり、表411では“Couple”であるため、この2つのタグが表421に書き込まれるからである。
表421において、顔IDとして“361”と顔IDとして“364”が交わる欄には、親密度スコアとして“1”との数値が書き込まれ、“Friend”というタグが付けられている。これは、顔361と顔364の距離スコアは、表391では“0.5”であり、表411では“0.5”であるため、それらの値が加算された“1”が、親密度スコアとして表421に書き込まれるからである。また、顔361と顔364のタグは、表391、表411ともに“Friend”であるため、この1つのタグが表421に書き込まれるからである。
表421において、顔IDとして“361”と顔IDとして“364”が交わる欄には、親密度スコアとして“1”との数値が書き込まれ、“Friend”というタグが付けられている。これは、顔361と顔364の距離スコアは、表391では“0.5”であり、表411では“0.5”であるため、それらの値が加算された“1”が、親密度スコアとして表421に書き込まれるからである。また、顔361と顔364のタグは、表391、表411ともに“Friend”であるため、この1つのタグが表421に書き込まれるからである。
表421において、顔IDとして“362”と顔IDとして“363”が交わる欄には、親密度スコアとして“2”との数値が書き込まれ、“Friend”というタグが付けられている。これは、顔362と顔363の距離スコアは、表391では“1”であり、表411では“1”であるため、それらの値が加算された“2”が、親密度スコアとして表421に書き込まれるからである。また、顔362と顔363のタグは、表391、表411ともに“Friend”であるため、この1つのタグが表421に書き込まれるからである。
表421において、顔IDとして“362”と顔IDとして“364”が交わる欄には、親密度スコアとして“1.5”との数値が書き込まれ、“Friend”というタグが付けられている。これは、顔362と顔364の距離スコアは、表391では“0.5”であり、表411では“1”であるため、それらの値が加算された“1.5”が、親密度スコアとして表421に書き込まれるからである。また、顔362と顔364のタグは、表391、表411ともに“Friend”であるため、この1つのタグが表421に書き込まれるからである。
表421において、顔IDとして“363”と顔IDとして“364”が交わる欄には、親密度スコアとして“1.5”との数値が書き込まれ、“Friend”というタグが付けられている。これは、顔363と顔364の距離スコアは、表391では“1”であり、表411では“0.5”であるため、それらの値が加算された“1.5”が、親密度スコアとして表421に書き込まれるからである。また、顔363と顔364のタグは、表391、表411ともに“Friend”であるため、この1つのタグが表421に書き込まれるからである。
このようにして、距離スコアが加算されることで、親密度スコアが算出される。図25のフローチャートの説明に戻り、ステップS485において、距離スコアが加算されることにより、親密度スコアが算出されると、ここでは換言すると、図27Cに示したような表421が作成されると、ステップS486に処理が進められる。
ステップS486において、処理対象とされている人物に、複数のタグが付けられているか否かが判断される。例えば、処理対象とされている人物が、顔361の人物であるとする。顔361には、図27Cに示した表421を参照すると、“Couple”というタグと、“Friend”というタグの2つのタグ、すなわち、複数のタグが付けられている。よって、顔361が処理対象の人物とされていた場合、ステップS486において、複数のタグが付けられていると判断され、処理は、ステップS487に進められる。
ステップS487において、タグ別にスコアが取得される。この場合、複数のタグが付けられているため、そのタグ毎に、距離スコアの加算された値が取得される。すなわち、上記したように、親密度スコアは、距離スコアが加算された値であり、その距離スコアは、タグに基づいて、算出されている(式(13)参照)。
例えば、図27Cの表421を参照するに、顔361と顔362の親密度スコアは、“3”であり、“Couple”というタグと“Friend”というタグが付けられている。“Couple”というタグが付けられたのは、表391(図26C)が参照されたときであり、その距離スコアは“2”である。また、“Friend”というタグが付けられたのは、表411(図27B)が参照されたときであり、その距離スコアは“1”である。
ここでは、2つの画像が処理されたときを例にあげているため、このようになるが、実際には、複数の画像が処理されているため、参照されている表の数も複数有り、複数の距離スコアが、タグ毎に集計されることになる。
ステップS487の処理が実行されることにより、例えば、顔361と顔362が処理対象とされたときには、“Couple”というタグに対するスコアが“2”、“Friend”というタグに対するスコアは“1”と取得される。
ステップS488において、タグに対応する係数が取得される。このタグに対応する係数は、例えば、テーブルとして、顔クラスタリング部26(図1)に保持されている。ここで、係数が書き込まれているテーブルについて説明する。図28は、タグに対応する係数が書き込まれているテーブル451の一例を示す図である。
テーブル451は、タグ名と、そのタグ名が付けられているタグに乗算する係数が関連付けられて管理されているテーブルである。図28に示したテーブル451を参照するに、“Couple”というタグ名には、“1.5”という係数が関連付けられている。“Parent Child”というタグ名には、“1.5”という係数が関連付けられている。“Family”というタグ名には、“1.2”という係数が関連付けられている。“Friend”というタグ名には、“1.0”という係数が関連付けられている。
このように、“Couple”や“Parent-Child”といった親密な関係にあると考えられるタグに対する係数は、他のタグに対する係数よりも大きな値とし、重みをつけて優先的に採用されるようにする。採用されるとは、後段の処理で、スコアの値が大きい方が、結果的に、その人物同士のタグとして採用されることを意味する。そのような係数であれば好ましく、図28に示した数値に係数が限定されるわけではない。また、この係数は、ユーザにより設定されるようにしても良い。すなわち、例えば、ユーザが、“Friend”とのタグ名を、他のタグ名よりも優先させたい場合には、“Friend”というタグ名に対する係数の数値を変更できるように構成されていても良い。
また、兄妹なのにカップルといった、矛盾する関係が推定された場合、タグ毎に優先度を付けておき、その優先度に基づいて処理されるようにしても良い。このことは、例えば、上記した係数の値を大きくすることで、優先度を高くすることができるため、係数を調整することで実現できる。
図25のフローチャートの説明に戻り、ステップS488において、タグに対応する係数が取得される。例えば、顔361と顔362が処理対象とされたときには、“Couple”というタグに対する係数が、テーブル451が参照されることにより、“1.5”と読み出され、“Friend”というタグに対する係数が、“1.0”と読み出される。
ステップS489において、タグ別にスコアと対応する係数が乗算される。例えば、顔361と顔362が処理対象とされたときには、“Couple”というタグに対するスコアが“2”であり、係数が“1.5”であるので、それらの値が乗算され、“3.0”との値が算出される。同様の処理により、“Friend”というタグに対するスコアは“1”であり、係数が“1.0”であるので、それらの値が乗算され、“1.0”との値が算出される。
このようにして、乗算が行われ、その乗算結果が取得されると、ステップS490に処理が進められる。ステップS490において、乗算結果が最大値のタグが最適なタグとして、その処理対象とされている人物間のタグとして採用される。
例えば、顔361と顔362が処理対象とされたときには、“Couple”というタグに対する乗算結果は“3.0”であり、“Friend”というタグに対する乗算結果は“1.0”であると算出されているので、乗算結果の数値が大きい“Couple”というタグが、顔361と顔362の人物間の最適なタグとして付与される。
このようにして、複数のタグが付与されている場合には、1つのタグが最適なタグとして選択され、付与される。
なお、複数のタグが付与され、上記したような処理が実行され、1つのタグが選択された場合、複数の画像データが処理されるため、発生する可能性は低いと考えられるが、同一の人物に対して、複数の人物との間柄で同一のタグが付けられる可能性もある。例えば、顔361に対して、顔362との間柄が“Couple”であり、顔363との間柄も“Couple”であるといった場合も考えられる。
このような場合、顔361と顔362がカップルであり、顔361と顔363もカップルであることになる。このようなケースはあるかもしれないが、あまり好ましくない結果であると考えられる。このようなときには、どちらか一方のタグのみが残され、他方は別のタグに変更されるといった処理が行われるようにしても良い。
このように、ステップS490において、最適なタグが付与された場合、または、ステップS486において、処理対象とされている人物(顔)には、複数のタグは付けられていないと判断された場合、ステップS491に処理が進められる。ステップS491において、全ての他の人物との計算が終了したか否かが判断される。
ステップS491において、全ての他の人物との計算は、終了されていないと判断された場合、ステップS483に処理が戻され、それ以降の処理が繰り返される。一方、ステップS491において、全ての他の人物との計算は、終了したと判断された場合、ステップS492に処理が進められる。
ステップS492において、全ての人物に対して親密度スコアの算出が行われたか否かが判断される。ステップS492において、全ての人物に対して親密度スコアの算出は行われていないと判断された場合、ステップS483に処理が戻され、それ以降の処理が繰り返される。一方、ステップS492において、全ての人物に対して親密度スコアの算出が行われたと判断された場合、図25に示した人物間の親密度算出処理は終了され、ステップS18(図2)に処理が進められる。
[人物相関データの生成について]
図2のフローチャートの説明に戻る。ステップS17において、人物間の親密度の算出が行われ、最適なタグが付けられ、かつ、各人物の登場回数がカウントされると、ステップS18において、それらの情報が用いられて、人物相関のデータが生成され、人物相関データベース41に保存される。
人物相関データは、登場回数スコアの高い人物と、その人物と親密度の高い複数の人物との間の親密度、およびタグから生成される。このようにして人物相関データは生成されるため、登場回数の多い人物を中心とする、関係の深い人物とのつながりを、人物相関をタグとして表しているデータであるといえる。
“登場回数の多い人物を中心”とするとは、登場回数が多い人物は、撮影者が意図して撮影した人物であることを意味し、そのような人物を中心とすることで、撮影者が意図した人物を中心とした相関図を作成することができると想定できるからである。
換言すれば、登場回数の少ない人物は、撮影者が意図して撮影していない、撮影者が中心とする気はないといった人物であると判断できる。よって、登場回数の少ない人物は、例えば、登場回数が、所定の閾値以下である人物や、全人物の登場回数の総和に対して示す登場回数が所定の割合以下の人物などは、人物相関データの作成のときの処理対象としないようにしても良い。
人物相関データ501は、図29に示す2つのデータから構成される。1つのデータ502は、人物個人に関するデータであり、もう1つのデータ503は、人物間の関係を特定するためのデータである。図29に示したデータ内の数値などは、一例である。
データ502は、人物ID、登場回数スコア、顔アイコン画像、および属性を、それぞれ関連付けて管理するためのデータである。図29に示したデータ502では、人物IDが“001”の登場回数スコアは、“34”であり、顔アイコン画像は、“User001.jpg”であり、属性は、“MAN/Age:24”であることが、それぞれ関連付けられている。
同様に、人物IDが“002”の登場回数スコアは、“13”であり、顔アイコン画像は、“User002.jpg”であり、属性は、“WOMAN/Age:23”であることが、それぞれ関連付けられている。人物IDが“003”の登場回数スコアは、“21”であり、顔アイコン画像は、“User003.jpg”であり、属性は、“MAN/Age:65”であることが、それぞれ関連付けられている。
図30を参照して説明する画面であり、人物相関データ501のデータに基づいて作成される画面において、人物の顔の画像が表示される。その人物の顔の画像が、顔アイコン画像であり、例えば、所定の画像から切り取られた顔の部分だけの画像のデータのファイル名が、顔アイコン画像の欄に記載される。
また、データ502を構成する“属性“に関するデータのうち、“MAN”や“WOMAN”といった性別に関するデータは、グループ化の処理において取得されているので、その情報が書き込まれるようにすることが可能である。
また、“Age“に関する情報も、グループ化の処理において取得されているので、その情報を利用することができるが、図29に示したように、“24”といった具体的な数値(年齢)まで特定することはできない。勿論、特定できるのであれば、その特定された年齢を、データ502の属性の欄に記載して良い。特定できない場合、判定された結果、上記した例では、大人(Adult)や子供(Child)といった情報が書き込まれるようにする。
また、属性の欄に書き込まれる情報は、ユーザにより書き込まれたときに、書き込まれる用にしても良い。ユーザにより書き込まれる情報であれば、年齢など、正確な値を取得できるため、好ましい形態であると考えられる。
本実施の形態においては、後述するように、この人物相関データ501内のデータは、ユーザにより修正可能に構成されている。よって、仮に、上述したグループ化の処理などで間違った判断が行われ、間違ったタグが付けられたなどされても、その間違いを訂正することができるため、人物相関データ501内のデータの適正化をはかることができる。
図29に示したデータ503の説明をする。データ503は、人物ID1、人物ID2、親密度スコア、タグ、および写真画像がそれぞれ関連付けられて管理されている。図29に示したデータ503では、人物ID1が“001”と人物ID2が“002”の親密度スコアは、“5.5”であり、タグが“Couple”であり、写真画像が“DSC00001.jpg”であることが、それぞれ関連付けられている。
同様に、人物ID1が“002”と人物ID2が“003”の親密度スコアは、“2.25”であり、タグが“Family”であり、写真画像が“DSC00002.jpg”であることが、それぞれ関連付けられている。人物ID1が“003”と人物ID2が“001”の親密度スコアは、“0.25”であり、タグが“Friend”であり、写真画像が“DSC00003.jpg”であることが、それぞれ関連付けられている。
親密度スコアと、タグは、ステップS17の処理として実行された人物間の親密度の算出処理において、取得された、例えば、図27Cに示した表421が参照されることで生成されるデータである。また、写真画像の欄には、例えば、人物ID1が“001”と人物ID2が“002”が割り振られて人物(顔)が撮像されている写真で、代表とされる写真のファイル名が、写真画像の欄に記載される。
このようなデータから構成される人物相関データ501が、ステップS18において生成され、人物相関データベース41(図1)に保持されると、図2のフローチャートを参照して説明したデータベースの作成処理は、終了される。
このようにして、人物相関データベース41に人物相関データ501が保持されると、その人物相関データ501に基づく画面が、表示制御部21の制御の基、表示部11に表示される。この表示部11に表示される画面の一例を、図30に示す。
[画面について]
図30は、表示部11に表示される画面の一例を示す図である。表示部11に表示される画面は、人物相関に関する画像を表示する相関画像表示部601と、その相関画像表示部601内の画像の編集などを行うときに用いるツールなどが表示されたツール表示部602から構成されている。
相関画像表示部601には、複数の顔画像611乃至617、それらの顔画像同士がリンクされていることを示す紐621乃至628、顔画像の人物同士の間柄を示すタグ641乃至647、および表示されている顔画像を含む代表画像651が表示されている。
相関画像表示部601の中央部分には、顔画像611が表示されている。この顔画像611は、登場回数が多く、中心となる人物の顔の画像である。この顔画像611の画像データは、人物相関データ501を構成するデータ502(図29)の顔アイコン画像の欄に記載されているファイル名に基づくデータである。また、登場回数のデータも、データ502が参照される。また、登場回数が多い顔画像は、登場回数が少ない顔画像よりも大きく表示されるように構成されている。
顔画像611には、紐621と紐622が張られている。紐は、顔画像同士(人物同士)が何らかの関係があることを示す。また、親密度が高い顔画像同士の紐は短く、親密度が高くない顔同士の紐は長く表示されるようにしても良い。顔画像611と顔画像612との間には、紐621が張られ、その間柄を表すタグとして、タグ641が紐621の近傍に表示されている。このタグ641の情報は、データ503から抽出された情報である。具体的には、例えば、顔画像611の人物IDが“001”であり、顔画像612の人物IDが“002”である場合、データ503が参照されることで、タグが“Couple”であることがわかる。そしてこのタグの情報から、タグ641の画像が生成され、顔画像611と顔画像612との間に張られた紐621の近傍に表示される。
このように、相関画像表示部601内の画像は、人物相関データ501に基づいて生成される。図30に示し画面について説明を続けるに、顔画像611と顔画像613の間には、紐622が張られ、その間柄を表すタグとして、“Child”とのタグ642が紐622の近傍に表示されている。
顔画像612と顔画像613の間には、紐623が張られ、その間柄を表すタグとして、“Child”とのタグ642が紐622の近傍に表示されている。このようなタグなどから、閲覧者は、顔画像611の人物と顔画像612の人物は、カップル(夫婦)であり、その子供が、顔画像613の人物であることがわかる。顔画像の表示位置は、年齢や、関係などにより、上下左右方向での表示位置が決定される。
顔画像612と顔画像614の間には、紐624が張られ、その間柄を表すタグとして、“Friend”とのタグ643が紐624の近傍に表示されている。この場合、顔画像612の人物と、顔画像614の人物は、友達であることがわかる。なお、後述するように、この場合、顔画像612の人物と、顔画像614の人物は、友達であるが、顔画像611の人物と、顔画像614の人物は、友達ではない。仮に、顔画像611の人物と、顔画像614の人物が友達であった場合、顔画像611と顔画像614との間にも紐が張られ、タグが表示される。
顔画像611と顔画像615の間には、紐625が張られ、その間柄を表すタグとして、“Parent”とのタグ644が紐625の近傍に表示されている。この場合、顔画像611の人物と、顔画像615の人物は、親子関係があることがわかり、かつ、その親子関係は、顔画像611の人物を中心として考えた場合、顔画像615の人物は親にあたることがわかる。すなわち、中心人物が、顔画像611の人物であるため、顔画像611の人物に対して、顔画像613の人物は子であり、顔画像615の人物は親となる。
このように、中心人物に対してどのような関係にあるかを示す画面が、相関画像表示部601である。例えば、閲覧者が、顔画像613を相関画像表示部601の中央部分に所定の操作を実行することで、移動させた場合、顔画像613の人物が中心人物とされた画面に更新される。顔画像613が中心人物とされた場合、顔画像611の人物は、顔画像613の人物に対して親に該当するため、顔画像613と顔画像611とのタグは、“Parent”といったタグに変更される。
このようなことを実現するために、人物相関データ501を構成するデータ502(図29)には、人物ID1と人物ID2という項目が設けられている。すなわち、データ502は、人物ID1の人物から、人物ID2の人物を見たときに、どのような間柄であるかという情報が、タグの欄に記載されている。よって、人物ID1と人物ID2の組が同じであっても、タグの情報が異なる。
図30に示した画面例の説明に戻り、顔画像615と顔画像616の間には、紐626が張られ、その間柄を表すタグとして、“Friend”とのタグ645が紐626の近傍に表示されている。顔画像616と顔画像617の間には、紐627が張られ、その間柄を表すタグとして、“Friend”とのタグ646が紐627の近傍に表示されている。顔画像617と顔画像615の間には、紐628が張られ、その間柄を表すタグとして、“Friend”とのタグ647が紐628の近傍に表示されている。
このような表示から、顔画像615の人物、顔画像616の人物、および顔画像617の人物は、ともに友達関係にあることがわかる。このような関係のとき、図30では、“Friend“とのタグが表示されるとして図示および説明をしたが、”Friends“(複数形)でも良い。
このような、所定の人物を中心とした人物間の相関を表す画像を、上述したような例えばグループ化の処理などが実行され、人物相関データ501が生成されることで、生成することが可能となる。さらに、ツール表示部602に表示されているツールを用いて、閲覧者は、相関画像表示部601内の情報を、変更できるように構成されている。
ツール表示部602には、4つの紐がツールとして用意されている。まず、紐661は、2つの顔画像の間に張られる紐を追加し、“Parent”というタグを追加する場合に利用されるツールである。同様に、紐662は、2つの顔画像の間に張られる紐を追加し、“Friend”というタグを追加する場合に利用されるツールである。同様に、紐663は、2つの顔画像の間に張られる紐を追加し、“Couple”というタグを追加する場合に利用されるツールである。同様に、紐664は、2つの顔画像の間に張られる紐を追加し、“Family”というタグを追加する場合に利用されるツールである。
また、ツール表示部602には、既に紐が張られている紐(リンク)を削除するときに使われるはさみ665も表示されている。これらのツールの使い方について、図31乃至図33を参照して説明する。
[タグの変更、追加などに関わる処理について]
図31は、はさみ665を用いてリンクを削除するときに行われる処理について説明するための図である。図31Aに示すように、顔画像612と顔画像614との間に紐624が張られており、タグ643が表示されている状態のときに、はさみ665により、この紐624を切りたいと閲覧者が所望したとする。
このようなとき閲覧者は、ツール表示部602に表示されているはさみ665をドラッグし、その状態のまま、紐624上まで移動される。はさみ665は、移動されることで、図31Bに示すような状態になる。図31Bでは、紐624上にはさみ665が位置している。このように、はさみ665が紐624上に位置しているときに、クリックなどの所定の操作が実行されると、紐624は削除される。
すなわち、図31Cに示すように、顔画像612と顔画像614との間に表示されていた紐624が削除され、表示されなくなる。さらに、紐624が削除されたことで、その間柄を示すタグ643も表示されない状態となる。さらに、図示はしないが、顔画像614自体も表示されないようにしても良い。すなわち、この場合、図30を参照するに、中心人物である顔画像611の人物に対して親しいのは、顔画像612の人物であり、顔画像614の人物ではないため、中心人物に対して親しさの度合いが低い方の顔画像が削除される(表示されないようにする)ようにしても良い。
図32を参照して、表示されているタグが変更されるときの処理について説明する。この処理は、例えば、参照者が、表示されているタグが適切でないタグ名であるために、変更を所望したときに行われる。
図32Aに示したように、顔画像611と顔画像612との間に紐621が張られており、“Friend”とのタグ641が表示されている状態のときに、この“Friend”とのタグ641を“Couple”とのタグに変更したいと所望したとする。このような場合、閲覧者は、カーソル701を、マウスなどを操作して、タグ641上に移動させる。カーソル701がタグ641上に移動されている状態を、図32Aに示す。
このような、カーソル701が所定のタグ上に位置しているときにクリックなどの所定の操作が行われると、そのタグが、変更される。すなわち、図32Bに示すように、1回クリックが行われると、“Friend”とのタグ641は、“Child”とのタグ641’に表示が変更される。閲覧者は、“Child”とのタグ641’で良ければ、操作を終了すればよい。しかしながらこの場合、“Couple”というタグにしたいため、さらにカーソル701がタグ641’上に位置している状態のときに、クリックなどの所定の操作を実行する。
再度クリックが行われることにより、さらにタグの名称が変更され、“Couple”とのタグ641”になる。この状態を、図32Cに示す。すなわち、閲覧者は、所望のタグ名になるまで、カーソル701が、そのタグ名を変更したいタグ上に位置した状態で操作することで、所望のタグ名に変更することができるように構成されている。
次に、図33を参照し、顔画像の間に新たな紐を張る(リンクを張る)ときの処理について説明する。図33Aに示した状態は、顔画像612と顔画像614が表示されているが、その顔画像の間に紐は張られておらず、タグも表示されていない状態である。このよう状態のときに、閲覧者が顔画像612と顔画像614との間に紐を張りたい(リンクを張りたい)と所望したとする。
撮影者は、紐を張りたいと所望したとき、ツール表示部602に表示されている紐661乃至664の中から、所望のタグ名の紐を選択する。ここでは、“Friend”というタグ名の紐662が選択されたとする。撮影者は、紐662を、紐を張りたい2つの顔画像のうちの一方の顔画像上に、ドラッグなどの所定の処理を実行することで、移動させる。図33Bに示した状態は、顔画像614上に紐662が移動された状態を示す。
このような状態から、撮影者が、さらに顔画像614から顔画像612の方にドラッグなどの所定の操作を実行すると、図33に示すように、顔画像612と顔画像614との間に紐624が表示され、さらに“Friend”というタグ643も表示される。このように、撮影者は、顔画像にリンクを張りたいとき、ツール表示部602から所望の紐661乃至664を選択し、顔画像同士を接続するような所定の操作を実行することで、リンクを張ることが可能な構成とされている。
このような撮影者からの操作が行われた場合、人物相関データ501内の対応するデータを変更すると行った処理を行う必要がある。その処理について図34乃至図35にそれぞれ示したフローチャートを参照して説明する。
図34に示したフローチャートは、図31を参照して説明した紐の削除(リンクの削除)が行われたときに実行される処理について説明するためのフローチャートである。紐が削除される操作が実行されたと判断された場合、ステップS511において、2つの人物IDをキーに、対応するデータが検索される。例えば、図31に示した例では、顔画像612と顔画像614との間の紐624(タグ643)が削除される操作が実行されたときであるので、この顔画像612に対応する人物IDと、顔画像614に対応する人物IDとがキーにされる。
図31に示した例では、上記したように、中心人物に対して、顔画像612の人物の方が、顔画像614の人物よりも親しい間柄なので、顔画像612に対応する人物IDを人物ID1とし、顔画像614に対応する人物IDを人物ID2とするデータが、データ502(図29)内が検索され、抽出される。
そのようなデータが検索され、抽出されると、そのデータが、ステップS512における処理として削除される。例えば、顔画像612に対応する人物IDが“003”であり、顔画像614に対応する人物IDが“001”である場合、データ503(図29)内が検索されることにより、3行目のデータが抽出され、削除されることになる。
次に、図35のフローチャートを参照して、図32を参照して説明したタグのタグ名の変更に関わる操作が実行されたときに実行される処理について説明する。閲覧者によりタグが変更される操作が実行されたと判断された場合、ステップS531において、2つの人物IDをキーに、対応するデータが検索される。例えば、図32に示した例では、顔画像611と顔画像612との間のタグ641のタグ名が変更される操作が実行されたときであるので、この顔画像611に対応する人物IDと、顔画像612に対応する人物IDとがキーにされる。
例えば、顔画像611に対応する人物IDを人物ID1または人物ID2とし、顔画像612に対応する人物IDを人物ID2または人物ID1とするデータであり、タグの欄に“Friend”とのタグ名が書き込まれているデータが、データ503(図29)内が検索され、抽出される。
そのようなデータが検索され、抽出されると、そのデータが、ステップS532における処理として変更される。例えば、図32に示した例では、“Friend”とのタグ名から“Couple”というタグ名に、タグの欄のタグ名が変更される。
次に、図36のフローチャートを参照して、図33を参照して説明した紐(タグ)の追加に関わる操作が実行されたときに実行される処理について説明する。閲覧者により紐の追加がされる操作が実行されたと操作判断部22(図1)により判断された場合、ステップS551において、人物相関データ更新部24は、2つの人物IDをキーに、人物相関データベース41内のデータを検索する。例えば、図33に示した例では、顔画像612と顔画像614との間に紐が追加される操作が実行されたときであるので、この顔画像612に対応する人物IDと、顔画像614に対応する人物IDとがキーにされる。
このような顔画像612と顔画像614の間に紐がない状態である場合、データ502のタグの欄が空であるか、データ502自体に存在していない可能性がある。そこで、ステップS552において、データが存在するか否かが判断される。この判断において、例えば、顔画像612に対応する人物IDを人物ID1または人物ID2とし、顔画像614に対応する人物IDを人物ID2または人物ID1とするデータであり、タグの欄が空欄になっているデータが、データ503(図29)内が検索され、抽出された場合、存在するデータがあったと判断され、ステップS553に処理が進められる。
ステップS553において、変更処理に移行される。この変更処理とは、図35に示したフローチャートを参照して説明したタグを変更する処理のことである。すなわちこの場合、データ502にデータが存在していたので、そのデータを書き直す処理であるため、タグを書き換える処理と同様に行うことができる。
一方、ステップS552において、データは存在しないと判断された場合、ステップS554に処理が進められる。この場合、データ503には存在していないが、データ502には存在している状態である(データ502にも存在していない場合、顔アイコン画像自体が存在しないことになり、顔画像が表示されないことになる)。ステップS554において、データ503に、2つの人物IDとタグのレコードが追加される。
例えば、図33に示した状態の場合、顔画像612に対応する人物IDと、顔画像614に対応する人物IDが、データ503に書き込まれ、さらにタグの欄に、“Friend”とのタグ名が書き込まれる。データ503を構成する他の情報、例えば、親密度スコアや写真画像も、適宜、計算が行われたり、ファイル名が書き込まれたりすることで埋められる。
さらに、人物相関データベース41に記憶されている人物相関データ501を、ユーザにより訂正や変更を行えるような仕組みを設ける。図37乃至図39を参照し、そのような訂正や変更に関わる処理について説明する。
まず、図37のフローチャートを参照して、個別の顔の追加処理について説明する。個別の顔の追加処理とは、例えば、相関画像表示部601内に表示されている同一の人物の顔画像が2以上表示されている場合、換言すれば、誤った判断により同一人物であるのに、異なる人物として処理されているような場合、ユーザにより同一の人物として扱われるように修正が入ったときの処理である。また、相関画像表示部601に表示されていないが、表示させたい顔(顔画像)があるときに、その顔が追加される処理でもある。
ステップS601において、ユーザにより指定された顔(顔画像)が、人物IDを持つか否かが判断される。ステップS601において、ユーザにより指定された顔が人物IDを持つと判断された場合、ステップS602に処理が進められる。ステップS602において、反映されている、元の人物IDが存在するという情報が更新される。すなわち、ユーザにより指定された顔に対応する人物IDに関する情報が更新される。
ステップS602の更新処理が終了した場合、または、ステップS601において、顔が人物IDを持たないと判断された場合、ステップS603に処理が進められる。ステップS603において、追加先人物IDで書き換えが行われる。同一人物であるのに、異なる人物であると判断されている場合であるので、異なる人物IDが割り当てられているか、または、一方の顔にのみ人物IDが割り当てられている状態である。このような状態のときには、どちらか一方の人物IDに統一する、または、割り当てられている人物IDを他方にも割り当てるといった処理が行われる。
ステップS604において、書き換えられた人物IDに関する各種スコアが更新される。例えば、登場回数や親密度スコアなどが人物IDが書き換えられることで異なるスコアになる可能性が高いので、再度ステップS604の処理として、それらのスコアの更新処理が実行される。
次に、図38のフローチャートを参照して、人物間の追加処理について説明する。人物間の追加処理とは、人物間の関係性を100%の精度で判定することはできない可能性であり、そのためにまずは、上記したようにして人物相関に関するデータを生成し、その後、ユーザにより関係の追加や誤判定の削除を行えるようにするための処理である。
ステップS631において、追加元の情報を基に、追加先の各種スコアが更新される。例えば、人物間に、新たな関係(紐やタグの追加)が行われた場合や、関係の削除(紐やタグの削除)が行われた場合、その追加や削除に対応する情報が更新される。そして、ステップS632において、重複する人物間情報等、不必要なデータが削除される。そして、ステップS633において、追加元の人物IDを持つ顔情報の人物IDも更新される。
このような処理は、図34のタグを削除する処理や、図35のタグの変更する処理、図36のタグを追加する処理を含む処理であり、それぞれの処理に対応した処理が行われる。
次に、図39のフローチャートを参照して、顔の分離処理について説明する。顔の分離処理とは、図37で説明した個別の顔の追加処理と逆の処理である。すなわち、顔の分離処理とは、例えば、誤った判断により同一人物ではないのに、同一の人物として処理されているような場合、ユーザにより異なる人物として扱われるように修正が入ったときの処理である。
ステップS551において、分離が指示された顔が人物IDを持つか否かが判断される。ステップS651において、顔が人物IDを持つと判断された場合、ステップS652に処理が進められる。ステップS652において、反映されている、元の人物IDが存在するという情報が修正される。すなわち、ユーザにより指定された顔に対応する人物IDに関する情報が修正される。
ステップS652の修正処理が終了した場合、または、ステップS651において、顔が人物IDを持たないと判断された場合、ステップS653に処理が進められる。ステップS653において、追加先の人物IDがあるか否かが判断される。ステップS653において、追加先の人物IDがあると判断された場合、ステップS654に処理が進められる。
ステップS654において、追加先の人物IDで書き換えが行われる。すなわちこの場合、分離した顔が、既に登録されている顔であり、人物IDが割り当てられていると判断されたときであるので、その人物IDで書き換えが実行される。必要に応じ、スコアの更新などの処理も実行される。
一方、ステップS653において、追加先の人物IDはないと判断された場合、ステップS655に処理が進められる。この場合、分離されることにより、顔に対して人物IDが割り当てられていない状態になったことを意味するため、ステップS655の処理として、新規に人物が作成される。すなわち、人物IDを新たに割り当てたり、スコアが計算されたりする。
このようにして、顔の識別精度は100%の制度ではないのが一般的であり、そのために、間違いが発生する可能性がある。そのような間違いをユーザにより訂正できることで、より精度の高い人物相関に関する情報を生成させることが可能となる。
このように、本実施の形態によれば、撮影者が撮像した画像に写っている人物との相関図を図示するためのデータを生成することができ、そのデータに基づく相関図を図示することが可能となる。このようなことが可能となることで、撮影時の撮影者の思い出やとりまく環境を、人物相関から想起させることができ、より撮影者の実体験に基づいた写真の閲覧ができるようになる。
また、これまで時間や場所に限定していた写真整理方法とは違い、人物に主眼を置いた整理方法であるため、ユーザ毎に個人化された検索を実行することができる。たとえば、“人物Aとカップルの人物”、“人物Bと友達の人物”といった検索を行うことが可能となる。
[第2の実施の形態について]
次に、第2の実施の形態について説明する。第2の実施の形態は、第1の実施の形態と説明が重複する部分があるため、重複する部分に関しては、適宜その説明を省略する。
図40は、第2の実施の形態における情報処理装置を含むシステムの一実施の形態の構成を示す図である。図40に示した情報処理装置800は、図1に示した情報処理装置13の構成に、イベントクラスタリング部801と、時刻情報抽出部821を追加した構成とされている。
時刻情報抽出部821は、画像解析部27に含まれ、画像解析の結果、その画像が撮像された日時を少なくとも抽出する機能を有する。イベントクラスタリング部801は、抽出された日時に関する情報に基づき、画像を分類する機能を有する。具体的には、イベントクラスタリング部801は、イベント、例えば、結婚式、運動会、パーティといったイベント毎に、そのイベントのときに撮像された画像毎にまとめるための処理を実行する。
人物相関データベース41は、人物相関データを記憶するが、そのデータには、どのイベントを識別するためのIDなどが含まれたデータとされ、イベント毎にイベントに属する画像が一意に特定できるようなデータベースとされている。
その他の部分に関する機能は、図1に示した情報処理装置13と同様であるので、ここではその説明を省略する。
図40に示した情報処理装置800の動作について、図41に示すフローチャートを参照して説明する。ステップS801において、処理対象とされる画像データが取得される。その取得された画像データに基づく画像に対して顔認識処理が、ステップS802の処理として実行されることにより、処理対象とされている画像から、顔(顔の領域)が抽出される。
ステップS803において、抽出された顔を所定のグループにまとめる処理(グループ化の処理)が実行される。この結果、処理対象とされている画像内に、1以上のグループが生成され、1つのグループには少なくとも1つの顔が含まれる状態とされる。このステップS801乃至S803の各処理は、図2に示したフローチャートのステップS11乃至S13の各処理と同様に行われ、その詳細な説明は既にしたので、ここではその説明を省略する。
ステップS803において、グループ化の処理が実行されている一方で、同様の画像に対して、ステップS804において、時刻情報の抽出処理が実行される。時刻情報は、EXIF形式で保存された写真画像の”DateTimeOriginal”タグの情報を取得することで取得することが可能である。ステップS804における処理で、処理対象とされている画像が撮影された日時が、時刻情報抽出部821により抽出される。ステップS805において、処理対象とされる画像データを全て処理したか否かが判断される。
ステップS805において、処理対象とされる画像データを全ては処理していないと判断された場合、ステップS801に処理が戻され、それ以降の処理が繰り返される。一方、ステップS805において、処理対象とされる画像データを全て処理したと判断された場合、ステップS806に処理が進められる。
ステップS806において、イベントクラスタリングが実行される。このイベントクラスタリングは、イベントクラスタリング部801により、ステップS804において抽出された時刻情報が用いられて行われる。イベントクラスタリングに関する詳細な記載は、例えば、本出願人が先に出願した以下の文献に記載があり、その記載に基づく処理で、ステップS806の処理が実行することが可能である。
特許文献 特開2007-94762号公報
イベントクラスタリングの処理が実行されることで、画像データベース42内の全ての画像IDと撮影時刻情報が、イベントクラスタリング部801で処理され、撮影イベント毎にグループ分けされる。イベントクラスタリングの処理が終了されると、ステップS807に処理が進められる。ステップS807において、1イベント分のデータが取得される。1イベント分のデータを取得した顔クラスタリング部26は、ステップS808において、顔クラスタリング処理を実行し、ステップS809において、人物を生成する。
すなわち、顔クラスタリング部26は、まず、イベントクラスタリング部801の処理結果から、同一のイベントの画像の画像IDを取得する。そして、顔クラスタリング部26は、顔認識処理の結果から、イベント単位で該当する画像IDの顔識別特徴量および顔IDを取得し、顔識別特徴量同士の類似度を用いて同一イベント内の写真に写っている同一人物ごとにグルーピングを行なう。
このような処理が実行されることで、イベント毎に、画像毎に、人物が生成され、同一人物が同一人物として扱われる状態となる。そのような状態になると、ステップS810において、人物間の親密度の算出処理が実行される。このステップS808乃至S810の各処理は、図2に示したフローチャートのステップS15乃至S17の各処理と同様に行われ、その詳細な説明は既にしたので、ここではその説明を省略する。
ステップS811において、処理対象とされているイベントを全て処理したか否かが判断される。ステップS806の処理において、イベントクラスタリング処理が実行されたことにより、複数のイベントが生成された場合、それら全てのイベントに対して処理が実行されたか否かがステップS811において判断される。ステップS811において、処理対象とされているイベントの全てを処理してはないと判断された場合、ステップS807に処理が戻され、新たなイベントに対して、ステップS807以降の処理が繰り返される。
一方、ステップS811において、処理対象とされているイベントの全てを処理したと判断された場合、ステップS812に処理が進められる。ステップS812において、人物相関のデータが生成され、人物相関データベース41に保存される。このステップS812における処理は、図2のステップS18における処理と同様に行われるため、その説明は省略する。
このようにして、イベントという情報も含む人物相関データ501が生成される。例えば、図42に示したような人物相関データ501が生成される。図42に示した人物相関データ501は、図29に示した人物相関データ501と比較して、データ503が、イベントIDを関連付けるデータ503’(図2のデータ503と区別するために、ダッシュを付して記述する)になっている点が異なる。
データ503’は、イベントID、人物ID1、人物ID2、親密度スコア、タグ、および写真画像が関連付けられたデータとされている。イベントIDは、所定のイベントを一意に区別するために、イベント毎に割り振られているIDである。同一のイベントIDで管理されるデータは、同一のイベントに属していることを示す。このようなデータ503’を含む人物相関データ501に基づき作成され、表示部11に表示される画面の一例を、図43に示す。
図43に示した画面の基本的な構成は、図30に示した画面と同様である。図43に示した画面と図30に示した画面を比較するに、図43に示した画面のツール表示部602に、イベントを選択するボタン851とボタン852が表示されている点が、図30に示した画面と異なる。
ボタン851は、“WEDDING”とのイベント名が表示され、結婚式のときの写真を、相関画像表示部601に表示されるときに選択、操作されるボタンである。ボタン852は、“PARTY”とのイベント名が表示され、パーティのときの写真を、相関画像表示部601に表示されるときに選択、操作されるボタンである。図43に示した画面では、2つのボタンしか図示していないが、生成されたイベント数だけ表示される。
ユーザは、例えば、結婚式のときの写真を閲覧したいとき、“WEDDING”とのイベント名が書かれたボタン851を操作することで、結婚式のときの写真を、相関画像表示部601に表示させることができる。ユーザにより選択されているボタンは、選択されていないボタンと区別が付くように、例えば、色が変えて表示される、矢印が表示されるなどされる。
このように、イベント毎に画像を処理することで、またイベントの情報も含めたデータを作成することで、図43に一例を示したような画面をユーザに提供することが可能となる。よって、ユーザ(閲覧者)は、所定のイベントのときに撮影した画像を、ボタンを操作するだけで閲覧することが可能となる。さらに、その画像は、そのイベント時に中心となった人物と、他の人物との相関図として表示されるため、撮影時の撮影者の思い出やとりまく環境を、人物相関から想起させることができ、より撮影者の実体験に基づいた写真の閲覧ができるようになる。
また、これまで時間や場所に限定していた写真整理方法とは違い、人物に主眼を置いた整理方法であるため、ユーザ毎に個人化された検索を実行することができる。たとえば、“結婚式での写真”、“人物Aとカップルの人物”、“人物Bと友達の人物”といった検索を行うことが可能となる。
[記録媒体について]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
図44は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。コンピュータにおいて、CPU(Central Processing Unit)1001、ROM(Read Only Memory)1002、RAM(Random Access Memory)1003は、バス1004により相互に接続されている。バス1004には、さらに、入出力インタフェース1005が接続されている。入出力インタフェース1005には、入力部1006、出力部1007、記憶部1008、通信部1009、及びドライブ1010が接続されている。
入力部1006は、キーボード、マウス、マイクロフォンなどよりなる。出力部1007は、ディスプレイ、スピーカなどよりなる。記憶部1008は、ハードディスクや不揮発性のメモリなどよりなる。通信部1009は、ネットワークインタフェースなどよりなる。ドライブ1010は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア1011を駆動する。
以上のように構成されるコンピュータでは、CPU1001が、例えば、記憶部1008に記憶されているプログラムを、入出力インタフェース1005及びバス1004を介して、RAM1003にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU1001)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア1011に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア1011をドライブ1010に装着することにより、入出力インタフェース1005を介して、記憶部1008にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部1009で受信し、記憶部1008にインストールすることができる。その他、プログラムは、ROM1002や記憶部1008に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。