以下、本発明の実施の形態について図面を用いて詳細に説明する。
(実施形態1)
以下では、入力画像群を用いて自動でレイアウト出力物を生成するために、本発明における好適な実施形態1について説明する。これはあくまで実施の1つの形態を例として示したものであり、本発明は以下の実施形態に限定されるものではない。
図1は実施形態1の画像処理装置のハードウェア構成例を示すブロック図である。
図1において、画像処理装置115は、CPU100と、ROM101と、RAM102と、2次記憶装置103と、表示装置104と、入力装置105と、IF107と、IF108と、無線LAN109を備えている。さらに、内部撮像デバイス106を備えている。これらは、制御バス/データバス110により相互に接続されている。本実施形態の画像処理装置115は、情報処理装置によって実現される。
画像処理装置115は、例えば、コンピュータ115である。CPU(中央演算装置)100は、実施形態1で説明する情報処理を以下に示すアプリケーションなどのプログラムに従って実行する。ROM101は、CPU100により実行されるプログラムが記憶されている。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。2次記憶装置103はハードディスク等であり、画像ファイルや画像解析結果を保存するデータベース等を保存するための記憶媒体である。表示装置104は、例えば、ディスプレイであり、本実施形態の処理結果など以下に示す種々のUI(User Inter face)をユーザーに提示する装置である。表示装置104は、タッチパネル機能を備えても良い。また、110は制御バス/データバスであり、上述の各種構成要素とCPU100とを相互に接続する。このほかに、ユーザーが画像補正の処理の指示等を入力するためのマウスやキーボード等の入力装置105も備える。
また、画像処理装置115は、内部撮像デバイス106を備えてもよい。内部撮像デバイス106で撮像された画像は、所定の画像処理を経た後、2次記憶装置103に記憶される。また、画像処理装置115はインターフェース(IF108)を介して接続された外部撮像デバイス111から読み込んでも構わない。さらに、画像処理装置115は無線LAN(Local Area Network)109を備え、無線LAN109はインターネット113に接続されている。インターネット113に接続された外部サーバー114より画像データを取得することもできる。
最後に、画像等を出力するためのプリンタ112が、IF107を介して画像処理装置115に接続されている。尚、プリンタ112はさらにインターネット上に接続されており、無線LAN109経由でプリントデータのやり取りをすることもできる。
図2は実施形態1の上記アプリケーションを含むソフトウェア構成を示すブロック図である。
まず、画像処理装置115が取得した画像データは、通常、JPEG(Joint Photography Expert Group)等の圧縮形式で圧縮されている。そのため、画像コーデック部200は、その圧縮形式に基づいて、画像データを解凍して、いわゆる、RGB点順次のビットマップデータ形式の画像データ(ビットマップデータ)に変換する。変換されたビットマップデータは、表示・UI制御部201に伝達され、ディスプレイ等の表示装置104上に表示される。
ビットマップデータは、さらに、画像センシング部203(アプリケーション)に入力され、画像センシング部203において、画像の様々な解析処理(詳細は後述)が行われる。解析処理の結果、得られた画像の様々な属性情報は、所定の形式に従ってデータベース部202(アプリケーション)において、上述した2次記憶装置103に記憶される。尚、以降においては、画像解析処理とセンシング処理は同義で扱う。
シナリオ生成部204(アプリケーション)では、ユーザーが入力した様々な条件に応じて、詳細は後述するが、自動で生成すべきレイアウトの条件を生成する。レイアウト生成部205では、生成されたシナリオに従って、画像データを配置するためのレイアウトを自動で生成する処理を行う。
生成したレイアウトは、レンダリング部206で表示用のビットマップデータにレンダリングされ、そのレンダリング結果であるビットマップデータは表示・UI制御部201に送信され、その内容が表示装置104に表示される。一方で、レンダリング結果は、プリントデータ生成部207に送信されて、プリントデータ生成部207でプリンタ用コマンドデータに変換され、プリンタ112に送信される。
図3〜図6を用いて、本実施形態の基本的な画像処理のフローチャートについて説明する。
図3及び図4は、画像センシング部203が実行する処理のフローチャートを示しており、複数の画像データ群を取得して、それぞれについて解析処理を施し、その結果をデータベース部202に格納するまでの処理を示している。
図5は、検出した顔位置情報に基づいて、同じ人物と思われる顔情報をグループ化する人物グループ生成処理を示している。
図6は、画像の解析情報及びユーザーが入力した様々な情報に基づいて、レイアウト作成のためのシナリオを決定し、そのシナリオに基づいて、レイアウトを自動で生成するための処理を示している。
まず、図3を用いて、画像センシング部203が実行する処理のフローチャートについて説明する。
S301において、画像データ群の取得を行う。画像データ群は、例えば、ユーザーが、撮影画像が格納された撮像装置やメモリカードを画像処理装置115に接続し、これらから撮影画像を読み込むことで取得する。また、画像データ群として、内部撮像デバイス110で撮影され、2次記憶装置103に記憶されている撮像画像を取得してもよい。画像データ群は、無線LAN109を介して、インターネット113上に接続された外部サーバー114等、画像処理装置115以外の装置から取得してもよい。
ここで、図8及び図9を用いて、画像データ群を取得した際の表示装置104の表示について説明する。画像データ群を取得すると、図8や図9に示すように、表示装置104上のUIは、取得した画像データに基づく画像が確認できる表示となる。表示装置104上のUIの表示方法は、画像を確認できるものであれば、特に限定されるものではない。例えば、図8に示すように、UI801に2次記憶装置103内のフォルダ単位で画像のサムネイル802を表示してもよいし、図9に示すようにUI901でカレンダーにおいて日付ごとに画像データが管理されていてもよい。図9のUI901では、日付の部分902をクリックすれば、同日に撮影された画像が、図8のようなサムネイル一覧で表示される。
次に、S302〜305において、取得した画像データ群それぞれについて、解析処理及び解析結果のデータベース登録を行う。
具体的には、S302において、各画像のデコードを行う。まず、画像センシング部203(アプリケーション)が、新規で保存され未だセンシング処理が行われていない画像データをサーチする。そして、抽出された各画像について、画像コーデック部200が画像データ(圧縮画像データ)からビットマップデータに変換する(デコードする)。
次に、S303において、ビットマップデータに対して、各種センシング処理を実行してセンシング情報を取得し、データベース登録をする。ここでいうセンシング処理とは、画像解析処理を指しており、本実施形態では、図10に示す様々な画像解析処理を行う。具体的には、センシング処理として、画像データ中の被写体の顔検出及び顔領域の特徴量解析、画像の特徴量解析、シーン解析を行い、それぞれ図10に示すようなデータ型の結果を算出する。本実施形態では、画像基本特徴量としては、平均輝度(int:値0〜255)、平均彩度(int:0〜255)、平均色相(int:値0〜359)を解析した。また、顔検出としては、人物顔の個数(int:値0以上(0〜MAXFACE)、人物顔の位置情報である座標位置(int*8:値0以上(Width及びHeightそれぞれ同様)を解析した。さらに、顔領域内の平均Y(int:値0〜255)、顔領域内の平均Cb(int:値−128〜127)、顔領域内の平均Cr(int:値−128〜127)を解析した。
尚、本実施形態では、被写体の顔を人物とするが、ペット等の動物の顔を被写体としてもよい。
以下、それぞれのセンシング処理について説明する。
まず、画像の基本的な特徴量である全体の平均輝度、平均彩度については、公知の方法で算出すればよいため、簡単に説明する。平均輝度については、画像の各画素について、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への保存形式は、特に限定されないが、例えば、図11に示すような汎用的なフォーマット(例えば、XML:eXtensible Markup Language)で記述し、記憶すればよい。
図11では、各画像毎の属性情報を、3つのカテゴリに分けて記述する例を示している。1番目の<BaseInfo>タグは、画像サイズや撮影時情報として、あらかじめ取得した画像ファイルに付加されている情報である。ここには、画像毎の識別子ID(ID)や、画像ファイルが格納されている保存場所(<ImagePath>)、画像サイズ(<ImageSize〜>)、撮影日時(<CaptureDateTime>)等が含まれる。
次に、2番目の<SensInfo>タグは、上述した画像解析処理の結果を格納するためのタグである。画像全体の平均輝度、平均彩度、平均色相やシーン解析結果が格納され、さらに、画像中に存在する人物の顔位置や顔色に関する情報が記述可能である。
次に、3番目の<UserInfo>タグは、ユーザーが画像毎に入力した情報を格納することができるが、詳細については後述する。
尚、画像の属性情報のデータベース部202の格納方法については、上記に限定されるものではなく、その他、どのような形式であっても構わない。
そして、S305において、取得した画像データ群の内、未処理の画像データが最後の画像データであるか否かを判定する。最後の画像データでない場合(S305でNO)、S302に戻り、未処理の画像データを、取得した画像データ群から取得する。一方、最後の画像データである場合(S305でYES)、S306に進む。
S306において、個人認識処理を用いた人物グルーピングを行う。ここでは、S303で検出された顔位置情報を用いて、人物毎のグループを生成する人物グループ生成処理を実行する。あらかじめ人物の顔を自動でグループ化しておくことにより、その後、ユーザーが各人物に対して名前を付けていく作業を効率化することが可能となる。
ここでの人物グループ生成処理は、個人認識技術を用いて、図5のフローにより実行する。
尚、個人認識技術は、主に顔の中に存在する眼や口といった器官の特徴量抽出と、それらの関係性の類似度の比較という二つの技術で構成される。個人認識技術として、例えば、特許第3469031等に開示されているように公知の手法を用いることができる。
図5はS306の詳細を示すフローチャートである。
まず、S501において、2次記憶装置103に記憶されている画像データを順次読み出してデコードを行う。デコード処理は、S302と同様であるので説明を省略する。
S502において、データベース部202にアクセスし、画像データ中に含まれる顔の個数と顔の位置情報を取得する。
次に、S504において、個人認識処理を行うための正規化顔画像を生成する。
ここで、正規化顔画像とは、画像内に様々な大きさ、向き、解像度で存在する顔を切り出して、すべて所定の大きさと向きになるよう、変換して切り出した顔画像のことである。個人認識を行うためには、眼や口等の器官の位置が重要となるため、正規化顔画像のサイズは、器官が確実に認識できる程度であることが望ましい。このように正規化顔画像を用意することにより、特徴量検出処理において、様々な解像度の顔に対応する必要がなくなるという利点がある。
次に、S505において、正規化顔画像から顔特徴量を抽出する。ここでの顔特徴量とは、眼や口、鼻等の器官の位置、大きさや、さらには顔の輪郭等を含む。
さらに、S506において、データベース部202上に構築されている、あらかじめ人物の識別子(人物ID)毎に用意されている顔特徴量を記憶する顔辞書を参照して、抽出した顔特徴量と類似しているか否かを判定する。尚、ここでは、いずれの顔特徴量も登録するものとして説明したが、詳細は後述するが、図33及び35に示すように顔特徴量を登録しない場合もある。
判定の結果、類似している場合(S506でYES)、S509において、抽出した特徴量を同じ(あるいは類似の)人物の追加特徴量として、対応する人物IDのエントリに追加辞書登録する。
一方、判定の結果、類似していない場合(S506でNO)、現在評価対象となっている顔の特徴量は、これまでに顔辞書に登録された人物とは異なる人物であるとして、新規人物IDを発行して顔辞書に新規辞書登録する。尚、詳細は後述するが、本実施形態では、顔状態判定において、顔状態が悪いと判定されたものは辞書登録を行わない。
S510において、処理対象の画像データ中に、他の顔領域があるか否かを判定する。他の顔領域がある場合(S510でYES)、S502に戻る。一方、他の顔領域がない場合(S510でNO)、S511に進む。
S511において、全ての画像についてS502〜509の処理が終了したか否かを判定する。全ての画像について処理が終了した場合は、処理を終了し、全ての画像について処理が終了していない場合は、S502へ戻る。つまり、S502〜S509までの処理を、取得した画像データ群の中から検出した顔領域全てに適用して、登場した人物のグループ化を行う。
グループ化の結果は、図16のXMLフォーマットで示すように、各顔領域毎にIDタグを用いて記述し、データベース部202(図3)に保存しておく。
尚、実施形態1においては、図3に示すように、全ての画像データのセンシング処理及びデータベースの登録が終了した後に人物グループ生成処理を実行しているが、これ以外の方法としてもよい。例えば、図4に示すように、各画像データに対して、S403においてセンシング処理を実行し、データベースに登録した後に、顔の位置情報を利用して、S405において人物グループ生成処理を実行し、これを繰り返して全ての画像データの処理を行うようにしてもよい。
また、上記の処理によって得られた各人物グループは、表示装置104のUIに表示される。本実施形態に係る各人物グループの表示を図7に示す。図7のUI701において、702は人物グループの代表顔画像を表しており、その横には、該人物グループの名前を表示する領域703が存在する。自動の人物グループ化処理を終了した直後は、同図に示すように、領域703には、人物名が「No name」と表示される。また、704は人物グループに含まれる複数の顔画像が表示される。後述するが、同図のUI701においては、「No name」の領域703を指定して人物名を入力したり、人物毎に誕生日や続柄等の情報を入力したりすることができる。
また、上述したセンシング処理は、オペレーティングシステムのバックグラウンドタスクを利用して実行しても良い。この場合、ユーザーがコンピュータ115上で別の作業を行っていたとしても、画像群のセンシング処理を継続させることができる。
本実施形態では、ユーザーが手動で画像に関する様々な属性情報を設定してもよく、自動で画像に関する様々な属性情報を設定するようにしてもよい。
その属性情報の例の一覧を、図12に示す。手動又は自動によって登録する属性情報は大きく分けると、画像毎に設定する画像の属性情報と、人物グループ処理によってグループ分けされた人物毎に設定する人物の属性情報とに分かれる。
まず、画像の属性情報として、ユーザーのお気に入り度が挙げられる。お気に入り度は、例えば、その画像を気に入っているかどうかを、ユーザーが手動で入力することができる。例えば、図13示すように、UI1301上で、所望のサムネイル画像1302をマウスポインタ1303で選択し、右クリックをすることでお気に入り度を入力できるダイアログを表示する。ユーザーは、メニューの中で自分の好みに応じて、「★」の数を選択することができる。本実施形態では、お気に入り度が高いほど「★」の数が多くなるよう設定した。
また、お気に入り度は、ユーザーが手動で設定せずに、自動で設定するようにしてもよい。例えば、ユーザーが閲覧した回数をお気に入り度として自動設定してもよい。ユーザーが図8に示す画像サムネイル一覧表示(UI801)の状態から、所望のサムネイル(画像ファイル)をクリックし、1画像表示画面に遷移したとする。その遷移した回数を計測して、回数に応じてお気に入り度を自動設定してもよい。すなわち、閲覧した回数が多いほど、ユーザーがその画像を気に入っていると判定する。
また他の例として、プリント回数に応じてお気に入り度を自動設定してもよい。具体的には、例えば、プリント操作を行った場合、その画像を気に入っていると判定し、プリント回数が多いほどよりお気に入り度が高いと判定する。
以上で説明したように、お気に入り度については、ユーザーが手動で設定する方法、閲覧回数やプリント回数に基づいて自動で設定する方法が挙げられる。
上述したような属性情報は、それぞれ個別に、図11で示すようなXMLフォーマットで、データベース部202の<UserInfo>タグ内に格納される。例えば、お気に入り度は<FavoriteRate>タグ、閲覧回数は<ViewingTimes>タグ、プリント回数は<PrintingTimes>タグに格納される。
また、画像毎に設定する別の属性情報として、イベント情報が挙げられる。イベント情報としては、例えば、家族旅行「travel」、卒業式「graduation」、結婚式「wedding」等が挙げられる。
イベントの指定は、例えば、図14のUI1401で示すカレンダー上で所望の日付をマウスポインタ1402で指定して、その日のイベント名を入力することで設定できるようにしてもよい。指定されたイベント名(イベント情報)は、画像の属性情報の一部として、図11示すXMLフォーマットに含まれることになる。XMLフォーマットでは、<UserInfo>タグ内の<Event>タグを使って、イベント名と画像を関連付けている(紐付けている)。
次に、図15を用いて、人物の属性情報について説明する。
図15は、人物の属性情報を入力するためのUI1501を示している。同図において、1502は所定人物(この場合は「father」)の代表顔画像を示している。また、1503は所定人物の名前を表示する領域を示している。また、1504には、他の画像の中から検出し、S506で顔特徴量が類似していると判定された画像の一覧が表示される。
センシング処理が終了した直後は、図7に示したように各人物グループには名前が入力されていないが、「No name」の領域703をマウスポインタで指示することにより、任意の人物名を入力することができる。ここで任意の人物名を入力することにより、図15に示すように1503に所定人物の名前が表示される。
また、人物毎の属性情報として、それぞれの人物の誕生日やアプリケーションを操作しているユーザーから見た続柄を設定することもできる。本実施形態では、図15の人物の代表顔画像1502をクリックすると、画面下部に図示するように、クリックした人物の誕生日を第1入力部1505で、続柄情報を第2入力部1506で入力することができるようにした。
以上、入力された人物の属性情報は、これまでの画像に紐付けられた画像の属性情報とは異なり、図16のようなXMLフォーマットによって、画像の属性情報とは別にデータベース部202内で管理される。
また、実施形態1においては、あらかじめ様々なレイアウトテンプレートが用意されている。レイアウトテンプレートとは、例えば、図17及び図19に示すようなものであり、それぞれレイアウトする用紙1701及び1901上に、複数の画像配置枠1702、及び1902及び1903(以降、スロットと同義)で構成されている。
このようなレイアウトテンプレートは、あらかじめ実施形態1を実行するためのソフトウェアが画像処理装置115にインストールされた時点で、2次記憶装置103に保存しておけばよい。また、その他の方法として、IF107や無線LAN109を介して接続されたインターネット113上に存在する外部サーバー114から、任意のレイアウトテンプレートを取得してもよい。
これらのレイアウトテンプレートは、汎用性の高い構造化言語、例えば、上述したセンシング処理の結果の格納と同様にXMLフォーマットで記述されているものとする。図17及び図19のレイアウトテンプレートに対するXMLデータの例をそれぞれ図18及び図20に示す。これらの図では、まず、<BASIC>タグにおいて、レイアウトテンプレートの基本的な情報を記述する。基本的な情報としては、例えば、レイアウトテンプレートのテーマやページサイズ、及びページの解像度(dpi)等が挙げられる。図18及び図20において、レイアウトテンプレートの初期状態では、レイアウトテンプレートのテーマである<Theme>タグはブランクとなっている。本実施形態では、基本情報として、ページサイズ(<PageSize>タグ)はA4、解像度(<Resolution>タグ)は300dpiを設定している。
また、以降は、上述した画像配置枠の情報を<ImageSlot>タグで記述している。<ImageSlot>タグの中には<ID>タグと<POSITION>タグの2つを保持し、画像配置枠のIDと位置を記述してある。位置情報については、図17及び図19で図示するように、例えば、左上を原点とするX−Y座標系において定義する。
また、<ImageSlot>タグには、その他に、それぞれのスロットに対して、スロットの形状及び配置すべき推奨人物グループ名を設定することができる。
例えば、図17のレイアウトテンプレートでは、図18の<Shape>タグで、すべてのスロットは矩形形状(「rectangle」)で、人物グループ名は<PersonGroup>タグで「MainGroup」を配置することを推奨している。
また、図19のレイアウトテンプレートにおいては、図20に示すように、中央に配置しているID=0のスロットは矩形形状(「rectangle」)であることが記述されている。また、人物グループは「SubGroup」を配置し、その他のID=1、2と続くスロットは楕円形状(「ellipse」)で、人物グループは「MainGroup」を配置することを推奨している。
実施形態1においては、このようなレイアウトテンプレートを多数保持するものとした。
上述したように、本実施形態に係るアプリケーションは、入力された画像群に対して解析処理を実行し、人物を自動的にグループ化してUIで表示することができる。また、ユーザーはその結果を見て、人物グループ毎に名前や誕生日等の属性情報を入力したり、画像毎にお気に入り度等を設定することができる。
さらにはテーマ毎に分類された多数のレイアウトテンプレートを保持することができる。
以上の条件を満たすと、本実施形態に係るアプリケーションは、ある所定のタイミングで、自動的にユーザーに好まれそうなコラージュレイアウトを生成し、ユーザーに提示する処理を行う(以下、レイアウトの提案処理とする)。
図6はレイアウトの提案処理の基本的なフローチャートを示している。
まず、S601において、提案処理のシナリオを決定する。シナリオには、提案するレイアウトのテーマ、レイアウトテンプレート、レイアウト内で重視する人物(主人公)の設定、並びにレイアウト生成に用いる画像群の選定情報が含まれる。
以下、2つのシナリオ決定について説明する。
例えば、各人物の誕生日の2週間前になった場合、自動的にコラージュレイアウトを生成し提示するように予め設定されているとする。そして、図15でグループ化されている人物「son」の1歳の誕生日が2週間後となったとする。この場合には、提案するレイアウトのテーマは成長記録「growth」と決定する。次にテンプレートの選択を行うが、この場合には、成長記録に適した図19に示すようなレイアウトテンプレートを選択し、図30に示すように、XMLの<Theme>タグの部分に「growth」と記述する。次に、レイアウトを行う際に注目する主人公「MainGroup」として、「son」を設定する。また、レイアウトを行う際に副次的に注目する「SubGroup」として「son」と「father」を設定する。次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベース部202を参照し、人物「son」の誕生日からこれまでに撮影した画像群のうち、「son」を含む画像群を抽出してリスト化する。このリスト化によって生成される画像リストは、例えば、データベース部202に記憶管理される。以上が、成長記録のレイアウトのためのシナリオ決定である。
異なる例として、1カ月以内に撮影された旅行の写真がある場合、自動的にコラージュレイアウトを生成して提示するように予め設定されているとする。図14で登録したイベント情報から、例えば、数日前に家族旅行に行き、その時の画像が2次記憶装置103に保存されていることがわかると、シナリオ生成部204は、家族旅行のレイアウトを提案するためのシナリオを決定する。この場合には、提案するレイアウトのテーマは旅行「travel」と決定する。次に、レイアウトテンプレートの選択を行うが、この場合には、旅行に適した図17に示すようなレイアウトテンプレートを選択し、図31に示すように、XMLの<Theme>タグの部分に@travel」と記述する。次に、レイアウトを行う際に注目する主人公「MainGroup」として、「son」、「mother」、「father」を設定する。このように、XMLの特性を活かせば、「MainGroup」として複数の人物を設定することができる。次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベース部202を参照し、旅行イベント「travel」に紐付けられた画像群を抽出してリスト化する。このリスト化によって生成される画像リストは、例えば、データベース部202に記憶管理される。以上が、家族旅行のレイアウトのためのシナリオ決定である。
次に、図6のS603において、上述したシナリオに基づくレイアウトの自動生成処理を実行する。ここで、図21を用いて、シナリオに基づくレイアウトの自動生成処理について説明する。図21はレイアウト生成処理の詳細な処理フローを示している。
まず、S2101において、上述したシナリオで決定されたレイアウトテーマ及び人物グループ情報が設定された後のレイアウトテンプレート情報202cを、データベース部202より取得する。
次に、S2103において、シナリオで決定した画像群リスト202dに基づいて、各画像毎にその特徴量をデータベース部202から取得し、画像群属性情報リストを生成する。ここでいう画像群情報リストとは、図11に示す<IMAGEINFO>タグが画像リスト分だけ並んだ構成となっている。以降では、この画像属性情報リストに基づいて、S2105〜S2109における自動レイアウト生成処理を行う。
このように、本実施形態の自動レイアウト生成処理では、画像データそのものを直接扱うのではなく、あらかじめ画像毎にセンシング処理を行ってデータベース部202に記憶しておいた属性情報を利用する。この理由は、レイアウト生成処理を行う際に、画像データそのものを対象としてしまうと、画像群を記憶するために非常に巨大なメモリ領域を必要としてしまうためである。すなわち、本実施形態のようにデータベース部202に記憶しておいた属性情報を利用することにより、メモリ領域の使用量を低減することができる。
次に、S2105において、入力された画像群の属性情報を用いて、入力された画像群の中から不要画像のフィルタリングを行う。ここで、図22を用いて、フィルタリング処理について説明する。
図22は、フィルタリング処理のフローチャートである。
各画像毎に、まず、S1601において、全体の平均輝度値(AveY)が所定閾値(ThY_LowとThY_Hight)範囲内に含まれているか否かの判定を行う。含まれていない場合(S1601でNO)、S1606に進み、注目画像はレイアウト対象画像から除去する。
同様に、S1602〜S1605では、注目画像に含まれる顔領域それぞれについて、平均色差成分(例えば、AveY、AveCb、AveCr成分)が、良好な肌色領域を示す所定閾値範囲内に含まれているか否かの判定を行う。具体的には、S1602では、ID=Nである顔領域のAveYが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1603では、ID=Nである顔領域のAveChが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1604では、ID=Nである顔領域のAveCrが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S1605では、最後の顔であるか否かを判定する。最後の顔ではない場合は、S1602へ戻り、最後の顔である場合は、処理を終了する。
そして、S1602〜S1605のすべての判定がYESとなる画像のみ、以降のレイアウト生成処理に適用される。
尚、このフィルタリング処理では、以降の一時レイアウト作成処理に明らかに不要と判定できる画像の除去を目的としているため、上記閾値は比較的緩やかに設定することが望ましい。例えば、S1601の画像全体の輝度値の判定において、ThY_HighとThY_Lowの差が画像ダイナミックレンジに比して極端に小さいと、それだけYESと判定される画像が少なくなってしまう。したがって、本実施形態のフィルタリング処理では、両者の差をできる限り広く設定し、かつ明らかに異常画像と判定されるものは除去できるような閾値を設定する。
次に、図21のS2107において、図22のフィルタリング処理でレイアウト対象となった画像群を用いて、大量(L個)の一時レイアウトを生成する。一時レイアウトの生成は、取得したテンプレートの画像配置枠に対して、入力画像を任意に当てはめる処理を繰り返すことで実行する。この時に、以下のパラメータ(画像選択・配置・トリミング基準)をランダムで決定する。
画像選択としては、例えば、レイアウト中の画像配置枠がN個の時、画像群の中からどの画像を選択するかが挙げられ、配置としては、例えば、選択した複数の画像を、どの配置枠に配置するかが挙げられ、トリミング基準としては、配置した際に、どの程度のトリミング処理を行うかというトリミング率が挙げられる。
尚、トリミング率は、例えば、0〜100%で表わされ、画像の中心を基準として、図23のように所定の領域がトリミングされる。同図において、2301は画像全体を示し、2302はトリミング率50%でトリミングした際の切り取り枠を示している。
上記の画像選択・配置・トリミング基準に基づいて、可能な限り数多くの一時レイアウトを生成する。生成した各一時レイアウトは、図32のXMLのように表わすことができる。各スロットに対して、選択され配置された画像のIDが<ImageID>タグで、トリミング率が<TrimingRatio>タグでそれぞれ記述されている。
尚、ここで生成する一時レイアウトの数Lについては、後述するレイアウト評価ステップでの評価処理の処理量と、それを処理する画像処理装置115の性能に応じて決定されるが、例えば、数十万通り以上の一時レイアウトを用意することが望ましい。生成したレイアウトは、それぞれIDを付加して図32のXML形式で2次記憶装置103にファイル保存してもよいし、構造体等の別のデータ構造を用いてRAM102上に記憶してもよい。
次に、図21のS2108において、作成したL個の一時レイアウトに対して、それぞれ所定のレイアウト評価量を用いて評価を行う。本実施形態におけるレイアウト評価量の一覧を、図24に示す。同図に示すように、本実施形態で用いるレイアウト評価量は、主に、3つのカテゴリに分けることができる。
一つ目の評価カテゴリは、画像個別の評価量である。これは画像の明るさや彩度、ブレぼけ量等の状態を判定し、スコア化するものである。スコア化の一例を以下に示す。まず、明るさの適正度については、図25に示すように、平均輝度がある所定閾値範囲内においてはスコア値100とし、所定閾値範囲外になるとスコア値が下がるよう設定している。また、彩度の適正度については、図26に示すように、画像全体の平均彩度がある所定の彩度値より大きい場合にはスコア値100とし、所定値より小さい場合にはスコア値を徐々に下げていくよう設定している。
二つ目の評価カテゴリは、画像とスロットの適合度の評価(画像・スロット適合度評価)である。画像・スロット適合度を判定し、スコア化するものである。画像・スロットの適合度の評価としては、例えば、人物適合度、トリミング欠け判定が挙げられる。人物適合度とは、スロットに指定されている人物と、実際にそのスロットに配置された画像内に存在する人物の適合率を表したものである。例を挙げると、あるスロットが、XMLで指定されているPersonGroupで、「father」、「son」が指定されているものとする。この時、そのスロットに割り当てられた画像にその2人の人物が写っていたとすると、そのスロットの人物適合度はスコア値100とする。もし片方の人物しか写っていなかったとすると、適合度はスコア値50とする。両者とも写っていなかった場合は、スコア値0とする。スロット内の適合度は、各スロット毎に算出した適合度の平均値とする。
また、別の画像・スロット適合度評価量として、トリミング領域2702の欠け判定が存在する。例えば、図27に示すように、画像2701中に存在する顔の位置2703が判明している場合、欠けた部分の面積に応じて、0から100までのスコア値を算出する。欠けた面積が0の場合、スコアは100とし、逆にすべての顔領域が欠けた場合、スコア値は0とする。
三つ目の評価カテゴリは、レイアウトページ内のバランス(ページ内バランス評価)の評価である。図24では、バランスを評価するための評価値として、画像類似性、色合いばらつき、顔サイズばらつきを挙げている。
まず、「画像類似性」について説明する。画像類似性は、大量に生成した一時レイアウト毎に、それぞれの画像の類似性を算出する。例えば、旅行テーマのレイアウトを作成したい場合、あまりに似通った類似度の高い画像ばかりが並んでいたとすると、それは良いレイアウトとは言えないことがある。例えば、類似性は、撮影日時によって評価することができる。撮影日時が近い画像は、同じような場所で撮影された可能性が高いが、撮影日時が離れていれば、その分、場所もシーンも異なる可能性が高いからである。撮影日時は、図11に示すように、画像の属性情報として、予めデータベース部202に保存されている、画像毎の属性情報から取得することができる。
撮影日時から類似度を算出するには、以下のような計算を行う。例えば、今注目している一時レイアウトに図28で示すような4つの画像がレイアウトされているものとする。尚、図28において、画像IDで特定される画像には、それぞれ撮影日時情報が付加されている。具体的には、撮影日時として、年月日及び時間(西暦:YYYY、月:MM、日:DD、時:HH、分:MM、秒:SS)が付加されている。このとき、この4つの画像間で、撮影時間間隔が最も短くなる値を算出する。この場合は、画像ID102と画像ID108間の30分が最も短い間隔である。この間隔をMinIntervalとし、秒単位で格納する。すわなち、30分=1800秒である。このMinIntervalをL個の各一時レイアウト毎に算出して配列stMinInterval[l]に格納する。次に、stMinInterval[l]の中で最大値MaxMinInterval値を算出する。すると、1番目の一時レイアウトの類似度評価値Similarity[l]は、以下のようにして算出することができる。
Similarity[l] = 100×stMinInterval[l] / MaxMinInterval
すなわち、Similarity[l]は、最小撮影時間間隔が大きいほど100に近づき、小さいほど0に近づく値となっているため、画像類似度評価値として有効である。
次に、レイアウトページ内のバランスを評価するための評価量として、「色合いのばらつき」について説明する。例えば、旅行テーマのレイアウトを作成したい場合、あまりに似通った色(例えば、青空の青、山の緑)の画像ばかりが並んでいたとすると、それは良いレイアウトとは言えないことがある。この場合は、色合いのばらつきが大きくなるように設定する。ここでは注目している1番目の一時レイアウト内に存在する画像の平均色相AveHの分散を算出して、それを色合いのばらつき度tmpColorVariance[l]として格納する。次に、tmpColorVariance[l]の中での最大値MaxColorVariance値を算出する。すると、1番目の一時レイアウトの色合いばらつき度の評価値ColorVariance[l]は以下のようにして算出することができる。
ColorVariance[l] = 100 × tmpColorVariance[l] / MaxColorVariance
すなわち、ColorVariance[l]は、ページ内に配置された画像の平均色相のばらつきが大きいほど100に近づき、小さいほど0に近づく値となっているため、色合いのばらつき度評価値として有効である。
次に、レイアウトページ内のバランスを評価するための評価量として、「顔サイズばらつき」について説明する。例えば、旅行テーマのレイアウトを作成したい場合、レイアウト結果を見て、あまりに似通った顔のサイズの画像ばかりが並んでいたとすると、それは良いレイアウトとは言えないことがある。レイアウト後の紙面上における顔の大きさが、小さいものもあれば大きいものもあり、それらがバランスよく配置されていることが、良いレイアウトとする場合、顔サイズばらつきが大きくなるように設定する。その場合、注目している1番目の一時レイアウト内に配置された後の顔の大きさ(顔位置の左上から右下までの対角線の距離)の分散値を、tmpFaceVariance[l]として格納する。次に、tmpFaceVariance[l]の中での最大値MaxFaceVariance値を算出する。すると、1番目の一時レイアウトの顔サイズばらつき度の評価値FaceVariance[l]は、以下のようにして算出することができる。
FaceVariance[l] = 100 × tmpFaceVariance[l] / MaxFaceVariance
すなわち、FaceVariance[l]は、紙面上に配置された顔サイズのばらつきが大きいほど100に近づき、小さいほど0に近づく値となっているため、顔サイズのばらつき度評価値として有効である。
また、その他カテゴリとして、ユーザーの嗜好性評価が考えられる。
以上説明したような、各一時レイアウト毎に算出した複数の評価値を統合化して、各一時レイアウト毎のレイアウト評価値とする。今、1番目の一時レイアウトの統合評価値を、EvalLayout[l]とし、上記で算出したN個の評価値(図24の評価値それぞれを含む)の値を、EvalValue[n]とする。この時、統合評価値は、以下の式で算出することができる。
上式において、W[n]は、図24で示したシーン毎の各評価値の重みである。この重みは、レイアウトのテーマ毎に異なる重みを設定していることが特徴となっている。例えば、図24に示すようにテーマを成長記録「growth」と旅行「travel」で比較した場合、旅行「travel」の方は、できるだけ良質の写真をいろいろな場面で数多くレイアウトすることが望ましいとし、画像の個別評価値やページ内のバランス評価値を重視する傾向に設定する。一方、成長記録「growth」の方は、画像のバリエーションよりは、成長記録の対象となる主人公が確実にスロットに適合しているか否かが重要であるとし、ページ内バランスや画像個別評価よりも、画像・スロット適合度評価を重視する傾向に設定する。
このようにして算出したEvalLayout[l]を用いて、S2109において、レイアウト結果表示のためのレイアウトリストLayoutList[k]を生成する。レイアウトリストは、予め定められた個数(例えば、5個)に対して、EvalLayout[l]のうち、評価値が高いもの順に識別子1を記憶しておく。例えば、最も良いスコアを出したものが、l=50番目に作成した一時レイアウトであった場合、LayoutList[0]=50となる。同様に、LayoutList[1]以降は、スコア値が2番目以降の識別子1を記憶しておく。
次に、図21を用いて説明したレイアウト生成処理によって得られたレイアウト結果を、図6のS605において、レンダリングしてその結果を表示する。本実施形態では、レンダリングした結果を図29のUI2901上に表示する。S605においては、まず、LayoutList[0]に格納されているレイアウト識別子を読み出し、そのレイアウト識別子に相当する一時レイアウト結果を、2次記憶装置103あるいはRAM102上から読み出す。レイアウト結果には、上述したようにテンプレート情報と該テンプレート内に存在するスロット毎に、割り当てられた画像名が設定されている。S605では、これらの情報に基づいて、画像処理装置115上で動作するOSの描画関数を用いて、該レイアウト結果をレンダリングし、図29のレイアウト結果2902のように表示することになる。
Nextボタン2904を押下することにより、次点スコアであるLayoutList[1]の識別子を読み出し、上記と同様にレンダリング後、表示を行うことで、ユーザーは様々なバリエーションの提案レイアウトを閲覧することができる。また、Previousボタン2903を押下することにより、前に表示したレイアウトを再表示することもできる。さらに、表示されたレイアウトが気に入った場合には、プリントボタン2905を押下することで、画像処理装置115に接続されたプリンタ112からレイアウト結果2902をプリントアウトすることもできる。
ここで、本実施形態に係る個人認識時に使用する顔辞書作成の処理に関して詳細に説明する。本実施形態では、検出した顔画像のぼけ具合を算出し、算出した量に基づいて、顔画像の状態を判定する。
図33は実施形態1の個人認識用の顔辞書作成装置の構成の一例を示すブロック図である。尚、顔辞書作成装置は、各構成要素がハードウェアによって実現されても良いし、図1の画像処理装置115のCPU100の制御によって実現されるソフトウェアで実現されても良いし、ハードウェアとソフトウェアを組み合わせて実現されても良い。
3301は、画像入力部である。画像入力部3301は、入力された画像データをRAM102上に展開する。
3302は、顔検出部である。顔検出部3302は、画像入力部3301で処理されたRAM102上の画像データに対して、顔検出を行う。顔検出処理は、バックグランドセンシングとデータベース登録で説明した通りである。
3303は、顔特徴量抽出部である。顔特徴量抽出部3303には、画像入力部3301で入力された画像データと、顔検出部3302で検出された顔検出位置が入力される。
本実施形態では、顔特徴量として、各器官に対する周波数応答をベクトル化した顔特徴量ベクトルを用いたが、他の特徴量を用いてもよい。
3304は、顔辞書読込部である。顔辞書読込部3304では、2次記憶装置103の指定場所に顔辞書データが存在するか否かを探索する。予め作成された顔辞書が存在する場合は読み込む。予め作成された顔辞書が存在しない場合は、顔辞書読込処理は行わない。顔辞書には顔特徴量ベクトルが登録されている。本実施形態では、顔辞書の保存場所は2次記憶装置103の指定場所としたが、他の場所であってもよい。また、顔辞書読込部3305では、データ読込時に辞書データを解析して、登録されている顔特徴量ベクトル数を設定する。
ここで、顔辞書の構成に関して詳細に説明する。図34は、顔辞書の内部を示す図である。3401はIDであり、人物の識別子を示している。IDの数は特に限定されず、人物数やその他の設定に応じて変化する。3402はカテゴリ(分類)であり、手動で又は自動で設定される基準に応じてカテゴライズして管理される。本実施形態では、例えば、人物毎に年齢に応じて特徴量をカテゴライズして管理している。カテゴリは、IDによって個数が異なってもよい。3403は顔特徴量ベクトル群であり、顔特徴量抽出部3304で抽出された顔特徴量ベクトルが管理されている。図34では、顔特徴量ベクトル群3404は、カテゴリ毎に管理されている。
図33の3305は、類似判定部である。顔特徴量抽出部3303で抽出された顔特徴量と、顔辞書読込部3304で読み込まれた顔辞書データが入力される。ここでは、顔特徴量抽出部3303で抽出された顔特徴量ベクトルと、顔辞書内に登録されている顔特徴量ベクトルの距離を類似度として比較(照合処理)することにより、類似判定を行う。類似判定は、図34の各IDの各カテゴリ総当たりで行う。顔特徴量抽出部3303で抽出された顔特徴量ベクトルと、顔辞書データに登録されている顔特徴量ベクトル間の距離が最短のものを類似度の結果として出力する。具体的には、抽出された顔特徴量ベクトルと距離が最端となった顔辞書のIDと距離を出力する。類似度として算出した距離が所定閾値以下(換言すれば、顔得量ベクトルと他の顔特徴量ベクトルとの類似度が所定の類似度範囲内)である場合、同一人物と判定する。同一人物と判定された場合は、同一人物と判定された人物と同じIDを返す。算出した距離が所定閾値より大きい場合、別人と判定する。別人と判定された場合は、未使用の新規IDを割り当てる。尚、類似判定は、この方法に限定されず、他の類似判定方法により判定してもよい。
3306は、顔状態判定部である。顔状態判定部3306には、画像入力部3301で入力された画像データと、顔検出部3302で検出された検出顔画像データが入力され、検出された検出顔画像データの顔画像のぼけ具合の状態(状態を示す尺度)を判定する。
3307は、人物グループ表示部である。顔状態判定部3306での判定結果がOKの場合(状態を示す尺度が閾値以上である場合)のみ、人物グループ表示部3307は、人物グループを表示する。つまり、顔状態判定部3306での判定結果がOKでない場合(状態を示す尺度が閾値未満である場合)、つまり、顔画像の状態が悪いもの対しては、人物グループ表示部3307は、人物グループを表示しない。
3308は、顔辞書登録部である。顔特徴量抽出部3303で抽出された顔特徴量と、類似判定部3305で判定された結果の識別子(ID)が入力されると、所定のIDと抽出された顔特徴量が対応付けられて顔辞書に登録される。
ここで、顔辞書作成装置の動作手順に関して説明する。図35は実施形態1の顔辞書作成装置の処理に関するフローチャートである。
まず、S3501において、画像入力部3301により、画像を入力し、RAM102に展開する。
次に、S3502において、顔検出部3302により、画像入力部3301で処理されたRAM102上の画像データに対して、顔検出を行う。この際、検出した検出顔画像データに対しては、仮の識別子(ID)が設定される。
S3503において、上述のS504と同様に正規化顔画像を生成する。正規化顔画像の生成については、S504と同様であるので説明を省略する。
S3504において、顔特徴量抽出部3303により、顔検出部3302で得られた顔検出位置に基づき、正規化顔画像の顔特徴量を抽出する。
S3505において、類似度判定を行う。まず、顔辞書読込部3304により、2次記憶装置103の指定場所から顔辞書データを読み込む。そして、類似判定部3305により、顔特徴量抽出部3303で抽出された顔特徴量ベクトルと、顔辞書202a内に登録されている顔特徴量ベクトルの距離を比較(照合)することにより、類似度を算出し、算出した類似度に応じて類似判定を行う。
次に、類似判定結果に応じて、仮の識別子(ID)の設定を変更する。S3505の類似度判定において類似度が所定の範囲外であったと判定された場合、言い換えれば、別人と判定された場合は、S3506において、仮のIDに代えて未使用の新規IDを割り当てて設定する。一方、S3505の類似度判定において類似度が所定の範囲内であったと判定された場合、言い換えれば、同一人物と判定された場合は、S3510において、同一人物と判定された人物と同じ既存IDを返して、仮のIDを正規のIDとして確定する。
S3507aでは、新規IDを設定した画像の顔の状態を判定する。
顔の状態が良好である場合は、S3508aへ進みUI表示を行う。例えば、図7のように704の人物グループUI上に表示させる。すなわち、新規IDを設定した画像を人物グループ毎に分類して管理し、UI上に表示させる。尚、ここではUI表示するようにしたが、新規IDを設定した画像を人物グループで管理するようにして、UI表示しなくてもよい。
一方、顔の状態が良好ではない場合、すなわち、顔の状態が悪いものは、S3513へスキップする。すなわち、状態が悪い顔画像は、顔辞書登録部3307の登録対象から除外する。
S3508bでは、既存IDを設定した画像をUI表示する。例えば、図7のように704の人物グループUI上に表示させる。すなわち、既存IDを設定した画像を人物グループ毎に分類して管理し、UI上に表示させる。尚、ここではUI表示するようにしたが、新規IDを設定した画像を人物グループで管理するようにして、UI表示しなくてもよい。
S3507bでは、既存IDを設定した画像の顔の状態を判定する。顔の状態が良好である場合は、S3509へ進み、顔辞書登録を行う。一方、顔の状態が良好ではない場合、すなわち、顔の状態が悪いものは、S3513へスキップする。すなわち、状態が悪い顔画像は、顔辞書登録部3307の登録対象から除外する。
S3509では、顔辞書登録部3308により、設定した識別子と対応するカテゴリから登録するカテゴリを特定する。特定したカテゴリに、処理対象の顔特徴量ベクトルを顔辞書に登録する。
次に、S3512において、検出された全ての顔検出結果に対してS3502〜S3509の一連の処理を行っているか否かを判定する。全ての検出結果に対して一連の処理を行っている場合は次の処理に進む。一方、行っていない場合は、S3503まで戻り、未処理の顔検出結果に対してS3502〜S3509の一連の処理を実行する。
次に、S3513において、設定された全ての画像に対してS3502〜S3512の一連の処理を行っているか否かを判定する。全ての画像に対して一連の処理を行っている場合は処理を終了する。一方、行っていない場合は、S3502まで戻り、未処理の画像に対してS3502〜S3512の一連の処理を実行する。
上述した処理を行うことにより、顔辞書に登録される特徴量の数と、UI上に表示されるグループの画像の数には、差が生じることがある。すなわち、図34の顔辞書の内部構成と、図7のUI表示例を比較すると、差が生じることがある。これは、顔状態判定部3303による判定の結果、状態が悪いと判定された顔画像は顔辞書には登録されないが、顔検出時にIDが割り当てられるため、704の人物グループUI上には表示されることがあるためである。このように、顔検出に不向きである顔状態の悪い画像を顔辞書に登録しないことにより、個人認識の精度を向上させることができる。一方、UI上には、読み込んだ画像の全てを表示すればよいため、顔検出には不向きである顔状態の悪い画像も表示させる。
尚、本実施形態では、S3507aの顔状態判定において状態が良好と判定されたもののみをS3508aでUI表示するようにした。その後に行う次の画像の類似度判定において、顔特徴量を正しくグルーピングするためである。仮に、類似度を算出してUI表示した後に顔状態判定すると、顔状態が悪くて辞書に登録しなかった場合は、辞書に登録される特徴量が空白の状態となる。すなわち、UI表示がされても、辞書の該当IDに特徴量が存在しない状態となる。したがって、同一人物の類似画像が来た場合、辞書の該当IDに特徴量が存在しないので、特徴量比較ができず、新規に別のIDを割り当ててUI表示してしまう。
ここで、図36を用いて顔状態の判定処理のフローについて説明する。図36はS3503の詳細を示すフローチャートである。
顔状態判定部3303では、顔検出部3302により検出された顔画像データに対し、その顔状態を判定する。初めに、S3601において、例えば、5×5画素サイズのフィルタ処理を行い、ぼかし画像を生成する。S3602において、生成したぼかし画像と、該フィルタ処理前の元画像とをそれぞれブロック毎に信号値の差分を累積する。具体的には、RGB成分のそれぞれの差分を算出する。S3603において、算出した差分の累積結果を予め定めた閾値と比較する。差分累積結果(状態を示す尺度)が閾値以上である場合は、顔画像の状態は良好と判定し、S3504を経て、顔特徴量抽出部3304によるS3305に進む。差分累積結果(状態を示す尺度)が、閾値未満である場合は、顔画像の状態は悪いと判定し、次の未処理の顔検出結果に対して上述した一連の処理を行う。
尚、本実施形態では、判定のために算出するパラメータとしてRGB成分のそれぞれを用いたが、これに限定されず、輝度成分を算出しても良い。あるいは、人間の視覚感度の高いG成分のみで行っても構わない。また、ぼかし画像を生成するためのフィルタのサイズは5×5画素に限定されるものではない。更に、解析する単位はブロック毎ではなく、画素毎に行っても構わない。また、顔の状態を判定する方法は、上述したものに限定されず、他の方法であってもよい。
以上説明したように、本実施形態では、検出した顔画像の状態が悪い場合、顔辞書登録の処理対象から除外され、状態が良好な顔画像のみ、顔辞書に登録する。その結果、顔辞書には状態の良好な顔画像のみが登録されることになり、高精度な顔辞書を作成することが可能となる。これによって、顔画像の認識精度を向上させることができる。また、新規に認識する顔画像の認識精度の低下を防止することができる。
尚、実施形態1では、検出した顔画像の状態が悪い場合、顔辞書登録の処理対象から除外したが、類似する顔画像のグループの1つとして管理することは何等支障はないため、人物グループには振り分ける。
上述したように、本実施形態では、辞書登録の精度を向上しつつ、人物グループを適切な状態とすることができる。
また、本実施形態では、顔画像の状態の判定において、ぶれやボケの度合いを解析して判定処理を行った。すなわち、顔画像のエッジを確認することにより、顔画像の状態の判定を行った。これにより、辞書登録の精度を向上させることができる。
(実施形態2)
本実施形態は、画像データのサイズの変更以外は、実施形態1と同様であるので、実施形態1と同様の部分については説明を省略する。
本実施形態では、類似判定部3305による顔の状態判定は、少なくとも検出顔画像データの画像サイズよりも大きいサイズになるように解像度を変倍した画像データを用いて判定する。
本実施形態では、図35のS3502において、顔検出部3302では、まず、入力された画像データのサイズを、顔検出が可能な最小サイズにリサイズする。例えば、320×240ピクセル解像度のQVGA(Quarter Video Graphics Array)サイズにリサイズする。すなわち、低解像度で顔検出を行う。これにより、顔検出を高速で実行することができる。レイアウト生成の際に、数千枚〜数万枚以上の多くの画像データをハンドリングする場合には、センシング速度を落とさずに実行するのに特に有効である。
一方、顔状態判定処理では、その入力した画像データに対して変倍を行い、変倍後の画像データに対して処理を行う。このとき、少なくとも検出顔画像データの画像サイズよりも大きいサイズとなるように解像度を変倍する。これにより、顔状態判定をより高精度で行うことができる。
図37は、本実施形態に係るS3503の詳細を示すフローチャートである。初めに、S3701において、検出顔画像データと、その検出顔画像データのサイズを示す検出顔画像サイズデータを読み込み、検出顔画像のサイズよりも大きい高解像度の画像サイズを設定する。次に、S3702において、その検出顔画像データを、例えば、640×480ピクセル解像度のVGA(Video Graphics Array)サイズにリサイズする。そのリサイズした画像データに対して、顔状態の判定を行う。ここで、顔状態判定部3306の詳細に関しては、実施形態1と同様であるため、説明は省略する。
以上説明したように、本実施形態では、顔検出については入力した画像データよりも低解像度の画像データを用い、顔状態判定にはその画像データよりも高解像度の画像データを用いる。これにより、実施形態1で説明した効果に加えて、処理の高速化と、顔状態判定の精度を向上させることができる。
(実施形態3)
本実施形態は、顔状態の判定以外は、実施形態1と同様であるので、実施形態1と同様の部分については説明を省略する。
本実施形態では、例えば、顔領域に高速フーリエ変換処理(FFT)をすることにより、所定周波数成分より高い高周波成分の値を算出し、その算出した値を顔状態の判定に用いる。このとき、適正な基準となる顔(基準顔)をFFT処理した場合の高周波成分の値を予め基準値として保持する。そして、その算出値(状態を示す尺度)が基準値に対する割合が所定値(N%)未満(あるいは基準値未満)である場合は、顔領域はぼけている(状態が悪い)と判定する。状態が悪いと判定された場合は、S3503において、処理対象の画像データについては、以降の処理対象から除外して、未処理の顔検出結果に対して一連の処理を実行する。
ここで、図38を用いて、顔状態の判定に用いる周波数成分について説明する。図38(a)は、顔画像領域の空間周波数画像を示している。図38(b)は、空間周波数特性結果を示している。境界の周波数f0を設定し、f0未満を低周波成分とし、顔画像領域における低周波成分の割合をSaとする。また、f0以上を高周波成分とし、顔画像領域における高周波成分の割合をSbとする。適正な基準顔の低周波成分の割合、高周波成分の割合をそれぞれSda、Sdbとする。尚、高周波成分であると判定する周波数f0は、適宜設定すればよい。
N=Sdb/Sda
Sb/Saで示される算出値が、基準値のN%未満(所定割合未満)である場合は、顔領域はぼけている(状態が悪い)と判定する。一方、Sb/Saで示される算出値が、基準値のN%以上である場合は、顔領域はぼけていない(状態が良好)と判定する。
以上説明したように、実施形態3によれば、検出顔画像データの高周波成分の値に基づいて、顔状態の判定を行うことができる。周波数成分に基づく顔状態の判定は、目、口、鼻等の器官やまゆげなどの顔の部位の特徴量を抽出するに適したものであり、確実に顔の部位の特徴量を抽出することができる。輝度値を利用して顔状態の判定を行った場合は、器官の特徴量を適切に抽出することができず、顔状態の判定の精度を低下させてしまう。これに対し、本実施形態では、周波数成分に基づいて特徴量を抽出しているので、顔状態の判定の精度が非常に高いものとすることができる。
(実施形態4)
本実施形態は、個人認識用の顔辞書作成装置の構成及び顔辞書作成装置の動作手順以外は、実施形態1と同様であるので、実施形態1と同様の部分については説明を省略する。
図39は本実施形態の個人認識用の顔辞書作成装置の構成の一例を示すブロック図である。尚、顔辞書作成装置は、各構成要素がハードウェアによって実現されても良いし、図1の画像処理装置115のCPU100の制御によって実現されるソフトウェアで実現されても良いし、ハードウェアとソフトウェアを組み合わせて実現されても良い。
3901は、画像入力部である。画像入力部3901は、実施形態1の画像入力部3301と同様であるので説明を省略する。
3902は、顔検出部である。顔検出部3902は、実施形態1の画像入力部3302と同様であるので説明を省略する。
3903は、顔状態判定部である。顔状態判定部3903には、画像入力部3901で入力された画像データと、顔検出部3902で検出された検出顔画像データが入力され、検出された検出顔画像データの顔画像のぼけ具合の状態(状態を示す尺度)を判定する。
3904は、顔特徴量抽出部である。顔特徴量抽出部3904には、画像入力部3901で入力された画像データと、顔検出部3902で検出された顔検出位置が入力される。また、顔状態判定部3903の判定結果が入力され、判定結果がOKの場合(状態を示す尺度が閾値以上である場合)のみ、顔特徴量抽出部3904は、顔検出部3902で入力画像に対して得られた顔検出位置に基づき、顔領域内の顔特徴量を抽出する。つまり、顔状態判定部3903の判定結果がOKでない場合(状態を示す尺度が閾値未満である場合)、すなわち、顔画像の状態が悪いもの対しては、顔特徴量抽出部3904は、顔領域内の顔特徴量を抽出しない。つまり、その顔領域を含む顔画像を、顔特徴量抽出部3904の抽出対象から除外する。換言すれば、顔特徴量抽出部3904以降の後段の処理(類似判定、顔辞書登録等)の実行を禁止する。これにより、状態が悪い顔画像は、顔辞書登録部3907の登録対象から除外されることになる。本実施形態では、顔特徴量として、各器官に対する周波数応答をベクトル化した顔特徴量ベクトルを用いるが、他の特徴量を用いてもよい。
3905は、顔辞書読込部である。顔辞書読込部3905は、実施形態1の画像入力部3305と同様であるので説明を省略する。
3906は、類似判定部である。類似判定部3906は、実施形態1の類似判定部3305と同様であるので説明を省略する。
3907は、顔辞書登録部である。顔辞書登録部3907は、実施形態1の顔辞書登録部3308と同様であるので説明を省略する。
以上説明したように、本実施形態では、検出した顔画像の状態が悪い場合、後段の顔特徴量の抽出や類似判定、顔辞書登録の処理対象から除外され、状態が良好な顔画像のみ、顔辞書に登録する。その結果、顔辞書には状態の良好な顔画像のみが登録されることになり、高精度な顔辞書を作成することが可能となる。これによって、顔画像の認識精度を向上させることができる。また、新規に認識する顔画像の認識精度の低下を防止することができる。
尚、本実施形態では、検出した顔画像の状態が悪い場合、顔辞書登録の処理対象から除外したが、類似する顔画像のグループの1つとして管理することは何等支障はないため、人物グループには振り分ける。
上述したように、本実施形態では、辞書登録の精度を向上しつつ、人物グループを適切な状態とすることができる。
また、本実施形態では、顔画像の状態の判定において、ぶれやボケの度合いを解析して判定処理を行った。すなわち、顔画像のエッジを確認することにより、顔画像の状態の判定を行った。これにより、辞書登録の精度を向上させることができる。
(他の実施形態)
以上、本発明の各実施形態を説明したが、本発明の基本的構成は上述したものに限定されるものではない。
以上説明した実施形態は、本発明の効果を得るための一実施形態であり、類似の別手法を用いたり、異なるパラメータを用いたとしても、本発明と同等の効果が得られる場合は、本発明の範疇に含まれる。
上述した実施形態では、顔検出処理では、処理負荷の軽減が求められるため、顔の検出が可能である限り、バイリニア法等の既存の方法を用いることができる。
また、顔状態判定処理のための変倍方法は、バイキュービック方とすることにより、バイリニア方よりも高精度とすることができる。顔状態判定処理のための変倍方法は、特に限定されず、他の方法を用いてもよい。
実施形態2では、顔状態判定部3306において、検出顔画像データに変倍を行ったが、変倍処理対象の画像はこれに限定されず、検出顔画像データの正規化画像に対して変倍してもよい。
上述した実施形態では、レイアウト出力物として、1ページに複数の画像を配置した出力物について説明したが、勿論、複数ページの出力にも適用することができる。
また、上述した実施形態では、辞書登録していない画像データも人物グループ生成処理ではグループに振り分けることとしたが、振り分けないようにしてもよい。
また、上述した実施形態では、オブジェクトとして人物の顔を例に挙げて説明したが、オブジェクトは人物の顔とは限らない。犬や猫などのペットの認識処理を行ってこれらを認識することにより、オブジェクトとしてペットの顔を設定することができる。また、エッジ検出などの形を認識処理によれば、建物や小物なども認識できるため、オブジェクトとして、建物や小物などを設定することができる。これらの場合、オブジェクトの特徴量を抽出して、辞書登録すれば、上述した実施形態と同様の方法により、画像処理を行うことができる。
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。