(実施形態1)
以下では、入力画像群を用いて自動でレイアウト出力物を生成するために、本発明における好適な第1実施形態について説明する。これはあくまで実施の1つの形態を例として示したものであり、本発明は以下の実施形態に限定されるものではない。
図1は実施形態1の画像処理装置のハードウェア構成例を示すブロック図である。
図1において、画像処理装置115は、CPU100と、ROM101と、RAM102と、2次記憶装置103と、表示装置104と、入力装置105と、IF107と、IF108と、無線LAN109を備えている。さらに、内部撮像デバイス106を備えている。これらは、制御バス/データバス110により相互に接続されている。本実施形態の情報処理装置115は、画像処理装置として機能する。
画像処理装置115は、例えば、コンピュータである。CPU100(中央演算装置)は、実施形態1で説明する情報処理をプログラムに従って実行する。ROM101は、CPU100により実行される以下に示すアプリケーション等のプログラムが記憶されている。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。2次記憶装置103は、ハードディスク等であり、画像ファイルや画像解析結果を保存するデータベース等を保存するための記憶媒体である。表示装置104は、例えば、ディスプレイであり、実施形態1の処理結果や以下に示すUI(User Interface)等をユーザに提示する装置である。表示装置104は、タッチパネル機能を備えても良い。入力装置105は、ユーザが画像補正の処理の指示等を入力するためのマウスやキーボード等である。
また、内部撮像デバイス106で撮像された画像は、所定の画像処理を経た後、2次記憶装置103に記憶される。また、情報処理装置115は、インターフェース(IF108)を介して接続された外部撮像デバイス111から画像データを読み込むこともできる。さらに、無線LAN(Local Area Network)108はインターネット113に接続されている。情報処理装置115は、インターネット113に接続された外部サーバー114より画像データを取得することもできる。
画像等を出力するためのプリンタ112は、IF107を介して情報処理装置115に接続されている。尚、プリンタ112はさらにインターネット上に接続されており、無線LAN109経由でプリントデータのやり取りをすることもできる。
図2は本実施形態における上記アプリケーション等のソフトウェア構成のブロック図になっている。
まずハードウェア115が取得した画像データは、通常JPEG(Joint Photography Expert Group)等の圧縮形式になっている。そのため、画像コーデック部200は、該圧縮形式を解凍していわゆるRGB点順次のビットマップデータ形式に変換する。変換されたビットマップデータは、表示・UI制御部201に伝達され、ディスプレイ等の表示装置104上に表示される。
上記ビットマップデータは、さらに画像センシング部203(アプリケーション)に入力され、同部において、詳細は後述するが、画像の様々な解析処理が行われる。上記解析処理の結果得られた画像の様々な属性情報は、所定の形式に従ってデータベース部202において、上述した2次記憶装置103に保存される。なお、以降においては、画像解析処理とセンシング処理は同義で扱う。
シナリオ生成部204(アプリケーション)では、ユーザが入力した様々な条件に応じて、自動で生成すべきレイアウトの条件を生成し、レイアウト生成部205(アプリケーション)では上記シナリオに従って、自動でレイアウトを生成する処理を行う。
生成したレイアウトは、レンダリング部206で表示用のビットマップデータを生成し、該ビットマップデータは表示・UI制御部201に送られ、結果がディスプレイ等の表示装置104に表示される。一方で、レンダリング結果はさらにプリントデータ生成部207に送られ、同部でプリンタ用コマンドデータに変換され、プリンタに送出される。
図3〜6は、本実施形態のアプリケーションの基本的な画像処理のフローチャートである。具体的には、図3及び4は、画像センシング部203のフローを示しており、複数の画像データ群を取得して、それぞれについて解析処理を施し、その結果をデータベースに格納するまでの処理の流れを示している。図5は、検出した顔位置情報に基づいて、同じ人物と思われる顔情報をグループ化するための処理の流れを示している。図6は、画像の解析情報およびユーザが入力した様々な情報に基づいて、レイアウト作成のためのシナリオを決定し、該シナリオに基づいて、自動でレイアウトを生成するための処理の流れを示している。
図3のS301では、画像データ群の取得を行う。画像データ群は、例えば、ユーザが、撮影画像が格納された撮像装置やメモリカードを情報処理装置115に接続して、これらから撮像画像を読み込むことで取得する。また、内部撮像装置で撮影され、2次記憶装置に保存されていた画像データ群を取得してもよい。あるいは、無線LANを介して、インターネット上に接続された外部サーバー114等、情報処理装置115以外の装置から画像データ群を取得をしてもよい。
画像データ群を取得すると、そのサムネイル群が図8や図9に示すようにUIに表示される。図8の801に示すように2次記憶装置103内のフォルダ単位で画像のサムネイル802を表示してもよいし、図9に示すようにカレンダーのようなUI901で日付ごとに画像データが管理されていてもよい。日付の部分902をクリックすることにより、同日に撮影された画像を、図8のようなサムネイル一覧で表示する。
次に、S302において、各画像のデコードを行う。具体的には、アプリケーションが、新規で保存され未だセンシング処理が行われていない画像をサーチし、抽出された各画像について、画像コーデック部200が圧縮データからビットマップデータに変換する。
次に、S303において、上記ビットマップデータに対して、各種センシング処理を実行する。ここでいうセンシング処理には、次の表1に示すような様々な処理が含まれる。本実施形態では、センシング処理の例として、顔検出、画像の特徴量解析、シーン解析を挙げており、それぞれ表1に示すようなデータ型の結果を算出する。
以下、それぞれのセンシング処理について説明する。
画像の基本的な特徴量である全体の平均輝度、平均彩度は、公知の方法で求めればよいため、詳細な説明は省略する。平均彩度は、画像の各画素について、RGB成分を公知の輝度色差成分(例えばYCbCr成分)に変換し(変換式省略)、Y成分の平均値を求めればよい。また、平均彩度は、上記CbCr成分について画素毎に以下を算出し、下記Sの平均値を求めればよい。
また、画像内の平均色相(AveH)は、画像の色合いを評価するための特徴量である。各画素毎の色相は、公知のHIS変換式を用いて求めることができ、それらを画像全体で平均化することにより、AveHを求めることができる。
また、これらの特徴量は、上述したように画像全体で算出してもよいし、例えば、画像を所定サイズの領域に分割し、各領域毎に算出してもよい。
次に、人物の顔検出処理について説明する。本実施形態で使用する人物の顔検出手法としては、例えば、公知の方法を用いることができる。
特開2002−183731号に記載されている方法では、入力画像から目領域を検出し、目領域周辺を顔候補領域とする。この顔候補領域に対して、画素毎の輝度勾配、および輝度勾配の重みを算出し、これらの値を、あらかじめ設定されている理想的な顔基準画像の勾配、および勾配の重みと比較する。そのときに、各勾配間の平均角度が所定の閾値以下であった場合、入力画像は顔領域を有すると判定する。
また、特開2003−30667号に記載されている方法では、まず画像中から肌色領域を検出し、同領域内において、人間の虹彩色画素を検出することにより、目の位置を検出することができる。
特開平8−63597号に記載されている方法では、まず、複数の顔の形状をしたテンプレートと画像とのマッチング度を計算する。そのマッチング度が最も高いテンプレートを選択し、最も高かったマッチング度があらかじめ定められた閾値以上であれば、選択されたテンプレート内の領域を顔候補領域とする。同テンプレートを用いるこことで、目の位置を検出することができる。
さらに、特開2000−105829号に記載されている方法では、まず、鼻画像パターンをテンプレートとし、画像全体、あるいは画像中の指定された領域を走査し最もマッチする位置を鼻の位置として出力する。次に、画像の鼻の位置よりも上の領域を目が存在する領域と考え、目画像パターンをテンプレートとして目存在領域を走査してマッチングをとり、ある閾値よりもマッチ度が度置きい画素の集合である目存在候補位置集合を求める。そして、目存在候補位置集合に含まれる連続した領域をクラスタとして分割し、各クラスタと鼻位置との距離を算出する。その距離が最も短くなるクラスタを目が存在するクラスタと決定することで、器官位置の検出することができる。
その他の人物の顔検出方法としては、特開平8−77334、特開2001−216515、特開平5−197793、特開平11−53525、特開2000−132688、特開2000−235648、特開平11−250267に記載されるような顔および器官位置を検出する方法が挙げられる。また、人物の顔検出処理は、特許第2541688号に記載された方法でもよく、方法は特に限定されるものではない。
人物の顔検出処理により、各入力画像について、人物顔の個数と各顔毎の座標位置を取得することができる。また、画像中の顔座標位置が分かることにより、顔領域の特徴量を解析することができる。例えば、顔領域毎に顔領域内に含まれる画素値の平均YCbCr値を求めることにより、顔領域の平均輝度および平均色差を得ることができる。
また、画像の特徴量を用いてシーン解析処理を行うことができる。シーン解析処理は、例えば、出願人が開示している特開2010−251999号や特開2010−273144号等で開示されている方法により行うことができる。シーン解析処理により、風景(Landscape)、夜景(Nightscape)、人物(Portrait)、露出不足(Underexposure)、その他(Others)、という撮影シーンを区別するためのIDを取得することができる。
なお、本実施形態では、上記のセンシング処理によりセンシング情報を取得したが、その他のセンシング情報を利用してもよい。
上記のようにして取得したセンシング情報は、データベース202に保存する。データベース202への保存形式については、例えば、図33(a)に示すような汎用的なフォーマット(例えば、XML:eXtensible Markup Language)で記述し、格納すればよい。
図33(a)においては、各画像毎の属性情報を、3つのカテゴリに分けて記述する例を示している。
1番目のBaseInfoタグは、画像サイズや撮影時情報として、あらかじめ取得した画像ファイルに付加されている情報を格納するためのタグである。ここには、画像毎の識別子ID、画像ファイルが格納されている保存場所、画像サイズ、撮影日時などが含まれる。
2番目のSensInfoタグは、上述した画像解析処理の結果を格納するためのタグである。画像全体の平均輝度、平均彩度、平均色相やシーン解析結果が格納され、さらに、画像中に存在する人物の顔位置や顔色に関する情報が格納される。
3番目のUserInfoタグは、ユーザが画像毎に入力した情報を格納することができるタグであるが、詳細については後述する。
なお、画像属性情報のデータベース格納方法については、上記に限定されるものではない。その他どのような形式で格納してもよい。
図3のS305では、上述したS302及びS303の処理を行った画像が最後の画像か否かを判定する。最後の画像である場合は、S306へ進み、最後の画像ではない場合は、S302へ戻る。
S306において、S303で検出された顔位置情報を用いて、人物毎のグループを生成する処理を行う。あらかじめ人物の顔を自動でグループ化しておくことにより、その後ユーザが各人物に対して名前を付ける作業を効率化することができる。
ここでの人物グループ形成は、例えば、公知の個人認識方法を用いて、図5の処理フローにより実行する。
なお、個人認識処理は、主に、顔の中に存在する眼や口といった器官の特徴量抽出と、それらの関係性の類似度を比較することにより実行される。個人認識処理は、例えば、特許第3469031号等に開示されているので、ここでの詳細な説明は省略する。
図5は人物グループ生成処理S306の基本的なフローチャートである。
まず、S501で、2次記憶装置に保存されている画像を順次読みだしてデコード処理を行う。さらにS502でデータベース部202にアクセスし、該画像中に含まれる顔の個数と顔の位置情報を取得する。次に、S504において、個人認識処理を行うための正規化顔画像を生成する。
ここで正規化顔画像とは、画像内に様々な大きさ、向き、解像度で存在する顔を切り出して、すべて所定の大きさと向きになるよう、変換して切り出した顔画像のことである。個人認識を行うためには、眼や口といった器官の位置が重要となるため、正規化顔画像のサイズは、上記器官が確実に認識できる程度であることが望ましい。このように正規化顔画像を生成することにより、特徴量検出処理において、様々な解像度の顔に対応する必要がなくなる。
次に、S505で、正規化顔画像から顔特徴量を算出する。ここでの顔特徴量とは眼や口、鼻といった器官の位置、大きさや、さらには顔の輪郭などを含むことを特徴とする。
さらに、S506で、あらかじめ人物の識別子(辞書ID)毎に顔特徴量が格納されているデータベース(以降、顔辞書と呼ぶ)の顔特徴量と類似しているか否かの判定を行う。類似度は、例えば、辞書ID内部で管理されている特徴量と、新たに入力された特徴量を比較して算出する。ここで用いる特徴量は、保持されている目、鼻、口といった器官の位置や、器官間の距離等の情報である。類似度は、上記の特徴量が類似しているほど高く、類似してない場合には低い値を取るものとし、例えば0〜100の値を取り得るものとする。そして、類似しているか否かの判定は、算出した類似度を予め保持されている閾値と比較し、類似度が閾値よりも高い場合には辞書IDと同一人物であると判断する。一方、類似度が閾値よりも低い場合には、同一人物ではないものとして判定する。このような類似度判定のための閾値は、全ての辞書IDに対して固定の値を一つだけ保持するようにいてもよいし、各辞書ID毎に異なった閾値を保持するようにしてもよい。
S506の判定がYesの場合S509に進み、同じ人物として同じ人物の辞書IDに該顔の特徴量を追加する。
S506の判定がNoの場合S508に進み、現在評価対象となっている顔は、これまで顔辞書に登録された人物とは異なる人物であると判断して、新規辞書IDを発行して顔辞書に追加する。S502〜S509までの処理を、入力画像群の中から検出した顔領域全てに適用して、登場した人物のグループ化を行う。
人物グループ生成処理の結果は、図33(b)のXMLフォーマットで示すように、各顔毎に辞書IDタグを用いて記述し、上述したデータベースに保存する。
ここで、人物グループ生成処理によって生成された顔辞書内部の様子を図10に示す。図10において、1001は辞書IDを示し、1002は顔特徴量を示している。1003は登録された顔特徴量ひとつひとつを示している。同じ辞書IDで管理される顔特徴量は、人物認識処理によって、同一人物であると判定された顔の特徴量である。
なお、上記実施形態においては、図3に示すように、全ての画像のセンシング処理が終了した後に人物グループ生成処理を実行したが、これ以外の方法としてもよい。例えば、図4に示すように、1つの画像に対してS403でセンシング処理を実行した後に、顔検出位置情報を利用してグループ化処理S405を行うという作業を繰り返したとしても、同様の結果を生成することができる。
また、人物グループ生成処理によって得られた各人物グループは、例えば、図7に示すようなUI701にて表示される。図7において、702は人物グループの代表顔画像を表しており、その横には、該人物グループの名前を表示する領域703が存在する。自動の人物グループ化処理を終了した直後は、同図に示すように人物名は「No name1」「No name2」などと表示されている。これらの人物名を以下「人物ID」とする。また、704は人物グループに含まれる複数の顔画像である。後述するが、図7のUI701において、「No name」の領域703を指定して人物名を入力したり、人物毎に誕生日や続柄等の情報を入力することができる。
このとき、図12に示すように、辞書IDと人物IDはそれぞれ互いに関連付けられて(紐付けられて)管理される。
また、上記センシング処理は、オペレーティングシステムのバックグラウンドタスクを利用して実行してもよい。この場合、ユーザはコンピュータ上で別の作業を行っていたとしても、画像群のセンシング処理を継続させることができる。
本実施形態においては、ユーザが手動で画像に関する様々な属性情報を入力することもできる。
その属性情報の例の一覧を表2に記載する。画像に関する属性情報は大きく、画像毎に設定する情報と、人物グループ生成処理によりグループ処理した人物毎に設定する情報に分かれる。
まず、画像毎に設定する属性情報として、ユーザのお気に入り度がある。お気に入り度は、その画像を気に入っているかどうかを、ユーザが手動で段階的に入力するものである。例えば、図13に示すように、UI1301上で、所望のサムネイル画像1302をマウスポインタ1303で選択し、右クリックをすることでお気に入り度を入力できるダイアログを表示する。ユーザはメニューの中で自分の好みに応じて、★の数を選択することができる。本実施形態では、お気に入り度が高いほど★の数が多くなるよう設定する。
また、上記お気に入り度については、ユーザが手動で設定せずに、自動で設定するようにしてもよい。例えば、ユーザが図8に示す画像サムネイル一覧表示の状態から、所望の画像ファイルをクリックし、1画像表示画面に遷移したとする。その遷移した回数を計測して、回数に応じてお気に入り度を設定してもよい。例えば、閲覧した回数が多いほど、ユーザが該画像を気に入っていると判断する。
また、他の例として、プリント回数をお気に入り度に設定してもよい。例えば、プリント行為を行った場合、当然その画像を気に入っていると判断してお気に入り度が高いと設定すればよい。この場合は、プリント回数を計測して、プリント回数に応じてよりお気に入り度を設定する。
以上説明したように、お気に入り度については、ユーザが手動で設定してもよく、閲覧回数に応じてお気に入り度を設定してもよく、プリント回数に応じてお気に入り度を設定してもよい。これらの設定及び計測した情報は、それぞれ個別に、図33(a)で示すようなXMLフォーマットで、データベース202のUserInfoタグ内に格納される。例えば、お気に入り度はFavoriteRateタグで、閲覧回数はViewingTimesタグで、プリント回数はPrintingTimesタグにそれぞれ格納される。
また、画像毎に設定する別の情報として、イベント情報が挙げられる。イベント情報は、例えば、家族旅行“travel”、卒業式“graduation”、結婚式“wedding”が挙げられる。
イベントの指定は、図14に示すように、カレンダー上で所望の日付をマウスポインタ1402などで指定して、その日のイベント名を入力することにより行うことができるようにすればよい。指定されたイベント名は、画像の属性情報の一部として、図33(a)に示すXMLフォーマットに含まれることになる。図33(a)のフォーマットでは、UserInfoタグ内のEventタグを使って、イベント名と画像を紐付けている。なお、以下、「紐づけ」とは、関連付けることを指す。
次に、人物の属性情報について説明する。
図15は、人物の属性情報を入力するためのUIを示している。図15において、1502は所定人物(この場合は“father”)の代表顔画像を示している。1503は、所定人物の人物名(人物ID)の表示領域である。また、1504は、他の画像の中から検出し、S506で顔特徴量が類似していると判断された画像(サムネイル)である。このように、図15では、人物ID1503の下に、S506で顔特徴量が類似していると判断された画像1504の一覧が表示される。
センシング処理が終了した直後は、図7に示すように各人物グループには名前が入力されていないが、「No name」の部分703をマウスポインタで指示することにより、任意の人物名を入力することができる。
また、人物毎の属性情報として、それぞれの人物の誕生日やアプリを操作しているユーザから見た続柄を設定することもできる。図15の人物の代表顔1502をクリックすると、画面下部に図示するように、第1の入力部1505ではクリックした人物の誕生日を入力することができる。また、第2の入力部1506では、クリックした人物の続柄情報を入力することができる。
以上、入力された人物属性情報は、これまでの画像に関連付けられた属性情報とは異なり、図33(b)のようなXMLフォーマットによって、画像属性情報とは別にデータベース202内で管理される。
一方、手動で設定した名前は、上記XMLフォーマットとは別に、図12のように、辞書IDと紐付け管理されてもよい。
本実施形態では、あらかじめ用意した様々なレイアウトテンプレートを用いてレイアウト生成処理を行う。レイアウトテンプレートとは図16や図17に示すようなものであり、レイアウトする用紙サイズ上に、複数の画像配置枠1602,1702,1703(以降、スロットと同義)を備えている。
このようなテンプレートは多数用意されており、あらかじめ本実施例を実行するためのソフトウェアが情報処理装置115にインストールされた時点で、2次記憶装置103に保存しておけばよい。また、その他の方法として、IF 107や無線LAN109を介して接続されたインターネット上に存在するサーバー114から、任意のテンプレート群を取得してもよい。
これらのテンプレートは汎用性の高い構造化言語、例えば上述したセンシング結果の格納と同様にXMLで記載されているものとする。XMLデータの例を図34及び図35に示す。
これらの例では、まずBASICタグに、レイアウトページの基本的な情報を記述する。基本的な情報とは、例えば該レイアウトのテーマやページサイズ、およびページの解像度(dpi)等が考えられる。同例Xにおいて、テンプレートの初期状態では、レイアウトテーマであるThemeタグはブランクとなっている。また、基本情報として、ページサイズはA4、解像度は300dpiを設定している。
また、ImageSlotタグは、上述した画像配置枠の情報を記述している。ImageSlotタグの中にはIDタグとPOSITIONタグの2つを保持し、画像配置枠のIDと位置を記述している。該位置情報については、図16や図17で図示するように、例えば左上を原点とするX−Y座標系において定義される。
また、上記ImageSlotは、その他にそれぞれのスロットに対して、スロットの形状および配置すべき推奨人物グループ名を設定する。例えば、図16のテンプレートにおいては、図34のShapeタグで示すように、すべてのスロットは矩形“rectangle”形状で、人物グループ名はPersonGroupタグによって“MainGroup”を配置することを推奨している。
また、図17のテンプレートにおいては、図35に示すように、中央に配置しているID=0のスロットは矩形形状であることが記載されている。また、人物グループは“SubGroup”を配置し、その他のID=1,2と続くスロットは楕円“ellipse”形状で、人物グループは“MainGroup”を配置することを推奨している。
本実施形態においては、上述したようなテンプレートを多数保持する。
本実施形態に係るアプリケーションは、入力された画像群に対して解析処理を実行し、人物を自動的にグループ化してUIで表示することができる。また、ユーザはその結果を見て、人物グループ毎に名前や誕生日などの属性情報を入力したり、画像毎にお気に入り度などを設定することができる。さらに、テーマごとに分類された多数のレイアウトテンプレートを保持することができる。
以上の条件を満たす本実施形態のアプリケーションは、ある所定のタイミングで、自動的にユーザに好まれそうなコラージュレイアウトを生成し、ユーザに提示する処理を行う(以下、レイアウトの提案処理という)。
図6は、レイアウトの提案処理を行うための基本的なフローチャートを示している。
まず、S601において、レイアウトの提案処理のシナリオを決定する。シナリオには、提案するレイアウトのテーマ及びテンプレートの決定、レイアウト内で重視する人物(主人公)の設定、レイアウト生成に用いる画像群の選定情報などが含まれる。
以下では、2つのシナリオを例示して、シナリオの決定方法について説明する。
例えば、2週間前に自動的に各人物に関する誕生日のレイアウトの提案処理を行う設定がされていたとする。図15で自動グループ化されている人物“son”の1歳の誕生日が近いとする。この場合には、提案するレイアウトのテーマは成長記録“growth”と決定する。次にテンプレートの選択を行うが、この場合には成長記録に適した図17のようなものを選択し、図36に示すように、XMLのThemeタグの部分に“growth”と記載する。次にレイアウトを行う際に注目する主人公“MainGroup”として、“son”を設定する。また、レイアウトを行う際に副次的に注目する“SubGroup”として“son”と“father”を設定する。次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベースを参照し、上記人物“son”の誕生日からこれまでに撮影した画像群のうち、“son”を含む画像群を大量に抽出してリスト化する。以上が、成長記録レイアウトのためのシナリオ決定である。
上記とは異なる例として、1カ月以内に所定のイベント情報が登録されていた場合、レイアウトの提案処理を実行する設定がされているとする。図14で登録したイベント情報から、例えば数日前に家族旅行に行きその画像が大量に2次記憶装置に保存されていることがわかると、シナリオ決定部は、家族旅行のレイアウトを提案するためのシナリオを決定する。この場合には、提案するレイアウトのテーマは旅行“travel”と決定する。次にテンプレートの選択を行うが、この場合には図16のようなレイアウトを選択し、図37に示すように、XMLのThemeタグの部分に“travel”と記載する。次にレイアウトを行う際に注目する主人公“MainGroup”として、“son”、“mother”、“father”を設定する。このように、XMLの特性を活かせば、“MainGroup”として複数の人物を設定することができる。
次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベースを参照し、上記旅行イベントに紐付けられた画像群を大量に抽出してリスト化する。以上が、家族旅行レイアウトのためのシナリオ決定である。
次に、図6のS603において、上述したシナリオに基づくレイアウトの自動生成処理を実行する。図18はレイアウト処理部の詳細な処理フローを示している。以降は、同図に沿って、各処理ステップの説明を行う。
まず、S1801で、上述したシナリオ生成処理で決定され、テーマと人物グループ情報が設定された後のテンプレート情報を取得する。
次に、S1803においては、上記シナリオで決定した画像リストに基づいて、各画像毎に該画像の特徴量をデータベースから取得し、画像群属性情報リストを生成する。ここでいう画像群情報リストとは、図33(a)に示したIMAGEINFOタグが画像リスト分だけ並んだ構成となっている。
以降ではこの画像属性情報リストに基づいて、S1805〜S1809における自動レイアウト生成処理を行う。
このように、本実施形態の自動レイアウト生成処理では、このように画像データそのものを直接扱うのではなく、あらかじめ画像毎にセンシング処理を行ってデータベース保存しておいた属性情報を利用する。レイアウト生成処理を行う際に、画像データそのものを対象としてしまうと、画像群を記憶するために非常に巨大なメモリ領域を必要としてしまうことを避けるためである。すなわち、これにより、レイアウト生成処理で必要なメモリ量を低減させることができる。
具体的には、まず、S1805において、入力された画像群の属性情報を用いて、入力された画像群の中から不要画像のフィルタリングを行う。フィルタリング処理は、図19のフローにて行う。図19では、各画像毎に、まずS1901で全体の平均輝度がある閾値(ThY_LowとThY_Hight)内に含まれているかの判定を行う。否の場合にはS1906に進み、注目画像はレイアウト対象から除去する。
同様に、S1902〜S1905では、注目画像に含まれる顔領域それぞれについて、平均輝度、平均色差成分が、良好な肌色領域を示す所定閾値に含まれているかの判定を行う。S1902〜S1905のすべての判定がYesとなる画像のみ、以降のレイアウト生成処理に適用される。具体的には、S1902では、ID=Nである顔領域のAveYが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1903では、ID=Nである顔領域のAveChが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1904では、ID=Nである顔領域のAveCrが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1905では、最後の顔であるか否かを判定する。最後の顔ではない場合は、S1902へ戻り、最後の顔である場合は、処理を終了する。
なお、このフィルタリング処理では、以降の一時レイアウト作成処理に明らかに不要と判断できる画像の除去を目的としているため、上記閾値は比較的湯緩やかに設定することが望ましい。例えばS1901の画像全体輝度の判定において、ThY_HighとThY_Lowの差が画像ダイナミックレンジに比して極端に小さいと、それだけYesと判定される画像が少なくなってしまう。本実施形態のフィルタリング処理ではそうならないよう、両者の差をできる限り広く設定し、かつ明らかに異常画像と判断されるものは除去できるような閾値に設定する。
次に図18のS1807において、上記処理でレイアウト対象となった画像群を用いて、大量(L個)の一時レイアウトを生成する。一時レイアウトの生成は、取得したテンプレートの画像配置枠に対して、入力画像を任意に当てはめる処理を繰り返す。このときに、例えば、以下のパラメータ(画像選択・配置・トリミング)をランダムで決定する。
画像選択基準としては、例えば、レイアウト中の画像配置枠がN個の時、画像群の中からどの画像を選択するかが挙げられる。配置基準としては、例えば、選択した複数の画像を、どの配置枠に配置するかが挙げられる。トリミング基準としては、配置した際に、どの程度のトリミング処理を行うかというトリミング率が挙げられる。トリミング率は例えば0〜100%で表わされ、トリミングは、図20に示すように、画像の中心を基準として所定のトリミング率で行われる。図20では、2001は画像全体を示し、2002はトリミング率50%でトリミングした際の切り取り枠を示している。
上述したような画像選択・配置・トリミング基準に基づいて、可能な限り数多くの一時レイアウトを生成する。生成した各一時レイアウトは、図38のXMLのように表わすことができる。各スロットに対して、選択され配置された画像のIDがImageIDタグに記述され、トリミング率がTrimingRatioタグに記述される。
なお、ここで生成する一時レイアウトの数Lは、後述するレイアウト評価ステップでの評価処理の処理量と、それを処理する情報処理装置115の性能に応じて決定される。本実施形態では、例えば数十万通り以上の一時レイアウトを生成した。生成したレイアウトは、それぞれIDを付加して図38のXML形式で2次記憶装置103にファイル保存してもよいし、構造体など別のデータ構造を用いてRAM102上に記憶してもよい。
次に、図18のS1808において、大量に生成した一時レイアウトの定量評価を行う。具体的には、作成したL個の一時レイアウトに対して、それぞれ所定のレイアウト評価量を用いて評価を行う。本実施形態におけるレイアウト評価量の一覧を、表3に示す。表3に示すように、本実施形態で用いるレイアウト評価量は、主に3つのカテゴリに分けることができる。
一つ目は、画像個別の評価量である。これは画像の明るさや彩度、ブレぼけ量等の状態を判断し、スコア化するものである。以下、本実施形態のスコア化の一例について説明する。明るさの適正度は、図21に示すように、平均輝度がある所定レンジ範囲内においてはスコア値100とし、所定レンジ範囲から外れるとスコア値を下げるよう設定する。彩度の適正度は、図22に示すように、画像全体の平均彩度がある所定の彩度値より大きい場合にはスコア値100とし、所定値より小さい場合にはスコア値を除々に下げるように設定する。
二つ目は、画像とスロットの適合度の評価である。画像とスロットの適合度の評価としては、例えば、人物適合度、トリミング欠け判定が挙げられる。人物適合度は、スロットに指定されている人物と、実際に該スロットに配置された画像内に存在する人物の適合率を表したものである。例を挙げると、あるスロットが、XMLで指定されているPersonGroupで、“father”、“son”が指定されているものとする。この時、該スロットに割り当てられた画像に該2人の人物が写っていたとすると、該スロットの人物適合度はスコア値100とする。片方の人物しか写っていなかったとすると、適合度はスコア値50とし、両者とも写っていなかった場合は、スコア値0とする。ページ内の適合度は、各スロット毎に算出した適合度の平均値とする。トリミング領域2002の欠け判定は、例えば、図23に示すように、画像中に存在する顔の位置2303が判明している場合、欠けた部分の面積に応じて、0から100までのスコア値を算出する。欠けた面積が0の場合、スコアは100とし、逆にすべての顔領域が欠けた場合、スコア値は0とする。
三つめは、レイアウトページ内のバランスを評価である。バランスを評価するための評価値としては、例えば、画像類似度、色合いばらつき、顔サイズばらつきが挙げられる。画像の類似性は、大量に生成した一時レイアウト毎に算出されるレイアウト頁内のそれぞれの画像の類似性である。例えば、旅行テーマのレイアウトを作成したい場合、あまりに似通った類似度の高い画像ばかりが並んでいたとすると、それは良いレイアウトとは言えない場合がある。したがって、例えば、類似性は、撮影日時によって評価することができる。撮影日時が近い画像は、同じような場所で撮影された可能性が高いが、撮影日時が離れていれば、その分、場所もシーンも異なる可能性が高いからである。撮影日時は、図38で示したように、画像属性情報として、予めデータベース202に保存されている、画像毎の属性情報から取得することができる。撮影日時から類似度を求めるには以下のような計算を行う。例えば、今注目している一時レイアウトに表4で示すような4つの画像がレイアウトされているものとする。
なお、図28において、画像IDで特定される画像には、それぞれ撮影日時情報が付加されている。具体的には、撮影日時として、年月日及び時間(西暦:YYYY、月:MM、日:DD、時:HH、分:MM、秒:SS)が付加されている。このとき、この4つの画像間で、撮影時間間隔が最も短くなる値を算出する。
この場合は、画像ID102と108間の30分が最も短い間隔である。この間隔をMinIntervalとし、秒単位で格納する。すわなち30分=1800秒である。このMinIntervalをL個の各一時レイアウト毎に算出して配列stMinInterval[l]に格納する。次に、該stMinInterval[l]の中で最大値MaxMinInterval値を求める。すると、l番目の一時レイアウトの類似度評価値Similarity[l]は以下のようにして求めることができる。
Similarity[l]=100×stMinInterval[l]/MaxMinInterval
すなわち、上記Similarity[l]は、最小撮影時間間隔が大きいほど100に近づき、小さいほど0に近づく値となっているため、画像類似度評価値として有効である。
次に、色合いのバラつきについて説明する。例えば旅行テーマのレイアウトを作成したい場合、あまりに似通った色(例えば、青空の青、山の緑)の画像ばかりが並んでいたとすると、それは良いレイアウトとは言えない場合がある。この場合は、色のばらつきの大きいものを高い評価とする。注目しているl番目の一時レイアウト内に存在する画像の平均色相AveHの分散を算出して、それを色合いのバラつき度tmpColorVariance[l]として格納する。次に、tmpColorVariance[l]の中での最大値MaxColorVariance値を求める。すると、l番目の一時レイアウトの色合いバラつき度の評価値ColorVariance[l]は以下のようにして求めることができる。
ColorVariance[l]=100×tmpColorVariance[l]/MaxColorVariance
上記ColorVariance[l]は、ページ内に配置された画像の平均色相のバラつきが大きいほど100に近づき、小さいほど0に近づく値となる。したがって、色合いのばらつき度評価値として用いることができる。
次に、顔の大きさのバラつき度について説明する。例えば、旅行テーマのレイアウトを作成したい場合、レイアウト結果を見て、あまりに似通った顔のサイズの画像ばかりが並んでいたとすると、それは良いレイアウトとは言えない場合がある。レイアウト後の紙面上における顔の大きさが、小さいものもあれば大きいものもあり、それらがバランスよく配置されていることが、良いレイアウトと考える。この場合は、顔のサイズのばらつきの大きいものを高い評価とする。注目しているl番目の一時レイアウト内に配置された後の顔の大きさ(顔位置の左上から右下までの対角線の距離)の分散値を、tmpFaceVariance[l]として格納する。次に、該tmpFaceVariance[l]の中での最大値MaxFaceVariance値を求める。すると、l番目の一時レイアウトの顔サイズバラつき度の評価値FaceVariance[l]は、以下のようにして求めることができる。
FaceVariance[l]=100×tmpFaceVariance[l]/MaxFaceVariance
上記FaceVariance[l]は、紙面上に配置された顔サイズのバラつきが大きいほど100に近づき、小さいほど0に近づく値となる。したがって、顔サイズのバラつき度評価値として用いることができる。
またその他カテゴリとして、ユーザの嗜好性評価が考えられる。
以上説明したような、各一時レイアウト毎に算出した複数の評価値を、以下では統合化して、各一時レイアウト毎のレイアウト評価値とする。1番目の一時レイアウトの統合評価値を、EvalLayout[l]とし、上記で算出したN個の評価値(表3の評価値それぞれを含む)の値を、EvalValue[n]とする。このとき、統合評価値は以下で求めることができる。
上式において、W[n]は、表3で示したシーン毎の各評価値の重みである。この重みはレイアウトのテーマ毎に異なる重みを設定する。例えば、表3に示すようにテーマを成長記録“growth”と旅行“travel”で比較した場合、旅行テーマの方は、できるだけ良質の写真をいろいろな場面で数多くレイアウトすることが望ましい場合が多い。このため、画像の個別評価値やページ内のバランス評価値を重視する傾向に設定する。一方、成長記録“growth”の場合、画像のバリエーションよりは、成長記録の対象となる主人公が確実にスロットに適合しているか否かが重要である場合が多い。このため、ページ内バランスや画像個別評価よりも、画像・スロット適合度評価を重視する傾向に設定する。なお、本実施形態におけるテーマ毎の重要度は表3に示すように設定した。
このようにして算出したEvalLayout[l]を用いて、S2109では、レイアウト結果表示のためのレイアウトリストLayoutList[k]を生成する。レイアウトリストは、予め定められた個数(例えば5個)に対して、EvalLayout[l]のうち、評価値が高いもの順に識別子lを記憶しておく。例えば最も良いスコアを出したものが、l=50番目に作成した一時レイアウトであった場合、LayoutList[0]=50となる。同様に、LayoutList[1]以降は、スコア値が2番目以降の識別子lを記憶しておく。
図6に戻って、上記処理によって得られたレイアウト結果を、図6のS605でレンダリングした結果を図24のように表示する。S605では、まずLayoutList[0]に格納されているレイアウト識別子を読み出し、識別子に相当する一時レイアウト結果を、2次記憶装置103あるいはRAM102上から読み出す。レイアウト結果には、上述したようにテンプレート情報とテンプレート内に存在するスロット毎に、割り当てられた画像名が設定されている。したがって、これらの情報に基づいて、情報処理装置115上で動作するOSの描画関数を用いて、該レイアウト結果をレンダリングし、図24の2402のように表示することになる。
図24では、Nextボタン2404を押下することにより、次点スコアであるLayoutList[1]の識別子を読み出し、上記と同様にレンダリング後、表示を行う。これにより、ユーザは様々なバリエーションの提案レイアウトを閲覧することができる。また、Previousボタン2403を押下することにより、前に表示したレイアウトを再表示することができる。さらに、表示されたレイアウトが気に入った場合には、プリントボタン2405を押下することで、情報処理装置115に接続されたプリンタ112からレイアウト結果2402をプリントアウトすることができる。
ここで、本実施形態に係る個人認識時に使用する顔辞書の更新処理に関して詳細に説明する。なお、ここでいう顔辞書とは、個人認識に用いる顔認識情報である。
図11に示すように、UI上に表示された顔グループの中には誤認識が発生することがある。例えば、同一人物であるはずのfatherが、別人物であると判断され、人物グループ生成処理において、所定の顔領域が誤ったグループに振り分けられることがある。すなわち、同一人物が複数グループに分割されて存在してしまうことがある。例えば、同じfatherであったとしても、怒った顔と笑った顔では、目や口といった器官の特徴量が異なるため、表情によって異なる人物として認識されてそれぞれ異なる辞書IDが対応付けられることがある。その結果、UI上で別人として表示される。 このようなケースにおけるユーザの修正作業について、図25を用いて説明する。図25は、ユーザの修正作業の説明図である。
図25に示すUI表示画面2500では、表示領域2502には人物IDが表示され、表示領域2503には、その人物IDにより特定される人物の顔画像2704が1以上表示される。
図25では、No name1に怒ったfatherが、No name2に笑ったfatherが分類されているとする。この場合、ユーザは、fatherが同じグループとなるように、修正作業を行う。すなわち、異なる人物グループであるNo name1とNo name2の結合操作を行う。具体的には、ユーザがマウスポインタ2505を操作して、No name2に分類された画像グループ全体を選択及びドラッグし、No name1のところへ移動させる。この操作により、No name1のグループにNo name2のグループを結合させる。
上述したように、ユーザがマウスポインタ2505を操作して、1つの画像グループをドラッグして、もう1つの画像グループに移動させることにより、UIにおいてNo name1とNo name2が1つのグループとなる。このユーザ操作は、No name2に分類された人物がNo name1に分類された人物と同一人物であることを明示的に示している。すなわち、このようなユーザ操作は、誤ったグループ情報と正しいグループ情報の両者を示しているといえる。このように、ユーザによる修正指示により、UIにおいてNo name1に分類された人物とNo name2に分類された人物とが1つのグループとなる。
本実施形態では、このユーザによる操作情報を正しく顔辞書に反映させることで、以降の認識精度を向上させる。本実施形態において、上記ユーザの結合操作を受けた際の顔辞書における更新処理を、図26を用いて説明する。
図26は、辞書の内部構成を示す図である。図26において、辞書には、各顔特徴量2604が所定の類似度以上の特徴量毎に分類されており、顔特徴量群2604として保持されている。各顔特徴量群2604には、辞書ID2601と、人物ID2602が付加されている。辞書IDは、辞書において顔特徴量群を特定するものである。人物IDは、顔特徴量の人物を特定するものである。
なお、図26では、辞書内部の顔特徴量群に含まれる顔特徴量の数と、人物グループUI表示において表示される画像の数が一致していない。これは、本実施形態では、辞書に登録する顔特徴量の数の上限を5個と定めているのに対し、人物グループUIに表示する画像の数の上限を定めていないためである。
図26(a)は、ユーザの結合操作を受ける前の顔辞書内部構造とUI表示を示す図である。図26(a)は、顔辞書内部の辞書IDとUI表示上の人物IDが1対1に対応して紐付けられた状態にあることを示している。ここでいう「紐づけ」とは、関連付けのことであり、以下の「紐づけ情報」は、関連付け情報のことを指す。
本実施形態においては、UI表示上のユーザの結合操作を受けて、辞書においてNo name2に紐付けられた辞書ID No.2の紐付け情報を、No name1に紐付けるように修正する。すなわち、辞書IDNo.2の人物ID紐づけ情報をNo name1に変更する。これにより、図26(b)に示すように、対応関係が修正される。
図26(a)に示すように、修正前は辞書IDの数と人物IDの数が2:2で対応していたが、図26(b)に示すように、修正後は辞書IDの数と人物IDの数が2:1となる。つまり、辞書では1つの人物IDに対応する辞書IDの数が増加するが、UI表示上は修正前のNo name1及びNo name2が1つのNo name1という人物IDによって、同じグループとして表示される。
このとき、UI表示上は、辞書ID No.1に基づく画像と辞書ID No.2に基づく画像が同じグループとして表示されるが、辞書内部では辞書IDがそのまま別々に且つ保持する特徴量も更新されずに管理される。このように、辞書IDを別々に管理することにより、認識精度の低下を防ぐことができる。一方、元々別人として分類されていた顔特徴量を一人の人物として結合すると、該辞書IDの類似度判定の許容度が拡大し、その結果非常に誤認識を生じやすい状態になってしまう。これに対し、以降の認識処理において、辞書ID No.2に含まれる顔特徴量と類似したfatherの顔が入力された場合、顔認識処理によって辞書ID No.2と判定されたのち、表示上は正しくNo name1に分類されて表示される。
上述したように、本実施形態では、ユーザのUI表示上の修正に応じて、辞書において辞書IDの変更は行わずに、辞書の人物ID紐づけ情報を更新する。これにより、UI上では人物毎にグループ表示することができる。そして、以降の個人認識処理において、UI上で正しいグループ表示を行うことができる。これにより、ユーザが辞書の登録情報を修正する手間を省くことができる。すなわち、ユーザの1回の修正作業により、以降の個人認識処理においてUI上で人物の誤ったグループ表示をすることを防ぐことができる。
また、ユーザ操作に応じて、辞書IDを変更せずに、辞書IDと人物IDの対応関係、すなわち、人物ID紐づけ情報のみを変更することにより、辞書の認識精度の低下を抑制することができる。
なお、本実施形態では、結合先の人物ID(No name1)を結合後の人物IDとして採用しているが、これに限定されるものではない。UI上においてNo name1及びNo name2を結合した新しいグループが生成された際の新しいグループの名称は適宜設定することができる。例えば、図11に示すように、No name1に分類されていた画像数よりも、No name2に分類されていた画像数の方が多い場合、結合後の人物IDには画像数の多い方、つまりNo name2を採用するように設定してもよい。あるいは、一方の人物IDがユーザ未入力のNo nameXXで、もう一方の人物IDがユーザにより入力されたfatherであった場合、ユーザによる入力を優先してfatherとするように設定してもよい。
また、このように精度を向上させた顔辞書を用いて以降の自動レイアウト処理を行うことで、自動生成するレイアウトの精度を向上させることができる。
(実施形態2)
本実施形態では、UI上の表示処理及び顔辞書の更新処理以外は実施形態1と同様であるので、重複する説明は省略する。
図11において、例えば、No name1に怒ったfatherが、No name2に笑ったfatherが分類されている場合、ユーザがどちらにもfatherという名前を付ける操作を行う。すなわち、No name1をfatherに変更すると共にNo name2もfatherに変更する操作を行う。この場合、ユーザからNo name1とNo name2が同じfatherであることが示されたといえる。したがって、本実施形態では、このユーザによる操作情報を正しく顔辞書に反映させることで、以降の認識精度を向上させる。
図28は、上記の修正後の辞書内部の構成及びUI表示を示す図である。図28に示すように、UI表示上で人物IDをfatherに変更すると、これに伴ってUI上でNo name1とNo name2を1つのグループに結合する。すなわち、図11のNo name1に含まれる画像とNo name2に含まれる画像を1つのグループとして表示する。一方、辞書内部では、辞書IDと人物IDの紐付けを修正、言い換えれば、人物ID紐づけ情報を修正する。これにより、図28は、UI表示上は一つの人物ID(=father)でありながら、該人物IDは複数の辞書IDに紐付けられる。
図11に示すように、修正前は辞書IDの数と人物IDの数が2:2で対応していたが、図28に示すように、修正後は辞書IDの数と人物IDの数が2:1となる。つまり、ユーザ操作を反映させることにより、UI表示上は修正前のNo name1及びNo name2が1つのfatherという人物IDによって、同じグループとして表示されるが、辞書では1つの人物IDに対応する辞書IDの数を増加させる。すなわち、UI表示上は、辞書ID No.1に基づく画像と辞書ID No.2に基づく画像が同じグループとして表示されるが、辞書内部では辞書ID No.1と辞書IDNo.2がそのまま別々に、かつ保持する特徴量も更新されずに管理される。
上述したように、本実施形態では、ユーザのUI表示上の人物グループ名の修正に応じて、UI表示上のグループ表示を変更すると共に、辞書においては、辞書IDの変更は行わずに、辞書の人物ID紐づけ情報を更新する。これにより、UI上では人物毎にグループ表示することができる。そして、以降の個人認識処理において、UI上で正しいグループ表示を行うことができる。これにより、ユーザが辞書の登録情報を修正する手間を省くことができる。すなわち、ユーザの1回の修正作業により、以降の個人認識処理においてUI上で人物の誤ったグループ表示をすることを防ぐことができる。
また、ユーザ操作に応じて、辞書IDを変更せずに、辞書IDと人物IDの対応関係、すなわち、人物ID紐づけ情報のみを変更することにより、辞書の認識精度の低下を抑制することができる。
(実施形態3)
本実施形態では、UI上の表示処理及び顔辞書の更新処理以外は実施形態1と同様であるので、重複する説明は省略する。
図29は、ユーザの操作を説明する図である。
図29に示すUI表示画面2900では、表示領域2902及び表示領域2906にはそれぞれ人物IDが表示される。表示領域2902及び表示領域2906の左隣の領域には、それぞれNo name1及びNo name2の代表顔画像2901及び2906が表示される。また、表示領域2903には、表示領域2902の人物IDにより特定される人物の顔画像2904が1以上表示される。
ここで、図29では、同一人物がNo name1とNo name2に分類されているとする。ここでは、No name1に怒ったfatherが、No name2に笑ったfatherが分類されているとして説明する。
図29に示すように、ユーザはマウスポインタ2905を操作して、No name2の代表顔画像2906をドラッグし、No name1の表示領域2903へ移動させる。本実施形態では、このユーザ操作により、No name1とNo name2を1つのグループに結合することができる。言い換えれば、No name1とNo name2を結合して新たなグループを生成する。
本実施形態では、上述したユーザ操作により、辞書の登録情報を更新する。具体的には、辞書内部の辞書IDと人物IDの紐付け情報、すなわち、人物ID紐づけ情報を修正し、辞書ID No.2をNo name1へ紐付ける。これにより、人物ID紐づけ情報がNo name1である辞書ID No.1及び辞書ID No.2は、UI上はひとつのNo name1という人物グループとして表示される。
さらに、本実施形態では、No name1の代表顔画像の変更処理を実行する。代表顔画像の変更処理の方法は、特に限定されるものではないが、例えば、上記の表2に記載のようなユーザによる手動入力情報がある場合、ユーザのお気に入り度を参照し、代表顔画像を選択し直す方法が挙げられる。具体的には、No name1とNo name2に分類されていた全ての画像の中で、最もお気に入り度の高いものを選択し、結合後のNo name1の代表顔画像として設定する。また、笑った顔を代表顔画面に設定するようにしてもよい。すなわち、No name1の怒ったfatherよりもNo name2の笑ったfatherの方が代表顔画像として好ましいと判定し、結合後の代表顔画像にNo name2の笑ったfatherに変更するように設定してもよい。なお、笑った顔の判定方法(笑顔判定の方法)は、特に限定されず、公知の方法を用いることができる。笑顔判定の方法としては、例えば、個々の顔画像に対して目・眉の角度、口の角度等から判定を行う方法が挙げられる。
このとき、図示しないが、UI表示上は、辞書ID No.1に基づく画像と辞書ID No.2に基づく画像が同じグループとして表示されるが、辞書内部では辞書ID No.1と辞書ID No.2がそのまま別々に、かつ保持する特徴量も更新されずに管理される。
上述したように、本実施形態では、ユーザのUI表示上の代表顔画像のドラッグ操作に応じて、UI表示上のグループ表示を変更すると共に、辞書においては、辞書IDの変更は行わずに、辞書の人物ID紐づけ情報を更新する。これにより、UI上では人物毎にグループ表示することができる。そして、以降の個人認識処理において、UI上で正しいグループ表示を行うことができる。これにより、ユーザが辞書の登録情報を修正する手間を省くことができる。すなわち、ユーザの1回の修正作業により、以降の個人認識処理においてUI上で人物の誤ったグループ表示をすることを防ぐことができる。
また、ユーザ操作に応じて、辞書IDを変更せずに、辞書IDと人物IDの対応関係、すなわち、人物ID紐づけ情報のみを変更することにより、辞書の認識精度の低下を抑制することができる。
本実施形態では、No name1の代表顔画像の見直し・変更処理を自動的に実行するようにしたが、辞書内部の情報の更新のみを行い、代表顔画像の見直し・変更処理は実行しないようにしてもよい。また、代表顔画像の見直し・変更処理は、ユーザが手動により変更するようにしてもよい。
(実施形態4)
本実施形態では、UI上の表示処理及び顔辞書の更新処理以外は実施形態1と同様であるので、重複する説明は省略する。
図30は、ユーザの操作を説明する図である。
図30に示すUI表示画面3000では、表示領域3002、表示領域30006、及び表示領域3007にはそれぞれ人物IDが表示される。表示領域3002、表示領域3006、及び表示領域3007の左隣の領域には、それぞれNo name1及びNo name2及びNo name3の代表顔画像が表示される。また、表示領域3003には、表示領域3002の人物IDにより特定される人物の顔画像3004が1以上表示される。
図30では、同一人物がNo name1とNo name2とNo name3に分類されているとする。例えば、No name1に怒ったfatherが、No name2に笑ったfatherが、No name3に泣いているfatherが分類されている。
図30に示すように、ユーザがマウスポインタ3005を操作して、No name2の代表顔画像3006とNo name3の代表顔画像3007を選択する。そして、これらをドラッグして、No name1の人物グループへ移動させる。本実施形態では、このユーザ操作により、No name1とNo name2とNo name3を1つのグループに結合することができる。言い換えれば、No name1とNo name2とNo name3を結合して新たなグループを生成する。
本実施形態では、上述したユーザ操作により、辞書の登録情報を更新する。具体的には、辞書内部の辞書IDと人物IDの紐付け情報、すなわち、人物ID紐づけ情報を修正し、辞書ID No.2と辞書ID No.3をそれぞれNo name1へ紐付ける。これにより、人物ID紐づけ情報がNo name1である辞書ID No.1、辞書ID No.2及び辞書ID No.3は、UI上はひとつのNo name1という人物グループとして表示される。
これにより、図31に示すように、操作前に3:3で対応していた辞書IDと人物IDが、操作後は3:1で紐付けられることになる。つまり、1つの人物IDに対する辞書IDの数がユーザ操作前後で増加するが、UI表示上は修正前のNo name1、No name2及びNo name3がひとつのNo name1という人物IDによって、同じ人物グループとして表示される。すなわち、UI表示上は、辞書ID No.1に基づく画像と辞書ID No.2に基づく画像と辞書ID No.3に基づく画像とが同じグループとして表示される。しかしながら、辞書内部では辞書ID No.1と、辞書ID No.2と、辞書ID No.3がそのまま別々に、かつ保持する特徴量も更新されずに管理される。
上述したように、本実施形態では、ユーザのUI表示上の代表顔画像のドラッグ操作に応じて、3つ以上の複数人物グループを一度にひとつの人物グループへ結合させることができる。この操作によりUI表示上のグループ表示を変更すると共に、辞書においては、辞書IDの変更は行わずに、辞書の人物ID紐づけ情報を更新する。これにより、UI上では人物毎にグループ表示することができる。そして、以降の個人認識処理において、UI上で正しいグループ表示を行うことができる。これにより、ユーザが辞書の登録情報を修正する手間を省くことができる。すなわち、ユーザの1回の修正作業により、以降の個人認識処理においてUI上で人物の誤ったグループ表示をすることを防ぐことができる。
また、ユーザ操作に応じて、辞書IDを変更せずに、辞書IDと人物IDの対応関係、すなわち、人物ID紐づけ情報のみを変更することにより、辞書の認識精度の低下を抑制することができる。
(実施形態5)
本実施形態では、UI上の表示処理及び顔辞書の更新処理以外は実施形態1と同様であるので、重複する説明は省略する。
図32は、ユーザの操作を説明する図である。図32を用いて、グループ内の全画像が対象ではなく、グループ内の一部の画像をユーザが修正した場合について説明する。
図32に示すUI表示画面3200では、表示領域3202には人物IDが表示される。表示領域3202の左隣の領域には、No name1の代表顔画像が表示される。また、表示領域3203には、表示領域3202の人物IDにより特定される人物の顔画像3204が1以上表示される。
図32では、同一人物がNo name1とNo name2に分類されているとする。言い換えれば、No name1に含まれるべき人物がNo name2に分類されているとする。例えば、No name1に怒ったfatherが、No name2に笑ったfatherが分類されているとして説明する。
図32に示すように、ユーザがマウスポインタ3205を操作して、No name2に分類された画像からいくつかの画像を選択して、ドラッグし、No name1のところへ移動させる。このユーザ操作により、No name1とNo name2を1つのグループに結合することができる。
ここで、図32においてNo name2に属している顔画像は7個であるが、このうち斜線で表す5個の顔画像をユーザ操作によりNo name1へ移動させたとする。ここで、No name2に紐付く辞書ID No.2に保持されている顔特徴量の数が4個であるとする。そして、本実施形態では、実施形態1と同様に、辞書に登録する顔特徴量の数の上限を5個と定めている。
本実施形態においては、上記ユーザの修正操作を受けて、辞書内部の情報を更新する。具体的には、図26に示すようにNo name2に紐付けられた辞書ID No.2の紐付け情報を、No name1に紐付けるように修正する。本実施形態は、実施形態1と同様に、図26(a)に示すような対応関係が、図26(b)に示す状態となる。これにより、修正前後で辞書IDの数と人物IDの数が1対1で対応していた関係は崩れてしまうが、辞書IDの数と人物IDの数を1:2とすることで、UI表示上は同じNo name1という人物グループに表示されることになる。
上述したように、本実施形態では、ユーザのUI表示上のグループのうち一部の画像のドラッグ操作に応じて、移動させる画像が属するグループと、移動させる画像の移動先のグループとを結合させることができる。この操作によりUI表示上のグループ表示を変更すると共に、辞書においては、辞書IDの変更は行わずに、辞書の人物ID紐づけ情報を更新する。これにより、UI上では人物毎にグループ表示することができる。そして、以降の個人認識処理において、UI上で正しいグループ表示を行うことができる。これにより、ユーザが辞書の登録情報を修正する手間を省くことができる。すなわち、ユーザの1回の修正作業により、以降の個人認識処理においてUI上で人物の誤ったグループ表示をすることを防ぐことができる。
また、ユーザ操作に応じて、辞書IDを変更せずに、辞書IDと人物IDの対応関係、すなわち、人物ID紐づけ情報のみを変更することにより、辞書の認識精度の低下を抑制することができる。
なお、本実施形態では、No name2からNo name1へ移動させなかった残りの2個の顔画像もNo name1の人物グループに表示される。もし、この残り2個顔がNo name1と別人であった場合、ユーザは、さらにこの2個の画像に関しては手動修正を行う必要がある。しかしながら、その後の入力される多くの画像に関して正しく人物グルーピングがおこなわれるようになるため、ユーザによる手動修正操作は最小限に抑えることができる。なお、本実施形態では、ユーザ操作により移動させる画像の数が人物グループ内の数に対して多いほど効果が高くなり、もちろん、100%である場合に最も効果が高くなる。したがって、本実施形態に示した処理を行うことができる条件を設定するようにしてもよい。例えば、ドラッグ操作により移動させる画像の数が、その画像の属するグループの画像の数の90%以上である場合のみ、上記操作を有効とするという条件を設けてもよい。
(他の実施形態)
以上、本発明の各実施形態を説明したが、本発明の基本的構成は上述したものに限定されるものではない。以上説明した実施形態は本発明の効果を得るための一手段であり、類似の別手法を用いたり、異なるパラメータを用いたとしても、本発明と同等の効果が得られる場合は、本発明の範疇に含まれることは言うまでもない。
実施形態1〜5では、各人物グループを結合することについて説明したが、既に人物グループを結合した後にさらに結合することもできる。言い換えれば、既に2以上の人物IDが結合されている場合に、さらに1以上の人物IDを結合して、UI表示上で1つのグループに表示させることもできる。結合することができる人物グループの数は限定されるものではなく、4つ以上の人物グループをひとつの人物グループへ結合させることができる。
本実施形態では、ユーザが画像グループをマウスポインタによりドラッグ操作することで、人物グループの結合処理を実行する例を示したが、操作はマウスポインタによる操作に限定されるものでもない。
また、上述した実施形態では、オブジェクトとして人物を例に挙げて説明したが、オブジェクトは人物とは限らない。犬や猫などのペットの認識処理を行ってこれらを認識することにより、オブジェクトとしてペットを設定することができる。また、エッジ検出などの形を認識処理によれば、建物や小物なども認識できるため、オブジェクトとして、建物や小物などを設定することができる。これらの場合、オブジェクトの特徴量を抽出して、辞書登録すれば、上述した実施形態と同様の方法により、画像処理を行うことができる。
上述した実施形態では、ユーザ操作による修正指示に応じて、オブジェクト(人物)をオブジェクトの分類を修正して、表示装置104に表示させるように表示制御を行ったが、これに限定されるものではない。例えば、表示装置104に表示させなくてもよい。この場合、画像データから抽出したオブジェクトは、オブジェクト毎に分類して管理し、ユーザの修正指示があった場合にバックグラウンドで、オブジェクトの分類と辞書における特徴量の分類との関連付けを更新し、その更新に基づいてオブジェクトの分類を修正して管理するようにすればよい。このように管理することで、図18で説明したレイアウト生成処理において、適切なレイアウトを生成することができる。
上述した実施形態では、レイアウト出力物として、1ページに複数の画像を配置した出力物を生成する例を挙げて説明したが、本発明は、複数ページのアルバム出力にも適用することができる。
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部又は全部をハードウェアによって実現するようにしてもよい。