<第1の実施形態>
以下では、入力画像群を用いて自動でレイアウト出力物を生成するための実施形態について説明する。これはあくまで実施の1つの形態を例として示したものであり、本発明は以下の実施に限定されるものではない。
なお、本実施形態では簡単のため、レイアウト出力物として、1ページのコラージュ系出力物を想定するが、本発明を単葉印刷や複数ページのアルバム出力であってもよい。
図1は、本実施形態に係わる情報処理装置のハードウェア構成例を説明するブロック図である。図1において、情報処理装置115は、CPU100と、ROM101と、RAM102と、2次記憶装置103と、表示装置104と、入力装置105と、IF107と、IF108と、無線LAN I/F109を備えている。さらに、内部撮像デバイス106を備えている。これらは、制御バス/データバス110により相互に接続されている。本実施形態の情報処理装置115は、画像処理装置として機能する。
図1において、CPU(中央演算装置)100は、本実施形態で説明する情報処理方法を以下に示すアプリケーションなどのプログラムに従って実行する。ROM101は、CPU100により実行されるプログラムが記憶されている。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。2次記憶装置103はハードディスク等であり、画像ファイルや画像解析結果を保存するデータベースなどを保存するための記憶媒体である。表示装置104は例えばディスプレイであり、本実施形態の処理結果や以下に示す種々のUI(User Interface)をユーザに提示する装置である。表示装置104はタッチパネル機能を備えても良い。また、制御バス/データバス110は、上述の各部とCPU100とを接続する。このほかにユーザが画像補正の処理の指示等を入力するためのマウスやキーボードといった入力装置105も備える。
また、情報処理装置115は、内部撮像デバイス106を備えてもよい。内部撮像デバイス106で撮像された画像は、所定の画像処理を経た後、2次記憶装置103に保存される。また、情報処理装置115はインターフェース(IF108)を介して接続された外部撮像デバイス111から読み込んでも構わない。さらに、情報処理装置115は無線LAN(Local Area Network)と接続するための無線LAN I/F109を備え、該LANはインターネット113に接続されている。情報処理装置115は、インターネット113に接続された外部サーバー114より画像データを取得することもできる。
最後に、画像等を出力するためのプリンタ112が、IF107を介して情報処理装置115に接続されている。なお、プリンタ112はさらにインターネット113上に接続されており、無線LAN I/F109経由でプリントデータのやり取りをすることもできる。
図2は本実施形態のアプリケーションを含む基本ソフトウェア構成のブロック図である。
まず情報処理装置115が取得した画像データは、通常JPEG(Joint Photography Expert Group)等の圧縮形式になっている。そのため、画像コーデック部200は、該圧縮形式を解凍していわゆるRGB点順次のビットマップデータ形式に変換する。変換されたビットマップデータは、表示・UI制御部201に伝達され、ディスプレイ等の表示装置104上に表示される。
上記ビットマップデータは、さらに画像センシング部203(アプリケーション)に入力され、画像センシング部203において、画像の様々な解析処理(詳細は後述)が行われる。上記解析処理の結果得られた画像の様々な属性情報は、所定の形式に従ってデータベース部202(アプリケーション)において、上述した2次記憶装置103に保存される。なお、以降においては、画像解析処理とセンシング処理は同義で扱う。
シナリオ生成部204(アプリケーション)では、ユーザが入力した様々な条件に応じて、詳細は後述するが、自動で生成すべきレイアウトの条件を生成する。レイアウト生成部205ではシナリオ生成部204が生成したシナリオに従って、自動でレイアウトを生成する処理を行う。
レイアウト生成部205が生成したレイアウトは、レンダリング部206で表示用のビットマップデータを生成し、該ビットマップデータは表示・UI制御部201に送られ、結果が表示装置104に表示される。
また、レンダリング部206によるレンダリング結果はさらにプリントデータ生成部207に送られ、プリントデータ生成部207でプリンタ用コマンドデータに変換され、プリンタ112に送出される。
本実施形態の基本的な画像処理のフローチャートについて説明をする。
図28は、本実施形態の処理の流れを表すフローチャートである。本処理フローは、本実施形態において、CPU100がROM101等に格納されたプログラムを実行することにより実現される。
S3301では、CPU100は、画像データ群の取得を行う。ここでは例えば、過去にユーザが外部撮像デバイス111で撮影し、2次記憶装置103で保管している画像データを対象とし、ファイルパスを取得する。詳細な内容、手法については後述する。
S3302では、CPU100は、取得した画像データ群の画像それぞれについてデコードし、解析処理および解析結果のデータベース登録を行う。解析処理では、画像内の人物顔の個数、各顔の座標位置、シーン情報などを取得し、データベースへ格納する。詳細な内容、手法については後述する。
S3303では、CPU100は、人物グルーピングを行う。S3302で検出された顔の情報を用い、顔の特徴量が似ているものをグループ化する。詳細な内容、手法については後述する。
全ての画像について解析(S3302)およびグルーピング(S3303)を行うため、CPU100は、S3302、S3303を画像の数だけ繰り返す。
S3304では、CPU100は、ユーザ情報の入力を行う。S3303にてグループ化した顔について、ユーザがUIを用いて人物名および続柄、友人や家族といった属性を入力する。これを人物登録と呼ぶことにする。各グループのそれぞれの顔について、どの画像のどの座標に存在するかが記録されている。これらにより、ソフトウェアは各画像のどの位置に誰が写っているかを得る事ができる。その他、各画像についてユーザお気に入り度の入力などもここで行われる。詳細な内容、手法については後述する。
S3305では、CPU100は、テンプレートの取得を行う。本実施形態においては、予め様々なレイアウトテンプレートが用意されていることを想定する。レイアウトテンプレートとは図15、図17および図31に示すようなものである。
尚、各図における1702、1703、1704、1903、3602、3603はそれぞれ画像を配置する画像配置領域であり、テンプレートにおいてスロットと呼ぶ。スロットは、既定のサイズを有する。図31は重なりがあるスロット3602、3603を持つ。重なりがあるスロットにおいて、重なりの下側であるスロット3603では斜線部のように表示されている部分を画像配置領域とする。テンプレートについての詳細は後述する。
S3306では、CPU100は、提案処理のシナリオを決定する。シナリオには、提案するレイアウトのテーマおよびテンプレートの決定、およびレイアウト内で重視する人物(主人公)の設定、およびレイアウト生成に用いる画像群の選定情報が含まれる。尚、シナリオはユーザがUIを用いて手動で選択、指示しても良い。詳細な内容、手法については後述する。
S3307では、CPU100は、上述したシナリオに基づき、画像の選択、一時レイアウト生成、レイアウト評価を行う。画像の選択は、輝度などを評価し、フィルタリングする事により不要画像を排除する。こうして一時レイアウトに使用する候補の画像を選択する。選択方法の詳細については後述する。
一時レイアウト生成は、取得したテンプレートの画像配置枠に対して、上記でフィルタリング済みの画像を任意に当てはめる処理を繰り返し、大量の一時レイアウトを生成する。ここでは、各スロットにトリミングされた画像が配置されたレイアウトが出力される。一時レイアウトの生成の詳細については後述する。
レイアウト評価は、上記で大量に作成された一時レイアウトのそれぞれについて評価を行う。評価は、画像個別、画像とスロットの適合度、レイアウトページ内のバランスなどを算出し、それらを統合化して評価値とする。
本実施形態では、上記の画像とスロットの適合度の評価項目の一つである注目領域の切れ評価を行う。ここで「切れ」とは、その注目領域に含まれるオブジェクト領域が、表示対象の領域の内外で分割された状態を示す。このように分割された場合、注目領域の一部が表示され、一部が表示されていない状態、つまり部分的に消失した状態で注目領域が表示される。注目領域とは例えば、センシング処理で検出された顔の領域である。顔の座標、向き、大きさなどから顔の下は体として推測できるため、推測した体部も含めて注目領域としても良い。ある程度大きく写っている顔、ユーザが人物登録をした人物、人物属性が家族や友人である人物、ユーザが人物登録した人物と同じ距離に居る人物、ピントが合っている場所などを注目領域としても良い。
画像において、複数の注目領域がある場合には、それぞれを表示対象の領域に含める注目領域の候補として扱う。なお、本明細書において便宜上、複数の注目領域は、第1の候補、第2の候補とも記載する。
距離は、二眼カメラで視差の距離が一致する部分より同距離を判定する手段や、一撮影で複数のフォーカス位置を撮影できるカメラでは同フォーカス位置でピントが合っている物を同距離とするなど、その他の方法で求めればよい。以上によればセンシングや人物登録がなされれば自動的に注目領域を判定する事ができる。また、ユーザがマウスやキーボードなどのUIを用いて指定した領域を注目領域としても良い。注目領域は人物に限らず、車や建物、山などの静物や動物でも良い。
図29の3401は図15のスロット1704を表す。前述のようにスロットは画像を配置する領域である。3402はこのスロットに配置する画像である。画像3402は注目領域である3403(破線内部)と3404(破線内部)を持つ。3403および3404は顔検出処理が行われ、ユーザが人物登録した人物の顔領域である。3405は画像内全ての注目領域の中心点、つまり、3403と3404の中心点である。
3407、3410、3414、3416はそれぞれ画像3402の座標を表しており、斜線部はそれぞれトリミング領域3408、3411、3414、3417である。トリミング領域はスロット3401と同じアスペクト比である。トリミング領域がスロットと異なるアスペクト比であると、画像配置後のスロット内に余白が生じる事になり、利用者にとって見栄えの悪い画となり得る。
3408は注目領域3403および3404の中心点3405が中心になるようにトリミングを行う領域である。画像3402に対して3407内の3408で示す領域でトリミングを行った場合、3406のようになる。つまり、画像3402のうち、テンプレートに画像3402が配置された場合に、出力対象となる領域(出力領域)が3406である。なお、この出力対象の領域とは、表示、印刷等の出力処理により可視化される領域である。
3406では人物の顔部である注目領域3403と3404に切れが発生している。注目領域が切れてトリミングされた場合、注目領域の一部のみが出力されてしまう。本実施形態では、この様な場合は注目領域の切れ評価の値(以下、切れ評価値)を低く設定することで、このように注目領域が切れたレイアウトが出力対象とならないように制御する。切れ評価値は、例えば以下のように求められる。
図32は表示面積率に対する切れ評価値の一例を表すグラフであり、関数やルックアップテーブルにて実現可能である。切れ評価値は、切れが発生していない場合に高い評価値となる数値であり、注目領域毎に値を求め、その後統合した値を算出する。切れ評価値は、トリミング後に注目領域が表示されている面積率(以下、表示面積率)を用いて算出する。表示面積率とは、例えば画像3402が3406のようにトリミングされた場合、注目領域3403は、60%が3406に表示されているが40%は消失し、表示されていない。この場合、表示面積率は60%となる。尚、表示面積率は例えば、画像3402のトリミング位置を表す3407および3408において、トリミング領域3408と注目領域3403が重なる画素数をカウントし、注目領域3403の画素数で割った値を用いれば良い。また、注目領域とトリミング領域が矩形であれば、座標を用いて数値計算し、表示面積率を求めても良い。
図32では3403の面積を100%とし、その内3406に表示された領域の割合を横軸、その際の注目領域切れ評価値を縦軸に示す。表示される面積の割合が100[%]付近の場合、注目領域の切れが生じていない状態であり、図32に示すように切れ評価値は高い。表示面積の割合が少なくなるにつれ、注目領域に切れが生じている状態になるため切れ評価値は低くなり、表示面積がある程度以下となったら0となる。一方、表示される面積が0[%]付近では切れ評価値は高い。これは、完全に注目領域が表示されなければ切れは生じないためである。
図32に示す表示面積率が、0%または100%に近い場合は、注目領域が表示されていない、もしくは注目領域の全てが表示されている状態であり、即ち注目領域の一部が欠けていることが、目立たない状態であることがわかる。一方、表示面積率が50%に近い場合は、注目領域の一部が欠けていることが目立つ状態である。本実施形態では、注目領域の切れが目立つ状態で画像が出力されることを防ぐために、表示面積率が0%または100%に近いときには、切れ評価値を高くするように設定する。
ソフトウェア上での切れ評価値の実装は、入力を表示面積率、出力を切れ評価値とする図32に示すような入出力特性の一次元ルックアップテーブルを用いれば良い。
上記では表示面積率に応じて切れ評価値を変動させたが、他の例として、少しでも切れが発生したら切れ評価を0とするなどの簡易的な方法を取っても良い。
画像3402に対し3407、3408に示すトリミングを施した3406の評価を行うと、以下のようになる。3406において、表示されている3403部の面積はおよそ60[%]である。図32に示すグラフに照らし合わせると、表示面積率60[%]の時の切れ評価値は0である。同様に、3404部も表示面積率60[%]であり、切れ評価値は0となる。これら複数の注目領域の切れ評価値を統合するにはこれらのワースト値を取る。つまり、最も小さい値を該スロットと該画像と該トリミング位置の切れ評価値とすれば良い。よって、スロット3401と画像3402とトリミング位置3407および3408の組み合わせである3406の切れ評価値は0である。
また、例えば画像3402の人物の顔部である注目領域3403、3404を重要注目部とし、顔の大きさ、向きなどから人物の体部を推測し、体部を准注目部とする。重要注目領域の表示割合、准注目領域の表示割合を算出し、准注目部のみが切れた場合は評価を下げない。重要注目部が切れている場合は切れ評価値を下げる。重要注目部が表示されず、准注目部のみが表示されている場合は最も評価を下げる機構を設ければ、より良い評価が可能となる。これは、顔が表示されず体が表示されている場合は得に利用者にとって印象が悪いトリミングとなるためである。
画像3402に対して3407内の3408で示す領域でトリミングを行った場合、3409のようになる。3409では注目領域である3404の人物は消えてしまっているが、3403および3404共に切れは発生していない。この場合、注目領域の切れ評価の値は高く設定する。図32に示すグラフに照らし合わせると、注目領域3403は表示面積率100[%]であるため切れ評価値は100、注目領域3404は表示面積率0[%]であるため、切れ評価値100となる。これら切れ評価値のワースト値を取ると100であり、これがスロット3401と画像3402とトリミング位置3410および3411の組み合わせである3409の切れ評価値となる。3411は、3408からトリミング位置を移動させたものである。評価値が示す通り、3406と3409を比較すると人物の顔が切れていない3409の方が見栄えが良い結果となっている。
同様に、画像3402に対して3413内の3414で示す領域でトリミングを行った場合、3412のようになる。3414は、3408からトリミング位置を移動させたものである。
3412では注目領域である3403の人物は消えてしまっているが、3403および3404共に切れは発生していないため切れ評価値は100となる。3406と3412を比較すると、人物の顔が切れていない3412の方が見栄えが良い結果となっている。
同様に、画像3402に対して3416内の3417で示す領域でトリミングを行った場合、3415のようになる。3415に切れは発生していなため、切れ評価値は100となる。3406と3415を比較すると、人物の顔などが切れていない3415の方が見栄えが良い結果となっている。
即ち、図29に示した例では、2つの注目領域のそれぞれの一部が、所定サイズの配置枠からはみ出てしまう場合よりも、1つの注目領域の全体が配置枠に含まれ、もう一方の注目領域が配置枠から外れた場合の方が、切れ評価値は高くなる。
次に同処理を、図30を用いて説明する。
3501は図15のスロット1704を表す。3502はこのスロットに配置される候補の画像である。画像3502は注目領域3503〜3507(破線内)を持つ。3503〜3507はセンシングで顔検出・認識処理が行われ、ユーザが人物登録した人物の顔領域である。
3509、3512、3515はそれぞれ画像3502の座標を表した図であり、斜線部3510、3513、3516はそれぞれトリミング領域を表す。
3509内の3510は全ての注目領域3503〜3507の中心がスロット3501の中心になるようなトリミング領域である。結果、全ての注目領域を余白なしにスロット3501と同じアスペクト比に収める事は出来ない。また、注目領域3503及び3507はそれぞれ50[%]ほどしか表示されておらず、切れが発生しているため印象が悪いトリミングとなっている。図32に示すグラフによれば、表示面積率[50%]の切れ評価値は0となる。
画像3502に対して3512内の3513で示す領域でトリミングを行った場合、3511のようになる。3511では注目領域3503の人物は消えてしまっているが、全ての注目領域が切れてはいない。図32のグラフを用いると表示面積率は0[%]のため切れ評価値は100となる。3508と3511を比較すると、人物の顔が切れていない3511の方が見栄えが良い結果となっている。
同様に、画像3502に対して3515内の3516で示す領域でトリミングを行った場合、3514のようになる。3514では注目領域3503、3504の人物は消えてしまっているが、全ての注目領域に切れは生じていない。図32のグラフを用いると切れ評価値は100となる。3508と3514を比較すると、人物の顔などが切れていない3514の方が見栄えが良い結果となっている。
以上の、図29、図30に示した例では、画像における出力対象の領域に注目領域の一部のみが含まれ、一部は出力対象の領域外になる場合よりも、その注目領域の全体が出力対象の領域から外れた場合の方が、高い評価値とする。これにより、注目領域の切れが生じた画像が出力されることを防ぐことができる。
次に同処理を、図33を用いて説明する。
3801は図15のスロット1704を表す。3802はこのスロットに配置される候補の画像である。画像3502は注目領域3803〜3804(破線内)を持つ。3803〜3804はセンシングで顔検出・認識処理が行われ、ユーザが人物登録した人物の顔領域である。尚、3802は撮影した時点で顔切れが発生している注目領域3803を含んでいる画像である。撮影された画像に顔切れが発生しているかは、顔検出時や認識処理時に顔切れの判定を行う、ユーザが顔切れ画像として指定する、などの方法で実現可能である。尚、顔検出での顔切れ判定を行うには、例えば、写っている顔に目や鼻など顔の器官が足りない、画像の端部に存在する、などの項目の判定値により推測できる。
3806、3809はそれぞれ画像3802の座標を表しており、斜線部3807、3810はそれぞれトリミング領域を表す。画像3802に対して3806内の3807で示す領域でトリミングを行った場合、3805のようになる。3805では前述したように切れが起きている注目領域3803が含まれて表示されている。ここでは、3803が少しでも表示された場合、切れ判定の評価値は0とする。別の例として、3803の顔が全て写っていた時の面積を推測し、その面積と3805に表示された面積とで図32に示すグラフのような関数を用いて切れ判定評価値としても良い。
画像3802に対して3809内の3810で示す領域でトリミングを行った場合、3808のようになる。3808では注目領域に切れが発生していない。そのため、切れ評価値は100となる。3805よりも切れ評価値が高い3808の方が見栄えが良い画像となる。
なお、図29、図30に示した例では、画像を所定サイズの配置枠に配置するためのトリミング処理により、複数の注目領域のうち、一部が切れる例を示した。一方、図33に示した例では、画像において元々注目領域の切れが生じている。よって、トリミング処理により注目領域に切れが生じた場合と、画像において元々切れが生じていた場合とにおいて、異なる評価基準により切れ評価を行ってもよい。
例えば、画像において元々切れが生じているときには、画像の撮影者がその切れた領域を注目領域として認識していなかった場合がある。例えば、主要な人物が画像の中央に配置されるように撮影したときに、主要でない人物の顔が画像から切れてしまった場合が考えられる。この場合、注目領域(顔)の一部が切れていたとしても、ユーザにとって望ましい画像であることも考えられる。そのため、画像において元々注目領域の切れがあった場合には、その注目領域については切れと判定しないようにしてもよい。または、その注目領域については、切れ評価値が所定値(例えば50)よりも高くなるに、評価基準を設定してもよい。
図28のS3307では、レイアウトに対する上記切れ評価値以外の各カテゴリの評価値をそれぞれ求め、重み付け加算により統合して該レイアウトの評価値とする。その他の評価値の出力方法は後述する。
図28のS3308では、レンダリングおよび出力を行う。
上記処理によって得られたレイアウト結果をレンダリングし、結果を表示装置104に表示する。表示後、ユーザはマウスなどを用いてトリミング位置を修正しても良い。
以上のように、注目領域が部分的に消失する状態よりも完全に消失する状態の評価値が高く、優先的に採用する事により、注目領域に切れが発生した画像が出力されることを防ぐことができる。また、注目領域毎に切れ評価を行うため、複数の注目領域が存在する画像についても対応した評価が可能である。
尚、上記では検出した顔を注目領域として切れ評価を行ったが、S3304において人物登録されているような人物(家族や友人、知人)の顔に切れが発生した場合は、顔の切れが特に課題となる。そのため、例えば人物登録されている人物の顔が切れる場合には切れ評価値を0まで下げるが、登録されていない人物の顔が切れる場合には切れ評価値を50までしか下げないなど、注目領域毎に重みを持たせた切れ評価を行っても良い。
切れ評価時にスロットの内側に表示される注目領域の数を考慮しても良い。例えば、全ての注目領域がスロットの外側となり、注目領域が1つも表示されないようなトリミングを行った場合、切れが発生していないため上記の例では切れ評価値は100となる。そこで、注目領域が最低でも1つはスロット内に表示されているか否かの判定を設け、1つも表示されない場合の切れ評価は0とするなどの処理を入れる。これにより、スロット内に注目領域が1つも表示されないトリミングを防ぐ事が出来る。
また、スロット内に人物登録した注目領域が表示されていなければ切れ評価を0としても良い。これら処理は切れ評価時に限らず、後述する人物適合度の評価時など別の項目で行っても良いし、専用の評価項目として備えても良い。加えて、注目領域が複数であるか否かの判定を備え、注目領域が複数である場合にこれらの処理を行うようにしても良い。
以下では、本実施形態における各ステップの詳細についての説明を行う。
図3および図4は、画像センシング部203のフローを示しており、複数の画像データ群を取得して、それぞれについて解析処理を施し、その結果をデータベースに格納するまでの処理の流れを示している。この図3および図4の処理は、図28のS3301〜S3303の処理に相当する。
まず図3を用いて、画像センシング部203が実行する処理のフローチャートについて説明する。
S301では、画像データ群の取得を行う。画像データ群の取得は、例えば、ユーザが、撮影画像が格納された撮像装置やメモリカードを情報処理装置115に接続することで、該撮像画像を読み込むことができる。また、内部撮像デバイス106で撮影され、2次記憶装置103に保存されていた画像も、当然のことながら対象となる。あるいは、画像は無線LAN I/F109を介して、インターネット113上に接続された外部サーバー114等、情報処理装置115以外の装置から取得をしてもよい。
ここで、図8及び図9を用いて、画像データ群を取得した際の表示装置104の表示について説明する。画像データ群を取得すると、その画像データ群に対応するサムネイル群が図8および図9に示すように表示装置104上のUIは、取得した画像データに基づく画像を確認できる表示となる。表示装置104上のUIの表示方法は、画像を確認できるものであれば、特に限定されるものではない。例えば、図8に示すようにUI801に2次記憶装置103内のフォルダ単位で画像のサムネイル802を表示してもよいし、図9に示すようにUI901でカレンダー形式において日付ごと画像データが管理されていてもよい。図9のUI901では、日付の部分902をクリックすれば、同日に撮影された画像が、図8のUI801のようなサムネイル一覧で表示される。
次に図3のフローチャートにおいて、S302〜S305において、取得した画像データ群それぞれについて、解析処理および解析結果のデータベース登録を行う。
具体的には、S302において、各画像のデコードを行う。まず、画像センシング部203(アプリケーション)が、新規で保存され未だセンシング処理が行われていない画像をサーチし、抽出された各画像について、コーデック部が圧縮データからビットマップデータに変換する。
次に、S303において、変換されたビットマップデータに対して、各種センシング処理を実行してセンシング情報を取得し、データベースに登録する。表1は画像解析した結果得られる属性情報の例である。センシング処理には、表1に示されるような様々な処理を想定する。本実施形態では、センシング処理の例として、顔検出および顔領域の特徴量解析、画像の特徴量解析、シーン解析を行い、それぞれ表1に示すようなデータ型の結果を算出する。本実施形態では、画像基本特徴量としては、平均輝度(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への保存形式は特に限定されないが、例えば図10に示すような汎用的なフォーマット(例えばXML:eXtensible Markup Language)で記述し、格納する。
図10においては、画像毎の属性情報を、3つのカテゴリに分けて記述する例を示している。1番目のBaseInfoタグは、画像サイズや撮影時情報として、あらかじめ取得した画像ファイルに付加されている情報である。ここには、画像毎の識別子IDや、画像ファイルが格納されている保存場所、画像サイズ、撮影日時などが含まれる。
次に2番目のSensInfoタグは、上述した画像解析処理の結果を格納するためのタグである。画像全体の平均輝度、平均彩度、平均色相やシーン解析結果が格納され、さらに、画像中に存在する人物の顔位置や顔色に関する情報が記述可能である。
次に3番目のUserInfoタグは、ユーザが画像毎に入力した情報を格納することができるが、詳細については後述する。
なお、画像属性情報のデータベース格納方法については、上記に限定されるものではない。その他公知のどのような形式であっても構わない。
次に、図3のS306において、個人認識処理を用いた人物グルーピングを行う。ここでは、S303で検出された顔位置情報を用いて、人物毎のグループを生成する処理を行う。あらかじめ人物の顔を自動でグループ化しておくことにより、その後ユーザが各人物に対して名前を付けていく作業を効率化することが可能となる。
ここでの人物グループ生成処理は、公知の個人認識技術を用いて、図5に示す処理フローに従って実行される。
なお、個人認識技術は、主に顔の中に存在する眼や口といった器官の特徴量抽出と、それらの関係性の類似度の比較、という二つの技術で構成されるが、その技術については、例えば特許第3469031号公報等で開示されている技術を用いることができる。なお、上記の個人認識技術は一例であって、本実施形態においては、そのいかなる手法を用いても構わない。
図5は、検出した顔位置情報に基づいて、同じ人物と思われる顔情報をグループ化するための処理の流れを示している。図5は人物グループ生成処理(図3のS306もしくは図4のS405)に対応するフローチャートである。
まず、S501で、2次記憶装置103に保存されている画像を順次読みだしてデコード処理を行う。デコード処理はS302と同様であるので説明を省略する。さらにS502でデータベースS503にアクセスし、該画像中に含まれる顔の個数と顔の位置情報を取得する。次に、S504において、個人認識処理を行うための正規化顔画像を生成する。
ここで正規化顔画像とは、画像内に様々な大きさ、向き、解像度で存在する顔を切り出して、すべて所定の大きさと向きになるよう、変換して切り出した顔画像のことである。個人認識を行うためには、眼や口といった器官の位置が重要となるため、正規化顔画像のサイズは、上記器官が確実に認識できる程度であることが望ましい。このように正規化顔画像を用意することにより、特徴量検出処理において、様々な解像度の顔に対応する必要がなくなるという利点がある。
次に、S505で、正規化顔画像から顔特徴量を算出する。ここでの顔特徴量とは眼や口、鼻といった器官の位置、大きさや、さらには顔の輪郭などを含むことを特徴とする。
さらに、S506で、あらかじめ人物の識別子(ID)毎に用意されている顔特徴量を格納したデータベース(以降、顔辞書507と呼ぶ)の顔特徴量と類似しているか否かの判定を行う。なお、この顔辞書の詳細については後述する。S506の判定がYesの場合、S509において同じ人物として、同じ人物の辞書IDに、追加する。
S506の判定がNoの場合、現在評価対象となっている顔は、これまで顔辞書に登録された人物とは異なる人物であるとして、新規人物IDを発行して顔辞書507に追加する。S510において、処理対象の画像データ中に、他の顔領域があるか否かを判定する。他の顔領域がある場合(S510でYES)、S502に戻る。一方、他の顔領域がない場合(S510でNO)、S511に進む。
S511において、全ての画像についてS502〜509の処理が終了したか否かを判定する。全ての画像について処理が終了した場合は、処理を終了し、全ての画像について処理が終了していない場合は、S502へ戻る。つまりS502〜S509までの処理を、入力画像群の中から検出した顔領域全てに適用して、登場した人物のグループ化を行う。
グループ化の結果は、図14のXMLフォーマットで示すように、顔領域毎にIDタグを用いて記述し、上述したデータベース304に保存しておく。
なお、上記実施形態においては、図3に示したように、全ての画像のセンシング処理及びデータベースの登録が終了した後に人物グループ生成処理を実行したが、本実施形態ではこれに限定するものではない。例えば、図4に示すように、S403におけるセンシング処理、データベースへの登録、S405におけるグループ化処理を各画像に対して繰り返し行ったとしても、同様の結果を生成することができる。
また、上記の処理によって得られた各人物グループは、表示装置104のUIに表示される。本実施形態に係る各人物グループの表示を図7に示す。図7のようなUI701において、702は人物グループの代表顔画像を表しており、その横には、該人物グループの名前を表示する領域703が存在する。自動の人物グループ化処理を終了した直後は、図7に示すように人物名は「No name」と表示されている。また、704は該人物グループに含まれる複数の顔画像が表示されている。後述するが、図7のUI701において、ユーザは、入力装置105を操作することにより「No name」の領域703を指定して人物名を入力したり、人物毎に誕生日や続柄等の情報を入力したりすることができる。
また、上記のセンシング処理は、オペレーティングシステムのバックグラウンドタスクを利用して実行しても良い。この場合、ユーザが情報処理装置115上で別の作業を行っていたとしても、画像群のセンシング処理を継続させることができる。
本実施形態においては、ユーザが手動で画像に関する様々な属性情報を入力することも想定してもよく、自動で画像に関する様々な属性情報を設定するようにしてもよい。
その属性情報の例の一覧を、表2に記載する。手動又は自動によって登録される属性情報を大きく分けると、画像毎に設定するものと、上記処理によりグループ処理された人物に対して設定される情報に分けられる。
まず、画像毎に設定される情報として、ユーザの「お気に入り度」が挙げられる。お気に入り度は、例えば、その画像を気に入っているかどうかを、ユーザが手動で入力することができる。例えば図11示すように、UI1301上で、所望のサムネイル画像1302をマウスポインタ1303で選択し、右クリックをすることでお気に入り度を入力できるダイアログを表示する。ユーザはメニューの中で自分の好みに応じて、★の数を選択することができる。本実施形態では、お気に入り度が高いほど★の数が多くなるよう設定した。
また、上記お気に入り度は、ユーザが手動で設定せずに、自動で設定するようにしてもよい。例えば、ユーザが閲覧した回数をお気に入り度として自動設定してもよい。ユーザが図8に示す画像サムネイル一覧表示の状態から、所望の画像ファイルをクリックし、1画像表示画面に遷移したとする。その遷移した回数を計測して、計測された回数に応じてお気に入り度を設定する。すなわち、閲覧した回数が多いほど、ユーザが該画像を気に入っていると判断する。
また他の例として、プリント回数に応じてお気に入り度を自動設定してもよい。具体的には、例えばユーザによる画像に対するプリント指示があった回数をプリント回数として計測する。このプリント回数が多い画像ほど、ユーザによるお気に入り度が高いと判断する。
以上で説明したように、お気に入り度については、ユーザが手動で設定する方法や、閲覧回数やプリント回数に基づいてお気に入り度を自動設定する方法などが挙げられる。上述したような属性情報は、それぞれ個別に、図10で示すようなXMLフォーマットで、データベース部202のUserInfoタグ内に格納される。例えば、お気に入り度はFavoriteRateタグで、閲覧回数はViewingTimesタグで、プリント回数はPrintingTimesタグでそれぞれ表わされる。
また、画像毎に設定する別の属性情報として、イベント情報が挙げられる。イベント情報としては、例えば、家族旅行“travel”、卒業式“graduation”、結婚式“wedding”等がある。
イベントの指定は、例えば、図12で示すように、カレンダー上で所望の日付をマウスポインタ1402などで指定して、その日のイベント名を入力することで設定できるようにしてもよい。指定されたイベント名は、画像の属性情報の一部として、図10示すXMLフォーマットに含まれることになる。図10のフォーマットでは、UserInfoタグ内のEventタグを使って、イベント名と画像を関連付けている(紐付けている)。
次に、図13を用いて人物の属性情報について説明する。
図13は、人物の属性情報を入力するためのUIを示している。図13において、1502は所定人物(この場合は“father”)の代表顔画像を示している。また、1504には、他の画像の中から検出し、S506で顔特徴量が類似していると判断された画像の一覧が表示されている。
センシング処理が終了した直後は、図7に示したように各人物グループには名前が入力されていないが、ユーザが「No name」の領域703をマウスポインタで指示する。そして、ユーザがキーボード等を操作して人物名を入力することにより、任意の人物名を入力することができる。
また、人物毎の属性として、それぞれの人物の誕生日やアプリを操作しているユーザから見た続柄を設定することもできる。本実施形態では、図13の人物の代表顔1502をクリックすると、画面下部に図示するように、ユーザはクリックした人物の誕生日を第1入力部1505で、続柄情報を第2入力部1506で入力することができる。
以上、入力された人物の属性情報は、これまでの画像に紐付けられた画像の属性情報とは異なり、図14のようなXMLフォーマットによって、画像の属性情報とは別にデータベース部202内で管理される。
本実施形態においては、あらかじめ様々なレイアウトテンプレートが用意されていることを想定する。レイアウトテンプレートとは図15、図17および図31に示すようなもので、レイアウトする用紙サイズ上に、複数の画像配置枠1702、1703、1704、1902、3602、3603(以降、スロットと同義)で構成されている。
このようなテンプレートは、あらかじめ本実施形態を実行するためのソフトウェアが情報処理装置115にインストールされた時点で、2次記憶装置に保存しておけばよい。また、その他の方法として、IF107や無線LAN I/F109を介して接続されたインターネット113上に存在する外部サーバー114から、任意のテンプレート群を取得してもよい。
これらのテンプレートは汎用性の高い構造化言語、例えば上述したセンシング結果の格納と同様にXMLで記載されているものとする。XMLデータの例を図16および図18に示す。これらの図では、まずBASICタグにおいて、レイアウトページの基本的な情報を記述する。基本的な情報としては、例えば該レイアウトのテーマやページサイズ、およびページの解像度(dpi)等が挙げられる。図16や図18において、テンプレートの初期状態では、レイアウトテーマであるThemeタグはブランクとなっている。本実施形態では、基本情報として、ページサイズはA4、解像度は300dpiを設定している。
また、以降は、上述した画像配置枠の情報をImageSlotタグで記述している。ImageSlotタグの中にはIDタグとPOSITIONタグの2つを保持し、画像配置枠のIDと位置を記述してある。該位置情報については、図15や図17で図示するように、例えば左上を原点とするX−Y座標系において定義する。
また、ImageSlotタグは、その他にそれぞれのスロットに対して、スロットの形状および配置すべき推奨人物グループ名を設定することができる。例えば、図15のテンプレートにおいては、図16のShapeタグで示すように、すべてのスロットは矩形“rectangle”形状で、人物グループ名はPersonGroupタグによって“MainGroup”を配置することを推奨している。
また、図17のテンプレートにおいては、図18に示すように、中央に配置しているID=0のスロットは矩形形状であることが記載されている。また、人物グループは“SubGroup”を配置し、その他のID=1,2と続くスロットは楕円“ellipse”形状で、人物グループは“MainGroup”を配置することを推奨している。
本実施形態においては、このようなテンプレートを多数保持するものとする。
上記のように、本実施形態に係るアプリケーションは、入力された画像群に対して解析処理を実行し、人物を自動的にグループ化してUIで表示することができる。また、ユーザはその結果を見て、人物グループ毎に名前や誕生日などの属性情報を入力したり、画像毎にお気に入り度などを設定したりすることができる。
さらにはテーマごとに分類された多数のレイアウトテンプレートを保持することができる。
以上の条件を満たすと、本実施形態に係るアプリケーションは、ある所定のタイミングで、自動的にユーザに好まれそうなコラージュレイアウトを生成し、ユーザに提示する処理を行う(以下、レイアウトの提案処理とする)。
図6は、画像の解析情報およびユーザが入力した様々な情報に基づいて、レイアウト作成のためのシナリオを決定し、該シナリオに基づいて、自動でレイアウトを生成するための処理の流れを示している。まずS601において、提案処理のシナリオを決定する。シナリオには、提案するレイアウトのテーマおよびテンプレートの決定、およびレイアウト内で重視する人物(主人公)の設定、並びにレイアウト生成に用いる画像群の選定情報が含まれる。
以下では、2つのシナリオ決定について説明する。
例えば、図13で自動グループ化されている人物“son”の2週間前になった場合、自動的にコラージュレイアウトを生成し提示するように予め設定されているものとする。そして、“son”の1歳の誕生日の2週間前になったときに、テーマの決定、テンプレートの選択、画像の選定が行われる。”son“の1歳の誕生部では、提案するレイアウトのテーマは成長記録“growth”と決定する。次にテンプレートの選択を行うが、この場合には成長記録に適した図17のようなものを選択し、図25に示すように、XMLのThemeタグの部分に“growth”と記載する。次にレイアウトを行う際に注目する主人公“MainGroup”として、“son”を設定する。また、レイアウトを行う際に副次的に注目する“SubGroup”として“son”と“father”を設定する。次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベース602を参照し、上記人物“son”の誕生日からこれまでに撮影した画像群のうち、“son”を含む画像群を大量に抽出してリスト化する。以上が、成長記録レイアウトのためのシナリオ決定である。
上記とは異なる例として、1ヶ月以内に撮影された旅行の写真がある場合、自動的にコラージュレイアウトを生成して提示するように予め設定されているものとする。図12で登録したイベント情報から、例えば数日前に家族旅行に行きその画像が大量に2次記憶装置103に保存されていることがわかると、レイアウト生成部205は、家族旅行のレイアウトを提案するためのシナリオを決定する。この場合には、提案するレイアウトのテーマは旅行“travel”と決定する。次にテンプレートの選択を行うが、この場合には図15のようなテンプレートを選択し、図26に示すように、XMLのThemeタグの部分に“travel”と記載する。次にレイアウトを行う際に注目する主人公“MainGroup”として、“son”、“mother”、“father”を設定する。このように、XMLの特性を活かせば、“MainGroup”として複数の人物を設定することができる。次に、レイアウトに利用するための画像群を選定する。この例の場合には、データベース602を参照し、上記旅行イベントに紐付けられた画像群を大量に抽出してリスト化する。以上が、家族旅行レイアウトのためのシナリオ決定である。
次に、図6のS603において、上述したシナリオに基づくレイアウトの自動生成処理を実行する。ここで、図19を用いて、シナリオに基づくレイアウトの自動生成処理について説明する。図19はレイアウト生成部205の詳細な処理フローを示している。
図19では、まずS2101で、上述したシナリオ生成処理で決定されたレイアウトテーマと人物グループ情報が設定された後のレイアウトテンプレート情報をS2102より取得する。
次に、S2103において、シナリオで決定した画像群リスト2106に基づいて、画像毎に該画像の特徴量をデータベース2104から取得し、画像群属性情報リストを生成する。ここでいう画像群属性情報リストとは、図10に示したIMAGEINFOタグが画像リストの分だけ並んだ構成となっている。以降ではこの画像属性情報リストに基づいて、S2105〜S2109における自動レイアウト生成処理を行う。
このように、本実施形態の自動レイアウト生成処理では、このように画像データそのものを直接扱うのではなく、あらかじめ画像毎にセンシング処理を行ってデータベース保存しておいた属性情報を利用する。この理由は、レイアウト生成処理を行う際に、画像データそのものを対象としてしまうと、画像群を記憶するために非常に巨大なメモリ領域を必要としてしまうためである。即ち、本実施形態のようにデータベース部202に記憶しておいた属性情報を利用することにより、メモリ領域の使用量を低減することができる。
次に、S2105において、入力された画像群の属性情報を用いて、入力された画像群の中から不要画像のフィルタリングを行う。ここで、図20を用いて、フィルタリング処理について説明する。図20は、フィルタリング処理のフローチャートである。同図では、各画像毎に、まずS2201で全体の平均輝度がある閾値(ThY_LowとThY_Hight)内に含まれているかの判定を行う。S2201にてNOの場合にはS2206に進み、注目画像はレイアウト対象から除去する。
同様に、S2202〜S2205では、注目画像に含まれる顔領域それぞれについて、平均輝度、平均色差成分が、良好な肌色領域を示す所定閾値に含まれているかの判定を行う。S2202〜S2205のすべての判定がYesとなる画像のみ、以降のレイアウト生成処理に適用される。
具体的には、S2202では、ID=Nである顔領域のAveYが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S2203では、ID=Nである顔領域のAveChが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S2204では、ID=Nである顔領域のAveCrが所定閾値(ThfY_LowとThfY_Hight)の範囲に含まれているか否かの判定を行う。S2205では、最後の顔であるか否かを判定する。最後の顔ではない場合は、S2202へ戻り、最後の顔である場合は、処理を終了する。
なお、このフィルタリング処理では、以降の一時レイアウト作成処理に明らかに不要と判断できる画像の除去を目的としているため、上記閾値は比較的湯緩やかに設定することが望ましい。例えばS2201の画像全体の輝度値の判定において、ThY_HighとThY_Lowの差が画像ダイナミックレンジに比して極端に小さいと、各判定にてYesと判定される画像が少なくなってしまう。従って、本実施形態のフィルタリング処理ではそうならないよう、両者の差をできる限り広く設定し、かつ明らかに異常画像と判断されるものは除去できるような閾値を設定する。
次に図19のS2107において、上記処理でレイアウト対象となった画像群を用いて、大量(L個)の一時レイアウトを生成する。一時レイアウトは、取得したテンプレートの画像配置枠に対して、入力画像を任意に当てはめる処理を繰り返すことで実行する。
入力画像をテンプレートの画像配置枠に当てはめるにあたり、レイアウト中の画像配置枠がN個の時、画像群の中からどの画像を選択するかランダムに決定する。また選択した複数の画像を、テンプレート中のどの配置枠に配置するかランダムに決定する。さらに、画像が配置された際に、どの程度のトリミング処理を行うかというトリミング率をランダムに決定する。なお、トリミング率は例えば0〜100%で表わされ、図21のようにトリミングされる。図21において、2301は画像全体を示し、2302はトリミング率50%でトリミングした際の切り取り領域を示している。
本実施形態では、上記の画像選択・配置・トリミング基準に基づいて、可能な限り数多くの一時レイアウトを生成する。生成した各一時レイアウトは、図27のXMLのように表わすことができる。各スロットに対して、選択され配置された画像のIDがImageIDタグで、トリミング領域がTrimingCropタグでそれぞれ記述されている。
なお、ここで生成する一時レイアウトの数Lについては、後述するレイアウト評価ステップでの評価処理の処理量と、それを処理する情報処理装置115の性能に応じて決定されるが、例えば数十万通り以上の一時レイアウトを用意することが望ましい。生成した一時レイアウトは、それぞれIDを付加して図27のXML形式で2次記憶装置103にファイル保存してもよいし、構造体など別のデータ構造を用いてRAM102上に記憶してもよい。
次に、図19のS2108において、上記で作成したL個の一時レイアウトに対して、それぞれ所定のレイアウト評価量を用いて評価を行う。本実施形態におけるレイアウト評価量の一覧を、表3に示す。表3に示すように、本実施形態で用いるレイアウト評価量は、主に3つのカテゴリに分けることができる。
一つめの評価カテゴリは、画像個別の評価量である。これは画像の明るさや彩度、ブレぼけ量等の状態を判定し、スコア化するものである。スコア化の一例を以下に示す。まず明るさの適正度については、図22に示す。図22のグラフにおいて、縦軸をスコア値(score)、横軸を平均輝度(Ave Y)とする。図22において、平均輝度がある所定レンジ範囲内においてはスコア値100とし、所定閾値範囲外となるとスコア値を100から下げるよう設定している。また、彩度の適正度については、図23に示す。図23のグラフにおいて、縦軸をスコア値(score)、横軸を平均彩度(Ave Y)とする。図23において、画像全体の平均彩度がある所定の彩度値より大きい場合にはスコア値100とし、所定値より小さい場合にはスコア値を除所に下げていくよう設定している。
二つ目の評価カテゴリは、画像とテンプレート中のスロットの適合度の評価(画像・スロット適合度評価)である。これは、画像とスロットの適合の程度をスコア化するものである。
本実施形態においては、上述した切れ評価値により、画像とスロットの適合度評価値を算出する。即ち、テンプレートにおける配置枠(スロット)に配置された画像において、画像における注目領域の一部が、レイアウトにおける配置枠の外にはみ出し、その注目領域の一部が配置枠に含まれるか判定し、その判定結果により、画像とスロットの適合度を評価する。具体的には、注目領域の一部がはみ出しているときの適合度を、注目領域の全部が配置枠からはみ出している場合、また注目領域の全部が配置枠に含まれる場合よりも高い評価とする。
また別の画像・スロット適合度評価値として、人物適合度がある。人物適合度とは、スロットに指定されている人物と、実際に該スロットに配置された画像内に存在する人物の適合率を表したものである。例を挙げると、あるスロットが、XMLで指定されているPersonGroupタグで、“father”、“son”が指定されているものとする。この時、該スロットに割り当てられた画像に該2人の人物が表示されていたとすると、該スロットの人物適合度は評価値(スコア)100とする。もし片方の人物しか表示されていなかったとすると、適合度は評価値50とする。両者とも表示されていなかった場合は人物適合度の評価値は0となる。
図30において、3504が”father”、3506が”son”だった場合は以下のようになる。トリミング結果3508では“father”と“son”の2人がいずれもスロットに表示されているため、人物適合度の評価値は100であるが、3503および3507に切れが発生しているため切れ評価値は0となる。3511では”father”、”son”共に表示されているため人物適合度の評価値は100であり、どの注目領域にも切れが発生していないため切れ評価値も100である。3514では”son”は表示されているが”father”は表示されていないため人物適合度の評価値は50であり、どの注目領域にも切れが発生していないため切れ評価値は100となる。以上のように、トリミング結果3508、3511、3514の中で総合的に最も高い評価値となるのは、スロットに指定された人物が表示され、且つ切れが発生していない3511となる。
なお、顔が切れた人物が、スロットに対して指定された人物か否かにより、切れ評価の評価基準を異ならせてもよい。例えば、上記の例では、“father” “son”の顔が切れてしまったときの切れ評価を、“father”“son”以外の人物の顔が切れた時の切れ評価よりも低くしてもよい。
なお、ページ内の適合度は、スロット毎に算出した適合度の平均値とする。
三つめの評価カテゴリは、レイアウトページ内のバランスを評価するものである。表3ではバランスを評価するための評価値として、画像類似性、色合いばらつき、顔サイズばらつきを挙げている。
まず、画像類似性について説明する。画像の類似性は、大量に生成した一時レイアウト毎に、それぞれの画像の類似性を算出する。例えば旅行テーマのレイアウトを作成したい場合、あまりに似通った類似度の高い画像ばかりが並んでいたとすると、それは良いレイアウトとは言えないことがある。例えば、類似性は、撮影日時によって評価することができる。撮影日時が近い画像は、同じような場所で撮影された可能性が高いが、撮影日時が離れていれば、その分、場所もシーンも異なる可能性が高いからである。
撮影日時は、図10で示したように、画像の属性情報として、予めデータベース部202に保存されている、画像毎の属性情報から取得することができる。撮影日時から類似度を求めるには以下のような計算を行う。
例えば、今注目している一時レイアウトに表4で示すような4つの画像がレイアウトされているものとする。なお、表4において、画像IDで特定される画像には、それぞれ撮影日時情報が付加されている。具体的には、撮影日時として、年月日及び時間(西暦:YYYY、月:MM、日:DD、時:HH、分:MM、秒:SS)が付加されている。このとき、この4つの画像間で、撮影時間間隔が最も短くなる値を算出する。この場合は、画像ID102と画像ID108間の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に近づく値となり、顔サイズのバラつき度評価値として有効である。
またその他カテゴリとして、ユーザの嗜好性評価が考えられる。
以上説明したような、一時レイアウト毎に算出した複数の評価値を、以下では統合化して、一時レイアウト毎のレイアウト評価値とする。今、l番目の一時レイアウトの統合評価値を、EvalLayout[l]とし、上記で算出したN個の評価値(表3の評価値それぞれを含む)の値をEvalValue[n]とする。この時、統合評価値は以下で求めることができる。
上式において、W[n]は、表3で示したシーン毎の各評価値の重みである。該重みはレイアウトのテーマ毎に異なる重みを設定していることが特徴となっている。例えば、表3に示すようにテーマを成長記録“growth”と旅行“travel”で比較した場合、旅行テーマの方は、できるだけ良質の写真をいろいろな場面で数多くレイアウトする。そのため、画像の個別評価値やページ内のバランス評価値を重視するように設定する。一方、成長記録“growth”の場合、画像のバリエーションよりは、成長記録の対象となる主人公が確実にスロットに適合しているか否かが重要であるとし、ページ内バランスや画像個別評価よりも、画像・スロット適合度評価を重視するよう設定する。
ここで、表3に示すように注目領域切れの評価値の重みを高く設定する事により、人物などの注目領域の切れが少ないレイアウトが優先されることになる。別の例として、注目領域切れ評価の重みのみ1.0などの値を持ち、他の項目の重みをすべて0にすれば、注目領域切れのみに特化したレイアウト結果が得られる。
このようにして算出したEvalLayout[l]を用いて、S2109では、レイアウト結果表示のためのレイアウトリストLayoutList[k]を生成する。レイアウトリストは、予め定められた個数(例えば5個)に対して、EvalLayout[l]のうち、評価値が高いもの順に識別子lを記憶しておく。例えば最も良いスコアを出したものが、l=50番目に作成した一時レイアウトであった場合、LayoutList[0]=50となる。同様に、LayoutList[1]以降は、スコア値が2番目以降の識別子lを記憶しておく。
以上が、図19のフローチャートの説明である。
次に、図19を用いて説明した上記処理によって得られたレイアウト結果を、図6のS605において表示させる。本実施形態では、図24のUI2901上に表示させる。S605では、まずLayoutList[0]に格納されているレイアウト識別子を読み出し、該識別子に相当する一時レイアウト結果を、2次記憶装置103あるいはRAM102上から読み出す。レイアウト結果には、上述したようにテンプレート情報と該テンプレート内に存在するスロット毎に、割り当てられた画像名が設定されている。S605ではこれらの情報に基づいて、情報処理装置115上で動作するOSの描画関数を用いて、該レイアウト結果をレンダリングし、図24のレイアウト2902のように表示することになる。
図24のNextボタン2904を押下することにより、次点スコアであるLayoutList[1]の識別子を読み出し、上記と同様にレンダリング後、表示を行うことで、ユーザは様々なバリエーションの提案レイアウトを閲覧することができる。また、Previousボタン2903を押下することにより、前に表示したレイアウトを再表示することもできる。さらに、表示されたレイアウトが気に入った場合には、プリントボタン2905を押下することで、情報処理装置115に接続されたプリンタ112からレイアウト2902をプリントアウトすることもできる。
以上のように、本実施形態によれば、テンプレートにおける配置枠(スロット)に配置された画像において、画像における注目領域が配置枠で切れているかにより、テンプレートに画像が配置されたレイアウトの、出力対象としての評価を行う。具体的には、注目領域の一部が、レイアウトにおける配置枠の外にはみ出し、その注目領域の一部が配置枠に含まれるか判定する。そして、注目領域の一部がはみ出しているときの適合度を、注目領域の全部が配置枠からはみ出している場合、また注目領域の全部が配置枠に含まれる場合よりも高い評価とする。これにより、例えば画像に含まれる人物の顔などの注目領域が切れて状態で、レイアウトが出力されることを防ぐことができる。
また、上述したように、注目領域の種別により、注目領域が切れたときの評価基準を異ならせてもよい。例えば、注目領域に対応する人物が、特定の人物の場合には、特定の人物でない注目領域が切れた時よりも評価を低くする。特定の人物とは、例えば、テンプレートのスロットにおいて指定された人物、また顔辞書に登録された人物である。これにより、画像に含まれている特定の人物の顔の一部が欠けた状態で、レイアウトが出力されることを防ぐことができる。
<第2の実施形態>
上述の第1の実施形態では大量の一時レイアウトを作成した後にレイアウト評価の一部として切れ評価を行ったが、本実施形態では、レイアウトを作成するときに、注目領域が切れないようにレイアウトを作成する。具体的には、テンプレートに配置される配置候補の画像に対して多数のトリミング領域の候補を設定し、上述した切れ評価を行う。このトリミング領域はスロットと同じアスペクト比であり、種々のサイズの候補を設定する。本実施形態では、小さい面積から設定し、画像左上の座標から該トリミング領域を設定して切れ評価を行う。設定されたトリミング領域の候補に対する切れ評価が予め定めた閾値より高ければ一時レイアウトの候補とする。トリミング領域を左上の座標から右へ1画素ずつ進め、最右座標まで評価したら次は左上から1画素下へずらし、また右方向へ進めて評価して行く。このように画像の全領域で評価を行ったら次はトリミング領域の面積を大きくして同様な評価を行う。
このようにして切れ評価を行い、閾値以上であった候補のトリミングの中からレイアウトを作成することにより、注目領域に切れが存在するトリミングが発生しにくくなる。
また、本実施形態によれば注目領域の切れ評価により、一時レイアウトを、注目領域の切れが生じていないレイアウトに絞り込むことができる。そのため、図28のS3307における、レイアウトの評価処理の評価対象を絞り込むことができるので、レイアウトの評価処理を容易にすることができる。
<その他の実施形態>
また、本実施形態は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタ等)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、プリンタ、複写機、ファクシミリ装置等)に適用しても良い。
また、本発明の目的は、以下によっても達成できる。まず、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給する。次に、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行すればよい。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、プログラムを実行するコンピュータ(プロセッサ)は1つに限らず、複数のコンピュータが協働して、以上の実施形態の処理を実行してもよい。
さらに、まず、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、該プログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。また、上述した実施形態の一部をソフトウェア(プログラム)により実行し、残りの部分をハードウェアにより実行する場合であってもよい。