以下、添付図面を参照して本発明の実施の形態を説明する。尚、以下の実施の形態は本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。以下の実施形態では、情報処理装置上で、アルバム作成のためのアプリケーションプログラム(以下、「アルバム作成アプリ」ともいう)を動作させ、自動レイアウトを生成するまでの手順について説明する。以下に説明する画像とは、特に断りが無い限り、静止画、動画、動画中のフレーム画像、また、SNS(ソーシャル・ネットワーキング・サービス)上の静止画と動画と動画中のフレーム画像を含む。
(画像処理装置のハードウェア構成)
図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上に所定の情報を入力するのに用いられる。本実施形態では、キーボード106を介してアルバムの見開き数を入力する。マウス107は、入力装置の1つであり、例えば、ディスプレイ105に表示されたUI上のボタンをクリックするのに用いられる。
データ通信装置108は、プリンタやサーバなどの外部装置と通信するための装置である。例えば、自動レイアウトのデータは、データ通信装置108を介してPCに接続された不図示のプリンタやサーバに送信される。また、データ通信装置108は、サーバやSNS(ソーシャルネットワーキングサービス)上の静止画データや動画データを受信する。
データバス109は、上述した各部(102〜108)とCPU101とを接続する。
(画像処理装置の機能的な構成)
次に、画像処理装置の機能的な構成を説明する。図2は、本実施形態のアルバム作成アプリケーションのソフトウェアブロック図である。本実施形態では、HDD104に保存されたアルバム作成アプリケーションが、ディスプレイ105に表示されているアプリケーションのアイコンがユーザによりマウス107を使ってダブルクリックされることにより起動する。アルバム作成アプリケーションは様々な機能を持つが、本実施形態では、特に自動レイアウト処理部219により提供される自動レイアウト機能に関して説明する。図2に示すように、アプリケーションは、アルバム作成条件指定部201と、自動レイアウト処理部219と、を含む。自動レイアウト機能は、撮影された写真をその内容や属性に基づいて分類し、あるいは選択して写真をレイアウトし、ディスプレイ105に表示するアルバム画像を生成するための機能である。
アルバム作成条件指定部201は、マウス107によるUI操作に応じてアルバム作成条件を自動レイアウト処理部219に指定する。本実施形態では、アルバム作成条件として、主人公、見開き数、テンプレートの種類、アルバム作成のモード、画像補正をするか否かを指定する。さらには、画像に写っているオブジェクトの何を優先的に配置するかといったオブジェクト優先条件を指定できる。画像・動画の指定は、たとえば撮影日時など個別の画像データの付随情報や属性情報による指定であってもよいし、デバイスやディレクトリの指定など、画像・動画データを含むファイルシステムの構造に基づく指定であってもよい。なお見開きとは、たとえば表示においてはひとつの表示用ウィンドウに相当し、印刷においては、異なるシートに印刷された、互いに隣接する1対のページに相当する。
動画取得部202は、アルバム作成条件指定部201により指定された動画群(動画データ群)をHDD104から取得する。ここでいう動画群とは、1つのアルバム作成の際に動画から切り出された画像をレイアウトに利用する候補動画群を指す。取得された動画データは解析できるようにOSに標準搭載されている動画のデコーダを使って圧縮された状態から展開しておく。
動画解析部203は、動画取得部202で取得された動画データを解析する。解析する項目としては、取得した動画の圧縮情報から動き量の多い・少ないを判定する。または、撮影者のカメラワーク(ズームやパーンなど)からユーザの注目フレームを特定することが考えられる。更には、人の顔検出などのオブジェクト検出や、ブレボケ解析などを上記解析に組合せて得点化してもよい。解析処理により、動画のどこに良いショットが含まれるかを特定することができる。
フレーム取得部204は、動画解析部203で解析された結果に基づいて、動画からフレームを切り出して画像データとしてHDD104に保存する。その際、切り出された画像データと関連付けて、動画解析部で判定された動き量、カメラワーク、得点を保存する。保存する際に、判定された得点からアルバムに利用する画像、アルバム作成後にユーザが差し替え利用するための候補画像というように用途も関連付けて保存してもよい。
画像取得部205は、アルバム作成条件指定部201により指定された画像群(画像データ群)をHDD104から取得する。なお、動画取得部202は、データ通信装置108を介してネットワーク上のサーバやSNS等の記憶領域から画像群を取得しても良い。ここでいう画像群とは、1つのアルバム作成の際に利用される候補画像群を指す。例えば、アルバム作成条件指定部201において、レイアウト対象となる画像が撮影された日時の条件としてXX年1月1日〜XX年12月31日が指定された場合は、XX年1月1日〜XX年12月31日に撮影された全ての画像データを画像群として取得する。
HDD104等の記憶領域に保存されている画像としては、静止画像や、動画から切り出された切り出し画像が挙げられる。静止画像や切り出し画像は、デジタルカメラやスマートデバイス等の撮像デバイスから取得したものである。撮像デバイスは、画像処理装置100が備えていてもよいし、外部装置が備えるものであってもよい。なお、撮像デバイスが外部装置である場合は、画像はデータ通信装置108を介して取得する。また、静止画像や切り出し画像は、データ通信装置108を介してネットワークやサーバから取得した画像であってもよい。ネットワークやサーバから取得した画像としては、ソーシャルネットワーキングサービス画像(以下、「SNS画像」という)が挙げられる。CPU101によって実行されるプログラムは、各画像に対して、画像に付随したデータを解析して保存元を判定する。SNS画像は、アプリケーションを介してSNSから画像を取得することで、アプリケーション内で取得先を管理してもよい。画像は、上述した画像に限定されるものではなく、他の種類の画像であってもよい。
画像変換部206は、画像取得部205によって取得された画像データの画素数情報や色情報を変換する。なお、画像変換部206によって、どのような画素数情報や色情報の画像データへの変換が行われるかは予め決められており、その情報は、アルバム作成アプリ又はアルバム作成アプリが用いるパラメータファイルに保存されている。本実施形態では、画像取得部205によって取得された画像データを、画素数が短辺420画素、色情報がsRGBである画像データに変換する。
画像解析部207は、画像データの解析処理をする。本実施形態では、画像解析部207は、画像変換部206で変換済みの画像データの解析処理をする。具体的には、変換済みの画像データから特徴量を取得し、変換済みの画像データにおけるオブジェクト検出、顔検出、検出した顔の表情認識、検出した顔の個人認識処理(識別処理)を実行する。さらに、画像取得部205によって取得された変換前の画像データに付随したデータ(例えば、Exif情報)から、撮影日時情報の取得を行う。撮影日時情報として、Exif情報からの取得に限らず、画像データを作成または更新した日時の情報が用いられてもよい。また、サーバやSNSに画像データをアップロードまたはサーバやSNSから画像データをダウンロードした日時の情報が用いられてもよい。これらの日時の情報も、以下では撮影日時情報として取り扱う。
画像分類部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に表示される。
入れ替え候補画像検索部220は、レイアウトされた画像の入れ替えを行う場合に、画像データ群から入れ替え候補画像となる画像を検索し、検索条件に合致した画像を抽出する画像入れ替え制御部として機能する。具体的には、アルバム作成条件指定部201から指定されたオブジェクト優先条件と、画像選択部213と画像特典部210の処理結果を参照して候補画像を抽出する。その結果を受け、レイアウト部215及びレイアウト情報出力部218によりレイアウトデータが生成され、表示部であるディスプレイに表示されたレイアウト画(レイアウト結果)に基づき、レイアウト画内の画像を入れ替える制御を行う。詳細は、図16以降を用いて後述する。
本実施形態に係るアルバム作成アプリケーションは、画像処理装置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によってクリックすることで、ユーザは、各モードに対応する複数のアイコンのなかのいずれかのアイコンを選択可能である。そして、選択されたアイコンに対応するモードが、作成対象のアルバムのモードとして設定される。なお、本実施形態では、アルバムのモードを、モード指定部307を介してユーザが選択する形態を説明するが、例えば、アルバム作成アプリのプログラムにより、CPU101が自動でアルバムのモードを選択する形態であっても良い。この場合、例えば、CPU101は、画像取得部205によって取得された画像データ群を解析することにより、当該画像データ群に一番多く含まれるカテゴリのオブジェクトを特定する。そして、CPU101は、特定されたカテゴリに応じたモードを選択する。
なお、オブジェクトとは、個体(人物の場合は個人)の単位でもよく、図3に示す「人」「動物」のように生物の種類による分類単位であってもよい。また、「家族」「ペット」のように個体が属するグループ単位であってもよい。つまり、オブジェクトは、個体の単位だけでなくその個体が分類されるカテゴリ単位でもよい。オブジェクトの単位は、識別可能なレベルに応じて、モード指定部307のオブジェクトの単位を設定するとよい。
このモード指定部307により指定された主要オブジェクトはレイアウト時における優先度が高いものとして、各画像に得点を付与する際に得点が上乗せされる。また、図17〜図20を用いて後述する入れ替え候補画像の抽出条件においても用いられるとよい。
チェックボックス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を割り振って、新規の人物として顔辞書データベースに登録する。また、人物だけでなく、動物等のオブジェクトの識別を行ってもよい。このS410では、オブジェクトの識別結果に基づき各画像に識別情報が付与される。なお、識別情報としては、個人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サーバや、HDD等)を示す情報であっても良い。すなわち、本実施形態において属性とは、画像データの取得元を示す情報とも言える。また、上述した方法以外で属性を区別するものとしてもよいし、デジタルカメラで撮影した静止画像と、スマートデバイスで撮影した静止画像などのように、各属性をさらに詳細に区別してもよい。なお、各画像データの属性は、各画像データが各属性に該当するか否かを示すフラグによって管理されても良い。
オブジェクト分類505は、各画像データが表す画像に含まれるオブジェクトのカテゴリ(種類)及び、カテゴリの信頼度を示す。なお、CPU101は、各画像データが表す画像に含まれるオブジェクトを、例えば、Adaboostによって検知することができる。また、このとき、各画像データが表す画像に含まれるオブジェクトのカテゴリ及び、カテゴリの信頼度も検知される。Adaboostはパターンを判別する弱判別器を連続で接続し、1つの強判別器を形成する。そのため、ある画像データにおける所定カテゴリのオブジェクトの信頼度は、Adaboostで予めアルバム作成アプリが学習し、且つ当該所定のカテゴリに対応するパターンと一致する弱判別器を、当該画像データが表す画像が多く含む場合に高くなる。なお、ここでは、Adaboostを用いてオブジェクト検出や信頼度の取得を行う例を説明した。しかしながら、DeepNeuralNetworkをはじめとするConvolutionalNeuralNetworkを用いてオブジェクト検出や信頼度の取得を行う形態であってもよい。
本実施形態では、「人物」、「動物」、「料理」の3カテゴリのオブジェクトが検出されるものとし、オブジェクト分類505には、各画像データが表す画像において検出されたオブジェクトのカテゴリを示す情報が格納されている。すなわち、オブジェクト分類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)に示す特徴に適合する画像データが集められる。そして、画像解析部207により、集められた各画像データにおける顔画像の数、顔画像の位置、顔画像のサイズ等の特徴量が抽出される。そして、抽出された特徴量の平均値と標準偏差とを、各シーン種類および各スロット種類(メインスロットとサブスロット)に対して求めることで、スロット特徴テーブルが作成される。なお、スロット特徴テーブルは、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の画像に対しては所定の得点を加えるようにしてもよい。また、画素数が高い画像は、アルバムにレイアウトした際にジャギーが少ないので、画素数が高い画像を表す画像データに対しては所定の得点を加えるようにしてもよい。
図8(B)は、レイアウト得点化による得点結果の一例を示している。表800は、各画像ID801の画像データに対して、メインスロットとサブスロットのそれぞれについて得点化がされた結果を示しており、各画像ID801の画像に対して得点802が登録されている。例えば、図8(B)では、画像ID1は、メインスロット用として20点が付与され、画像ID2は、メインスロット用として45点が付与されている。これは、つまり、メインスロット用としては、画像ID2の方がユーザの判断基準により近いということを表している。
また、本実施形態では、CPU101は、上述のようにして得点が設定された場合、動画データから切り出されることで取得された画像データのメインスロット用とサブスロット用の両得点に対して、動画解析部203による解析結果に応じた得点を加算する。なお、CPU101は、得点化が行われた画像データのうち、いずれの画像データが、動画データから切り出されることで取得された画像データなのかを、図5のテーブルの画像属性503を参照することで特定することができる。
なお、動画データから切り出すことで取得した画像データに加点するだけでは、当該画像データの点数は、静止画データから取得した画像データよりも、一律で高くなってしまう可能性が高い。そのため、CPU101は、例えば、動画データから切り出すことで取得した各画像データに加算された各得点の平均値を、動画データから切り出すことで取得した全画像データから減算する、又は、静止画データから取得した全画像データに加算しても良い。このような形態とすることで、動画データから切り出すことで取得した画像データのうち、加算された得点が高い画像データについては、静止画データから取得した画像データに加算された得点より多くの得点が加算される。すなわち、動画データから切り出すことで取得した画像データのうち、加算された得点が高い画像データがより優先的に選択されるように、得点化が行われる。
S417では、CPU101は、画像取得部205により取得された全ての画像データに対してS416の画像得点化が終了したか否かを判定する。終了していない場合(S417でNo)、S416に戻り、まだ処理の対象となっていない画像データに対して画像得点化が実行される。終了している場合(S417でYes)、S418に移行する。
本実施形態では、CPU101は、画像レイアウト部215により、複数のシーンのそれぞれに含まれる画像データが表す画像を、複数のテンプレート(複数の見開き)のそれぞれにレイアウトして、複数のレイアウト画像を作成する。そのため、複数のシーンの数と、複数のテンプレートの数(所定数の見開き数)が一致する必要がある。
そこで、S418では、CPU101は、S412のシーン分割により得られたシーン数(サブ画像群の数)が見開き数入力部211により入力された見開き数と同じか否かを、見開き割当部212により判定する。同じでない場合(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でカウントされた処理回数に応じて、画像選択処理において選択される画像データの属性を設定する。なお、本実施形態では、アルバムに多様な画像データを配置するために、静止画データから取得された画像データ(属性が「静止画」)より、動画データから取得された画像データ(属性が「動画」)を優先的に選択するものとする。また、SNSサーバにアップロードされている画像データ(属性が「SNS」である画像データ)は、ユーザにより意図的に選択されてアップロードされた画像データであり、ユーザが気に入っている画像データである可能性が高い。そのため、本実施形態では、静止画データから取得された画像データより、SNSサーバから取得された画像データを優先的に選択するものとする。そこで、本実施形態では、画像属性設定部1106は、ループカウンタ1103でカウントされた処理回数が0の場合は、「SNS」を指定属性とし、属性が「SNS」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が1の場合は、「動画」を指定属性とし、属性が「動画」である画像データから画像データが選択されるように設定する。そして、ループカウンタ1103でカウントされた処理回数が2以上の場合は、「静止画」を指定属性とし、属性が「静止画」である画像データから画像データが選択されるように設定する。このような形態とすることで、各スロットに配置される画像データの属性を制御することができる。なお、画像選択処理において選択される画像データの属性の設定は、例えば、画像選択処理において既に選択されている画像データの枚数に応じて行われても良い。例えばその場合、画像属性設定部1106は、画像選択処理において既に選択されている画像データが0の場合は、「SNS」を指定属性とし、属性が「SNS」である画像データから画像データが選択されるように設定する。そして、画像選択処理において既に選択されている画像データが1の場合は、「動画」を指定属性とし、属性が「動画」である画像データから画像データが選択されるように設定する。そして、画像選択処理において既に選択されている画像データが2以上の場合は、「静止画」を指定属性とし、属性が「静止画」である画像データから画像データが選択されるように設定する。
なお、ループカウンタ1103でカウントされた処理回数や、選択済み画像データの枚数に応じた属性は、上述の形態に限定されない。上述では、「SNS」、「動画」、「静止画」の順で設定されたが、例えば、「動画」、「SNS」、「静止画」の順で設定されても良い。また、属性を指定しない設定があっても良い。その場合、指定属性は「なし」となり、いずれの属性の画像データが選択されても良いように設定される。
区間情報設定部1107は、画像群取得部1102によって取得されたサブ画像群に含まれる画像データを、分割部1105で分割された区間ごとにグループ分けして、各区間において撮影された画像データの撮影情報、得点等の情報を取得する。
モード設定部1108は、アルバム作成条件指定部201で指定された、アルバムのモード(「人物」、「動物」、「料理」のいずれか)を設定する。モード設定部1108は、設定されたモードに対応するオブジェクトを含む画像がテンプレートに配置されるように制御する。
画像選択部1109は、得点軸設定部1104で設定された得点軸と、モード設定部1108で設定されたモードと、区間情報設定部1107で管理された、各区間における画像データの得点とに基づいて、画像選択処理を実行する。具体的には、画像選択部1109は、各区間における複数の画像データに含まれ、指定オブジェクトを含む画像を表し、且つ指定属性である画像データのうち、得点が一番高い画像データを1枚選択する。指定オブジェクトは、得点だけに依存せずに画像データを選択するために設定され、指定オブジェクトが設定されている場合、以降の画像選択処理では、指定オブジェクトを含む画像を表す画像データが選択されることになる。例えば、指定オブジェクトが「動物」のカテゴリのオブジェクトである場合、以降の画像選択処理では、「動物」のカテゴリのオブジェクトを含む画像を表す画像データが選択される。なお、複数のオブジェクトを指定オブジェクトとして設定可能である。
なお、このとき参照される得点は、得点軸設定部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枚選択される。そのため、本実施形態では例えば、指定オブジェクトを含まない画像を表し、得点が高い画像データより、指定オブジェクトを含む画像を表し、得点が低い画像データの方が優先されて選択されることになる。また、本実施形態では例えば、指定属性でないが得点が高い画像データより、指定属性であるが得点が低い画像データの方が優先されて選択されることになる。
このように、本実施形態では、単に得点だけを参照して画像データを選択するのではなく、指定オブジェクトや指定属性を参照して画像データを選択する。このような形態とすることで、サブ画像群に条件に合致する画像データがあれば、指定オブジェクト(主に、設定されたモードに対応するカテゴリのオブジェクト)を含む画像を表わす画像データをより確実に選択することができる。すなわち、指定オブジェクトを含む画像がレイアウトされたレイアウト結果を、より確実に出力することができる。また、サブ画像群に条件に合致する画像データがあれば、指定属性の画像データをより確実に選択することができ、指定属性の画像データによって表わされる画像がレイアウトされたレイアウト結果を、より確実に出力することができる。
なお、CPU101は、各画像データが表わす画像が指定オブジェクトを含むか否かや、各画像データの属性や得点を、各画像データの画像解析情報500を参照することで特定することができる。すなわち、CPU101は、指定オブジェクトを含むことを示す情報が画像解析情報500に含まれていれば、画像データが示す画像が指定オブジェクトを含むことを特定することができる。言い換えれば、指定オブジェクトに対応するカテゴリの情報がオブジェクト分類505に含まれていれば画像データが示す画像が指定オブジェクトを含むことを特定することができる。また、CPU101は、指定属性であることを示す情報が画像解析情報500に含まれていれば、(言い換えれば、指定属性の情報が画像属性503に含まれていれば)画像データが指定属性であることを特定することができる。そのため、S1212では、CPU101は、着目区間において撮影された各画像データの画像解析情報500のうちオブジェクト分類505の領域に指定オブジェクトのカテゴリが含まれ、且つ画像属性503の領域に指定属性が含まれる画像データを選択する。
S1213では、CPU101は、着目している区間において撮影された画像データから、画像データを1枚選択する。なお、ここでは、指定オブジェクトが設定されていないため、指定オブジェクトは参照されない。そのため、単に指定属性である画像データのうち、得点が一番高い画像データが1枚選択される。
なお、S1212及びS1213では、条件に合う画像データがない場合は、いずれの画像データも選択されず、次のステップに進む。
S1214では、CPU101は、類似判定部1110により、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は、選択されたテンプレートのうち、メインスロットの位置が、S424で選択された画像データのうちメイン画像となる画像データの撮影日時の順番に対応するテンプレートを選択する。すなわち、例えば、メイン画像となる画像データの撮影日時順が3番目であった場合には、メインスロットが、全スロットのうち左から3番目のスロットであるテンプレートが選択される。なお、選択画像ソート部1303により画像データが撮影日時順にソートされているため、テンプレート選択部1304は、メイン画像となる画像データの撮影日時の順番を把握することができる。また、テンプレート選択部1305は、このようにして選択したテンプレートのうち、メイン画像が配置されるスロットのアスペクト比が、メイン画像のアスペクト比と一致する(又は近い)テンプレートを最終的に選択する。
テンプレート選択部1305は、テンプレート選択部1304により選択されたテンプレートのうち、サブ画像に適したテンプレートを選択する。テンプレート選択部1305は、具体的にはまず、サブスロットの位置が、S424で選択された画像データのうちサブ画像となる画像データの撮影日時の順番に対応するテンプレートを選択する。また、テンプレート選択部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)は、自動レイアウト処理を終了する。
本実施形態では、アルバムのモードに応じてレイアウトに利用する画像を変更することにより、指定されたモードの主要オブジェクトを含むレイアウトを作成することができる。また、動画から切り出されることで取得された画像データの得点化や選択の方法が、動画解析時に取得した動き量や得点に応じて変更される。よって、動画解析時の結果を利用した画像選択が可能となり、動画ならではのよさをレイアウトに反映することができる。
(自動レイアウト結果)
以上の処理により、レイアウトデータが生成され、ディスプレイ105にレイアウト画が表示される。図16は、自動レイアウト処理により、レイアウト画であるフォトアルバムの模式図を示す。図16では、フォトアルバムアプリケーションによる表示領域1601のうち、上部にフォトアルバムの各ページのサムネイルが表示されるサムネイル表示領域1602が設けられ、下部にレイアウト画であるフォトアルバム1603の表示領域が設けられている。
サムネイル表示領域1602において、ユーザがサムネイルの中から所望のサムネイルを選択することにより、そのページが選択されて選択ページ1604として示されると共に、下部にその選択ページのフォトアルバム1603が表示される。図16では3〜4ページが選択ページ1604であり、このページがフォトアルバム1603の表示領域に表示されている。フォトアルバム中の写真スロット1605には、レイアウト処理により決定された写真が割り当てられている。フォトアルバム1603を編集する場合は、この表示画面にて編集操作を行うことが可能となる。
本実施形態では、レイアウト画像の編集画面には、図15のような、編集後のアルバム内の主要オブジェクトの出現頻度を調整するUI1501が表示されるものとする。UI1501には、作成したアルバム(編集前のアルバム)のモードに応じたコンテンツが表示される。具体的には、編集後のアルバムにおける、アルバムのモードに対応するオブジェクトを含む画像の出現頻度(テンプレートに配置される画像として選択される頻度)を調整するためのバーが表示される。例えば、作成したアルバムのモードが「動物」である場合、編集後のアルバムにおける、「動物」のオブジェクトを含む画像の出現頻度を調整するためのバー1504が表示される。なお、本実施形態では、編集後のアルバムにおける、「人物」のオブジェクトを含む画像の出現頻度を調整するためのバー1502については、アルバムのモードがいずれであっても表示されるものとする。なお本実施形態では、「人物」以外(「動物」や「料理」)のオブジェクトを含む画像の出現頻度を調整するためのバーは、アルバムのモードが「動物」や「料理」である場合のみ表示される形態とした。しかしながら、この形態に限定されず、アルバムのモードがいずれであっても表示される形態としても良い。
ここでは、作成したアルバムのモードが「動物」である場合を例にして説明する。ユーザは、掴み1503や掴み1505を移動させるための入力を行うことで、編集後のアルバムにおける、各バーに対応するオブジェクトを含む画像の出現頻度を調整することができる。本実施形態では、「多め」、「普通」、「少なめ」の3種類の設定値が用意されているものとし、ユーザの入力に応じた設定値(掴み1503や掴み1505の位置に応じた設定値)に応じて、各画像の出現頻度が調節される。ユーザによってOKボタン1506が押下されると、設定された条件に基づいてアルバムが編集される。すなわち、設定された条件に基づいて、再度自動レイアウト処理が行われる。具体的には、S416からS428の処理が再度行われる。なおこのとき、編集前のアルバム作成時のS401〜S415の処理で取得された各情報は、適宜再利用される。ユーザによってキャンセルボタン1507が、押下されると、出現頻度の調整をキャンセルし、表示画面1501が閉じられる。なお、例えば、再度の自動レイアウト処理では、S423からS428の処理が再度行われても良い。この場合、S423も画像選択処理では、編集前のアルバム作成時のS416で付された得点が参照される。
さらに、本実施形態では、画像の入れ替え操作を実行することもできる。画像の入れ替えに関する編集操作や制御については、図17〜図23を用いて後述する。
全ての編集が終わったら、ユーザは編集後のフォトアルバムを注文するために、ボタン1606を選択する。このボタンを押すことにより、編集したアルバムがインターネット経由でショッピングカートにアップロードされる。つまり、ネットワークを介して接続されている特定の会社のサーバにフォトアルバムのデータがアップロードされる。そして、ユーザは、その会社が提供しているショッピングサイトを利用し、そのフォトアルバムを注文することができる。
(画像の入れ替え)
次に、レイアウトされた画像の入れ替え方法について説明する。図17は、画像入れ替え制御を行う際のフローチャートを示し、CPU101が画像入れ替え制御部200(図2参照)として機能することにより実行される。
まず、S1701で、ユーザにより入れ替えたい画像(以降、入れ替れ対象画像と呼ぶ)が選択されることにより、CPU101はユーザにより選択された対象スロットの情報を受信する。具体的には、複数あるスロット1605のそれぞれに割り当てられた画像のうちいずれか一つをユーザが選択する。なお、本フローにおいては、このステップの前にユーザによりこの画像の入れ替えの指示が入力されているものとする。これは、表示画面内の画像入れ替えボタン等のアイテムがユーザにより選択されることにより、画像入れ替えが要求されるものとする。ただし、画像入れ替え要求については、ユーザが入れ替えたい画像を選択してから入力されてもよい。この場合は、所定の画像をユーザが選択することにより「画像入れ替え」アイコンが表示され、そのアイコンをユーザが選択することによりCPU101は画像入れ替え要求を受け取る。なお、画像入れ替え要求を受け取ることにより、CPU101はその入れ替え対象のスロットの位置情報と選択された画像の情報を取得する。ここで取得する画像の情報とは、その画像内に写っているオブジェクトの個人IDやカテゴリ情報等の識別情報や、得点等が含まれる。
S1702では、CPU101は、特定のオブジェクトの優先度に関する設定情報を取得する。ここでは、図3を用いて説明したオブジェクトのモード設定に関する設定情報を取得する。これにより、優先するオブジェクトの情報を取得することができる。
S1703では、CPU101は、選択された画像を、画像入れ替えのための入れ替え候補画像を探す起点の画像(以降、候補起点画像と呼ぶ)に設定する。そして、S1704で、CPU101はこの候補起点画像の近傍から入れ替え候補画像をリストアップし、その中から入れ替え候補画像を検索し抽出する。この入れ替え候補画像の抽出に関する処理の詳細は、図19を用いて後述する。なお、以降の説明においては、入れ替え候補画像を単に候補画像と呼ぶ場合もある。
S1705では、S1704の抽出結果を画像入れ替えのための候補画像として表示させる。図18にS1705で表示されるユーザインターフェースの例を示す。候補画像を示すユーザインターフェース1801には、S1704で抽出された4つの候補画像1802〜1805が表示されている。さらに、入替対象スロットの前のスロットの候補画像を表示するボタン(以降、前候補ボタンと呼ぶ)1808と、入替対象スロットの後のスロットの候補画像を表示するボタン(以降、後候補ボタンと呼ぶ)1809が設けられている。その他に、候補画像の変更を要求する別候補ボタン1806と入れ替え作業を中断するキャンセルボタン1807が設けられている。
S1706は、前候補ボタン1808が選択されたかを判定し、前候補ボタン1808が選択された場合は(S1706でYESの場合)、S1707へ進む。S1707では、当初ユーザが選択した入替対象スロットの前に位置するスロットに割り当てられている画像を候補起点画像とする。
S1706において、前候補ボタン1808が選択されなかった場合は(S1706でNOの場合)、S1708へ進む。S1708では、後候補ボタン1809が選択されたかを判定する。S1708において、後候補ボタン1809が選択された場合は(S1708でYESの場合)、S1709へ進む。S1709では、当初ユーザが選択した入替対象スロットの後に位置するスロットに割り当てられている画像を候補起点画像とする。
S1708において、後候補ボタン1809が選択されなかった場合は(S1708でNOの場合)、S1710へ進む。S1710では、別候補ボタン1806が選択されたかを判定する。S1710において、別候補ボタン1806が選択された場合は(S1710でYESの場合)、ユーザが望む候補画像がないと判断され、S1704へ戻る。S1704では再度候補画像の検索を行う。この際、CPU101は前回入れ替え候補として選ばれていた画像を除いて候補画像の検索を行う。
S1710において、別候補ボタン1806が選択されなかった場合は(S1710でNOの場合)、S1711に進む。S1711では、ユーザにより候補画像1802〜1805のうちの一つが選択されたか判定する。このステップにおいて1つの候補画像が選択された場合(S1711でYESの場合)は、ユーザの望む候補画像があったと判断されS1712に進む。S1711でNOの場合は、再度S1706に戻る。
S1712において、CPU101は、ユーザにより選択された候補画像を、入替対象スロットの画像に割り当てる。このS1712のステップにより、CPU101は選択された画像が割り当てられた新たなレイアウト画を表示画面に表示させる。なお、S1706〜S1711の処理ループを構成することで、ユーザからの指示を受け取るまで、次の処理へ移るのを待機することができるようになっている。また、図17には示されていないが、キャンセルボタン1807がユーザにより押された場合は、その時点で、CPU101はこの一連の画像入れ替え処理を中断することができる。
(入れ替え候補画像の抽出処理の詳細)
次に、図19を用いて、入れ替え候補画像の抽出に係るフローを説明する。図19はS1704の処理ステップの詳細を示すフロー図である。S1704では、CPU101が、候補起点画像と時間的に近傍にある画像を対象として、候補画像の検索を実施し候補画像を抽出する。ここで、時間的に近傍の画像とは、図9で説明した、各ロットに対応した画像撮影区間内にあるサブ画像群であればよい。または、ある所定期間の時間内に収まる画像群としても良い。
図19では、図18に示すように4枚の候補画像を抽出するものとし、また、4枚の候補画像の抽出条件として図20に示す条件テーブルを使う例を説明する。図20は、図3のモード指定部307において、ユーザにより指定された主要オブジェクトの優先度に関する設定を考慮した場合の抽出条件を示す表である。例えば、図3のモード指定部307において「人物」が選択された場合、図20における「人物」の欄の抽出条件を用いる。また、図3のモード指定部307において「動物」が選択された場合、図20における「動物」の欄の抽出条件を用いる。このように、「人物」モードと「動物」モードとでは、抽出条件が異なっている。
図19では、まず、S1901において、オブジェクトの優先度(優先するオブジェクトのモード情報)に関する設定取得し、この優先度に関する設定と、図20のテーブルと、を用いて候補画像1の抽出条件を決定する。ここでは、「動物」が優先モードとして選択されたものとして説明する。図20において、モードが「動物」の欄を参照すると、候補画像1の抽出条件は、「人と動物」となっている。よって、CPU101は、候補画像1として人と動物の両方が写っている画像を抽出条件として設定する。
次に、S1902で、S1901で設定された抽出条件を基に画像の検索を行う。S1903では、S1902の検索の結果、条件に適合する画像が抽出されたか判定する。S1903で画像が抽出された場合は(S1902でYES)、S1904へ進む。S1904では、S1902で抽出された画像を入れ替え候補画像1として設定し、S1905へ進む。一方、S1903で、条件に適合する画像が見つからなかった場合は(S1902でNO)、そのままS1905へ進む。
S1905では、候補画像2の抽出条件と抽出枚数を設定する。候補画像2の抽出条件は、図20より「動物」となっているため、CPU101は、動物が写っており、人が写っていない画像を候補画像2の抽出条件として設定する。なお、抽出枚数については、候補画像1の抽出結果により変更される。例えば、S1903で候補画像1が抽出された場合は、候補画像2の抽出枚数は1枚となる。一方で、S1903で候補画像1が抽出されなかった場合は、候補画像2の抽出枚数を2枚とする。つまり、最終的に4枚の候補画像を抽出してユーザに提示できるよう、見つからなかった抽出条件の画像があった場合は、次の抽出条件の画像の抽出枚数を増やすことで対応する。
S1906では、S1905で設定された抽出条件と抽出枚数で画像を検索する。S1907では、抽出条件に適合した画像が抽出されたか判定する。S1906で条件に適合する画像が抽出された場合は(S1907でYES)、S1908へ進む。S1908ではその抽出された画像を候補画像2に設定し、S1909へ進む。一方、S1906で条件に適合する画像が見つからなかった場合は(S1907でNO)、そのままS1909へ進む。
S1909では、候補画像3の抽出条件と抽出枚数を設定する。候補画像3の抽出条件は、図20より「人」となっている。よって、CPU101は、人が写っており動物が写っていない画像を候補画像3の抽出条件として設定する。なお、抽出枚数については、候補画像1及び候補画像2の抽出結果により変更される。具体的には、候補画像3の抽出枚数は、候補画像1と候補画像2の検索結果に応じて最大3枚から最少1枚の間で変化することになる。
S1910では、S1909で設定された抽出条件を使用して、画像の検索を行う。S1911では、抽出条件に適合した画像が抽出されたか判定する。S1910で条件に適合する画像が抽出された場合は(S1911でYES)、S1912へ進む。S1912ではその抽出された画像を候補画像3に設定し、S1913へ進む。一方、S1910で条件に適合する画像が見つからなかった場合は(S1911でNO)、そのままS1913へ進む。
S1913では、候補画像4の抽出条件と抽出枚数を設定する。候補画像4の抽出条件は、図20より「モノ」となっている。「モノ」は人も動物も写っていない写真を示している。よって、CPU101は、人物も動物も写っていない画像を候補画像4の抽出条件として設定する。なお、抽出枚数については、候補画像1、2、3の抽出結果により変更される。具体的には、候補画像4の抽出枚数は、候補画像1、2、3の検索結果に応じて最大4枚から最少1枚の間で変化することになる。
S1914では、S1913で設定された抽出条件を使用して、画像の検索を行う。S1915では、抽出条件に適合した画像が抽出されたか判定する。S1914で条件に適合する画像が抽出された場合は(S1915でYES)、S1916へ進む。S1916ではその抽出された画像を候補画像4に設定し、S1917へ進む。一方、S1914で条件に適合する画像が見つからなかった場合は(S1915でNO)、そのままS1917へ進む。
S1917では、候補画像の数に不足分があるか判定する。ここでは4枚抽出されていれば(S1917でNO)、不足分なしとして処理を終了する。一方、4枚未満の場合は(S1917でYES)、S1918に進み、候補起点画像の近傍の画像から不足分の画像を候補画像として選択する。この場合の抽出条件は、入れ替え対象のスロットに配置されている画像に対して、撮影時間が一番近い画像から順に選択するとよい。
以上のように、オブジェクトの優先度に基づいて入れ替え候補画像を抽出することで、ユーザの好みに合う所定枚数の入れ替え候補画像を提示することが可能になる。例えば、画像の撮影時期や作成時期のみを抽出条件として所定期間内の画像を候補画像として抽出する場合よりも、オブジェクトに対するユーザの好みが反映される。また、画像に付与された得点を抽出条件として使用することも考えられる。確かに得点の高い画像をある程度ユーザの好みが反映されている。しかしながら、必ずしも得点の高い画像がユーザのオブジェクトに対する優先度が高いとは限らない。例えば、ユーザが動物を優先モードとして設定した場合において、検索先の画像群においては、人物のみが写る画像のほうが、動物が写る画像よりも得点が高いケースがあり得る。この場合、本実施形態のように、入れ替え候補画像の抽出条件として、特定オブジェクトの優先度に関する設定を用いることにより、得点よりもその特定オブジェクトの画像中に含まれているか・含まれていないかの判定が優先される。よって、よりユーザのオブジェクトに対する優先度が反映される。
なお、ここでは、例として、4枚の候補画像を選択する場合で説明してきたが、枚数はこれに限られない。スマートフォンなどの表示領域が小さいデバイスでは、候補画像数を2枚にしてもよいし、ディスプレイの表示能力に応じて候補画像の枚数を可変にしてもよい。また、そもそもユーザがフォトアルバムの作成に指定した元となる画像の数が少ない場合は、複数の条件の候補画像を検索することが困難になってくる。この場合は、トータル画像の数に応じて条件や候補数を制御しても良い。抽出条件についても図20に示す条件に限定されるものではない。候補画像1の抽出条件を、動物は写っているが人は写っていない画像としてもよく、オブジェクトの優先度が反映される範囲で任意に設定可能である。
また、各候補画像の抽出時において、設定された抽出枚数よりも抽出条件に合う画像が複数抽出可能である場合は、複数存在する画像の中から得点の高いものを順に選択すると良い。例えば、候補画像2の抽出時において、2枚の候補画像を抽出する場合、抽出条件に適合する画像が5枚あったとすると、その5枚の画像の中から最も得点が高い2枚を候補画像2として抽出するとよい。
(入れ替え候補画像の抽出処理の詳細に係る変形例)
さらに、特定のオブジェクトの優先度に基づく設定としては、上記のように特定のオブジェクトのモード選択だけに限られない。例えば、図15のように、特定のオブジェクトの出現頻度に関する設定を、優先度に基づく設定として用いても良い。図15では、人物の数が「普通」、動物の数が「多め」と指定されているとして説明する。
図21に、図15の出現頻度を優先度に関する設定として、入れ替え候補画像の抽出条件の設定時に参照するテーブルの例を示す。図21を参照した場合、人物数が「普通」、動物の数が「多め」の場合、候補画像1と候補画像2の抽出条件は、人も動物も「あり」となっているため、人と動物の両方が写っている画像を選択することが条件となる。候補画像3の抽出条件は、人は「なし」、動物は「あり」となっているため、人は写っていないが動物が写っている画像が条件となる。候補画像4の抽出条件は、人も動物も「なし」となっているため、人も動物も写っていない画像が条件となる。
このように、図15のようなオブジェクトの出現頻度に関する設定を用いる場合も、図21の抽出条件に基づき、図19のフローに沿って候補画像を4枚抽出することができる。なお、出現頻度を設定した場合の抽出条件もこれに限定されるものではない。オブジェクトの優先度としての出現頻度の設定が反映される範囲で任意に設定可能である。
また、図3では、人物、動物、料理の3つのオブジェクトの優先モードの設定し、図15では、人物と動物の2つのオブジェクトの出現頻度に関する設定を行うようになっているが、それ以外のオブジェクトを設定してもよい。つまり、画像認識技術ではそれ以外のオブジェクトも認識できるため、別のオブジェクトの優先モード設定や出現頻度の設定を行うことも可能である。例えば、個人の識別結果を利用して家族構成の推定も可能である。このように多種類のオブジェクトの画像認識結果を利用してアルバムを作成する場合には、各オブジェクトの出現頻度をそれぞれに制御することも可能である。
しかしながら、認識対象としている主要オブジェクトの分だけ制御用のユーザインターフェースを表示すると、多くの表示領域を必要とし、操作性が低下する可能性がある。よって、ユーザがフォトアルバムの作成に指定した元となる画像群の画像認識結果を基に、その画像の中から認識された主要なオブジェクトの分だけのユーザインターフェースを表示するとよい。
例えば、人、犬、猫、車、列車、家具、食べ物などの各オブジェクトを対象とした画像認識を行った結果、人、犬、車のカテゴリがオブジェクトとして認識(識別)されたとする。また、認識された人を基に、個人認識を行い個人単位でのオブジェクトの識別もできたものとする。さらに、同時に写る頻度が高い関係性、またはユーザにより家族の構成が指定される等により家族というカテゴリ単位のオブジェクトも識別されたとする。この場合は、図22に示すように、識別された主要オブジェクトをカテゴリ(グループ)に分類して、カテゴリ毎に制御するユーザインターフェースを表示するとよい。図22では、人の認識結果から家族という分類を作成し、犬からペット、車から乗り物といったカテゴリに分類した例を示している。各カテゴリのスライダーバー2001,2002,2003の横には、各カテゴリというオブジェクトの中にさらに複数の個体としての主要オブジェクトがある場合に、展開ボタン2004がある。この展開ボタン2004を選択すると各カテゴリの中身が展開されたユーザインターフェースに変更される。
図23に展開後のユーザインターフェースの模式図を示す。図23(a)は、展開ボタン2004を押したときに、家族グループの中に含まれる個人単位の主要オブジェクトの分だけ、そのオブジェクト用のスライダーバー2101,2102,2103が表示される。図23(a)では、「お父さん」、「お母さん」、「子供1」の3人分のユーザインターフェースが表示されている例を示している。ユーザインターフェースの中には、戻るボタン2104があり、それを押すと元のユーザインターフェース(この場合は、図22が表示された状態)に戻る。別の例として、図23(b)に、ペットグループの場合を示している。ペットの分類として、犬と猫が認識されていた場合に、展開ボタン2005が押されると、図23(b)の様なユーザインターフェースが表示されることになる。このようにすることで、表示領域の有効活用が可能になり、同時に操作性を向上することができる。
(他の実施形態)
本発明は上述した実施形態に限定されるものではない。例えば、上述した実施形態では、アルバム作成アプリケーションを例に挙げて説明したが、お勧め画像を自動選択するような画像選択処理を備えるアプリケーションや画像処理装置であってもよい。
また、図1では、ローカル環境を想定した画像処理装置を例に挙げて説明したが、画像処理装置はこれに限定されるものではない。例えば、サーバ上の画像処理装置であってもよい。この場合は、サーバ内に保存されている画像を利用又は画像をアップロードするようにすればよい。
上述した実施形態では、画像が写真であるものとし、撮影日時に基づいてグループ分けをするようにしたが、画像を作成した日時でグループ分けをするようにしてもよい。
上述した実施形態では、オブジェクトの優先度に関する設定について、ユーザがオブジェクトのモードや出現頻度を指定し、指定されたモードや出現頻度に基づいて入れ替え候補画像が抽出されるようにした。しかしながら、アルバムを作成する画像群を画像解析して、画像群に含まれるオブジェクトの種類の分布等から自動的にモードや出現頻度が設定されてもよい。
なお、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。