(57)【要約】      （修正有）【課題】簡易で直感的に操作が可能なｕｎｄｏ／ｒｅｄｏ機能を提供する画像処理装置および方法を提供する。【解決手段】ユーザがＵＩ入力部２０１から画像追加指示を入力すると、ジョブ登録部２０２はその指示に応じたジョブを、処理の種類ごとにジョブリストＤ２０１に登録する。また、ＵＩ入力部からアンドゥが入力されると、処理の種類ごとに用意された現在位置ポインタがひとつ戻され、リドゥが入力されると、現在値ポインタがひとつ進められる。そして処理実行指示が入力されると、ジョブリストに登録されたジョブのうち、現在位置ポインタで示されるジョブ以前のジョブが予め定めておいた順序で実行される。【選択図】図２
2011248478.tif 000002
【特許請求の範囲】
【請求項１】
入力画像に対する画像処理を示す処理情報を入力するための入力手段と、
前記入力手段により入力された処理情報を、一回の入力を単位とするジョブとして、処理の種類ごとのリストに登録する登録手段と、
ユーザの操作に応じて、前記登録手段により前記リストに登録されたジョブのうち、いずれかひとつのジョブを着目ジョブとして処理の種類ごとに特定する特定手段と、
ジョブの実行指示に応じて、前記リストに登録されたジョブのうち、前記着目ジョブおよびそれより前のジョブを、処理の種類の異なるジョブについては種類ごとに予め決められた順序で、各処理の種類においてはリストされている順で、前記入力画像を対象として実行する処理実行手段とを備え、
前記登録手段は、前記着目ジョブの次のジョブとして新たなジョブを前記リストに登録し、該新たなジョブの登録に応じて前記特定手段は、前記新たなジョブを前記着目ジョブとして特定することを特徴とする画像処理装置。
【請求項２】
前記特定手段は、ユーザのアンドゥ操作に応じて、現在の着目ジョブの１つ前のジョブを新たな着目ジョブとして特定し、リドゥ操作に応じて、現在の着目ジョブの次のジョブを新たな着目ジョブとして特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記登録手段は、前記新たなジョブの登録の前に前記着目ジョブの次のジョブが既にリストに登録されている場合には、当該次のジョブが前記新たなジョブで置換されることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記処理実行手段は、実行によって前記入力画像の全体が影響を受ける処理の種類のジョブについては、前記着目ジョブだけを実行することを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記入力手段により新たに入力された処理情報を、一回の入力を単位とするジョブとして、処理の種類ごとに時系列で仮リストに登録する仮登録手段をさらに備え、
前記処理実行手段は、前記仮リストに登録されたジョブを実行し、
前記登録手段は、前記実行手段により実行されたジョブのうち、正常に実行できたジョブを前記リストに登録することを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記登録手段は、処理内容が確定されたジョブを前記リストに登録することを特徴とする請求項１乃至５のいずれか一項に記載の画像処理装置。
【請求項７】
前記登録手段は、ユーザにより確定の指示が入力されたジョブを処理内容が確定されたジョブとして前記リストに登録することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記登録手段は、ユーザによる操作が未確定であるような予め定めた状態ではない場合、該操作により入力されたジョブを処理内容が確定されたジョブとして前記リストに登録することを特徴とする請求項６に記載の画像処理装置。
【請求項９】
入力画像に対してユーザが画像処理を指示する処理情報を入力するための入力手段と、
前記入力手段により入力された処理情報を、一回の入力を単位とするジョブとして、処理の種類ごとに時系列でリストに登録する登録手段と、
ユーザの操作に応じて、前記登録手段により前記リストに登録されたジョブのうち、いずれかひとつのジョブを着目ジョブとして処理の種類ごとに特定する特定手段と、
ジョブの実行指示に応じて、前記リストに登録されたジョブのうち、前記着目ジョブおよびそれより前のジョブを、処理の種類については予め決められた順序で、各処理の種類においては時系列で、前記入力画像を対象として実行する処理実行手段と
してコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばユーザの操作に応じて画像に処理を施すための画像処理装置およびプログラムに関する。
【背景技術】
【０００２】
最近、画像の修正や補正等を行うためのフォトレタッチアプリケーションを使用して、撮影した画像データを補正、調整して印刷したり、Ｗｅｂにアップロードして共有や公開したりといった画像データの使用が盛んになっている。
【０００３】
フォトレタッチアプリケーションの提供する機能には、例えば撮影した画像データの画角の調整、明るさ、色見の調整といった基本的な補正、調整機能がある。このような機能に加え、画像データを解析して自動的に補正を行う機能を持つアプリケーションもある。なおこれらの画像データに対する補正や調整、修正等を単に処理あるいは画像処理と呼ぶ。
【０００４】
さらに、フォトレタッチアプリケーションには、いったん施した補正を元に戻すアンドゥ（ｕｎｄｏ）機能や、同一の操作を繰り返したり或いはいったん元に戻した操作をやり直したりするリドゥ（ｒｅｄｏ）機能を持ったものもある（例えば特許文献１等参照）。従来のｕｎｄｏ／ｒｅｄｏ機能を図１３及び図１４を用いて説明する。
【０００５】
図１４の処理履歴１４０１から１４０８は、フォトレタッチアプリケーションの操作により記録される処理履歴の例を示す。処理履歴には、たとえば適用された処理の順序や内容、パラメータ等が含まれる。処理１４０１は、図１３のＵＩ例でＵ１３０４やＵ１３０５などのボタンを押すことや、スライダ１３０６を動かすことで処理される画像処理の一つの処理単位である。図１４では、例えば、自動写真補正、赤目補正Ａ、赤目補正Ｂ、美肌補正、明るさ調整の順で画像処理を行うと、処理１４０１から１４０５までのように処理が履歴として残る。
【０００６】
この状態で、既に行った赤目補正Ｂ１４０３を変更したいとユーザが思ったとき、従来のアプリケーションでは、ユーザは、例えばユーザインターフェースに表示されたｕｎｄｏボタンＵ１３０２を押して、明るさ調整１４０５、美肌補正１４０４、赤目補正Ｂ１４０３まで取り消す。そしてその後、赤目補正を例えばパラメータを変更するなどしてやり直し、そのあとで再度美肌補正、明るさ調整を行う。それによって、赤目補正Ｂ’１４０６、美肌補正１４０７、明るさ調整１４０８の処理履歴が残る。以上のように、従来は、一連の操作による処理履歴を最新の操作から過去へと遡ることでｕｎｄｏ／ｒｅｄｏ機能を実現している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−３１０１１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
多くの種類の画像処理を順次画像に適用した後で、その中のいずれかの処理を対象として取り消したり或いはパラメータを変えてやり直したりする場合、対象の処理が画像に適用される直前の状態までアンドゥ機能で遡る必要がある。そしてそこから改めて対象の処理をやり直したり、あるいは取り消した上で、それに続く既に行った補正をやり直さなければならない。
【０００９】
このようにユーザは煩雑な操作を強いられていた。近年ではフォトレタッチアプリケーションの補正機能が増え、この問題がいっそう顕著になってきている。これはフォトレタッチアプリケーションにかぎらず、対象データに補正等の多くの機能を逐次適用して加工を行うアプリケーションに用意されたｕｎｄｏ／ｒｅｄｏ機能についても同様である。
【００１０】
本発明は、上記の問題を鑑みて成されたもので、ユーザにとってより簡単でより直感的に操作が可能なｕｎｄｏ／ｒｅｄｏ機能を提供する画像処理装置および方法を提案することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために本発明は以下の構成を有する。すなわち、入力画像に対してユーザが画像処理を指示する処理情報を入力するための入力手段と、
前記入力手段により入力された処理情報を、一回の入力を単位とするジョブとして、処理の種類ごとのリストに登録する登録手段と、
ユーザの操作に応じて、前記登録手段により前記リストに登録されたジョブのうち、いずれかひとつのジョブを着目ジョブとして処理の種類ごとに特定する特定手段と、
ジョブの実行指示に応じて、前記リストに登録されたジョブのうち、前記着目ジョブおよびそれより前のジョブを、処理の種類の異なるジョブについては種類ごとに予め決められた順序で、各処理の種類においては時系列で、前記入力画像を対象として実行する処理実行手段とを備え、
前記登録手段は、前記着目ジョブの次のジョブとして新たなジョブを前記リストに登録し、該新たなジョブの登録に応じて前記特定手段は、前記新たなジョブを前記着目ジョブとして特定する。
【発明の効果】
【００１２】
以上の構成により、対象とする機能について選択的にアンドゥを指定することができ、対象データに対して既に実行した機能の取消ややり直しを簡単な操作で迅速にかつ直感的に行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本発明を実行可能なハードウェア構成を示す図
【図２】第１実施形態における処理のブロック図
【図３】ジョブの内容例を示す図
【図４】第１実施形態における画像処理実行のフローチャート
【図５】第１実施形態におけるジョブ管理例と現在位置管理例を説明する図
【図６】第１実施形態におけるｕｎｄｏ／ｒｅｄｏとジョブ追加を指示するためのＵＩ例を示す図
【図７】第２実施形態におけるジョブ管理例と現在位置管理例を説明する図
【図８】第２実施形態における画像処理実行のフローチャート
【図９】第３実施形態における画像処理実行のフローチャート
【図１０】第３実施形態における未確定ジョブを説明するためのＵＩ例を示す図
【図１１】第１実施形態の変形例におけるジョブ管理例と現在位置管理例を説明する図
【図１２】第２実施形態の変形例におけるジョブ管理例と現在位置管理例を説明する図
【図１３】従来の画像処理アプリケーションＵＩ例を示す図
【図１４】従来のｕｎｄｏ／ｒｅｄｏ機能を説明する図
【発明を実施するための形態】
【００１４】
［第１実施形態］
本発明における好適な第１実施形態について説明する。これはあくまで実施の１つの形態を例として示したものであり、本発明は以下の実施に限定されるものではない。
【００１５】
また本実施形態では、ＵＩ操作の順番が画像処理結果に依存しない画像処理アプリケーションを想定している。つまり、自動写真補正を指示した後ＲＧＢ調整を指示した結果と、ＲＧＢ調整を指示した後自動写真補正を指示した結果が同じになる。これは、処理の実行順序が、指示した順序に関わらず予め定められているためである。たとえば自動補正は必ず最初に行い、その他の補正は自動補正後の画像に対して行うといった制限や、自動補正の２重実行は許容しない、などの制限事項がある。このような画像処理は以下のような実施形態において実現されている。
【００１６】
＜ハードウェア構成の説明＞
図１は、第１実施形態に係わる情報処理装置のハードウェア構成例を説明するブロック図である。図において、ＣＰＵ（中央演算装置）１００は、本実施形態で説明する情報処理方法をプログラムに従って実行する。ＲＯＭ１０１には、ＣＰＵ１００により実行されるプログラムが記憶されている。ＲＡＭ１０２は、ＣＰＵ１００によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。ハードディスク１０３は、画像ファイルやパターン識別用のパラメータなどを保存するための記憶媒体である。ディスプレイ１０４は、本実施形態の処理結果をユーザに提示する装置である。制御バス／データバス１１０は、上述の各部とＣＰＵ１００とを接続する。このほか不図示ではあるが、画像データを入力するための通信インターフェースや画像入力機器等が接続されている。処理対象の画像データは、例えばディジタルカメラや画像スキャナ等から入力されたり、あるいはネットワークを介して他のコンピュータから獲得される。
【００１７】
＜処理機能の追加＞
図２に本実施形態の画像処理アプリケーションプログラムのブロック図を示している。このブロック図を用いて処理の流れを説明する。  処理対象の画像データは入力され、ハードディスク１０３に保存されている。処理対象の画像データを元画像データと呼ぶ。元画像データは画像処理が施されてもそのまま保存され、処理が施された画像データは元画像データとは別に保存される。そして元画像データに対する補正等の画像処理は以下の手順で実現される。
【００１８】
まずＵＩ入力部２０１からユーザの補正指示の入力を受け付ける。入力の種類は少なくとも、画像処理追加指示、ｕｎｄｏ／ｒｅｄｏ指示、処理実行指示の３つがある。ＵＩ入力部２０１は図６に例示するようなユーザインターフェース画面で実現される。画像処理追加指示は、図６のユーザインターフェース画面６０１の画像処理ボタンＵ６０２やＵ６０５を押すこと、あるいはスライダＵ６０６を移動させることなどで指示することができる。例えば、画像処理ボタンでは、自動写真補正などを指示し、スライダでは明るさ、コントラストの調整を指示する。画像処理追加指示は、ジョブ登録部２０２へ送られる。画像処理追加指示を受けたジョブ登録部２０２では、新規ジョブを生成しジョブ管理部２０３へ新規ジョブを送りジョブを登録する。ここで言う、ジョブとは、ある補正処理の処理情報である。例えば、図３のように、処理機能ＩＤと、強度や補正位置などのパラメータとがパッケージ化されているデータである。本実施形態ではひとつのジョブは、ひとつの処理機能の処理情報を保持している。しかし、二つ以上の処理機能群の処理情報を保持していても良い。
【００１９】
ジョブ管理部２０３では図５のメインジョブリスト５０１のように、ジョブを処理機能毎にリンクした二次元配列として管理している。各処理機能ごとに、ジョブは時系列にリンクされる。ジョブ管理部２０３は、入力された新規ジョブがどの処理機能のジョブなのかをジョブの中の処理機能ＩＤを参照して特定し、特定した処理機能に関連づけて、機能別ジョブリストにジョブを格納する。
【００２０】
ここで言うジョブリストとは、ジョブを管理する仕組みである。メインジョブリストは機能別ジョブリストから構成され、各機能別ジョブリストは、例えば、同一の機能のジョブを双方向リストとして繋ぎ、先頭に近い方が古いジョブ、遠い方が新しいジョブとして時系列で管理される。これは一例であり、管理方法は任意であるが、ジョブリストは、あるジョブの前後のジョブを特定することができ、またジョブの新旧を区別できるデータ構造を持つ必要がある。
【００２１】
新規に追加されるジョブは、機能別ジョブリストの現在位置ポインタの次の位置にリンクされる。「次」とは、次に新しいことを呼び、その反対は「前」である。すなわち、ジョブの新規追加では、ジョブリストのリンク機構に応じて新たなリンクが形成される。たとえば、本実施形態では、ジョブリストは、各ジョブがその前後のジョブを指し示す双方向ポインタでリンクされた双方向リストである。その場合、現在位置ポインタで特定されているジョブのポインタが新規追加されたジョブを指し示す値に書き換えられる。また、新規追加されたジョブのポインタが現在位置ポインタで特定されるジョブを指し示す値に書き換えられる。それに伴って、現在位置ポインタで指し示されるジョブに次のジョブがリンクされていれば、当該リンクされているジョブおよびそれ以降のジョブはジョブリストから外されて削除されることになる。すなわち、当該リンクされているジョブおよびそれ以降のジョブは新たなジョブで置換されるということもできる。先頭のジョブの前にはジョブはないが、それに代えて機能別ジョブリストの機能毎に定めたアドレス等を指す。逆に末尾のジョブの次にジョブはないので、その次を指すポインタには、末尾のジョブであることを示す値が格納される。なお現在位置ポインタで特定するジョブを着目ジョブとも呼ぶ。
【００２２】
以上のジョブリストの操作と同時に、ジョブ登録部２０２は、現在位置ポインタ更新指示をジョブ現在位置管理部２０５へ送り、現在位置ポインタポインタを更新する。ジョブ現在位置管理部２０５では、図５の現在位置５１４から現在位置５１７のように、機能別ジョブリスト毎に現在位置ポインタを管理している。現在位置ポインタ更新指示に従って、現在位置ポインタが指しているジョブを変更する。新規ジョブが追加された際には、現在位置ポインタはその新規ジョブを指すように変更される。
【００２３】
ここで言う現在位置ポインタとは機能別ジョブリンクにおけるジョブの位置を示すポインタである。例えば、現在位置ポインタはジョブのアドレスを持っているポインタである。これは一例であり、現在位置ポインタはジョブそのものを指しても良いし、あるジョブを識別できるＩＤのようなものを持っていても良い。または、ｕｎｄｏ／ｒｅｄｏの回数を保持していても良い。つまり、現在位置ポインタはジョブを一意に特定するための情報である。ジョブリストにジョブが登録されていない場合にはその旨を示す情報が記録される。なお現在位置ポインタの初期位置は、任意のジョブを指しても良いし、ジョブを指さなくても良い。また特定のジョブたとえば最新のジョブを指してもよい。以上の流れで、新しい画像処理を追加することができる。
【００２４】
＜アンドゥ／リドゥ機能＞
ｕｎｄｏ／ｒｅｄｏ指示は、ユーザが図６のｕｎｄｏボタンＵ６０４、Ｕ６０８やｒｅｄｏボタンＵ６０３、Ｕ６０７を押してアンドゥ操作またはリドゥ操作を行うことで、ＵＩ入力部２０１から入力することができる。
【００２５】
ｕｎｄｏ／ｒｅｄｏ指示は、ジョブ現在位置変更部２０４へ送られる。ｕｎｄｏ／ｒｅｄｏ指示を受けたジョブ現在位置変更部２０４は、ジョブ現在位置管理部２０５へ現在位置変更指示を送る。ジョブ現在位置管理部２０５は現在位置変更指示を受けると、その変更指示に従って、現在位置ポインタの指す先を他のジョブに変更する。
【００２６】
変更のやり方の一例を、図５の画像処理３に関する機能別ジョブリスト５０４で説明する。現在位置ポインタはジョブ５１０を指している。この場合、現在位置変更指示がｒｅｄｏであれば、現在位置ポインタは、ひとつ新しいジョブであるジョブ５１１を指すように変更される。一方、現在位置変更指示がｕｎｄｏであれば、現在位置ポインタはひとつ古いジョブであるジョブ５０９を指すように変更される。変更する先のジョブが無い場合は現在位置ポインタは変更されない。なおこれは変更例の一つであり、現在位置ポインタの変更はひとつずつジョブの位置をずらすのではなく、たとえば指定された数のジョブを移動させても良い。またずらす単位はジョブの数ではなく、指定されたジョブへと移動させても良い。もちろん現在位置ポインタがどのような形式であるか（たとえばジョブのアドレスや、ジョブの数など）に応じて現在位置ポインタは操作される。
【００２７】
現在位置変更指示は、指定した処理機能すべてのジョブリストを対象とすることもできる。その場合、対象の機能別ジョブリストの現在位置ポインタをｕｎｄｏまたはｒｅｄｏに応じて移動させる。
【００２８】
またこのｕｎｄｏ／ｒｅｄｏによる現在位置ポインタの移動の後でジョブを新規追加することもできる。この場合には、上述したように、現在位置ポインタで特定されるジョブの次（すなわち新しい側）に、新たなジョブがリンクされ、既存のジョブはジョブリストから削除される。
【００２９】
＜画像処理の実行＞
処理実行指示は、図６の処理実行ボタンＵ６１０がユーザにより押された時に、ＵＩ入力部２０１から入力される。また、画像処理ボタンＵ６０２，Ｕ６０５が押されたときに、新規ジョブをジョブリストに追加した後、それに続けて発行される。また、ｕｎｄｏボタンＵ６０４、Ｕ６０８やｒｅｄｏボタンＵ６０３、Ｕ６０７が押された時に発行しても良い。あるいは、ｕｎｄｏボタンＵ６０４、Ｕ６０８やｒｅｄｏボタンＵ６０３、Ｕ６０７が押されても発行せず、その後で画像処理が追加された後で発行しても良い。この場合には、ｕｎｄｏボタンＵ６０４、Ｕ６０８やｒｅｄｏボタンＵ６０３、Ｕ６０７の押下だけでは処理は実行されないので、ｕｎｄｏ／ｒｅｄｏ直後に画像処理を実行させたい利用者は処理実行ボタンＵ６１０を押す必要がある。
【００３０】
処理実行指示は、画像処理実行部２０６へ送られる。画像処理実行部２０６は、入力画像データに対してジョブ管理部２０３から受け取った処理実行ジョブとジョブ現在位置管理部２０５から受け取った現在位置ポインタ情報をもとに、画像処理を実行する。
【００３１】
詳しい処理フローを図４を用いて説明する。図４の手順は、機能ブロックでは画像処理実行部２０６により、ハードウエア構成ではＣＰＵ１００により実行される。まず、初期の処理対象の画像データは入力されたままの元画像データであるので、画像処理の実行に先立って元画像データを複製し、処理対象画像データの領域に保存する。
【００３２】
次にＳ４０１で実行対象の処理機能に着目する。前述の通り、本実施形態では各機能の実行順序は予め決められている。たとえばジョブリスト５０１に配置された機能の順に（図５では例えば上の機能から順に）着目する。はじめはその先頭であり、図５では「画像処理１」５０２が最初に着目される。Ｓ４０２においてジョブ管理部２０３とジョブ現在位置管理部２０５から、着目した処理機能の現在位置ポインタと機能別ジョブリストとを参照する。次にＳ４０３においてその着目処理機能が全面処理か局所型処理かを判断する。全面処理の場合は、Ｓ４０５に移り、現在位置ポインタが指しているジョブだけを実行する。局所型処理の場合は、Ｓ４０４に移り、ジョブリストの一番古いジョブから現在位置ポインタが指しているジョブまでを実行する。実行される処理機能により処理される画像データは、図４の手順に先立って保存された処理対象画像データである。処理対象画像データは、処理実行後に、処理済みの画像データにより上書きされる。
【００３３】
なお全面処理とは、例えば明るさ調整やコントラスト調整など、画像全体に処理がかかる画像処理すなわち画像全体が処理の影響を受ける画像処理とする。局所型処理とは、赤目補正やほくろ除去など、画像の一部分にかかる画像処理とする。実行しようとするジョブが全面処理か局所型処理かは予め処理機能毎に決めておき、例えば表等の形式でジョブがいずれであるかを保存しておくことができる。Ｓ４０３では、それを参照して判断できる。
【００３４】
さて、全面処理のジョブは画像全体を上書きする処理となるため、一番古いジョブから現在位置ポインタが指しているジョブの一つ手前までの処理を行うのは無駄である。そこでＳ４０５において、現在位置ポインタが指すジョブを実行する。それに対して局所型処理は処理対象となる部分が異なることもあり得るので、ジョブリストの一番古いジョブから現在位置ポインタが指しているジョブまでを実行する。本実施形態の全面処理と局所処理で処理を分けることは、その処理時間を省く効果がある。逆に言えば、Ｓ４０３の判定を行わず、すべてのジョブについて、ジョブリストの一番古いジョブから現在位置ポインタが指しているジョブまでを実行してもよい。このようにすると処理時間は長くなるが、ジョブの種類を判定する必要はない。
【００３５】
以上のＳ４０２からＳ４０５をジョブリスト５０１に登録した処理機能に順次着目してその末尾まで実行する。なお、本実施形態では、画像処理の実行の指示により、ジョブリストに登録されたすべての画像処理を決められた順序で実行し直すが、新規に追加されたジョブや現在位置ポインタが変更された処理機能のみに着目して実行しても良い。
【００３６】
以上で説明したように、本実施形態においては、画像処理機能をジョブとして扱い、処理機能毎の機能別ジョブリストでジョブを管理する。こうすることで、処理機能毎のｕｎｄｏ／ｒｅｄｏを実現し、ユーザのｕｎｄｏ／ｒｅｄｏの操作性を向上させることができる。
【００３７】
例えば、図１４のように自動写真補正１４０１、赤目補正Ａ１４０２、赤目補正Ｂ１４０３、美肌補正１４０４、明るさ調整１４０５と実行した後に赤目補正Ｂ１４０３を変更したいとする。従来は、図１３のｕｎｄｏボタンＵ１３０２を２回押す。そして、新しい赤目補正Ｂ’１４０６を実施する。そのあと、自動補正ボタンＵ１３０５のような美肌補正ボタンを１回押す。さらにスライダーＵ１３０６のような明るさ調整スライダーを調整する。以上のことをすることで、ユーザは希望の結果を得ることができた。
【００３８】
これに対して本実施形態では、従来と同じ結果をえるには、図６のｕｎｄｏボタンＵ６０４のような赤目補正用ｕｎｄｏボタンを一回押す。そのあと、新しい赤目補正Ｂ’を実行するだけである。
【００３９】
以上のように本実施形態では、従来に比べ、格段に少ない操作で希望の結果を得ることができる。
【００４０】
［変形例］
本実施形態ではジョブの管理を処理機能毎にジョブリストを持つ二次元配列と説明したが、これは一例であり、他の方法でもよい。例えば、図１１のように、一次元のジョブリストをひとつだけ持ち、処理機能毎に現在位置ポインタを持つことでジョブを管理しても良い。この場合、新規ジョブの追加は、ジョブリストの新しい方に追加することで実現できる。ｕｎｄｏ／ｒｅｄｏ機能は、ｕｎｄｏ／ｒｅｄｏする処理機能の現在位置ポインタを同じ処理機能のジョブの上でのみ移動させることで実現できる。画像処理実行は、処理機能毎にジョブリストの古い方のジョブから走査していき、処理したい処理機能の現在位置ポインタの位置に基づいて実行することで実現できる。全面処理の場合は現在位置ポインタが指しているジョブを実行し、局所型処理の場合は処理したい処理機能のジョブを古い方から現在位置ポインタが指しているジョブまで実行する。
【００４１】
また本実施形態では、ジョブ現在位置管理部２０５を設けたが、ジョブ管理部２０３で現在位置ポインタも管理しても良い。例えば、ジョブを管理しているときにどのジョブが現在位置なのか判断するようなフラグを付加して、管理しても良い。ｕｎｄｏするときは、現在位置のジョブのフラグを下げ、ひとつ古いジョブのフラグを立てる。ｒｅｄｏするときは、現在位置のジョブのフラグを下げ、ひとつ新しいジョブのフラグを立てる。
【００４２】
このように、本実施形態の本質は処理機能毎に現在位置ポインタを用意してジョブを管理することであり、ジョブリストの形式が二次元であるか一次元であるかは本質ではない。
【００４３】
［第２実施形態］
第１実施形態では、画像処理の実行時にエラーの起きるジョブもメインジョブリスト５０１に登録してしまう。そのため、エラーの起きるジョブが登録してあった場合、画像処理実行時に毎回エラーが発生することになる。ここで言う、画像処理の実行時に起こるエラーとは、例えば、画像の外側を選択したり、補正強度が想定外の値になっていたりすることで起きるエラーである。
【００４４】
本実施形態では、以上の課題を解決するため、第１実施形態に加え、処理実行時にエラーとなるジョブはいったん仮リストに登録し、直ちにジョブリストには登録しない。
【００４５】
例として、図２のジョブ管理部２０３に、図７のテンポラリリスト７０１のような、実行前のジョブを一時的に格納しておく仮リストを設ける。新規ジョブ追加指示に応じて新規ジョブを追加するときは、まず始めにジョブ管理部２０３は、新規ジョブをテンポラリリスト７０１に格納する。そののち、画像処理実行時にエラーが起こらなかったらメインジョブリスト７０７に登録する。メインジョブリスト７０７はメインジョブリスト５０１と同じものである。
【００４６】
ｕｎｄｏ／ｒｅｄｏ指示のときの動きは、第１実施形態と同様である。
【００４７】
処理実行指示の時は、図８の処理フローとなる。Ｓ８０３までは第１実施形態と同様である。全面処理の場合、Ｓ８０４に移り、テンポラリリスト７０１に着目している処理機能のジョブがあるか判定する。ある場合Ｓ８０５に移り、テンポラリ７０１にある、現在処理する処理機能に対応した最新のジョブを実行する。Ｓ８０４でテンポラリ７０１にジョブが無かった場合は、Ｓ８０６に移り、Ｓ８０２で取得した現在位置ポインタが指しているジョブを実行する。なお実行後には、ジョブ毎に処理結果情報、すなわち処理が成功したか失敗したかを示す情報が記録される。
【００４８】
局所型処理の場合、Ｓ８０７に移り、Ｓ８０２で取得したジョブリストの一番古いジョブから現在位置ポインタが指しているジョブまでを実行する。そのあとでＳ８０８に移り、テンポラリリスト７０１に着目している処理機能のジョブがあるか判定する。あった場合は、テンポラリ７０１にある、現在処理する処理機能に対応したジョブのなかで、最古のジョブから最新のジョブまでを順次実行する。この場合にもジョブ毎に処理結果情報が記録される。
【００４９】
次にＳ８１０に移り、処理を実行したときにエラーを起こした場合、テンポラリリスト７０１にあるエラーを起こしたジョブを削除する。以上Ｓ８０２からＳ８１１までの処理を実行対象の処理機能が終わるまで実行する。すべての処理機能を実行しても良いし、新規ジョブの追加や現在位置ポインタが更新された処理機能だけ実行しても良いし、そのほかのやり方でもよい。
【００５０】
最後にＳ８１２に移り、テンポラリリスト７０１にあるジョブをメインジョブリスト７０７に格納する。エラーを起こしたジョブはテンポラリリスト７０１にはないのでメインジョブリスト７０７には正常なジョブだけを格納することができる。
【００５１】
以上のＳ８０１からＳ８１２までの手順は一例である。このほか、たとえば、新規にジョブが登録される都度、当該ジョブを仮実行し、正常終了するか否かを判定した上で、正常終了下ならジョブリストに登録するようにしてもよい。仮実行では処理後の画像データを保存する必要はない。すなわち、ジョブリストにジョブを新規に登録する前に、当該ジョブが実行時にエラーを生じないものであると判定しておき、その後に登録すればよい。
【００５２】
以上で説明したように、本実施形態においては、実行時にエラーとなったジョブを登録することがないので、次回実行時にエラーが発生することを抑制できる。また本実施形態は、画像に依存して補正強度などの補正情報の許容範囲が変化するような実行時でないと分からないエラーのときに特に効果を発揮する。
【００５３】
なお本実施形態では、ジョブを一時的に格納しておく領域をひとつしかもっていなかったが、複数持っていても良い。
【００５４】
［変形例］
また本実施形態では処理機能毎にジョブリストを持つ場合で説明したが、これは一例であり、他の方法でもよい。例えば、ジョブリストをひとつだけ持ち、処理機能毎に現在位置ポインタを持つことでジョブを管理する場合を説明する。その場合、図１２のようにジョブ確定位置を持って置き、ひとつのジョブのなかでエラーが発生していない確定状態のジョブと、未実行である未確定状態のジョブを区別することで実現することもできる。
【００５５】
［第３実施形態］
第２実施形態では、ユーザの操作に追従して処理を行う場合、ユーザがＵＩの操作中などの、まだ処理内容が確定されていない未確定なジョブも登録することになる。そのため、未確定なジョブもｕｎｄｏ／ｒｅｄｏの対象となり、ｕｎｄｏ／ｒｅｄｏの操作性が悪くなる。
【００５６】
例えば、図１０のスライダＵ１００３のような、明るさ調整バーを動かしてプレビューに画像処理を反映させたいとする。その場合、スライダを動かすたびに画像処理がかかり、ジョブが登録されていく。そのため、スライダを動かした動き全てがｕｎｄｏ／ｒｅｄｏ操作の対象になってしまう。具体的に、プレビューを見ながら明るさ調整する場合で説明する。明るさ調整バーを度数１０→１１→１２→１３、と動かし、ユーザが期待した結果が得られ、そこで調整を終える。このときユーザが必要としているジョブは１３だけである。その他の調整バーが移動しているときの度数１０、１１、１２、は不必要なジョブである。上記の未確定のジョブとはここで言う、度数１０、１１、１２、の不必要なジョブである。しかし、そのあと、明るさ調整をもとに戻す場合では、度数１３→１２→１１→１０と４回戻さないと前の結果に戻らない。
【００５７】
この例では４つの値分しか動いなかったため４回で済むが、これが数十回にもなると、大きな手間になり、ｕｎｄｏ／ｒｅｄｏの操作性が著しく悪くなってしまう。またスライダで調整するような補正機能、例えばＲＧＢ調整やコントラスト調整などでは、スライダをずっと動かし続けて補正するという用途が容易に考えられ、よりこの課題が浮き彫りになる。
【００５８】
本実施形態では、以上の課題を解決するため第２実施形態に、ジョブが確定されたジョブか未確定なジョブかを判断する手段を加える。それによって、未確定なジョブと判断した場合はジョブリストに格納しない。ここで言う未確定なジョブとは、ユーザがＵＩ操作を継続中のときのジョブである。この場合、画像処理モジュールはジョブを実行し、ユーザのＵＩ操作に追従した結果を表示させる。しかし、このジョブはユーザは処理を確定させていないため、ｕｎｄｏ／ｒｅｄｏの対象のジョブとならない。
【００５９】
ＵＩ操作が継続中である操作とは、例えば、ユーザが図１０のスライダＵ１００３をマウスポインタでドラッグ中の操作であるとしよう。この場合、カーソルキーが押され続けているときの画像処理は未確定のジョブである。また例えば、キーボートが押され続けているときの操作も未確定である。また例えば、画像表示領域Ｕ１００６で画像領域を選択するときのドラッグ中の操作も未確定である。また、マウスホイールが回転中のときの操作も未確定である。タッチパネルでユーザが触っているときの操作も未確定である。ここで挙げているのは一例であり、もちろん他の方法でもよい。
【００６０】
処理実行指示のときの処理フローが図９となる。図９は第２実施形態を元にしたフローである。Ｓ９０１からＳ９１１までは第２実施形態の図８と同じであるため説明は省略する。次に、Ｓ９１２に移り、テンポラリにあるジョブが確定している場合、Ｓ９１３に移り、テンポラリに格納してあるジョブをメインジョブリスト７０７に格納する。ジョブが確定していない場合は、Ｓ９１４に移り、テンポラリにあるジョブを削除する。確定しているか否かは、上述した要領で判定できる。すなわちユーザの操作ごとに上記基準で反転する。以上のＳ９０１からＳ９１４までの方法はひとつの例なので、他の方法でもよい。
【００６１】
［変形例］
なお。確定したジョブか未確定なジョブかの判断は確定ボタンを新たに設けて、ユーザからの指示に応じてジョブを確定しても良い。この場合には第１実施形態を基に確定ボタンを採用することができる。第１実施形態では画像処理ボタンの押下やスライダの操作が新規のジョブの追加指示となっていたが、本変形例では、画像処理ボタンの押下やスライダの操作等の画像処理操作の後、確定ボタンを押すと初めて当該指示に基づいた画像処理追加指示が出される。確定ボタンは、複数の画像処理を一括して確定するために押下しても良いし、ひとつの画像処理毎に確定しなければその他の画像処理を許さないようにしてもよい。この様に構成することで、ジョブの仮登録が必要なくなるので、第２実施形態のようにテンポラリリストを用いる必要が無くなり、第１実施形態に対しても適用できる。
【００６２】
以上で説明したように、本実施形態においては、未確定なジョブと確定されたジョブを判断する手段を加えることで、余分なジョブを追加することが無いため、上記の課題が解決されｕｎｄｏ／ｒｅｄｏの操作性が向上する。
【００６３】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011248478.tif 000003
【図２】
2011248478.tif 000004
【図３】
2011248478.tif 000005
【図４】
2011248478.tif 000006
【図５】
2011248478.tif 000007
【図６】
2011248478.tif 000008
【図７】
2011248478.tif 000009
【図８】
2011248478.tif 000010
【図９】
2011248478.tif 000011
【図１０】
2011248478.tif 000012
【図１１】
2011248478.tif 000013
【図１２】
2011248478.tif 000014
【図１３】
2011248478.tif 000015
【図１４】
2011248478.tif 000016