以下、本発明の実施形態を、図面を参照しながら説明する。本発明による画像管理装置は、デジタルスチルカメラやデジタルビデオカメラといった、固体撮像素子を用いて光学像を電気的な画像データに変換して撮影を行う撮像装置により得られたRAW画像データを管理する。そして、RAW画像データに対応付けられた現像処理パラメータに従い、当該RAW画像データを適切に現像処理可能なように、画像処理装置を選択する。
<実施形態>
図1は、本発明の実施形態に適用可能な画像入力装置としてのデジタルスチルカメラ100の一例の構成を示す。図1の例では、デジタルスチルカメラ100は、光学系、撮像部、信号処理部および記憶部を有する。
光学系は、撮影レンズ101と、シャッタおよび絞り102などから形成される。撮像部は、CCDやCMOSイメージセンサなどによる固体撮像素子103を有し、光学系を介して入射された被写体からの光を電気信号に変換し、撮像信号として出力する。撮像部から出力された撮像信号は、信号処理部に入力される。
信号処理部は、A/D変換部104、デジタルプロセッサ105、CPU106、内部メモリ107および圧縮符号化部108を有する。A/D変換部104は、撮像部から出力された撮像信号をデジタル信号に変換する。このデジタル信号は、デジタルプロセッサ105により所定に処理される。圧縮符号化部108は、デジタルプロセッサ105で処理された、記録すべきデジタル信号の圧縮符号化処理を行う。
内部メモリ107は、読み出し専用メモリ(ROM)と読み書き可能なメモリ(RAM)を含み、ROMには制御プログラムが予め記憶され、RAMは、CPU106での処理の際に一時記憶メモリとして利用される。CPU106は、ROMに記憶された制御プログラムに従いこのデジタルスチルカメラ100の各部を制御すると共に、信号処理を実行する。なお、インターフェイス(I/F)110は、パーソナルコンピュータなど外部の情報処理装置と通信を行うためのインターフェイスである。
記憶部は、例えばこのデジタルスチルカメラ100の筐体に対して着脱可能な記憶媒体111からなり、当該記憶媒体111は、インターフェイス(I/F)109によりデジタルスチルカメラ100と接続される。記憶媒体111とCPU106との間でのデータのやりとりは、内部メモリ107を介してなされる。
図2は、上述のデジタルスチルカメラ100における一例の画像データ処理を示すフローチャートである。この図2のフローチャートに例示される処理は、CPU106が内部メモリ107に格納された制御プログラムにより実行される。
撮像部において固体撮像素子103から出力された撮像信号がA/D変換部104でデジタル信号に変換される。撮像信号がデジタル信号に変換された画像データは、デジタルプロセッサ105を介して内部メモリ107に入力され、記憶される(S201)。なお、この段階では、デジタルプロセッサ105は、供給された画像データに対して何ら信号処理を施さない。
次のS202で、内部メモリ107に記憶された画像データの記憶媒体111への記録を、当該画像データに対して所定の画像処理を施して行うか否かを判定する。ここでは、デジタルスチルカメラ100での撮影時に、撮影者が固体撮像素子103からの出力データに処理を加えずに記録するモード(RAW画像出力モードと呼ぶ)を選択しているか否かで、この判定を行う。すなわち、RAW画像出力モードが選択されていれば、所定の画像処理を行わないで記録すると判定される。一方、RAW画像出力モードが選択されていなければ、所定の画像処理を施して記録すると判定される。
若し、S202で、所定の画像処理を施さないで記録すると判定されたら、処理はS204に移行される。一方、所定の画像処理を施して記録すると判定されたら、処理はS203に移行される。
S203では、デジタルプロセッサ105により、内部メモリ107に記憶された画像データに対して所定の画像処理が施される。例えば、デジタルプロセッサ105は、フィルタ処理や、ホワイトバランスやオートフォーカスなどの情報に基づいた色調整処理を、所定の画像処理として実行する。画像処理がなされた画像データは、内部メモリ107に記憶される。画像処理が実行されると、処理はS204に移行される。
S204では、画像データを圧縮符号化して記録するか否かを判定する。例えば、撮影時に撮影者が圧縮記録モードを選択しているか否かでこの判定を行う。すなわち、若し圧縮記録モードが選択されていれば、画像データを圧縮符号化して記録すると判定され、圧縮記録モードが選択されていなければ、画像データを圧縮符号化しないで記録すると判定される。
若し、S204で、画像データを圧縮符号化しないで記録すると判定されたら、処理はS206に移行される。一方、画像データを圧縮符号化して記録すると判定されたら、処理はS205に移行される。
S205では、内部メモリ107に記憶された画像データに対する圧縮符号化処理が行われる。例えば、内部メモリ107に記憶された画像データがデジタルプロセッサ105を介して圧縮符号化部108に供給され、所定の方式で圧縮符号化される。一例として、上述のS203で画像処理が施された画像データは、JPEG方式といった非可逆的な圧縮符号化方式で圧縮符号化される。また、S203による画像処理が施されていない画像データに対しては、可逆的な圧縮符号化方式を行うことができる。圧縮符号化された画像データは、内部メモリ107に記憶される。
次のS206では、内部メモリ107に記憶される画像データに対して、属性情報が付加される。属性情報は、例えば、撮影日時、撮影機種、フラッシュのオン/オフ、記録形式などの、撮影条件に関する情報である。S206で属性情報が付加された画像データは、次のS207で、記憶媒体111にファイルとして記録される。
なお、S201で入力される画像データを縮小表示するための縮小画像(サムネイル)データを生成し、S207で、画像データおよび属性情報と共にファイルに格納することができる。例えば、S201で内部メモリ107に対して画像データが記憶されると、CPU106は、デジタルプロセッサ105により当該画像データを縮小した縮小画像データを生成する。縮小画像データは、さらに、圧縮符号化部108で圧縮符号化してもよい。この縮小画像データを、S207で、対応する画像データと共にファイルに格納する。
<画像ファイルの構成例>
図3は、S207で記憶媒体111に記録される画像ファイル300の一例の構成を概略的に示す。図3の例では、画像ファイル300において、先頭側から、撮影情報領域301、縮小画像データ領域302および本体画像データ領域303の順で各データ領域が配置される。
本体画像データ領域303は、上述のS201〜S205の処理で生成された画像データが格納される。例えば、デジタルスチルカメラ100でRAW画像出力モードが選択されている場合には、RAW画像データが非圧縮あるいは可逆圧縮されて格納される。
縮小画像データ領域302は、上述した縮小画像データが格納される。
撮影情報領域301は、上述のS206で画像データに対して付加される撮影情報が格納される。撮影情報は、例えば、本体画像データ領域303に格納される画像データのデータサイズ、ビット深度、圧縮方法、撮影日時、撮影機種、フラッシュオン/オフといった、当該画像データの撮影時の情報および画像の読み出しや再生、選択に必要な情報からなる。また、撮影情報として、本体画像データ領域303に格納される画像データを生成した撮像装置の機種を示す情報が格納される。
撮影情報として含めることができる情報は、上述の他にも様々に考えられる。例えば、撮影情報として、固体撮像素子103の特性情報、例えば撮像領域の範囲やオプティカルブラックの範囲、オプティカルブラック部の電荷量などを含んでもよい。なお、オプティカルブラックとは、光が入らない部分を示す。また、撮影情報として、シャッタ速度、露光時間、絞り、ISO感度、フラッシュ強度、露光補正値、被写体までの距離、Fナンバ、露出プログラム、被写体を照明している光源の色温度を示す情報といった、撮影条件に関する情報を含んでもよい。さらに、撮影情報として、固体撮像素子103の種類、型名や、レンズの焦点距離など、デジタルスチルカメラ100の仕様に関する情報を含んでいてもよい。
<現像処理>
次に、上述した図2のフローチャートに従いファイルに格納された、非圧縮あるいは可逆圧縮されたRAW画像データに対する画像処理について説明する。
<用語の定義>
なお、以下では、RAW画像による本体画像データに対して出力画像を得るために行う画像処理を現像処理と呼ぶ。また、この現像処理に必要となる情報のセットを、現像処理パラメータと呼ぶ。現像処理パラメータに関わる属性情報を、現像処理パラメータ属性情報と呼ぶ。また、現像処理パラメータと現像処理パラメータの属性情報との両方を含む情報を、現像処理情報と呼ぶ。
ここで、上述の、RAW画像による本体画像データに対して行われる現像処理としては、ホワイトバランス処理、色調整処理、輝度調整処理、エッジ強調処理、回転処理、部分切り出し処理、拡大縮小処理などが挙げられる。
また、現像処理パラメータ属性情報は、現像処理パラメータを反映可能な現像処理装置に関する情報、現像処理パラメータの作成日付および更新日付を含む。現像処理パラメータを反映可能な現像処理装置に関する情報は、例えば、当該現像処理パラメータに対応可能な現像処理装置や現像処理ソフトウェアを特定できる情報を含む。このような情報としては、当該現像処理装置や現像処理ソフトウェアを識別するための識別情報が用いられる。現像処理パラメータ属性情報は、さらに、画像データのお気に入り度若しくは重要度、現像処理パラメータの作成者の情報を含む。さらにまた、現像処理パラメータ属性情報は、現像処理パラメータの作成者が、RAW画像に対して当該現像処理パラメータが反映された画像を見せる相手として想定している人を示す情報を含む。
<画像処理装置>
図4は、本発明の実施形態に適用可能な現像手段としての現像処理装置400の一例の構成を示す。図4に示されるように、現像処理装置400は、一般的なパーソナルコンピュータと同等の構成で実現できる。例えば所定の現像処理ソフトウェアが当該パーソナルコンピュータ上で実行されることで、当該パーソナルコンピュータが現像処理装置400として機能する。
現像処理装置400において、バス410に対してCPU401、ROM402、RAM403およびグラフィクス部404が接続される。また、バス410には、さらに、ハードディスク(HD)405、光ディスクドライブ406、入力装置407、メディアドライブ408および通信I/F409が接続される。さらにまた、バス410に、通信I/F421が接続される。バス410は、アドレスバス、データバスおよび制御バスからなり、これら現像処理装置400の各部は、バス410を介して互いにデータのやりとりが可能となっている。
CPU401は、プログラムに従い動作して、この現像処理装置400の全体の制御を司る。ROM402は、CPU401の動作処理手順(例えばコンピュータの立ち上げ処理や基本入出力処理などのプログラム)が予め記憶される。RAM403は、CPU401のメインメモリとして用いられる。後述の処理を実現するための制御プログラムを含む各種プログラムがハードディスク405など読み出され、RAM403上に展開される。CPU401は、このRAM403上に展開されたプログラムに従い、各種制御を実行する。また、RAM403はCPU401が各種処理を実行する際のワークエリアを提供する。
ハードディスク405は、アプリケーションプログラムやデータ、ライブラリなどの保存および読み込み用に用いられる。光ディスクドライブ406は、CD−ROM、DVDなどの光ディスクに記録されたデータを再生する。光ディスクドライブ406は、記録可能な光ディスクに対するデータの書き込みをさらに可能としてもよい。また、フレキシブルディスクドライブや、光磁気ディスクドライブ、さらには、テープストリーマ、DDSなどの磁気テープドライブをさらに設けてもよい。
入力装置407は、マウスなどのポインティングデバイスやキーボードといった、ユーザによる入力操作を受け付け、操作に応じた制御信号を出力する。グラフィクス部404は、CPU401で生成された表示制御信号に基づき、表示装置420に表示可能な表示信号を出力する。
メディアドライブ408は、脱着可能な記憶媒体を装着し、当該記憶媒体のデータの読み書きを行う。メディアドライブ408は、例えば図1に例示した記憶媒体111が装着可能とされる。
インターフェイス(I/F)409は、外部の機器との間でデータ通信を行うためのもので、例えば図1に例示したデジタルスチルカメラ100のインターフェイス110と接続可能なようにされている。デジタルスチルカメラ100のインターフェイス110と、この現像処理装置400のインターフェイス409とを接続することで、デジタルスチルカメラ100から送信された画像データファイルを現像処理装置400が受信可能とされる。このインターフェイス409および上述のインターフェイス110は、例えばUSBに対応する。
通信インターフェイス(I/F)421は、インターネットやLANといった通信ネットワークに接続され、当該通信ネットワークを介して外部の情報処理装置とのデータ通信を行う。
<現像処理のより詳細な説明>
次に、現像処理装置400における現像処理について、より詳細に説明する。なお、現像処理装置400は、実質的には、パーソナルコンピュータといった情報処理装置上で実行されるプログラムであるので、以下、現像処理装置400を、適宜、現像処理ソフトウェアと呼ぶ。
図5は、現像処理装置400すなわち現像処理ソフトウェアによるユーザインターフェイス(UI)によるダイアログボックス600の一例を示す。ダイアログボックス600の上側の領域620に対して、画像ファイル300を読み込むためのファイル読込みボタン601が配置される。このファイル読込みボタン601を、入力装置407、例えばマウスなどのポインティングデバイスを用いて操作することで、標準的なファイルオープンダイアログボックスが表示される(図示しない)。ユーザは、このファイルオープンダイアログボックスを用いて、処理対象の画像ファイルを選択することができる。選択された画像ファイルに格納されたRAW画像データが所定に現像処理された画像が画像表示領域602に表示される。
また、領域620に対して、さらに、領域602に表示される画像に対する座標情報の操作を行うための各種操作子608〜611が配置される。操作子608は、画像を左に90度回転させる左90度回転ボタン、操作子609は、画像を右に90度回転させる右90度回転ボタンである。操作子610は、画像の部分切り出し処理を指示するクリップボタンである。この操作子610を操作してから画像表示領域602で矩形をドラッグすることにより、矩形部分を切り出す部分切り出し処理の指示がなされる。部分切り出し処理を取り消したい場合には、再度操作子610を操作する。
操作子611は、画像の拡大縮小処理を指示する拡大縮小リストボックスである。表示される画像データの画素数と出力装置(例えば表示装置420)の画素との割合が1:1の場合を、ピクセル等倍若しくは100%の倍率とする。同様にして、リストボックス611は、表示される画像データの画素数と出力装置の画素との割合に応じてパーセンテージを用いて倍率を示す。例えば画像データを4:1に縮小させて出力したい場合には25%を選択し、1:4に拡大して出力したい場合には400%を選択する。
領域621に対して、画質調整を行うパラメータを操作するための各種操作子604〜607が配置される。操作子604は、ホワイトバランス調整の際に被写体に照射されている光の光源を選択するリストボックスである。光源は、例えば太陽光、曇天時の外光、蛍光灯、白熱灯およびストロボ光から選択可能である。操作子605は、コントラストの強弱を設定するスライダーバー、操作子606は、エッジ強調の強弱を設定するスライダーバー、操作子607は、色の濃さの強弱を設定するスライダーバーである。
上述した操作子604〜607、ならびに、操作子608〜611に対して行われた操作による処理結果は、直ちに画像表示領域602に対する表示に反映される。
なお、ダイアログボックス600の左上に配置されるボタン603は、当該現像処理ソフトウェアを終了させるための終了ボタンである。
図6は、本発明の実施形態に適用可能な現像処理を示す一例のフローチャートである。なお、図6のフローチャートによる処理は、CPU401がRAM403に格納された制御プログラム(現像処理ソフトウェア)を実行することにより実行される。この図6を用いて現像処理行程を説明すると共に、各行程におけるユーザ操作が図5のユーザインターフェイスにおけるどの操作子を操作することに対応するかを説明する。
先ず、S501で、ユーザが画像処理の対象として選択した画像ファイル300を、ハードディスク405やメディアドライブ408からRAM403に読込む。例えば、ユーザは、ファイル読込みボタン601を操作することで起動する標準的なファイルオープンダイアログボックスを用いて、所望の画像ファイル300を選択する。画像ファイル300が選択されると、当該画像ファイル300がハードディスク405やメディアドライブ408から読み出され、RAM403に格納される。
このとき、選択された画像ファイル300から、本体画像データ領域303に格納されるRAW画像データが読み出されると共に、撮影情報領域301に格納される撮影情報が読み出される。さらに、縮小画像データ領域302に格納される縮小画像データが読み出される。これら読み出されたRAW画像データ、撮影情報および縮小画像データが、それぞれRAM403に格納される。
次のS502で、S501で読み出された画像ファイル300に現像処理パラメータが含まれるか否かが判定される。例えば、撮影情報、縮小画像データおよび本体画像データのデータサイズの合計と、画像ファイル300の全体のデータサイズを比較する。そして、比較の結果、画像ファイル300全体のデータサイズの方が、撮影情報、縮小画像データおよび本体画像データのデータサイズの合計よりも大きい場合には、画像ファイル300に現像処理パラメータが含まれると判定する。
若し、画像ファイル300に現像処理パラメータが含まれないと判定した場合には、処理はS505に移行され、初期設定の値で現像処理パラメータが生成される。初期設定の値は、当該現像処理装置400において予め設定される値であって、例えば、ホワイトバランス=太陽光、コントラスト=0、シャープネス=0、色の濃さ=0、回転角度=0度、切り出し処理無し、拡大縮小率=100%とする。この現像処理パラメータ生成の詳細については、後述する。
一方、S502にて、画像ファイル300に現像処理パラメータが含まれると判定した場合には、処理はS503に移行される。そして、現在処理を行っている現像処理ソフトウェアに関連付けられた現像処理パラメータを、画像ファイル300から読み出し、RAM403に格納する。現像処理パラメータの読み出し方法については、後述する。
現像処理パラメータの読み出しが行われたら、次のS504で、現像処理パラメータの読込みに成功したか否かを判定する。例えば、現像処理パラメータ内の個々の値に、規定された範囲に対して範囲外の値がある場合には、不正なデータとして読込みを中止し、現像処理パラメータの読込みに失敗したと判定する。若し、現像処理パラメータの読込みに失敗したと判定されたら、処理はS505に移行され、初期設定の値により現像処理パラメータが生成される。
S504で現像処理パラメータの読み込みに成功するか、若しくは、S505で初期設定値により現像処理パラメータが生成されると、処理はS506に移行される。
S506では、現像処理パラメータを、画像ファイル300の本体画像データ領域303から読み出されてRAM403に格納されているRAW画像データに対して適用する。すなわち、画像ファイル300から読み出されたRAW画像データに対して、当該現像処理パラメータに従い現像処理を行う。現像処理の結果は、次のS507で例えば画像表示領域602に対して表示される。
次のS508で、RAW画像データに対してユーザによる調整が行われたか否かが判定される。これは例えば、画質調整や座標操作を指示するための操作子604〜611が操作されたか否かによって判定することができる。若し、ユーザによる調整が行われたと判定されたら、処理はS509に移行され、ユーザが操作子604〜611に対して行った操作に応じて現像処理パラメータを更新する。この現像処理パラメータの更新の詳細については、後述する。現像処理パラメータが更新されたら、処理はS506に戻され、更新された現像処理パラメータによりRAM403に格納されているRAW画像データに対して現像処理を行う。
一方、S508で、ユーザによる調整が行われていないと判定されたら、処理はS510に移行される。S510では、一連の現像処理を終了するか否かが判定される。例えば、ユーザが終了ボタン603を操作したか否かで、現像処理を終了するか否かを判定することができる。すなわち、ユーザにより終了ボタン603が操作されたら、一連の現像処理を終了すると判定する。若し、一連の現像処理を終了しないと判定されたら、処理はS508に戻され、ユーザによる調整操作を受け付ける。
一方、S508で、一連の現像処理を終了すると判定されたら、処理はS511に移行される。S511では、現像処理パラメータと、現像処理パラメータ属性情報とを含む現像処理情報をRAW画像データに付加して、画像ファイルを生成する。そして、この画像ファイルをハードディスク405やメディアドライブ408に装填された記憶媒体111に保存する。現像処理情報の保存処理については、後述する。画像ファイルが保存されると、次のS512で、現像処理ソフトウェアが終了される。
なお、現像処理パラメータ属性情報には、図6のフローチャートによる一連の現像処理を実行した現像処理ソフトウェアを識別する識別情報が含まれる。識別情報は、例えば、現像処理ソフトウェアのプログラムコード中に記述される。ここで、識別情報は、同一の現像処理パラメータに対応する現像処理ソフトウェアを識別可能であればよく、個々の現像処理ソフトウェアを識別できる必要はない。このような識別情報として、現像処理ソフトウェアの名称およびバージョンを用いることができる。
また、図6で説明した現像処理は、RAM403に格納されたRAW画像データに対して行われ、画像ファイル300の本体画像データ領域303に格納されるRAW画像データは、変更されない。すなわち、本実施形態における現像処理では、本体画像データ領域303から読み込んだRAW画像データに対して現像処理を行った結果の画像は記録せず、現像処理に用いた現像処理パラメータを、現像処理前のRAW画像データと共に記録する。現像処理パラメータ内の個々の値を繰り返し変更しても、その都度、本体画像データから出力画像を生成するため、繰り返しの編集による画像の劣化は発生しない。
<現像処理情報が付加された画像ファイルの例>
図7は、図6のフローチャートに従い作成される画像ファイル300Aの一例の構成を示す。図7に例示される画像ファイル300Aは、上述した図3に示した画像ファイル300に対して図6のフローチャートによる処理を行った結果、生成されるものである。なお、図7において、図3と共通する部分には同一の符号を付し、詳細な説明を省略する。
図7に示されるように、画像ファイル300Aは、元となる画像ファイル300に対してパラメータヘッダ領域310、現像処理情報領域311およびパラメータフッタ領域312を付加した構造となっている。
パラメータヘッダ領域310は、現像処理情報領域311のデータの読み出しや書き込みに必要な情報が格納される。より具体的には、パラメータヘッダを識別するためのヘッダ識別子、ならびに、パラメータヘッダ領域310およびフッタ領域312それぞれのデータサイズが、パラメータヘッダ領域310に格納される。ヘッダ識別子および後述するフッタ識別子としては、所定の文字列やビット列を用いることが考えられる。さらに、現像処理情報領域311とパラメータヘッダ領域310およびフッタ領域312との合計のデータサイズが、パラメータヘッダ領域310に格納される。
パラメータフッタ領域312も、パラメータヘッダ領域310と同様の情報が格納される。すなわち、パラメータフッタを識別するためのフッタ識別子、ならびに、パラメータヘッダ領域310およびフッタ領域312それぞれのデータサイズが、パラメータフッタ領域312に格納される。さらに、現像処理情報領域311とパラメータヘッダ領域310およびフッタ領域312との合計のデータサイズが、パラメータフッタ領域312に格納される。
現像処理情報領域311は、図6のフローチャートの処理に従い生成された現像処理パラメータと当該現像処理パラメータの属性情報とからなる現像処理情報が格納される。ここで、図7において現像処理情報領域#1、現像処理情報領域#2、…、現像処理情報領域#Nとして示されるように、現像処理情報領域311には、複数の現像処理情報を現像処理毎に領域を分けて格納することができる。
各現像処理情報領域に格納される情報の例について説明する。現像処理情報領域には、現像処理パラメータおよび当該現像処理パラメータの属性情報が格納される。
現像処理パラメータ属性情報は、各現像処理情報領域の先頭側に配置され、例えば下記の情報を含む。
(1)この現像処理情報を生成した現像処理ソフトウェアに関する情報
(2)この現像処理情報の作成日時および更新日時を示す情報
(3)この現像処理情報に基づき現像された出力画像のお気に入り度を示す情報
(4)この現像処理情報を生成したユーザに関するユーザ情報
より詳細な例として、(1)この現像処理情報を生成した現像処理ソフトウェアに関する情報は、下記の情報を含む。
(a) この現像処理情報を生成した現像処理ソフトウェアの識別情報(ID)
(b) この現像処理情報のデータサイズ
(c) この現像処理情報を生成した現像処理ソフトウェアへのアクセス方法を示す情報
(d) この現像処理情報を生成した現像ソフトウェアのバージョン
なお、(a)の現像処理ソフトウェアの識別情報としては、当該現像処理ソフトウェアの名称を用いることができる。現像処理ソフトウェアの名称とバージョンとを用いて、当該現像処理情報を生成した現像処理ソフトウェアを識別する。これは、同一名称の現像処理ソフトウェアであっても、バージョンによって対応可能な現像処理パラメータが異なる場合があるからである。
また、(4)この現像処理情報を生成したユーザに関するユーザ情報は、下記の情報を含む。
(a) この現像処理情報を生成したユーザの識別情報(ユーザ名など)
(b) この現像処理情報を用いて現像処理した出力画像の閲覧対象を示す情報
なお、(b)の閲覧対象を示す情報は、例えば、本体画像データ領域303に格納されるRAW画像データに対してこの現像処理情報に含まれる現像処理パラメータを用いて現像処理した出力画像を、ユーザが見て欲しいと想定している人を示す情報である。閲覧対象を示す情報としては、閲覧対象者の名前を用いることができる。
現像処理パラメータは、例えば下記の情報を含む。
(1)画質調整に関する情報
(2)座標処理に関する情報
より詳細な例として、(1)画質調整に関する情報は、例えば、露出補正値、ホワイトバランス調整値、コントラスト調整値、色濃さ調整値およびシャープネス調整値を含む。また、(2)座標処理に関する情報は、例えば、回転に関する情報、拡大縮小率、クリップ(切り出し)情報を含む。
なお、これら現像処理情報領域311、パラメータヘッダ領域310およびフッタ領域312において、例えば各項目のデータサイズが予め決められた固定長とされる。一例として、数値データを格納する項目は、データサイズが32ビットとされ、文字列を格納する項目は、データサイズが256バイトとされる。
<現像処理パラメータの生成>
次に、現像処理パラメータの生成について説明する。現像処理ソフトウェアは、ユーザの操作子604〜611に対する操作により指定された現像処理に関する設定を値に変換し、現像処理パラメータを生成する。この現像処理パラメータは、複数のパラメータからなる現像処理パラメータ群である。
なお、現像処理パラメータ内の個々の値については、現像処理ソフトウェア毎に値の意味などを変えてもよい。これは、後述する本発明の実施形態における画像管理装置(画像管理ソフトウェア)において、画像ファイル300Aを、現像処理パラメータを生成した現像処理ソフトウェア若しくは現像処理パラメータを再生に利用できる現像処理ソフトウェアに渡すからである。
なお、以下では、以前に生成された現像処理パラメータを用いてRAW画像データに対して現像処理を行うことを、「RAW画像データを再生する」などのように呼ぶ。
先ず、現像処理パラメータの一例の各変数を、説明のため下記のように定義する。現像処理情報領域内において、各変数が例えば下記の順序で格納される。
prm_wb:ホワイトバランス
prm_contrast:コントラスト
prm_sharpness:シャープネス
prm_colorgain:色の濃さ
prm_rotationAngle:回転角度
prm_partRec_x0:切り出し位置左上隅x座標(単位:pixel)
prm_partRec_y0:切り出し位置左上隅y座標(単位:pixel)
prm_partRec_x1:切り出し位置右下隅x座標(単位:pixel)
prm_partRec_y1:切り出し位置右下隅y座標(単位:pixel)
prm_resolution:拡大縮小の倍率
ホワイトバランスprm_wbについては、光源を定義し、各光源に関して定義値を以下の値とする。この例では、光源として「太陽光」、「曇天時の外光」、「蛍光灯」、「白熱灯」および「ストロボ光源」の5種類が定義され、それぞれ1〜5の定義値が対応付けられている。
kWB_DayLight=1:太陽光
kWB_Cloudy=2:曇天時の外光
kWB_Fluorenscent=3:蛍光灯
kWB_Tangsten=4:白熱灯
kWB_Strobo=5:ストロボ光源
コントラストprm_contrast、シャープネスprm_sharpness、色濃さprm_colorgainに関しては、数値をそのまま現像処理パラメータ内に保持する。
回転角度prm_rotationAngleに関しては、例えば画像にする右方向の回転角度を現像処理パラメータ内に保持する。若し、画像に対する回転角度が360°以上になった場合には、回転角度を360で割った剰余の数値を回転角度prm_rotationAngleとして用いる。
未回転の画像に対して、右90度回転を指示する操作子609を1回操作した場合の回転角prm_rotationAngleは、90となる。未回転の画像に対して、左90度回転を指示する操作子608を1回操作した場合の回転角prm_rotationAngleは、360−90=270となる。未回転の画像に対して、操作子609を5回操作した場合の回転角prm_rotationAngleは、(90×5)%360=90となる。なお、演算子「%」は、除算した際の剰余を求めることを意味する。
切り出し位置に関しては、本体画像データで矩形状に設定された切り出し範囲の左上隅のx座標およびy座標と、右下隅のx座標およびy座標をそれぞれ現像処理パラメータ内に保持する。より具体的には、左上隅のx座標prm_partRec_x0、左上隅のy座標prm_partRec_y0、右下隅のx座標prm_partRec_x1、ならびに、右下隅のy座標prm_partRec_y1が保持される。回転した画像の場合には、回転する前の本体画像データにおける切り出し位置の座標情報が保持される。
本体画像データにおいて、固体撮像素子103における撮像領域の左上隅が座標(150,100)、右下隅が座標(1750,1300)で、且つ、部分切り出し処理をしていない場合の切り出し位置prm_partRecは、下記のようになる。
prm_partRec_x0=150
prm_partRec_y0=100
prm_partRec_x1=1750
prm_partRec_y1=1300
切り出し処理により左上隅の座標(650,600)および右下隅の座標(1400,1100)の範囲を切り出した場合の切り出し位置は、下記のようになる。
prm_partRec_x0=650
prm_partRec_y0=600
prm_partRec_x1=1400
prm_partRec_y1=1100
拡大縮小処理の倍率に関しては、パーセンテージで表す。例えば、等倍率すなわち100%の場合は、倍率rm_resolution=100となり、倍率が25%の場合は、倍率prm_resolution=25となる。
ここで、現像処理パラメータの初期設定は、ホワイトバランス=太陽光、コントラスト=0、シャープネス=0、色の濃さ=0、回転角度=0°、切り出し処理=無し、拡大縮小の倍率=100%とする。また、本実施形態において、撮像領域の範囲は、本体画像データにおける左上隅が座標(150,100)、右下隅が座標(1750,1300)とする。上述した図6のフローチャートのS505において、上述した定義に従って、初期設定の状態を数値に変換した一例の結果を下記に示す。
prm_wb=1
prm_contrast=0
prm_sharpness=0
prm_colorgain=0
prm_rotationAngle=0
prm_partRec_x0=150
prm_partRec_y0=100
prm_partRec_x1=1750
prm_partRec_y1=1300
prm_resolution=100
なお、初期設定の値は、撮像時にデジタルスチルカメラ100で設定された値によって決定してもよい。例えば、上述した図6のフローチャートのS505において、画像ファイル300の撮影情報領域301に格納された情報に基づき、上述した定義に従い現像処理パラメータの各値を設定する。一例として、撮像時にホワイトバランス=曇天時の外光、コントラスト=2、シャープネス=2、色の濃さ=−1、回転角度右=90°、切り出し処理無し、拡大縮小の倍率100%と設定していた場合の初期設定値の例を下記に示す。
prm_wb=2
prm_contrast=2
prm_sharpness=2
prm_colorgain=−1
prm_rotationAngle=90
prm_partRec_x0=150
prm_partRec_y0=100
prm_partRec_x1=1750
prm_partRec_y1=1300
prm_resolution=100
<現像処理パラメータ更新>
次に、現像処理パラメータの更新について説明する。現像処理パラメータ更新も、上述した現像処理パラメータ生成の際の処理と同様に、ユーザ操作により指定された現像処理に関する設定を値に変換する。そして、現像処理パラメータ内の変更のあった値のみ更新する。
一例として、初期設定を、上述したホワイトバランス=太陽光、コントラスト=0、シャープネス=0、色の濃さ=0、回転角度=0°、切り出し処理=無し、拡大縮小の倍率=100%であるものとする。この初期設定に対して、ユーザによりコントラストスライダーバーである操作子605が操作されて値が+2に変更され、右90°回転を指示する操作子609が1回操作されたものとする。この場合、上述した図6のフローチャートのS508において、現像処理パラメータが下記のように更新される。初期設定に対して、ユーザ操作により値が変更されたコントラストprm_contrastおよび回転角度prm_rotationAngleの値が更新されている。
prm_wb=1
prm_contrast=2
prm_sharpness=0
prm_colorgain=0
prm_rotationAngle=90
prm_partRec_x0=150
prm_partRec_y0=100
prm_partRec_x1=1750
prm_partRec_y1=1300
prm_resolution=100
<現像処理パラメータ属性情報生成>
次に、現像処理パラメータ属性情報の生成について説明する。現像処理パラメータ属性情報も、上述した現像処理パラメータと同様、情報を、数値や文字列に変換して生成する。
なお、現像処理パラメータ属性情報の表記は、後述する本発明の実施形態による画像管理装置が解釈できる形式であることが望ましい。すなわち、詳細は後述するが、当該画像管理装置では、RAW画像データの現像処理に用いる現像処理パラメータを決定するために、複数の現像処理ソフトウェアで生成された現像処理パラメータ属性情報を比較する。
現像処理パラメータ属性情報の一例の各変数を、説明のため下記のように定義する。現像処理情報領域内において、各変数が例えば下記の順序で格納される。
prm_appID:現像処理パラメータに対応する現像処理ソフトウェアの識別情報
prm_sizeofPrm:画像処理情報のサイズ(単位:バイト)
prm_year:作成した年若しくは更新した年
prm_month:作成した月若しくは更新した月
prm_date:作成した日若しくは更新した日
prm_hour:作成した時刻若しくは更新した時刻(時)
prm_minute:作成した時刻若しくは更新した時刻(分)
prm_second:作成した時刻若しくは更新した時刻(秒)
prm_appPcPhysicalAddress:現像処理パラメータを編集した現像処理ソフトウェアを動作させる情報処理装置の物理アドレス
prm_appPath:現像処理パラメータを編集した現像処理ソフトウェアのパス
prm_appVer:現像処理パラメータを編集した現像処理ソフトウェアのバージョン
prm_importance:お気に入り度(若しくは重要度)
prm_author:現像処理パラメータの編集者
prm_viewer:現像処理パラメータの編集者により指定の閲覧対象者
なお、上述の現像処理パラメータ属性情報の各項目において、数値が設定される項目のデータサイズは32ビットとし、文字列が設定される項目のデータサイズは256バイトとする。例えば、物理アドレスprm_appPcPhysicalAddress、パスprm_appPath、バージョンprm_appVer、編集者prm_authorおよび閲覧対象者prm_viewerは、文字列が設定され、256バイトの配列とする。
現像処理情報は、現像処理ソフトウェア毎に保持することができるため、現像処理情報全体のサイズprm_sizeofPrmは、保持する情報に応じて変わる。そのため、現像処理情報全体のサイズprm_sizeofPrmは、画像ファイル300Aの記録時に、動的に生成する。例えば、現像処理ソフトウェアが動作する情報処理装置が有するOSの機能を利用して、サイズprm_sizeofPrmの情報を取得することが考えられる。
作成または更新日時を示す日時情報(prm_year、prm_month、prm_date、prm_hour、prm_minuteおよびprm_second)も、同様にして生成される。すなわち、日時情報は、画像ファイル300Aの記録時に、例えば現像処理ソフトウェアが動作する情報処理装置が有するOSなどの機能を利用して、動的に生成する。
情報処理装置の物理アドレスprm_appPcPhysicalAddressは、通信インターフェイス421に予め与えられるMACアドレスを用いることができる。MACアドレスは、Medeia Access Control Addressの略称である。
また、現像処理装置のパスprm_appPathは、現像処理ソフトウェアの実行ファイルの所在を示す情報である。パスprm_appPathとしては、当該実行ファイルのハードディスク405上での位置を示す情報(ディレクトリ情報、フォルダ情報など)を用いることができる。これに限らず、URLなど通信I/F421を介して接続されるネットワーク上の位置を示す情報を用いることもできる。
これら物理アドレスprm_appPcPhysicalAddressやパスprm_appPathは、現像処理ソフトウェアを搭載する情報処理装置や、情報処理装置のハードディスク405上での記憶領域の位置によって変わる。そのため、物理アドレスprm_appPcPhysicalAddressやパスprm_appPathは、画像ファイル300Aの記録時に、現像処理ソフトウェアが動作する情報処理装置が有するOSなど機能を利用して、動的に生成する。
お気に入り度prm_importance、編集者prm_authorおよび指定の閲覧対象者prm_viewerについては、入力装置407を用いたユーザ入力により設定される。例えば、所定のタイミング、例えば図6のフローチャートにおけるS510で終了ボタン603が操作されたと判定されたタイミングで、図8に例示されるダイアログボックス630を表示させ、ユーザの入力を受け付ける。
図8の例では、ダイアログボックス630対して入力欄631、632および633が設けられると共に、OKボタン634が設けられる。入力欄631は、編集者prm_authorが入力される。例えば、当該現像処理パラメータの変更すなわち編集を行った編集者を示す情報(名前など)が入力欄631に入力される。入力欄632は、指定の閲覧対象者prm_viewerが入力される。例えば、当該現像処理パラメータを用いてRAW画像データに対する現像処理を行った結果の出力画像を見せる相手を示す情報(名前など)が入力欄632に入力される。また、入力欄633は、お気に入り度prm_importanceが入力される。例えば、当該現像処理パラメータを用いてRAW画像データに対する現像処理を行った結果の出力画像に対する、編集者のお気に入り度が入力される。入力欄633は、予め決められた複数のお気に入り度を表示させ、表示されたお気に入り度から適当なものを選択するようにしてもよい。
若し、入力欄631〜633の1または複数に入力が無かった場合、入力無しとして処理を行う。例えば、入力が無い項目に対して、データが無いことを示す文字列「NULL」を設定することが考えられる。また、入力された文字列のデータサイズが256バイトを超える場合には、「入力文字数が多すぎます。入力文字数の上限を超えた分を削除します。」などの警告を表示させると共に、256バイトを超えた分の入力を破棄する。
一例として、現像処理パラメータ属性情報を生成するために必要な情報を取得した結果が以下の通りであるものとする。
(a) 画像処理装置のIDが「7」
(b) 画像処理情報全体のサイズが「5kバイト」
(c) 作成日時が「2006/09/01 19:25:11」
(d) 情報処理装置の物理アドレスが「01-02-03-0A-0B-0C」
(e) 画像処理装置のパスが「C:\Program Files\App\App_0001.exe」
(f) 画像処理装置のバージョンが「1.2.0.8」
(g) お気に入り度が「+5」
(h) 現像処理パラメータ編集者名が「UserA」
(i) 現像処理パラメータの編集者により指定の閲覧対象者が「UserB」
この場合、現像処理パラメータ属性情報の各変数の値は、下記のようになる。
prm_appID=7
prm_sizeofPrm=5000
prm_year=2006
prm_month=9
prm_date=1
prm_hour=19
prm_minute=25
prm_second=11
prm_appPcPhysicalAddress=01-02-03-0A-0B-0C
prm_appPath=C:\ProgramFiles\App\App_0001.exe
prm_appVer=1.2.0.8
prm_importance=5
prm_author=UserA
prm_viewer=UserB
<現像処理情報の記録>
上述のようにして生成または更新された現像処理情報が、図6のS511において、記憶媒体111に対して記録される。このとき、数値のパラメータのデータ長は符号付きの32ビットとし、文字列のデータ長は256バイト配列とされる。また、現像処理情報領域311内において、現像処理情報毎に現像処理パラメータ属性情報、現像処理パラメータの順に格納される。さらに、現像処理パラメータ属性情報および現像処理パラメータのそれぞれにおいて、各項目は、上述したような順序で格納される。
<パラメータヘッダとフッタの生成方法>
次に、パラメータヘッダおよびパラメータフッタの生成について説明する。図6のS511において、パラメータヘッダおよびフッタが生成される。また、図6のS502において、現像処理パラメータが存在しないと判定された場合にも、S511でパラメータヘッダおよびフッタが生成される。生成されたパラメータヘッダおよびフッタは、それぞれパラメータヘッダ領域310およびフッタ領域312に格納され、上述した現像処理情報と共に画像ファイル300Aに付加される。
パラメータヘッダ領域310は、上述したように、ヘッダ識別子、ヘッダサイズおよびフッタサイズが格納されると共に、現像処理情報領域311に格納される全ての現像処理情報と、パラメータヘッダおよびフッタとを含むサイズ合計が格納される。
ヘッダ識別子は、パラメータヘッダ領域310の開始位置を識別可能な情報が用いられる。ここでは、文字列「ParamHeder」をヘッダ識別子として用いるものとする。
パラメータヘッダ領域310の一例の各変数を、説明のため下記のように定義する。パラメータヘッダ領域310内において、ヘッダ識別子に続けて各変数が例えば下記の順序で格納される。
prm_sizeofPrm:現像処理情報領域311のデータサイズ(単位:バイト)
paramSizeOfHeader:パラメータヘッダ領域310のデータサイズ(単位:バイト)
paramSizeOfFooter:パラメータフッタ領域312のデータサイズ(単位:バイト)
paramSizeSum:現像処理情報領域311のデータサイズと、パラメータヘッダ領域310およびフッタ領域312のデータサイズとの合計のデータサイズ(単位:バイト)
ここで、合計データサイズparamSizeSumは、下記の式(1)により求められる。
paramSizeSum=paramSizeOfHeader+paramSizeOfFooter+prm_sizeofPrm …(1)
パラメータフッタ領域312は、上述したように、フッタ識別子、ヘッダサイズおよびフッタサイズが格納されると共に、現像処理情報領域311に格納される全ての現像処理情報と、パラメータヘッダおよびフッタとを含むサイズ合計が格納される。フッタ識別子は、パラメータフッタ領域312の開始位置を識別可能な情報が用いられる。ここでは、文字列「ParamFooter」をフッタ識別子として用いるものとする。パラメータフッタ領域312の構成は、フッタ識別子以外は、上述したパラメータヘッダ領域310の構成と同一なので、詳細な説明を省略する。合計データサイズparamSizeSumも、上述の式(1)と同様にして求められる。
図6のS502で、画像ファイルに現像処理パラメータがあると判定した場合には、S511にてパラメータヘッダ領域310とフッタ領域312にある合計データサイズparamSizeSumを、必要に応じて更新する。
例えば、既に画像ファイル300Aに記憶している現像処理情報のデータサイズが、図6のフローチャートの処理を実行することで変わった場合に、合計データサイズparamSizeSumを更新する必要がある。あるいは、既に画像ファイル300Aに記憶されている現像処理情報を生成した現像処理ソフトウェアと異なる現像処理ソフトウェアで当該画像ファイル300Aを再生したとする。そして、当該画像ファイル300Aに対して新たに現像処理情報を付加した場合に、合計データサイズparamSizeSumを更新する必要がある。
一例として、図6のS501で読み込んだ画像ファイル300Aに、現像処理ソフトウェア#1で生成された1つの現像処理情報#1が格納されている場合について考える。この場合、パラメータヘッダ領域310に格納される、ヘッダ識別子以外の各変数は、下記のようになる。
prm_sizeofPrm1:現像処理ソフトウェア#1で生成した現像処理情報#1のデータサイズ
paramSizeOfHeader:パラメータのヘッダのサイズ
paramSizeOfFooter:パラメータのフッタのサイズ
paramSizeSum1:現像処理情報領域311に現像処理情報#1のみがある場合の、パラメータヘッダおよびフッタ、ならびに、現像処理情報#1のデータサイズ合計
データサイズ合計paramSizeSum1は、下記の式(2)によって求められる。
paramSizeSum1=paramSizeOfHeader+paramSizeOfFooter+prm_sizeofPrm1 …(2)
この画像ファイル300Aを現像処理ソフトウェア#2で再生し、現像処理ソフトウェア#2で生成された現像処理情報#2を、画像ファイル300Aに対して追加する場合について考える。この場合、パラメータヘッダ領域310には、現像処理ソフトウェア#1で生成された現像処理情報#1と、現像処理ソフトウェア#2で生成された現像処理情報#2とがある場合のデータサイズ合計paramSizeSum2を格納する必要がある。
このデータサイズ合計paramSizeSum2は、下記の式(3)によって求められる。なお、変数prm_sizeofPrm2は、現像処理ソフトウェア#2で生成された現像処理情報#2のデータサイズを示す。
paramSizeSum2=paramSizeOfHeader+paramSizeOfFooter+prm_sizeofPrm1+prm_sizeofPrm2 …(3)
現像処理ソフトウェア#2において現像処理情報#2を追加する場合、必ずしも、既に記憶されている、現像処理ソフトウェア#1で生成された現像処理情報#1のデータサイズを取得する必要はない。この場合のデータサイズ合計の算出方法を、式(4)〜式(6)に示す。なお、式(4)〜式(6)において、変数paramSizeSumBefは、現像処理ソフトウェア#2で生成された現像処理情報#2を付加する前のデータサイズ合計をバイト単位で示す。また、変数paramSizeSumAftは、現像処理ソフトウェア#2で生成した現像処理情報#2を追加した後のデータサイズ合計をバイト単位で示す。
paramSizeSumBef=paramSizeOfHeader+paramSizeOfFooter+prm_sizeofPrm1 …(4)
式(4)は真のため、次式(5)も真となる。
paramSizeSumAft=paramSizeSumBef+prm_sizeofPrm2 …(5)
したがって、下記の結果が得られる。
paramSizeSum2=paramSizeSumAft …(6)
上述では、現像処理ソフトウェア#1で記録された画像ファイル300Aを現像処理ソフトウェア#2で再生した際の、パラメータヘッダおよびフッタ、ならびに、現像処理情報のデータサイズ合計の算出方法を示した。これはこの例に限定されず、加えてさらに他の現像処理ソフトウェアで現像処理情報を付加する場合も、同様にして当該データサイズ合計を算出することができる。この場合のデータサイズ合計の算出方法を、式(7)に示す。
paramSizeSum=paramSizeOfHeader+paramSizeOfFooter+prm_sizeofPrm1+prm_sizeofPrm2+ … +prm_sizeofPrmN …(7)
<現像処理情報の読み込み>
次に、上述のようにして生成され、画像ファイル300Aに付加された現像処理情報の読み込み処理について説明する。図9は、本発明の実施形態による現像処理情報の一例の読み込み処理を示すフローチャートである。この図9のフローチャートによる処理は、上述した図6のフローチャートにおけるS503の処理に対応する。
図9のフローチャートの処理に先んじて、上述の図6のフローチャートにおけるS501の処理により画像ファイル300Aが読み込まれる。そして、読み込まれた画像ファイル300Aに現像処理パラメータがあると判定され(S502)、処理が図9のS1201に移行される。
S1201で、S501で読み込んだ画像ファイル300Aの末尾を探索する。次のS1202で、S1201の探索の結果、フッタ識別子およびデータサイズ合計paramSizeSumが検出できるか否か判定を行う。
例えば、画像ファイル300Aの末尾が探索できたら、探索された末尾の位置からファイルの先頭方向に向けて、所定距離だけ位置を戻してフッタ識別子が検出されるか否かを判定する。数値のデータサイズが32ビットとされているこの例では、32ビット×4=128ビット=16バイト分だけファイル末尾から戻って、フッタ識別子の検出を行う。若し、この位置からフッタ識別子(この例では「ParamFooter」)が検出されたら、さらに所定距離だけ探索位置を進めて、データサイズ合計paramSizeSumの検出を試みる。
若し、S1202でフッタ識別子またはデータサイズ合計paramSizeSumが検出されなかったら、処理はS1211に移行される。そして、現像処理パラメータの読み込みに失敗したか、若しくは、現像処理パラメータが存在しないとされて、一連の処理が終了される。
一方、S1202で、フッタ識別子およびデータサイズ合計paramSizeSumが検出できたと判定されたら、処理はS1203に移行される。S1203では、S1202で検出されたデータサイズ合計paramSizeSumに基づき、パラメータヘッダ領域310の先頭へ探索位置を変更する。そして、次のS1204で、S1203の探索の結果、ヘッダ識別子が検出されたか否かを判定する。
若し、ヘッダ識別子が探索されなかったと判定されたら、処理はS1211に移行され、一連の処理が終了される。
一方、S1204で、ヘッダ識別子が検出されたと判定されたら、処理はS1212に移行される。S1212では、ヘッダ識別子の位置に基づきパラメータヘッダ領域310のデータサイズparamSizeOfHeaderを取得し、当該パラメータヘッダ領域310の次の領域に探索位置を変更する。
次のS1205で、探索位置が現像処理情報領域311全てを超えたか否かが判定される。例えば、ヘッダ識別子の位置に基づきフッタのデータサイズparamSizeOfFooterを取得する。そして、パラメータヘッダ領域310先頭からの移動距離が、データサイズ合計paramSizeSumからフッタのデータサイズparamSizeOfFooterを引いた差分よりも大きい場合、現像処理情報領域311を全て超えたと判定する。
若し、探索位置が現像処理情報領域311を全て超えたと判定されたら、処理はS1211に移行され、一連の処理が終了される。
一方、S1205で、探索位置が現像処理情報領域311を超えていないと判定されたら、処理はS1206に移行される。S1206では、現像処理情報領域311内の現像処理情報領域(現像処理情報領域#1とする)に格納される現像処理パラメータ属性情報が探索される。そして、当該現像処理情報領域#1の情報を生成した現像処理ソフトウェアの識別情報(ID)が取得される。
現像処理ソフトウェアの識別情報が取得されると、次のS1207で、現在処理を実行している現像処理ソフトウェアの識別情報と、S1206で取得した識別情報とが一致するか否かが判定される。若し、両者が一致したと判定されたら、処理はS1208に移行され、当該現像処理情報領域#1に格納される現像処理パラメータが取得される。このとき、現像処理パラメータ属性情報を共に取得してもよい。そして、次のS1209で、現像処理パラメータ読込み処理に成功したというフラグを立てて、読込み処理を終了する。
一方、S1207にて、識別情報が一致しないと判定されたら、処理はS1210に移行される。そして、現像処理情報領域#1の現像処理パラメータ属性情報に含まれるデータサイズprm_sizeofPrmを用いて、次の現像処理情報領域(この例では、現像処理情報領域#2)に探索位置を移動させる。そして処理がS1205の判定処理に戻される。
<本発明の実施形態による画像管理装置>
次に、本発明の実施形態による画像管理装置について説明する。本実施形態による画像管理装置は、図4を用いて説明した現像処理装置400と同等の構成で実現可能であるため、図示ならびに詳細な説明を省略する。すなわち、図4の構成において、当該画像管理装置の機能を実行させる画像管理プログラムをCPU401に読み込ませ実行させる。これにより、図4に示した現像処理装置400を本実施形態による画像管理装置として機能させることができる。
図10は、本実施形態による画像管理装置におけるユーザインターフェイスの一例を示す。ダイアログボックス900において、領域906に対してファイル読込ボタン901、調整ボタン902および終了ボタン903が配置される。ファイル読込ボタン901は、画像ファイルを選択するためのボタンである。ファイル読込ボタン901を操作すると、取得手段としての標準的なファイルオープンダイアログボックスが開く。ユーザは、そのファイルオープンダイアログボックスにおいて処理対象の画像ファイル300または画像ファイル300Aを選択することができる。
領域906の下側に、一覧用画像の表示領域である一覧画像表示領域904が配置される。一覧画像表示領域904は、ファイル読込みボタン901の操作により選択された画像ファイルの画像を、縮小して表示する。例えば、ファイル読込ボタン901の操作により選択された画像ファイル300または300Aから、縮小画像データ領域302に格納される縮小画像データが読み出され、画像ファイル毎の縮小画像907、907、…として一覧画像表示領域904に表示される。
ユーザは、一覧画像表示領域904に表示される縮小画像907、907、…のうち、処理対象としたい縮小画像の上に例えばポインティングデバイスを用いてカーソルを移動させ、決定操作を行うことによって、カーソル位置に対応した画像を選択できる。選択された縮小画像907には、選択枠905が表示される。
調整ボタン902は、一覧画像表示領域904にて選択された縮小画像907に対応するRAW画像データを適切な現像処理装置400(現像処理ソフトウェア)へ渡して、当該RAW画像データに対する画像調整機能を提供する。現像処理装置400(現像処理ソフトウェア)の選択方法については、後述する。終了ボタン903は、この画像管理装置を終了させるためのボタンである。
<本実施形態による画像管理方法>
図11は、本実施形態による画像管理の一例の処理を示すフローチャートである。この図11と、上述した図10を用いて、本実施形態による画像管理方法について説明する。なお、図11のフローチャートによる処理は、CPU401がRAM403に格納された制御プログラム(画像管理ソフトウェア)を実行することにより実行される。以下、画像管理装置を画像管理ソフトウェアであるものとして説明する。
図11のフローチャートの実行に先立って、画像管理ソフトウェアが起動され、ファイル読込ボタン901の操作により既に既に複数の画像ファイル300または300Aが読み込まれているものとする。そして、読み込まれた画像ファイル300または300Aに対応する縮小画像907、907、…が一覧画像表示領域904に表示されているものとする。
先ず、S1001にて、一覧画像表示領域904に表示された縮小画像907、907、…から処理対象の画像が選択されたか否かが判定される。この判定は、例えば、一覧画像表示領域904に表示される縮小画像907、907、…のうち何れか1つが選択された状態で、調整ボタン902が操作されたか否かで行う。図10の例では、選択枠905が表示される「IMG_001」の画像が処理対象の画像として選択されている。
若し、S1001で、画像が選択されていないと判定されたら、処理はS1001に戻り、画像選択のユーザ操作が待機される。一方、S1001で、画像が選択されたと判定したら、処理はS1002に移行される。
S1002では、選択された縮小画像907に対応する画像ファイル300または300Aに付加されている全ての現像処理情報を取得する。現像処理情報の取得方法についての詳細は、後述する。なお、以下では便宜上、「選択された縮小画像907に対応する画像ファイル300または300A」を「処理対象の画像ファイル」または、単に「画像ファイル」として記述する。
次のS1003では、上述のS1002で現像処理情報の取得に成功したか否かが判定される。若し、現像処理情報の取得に成功したと判定されたら、処理はS1004に移行される。
S1004では、選択手段としてのCPU401により、取得した全ての現像処理情報のそれぞれから現像処理パラメータ属性情報が取り出される。そして、各現像処理パラメータ属性情報に記述される作成日時または更新日時を示す日時情報(prm_year、prm_month、prm_date、prm_hour、prm_minuteおよびprm_second)が互いに比較される。比較の結果、作成日時または更新日時が最も新しい日時の現像処理情報を選択する。選択された現像処理情報に含まれる現像処理パラメータを、当該現像処理情報に対応するRAW画像データに対する現像処理に用いるパラメータに決定する。
より具体的な例を用いて説明する。S1002で、3つの現像処理情報が取得され、これら3つの現像処理情報は、それぞれ、下記に例示する第1、第2および第3の現像処理パラメータ属性情報を有するものとする。
第1の現像処理パラメータ属性情報の例を下記に示す。
prm_appID=9
prm_sizeofPrm=2000
prm_year=2001
prm_month=3
prm_date=4
prm_hour=10
prm_minute=2
prm_second=55
prm_appPcPhysicalAddress=02-03-0A-0B-0C-01
prm_appPath=C:\ProgramFiles\App\App_0004.exe
prm_appVer=1.0.0.2
prm_importance=5
prm_author=UserA
prm_viewer=UserB
第2の現像処理パラメータ属性情報の例を下記に示す。
prm_appID=2
prm_sizeofPrm=3000
prm_year=2004
prm_month=10
prm_date=30
prm_hour=15
prm_minute=8
prm_second=42
prm_appPcPhysicalAddress=NULL
prm_appPath=http://server.co.jp/service/App_002
prm_appVer=1.1.0.5
prm_importance=5
prm_author=UserA
prm_viewer=UserB
第3の現像処理パラメータ属性情報の例を下記に示す。
prm_appID=9
prm_sizeofPrm=5000
prm_year=2006
prm_month=9
prm_date=1
prm_hour=19
prm_minute=25
prm_second=11
prm_appPcPhysicalAddress=NULL
prm_appPath=http://server.co.jp/service/App_004
prm_appVer=1.2.0.8
prm_importance=5
prm_author=UserA
prm_viewer=UserB
第1の現像処理パラメータ属性情報では、作成または更新日時が2001年3月4日、10時2分5秒となっている。第2の現像処理パラメータ属性情報では、作成または更新日時が2004年10月30日、15時8分423秒となっている。また、第3の現像処理パラメータ属性情報では、作成または更新日時が2006年9月1日、19時25分11秒となっている。第3の現像処理パラメータ属性情報に最も新しい作成または更新日時が示されているので、この第3の現像処理パラメータ属性情報に対応する現像処理パラメータを、RAW画像データの現像処理に用いることに決定する。
なお、S1002にて、現像処理情報が1つしか取得できなかった場合には、比較するまでもなく一意に現像処理パラメータを決定する。
次のS1015で、S1004で現像処理パラメータの決定に成功したか否かが判定され、若し、現像処理パラメータの決定に成功したと判定されたら、処理はS1005に移行される。
S1005では、S1004で決定した現像処理パラメータに対応する現像処理パラメータ属性情報に含まれるパスprm_appPathに基づき、当該現像処理パラメータに関連付けれられた現像処理ソフトウェアが検索される。検索は、例えば検索手段としてのCPU401により行われる。
S1005での検索結果に基づき、次のS1006で、パスprm_appPathに示される位置で現像処理ソフトウェアが見つかり、且つ、当該現像処理ソフトウェアが使用可能であるか否かが判定される。現像処理ソフトウェアが使用可能か否かの判定は、例えば当該現像処理ソフトウェアに対するアクセス権限や、当該現像処理ソフトウェアが現在使用中であるか否かなどに基づき判定することが考えられる。また、パスがネットワーク上のアドレスを示している場合は、接続先の情報処理装置(例えばサーバ装置)が起動されているか否かでも、判定できる。
若し、パスprm_appPathに示される位置で現像処理ソフトウェアが見つかり、且つ、当該現像処理ソフトウェアが使用可能であると判定されたら、処理はS1009に移行される。
S1009では、現像処理に用いると決定された現像処理ソフトウェアにより、S1004で決定された現像処理パラメータを用いて、当該現像処理パラメータが含まれる画像ファイルに格納されるRAW画像データの現像処理が行われるように制御する。現像処理ソフトウェアにおける画像ファイルの再生方法および現像処理方法は、図6を用いて説明した通りである。
より具体的には、S1009では、現像処理に用いると決定された現像処理ソフトウェアに対して、処理対象の画像ファイルまたは画像ファイルを特定できる情報を、通知手段としてのCPU401が渡す(通知する)。一例として、現像処理ソフトウェアは、実行ファイルに対してファイル名を引数にして実行を命令するコマンドを与えることで、当該現像処理ソフトウェアに対して画像ファイルまたは画像ファイルを特定する情報を渡すことができるものとする。このコマンドの例を、下記に示す。
C:\ProgramFiles\App\App_0001.exe "C:\Sample\IMG_0001.RAW"
この例では、パスprm_appPath=C:\ProgramFiles\App\App_0001.exeで示される現像処理ソフトウェアに対して、画像ファイルのパス「C:\Sample\IMG_0001.RAW」を引数として渡している。
なお、パスprm_appPathにおいて、先頭の「C:」は、このパスprm_appPathが画像管理ソフトウェアが動作するコンピュータ上のパスであることを示すものとする。すなわち、現像処理ソフトウェアのパスprm_appPath=C:\ProgramFiles\App\App_0001.exeは、この現像処理ソフトウェアが画像管理ソフトウェアと同一のコンピュータ上で動作することを意味している。これは、画像ファイルのパスに関しても同様である。
現像処理ソフトウェアのパスprm_appPathとしてURLを用いることで、外部装置上で動作する現像処理ソフトウェアに対して、画像ファイルまたは画像ファイルを特定する情報を渡すことができるものとする。例えば、画像管理ソフトウェアが動作するコンピュータとネットワーク接続されたサーバ装置上で動作する現像処理ソフトウェアに対して、画像ファイルまたは画像ファイルを特定する情報を渡すことが考えられる。この場合、当該サーバ装置上の現像処理ソフトウェアで、現像処理を実行させることができる。このコマンドの例を、下記に示す。
http://server.co.jp/service/App_004 "C:\Sample\IMG_0001.RAW"
この例では、URLで記述されるパスprm_appPath=http://server.co.jp/service/App_004で示される現像処理ソフトウェアに対して、画像ファイルのパス「C:\Sample\IMG_0001.RAW」を引数として渡している。この場合、画像ファイルは、パス「C:\Sample\IMG_0001.RAW」からURL「http://server.co.jp/service/App_004」に対して、ネットワークを介して送信される。
またS1009では、現像処理に用いると決定された現像処理ソフトウェアに対して、S1004で決定された現像処理パラメータを通知手段としてのCPU401が渡す(通知する)。渡す情報は、現像処理パラメータ自体ではなく、処理対象の画像ファイルに付加された現像処理情報のうち、S1004で決定された現像処理パラメータがどれであるかを特定する情報であってもよい。
S1009で、上述のようにして、RAW画像データの現像処理方法を指定するコマンドが現像処理ソフトウェアに対して渡されると、処理はS1010に移行され、画像管理ソフトウェアでの一連の処理が終了される。
上述したS1003で、若し、現像処理情報の取得に失敗したと判定されたら、処理はS1101に移行される。例えば、現像処理情報が画像ファイルに付加されていなかったり、その他の何らかの理由で現像処理情報が取得できなかった場合に、現像処理情報の取得に失敗したと判定される。
また、上述したS1015で、若し、現像処理パラメータの決定に失敗したと判定されたら、S1016でその旨示す表示がなされ、処理がS1011に移行される。S1016では、例えば「現像処理パラメータが決定できませんでした。撮像時の情報で画像を再生します。」という警告が表示される。
S1011では、処理対象の画像ファイルの撮影情報領域301に格納される撮影情報における撮像装置の機種を示す情報に基づき、現像処理ソフトウェアの検索を行う。一例として、撮像装置の機種と、当該現像処理ソフトウェアに対応する現像処理ソフトウェアとを関連付けたテーブルである現像処理ソフトウェアリストを参照する。この現像処理ソフトウェアリストは、例えばハードディスク405に格納され、画像管理ソフトウェアに読み出されて用いられる。
図12は、現像処理ソフトウェアリストの一例の構成を示す。図12の例では、現像処理ソフトウェアリストは、「ID」、「アクセス方法」、「名称」、「対応機種」、「現像処理時間」、「状態」、「待ち時間」および「通信時間」の各項目からなり、項目「ID」の値に他の各項目の値が対応付けられる。なお、現像処理ソフトウェアリストは、上述の各項目に限らず、さらに他の項目を有してもよい。
項目「ID」は、現像処理ソフトウェアを識別するための識別情報が格納され、現像処理パラメータ属性情報の識別情報prm_appIDに対応する。項目「アクセス方法」は、現像処理ソフトウェアのパスが格納され、現像処理パラメータ属性情報のパスprm_appPathに対応する。項目「名前」は、現像処理ソフトウェアの名称が格納される。項目「対応機種」は、現像処理ソフトウェアが対応可能な撮像装置の機種名が格納される。項目「現像処理時間」に格納される値は、例えば現像処理ソフトウェアが所定サイズのRAW画像データの現像処理に要すると推定される時間が格納される。
なお、これら「ID」、「アクセス方法」、「名称」、「対応機種」および「現像処理時間」の各項目は、現像処理ソフトウェアに対して固定的な情報であって、予め取得し現像処理ソフトウェアリストに登録することができる。ユーザが入力装置407を用いてデータを入力することにより登録してもよい。
項目「状態」は、現像処理ソフトウェアの現在の状態が格納される。現像処理ソフトウェアの状態は、例えば、この現像処理ソフトウェアとの通信の可否や、この現像処理ソフトウェアが現在新たなRAW画像データの現像処理を可能か否かを示す情報からなる。項目「待ち時間」は、現像処理ソフトウェアが現像処理を開始可能となるまでの時間が格納される。項目「通信時間」は、画像管理ソフトウェアと現像処理ソフトウェアとの間でなされる通信(片方向または往復)に要すると推定される時間が格納される。
なお、これら「状態」、「待ち時間」および「通信時間」の各項目は、リアルタイムまたは一定間隔など所定のタイミングで随時、書き換えられる。例えば、画像管理ソフトウェアは、現像処理ソフトウェアリストに登録される各現像処理ソフトウェアと所定のタイミングで通信を行い、「状態」、「待ち時間」および「通信時間」の各項目に格納する値をそれぞれ取得することが考えられる。
現像処理ソフトウェアリストは、画像管理ソフトウェアが参照できれば、ハードディスク405に格納されていなくてもよい。例えば、固定的な情報に関しては、通信I/F421を用いた通信により、ネットワークを介してサーバ装置から取得してもよい。これに限らず、固定的な情報に関しては、CD−ROMやDVD−ROMといった記録媒体に記録された状態で提供される現像処理ソフトウェアリストを、光ディスクドライブ406などで読み出して用いるようにもできる。
さらに、アクセス方法が既知である現像処理ソフトウェアについてのみ、現像処理ソフトウェアリストに格納するようにしてもよい。この場合の現像処理ソフトウェアリストの例を、図13に示す。図13の例では、現像処理ソフトウェアリストの項目が、「ID」、「アクセス方法」および「名称」のみとされている。この場合、「アクセス方法」の内容に基づき現像処理ソフトウェアと通信を行うことによって、現像処理ソフトウェアから状態や処理能力などの情報を取得し、取得された情報に基づき図12に示す現像処理ソフトウェアリストを更新することが考えられる。
例えば現像処理ソフトウェアがネットワーク接続を介した外部機器で実行される場合には、現像処理ソフトウェアとの間の通信状況(接続/切断)や通信時間などが、動的に変わる可能性がある。また、現像処理ソフトウェアが更新されて機能が向上したり、対応機種が増えたりしている可能性もある。「アクセス方法」に格納される情報を用いて現像処理ソフトウェアと通信を行って、必要な情報を取得することで、通信状況および通信時間の動的な変化や、現像処理ソフトウェアの機能などの更新に対応することができる。
図12の例では、処理対象として選択されている「IMG_001」の画像が、名称が「CameraD」である撮像装置による撮像されたものである場合には、「ID」が「007」である現像処理ソフトウェアが適合することが分かる。また、「IMG_001」の画像が、名称が「CameraB」である撮像装置による撮像されたものである場合には、「ID」が「001」の現像処理ソフトウェアと、「ID」が「009」の現像処理ソフトウェアとが適合することが分かる。
説明を図11のフローチャートに戻す。上述したS1006において、パスprm_appPathに示される位置で現像処理ソフトウェアが見つからないか、または、当該現像処理ソフトウェアが使用可能ではないと判定されたら、処理はS1013に移行される。
S1013では、上述したS1004で決定された現像処理パラメータに対応する現像処理パラメータ属性情報における識別情報prm_appIDに基づき、当該識別情報prm_appIDに適合する現像処理ソフトウェアを検索する。S1013での検索が行われたら、処理はS1014に移行される。
このS1013での現像処理ソフトウェアの検索は、識別情報prm_appIDに基づき、図12を用いて説明した現像処理ソフトウェアリストを参照することで行われる。例えば、上述した第3の現像処理パラメータ属性情報において、識別情報prm_appID=009に基づき現像処理ソフトウェアリストを参照することで、適合する現像処理ソフトウェアが検索される。
なお、現像処理ソフトウェアのメーカ、種類、バージョンなどにより、現像処理ソフトウェアに適用可能な現像処理パラメータが異なることが考えられる。これは、換言すれば、S1004で決定された現像処理パラメータを、全ての現像処理ソフトウェアに適用できる訳ではないことを意味する。そのため、S1004で決定された現像処理パラメータを適用可能な現像処理ソフトウェアを検索する必要があり、この検索処理を、S1013で行う。これは、上述したS1005でも同様である。
S1014では、S1013での検索結果、または、上述したS1011にで検索結果に基づき、検索条件に適合する現像処理ソフトウェアが見つかったか否かが判定される。
若し、検索条件に適合する現像処理ソフトウェアが見つからなかったと判定されたら、処理はS1012に移行され、現像処理ソフトウェアが見つからなかったことを示す警告表示が表示装置420に対してなされる。このとき、ネットワーク接続など、現像処理ソフトウェアが見つからなかったことに対する解決手段を示す情報をさらに行うと、より好ましい。
図14は、S1012において表示される、一例の警告表示を示す。この図14の例では、現像処理パラメータに関連付けられた現像処理ソフトウェアの名称、換言すれば、以前に画質調整に用いられた現像処理ソフトウェアの名称が表示される。それと共に、この現像処理ソフトウェアが見つからなかった旨を示す警告メッセージが表示される。さらにこの例では、当該現像処理パラメータに適合する現像処理ソフトウェアの入手をユーザに促すメッセージが表示される。警告表示がなされると、処理はS1010に移行され、画像管理ソフトウェアにおける一連の処理が終了される。
一方、S1014で、検索条件に適合する現像処理ソフトウェアが見つかったと判定されたら、処理はS1020に移行され、検索条件に適合する現像処理ソフトウェアが複数見つかったか否かが判定される。若し、検索条件に適合する現像処理ソフトウェアが1つのみ、見つかったと判定されたら、処理はS1009に移行され、当該現像処理ソフトウェアにより現像処理が行われる。
一方、S1020で、検索条件に適合する現像処理ソフトウェアが複数、見つかったと判定されたら、処理はS1007に移行される。S1007では、検索条件に適合する複数の現像処理ソフトウェアのうち、1つが選択される。
本実施形態では、検索条件に適合する複数の現像処理ソフトウェアのうち、RAW画像データに対して現像処理を行った結果の出力画像データを取得するまでの時間が最も短いと推定される現像処理ソフトウェアを選択する。出力画像データを取得するまでに必要な推定時間sumTimeは、例えば下記の式(8)により算出される。
sumTime=waitTime+devTime+comTime …(8)
なお、式(8)における各変数の意味を、下記に示す。
waitTime:現像処理を実行するまでの待ち時間
devTime:現像処理そのものに要する現像処理時間
comTime:通信時間
これら式(8)の各変数は、上述した図12の現像処理ソフトウェアリストを参照することで取得される。すなわち、待ち時間waitTime、現像処理時間devTimeおよび通信時間comTimeは、それぞれリストの項目「待ち時間」、「現像処理時間」および「通信時間」を参照することで取得する。
S1014で複数が検索された現像処理ソフトウェアのそれぞれについて、図12の現像処理ソフトウェアリストを参照して式(8)の各変数を取得して、推定時間sumTimeを算出する。そして、算出された推定時間sumTimeを複数の現像処理ソフトウェア間で比較して、最も小さい値の推定時間sumTimeを検出し、検出された推定時間sumTimeに対応する現像処理ソフトウェアを選択する。現像処理ソフトウェアが選択されたら、処理はS1009に移行され、当該現像処理ソフトウェアにより現像処理が行われる。
なお、上述のS1007において、検索条件に適合する複数の現像処理ソフトウェアのうち1つを選択する際の選択基準として、出力画像データを取得するまでに必要となる推定時間を用いたが、これはこの例に限定されない。
例えば、現像処理ソフトウェアのバージョンを示す情報を、現像処理ソフトウェアの選択基準として用いることが考えられる。バージョンを示す情報は、現像処理ソフトウェアに対応する現像処理パラメータ属性情報に格納されるバージョンprm_appVerから取得できる。一例として、現像処理ソフトウェアの名称が同一で、バージョン「1.0.0.5」およびバージョン「1.2.0.3」のようにバージョンの異なる複数の現像処理ソフトウェアが見つかった場合について考える。バージョン情報を、より左側の桁の値が大きいほど新しいバージョンであるとする。この場合、バージョン「1.0.0.5」の現像処理ソフトウェアと、バージョン「1.2.0.3」の画像処理装置では、バージョン「1.2.0.3」の現像処理ソフトウェアの方がバージョンが新しいとして、此方を選択する。
また例えば、上述のS1007において、外部機器で実行されるか否かで現像処理ソフトウェアを選択してもよい。現像処理ソフトウェアが画像管理ソフトウェアが実行される情報処理装置とネットワークを介して接続される外部機器で実行される場合には、画像ファイルを送受信する間や、現像処理ソフトウェアでの現像処理中に通信が何らかの理由で切断してしまう可能性がある。そのため、画像管理ソフトウェアが動作する情報処理装置内と、ネットワーク接続される外部機器内との両方に同一の現像処理ソフトウェアが見つかった場合、情報処理装置内の現像処理ソフトウェアを選択する。
さらに、上述では、S1013の識別情報prm_appIDに基づき現像処理ソフトウェアを検索する処理を、S1005でパスprm_appPathから現像処理ソフトウェアを検索して見つからなかった場合に行うように説明した。これはこの例に限定されず、S1005のパスprm_appPathからの検索処理と、S1013の識別情報prm_appIDに基づく検索処理とを置き換えてもよい。
<現像処理情報の取得方法>
次に、上述した図12のフローチャートのS1002における現像処理情報の取得方法の例について、図15のフローチャートを用いて説明する。なお、ここでの現像処理情報の取得方法は、全体的には、図9を用いて説明した、現像処理ソフトウェアにおける現像処理情報の取得方法と共通する。そこで、煩雑さを避けるために、図15において、上述した図9のフローチャートと共通する処理には同一の符号を付して、詳細な説明を省略する。
図9のS1001で画像ファイルが選択されると、処理が図15のフローチャートに移行する。そして、S1201で、選択された画像ファイルの末尾が探索され、S1201の探索の結果、フッタ識別子およびデータサイズ合計paramSizeSumが検出できるか否か判定を行う(S1202)。若し、検出されなかったら、処理はS1211に移行され、現像処理パラメータのパラメータの読み込みに失敗したか、若しくは、現像処理パラメータが存在しないとされて、一連の処理が終了される。
一方、S1202で、フッタ識別子およびデータサイズ合計paramSizeSumが検出できたと判定されたら、処理はS1203に移行される。S1203で、S1202で検出されたデータサイズ合計paramSizeSumに基づき、パラメータヘッダ領域310の先頭へ探索位置を変更され、ヘッダ識別子が検出されたか否かを判定する(S1204)。若し、ヘッダ識別子が探索されなかったと判定されたら、処理はS1211に移行され、一連の処理が終了される。
一方、S1204で、ヘッダ識別子が検出されたと判定されたら、処理はS1212に移行される。S1212では、ヘッダ識別子の位置に基づきパラメータヘッダ領域310のデータサイズparamSizeOfHeaderを取得し、当該パラメータヘッダ領域310の次の領域に探索位置を変更する。
次のS1205で、探索位置が現像処理情報領域311全てを超えたか否かが判定される。若し、探索位置が現像処理情報領域311を全て超えたと判定されたら、処理はS1209に移行され、現像処理パラメータ読込み処理に成功したというフラグを立てて、読込み処理を終了する。
一方、S1205で、探索位置が現像処理情報領域311を超えていないと判定されたら、処理はS1306に移行される。S1306では、取得手段としてのCPU401に、探索位置から開始される現像処理情報領域#nから現像処理情報が読み込まれる。読み込まれた現像処理情報は、RAM403またはハードディスク405に、処理対象の画像ファイルと関連付けて保持する。そして、処理はS1210に移行され、次の現像処理情報領域#n+1に探索位置を移動させ、処理がS1205の判定処理に戻される。
これらS1205、S1306およびS1210の処理が、現像処理情報領域311に格納される全ての現像処理情報を読み込むまで繰り返される。読み込まれた現像処理情報は、現像処理情報毎に、処理対象の画像ファイルと関連付けて保持される。
なお、本実施形態では、現像処理パラメータおよび現像処理パラメータ属性情報をRAW画像データに付加して画像ファイルを構成するように説明した。これはこの例に限定されない。すなわち、現像処理パラメータおよび現像処理パラメータ属性情報のそれぞれがRAW画像データに関連付けられていればよく、これら現像処理パラメータおよび現像処理パラメータ属性情報がRAW画像データと同一ファイル内に格納されている必要はない。現像処理パラメータおよび現像処理パラメータ属性情報のそれぞれがRAW画像データに関連付けられていれば、例えばこの関連付けの情報に基づき、これらの情報を取得することが可能である。
以上説明したように、本発明の実施形態よれば、任意の現像処理ソフトウェアを用いてRAW画像データの画質調整を行った後に、編集者自身または他者がこのRAW画像データの再生を行う場合に、最適な現像処理パラメータを用いることができる。これにより、編集者が以前の編集時に用いた現像処理パラメータが再生時に無視されることを防止できる。
また、RAW画像データを再生する場合に最適な現像処理ソフトウェアが見つからなかった場合でも、この最適な現像処理ソフトウェアの情報を得ることができる。さらに、以前、編集時に用いた現像処理ソフトウェアの名称を知ることができる。
さらにまた、本発明の実施形態では、画像管理ソフトウェアは、現像処理ソフトウェアの検索を、現像処理ソフトウェアの識別情報に基づき行う。これにより、RAW画像データに対する現像処理を施した情報処理装置とは異なる情報処理装置で当該RAW画像データを再生する場合でも、適切な現像処理ソフトウェアを選択できる。
また、本発明の実施形態では、画像管理ソフトウェアは、RAW画像データの現像処理を行った情報処理装置から、当該現像処理を行った現像処理ソフトウェアを削除してしまった場合にも、外部機器で実行される現像処理ソフトウェアも検索対象にする。そのため、適切な現像処理ソフトウェアを選択できる。
さらに、本発明の実施形態では、画像管理ソフトウェアは、RAW画像データの再生に適合する現像処理ソフトウェアが複数見つかった場合には、その中で、最も出力画像データの取得までにかかる時間が短い現像処理ソフトウェアを選択する。これにより、ユーザは、迅速に適切な現像処理ソフトウェアでRAW画像データを再生することができる。
さらにまた、本発明の実施形態では、画像管理ソフトウェアは、RAW画像データの再生に適合する現像処理ソフトウェアが複数見つかった場合には、その中で、最も新しいバージョンの現像処理ソフトウェアを選択することができる。一般的に、バージョンが新しい現像処理ソフトウェアは、古いバージョンの現像処理ソフトウェアに対して出力画像データの品質が向上したり、現像処理の機能が高機能となっている。したがって、ユーザは、RAW画像データの再生に関し、より高品質な出力画像や、高機能な再生を行うことができる。
また、本発明の実施形態では、画像管理ソフトウェアは、RAW画像データの再生に適合する現像処理ソフトウェアが複数見つかった場合には、動作する現像処理ソフトウェアを選択することができる。これにより、ユーザは、通信を用いて外部機器で現像処理を行うような場合に、通信が途中で切断してしまうリスクを回避することができる。
<第1の変形例>
次に、本発明の実施形態の第1の変形例について説明する。上述した実施形態では、図11のフローチャートのS1004において、複数の現像処理情報から作成日時または更新日時が最新の現像処理情報を選択し、この現像処理情報に含まれる現像処理パラメータを選択するように説明した。
これに対して、本第1の変形例では、ユーザが所望する現像処理パラメータを用いてRAW画像データを再生可能とするために、作成日時または更新日時以外の、他の現像処理パラメータ属性情報を活用して現像処理パラメータを決定する。このとき、他の現像処理パラメータ属性情報に対して、ユーザが優先順位を設定できるようにする。そして、最も高い優先順位が設定された現像処理パラメータ属性情報に基づき現像処理パラメータを選択する。
ここで、他の現像処理パラメータ属性情報とは、例えば「お気に入り度もしくは重要度」、「現像処理パラメータ編集者」および「現像処理パラメータの編集者により指定の閲覧対象者」である。
図16は、本第1の変形例による現像処理パラメータ決定の一例の処理を示すフローチャートである。この図16のフローチャートによる処理は、上述した図11のフローチャートにおけるS1004の処理に該当する。
図11のフローチャートのS1003で現像処理情報の取得に成功すると、図16のフローチャートのS1600に処理が移行される。S1600では、取得された現像処理情報が複数か否かを判定する。若し、取得した現像処理情報が1つであると判定されたら、この図16による現像処理情報決定処理を終了し、図11のフローチャートにおけるS1004の処理へと進む。これは、現像処理情報が1つの場合には、一意に現像処理パラメータが決まるからである。
一方、S1600にて、取得した現像処理情報が複数であると判定されたら、処理はS1614に移行される。S1614では、他の現像処理パラメータ属性情報に対して優先順位を指定するダイアログボックスを表示する。そして、ユーザにどのような優先順位で決めた現像処理パラメータを再生時に用いるか、選択を促す。
図17は、現像処理パラメータの優先順位を指定するユーザインターフェイスによる一例のダイアログボックス700を示す。図17の例では、優先順位を指定する条件が4つ表示され、ユーザは、この4つの条件から1つだけを選択できる。
より具体的には、ダイアログボックス700において、ユーザに優先順位の条件の指定を促すメッセージが領域701に表示される。領域702には、優先順位を指定するためのラジオボタン703A〜703Dが配置されると共に、それぞれのラジオボタン703A〜703Dにより指定される優先順位の説明が表示される。ラジオボタン703A〜703Dは、複数の選択項目から1つだけを選択することができるようになっている。
図17の例では、ラジオボタン703Aは、現像処理パラメータを編集した編集者prm_authorの値に基づき優先順位を指定する。すなわち、ラジオボタン703Aを選択した場合、現像処理パラメータ属性情報に含まれる編集者prm_authorの値が後述する処理で入力される名前と一致する現像処理パラメータ属性情報に対応する現像処理パラメータに、高い優先順位が指定される。
ラジオボタン703Bも同様に、現像処理パラメータの編集者により指定された閲覧対象者prm_viewerの値に基づき優先順位を指定する。すなわち、ラジオボタン703Bを選択した場合、現像処理パラメータ属性情報に含まれる閲覧対象者prm_viewerの値が後述する処理で入力された名前と一致する現像処理パラメータ属性情報に対応する現像処理パラメータに、高い優先順位が指定される。
ラジオボタン703Cは、現像処理パラメータ属性情報に含まれるお気に入り度prm_importanceに基づき優先順位を指定する。例えば、現像処理パラメータ属性情報に含まれるお気に入り度prm_importanceが高い現像処理パラメータ属性情報に対応する現像処理パラメータに対して、より高い優先順位を指定する。
また、ラジオボタン703Dは、現像処理パラメータ属性情報に含まれる作成または更新日時情報(prm_year、prm_month、prm_day、prm_hour、prm_minuteおよびprm_second)に基づき優先順位を指定する。例えば、現像処理パラメータ属性情報に含まれる、作成日時または更新日時が新しい現像処理パラメータ属性情報に対応する現像処理パラメータに、より高い優先順位が指定される。
ラジオボタン703A〜703Dの何れかが選択され、OKボタン704が操作されると、処理がS1601に移行される。S1601では、ラジオボタン703Aが選択されたか否か、すなわち、編集者prm_authorに基づき優先順位を指定するか否かが判定される。若し、ラジオボタン703Aが選択され編集者prm_authorに基づき優先順位を指定すると判定されたら、処理はS1602に移行される。
S1602では、図18に例示されるような、編集者名を入力するためのダイアログボックスが表示され、ユーザに対して編集者名の入力が促される。ユーザにより編集者名が入力され、OKボタンが操作されると入力が完了され、処理がS1603に移行される。入力された編集者名は、編集者情報として例えばRAM403に記憶される。
S1603では、S1602で入力された編集者名と一致する編集者prm_authorの値を持つ現像処理パラメータ属性情報を含む現像処理情報が全て検索される。検索が終了すると、処理はS1611に移行される。
上述したS1601で、ラジオボタン703Aが選択されておらず編集者prm_authorに基づき優先順位を指定しないと判定されたら、処理はS1604に移行される。S1604では、ラジオボタン703Bが選択されたか否か、すなわち、閲覧対象者prm_viewerに基づき優先順位を指定するか否かが判定される。若し、ラジオボタン703Bが選択され閲覧対象者prm_viewerに基づき優先順を指定すると判定されたら、処理はS1605に移行される。
S1605では、図19に例示されるような、閲覧対象者名を入力するためのダイアログボックスが表示され、ユーザに対して閲覧対象者名の入力が促される。ユーザにより閲覧対象者名が入力され、OKボタンが操作されると入力が完了され、処理がS1606に移行される。入力された閲覧対象者名は、閲覧対象者情報として例えばRAM403に記憶される。
なお、S1605で閲覧対象者名の入力を省略することもできる。この場合には、例えば画像管理ソフトウェアや画像管理ソフトウェアが動作する情報処理装置のアカウント情報などから、現在のユーザを閲覧対象者として自動的に設定してもよい。
S1606では、S1605で入力された閲覧対象者名と一致する閲覧対象者prm_viewerを持つ現像処理パラメータ属性情報を含む現像処理情報が全て検索される。検索が終了すると、処理はS1611に移行される。
上述したS1604で、ラジオボタン703Bが選択されておらず閲覧対象者prm_viewerに基づき優先順位を指定しないと判定されたら、処理はS1607に移行される。S1607では、ラジオボタン703Cが選択されたか否か、すなわち、お気に入り度prm_importanceに基づき優先順位を指定するか否かが判定される。若し、ラジオボタン703Cが選択されお気に入り度prm_importanceに基づき優先順位を指定すると判定されたら、処理はS1608に移行する。
S1608では、お気に入り度prm_importanceの値が最も高い現像処理パラメータ属性情報を含む現像処理情報が全て検索される。検索が終了すると、処理はS1611に移行される。
S1611では、上述したS1603,S1606またはS1608で、検索条件に合致する現像処理パラメータ属性情報を含む現像処理情報が1つだけ見つかったか否かが判定される。若し、1つだけ見つかったと判定されたら、S1603,S1606またはS1608で検索された現像処理情報に含まれる現像処理パラメータを、RAW画像データの現像処理に用いる現像処理パラメータに決定する。そして、処理は図11のS1015に移行される。
一方、S1608で、検索条件に合致する現像処理パラメータ属性情報を含む現像処理情報が見つからないか、もしくは、複数、見つかったと判定されたら、処理はS1612に移行される。
一方、上述したS1607で、ラジオボタン703Cが選択されておらずお気に入り度prm_importanceに基づき優先順位を指定しないと判定されたら、処理はS1609に移行される。S1609では、ラジオボタン703Dが選択されたか否かに基づき優先順位を指定するか否かが判定される。すなわち、作成または更新日時を示す日時情報(prm_year、prm_month、prm_day、prm_hour、prm_minuteおよびprm_second)に基づき優先順位を指定するか否かが判定される。若し、ラジオボタン703Dが選択され作成日時または更新日時に基づき優先順位を指定すると判定されたら、処理はS1612に移行される。
S1612では、作成日時または更新日時が最新の現像処理パラメータ属性情報を含む現像処理情報が検索される。そして、検索の結果得られた現像処理情報に含まれる現像処理パラメータを、RAW画像データの現像処理に用いる現像処理パラメータに決定する。そして、処理は図11のS1015に移行される。
なお、上述のS1609にて、ラジオボタン703Dが選択されていない、すなわち、作成日時または更新日時に基づき優先順位を指定しないと判定された場合、上述のS1614において優先順位の指定が入力されていないことになる。この場合、処理がS1610に移行され、例えば「条件を選択してください」などの警告を表示する。そして、処理をS1614に戻して、再度ユーザの優先順位指定を促す。
なお、上述では、最も優先順位の高い条件のみを選択するように説明したが、これはこの例に限定されない。例えば、複数の条件に順次、優先順位を指定することもできる。一例として、図20に例示されるようなダイアログボックス800を用意する。そして、領域801に表示される複数の条件から、例えばマウスの右クリック操作などで1つを選択し、上下の矢印ボタン802で選択した条件の順位を変更する。OKボタン803が操作されると、領域801に対する条件の並び順に従い、各条件の優先順位が指定される。
また、このとき、優先順位が1番から4番まで指定されていた場合には、S1612の処理を、作成日付もしくは更新日付ではなく、2番目の優先順位の条件で検索する。そして、若しそれでも複数の現像処理パラメータが見つかってしまった場合には、3番目の優先順位の条件、という具合に処理を繰り返すことにより、現像処理パラメータを1つに決定する。
本第1の変形例によれば、S1600の判定により、現像処理パラメータが複数あった場合のみ、S1614にて優先順位を指定するようにしている。そのため、例えば1の現像処理情報しか付加されておらず、現像処理パラメータが一意に決定できる画像ファイルについては、優先順位指定の操作は生じない。
また、一度指定した優先順位は、例えば画像管理ソフトウェアの設定が初期化されるまで、ハードディスク405などの記憶媒体に記憶しておいてもよい。これにより、画像管理ソフトウェアの設定が初期化されるまで、優先順位の指定し直しの作業は発生せず、ユーザの作業が効率化する。
以上説明したように、本発明の変形例によれば、RAW画像データを再生する手段を、ユーザが所望する現像処理パラメータに基づき提供できる。
具体的な例としては、現像処理パラメータの編集者が、自身の最新の画像調整結果に基づきRAW画像データを再生させたい場合、優先順位の条件に編集者名を指定する。こうすることで、編集者名の条件に合致する現像処理パラメータのうち最新の現像処理パラメータに基づき現像処理ソフトウェアが自動的に検索され、当該現像処理パラメータを用いてRAW画像データの再生を行うことができる。
また、他の例としては、RAW画像データの画質調整を行った編集者(A氏とする)が、当該RAW画像データを再生した出力画像を見て欲しい人(B氏とする)に対して画像ファイルを送信した場合について考える。この場合、A氏は、現像処理パラメータ属性情報の閲覧対象者prm_viewerとしてB氏の名前を指定する。この画像ファイルを受け取ったB氏は、優先順位の条件に閲覧対象者名を指定し、図19のダイアログボックスで自分の名前を入力する。こうすることで、閲覧対象者名の条件に合致する現像処理パラメータのうち最新の現像処理パラメータに基づき現像処理パラメータが自動的に検索され、検索された現像処理ソフトウェアを用いてRAW画像データの再生が行われる。したがって、A氏がB氏に見せたい最新の現像処理パラメータに基づき検索された現像処理ソフトウェアにより、当該現像処理パラメータを用いてRAW画像データの再生を行うことができる。
また、さらに他の例としては、現像処理パラメータの編集者が、自分が最も気に入っている画質調整結果でRAW画像データの再生を行いたい場合には、優先順位の条件にお気に入り度を指定する。こうすることで、編集者が最も気に入っている(または最も重要だと考えている)現像処理パラメータに基づき検索された現像処理ソフトウェアにより、当該現像処理パラメータを用いてRAW画像データの再生を行うことができる。
さらに、図20を用いて説明したようにして、条件毎に優先順位を指定することで、RAW画像データの再生に用いる現像処理パラメータが複数の条件を加味した上で決定される。そして、このようにして決定された現像処理パラメータに基づき現像処理ソフトウェアを自動的に検索し、検索された現像処理ソフトウェアにより当該現像処理パラメータを用いてRAW画像データの再生を行うことができる。
また、現像処理パラメータ属性情報に、条件に該当する項目が含まれていない場合には、他の条件で検索することになる。例えば、編集者名が現像処理パラメータ属性情報に含まれていない場合には、S1611において、編集者名が一致する現像処理パラメータ属性情報が見つからないと判定される。そのため、S1612で、作成日付もしくは更新日付により現像処理パラメータ属性情報を検索することになる。
なお、作成日時または更新日時は、秒prm_secondまで含めれば、複数の現像処理パラメータ属性情報間において、互いに情報が重複する可能性が極めて小さいと考えられる。したがって、作成日時または更新日時の年、月、日、時、分および秒の全ての条件を比較することで、現像処理パラメータを1つに決定することができる。若し、作成日時または更新日時を構成する上述の全ての条件が重複した場合には、同一の現像処理パラメータが関連付けられているという推測に基づき、1つを選択すればよい。
<第2の変形例>
次に、本発明の実施形態の第2の変形例について説明する。上述した実施形態では、図11のS1007において、RAW画像データに対して現像処理を行った結果の出力画像データを取得するまでの時間が最も短いと推定される現像処理ソフトウェアを選択している。これに対して、本第2の変形例では、現像処理ソフトウェアの特性に基づき優先順位を設定し、適合する現像処理ソフトウェアをユーザに対して提示する。
図21は、本第2の変形例によるユーザインターフェイスを構成する一例のダイアログボックス2100を示す。本第2の変形例では、現像手段選択手段としてのこのダイアログボックス2100を用いて、現像処理ソフトウェアの特性に基づき優先順位を設定して、適合する現像処理ソフトウェアをユーザに提示する。
ダイアログボックス2100において、上部の領域2110に、ユーザに対するメッセージが表示される。領域2110の下に特性リスト2111が配置され、特性リスト2111の下にOKボタン2105が配置される。
特性リスト2111は、現像処理ソフトウェアについて、名称と各特性とが行方向(横方向)に対応付けられて表示される。図21の例では、現像処理ソフトウェアの特性として、当該現像処理ソフトウェアのバージョン、動作機器および出力推定時間が定義されている。動作機器は、その現像処理ソフトウェアが動作する機器を示す情報である。また、出力推定時間は、その現像処理ソフトウェアがRAW画像データの現像処理を行って出力画像データが出力されるまでの推定時間である。
特性リスト2111において、例えば現像処理ソフトウェアの名称が同一でも、他の項目が異なる場合には、異なる現像処理ソフトウェアとして扱われる。図21の例では、名称が「AAA」の現像処理ソフトウェアは、バージョンが「1.1.0.9」のものと、バージョンが「6.0.0.8」のもとのが、別の現像処理ソフトウェアとして表示されている。名称が同一で動作機器が異なる場合も、同様である。
この特性リスト2111のデータは、図12を用いて説明した現像処理ソフトウェアリストと同様に、予め作成されて例えばハードディスク405に格納され、画像管理ソフトウェアに読み出されて用いられる。
なお、上述の実施形態による現像処理ソフトウェアリストの項目と、この特性リスト2111の項目とを包含するテーブルを用意するようにしてもよい。一例として、画像管理ソフトウェアは、起動されるとこのテーブルの「アクセス方法」の項目に示される各パスにアクセスを試み、利用可能な現像処理ソフトウェアに関する情報を得る。そして、利用可能と判定された現像処理ソフトウェアについて、特性リスト2111の情報を生成する。上述した実施形態において、現像処理ソフトウェアリストも同様にして生成できる。
図21において、枠2109は、現像処理ソフトウェアを選択している状態を示す選択枠である。現像処理ソフトウェアの名称をマウスなどのポインティングデバイスで直接的に指定するか、キーボードの上下矢印ボタンで枠2109を移動させることにより、現像処理ソフトウェアの選択を行う。
特性リスト2111において、項目名の右側に配置される白抜きおよび黒い逆三角形は、対応する項目に格納される値に基づき行を並べ替えるソートボタンである。直前に操作されたソートボタンは、図21では、黒い逆三角形で表現されている。
ソートボタン2106は、バージョン番号で降順に表示順を変えるためのバージョン番号ソートボタンである。バージョン番号において、左側の桁の数が大きいほど新しいバージョンであると判定し、ソートボタン2106が操作された場合には、新しいバージョンが上になるように、行全体を並び替える。すなわち、各項目のそれぞれで並べ替えを行っても、現像処理ソフトウェアの名称と各特性との対応関係が変わらないように、各項目が連動して並べ替えが行われる。
ソートボタン2107は、動作機器で通信が切断する可能性が少ない順に表示順を並び替えるための動作機器ソートボタンである。動作機器の通信切断の可能性は、その動作機器の構成や、画像管理ソフトウェアとその動作機器との間の通信手段などに依存すると考えられる。ここでは、この画像管理ソフトウェアが実行される情報処理装置、カメラ、サーバの順で通信が切断しにくいと判定し、ソートボタン2107の操作に応じて通信が切断しにくい機器が上になるように、行全体を並び替える。
ソートボタン2108は、出力推定時間が短い順に表示順を並び替えるための出力推定時間ソートボタンである。ソートボタン2107が操作された場合には出力推定時間が短いものが上になるように、行全体を並び替える。
各ソートボタン2106、2107および2108は、排他的に制御される。例えば、図21の如くソートボタン2108が操作された状態(黒い逆三角形で示す)で、ソートボタン2106をユーザが操作した場合には、ソートボタン2106が操作された状態になり、ソートボタン2108は操作状態から解除される。それと共に、ソートボタン2106に対応する項目(バージョン番号)に基づきリストの並び替えが行われる。
OKボタン2105は、選択された現像処理ソフトウェアの決定を確定するためのボタンである。OKボタン2105が操作されると、枠2109で囲まれている現像処理ソフトウェアの選択が確定する。
以上説明したように、本第2の変形例によれば、ユーザは、適合する現像処理ソフトウェアの特性を把握した上で、所望の現像処理ソフトウェアを選択することができる。また、ユーザが所望する条件によりリストの表示順を並び替えることで、所望する現像処理ソフトウェアを効率よく選択することができる。
<他の実施形態>
上述の実施形態は、システムあるいは装置のコンピュータ(或いはCPU、MPU等)によりソフトウェア的に実現することも可能である。したがって、上述の実施形態をコンピュータで実現するために、当該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。
上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。
そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。
つまり、上述の実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。
また、上述の実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。
さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。