画像編集装置及び画像編集方法
【課題】 元画像を破壊することなく画像加工処理を行うことが可能な画像編集装置を提供すること。
【解決手段】 加工後の画像データを、未加工の画像データとそれに適用された加工処理を表す加工情報との組合せによって構成する。これにより、加工後の画像データから未加工画像データを画質劣化無く復元することが可能である。また、加工情報を工程毎に記録することで、いつでも過去に行った加工を取り消したり、やり直したりすることが可能である。
【解決手段】 加工後の画像データを、未加工の画像データとそれに適用された加工処理を表す加工情報との組合せによって構成する。これにより、加工後の画像データから未加工画像データを画質劣化無く復元することが可能である。また、加工情報を工程毎に記録することで、いつでも過去に行った加工を取り消したり、やり直したりすることが可能である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像編集装置及び画像編集方法に関する。
【背景技術】
【0002】
一眼レフデジタルカメラの構造上の問題点として、レンズ交換できないタイプ(一体型)とは異なり、レンズ交換時に撮像センサが剥き出しになるという点がある。そのため、CCDやCMOSセンサ等の撮像センサ上のローパスフィルタ等にゴミが付着すると、ゴミが写り込んだ画像が撮影されてしまう。
【0003】
このような「ゴミ問題」を解決するためには、物理的にゴミを除去したり、ゴミの混入を防止するハードウェア面からの対策が重要であるのはもちろんである。しかし、現時点でこのようなハードウェア面からの対策がなされていないカメラで撮影した、ゴミの写り込んだ画像の修正には、コンピュータ装置を代表とする外部機器で稼働するソフトウェアアプリケーション(PCアプリケーション)による支援が必要となる。
【0004】
PCアプリケーションにより画像を修正してゴミ問題を解決する方法としては、
・画像解析を用いた自動ゴミ除去処理
・領域複製処理
といった方法が考えられる。前者は画像からゴミ位置を特定し、ゴミの画素を、本来構成すべき推定画素で置換することによりゴミを除去する方法である。後者は、ゴミが写り込んだ領域(ゴミ領域)に、別の領域の画素値をブレンドすることでゴミを消す方法である。後者では、PCアプリケーション使用者がコピー元の領域(ゴミ領域と似た色合いの領域)とコピー先の領域(ゴミ領域)を指定することで、ゴミを手動で消去することができる。
【0005】
自動ゴミ除去処理は、PCアプリケーションによる自動処理であるため、作業の手間を軽減することができる反面、ゴミ領域を検出するための画像が必要となるなど、画像解析処理が複雑であり、また、誤判定による画質劣化などのリスクがある。領域複製処理は、PCアプリケーションの使用者が手動で領域指定する必要があるため、作業の手間はかかるが、出力結果はアプリケーション使用者の意図に合致したものとなる。
【0006】
領域複製処理は、Adobe社のPhotoShop(商標)に代表される画像加工PCアプリケーションが一般的に備える機能である。領域複製処理については例えば「コピースタンプ」機能として、非特許文献1に記載されている。
【0007】
【非特許文献1】「コピースタンプ」、”デジタル用語辞典”、[online]、[2004年12月1日検索]、インターネット<URL:http://www.nifty.com/webapp/digitalword/word/080/08091.htm>
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、一般的な画像加工PCアプリケーションは、元画像を加工した後のデータを保存するものであるため、元画像を残し別の新たな画像ファイルとして保存するか、元データを捨てて上書き保存することになってしまう。したがって、加工後の画像を保存した後で、編集をやり直したくなったとしても、元画像を使って一から編集しなおすか、多少の画質が劣化することには目をつぶって加工後の画像をさらに加工するかのいずれかしか選択肢が無かった。また、商品撮影時など、ほぼ同じようなカットが複数存在し、これらに同じ加工を適用したい場合、適用したいカット毎に加工処理内容を指定しなくてはならず煩わしいという問題があった。
【課題を解決するための手段】
【0009】
上記問題を解決するために、本発明の画像編集装置は以下の構成を含む。
すなわち、本発明の画像処理装置は、元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集装置であって、元画像データに対して加工処理を適用し、出力する画像処理手段と、画像処理手段が出力する画像データを、加工処理を適用した結果としてユーザに表示する表示手段と、元画像データに適用した加工処理の内容を表す工程情報を、加工処理を適用する毎に記憶する工程情報記憶手段と、元画像データと元画像データに関する工程情報とを含むデータを、加工処理後の画像データとして保存する保存手段とを有することを特徴とする。
【0010】
また、上記問題を解決するために、本発明の画像編集方法は、元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集方法であって、元画像データに対して加工処理を適用し、出力する画像処理ステップと、画像処理ステップが出力する画像データを、加工処理を適用した結果としてユーザに表示する表示ステップと、元画像データに適用した加工処理の内容を表す工程情報を、加工処理を適用する毎に記憶する工程情報記憶ステップと、元画像データと元画像データに関する工程情報とを含むデータを、加工処理後の画像データとして保存する保存ステップとを有することを特徴とする。
【発明の効果】
【0011】
このような構成により、本発明の画像編集装置によれば、加工後に保存した画像データからも元画像を復元可能であり、また、複数の画像に共通した加工を適用したい場合でも効率よく加工処理を実行することが可能になる。
【発明を実施するための最良の形態】
【0012】
〔第1の実施形態〕
以下、図面を用いて本発明をその好適な実施形態に基づいて詳細に説明する。
図1は、本発明の第1の実施形態に係る画像編集装置として機能可能な汎用コンピュータシステムの概略構成例を示した図である。CPU101は、システム全体の動作をコントロールし、一次記憶装置102に格納されたプログラムの実行などを行う。一次記憶装置102は主に半導体メモリであり、二次記憶装置103に記憶されたプログラムなどを読み込んで格納する。二次記憶装置103は、例えばハードディスクなどがこれに該当する。
【0013】
一般にコンピュータシステムにおいて一次記憶装置の容量は二次記憶装置の容量より小さく、一次記憶装置に格納しきれないプログラムやデータなどは二次記憶装置に格納される。また、長時間記憶しなくてはならないデータなども二次記憶装置に格納される。本実施形態では、CPU101が実行することでシステムを本実施形態の画像編集装置として機能させるプログラムを二次記憶装置103に格納し、プログラム実行時に一次記憶装置102に読み込んでCPU101が実行するものとする。入力デバイス104とは例えば、システムに対してユーザが指示を与えるために用いるマウスやキーボードといった入力装置の他、画像データの入力に必要なメモリカードリーダー、スキャナ、フィルムスキャナなどがこれに該当する。出力デバイス105とは例えば、モニタやプリンタなどが考えられる。システムの構成には他にも様々な形態が考えられるが、本発明の主眼ではないので説明を省略する。
【0014】
本実施形態による画像編集装置には、複数のアプリケーションプログラムを並列実行可能なオペレーティングシステム(OS)が搭載され、操作者はOSが提供するGUI(Graphical User Interface)を介して装置上で動作するアプリケーションプログラムの操作を行うことができる。例えば本実施形態では、オペレーティングシステムとしてマイクロソフト社のWindows(登録商標)を用いるものとする。したがって、以下の説明においてはWindows(登録商標)の仕様に基づいた記述になっているが、これは本発明の実施環境を限定するものではなく、他のOS環境に本発明を適用可能であることは言うまでもない。
また、本実施形態に係る画像編集装置で実行可能な画像加工処理に特に制限はないが、以下では、従来技術で述べた領域複製処理を例として説明する。
【0015】
図2は、本実施形態の画像編集装置が領域複製処理時に提示するGUIの例を示す図である。加工対象画像は画像表示領域201に表示される。表示設定や加工パラメータを変更するためのパレット202には、コピー元位置指定モードボタン203、表示モード遷移ボタン204、全画面表示切り替えボタン205、コピー元座標を絶対座標として扱うか相対座標として扱うかを示すコピー元座標指定チェックボタン208、ブレンド領域の半径を指定する半径スライダ209、さらに、複数画像を加工対象とした場合の「次の画像」「前の画像」を選択する前選択ボタン210および次選択ボタン211、加工情報スタック(元画像データに対して適用された加工処理の内容を、加工処理の適用毎に記憶した工程情報の集合体。操作履歴。)を加工対象画像に添付する保存ボタン206、加工情報スタック適用後の画像をモニタやプリンタに出力するための変換ボタン207を備える。
【0016】
図3は、領域複数処理において画像編集装置が取り扱うデータを示す図である。加工の対象となる画像は全て、ファイルリストに登録する。ファイルリストを構成するファイルエントリは、各画像のファイル名、画像回転情報および加工情報スタックを持つ。また、編集対象画像を示す編集対象画像ポインタがあり、このポインタで参照されているファイルエントリに対応するファイルが編集対象画像となる。
【0017】
また、編集対象画像データとして、未加工状態の未加工画像データ、および後述する加工情報スタックに含まれる加工を適用した後のプレビュー画像データを持つ。未加工状態の画像データを保持するのは、後述するUndo/Redo処理のためである。図3中では、編集対象画像の加工情報スタックとファイルエントリの加工情報スタックとを別のデータとして表現しているが、編集対象画像データから直接ファイルエントリの加工情報スタックを参照しても良い。本実施形態では、直接ファイルエントリの加工情報スタックを参照する形をとる。
【0018】
また、1回のドラッグ操作によって複数の領域複製処理を1つの加工情報エントリに記録できるよう、ドラッグ操作に伴いOSから通知される座標を、適用座標列と呼ぶ配列に格納する。格納された座標の数は、適用座標数で保持する。したがって、領域複製処理を開始した時点で適用座標数を0に初期化する必要がある。
【0019】
加工情報スタックを構成する各加工情報エントリ内には、加工パラメータと加工画像キャッシュがある。
加工パラメータとは、どの座標にどのような加工処理を適用したかを示す情報である。本実施形態では加工処理として領域複製処理のみを行うため、加工処理を識別するためのIDは保持しないが、加工パラメータの構成要素として加工処理を識別するIDを付与しても良いことは言うまでもない。本実施形態における加工パラメータは、領域複製処理範囲を示す半径r、適用座標列、および適用座標数とする。
【0020】
加工画像キャッシュとは、加工情報エントリに記録された画像加工処理を適用する前と適用した後の画像の差分である。このようなキャッシュを保持することで、実際に加工処理を実行するよりも高速に加工処理を実行できる。このキャッシュは、主にUndo/Redo処理で利用する。
【0021】
本実施形態による画像編集プログラムでは、加工情報スタック以外の画像加工情報として画像回転情報を持つ。画像の回転方向については、画像データそのものを回転する場合もあるが、Exif(Exchangeable image file format for Digital Still Cameras)のOrientationタグに代表される、画像の回転方向を示す情報を付与することで、適切な画像の回転方向を保存する場合もある。後者は画像データ自体を変更しないため、回転処理のためのデコード処理による画質の劣化が無く、CCD−RAWデータに代表される特殊な画像データ形式にも対応可能である。
【0022】
そこで本実施形態では、加工情報スタックに合わせて画像の回転方向を示す画像回転情報を画像データに付与し、画像の回転結果を保持することとする。本実施形態においては、例えばキーボードのCtrlキーとLキーを同時に押下することで左90度回転、CtrlキーとRキーを同時に押下することで右90度回転の指示として動作する。画像回転情報や加工情報スタックの保存方法やデータ形式については後述する。
【0023】
図4は、本実施形態にかかる画像編集装置が出力デバイス105としての表示装置に表示するGUIの状態遷移図である。
GUIは画像をウィンドウの大きさに合わせた倍率で表示(fit表示)するfitモード401と、画素等倍表示にする等倍モード402の2モードに分かれており、遷移コマンドによって互いの状態へ遷移する。本実施形態では、fitモード時は画像加工を禁止し、等倍モードでのみ画像加工ができるように制御している。これは、画像加工を実行する範囲が広くなると、加工前画像と加工後画像の差分である加工画像キャッシュのデータサイズが大きくなり、処理に必要なメモリ領域が非常に大きなものになってしまうからである。画像加工操作を等倍モードに限定することで、画像加工範囲を限定し、使用メモリ量の増加を抑制することができる。
【0024】
fitモード時は、等倍モードへの遷移のみ可能である。本実施形態において、画像編集装置は、表示モード遷移ボタン204が押下されるか、画像表示領域201にfit表示されている画像のどこかがダブルクリックされると、等倍モードへ移行する。表示モード遷移ボタン204が押下された場合、編集対象画像の中央部を画素等倍表示し、等倍モードに遷移する。また、fit表示画像がダブルクリックされた場合、ダブルクリックされた画像位置が中央に表示されるように画素等倍表示する。等倍表示時の画像外領域は、黒で塗りつぶす。
【0025】
等倍モード時は、画像加工ができる。等倍モード時の状態遷移図を図5に示す。fitモードから等倍モードに遷移した直後は、移動モード502になる。移動モード502の状態で画像がダブルクリックされるか、表示モード遷移ボタン204が押下されると、fitモードへ遷移する。
【0026】
移動モード502では、画像表示位置の変更が可能である。一般的なウィンドウ表示と同様、垂直、水平スクロールバーの操作によりユーザは画像表示位置の変更ができる。
移動モード502、あるいはスタンプモード504でAltキーが押下されている間、あるいはコピー元位置指定モードボタン203が押下されると、コピー元位置指定モード503に遷移する。Altボタンが開放されるか、コピー元位置指定モードボタン204が再度押下されると、移動モード502に遷移する。表示モード遷移ボタン204が押下されると、fitモード501へ戻る。コピー位置指定モード503において画像上がクリックされた場合、そのクリック位置をコピー元座標としてスタンプモード504に遷移する。
【0027】
スタンプモード504に入った後、最初にマウスの左ボタンがクリック(左クリック)された座標に対し、領域複製処理を行う。この座標を基準座標と呼ぶ。基準座標が更新された場合、コピー相対座標を未設定状態にする。コピー相対座標とは、領域複製処理のコピー先の領域からコピー元の領域への相対座標である。
【0028】
スタンプモード504において右クリックされた場合、移動モード502に遷移する。移動モードで表示モード遷移ボタン204が押下されると、fitモード501へ戻る。
【0029】
次に、図6に示すフローチャートを用いて領域複製処理の流れについて説明する。ここで図6中の複製マスクとは、半径スライダ209の状態に応じて生成した複製マスクである。複製マスクの生成処理は、半径スライダ209の状態が変化する度に実行する。複製マスク生成処理については後述する。
【0030】
(ステップS601) コピー相対座標が設定されているかどうかをチェックする。設定されていればステップS603へ、設定されていなければステップS602へ進む。
(ステップS602) コピー元位置から基準座標への相対座標を求め、これをコピー相対座標とする。
(ステップS603) コピー元位置の相対座標を算出する。コピー元位置を絶対座標として扱う場合、基準座標とコピー先座標の相対座標を用いる。コピー元位置を相対座標として扱う場合、コピー相対座標を用いる。
【0031】
(ステップS604) 適用座標数を0に初期化し、プレビューキャッシュ画像を作成する。プレビューキャッシュ画像とは、この時点でのプレビュー画像のコピーである。
(ステップS605) マウスの左ボタンの状態をチェックする。左ボタンが押下されている場合は、ステップS606へ進む。そうでない場合はステップS608へ進む。
(ステップS606) マウスカーソルが指し示す座標をコピー先座標とし、複製マスクを用いてコピー相対座標からのブレンド処理を行う。複製マスク、およびブレンド処理の詳細については後述する。
(ステップS607) 適用座標数を1増やし、適用座標列にコピー先座標を追加する。ステップS605へ戻る。
(ステップS608) 加工情報スタック終端位置情報より先にある加工情報エントリを破棄する。
【0032】
(ステップS609) 新たな加工情報エントリを作成し、これを参照するように加工情報スタック終端位置情報を更新する。
(ステップS610) ステップS604で作成したプレビューキャッシュ画像とプレビュー画像との差分画像を作成する。この差分画像を、ステップS609で作成した加工エントリの加工画像キャッシュとする。プレビューキャッシュには、キャッシュ作成時の回転方向を示すキャッシュ回転情報を付与しておく。
(ステップS611) ステップS609で作成した加工情報エントリの加工パラメータとして、半径r、コピー相対座標、適用座標数、適用座標列を登録する。ここで、コピー相対座標、適用座標列は、画像回転情報を用いて、画像回転処理適用前の座標に変換して登録する。このような処理により、画像の回転方向が変更されたとしても常に適切な位置に加工処理を適用することが可能になる。
【0033】
次に、ブレンド処理の詳細について説明する。ブレンド処理とは、コピー先座標を中心とした半径rの領域に、コピー元座標を中心とした半径rの領域を合成処理することである。実際にはコピー先座標から離れるほどコピー元座標の比率を落として合成処理しないと、領域複製処理を行った部分と行っていない部分の境界部分が目立ってしまうので、コピー先座標から離れるほど合成比率を落とすような処理になる。そこで、合成処理を、半径rの2倍の範囲で行う。この合成の比率を示すマップのことを、複製マスクと呼ぶ。
【0034】
まず、複製マスクの概要を図7に示す。複製マスクの各要素の値域は、[0.0,1.0]である。この値が大きいほどコピー元領域の画素値が優先される。複製マスクの要素は、複製マスクの中心(Cx,Cy)からの距離に応じて算出される値で算出する。この計算方法については後述する。コピー元座標F、コピー先座標Tをそれぞれ、x座標を−2*r、y座標を−2*rとした座標、複製マスクの左上を原点とした場合、座標(i,j)にある画素のブレンド処理を、次式に従って画素値を求める。
T’i,j=Bi,j*Fi,j+(1.0−Bi,j)*Ti,j
ここで、Fはコピー元座標の画素、Tはコピー先領域の画素、Bは複製マスクの要素、T’はブレンド処理後のコピー先領域の画素とする。本実施形態では各画素のRGBそれぞれの値をブレンド率に応じて合成してブレンド後の画素値を算出する。
【0035】
図6に示した処理においてマウスがドラッグ操作された場合の、ドラッグ中のマウスポインタの軌跡に対する処理について述べる。Windows(登録商標)では、ドラッグ中にマウスポインタが通過した全ての座標がOSからアプリケーションに通知されるわけではなく、一定間隔で通知される。しかし、この間隔が比較的長い。そこで、ドラッグ状態を示す通知を受けた場合、その座標A(xa,ya)と直前に通知された座標B(xb,yb)とを結ぶ線分上に一定距離L毎に領域複製処理を行う。このような処理を行うことで滑らかな領域複製結果を得ることができる。
【0036】
ここで、ドラッグ中の領域複製処理を適用する点の間隔Lを、半径スライダ209で指定された半径rを用いて次式で求める。
L=floor(r/B+0.5)
ただし、L=0の場合、L=1として処理する。ここで、floor(x)は、実数xの小数点以下を切り捨てした整数値を表す。また、Bは経験的に求められる値で、本実施形態ではB=4.7とする。
【0037】
ここで、図7に示した複製マスクの要素の計算方法について述べる。マスクの要素Bi,jは、次式で求める。
【0038】
【数1】
【0039】
Cx、Cyは図7中に示したマスクの中央座標で、本実施形態では(Cx,Cy)=(2*r,2*r)とする。したがって、複製マスクサイズは、幅(4*r+1)要素、高さ(4*r+1)要素となる。i、jは左上を(i,j)=(0,0)とする座標値であり、i,jの値域は[0,4*r]となる。rは半径スライダ209で指定された半径である。
【0040】
次に、図8に示すフローチャートを用いて、編集対象画像ファイルが指定された場合や前選択ボタン210や次選択ボタン211によって編集対象画像が変更された場合の編集対象画像切り替え処理について説明する。
【0041】
(ステップS801) 編集対象画像の加工情報スタックについて、加工情報スタック終端情報より先の加工情報エントリを破棄する。
(ステップS802) 編集対象画像の加工情報スタックについて、加工情報スタックの加工情報キャッシュを全て破棄する。
(ステップS803) 新たに選択されたファイルのファイルエントリを参照するように、編集対象情報ポインタを更新する。
【0042】
(ステップS804) 編集対象画像ポインタが参照する加工情報スタックを参照するように、編集対象画像の加工情報スタックの参照先を更新する。
(ステップS805) ファイルをデコードし、編集対象画像データ中の未加工画像を取得する。
(ステップS806) ステップS805で得た未加工画像に対し、加工情報スタックに保持された加工処理を適用し、プレビュー画像を生成する。加工処理の詳細については図9を用いて後述する。
(ステップS807) GUIの状態をfitモード401に遷移して、プレビュー画像をfit表示する。
【0043】
次に、本実施形態におけるUndo/Redo処理について述べる。
Undoとは、直前に適用した加工処理を取り消す処理である。本実施形態では、加工情報スタック終端位置情報を、一つ前の加工情報エントリを参照するよう修正することにより、Undo処理が実現できる。
【0044】
また、Redoとは、Undoの取り消し処理、すなわちやり直し処理である。本実施形態では、加工情報スタック終端位置情報を、参照中の加工スタックエントリの次のエントリを参照するように更新することにより、Redo処理が実現できる。
【0045】
このように、加工情報エントリと加工情報スタック終端位置情報を用いることで、加工情報スタック終端位置情報の参照先を変更するだけでUndo/Redo機能が実現可能であり、加工処理を適用した座標が間違っている場合や加工結果が思わしくない場合でも、何度でもやりなおしすることができるようになる。
【0046】
Undo/Redo処理や新たな編集対象画像ファイルが選択された場合、プレビュー画像の更新処理が必要になる。プレビュー画像の更新処理は、未加工画像に対して加工情報スタックに従って加工処理を適用して行う。以下、プレビュー画像の更新処理の詳細について、図9に示すフローチャートを用いて説明する。なお、加工情報スタックが空の場合には、この処理を適用しない。
【0047】
(ステップS901) 現在のプレビュー画像を破棄した後、未加工画像を複製し、この複製をプレビュー画像とする。このプレビュー画像は、画像回転情報が示す方向になるように回転処理する。
(ステップS902) 加工情報スタックが参照する加工情報エントリを示すポインタpを作成する。
(ステップS903) ポインタpが示す加工情報エントリに加工画像キャッシュが存在するかどうかをチェックする。存在する場合はステップS904へ、存在しない場合はS905へ進む。
【0048】
(ステップS904) 画像回転情報とキャッシュ回転情報を比較し、画像回転情報で指定された画像の方向に合うように、差分画像を回転し、差分をプレビュー画像に反映する。ステップS906へ進む
(ステップS905) ポインタpが示す加工情報エントリの加工パラメータを用い、プレビュー画像に加工処理を適用する。ただし、加工処理を適用する前に、コピー相対座標、適用座標列に格納された座標を、画像回転情報が示す方向に回転し、回転後の座標に対して加工処理を適用する。加工処理適用後、ステップS906へ進む。
(ステップS906) 次の加工情報エントリが存在する場合、ステップS907へ進む。存在しない場合は、処理を終了する。
(ステップS907) ポインタpが次の加工情報エントリを参照するようにポインタを更新し、ステップS903へ戻る。
【0049】
ここで、図2における保存ボタン206と変換ボタン207について説明する。保存ボタン206が押下された場合、加工情報スタックおよび画像回転情報を編集対象画像ファイルに付与する。この機能を用意することで、元画像データ(未加工画像データ)を維持したまま加工結果を保存することができる。変換ボタン207が押下された場合、編集対象画像データファイル中の元画像データに対し、加工情報スタックに応じた画像処理を適用し、画像回転情報に従って画像を回転後、新たなファイルとして保存する。画像の回転前に加工情報スタックを適用することで、加工情報スタック内の座標変換を行わなくても良いという利点がある。しかし、本実施形態では処理の共通化のため、画像回転情報に合わせて画像を回転した後、図9に示す処理によって加工情報スタックに沿った加工処理を適用する。
【0050】
保存ボタン206によって付与されるデータ形式の一例を図10に示す。図10に示すデータを加工情報と呼ぶ。
画像回転方向は、回転しない状態を「0」、右90度回転時は「1」、180度回転時は「2」、左90度回転時は「3」を2バイトで格納する。加工情報スタックエントリ数は4バイトで、加工情報スタックエントリの数を格納する。加工情報スタックエントリ内には、処理識別ID、適用半径、画像回転前の座標値で表現されたコピー相対座標および適用座標と、適用座標の数を保持する。座標はx座標2バイト、y座標2バイトの計4バイトで、その他の数値は2バイトとする。処理識別IDは、将来加工処理の種類を増やした時に対応するために設けられ、本実施形態では常に0x0001を格納する。
【0051】
加工情報は、JPEGデータのEOI(End Of Image)の後やTiffデータの末尾、CCD−RAWデータファイルの末尾に付与することができる。ただし、CCD−RAWデータファイルの末尾に特別な意味、例えばCCD−RAWファイルの識別コードなどが含まれている場合があるため、加工情報の末尾の16バイトには加工情報をファイルに添付する前のファイルの末尾16バイトをコピーして記録する互換エリアを設けている。また、ファイルに添付された加工情報があるかどうかを判定するため、互換エリアの直前に、識別情報”ADT” 0、および、加工データの先頭を検出するためのデータ長をそれぞれ4バイトで格納する。
【0052】
次に、図11に示すフローチャートを用いて、本実施形態における加工情報の読み込み処理について説明する。
(ステップS1101) 識別情報の有無を確認するため、最初にファイル末尾から24バイト目の位置から4バイト読み込む。
(ステップS1102) ステップS1101で読み込んだデータが識別情報”ADT” 0であるかどうかをチェックし、加工情報が画像データに付与されているかどうかを判定する。識別情報が検出された場合には加工情報が付与されていると判定し、ステップS1103へ進み、そうでない場合は読み込み処理を終了する。
(ステップS1103) ファイル末尾から20バイト目の位置から4バイト読み込み、加工情報のデータ長を取得する。
(ステップS1104) 互換エリアの先頭から加工情報のデータ長分戻った位置からファイル末尾までを読み込む。読み込んだデータが加工情報である。なお、予めデータ長として互換エリアの16バイト分が追加してある場合にはファイルの末尾からデータ長分戻った位置から読み込めばよい。
【0053】
以上説明したように、本実施形態によれば、未加工の画像データとそれに適用された加工処理とを個別に保存することにより、編集加工対象となる元画像データに変更を加えることなく加工を適用し、加工結果を保存することが可能になる。
【0054】
また、加工処理を工程毎に保存するため、適用した加工を段階的に取り消すことが可能であるほか、取り消した加工処理を再度適用することも可能である。
【0055】
〔第2の実施形態〕
本実施形態では、第1の実施形態で述べたシステム上における、異なる画像間での加工情報スタックのコピー&ペーストについて述べる。ほぼ似た絵柄の画像が複数ある場合、一枚の画像に対して加工処理を行い、同様の処理を別の画像に適用することで、加工作業に費やす時間を削減することができる。本実施形態による画像編集装置では、第1の実施形態と同様、編集(加工)手順を加工情報スタックという形で保持しているため、この加工情報スタックだけを別の画像データファイルへ適用することで、同じ加工処理を実現可能である。
【0056】
まず、加工情報スタックのコピー処理について述べる。加工情報スタックのコピー処理とは、編集対象画像の加工情報スタックを例えば一次記憶装置の領域として確保されるコピーバッファに格納する処理である。ただし、コピーした加工情報スタックをペーストする場合、ペーストするかどうかの判断にコピー元画像の解像度が必要になるため、これを別途保持する。コピーバッファに格納する情報は、加工情報スタック、画像回転情報、元画像の回転処理前の画像解像度である。
【0057】
次に、加工情報スタックのペースト処理について述べる。加工情報スタックのペースト処理とは、コピー処理によってコピーバッファ内に保持された加工情報スタックを、編集対象画像データファイルに添付、或いはその加工情報スタックに反映する処理である。
【0058】
ペースト処理には、編集対象画像の加工情報スタックに、ペーストする加工情報スタックを付加する方法と、編集対象画像の加工情報スタックを破棄し、ペーストする加工情報スタックに置き換える方法がある。本実施形態では、後者を用いるものとする。
【0059】
図12は、本実施形態におけるペースト処理を説明するフローチャートである。
(ステップS1201) ペースト処理実行判定を行う。本実施形態では、コピーバッファに格納された元画像の回転前の画像解像度と、ペースト対象画像の回転前の画像解像度を比較し、画像の幅および高さが一致した場合のみ、ペースト処理を実行可能であると判定する。ペースト処理が実行できない場合は処理を終了し、そうでない場合はステップS1202へ進む。
(ステップS1202) ペースト対象画像データファイル内の加工情報スタックを破棄する。
(ステップS1203) コピーバッファ内の加工情報スタックを複製し、これをペースト対象画像の加工情報スタックとして置き換えることによって更新する。
(ステップS1204) 更新された加工情報スタックを用い、ペースト対象画像に対して図9に示した加工処理を実行し、プレビュー画像、および加工画像キャッシュの再構成を行い、処理を終了する。
【0060】
このように、本実施形態によれば、加工情報スタックを他の画像データファイルに適用することで、共通の画像加工処理を実現することが可能である。従って、類似の複数画像に対して同じ処理を適用する場合、ある1つの画像に対して加工処理を行えば、残りの画像に対しては加工情報をコピーペーストするだけでよく、使い勝手がよい。
【0061】
〔第3の実施形態〕
第2の実施形態では、加工情報スタックのコピー元画像の解像度と、ペーストしようとしている画像の解像度が完全に一致する場合だけ、ペースト処理が実行可能であると判定した。しかし、近年のデジタルカメラの中には、解像度が異なるだけの全く同じ絵柄の画像データを同時に生成するものもある。第2の実施形態のような判定では、このような複数の画像間での加工情報スタックの共通利用に対応できない。
【0062】
そのため、本実施形態では、加工情報スタックのペースト先の画像の解像度に応じて加工情報中の座標を変換することで、このような画像間での加工情報スタックの共通利用を実現するものである。ただし、アスペクト比(縦横比)が異なる画像については画像が切り抜かれている場合も考えられるので、本実施形態ではペースト処理対象としない。
【0063】
本実施形態におけるペースト処理について、図13に示すフローチャートに基づき説明する。
(ステップS1301) ペースト処理実行判定を行う。本実施形態では、コピーバッファに格納された、元画像の回転前の画像解像度と、ペースト対象画像の回転前の画像解像度を比較し、画像のアスペクト比が実質的に一致した場合のみ、ペースト処理を実行する。ここで完全一致を条件としないのは、同じ画像を縮小した場合でもアスペクト比が完全に一致しない場合があるためである。アスペクト比の差が予め定められた数値内である場合に一致するとみなす。ペースト処理を実行できないと判断される場合は処理を終了し、そうでない場合はステップS1302へ進む。
(ステップS1302) ペースト対象画像データファイルの加工情報スタックを破棄する。
【0064】
(ステップS1303) コピーバッファ内に格納された、元画像の加工情報スタックを複製し、これをペースト対象画像の加工情報スタックとして置き換える。
(ステップS1304) コピー元画像の画像解像度と、ペースト対象画像の画像解像度を用い、ペースト対象画像の加工情報スタックに含まれる座標を変換する。加工情報スタックに保持されている座標(X,Y)について、コピー元座標の画像解像度を幅Wc、高さHc、ペースト対象画像の画像解像度を幅Wp、高さHpとすると、変換後の座標(X’,Y’)は、
X’=X*Wp/Wc
Y’=Y*Hp/Hc
となる。
【0065】
また、画像処理の適用半径も、次式で変換する。rが変換前、r’が変換後の値である。
【0066】
【数2】
【0067】
(ステップS1305) 変更後の加工情報スタックを用い、ペースト対象画像に対して図9に示した加工処理を実行し、プレビュー画像、および加工画像キャッシュの再構成を行い、処理を終了する。
【0068】
このように、本実施形態によれば、コピーもと画像とペースト先画像の解像度に基づいて加工情報スタックに含まれる座標を変換することにより、解像度の異なる同一画像間での加工情報スタックの共通利用が可能になる。
【0069】
〔第4の実施形態〕
本実施形態は、第1の実施形態で述べた画像編集装置での印刷処理に関する。
加工後の画像を印刷する場合、一般的には、未加工画像に対して加工情報スタックにある編集内容を適用し、その後印刷解像度に変換してプリンタへ出力することが考えられる。しかし、上述したように、画像加工処理、特に領域複製処理においては、適用領域が小さいほど処理が高速に実行できる。
【0070】
そこで、出力解像度が画像の解像度より小さい場合、まず画像を出力解像度に合わせて縮小し、加工情報スタックの情報を出力解像度に合わせて変換し、縮小画像に対して変換後の加工情報スタックの処理内容を適用することが考えられる。この変換処理は、第3の実施形態で示した処理において、縮小画像をペースト先画像とした処理と同様であるため、説明を省略する。
このような処理を行うことで、複雑な加工処理を適用した場合でも、より高速に印刷出力を得ることができる。
【0071】
〔第5の実施形態〕
第1の実施形態では、編集対象画像データファイルが指定された場合や前選択ボタン210や次選択ボタン211によって編集対象画像が変更された場合の処理として、表示モードをfitモードに戻すように構成していた。本実施形態では、第1の実施形態とは異なり、表示モードを維持したまま、適切な領域を表示することを特徴とする。
【0072】
第1の実施形態では、撮像センサ上に付着したゴミが撮像データに写りこんでしまった場合のゴミ除去処理を領域複製処理によって実現する際の、GUIの表示モードについて説明した。
【0073】
この撮像センサ上のゴミは、シャッター動作時の衝撃などによって若干移動する場合があるものの、連続して撮影した画像データのほぼ同じ位置が写り込んでいる可能性が高いことが知られている。そこで、本実施形態では、画像回転前の座標を維持しながら表示画像を切り替えることにより、他の画像に切り替えた後も、一旦強制的にfitモードへ戻さずに、直前に表示していたゴミと同じゴミが表示されるような位置を表示する。このような画像の切り替え方式を提供することで、複数の画像間で同じ位置にあるゴミに注目しながら編集作業を行うことができる。
【0074】
本実施形態における編集対象画像の変更時処理を図14に示すフローチャートを用いて説明する。ただし、fitモード401の状態での編集対象画像の変更処理は、第1の実施形態と同様の処理を行う。ここで、直前まで選択されていた編集対象画像を第1の画像、新たに選択又は指定された画像を第2の画像とする。第1の画像、第2の画像は、画像回転情報に従って回転した後の状態とする。それぞれの回転前の画像を、第1の未回転画像、第2の未回転画像とする。
【0075】
(ステップS1401) 第1の画像のうち、等倍モードで表示されている部分領域の中心座標A(XA,YA)を求める。ここで中心座標Aは、表示領域における座標ではなく、第1の画像の全体における座標である。
(ステップS1402) 第1の画像の画像回転情報を用いて、中心座標Aの、第1の未回転画像上で対応する座標B(XB,YB)を算出する。この座標は、中心座標A(XA,YA)を、画像回転情報で示される回転方向を打ち消す方向に回転することで算出できる。
(ステップS1403) 座標B(XB,YB)を、次式で正規化する。W1とH1はそれぞれ、第1の未回転画像の画像幅、画像高さである。正規化後の座標を(X’B,Y’B)とする。
X’B=XB/W1
Y’B=YB/H1
【0076】
(ステップS1404) 第2の未回転画像の画像幅W2、画像高さH2を用いて、第2の未回転画像においてX’B、Y’Bに対応する中心座標C(XC,YC)を算出する。
XC=W2*X’B
YC=H2*Y’B
(ステップS1405) 中心座標Cを、第2の画像の画像回転情報に従って回転した座標D(XD,YD)を求める。
(ステップS1406) この座標D(XD、YD)が画像表示領域201の中心となるように第2の画像の部分領域を等倍モードで表示する。
【0077】
このような処理を行うことで、未回転状態の画像上での相対位置を保ったまま、編集対象画像を切り替えることができる。したがって、仮に同じカメラで撮った複数の画像を切り替えた場合、画像の回転方向に関係なく、撮像センサ上でほぼ同じ位置が常に表示領域の中心に表示され、効率良くゴミ除去処理を行うことができる可能性が高い。また、fitモードに戻さないため、画像を切り替える毎に等倍モードへ移行させるための操作を行う必要がなく、その点でも効率が向上すると考えられる。
【0078】
〔他の実施形態〕
前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【0079】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【0080】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0081】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【0082】
有線/無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムデータファイル)を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【0083】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【0084】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0085】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0086】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【0087】
【図1】本発明の実施形態に係る画像編集装置として機能可能なコンピュータシステムの構成例を表す図である。
【図2】本発明の実施形態に係る画像編集装置が領域複製処理時に提示するGUIの例を示す図である。
【図3】本発明の実施形態に係る画像編集装置が領域複数処理において取り扱うデータを示す図である。
【図4】本発明の実施形態に係る画像編集装置が提示するGUIの状態遷移図である。
【図5】本発明の実施形態に係る画像編集装置が提示するGUIの等倍モードにおける状態遷移図である。
【図6】本発明の実施形態に係る画像編集装置の領域複製処理全体を説明するフローチャートである。
【図7】本発明の実施形態における複製マスクの概要を示す図である。
【図8】第1の実施形態に係る画像編集装置における、編集対象画像切り替え処理を説明するフローチャートである。
【図9】本発明の実施形態における加工情報スタックの適用処理を説明するフローチャートである。
【図10】本発明の実施形態における加工情報の構造を示す図である。
【図11】本発明の実施形態における加工情報読み込み処理を説明するフローチャートである。
【図12】第2の実施形態における加工情報スタックのペースト処理を説明するフローチャートである。
【図13】第3の実施形態における加工情報スタックのペースト処理を説明するフローチャートである。
【図14】第5の実施形態における編集対象画像切り替え処理を説明するフローチャートである。
【技術分野】
【0001】
本発明は、画像編集装置及び画像編集方法に関する。
【背景技術】
【0002】
一眼レフデジタルカメラの構造上の問題点として、レンズ交換できないタイプ(一体型)とは異なり、レンズ交換時に撮像センサが剥き出しになるという点がある。そのため、CCDやCMOSセンサ等の撮像センサ上のローパスフィルタ等にゴミが付着すると、ゴミが写り込んだ画像が撮影されてしまう。
【0003】
このような「ゴミ問題」を解決するためには、物理的にゴミを除去したり、ゴミの混入を防止するハードウェア面からの対策が重要であるのはもちろんである。しかし、現時点でこのようなハードウェア面からの対策がなされていないカメラで撮影した、ゴミの写り込んだ画像の修正には、コンピュータ装置を代表とする外部機器で稼働するソフトウェアアプリケーション(PCアプリケーション)による支援が必要となる。
【0004】
PCアプリケーションにより画像を修正してゴミ問題を解決する方法としては、
・画像解析を用いた自動ゴミ除去処理
・領域複製処理
といった方法が考えられる。前者は画像からゴミ位置を特定し、ゴミの画素を、本来構成すべき推定画素で置換することによりゴミを除去する方法である。後者は、ゴミが写り込んだ領域(ゴミ領域)に、別の領域の画素値をブレンドすることでゴミを消す方法である。後者では、PCアプリケーション使用者がコピー元の領域(ゴミ領域と似た色合いの領域)とコピー先の領域(ゴミ領域)を指定することで、ゴミを手動で消去することができる。
【0005】
自動ゴミ除去処理は、PCアプリケーションによる自動処理であるため、作業の手間を軽減することができる反面、ゴミ領域を検出するための画像が必要となるなど、画像解析処理が複雑であり、また、誤判定による画質劣化などのリスクがある。領域複製処理は、PCアプリケーションの使用者が手動で領域指定する必要があるため、作業の手間はかかるが、出力結果はアプリケーション使用者の意図に合致したものとなる。
【0006】
領域複製処理は、Adobe社のPhotoShop(商標)に代表される画像加工PCアプリケーションが一般的に備える機能である。領域複製処理については例えば「コピースタンプ」機能として、非特許文献1に記載されている。
【0007】
【非特許文献1】「コピースタンプ」、”デジタル用語辞典”、[online]、[2004年12月1日検索]、インターネット<URL:http://www.nifty.com/webapp/digitalword/word/080/08091.htm>
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、一般的な画像加工PCアプリケーションは、元画像を加工した後のデータを保存するものであるため、元画像を残し別の新たな画像ファイルとして保存するか、元データを捨てて上書き保存することになってしまう。したがって、加工後の画像を保存した後で、編集をやり直したくなったとしても、元画像を使って一から編集しなおすか、多少の画質が劣化することには目をつぶって加工後の画像をさらに加工するかのいずれかしか選択肢が無かった。また、商品撮影時など、ほぼ同じようなカットが複数存在し、これらに同じ加工を適用したい場合、適用したいカット毎に加工処理内容を指定しなくてはならず煩わしいという問題があった。
【課題を解決するための手段】
【0009】
上記問題を解決するために、本発明の画像編集装置は以下の構成を含む。
すなわち、本発明の画像処理装置は、元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集装置であって、元画像データに対して加工処理を適用し、出力する画像処理手段と、画像処理手段が出力する画像データを、加工処理を適用した結果としてユーザに表示する表示手段と、元画像データに適用した加工処理の内容を表す工程情報を、加工処理を適用する毎に記憶する工程情報記憶手段と、元画像データと元画像データに関する工程情報とを含むデータを、加工処理後の画像データとして保存する保存手段とを有することを特徴とする。
【0010】
また、上記問題を解決するために、本発明の画像編集方法は、元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集方法であって、元画像データに対して加工処理を適用し、出力する画像処理ステップと、画像処理ステップが出力する画像データを、加工処理を適用した結果としてユーザに表示する表示ステップと、元画像データに適用した加工処理の内容を表す工程情報を、加工処理を適用する毎に記憶する工程情報記憶ステップと、元画像データと元画像データに関する工程情報とを含むデータを、加工処理後の画像データとして保存する保存ステップとを有することを特徴とする。
【発明の効果】
【0011】
このような構成により、本発明の画像編集装置によれば、加工後に保存した画像データからも元画像を復元可能であり、また、複数の画像に共通した加工を適用したい場合でも効率よく加工処理を実行することが可能になる。
【発明を実施するための最良の形態】
【0012】
〔第1の実施形態〕
以下、図面を用いて本発明をその好適な実施形態に基づいて詳細に説明する。
図1は、本発明の第1の実施形態に係る画像編集装置として機能可能な汎用コンピュータシステムの概略構成例を示した図である。CPU101は、システム全体の動作をコントロールし、一次記憶装置102に格納されたプログラムの実行などを行う。一次記憶装置102は主に半導体メモリであり、二次記憶装置103に記憶されたプログラムなどを読み込んで格納する。二次記憶装置103は、例えばハードディスクなどがこれに該当する。
【0013】
一般にコンピュータシステムにおいて一次記憶装置の容量は二次記憶装置の容量より小さく、一次記憶装置に格納しきれないプログラムやデータなどは二次記憶装置に格納される。また、長時間記憶しなくてはならないデータなども二次記憶装置に格納される。本実施形態では、CPU101が実行することでシステムを本実施形態の画像編集装置として機能させるプログラムを二次記憶装置103に格納し、プログラム実行時に一次記憶装置102に読み込んでCPU101が実行するものとする。入力デバイス104とは例えば、システムに対してユーザが指示を与えるために用いるマウスやキーボードといった入力装置の他、画像データの入力に必要なメモリカードリーダー、スキャナ、フィルムスキャナなどがこれに該当する。出力デバイス105とは例えば、モニタやプリンタなどが考えられる。システムの構成には他にも様々な形態が考えられるが、本発明の主眼ではないので説明を省略する。
【0014】
本実施形態による画像編集装置には、複数のアプリケーションプログラムを並列実行可能なオペレーティングシステム(OS)が搭載され、操作者はOSが提供するGUI(Graphical User Interface)を介して装置上で動作するアプリケーションプログラムの操作を行うことができる。例えば本実施形態では、オペレーティングシステムとしてマイクロソフト社のWindows(登録商標)を用いるものとする。したがって、以下の説明においてはWindows(登録商標)の仕様に基づいた記述になっているが、これは本発明の実施環境を限定するものではなく、他のOS環境に本発明を適用可能であることは言うまでもない。
また、本実施形態に係る画像編集装置で実行可能な画像加工処理に特に制限はないが、以下では、従来技術で述べた領域複製処理を例として説明する。
【0015】
図2は、本実施形態の画像編集装置が領域複製処理時に提示するGUIの例を示す図である。加工対象画像は画像表示領域201に表示される。表示設定や加工パラメータを変更するためのパレット202には、コピー元位置指定モードボタン203、表示モード遷移ボタン204、全画面表示切り替えボタン205、コピー元座標を絶対座標として扱うか相対座標として扱うかを示すコピー元座標指定チェックボタン208、ブレンド領域の半径を指定する半径スライダ209、さらに、複数画像を加工対象とした場合の「次の画像」「前の画像」を選択する前選択ボタン210および次選択ボタン211、加工情報スタック(元画像データに対して適用された加工処理の内容を、加工処理の適用毎に記憶した工程情報の集合体。操作履歴。)を加工対象画像に添付する保存ボタン206、加工情報スタック適用後の画像をモニタやプリンタに出力するための変換ボタン207を備える。
【0016】
図3は、領域複数処理において画像編集装置が取り扱うデータを示す図である。加工の対象となる画像は全て、ファイルリストに登録する。ファイルリストを構成するファイルエントリは、各画像のファイル名、画像回転情報および加工情報スタックを持つ。また、編集対象画像を示す編集対象画像ポインタがあり、このポインタで参照されているファイルエントリに対応するファイルが編集対象画像となる。
【0017】
また、編集対象画像データとして、未加工状態の未加工画像データ、および後述する加工情報スタックに含まれる加工を適用した後のプレビュー画像データを持つ。未加工状態の画像データを保持するのは、後述するUndo/Redo処理のためである。図3中では、編集対象画像の加工情報スタックとファイルエントリの加工情報スタックとを別のデータとして表現しているが、編集対象画像データから直接ファイルエントリの加工情報スタックを参照しても良い。本実施形態では、直接ファイルエントリの加工情報スタックを参照する形をとる。
【0018】
また、1回のドラッグ操作によって複数の領域複製処理を1つの加工情報エントリに記録できるよう、ドラッグ操作に伴いOSから通知される座標を、適用座標列と呼ぶ配列に格納する。格納された座標の数は、適用座標数で保持する。したがって、領域複製処理を開始した時点で適用座標数を0に初期化する必要がある。
【0019】
加工情報スタックを構成する各加工情報エントリ内には、加工パラメータと加工画像キャッシュがある。
加工パラメータとは、どの座標にどのような加工処理を適用したかを示す情報である。本実施形態では加工処理として領域複製処理のみを行うため、加工処理を識別するためのIDは保持しないが、加工パラメータの構成要素として加工処理を識別するIDを付与しても良いことは言うまでもない。本実施形態における加工パラメータは、領域複製処理範囲を示す半径r、適用座標列、および適用座標数とする。
【0020】
加工画像キャッシュとは、加工情報エントリに記録された画像加工処理を適用する前と適用した後の画像の差分である。このようなキャッシュを保持することで、実際に加工処理を実行するよりも高速に加工処理を実行できる。このキャッシュは、主にUndo/Redo処理で利用する。
【0021】
本実施形態による画像編集プログラムでは、加工情報スタック以外の画像加工情報として画像回転情報を持つ。画像の回転方向については、画像データそのものを回転する場合もあるが、Exif(Exchangeable image file format for Digital Still Cameras)のOrientationタグに代表される、画像の回転方向を示す情報を付与することで、適切な画像の回転方向を保存する場合もある。後者は画像データ自体を変更しないため、回転処理のためのデコード処理による画質の劣化が無く、CCD−RAWデータに代表される特殊な画像データ形式にも対応可能である。
【0022】
そこで本実施形態では、加工情報スタックに合わせて画像の回転方向を示す画像回転情報を画像データに付与し、画像の回転結果を保持することとする。本実施形態においては、例えばキーボードのCtrlキーとLキーを同時に押下することで左90度回転、CtrlキーとRキーを同時に押下することで右90度回転の指示として動作する。画像回転情報や加工情報スタックの保存方法やデータ形式については後述する。
【0023】
図4は、本実施形態にかかる画像編集装置が出力デバイス105としての表示装置に表示するGUIの状態遷移図である。
GUIは画像をウィンドウの大きさに合わせた倍率で表示(fit表示)するfitモード401と、画素等倍表示にする等倍モード402の2モードに分かれており、遷移コマンドによって互いの状態へ遷移する。本実施形態では、fitモード時は画像加工を禁止し、等倍モードでのみ画像加工ができるように制御している。これは、画像加工を実行する範囲が広くなると、加工前画像と加工後画像の差分である加工画像キャッシュのデータサイズが大きくなり、処理に必要なメモリ領域が非常に大きなものになってしまうからである。画像加工操作を等倍モードに限定することで、画像加工範囲を限定し、使用メモリ量の増加を抑制することができる。
【0024】
fitモード時は、等倍モードへの遷移のみ可能である。本実施形態において、画像編集装置は、表示モード遷移ボタン204が押下されるか、画像表示領域201にfit表示されている画像のどこかがダブルクリックされると、等倍モードへ移行する。表示モード遷移ボタン204が押下された場合、編集対象画像の中央部を画素等倍表示し、等倍モードに遷移する。また、fit表示画像がダブルクリックされた場合、ダブルクリックされた画像位置が中央に表示されるように画素等倍表示する。等倍表示時の画像外領域は、黒で塗りつぶす。
【0025】
等倍モード時は、画像加工ができる。等倍モード時の状態遷移図を図5に示す。fitモードから等倍モードに遷移した直後は、移動モード502になる。移動モード502の状態で画像がダブルクリックされるか、表示モード遷移ボタン204が押下されると、fitモードへ遷移する。
【0026】
移動モード502では、画像表示位置の変更が可能である。一般的なウィンドウ表示と同様、垂直、水平スクロールバーの操作によりユーザは画像表示位置の変更ができる。
移動モード502、あるいはスタンプモード504でAltキーが押下されている間、あるいはコピー元位置指定モードボタン203が押下されると、コピー元位置指定モード503に遷移する。Altボタンが開放されるか、コピー元位置指定モードボタン204が再度押下されると、移動モード502に遷移する。表示モード遷移ボタン204が押下されると、fitモード501へ戻る。コピー位置指定モード503において画像上がクリックされた場合、そのクリック位置をコピー元座標としてスタンプモード504に遷移する。
【0027】
スタンプモード504に入った後、最初にマウスの左ボタンがクリック(左クリック)された座標に対し、領域複製処理を行う。この座標を基準座標と呼ぶ。基準座標が更新された場合、コピー相対座標を未設定状態にする。コピー相対座標とは、領域複製処理のコピー先の領域からコピー元の領域への相対座標である。
【0028】
スタンプモード504において右クリックされた場合、移動モード502に遷移する。移動モードで表示モード遷移ボタン204が押下されると、fitモード501へ戻る。
【0029】
次に、図6に示すフローチャートを用いて領域複製処理の流れについて説明する。ここで図6中の複製マスクとは、半径スライダ209の状態に応じて生成した複製マスクである。複製マスクの生成処理は、半径スライダ209の状態が変化する度に実行する。複製マスク生成処理については後述する。
【0030】
(ステップS601) コピー相対座標が設定されているかどうかをチェックする。設定されていればステップS603へ、設定されていなければステップS602へ進む。
(ステップS602) コピー元位置から基準座標への相対座標を求め、これをコピー相対座標とする。
(ステップS603) コピー元位置の相対座標を算出する。コピー元位置を絶対座標として扱う場合、基準座標とコピー先座標の相対座標を用いる。コピー元位置を相対座標として扱う場合、コピー相対座標を用いる。
【0031】
(ステップS604) 適用座標数を0に初期化し、プレビューキャッシュ画像を作成する。プレビューキャッシュ画像とは、この時点でのプレビュー画像のコピーである。
(ステップS605) マウスの左ボタンの状態をチェックする。左ボタンが押下されている場合は、ステップS606へ進む。そうでない場合はステップS608へ進む。
(ステップS606) マウスカーソルが指し示す座標をコピー先座標とし、複製マスクを用いてコピー相対座標からのブレンド処理を行う。複製マスク、およびブレンド処理の詳細については後述する。
(ステップS607) 適用座標数を1増やし、適用座標列にコピー先座標を追加する。ステップS605へ戻る。
(ステップS608) 加工情報スタック終端位置情報より先にある加工情報エントリを破棄する。
【0032】
(ステップS609) 新たな加工情報エントリを作成し、これを参照するように加工情報スタック終端位置情報を更新する。
(ステップS610) ステップS604で作成したプレビューキャッシュ画像とプレビュー画像との差分画像を作成する。この差分画像を、ステップS609で作成した加工エントリの加工画像キャッシュとする。プレビューキャッシュには、キャッシュ作成時の回転方向を示すキャッシュ回転情報を付与しておく。
(ステップS611) ステップS609で作成した加工情報エントリの加工パラメータとして、半径r、コピー相対座標、適用座標数、適用座標列を登録する。ここで、コピー相対座標、適用座標列は、画像回転情報を用いて、画像回転処理適用前の座標に変換して登録する。このような処理により、画像の回転方向が変更されたとしても常に適切な位置に加工処理を適用することが可能になる。
【0033】
次に、ブレンド処理の詳細について説明する。ブレンド処理とは、コピー先座標を中心とした半径rの領域に、コピー元座標を中心とした半径rの領域を合成処理することである。実際にはコピー先座標から離れるほどコピー元座標の比率を落として合成処理しないと、領域複製処理を行った部分と行っていない部分の境界部分が目立ってしまうので、コピー先座標から離れるほど合成比率を落とすような処理になる。そこで、合成処理を、半径rの2倍の範囲で行う。この合成の比率を示すマップのことを、複製マスクと呼ぶ。
【0034】
まず、複製マスクの概要を図7に示す。複製マスクの各要素の値域は、[0.0,1.0]である。この値が大きいほどコピー元領域の画素値が優先される。複製マスクの要素は、複製マスクの中心(Cx,Cy)からの距離に応じて算出される値で算出する。この計算方法については後述する。コピー元座標F、コピー先座標Tをそれぞれ、x座標を−2*r、y座標を−2*rとした座標、複製マスクの左上を原点とした場合、座標(i,j)にある画素のブレンド処理を、次式に従って画素値を求める。
T’i,j=Bi,j*Fi,j+(1.0−Bi,j)*Ti,j
ここで、Fはコピー元座標の画素、Tはコピー先領域の画素、Bは複製マスクの要素、T’はブレンド処理後のコピー先領域の画素とする。本実施形態では各画素のRGBそれぞれの値をブレンド率に応じて合成してブレンド後の画素値を算出する。
【0035】
図6に示した処理においてマウスがドラッグ操作された場合の、ドラッグ中のマウスポインタの軌跡に対する処理について述べる。Windows(登録商標)では、ドラッグ中にマウスポインタが通過した全ての座標がOSからアプリケーションに通知されるわけではなく、一定間隔で通知される。しかし、この間隔が比較的長い。そこで、ドラッグ状態を示す通知を受けた場合、その座標A(xa,ya)と直前に通知された座標B(xb,yb)とを結ぶ線分上に一定距離L毎に領域複製処理を行う。このような処理を行うことで滑らかな領域複製結果を得ることができる。
【0036】
ここで、ドラッグ中の領域複製処理を適用する点の間隔Lを、半径スライダ209で指定された半径rを用いて次式で求める。
L=floor(r/B+0.5)
ただし、L=0の場合、L=1として処理する。ここで、floor(x)は、実数xの小数点以下を切り捨てした整数値を表す。また、Bは経験的に求められる値で、本実施形態ではB=4.7とする。
【0037】
ここで、図7に示した複製マスクの要素の計算方法について述べる。マスクの要素Bi,jは、次式で求める。
【0038】
【数1】
【0039】
Cx、Cyは図7中に示したマスクの中央座標で、本実施形態では(Cx,Cy)=(2*r,2*r)とする。したがって、複製マスクサイズは、幅(4*r+1)要素、高さ(4*r+1)要素となる。i、jは左上を(i,j)=(0,0)とする座標値であり、i,jの値域は[0,4*r]となる。rは半径スライダ209で指定された半径である。
【0040】
次に、図8に示すフローチャートを用いて、編集対象画像ファイルが指定された場合や前選択ボタン210や次選択ボタン211によって編集対象画像が変更された場合の編集対象画像切り替え処理について説明する。
【0041】
(ステップS801) 編集対象画像の加工情報スタックについて、加工情報スタック終端情報より先の加工情報エントリを破棄する。
(ステップS802) 編集対象画像の加工情報スタックについて、加工情報スタックの加工情報キャッシュを全て破棄する。
(ステップS803) 新たに選択されたファイルのファイルエントリを参照するように、編集対象情報ポインタを更新する。
【0042】
(ステップS804) 編集対象画像ポインタが参照する加工情報スタックを参照するように、編集対象画像の加工情報スタックの参照先を更新する。
(ステップS805) ファイルをデコードし、編集対象画像データ中の未加工画像を取得する。
(ステップS806) ステップS805で得た未加工画像に対し、加工情報スタックに保持された加工処理を適用し、プレビュー画像を生成する。加工処理の詳細については図9を用いて後述する。
(ステップS807) GUIの状態をfitモード401に遷移して、プレビュー画像をfit表示する。
【0043】
次に、本実施形態におけるUndo/Redo処理について述べる。
Undoとは、直前に適用した加工処理を取り消す処理である。本実施形態では、加工情報スタック終端位置情報を、一つ前の加工情報エントリを参照するよう修正することにより、Undo処理が実現できる。
【0044】
また、Redoとは、Undoの取り消し処理、すなわちやり直し処理である。本実施形態では、加工情報スタック終端位置情報を、参照中の加工スタックエントリの次のエントリを参照するように更新することにより、Redo処理が実現できる。
【0045】
このように、加工情報エントリと加工情報スタック終端位置情報を用いることで、加工情報スタック終端位置情報の参照先を変更するだけでUndo/Redo機能が実現可能であり、加工処理を適用した座標が間違っている場合や加工結果が思わしくない場合でも、何度でもやりなおしすることができるようになる。
【0046】
Undo/Redo処理や新たな編集対象画像ファイルが選択された場合、プレビュー画像の更新処理が必要になる。プレビュー画像の更新処理は、未加工画像に対して加工情報スタックに従って加工処理を適用して行う。以下、プレビュー画像の更新処理の詳細について、図9に示すフローチャートを用いて説明する。なお、加工情報スタックが空の場合には、この処理を適用しない。
【0047】
(ステップS901) 現在のプレビュー画像を破棄した後、未加工画像を複製し、この複製をプレビュー画像とする。このプレビュー画像は、画像回転情報が示す方向になるように回転処理する。
(ステップS902) 加工情報スタックが参照する加工情報エントリを示すポインタpを作成する。
(ステップS903) ポインタpが示す加工情報エントリに加工画像キャッシュが存在するかどうかをチェックする。存在する場合はステップS904へ、存在しない場合はS905へ進む。
【0048】
(ステップS904) 画像回転情報とキャッシュ回転情報を比較し、画像回転情報で指定された画像の方向に合うように、差分画像を回転し、差分をプレビュー画像に反映する。ステップS906へ進む
(ステップS905) ポインタpが示す加工情報エントリの加工パラメータを用い、プレビュー画像に加工処理を適用する。ただし、加工処理を適用する前に、コピー相対座標、適用座標列に格納された座標を、画像回転情報が示す方向に回転し、回転後の座標に対して加工処理を適用する。加工処理適用後、ステップS906へ進む。
(ステップS906) 次の加工情報エントリが存在する場合、ステップS907へ進む。存在しない場合は、処理を終了する。
(ステップS907) ポインタpが次の加工情報エントリを参照するようにポインタを更新し、ステップS903へ戻る。
【0049】
ここで、図2における保存ボタン206と変換ボタン207について説明する。保存ボタン206が押下された場合、加工情報スタックおよび画像回転情報を編集対象画像ファイルに付与する。この機能を用意することで、元画像データ(未加工画像データ)を維持したまま加工結果を保存することができる。変換ボタン207が押下された場合、編集対象画像データファイル中の元画像データに対し、加工情報スタックに応じた画像処理を適用し、画像回転情報に従って画像を回転後、新たなファイルとして保存する。画像の回転前に加工情報スタックを適用することで、加工情報スタック内の座標変換を行わなくても良いという利点がある。しかし、本実施形態では処理の共通化のため、画像回転情報に合わせて画像を回転した後、図9に示す処理によって加工情報スタックに沿った加工処理を適用する。
【0050】
保存ボタン206によって付与されるデータ形式の一例を図10に示す。図10に示すデータを加工情報と呼ぶ。
画像回転方向は、回転しない状態を「0」、右90度回転時は「1」、180度回転時は「2」、左90度回転時は「3」を2バイトで格納する。加工情報スタックエントリ数は4バイトで、加工情報スタックエントリの数を格納する。加工情報スタックエントリ内には、処理識別ID、適用半径、画像回転前の座標値で表現されたコピー相対座標および適用座標と、適用座標の数を保持する。座標はx座標2バイト、y座標2バイトの計4バイトで、その他の数値は2バイトとする。処理識別IDは、将来加工処理の種類を増やした時に対応するために設けられ、本実施形態では常に0x0001を格納する。
【0051】
加工情報は、JPEGデータのEOI(End Of Image)の後やTiffデータの末尾、CCD−RAWデータファイルの末尾に付与することができる。ただし、CCD−RAWデータファイルの末尾に特別な意味、例えばCCD−RAWファイルの識別コードなどが含まれている場合があるため、加工情報の末尾の16バイトには加工情報をファイルに添付する前のファイルの末尾16バイトをコピーして記録する互換エリアを設けている。また、ファイルに添付された加工情報があるかどうかを判定するため、互換エリアの直前に、識別情報”ADT” 0、および、加工データの先頭を検出するためのデータ長をそれぞれ4バイトで格納する。
【0052】
次に、図11に示すフローチャートを用いて、本実施形態における加工情報の読み込み処理について説明する。
(ステップS1101) 識別情報の有無を確認するため、最初にファイル末尾から24バイト目の位置から4バイト読み込む。
(ステップS1102) ステップS1101で読み込んだデータが識別情報”ADT” 0であるかどうかをチェックし、加工情報が画像データに付与されているかどうかを判定する。識別情報が検出された場合には加工情報が付与されていると判定し、ステップS1103へ進み、そうでない場合は読み込み処理を終了する。
(ステップS1103) ファイル末尾から20バイト目の位置から4バイト読み込み、加工情報のデータ長を取得する。
(ステップS1104) 互換エリアの先頭から加工情報のデータ長分戻った位置からファイル末尾までを読み込む。読み込んだデータが加工情報である。なお、予めデータ長として互換エリアの16バイト分が追加してある場合にはファイルの末尾からデータ長分戻った位置から読み込めばよい。
【0053】
以上説明したように、本実施形態によれば、未加工の画像データとそれに適用された加工処理とを個別に保存することにより、編集加工対象となる元画像データに変更を加えることなく加工を適用し、加工結果を保存することが可能になる。
【0054】
また、加工処理を工程毎に保存するため、適用した加工を段階的に取り消すことが可能であるほか、取り消した加工処理を再度適用することも可能である。
【0055】
〔第2の実施形態〕
本実施形態では、第1の実施形態で述べたシステム上における、異なる画像間での加工情報スタックのコピー&ペーストについて述べる。ほぼ似た絵柄の画像が複数ある場合、一枚の画像に対して加工処理を行い、同様の処理を別の画像に適用することで、加工作業に費やす時間を削減することができる。本実施形態による画像編集装置では、第1の実施形態と同様、編集(加工)手順を加工情報スタックという形で保持しているため、この加工情報スタックだけを別の画像データファイルへ適用することで、同じ加工処理を実現可能である。
【0056】
まず、加工情報スタックのコピー処理について述べる。加工情報スタックのコピー処理とは、編集対象画像の加工情報スタックを例えば一次記憶装置の領域として確保されるコピーバッファに格納する処理である。ただし、コピーした加工情報スタックをペーストする場合、ペーストするかどうかの判断にコピー元画像の解像度が必要になるため、これを別途保持する。コピーバッファに格納する情報は、加工情報スタック、画像回転情報、元画像の回転処理前の画像解像度である。
【0057】
次に、加工情報スタックのペースト処理について述べる。加工情報スタックのペースト処理とは、コピー処理によってコピーバッファ内に保持された加工情報スタックを、編集対象画像データファイルに添付、或いはその加工情報スタックに反映する処理である。
【0058】
ペースト処理には、編集対象画像の加工情報スタックに、ペーストする加工情報スタックを付加する方法と、編集対象画像の加工情報スタックを破棄し、ペーストする加工情報スタックに置き換える方法がある。本実施形態では、後者を用いるものとする。
【0059】
図12は、本実施形態におけるペースト処理を説明するフローチャートである。
(ステップS1201) ペースト処理実行判定を行う。本実施形態では、コピーバッファに格納された元画像の回転前の画像解像度と、ペースト対象画像の回転前の画像解像度を比較し、画像の幅および高さが一致した場合のみ、ペースト処理を実行可能であると判定する。ペースト処理が実行できない場合は処理を終了し、そうでない場合はステップS1202へ進む。
(ステップS1202) ペースト対象画像データファイル内の加工情報スタックを破棄する。
(ステップS1203) コピーバッファ内の加工情報スタックを複製し、これをペースト対象画像の加工情報スタックとして置き換えることによって更新する。
(ステップS1204) 更新された加工情報スタックを用い、ペースト対象画像に対して図9に示した加工処理を実行し、プレビュー画像、および加工画像キャッシュの再構成を行い、処理を終了する。
【0060】
このように、本実施形態によれば、加工情報スタックを他の画像データファイルに適用することで、共通の画像加工処理を実現することが可能である。従って、類似の複数画像に対して同じ処理を適用する場合、ある1つの画像に対して加工処理を行えば、残りの画像に対しては加工情報をコピーペーストするだけでよく、使い勝手がよい。
【0061】
〔第3の実施形態〕
第2の実施形態では、加工情報スタックのコピー元画像の解像度と、ペーストしようとしている画像の解像度が完全に一致する場合だけ、ペースト処理が実行可能であると判定した。しかし、近年のデジタルカメラの中には、解像度が異なるだけの全く同じ絵柄の画像データを同時に生成するものもある。第2の実施形態のような判定では、このような複数の画像間での加工情報スタックの共通利用に対応できない。
【0062】
そのため、本実施形態では、加工情報スタックのペースト先の画像の解像度に応じて加工情報中の座標を変換することで、このような画像間での加工情報スタックの共通利用を実現するものである。ただし、アスペクト比(縦横比)が異なる画像については画像が切り抜かれている場合も考えられるので、本実施形態ではペースト処理対象としない。
【0063】
本実施形態におけるペースト処理について、図13に示すフローチャートに基づき説明する。
(ステップS1301) ペースト処理実行判定を行う。本実施形態では、コピーバッファに格納された、元画像の回転前の画像解像度と、ペースト対象画像の回転前の画像解像度を比較し、画像のアスペクト比が実質的に一致した場合のみ、ペースト処理を実行する。ここで完全一致を条件としないのは、同じ画像を縮小した場合でもアスペクト比が完全に一致しない場合があるためである。アスペクト比の差が予め定められた数値内である場合に一致するとみなす。ペースト処理を実行できないと判断される場合は処理を終了し、そうでない場合はステップS1302へ進む。
(ステップS1302) ペースト対象画像データファイルの加工情報スタックを破棄する。
【0064】
(ステップS1303) コピーバッファ内に格納された、元画像の加工情報スタックを複製し、これをペースト対象画像の加工情報スタックとして置き換える。
(ステップS1304) コピー元画像の画像解像度と、ペースト対象画像の画像解像度を用い、ペースト対象画像の加工情報スタックに含まれる座標を変換する。加工情報スタックに保持されている座標(X,Y)について、コピー元座標の画像解像度を幅Wc、高さHc、ペースト対象画像の画像解像度を幅Wp、高さHpとすると、変換後の座標(X’,Y’)は、
X’=X*Wp/Wc
Y’=Y*Hp/Hc
となる。
【0065】
また、画像処理の適用半径も、次式で変換する。rが変換前、r’が変換後の値である。
【0066】
【数2】
【0067】
(ステップS1305) 変更後の加工情報スタックを用い、ペースト対象画像に対して図9に示した加工処理を実行し、プレビュー画像、および加工画像キャッシュの再構成を行い、処理を終了する。
【0068】
このように、本実施形態によれば、コピーもと画像とペースト先画像の解像度に基づいて加工情報スタックに含まれる座標を変換することにより、解像度の異なる同一画像間での加工情報スタックの共通利用が可能になる。
【0069】
〔第4の実施形態〕
本実施形態は、第1の実施形態で述べた画像編集装置での印刷処理に関する。
加工後の画像を印刷する場合、一般的には、未加工画像に対して加工情報スタックにある編集内容を適用し、その後印刷解像度に変換してプリンタへ出力することが考えられる。しかし、上述したように、画像加工処理、特に領域複製処理においては、適用領域が小さいほど処理が高速に実行できる。
【0070】
そこで、出力解像度が画像の解像度より小さい場合、まず画像を出力解像度に合わせて縮小し、加工情報スタックの情報を出力解像度に合わせて変換し、縮小画像に対して変換後の加工情報スタックの処理内容を適用することが考えられる。この変換処理は、第3の実施形態で示した処理において、縮小画像をペースト先画像とした処理と同様であるため、説明を省略する。
このような処理を行うことで、複雑な加工処理を適用した場合でも、より高速に印刷出力を得ることができる。
【0071】
〔第5の実施形態〕
第1の実施形態では、編集対象画像データファイルが指定された場合や前選択ボタン210や次選択ボタン211によって編集対象画像が変更された場合の処理として、表示モードをfitモードに戻すように構成していた。本実施形態では、第1の実施形態とは異なり、表示モードを維持したまま、適切な領域を表示することを特徴とする。
【0072】
第1の実施形態では、撮像センサ上に付着したゴミが撮像データに写りこんでしまった場合のゴミ除去処理を領域複製処理によって実現する際の、GUIの表示モードについて説明した。
【0073】
この撮像センサ上のゴミは、シャッター動作時の衝撃などによって若干移動する場合があるものの、連続して撮影した画像データのほぼ同じ位置が写り込んでいる可能性が高いことが知られている。そこで、本実施形態では、画像回転前の座標を維持しながら表示画像を切り替えることにより、他の画像に切り替えた後も、一旦強制的にfitモードへ戻さずに、直前に表示していたゴミと同じゴミが表示されるような位置を表示する。このような画像の切り替え方式を提供することで、複数の画像間で同じ位置にあるゴミに注目しながら編集作業を行うことができる。
【0074】
本実施形態における編集対象画像の変更時処理を図14に示すフローチャートを用いて説明する。ただし、fitモード401の状態での編集対象画像の変更処理は、第1の実施形態と同様の処理を行う。ここで、直前まで選択されていた編集対象画像を第1の画像、新たに選択又は指定された画像を第2の画像とする。第1の画像、第2の画像は、画像回転情報に従って回転した後の状態とする。それぞれの回転前の画像を、第1の未回転画像、第2の未回転画像とする。
【0075】
(ステップS1401) 第1の画像のうち、等倍モードで表示されている部分領域の中心座標A(XA,YA)を求める。ここで中心座標Aは、表示領域における座標ではなく、第1の画像の全体における座標である。
(ステップS1402) 第1の画像の画像回転情報を用いて、中心座標Aの、第1の未回転画像上で対応する座標B(XB,YB)を算出する。この座標は、中心座標A(XA,YA)を、画像回転情報で示される回転方向を打ち消す方向に回転することで算出できる。
(ステップS1403) 座標B(XB,YB)を、次式で正規化する。W1とH1はそれぞれ、第1の未回転画像の画像幅、画像高さである。正規化後の座標を(X’B,Y’B)とする。
X’B=XB/W1
Y’B=YB/H1
【0076】
(ステップS1404) 第2の未回転画像の画像幅W2、画像高さH2を用いて、第2の未回転画像においてX’B、Y’Bに対応する中心座標C(XC,YC)を算出する。
XC=W2*X’B
YC=H2*Y’B
(ステップS1405) 中心座標Cを、第2の画像の画像回転情報に従って回転した座標D(XD,YD)を求める。
(ステップS1406) この座標D(XD、YD)が画像表示領域201の中心となるように第2の画像の部分領域を等倍モードで表示する。
【0077】
このような処理を行うことで、未回転状態の画像上での相対位置を保ったまま、編集対象画像を切り替えることができる。したがって、仮に同じカメラで撮った複数の画像を切り替えた場合、画像の回転方向に関係なく、撮像センサ上でほぼ同じ位置が常に表示領域の中心に表示され、効率良くゴミ除去処理を行うことができる可能性が高い。また、fitモードに戻さないため、画像を切り替える毎に等倍モードへ移行させるための操作を行う必要がなく、その点でも効率が向上すると考えられる。
【0078】
〔他の実施形態〕
前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【0079】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【0080】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0081】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【0082】
有線/無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムデータファイル)を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【0083】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【0084】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0085】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0086】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【0087】
【図1】本発明の実施形態に係る画像編集装置として機能可能なコンピュータシステムの構成例を表す図である。
【図2】本発明の実施形態に係る画像編集装置が領域複製処理時に提示するGUIの例を示す図である。
【図3】本発明の実施形態に係る画像編集装置が領域複数処理において取り扱うデータを示す図である。
【図4】本発明の実施形態に係る画像編集装置が提示するGUIの状態遷移図である。
【図5】本発明の実施形態に係る画像編集装置が提示するGUIの等倍モードにおける状態遷移図である。
【図6】本発明の実施形態に係る画像編集装置の領域複製処理全体を説明するフローチャートである。
【図7】本発明の実施形態における複製マスクの概要を示す図である。
【図8】第1の実施形態に係る画像編集装置における、編集対象画像切り替え処理を説明するフローチャートである。
【図9】本発明の実施形態における加工情報スタックの適用処理を説明するフローチャートである。
【図10】本発明の実施形態における加工情報の構造を示す図である。
【図11】本発明の実施形態における加工情報読み込み処理を説明するフローチャートである。
【図12】第2の実施形態における加工情報スタックのペースト処理を説明するフローチャートである。
【図13】第3の実施形態における加工情報スタックのペースト処理を説明するフローチャートである。
【図14】第5の実施形態における編集対象画像切り替え処理を説明するフローチャートである。
【特許請求の範囲】
【請求項1】
元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集装置であって、
前記元画像データに対して前記加工処理を適用し、出力する画像処理手段と、
前記画像処理手段が出力する画像データを、前記加工処理を適用した結果としてユーザに表示する表示手段と、
前記元画像データに適用した前記加工処理の内容を表す工程情報を、前記加工処理を適用する毎に記憶する工程情報記憶手段と、
前記元画像データと前記元画像データに関する前記工程情報とを含むデータを、前記加工処理後の画像データとして保存する保存手段とを有することを特徴とする画像処理装置。
【請求項2】
前記加工処理後の画像データに対して加工処理の取り消し指示があった場合には、その時点において最後に適用した加工処理を、対応する前記工程情報に基づいて取り消し、加工処理のやり直し指示があった場合には、その時点において最後に適用した加工処理の次の加工処理を、対応する前記工程情報に基づいて実行するように前記画像処理手段を制御する制御手段を更に有することを特徴とする請求項1記載の画像編集装置。
【請求項3】
さらに、前記保存手段が、前記元画像データの回転量を示す回転情報を前記加工処理後の画像データに含ませ、
前記画像処理手段が、前記元画像データに対して前記回転情報に基づいた回転処理を適用することを特徴とする請求項1又は請求項2記載の画像編集装置。
【請求項4】
前記加工情報の各々には、対応する加工処理を適用する前の画像と、適用後の画像との差分画像データが含まれることを特徴とする請求項1乃至請求項3のいずれか1項に記載の画像編集装置。
【請求項5】
前記画像処理手段が、前記元画像よりも低い解像度を有する前記加工処理後の画像を生成する場合、前記元画像の解像度を低減した後に前記加工処理を適用することを特徴とする請求項1乃至請求項4のいずれか1項に記載の画像編集装置。
【請求項6】
前記表示手段が、前記画像処理手段が出力する画像データの一部領域を等倍表示するとともに、他の画像データに表示を切り替える場合には、前記他の画像データのうち、前記一部領域と対応する領域を等倍表示することを特徴とする請求項1乃至請求項5のいずれか1項に記載の画像編集装置。
【請求項7】
元画像データと、当該元画像データに対して適用された加工処理の内容を表す加工情報とを含む第1の画像データから、前記加工情報を読み出す読み出し手段と、
前記読み出した加工情報を、前記第1の画像データと同様の加工処理を適用すべき第2の画像データに関する加工情報として前記第2の画像データに添付する添付手段とを有することを特徴とする画像編集装置。
【請求項8】
前記添付手段が、前記第1の画像データと、前記第2の画像データの解像度が一致した場合のみ前記加工情報の添付を実行することを特徴とする請求項6記載の画像編集装置。
【請求項9】
前記第1の画像データと、前記第2の画像データの解像度が異なり、縦横比が一致する場合、前記添付された前記加工情報に含まれる座標情報を前記第2の画像データの解像度に併せて変換する座標変換手段を更に有することを特徴とする請求項6記載の画像編集装置。
【請求項10】
元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集方法であって、
前記元画像データに対して前記加工処理を適用し、出力する画像処理ステップと、
前記画像処理ステップが出力する画像データを、前記加工処理を適用した結果としてユーザに表示する表示ステップと、
前記元画像データに適用した前記加工処理の内容を表す工程情報を、前記加工処理を適用する毎に記憶する工程情報記憶ステップと、
前記元画像データと前記元画像データに関する前記工程情報とを含むデータを、前記加工処理後の画像データとして保存する保存ステップとを有することを特徴とする画像処理方法。
【請求項11】
コンピュータを、請求項1乃至請求項9のいずれか1項に記載の画像編集装置として機能させることを特徴とするプログラム。
【請求項12】
請求項11記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項1】
元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集装置であって、
前記元画像データに対して前記加工処理を適用し、出力する画像処理手段と、
前記画像処理手段が出力する画像データを、前記加工処理を適用した結果としてユーザに表示する表示手段と、
前記元画像データに適用した前記加工処理の内容を表す工程情報を、前記加工処理を適用する毎に記憶する工程情報記憶手段と、
前記元画像データと前記元画像データに関する前記工程情報とを含むデータを、前記加工処理後の画像データとして保存する保存手段とを有することを特徴とする画像処理装置。
【請求項2】
前記加工処理後の画像データに対して加工処理の取り消し指示があった場合には、その時点において最後に適用した加工処理を、対応する前記工程情報に基づいて取り消し、加工処理のやり直し指示があった場合には、その時点において最後に適用した加工処理の次の加工処理を、対応する前記工程情報に基づいて実行するように前記画像処理手段を制御する制御手段を更に有することを特徴とする請求項1記載の画像編集装置。
【請求項3】
さらに、前記保存手段が、前記元画像データの回転量を示す回転情報を前記加工処理後の画像データに含ませ、
前記画像処理手段が、前記元画像データに対して前記回転情報に基づいた回転処理を適用することを特徴とする請求項1又は請求項2記載の画像編集装置。
【請求項4】
前記加工情報の各々には、対応する加工処理を適用する前の画像と、適用後の画像との差分画像データが含まれることを特徴とする請求項1乃至請求項3のいずれか1項に記載の画像編集装置。
【請求項5】
前記画像処理手段が、前記元画像よりも低い解像度を有する前記加工処理後の画像を生成する場合、前記元画像の解像度を低減した後に前記加工処理を適用することを特徴とする請求項1乃至請求項4のいずれか1項に記載の画像編集装置。
【請求項6】
前記表示手段が、前記画像処理手段が出力する画像データの一部領域を等倍表示するとともに、他の画像データに表示を切り替える場合には、前記他の画像データのうち、前記一部領域と対応する領域を等倍表示することを特徴とする請求項1乃至請求項5のいずれか1項に記載の画像編集装置。
【請求項7】
元画像データと、当該元画像データに対して適用された加工処理の内容を表す加工情報とを含む第1の画像データから、前記加工情報を読み出す読み出し手段と、
前記読み出した加工情報を、前記第1の画像データと同様の加工処理を適用すべき第2の画像データに関する加工情報として前記第2の画像データに添付する添付手段とを有することを特徴とする画像編集装置。
【請求項8】
前記添付手段が、前記第1の画像データと、前記第2の画像データの解像度が一致した場合のみ前記加工情報の添付を実行することを特徴とする請求項6記載の画像編集装置。
【請求項9】
前記第1の画像データと、前記第2の画像データの解像度が異なり、縦横比が一致する場合、前記添付された前記加工情報に含まれる座標情報を前記第2の画像データの解像度に併せて変換する座標変換手段を更に有することを特徴とする請求項6記載の画像編集装置。
【請求項10】
元画像データに対し、ユーザから指示された加工処理を適用可能な画像編集方法であって、
前記元画像データに対して前記加工処理を適用し、出力する画像処理ステップと、
前記画像処理ステップが出力する画像データを、前記加工処理を適用した結果としてユーザに表示する表示ステップと、
前記元画像データに適用した前記加工処理の内容を表す工程情報を、前記加工処理を適用する毎に記憶する工程情報記憶ステップと、
前記元画像データと前記元画像データに関する前記工程情報とを含むデータを、前記加工処理後の画像データとして保存する保存ステップとを有することを特徴とする画像処理方法。
【請求項11】
コンピュータを、請求項1乃至請求項9のいずれか1項に記載の画像編集装置として機能させることを特徴とするプログラム。
【請求項12】
請求項11記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2006−209543(P2006−209543A)
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願番号】特願2005−21826(P2005−21826)
【出願日】平成17年1月28日(2005.1.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願日】平成17年1月28日(2005.1.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]