以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
以下の実施形態では、画像処理装置上で、アルバム作成のためのアプリケーションプログラム(以下、「アルバム作成アプリ」ともいう)を動作させ、自動レイアウトを生成するまでの手順について説明する。以下に説明する画像とは、特に断りが無い限り、静止画、動画、動画中のフレーム画像、また、SNS(ソーシャル・ネットワーキング・サービス)サーバ上の静止画と動画と動画中のフレーム画像を含む。
(第1実施形態)
図1は、本発明に係る画像処理装置のハードウェアの構成を説明するブロック図である。画像処理装置としては、例えば、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末、カメラ、プリンタ等が挙げられ、本実施形態ではPCとする。
図1において、画像処理装置100は、CPU101と、ROM102と、RAM103と、HDD104と、ディスプレイ105と、キーボード106と、マウス107と、データ通信部108と、を備えている。これらは、データバス109により相互に接続されている。
CPU(中央演算装置/プロセッサ)101は、システム制御部であり、画像処理装置100全体を制御する。また、CPU101は、本実施形態で説明する画像処理方法をプログラムに従って実行する。なお、図中のCPUは1つとしたが、これに限定されず、複数備えられていてもよい。
ROM102には、CPU101により実行されるプログラムやOS(オペレーティングシステム)が記憶されている。RAM103は、CPU101によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。HDD(ハードディスク)104は、画像ファイルや画像解析などの処理結果を保持するデータベースなどを記憶するための記憶媒体である。本実施形態では、HDD104は、詳細は後述するアルバム作成アプリを記憶する。
ディスプレイ105(表示部)は、本実施形態のUI(ユーザインターフェイス)や画像のレイアウト結果をユーザに提示する装置である。ディスプレイ105は、タッチセンサー機能を備えていても良い。キーボード106は、入力装置の1つであり、例えば、ディスプレイ105に表示されたUI上に所定の情報を入力するのに用いられる。所定の情報とは、例えば、作成したいアルバムの見開き数やページ数等の情報である。マウス107は、入力装置の1つであり、例えば、ディスプレイ105に表示されたUI上のボタンをクリックするのに用いられる。なお、例えばユーザが、ディスプレイ105に表示されている、アルバム作成アプリに対応するアイコンを、マウス107の操作によりダブルクリックすることで、アルバム作成アプリが起動する。
データ通信部108(通信部)は、プリンタやサーバなどの外部装置と通信するための装置である。例えば、アルバム作成アプリによって作成されたデータは、データ通信部108を介して、画像処理装置100に接続された不図示のプリンタやサーバに送信される。また、データ通信部108は、不図示のサーバやSNS(ソーシャルネットワーキングサービス)サーバ上の静止画データを受信する。なお、本実施形態では、データ通信部108は、SNSサーバから静止画データを受信するが、この形態に限定されず、動画データも受信しても良い。
データバス109は、上述した各部(102〜108)とCPU101とを接続する。
<アルバムの自動レイアウト>
図2は、本実施形態のアルバム作成アプリケーションのソフトウェアブロック図である。本実施形態では、HDD104に保存されているアルバム作成アプリは、ディスプレイ105に表示されている、アルバム作成アプリに対応するアイコンを、ユーザがマウス107の操作によりダブルクリックすることで起動される。また、アルバム作成アプリは、例えば、データ通信部108を介して外部のサーバからインストールされることで、HDD104に保存される。
アルバム作成アプリは様々な機能を持つが、本実施形態では、特に自動レイアウト処理部219により提供される自動レイアウト機能に関して説明する。自動レイアウト機能は、静止画や動画をその内容や属性に基づいて分類及び選択することで取得された画像データを予め用意されたテンプレートにレイアウトすることで、レイアウト画像を作成し、それをディスプレイ105に表示するための機能である。
図2に示すように、アルバム作成アプリは、アルバム作成条件指定部201と、自動レイアウト処理部219と、を含む。
アルバム作成条件指定部201は、例えばマウス107による後述のUI操作に応じたアルバム作成条件の指定を受付け、自動レイアウト処理部219に出力する。指定される条件には、例えば処理の対象となる画像データや主人公のID、アルバムの見開き数、テンプレート情報、画像補正のON/OFF条件、動画使用のON/OFF条件、アルバムのモード等の指定が含まれる。画像データの指定は、例えば、撮影日時など個別の画像データの付随情報や属性情報による指定であってもよいし、デバイスやディレクトリ(フォルダ)の指定など、画像データを含むファイルシステムの構造に基づく指定であってもよい。なお、見開きとは、異なるシート(又はページ)に印刷された、互いに隣接する1対のページに相当する。また、本実施形態のアルバム作成アプリでは、一つの表示用ウィンドウで1つの見開きのレイアウトを作成するものとする。なお、アルバム作成条件指定部201は、例えば図3に示すような設定画面を表示し、当該画面に対する入力を受け付けることで、アルバム作成条件の指定を受付ける。
動画取得部202は、アルバム作成条件指定部201により指定された動画群(動画データ群)をHDD104等の記憶領域から取得する。なお、動画取得部202は、データ通信部108を介してネットワーク上のサーバやSNSサーバ等の記憶領域から動画群を取得しても良い。ここでいう動画群とは、アルバム作成に利用される画像データの候補を切り出すために利用される動画データの集合を指す。動画取得部202は、取得された動画データを動画解析部203によって解析できるように、OSに標準搭載されているデコーダ機能を使って、動画データを圧縮された状態から展開された状態にする。
動画解析部203は、動画取得部202で取得された動画データを解析する。
具体的にはまず、動画解析部203は、動画データから連続するフレームを切り出し、前後のフレーム間の特徴量の差を特定し、動き量を特定する。動画データには、運動量が大きい撮影対象が撮影されることで得られた動画データと、運動量が小さい撮影対象が撮影されることで得られた動画データと、がある。前者の動画データから取得された画像データについては動き量が多きとみなし、後者の動画データから取得された画像データについては動き量が多き量が小さいとみなす。
具体的には動画解析部203は、切り出した各フレーム全体の領域を複数の領域に分割し、当該複数の領域のRBG値に関するヒストグラムを作成する。そして、動画解析部203は、前後のフレーム間の、RBG値に関するヒストグラムの差分を検出し、差分が大きいとされたヒストグラムに対応する領域の個数を特定する。そして、動画解析部203は、差分が大きいとされたヒストグラムに対応する領域の個数が閾値以上である場合には、前後のフレーム間の特徴量の差が大きいと判定する。そして、動画解析部203は、差分が大きいとされたヒストグラムに対応する領域の個数が閾値未満である場合には、前後のフレーム間の差が小さいと判定する。
そして、前後のフレーム間の特徴量の差が大きい場合は、それらのフレームが類似していないことが示されるため、動画解析部203により、それらのフレームは、被写体の動きが多い(動き量が多い)フレームと判断される。前後のフレーム間の特徴量の差が小さい場合は、それらのフレームが類似していることが示されるため、動画解析部203により、それらのフレームは、被写体の動きが少ない(動き量が少ない)フレームと判断される。動き量の判断に関しては、前述したフレーム間の特徴量の差分が利用される以外にも、動画フォーマットで利用している動きベクトルが利用されてもよい。また、フレーム間の特徴量の差分として、RBG値に関する差分を検出する形態としたが、例えば、輝度値に関する差分を検出する形態をしても良い。このようにして、動画解析部203は、1つの動画データから切り出される複数のフレームを、動き量が多いフレーム群と、動き量が少ないフレーム群とに分けて管理することができる。
動画解析部203は、動画データから切り出され、時系列順に管理されているフレームを、所定の間隔毎に抽出して解析対象とする。動画解析部203は、動き量が多いと判定されたフレーム群から解析対象のフレームを抽出する間隔を短くし、動き量が少ないと判定されたフレーム群から解析対象のフレームを抽出する間隔を長くする。例えば、動画解析部203は、動き量が多いと判定されたフレーム群からは、5フレーム間隔で解析対象のフレームを抽出し、動き量が少ないと判定されたフレーム群からは、3フレーム間隔で解析対象のフレームを抽出する。
また、動画解析部203は、抽出した解析対象のフレームに、解析処理を行う。具体的には、動画解析部203は、オブジェクト検出、サイズ特定、笑顔判定、目瞑り判定、ブレボケ判定、明るさ判定等を行う。オブジェクト検出とは、解析対象のフレームから、人物の顔や動物、料理等のオブジェクトを検出する処理である。サイズ特定とは、オブジェクト検出によって検出されたオブジェクトのサイズを特定する処理である。笑顔判定とは、オブジェクト検出によって検出されたオブジェクトが人物の顔である場合、検出された人物の顔が、笑顔であるか否かを判定する処理である。目瞑り判定とは、オブジェクト検出によって検出されたオブジェクトが人物の顔である場合、検出された人物の顔が、目を瞑っているか否かを判定する処理である。ブレボケ判定とは、解析したフレームのブレやボケの多寡を判定する処理である。明るさ判定とは、解析したフレームの明るさ(平均輝度値)の多寡を判定する処理である。
また、動画解析部203は、上記処理の結果に応じて、解析したフレームに得点を付加する得点化処理を行う。具体的には例えば、動画解析部203は、人物の顔や動物、料理等のオブジェクトを含むフレームの方が、当該オブジェクトを含まないフレームより得点が高くなるように、得点化処理を行う。なお、動画解析部203は、あるフレームがオブジェクトを含むか否かを、オブジェクト検出によって判定することができる。また、例えば、動画解析部203は、大きいオブジェクトを含むフレームの方が、小さいオブジェクトを含むフレームより得点が高くなるように、得点化処理を行う。なお、動画解析部203は、各フレームに含まれるオブジェクトのサイズを、サイズ特定によって特定することができる。また、例えば、動画解析部203は、笑顔である顔を含むフレームの方が、笑顔でない顔を含むフレームより得点が高くなるように、得点化処理を行う。また、動画解析部203は、笑顔である顔を多く含むフレームの方が、笑顔である顔をあまり含まないフレームより得点が高くなるように、得点化処理を行う。なお、動画解析部203は、各フレームに含まれる顔が笑顔であるか否かや、各フレームに含まれる笑顔である顔の数を、笑顔判定によって特定することができる。また、例えば、動画解析部203は、目を瞑っていない顔を含むフレームの方が、目を瞑っている顔を含むフレームより得点が高くなるように、得点化処理を行う。また、動画解析部203は、目を瞑っている顔をあまり含まないフレームの方が、目を瞑っている顔を多く含むフレームより得点が高くなるように、得点化処理を行う。なお、動画解析部203は、各フレームに含まれる顔が目を瞑っているか否かや、各フレームに含まれる目を瞑っている顔の数を、目瞑り判定によって特定することができる。また、動画解析部203は、ブレやボケが少ないフレームの方が、ブレやボケが多いフレームより得点が高くなるように、得点化処理を行う。なお、動画解析部203は、各フレームのブレやボケの多寡を、ブレボケ判定によって特定することができる。なお、動画解析部203は、ブレボケ判定では、解析対象のフレームのエッジ量をラプラシアンフィルタにより算出して、エッジ量が多いほど、ボケが少ないと判定する。なお、動画解析部203は、動き量に応じて、ブレボケ判定する領域を変更してもよい。例えば、動いている被写体を追尾して撮影することによって得られた動画データから切り出されたフレームに対してブレボケ判定を行う場合、被写体はくっきり写るが背景はぼける。そのため、画像全体をブレボケ判定の対象領域としては、判定対象のフレームはボケが多いと判定されてしまう。そのため例えば、動画解析部203は、動き量が多いフレームに関しては、顔などが写っている被写体領域のみに対して、ブレボケ判定を実行しても良い。また、動画解析部203は、明るい(平均輝度値が大きい)フレームの方が、暗い(平均輝度値が小さい)フレームより得点が高くなるように、得点化処理を行う。
なお、動画解析部203は、解析の対象となるフレームを絞っても良い。例えば、動画解析部203は、オブジェクト検出によって人物の顔を検出する際、検出する顔の向きを指定する。このとき、全方向を指定して検出を行うのではなく、特定の向きの顔だけ検出する形態であっても良い。また、例えば、笑顔判定、目瞑り判定を、特定の向きの顔が写っているフレームや、所定値以上の大きさの顔が写っているフレームに対して行う形態としても良い。また、例えば、サイズ特定、笑顔判定、目瞑り判定、ブレボケ判定を、明るさが所定値以上のフレームにだけ行う形態としても良い。このような形態とすることで、動画データから切り出されるフレーム数が多い場合に、処理時間を短縮することができる。
なお、動画解析部203による得点化の方法は上述に限定されない。例えば、動画解析部203は、動き量が多いフレームの方が、動き量が小さいフレームより得点が高くなるように、得点化処理を行っても良い。また、動画解析部203は、ズームされた後のフレームやパンされた後のフレームに所定のスコア値を加算してもよい。そうすることで、動画撮影時のユーザの意図を得点に反映させることができる。
動画解析部203は、これらの解析処理により、動画におけるどのフレームが良い画像かを特定することができる。
フレーム取得部204は、動画解析部203で解析された結果(評価)に基づいて、動画からフレームを切り出し、切り出したフレームを画像データとしてHDD104に保存する。具体的には、フレーム取得部204は、動画解析部203によって解析・管理されている各フレーム群から、総合得点が所定値以上のフレームをそれぞれ取得する。または、フレーム取得部204は、総合得点の高いものから所定数抽出してもよい。その際、フレームと関連付けて、当該フレームの動き量、カメラワーク、得点を保存する。当該フレームの動き量、カメラワーク、得点は、動画解析部203で解析されることで取得される。なお、当該フレームには、例えば、アルバム作成に利用される画像、アルバム作成後にユーザが画像の差し替えを行う際に利用される候補画像というように、画像の用途に関する情報を関連付けて保存してもよい。なお、例えば、あるフレームが、アルバム作成に利用される画像と候補画像のどちらとなるかは、当該フレームの得点に応じて決定される。具体的には、より得点が高いフレームが、アルバム作成に利用される画像となる。また、例えば、指定フォルダや指定サーバ、SNSサーバ等、いずれの記憶部から動画データを取得したかの情報や、動画の撮影日時情報や抽出したフレームのサイズ、動画の撮影時間等もこのとき保存されても良い。なお、抽出されたフレームは、順次、画像変換部206により所定の形式の画像データに変換される。
画像取得部205は、アルバム作成条件指定部201により指定された画像群(画像データ群)をHDD104等の記憶領域から取得する。なお、動画取得部202は、データ通信部108を介してネットワーク上のサーバやSNSサーバ等の記憶領域から画像群を取得しても良い。ここでいう画像群とは、アルバム作成に利用される画像データの候補を指す。例えば、アルバム作成条件指定部201において、レイアウト対象となる画像データが生成された(当該画像データに対応する写真が撮影された)日時(以後、撮影日時という。)に関する条件としてXX年1月1日〜XX年12月31日が指定される場合がある。この場合、画像取得部205は、XX年1月1日〜XX年12月31日に生成された全ての画像データを画像群として取得する。
記憶領域に保存されている画像データは、例えば、静止画像データや、動画データからフレームが切り出されることで取得される切り出し画像データである。静止画像データや切り出し画像データは、撮像デバイスから取得されたものである。撮像デバイスは、画像処理装置100が備えていてもよいし、画像処理装置100の外部の装置である外部装置(PCやスマートホン、デジタルカメラ、タブレット端末等)が備えるものであってもよい。なお、画像処理装置100は、外部装置から画像データを取得する場合は、データ通信部108を介して画像データを取得する。また、画像処理装置100は、静止画像データや切り出し画像データを、データ通信部108を介してネットワークやサーバから取得してもよい。CPU101は、画像データに付随したデータを解析して、各画像データがどこから取得されたのかを判定する。なお、CPU101は、アルバム作成アプリを介してSNSサーバから画像データを取得した場合は、アルバム作成アプリによって、当該画像データがどこから取得されたのかを管理してもよい。なお、アルバム作成アプリによって利用される画像データは、上述した種類の画像データに限定されるものではなく、他の種類の画像データであってもよい。
画像変換部206は、画像取得部205によって取得された画像データの画素数情報や色情報を変換する。なお、画像変換部206によって、どのような画素数情報や色情報の画像データへの変換が行われるかは予め決められており、その情報は、アルバム作成アプリ又はアルバム作成アプリが用いるパラメータファイルに保存されている。本実施形態では、画像取得部205によって取得された画像データを、画素数が短辺420画素、色情報がsRGBである画像データに変換する。
画像解析部207は、画像データの解析処理をする。本実施形態では、画像解析部207は、画像変換部206で変換済みの画像データの解析処理をする。具体的には、変換済みの画像データから特徴量を取得し、変換済みの画像データにおけるオブジェクト検出、顔検出、検出した顔の表情認識、検出した顔の個人認識を実行する。さらに、画像取得部205によって取得された変換前の画像データに付随したデータ(例えば、Exif情報)から、撮影日時情報の取得を行う。撮影日時情報として、Exif情報からの取得に限らず、画像データを作成または更新した日時の情報が用いられてもよい。また、ローカルサーバやSNSサーバに画像データをアップロードまたはローカルサーバやSNSサーバから画像データをダウンロードした日時の情報が用いられてもよい。これらの日時の情報も、以下では撮影日時情報として取り扱う。なお、ローカルサーバとは、HDD104等の、画像処理装置100が備える記憶領域であるものとする。
画像分類部208は、画像データ群に対して、撮影日時情報や枚数、検出した顔情報などのオブジェクト検出結果情報を使って後述のシーン分割、シーン分類を実行する。シーンとは、「旅行」や「日常」、「結婚式」等の撮影シーンのことである。シーンとは、例えば、一時期の撮影機会に生成された画像データの集まりであるともいえる。
主人公情報入力部209は、アルバム作成条件指定部201から指定された主人公のID(識別情報)を画像得点部210に入力する。
画像得点部210は、各画像データに対して、レイアウトに適した画像データが高得点になるように得点付けをする。得点付けは、画像解析部207で得られた情報と、画像分類部208で得られた情報に応じて実行される。また、他の情報が付加的に或いは代替的に用いられてもよい。本実施形態では、画像得点部210は、主人公情報入力部209から入力された主人公IDが含まれる画像データの得点が高得点になるように、各画像データに対して得点付けをする。
見開き入力部211は、アルバム作成条件指定部201から指定されたアルバムの見開き数を見開き割当部212に入力する。
見開き割当部212は、画像群を分割(グルーピング)して各見開きに割り当てる。見開き割当部212は、入力された見開き数に応じて画像群を分割して、各見開きに画像群の一部を割り当てる。例えば、見開き割当部212は、見開き数が5である場合、取得した画像群を5つに分割して小画像群を生成し、各見開きに1つの小画像群を割当てる。なお、本実施形態では、画像群が見開き数に応じて分割され、分割された画像群が各見開きに割り当てられる形態を説明するが、画像群がページ数に応じて分割され、分割された画像群が各ページに割り当てられる形態であっても良い。
画像選択部213は、見開き割当部212で各見開きに割り当てられた画像群から、画像得点部210で付けた得点に基づいて、画像データを選択する。
テンプレート設定部214は、アルバム作成条件指定部201から指定されたテンプレート情報に応じた複数のテンプレートをHDD104から読み込み、画像レイアウト部215に入力する。なお、本実施形態では、複数のテンプレートは、HDD104に保存されているアルバム作成アプリに保持されているものとする。また、複数のテンプレートには、例えば、テンプレート全体のサイズに関する情報や、テンプレートが備えるスロットの個数、サイズ、位置に関する情報等が含まれる。
画像レイアウト部215は、見開きのレイアウトを決定する。具体的には、テンプレート設定部214により入力された複数のテンプレートから画像選択部213で選択した画像データに適したテンプレートを選択し、各画像の配置位置を決定する。これにより、見開きのレイアウトが決定される。
レイアウト情報出力部218は、画像レイアウト部215が決定したレイアウトに従って、ディスプレイ105にレイアウト画像を表示するためのレイアウト情報を出力する。レイアウト画像は、例えば、選択されたテンプレートに画像選択部213により選択された画像データが表わす画像が配置された画像であり、レイアウト情報は、当該画像を表わすビットマップデータである。
画像補正部217は、覆い焼き補正(輝度補正)、赤目補正、コントラスト補正等の各補正処理を実行する。補正条件入力部216は、アルバム作成条件指定部201から指定された画像補正のON/OFF条件を画像補正部217に入力する。画像補正のON/OFFは、補正の種類ごとに指定されてもよいし、全ての種類についてまとめて指定されてもよい。画像補正部217は、画像補正条件がONの場合は、画像データに対して補正処理を実施し、画像補正条件がOFFの場合は、画像データに対して補正処理を実施しない。なお、画像補正部217は、画像変換部206から入力された画像データに対して、画像補正のON/OFFに従って補正処理を実行する。画像変換部206から画像補正部217に入力する画像データの画素数情報は、画像レイアウト部215で決定したレイアウト画像のサイズに合わせて変えることができる。本実施形態では、レイアウト画像を生成した後に、各画像データに画像補正を行うものとしたが、これに限定されず、テンプレートに画像をレイアウト(配置)する前に、各画像データの補正を行うようにしてもよい。
レイアウト情報出力部218から出力される画像データは、例えば図3に示すような形式でディスプレイ105に表示される。
本実施形態に係るアルバム作成アプリが、画像処理装置100にインストールされると画像処理装置100上で動作するOSによりディスプレイ105に表示されるトップ画面(デスクトップ)上に起動アイコンが生成される。そして、ユーザが起動アイコンをマウス107の操作によりダブルクリックすると、HDD104に保存されているアルバム作成アプリのプログラムがRAM103にロードされる。そして、RAM103にロードされたプログラムがCPU101によって実行されて、アルバム作成アプリケーションが起動する。
図3は、起動したアルバム作成アプリが提供するUI構成画面301の一例を示す図である。UI構成画面301は、ディスプレイ105に表示される。ユーザがUI構成画面301を介して、後述するアルバムの作成条件を設定することで、アルバム作成条件指定部201は、ユーザから指定される設定内容を取得する。UI構成画面301上のパスボックス302は、アルバム作成の対象となる画像・動画群のHDD104中の保存場所(パス)を示す。フォルダ選択ボタン303は、ユーザによるマウス107の操作によりクリックされることより、アルバム作成の対象とする画像・動画群を含むフォルダをツリー構成でユーザが選択可能に表示する。そして、ユーザにより選択された画像・動画群を含むフォルダパスがパスボックス302に表示される。
主人公指定アイコン304は、ユーザが主人公を指定するためのアイコンであり、人物の顔画像がアイコンとして表示される。主人公指定アイコン304には、複数の異なる顔画像のアイコンが並んで表示され、ユーザがマウス107によりクリックすることで、ユーザはそのなかのいずれかのアイコンを選択可能である。そして、選択されたアイコンに対応する人物が、作成対象のアルバムの主人公として設定される。なお、それぞれの顔画像は個人IDと関連付けられている。また、主人公指定アイコン304は、解析対象の画像データが表わす画像に写った人物から中心人物である主人公を特定するために用いられる。顔画像は、例えば、予め各画像データが表す画像から検出され、個人IDと関連付けて顔データベースに登録されている。主人公指定アイコン304は、例えば顔データベースに登録された人物の顔画像のうち、ユーザによって選択された人物の顔画像や後述の方法で決定された人物の顔画像である。なお、主人公は図4に示す手順で自動設定されることもできる。
見開き数ボックス305は、ユーザからのアルバムの見開き数の設定を受け付ける。ユーザは、キーボード106を介して見開き数ボックス305に直接数字を入力するか、マウス107を用いてリストから見開き数ボックスに数字を入力する。
テンプレート指定アイコン306は、テンプレートのテイスト(ポップ調やシック調等)別にイラスト画像を表示する。テンプレート指定アイコン306には、複数のテンプレートアイコンが並んで表示され、ユーザがマウス107によってクリックすることで、ユーザはそのなかのいずれかのアイコンを選択可能である。そして、選択されたアイコンに対応するテンプレートが、作成対象のアルバムに用いられるテンプレートとして設定される。本実施形態では、テンプレートは、画像データを配置するための画像配置枠(スロット)を有する。そして、テンプレートが有するスロットに、画像データが埋め込まれることで、1つのレイアウト画像が完成する。
モード指定部307は、作成対象のアルバムのモードに対応するアイコンである。なお、アルバムのモードとは、所定のオブジェクトを含む画像を優先してテンプレートにレイアウトするためのモードであり、本実施形態では、「人物」、「動物」、「料理」の3つのモードがある。なお、アルバムのモードは、例えば、アルバムのテーマと言い換えることができる。例えば、「人物」が選択された場合は、人物を含む画像を優先してテンプレートにレイアウトする。また、例えば、「動物」が選択された場合は、動物を含む画像を優先してテンプレートにレイアウトする。また、例えば、「料理」が選択された場合は、料理を含む画像を優先してテンプレートにレイアウトする。なお、上述の3つ以外のオブジェクトが写りこんでいる画像を表わす画像データを優先してテンプレートにレイアウトするためのモードがあっても良い。また、同時に複数のモードが選択されても良い。その場合、選択された複数のモードに対応する複数のオブジェクトの少なくとも1つを含む画像を優先してテンプレートにレイアウトする。ユーザがマウス107によってクリックすることで、ユーザは、各モードに対応する複数のアイコンのなかのいずれかのアイコンを選択可能である。そして、選択されたアイコンに対応するモードが、作成対象のアルバムのモードとして設定される。
なお、アルバムのモードは上述の3つに限定されず、例えば、「建物」、「乗り物」、「花」等、他のモードがあっても良い。
なお、本実施形態では、アルバムのモードを、モード指定部307を介してユーザが選択する形態を説明するが、例えば、アルバム作成アプリのプログラムにより、CPU101が自動でアルバムのモードを選択する形態であっても良い。この場合、例えば、CPU101は、画像取得部205によって取得された画像データ群を解析することにより、当該画像データ群に一番多く含まれるカテゴリのオブジェクトを特定する。そして、CPU101は、特定されたカテゴリに応じたモードを選択する。
チェックボックス308は、ユーザからの画像補正のON/OFFの設定を受け付ける。チェックボックス308にチェックが入った状態は画像補正ONが指定された状態であり、チェックが入っていない状態は画像補正OFFが指定された状態である。なお、UI構成画面301は全ての補正処理についてまとめてON/OFFが設定される構成であるが、個別の補正処理ごとにON/OFFを設定可能とするようにしても良い。OKボタン309は、設定が完了したことをユーザから受け付けるためのボタンである。ユーザによりOKボタン309がマウス107でクリックされると、アルバム作成条件指定部201は、UI構成画面301上で設定されている内容を取得する。そして、アルバム作成条件指定部201は、自動レイアウト処理部219に、取得した設定情報を出力する。その際、パスボックス302に入力されているパスは、画像取得部205に伝えられる。また、主人公指定アイコン304で選択されている主人公の個人IDは、主人公情報入力部209に伝えられる。また、見開き数ボックス305に入力されている見開き数は、見開き数入力部211に伝えられる。また、テンプレート指定アイコン306で選択されているテンプレート情報は、テンプレート設定部214に伝えられる。また、チェックボックス308の画像補正のON/OFF設定は、補正条件入力部216に伝えられる。
リセットボタン310は、UI構成画面301上の各設定情報をリセットするためのボタンである。
なお、UI構成画面301上では、上述した設定以外の設定を実行可能であっても良い。例えば、動画に関する設定や、画像・動画データの取得先の設定等を実行可能であっても良い。
その場合、例えば、サーバ名ボックスや、サーバ選択ボタン、動画使用チェックボックス、対象期間ボックス等がUI構成画面301に含まれる。
サーバ名ボックスは、アルバム作成に利用される画像群を含むサーバ名やSNS名を示す。また、サーバ選択ボタンは、アルバム作成に利用される画像群を含むサーバ名やSNS名を、リスト構成でユーザが選択可能に表示する。そして、ユーザにより選択されたサーバ名やSNS名がサーバ名ボックスに表示される。サーバ名ボックスにサーバ名やSNS名が表示された状態で、OKボタン309がマウス107でクリックされると、指定されたサーバやSNSへのログイン画面が表示される。表示されたログイン画面を介したユーザの操作により、指定されたサーバやSNSへのログインが完了すると、CPU101は、指定されたサーバやSNSからの画像データの取得が可能となる。
動画使用チェックボックスは、パスボックス302に指定のフォルダや、サーバ名ボックスに指定のサーバやSNS上にある動画をアルバム作成に利用するか否かの設定をユーザから受け付ける。動画使用チェックボックスにチェックが入った状態はアルバム作成に利用することが指定された状態であり、チェックが入っていない状態はアルバム作成に利用しないことが指定された状態である。
対象期間ボックスは、アルバム作成の対象となる画像群や動画群の撮影日時期間の条件の設定をユーザから受け付ける。また、対象期間ボックスは、指定された撮影日時期間を表示する。対象期間ボックスに撮影日時期間が表示された状態で、OKボタン309がマウス107でクリックされると、指定された撮影日時期間において生成された画像群や動画群がアルバム作成に利用される対象となって抽出される。
図4は、本実施形態に係るアルバム作成アプリにより実行される自動レイアウト処理を示すフローチャートである。図4に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。図4を参照しながら、自動レイアウトの処理を説明する。以下に示す通り、本実施形態では、アルバムを作成する際に、アルバムを作成するための画像群を撮影時間に応じて分割し、分割して得られた各サブ画像群からページに配置する画像を選択する。
まず、S401では、CPU101は、アルバム作成条件指定部201により、アルバム作成条件を設定する。具体的には例えば、図3に示す画面を介して、ユーザからアルバム作成条件の設定を受け付ける。アルバム作成条件の設定の詳細は、図3を用いた説明にて上述したとおりである。
S402では、CPU101は、動画取得部202によって、検索対象の記憶領域に含まれる動画データを取得する。動画データの取得に関する詳細は、動画取得部202の説明にて上述したとおりである。なお、検索対象の記憶領域は、例えば、図3に示す画面(例えば、サーバ名ボックス)にて設定可能である。検索対象の記憶領域として、例えば、HDD104や、サーバ、SNS等が設定される。CPU101は、S401にて、検索対象の記憶領域を把握できる。
S403では、CPU101は、動画解析部203によって、S402で取得した動画データの解析を行う。動画データの解析に関する詳細は、動画取得部202の説明にて上述したとおりである。
S404では、CPU101は、フレーム取得部204によって、S403で解析した動画データからフレームを切り出して、切り出したフレームを画像データとしてHDD104に保存する。動画データからフレームを切り出す処理の詳細は、フレーム取得部204の説明にて上述したとおりである。
S405では、CPU101は、検索対象の記憶領域に含まれる動画データ全てに対して、S402〜S404の処理が終了したか否かを判定する。終了していない場合(S405でNo)、S402に戻り、まだ処理の対象となっていない動画データが取得される。終了している場合(S405でYes)はS406に移行する。
S406では、CPU101は、画像取得部205により、検索対象の記憶領域に含まれる画像データを取得する。なお、検索対象の記憶領域は、動画データの取得に関する設定と同様、例えば、図3に示す画面(例えば、サーバ名ボックス)にて設定可能である。検索対象の記憶領域として、例えば、HDD104や、サーバ、SNS等が設定される。CPU101は、S401にて、検索対象の記憶領域を把握できる。なお、このとき取得される画像データには、S401〜S405の処理において動画データからフレームが切り出されることで取得された画像データが含まれる。
S407では、CPU101は、画像変換部206によって画像データの変換を行う。画像データの変換の詳細は、画像変換部206の説明にて上述したとおりである。
S408では、CPU101は、画像解析部207によって、S407で変換済みの画像データから特徴量を取得する。特徴量としては、例えば、ピントが挙げられる。ピントの特徴量を取得するためのエッジの検出方法としては、例えば、一般的なソーベルフィルタが用いられる。
ソーベルフィルタでエッジ検出して、エッジの始点と終点の輝度差を始点と終点の距離で割ればエッジの傾き、すなわち輝度勾配が算出可能である。画像中のエッジの平均傾きを算出した結果から、平均傾きが大きい画像は、平均傾きが小さい画像よりもピントが合っているとみなすことができる。そして、傾きに対して異なる値の複数の閾値を設定すれば、どの閾値以上かを判定することにより、ピント量の評価値を出力可能である。
本実施形態では、異なる2つの閾値を予め設定しておき、○△×の3段階により、ピント量を判定する。閾値については、アルバムに採用したいピントの傾きが「○」、許容できるピントの傾きが「△」、許容できない傾きが「×」となるようにして、実験等により予め設定される。なお、閾値の設定は、例えば、アルバム作成アプリの作成元等により提供されても良いし、ユーザインタフェース上で設定可能としても良い。
S409では、CPU101は、画像解析部207によって、S407で変換された画像データに対してオブジェクト検出処理を実行する。まず、CPU101は、S407で変換された画像データが表す画像から人物の顔を検出する。顔検出の処理には、公知の方法を用いることができ、例えば、複数用意した弱識別器から強識別器を作成するAdaboostが用いられる。本実施形態では、Adaboostにより作成した強識別器により人物(オブジェクト)の顔画像が検出される。また、CPU101は、顔画像を抽出すると共に、検出した顔画像の位置の左上座標値と右下座標値を取得する。この2種類の座標を持つことにより、CPU101は、顔画像の位置と顔画像のサイズを取得することが可能となる。なお、CPU101は、Adaboostを用いて顔検出の処理を実行することで、検出したオブジェクトの信頼度の情報も取得することができる。信頼度の詳細については後述する。また、S409では、CPU101は、なお、顔に限らず、犬や猫等の動物、花、料理、建物、置物、乗り物等のオブジェクトを検出対象としてAdaboostによって強識別器を作成しても良い。これにより、CPU101は、顔以外のオブジェクトも検出することが可能となる。本実施形態では、S409では、CPU101は、顔を検出する処理だけでなく、動物と料理を検出する処理を実行する。
S410では、CPU101は、画像解析部207により個人認識処理を実行する。具体的には、CPU101は、S409で抽出した顔画像と、顔辞書データベースに個人ID毎に保存されている代表顔画像との類似性を比較することで、個人認識を実施する。CPU101は、S409で抽出した顔画像と各代表顔画像との類似性を判定し、類似性が閾値以上であり且つ最も類似性が高い代表顔画像のIDを、S409で抽出した顔画像のIDとする。すなわち、類似性が閾値以上であり且つ最も類似性が高い代表顔画像に対応する人物が、S409で抽出した顔画像に対応する人物として特定する。なお、CPU101は、S409で抽出した顔画像と、顔辞書データベースに保存されている全ての代表顔画像との類似性が閾値未満の場合は、抽出した顔画像に新規の個人IDを割り振って、新規の人物として顔辞書データベースに登録する。
S408からS410で取得された、各画像データの画像解析情報500は、各画像データを識別するための画像ID501それぞれに紐づけされてRAM103やHDD104等の記憶領域に記憶される。例えば、図5に示すように、S408で取得された撮影日時情報502とピント判別結果504、S409で検出された顔画像の数506と位置情報507がテーブル形式で記憶される。なお、顔画像の位置情報は、S404で取得された個人ID毎に区別して記憶される。また、1つの画像データが表わす1つの画像には、複数の人物の顔画像が含まれる場合があるが、その場合には、複数の人物の顔画像を含む画像を表す画像データの画像ID501には複数の個人IDが紐づけされる。また、1つの画像に、顔画像が1つも含まれない場合は、顔画像を1つも含まない画像を表す画像データの画像ID501には、個人IDは紐づけされない。なお、本実施形態では、人物の顔画像について、その数と位置とを管理する形態としたが、それ以外のオブジェクト(動物の顔や料理等)の数や位置も管理する形態としても良い。
画像属性503は、各画像データの属性を表す。例えば、ローカルサーバから取得された静止画データである画像データは、「静止画」の属性となる。また、例えば、ローカルサーバから取得された動画データから切り出されて保存された画像データは、「動画」の属性となる。また、例えば、SNSサーバから取得された画像データは、「SNS」の属性となる。このように、属性とは、画像データが静止画データから取得されたか動画データから取得されたかを示す情報であっても良いし、画像データが保存されていた記憶領域(SNSサーバや、HDD104等)を示す情報であっても良い。すなわち、本実施形態において属性とは、画像データの取得元を示す情報とも言える。また、上述した方法以外で属性を区別するものとしてもよい。また例えば、デジタルカメラで写真を撮影することで生成された静止画データから取得された画像データと、スマートデバイスで写真を撮影することで生成された静止画データから取得された画像データなどのように、各属性をさらに詳細に区別してもよい。また、本実施形態では、「SNS」の属性の画像データは、SNSサーバから取得された静止画データである。「SNS」の属性の画像データが、静止画データから取得されたものか、動画データから取得されたものかに応じて詳細に区別されても良い。なお、各画像データの属性は、各画像データが各属性に該当するか否かを示すフラグによって管理されても良い。
オブジェクト分類505は、各画像データが表す画像に含まれるオブジェクトのカテゴリ(種類)及び、カテゴリの信頼度を示す。なお、CPU101は、各画像データが表す画像に含まれるオブジェクトを、例えば、Adaboostによって検知することができる。また、このとき、各画像データが表す画像に含まれるオブジェクトのカテゴリ及び、カテゴリの信頼度も検知される。Adaboostはパターンを判別する弱判別器を連続で接続し、1つの強判別器を形成する。また、アルバム作成アプリは、Adaboostで、所定のカテゴリに対応するパターンと一致する弱判別器を予め学習している。そして、ある画像データにおける所定のカテゴリのオブジェクトの信頼度は、当該所定のカテゴリに対応するパターンと一致する弱判別器を、当該画像データが表す画像が多く含む場合に高くなる。なお、ここでは、Adaboostを用いてオブジェクト検出や信頼度の取得を行う例を説明したが、この形態に限定されない。例えば、Deep Neural NetworkをはじめとするConvolutional Neural Networkを用いてオブジェクト検出や信頼度の取得を行う形態であってもよい。
本実施形態では、「人物」、「動物」、「料理」の3カテゴリ(種類)のオブジェクトが検出されるものとし、オブジェクト分類505には、各画像データが表す画像において検出されたオブジェクトのカテゴリを示す情報が格納されている。すなわち、オブジェクト分類505は、各画像データが表す画像が、いずれのカテゴリのオブジェクトを含むのかを示す情報である。なお、当該情報は、例えばフラグによって管理されていても良い。また、上述したように、検出されるオブジェクトは「人物」、「動物」、「料理」の3カテゴリに限定されないため、オブジェクト分類505には例えば、「花」、「建物」、「置物」、「乗り物」等のカテゴリを示す情報が格納されても良い。
カテゴリの信頼度とは、画像データが表す画像に含まれるオブジェクトが、何のカテゴリである可能性が高いかを示す情報であり、信頼度が高いカテゴリほど、画像データが表す画像に含まれるオブジェクトのカテゴリである可能性が高いことになる。なお、信頼度は、例えば、画像データが表す画像における、各オブジェクトの大きさを示す値であっても良い。この場合例えば、信頼度の大きいカテゴリのオブジェクトのサイズは、信頼度の小さいカテゴリのオブジェクトのサイズより大きいことになる。なお、画像データが表す画像に含まれないオブジェクトに対応するカテゴリの情報は、オブジェクト分類505には格納されない。また、信頼度がより高いカテゴリから順に、オブジェクト分類505におけるTOP1、2、3に格納される。なお、画像データが表す画像に4つ以上のカテゴリのオブジェクトが含まれる場合は、TOP4やTO5等の枠を設けても良い。
S411では、CPU101は、検索対象の記憶領域に含まれる画像データ全てに対してS407からS410の処理が終了したか否かを判定する。終了していない場合(S411でNo)、S406に戻り、まだ処理の対象となっていない画像データが取得される。終了している場合(S411でYes)はS412に移行する。
S412では、CPU101は、画像分類部208によってシーン分割をする。シーン分割とは、S401〜S411にて得られた全画像データを、シーン毎に分割して、複数の画像群として管理することを指す。具体的には、CPU101は、S408で取得済みの撮影日時情報から算出した、各画像データの撮影日時の時間差に基づいて、全画像データを複数の画像群に分割する。なお、以下の説明において、全画像データ(メイン画像群)が分割されて得られる各画像群を、サブ画像群と言う。本実施形態では、例えば、以下に示す方法によって、シーン分割を行う。まず、撮像日時が古い順においてN番目の撮像画像データの撮像日時と(N+1)番目の撮像画像データの撮像日時との差が1日以下であれば、以下の通りである。撮像日時が古い順においてN番目の撮像画像データの撮像日時と(N+1)番目の撮像画像データの撮像日時との差が16時間以上であれば、N番目の撮像画像データと(N+1)番目の撮像画像データとの間にグループの境界を設定する。また、撮像日時が古い順において隣接する撮像画像データ間で撮像日時の差が、どの撮像画像データ間であっても16時間未満であるとする。この場合、1日で撮像した撮像画像データ群において最初に撮像した撮像画像データの撮像日時と最後に撮像した撮像画像データの撮像日時との差が4時間未満であれば、該1日の撮像画像データ群を1つのサブ画像群(グループ)とする。一方、該1日で撮像した撮像画像データ群において最初に撮像した撮像画像データの撮像日時と最後に撮像した撮像画像データの撮像日時との差が4時間以上であったとする。この場合、該1日で撮像した撮像画像データの数が50枚未満(1日で撮像した撮像画像の数が50未満)であれば、該1日の撮像画像データ群を1つのサブ画像群(グループ)とする。このような撮像画像データのグループ分けの一例を図6(A)に示す。図6(A)〜(C)において横軸は撮像日時(左側に向かうほど古く、右側に向かうほど新しい)、縦軸は撮像画像データの数を示す。図6(A)では、撮像画像データ群をグループ601〜608の8個のサブ画像群(グループ)に分割している。図6(A)において矢印はグループの境界を示している。なお、上記のシーン分割方法の説明において使用した撮像日時の差に対する閾値や撮像画像データの数に対する閾値は一例であり、これらの値に限るものではない。なお、分割後の画像群を分割画像群と呼び、1つのシーン毎に1つの分割画像群が設定される。
S413では、CPU101は、画像分類部208により、シーン分類をする。具体的には、CPU101は、S412でシーン分割されることで得られたサブ画像群をシーンの種類毎に得点化して、後述するシーン分類の信頼性が低い場合を除いて、一番得点が高いシーンの種類に、当該サブ画像群を分類する。なお、以下の説明において、S413における得点化をシーン分類得点化という。本実施形態では、シーンの種類として、「旅行」、「日常」、「セレモニー」があるものとし、サブ画像群をこれらのシーンのいずれかに分類する例を説明する。なお、シーン分類得点化には、シーンの各種類に対応する特徴量の情報が格納されたシーン分類テーブルが利用される。
ここで、プログラムに予め格納される、シーン分類テーブルの作成方法について説明する。まず、「旅行」、「日常」、「セレモニー」のシーンに分類されると予め判定された複数の画像データ群がプログラムの設計者によって集められ、集められた画像データ群について、特徴量が取得される。ここで取得される特徴量の例は、例えば撮影期間、撮影枚数、撮影人数である。撮影期間は、各画像データ群において最初に生成された画像データと最後に生成された画像データとの撮影時間差である。撮影枚数は、各画像データ群の枚数である。撮影人数は、各画像データ群が表す各画像に含まれる顔の平均数である。その結果、例えば、旅行シーンであると予め判定された複数の画像データから成る1画像データ群について、撮影期間、撮影枚数、撮影人数の特徴量が取得される。なお、特徴量は撮影期間、撮影枚数、撮影人数に限定されず、他の特徴量が用いられても良いし、その中のいずれかのみが用いられても良い。
そして、上記のような撮影期間、撮影枚数、撮影人数の特徴量の取得が、予め集められた他の画像データ群についても行われる。次に、シーン毎に集められた複数の画像データ群から取得された特徴量に基づいて、撮影期間の平均値と標準偏差、撮影枚数の平均値と標準偏差、1画像あたりの撮影人数の平均値と標準偏差とが求められる。このようにして求められた値と、シーンの各種類とが対応付けられることで、シーンの種類ごとの各平均値と標準偏差を示すシーン分類テーブルが作成される。
本実施形態では、シーン分類テーブルとして、図7に示すテーブル700が利用されるものとする。テーブル700では、シーンID701に対応付けて、撮影期間702、撮影枚数703、撮影人数704それぞれの平均値と標準偏差とが登録されている。CPU101は、テーブル700をROM102やHDD104等の記憶領域にシーン分類処理前に予め記憶しておく。なお、テーブル700は、アルバム作成アプリケーションのプログラムに予め組み込まれていても良いし、アルバム作成アプリケーション外のプログラムに組み込まれていても良い。
ここで、シーン分類得点化について説明する。アルバム作成アプリが起動された後、ユーザがパスボックス302やサーバ名ボックスで指定された画像データ群がS406でシーン分割されることで得られた各サブ画像群に対して、CPU101は、撮影期間、撮影枚数、撮影人数の各特徴量の得点を算出する。CPU101は、各分割分の撮影期間、撮影枚数、撮影人数の得点、及びそれらの平均得点を、図7に示すシーン毎の平均値と標準偏差を用いて式(1)及び(2)より算出する。なお、下式における、所定の種類のシーンに対応する所定の特徴量の平均値および所定の種類のシーンに対応する所定の特徴量の標準偏差は、テーブル700に登録されている。また、特徴量は、撮影期間と撮影枚数、撮影人数の3つの特徴項目について取得される。そのため、特徴項目数は本例では3となる。
まず、CPU101は、式(1)により、サブ画像群の、シーンの各種類および各特徴量毎の得点を取得する。
サブ画像群の、所定の種類のシーンに対応する所定の特徴量の得点=50−|10×(所定の種類のシーンに対応する所定の特徴量の平均値−サブ画像群の所定の特徴量)/所定の種類のシーンに対応する所定の特徴量の標準偏差|・・・(1)
これにより、例えば、サブ画像群において、「旅行」シーンに対応する撮影期間、撮影枚数、撮影人数それぞれの得点が取得される。なお、CPU101は、「旅行」シーンだけでなく、他の各種類のシーンについても得点を取得する。
次に、CPU101は、式(1)により求めた各得点を式(2)により平均化して、サブ画像群の、各種類のシーンに関する得点を取得する。
サブ画像群の、所定の種類のシーンに関する得点=(サブ画像群の、所定の種類のシーンに対応する撮影期間の得点+撮影枚数の得点+撮影人数の得点)/特徴項目数・・・(2)
これにより、例えば、サブ画像群において、「旅行」、「日常」、「セレモニー」の各種類のシーンに関する得点が取得される。なお、CPU101は、シーン分類得点化を、各サブ画像群について行う。
以上によって、各サブ画像群について「旅行」、「日常」、「セレモニー」毎の得点が算出される。そして、CPU101は、得点が1位であるシーンをそのサブ画像群のシーンであると分類する。例えば、図6(A)のシーン分割された後のシーン5に対応するサブ画像群5は、撮影期間が36時間、撮影枚数が300枚、撮影人数が1.7人であったとする。すると、サブ画像群5において、「旅行」に関する得点は45.32、「日常」に関する得点は18.38、「セレモニー」に関する得点は−29.92となり、サブ画像群5は最高得点のシーンである「旅行」に分類される。なお、いずれのサブ画像群がいずれのシーンに分類されているかは識別ができるようにシーンIDで管理される。また、各シーンに関する得点のうち、同点の得点がある場合は、CPU101は、予め定められた優先度に従って、サブ画像群を、同点のシーンのうちいずれかのシーンに分類する。具体的には、CPU101は、サブ画像群を、同点のシーンのうち、優先度の大きいシーンに分類する。なお、例えば、本実施形態では、優先度の大きさは、日常>セレモニー>旅行の順であるものとする。優先度の大きさの順番はこれに限定されるものではなく、例えばユーザが優先度の順番を設定できるようにしてもよい。
S414では、CPU101は、S412で取得された全サブ画像群に対してS413のシーン分類が終了したか否かを判定する。終了していない場合(S414でNo)、S413に戻り、まだシーン分類の対象となっていないサブ画像群に対してシーン分類を行う。終了している場合(S414でYes)、S415に移行する。
S415では、CPU101は、画像得点部210によって主人公設定をする。主人公設定はユーザが指定した画像群に対して実行され、自動と手動の2種類の設定方法のうちいずれかにより行われる。CPU101は、S410で実行された個人認識の結果と、S412で実行されたシーン分割の結果とから、画像データ群に登場する各個人IDの回数、各シーンに登場する各個人IDの回数、各個人IDが登場するシーンの回数等を取得可能である。自動の設定方法が選択された場合、CPU101は、これらの情報に基づいて、ユーザ指定によらず自動で主人公を設定する。本実施形態では、CPU101は、ユーザが指定した画像データ群がシーン毎に複数の分割画像データ群に分割されている場合は、複数のシーンでの登場回数が多い個人IDを主人公IDと設定する。また、CPU101は、画像データ群が単一シーンである場合は、単一シーンでの登場回数が多い個人IDを主人公IDと設定する。また、CPU101は、主人公指定アイコン304がユーザによって指定されている場合は、主人公情報入力部209を介して指定されている個人IDを画像得点部210に伝える。ユーザにより個人IDが指定されている場合は、上記のようにして自動設定された主人公IDは無視され、ユーザにより指定された個人IDを主人公IDとして設定する。なお、この設定を手動設定と呼ぶ。
S416では、CPU101は、画像得点部210により、画像得点化をする。S416における画像得点化とは、画像データ毎に後述の観点で評価した得点を付与する(スコアリング)ことであり、後述の、テンプレートに配置する画像を表す画像データの選択時に参照される。なお、本実施形態では、更に、動画データからフレームが切り出されることで取得された画像データに対しては、動画解析部203で解析された結果も加味して得点を付与する。ここで、図8及び図10を用いて、得点化方法について説明する。
図10は、画像データのレイアウトに使うテンプレート群を示している。テンプレート群に含まれている複数のテンプレートのそれぞれが、各見開きに対応している。テンプレート1001は、1枚のテンプレートであり、メインスロット1002はメインスロットを示し、サブスロット1003と1004とはサブスロットを示す。メインスロット1002とは、テンプレート1001内でメインとなるスロット(画像をレイアウト(配置)する枠)であり、サブスロット1003と1004よりもサイズが大きい。なお、1枚のテンプレートには、それぞれ同一の種類のシーンに分類された画像データが表す画像がレイアウトされても良いし、それぞれ異なる種類のシーンに分類された画像データが表す画像がレイアウトされても良い。S416では、CPU101は、画像得点化処理として、画像データが属する種類のシーンに対応するメインスロット用の得点とサブスロット用の得点の両方を画像データに付与する処理を行う。
画像得点化においては、メインスロットとサブスロットとに採用されるべき画像の特徴量の情報がシーンの種類毎に格納されたスロット特徴テーブルが利用される。
ここで、スロット特徴テーブルの作成方法について説明する。図8(A)は、メインスロットとサブスロットとに採用される画像データの特徴が、「旅行」、「日常」、「セレモニー」の各種類のシーン毎に纏められたテーブルである。まず、各種類のシーンに分類された画像データにおいて、メインスロットに採用されるべき画像特徴に適合すると判定された複数の画像データが、プログラムの設計者によって集められる。また、サブスロットに採用されるべき画像特徴に適合すると判定された複数の画像データが集められる。すなわち、図8(A)に示す特徴に適合する画像データが集められる。そして、画像解析部205により、集められた各画像データにおける顔画像の数、顔画像の位置、顔画像のサイズ等の特徴量が抽出される。そして、抽出された特徴量の平均値と標準偏差とを、各シーン種類および各スロット種類(メインスロットとサブスロット)に対して求めることで、スロット特徴テーブルが作成される。なお、スロット特徴テーブルは、ROM102やHDD104等の記憶領域に、画像得点化前に予め記憶される。なお、スロット特徴テーブルは、アルバム作成アプリケーションのプログラムに予め組み込まれていても良いし、アルバム作成アプリケーション外のプログラムに組み込まれていても良い。
なお、図8(A)に示すように、スロットの種類に応じて、得点化の基準が異なる。例えば、あるサブ画像群のシーン種類が「旅行」である場合、当該サブ画像群に含まれる画像のうち、人物や風景を含む画像は、メインスロットとしての得点が高くなり、顔のアップや横顔を含む画像は、サブスロットとしての得点が高くなる。また、例えば、あるサブ画像群のシーン種類が「日常」である場合、当該サブ画像群に含まれる画像のうち、顔のアップや横顔を含む画像は、メインスロットとしての得点が高くなり、人物や風景を含む画像は、サブスロットとしての得点が高くなる。また、例えば、あるサブ画像群のシーン種類が「セレモニー」である場合、当該サブ画像群に含まれる画像のうち、距離が近い二人の人物を含む画像は、メインスロットとしての得点が高くなり、大人数の人物を含む画像は、サブスロットとしての得点が高くなる。このように、シーン及びスロットの種類に応じて、評価する特徴、言い換えれば、評価基準が異なる。
画像得点化においては、CPU101は、画像データを、下式を用いて、当該画像データが属する種類のシーンに対応するテンプレートのスロット毎に得点化する。なお、ユーザが指定した画像データ群の各画像データがどの種類のシーンに属すかはS413のシーン分類の結果から知ることができる。また、下式における、所定の種類のシーン及び所定のスロットに対応する所定の特徴量の平均値および所定の種類のシーン及び所定のスロットに対応する所定の特徴量の標準偏差は、スロット特徴テーブルに登録されている。また、特徴量は、主人公IDの顔画像数、顔画像の位置、顔画像のサイズの3つの特徴項目について取得される。そのため、特徴項目数は本例では3となる。
画像データの、所定のスロットに対応する所定の特徴量に関する得点=50−|10×(画像データが属する種類のシーン及び所定のスロットに対応する所定の特徴量の平均値−画像データの所定の特徴量)/画像データが属する種類のシーン及び所定のスロットに対応する所定の特徴量の標準偏差|・・・(3)
これにより、例えば、「旅行」シーンに分類される画像データの、メインスロットに対応する「主人公IDの顔数」の得点が取得される。なお、CPU101は、メインスロットだけでなく、サブスロットに対応する特徴量についても得点を取得する。また、CPU101は、「主人公IDの顔画像数」だけでなく、「顔画像の位置」、「顔画像のサイズ」に対応する特徴量についても得点を取得する。
次に、CPU101は、式(3)により求めた各得点を式(4)により平均化して、画像データの、所定のスロットに関する得点を取得する。
画像データの所定のスロットに関する得点=(画像データが属する種類のシーン及び所定のスロットに対応する顔数の得点+顔位置の得点+顔サイズの得点)/特徴項目数・・・(4)
これにより、メインスロット用とサブスロット用の両方に関する得点化が画像データについて実行される。
本実施形態では、更に、CPU101は、上述のようにして算出された得点に対して、アルバム作成条件指定部201で指定されたモードに基づいて、点数を加算する。具体的には例えば、CPU101は、モード指定部307によって指定されたモードと、各画像データのオブジェクト分類結果に応じて点数を加算する。CPU101は、例えば、アルバムのモードが「人物」と設定されていた場合は、図5のオブジェクト分類505に、「人物」のカテゴリが含まれていれば得点を加算し、「人物」のカテゴリが含まれていなければ得点を加算しない。なお、このとき加算される得点は、「人物」のカテゴリの信頼度や、信頼度の順位に応じて変更されても良い。「動物」や「料理」のモードについても、「人物」のモードと同様に得点を加算する。なお、複数のモードが指定されていた場合は、CPU101は、設定されているモードそれぞれに関して得点を加算する。すなわち、例えば、CPU101は、アルバムのモードが「人物」及び「動物」と設定されていれば、オブジェクト分類505に、「人物」又は/及び「動物」のカテゴリが含まれている場合に、得点を加算する。なお、CPU101は、オブジェクト分類505に、「人物」及び「動物」のカテゴリが含まれていれば、「人物」のカテゴリが含まれている場合に加算される得点と「動物」のカテゴリが含まれている場合に加算される得点の両方を加算する。
なお、CPU101は、画像得点化を、ユーザが指定した画像データ群における各画像データについて行う。画像得点化によって付加された得点が後段のS423での画像選択処理における選択基準となる。上述のように、同じ画像データであっても、分類されるシーンによって選択基準は異なることになる。なお、アルバムに使う画像はピントが合っている方が好ましいので、図5に示すテーブルにおいてピントの特徴量が「○」である画像IDの画像に対しては所定の得点を加えるようにしてもよい。また、画素数が高い画像は、アルバムにレイアウトした際にジャギーが少ないので、画素数が高い画像を表す画像データに対しては所定の得点を加えるようにしてもよい。このような形態とすることで、CPU101は、後述の画像選択処理において、アルバムのモードに対応するカテゴリのオブジェクトが含まれる画像を表わす画像データを、当該オブジェクトが含まれない画像を表わす画像データより優先して選択することができる。
図8(B)は、レイアウト得点化による得点結果の一例を示している。表800は、各画像ID801の画像データに対して、メインスロットとサブスロットのそれぞれについて得点化がされた結果を示しており、各画像ID801の画像に対して得点802が登録されている。例えば、図8(B)では、画像ID1は、メインスロット用として20点が付与され、画像ID2は、メインスロット用として45点が付与されている。これは、つまり、メインスロット用としては、画像ID2の方がユーザの判断基準により近いということを表している。
また、本実施形態では、CPU101は、上述のようにして得点が設定された場合、動画データから切り出されることで取得された画像データのメインスロット用とサブスロット用の両得点に対して、動画解析部203による解析結果に応じた得点を加算する。具体的には、動画解析部203によって実行された得点化処理(オブジェクト検出、サイズ特定、笑顔判定、目瞑り判定、ブレボケ判定、明るさ判定)に応じた得点を加算する。なお、CPU101は、得点化が行われた画像データのうち、いずれの画像データが、動画データから切り出されることで取得された画像データなのかを、図5のテーブルの画像属性503を参照することで特定することができる。
なお、動画データから切り出すことで取得した画像データに加点するだけでは、当該画像データの点数は、静止画データから取得した画像データよりも、一律で高くなってしまう可能性が高い。そのため、CPU101は、例えば、動画データから切り出すことで取得した各画像データに加算された各得点の平均値を、動画データから切り出すことで取得した全画像データから減算する、又は、静止画データから取得した全画像データに加算しても良い。このような形態とすることで、動画データから切り出すことで取得した画像データのうち、加算された得点が高い画像データについては、静止画データから取得した画像データに加算された得点より多くの得点が加算される。すなわち、動画データから切り出すことで取得した画像データのうち、加算された得点が高い画像データがより優先的に選択されるように、得点化が行われる。
なお、画像得点部210による評価に用いられる評価軸と、動画解析部203による評価に用いられる得点軸は異なる。具体的には例えば、評価に用いられる特徴量がそれぞれ異なる。そのためこのように、動画解析部203による解析結果に応じた得点を加算する形態とすることで、動画データから取得された画像データならではの良し悪しを、得点化において考慮することができる。すなわち、画像データの取得元の違いを評価に反映させることができる。
本実施形態では、画像得点部210が実行する評価は、画像取得部205が取得した全ての画像データに対して行われた。そして、画像取得部205が取得した画像データのうち、動画データから取得した画像データに対しては、動画用の評価軸に基づく(動画解析部203による解析結果に基づく)得点が加算された。しかし、この形態に限定されず、例えば動画データから取得した画像データと、静止画データから取得した画像データとで、評価軸を完全に切り分けても良い。すなわち、画像得点部210は、静止画データから取得した画像データに対しては、画像得点部210の説明にて上述した評価軸のみで得点化を行い、静止画データから取得した画像データに対しては、動画解析部203の説明にて上述した評価軸のみで得点化しても良い。
S417では、CPU101は、画像取得部205により取得された全ての画像データに対してS416の画像得点化が終了したか否かを判定する。終了していない場合(S417でNo)、S416に戻り、まだ処理の対象となっていない画像データに対して画像得点化が実行される。終了している場合(S417でYes)、S418に移行する。
本実施形態では、CPU101は、画像レイアウト部215により、複数のシーンのそれぞれに含まれる画像データが表すが図尾を、複数のテンプレート(複数の見開き)のそれぞれにレイアウトして、複数のレイアウト画像を作成する。そのため、複数のシーンの数と、複数のテンプレートの数(所定数の見開き数)が一致する必要がある。
そこで、S418では、CPU101は、S412のシーン分割により得られたシーン数(サブ画像群の数)が見開き数入力部211により入力された見開き数(見開き数ボックス305に入力されている見開き数)と同じか否かを判定する。同じでない場合(S418でNo)、S419に移行する。同じ場合(S418でYes)、S422に移行する。例えば、図6(A)のように、シーン数が8であり、見開き数入力部211の入力数が8であればS422に移行する。
S419では、CPU101は、S412のシーン分割により得られたシーン数が見開き数入力部211により入力された見開き数より少ないか否かを、見開き割当部212により判定する。シーン数が見開き数より少なくない(多い)場合(S419でNo)、S421に移行する。シーン数が見開き数より少ない場合(S419でYes)はS420に移行する。例えば、図6(A)ように、シーン数が8であり、見開き数入力部211の入力数が10であれば、シーン数が見開き数より少ないため、S420に移行する。
S420では、CPU101は、見開き割当部212により、サブシーン分割をする。サブシーン分割とは、シーン分割数<見開き数の場合に、シーン分割により得られた各シーンを更に細分割することをいう。ここでは、図6(A)のようにシーン分割数が8であり、それに対して指定見開き数が10である場合について説明する。図6(B)では、図6(A)をサブシーン分割した結果である。ここでは、分割の間隔をより細かく設定し、破線矢印の箇所で分割したことで、分割数を10にしている。
分割の基準について説明する。図6(A)の分割の中で画像データ数が多い分割箇所を探す。ここでは、分割数を8から10に2箇所増やす為、画像データ数が多い2箇所を決める。即ち、再分割すべきシーンを、最も多くの画像データを含む分割画像データ群に対応するシーンから順に指定する。画像データ数が同数の分割画像データ群に対応するシーンについては、対応する分割画像データ群に含まれる画像データ間の撮影日時の差の最大値が大きい方のシーンを選択する。それでも選択できない場合には、例えばより早い時間に生成された画像データを含む分割画像データ群に対応するシーンを優先的に再分割してもよい。
図6(A)では、対応する分割画像データ群に含まれる画像データの数が多いシーンは、多い方から順にシーン5、シーン1、シーン2である。シーン1と2は同じデータ数だが、シーン2の方が、対応する分割画像データ群において最初に生成された画像データから最後に生成された画像データの時間差が大きい為、シーン2を分割対象とする。即ち、図6(A)では、シーン5とシーン2をそれぞれ分割する。
まずシーン2の分割を説明する。シーン2には画像データ数の山が2つあり、この2つの山に含まれる画像データは、山ごとに撮影日が違う。そこで撮影日が切り替わる部分に対応する図6(B)の太矢印の箇所で分割する。次にシーン5の分割を説明する。シーン5には画像データ数の山が3つあり、シーン2と同様に、この3つの山に含まれる画像データは、山ごとに撮影日が違う。シーン5では、撮影日が変わる箇所が2箇所あるが、この場合、分割後のデータ数差が小さくなるように、撮影日単位で分割する。即ち、ここでは図6(B)の太矢印の箇所で分割する。
以上により分割数すなわちシーン数を8から10にする。具体的にいえば、シーンの再分割では、選択したシーンに撮影日の異なる画像データが含まれていれば、撮影日の相違するそれぞれの画像データ群を新たなシーンとするよう分割される。そして、撮影日が3日以上にわたるならば、分割された各シーンに含まれる画像データの数の差が最小になり、且つ同一撮影日の画像が同一シーンに含まれるよう分割される。なお、ここでは撮影日の違う箇所で分割する例を説明したが、分割対象のシーンにおける画像データの撮影日が単一日であった場合は、単一日の中で撮影時刻の時間差が最大となる箇所で分割する。以上の手順によって見開き数にシーン数を一致させる。なお、分割により生成されたシーンについては、改めて分類してもよいし、分割前のシーンの分類を引き継いでもよい。
S421では、CPU101は、見開き割当部212によりシーン統合をする。シーン統合とは、シーン分割数>アルバムの見開き数の場合、分割されたシーン(サブ画像群)を統合することを表す。具体的には、CPU101は、シーン数と見開き数が一致するように、シーン統合をする。ここでは、図6(A)のようにシーン分割数が8であり、それに対して指定見開き数が6の場合を例として説明する。図6(C)は図6(A)をシーン統合した結果である。破線の箇所の前後のシーンを統合したことで、分割数を6にしている。
統合の基準について説明する。まず、CPU101は、分割された各シーンの中で画像データ数が少ないシーンを検出する。ここでは、シーン数を8から6に減らす為、画像データ数が少ない2つのシーンを検出する。図6(A)では、対応する分割画像データ群に含まれる画像データの数が多いシーンは、少ない方から順にシーン8、3、7である。なお、シーン3と7は同じデータ数である。
次に、CPU101は、対応する分割画像データ群に含まれる画像データ数が最も少ないシーン8を統合対象とする。次に、シーン3とシーン7は、対応する分割画像データ群に含まれる画像データ数は同じであるので、いずれを統合対象とするか選択する。ここでは、シーン7に隣接するシーン8が統合対象であるので(シーン7とシーン8は統合されるため)、シーン3を統合対象とする。
次に、CPU101は、統合対象のサブ画像データ群を、対応する分割画像データ群に含まれる画像データの撮影日時が前のシーンに統合するか、撮影日時が後のシーンに統合するかを決定する。このとき、CPU101は、統合対象のシーンと隣接する2つのシーンのうち、対応する分割画像データ群に含まれる画像データの撮影日時の時間差が小さい方のシーンを統合の相手とする。そのため、図6(A)では、シーン3について、それに隣接するシーン2、4のいずれかを統合の相手とする。ここで、シーン3とその前後のシーン2と4それぞれとの、対応する分割画像データ群に含まれる画像の撮影日時の時間差を比較すると、シーン3とシーン4との時間差の方が小さい。そのため、CPU101は、シーン3をシーン4に統合すると決定する。即ち、ここでは図6(C)の破線の箇所で統合する。
CPU101は、シーン8のように隣接するシーンが1つしかない場合には、唯一の隣接シーンを統合の相手とする。
こうして図6(C)の破線箇所の前後のシーンでシーン統合する。なお、シーン統合は、例えばシーンに含まれる画像ファイルを示す情報を、統合後のシーンに応じて更新することを含む。なお、本実施形態では、撮影時間の差が小さいサブ画像群同士を統合することにしたが、これに限定されるものではない。例えば、統合対象のサブ画像群を撮影枚数が少ないサブ画像群に統合するようにしてもよい。
S422では、CPU101は、見開き割当部212により見開き割当をする。S418〜S421によって、サブ画像群の数と指定見開き数は同じになっている。本実施形態では、撮影日時が先頭のサブ画像群から見開きの先頭に割り当てる。すなわち、撮影日時順にサブ画像群をアルバムの各見開きのページに割当てる。これにより、撮影日時順にサブ画像群が並んだアルバムを作成することができる。なお、後述する通り、1つの見開きページ内では、画像は撮影日時に並んでいなくてもよい。
S423では、CPU101は、画像選択部213により画像選択を実行する。ここでは、ある見開きに割り当てられた分割画像データ群から画像データを4枚選択する例を、図9を参照しながら説明する。なお、見開きとは、2ページ分の領域であるが、最初の見開き及び最後の見開きは、1ページ分の領域となる。
図9(A)は見開きに割り当てられた分割画像データ群のうち、撮影日時が一番早い画像データと一番遅い画像データとの撮影日時の時間差(分割撮影期間)、言い換えれば、分割画像データ群の撮影期間を示している。なお、ここでは、画像データの選択を、メインスロット、サブスロットの順で行う。ここでは、見開きに対応するテンプレートには1枚のメインスロット1002が含まれるものとする。そのため、1枚目に選択される画像データは、メインスロット用の画像データである。CPU101は、メインスロット用の画像データとして、図9(B)に示す分割撮影期間に対応する画像データのうち、S416で付加したメインスロット用の得点が最高点の画像データ(1)を選択する。
2枚目以降に選択される画像データは、サブスロット用の画像データである。2枚目以降の画像データの選択は分割撮影期間の一部に集中しないように、以下説明するような方法により行われる。まず、CPU101は、図9(C)に示すように、分割撮影期間を2分割する。次にCPU101は、図9(D)に示すように、1枚目の画像データが選ばれていない分割撮影期間(図中、実線で示している期間)に生成された画像データから2枚目の画像データを選択する。なお、2枚目の画像データとしては、1枚目の画像データが選ばれていない分割撮影期間に生成された画像データのうちサブスロット用の得点が最高点の画像データ(2)を選択する。次にCPU101は、図9(E)に示すように図9(D)に示す各分割撮影期間を2分割する。そして、CPU101は、図9(F)に示すように1枚目の画像データと2枚目の画像データがいずれも選ばれていない分割撮影期間(図中、実線で示している期間)に生成された画像データから3枚目の画像データを選択する。なお、3枚目の画像データとしては、1枚目の画像データと2枚目の画像データがいずれも選ばれていない分割撮影期間に生成された画像データのうちサブスロット用の得点が最高点の画像データ(3)を選択する。そして、4枚目の画像データとしては、1枚目、2枚目及び3枚目の画像データがいずれも選ばれていない分割撮影期間に生成された画像データのうちサブスロット用の得点が最高点の画像データを選択する。
次に、1枚目、2枚目及び3枚目の画像データがいずれも選ばれていない分割撮影期間に生成された画像が存在せず、当該分割撮影期間に生成された画像データから4枚目の画像データを選択できない例を説明する。ここで、図9(G)に示すように、まだ画像データが選ばれていない分割撮影期間(図中、斜線で示している期間)に生成された画像データは存在しないものとする。その場合、CPU101は、図9(H)に示すように各分割撮影期間をさらに2分割する。次にCPU101は、図9(I)に示すように、期間内に生成された画像データがないと認識された分割撮影期間以外で、且つ未だ画像データが選ばれていない分割撮影期間(図中、実線で示している期間)に生成された画像から4枚目の画像データを選択する。なお、CPU101は、4枚目の画像データとしては、当該分割撮影期間に生成された画像データのうちサブスロット用の最高点の画像データ(4)を選択する。
図11は、画像選択部213の構成をより詳細に説明する図である。画像選択部213は、処理対象の見開きに割り当てられたサブ画像群から画像データを選択する。
枚数設定部1101は、処理対象の見開きに割り当てられたサブ画像群から選択する画像データの枚数を設定する。いかえれば、処理対象の見開きのレイアウト画像に配置する画像数を設定する。なお、このとき設定される枚数は、例えば、例えば図3に示すような設定画面を介してユーザが入力を行うことで設定された数でも良いし、各見開きに対して予め設定された数であっても良い。
画像群取得部1102は、画像取得部205が取得した画像群から、処理対象の見開きに割り当てられるサブ画像群を取得する。また、画像群取得部1102は、各画像データの撮影日時情報、画像種類の情報、オブジェクト分類の情報、メインスロット用得点、及びサブスロット用得点を取得する。画像種類の情報は、図5の画像属性503を参照することで取得できる。また、オブジェクト分類の情報は、図5のオブジェクト分類505を参照することで取得できる。
ループカウンタ1103は、画像群取得部1102によって取得されたサブ画像群から画像データを選択する処理(画像選択処理)を実行した回数を管理する。なお、ループカウンタ1103がカウントする画像選択処理は、具体的には、S1205〜S1218の処理であり、その詳細は後述する。管理された回数は、利用する得点軸の判定、及び処理対象の見開きに割り当てられたサブ画像群の撮影期間をいくつの撮影区間に分割するかを設定する際に利用される。なお、本実施形態では、1回のループ毎に、テンプレートに配置される画像が1枚選択されるため、ループカウンタ1103がカウントする回数は、選択済み画像データの枚数に等しい。
得点軸設定部1104は、ループカウンタ1103でカウントされた処理回数に応じて、画像選択処理で利用する得点軸を設定する。「利用する得点軸を設定する」とは、「いずれの得点軸で採点された得点を利用するかを設定する」ことを指し、ここでは、メインスロット用得点軸(メインスロット用評価基準)、サブスロット用得点軸(サブスロット用評価基準)のどちらかを設定する。なお、ループカウンタ1103でカウントされた処理回数が0の場合は、メインスロットに配置する画像(メイン画像)を選択するため、メインスロット用得点軸によって採点された得点を参照する。一方、ループカウンタ1103でカウントされた処理回数が1以上の場合は、サブスロットに配置する画像(サブ画像)を選択するため、サブスロット用得点軸によって採点された得点を参照する。なお、メインスロットが複数ある場合は、ループカウンタ1103でカウントされた処理回数が1以上であっても、メインスロット用得点軸によって採点された得点を参照しても良い。また、得点軸設定部1104は、例えば、テンプレートが有するスロットのうちのいずれかのスロットに配置される画像データとして既に選択された画像データ(選択済み画像データ)の数によって、設定する得点軸を変更しても良い。その場合例えば、選択済み画像データの数が0の場合は、メインスロットに配置する画像(メイン画像)を選択するため、メインスロット用得点軸によって採点された得点を参照する。一方、選択済み画像データの数が1以上の場合は、サブスロットに配置する画像(サブ画像)を選択するため、サブスロット用得点軸によって採点された得点を参照する。なお、この形態でも、メインスロットが複数ある場合は、選択済み画像データの数が1以上であっても、メインスロット用得点軸によって採点された得点を参照しても良い。
分割部1105は、画像群取得部1102によって取得されたサブ画像群の撮影期間を所定の数に分割する。まず、画像群取得部1102により取得されたサブ画像群の撮影時間情報から、処理対象の見開きに割り当てられたサブ画像群の撮影開始時間と撮影終了時間を特定し、撮影期間を算出する。すなわち、サブ画像群に含まれる画像データのうち最も早く生成された画像データの撮影時間および最も遅く生成された画像データの撮影時間を特定し、撮影期間を算出する。次に、ループカウンタ1103でカウントされた処理回数に基づいて、算出された撮影期間を複数の区間に分割する。本実施形態では、分割部1105は、ループカウンタ1103でカウントされた処理回数をCとしたとき、撮影区間を、2^C個の区間に略均等に分割するものとする。なお、この形態に限定されず、例えば、撮影区間を、C個の区間に略均等に分割しても良い。
画像属性設定部1106は、ループカウンタ1103でカウントされた処理回数に応じて、画像選択処理において選択される画像データの属性を設定する。なお、本実施形態では、少なくとも1回の画像選択処理においては、静止画データから取得された画像データより、動画データから取得された画像データを優先的に選択するものとする。なお、ローカルサーバの静止画データから取得された画像データは、属性が「静止画」である画像データであり、ローカルサーバの動画データから取得された画像データは属性が「動画」である画像データである。これにより、アルバムに多様な画像を配置することができる。また、SNSサーバにアップロードされている画像データ(属性が「SNS」である画像データ)は、ユーザにより意図的に選択されてアップロードされた画像データであり、ユーザが気に入っている画像データである可能性が高い。そのため、本実施形態では、少なくとも1回の画像選択処理においては、属性が「静止画」である画像データより、属性が「SNS」である画像データを優先的に選択するものとする。そこで、本実施形態では、画像属性設定部1106は、ループカウンタ1103でカウントされた処理回数が0の場合は、「SNS」を指定属性とし、属性が「SNS」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が1の場合は、「動画」を指定属性とし、属性が「動画」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が2以上の場合は、「静止画」を指定属性とし、属性が「静止画」である画像データから画像データが選択されるように設定する。このような形態とすることで、各スロットに配置される画像データの属性を制御することができる。また、本実施形態では、「SNS」や「動画」の属性の画像データが、「静止画」の属性の画像データより先に選択される。そのため、テンプレートに配置される画像が少ない場合等にも、より確実に、「SNS」や「動画」の属性の画像データが表わす画像をテンプレートに配置することができる。なお、例えば、ループカウンタ1103でカウントされた処理回数が2以上の場合は、指定属性を設定しない形態であっても良い。また、画像選択処理において選択される画像データの属性の設定は、例えば、画像選択処理において既に選択されている画像データの枚数に応じて行われても良い。例えばその場合、画像属性設定部1106は、画像選択処理において既に選択されている画像データが0の場合は、「SNS」を指定属性とし、属性が「SNS」である画像データから画像データが選択されるように設定する。そして、画像選択処理において既に選択されている画像データが1の場合は、「動画」を指定属性とし、属性が「動画」である画像データから画像データが選択されるように設定する。そして、画像選択処理において既に選択されている画像データが2以上の場合は、「静止画」を指定属性とし、属性が「静止画」である画像データから画像データが選択されるように設定する。なお、例えば、画像選択処理において既に選択されている画像データが2以上の場合は、指定属性を設定しない形態であっても良い。
なお、ループカウンタ1103でカウントされた処理回数や、選択済み画像データの枚数に応じた属性は、上述の形態に限定されない。上述では、「SNS」、「動画」、「静止画」の順で設定されたが、例えば、「動画」、「SNS」、「静止画」の順で設定されても良い。また、属性を指定しない設定があっても良い。その場合、指定属性は「なし」となり、いずれの属性の画像データが選択されても良いように設定される。すなわち、指定属性に応じず、指定オブジェクトの設定や得点に応じて画像データが選択されるように設定される。
また、上述したように、例えば、「SNS」の属性の画像データが、静止画データから取得されたもの(属性が「静止画」)か、動画データから取得されたもの(属性が「動画」)かに応じて詳細に区別される形態もある。その場合、画像属性設定部1106は、ループカウンタ1103でカウントされた処理回数が0の場合は、「SNS」及び「動画」を指定属性とし、属性が「SNS」且つ「動画」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が1の場合は、「SNS」及び「静止画」を指定属性とし、属性が「SNS」且つ「静止画」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が2の場合は、「ローカル」及び「動画」を指定属性とし、属性が「ローカル」且つ「動画」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が3以上の場合は、「ローカル」及び「静止画」を指定属性とし、属性が「ローカル」且つ「静止画」である画像データから画像データが選択されるように設定する。このように、SNSサーバから取得される画像データより、ローカルサーバから取得される画像データを優先して選択する形態としても良い。
区間情報設定部1107は、画像群取得部1102によって取得されたサブ画像群に含まれる画像データを、分割部1105で分割された区間ごとにグループ分けして、各区間において生成された画像データの撮影情報、得点等の情報を取得する。
モード設定部1108は、アルバム作成条件指定部201で指定された、アルバムのモード(「人物」、「動物」、「料理」のいずれか)を設定する。モード設定部1108は、設定されたモードに対応するオブジェクトを含む画像がテンプレートに配置されるように制御する。
画像選択部1109は、得点軸設定部1104で設定された得点軸と、モード設定部1108で設定されたモードと、区間情報設定部1107で管理された、各区間における画像データの得点とに基づいて、画像選択処理を実行する。具体的には、画像選択部1109は、各区間における複数の画像データに含まれ、指定オブジェクトを含む画像を表し、且つ指定属性である画像データのうち、得点が一番高い画像データを1枚選択する。指定オブジェクトは、得点だけに依存せずに画像データを選択するために設定され、指定オブジェクトが設定されている場合、以降の画像選択処理では、指定オブジェクトを含む画像を表す画像データが選択されることになる。例えば、指定オブジェクトが「動物」のカテゴリのオブジェクトである場合、以降の画像選択処理では、「動物」のカテゴリのオブジェクトを含む画像を表す画像データが選択される。なお、複数のオブジェクトを指定オブジェクトとして設定可能である。なお、画像選択部1109は、選択済み画像データは新たに選択しない。言いかえれば、画像選択部1109は、選択済み画像データ以外の画像データを新たに選択する。
なお、このとき参照される得点は、得点軸設定部1104によって設定された得点軸によって採点された得点である。図9を用いて説明した通り、画像が1枚もない区間からは画像データは選択されない。なお、本実施形態では、指定オブジェクトを含む画像を表し、且つ指定属性である画像データのうち、一番得点の高い画像データを各区間から1枚選択するものとしたが、この形態に限定されない。例えば、指定オブジェクトを含む画像を表し、且つ指定属性である画像データのうち、得点が上位の画像データを複数枚ずつ各区間から選択するようにしてもよい。なお、画像選択部1109は、指定オブジェクトに対応するカテゴリをオブジェクト分類505のTOP3までに含む画像データを、指定オブジェクトを含む画像を表す画像データとしてみなす。なお、なお、指定オブジェクトに対応するカテゴリをオブジェクト分類505のTOP3までに含んでいても、当該カテゴリの信頼度が閾値以下の場合は、指定オブジェクトを含む画像を表す画像データとしてみなさなくても良い。
類似判定部1110は、画像選択部1109によって選択された画像データが表す画像が、テンプレートに配置する画像を表わす画像データとして既に選択されている画像データが表す画像と類似しているか否かの判定を行う。類似判定部1110は、類似度が閾値以上であれば、類似していると判定し、閾値未満であれば、類似していないと判定する。類似していないと判定された画像データを保持される、類似していると判定された判定は破棄される。類似判定部1110は、例えば、パターンマッチングやSHIFT法等の公知の方法で、画像データが表す画像間の類似度を取得することができる。例えば、画像データが表す画像間の類似度が0〜100のレンジで出力される場合には、類似度が100に近いほど、両者は似ているとする。そのため、画像データが表す画像間の類似度が判定閾値以上であれば両者が類似していると判定し、画像データが表す画像間の類似度が判定閾値未満であれば両者が類似していないと判定する。なお、類似判定に用いられる判定閾値は、比較対象の画像を表す画像データの撮影時間の差に応じて変更されても良い。例えば、連写などにより撮影時間差が短い場合(例えば15秒以内)は、判定閾値が低く(例えば、60に)設定され、それ以外は判定閾値が高く(例えば80に)設定されても良い。
統合部1111は、類似判定部1110で非類似と判定された画像を表す画像データから、テンプレートに配置される画像を表す画像データを特定する。具体的には、統合部1111は、類似判定部1110で非類似と判定された画像を表す画像データのうち、得点が一番高い画像データを選択して、テンプレートに配置される画像を表す画像データとして特定する。なお、非類似と判定された画像データが1つである場合は、当該1つの画像データが選択される。なお、この形態に限定されるものではなく、例えば、選択済み画像データを含む区間に隣接していない区間から画像データを選択する形態でも良い。
画像管理部1112は、統合部1111でテンプレートに配置される画像を表す画像データとして特定された画像データを選択済み画像データとして管理する。また、画像管理部1112は、選択済み画像データの数が、枚数設定部1101で設定された枚数(必要枚数)に達したか否かを判定する。なお、画像管理部1112が管理する選択済み画像データの数が必要枚数に到達するまで、画像選択処理が繰り返される。なお、このとき、選択済み画像データが再び選択されないように制御される。
ここでは、メイン画像として選択される画像データとサブ画像として選択される画像データが、同じオブジェクトを含む例を説明したが、それぞれ異なるオブジェクトを含む形態であっても良い。例えば、ループカウントが0の時はメイン画像が選択されるため、ループカウントが0の時とそれ以外の時で、指定オブジェクトを変更しても良い。このような形態とすることにより、メイン画像として選択される画像データとサブ画像として選択される画像データがそれぞれ異なるオブジェクトを含むことになる。
図12は、S423の画像選択処理の詳細を示すフローチャートである。図12に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。図12のフローチャートでは、処理対象の1つの見開きに割り当てられたサブ画像群から画像データが選択される。そのため、アルバムが複数の見開きから構成される場合、図12のフローチャートに示す処理は見開きの数に対応する回数実行されることになる。
S1201では、CPU101は、枚数設定部1101により、処理対象の見開きに割り当てられたサブ画像群から選択する画像データの枚数を設定する。この処理の詳細は、枚数設定部1101の説明にて上述したとおりである。
S1202では、CPU101は、画像群取得部1102により、画像取得部205が取得した画像群から、処理対象の見開きに割り当てられるサブ画像群を取得する。この処理の詳細は、画像群取得部1102の説明にて上述したとおりである。
S1203では、CPU101は、モード設定部1108により、アルバムのモードを設定する。この処理の詳細は、モード設定部1108の説明にて上述したとおりである。なお、S1219の処理が行われた場合は、CPU101は、アルバムのモードをS1219で選択されたモードに切り替えて、以降の処理を行う。
S1204では、CPU101は、ループカウンタ1103により、S1205の画像選択処理を実行した回数をカウントする。初期状態では、画像選択処理が実行されていないので、ループカウンタ1103によるカウント数は0となる。なお、本実施形態では、ループカウンタ1103によるカウント数が0の場合は、以降の画像選択処理においてメイン画像が選択され、ループカウンタ1103によるカウント数が1以上の場合は、以降の画像選択処理においてサブ画像が選択される。
S1205では、CPU101は、ループカウンタ1103によりカウントしているカウント数に応じて、以降の画像選択処理で利用する得点軸を得点軸設定部1104により設定する。この処理の詳細は、得点軸設定部1104の説明にて上述したとおりである。
S1206では、CPU101は、ループカウンタ1103によりカウントしているカウント数に応じて、以降の画像選択処理において選択される画像データの属性を画像属性設定部1106により設定する。この処理の詳細は、画像属性設定部1106の説明にて上述したとおりである。
S1207では、CPU101は、画像群取得部1102によって取得されたサブ画像群の撮影期間を分割部1105により所定の数に分割する。この処理の詳細は、分割部1105の説明にて上述した通りである。
S1208では、CPU101は、区間情報設定部1107により、画像群取得部1102によって取得されたサブ画像群に含まれる画像データを、分割部1105によりサブ画像群の撮影期間が分割されることで管理されている区間ごとにグループ分けする。そして、CPU101は、各区間において生成された画像データの撮影情報、得点等の情報を取得する。
S1209では、CPU101は、分割部1105によりサブ画像群の撮影期間が分割されることで管理されている区間のうち、着目している区間において生成された画像データが選択済みか否かを判定する。着目している区間において生成された画像データが選択済みであれば、S1216へ進む。着目している区間において生成された画像データが未選択であれば、S1210に進む。なお、1回目のループでは、サブ画像群の撮影期間が分割されていないため、着目している区間は、サブ画像群の撮影期間全体である。
S1210では、CPU101は、指定オブジェクトが設定されているか否かを判定する。例えば、S1222における指定オブジェクトの更新処理によって、指定オブジェクトが「なし」に変更される場合がある。そのため、CPU101は、指定オブジェクトが「なし」に変更されており、指定オブジェクトが設定されていない場合は、S1213に進み、指定オブジェクトが「なし」に変更されておらず、指定オブジェクトが設定されている場合は、S1211に進む。
S1211では、CPU101は、着目している区間において生成された画像データのなかに、指定オブジェクトを含む画像を表わし、且つ指定属性である画像データが有るか否かを判定する。なお、CPU101は、着目している区間において生成された各画像データの画像解析情報500を参照することで、S1211の判定を実行することができる。具体的には、CPU101は、着目している区間において生成された各画像データそれぞれについて、指定オブジェクトを含む画像を表わし、且つ指定属性である画像データか否かを判定する。そして、指定オブジェクトを含む画像を表わし、且つ指定属性である画像データであると判定された画像データが1つでもあれば、S1211の判定結果はYES判定となり、S1212に進む。なお、CPU101は、画像解析情報500のうちオブジェクト分類505の領域に、指定オブジェクトのカテゴリが含まれる画像データを、指定オブジェクトを含む画像を表わす画像データであると判定する。また、CPU101は、画像解析情報500のうち画像属性503の領域に指定属性が含まれる画像データを、指定属性の画像データであると判定する。
指定オブジェクトを含む画像を表わし、且つ指定属性の画像データが1つもない場合、S1211の判定結果はNO判定となり、着目している区間において生成された画像データからは画像データが選択されずに、S1216へ進む。
なお、指定オブジェクトのカテゴリ(種類)は、ループカウンタ1103でカウントされた処理回数や選択済み画像データの数に応じて変化しても良い。本実施形態では、ループカウンタ1103でカウントされた処理回数が初期値(0)の場合には、指定オブジェクトは、S1222で指定オブジェクトが変更されるまでは、S1203で設定されたモードに対応するカテゴリのオブジェクトであるものとする。
S1212では、CPU101は、着目している区間において生成された画像データから、画像データを1枚選択する。この処理の詳細は、画像選択部1109の説明にて上述したとおりである。なお、ここでは、指定オブジェクトを含む画像を表わし、指定属性である画像データのうち、得点が一番高い画像データが1枚選択される。そのため、本実施形態では例えば、指定オブジェクトを含まない画像を表し、得点が高い画像データより、指定オブジェクトを含む画像を表し、得点が低い画像データの方が優先されて選択されることになる。また、本実施形態では例えば、指定属性でないが得点が高い画像データより、指定属性であるが得点が低い画像データの方が優先されて選択されることになる。そのため、指定属性として「SNS」が設定されている場合、SNSサーバ以外から取得された画像データより、SNSサーバから取得された画像データが優先されて選択されることになる。
このように、本実施形態では、単に得点だけを参照して画像データを選択するのではなく、指定オブジェクトや指定属性を参照して画像データを選択する。このような形態とすることで、サブ画像群に条件に合致する画像データがあれば、指定オブジェクトを含む画像を表わす画像データをより確実に選択することができる。なお、本実施形態では、ループカウンタ1103でカウントされた処理回数が0の場合は、指定オブジェクトは、ユーザにより設定されたモードに対応するカテゴリのオブジェクトである。そのため、CPU101は、ユーザにより設定されたモードに対応するカテゴリのオブジェクトを含む画像を、当該オブジェクトを含まない画像より優先してテンプレートに配置して、レイアウト画像を出力することができる。すなわち、本実施形態では、ユーザにより設定されたモードに対応するカテゴリのオブジェクトを含む画像がレイアウトされたレイアウト結果を、より確実に出力することができる。また、サブ画像群に条件に合致する画像データがあれば、指定属性の画像データをより確実に選択することができ、指定属性の画像データによって表わされる画像がレイアウトされたレイアウト結果を、より確実に出力することができる。
なお、CPU101は、各画像データが表わす画像が指定オブジェクトを含むか否かや、各画像データの属性や得点を、各画像データの画像解析情報500を参照することで特定することができる。すなわち、CPU101は、指定オブジェクトを含むことを示す情報(指定オブジェクトに対応するカテゴリの情報)が画像解析情報500に含まれていれば、画像データが示す画像が指定オブジェクトを含むことを特定することができる。また、CPU101は、指定属性であることを示す情報(指定属性の情報)が画像解析情報500に含まれていれば、画像データが指定属性であることを特定することができる。そのため、S1212では、CPU101は、着目している区間において生成された各画像データのオブジェクト分類505の領域に、指定オブジェクトのカテゴリが含まれ、且つ画像属性503の領域に指定属性が含まれる画像データを選択する。
S1213では、CPU101は、着目している区間において生成された画像データから、画像データを1枚選択する。なお、ここでは、指定オブジェクトが設定されていないため、指定オブジェクトは参照されない。そのため、単に指定属性である画像データのうち、得点が一番高い画像データが1枚選択される。
なお、S1212及びS1213では、条件に合う画像データがない場合は、いずれの画像データも選択されず、次のステップに進む。
S1214では、CPU101は、S1212又はS1213の処理において選択された画像データが表わす画像が、以前のループにおけるS1218の処理において既に選択されている画像データが表わす画像と類似しているか否かの判定を行う。この処理の詳細は、類似判定部1110の説明にて上述したとおりである。類似していないと判定された場合は、SS1212又はS1213における選択を維持したまま、S1216へ進む。類似していると判定された場合は、S1212又はS1213における選択を解除し、すなわち、S1212又はS1213の処理において選択された画像データを保持せず(S1215)、S1216へ進む。なお、いずれの画像データも選択されていない場合は、S1214の処理は省略され、S1216へ進む。
S1216では、CPU101は、分割部1105によりサブ画像群の撮影期間が分割されることで管理されている全ての区間が着目されて、S1212又はS1213の処理が実行されたかどうかを判定する。CPU101は、全ての区間が着目されて画像選択処理が実行された場合、S1215へ進む。一方、CPU101は、全ての区間が着目されて画像選択処理が実行されていない場合、未だ着目されていない区間のうちいずれかを選択して、再度S1209以降の処理を実行する。
S1217では、CPU101は、全ての区間が着目されて画像選択処理が実行されることにより、1枚でも画像データが選択されたか否かを判定する。CPU101は、1枚でも画像データが選択された場合、S1218に進み、1枚も画像データが選択されていない場合、S1221に進む。
S1221では、CPU101は、指定オブジェクトの更新を行う。なお、更新後の指定オブジェクトの内容は、特に限定されず、適宜設定されて良い。例えば、予め設定された優先度に従って指定オブジェクトが更新されても良いし、処理対象の見開きに割り当てられたサブ画像群が表わす複数の画像に多く含まれるオブジェクトが指定オブジェクトとして更新されても良い。また、指定オブジェクトの設定を「なし」にしても良い。また、更新の必要が無い場合(前回と同じ指定オブジェクトを用いて画像選択処理を実行する場合)は、S1221の処理は省略されても良い。
S1222では、CPU101は、指定属性の更新を行う。なお、更新後の指定属性は、適宜設定されて良い。例えば、予め設定された優先度に従って指定属性が更新されても良いし、処理対象の見開きに割り当てられたサブ画像群に多く含まれる属性が指定属性として更新されても良い。また、指定属性の設定を「なし」にしても良い。また、更新の必要が無い場合(前回と同じ指定属性を用いて画像選択処理を実行する場合)は、S1222の処理は省略されても良い。その後、S1209に進み、S1221やS1222で更新された情報に基づいて画像選択処理が行われる。
このように、S1221及びS1222のうち少なくとも1つが実行されれば、検索対象の画像データの条件が変更されるため、CPU101が新たに画像データを選択することが可能となる。なお、CPU101は、S1221やS1222で情報の更新を行った場合は、更新前の情報を用いて既に着目している区間について未だ着目していないものとして扱って、再度S1209以降の処理を行う。
なお、本実施形態では、S1217で1枚も画像データが選択されていないと判定された場合、まずは、指定オブジェクトを更新せず、指定属性を更新して再度画像選択処理を行う。そして、指定属性の更新を繰り返しても1枚も画像データが選択されない場合、指定オブジェクトの更新を行うものとする。
S1218では、CPU101は、統合部1111により、S1212で非類似と判定されて選択が維持されている画像データから、テンプレートに配置する画像を表わす画像データを特定する。この処理の詳細は、統合部1111の説明にて上述したとおりである。
S1219では、CPU101は、画像管理部1112により、S1215で、テンプレートに配置する画像を表わす画像データとして特定された画像データを選択済み画像データとして管理する。この処理の詳細は、画像管理部1112の説明にて上述したとおりである。
S1220では、CPU101は、画像管理部1112により管理されている選択済み画像データの枚数が、枚数設定部1101で設定された枚数(必要枚数)に達したか否かを判定する。CPU101は、選択済み画像データの枚数が必要枚数に達した場合は画像選択処理を終了し、S424に進む。一方、CPU101は、選択済み画像データの枚数が必要枚数に達していない場合は、再度S1204に進み、ループカウンタ1103によるカウンタをインクリメントして再度画像選択処理を行う。カウンタがインクリメントされ、処理回数Cの値が増えると、撮影期間が前回より多くの区間に分割される。本実施形態では具体的には、サブ画像群の撮影期間が前回よりも2倍多い数の区間に分割される。区間がより細かく管理されることにより、S1211では、前回は選択されていない画像データを選択可能になる。また、本実施形態では、選択済み画像データを含む区間からは画像データが選択されないため、選択済み画像データの撮影日時に近い日時に生成された画像データは選択されない可能性が高い。そのため、多様な画像データが選択されることになる。
図4に戻って、S424では、CPU101は、テンプレート設定部214により、アルバム作成条件指定部201から指定されたテンプレート情報に応じた複数のテンプレートを取得する。
S425では、CPU101は、画像レイアウト部215により、処理対象の見開きの画像レイアウトを決定する。このときまずCPU101は、S424で取得された複数のテンプレートの中から、S423で選択された画像データに適したテンプレートを決定する。テンプレート決定の方法を、図13及び図14を用いて説明する。
図13は、本実施形態のアルバム作成アプリに格納されている、テンプレートを決定する処理を司るソフトウェアのブロック図である。
選択画像情報取得部1301は、S424で選択された画像データの枚数と、当該画像データに関する情報を取得する。画像データに関する情報とは、例えば、当該画像データによって表わされる画像の幅と高さ、当該画像データの撮影日時情報、当該画像データの得点である。
テンプレート選択部1302は、S424で選択された画像データの枚数と一致する数のスロットを持つテンプレートを、S424で取得されたテンプレートの中から選択する。
選択画像ソート部1303は、S424で選択された画像データを撮影日時順にソートする。
テンプレート選択部1304は、テンプレート選択部1302により選択されたテンプレートのうち、メイン画像に適したテンプレートを選択する。本実施形態では、テンプレートのより左上のスロットに撮影日時がより古い画像データ、より右下のスロットに撮影日時がより新しい画像データをレイアウトするものとする。そのため、まずテンプレート選択部1304は、テンプレート選択部1302により選択されたテンプレートのうち、メインスロットの位置が、メイン画像を表わす画像データの撮影日時の順番に対応するテンプレートを選択する。すなわち、例えば、メイン画像を表わす画像データの撮影日時順が3番目であった場合には、メインスロットが、全スロットのうち左から3番目のスロットであるテンプレートが選択される。なお、選択画像ソート部1303により画像データが撮影日時順にソートされているため、テンプレート選択部1304は、メイン画像を表わす画像データの撮影日時の順番を把握することができる。また、テンプレート選択部1305は、このようにして選択したテンプレートのうち、メイン画像が配置されるスロットのアスペクト比が、メイン画像のアスペクト比と一致する(又は近い)テンプレートを最終的に選択する。
テンプレート選択部1305は、テンプレート選択部1304により選択されたテンプレートのうち、サブ画像に適したテンプレートを選択する。テンプレート選択部1305は、具体的にはまず、サブスロットの位置が、サブ画像を表わす画像データの撮影日時の順番に対応するテンプレートを選択する。また、テンプレート選択部1305は、このようにして選択したテンプレートのうち、サブスロットのアスペクト比が、サブ画像のアスペクト比と一致する(又は近い)テンプレートを最終的に選択する。
図14は、本実施形態における、レイアウト画像の作成に利用するテンプレートを決定する処理を示すフローチャートである。図14に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。
まず、S1401では、CPU101は、選択画像情報取得部1301により、S424で選択された画像データの枚数と、当該画像データに関する情報を取得する。なお、ここでは、S424で選択された画像データの枚数は3であるものとする。この処理の詳細は、選択画像情報取得部1301の説明にて上述したとおりである。
S1402は、CPU101は、テンプレート選択部1302により、S424で選択された画像データの枚数とスロット数が一致するテンプレートを選択する。なお、S424で選択された画像データの枚数は3であるため、スロット数が3のテンプレートが選択される。ここでは、スロット数が3のテンプレートとして、図10の(1−1)〜(4−4)が選択されたものとする。
S1403では、CPU101は、選択画像ソート部1303により、S424で選択された画像データを撮影日時順にソートする。なお、ここでは、3枚の各画像データが表わす各画像の撮影日時は図10(A)に示すような順番であったとする。また、ここでは、画像1005がメインスロット用の画像(メイン画像)であり、画像1006と画像1007がサブスロット用の画像(サブ画像)とする。
S1404は、CPU101は、テンプレート選択部1302により選択されたテンプレートのうち、メイン画像に適したテンプレートを、テンプレート選択部1304により選択する。この処理の詳細は、テンプレート選択部1304の説明にて上述したとおりである。上述したように、本実施形態では、テンプレートのより左上のスロットに撮影日時がより古い画像データ、より右下のスロットに撮影日時がより新しい画像データをレイアウトするものとする。そして、メイン画像である画像1005は、撮影日時が一番新しく、且つ縦長の画像であるため、ここでは図10(3−1)〜(3−4)のテンプレートが選択される。
S1405では、CPU101は、S1404で選択されたテンプレートのうち、サブ画像に適したテンプレートを、テンプレート選択部1305により選択する。この処理の詳細は、テンプレート選択部1305の説明にて上述したとおりである。サブ画像である画像1006は、撮影日時が一番古く、且つ縦長の画像である。また、サブ画像である画像1007は、撮影日時が2番目に新しく、且つ横長の画像である。そのため、図10(3−2)のテンプレートが選択される。なお、このとき、どのサブスロットにどのサブ画像が配置されるかも特定される。
このようにして、S425では、CPU101は、レイアウト画像の作成に用いるテンプレートと、テンプレートのいずれのスロットにいずれの画像をレイアウトするかを決定する。具体的には、CPU101は、選択したテンプレートに含まれる各スロットの情報と、各スロットにレイアウトされる画像に対応する画像データと、を紐づけて管理する。
S426では、CPU101は、画像補正部217により画像補正をする。なお、CPU101は、補正条件入力部216から画像補正がONであることの設定が入力された場合に、画像補正を実行する。画像補正として、例えば、輝度補正、赤目補正、コントラスト補正が実行される。また、CPU101は、補正条件入力部216から画像補正がOFFであることの設定が入力された場合は、画像補正を実行しない。画像補正は、例えば、短辺1200画素で、sRGBの色空間に変換された画像データに対しても実行可能である。
S427では、CPU101は、レイアウト情報出力部218によりレイアウト情報を作成する。具体的には、CPU101は、S425で選択されたテンプレートの各スロットに、S426の画像補正が実行された、各スロットに対応する画像データを紐づけて管理する。なお、ここで用いる画像は、S407で生成した解析画像であり、S408〜18で用いた画像とは異なる画像である。そして、CPU101は、テンプレートに画像をレイアウトしたビットマップデータを生成する。このとき、CPU101は、スロットのサイズ情報に合わせてレイアウトする画像を変倍又は等倍してレイアウトする。
S428はS423〜S427の処理が全ての見開きに対して終了したか否かを判定する。終了していない場合(S428でNo)はS423に戻り、未だ処理対象となっていない見開きに対して、S423〜S427の処理を行う。終了している場合(S428でYes)は、自動レイアウト処理を終了する。
自動レイアウト処理が終了されると、CPU101は、作成したレイアウト情報に基づき、テンプレートに画像が配置されたレイアウト画像をディスプレイ105に表示する。なお、このとき、CPU101は、1つのアルバムを作成するための複数のレイアウト画像を表示しても良い。また、CPU101は、作成したレイアウト情報をプリンタに送信し、レイアウト画像を印刷しても良い。
このように、本実施形態では、CPU101は、ユーザから指定されたアルバムのモードに応じてレイアウトに利用する画像を変更する。具体的には、CPU101は、少なくとも1つのスロットに対して、ユーザから指定されたアルバムのモードに対応するオブジェクトを含む画像を、当該オブジェクトを含まない画像より優先して配置する。これにより、ユーザから指定されたアルバムのモードに対応するオブジェクトを含むレイアウト画像を作成することができる。また、本実施形態では、動画から切り出されることで取得された画像データの得点化や選択の方法が、動画解析時に取得した動き量や得点に応じて変更される。これにより、動画解析時の結果を利用した画像選択が可能となり、動画ならではのよさをレイアウトに反映することができる。
<アルバムの編集>
CPU101は、自動レイアウト処理が終了すると、見開き毎に作成したレイアウト画像を、ディスプレイ105に表示する。本実施形態では、ユーザは、完成したレイアウト画像を任意に編集可能であるものとする。例えば、ユーザは、各スロットに配置された画像のうち、変更したい画像が有る場合は、マウス107により変更したい画像をクリックする。その後、ユーザは、変更したい画像の代わりに配置したい画像を選択することで、ユーザが任意に選択した画像を、クリックされた画像の代わりに新たに配置することができる。
また、本実施形態では、レイアウト画像の編集画面には、図20のような、編集後のアルバム内の各オブジェクトの出現頻度を調整するUI2001が表示されるものとする。なお、このような編集画面は、アルバム作成アプリによって提供される。UI2001には、作成したアルバム(編集前のアルバム)のモードに応じたコンテンツが表示される。具体的には、編集後のアルバムにおける、アルバムのモードに対応するオブジェクトを含む画像の出現頻度(テンプレートに配置される画像として選択される頻度)を調整するためのバーが表示される。例えば、作成したアルバムのモードが「動物」である場合、編集後のアルバムにおける、「動物」のオブジェクトを含む画像の出現頻度を調整するためのバー2004が表示される。なお、本実施形態では、編集後のアルバムにおける、「人物」のオブジェクトを含む画像の出現頻度を調整するためのバー2002については、アルバムのモードがいずれであっても表示されるものとする。なお本実施形態では、「人物」以外のオブジェクトを含む画像の出現頻度を調整するためのバーは、アルバムのモードが「人物」以外である場合のみ表示される形態としたが、この形態に限定されない。例えば、アルバムのモードがいずれであっても表示される形態としても良い。
以下、UI2001を用いて、アルバムを編集する方法について詳しく説明する。ここでは、作成したアルバムのモードが「動物」である場合を例にして説明する。
ユーザは、掴み2003や掴み2005を移動させるための入力を行うことで、編集後のアルバムにおける、各バーに対応するオブジェクトを含む画像の出現頻度を調整することができる。本実施形態では、「多め」(最大値)、「普通」(中間値)、「少なめ」(最小値)の3種類の設定値が用意されているものとし、ユーザの入力に応じた設定値(掴み2003や掴み2005の位置に応じた設定値)に応じて、各画像の出現頻度が調節される。ユーザによってOKボタン2006が押下されると、設定された条件に基づいてアルバムが編集される。すなわち、設定された条件に基づいて、再度自動レイアウト処理が行われる。具体的には、S416からS428の処理が再度行われる。なおこのとき、編集前のアルバム作成時のS401〜S415の処理で取得された各情報は、適宜再利用される。ユーザによってキャンセルボタン2007が、押下されると、出現頻度の調整をキャンセルし、UI2001が閉じられる。なお、例えば、再度の自動レイアウト処理では、S423からS428の処理が再度行われても良い。この場合、S423も画像選択処理では、編集前のアルバム作成時のS416で付された得点が参照される。
なお、各バーに対応するオブジェクトを含む画像の出現頻度の設定方法は、上述の形態に限定されない。例えば、プルダウンリストから設定値を選択する形態であっても良い。また、設定値は、「多め」、「普通」、「少なめ」ではなく、例えば数字や記号、他の語句等で表現されても良い。また、設定値は、最大値と中間値と最小値の3種類に限定されず、設定値が細かく分類されていても良い。
図21は、各設定値における編集後のアルバムのある1枚の見開きのレイアウト画像を示す図である。
2104は、メインスロットに配置される画像の種類を示し、2105及び2106は、サブスロットに配置される画像の種類を示す。「人物+動物」は人と動物の両方のオブジェクトを含む画像を示している。「人物」は人のオブジェクトを含み、動物のオブジェクトを含まない画像を示している。「動物」は動物のオブジェクトを含み、人のオブジェクトを含まない画像を示している。「モノ」は人と動物の両方のオブジェクトを含まない画像を示している。
表2101に示すように、「人物」の設定値と「動物」の設定値が共に「多め」である場合には、レイアウト画像に含まれるすべての画像が、「人物+動物」の種類となる。また、「人物」の設定値が「普通」で「動物」の設定値が「多め」である場合には、メインスロットには、「人物+動物」の種類の画像が配置され、サブスロットには、「動物」の種類の画像が配置される。また、「人物」の設定値が「少なめ」で「動物」の設定値が「多め」である場合には、レイアウト画像に含まれるすべての画像が、「動物」の種類となる。
また、「人物」の設定値が「多め」で「動物」の設定値が「普通」である場合には、メインスロットには、「人物+動物」の種類の画像が配置され、サブスロットには、「人物」の種類の画像が配置される。また、「人物」の設定値が「多め」で「動物」の設定値が「少なめ」である場合には、レイアウト画像に含まれるすべての画像が、「人物」の種類となる。
また、「人物」の設定値と「動物」の設定値が共に「普通」である場合には、メインスロットには、「人物+動物」の種類の画像が配置され、サブスロットには、「人物」の種類の画像と、「動物」の種類の画像が配置される。また、「人物」の設定値が「普通」で「動物」の設定値が「少なめ」である場合には、メインスロットには、「人物」の種類の画像が配置され、サブスロットには、「モノ」の種類の画像が配置される。また、「人物」の設定値が「少なめ」で「動物」の設定値が「普通」である場合には、メインスロットには、「動物」の種類の画像が配置され、サブスロットには、「モノ」の種類の画像が配置される。また、「人物」の設定値と「動物」の設定値が共に「少なめ」である場合には、レイアウト画像に含まれるすべての画像が、「モノ」の種類となる。
なお、各パターンにおいて配置される画像の種類は上述の形態に限定されず、それぞれのパターンにおいて配置される画像の種類が異なっていればいい。
例えば、どの種類の画像が配置されるかが設定されないスロットが含まれていても良い。その場合、当該スロットにはいずれの種類の画像が配置されても良く、例えば、単に、未だ選択されていない画像のうち得点が一番高い画像が配置される。
また、図21には、各パターンにおいてレイアウト画像の生成に利用されるテンプレートの種類が同一であるものとしたが、この形態に限定されない。各パターンにおいて選択される画像データが異なるため、選択された画像データに適したテンプレートが各パターンにおいて適宜選択されて良い。
このように、本実施形態では、ユーザによって設定された各オブジェクトの設定値に応じて、編集後のアルバムに含まれるオブジェクトの多寡を変更することができる。言いかえれば、編集後のレイアウト画像に含まれる複数の画像に各オブジェクトが含まれる割合を、ユーザによって設定された各オブジェクトの設定値の組み合わせに応じて変化させることができる。また、本実施形態では、単にそれを変更するだけでなく、編集後のアルバムに含まれる画像の種類を変更することができる。言いかえれば、ユーザによって設定された各オブジェクトの設定値に応じて、異なる種類の画像が含まれるように、アルバムを作成することができる。
図16は、アルバムの再レイアウト時に実行される処理を示すフローチャートである。図16に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。図16のフローチャートに示す処理は、CPU101が、UI2001の画面を介してユーザから編集内容の入力を受け付けた後、ユーザからアルバムの再レイアウト指示(編集指示)を受け付けた場合に(OKボタン2006が押下された場合に)開始される。なお、アルバムの再レイアウト時は、指定オブジェクトが、UI2001で設定された設定値に基づいて変化する。
S1601では、CPU101は、画像得点部210により、UI2001を介してユーザから受け付けた編集内容に応じて画像得点化をする。具体的には、CPU101は、S416の説明にて上述した画像得点化の方法で各画像データに付された得点を、各カテゴリの設定値に応じて増減する。例えば、CPU101は、設定値が「多め」であるカテゴリのオブジェクトを含む画像データの得点には、所定の得点を加算し、設定値が「少なめ」であるカテゴリのオブジェクトを含む画像データの得点からは、所定の得点を減算する。なお、CPU101は、設定値が「普通」であるカテゴリのオブジェクトを含む画像データの得点は、増減させない。
S1602〜S1607の処理は、S417〜S422の処理と同様のため、説明を省略する。
S1608では、CPU101は、画像選択部213により画像選択を実行する。再レイアウト時における画像選択処理を、図12を用いて説明する。
図12は、S1608の画像選択処理の詳細を示すフローチャートである。図12に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。図12のフローチャートでは、処理対象の1つの見開きに割り当てられたサブ画像群から画像データが選択される。そのため、アルバムが複数の見開きから構成される場合、図12のフローチャートに示す処理は見開きの数に対応する回数実行されることになる。
また、本実施形態では、アルバムの再編集時は、UI2001を介してユーザによって設定された各オブジェクトの設定値及び、ループカウンタによるカウント数に応じて、画像選択処理において選択される画像データの種類が設定される。なお、上述したように本実施形態では、ループカウンタによるカウント数は選択済み画像データの枚数に対応する。具体的には、UI2001を介してユーザによって設定された各オブジェクトの設定値及び、ループカウンタによるカウント数に応じて、指定オブジェクトと除外オブジェクトが設定される。除外オブジェクトが設定されている場合、以降の画像選択処理では、除外オブジェクトを含む画像データは選択されない。
ループカウンタによるカウント数が0の場合は、画像選択処理ではメイン画像が選択される。そのため、CPU101は、ユーザによって設定された各オブジェクトの設定値に応じた種類のメイン画像が選択されるように、指定オブジェクトと除外オブジェクトを設定する。例えば、図21に示すように、「人物」の設定値と「動物」の設定値が共に「多め」である場合や、「人物」の設定値が「普通」で「動物」の設定値が「多め」である場合には、メインスロットには、「人物+動物」の種類の画像が配置される。そのため、「人物」のオブジェクトと「動物」のオブジェクトの両方を指定オブジェクトとする。また、「人物」の設定値が「少なめ」で「動物」の設定値が「普通」である場合には、メインスロットには、「動物」の種類の画像が配置される。そのため、「動物」のオブジェクトを指定オブジェクトとし、「人物」のオブジェクトを除外オブジェクトとする。また、「人物」の設定値が「普通」で「動物」の設定値が「少なめ」である場合には、メインスロットには、「人物」の種類の画像が配置される。そのため、「人物」のオブジェクトを指定オブジェクトとし、「動物」のオブジェクトを除外オブジェクトとする。また、「人物」の設定値と「動物」の設定値が共に「少なめ」である場合には、メインスロットには、「モノ」の種類の画像が配置される。そのため、「人物」のオブジェクトと「動物」のオブジェクトの両方を除外オブジェクトとする。このとき、除外オブジェクトとなったオブジェクト以外のオブジェクト(ここでは、例えば「料理」のオブジェクト等)が指定オブジェクトとして設定されても良い。なお、本実施形態では、所定値を「普通」とし、所定値以上の設定値のオブジェクトを指定オブジェクトとし、所定値未満の設定値のオブジェクトを除外オブジェクトとしているがこの形態に限定されない。設定値の組み合わせによって、配置される画像の種類が変わる形態であれば良い。
また、ループカウンタによるカウント数が1以上の場合は、画像選択処理ではサブ画像が選択される。そのため、CPU101は、ユーザによって設定された各オブジェクトの設定値に応じた種類のサブ画像が選択されるように、指定オブジェクトと除外オブジェクトを設定する。例えば、図21に示すように、「人物」の設定値と「動物」の設定値が共に「多め」である場合には、サブスロットには、「人物+動物」の種類の画像が配置される。そのため、除外オブジェクトは設定せず、「人物」のオブジェクトと「動物」のオブジェクトの両方を指定オブジェクトとする。また、「人物」の設定値が「多め」で「動物」の設定値が「普通」である場合には、サブスロットには、「人物」の種類の画像が配置される。そのため、「人物」のオブジェクトを指定オブジェクトとし、「動物」のオブジェクトを除外オブジェクトとする。また、「人物」の設定値が「普通」で「動物」の設定値が「多め」である場合や、「人物」の設定値が「少なめ」で「動物」の設定値が「多め」である場合には、サブスロットには、「動物」の種類の画像が配置される。そのため、「動物」のオブジェクトを指定オブジェクトとし、「人物」のオブジェクトを除外オブジェクトとする。また、「人物」の設定値と「動物」の設定値が共に「少なめ」である場合には、サブスロットには、「モノ」の種類の画像が配置される。そのため、指定オブジェクトは設定せず、「人物」のオブジェクトと「動物」のオブジェクトの両方を除外オブジェクトとする。このとき、除外オブジェクトとなったオブジェクト以外のオブジェクト(ここでは、例えば「料理」のオブジェクト等)が指定オブジェクトとして設定されても良い。
このように、UI2001を介してユーザによって設定された各オブジェクトの設定値に応じて、各スロットに配置される画像データの種類を変更することができる。
S1201〜S1209の処理は、編集前のアルバム作成時の処理と同様であるため説明を省略する。
S1210では、CPU101は、指定オブジェクトや除外オブジェクトが設定されているか否かを判定する。アルバムの編集時は上述のようにして指定オブジェクトや除外オブジェクトが設定されるが、指定オブジェクトや除外オブジェクトが設定されないこともある。このケースは例えば、未だ選択されていない画像データのなかに指定オブジェクトを含み、除外オブジェクトを含まない画像を表わす画像データがない場合である。また例えば、どの種類の画像が配置されるかが設定されないスロットに配置するための画像を表わす画像データを選択する場合である。この処理の詳細は、編集前のアルバム作成時の処理と同様である。
S1211では、CPU101は、着目している区間において生成された画像データのなかに、指定オブジェクトを含み、除外オブジェクトを含まない画像を表わし、且つ指定属性の画像データである画像データが有るか否かを判定する。具体的には、CPU101は、着目している区間において生成された各画像データそれぞれについて、指定オブジェクトを含み、除外オブジェクトを含まない画像を表わし、且つ指定属性である画像データか否かを判定する。そして、指定オブジェクトを含み、除外オブジェクトを含まない画像を表わし、且つ指定属性である画像データであると判定された画像データが1つでもあれば、S1211の判定結果はYES判定となり、S1212に進む。指定オブジェクトを含み、除外オブジェクトを含まない画像を表わし、且つ指定属性の画像データが1つもない場合、S1211の判定結果はNO判定となり、着目している区間において生成された画像データからは画像データが選択されずに、S1216へ進む。なお、CPU101は、画像解析情報500のうちオブジェクト分類505の領域に、除外オブジェクトのカテゴリが含まれない画像データを、除外オブジェクトを含まない画像を表わす画像データであると判定する。指定オブジェクトと指定属性に関する判定は、編集前のアルバム作成時の処理と同様である。
S1212では、CPU101は、着目している区間において生成された画像データから、画像データを1枚選択する。この処理の詳細は、画像選択部1109の説明にて上述したとおりである。なお、ここでは、指定オブジェクトを含み、除外オブジェクトを含まない画像を表わし、且つ指定属性である画像データのうち、得点が一番高い画像データが1枚選択される。そのため、本実施形態では例えば、指定オブジェクトを含まない画像を表し、得点が高い画像データより、指定オブジェクトを含む画像を表し、得点が低い画像データの方が優先されて選択されることになる。また、本実施形態では例えば、指定属性でないが得点が高い画像データより、指定属性であるが得点が低い画像データの方が優先されて選択されることになる。また、本実施形態では例えば、除外オブジェクトを含むが得点が高い画像データより、除外オブジェクトを含まないが得点が低い画像データの方が優先されて選択されることになる。
このように、本実施形態では、各オブジェクトの設定値に応じて、指定オブジェクトや除外オブジェクトを設定する。このような形態とすることで、サブ画像群に条件に合致する画像データがあれば、各オブジェクトの設定値に応じた種類の画像をより確実に選択することができる。すなわち、各オブジェクトの設定値に応じた種類の画像がレイアウトされたレイアウト結果を、より確実に出力することができる。
S1212〜S1221の処理は、編集前のアルバム作成時の処理と同様である。
S1222では、CPU101は、指定オブジェクト又は/及び除外オブジェクトの更新を行う。なお、更新後の指定オブジェクトや除外オブジェクトの内容は、特に限定されず、適宜設定されて良い。例えば、予め設定された優先度に従って指定オブジェクトや除外オブジェクトが更新されても良いし、処理対象の見開きに割り当てられたサブ画像群が表わす複数の画像に多く含まれるオブジェクトが指定オブジェクトとして更新されても良い。また、処理対象の見開きに割り当てられたサブ画像群が表わす複数の画像に多く含まれるオブジェクト以外のオブジェクトが除外オブジェクトとして更新されても良い。また、指定オブジェクトや除外オブジェクトの設定を「なし」にしても良い。また、更新の必要が無い場合(前回と同じ指定オブジェクトや除外オブジェクトを用いて画像選択処理を実行する場合)は、S1222の処理は省略されても良い。
S1223の処理は、編集前のアルバム作成時の処理と同様である。
なお、本実施形態では、S1217で1枚も画像データが選択されていないと判定された場合、まずは、指定オブジェクトや除外オブジェクトを更新せず、指定属性を更新して再度画像選択処理を行う。そして、指定属性の更新を繰り返しても1枚も画像データが選択されない場合、指定オブジェクトや除外オブジェクトの更新を行うものとする。
また、選択済み画像データの枚数が必要枚数に達した場合は画像選択処理を終了し、S1609に進む。
S1609〜S1613の処理は、S424〜S428の処理と同様である。
このように、ユーザが入力した各オブジェクトの設定値に応じた種類の画像が配置されるように制御することで、ユーザの意図を反映したレイアウト画像を作成することができる。
なお、ユーザが入力した各オブジェクトの設定値に応じた種類の画像が配置されるようにする制御は、アルバムの編集時だけでなく、編集前のアルバム作成時にも適用可能である。その場合、例えば、編集前のアルバム作成前に、図3に示すような設定画面への入力と共に、図20に示すような設定画面への入力を受け付ける形態とすればよい。そして、図4に示すS415〜S428の処理の代わりに、図16に示すS1601〜S1613の処理を実行する形態とすればよい。
(第2実施形態)
本実施形態では、トリミングによる影響を考慮してテンプレートを選択する形態について説明する。なお、第1実施形態と同様の構成については説明を省略する。
HDD104には、図10に示したテンプレートの他にも様々テンプレートが格納されており、例えば本実施形態では、図17に示すようなテンプレートが格納されている。(5−1)、(6−1)に示すテンプレートは、正方形状のメインスロットとサブスロットを有しており、さらに、メインスロットのサイズがサブスロットのサイズより大きくなっている。また(7−1)に示すテンプレートは、正方形状のメインスロットとサブスロットを有しており、メインスロットのサイズは(5−1)や(6−1)のメインスロットのサイズより小さい。また(8−1)、(9−1)、(10−1)に示すテンプレートは、矩形状のメインスロットと正方形状や矩形状のサブスロットを有しており、メインスロットのサイズは図10に示すテンプレートのメインスロットのサイズより小さい。
このように、矩形だけでなく、正方形等のさまざまな形状のスロットを有するテンプレートが用意されることで、ユーザにデザイン性の高い多様なアルバムを提供することができる。なお、矩形や正方形のスロットを有するテンプレートだけでなく、例えば、円形や楕円形、三角形等、他の形状のスロットを有するテンプレートが用意されても良い。また、矩形のメインスロットと正方形のサブスロットを有するテンプレートのように、それぞれ異なる形状のスロットを有するテンプレートが用意されても良い。
ところで、自動レイアウト処理においては、画像をスロットに収まる大きさ・形状にするために、画像の一部の領域を取り除く処理であるトリミングが行われる場合がある。なお、トリミングされる領域の位置や量は、スロットの大きさや形状と、画像の大きさや形状に応じて異なる。
なお、自動レイアウト処理においては、CPU101は、画像を配置するスロットの大きさ・位置の情報を取得可能である。そのため、CPU101は、さらに、画像に含まれるオブジェクトの位置の情報を取得可能であれば、画像に含まれるオブジェクトがトリミングにより切れるか否かを判別可能である。なお、オブジェクトが切れるとは、具体的には、オブジェクトの少なくとも一部が含まれる領域がトリミングにより取り除かれることを指す。そのため、CPU101は、画像に含まれるオブジェクトが切れると判定した場合は、使用するテンプレートを変更することで、画像に含まれるオブジェクトが切れることなく、テンプレートに画像を配置することが可能である。
しかしながら、画像解析部207は、オブジェクトのカテゴリによっては、オブジェクトの位置を正確に検出できない(位置の情報を取得できない)ことがある。具体的には、例えば、CPU101は、画像解析部207により、「人物」のオブジェクトについては、その位置を正確に検知することができるが、「人物」以外(「動物」、「料理」等)のオブジェクトについては、その位置を正確に検知することができない。そのため、CPU101は、「人物」以外のオブジェクトを含む画像については、トリミングにより画像に含まれるオブジェクトが切れるか否かを判別することなく、テンプレートを選択する必要がある。そのため、「人物」以外のオブジェクトを含む画像については、できるだけトリミング量を減らしてスロットに配置することが好ましい。
そこで、本実施形態では、アルバムのモードに応じて、レイアウト作成に利用されるテンプレートを変更する。具体的には、位置の情報を正確に取得できないオブジェクトに対応するモードが選択されている場合には、できるだけ画像のトリミング量が小さくなるように制御する。これにより、位置を正確に検知することができないオブジェクトがトリミングにより切れてしまうことを抑制する。
ところで、撮像デバイスによって取得された画像データによって表わされる画像の多くは矩形である。矩形と正方形は、アスペクト比が異なるため、矩形の画像を上述のような正方形状のスロットに収まるように配置するためには、矩形の画像をトリミングする必要がある。また、矩形と正方形は、アスペクト比が大きく異なるため、このときのトリミング量は大きくなる。そのため、本実施形態では、アルバムのモードが「人物」以外である場合は、矩形のスロットを有するテンプレートを選択する。これにより、画像のトリミング量が小さくなるように制御することができる。
本実施形態の制御について更に詳細に説明する。本実施形態では、アルバムのモードが「人物」である場合には、図10に示すような矩形のスロットを有するテンプレート及び、図7に示すような矩形以外のスロットを有するテンプレートから、レイアウト作成に利用するテンプレートを選択する。これは、CPU101は、「人物」のオブジェクトについては、その位置を正確に検知可能であるため、スロットの形状がいかようであっても、オブジェクトが切れないようにトリミング可能であるからである。
また、アルバムのモードが「人物」以外(「動物」、「料理」等)である場合には、図10に示すような矩形のスロットを有するテンプレートから、レイアウト作成に利用するテンプレートを選択する。すなわち、アルバムのモードが「人物」以外である場合には、図7に示すような矩形以外のスロットを有するテンプレートから、レイアウト作成に利用するテンプレートを選択しない。これは、CPU101は、「人物」以外のオブジェクトについては、その位置を正確に検知できないため、矩形以外の形状のスロットに画像を配置する場合は、オブジェクトが切れてしまう可能性があるからである。
図15は、本実施形態のアルバム作成アプリのソフトウェア構成を示すブロック図である。なお、第1実施形態のアルバム作成アプリと同様の構成については説明を省略する。
本実施形態のアルバム作成アプリは、テンプレート選択部1501を有する。テンプレート選択部1501は、まず、テンプレート設定部214によってHDD104から取得された、アルバム作成条件指定部201から指定されたテンプレート情報に応じた複数のテンプレートを取得する。
画像レイアウト部1502は、見開きのレイアウトを決定する。具体的には、テンプレート選択部1501により入力された複数のテンプレートから画像選択部213で選択した画像データに適したテンプレートを選択し、各画像の配置位置を決定する。
図18は、本実施形態のアルバム作成アプリに格納されている、テンプレートを決定する処理を司るソフトウェアのブロック図である。第1実施形態と同様の構成については説明を省略する。
モード取得部1801は、アルバム作成条件指定部201で指定された、アルバムのモードに関する情報を取得し、アルバムのモードを特定する。
テンプレート選択部1802は、モード取得部1801により特定されたモードに基づいて、テンプレートを選択する。なお、テンプレートの選択方法は、テンプレート選択部1501の説明にて上述した通りである。
テンプレート選択部1302は、S424で選択された画像データの枚数と一致する数のスロットを持つテンプレートを、テンプレート選択部1802により選択されたテンプレートから選択する。
テンプレート選択部1803は、テンプレート選択部1302により選択されたテンプレートのうち、メイン画像に適したテンプレートを選択する。本実施形態では、テンプレートのより左上のスロットに撮影日時がより古い画像データ、より右下のスロットに撮影日時がより新しい画像データをレイアウトするものとする。そのため、まずテンプレート選択部1304は、テンプレート選択部1302により選択されたテンプレートのうち、メインスロットの位置が、メイン画像を表わす画像データの撮影日時の順番に対応するテンプレートを選択する。すなわち、例えば、メイン画像を表わす画像データの撮影日時順が3番目であった場合には、メインスロットが、全スロットのうち左から3番目のスロットであるテンプレートが選択される。なお、選択画像ソート部1303により画像データが撮影日時順にソートされているため、テンプレート選択部1304は、メイン画像を表わす画像データの撮影日時の順番を把握することができる。
また、本実施形態では、テンプレート選択部1803は、アルバムのモードが「人物」である場合は、トリミングによりオブジェクトが切れない限り、矩形以外の形状のメインスロットを有するテンプレートを優先的に選択する。テンプレート選択部1803は、矩形以外の形状のメインスロットにメイン画像を配置するためのトリミングにより、メイン画像に含まれるオブジェクトが切れてしまう場合には、矩形の形状のメインスロットを有するテンプレートを選択する。
また、テンプレート選択部1803は、メイン画像を表わす画像データが、動画データから切り出されて画像データであり、さらに動き量が多い画像データである場合は、小さいサイズのスロットを有するテンプレートを選択する。これは、動き量が多い画像データが表わす画像はボケやブレが多い可能性が高いが、小さいサイズのスロットに画像が縮小されて配置されることで、画像のボケやブレが緩和されるためである。一方、動き量が少ない画像データが表わす画像はボケやブレが多い可能性が低いため、テンプレート選択部1803は、動き量が少ない画像データである場合は、大きいサイズのスロットを有するテンプレートを選択する。なお、ここでは、動き量の多寡に基づいてテンプレートを選択する形態について説明したが、この形態に限定されない。CPU101が画像のボケ量やブレ量を検出可能な場合は、その値を用いてテンプレート選択が行われても良い。また、例えば、CPU101は、ラプラシアンフィルターを用いることによって、画像におけるエッジを検出することができる。CPU101は、検出されたエッジ量が小さい場合は、ボケ量やブレ量が多いとみなしても良い。いずれにせよ、ボケ量やブレ量が大きい画像が小さいスロットに配置され、ボケ量やブレ量が小さい画像が大きいスロットに配置されるよう制御されれば良い。
テンプレート選択部1804は、テンプレート選択部1803により選択されたテンプレートのうち、サブ画像に適したテンプレートを選択する。テンプレート選択部1804は、サブスロットの位置が、S424で選択された画像データのうちサブ画像を表わす画像データの撮影日時の順番に対応するテンプレートを選択する。また、本実施形態では、テンプレート選択部1804は、アルバムのモードが「人物」である場合は、トリミングによりオブジェクトが切れない限り、矩形以外の形状のサブスロットを有するテンプレートを優先的に選択する。テンプレート選択部1804は、矩形以外の形状のサブスロットにサブ画像を配置するためのトリミングにより、サブ画像に含まれるオブジェクトが切れてしまう場合には、矩形の形状のメインスロットを有するテンプレートを選択する。テンプレート選択部1804は、このようにして、レイアウト画像の作成に最終的に利用するテンプレートを選択する。
本実施形態においても、S425では、CPU101は、画像レイアウト部215により、処理対象の見開きの画像レイアウトを決定する。そして、CPU101は、S424で取得された複数のテンプレートの中から、S423で選択された画像データに適したテンプレートを決定する。テンプレート決定の方法を、図19を用いて説明する。
図19は、本実施形態における、レイアウト画像の作成に利用するテンプレートを決定する処理を示すフローチャートである。図19に示すフローチャートは、例えば、CPU101がHDD104に格納されたアルバム作成アプリに対応するプログラムをROM102やRAM103に読み出して実行することにより実現される。
S1901では、CPU101は、選択画像情報取得部1301により、S424で選択された画像データの枚数と、当該画像データに関する情報を取得する。この処理は、S1401の処理と同様である。
S1902では、CPU101は、テンプレート選択部1302により、S424で選択された画像データの枚数とスロット数が一致するテンプレートを選択する。この処理は、S1402の処理と同様である。
S1903では、CPU101は、選択画像ソート部1303により、S424で選択された画像データを撮影日時順にソートする。この処理は、S1403の処理と同様である。
S1904では、CPU101は、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得された画像データか否かを判定する。CPU101は、動画データからフレームが切り出されることで取得された画像データである場合(S1904でYes)は、S1905に進む。そして、CPU101は、動画データからフレームが切り出されることで取得された画像データでない場合(S1904がNo)は、S1906に進む。
S1905では、CPU101は、メイン画像に対応する画像データの動き量が所定の閾値THより大きいか否かを判定する。所定の閾値THより大きい場合(S1905でYes)は、S1907に進み、所定の閾値THより大きくない場合(S1905がNo)は、S1906に進む。
S1906では、CPU101は、メイン画像が「人物」以外のカテゴリのオブジェクトを含むか否かを判定する。「人物」以外のカテゴリのオブジェクトを含む場合(S1906がYes)は、S1909に進み、「人物」以外のカテゴリのオブジェクトを含まない場合(S1906がNo)は、S1908に進む。
S1908では、CPU101は、S1902にて選択されたテンプレートのうち、メイン画像に適したテンプレートを、テンプレート選択部1803により選択する。なおこのとき、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得された画像データでなく、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含まない。又は、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得された画像データではあるが動き量が少なく、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含まない。そのため、CPU101は、まず、大きい正方形のメインスロットを有するテンプレートを選択する。そして、CPU101は、選択したテンプレートのメインスロットに収まるようにメイン画像に対してトリミングを行った場合、メイン画像に含まれるオブジェクトが切れるか否かを判定する。CPU101は、メイン画像に含まれるオブジェクトが切れないと判定した場合、大きい正方形のメインスロットを有するテンプレートを選択したまま、S1910に進む。一方、CPU101は、メイン画像に含まれるオブジェクトが切れると判定した場合、メイン画像のアスペクト比と同様のアスペクト比である、大きい矩形のメインスロットを有するテンプレートを選択し、S1910に進む。
S1910では、CPU101は、S1908にて選択されたテンプレートのうち、サブ画像に適したテンプレートを、テンプレート選択部1804により選択する。このとき、CPU101は、各サブ画像のアスペクト比と同様のアスペクト比であるサブスロットを有するテンプレートを選択しても良いし、正方形のサブスロットを有するテンプレートを選択しても良い。なお、メイン画像基準のテンプレート選択と同様に、サブ画像が「人物」以外のカテゴリのオブジェクトを含むか含まないかに応じて選択するテンプレートを変更しても良い。なお、このとき、どのサブスロットにどのサブ画像が配置されるかも特定される。
S1909では、CPU101は、S1902にて選択されたテンプレートのうち、メイン画像に適したテンプレートを、テンプレート選択部1803により選択する。なおこのとき、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得された画像データでなく、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含む。又は、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得された画像データではあるが動き量が少なく、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含む。そのため、CPU101は、メイン画像のアスペクト比と同様のアスペクト比である、大きい矩形のメインスロットを有するテンプレートを選択し、S1911に進む。
S1911では、CPU101は、S1909にて選択されたテンプレートのうち、サブ画像に適したテンプレートを、テンプレート選択部1804により選択する。このとき、CPU101は、各サブ画像のアスペクト比と同様のアスペクト比であるサブスロットを有するテンプレートを選択しても良いし、正方形のサブスロットを有するテンプレートを選択しても良い。なお、メイン画像基準のテンプレート選択と同様に、サブ画像が「人物」以外のカテゴリのオブジェクトを含むか含まないかに応じて選択するテンプレートを変更しても良い。なお、このとき、どのサブスロットにどのサブ画像が配置されるかも特定される。
S1907では、CPU101は、メイン画像が「人物」以外のカテゴリのオブジェクトを含むか否かを判定する。「人物」以外のカテゴリのオブジェクトを含む場合(S1907がYes)は、S1913に進み、「人物」以外のカテゴリのオブジェクトを含まない場合(S1907がNo)は、S1912に進む。
S1912では、CPU101は、S1902にて選択されたテンプレートのうち、メイン画像に適したテンプレートを、テンプレート選択部1803により選択する。なおこのとき、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得され、動き量が大きい画像データであり、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含まない。そのため、CPU101は、まず、小さい正方形のメインスロットを有するテンプレートを選択する。そして、CPU101は、選択したテンプレートのメインスロットに収まるようにメイン画像に対してトリミングを行った場合、メイン画像に含まれるオブジェクトが切れるか否かを判定する。CPU101は、メイン画像に含まれるオブジェクトが切れないと判定した場合、小さい正方形のメインスロットを有するテンプレートを選択したまま、S1914に進む。一方、CPU101は、メイン画像に含まれるオブジェクトが切れると判定した場合、メイン画像のアスペクト比と同様のアスペクト比である、小さい矩形のメインスロットを有するテンプレートを選択し、S1914に進む。
S1914では、CPU101は、S1912にて選択されたテンプレートのうち、サブ画像に適したテンプレートを、テンプレート選択部1804により選択する。このとき、CPU101は、各サブ画像のアスペクト比と同様のアスペクト比であるサブスロットを有するテンプレートを選択しても良いし、正方形のサブスロットを有するテンプレートを選択しても良い。なお、メイン画像基準のテンプレート選択と同様に、サブ画像が「人物」以外のカテゴリのオブジェクトを含むか含まないかに応じて選択するテンプレートを変更しても良い。なお、このとき、どのサブスロットにどのサブ画像が配置されるかも特定される。
S1913では、CPU101は、S1902にて選択されたテンプレートのうち、メイン画像に適したテンプレートを、テンプレート選択部1803により選択する。なおこのとき、メイン画像に対応する画像データが、動画データからフレームが切り出されることで取得され、動き量が大きい画像データであり、且つメイン画像が「人物」以外のカテゴリのオブジェクトを含む。そのため、CPU101は、メイン画像のアスペクト比と同様のアスペクト比である、小さい矩形のメインスロットを有するテンプレートを選択し、S1915に進む。
S1915では、CPU101は、S1913にて選択されたテンプレートのうち、サブ画像に適したテンプレートを、テンプレート選択部1804により選択する。このとき、CPU101は、各サブ画像のアスペクト比と同様のアスペクト比であるサブスロットを有するテンプレートを選択しても良いし、正方形のサブスロットを有するテンプレートを選択しても良い。なお、メイン画像基準のテンプレート選択と同様に、サブ画像が「人物」以外のカテゴリのオブジェクトを含むか含まないかに応じて選択するテンプレートを変更しても良い。なお、このとき、どのサブスロットにどのサブ画像が配置されるかも特定される。
このようにして、S425では、CPU101は、レイアウト画像の作成に用いるテンプレートと、テンプレートのいずれのスロットにいずれの画像をレイアウトするかを決定する。具体的には、CPU101は、選択したテンプレートに含まれる各スロットの情報と、各スロットにレイアウトされる画像に対応する画像データと、を紐づけて管理する。
このように本実施形態では、CPU101は、例えば「人物」以外のカテゴリのオブジェクトのように、位置情報を取得できないオブジェクトが含まれる画像を配置する場合は、当該画像とアスペクト比が同様のスロットを有するテンプレートを選択する。このような形態とすることで、トリミングにより、位置情報を取得できないオブジェクトが切れてしまうことを抑制できる。
また、このように本実施形態では、CPU101は、動画データからフレームを切り出すことで取得され、動き量が大きい画像データによって表わされる画像を配置する場合は、小さいスロットを有するテンプレートを選択する。このような形態とすることで、画像のブレやボケがユーザに与える視覚的な効果を抑制できる。なお、CPU101は、動画データからフレームを切り出すことで取得された画像データによって表わされる画像を配置する場合は、画像データの動き量の多寡にかかわらず、小さいスロットを有するテンプレートを選択しても良い。
なお、上述では、メイン画像に対応する画像データが動画データから取得された画像データか否かの判定(動画判定)やメイン画像に「人物」以外のカテゴリのオブジェクトが含まれるか否かの判定(オブジェクト判定)に基づいてテンプレートの選択を行う形態を説明した。しかしながら、本発明はこの形態に限定されない。例えば、動画判定やオブジェクト判定に基づくテンプレートの選択を行わず、アルバムのモードにのみ基づいてテンプレートの選択を行っても良い。この場合、CPU101は、アルバム作成条件指定部201から、アルバムのモードに関する情報を取得し、アルバムのモードを特定する。そして、CPU101は、テンプレート設定部214から取得した複数のテンプレートから、特定したモードに対応するテンプレートを選択するフィルタリング処理を行う。こうして抽出されたテンプレートが画像レイアウト部1502に取得されることで、選択されたテンプレートが用いられたアルバムが作成される。この場合、CPU101は、特定したアルバムのモードが「人物」のモードである場合は、図10に示すような矩形のスロットを有するテンプレート及び、図7に示すような矩形以外のスロットを有するテンプレートを抽出する。そして、CPU101は、トリミングによりオブジェクトが切れないならば、矩形以外のスロットを有するテンプレートを優先して選択し、トリミングによりオブジェクトが切れるならば、矩形のスロットを有するテンプレートを優先して選択する。また、CPU101は、特定したアルバムのモードが「人物」以外のモードである場合は、図10に示すような矩形のスロットを有するテンプレートを抽出して選択する。すなわち、特定したアルバムのモードが「人物」以外のモードである場合は、メイン画像に「人物」以外のカテゴリのオブジェクトが含まれるか否かにかかわらず、矩形のスロットを有するテンプレートを選択する形態であっても良い。
(他の実施形態)
本発明は上述した実施形態に限定されるものではない。例えば、上述した実施形態では、上述した画像選択処理が、アルバムの自動レイアウト処理に用いられる形態を説明したが、例えば、印刷対象の画像データを自動でユーザに提示する提示機能等に用いられても良い。すなわち、上述した画像選択処理が、当該提示機能を実行するプログラムによって実行されても良い。また、例えば、単葉の印刷物を作成する形態に対しても本発明を適用することができる。この場合、CPU101は、例えば、上述の実施形態における1つの見開きを1枚の単葉の印刷物とみなして、処理を行えばよい。また、単葉の印刷物には、一般に、1枚の画像データしかレイアウトされないため、単葉の印刷物用のテンプレートには、スロットが1つのみあるものとする。このスロットは、メインスロットとみなしてもサブスロットとみなしても良い。なお、シーン毎の印刷物の枚数を設定可能な構成であれば、CPU101は、上述の実施形態における1つの見開きを設定された枚数の単葉の印刷物とみなして、処理を行っても良い。この場合、例えば1枚目の単葉の印刷物のテンプレートにあるスロットをメインスロット、2枚目以降の単葉の印刷物のテンプレートにあるスロットをサブスロットとしてみなしても良い。
また、上述した実施形態では、自動レイアウト処理を実行する画像処理装置が、ローカル環境に存在する画像処理装置である形態を説明したが、例えば、ネットワークサーバ上の画像処理装置であってもよい。この場合は、ユーザが当該画像処理装置に画像データをアップロードすることで、当該画像処理装置は自動レイアウト処理を実行可能となる。
上述の実施形態では、画像得点化等の評価において、点数を付すことで評価を行っていたが、この形態に限定されない。すなわち、得点を用いずに評価を行っても良く、例えば、評価が高い順に「◎」、「○」、「△」、「×」の評価を付し、付された評価によってシーン分類や画像選択等が行われるような形態であっても良い。
上述の実施形態では、画像選択処理において、指定オブジェクトと指定属性の両方を参照する形態としたが、この形態に限定されない。例えば、指定属性の設定を行わない形態でも良い。その場合、例えば、S1211では、CPU101は、指定オブジェクトを含み、且つ得点が一番高い画像データを1枚選択する。また、例えば、指定オブジェクトの設定を行わない形態でも良い。その場合、例えば、S1211では、CPU101は、指定属性を含み、且つ得点が一番高い画像データを1枚選択する。
上述の実施形態では、アルバムのモードに対応するカテゴリのオブジェクトを含む画像をレイアウト画像に配置するために、当該画像を表わす画像データの得点が高くなるように制御したり、当該オブジェクトを指定オブジェクトとして画像選択処理を実行したりした。しかしながら、この形態に限定されず、例えば、当該画像を表わす画像データの得点が高くなるようにする制御と、当該オブジェクトを指定オブジェクトとして画像選択処理を実行する制御のうちどちらかのみが実行される形態であっても良い。すなわち例えば、当該画像を表わす画像データの得点が高くなるように制御し(得点を加算し)、画像選択処理では、得点のみ(又は得点と指定属性のみ)を参照する形態とする。このような形態によっても、アルバムのモードに対応するカテゴリのオブジェクトを含む画像を表わす画像データを、画像選択処理において優先的に選択することが可能である。
なお、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。