[実施形態]
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、画像処理装置の一例としての、対象画像から任意の領域をトリミングした画像を生成可能なデジタルカメラに、本発明を適用した例を説明する。しかし、本発明は、対象画像についてトリミング領域を設定することが可能な任意の機器に適用可能である。
《デジタルカメラ100の構成》
図1は、本発明の実施形態に係るデジタルカメラ100の機能構成を示すブロック図である。
制御部101は、例えばCPUであり、デジタルカメラ100が有する各ブロックの動作を制御する。具体的には制御部101は、ROM102に格納された各ブロックの動作プログラムを読み出し、RAM103に展開して実行することにより各ブロックの動作を制御する。
ROM102は、例えば書き換え可能な不揮発性メモリである。ROM102は、デジタルカメラ100が有する各ブロックの動作プログラムに加え、各ブロックの動作において必要なパラメータ等の情報を記憶する。RAM103は、揮発性メモリである。RAM103は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データを一時的に記憶する記憶領域としても用いられる。
画像信号取得部104は、デジタル画像信号を出力する。画像信号取得部104は、例えばCCDやCMOSセンサ等の撮像素子である。画像信号取得部104は、撮像により、不図示の光学系により撮像面に結像された光学像を光電変換し、アナログ画像信号を取得する。また画像信号取得部104は、得られたアナログ画像信号に対してサンプリング処理、ゲイン調整処理、A/D変換処理等の所定の画像処理を行い、デジタル画像信号を出力する。また、画像信号取得部104は、外部の記録メディアやネットワークを介して、任意の画像信号を受信して出力する構成であってもよい。
画像処理部105は、デジタル画像信号(以下、単に画像)に対して、色変換処理や拡大縮小処理等の画像処理を行う。この他、画像処理部105は、入力された画像から任意の領域を抽出するトリミング処理を行う。
〈画像処理部105の詳細構成〉
ここで、本実施形態の画像処理部105で行われるトリミング処理に係る処理ラインの機能構成を、図2を用いてさらに説明する。
被写体領域抽出部111は、入力された画像(対象)に含まれる特定の被写体に対応する被写体領域を検出する。本実施形態では被写体領域抽出部111は、被写体領域として、対象画像に含まれる人物の顔に対応する顔領域を検出するものとして説明するが、本発明の実施はこれに限られるものではない。例えば、被写体領域の種類は人物以外の動物の顔や、特定パターンの外観を有する物体あってもよい。また本実施形態では被写体領域抽出部111は、画像処理部105に入力された対象画像に対応する輝度画像について検出を行うものとして説明するが、検出を行う画像は輝度画像に限られるものではない。対象画像に対応する色差信号から検出を行う構成としてもよい。被写体領域抽出部111は、被写体領域の検出結果として、例えば検出した顔領域の対象画像における中心座標、及び顔領域のサイズの情報を出力するものとする。
また、被写体領域抽出部111は、入力された画像から顔領域が検出できなかった場合には、顔領域以外の被写体を検出するため、画像を複数のブロックに分割して、それぞれのブロックの色相を求める。そして、類似する色相を有する隣接ブロックを同じ被写体として統合することで、色相ごとにまとめた領域を抽出する。そして、この色相ごとにまとめた領域のうち、画像の端部に接しておらず、かつ、サイズが所定の大きさ以上であるものを、被写体領域の候補(被写体領域候補)として設定し、出力する。
領域優先度設定部112は、被写体領域抽出部111で顔領域ではない被写体領域候補を設定した場合には、検出された複数の被写体領域候補の各々について、領域毎の優先順位を決定算出する。領域優先度設定部112は、例えば、画像における被写体領域候補の位置、大きさ、距離情報等から、被写体領域候補毎の評価値を算出し、算出した評価値が高い領域ほど、優先順位を高くする。例えば、位置に基づいて評価値を算出する場合、被写体領域候補の重心座標が画像の中心座標に近いほど、位置についての評価値が高くなるようにする。そして、評価値が閾値以上であり、かつ、優先順位が所定以内(例えば、2位以内)となる領域候補が、被写体領域として決定される。この領域優先度設定方法については図4を参照して後述する。
トリミング領域候補設定部113は、トリミング処理によって切り出す領域の候補である、トリミング領域候補を設定する。本実施形態の画像処理部105は、被写体領域が好適に配置された構図となるような領域の画像を、撮像により得られた対象画像からトリミング処理によって切り出す。このためトリミング領域候補設定部113は、被写体領域抽出部111により検出された被写体領域の各々について、該被写体領域の配置条件を満たすトリミング領域候補を複数設定する。あるいはトリミング領域候補設定部113は、領域優先度設定部112により供給される評価値及び優先順位の情報に基づいて被写体領域抽出部111により設定された被写体領域候補から被写体領域を決定する。そして該被写体領域の各々についてトリミング領域候補を複数設定する。本実施形態ではトリミング領域候補設定部113は、図3に示すアスペクト比およびサイズ(画素数)の矩形領域をトリミング領域候補として設定する。
トリミング領域評価部114は、トリミング領域候補設定部113により設定されたトリミング領域候補の各々を、該領域における被写体領域の位置を基準にして評価値を算出する。トリミング領域評価部114における各トリミング領域候補の評価値の算出方法については後述のトリミング領域の決定処理の説明において詳述する。
トリミング領域選択部115は、トリミング領域候補設定部113により設定されたトリミング領域候補のうち、トリミング領域評価部114により算出された評価値を基にトリミング領域を選択する。トリミング領域選択部115は、例えば、1つの画像から1つのトリミング画像を生成する場合には、トリミング領域評価部114で算出された評価値が最も高いトリミング領域候補をトリミング領域として選択する。一方、1つの画像から複数のトリミング画像を生成する場合には、トリミング領域選択部115は後述の類似度判定部116と共働して、複数のトリミング領域候補の中から、生成するトリミング画像の数のトリミング領域を決定する。
類似度判定部116は、1つの画像から複数のトリミング画像を生成する場合に、トリミング領域選択部115により類似する構図のトリミング領域が選択されないようにトリミング領域候補の類似度を判定し、判定結果をトリミング領域選択部115に返す。例えば、類似度判定部116は、トリミング領域選択部115から評価値の高い順にトリミング領域候補を順次受信し、受信した候補と既に決定したトリミング領域との類似度を判定する。トリミング領域選択部115は、判定結果が類似する旨を示す場合は、判定が行われたトリミング領域候補をトリミング領域として設定せず、候補から除外する。一方、トリミング領域選択部115は、判定結果が類似しない旨を示す場合は、判定が行われたトリミング領域候補をトリミング領域として設定する。トリミング領域選択部115は、トリミング領域として選択したトリミング領域候補の数が出力するトリミング画像の数に達するまで、類似度判定部116による類似度判定のためにトリミング領域候補の出力及び類似度に基づく選択判断を繰り返し行う。この類似度判定及びトリミング領域の決定方法については図15を参照して後述する。
なお、1つの画像から1つのトリミング画像を生成する場合には、トリミング領域選択部115は1つのトリミング領域のみを選択すればよいため、類似度判定部116による処理を行う必要はない。
トリミング領域抽出結果出力部117は、トリミング領域選択部115により選択されたトリミング領域の情報、あるいは、類似度判定部116により最終的なトリミング領域として決定された領域の情報に基づいて対象画像から切り出しを行う。そしてトリミング領域抽出結果出力部117は、トリミング画像を生成して出力する。
またデジタルカメラ100の表示部106は、例えばLCD等のデジタルカメラ100が有する表示装置である。表示部106には、画像信号取得部104における撮像や画像処理部105におけるトリミング処理により得られた画像、あるいは記録媒体107に記録されている画像等が表示される。
記録媒体107は、例えばデジタルカメラ100が有する内蔵メモリや、メモリカードやHDD等のデジタルカメラ100に着脱可能に接続された記録装置である。記録媒体107には、画像信号取得部104における撮像や画像処理部105におけるトリミング処理により得られた画像が記録される。
なお、本実施形態ではハードウェアとしてデジタルカメラ100が備える各ブロックにおいて処理が実現されるものとして説明するが、本発明の実施はこれに限らず、各ブロックの処理は該各ブロックと同様の処理を行うプログラムで実現されてもよい。
<領域優先度の設定処理>
次に、領域優先度設定部112において行われる、複数の被写体領域の候補(被写体領域候補)に優先度を設定する方法について、図4のフローチャートを用いて具体的な処理を説明する。本フローチャートは、例えば被写体領域抽出部111において顔領域が検出されず、色相に基づいて複数の被写体領域候補が設定された場合に開始されるものとする。
まずS200において、領域優先度設定部112は、検出された全ての被写体領域候補について総合評価値の算出が完了しているかどうかを判断する。領域優先度設定部112は、完了していなければ処理をS201に進め、完了していれば処理をS206へ進める。
S201において、領域優先度設定部112は、検出された被写体領域候補のうち、まだ総合評価値の算出を行っていない被写体領域候補(対象被写体領域候補)を選択し、その面積を取得する。本実施形態では領域優先度設定部112は、対象被写体領域候補の設定に用いられたブロックの数を面積として取得する。次に、領域優先度設定部112は、S201で取得したブロック数に基づいて、対象被写体領域候補の面積についての評価値を算出する(S202)。図5(a)は対象被写体領域候補の面積についての評価値の算出例を示すものである。図5(a)は、画像全体に対する対象被写体領域候補の面積比率、即ち全ブロック数のうちの対象被写体領域候補に係るブロック数の割合と、面積についての評価値との関係を示している。図5(a)に示されるように、対象被写体領域候補の面積についての評価値は、対象被写体領域候補の面積が大きいほど、高い評価値となるように設定されていればよい。
次にS203において、領域優先度設定部112は、対象被写体領域候補について、画像の中心からの距離を算出する。具体的には領域優先度設定部112は、まず対象被写体領域候補を構成するブロックの各々について画像の中心からの距離を算出する。そして対象被写体領域候補の全ブロックについて算出した画像中心からの距離の平均値を、対象被写体領域候補についての画像中心からの距離とする。次にS204において領域優先度設定部112は、S203で算出した画像の中心からの距離に基づいて、対象被写体領域候補の、画像中心からの距離についての評価値を算出する。図5(b)は画像の中心からの距離についての評価値の算出例を示すものである。図5(b)に示されるように、対象被写体領域候補の画像中心からの距離についての評価値は、画像中心から対象被写体領域候補までの距離が大きいほど、低い評価値となるように設定されていればよい。
次にS205において領域優先度設定部112は、S202及びS204で算出した2種の評価値に基づいて、対象被写体領域候補の総合評価値を算出する。総合評価値は、例えば、S202及びS204で算出した2種の評価値の積として算出すればよい。S205の処理後、領域優先度設定部112は処理をS200に戻し、全ての被写体領域候補について総合評価値の算出が完了したかどうかを再び判断し、完了していなければ次の被写体領域候補について上記処理を繰り返す。
全ての被写体領域候補について総合評価値を算出し終えたら(S200でYES)、S206において領域優先度設定部112は、それぞれの被写体領域候補に対して、総合評価値の高い順に優先順位を割り当てる。
《トリミング領域候補決定処理》
次に、被写体領域抽出部111が顔領域である被写体領域を出力した場合のトリミング領域候補決定処理について、図6のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、制御部101の制御の下、トリミング領域候補設定部113およびトリミング領域評価部114により実現される。なお、本トリミング領域候補決定処理は、例えば自動トリミング処理を適用する対象画像が設定された後、被写体領域抽出部111により被写体領域の検出がなされた際に開始されるものとして説明する。また本トリミング領域候補決定処理において、対象画像には少なくとも1つの顔領域が含まれているものとする。
S301で、トリミング領域候補設定部113は、被写体領域抽出部111により検出された顔領域(被写体領域)の位置及びサイズの情報を取得する。
S302で、トリミング領域候補設定部113は、対象画像に所定数以上の顔領域が含まれるか否かを判断する。本実施形態のデジタルカメラ100では、対象画像に含まれる顔領域の数が所定数以上である場合、トリミング領域候補設定部113は対象画像が集合写真を撮影した画像であると判断するものとする。即ち、集合写真の場合、1つの顔領域がトリミング後の画像において好適と定める位置に配置されるようにトリミング領域(構図)を決めたとしても、好適な位置に配置されない顔領域の数が多数となりうる。このため、本実施形態ではトリミング領域候補設定部113は、集合写真が撮影されたものとして判断する所定数以上の顔領域が対象画像に含まれる場合は、1つの顔領域の配置を基準にしたトリミング領域の決定を行わない。
なお、本実施形態では対象画像内に含まれる顔領域の数が所定数以上である場合に集合写真が撮影されたとして判断するものとして説明するが、集合写真であることの判断には顔領域のサイズ等にさらに条件を課して判断してもよい。例えば、撮影中に現れた無関係の人物が対象画像に写ってしまった場合、該人物の顔領域を集合写真の被写体であると判断することは不適切である。このため、例えば顔領域のサイズに範囲を設け、サイズが該範囲に含まれる顔領域のみを集合写真であるか否かの判断に用いる顔領域として計数してもよい。
トリミング領域候補設定部113は、対象画像に含まれる顔領域が所定数以上であると判断した場合は処理をS309に移し、所定数未満であると判断した場合は処理をS303に移す。
S303で、トリミング領域候補設定部113は、対象画像に含まれる顔領域が1つであるか否かを判断する。本実施形態では、トリミング処理のために設定するトリミング領域候補について顔領域を複数含めるか否かによって、トリミング領域評価部114における評価方法が異なる。このため、本ステップではトリミング領域候補設定部113は、トリミング領域候補に含めることが可能な顔領域の数が、確実に1である条件について適用する評価方法を割り当てる。トリミング領域候補設定部113は、対象画像に含まれる顔領域が1つであると判断した場合は処理をS305に移し、複数であると判断した場合は処理をS304に移す。
S304で、トリミング領域候補設定部113は、顔領域に対応する被写体同士が対象画像において重なって撮像されているか否かという、複数の被写体の配置を判断する。具体的には制御部101は、検出された顔領域の被写体について、該顔領域の下端に隣接して存在するであろう胴体部の領域(胴体領域)を推定し、該胴体領域が他の被写体の胴体領域あるいは顔領域と所定割合以上の重複を有するか否かを判断する。
胴体領域は、顔領域が例えば図7(a)のようである場合、図7(b)に示されるように顔領域の幅及び高さの各々に予め定められた係数を乗ずることにより推定されればよい。そしてトリミング領域候補設定部113は、図7(c)のように注目被写体の顔領域及び胴体領域の少なくともいずれかが他の被写体の顔領域あるいは胴体領域と重複する場合は、これらの顔領域は異なるトリミング領域候補に分離されるべきではないと判断する。一方、図7(d)のように注目被写体の顔領域及び胴体領域のいずれも、他の被写体の顔領域あるいは胴体領域と重複しない場合は、これらの被写体に対応する顔領域を異なるトリミング領域候補に分離する方が好適な構図になると判断する。
なお、本実施形態では胴体領域の設定方法は顔領域の下端に胴体が隣接するものとして説明したが、これに限られるものではない。胴体領域は、例えば顔領域から算出された顔の向きに応じて設定されてもよいし、デジタルカメラ100が重力方向を検出可能である場合は、顔領域の鉛直下方向に存在するものとして設定されてもよい。あるいは、胴体領域を求めずに、顔領域の距離から、被写体同士が対象画像において重なって撮像されているか否かを判断するようにしてもよい。
トリミング領域候補設定部113は、顔領域に対応する被写体同士が対象画像において重なって撮影されていると判断した場合は処理をS307に移し、重なって撮影されていないと判断した場合は処理をS305に移す。なお、本ステップの処理は、検出された顔領域ごとに行われてよい。即ち、対象画像に含まれる他のいずれの顔領域の被写体とも重なりがないものとして判断された顔領域についてのみ、トリミング領域候補設定部113はS305における評価処理を行うように制御する。そして、制御部101は、他のいずれかの顔領域の被写体と重なりがあると判断された顔領域については、S307における評価処理を行うように制御すればよい。
S305で、トリミング領域候補設定部113は、対象画像内の画像のうち、単独でトリミングを行う顔領域についてトリミング領域候補を設定する。具体的には、トリミング領域候補設定部113は単独でトリミングを行う顔領域(注目顔領域)を順に選択し、それぞれについてトリミング領域候補を複数パターン設定する。トリミング領域候補設定部113は、設定されるトリミング領域候補における注目顔領域の配置位置が、予め定められた位置となるようにトリミング領域候補を設定する。本実施形態では図8に示されるように、経験的に好適な構図となる、トリミング領域候補を水平方向及び垂直方向に3等分する線分を基準とした位置に注目顔領域が配置された6種類のトリミング領域候補が設定される。上述したように本実施形態のトリミング領域候補設定部113では、5種類のアスペクト比の矩形領域についてそれぞれ3種類のサイズを有するトリミング領域候補を設定するものとしている。そのため、5×3×6=90通りのトリミング領域候補が、1つの注目顔領域について設定される。なお、この6種類の構図は一つの例であって、顔領域を中央に配置した構図や、中央上部に配置した構図としてもよい。
S306で、トリミング領域評価部114は、S305において設定された全てのトリミング領域候補について、それぞれに単独トリミング用の評価処理を実行し、各トリミング領域候補についての評価値を取得する。
〈評価処理(単独)〉
ここで、本ステップで行われる単独トリミング用の評価処理について、図9のフローチャートを参照して詳細を説明する。なお、以下の説明では本評価処理の対象となるトリミング領域候補を「対象領域候補」として説明する。
S601で、トリミング領域評価部114は、対象領域候補の一部の領域が対象画像外の領域を参照しているか否かを判断する。即ち、本ステップにおいてトリミング領域評価部114は、図10(a)のように、破線で示された対象領域候補が実線で示される対象画像の範囲を超えた領域をトリミング対象としているか否かを判断する。トリミング領域評価部114が対象領域候補が対象画像外の領域を参照していると判断した場合、制御部101は処理をS602に移す。また対象領域候補が対象画像内の領域を参照しているとトリミング領域評価部114が判断した場合、制御部101は処理をS604に移す。
S602で、トリミング領域評価部114は、対象画像外に出ている対象領域候補の量が予め定めた閾値以下であるか否かを判断する。本ステップでトリミング領域評価部114は、対象画像外に出ている対象領域候補の量(はみ出し量)を水平方向及び垂直方向の各々について取得し、該はみ出し量が対象領域候補の微調整可能な閾値以下に収まるか否かを判断する。図10(a)の例では対象領域候補は垂直方向のみ対象画像外に出ているため、その垂直方向のはみ出し量Δが判断の基準となる。制御部101は、はみ出し量が予め定めた閾値以下であるとトリミング領域評価部114が判断した場合は処理をS603に移し、閾値を超えると判断した場合は処理をS605に移す。
S603で、領域候補設定部113は制御部101の制御の下、S602で取得されたはみ出し量の情報に従って、対象領域候補が対象画像内に収まるように参照範囲を更新する。例えば図10(b)に示されるように、はみ出し量Δが微調整可能な閾値以下である場合は、はみ出している方向、即ち垂直方向にΔ分だけ平行移動することで対象領域候補を更新すればよい。
S604で、トリミング領域評価部114は、対象領域候補についての評価値を算出する。本実施形態においてトリミング領域候補の評価値Eは、以下の4つ値(E1、E2、E3、E4)を乗じることで算出される。
1.対象領域候補における注目顔領域の面積の割合について定められた評価値E1
2.注目顔領域の配置位置について定められた評価値E2
3.アスペクト比について定められた評価値E3
4.評価結果の偏りを抑止するための乱数値E4
評価値E1は、例えば図11(a)に示されるように、対象領域候補における注目顔領域の面積の割合(占有率)に応じてVal1〜Val2の値が設定される。図11(a)の例では、評価値E1は、注目顔領域の占有率Rについて好適であると定められた範囲(R2≦R<R3)では最大値Val2をとっている。また小さすぎるまたは大きすぎると定められた範囲(R<R1、及びR≧R4)では最小値Val1をとっている。またさらに、その中間範囲(R1≦R<R2、及びR3≦R<R4)では、割合に応じて最大値と最小値の中間値をとる。
なお、本実施形態では評価値E1は、図11(a)のように設定されるものとして説明するが、本発明の実施はこれに限られるものではない。例えば露出オーバー撮影により、人物の後方に存在する背景領域に白飛び画素が多数存在する場合は、白飛び領域がトリミング領域に含まれていても好適な構図とは言えない。このように被写体に対応する領域以外の領域において所定の輝度値よりも高い輝度値を有する画素の割合が所定数を超える場合に、例えば注目顔領域の占有率が高いほど評価値E1が高くなるように設定されていてもよい。あるいは例えば露出アンダー撮影により対象画像が全体的に輝度が低い雰囲気である場合、注目顔領域が大きすぎると背景を含んだ画像の雰囲気がトリミング後に残りにくい。この場合、例えば注目顔領域の占有率が低いほど評価値E1が高くなるように設定されていてもよい。
評価値E2は、トリミング領域候補内における注目顔領域の配置位置について、例えば図11(b)のように評価値が設定される。このとき、経験的に好適な構図となる垂直方向3等分線のうちの上方の線上、水平方向3等分線上に注目顔領域が配置されているトリミング領域候補ほど高い評価値E3が設定されるものとする。なお、評価値E3の評価分布はこれに限らず、例えば撮影シーン判定結果や撮影時に設定されていた撮影モード等に応じて定められた好適な構図が高い評価となるように変更されてよい。
評価値E3は、対象画像のアスペクト比に応じて、トリミング領域候補の好適なアスペクト比について高い評価値が与えられるように定められている。トリミング領域評価部114は、対象画像内の顔領域および胴体領域を包含する最小の矩形領域の高さHobjと幅Wobjを算出し、この矩形領域のアスペクト比であるWobj/Hobjを求める。トリミング領域評価部114は、図3に示すトリミング領域候補のアスペクト比をWtri:Htriとし、次の式によって両者のアスペクト比の類似値を求める。
(i)Wobj/Hobj<Wtri/Htriの場合、
アスペクト類似値 = (Wobj/Hobj)/(Wtri/Htri)
(ii)Wobj/Hobj≧Wtri/Htriの場合、
アスペクト類似値 = (Wtri/Htri)/(Wobj/Hobj)
そして、トリミング領域評価部114は、図11(c)に示すように、アスペクト類似値が1に近いトリミング領域候補ほど、評価値E3の値を高くする。あるいは、トリミング領域評価部114は、顔領域および胴体領域を包含する最小の矩形領域のアスペクト比の代わりに、対象画像のアスペクト比とトリミング領域候補のアスペクト比の類似値から、トリミング領域候補の評価値E3を決定してもよい。
乱数値E4は、自動で設定されるトリミング領域が毎回同様の構図とならないように、評価結果を変動させるための値である。しかしながら、乱数値E4は、評価結果が大幅に変更され、好適でない構図がトリミング領域として選択されぬよう、例えば0.9〜1.1の範囲等、他の評価値への影響が少ない値に設定されることが好ましい。
トリミング領域評価部114は、このように対象領域候補について得られた4つの値を乗じて評価値Eを算出した後、本評価処理を完了する。
またS602においてはみ出し量が予め定められた閾値を超えると判断した場合、トリミング領域評価部114はS605で、対象領域候補に対して評価値0(低い評価)を割り当て、本評価処理を完了する。
一方、複数の顔領域を含むようにトリミングを行うことが好ましい場合、トリミング領域候補設定部113は制御部101の制御の下、トリミング領域候補を設定する。具体的には、トリミング領域候補設定部113は互いに重なると判定された全ての顔領域を1つのグループとする。そして、トリミング領域候補設定部113はグループ内の左端に存在する顔領域の配置位置、及び右端に存在する顔領域の配置位置が予め定められた位置となるようにトリミング領域候補を設定する。
左端の顔領域及び右端の顔領域についての条件は、図12に示されるようであってよい。図12は、対象画像内に2つの顔領域が含まれる場合の、配置位置についての条件例を示している。具体的には左端の顔領域については、水平方向3等分線の左側の線上に存在し、かつi)垂直方向3等分線の上側の線上、ii)垂直方向3等分線の中心、iii)垂直方向3等分線の下側の線上のいずれかに存在するようにトリミング領域候補が設定される。また右端の顔領域については、水平方向3等分線の右側の線上に存在し、かつi)垂直方向3等分線の上側の線上、ii)垂直方向3等分線の中心、iii)垂直方向3等分線の下側の線上のいずれかに存在するようにトリミング領域候補が設定される。
このため、本ステップにおいて設定されるトリミング領域候補は、「全て」の注目顔領域について、5×3×6=90通りとなる。
S308で、トリミング領域評価部114は制御部101の制御の下、S307において設定された全てのトリミング領域候補について、それぞれに複数トリミング用の評価処理を実行し、各トリミング領域候補についての評価値を取得する。
〈評価処理(複数)〉
ここで、本ステップで行われる複数トリミング用の評価処理について、図13のフローチャートを参照して詳細を説明する。なお、以下の説明では上述した単独トリミング用の評価処理と同様の処理を行うステップについては、同一の参照符号を付して説明を省略するものとする。
S603までの対象領域候補と対象画像との関係に関する処理の後、トリミング領域評価部114はS1001で、グループの全ての顔領域が対象領域候補に含まれているか否かを判断する。制御部101は、全ての顔領域が対象領域候補に含まれているとトリミング領域評価部114が判断した場合は処理をS1004に移し、含まれていないと判断した場合は処理をS1002に移す。
トリミング領域評価部114は、グループの全ての顔領域を含むように規定される最小の矩形領域の対象領域候補外に出ている量が予め定めた閾値以下であるか否かを判断する。本ステップでトリミング領域評価部114は、対象領域候補外に出ている顔領域のはみ出し量を水平方向及び垂直方向の各々について取得し、該はみ出し量が対象領域候補の微調整可能な閾値以下に収まるか否かを判断する。即ち、グループの顔領域のうち、上端、下端、左端、右端のそれぞれに配置される顔領域についての対象領域候補からのはみ出し量を取得し、判断が行われる。制御部101は、はみ出し量が予め定めた閾値以下であるとトリミング領域評価部114が判断した場合は処理をS1003に移し、閾値を超えると判断した場合は処理をS605に移す。
S1003で、トリミング領域候補設定部113は制御部101の制御の下、S1002で取得されたはみ出し量の情報に従って、グループの全ての顔領域が対象領域候補に収まるように参照範囲を更新する。例えば図14に示されるように、垂直方向のはみ出し量Δが微調整可能な閾値以下である場合は、垂直方向にΔ分だけ平行移動した位置に対象領域候補を更新すればよい。なお、本ステップにおいて対象領域候補の位置を更新したとしてもグループの全ての顔領域が対象領域候補に収まらない場合は処理をS605に移す。あるいは、全ての顔領域が対象領域候補に収まらないまま後述するS1004で評価値を算出し、この評価値に対して1未満の係数(例えば、0.8)を乗算したものを新たな評価値として算出するようにしてもよい。
このようにして対象領域候補が設定された後、S1004でトリミング領域評価部114は、単独トリミング用の評価処理のS604と同様に対象領域候補の評価値を算出し、本評価処理を完了する。このとき、評価方法は単独トリミング用と同様であってもよいし、異なる方法を用いてもよい。単独トリミング用と同様の方法を用いる場合、評価値E1は対象領域候補内の全て顔領域について算出された占有率の平均とし、評価値E2は全ての顔領域の配置位置についての評価値の合計値とすればよい。また評価値E2は、単にグループ下端の顔領域と対象領域候補の下端との距離が長いほど大きい評価値が設定されるものとしてもよい。
一方、トリミング領域候補決定処理のS302において対象画像に含まれる顔領域が所定数以上であると制御部101により判断された場合、S309でトリミング領域候補設定部113は、集合写真用のトリミング領域候補を設定する。具体的にはトリミング領域候補設定部113は、対象画像内の全ての顔領域についての重心位置を中心としてトリミング領域候補を設定する。本実施形態ではトリミング領域候補は、上述のように5種類のアスペクト比のそれぞれについて3つのサイズを有するものとして予め定められているため、本ステップでは5×3=15通りのトリミング領域候補が設定される。
S310で、トリミング領域評価部114は制御部101の制御の下、S309において設定された全てのトリミング領域候補について、それぞれについて評価値を算出する。集合写真トリミング用の評価処理については詳述しないが、全ての顔領域が含まれることを前提として評価されるものとする。
以上が、対象画像に少なくとも1つの顔領域が含まれている場合のトリミング領域候補の決定方法である。
なお、ここでは、検出された顔領域の数に応じて評価方法を変更するものとして説明したが、本発明の実施はこれに限られるものではない。即ち、1つの顔領域のみを含む対象画像について設定したトリミング領域候補に、上述した複数トリミング用の評価処理を適用したとしても問題はないことは容易に想像されよう。
続いて、被写体領域抽出部111が被写体領域候補を出力した場合、即ち対象画像に顔領域が含まれていない場合のトリミング領域候補の決定方法について説明する。対象画像に顔領域が含まれていない場合は、上述したように、領域優先度設定部112により算出された評価値及び優先順位によって被写体領域が決定される。
ここで、トリミング領域候補設定部113は、顔領域に対しては、顔領域に対応する被写体同士が対象画像において重なって撮影されているか否かを判定したが、顔領域でない被写体領域については、この判定は行わない。顔以外の物体がトリミング領域からはみ出していても、さほどユーザにとっては気にならないと考えられるためである。そのため、対象画像に顔領域が含まれていない場合は、それぞれの被写体領域に対して、1つの顔領域が検出されたときと同様の方法で、トリミング領域候補を設定すればよい。
つまり、トリミング領域候補設定部113は、被写体領域の位置およびサイズの情報を取得すると、トリミング領域候補を水平方向及び垂直方向に3等分する線分を基準とした位置に、顔領域ではない被写体領域が配置されるようにする。あるいは、顔領域ではない被写体領域が中心となるようにトリミング領域候補を設定してもよいし、顔領域ではない被写体領域の一部分だけがトリミング領域候補に含まれるようにしてもよい。この場合、トリミング領域候補の5割以上を被写体領域が占めるようにし、かつ、被写体領域の水平方向または垂直方向の両端がトリミング領域候補からはみ出るトリミング領域候補は設定しないものとする。
そして、トリミング領域評価部114は、設定された全てのトリミング領域候補について、それぞれに単独トリミング用の評価処理を実行し、各トリミング領域候補についての評価値を取得する。これは顔領域に対する評価処理と同様の処理を行えばよい。
《トリミング領域選択及び類似度判定方法》
次に、類似度判定部116及びトリミング領域選択部115によって実施されるトリミング領域を選択する方法を説明する。
図15は本実施形態において、1つの被写体領域について設定したトリミング領域候補の各々について算出した評価値に基づいて、該被写体領域について設定されたトリミング領域候補の中からトリミング領域を決定する方法を示すフローチャートである。以下のフローチャートに係る処理は、トリミング領域が1つ確定する度に終了するが、1つの被写体領域について予め設定した数(トリミング画像を生成する数)のトリミング領域が選択されるまで繰り返し実行される。また、この処理は、対象画像に複数の被写体領域が存在する場合は、検出されている被写体領域を優先度の高い順に選択し、それぞれについて所定数のトリミング領域が設定されるまで実行される。
まずS1501で、トリミング領域選択部115は、設定されたトリミング領域候補の各々について算出された評価値が最も高いトリミング領域候補を判定対象候補として選択する。そしてトリミング領域選択部115は、選択した判定対象候補の情報を類似度判定部116に出力する。
S1502において、類似度判定部116は、受信した判定対象候補の情報に従い、判定対象であるトリミング領域候補(判定対象候補)と、同一の被写体領域について既に決定したトリミング領域とについて、アスペクト比の観点での類似度を判定する。具体的には類似度判定部116は、既に決定した全てのトリミング領域のアスペクト比と判定対象候補のアスペクト比とを比較し、その差が所定範囲内であるトリミング領域が存在する場合、処理をS1503に移す。また類似度判定部116は、アスペクト比の差が所定範囲内であるトリミング領域が存在しない場合、類似しない旨を示す判定結果をトリミング領域選択部115に出力して処理をS1506に移す。そしてトリミング領域選択部115はS1506で、判定対象候補を処理中の被写体領域のトリミング領域の1つとして決定し、本選択処理を終了する。
S1503で、類似度判定部116は、判定対象候補と、同一の被写体領域について既に決定したトリミング領域とについて、サイズの観点での類似度を判定する。類似度判定部116は、既に決定した全てのトリミング領域のサイズと判定対象候補のサイズとを比較し、その差が所定範囲内であるトリミング領域が存在する場合、処理をS1504に移す。また類似度判定部116は、サイズの差が所定範囲内であるトリミング領域が存在しない場合、類似しない旨を示す判定結果をトリミング領域選択部115に出力して処理をS1506に移す。
S1504で、類似度判定部116は、判定対象候補と、同一の被写体領域について既に決定したトリミング領域とについて、トリミング範囲の観点での類似度を判定する。まず類似度判定部116は、全てのトリミング領域と判定対象候補とについて領域開始座標(例えば、領域の左上端の座標)を取得する。類似度判定部116は、各トリミング領域の領域開始座標と判定対象候補の領域開始座標とについて水平座標及び垂直座標の差分を算出する。そして類似度判定部116は、該差分が以下の条件式をいずれも満たす場合、類似する旨を示す判定結果をトリミング領域選択部115に出力して処理をS1505に進める。また類似度判定部116は、領域開始座標の差分が少なくともいずれかの条件式を満たさない場合、類似しない旨を示す判定結果をトリミング領域選択部115に出力して処理をS1506に進める。
(領域開始座標の水平方向の差分)/(トリミング領域の水平方向画素数) < 1/2
(領域開始座標の垂直方向の差分)/(トリミング領域の垂直方向画素数) < 1/2
S1505で、トリミング領域選択部115は、受信した判定結果に基づき、判定対象候補をトリミング領域として決定せず、トリミング領域候補からも除外する。そしてトリミング領域選択部115は、現在判定を行った判定対象候補の次に評価値が高いトリミング領域候補を新たな判定対象候補として選択し、その情報を類似度判定部116に出力し、処理をS1502に戻す。
このようにすることで、1つの被写体領域について複数のトリミング画像を生成する場合に、構図が類似するトリミング領域が設定されることを除外することができる。
このように決定したトリミング領域の各々の情報はトリミング領域抽出結果出力部117に伝送される。そしてトリミング領域抽出結果出力部117は、該情報に従って対象画像についてトリミング処理を実行し、得られたトリミング画像を出力する。
以上説明したように、本実施形態の画像処理装置は、取得したトリミング対象の対象画像について、画像内に含まれる特定の被写体を検出する。そして対象画像について、検出した1つの被写体がトリミング後の領域において所定の条件を満たす位置に配置されるような1以上のトリミング領域候補を設定し、評価する。
このようにすることで、トリミング領域における被写体の配置位置だけでなく、特定の被写体が全て含まれるような好適な構図のトリミング領域が設定可能となる。
また、評価値が高いトリミング領域候補であっても、同一の被写体領域について既に選択した他のトリミング領域と類似する構成である場合には、該領域候補をトリミング領域に選択しない構成とした。これにより、類似したトリミング画像が複数生成されることを抑制することが可能となる。
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
前述の目的を達成するために、本発明の一態様に係る画像処理装置は、画像から被写体領域を特定する特定手段と、画像を用いて被写体領域を含むトリミング画像を出力する出力手段と、を有し、出力手段は、特定手段により複数の被写体領域が特定された場合に、複数の被写体領域が所定の条件を満たすのであれば、複数の被写体領域のいずれかを含まないトリミング画像を出力し、複数の被写体領域が所定の条件を満たさないのであれば、複数の被写体領域を含むトリミング画像を出力し、所定の条件は、少なくとも、複数の被写体領域が所定割合以上の重複を有さずに配置されていること、および、複数の被写体領域が予め定められた値よりも長い距離を領域間で有して配置されていること、のいずれか一つを含むことを特徴とする。
前述の目的を達成するために、本発明の別の態様に係る画像処理方法は、画像から被写体領域を特定する特定工程と、画像を用いて被写体領域を含むトリミング画像を出力する出力工程と、を有し、出力工程では、特定工程において複数の被写体領域が特定された場合に、複数の被写体領域が所定の条件を満たすのであれば、複数の被写体領域のいずれかを含まないトリミング画像が出力され、複数の被写体領域が所定の条件を満たさないのであれば、複数の被写体領域を含むトリミング画像が出力され、所定の条件は、少なくとも、複数の被写体領域が所定割合以上の重複を有さずに配置されていること、および、複数の被写体領域が予め定められた値よりも長い距離を領域間で有して配置されていること、のいずれか一つを含むことを特徴とする。