(57)【要約】【課題】  画像における処理対象の領域を容易に決定することができる画像処理装置、画像処理方法、およびプログラムを提供する。【解決手段】  処理対象の画像と、当該画像における処理対象の領域を示すオブジェクトとを、表示画面に表示させる。前記表示画面においてユーザにより指定された位置を特定し、当該特定された位置が前記表示制御手段により表示されたオブジェクトの外であるか判定する。前記位置が前記オブジェクトの外であると判定された場合、当該判定に応じて、当該オブジェクトを前記表示画面における当該位置に対応する領域に移動させる。前記画像における、前記移動制御手段により移動した前記オブジェクトに対応する領域を、処理対象の領域として決定する。【選択図】  図５
2014059634.tif 000002
【特許請求の範囲】
【請求項１】
処理対象の画像と、当該画像における処理対象の領域を示すオブジェクトとを、表示画面に表示させる表示制御手段と、
前記表示画面においてユーザにより指定された位置を特定し、当該特定された位置が前記表示制御手段により表示されたオブジェクトの外であるか判定する判定手段と、
前記判定手段により前記位置が前記オブジェクトの外であると判定された場合、当該判定に応じて、当該オブジェクトを前記表示画面における当該位置に対応する領域に移動させる移動制御手段と、
前記画像における、前記移動制御手段により移動した前記オブジェクトに対応する領域を、処理対象の領域として決定する決定手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記判定手段により、ユーザにより指定された前記位置が前記オブジェクトの外ではないと判定された場合、ユーザによる当該位置からのドラッグ指示に応じて、当該オブジェクトを移動させることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記判定手段は、前記移動制御手段により前記オブジェクトがユーザにより指定された位置に対応する領域に移動されたときに、当該位置の指定に継続してユーザによるドラッグ指示が入力されたか判定し、前記移動制御手段は、当該ドラッグ指示に応じて当該オブジェクトを移動させることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記移動制御手段は、前記表示画面における前記画像から前記オブジェクトがはみ出ないように、当該オブジェクトを移動させることを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記移動制御手段は、前記表示制御手段により表示された前記オブジェクトを縮小することにより、当該オブジェクトが前記画像からはみ出ないように当該オブジェクトを移動させることを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記判定手段は、前記表示制御手段により表示された前記画像における前記オブジェクト外の複数の領域のうち、ユーザにより指定された位置に対応する領域を特定し、当該特定された領域に対応する移動方法に従って、当該オブジェクトを移動させることを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記移動制御手段は、前記判定手段により前記位置が前記オブジェクトの外であると判定された場合に、当該オブジェクトを当該位置に対応する領域に新たに表示させることにより、当該オブジェクトを移動させることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記決定手段は、前記オブジェクトに対応する領域を、トリミングの対象の領域として決定することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記表示制御手段は、前記画像と前記オブジェクトを、タッチパネルが配置されている表示画面に表示させ、前記判定手段は、当該タッチパネルにおいてユーザにより指定された位置を特定し、当該特定された位置に対応する当該表示画面における位置を特定することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
処理対象の画像と、当該画像における処理対象の領域を示すオブジェクトとを、表示画面に表示させる表示制御工程と、
前記表示画面においてユーザにより指定された位置を特定し、当該特定された位置が前記表示制御工程において表示されたオブジェクトの外であるか判定する判定工程と、
前記判定工程において前記位置が前記オブジェクトの外であると判定された場合、当該判定に応じて、当該オブジェクトを前記表示画面における当該位置に対応する領域に移動させる移動制御工程と、
前記画像における、前記移動制御工程において移動した前記オブジェクトに対応する領域を、処理対象の領域として決定する決定工程と、
を有することを特徴とする画像処理方法。
【請求項１１】
請求項１０に記載の画像処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像における処理対象の領域を決定する画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【０００２】
表示画面に表示されている文書や写真などの画像に種々の画像処理を行う技術が知られている。例えば画像における一部領域を出力対象として指定する技術（トリミング又はクロッピングと呼ばれる）や、その一部領域を消去する技術（マスキングと呼ばれる）、また一部領域の色や明るさを変更する技術が知られている。
【０００３】
また画像における、上記のような処理の処理対象となる領域をユーザが指定する技術が知られている。特許文献１には、トリミングの対象となる領域を示す枠（トリミング枠）を画像上に表示させることが記載されている。そして、ユーザがそのトリミング枠を指定した後にドラッグ操作を行うと、トリミング枠がドラッグ操作に追従するようにトリミング枠を移動させることが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３２３２４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、ユーザによりトリミング枠が指定された後、トリミング枠がユーザによるドラッグ操作に追従して移動する。そのためユーザは、表示画面内のトリミング枠が表示されている位置から、トリミング対象として所望の位置までドラッグ操作を行わなくてはならない。その所望の位置までの距離が長い場合、トリミング対象の領域を容易に指定することができないことがある。
【０００６】
例えばマウス等のポインティングデバイスを用いてトリミング枠を動かす場合、所望の位置までの距離が長いときに、ドラッグ操作を複数回繰り返し行わなければトリミング枠を所望の位置に移動させることができない場合がある。また例えばタッチパネル上でトリミング枠をドラッグ操作により移動させる場合、所望の位置までの距離が長いときに、ドラッグ操作中にユーザがタッチパネルから指を離してしまうことがある。この場合、再びドラッグ操作を行わなくては、トリミング枠を所望の位置まで移動させることはできない。
【０００７】
本発明は、上記課題を鑑みてなされたものであり、画像における処理対象の領域を容易に決定することができる画像処理装置、画像処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記問題点を解決するために本発明の画像処理装置は、処理対象の画像と、当該画像における処理対象の領域を示すオブジェクトとを、表示画面に表示させる表示制御手段と、前記表示画面においてユーザにより指定された位置を特定し、当該特定された位置が前記表示制御手段により表示されたオブジェクトの外であるか判定する判定手段と、前記判定手段により前記位置が前記オブジェクトの外であると判定された場合、当該判定に応じて、当該オブジェクトを前記表示画面における当該位置に対応する領域に移動させる移動制御手段と、前記画像における、前記移動制御手段により移動した前記オブジェクトに対応する領域を、処理対象の領域として決定する決定手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、処理対象の画像において、当該画像における処理対象の領域を示すオブジェクト外の位置がユーザにより指定されると、その位置に対応する領域にオブジェクトが移動する。そのため、画像における処理対象の領域を容易に決定することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の画像処理装置を示すブロック図である。
【図２】表示装置１１３、タッチパネル１１５を示す図である。
【図３】表示装置による画像表示の一例である。
【図４】本実施形態におけるトリミング枠を説明するための図である。
【図５】本実施形態におけるトリミング領域の設定処理のフローチャートである。
【図６】ドラッグ操作によるトリミング枠の移動を説明するための図である。
【図７】ドラッグ操作によるトリミング枠の移動処理のフローチャートである。
【図８】本実施形態におけるトリミング枠の変倍処理を説明するための図である。
【図９】本実施形態におけるトリミング枠の変倍処理のフローチャートである。
【図１０】本実施形態におけるトリミング枠の回転処理を説明するための図である。
【図１１】本実施形態におけるトリミング枠の回転処理のフローチャートである。
【図１２】タッチパネルにおけるトリミング枠外側の領域を示す図である。
【図１３】トリミング枠の移動の一例を示す図である。
【図１４】トリミング枠の移動の一例を示す図である。
【図１５】トリミング枠の移動処理のフローチャートである。
【図１６】トリミング枠の移動の一例を示す図である。
【図１７】トリミング枠の移動処理のフローチャートである。
【図１８】トリミング枠の移動の一例を示す図である。
【図１９】トリミング枠の移動処理のフローチャートである。
【図２０】画像領域からはみ出したトリミング枠の位置補正処理を示す図である。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素の相対配置、表示画面等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１２】
図１は、本実施形態の画像処理装置を示すブロック図である。１００は、画像処理装置の一例であるＭＦＰ（多機能周辺機器）である。ＭＦＰ１００は、スキャニング機能、プリンティング機能、及びカードダイレクト機能を有する。
【００１３】
ＣＰＵ１０１は、ＭＦＰ１００のシステム制御部であり、ＭＦＰ１００の全体を制御する。ＲＯＭ１０２は、ＭＦＰのシステム制御プログラムを格納するものである。ＤＲＡＭ１０３は、画像データや制御プログラムが一時的に格納されるメモリである。ＣＰＵ１０１は、ＲＯＭ１０２に格納されている制御プログラムをＤＲＡＭ１０３上で実行することにより、ＭＦＰ１００に関する各種の動作を制御する。このようなＣＰＵ１０１の制御プログラムは、ＲＯＭ１０２に格納されているものに限らず、ＣＤ−ＲＯＭ等による外部の記憶媒体に記憶されているものでもよい。
【００１４】
プリンタエンジン１０４は、入力された画像を記録紙に印刷する印刷部である。ＰＣ  Ｉ／Ｆ１０７は、ＭＦＰ１００とパーソナルコンピュータ１０８とを接続するインターフェースである。パーソナルコンピュータ１０８は、ＰＣ  Ｉ／Ｆ１０７を介してＭＦＰ１００の各種設定データ変更や各種動作の起動要求を行うことのできるホストコンピュータである。イメージセンサ１１０は原稿の読取部であり、不図示の原稿台に載置された原稿を読取るための読取りセンサである。イメージセンサ１１０により原稿の読取画像が入力される。イメージプロセッサ１０９は、イメージセンサ１１０によって入力された読取画像に各種画像処理を施すものである。
【００１５】
操作パネル１１１は、不図示であるパワースイッチや各種のハードキー１１２を有し、装置の操作状況や状態等を表示するための表示装置１１３と表示装置１１３上に配置されたタッチパネル１１５を有している。そして、操作者が自身の指あるいはタッチペン等の器具を用いてタッチパネル１１５に触れると、指や器具が触れた位置座標（位置座標の取り方については後述する）がタッチパネルコントローラ１１４によって検出される。そして、タッチパネルコントローラ１１４により検出されたタッチ位置座標が、タッチイベントとしてＣＰＵ１０１に入力される。ＣＰＵ１０１はタッチイベントが入力されると、タッチ位置座標と表示装置１１３に表示されている表示内容とに応じた処理を行うことができる。
【００１６】
またタッチパネルコントローラ１１４は、一定周期毎にタッチ位置を検出する。そのため、ユーザが同じタッチ位置をタッチしている時間を判断することができる。またユーザがドラッグ操作を行うと、ドラッグ操作の軌跡上のタッチ位置が連続的に検出されるため、ドラッグ操作の方向や距離、速度を判断することができる。さらに、同じタッチ位置が繰り返し検出された場合には、ユーザが同じタッチ位置を継続してタッチしているものとして判断することができる。またユーザのタッチ位置が検出された後、タッチ位置が検出されなくなった場合には、ユーザの指やタッチペンがタッチパネルから離れた状態（リリース）であると判断することができる。
【００１７】
このようなユーザにタッチに関する情報がタッチパネルコントローラ１１４からＣＰＵ１０１に入力される。ＣＰＵ１０１は、入力した情報に応じた制御を行う。なお、ユーザのタッチの内容（ドラッグ操作の方向、距離、速さや、タッチしている時間、タッチパネルからのリリース等）をＣＰＵ１０１が判断してもよい。つまり、タッチパネルコントローラ１１４が一定周期で検出したタッチ位置がＣＰＵ１０１に入力され、ＣＰＵ１０１がそのタッチ位置に基づいて、ユーザのタッチの内容を判定してもよい。
【００１８】
表示装置１１３は、例えば後述するメモリーカード１０６に記憶されている写真画像や、各種の案内を表示する表示部である。ＣＰＵ１０１は、写真画像や案内表示の画像をＤＲＡＭ１０３上に展開して、展開された画像を表示装置１１３に出力することにより表示を行う。
【００１９】
またＣＰＵ１０１は、タッチパネルコントローラ１１４により検出されたタッチパネル上のタッチ位置座標を入力すると、そのタッチ位置に対応する表示内容に応じた処理を行うことができる。よってユーザは、表示装置１１３の表示内容を見ながら、所望の表示内容の領域をタッチパネル１１５上で指示することによって、ＭＦＰ１００に対して、その表示内容に対応する処理を指示することができる。
【００２０】
ハードキー１１２は、ユーザが押下するためのキーである。ハードキー１１２が押下されると、ＣＰＵ１０１は、押下されたキーに応じた処理を実行する。
【００２１】
カードスロット１０５は、メモリーカード１０６を接続するためのインターフェースである。メモリーカード１０６が接続された状態で、ＣＰＵ１０１は、ユーザによるタッチパネル１１５やハードキー１１２に対する操作に応じて、メモリーカード１０６に記憶されている画像から表示対象を選択する。そして、選択された画像を表示装置１１３に表示させる表示制御を行う。
【００２２】
またＣＰＵ１０１は、ユーザの指示に応じて、メモリーカード１０６に記憶されている画像を印刷対象として選択する。印刷対象の画像が選択されると、ＣＰＵ１０１はその画像をメモリーカード１０６から読み出して、ＤＲＡＭ１０３上に展開する。そしてＣＰＵ１０１は、ＤＲＡＭ１０３に展開された画像に各種印刷設定を行って、プリンタエンジン１０４に出力することにより、当該画像を印刷させる。
【００２３】
また、メモリーカード１０６に記憶されているすべての画像をＤＲＡＭ１０３に取り込み、それらの画像を表示装置１１３に表示させることも可能である。そして、表示装置１１３に表示された画像からユーザにより選択された画像をプリンタエンジン１０４に印刷させることができる。なお、本実施形態では画像ファイルの１つであるＪＰＥＧファイルの画像を展開し、表示や印刷することが可能となっている。またＪＰＥＧファイルは、同様の内容であるが画素数の異なる２つの画像を格納することが可能である。そこで、画素数の少ない画像（サムネイル画像）を表示のために使用し、画素数の多い画像を印刷のために使用してもよい。
【００２４】
次に、ユーザがタッチパネル１１５を操作して、メモリーカード１０６に保存されている画像から任意の画像を選択／閲覧する操作方法について詳細に説明する。図２は、表示装置１１３、タッチパネル１１５を示す図である。図２（ａ）は、本実施形態における操作パネル１１１の外観構成の一例を示す図である。同図において、先に述べた様に表示装置１１３上にはタッチパネル１１５が重ねて設けられている。ＣＰＵ１０１は、表示装置１１３に、システムの状態に応じて適したアイコンやソフトキーを含む操作画面を表示させる。タッチパネルコントローラ１１４は、タッチパネル１１５がタッチされたことを検出すると、そのタッチの内容を示す情報（タッチ位置等）をＣＰＵ１０１に伝える。
【００２５】
図２（ｂ）はタッチパネル１１５における座標を示す図である。タッチパネル１１５において、タッチパネル１１５の左上を原点とした二次元のＸＹ座標面が定義される。そして、ユーザがタッチパネル１１５にタッチしたタッチ位置は、上記の座標面上における座標として検出される。
【００２６】
本実施形態では表示装置１１３はＸ方向に６４０ピクセル、Ｙ方向に４８０ピクセルで構成されており、タッチパネル１１５はこれと一致させるためにＸ方向に６４０の分解能、Ｙ方向に４８０の分解能を持っている。以下では、説明上、タッチパネル１１５上で接触を検出した位置座標が表示装置１１３上に表示されたソフトキーの表示位置と一致したと判断した場合を、「ソフトキーがタッチされた」と表現する。
【００２７】
２０１〜２０３はそれぞれ、ハードキー１１２として構成されるもので、具体的なそれぞれの機能は次のとおりである。ホームキー２０１はすべての機能の起点であるホーム画面へ遷移するために用いる。ホーム画面には各種機能がいくつかのカテゴリに分類され、それぞれが不図示であるアイコンで表示されており、ユーザはその中の一つをタッチすることにより機能を選択するよう構成されている。戻るキー２０２は一つ前の画面へ遷移するためのキーである。ホーム画面より始まる画面の遷移は履歴に保存され、戻るキー２０２を押下することにより、履歴をたどって一つ前の画面に遷移する事ができる。従ってすべての起点であるホーム画面においては戻るキーは無効である。スタートキー２０３はイメージセンサ１１０による原稿画像の読取り動作や、プリンタエンジン１０４によるプリント動作などを開始する時に用いる。
【００２８】
本実施形態では、ＣＰＵ１０１は、カードスロット１０５にメモリーカード１０６が接続されたことを検知すると、メモリーカード１０６内に保存されているデジタルデータを解析する。そして、そのデジタルデータのうち、拡張子が”．ｊｐｇ”（大文字／小文字の区別はしない）であるＪＰＥＧファイルを特定する。そして、ＪＰＥＧファイルのそれぞれに対応する番号と、メモリーカード１０６内の各ＪＰＥＧファイルにアクセスするためパス情報を含む画像リストを生成する。この画像リストは、各画像の属性に応じた順序に従って生成される。例えば、ＪＰＥＧファイルに記憶されている画像の撮影時間を取得し、画像リストにおいて画像が撮影時間順に含まれるように、画像リストを生成する。ＣＰＵ１０１は、画像リストの生成が終了すると本リストの先頭の画像を表示装置１１３に自動的に表示する。
【００２９】
図３は表示装置１１３における画像表示の一例である。このとき、画像リストの先頭画像が表示されている状態であるものとする。図３に示す表示においてユーザは、メモリーカード１０６内に保存されている画像を閲覧しながら、所望の画像それぞれに印刷部数を設定することができる。
【００３０】
ユーザは、表示中の画像の左右に配置されているソフトキー３０３又は３０４をタッチすることで、表示装置１１３への表示対象の画像を変更することができる。なお、この表示対象の変更では、上記の画像リストに応じた順序に従って表示対象が変更される。
【００３１】
例えば画像リストにおいて、画像の右横に配置されている順送りキー３０４がタッチされると、ＣＰＵ１０１は、画像リストにおいて表示中の画像よりも番号が１つ大きな画像を表示させる。同様に、画像の左横に配置されている逆送りのソフトキー３０３がタッチされると、ＣＰＵ１０１は、画像リストにおいて表示中の画像より番号が１つ小さな画像を表示させる。そして部数入力用のソフトキー３０２がタッチされると、ＣＰＵ１０１は当該表示対象となっている画像を、印刷対象として特定して、表示装置１１３に不図示である部数設定画面を表示させる。
【００３２】
ソフトキー３０６がタッチされると、次の画面へ遷移する。ここでいう次の画面とは、例えば出力方法（印刷、拡大表示、各種メモリへの記憶、外部装置への送信等）を選択する画面である。また出力方法が例えば印刷に決まっている場合には、印刷設定をユーザが指定するための印刷設定画面を表示させてもよい。
【００３３】
また本実施形態では、表示装置１１３の画面上に表示されているソフトキー３０５がタッチされると、ＣＰＵ１０１はトリミングモードに遷移して、表示中の画像におけるトリミング対象の領域を示すトリミング枠を表示させる表示制御を行う。
【００３４】
図４は、本実施形態におけるトリミング枠を説明するための図である。図４に示すように、トリミングモードにおいてはトリミング枠が表示される。なお、「トリミング」とは画像の一部を、表示や印刷、送信といった各種の出力処理の対象として特定する処理をいう。そして、本実施形態では画像上のトリミング枠の内部が出力処理の対象の候補であり、ユーザがタッチパネル１１５上でタッチ操作をすることにより、トリミング枠の移動や、当該トリミング枠のトリミングを指示することができる。
【００３５】
図４に示すトリミング枠表示では、トリミング枠の大きさと位置が表示中の画像に対して指定されていれば、そのトリミング枠の大きさ／位置が記憶されており、その指定されている大きさのトリミング枠を、指定されている位置に表示させる。一方、表示中の画像に対してまだトリミング枠が指定されていなければ、予め定められた大きさ／位置に従ってトリミング枠を表示させる。
【００３６】
またトリミングされた画像が印刷される場合、トリミング枠の形状を、画像が印刷される印刷媒体の形状に合わせて設定してもよい。例えば矩形の印刷用紙のアスペクト比に合わせて、トリミング枠のアスペクト比を設定する。ユーザにより印刷用紙が指定されたときに、その印刷用紙のアスペクト比に合わせてトリミング枠を設定することにより、印刷用紙の形状にあった画像をトリミングすることができる。特に、印刷用紙に余白ができないように画像が印刷される（フチなし印刷）場合、トリミング枠の縦横比と印刷用紙の縦横比は略一致している必要があるため、適切にフチなし印刷を実行することができる。また、印刷媒体の形状は矩形に限らず、例えば円形であってもよい。例えばユーザがＣＤ等のディスクメディアへの印刷を希望した場合に、円形のトリミング枠を表示させ、円形の領域をトリミングする。これにより、ディスクメディアの形状に応じたトリミングを行うことができる。
【００３７】
このように、本実施形態では画像に対する処理として、トリミングを例に説明する。そして、トリミングが実行される領域を示すオブジェクトの例として、矩形のトリミング枠を例に説明する。なお、本実施形態で説明する処理は上記の例に限定されるものではなく、画像処理は色補正や明るさの変更などの各種の処理でよい。またトリミング枠も矩形ではなく円形や楕円形等の種々の形状でよく、また枠に限らず、領域を示す種々のオブジェクトを表示させる場合であってもよい。
【００３８】
本実施形態ではトリミング枠が表示されるとそのトリミング枠の内部、辺、角のいずれかをタッチし、ドラッグ操作することによってトリミング枠の大きさや位置を変更することができる様に構成されている。具体的には、トリミング枠で示される領域の内部又は辺をドラッグした場合にはトリミング枠の移動、四つの角のいずれかをドラッグした場合にはトリミング枠のサイズ変更を行う事が可能である。
【００３９】
さらに本実施形態では、ユーザが表示画面に表示されている画像上で且つトリミング枠の外の領域をタッチすると、その位置にトリミング枠を移動させる。これにより、ユーザはドラッグ操作を行わなくても、トリミング枠を所望の位置に素早く移動させることができるため、容易にトリミング領域を決定することができる。
【００４０】
なお、本実施形態においては、トリミング枠は画像領域３０１の内部に位置するように制御する。画像領域３０１とは、タッチパネル１１５の座標系において、表示装置１１３に表示された画像に対応する領域である。本実施形態では、トリミングモードにおける画像領域３０１は、図４（ｂ）に示すように左上を（１２０，５０）、右下を（５２０，３５０）とする矩形の領域である。なお、ＸＹ座標系における矩形領域を定義するにはその４点を明確にする必要があるが、実質的には左上、右下の２点の座標を決定すれば残る２点の座標が確定することができる。
【００４１】
以下では、トリミング対象の領域を設定する処理について説明する。図３に示す画面においてソフトキー３０５が押下されて、トリミングが指示されると、トリミングモードに遷移する。そして、図４（ａ）に示すように、トリミングモードにおいては、画像領域３０１の中にトリミング枠４０１が重ねて表示される。トリミング枠４０１は、既にトリミング枠の左上／右下の座標が指定されていれば、その座標の値に応じた大きさ／位置に従って表示される。トリミング枠の左上／右下の座標が指定されていなければ、所定の大きさのトリミング枠を、所定の位置に表示させる。図４（ｂ）では（ａ，ｂ）、（ｃ，ｄ）が左上／右下の座標である。また、図４（ｂ）に示す画面には、その他にトリミング枠を回転させるためのソフトキー４０２と、トリミングモードを終了し、図３に示した元の画面へ戻るためのソフトキー４０３とが表示される。
【００４２】
次に図５のフローチャートを参照して、トリミング領域の設定処理について説明する。図５に示す処理は、トリミングモードに遷移して図４（ａ）の画面が表示されたときに開始される。また、図５に示すフローチャートに対応する制御プログラムがＲＯＭ１０２に記憶されており、ＣＰＵ１０１がＤＲＡＭ１０３上でこの制御プログラムを実行することにより、図５に示す処理を実現することができる。
【００４３】
ユーザがタッチパネル１１５へタッチすることによって発生するタッチイベントの待機状態となる（Ｓ５０１）。タッチパネルコントローラ１１４によりタッチが検出されると、タッチイベントが発生する。タッチイベントが発生するとＳ５０２に進み、ＣＰＵ１０１は、タッチパネルコントローラ１１４により検出されたタッチ位置座標を取得する。次にＳ５０３においてこのタッチ位置座標が画像領域の中で有るか否かが判断される。
【００４４】
画像領域の中であった場合（Ｓ５０３でＹＥＳ）、次にＳ５０４にてトリミング枠の角がタッチされたかどうかの判断を行う。このトリミング枠の角の点は論理的には１ピクセルしかなく、指でタッチ操作をすることを前提としたシステムの場合、その一点を正確にタッチする事は大変困難である。従って角についてはある程度の許容値を持たせることが望ましい。例えばトリミング枠の左上の座標が（ａ，ｂ）であるときに矩形の内側に５ピクセルの許容値を持たせ、左上（ａ，ｂ）と右下（ａ＋５，ｂ＋５）の矩形で示される領域内のタッチであった場合には「角をタッチした」と見なすようにする。またタッチパネルコントローラ１１４が、ユーザによりタッチされた座標の領域を検出できる場合、トリミング枠の角がその領域に含まれるか否かを判定してもよい。例えば、ユーザによりタッチされた領域が矩形領域として検出される場合、その矩形領域に角が含まれるか判定する。
【００４５】
Ｓ５０４において、トリミング枠の角がタッチされたと判断された場合（Ｓ５０４でＹＥＳ）、Ｓ５０５に進み、トリミング枠の拡大／縮小の処理を行う。一方、トリミング枠の角ではないと判断された場合（Ｓ５０４でＮＯ）はＳ５０６に進み、ユーザによるタッチ位置がトリミング枠の中か否かを判断する。ここでは、トリミング枠そのものはトリミング枠の中であるものとする。
【００４６】
Ｓ５０６において、ユーザのタッチ位置がトリミング枠の中と判断された場合（Ｓ５０６でＹＥＳ）にはＳ５０８へ進み、ユーザによるドラッグ指示に応じたトリミング枠の移動制御処理を行う。またトリミング枠の外と判断された場合（Ｓ５０６でＮＯ）はＳ５０７へ進みトリミング枠移動の処理を行う。その後リリースイベントが発生しない場合にはＳ５０８へ進みトリミング枠ドラッグの処理を継続して行う事ができる。Ｓ５０８において、ユーザによるタッチパネルからのリリースが検出されると、Ｓ５０１に戻る。
【００４７】
Ｓ５０７、Ｓ５０８における処理により、ＣＰＵ１０１は、ユーザがトリミング枠内をタッチした場合にはトリミング枠の移動のためのドラッグ操作を行うことができる。またＣＰＵ１０１は、トリミング枠外がタッチされた場合には、その位置にトリミング枠を移動させる移動制御を行う。またＳ５０７においてトリミング枠が移動されると、その移動と継続して、ドラッグ操作による移動を行うことができる。Ｓ５０７Ｓ５０８の処理の詳細については後述する。
【００４８】
上述のＳ５０３において、Ｓ５０２において取得された位置座標が画像領域外と判断されると、Ｓ５０９へ進み「枠回転」のソフトキーがタッチされたかどうかを判断する。そして「枠回転」のソフトキーがタッチされたと判断した場合（Ｓ５０９でＹＥＳ）はトリミング枠の回転処理を行う。一方、「枠回転」のソフトキーへのタッチでは無いと判断された場合（Ｓ５０９でＮＯ）はＳ５１１において「ＯＫ」のソフトキーへのタッチか否かを判断する。「ＯＫ」ボタンへのタッチでは無いと判断された場合（Ｓ５１１でＮＯ）は本画面では有効なタッチ操作と見なされないため、そのまま元のタッチイベント待機状態へ戻る。「ＯＫ」ボタンへのタッチと判断された場合にはＳ５１２にて、ユーザがタッチパネルからリリースしてリリースイベントが発生したか判定される。リリースイベントが発生すると、Ｓ５１３に進む。Ｓ５１３では、表示中の画像における当該トリミング枠に対応する領域を、トリミング対象の領域として設定して、トリミングモードを終了する。このとき、図３に示す元の画面へ戻る。なお、図３の画面に戻ったときに、表示中の画像のうちの、Ｓ５１３で設定されたトリミング領域を表示させるようにしてもよい。
【００４９】
次に、図５のＳ５０８におけるトリミング枠ドラッグ処理について図６及び図７を用いて説明する。
【００５０】
図６は、ドラッグ操作によるトリミング枠の移動を説明するための図である。具体的には、トリミング枠４０１の内部をタッチした後、そのままドラッグ操作を行った様子を表したものである。破線矢印６０３はドラッグ操作の軌跡を示しており、ユーザが座標（ｐ，ｑ）から座標（ｐ´，ｑ´）までタッチ状態を維持したまま指を動かした様子を表している。そして破線の矩形６０１は移動開始時のトリミング枠、実線の矩形６０２はドラッグ操作に追従して移動した後のトリミング枠の状態を示している。この移動に伴い、移動前のトリミング枠の左上の座標（ａ，ｂ）及び右下の座標（ｃ，ｄ）がそれぞれ（ａ´，ｂ´）、（ｃ´，ｄ´）へ移動する。
【００５１】
図７はＳ５０８における、ドラッグ操作によるトリミング枠の移動処理を示すフローチャートである。
まずＳ７０１において、ＣＰＵ１０１は、タッチパネルコントローラ１１４から取得したタッチ位置座標の情報により、ユーザによるドラッグ指示を入力したか判定する。ドラッグ指示が入力されたと判定された場合、Ｓ７０２に進む。一方、ドラッグ指示が入力されていないと判定された場合、Ｓ７０６に進む。なお、このＳ７０１における判定は、タッチパネルコントローラ１１４により定期的に検出されるユーザのタッチ位置の変化により判定することができる。例えば、連続する複数回の検出により特定された複数のタッチ位置が、タッチパネル上の所定の距離以上に対応するものであれば、ドラッグ操作がおこなわれたと判断することができる。また上記の複数のタッチ位置によりユーザのドラッグ操作の方向も特定することができる。
【００５２】
Ｓ７０２において最新のトリミング枠の４点の座標を算出する。これは以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求めることによって算出できる。まず移動処理開始時のトリミング枠の左上の座標を（ａ，ｂ）、右下の座標を（ｃ，ｄ）、ドラッグ指示が入力されたときの最新のタッチ位置を（ｐ，ｑ）とする。次に最新のタッチ位置座標を（ｐ´，ｑ´）、最新のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）とした時に以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求めれば良い。
ａ´−ｐ´＝ａ−ｐ
ｂ´−ｑ´＝ｂ−ｑ
ｃ´−ｐ´＝ｃ−ｐ
ｄ´−ｑ´＝ｄ−ｑ
【００５３】
次にＳ７０３において上記４点の座標が画像領域からはみ出していないかを判断する。本実施形態では画像領域を左上（１２０，５０）、右下（５２０，３５０）としているので、具体的には以下のいずれかとなっているかどうかを判断する。
ａ´＜１２０
ｂ´＜５０
ｃ´＞５２０
ｄ´＞３５０
【００５４】
画像領域からはみ出した場合（Ｓ７０３でＹＥＳ）にはＳ７０４においてトリミング枠の位置を補正する。トリミング枠の補正手順については複数の手法が実現可能であり、詳細については後述する。一方、トリミング枠が画像領域内にある場合（Ｓ７０３でＮＯ）にはそのままＳ７０５においてトリミング枠を再描画する。
【００５５】
そしてＳ７０６でリリースイベントが有ったかどうかを判断し、なければ再びＳ７０１に戻るが、ここでリリースイベントが検出されると（Ｓ７０６でＹＥＳ）Ｓ７０７において現在のトリミング枠の座標を保存し、本処理を終了する。
このように、図６、図７により説明した処理によれば、ユーザはトリミング枠内をタッチして、そのままドラッグ操作を行うことにより、トリミング枠を移動させる移動制御を行う。
【００５６】
次にＳ５０５のトリミング枠拡大／縮小処理について図８及び図９を用いて説明する。
図８はトリミング枠４０１の右下の角をタッチした後、そのままドラッグ操作を行った様子を表している。破線矢印８０３はドラッグ操作を示しており、座標（ｐ，ｑ）から座標（ｐ´，ｑ´）へ移動した様子を表している。そして破線の矩形８０１は拡大／縮小処理開始時のトリミング枠、実線の矩形８０２はドラッグ操作に追従して拡大／縮小した後のトリミング枠の状態を示しており、処理前の右下の座標（ｃ，ｄ）が（ｃ´，ｄ´）へ移動する。
【００５７】
なお、このトリミング枠の変倍処理を行ったときでも、トリミング枠のアスペクト比は維持するようにする。本実施形態では、トリミング枠のアスペクト比は、トリミングされた画像が印刷される印刷用紙のアスペクト比と一致するように設定される。そのため、変倍（拡大／縮小）処理を行ったときも、トリミング枠のアスペクト比は維持される。よって、ユーザは、印刷用紙にあった領域をトリミング対象として容易に設定することができる。なお、印刷用紙については、トリミングモードに遷移する前やトリミング枠が表示されているときに、ユーザにより設定されてもよい。この場合、ユーザは所望の用紙サイズを指定して、トリミングモードに遷移させることにより、所望の用紙サイズにあった領域を特定することができる。
【００５８】
図９はＳ５０５におけるトリミング枠拡大／縮小の処理を示すフローチャートである。
Ｓ９０１において、ＣＰＵ１０１は、タッチパネルコントローラ１１４から、最新のタッチ位置座標を取得する。次にＳ９０２において最新のトリミング枠の４点の座標を算出する。これは以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求めることによって算出できる。まず拡大／縮小処理開始時のトリミング枠の左上の座標を（ａ，ｂ）、右下の座標を（ｃ，ｄ）、タッチ位置を（ｐ，ｑ）とする。次に最新のタッチ位置座標を（ｐ´，ｑ´）、最新のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）とした時に以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求めれば良い。今回は右下の角をタッチしているため、左上の座標は不動であるものとする。また、前述の様にトリミング枠は印刷用紙のアスペクト比と一致させる必要があるため、（ｐ´，ｑ´）が（ａ，ｂ）と（ｃ，ｄ）を結んだ対角線上にない場合、（ｐ´，ｑ´）は必ずしも右下の角とはならない。つまり座標（ｐ´，ｑ´）がこの対角線より右上側に有るか、左下側にあるかによってその算出方法を変更し、右上側に有る場合には（ｐ´，ｑ´）と右辺が重なる様に、左下側に有る場合には下辺と重なる様にする。すると、ａ´，ｂ´，ｃ´，ｄ´を求める式は以下となる。
・（ａ−ｃ）／（ｂ−ｄ）＜＝（ａ−ｐ´）／（ｂ−ｑ´）のとき
ａ´＝ａ
ｂ´＝ｂ
ｃ´＝ｐ´
（ａ−ｃ）／（ｂ−ｄ）＝（ａ´−ｃ´）／（ｂ´−ｄ´）
・（ａ−ｃ）／（ｂ−ｄ）＞（ａ−ｐ´）／（ｂ−ｑ´）のとき
ａ´＝ａ
ｂ´＝ｂ
ｄ´＝ｑ´
（ａ−ｃ）／（ｂ−ｄ）＝（ａ´−ｃ´）／（ｂ´−ｄ´）
【００５９】
なお、上記はトリミング枠の右下の角をドラッグした場合の拡大／縮小処理として対角側にある左上を不動の点としたが、例えば右上の角をドラッグした場合には対角で有る左下が不動で有る様に、以下の様にａ´，ｂ´，ｃ´，ｄ´を算出する。
・（ａ−ｃ）／（ｄ−ｂ）＜＝（ａ−ｐ´）／（ｄ−ｑ´）のとき
ａ´＝ａ
ｄ´＝ｄ
ｂ´＝ｑ´
（ａ−ｃ）／（ｂ−ｄ）＝（ａ´−ｃ´）／（ｂ´−ｄ´）
・（ａ−ｃ）／（ｄ−ｂ）＞（ａ−ｐ´）／（ｄ−ｑ´）のとき
ａ´＝ａ
ｄ´＝ｄ
ｃ´＝ｐ´
（ａ-ｃ）／（ｂ-ｄ）＝（ａ´-ｃ´）／（ｂ´-ｄ´）
【００６０】
同様に左上の隅をドラッグした場合には右下が不動で有る様に、左下の角をドラッグした場合には右上が不動で有る様に、各々の変数を適宜変換して求めればよい。また、ここではドラッグした対角の角が不動で有る様に各座標を算出したが、例えば対角線の交点、即ち矩形の重心が不動で有る様に各座標を求める様にしても良い。また、ドラッグした座標が画像領域より外側になった場合にはその位置を不動点として、対角側の座標が変化し、トリミング枠が大きくなるように座標を算出する場合であってもよい。この場合にはタッチ座標が画像領域より外側にある間、トリミング枠においてユーザにより指定された角の対角側が、実際にドラッグされた方向の反対方向にドラッグ操作されたものとしてトリミング枠の座標を算出する。
【００６１】
なお、本実施形態においては四つの角のいずれをドラッグした場合にも拡大／縮小処理を行う構成としたが、例えば右下の角のみ拡大／縮小処理を行う等、四つの角の内の一つ乃至は所定の複数の角のみ拡大／縮小処理を行う構成としても良い。
【００６２】
以上のようにＳ９０２でトリミング枠の４点の座標が算出されると、次にＳ９０３において、そのトリミング枠が最小トリミング枠より小さいか否かが判断される。予め定められた最小トリミング枠より小さい場合（Ｓ９０３でＹＥＳ）にはトリミング枠の再描画を行うＳ９０４に進まずに、Ｓ９０１へ戻る。一方、最小トリミング枠より大きい場合には新たな座標でトリミング枠を再描画する。そしてＳ９０５でリリースイベントが有ったかどうかを判断し、リリースされていなければ再びＳ９０１に戻る。Ｓ９０５でリリースされたと判断されると（Ｓ９０５でＹＥＳ）、Ｓ９０６において現在のトリミング枠の座標を例えばＤＲＡＭ１０３に保存し、本処理を終了する。
【００６３】
次にＳ５１０のトリミング枠回転処理について図１０及び図１１のフローチャートを参照しながら説明する。
図１０はソフトキー３０９をタッチした後、トリミング枠の縦横を入れ替えた様子を表している。
図１１は図５のＳ５１０におけるトリミング枠回転の処理を示すフローチャートである。
【００６４】
Ｓ１１０１において、回転後のトリミング枠の４点の座標を算出する。これは回転前後で縦横の長さを入れ替え、双方の重心座標が同一となる様に算出することで求められる。
【００６５】
次にＳ１１０２において上記４点の座標が画像領域からはみ出していないかを判断する。これはトリミング枠移動の処理における図７のＳ７０３で説明した処理と同様である。画像領域からはみ出した場合（Ｓ１１０２でＹＥＳ）にはＳ１１０３においてトリミング枠の位置を補正する。トリミング枠の補正手順の詳細については後述する。
【００６６】
一方、トリミング枠が画像領域内にある場合（Ｓ１１０２でＮＯ）にはそのままＳ１１０４においてトリミング枠を再描画する。そしてＳ１１０５においてトリミング枠の向きを保存し、更にＳ１１０６において新たなトリミング枠の座標を保存し、本処理を終了する。
【００６７】
次にＳ５０７のトリミング枠移動処理について図１２〜図１５を用いて説明する。図１２〜図１５に示す処理により、タッチパネル上でユーザがタッチした位置にトリミング枠を移動させることができる。そのため、ユーザは容易にトリミング領域を指定することができる。
【００６８】
図１２はトリミング枠４０１の外側を８つの領域に分割した状態を示す模式図である。これらの領域は具体的にはトリミング枠の左上の座標を（ａ，ｂ）、右下の座標を（ｃ，ｄ）としたときに、
（ｘ＜＝ａ）且つ（ｙ＜＝ｂ）を満たす（ｘ，ｙ）領域  ⇒領域（Ａ）
（ｃ＞ｘ＞ａ）且つ（ｙ＜＝ｂ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｂ）
（ｘ＞＝ｃ）且つ（ｙ＜＝ｂ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｃ）
（ｘ＞＝ｃ）且つ（ｄ＞ｙ＜ｂ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｄ）
（ｘ＞＝ｃ）且つ（ｙ＞＝ｄ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｅ）
（ｃ＞ｘ＞ａ）且つ（ｙ＞＝ｄ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｆ）
（ｘ＜＝ａ）且つ（ｙ＞＝ｄ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｇ）
（ｘ＜＝ａ）且つ（ｄ＞ｙ＜ｂ）を満たす（ｘ，ｙ）領域  ⇒領域（Ｈ）
と定義している。
【００６９】
次にこれら８つの領域のどの位置をタッチしたかにより、トリミング枠移動の処理がどの様に行われるかを説明する。
【００７０】
図１５はＳ５０７におけるトリミング枠移動の処理を示すフローチャートである。
まずＳ１５０１においてタッチした位置座標を取得する。なお、Ｓ１５０１において取得される位置座標は、上述のＳ５０３、Ｓ５０６の判定処理により、トリミング領域の外側であって、画像領域の内側である。次にＳ１５０２においてその座標が（Ａ）〜（Ｈ）のどの領域に属するかを判定する。次にＳ１５０３において新たなトリミング枠の４点の座標を算出する。このとき、表示画面上に表示されていたトリミング枠の形状や大きさが維持されるように、新たなトリミング枠の４点の座標を算出する。
【００７１】
その新たな座標は以下となるように算出される。
（Ａ）の領域と判断された場合：左上角がタッチ位置と一致するように移動する
（Ｂ）の領域と判断された場合：上辺がタッチ位置と一致するように垂直に移動する
（Ｃ）の領域と判断された場合：右上角がタッチ位置と一致するように移動する
（Ｄ）の領域と判断された場合：右辺がタッチ位置と一致するように水平に移動する
（Ｅ）の領域と判断された場合：右下角がタッチ位置と一致するように移動する
（Ｆ）の領域と判断された場合：下辺がタッチ位置と一致するように垂直に移動する
（Ｇ）の領域と判断された場合：左下角がタッチ位置と一致するように移動する
（Ｈ）の領域と判断された場合：左辺がタッチ位置と一致するように水平に移動する
その後、Ｓ１５０４において新たなトリミング枠を再描画する。そしてＳ１５０５において新たなトリミング枠の座標を例えばＤＲＡＭ１０３に保存し、本処理を終了する。
【００７２】
より具体的な例を図１３及び図１４に示す。
図１３（ａ）はタッチ位置１３０１が（Ｄ）の領域に属することを示している。この時図１３（ｂ）で示すようにトリミング枠４０１は水平にタッチ位置１３０１に移動する。これは以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求め、トリミング枠を再描画することにより実現出来る。まず移動前のトリミング枠の左上の座標を（ａ，ｂ）、右下の座標を（ｃ，ｄ）、タッチ位置１３０１の座標を（ｐ，ｑ）とする。次に移動後のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）とした時に以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求めれば良い。
ａ´＝ａ＋（ｐ−ｃ）
ｂ´＝ｂ
ｃ´＝ｐ
ｄ´＝ｄ
【００７３】
ここではトリミング枠の右辺が水平に移動する場合の具体的な例を示したが、左辺が移動する場合も適宜変数を入れ替えることにより、移動後の座標を求めることが出来るのでここでは省略する。また、垂直に移動する場合もＸＹ座標を入れ替えて同様に算出することができる。
【００７４】
図１４（ａ）はタッチ位置１４０１が（Ｅ）の領域に属する事を示しており、この時は図１４（ｂ）で示すようにトリミング枠４０１は右下の角がタッチ位置１４０１に移動する。先と同じく移動前の各座標を（ａ，ｂ）、（ｃ，ｄ）、（ｐ，ｑ）としたとき、以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求め、移動後のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）を決定する。
ａ´＝ａ＋（ｐ−ｃ）
ｂ´＝ｂ＋（ｑ−ｄ）
ｃ´＝ｐ
ｄ´＝ｑ
【００７５】
ここではトリミング枠の右下角が移動する場合の具体的な例を示したが、その他の角が移動する場合も適宜変数を入れ替えることにより、移動後の座標を求めることが出来るのでここでは省略する。
【００７６】
以上のように、図１２〜図１５に示した移動処理によれば、ユーザがトリミング領域外で指定した位置に、トリミング枠が移動する。そのためユーザはドラッグ操作を行わなくても、所望の位置にトリミング枠を移動させることができる。また、この移動処理では、タッチパネル上の画像領域において、ユーザがタッチした位置よりも内側にトリミング枠が配置される。また、この移動処理では、ユーザは画像領域内をタッチ可能としているため、トリミング枠が画像領域からはみ出すことが無い。従ってユーザは、所望のトリミング領域を容易に指定することができる。
【００７７】
また表示画面上に表示されていたトリミング枠が、その形状や大きさを維持したまま移動する。そのため、例えばユーザが所望の大きさやアスペクト比のトリミング枠を表示させた後に、そのトリミング枠外を指定することにより、その所望の大きさやアスペクト比を維持したまま、所望の位置に素早く移動させることができる。
【００７８】
次に、Ｓ５０７のトリミング枠の移動処理の別の例について、図１６及び図１７を用いて説明する。図１７はＳ５０７における第２のトリミング枠移動の処理を示すフローチャートである。この図１７に示す移動処理では、ユーザが（Ｂ）（Ｈ）（Ｆ）（Ｄ）のいずれかをタッチした場合、トリミング枠におけるタッチ位置に最も近い辺の中点が、タッチ位置と一致するように、トリミング枠を移動させる。例えば図１６に示すように領域（Ｄ）がタッチされたときには、トリミング枠の右辺の中点が、タッチ位置に一致するように移動が行われる。
【００７９】
まずＳ１７０１においてタッチした位置座標を取得する。次にＳ１７０２においてその座標が図１２で示した（Ａ）〜（Ｈ）のどの領域に属するかを判定する。次にＳ１７０３において、Ｓ１７０２で判定された領域が（Ａ）（Ｃ）（Ｅ）（Ｇ）のいずれかであるか判断する。ここで４領域のいずれかであった場合には（Ｓ１７０３でＹＥＳ）、図１５に示した処理と同様にＳ１７０４において最も近い角がタッチ位置と一致するように、新たなトリミング枠の４点の座標を算出する。
【００８０】
一方、Ｓ１７０２で判定された領域が上記の４領域のいずれでも無い場合（Ｓ１７０３でＮＯ）、次にＳ１７０５においてタッチ位置が（Ｂ）（Ｆ）のいずれかであるかを判断する。そしてＳ１７０６において（Ｂ）に属する場合は上辺の中点がタッチ位置と一致するように、また、（Ｆ）に属する場合は下辺の中点がタッチ位置と一致するようにトリミング枠の４点の座標を算出する。更に、タッチ位置が（Ｂ）（Ｆ）のいずれでも無い場合（Ｓ１７０５でＮＯ）、（Ｄ）（Ｈ）のいずれかがタッチされたことになる。この場合Ｓ１７０７において（Ｄ）に属する場合には右辺の中点がタッチ位置と一致するように、また、（Ｈ）に属する場合は左辺の中点がタッチ位置と一致するようにトリミング枠の４点の座標を算出する。
【００８１】
次にＳ１７０８において上記４点の座標が画像領域からはみ出していないかを判断する。これもトリミング枠移動の処理で説明した場合と同様に判断できる。画像領域からはみ出した場合（Ｓ１７０８でＹＥＳ）にはＳ１７０９においてトリミング枠の位置を補正する。トリミング枠の補正手順の詳細については後述する。
【００８２】
一方、トリミング枠が画像領域内にある場合（Ｓ１７０８でＮＯ）にはそのままＳ１７１０においてトリミング枠を再描画する。そしてＳ１７１１において新たなトリミング枠の座標を例えばＤＲＡＭ１０３に保存し、本処理を終了する。
【００８３】
図１６（ａ）はタッチ位置１６０２がトリミング枠４０１の外側に位置し、更に（Ｄ）の領域に属することを示している。この時図１６（ｂ）で示すようにトリミング枠４０１の右辺の中点１６０１がタッチ位置１６０２に移動する。これも先と同じく移動前の各座標を（ａ，ｂ）、（ｃ，ｄ）、（ｐ，ｑ）としたとき、以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求め、移動後のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）を決定する。
ａ´＝ａ＋（ｐ−ｃ）
ｂ´＝ｂ＋ｑ−（ｂ＋ｄ）／２
ｃ´＝ｐ
ｄ´＝ｄ＋ｑ−（ｂ＋ｄ）／２
【００８４】
ここではトリミング枠の右辺の中点が移動する場合の具体的な例を示したが、その他の辺の中点が移動する場合も適宜変数を入れ替えることにより、移動後の座標を求めることが出来るのでここでは説明を省略する。なお、本実施形態では８つに分割した領域の内、（Ａ）（Ｃ）（Ｅ）（Ｇ）位置と判定された時には最も近い角が移動するように構成した。しかしこれに限らず、（Ａ）（Ｃ）位置の場合には（Ｂ）位置と判定された時と同様に上辺の中点が移動するように、（Ｅ）（Ｇ）位置の時には（Ｆ）位置と判定された時と同様に下辺の中点が移動するようにしても良い。
【００８５】
あるいは（Ａ）（Ｇ）位置の場合には（Ｈ）位置と判定された時と同様に左辺の中点が移動するように、（Ｃ）（Ｅ）位置の場合には（Ｄ）位置と判定された時と同様に右辺の中点が移動するようにしても良い。
【００８６】
次に、Ｓ５０７のトリミング枠の移動処理の別の例について、図１８及び図１９を用いて説明する。図１９はＳ５０７における第３のトリミング枠移動の処理を示すフローチャートである。この図１９に示す移動処理では、トリミング枠の重心点がユーザによるタッチ位置に一致するようにトリミング枠を移動させる。例えば図１８に示すように、ユーザがタッチした位置にトリミング枠を移動させる。ただし、このとき図１８（ｂ）に示すように、トリミング枠が画像領域からはみ出すことになる。この場合、トリミング枠の位置補正が行われるが、詳細については後述する。
【００８７】
図１９はＳ５０７における第３のトリミング枠移動の処理を示すフローチャートである。Ｓ１９０１においてタッチした位置座標を取得する。次にＳ１９０２においてその座標が新たなトリミング枠の重心となるような、４点の座標を算出する。これも先と同じく移動前の各座標を（ａ，ｂ）、（ｃ，ｄ）、（ｐ，ｑ）としたとき、以下の式を満たすａ´，ｂ´，ｃ´，ｄ´を求め、移動後のトリミング枠の左上の座標を（ａ´，ｂ´）、右下の座標を（ｃ´，ｄ´）を決定する。
（ｃ´＋ａ´）／２＝ｐ
（ｄ´＋ｂ´）／２＝ｑ
ａ´−ｃ´＝ａ−ｃ
ｂ´−ｄ´＝ｂ−ｄ
【００８８】
次にＳ１９０３において上記４点の座標が画像領域からはみ出していないかを判断する。これは上記の図７のＳ７０３で説明した場合と同様に判断できる。画像領域からはみ出した場合（Ｓ１９０３でＹＥＳ）にはＳ１９０４においてトリミング枠の位置を補正する。トリミング枠の補正手順の詳細については後述する。
【００８９】
一方、トリミング枠が画像領域内にある場合（Ｓ１９０３でＮＯ）にはそのままＳ１９０５においてトリミング枠を再描画する。そしてＳ１９０６において新たなトリミング枠の座標をＤＲＡＭ１０３に保存し、本処理を終了する。
【００９０】
より具体的な例を図１８に示す。図１８（ａ）はタッチ位置１８０２がトリミング枠の外側に位置していることを示している。この時図１８（ｂ）で示すようにトリミング枠４０１の重心１８０１がタッチ位置１８０２に移動する。なお図１８（ｂ）では移動後のトリミング枠が画像領域３０１からはみ出した状態となることを示している。このような場合には、このままトリミング枠を再描画する前にトリミング枠の位置補正を行うものである。
【００９１】
次に、トリミング枠の位置法制処理について図２０を用いて説明する。この図２０に示す補正処理が、上述した図７のＳ７０４、図１１のＳ１１０３、図１７のＳ１７０９、図１９のＳ１９０４において実行される。
【００９２】
図２０（ａ）は破線で示されるトリミング枠４０１が画像領域３０１からＸ座標方向右側にはみ出した状態の一例である。この時、実線のようにそのトリミング枠の大きさを維持したままＸ座標方向左に水平に移動させ、画像領域内に収まるように補正する。これははみ出した長さをｒとしたとき、トリミング枠の４つ角のそれぞれのＸ座標の値から、ｒを減ずることにより、算出することができる。同様にＸ座標方向左側にｒだけはみ出した場合には４つ角のそれぞれのＸ座標の値にｒを加えることにより、算出することができる。Ｙ座標方向上側／下側にはみ出した場合も同様に補正が出来る。また、ＸＹ方向の両方ではみ出しが起こった場合には、Ｘ座標、Ｙ座標のそれぞれについて同様の補正を行う。
【００９３】
次にトリミング枠の補正処理の別の例について図２０（ｂ）を参照しながら説明する。図２０（ｂ）は破線で示されるトリミング枠４０１が画像領域３０１からＸ座標方向右側にはみ出した状態の一例である。この時、実線のようにそのトリミング枠の重心の位置２１０１を維持したままＸＹ座標の両方に縮小処理を施し、画像領域内に収まるように補正する。
【００９４】
これはＸ座標方向にはみ出した長さをｒとしたとき、左側２点のＸ座標に対してはｒを加え、右側２点のＸ座標に対してはｒを減ずることによってそれぞれのＸ座標を求めることができる。またＹ座標に関してはトリミング枠のアスペクト比とｒから、加算または減算すべき値を求めることができる。Ｙ座標方向上側／下側にはみ出した場合も同様に補正することができる。
【００９５】
また、ＸＹ方向それぞれが複合してはみ出した場合には、まずＸ座標について補正した値を求め、それでもＹ座標についてはみ出している場合には改めてＹ座標について補正を行う。
【００９６】
以上の図２０で説明した２つの補正方法を適宜使い分けるようにしても良い。例えば上述のトリミング枠の回転処理により、トリミング枠の上下の両方で、トリミング枠がはみ出ることがある。この場合、図２０（ｂ）に示した補正方法を行うことにより、適切にトリミング枠を補正することができる。
【００９７】
以上の実施形態によれば、ユーザが表示画面に表示されている画像上で且つトリミング枠等のオブジェクト外の領域をタッチすると、その位置にトリミング枠が移動する。これにより、ユーザはドラッグ操作を行わなくても、トリミング枠を所望の位置に素早く移動させることができるため、容易にトリミング領域を決定することができる。
【００９８】
またユーザがトリミング枠内を指定すると、ドラッグ操作に追従してトリミング枠が移動する。よってユーザは、例えばトリミング枠の位置を調整する場合に、トリミング枠内をタッチしてドラッグ操作を行うことで、細かな位置調整を行うことができる。
【００９９】
さらに、ユーザがトリミング枠外をタッチしてトリミング枠を素早く移動させた後、ドラッグ操作によりトリミング枠を移動させることができる。よってユーザは、例えばトリミング枠外を指定して大まかな位置を決定した後、継続してドラッグ操作を行うことで、トリミング枠の位置調整を行うことができる。
【０１００】
また本実施形態によれば、ユーザが表示画面上に表示されていたトリミング枠の外の位置を指定すると、トリミング枠が、その形状や大きさを維持したまま指定された位置に従って移動する。そのため、例えばユーザが所望の大きさやアスペクト比のトリミング枠を表示させた後に、そのトリミング枠外を指定することにより、その所望の大きさやアスペクト比を維持させたまま、所望の位置に素早く移動させることができる。
【０１０１】
なお、以上の実施形態では、表示画面上に既にトリミング枠が表示されているときに、そのトリミング枠を移動させる例について説明したが、これに限らない。例えば、トリミング枠が表示された後にユーザがスクロール操作を行い、トリミング枠が表示されなくなった画面において、ユーザがタッチした位置にトリミング枠を移動させてもよい。この場合、ユーザはスクロール操作前に表示されていたトリミング枠を指定しなくても、所望の位置にトリミング枠を素早く移動させることができる。さらに、トリミング枠が未だ表示されていないときに、ユーザによるタッチに応じて、そのタッチ位置に新たにトリミング枠を表示させてもよい。
【０１０２】
また、以上の実施形態では、トリミング枠のアスペクト比を印刷用紙のアスペクト比と一致させるよう構成したが、これに限定されるものではない。例えば、トリミング枠の辺や角をドラッグした場合に任意のアスペクト比のトリミング枠を設定できる構成としても良い。
【０１０３】
さらに以上の実施形態では、画像に実行される処理としてトリミングを例にして、トリミング枠を表示させる処理について説明した。しかしこれに限らず、画像に対して色補正や明るさ補正などの各種の処理が実行されるときに、画像における処理対象の領域を決定する場合であってもよい。
【０１０４】
また以上の実施形態では、画像における処理対象の領域を決定するために、ユーザがタッチパネルを用いて指示を行う例について説明した。しかし、これに限定されるものではなく、マウス、トラックボール、タッチペンやタッチパッド等、各種のポインティングデバイスを用いて処理対象の領域を決定する場合に適用できるものである。
【０１０５】
さらに、処理対象の画像は写真画像に限らず、テキスト文書や、ベクター画像、また構造化文書に基づくＷｅｂページ等の各種の画像であってよい。
【０１０６】
また、以上の実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又はコンピュータ読取可能な各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。さらに、１つのコンピュータ（またはＣＰＵやＭＰＵ等）が処理を実行する場合に限らない。複数のコンピュータ（またはＣＰＵやＭＰＵ等）が協働することにより、処理を実行する場合であっても、以上の実施形態で示した処理を実現することができる。また、コンピュータ（またはＣＰＵやＭＰＵ等）がＲＯＭ等のメモリに記憶されているプログラムを実行する場合に限らず、以上の実施形態で示した処理を行うためのハードウェア（回路等）により、処理を行ってもよい。さらに、以上の実施形態で示した処理の一部をコンピュータ（またはＣＰＵやＭＰＵ等）が実行し、残りの部分をハードウェアにより実行する場合であってもよい。
【符号の説明】
【０１０７】
１０１  ＣＰＵ  
１０２  ＲＯＭ  
１０３  ＤＲＡＭ  
【図１】
2014059634.tif 000003
【図２】
2014059634.tif 000004
【図３】
2014059634.tif 000005
【図４】
2014059634.tif 000006
【図５】
2014059634.tif 000007
【図６】
2014059634.tif 000008
【図７】
2014059634.tif 000009
【図８】
2014059634.tif 000010
【図９】
2014059634.tif 000011
【図１０】
2014059634.tif 000012
【図１１】
2014059634.tif 000013
【図１２】
2014059634.tif 000014
【図１３】
2014059634.tif 000015
【図１４】
2014059634.tif 000016
【図１５】
2014059634.tif 000017
【図１６】
2014059634.tif 000018
【図１７】
2014059634.tif 000019
【図１８】
2014059634.tif 000020
【図１９】
2014059634.tif 000021
【図２０】
2014059634.tif 000022