画像編集装置及びその制御方法及びプログラム
【課題】 ユーザが簡単な設定をするだけで、ユーザが所望する領域を含み、かつ所望しない領域を含まずに画像を所望のサイズで自動的にトリミングすることを目的とする。
【解決手段】 ユーザの操作に応答して、画像の部分領域のそれぞれに評価を示すフラグ情報を設定する。設定されたフラグ情報の評価にしたがって、第1の評価が設定された部分領域すべてを含むトリミング枠を決定し、決定されたトリミング枠が第2の評価が設定された部分領域と重なる場合に警告を通知する。
【解決手段】 ユーザの操作に応答して、画像の部分領域のそれぞれに評価を示すフラグ情報を設定する。設定されたフラグ情報の評価にしたがって、第1の評価が設定された部分領域すべてを含むトリミング枠を決定し、決定されたトリミング枠が第2の評価が設定された部分領域と重なる場合に警告を通知する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像のトリミング編集を実行する画像編集装置及びその制御方法及びプログラムに関する。
【背景技術】
【0002】
従来、デジタルカメラで撮影した画像を印刷して複数の人に配布するということが一般的によく行われている。その際、ユーザはデジタルカメラを操作して、どの画像を何枚印刷するかをDPOF(Digital Print Order Format)のような規格に則って記録メディアに記録することで、印刷指定を行うことができる。
【0003】
また、画像を所望の印刷用紙の大きさに合せて印刷したい場合には、オペレータがマウスやキーボードを使って、プリントサイズに応じたアスペクト比のトリミング枠を2次元方向に動かしてトリミング領域を決定し、画像を切り出すことが行われている。(例えば特許文献1参照)。
【0004】
また、操作者が画像上の所望の領域を指定し、その指定領域が画像に占める位置関係から構図を解析し、元々の画像の意図(構図)図にできるだけ合う形で指定領域を含む部分領域をトリミングすることが行われている。(例えば特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−177802号公報
【特許文献2】特開2005−078290号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に開示された発明では、ユーザが手動でトリミング枠を移動するので、画像上の所望の領域がトリミング枠内に入るように細心の注意を払わなければならず、煩わしさが生じるという問題がある。
【0007】
また、特許文献2に開示された発明では、撮影時の画像の意図(構図)に合わせて指定領域を含む部分領域をトリミングするので、印刷時にユーザが所望するようにトリミングされるとは限らないという問題がある。
【0008】
本発明は上記問題点を鑑みてなされたものであり、ユーザが簡単な設定をするだけで、ユーザが所望する領域を含み、あるいは所望しない領域を含まずに画像を所望のサイズで自動的にトリミングすることを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために本願発明の1つは、画像データに含まれる複数の部分領域に対して任意の評価を設定する設定手段と、前記設定手段により第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定する決定手段と、前記決定されたトリミング枠と前記設定手段により第2の評価が設定された部分領域との重なりを検知する検知手段と、前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知する通知手段を備えたことを特徴とする。
【発明の効果】
【0010】
本発明によれば、ユーザが簡単な設定をするだけで、ユーザが所望する領域を含み、あるいは所望しない領域を含まずに画像を所望のサイズで自動的にトリミングすることができる。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施形態におけるデジタルカメラの概略構成を示すブロック図である。
【図2】本発明の一実施形態におけるデジタルカメラの背面部構成を示す図である。
【図3】本発明の一実施形態におけるデジタルカメラの上面部構成を示す図である。
【図4】本発明の一実施形態における画像編集システムの構成を示す図である。
【図5】本発明の一実施形態におけるトリミング編集の手順を示すフローチャート図である。
【図6】本発明の一実施形態における画像の一例である。
【図7】本発明の一実施形態における画像の一例である。
【図8】本発明の一実施形態における画像の一例である。
【図9】本発明の一実施形態における画像の一例である。
【図10】本発明の一実施形態における画像の一例である。
【図11】本発明の一実施形態における画像の一例である。
【図12】本発明の一実施形態におけるトリミング位置を算出する方法を説明するための図である。
【図13】本発明の一実施形態におけるトリミング位置を算出する方法を説明するための図である。
【図14】本発明の一実施形態における部分領域をグループに分割する方法を説明するための図である。
【図15】本発明の一実施形態における部分領域をグループに分割する方法を説明するための図である。
【図16】本発明の一実施の形態における情報処理装置の構成を示す図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して本発明を実施するための最良の形態を詳細に説明する。
【0013】
(第1の実施形態)
本実施形態では、画像編集装置としてデジタルカメラを一例として用いることにより本発明を実現する場合について説明する。
【0014】
図1はデジタルカメラ100の回路構成を示すブロック図である。同図において、101は撮影レンズ、102は撮影レンズ101のズーム倍率の変更やフォーカス調節を行う撮影レンズ駆動部である。103は撮影レンズ101によって生成された被写体像を光電変換して電子的な画像データを生成する撮像素子である。104は撮像素子103で得た画像信号に所定の処理を施すことにより画像データを生成したり、画像データに対して表示したり編集したり保存するために変換する等の画像処理を行うデータ処理部である。105は画像データを一時的に記憶する一次メモリである。106は撮影レンズ101の撮影領域の被写体距離を測定する距離測定部である。107は画像データ等の情報を表示する表示部、108はデジタルカメラ100の各種設定を行うための操作部である。109はデジタルカメラ100の各種の動作の制御を行う中央演算素子(CPU)、110は画像データおよび画像データに付随する情報などを保存する保存メモリである。保存メモリ110はデジタルカメラ100から着脱可能な記録メディアも含む。
【0015】
図2はデジタルカメラ100の背面図であり、同図において、201は前述した表示部107に含まれ、たとえば表示パネルなどで構成される表示画面である。202は表示パネル201に表示されたカーソル等を上下左右に動かす、もしくは表示された画像の領域の位置を上下左右に動かして位置を指定するための十字キーである。206、207、208、209はそれぞれ上、下、左、右への移動を指示するボタンである。本実施形態では上下左右の位置を指定するボタンを個別に設けて説明しているが、1つのボタンで上下左右および斜めも含む自由な方向に位置を指定できるポインティングデバイスやマルチコントローラであっても良い。203はメニュー画面を表示パネル201に表示するもしくは非表示にするよう指示するためのメニューボタンである。204は表示パネル201に表示されたメニューや機能を選択する場合等、操作内容に応じて選択中の内容の決定を指示するためのセットボタンである。212は他の操作ボタンと組み合わせて用いることで機能指定を入力するためのファンクションボタンである。205はデジタルカメラの動作を切り替えるものであり、画像を撮影するための撮影モードと画像を再生表示するための再生モードのいずれかを選択するためのモード切替スイッチである。
【0016】
図3は本実施形態に係るデジタルカメラ100の上面図であり、同図において、301は電源スイッチである。302は画像を撮影するためのシャッターボタンである。303は図2におけるモード切替スイッチに応じてその機能が切り替わる多機能レバー(ズームレバーともいう。)である。多機能レバー303は、モード切替スイッチ205が撮影モードの場合は撮影される被写体の拡大や縮小を調整の指示を入力するためのものである。また、モード切替スイッチが再生モードの場合は、表示パネル201に表示される画像の拡大または縮小を調整し、さらに複数画像表示と一画像表示を切替える指示を入力するためのものである。本実施形態では表示画像の拡大または縮小の表示の調整を1つの多機能レバー303で実現するものとして説明しているが、これに限らず、縮小ボタンと拡大ボタンを個別に設けても良い。これら十字キー202、メニューボタン203、セットボタン204、モード切替スイッチ205、ファンクションボタン212、電源ボタン301、シャッターボタン302、多機能レバー303は図1の操作部108に含まれる。
【0017】
次に、ユーザの操作にしたがい、デジタルカメラ100において、画像に含まれる部分領域を指定し、その評価を示すフラグを設定する動作について説明する。なお、フラグの評価にはOK(第1の評価)およびNG(第2の評価)の2種類があるものとして説明する。
【0018】
デジタルカメラ100の電源ボタン301を押下してモード切替スイッチ205を再生モードにすると、表示パネル201には撮影日時が最新の画像が一つ表示される。多機能レバー303は引いても(回転させても)レバー自体が元に戻るような操作性を提供しているのでレバーを引く操作は繰り返し可能である。ここでは時計回りに引く(回転させる)方向を拡大方向、反時計回りに引く(回転させる)方向を縮小方向として説明する。画像が1つ表示パネル201に表示され多機能レバー303を拡大方向に操作すると、画像の一部の領域が、表示パネル201に拡大して表示される。拡大表示時に表示される部分領域の中心は、その拡大表示をする直前に表示していた画像の中心と同一である。多機能レバー303を1回操作するたびに拡大する率はあらかじめ定められた固定値である。さらに多機能レバー303を拡大方向に操作すると、上記一定の拡大率に基づいてさらに部分領域を拡大して表示パネル201に表示することができる。また、部分領域が表示パネル201に拡大表示されている状態で多機能レバー303を縮小方向に操作すると、拡大された状態から元の状態に戻って表示パネル201に表示される。したがって、ユーザは多機能レバー303を使って拡大や縮小を繰り返すことで、好みの拡大率で部分領域を表示パネル201に表示させることができる。また、表示パネル201に表示される部分領域の位置を移動したい場合は、ユーザは十字キー202を使用して操作する。上キー207、下キー209、左キー206および右キー208を押下することであらかじめ固定値として定められているグリッド間隔値の量だけ、表示画面に表示される部分領域の位置を移動することができる。
【0019】
このように、デジタルカメラ100は多機能レバー303の拡大方向または縮小方向への操作を受けて部分領域の範囲を指定し、十字キー202を押下する操作を受けて部分領域の位置を指定することができる。したがって、ユーザは画像を詳細に確認するために拡大表示するよう指示するのに続けて、その拡大された部分領域をフラグを付与する対象として指定することができる。
【0020】
そして、拡大して表示されている画像の部分領域が、笑顔であったり、フォーカスが合っていたり、ユーザが狙ったとおりの撮影結果である場合など、ユーザが気に入ったものであれば、ユーザはフラグをOKとして設定するよう指示する。具体的にはユーザは、セットボタン204を押下して指示をデジタルカメラ100に入力する。このセットボタン204を押下する操作を受けて、デジタルカメラ100は現在表示されている画像の部分領域のフラグをOKに設定する。
【0021】
一方、拡大して表示されている画像の部分領域が、目をつぶっていたり、ピンぼけであったり、ユーザの意図と異なる撮影結果である場合など、ユーザが気に入らなければ、ユーザはフラグに「NG」を設定するよう指示する。具体的には、ユーザはセットボタン204を押下して指示をデジタルカメラ100に入力する。
【0022】
そして、デジタルカメラ100は以上のような操作によって設定された、部分領域の位置を示す座標およびフラグを、画像ファイルに関連づけて保存メモリ110に記憶しておく。
【0023】
次に、デジタルカメラ100が、画像ファイルに紐付けられた部分領域のフラグの内容にしたがって、画像に対してトリミング設定を行う動作を図5のフローチャート図を参照して説明する。本フローチャートは、ユーザの操作に応答して、表示パネル201に表示されたメニュー画面において「自動トリミング」が選択され、「印刷サイズ」が指定されると開始する。ここで、各印刷サイズはL判、2L判、A4、A3であり、それぞれ予め定められたアスペクト比の値を保持している。したがって印刷サイズを指定することはアスペクト比を指定することと同義である。
【0024】
ステップS500においてCPU109は画像ファイルに部分領域のOKを示すフラグが紐付けられているか否か判定する。
【0025】
ステップS500でOKフラグがあると判定された場合、ステップS501においてCPU109はOKを示すフラグが付与された部分領域を含む仮想矩形(以下、OK矩形という。)を生成し、中心位置を取得する。具体的には、図6に示すように画像データ600の部分領域601、602、603にOKフラグが設定されている場合、部分領域601、602、603が全て収まるような仮想矩形605を作成し、その中心位置604を取得する。中心位置604の座標は以下のようにして求める。部分領域601、602、603の各座標は前述の通り位置情報として予め保存メモリ110に保存されている。これらの座標におけるX座標、Y座標の中からそれぞれの最小値および最大値を取得する。そして、中心位置604の座標(X0,Y0)は次の式で算出できる。
(数1)X0=(X座標の最小値+(X座標の最大値−X座標の最小値)/2)
(数2)Y0=(Y座標の最小値+(Y座標の最大値−Y座標の最小値)/2)
【0026】
次にステップS512においてCPU109はNGを示すフラグが付与された部分領域があるか否か判定する。
【0027】
ステップS512にてNG領域がないと判定された場合、ステップS504の処理へ遷移する。
【0028】
ステップS512にてNGの部分領域があると判定された場合、ステップS502においてCPU109はNGの部分領域を含む仮想矩形(以下、NG矩形という。)を生成し、中心位置を取得する。NG矩形の生成は、NGの部分領域について、ステップS501でのOK矩形の生成と同様の処理を実行することにより生成される。図10では、NGフラグが関連付けられた部分領域が1つなので、NG矩形1001はNG部分領域と一致する領域となる。なお、OK矩形1005はOKフラグが付与された部分領域1002および1003を含む領域である。
【0029】
ステップS503においてCPU109は、ステップS501で生成されたOK矩形とステップS502で生成されたNG矩形との重なりを検知する。ここでは、OK矩形およびNG矩形それぞれのX座標やY座標の値を比較することにより重なりが求められる。
【0030】
ステップS503にてOK矩形とNG矩形の重なりがあると検知された場合、ステップS509においてCPU109は警告を通知するためのダイアログを表示パネル201に表示し、一連の処理を終了する。なお、一連の処理を複数の画像ファイルについて連続して実行する場合に、トリミング処理を実行できなかった画像を表示パネル201に一覧表示し、ユーザに確認を促すようにしてもよい。
【0031】
ステップS503にてOK矩形とNG矩形の重なりがないと検知された場合、ステップS504においてCPU109は、トリミング位置を決定し、トリミング位置情報として保存メモリ110に格納する。
【0032】
例えば、図7に示すように、OK矩形605の中心位置604が、前もって指定されたアスペクト比のトリミング枠の中心位置と一致するようにして、トリミング位置707を決定する。あるいは、図10に示すように、OK矩形1005の中心位置1004が、前もって指定されたアスペクト比のトリミング枠の中心位置と一致するようにして、トリミング位置1007を決定する。
【0033】
図12および図13は、ステップS501で生成されたOK矩形の中心位置を基に、ステップS504においてCPU109がトリミング位置を算出する例を詳細に説明するための図である。
【0034】
まず、トリミング枠が仮想矩形よりも縦長の場合を図12を参照して説明する。CPU109は、印刷サイズ等に対応付けて予め設定されたアスペクト比(=A)がOK矩形のアスペクト比よりも小さい場合に、トリミング枠が仮想矩形よりも縦長であると判断し、以下のようにしてトリミング位置を求める。
【0035】
図12ではトリミング枠は実線で囲まれた矩形領域1221であり、OK矩形は点線で囲まれた矩形領域1205である。Pはトリミング枠1221の左上点1201と右上点1206とを結ぶ線分の長さであり、Qはトリミング枠1221の右上点1206と右下点1209とを結ぶ線分の長さである。Rは仮想矩形1205の左上点1202と右上点1207とを結ぶ線分の長さであり、Sは仮想矩形1205の右上点1207と右下点P1208とを結ぶ線分の長さである。すなわち、CPU109は、1/A≧S/Rである場合に、トリミング枠1221がOK矩形1205よりも縦長であると判断し、トリミング位置のサイズであるPおよびQを以下の式で算出する。
(数3)P=R
(数4)Q=P×(1/A)=R×(1/A)
【0036】
トリミング枠1221の右上点1206の座標を(X1,Y1)とし、先に求めたOK矩形1205の中心位置1204の座標を(X0,Y0)とすると、トリミング枠1221の右上点1206の座標(X1,Y1)は以下の式で求められる。
(数5)X1=X0+R/2
(数6)Y1=Y0+Q/2=Y0+R/2×(1/A)
これらの値を参照して、トリミング枠1221の左上点1201、左下点1211、右下点1209の各座標も順に算出することができ、トリミング位置が決定される。
【0037】
次に、トリミング枠が仮想矩形よりも横長の場合を図13を参照して説明する。CPU109は、印刷サイズ等に対応して予め設定されたアスペクト比(=A)がOK矩形のアスペクト比以上である場合に、トリミング枠が仮想矩形よりも横長であると判断し、以下のようにしてトリミング位置を求める。
【0038】
図13ではトリミング枠は実線で囲まれた矩形領域1321であり、OK矩形は点線で囲まれた矩形領域1305である。Pはトリミング枠1321の左上点1301と右上点1306を結ぶ線分の長さであり、Qはトリミング枠1321の右上点1306と右下点1309を結ぶ線分の長さである。RはOK矩形1305の左上点1302と右上点1307を結ぶ線分の長さであり、Sは仮想矩形1305の右上点1307と右下点1308を結ぶ線分の長さである。すなわち、CPU109は、1/A<S/Rである場合に、トリミング枠1321がOK矩形よりも横長であると判断し、トリミング位置のサイズであるPおよびQを以下の式で算出する。
(数7)Q=S
(数8)P=Q×A=S×A
【0039】
トリミング枠1321の右上点1306の座標を(X1,Y1)とし、先に求めたOK矩形1305の中心位置1304の座標を(X0,Y0)とすると、トリミング枠1321の右上点1306の座標(X1,Y1)は以下の式で求められる。
(数9)X1=X0+P/2=X0+S/2×A
(数10)Y1=Y0+S/2
これらの値を参照して、トリミング枠1321の左上点1301、左下点1311、右下点1309の各座標も順に算出することができ、トリミング位置が決定される。
【0040】
なお、上記では、図12および図13のように仮想矩形が横長の場合で説明しているが縦長の場合も同様にしてトリミング位置を決定することが可能である。また、トリミング枠も横長として図示しているが、縦長であってもかまわないし、ユーザがどちらかを任意に設定できるようにしてもかまわない。
【0041】
また、上記では、トリミング枠の縦辺または横辺のいずれか一方を、仮想矩形605の縦辺または横辺のどちらか一方に一致させた場合について説明しているが、トリミング枠と仮想矩形の間に余白を設けるようにしてもかまわない。
【0042】
また、トリミング枠のアスペクト比をユーザが任意に選択できるようにしてもよい。さらに、選択したアスペクト比でのトリミングが不可能な場合にアスペクト比の変更を許可するか否かも選択ができるようにしてもよい。あるいは、横長優先や縦長優先などを予め設定できるようにしてもよい。例えば、横長優先で4対3のアスペクト比が設定されている場合に、トリミングが不可能であれば、縦長に4対3のアスペクト比のトリミングを行うこととなる。
【0043】
次に、ステップS506においてCPU109は、ステップS504で決定したトリミング位置がステップS502で生成したNG矩形1001に重なるかどうかを検知する。ここでは、トリミング位置およびNG矩形のそれぞれのX座標やY座標の値を比較することにより重なりの有無が検知される。
【0044】
ステップS506にて重なりが検知されなかった場合、ステップS508においてCPU109は、トリミング位置が画像データの範囲外にあるか否かを判定する。図8はトリミング位置807の一部の領域810が画像データ800の左端811より外にある状態を示す。
【0045】
ステップS506にて重なりが検知された場合またはステップS508にてトリミング位置が画像データの範囲内にないと判定された場合、ステップS507においてCPU109はトリミング位置を移動する。ここで、トリミング位置の移動はユーザ操作による移動指示の入力に応答して行われる。そして、移動後のトリミング位置にしたがって、トリミング位置情報を更新して保存メモリ110に格納する。その後、CPU109はステップS506に戻る。
【0046】
例えば、図8に示すように画像データ800の範囲外にあるトリミング位置807を、画像データ800の範囲内に移動させた状態を図9のトリミング位置907に示す。また、図10に示すようにNG矩形1001と重なっているトリミング位置1007を、重ならないように移動させた状態を図11のトリミング位置1107に示す。
【0047】
ステップS508でトリミング位置が画像データの範囲内にあると判定された場合、CPU109は一連の処理を終了する。
【0048】
なお、ステップS500でOK領域がない、ステップS512でNG領域があると判定された場合、ステップS504においてCPU109はNG領域を含まず、所定のアスペクト比で最大面積を有するようにトリミング位置を決定する。
【0049】
なお、ステップS507の移動処理を繰返した回数をカウントし、所定値を超えた場合には、警告メッセージを通知して終了するようにしてもよい。
【0050】
なお、上記では、OK矩形はOKフラグが設定された複数の部分領域の全てを含む場合について説明したが、OKフラグが設定された複数の部分領域のうちユーザが任意に選択した部分領域を含むようにしてもよい。
【0051】
なお、上記では、ステップS507での移動処理はユーザの指示に応答して実行する場合について説明したが、自動的に行うようにしてもよい。例えば、CPU109は、所定のアスペクト比を有し、NG矩形と重ならず、画像データの範囲内となるように座標を予め定められたルールにしたがって変更し、トリミング位置を決定するようにしてもよい。例えば、トリミング位置の左端(右端)がNG矩形と重なる場合には、NG矩形の右端(左端)のX座標を求め、トリミング位置の左端(右端)のX座標が重ならない位置になるよう、トリミング位置全体のX座標をずらす。あるいは、例えば、トリミング位置の上端(下端)がNG矩形の下端(上端)と重なる場合には、NG矩形の下端(上端)のY座標を求め、トリミング位置の上端(下端)のX座標が重ならない位置になるよう、トリミング位置全体のY座標をずらす。
【0052】
なお、上記では、ステップS503でOK矩形とNG矩形とが重なると判定された場合にはトリミング処理を行わずに終了する場合について説明した。しかしながら、OK矩形とNG矩形の重なり面積が所定の値より小さい場合には、一連の処理を終了せずに、ステップS504の処理を進めるようにしてもよい。
【0053】
さらに、この場合、ステップS507での移動処理を自動的に行う際にも、トリミング位置とNG矩形との重なり面積も所定値よりも小さくなるように決定されるようにしてもよい。
【0054】
なお、ステップS503でOK矩形とNG矩形に重なりがあると判定された場合、OKフラグの部分領域が複数ある場合には、いくつかの部分領域のグループに分割してOK矩形を作成し、重なりをなくすようにしてトリミング位置を決定するようにしてもよい。以下、OK矩形を複数に分割する場合について図14および図15を参照して説明する。
【0055】
図14においてOKフラグが関連付けられた部分領域1401、1402、1403、1404を囲むOK矩形を生成すると、NGフラグの部分領域1408と重なりが生じる。
【0056】
そこで、CPU109は、図14に示すように、部分領域1401と1402を囲むOK矩形1406と、部分領域1403と1404を囲むOK矩形1405のように分割された複数のOK矩形を生成する。あるいは、図15に示すように、部分領域1401を囲むOK矩形1506と、部分領域1402、1403、1404を囲むOK矩形1505を生成する。
【0057】
図14に示すような状態で、4つの部分領域を2つずつの組に分割する組み合わせは他に「1401と1403、1402と1404」「1401と1404、1402と1403」の2通りの組が存在する。しかし、NG矩形1408と重ならないOK矩形を生成するための組み合わせは図14に示す「1401と1402、1403と1404」の組だけである。図15に示すような状態で、4つの部分領域を1つと3つの組に分割する組み合わせは他に「1402、1401と1403と1404」「1403、1401と1402と1404」「1404、1401と1402と1403」の3通りの組が存在する。しかし、NG矩形1408と重ならないOK矩形を生成するための組み合わせは図15に示す「1401、1402と1403と1404」の組だけである。
【0058】
以上のようにして、CPU109は、OK部分領域の全ての組み合わせからそれぞれのOK矩形を求め、NG矩形との重なりを検知することにより、OK矩形を形成するためのOK部分領域の適切な組み合わせを選択することができる。
【0059】
また、OKフラグの部分領域が5つの場合はOKフラグの部分領域3つのOK矩形と2つのOK矩形に分割するか、OKフラグの部分領域4つのOK矩形と1つのOK矩形に分割することが考えられる。同様に整数NとするとN個のOKフラグの部分領域が存在する場合は以下の式で表わされる組が存在する。
(数11)
Nが偶数の場合
N/2の商をFとし、Kは整数と仮定すると、
「F個とF個」の組、「(F+1)個と(F−1個)の組」・・・「(F+K)個と(F−K)個」の組のようにK=F−1となるまでF通りの組が存在する。
(数12)
Nが奇数の場合
N/2の商をFとし、Kは整数と仮定すると、
「(F+1)個とF個」の組、「(F+2)個と(F−1)個」の組・・・「(F+K)個と(F−K+1)」個の組のようにK=F−1となるまで(F−1)通りの組が存在する。
【0060】
CPU109は、NG矩形と重ならないようなOK矩形を生成するための組み合わせが複数通り存在する場合は、均等により近い個数を含む組み合わせを優先して選択する。例えば、図15で示すようにOKフラグの部分領域を3つ含むOK矩形と1つのOK矩形に分割する場合よりも、図14で示すようにOKフラグの部分領域を2つずつ含むOK矩形の組み合わせを選択する。なお、上記の例ではOK矩形を2つに分割する例を挙げているが3つ以上に分割してトリミングするようにしてもよい。
【0061】
以上のようにして複数のOK矩形を生成した後の手順は、それぞれのOK矩形について図5のステップS504以降と同様の処理を順に実行することにより、グループ毎にトリミング位置を決定する。
【0062】
(第2の実施形態)
本実施形態では画像編集装置として、第1の実施形態のデジタルカメラの代わりに、画像を管理するためのアプリケーションソフトウェアをインストールしたコンピュータ装置を用いて本願発明を実現する場合について説明する。以下、第1の実施形態と同様の部分については説明を省略し、本実施形態に特有の部分について詳細に説明する。
【0063】
図4は、本実施形態に係る画像管理システムの概略を示すブロック図である。401は光学像を電気信号に変換し、所定の画像処理を施した後デジタル情報として記録可能な画像入力装置である。この画像入力装置401は、例えば静止画や動画を撮影し、画像データとして記録可能なデジタルカメラや、原稿を読み取って画像データとして出力可能なスキャナなどである。また、画像データを記憶した記憶媒体から画像データを読み出して出力可能な各種記憶媒体のドライバであってもよい。
【0064】
402はパーソナルコンピュータ(PC)、403は画像入力装置401からPC402へ、画像データを転送するためのデータ転送用インタフェース(I/F)である。データ転送用I/F403としては、例えば、USB(Universal Serial Bus)、IEEE1394に代表される有線インタフェースや、IrDA、Bluetooth(登録商標)に代表される無線系インタフェースなどを用いることができる。
【0065】
画像データは、画像入力装置401からデータ転送用I/F403を介してPC402に転送され、ハードディスクドライブ(HDD)に記憶される。PC402には、画像管理アプリケーションソフトウェアがインストールされており、これを起動することによって、ハードディスクに記憶された画像データに対して、その顔領域の評価を設定したり、保持したりすることができる。
【0066】
図16は、PC402を実現するための情報処理装置の構成を示すブロック図である。情報処理装置は、CRTディスプレイ1601、VRAM1602、BMU1603、キーボード1604、PD1605、CPU1606、ROM1607、RAM1608、HDD1609、FDD1610、ネットワークI/F1611を有する。
【0067】
CRT(Cathode Ray Tube)ディスプレイ1601には、画像や画像管理アプリケーションソフトウェアのメニュー画面が表示される。ディスプレイ1601は、第1の実施形態における表示部107と対応する。VRAM1602には、ディスプレイ1601に表示するための画像が描画される。このVRAM1602に描画された画像は、所定の規定に従ってディスプレイ1601に転送され、これによりディスプレイ1601に画像が表示されることとなる。BMU(ビットムーブユニット)1603は、メモリ間のデータ転送や、メモリと各I/Oデバイスとの間のデータ転送を制御する。キーボード1604は、ユーザの指示を入力するための各種キーを有する。PD(ポインティングデバイス)1605は、例えば、ディスプレイ1601に表示されたアイコンやメニュー画面の項目に対するユーザの指示を入力するために使用される。キーボード1604やPD1605は第1の実施形態における十字キー202やメニューボタン203、セットボタン204、ファンクションボタン212、多機能レバー303と対応する。CPU1606は、ROM1607やHDD1609に格納された制御プログラムに基づいて、各デバイスを制御する。CPU1606は第1の実施形態におけるCPU109と対応する。ROM1607は、各種制御プログラムやデータを保存する。RAM1608は、CPU1606のワーク領域、エラー処理時のデータの退避領域、制御プログラムのロード領域等を有する。HDD1609は、オペレーティングシステム(OS)や画像管理アプリケーションソフトウェア、画像データなどを格納する。HDD1609は第1の実施形態における保存メモリ110と対応する。ネットワークI/F1611は、他の情報処理装置やプリンタ等とネットワークを介して通信を行う。CPUバス1612は、アドレスバス、データバス及びコントロールバスを含む。CPU1606に対する制御プログラムの提供は、ROM1607、HDD1609から行うこともできるし、ネットワークI/F1611を介してネットワーク経由で他の情報処理装置等から行うこともできる。
【0068】
第1の実施形態において図5で示したフローは、PC402においてCPU1606がOSや画像管理アプリケーションソフトウェアを起動し、それらにしたがって動作することで実現できる。
【0069】
なお、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施の形態の機能を実現するプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
【0070】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0071】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0072】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【0073】
更に、前述した実施の形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
【符号の説明】
【0074】
100 デジタルカメラ
101 撮影レンズ
102 撮影レンズ駆動部
103 撮像素子
104 信号処理部
105 一次メモリ
106 距離測定部
107 表示部
108 操作部
109 CPU
110 保存メモリ
【技術分野】
【0001】
本発明は、画像のトリミング編集を実行する画像編集装置及びその制御方法及びプログラムに関する。
【背景技術】
【0002】
従来、デジタルカメラで撮影した画像を印刷して複数の人に配布するということが一般的によく行われている。その際、ユーザはデジタルカメラを操作して、どの画像を何枚印刷するかをDPOF(Digital Print Order Format)のような規格に則って記録メディアに記録することで、印刷指定を行うことができる。
【0003】
また、画像を所望の印刷用紙の大きさに合せて印刷したい場合には、オペレータがマウスやキーボードを使って、プリントサイズに応じたアスペクト比のトリミング枠を2次元方向に動かしてトリミング領域を決定し、画像を切り出すことが行われている。(例えば特許文献1参照)。
【0004】
また、操作者が画像上の所望の領域を指定し、その指定領域が画像に占める位置関係から構図を解析し、元々の画像の意図(構図)図にできるだけ合う形で指定領域を含む部分領域をトリミングすることが行われている。(例えば特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−177802号公報
【特許文献2】特開2005−078290号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に開示された発明では、ユーザが手動でトリミング枠を移動するので、画像上の所望の領域がトリミング枠内に入るように細心の注意を払わなければならず、煩わしさが生じるという問題がある。
【0007】
また、特許文献2に開示された発明では、撮影時の画像の意図(構図)に合わせて指定領域を含む部分領域をトリミングするので、印刷時にユーザが所望するようにトリミングされるとは限らないという問題がある。
【0008】
本発明は上記問題点を鑑みてなされたものであり、ユーザが簡単な設定をするだけで、ユーザが所望する領域を含み、あるいは所望しない領域を含まずに画像を所望のサイズで自動的にトリミングすることを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために本願発明の1つは、画像データに含まれる複数の部分領域に対して任意の評価を設定する設定手段と、前記設定手段により第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定する決定手段と、前記決定されたトリミング枠と前記設定手段により第2の評価が設定された部分領域との重なりを検知する検知手段と、前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知する通知手段を備えたことを特徴とする。
【発明の効果】
【0010】
本発明によれば、ユーザが簡単な設定をするだけで、ユーザが所望する領域を含み、あるいは所望しない領域を含まずに画像を所望のサイズで自動的にトリミングすることができる。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施形態におけるデジタルカメラの概略構成を示すブロック図である。
【図2】本発明の一実施形態におけるデジタルカメラの背面部構成を示す図である。
【図3】本発明の一実施形態におけるデジタルカメラの上面部構成を示す図である。
【図4】本発明の一実施形態における画像編集システムの構成を示す図である。
【図5】本発明の一実施形態におけるトリミング編集の手順を示すフローチャート図である。
【図6】本発明の一実施形態における画像の一例である。
【図7】本発明の一実施形態における画像の一例である。
【図8】本発明の一実施形態における画像の一例である。
【図9】本発明の一実施形態における画像の一例である。
【図10】本発明の一実施形態における画像の一例である。
【図11】本発明の一実施形態における画像の一例である。
【図12】本発明の一実施形態におけるトリミング位置を算出する方法を説明するための図である。
【図13】本発明の一実施形態におけるトリミング位置を算出する方法を説明するための図である。
【図14】本発明の一実施形態における部分領域をグループに分割する方法を説明するための図である。
【図15】本発明の一実施形態における部分領域をグループに分割する方法を説明するための図である。
【図16】本発明の一実施の形態における情報処理装置の構成を示す図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して本発明を実施するための最良の形態を詳細に説明する。
【0013】
(第1の実施形態)
本実施形態では、画像編集装置としてデジタルカメラを一例として用いることにより本発明を実現する場合について説明する。
【0014】
図1はデジタルカメラ100の回路構成を示すブロック図である。同図において、101は撮影レンズ、102は撮影レンズ101のズーム倍率の変更やフォーカス調節を行う撮影レンズ駆動部である。103は撮影レンズ101によって生成された被写体像を光電変換して電子的な画像データを生成する撮像素子である。104は撮像素子103で得た画像信号に所定の処理を施すことにより画像データを生成したり、画像データに対して表示したり編集したり保存するために変換する等の画像処理を行うデータ処理部である。105は画像データを一時的に記憶する一次メモリである。106は撮影レンズ101の撮影領域の被写体距離を測定する距離測定部である。107は画像データ等の情報を表示する表示部、108はデジタルカメラ100の各種設定を行うための操作部である。109はデジタルカメラ100の各種の動作の制御を行う中央演算素子(CPU)、110は画像データおよび画像データに付随する情報などを保存する保存メモリである。保存メモリ110はデジタルカメラ100から着脱可能な記録メディアも含む。
【0015】
図2はデジタルカメラ100の背面図であり、同図において、201は前述した表示部107に含まれ、たとえば表示パネルなどで構成される表示画面である。202は表示パネル201に表示されたカーソル等を上下左右に動かす、もしくは表示された画像の領域の位置を上下左右に動かして位置を指定するための十字キーである。206、207、208、209はそれぞれ上、下、左、右への移動を指示するボタンである。本実施形態では上下左右の位置を指定するボタンを個別に設けて説明しているが、1つのボタンで上下左右および斜めも含む自由な方向に位置を指定できるポインティングデバイスやマルチコントローラであっても良い。203はメニュー画面を表示パネル201に表示するもしくは非表示にするよう指示するためのメニューボタンである。204は表示パネル201に表示されたメニューや機能を選択する場合等、操作内容に応じて選択中の内容の決定を指示するためのセットボタンである。212は他の操作ボタンと組み合わせて用いることで機能指定を入力するためのファンクションボタンである。205はデジタルカメラの動作を切り替えるものであり、画像を撮影するための撮影モードと画像を再生表示するための再生モードのいずれかを選択するためのモード切替スイッチである。
【0016】
図3は本実施形態に係るデジタルカメラ100の上面図であり、同図において、301は電源スイッチである。302は画像を撮影するためのシャッターボタンである。303は図2におけるモード切替スイッチに応じてその機能が切り替わる多機能レバー(ズームレバーともいう。)である。多機能レバー303は、モード切替スイッチ205が撮影モードの場合は撮影される被写体の拡大や縮小を調整の指示を入力するためのものである。また、モード切替スイッチが再生モードの場合は、表示パネル201に表示される画像の拡大または縮小を調整し、さらに複数画像表示と一画像表示を切替える指示を入力するためのものである。本実施形態では表示画像の拡大または縮小の表示の調整を1つの多機能レバー303で実現するものとして説明しているが、これに限らず、縮小ボタンと拡大ボタンを個別に設けても良い。これら十字キー202、メニューボタン203、セットボタン204、モード切替スイッチ205、ファンクションボタン212、電源ボタン301、シャッターボタン302、多機能レバー303は図1の操作部108に含まれる。
【0017】
次に、ユーザの操作にしたがい、デジタルカメラ100において、画像に含まれる部分領域を指定し、その評価を示すフラグを設定する動作について説明する。なお、フラグの評価にはOK(第1の評価)およびNG(第2の評価)の2種類があるものとして説明する。
【0018】
デジタルカメラ100の電源ボタン301を押下してモード切替スイッチ205を再生モードにすると、表示パネル201には撮影日時が最新の画像が一つ表示される。多機能レバー303は引いても(回転させても)レバー自体が元に戻るような操作性を提供しているのでレバーを引く操作は繰り返し可能である。ここでは時計回りに引く(回転させる)方向を拡大方向、反時計回りに引く(回転させる)方向を縮小方向として説明する。画像が1つ表示パネル201に表示され多機能レバー303を拡大方向に操作すると、画像の一部の領域が、表示パネル201に拡大して表示される。拡大表示時に表示される部分領域の中心は、その拡大表示をする直前に表示していた画像の中心と同一である。多機能レバー303を1回操作するたびに拡大する率はあらかじめ定められた固定値である。さらに多機能レバー303を拡大方向に操作すると、上記一定の拡大率に基づいてさらに部分領域を拡大して表示パネル201に表示することができる。また、部分領域が表示パネル201に拡大表示されている状態で多機能レバー303を縮小方向に操作すると、拡大された状態から元の状態に戻って表示パネル201に表示される。したがって、ユーザは多機能レバー303を使って拡大や縮小を繰り返すことで、好みの拡大率で部分領域を表示パネル201に表示させることができる。また、表示パネル201に表示される部分領域の位置を移動したい場合は、ユーザは十字キー202を使用して操作する。上キー207、下キー209、左キー206および右キー208を押下することであらかじめ固定値として定められているグリッド間隔値の量だけ、表示画面に表示される部分領域の位置を移動することができる。
【0019】
このように、デジタルカメラ100は多機能レバー303の拡大方向または縮小方向への操作を受けて部分領域の範囲を指定し、十字キー202を押下する操作を受けて部分領域の位置を指定することができる。したがって、ユーザは画像を詳細に確認するために拡大表示するよう指示するのに続けて、その拡大された部分領域をフラグを付与する対象として指定することができる。
【0020】
そして、拡大して表示されている画像の部分領域が、笑顔であったり、フォーカスが合っていたり、ユーザが狙ったとおりの撮影結果である場合など、ユーザが気に入ったものであれば、ユーザはフラグをOKとして設定するよう指示する。具体的にはユーザは、セットボタン204を押下して指示をデジタルカメラ100に入力する。このセットボタン204を押下する操作を受けて、デジタルカメラ100は現在表示されている画像の部分領域のフラグをOKに設定する。
【0021】
一方、拡大して表示されている画像の部分領域が、目をつぶっていたり、ピンぼけであったり、ユーザの意図と異なる撮影結果である場合など、ユーザが気に入らなければ、ユーザはフラグに「NG」を設定するよう指示する。具体的には、ユーザはセットボタン204を押下して指示をデジタルカメラ100に入力する。
【0022】
そして、デジタルカメラ100は以上のような操作によって設定された、部分領域の位置を示す座標およびフラグを、画像ファイルに関連づけて保存メモリ110に記憶しておく。
【0023】
次に、デジタルカメラ100が、画像ファイルに紐付けられた部分領域のフラグの内容にしたがって、画像に対してトリミング設定を行う動作を図5のフローチャート図を参照して説明する。本フローチャートは、ユーザの操作に応答して、表示パネル201に表示されたメニュー画面において「自動トリミング」が選択され、「印刷サイズ」が指定されると開始する。ここで、各印刷サイズはL判、2L判、A4、A3であり、それぞれ予め定められたアスペクト比の値を保持している。したがって印刷サイズを指定することはアスペクト比を指定することと同義である。
【0024】
ステップS500においてCPU109は画像ファイルに部分領域のOKを示すフラグが紐付けられているか否か判定する。
【0025】
ステップS500でOKフラグがあると判定された場合、ステップS501においてCPU109はOKを示すフラグが付与された部分領域を含む仮想矩形(以下、OK矩形という。)を生成し、中心位置を取得する。具体的には、図6に示すように画像データ600の部分領域601、602、603にOKフラグが設定されている場合、部分領域601、602、603が全て収まるような仮想矩形605を作成し、その中心位置604を取得する。中心位置604の座標は以下のようにして求める。部分領域601、602、603の各座標は前述の通り位置情報として予め保存メモリ110に保存されている。これらの座標におけるX座標、Y座標の中からそれぞれの最小値および最大値を取得する。そして、中心位置604の座標(X0,Y0)は次の式で算出できる。
(数1)X0=(X座標の最小値+(X座標の最大値−X座標の最小値)/2)
(数2)Y0=(Y座標の最小値+(Y座標の最大値−Y座標の最小値)/2)
【0026】
次にステップS512においてCPU109はNGを示すフラグが付与された部分領域があるか否か判定する。
【0027】
ステップS512にてNG領域がないと判定された場合、ステップS504の処理へ遷移する。
【0028】
ステップS512にてNGの部分領域があると判定された場合、ステップS502においてCPU109はNGの部分領域を含む仮想矩形(以下、NG矩形という。)を生成し、中心位置を取得する。NG矩形の生成は、NGの部分領域について、ステップS501でのOK矩形の生成と同様の処理を実行することにより生成される。図10では、NGフラグが関連付けられた部分領域が1つなので、NG矩形1001はNG部分領域と一致する領域となる。なお、OK矩形1005はOKフラグが付与された部分領域1002および1003を含む領域である。
【0029】
ステップS503においてCPU109は、ステップS501で生成されたOK矩形とステップS502で生成されたNG矩形との重なりを検知する。ここでは、OK矩形およびNG矩形それぞれのX座標やY座標の値を比較することにより重なりが求められる。
【0030】
ステップS503にてOK矩形とNG矩形の重なりがあると検知された場合、ステップS509においてCPU109は警告を通知するためのダイアログを表示パネル201に表示し、一連の処理を終了する。なお、一連の処理を複数の画像ファイルについて連続して実行する場合に、トリミング処理を実行できなかった画像を表示パネル201に一覧表示し、ユーザに確認を促すようにしてもよい。
【0031】
ステップS503にてOK矩形とNG矩形の重なりがないと検知された場合、ステップS504においてCPU109は、トリミング位置を決定し、トリミング位置情報として保存メモリ110に格納する。
【0032】
例えば、図7に示すように、OK矩形605の中心位置604が、前もって指定されたアスペクト比のトリミング枠の中心位置と一致するようにして、トリミング位置707を決定する。あるいは、図10に示すように、OK矩形1005の中心位置1004が、前もって指定されたアスペクト比のトリミング枠の中心位置と一致するようにして、トリミング位置1007を決定する。
【0033】
図12および図13は、ステップS501で生成されたOK矩形の中心位置を基に、ステップS504においてCPU109がトリミング位置を算出する例を詳細に説明するための図である。
【0034】
まず、トリミング枠が仮想矩形よりも縦長の場合を図12を参照して説明する。CPU109は、印刷サイズ等に対応付けて予め設定されたアスペクト比(=A)がOK矩形のアスペクト比よりも小さい場合に、トリミング枠が仮想矩形よりも縦長であると判断し、以下のようにしてトリミング位置を求める。
【0035】
図12ではトリミング枠は実線で囲まれた矩形領域1221であり、OK矩形は点線で囲まれた矩形領域1205である。Pはトリミング枠1221の左上点1201と右上点1206とを結ぶ線分の長さであり、Qはトリミング枠1221の右上点1206と右下点1209とを結ぶ線分の長さである。Rは仮想矩形1205の左上点1202と右上点1207とを結ぶ線分の長さであり、Sは仮想矩形1205の右上点1207と右下点P1208とを結ぶ線分の長さである。すなわち、CPU109は、1/A≧S/Rである場合に、トリミング枠1221がOK矩形1205よりも縦長であると判断し、トリミング位置のサイズであるPおよびQを以下の式で算出する。
(数3)P=R
(数4)Q=P×(1/A)=R×(1/A)
【0036】
トリミング枠1221の右上点1206の座標を(X1,Y1)とし、先に求めたOK矩形1205の中心位置1204の座標を(X0,Y0)とすると、トリミング枠1221の右上点1206の座標(X1,Y1)は以下の式で求められる。
(数5)X1=X0+R/2
(数6)Y1=Y0+Q/2=Y0+R/2×(1/A)
これらの値を参照して、トリミング枠1221の左上点1201、左下点1211、右下点1209の各座標も順に算出することができ、トリミング位置が決定される。
【0037】
次に、トリミング枠が仮想矩形よりも横長の場合を図13を参照して説明する。CPU109は、印刷サイズ等に対応して予め設定されたアスペクト比(=A)がOK矩形のアスペクト比以上である場合に、トリミング枠が仮想矩形よりも横長であると判断し、以下のようにしてトリミング位置を求める。
【0038】
図13ではトリミング枠は実線で囲まれた矩形領域1321であり、OK矩形は点線で囲まれた矩形領域1305である。Pはトリミング枠1321の左上点1301と右上点1306を結ぶ線分の長さであり、Qはトリミング枠1321の右上点1306と右下点1309を結ぶ線分の長さである。RはOK矩形1305の左上点1302と右上点1307を結ぶ線分の長さであり、Sは仮想矩形1305の右上点1307と右下点1308を結ぶ線分の長さである。すなわち、CPU109は、1/A<S/Rである場合に、トリミング枠1321がOK矩形よりも横長であると判断し、トリミング位置のサイズであるPおよびQを以下の式で算出する。
(数7)Q=S
(数8)P=Q×A=S×A
【0039】
トリミング枠1321の右上点1306の座標を(X1,Y1)とし、先に求めたOK矩形1305の中心位置1304の座標を(X0,Y0)とすると、トリミング枠1321の右上点1306の座標(X1,Y1)は以下の式で求められる。
(数9)X1=X0+P/2=X0+S/2×A
(数10)Y1=Y0+S/2
これらの値を参照して、トリミング枠1321の左上点1301、左下点1311、右下点1309の各座標も順に算出することができ、トリミング位置が決定される。
【0040】
なお、上記では、図12および図13のように仮想矩形が横長の場合で説明しているが縦長の場合も同様にしてトリミング位置を決定することが可能である。また、トリミング枠も横長として図示しているが、縦長であってもかまわないし、ユーザがどちらかを任意に設定できるようにしてもかまわない。
【0041】
また、上記では、トリミング枠の縦辺または横辺のいずれか一方を、仮想矩形605の縦辺または横辺のどちらか一方に一致させた場合について説明しているが、トリミング枠と仮想矩形の間に余白を設けるようにしてもかまわない。
【0042】
また、トリミング枠のアスペクト比をユーザが任意に選択できるようにしてもよい。さらに、選択したアスペクト比でのトリミングが不可能な場合にアスペクト比の変更を許可するか否かも選択ができるようにしてもよい。あるいは、横長優先や縦長優先などを予め設定できるようにしてもよい。例えば、横長優先で4対3のアスペクト比が設定されている場合に、トリミングが不可能であれば、縦長に4対3のアスペクト比のトリミングを行うこととなる。
【0043】
次に、ステップS506においてCPU109は、ステップS504で決定したトリミング位置がステップS502で生成したNG矩形1001に重なるかどうかを検知する。ここでは、トリミング位置およびNG矩形のそれぞれのX座標やY座標の値を比較することにより重なりの有無が検知される。
【0044】
ステップS506にて重なりが検知されなかった場合、ステップS508においてCPU109は、トリミング位置が画像データの範囲外にあるか否かを判定する。図8はトリミング位置807の一部の領域810が画像データ800の左端811より外にある状態を示す。
【0045】
ステップS506にて重なりが検知された場合またはステップS508にてトリミング位置が画像データの範囲内にないと判定された場合、ステップS507においてCPU109はトリミング位置を移動する。ここで、トリミング位置の移動はユーザ操作による移動指示の入力に応答して行われる。そして、移動後のトリミング位置にしたがって、トリミング位置情報を更新して保存メモリ110に格納する。その後、CPU109はステップS506に戻る。
【0046】
例えば、図8に示すように画像データ800の範囲外にあるトリミング位置807を、画像データ800の範囲内に移動させた状態を図9のトリミング位置907に示す。また、図10に示すようにNG矩形1001と重なっているトリミング位置1007を、重ならないように移動させた状態を図11のトリミング位置1107に示す。
【0047】
ステップS508でトリミング位置が画像データの範囲内にあると判定された場合、CPU109は一連の処理を終了する。
【0048】
なお、ステップS500でOK領域がない、ステップS512でNG領域があると判定された場合、ステップS504においてCPU109はNG領域を含まず、所定のアスペクト比で最大面積を有するようにトリミング位置を決定する。
【0049】
なお、ステップS507の移動処理を繰返した回数をカウントし、所定値を超えた場合には、警告メッセージを通知して終了するようにしてもよい。
【0050】
なお、上記では、OK矩形はOKフラグが設定された複数の部分領域の全てを含む場合について説明したが、OKフラグが設定された複数の部分領域のうちユーザが任意に選択した部分領域を含むようにしてもよい。
【0051】
なお、上記では、ステップS507での移動処理はユーザの指示に応答して実行する場合について説明したが、自動的に行うようにしてもよい。例えば、CPU109は、所定のアスペクト比を有し、NG矩形と重ならず、画像データの範囲内となるように座標を予め定められたルールにしたがって変更し、トリミング位置を決定するようにしてもよい。例えば、トリミング位置の左端(右端)がNG矩形と重なる場合には、NG矩形の右端(左端)のX座標を求め、トリミング位置の左端(右端)のX座標が重ならない位置になるよう、トリミング位置全体のX座標をずらす。あるいは、例えば、トリミング位置の上端(下端)がNG矩形の下端(上端)と重なる場合には、NG矩形の下端(上端)のY座標を求め、トリミング位置の上端(下端)のX座標が重ならない位置になるよう、トリミング位置全体のY座標をずらす。
【0052】
なお、上記では、ステップS503でOK矩形とNG矩形とが重なると判定された場合にはトリミング処理を行わずに終了する場合について説明した。しかしながら、OK矩形とNG矩形の重なり面積が所定の値より小さい場合には、一連の処理を終了せずに、ステップS504の処理を進めるようにしてもよい。
【0053】
さらに、この場合、ステップS507での移動処理を自動的に行う際にも、トリミング位置とNG矩形との重なり面積も所定値よりも小さくなるように決定されるようにしてもよい。
【0054】
なお、ステップS503でOK矩形とNG矩形に重なりがあると判定された場合、OKフラグの部分領域が複数ある場合には、いくつかの部分領域のグループに分割してOK矩形を作成し、重なりをなくすようにしてトリミング位置を決定するようにしてもよい。以下、OK矩形を複数に分割する場合について図14および図15を参照して説明する。
【0055】
図14においてOKフラグが関連付けられた部分領域1401、1402、1403、1404を囲むOK矩形を生成すると、NGフラグの部分領域1408と重なりが生じる。
【0056】
そこで、CPU109は、図14に示すように、部分領域1401と1402を囲むOK矩形1406と、部分領域1403と1404を囲むOK矩形1405のように分割された複数のOK矩形を生成する。あるいは、図15に示すように、部分領域1401を囲むOK矩形1506と、部分領域1402、1403、1404を囲むOK矩形1505を生成する。
【0057】
図14に示すような状態で、4つの部分領域を2つずつの組に分割する組み合わせは他に「1401と1403、1402と1404」「1401と1404、1402と1403」の2通りの組が存在する。しかし、NG矩形1408と重ならないOK矩形を生成するための組み合わせは図14に示す「1401と1402、1403と1404」の組だけである。図15に示すような状態で、4つの部分領域を1つと3つの組に分割する組み合わせは他に「1402、1401と1403と1404」「1403、1401と1402と1404」「1404、1401と1402と1403」の3通りの組が存在する。しかし、NG矩形1408と重ならないOK矩形を生成するための組み合わせは図15に示す「1401、1402と1403と1404」の組だけである。
【0058】
以上のようにして、CPU109は、OK部分領域の全ての組み合わせからそれぞれのOK矩形を求め、NG矩形との重なりを検知することにより、OK矩形を形成するためのOK部分領域の適切な組み合わせを選択することができる。
【0059】
また、OKフラグの部分領域が5つの場合はOKフラグの部分領域3つのOK矩形と2つのOK矩形に分割するか、OKフラグの部分領域4つのOK矩形と1つのOK矩形に分割することが考えられる。同様に整数NとするとN個のOKフラグの部分領域が存在する場合は以下の式で表わされる組が存在する。
(数11)
Nが偶数の場合
N/2の商をFとし、Kは整数と仮定すると、
「F個とF個」の組、「(F+1)個と(F−1個)の組」・・・「(F+K)個と(F−K)個」の組のようにK=F−1となるまでF通りの組が存在する。
(数12)
Nが奇数の場合
N/2の商をFとし、Kは整数と仮定すると、
「(F+1)個とF個」の組、「(F+2)個と(F−1)個」の組・・・「(F+K)個と(F−K+1)」個の組のようにK=F−1となるまで(F−1)通りの組が存在する。
【0060】
CPU109は、NG矩形と重ならないようなOK矩形を生成するための組み合わせが複数通り存在する場合は、均等により近い個数を含む組み合わせを優先して選択する。例えば、図15で示すようにOKフラグの部分領域を3つ含むOK矩形と1つのOK矩形に分割する場合よりも、図14で示すようにOKフラグの部分領域を2つずつ含むOK矩形の組み合わせを選択する。なお、上記の例ではOK矩形を2つに分割する例を挙げているが3つ以上に分割してトリミングするようにしてもよい。
【0061】
以上のようにして複数のOK矩形を生成した後の手順は、それぞれのOK矩形について図5のステップS504以降と同様の処理を順に実行することにより、グループ毎にトリミング位置を決定する。
【0062】
(第2の実施形態)
本実施形態では画像編集装置として、第1の実施形態のデジタルカメラの代わりに、画像を管理するためのアプリケーションソフトウェアをインストールしたコンピュータ装置を用いて本願発明を実現する場合について説明する。以下、第1の実施形態と同様の部分については説明を省略し、本実施形態に特有の部分について詳細に説明する。
【0063】
図4は、本実施形態に係る画像管理システムの概略を示すブロック図である。401は光学像を電気信号に変換し、所定の画像処理を施した後デジタル情報として記録可能な画像入力装置である。この画像入力装置401は、例えば静止画や動画を撮影し、画像データとして記録可能なデジタルカメラや、原稿を読み取って画像データとして出力可能なスキャナなどである。また、画像データを記憶した記憶媒体から画像データを読み出して出力可能な各種記憶媒体のドライバであってもよい。
【0064】
402はパーソナルコンピュータ(PC)、403は画像入力装置401からPC402へ、画像データを転送するためのデータ転送用インタフェース(I/F)である。データ転送用I/F403としては、例えば、USB(Universal Serial Bus)、IEEE1394に代表される有線インタフェースや、IrDA、Bluetooth(登録商標)に代表される無線系インタフェースなどを用いることができる。
【0065】
画像データは、画像入力装置401からデータ転送用I/F403を介してPC402に転送され、ハードディスクドライブ(HDD)に記憶される。PC402には、画像管理アプリケーションソフトウェアがインストールされており、これを起動することによって、ハードディスクに記憶された画像データに対して、その顔領域の評価を設定したり、保持したりすることができる。
【0066】
図16は、PC402を実現するための情報処理装置の構成を示すブロック図である。情報処理装置は、CRTディスプレイ1601、VRAM1602、BMU1603、キーボード1604、PD1605、CPU1606、ROM1607、RAM1608、HDD1609、FDD1610、ネットワークI/F1611を有する。
【0067】
CRT(Cathode Ray Tube)ディスプレイ1601には、画像や画像管理アプリケーションソフトウェアのメニュー画面が表示される。ディスプレイ1601は、第1の実施形態における表示部107と対応する。VRAM1602には、ディスプレイ1601に表示するための画像が描画される。このVRAM1602に描画された画像は、所定の規定に従ってディスプレイ1601に転送され、これによりディスプレイ1601に画像が表示されることとなる。BMU(ビットムーブユニット)1603は、メモリ間のデータ転送や、メモリと各I/Oデバイスとの間のデータ転送を制御する。キーボード1604は、ユーザの指示を入力するための各種キーを有する。PD(ポインティングデバイス)1605は、例えば、ディスプレイ1601に表示されたアイコンやメニュー画面の項目に対するユーザの指示を入力するために使用される。キーボード1604やPD1605は第1の実施形態における十字キー202やメニューボタン203、セットボタン204、ファンクションボタン212、多機能レバー303と対応する。CPU1606は、ROM1607やHDD1609に格納された制御プログラムに基づいて、各デバイスを制御する。CPU1606は第1の実施形態におけるCPU109と対応する。ROM1607は、各種制御プログラムやデータを保存する。RAM1608は、CPU1606のワーク領域、エラー処理時のデータの退避領域、制御プログラムのロード領域等を有する。HDD1609は、オペレーティングシステム(OS)や画像管理アプリケーションソフトウェア、画像データなどを格納する。HDD1609は第1の実施形態における保存メモリ110と対応する。ネットワークI/F1611は、他の情報処理装置やプリンタ等とネットワークを介して通信を行う。CPUバス1612は、アドレスバス、データバス及びコントロールバスを含む。CPU1606に対する制御プログラムの提供は、ROM1607、HDD1609から行うこともできるし、ネットワークI/F1611を介してネットワーク経由で他の情報処理装置等から行うこともできる。
【0068】
第1の実施形態において図5で示したフローは、PC402においてCPU1606がOSや画像管理アプリケーションソフトウェアを起動し、それらにしたがって動作することで実現できる。
【0069】
なお、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施の形態の機能を実現するプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
【0070】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0071】
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0072】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれる。
【0073】
更に、前述した実施の形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
【符号の説明】
【0074】
100 デジタルカメラ
101 撮影レンズ
102 撮影レンズ駆動部
103 撮像素子
104 信号処理部
105 一次メモリ
106 距離測定部
107 表示部
108 操作部
109 CPU
110 保存メモリ
【特許請求の範囲】
【請求項1】
画像データに含まれる複数の部分領域に対して任意の評価を設定する設定手段と、
前記設定手段により第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定する決定手段と、
前記決定されたトリミング枠と前記設定手段により第2の評価が設定された部分領域との重なりを検知する検知手段と、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知する通知手段を備えたことを特徴とする画像編集装置。
【請求項2】
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、前記第1の評価が設定された複数の部分領域を複数のグループに分割する分割手段をさらに備え、
前記決定手段は、前記第1の評価が設定された複数の部分領域のうち、同じグループに属する部分領域すべてを含むようにトリミング枠を決定することを特徴とする請求項1に記載の画像編集装置。
【請求項3】
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがないと検知された場合、前記トリミング枠に関する情報をメモリに保存するトリミング処理手段をさらに備えたことを特徴とする請求項1または2に記載の画像編集装置。
【請求項4】
前記画像データが複数、存在し、
前記通知手段は、前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると前記検知手段により検知された画像データを、表示パネルに一覧表示することを特徴とする請求項1乃至3のいずれか1項に記載の画像編集装置。
【請求項5】
前記画像データに含まれる前記部分領域の範囲をユーザの操作に応答して指定する指定手段をさらに備えたことを特徴とする請求項1乃至4のいずれか1項に記載の画像編集装置。
【請求項6】
前記設定手段は前記任意の評価をユーザの操作に応答して設定することを特徴とする請求項1乃至5のいずれか1項に記載の画像編集装置。
【請求項7】
画像データに含まれる複数の部分領域に対して任意の評価を設定するステップと、
第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定するステップと、
前記決定されたトリミング枠と第2の評価が設定された部分領域との重なりを検知するステップと、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知するステップを備えたことを特徴とする画像編集装置の制御方法。
【請求項8】
コンピュータに、
画像データに含まれる複数の部分領域に対して任意の評価を設定するステップと、
第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定するステップと、
前記決定されたトリミング枠と第2の評価が設定された部分領域との重なりを検知するステップと、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知するステップを実行させることを特徴とするプログラム。
【請求項1】
画像データに含まれる複数の部分領域に対して任意の評価を設定する設定手段と、
前記設定手段により第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定する決定手段と、
前記決定されたトリミング枠と前記設定手段により第2の評価が設定された部分領域との重なりを検知する検知手段と、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知する通知手段を備えたことを特徴とする画像編集装置。
【請求項2】
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、前記第1の評価が設定された複数の部分領域を複数のグループに分割する分割手段をさらに備え、
前記決定手段は、前記第1の評価が設定された複数の部分領域のうち、同じグループに属する部分領域すべてを含むようにトリミング枠を決定することを特徴とする請求項1に記載の画像編集装置。
【請求項3】
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがないと検知された場合、前記トリミング枠に関する情報をメモリに保存するトリミング処理手段をさらに備えたことを特徴とする請求項1または2に記載の画像編集装置。
【請求項4】
前記画像データが複数、存在し、
前記通知手段は、前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると前記検知手段により検知された画像データを、表示パネルに一覧表示することを特徴とする請求項1乃至3のいずれか1項に記載の画像編集装置。
【請求項5】
前記画像データに含まれる前記部分領域の範囲をユーザの操作に応答して指定する指定手段をさらに備えたことを特徴とする請求項1乃至4のいずれか1項に記載の画像編集装置。
【請求項6】
前記設定手段は前記任意の評価をユーザの操作に応答して設定することを特徴とする請求項1乃至5のいずれか1項に記載の画像編集装置。
【請求項7】
画像データに含まれる複数の部分領域に対して任意の評価を設定するステップと、
第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定するステップと、
前記決定されたトリミング枠と第2の評価が設定された部分領域との重なりを検知するステップと、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知するステップを備えたことを特徴とする画像編集装置の制御方法。
【請求項8】
コンピュータに、
画像データに含まれる複数の部分領域に対して任意の評価を設定するステップと、
第1の評価が設定された部分領域すべてを含むようにトリミング枠を決定するステップと、
前記決定されたトリミング枠と第2の評価が設定された部分領域との重なりを検知するステップと、
前記決定されたトリミング枠と前記第2の評価が設定された部分領域との重なりがあると検知された場合、警告を通知するステップを実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−182798(P2012−182798A)
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願番号】特願2012−87761(P2012−87761)
【出願日】平成24年4月6日(2012.4.6)
【分割の表示】特願2008−130761(P2008−130761)の分割
【原出願日】平成20年5月19日(2008.5.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願日】平成24年4月6日(2012.4.6)
【分割の表示】特願2008−130761(P2008−130761)の分割
【原出願日】平成20年5月19日(2008.5.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]