以下、添付図面を参照して本発明の好適且つ例示的な実施形態について詳細に説明する。
(デジタルカメラの概観図)
図1は、本発明の実施形態に係る撮像装置の一例としてのデジタルカメラ100の外観斜視図である。
デジタルカメラ100は、画像や各種情報を表示する画像表示部28、電源オン、オフを切り替える電源スイッチ72、シャッタボタン61、各種モードを切り替えるモード切替ボタン60、ユーザーからの各種操作を受け付ける操作部70を有する。また、デジタルカメラ100は、コネクタ112を有する接続ケーブル111を通じて外部機器と接続可能である。メモリカードやハードディスク等のリムーバブル記録媒体200は、記録媒体スロット201に装着される。図ではリムーバブル記録媒体200が見えているが、記録媒体スロット201に装着された状態ではデジタルカメラ100内に収納される。記録媒体スロット201は、リムーバブル記録媒体200を着脱する時以外は開閉式の蓋203により覆われている。
(ブロック図)
図2は、デジタルカメラ100の機能構成例を示すブロック図である。
103はレンズ、101は絞り機能を備えるシャッタである。撮像部22はCCDセンサやCMOSイメージセンサ等の光電変換素子を備え、レンズ103が結像する光学像を画素単位のアナログ電気信号に変換する。A/D変換器23は、撮像部22が出力するアナログ信号をデジタルデータに変換する。バリア102は、電源オフ時にデジタルカメラ100のレンズ103の前面を覆ってレンズ103の汚れや破損を防止する。
タイミング発生部12は、メモリ制御部15及びシステム制御部50の制御に従い、撮像部22、A/D変換器23、D/A変換器13にクロック信号や制御信号を供給する。画像処理部24は、A/D変換器23又はメモリ制御部15からのデジタルデータに対し画素補間や縮小といったリサイズ処理や色変換処理を行う。
画像処理部24ではまた、A/D変換器23からのデジタルデータ(画像データ)を用いて所定の演算処理を行い、得られた演算結果に基づいてシステム制御部50が露光制御、測距制御を行う。このようにして、TTL(スルー・ザ・レンズ)方式のAF(オートフォーカス)処理、AE(自動露出)処理、EF(フラッシュプリ発光)処理が実現される。画像処理部24では更に、画像データを用いて所定の演算処理を行い、得られた演算結果に基づいてTTL方式のAWB(オートホワイトバランス)処理も行っている。
A/D変換器23からの画像データは、画像処理部24及びメモリ制御部15を介して、或いは、メモリ制御部15のみを介して、メモリ32に書き込まれる。メモリ32は、所定枚数の静止画像や所定時間の動画像および音声を格納するのに十分な記憶容量を備えている。
圧縮伸張部16は、適応離散コサイン変換(ADCT)等を用い、画像データを圧縮符号化したり、圧縮符号化された画像データを伸張したりする。具体的には、圧縮伸張部16は、シャッタボタン61の全押しをトリガとして、メモリ32に格納された画像データを読み込んで圧縮符号化し、符号化結果をメモリ32に書き戻す。圧縮伸張部16によりメモリ32に書き戻された符号化画像データは、システム制御部50のファイル部においてファイル化され、インターフェース18を介して記録媒体200に記録される。また、圧縮伸張部16は、記録部19などからメモリ32に読み込まれた符号化画像データを読み込んで伸張処理を行い、伸張した画像データをメモリ32に書き戻す。
また、メモリ32は画像表示用のメモリを兼ねており、メモリ32に書き込まれた表示用の画像データはメモリ制御部15及びD/A変換器13を介し、LCD等の画像表示部28により表示される。
システム制御部50は、例えばCPUであり、システムメモリ52に記憶されたプログラムを実行して各部を制御することにより、デジタルカメラ100の全体動作を制御する。システムメモリ52は不揮発性メモリであり、システム制御部50が実行するプログラムやプログラムの実行に使用する定数、変数等を記憶する。
不揮発性メモリ56は電気的に消去・記録可能なメモリであり、例えばEEPROM等が用いられる。
第1シャッタスイッチSW1(62)、第2シャッタスイッチSW2(64)、操作部70は、ユーザがシステム制御部50に各種の動作指示を入力するための操作手段である。
モード切替ボタン60はデジタルカメラ100の動作モードをユーザが切り替えるための操作部材である。本実施形態において動作モードは、撮影動作を行う撮影モードと、記録媒体200に記録された画像を再生する再生モードとを有する。撮影モードには、さらに静止画撮影モード、連続撮影(連写)モード、動画モードなどが含まれる。
第1シャッタスイッチSW1(62)は、シャッタボタン61の操作途中(半押し)でオンする。第1シャッタスイッチSW1(62)のオンにより、システム制御部50はAF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の動作を開始もしくは開始を指示する。
第2シャッタスイッチSW2(64)は、シャッタボタン61の操作完了(全押し)でオンする。第2シャッタスイッチSW2(64)のオンにより、システム制御部50は、撮像部22からの信号読み出しから記録媒体200に画像データを書き込むまでの一連の撮像処理を開始する。
操作部70は各種ボタンやタッチパネル等からなる。具体的には、操作部70は、消去ボタンや、メニューボタン、SETボタン、十字に配置された4方向キー、接続されたプリンタに対する印刷機能を実現する印刷予約ボタン、消去ボタンなどから構成される。メニューボタンが押されるとシステム制御部50はシステムメモリからメニューデータを読み出し、各種設定が可能なメニュー画面を画像表示部28に表示させる。ユーザは、画像表示部28に表示されたメニュー画面と、4方向キーやSETボタンとを用いて直感的に各種設定を行うことができる。
電源スイッチ72は、デジタルカメラ100の電源オン、電源オフをユーザが指示するためのスイッチである。
電源制御部39は電池検出回路、DC−DCコンバータ、通電するブロックを切り替えるスイッチ回路等により構成され、電池の装着の有無、電池の種類、電池残量などの電池情報の検出を行う。また、電源制御部39は、電池情報の検出結果及びシステム制御部50の指示に基づいてDC−DCコンバータを制御し、必要な電圧を必要な期間、記録媒体200を含む各部へ供給する。
電源部30は、アルカリ電池やリチウム電池等の一次電池、NiCd電池やNiMH電池、Li電池等の二次電池、ACアダプター等からなる。電源部30と電源制御部39とはコネクタ33及び34を通じて接続される。
RTC(Real Time Clock)40は、電源制御部39とは別の内部電源を有し、電源部30からの電源供給がない状態であっても、内部電源により動作を継続する。システム制御部50は電源オン時にRTC40より取得した日時を用いてタイマー制御する。
インターフェース18はコネクタ35を有し、コネクタ35にメモリカードやハードディスク等の記録媒体200のコネクタ36が接続されて、記録媒体200とデジタルカメラ100とが電気的及び機械的に接続される。記録媒体着脱検知部98は、コネクタ35に記録媒体200が装着されているか否かを検知する。
記録媒体200はデジタルカメラ100に対して着脱可能である。記録媒体200は、半導体メモリや磁気ディスク等から構成される記録部19と、デジタルカメラ100と接続するためのコネクタ36及びインターフェース37を備えている。
通信部110は、RS−232CやUSB、IEEE1394、P1284、SCSI、モデム、LAN、無線通信、等の各種通信処理を行う。通信部110は、実行する通信処理に応じたコネクタ(無線通信の場合はアンテナ)113を有する。
コネクタ113を通じて通信部110と接続される外部装置に特に制限はないが、本実施形態ではプリンタが接続されるものとする。この場合、記録媒体200に記録された画像ファイルをプリンタに転送することで、デジタルカメラ100から直接プリンタを用いて画像印刷を行うダイレクトプリントも実現可能である。また記録媒体200に画像ファイルとともに印刷予約管理ファイル(DPOF印刷予約ファイル)が存在する場合、その管理ファイルに指定された予約情報に基づく印刷機能も実現可能である。DPOF印刷予約ファイルについては後述する。
以下、本実施形態のデジタルカメラ100の動作について説明する。なお、以下の動作は特に記載がない場合、全てシステム制御部50がシステムメモリ52に格納されたプログラムを読み出し、演算処理や制御を行うことにより実現される。
(全体処理フロー)
図3は、本実施形態のデジタルカメラ100の全体的な動作を説明するフローチャートである。
電源スイッチ72がオンになり、電源部30から電源が供給されると、S301でシステム制御部50はフラグや制御変数等を初期化する初期設定処理を行う。次にS303でシステム制御部50は、モード切替ボタン60の設定位置を検出し、撮影モードに設定されていたならばS304へ進む。このS304における撮影モード処理の詳細は後述する。
システム制御部50は、S304で撮影モードでなければ、S311で再生モードか判定し、再生モードならば再生モード処理S312に進む。再生モード処理の詳細は後述する。再生モードでもなければS305へ進み、システム制御部50は選択されたモードに応じた処理を実行し、処理を終えたならばS306に進む。S305で実行する処理としては、通信モードにおいて記録媒体200に格納されたファイルの送受信を行う処理などがある。
S306でシステム制御部50は、電源スイッチ72の位置を判断し、オンであればS303に戻り、オフであればS307へ進んで所定の終了処理を行う。S307で行う終了処理には、例えば以下のような処理が含まれる。
・画像表示部28の表示を終了状態に変更、
・レンズバリア102を閉じて撮像部を保護、
・フラグや制御変数等を含むパラメータや設定値、設定モードを不揮発性メモリ56に記録、
・電源供給が不要な部分への電源供給の遮断。
システム制御部50は、終了処理が完了するとS308に進み処理を終了する。
(撮影モードフロー)
図4は、図3のS304で実施する撮影モード処理の詳細を説明するフローチャートである。
システム制御部50は、まず、撮影モードを開始するとスルー表示を開始させる(S116)。スルー表示では、撮像部22で連続的に撮像を行い、撮像した画像を順次画像表示部28に表示させる。これにより、画像表示部28を電子ビューファインダ(EVF)として機能させることができる。
続いてS117では、電源制御部39により、電源部30の残容量(電源部30が電池の場合)を検出する。また、記録媒体着脱検知部98により、記録媒体200の装着有無を検知する。また、記録媒体200が装着されていれば、システム制御部50はその残容量を検出する。システム制御部50は、電源部30の残容量や記録媒体の残容量がデジタルカメラ100の動作上問題があるか否かを判断する(S117)。そして、システム制御部50は、問題があると判断されたならば、画像表示部28や図示しないスピーカを通じて警告メッセージを出力し(S115)、S116へ戻る。
電源部30及び記録媒体200の残容量に問題がないと判断される場合、システム制御部50は第1シャッタスイッチSW1(62)の状態を検出する(S119)。第1シャッタスイッチSW1(62)がオフであれば、システム制御部50はオンになるまでスルー表示を継続しながら待機する。
第1シャッタスイッチSW1(62)がオンになると、システム制御部50は、測距処理を行って撮影レンズ103の焦点を被写体に合わせ、測光処理を行って絞り値及びシャッタ時間を決定する(S122)。システム制御部50は、測光処理に於いて、必要であればフラッシュの設定も行う。
測距・測光処理を終えると、システム制御部50は第2シャッタスイッチSW2(64)の状態を検出する(S125)。第2シャッタスイッチSW2(64)がオフであれば、システム制御部50は第1シャッタスイッチSW1(62)の状態を検出する(S126)。
そして、システム制御部50は、第1シャッタスイッチSW1(62)がオンであれば、S125、S126の処理を繰り返し、第1シャッタスイッチSW1(62)がオフになっていればS119に戻る。
第2シャッタスイッチSW2(64)がオンになると、システム制御部50は画像表示部28を固定色表示状態に設定して(S128)、S129に進む。
S129でシステム制御部50は撮像処理を行う。具体的には、システム制御部50はまず、撮像部22、A/D変換器23、画像処理部24、メモリ制御部15を介して、メモリ32に撮影した画像データを書き込む露光処理を制御する。なお、上述したとおり、A/D変換器23から画像処理部24を経由せず直接メモリ制御部15へ画像データが転送される場合もある。次に、システム制御部50は、メモリ制御部15そして必要に応じて画像処理部24を用いて、メモリ32に書き込まれた画像データを読み出して各種処理を行う現像処理を制御する。この、露光処理及び現像処理からなる撮影処理の詳細については後述する。
次にシステム制御部50は、メモリ32に書き込んだ画像データを読み出し、メモリ制御部15、D/A変換器13を介して転送し、画像表示部28に表示させるクイックレビュー表示を行う(S131)。
クイックレビュー表示後、システム制御部50は撮影処理で得られた画像データを画像ファイルとして記録媒体200に書き込む記録処理を実行する(S133)。この記録処理の詳細は後述する。
S133の記録処理が終了した後、第2シャッタスイッチSW2(64)の状態を検出し(S135)、オンである間は画像表示部28におけるクイックレビュー表示を継続させてもよい(S134)。この機能をレックレビュー機能と呼ぶ。
一方、記録処理の終了時、又はレックレビュー表示(S134)の後、第2シャッタスイッチSW2(64)のオフ状態が検出されたら(S135)、システム制御部50は所定のミニマムレビュー時間が経過したか判断する(S137)。
ミニマムビュー時間が経過したら、システム制御部50は、画像表示部28の表示状態を再度スルー表示状態に設定して(S139)、第1シャッタスイッチSW1(62)の状態を検出する(S141)。なお、クイックレビュー表示後、直ちに画像表示部28をスルー表示状態に復帰するようにしても良い。
S141で第1シャッタスイッチSW1(62)がオンであれば、システム制御部50は、S125に戻って次の撮影に備える。
一方、第1シャッタスイッチSW1(62)がオフであれば、システム制御部50は、S119へ処理を戻し、撮影待機状態に戻る。
(撮影処理)
図5は、本実施形態のデジタルカメラ100が図4のS129で行う撮影処理の詳細を説明するフローチャートである。
システム制御部50は、撮影開始時にその日時を図示しないシステムタイマより取得し、システムメモリ52に記憶する(S300)。続いてシステムメモリ52或いはメモリ32に記憶される測光データに従い、シャッタ101を絞り値に応じて開放して撮像部22の露光を開始する(S301、S302)。
システム制御部50は、測光データに従って撮像部22の露光終了を待ち(S305)、シャッタ101を閉じる(S306)。そして、システム制御部50は、撮像部22から電荷信号を読み出し、A/D変換器23、画像処理部24、メモリ制御部15を介して、或いはA/D変換器23から直接メモリ制御部15を介して、メモリ32に撮影画像のデータを書き込む(S307)。ここまでが露光処理である。
次にシステム制御部50は、メモリ32に書き込まれた画像データを読み出し、画像処理部24を用いて画素補間やホワイトバランス処理、さらに圧縮伸張部16を用いた圧縮処理等の現像処理(S308)を行う。そして、システム制御部50は、現像処理が終了した画像データを、メモリ32に書き込み、撮影処理を終了する。なお、RAWデータの撮影モードでは、現像処理は行わない。
(記録処理)
図6は、本実施形態のデジタルカメラ100が図4のS133で行う記録処理の詳細を説明するフローチャートである。
記録処理を開始すると、システム制御部50は、例えばDCFに準拠したファイル名生成ルールに則りファイル名を生成する(S402)。またシステム制御部50は、撮影処理の開始時にS300でシステムメモリ52に記憶した日時情報を取得する(S403)。
生成したファイルを格納するディレクトリが記録媒体200に存在しない場合(S404)、格納するディレクトリを作成する(S405)。S406でシステム制御部50は、S402において生成したファイル名ならびにS403で取得した日時情報を用い、ディレクトリエントリを作成する。
続いてシステム制御部50は、撮影処理の結果としてメモリ32に格納された画像データに対し、予め定められたファイルフォーマット(例えばExif)に準拠したファイルヘッダを作成する(S407)。ファイルヘッダには、撮影日時等の撮影時条件や、ファイルサイズ等の情報が含められる。
以上のように生成される画像ファイルの構成については後述する。ファイルヘッダの生成完了後、システム制御部50は画像ファイルを記録媒体200に記録し(S408)、記録処理を終了する。
(ファイル構造)
図7は、本実施形態のデジタルカメラ100が記録処理において記録媒体200に記録する画像ファイルの構造を示す図である。
画像ファイル701は先頭に画像開始を示すマーカーSOI(702)、アプリケーションマーカーセグメント1APP1(730)、画像データ(740)、画像ファイルの最後を示すマーカーEOI(717)を有する。
アプリケーションマーカーセグメント1(APP1)(730)は、
・APP1マーカ(703)
・APP1のサイズ(704)、
・APP1の識別コード(705)、
・画像の作成日時を示す DateTime(706)、
・画像データが生成された日時を示す DateTimeOriginal(707)、
・その他の撮影情報(709)、および
・サムネイル画像(710)から構成される。
S133の記録処理において画像ファイルを生成する場合、DateTime(706)および DateTimeOriginal(707)には、撮影処理の開始時にS300においてシステムメモリ52に記憶した撮影日時情報を格納する。
また、画像ファイル内に記録される画像データ(740)は、
・量子化テーブルDQT(712)、
・ハフマンテーブルDHT(713)、
・フレーム開始マーカーSOF(714)、
・スキャン開始マーカー(715)および、
・圧縮データ(716)で構成される。
図7に示すファイル構造はExif規格に準拠しており、APP1(703)コードならびに、識別コード(705)を参照することで、Exifに準拠した画像ファイルであることが認識可能である。
(レックレビュー)
図8は、本実施形態のデジタルカメラ100が図4のS134で行うレックレビュー動作の詳細を説明するフローチャートである。
まずS1000でシステム制御部50は、図4のS129で撮影した画像を画像表示部28に表示する。なお、S1000で行う表示処理は、クイックレビュー(S131)と同様であるが、拡大表示を実行するために、クイックレビュー表示に用いる画像よりも解像度の高い記録用画像を用いて表示する点で異なる。図9(a)は、S1000で画像表示部28に表示されるレックレビュー画面1000の一例を示す。
S1001でシステム制御部50は、操作部70に含まれる印刷予約ボタンの状態を検出し、オンならばS1002へオフならばS1006へ処理を進める。S1002でシステム制御部50は、DPOF印刷予約ファイルの簡易解析(DPOF簡易解析)を行う。なお、このDPOF簡易解析の詳細は図11を参照して後述する。
S1003でシステム制御部50は、S1002でDPOF簡易解析した結果を出力した印刷予約確認画面を画像表示部28に表示する。印刷予約確認画面1011の例を図9(b)に示す。印刷予約確認画面1011には、印刷予約ボタン1012とキャンセルボタン1013が含まれる。ユーザは操作部70に含まれる方向キーを用い、所望のボタンを選択状態にし、SETボタンを押下することで、システム制御部50に指示を与えることができる。
S1004でシステム制御部50は、操作部70のSETボタンが押下された際の設定を検出する。そして、SETボタンが押下された時点で印刷予約ボタン1012が選択状態であれば処理をS1005へ進め、キャンセルボタン1013が選択状態であればレックレビュー処理を終了する。
S1005でシステム制御部50は、後述するDPOF印刷予約ファイルのDPOF簡易編集を行い、レックレビュー処理を終了する。
一方、S1006でシステム制御部50は、操作部70の消去ボタンの状態を検出し、消去ボタンがオンであればS1007へ、オフであればS1010へ処理を進める。
S1007でシステム制御部50は、消去確認画面を画像表示部28に表示する。図9(c)に、消去確認画面1021の一例を示す。消去確認画面1021には、消去ボタン1022とキャンセルボタン1023が含まれる。
S1008でシステム制御部50は、操作部70のSETボタンが押下された際の設定を検出する。そして、SETボタンが押下された時点で消去ボタン1022が選択状態であれば処理をS1009へ進め、キャンセルボタン1023が選択状態であればレックレビュー処理を終了する。
S1009でシステム制御部50は、撮影画像の消去を行い、レックレビュー処理を終了する。なお、消去する画像に対する印刷予約がされている場合、システム制御部50はDPOF印刷予約ファイル内の、消去した画像に対する印刷予約の削除も合わせて行う。画像消去処理の詳細は後述する。
また、S1010でシステム制御部50は、操作部70に含まれる、印刷予約ボタン又は消去ボタン以外の状態を検出し、該当する処理を実行してレックレビュー処理を終了する。S1010で実行される処理の例としては、不図示の撮影画像の拡大・縮小ボタンの状態に応じた撮影画像のスケーリング処理がある。なお、レックレビュー表示には解像度の高い記録画像を使用しているため、撮影画像の拡大表示を行った場合においても、記録画像と同等の解像度で画像の細部を確認することができる。
(DPOF印刷予約ファイル)
図10には、本実施形態におけるDPOF印刷予約ファイルの構成例及び解析結果例を示す図である。
図10(a)は、DPOF印刷予約ファイル1100の構成例を示す図である。DPOF印刷予約ファイル1100は大きく分けて、1つのHDR1101と複数のJOB1102から構成されている。
JOB1102は、DPOFに準拠して記述されている。例えば、印刷する画像のファイル名1103として『MG SRC = "../DCIM/100GANON/IMG_0001.JPG』が記述されている。なお、DCFでは、ファイル名に対して100から900までのディレクトリ番号と、それらのディレクトリ内の画像名として0001から9999までの番号が付与される。従って、ディレクトリ名と画像名から重複することのない900×9999通りの画像ID(100-0001〜900-9999)を作成することができる。
また、図10(b)は、図10(a)に示すDPOF印刷予約ファイル1100の解析結果である解析情報1111の例を示す図である。解析情報1111はメモリ32上に記録される。
解析情報1111は、DPOF印刷予約ファイル1100に含まれるJOBの全てに共通する情報と、個々のJOBについての情報を含んでいる。
全JOB共通情報としては、簡易解析済みか否かを表す簡易解析済みフラグ1105、詳細解析済みか否かを表す詳細解析済みフラグ1106、解析エラーの有無を表す解析エラーフラグ1107が記録される。
図10(b)の例では、簡易解析済みフラグ1105、詳細解析済みフラグ1106、解析エラーフラグ1107のいずれも『OFF』が記録されている。これは、簡易解析済みでなく、詳細解析済みでなく、解析エラーが無いことを表している。
また、解析情報1111は、各JOB1102について、DPOF印刷予約ファイル1100の先頭からの位置(Job_Offset1108),サイズ(Job_Size1109)、関係する画像ID1110を含んでいる。図10(b)の例では、JOB1に関し、Job_Offset1108として『69』、Job_Size1109として『119』、画像ID1110として『100−0001』が記録されている。
(DPOF簡易解析)
図11に、本実施形態のデジタルカメラ100が図8のS1002で行うDPOF簡易解析動作の詳細を説明するフローチャートである。
まずS1100でシステム制御部50は、記録媒体200内のファイルを調べ、DPOF印刷予約ファイル1100が存在すればS1101に進み、存在しなければ処理を終了する。S1101でシステム制御部50は、メモリ32に記録された、DPOF印刷予約ファイル1100に対応した解析情報1111の簡易解析済みフラグ1112を参照し、DPOF印刷予約ファイル1100が簡易解析済みか否かを判別する。
システム制御部50は、簡易解析済みである(簡易解析済みフラグ1112がON)と判別した場合、DPOF簡易解析処理を終了し、簡易解析済みでない(簡易解析済みフラグ1112がOFF)と判別した場合、処理をS1102へ進める。
S1102でシステム制御部50は、記録媒体200からメモリ32にDPOF印刷予約ファイル1100を読み出す。S1103でシステム制御部50は、DPOF印刷予約ファイル1100に含まれるJOB1102の1つを、例えば先頭のJOBから取り出す。
次に、S1104で、システム制御部50は、取り出したJOBがDPOFに準拠した正しい文法で記述されているか判定する。そして、文法が正しい場合、システム制御部50は、S1105でファイル名1103から画像ID1110へ変換し、S1106で画像ID1110を解析情報1111に記録する。
例えば、図10(a)のDPOF印刷予約ファイル1100の場合、システム制御部50は、ファイル名1103『../DCIM/100GANON/IMG_0001.JPG』を読み出し、画像ID1110として『100−0001』へと変換し、解析情報1111に記録する。
S1108でシステム制御部50は、取り出したJOBからJob_Offset1108を算出し、解析情報1111に記録する。例えば、図10(a)のDPOF印刷予約ファイル1100の場合、JOB1102の先頭位置に基づいて計算したオフセット『69』を、解析情報1111のJob_Offset1108に設定する。S1109でシステム制御部50は、取り出したJOBからJob_Sizeを算出し、解析情報1111に記録する。例えば、図10(a)のDPOF印刷予約ファイルの場合、JOB1102のサイズ『119』を解析情報1111のJob_Size1109に設定する。
一方、S1104でJOBの文法が正しくない場合、システム制御部50は、解析エラーがあったことを記録するため、S1107で解析エラーフラグ1107をONにし、S1110に進む。
S1110でシステム制御部50は、読み出したDPOF印刷予約ファイル1100に含まれる全てのJOBの解析が終わったかを判断する。そして、システム制御部50は、全てのJOBの解析が終わっている場合、S1112で簡易解析済みフラグ1105をONにし、DPOF簡易解析処理を終了する。
一方、S1110で解析されていないJOBが残っている場合、システム制御部50はS1111で次のJOBを参照し、参照したJOBをS1103に戻って取り出す。
このように、簡易解析では、後述する簡易編集に必要な情報である画像ID1110、Job_Offset1108、Job_Size1109等の情報を解析する。そのため、後述する詳細解析のように処理に時間を要する画像IDの有無確認をしないで、速やかに簡易編集を完了することができる。その結果、次のシャッタチャンスを逃すことなく速やかに撮影処理に移行できる。
換言すれば、1画像ごとのアクセスを伴う詳細解析および詳細編集に関しては、操作の応答性に対する要求が撮影モードよりも一般に余裕がある再生モードで行う。そして、撮影指示が行われる可能性があり、かつその際の応答性が要求される撮影モードにおいては、画像に対するアクセスを伴わない簡易解析及び簡易編集を行い、直ちに撮影指示に対応可能な状態に復帰する。そのため、撮影モードにおいて印刷予約を行った場合など、管理ファイル(DPOFファイル)の生成や更新が必要となっても、直ちに撮影を行うことが可能となり、ユーザはシャッタチャンスを逃すことがない。
999枚の画像に対して、1画像ずつ画像の有無・画像フォーマットを解析して管理ファイルを書き換える詳細解析及び詳細編集を行った場合、処理には例えば約15秒程度必要となる。しかしながら、簡易解析及び後述する簡易編集を行うことで、1秒にも満たない間に処理を終えることができる。これは、既に998枚が印刷指定されている状態から印刷対象の撮影画像を1枚追加指定する場合も同様である。
(消去)
図12は、本実施形態のデジタルカメラ100における画像消去処理の詳細を説明するフローチャートである。
この動作は図8のS1009におけるレックレビュー中の画像消去処理や、後述する図20のS4038における再生モードでの画像消去処理の動作に対応する。
S2001でシステム制御部50は、削除対象の画像をメモリ32や記録媒体200から削除する。
S2002でシステム制御部50は、DPOF簡易編集(削除)を行い、削除した画像がDPOF印刷予約ファイル1100に登録されていれば簡易編集によって削除する。削除する際は複数の設定ファイルをメンテナンスすることになる。
(DPOF簡易編集)
図13は、本実施形態のデジタルカメラ100におけるDPOF簡易編集処理の詳細を説明するフローチャートである。
この動作は、図8のS1005におけるDPOF簡易編集処理や、後述する図20のS4034におけるDPOF簡易編集処理の動作に対応する。
S2011で、システム制御部50は、印刷予約や削除の対象として指定されている画像が、DPOF印刷予約ファイル1100に登録されている画像か否かを判別する。そして、登録されていなければ、システム制御部50はS2012でDPOF簡易編集(挿入)処理によってDPOF印刷予約ファイル1100に登録する。一方、既に登録されていれば、システム制御部50はS2013でDPOF簡易編集(削除)処理によりDPOF印刷予約ファイル1100から削除する。
図14は、図13のS2012におけるDPOF簡易編集(挿入)処理の詳細を説明するフローチャートである。
S2101でシステム制御部50は、図7に示した画像ファイルヘッダのAPP1 ID705、DateTimeOriginal707から画像情報(画像ID1110)を取得する。
S2102でシステム制御部50は、メモリ32内の解析情報1111から、取得した画像ID1110に対応するJOBをDPOF印刷予約ファイル1100のどこに挿入するかを判定する。また、判定した挿入位置に対応したJob_Offset1108も決定する。
S2103でシステム制御部50は、S2101で取得した画像情報を元に、DPOFに準拠したJOBを作成し、メモリ32上の不図示のバッファに記憶する。また、作成したJOBからJob_Size1109も決定する。JOBは複数作成してもよい。
S2104でシステム制御部50は、決定したJob_Offset1108及びJob_Size1109を用いて、既存のDPOF印刷予約ファイル1100にJOBを挿入する編集処理を行う。ここでは、DPOF印刷予約ファイル1100の書き換えではなく、作成したJOBの挿入だけを行う。つまり、既存のファイルに含まれる情報を維持し、書き換えは行わないので、速やかにDPOF印刷予約ファイル1100の編集処理を完了し、素早く次の動作に移行できるメリットがある。
JOBの挿入により、挿入位置よりも後に存在するJOBのJob_Offsetの値に影響を与えるため、S2105でシステム制御部50は、解析結果1111におけるJob_Offset1108の値を更新する。
図15は、図14のS2102における挿入位置判定処理の詳細を説明するフローチャートである。
通常、画像ID1110は昇順に並んでいる。S2131でシステム制御部50は、挿入する画像の画像ID1110よりも比較した画像ID1110が小さい場合は、S2132で次の画像ID1110と比較を行う。これにより、最後の画像ID1110と比較を行なった場合にS2131からS2133へ処理が移行する。
S2133でシステム制御部50は、最後に比較した画像ID1110のJob_Offset1108に、対応するJob_Size1109を加えた位置を、挿入する画像のJob_Offsetとして算出する。複数の書式を1ファイルに記載できる場合、挿入位置を複数定めることができる。新規にDPOF印刷予約ファイル1100を作成して画像を挿入(追加)する際は最後のJob_Offsetが存在しないため、挿入位置のJob_Offset=0としておく。
図16は、図12のS2002及び図13のS2013におけるDPOF簡易編集(削除)処理の詳細を説明するフローチャートである。
S2111でシステム制御部50は、削除対象の画像に対応する画像ID1110を取得する。
S2112でシステム制御部50は、S2111で取得した画像ID1110から、解析結果1111を参照し、削除するJOBのJob_Offset1108およびJob_Size1109を判定する。
S2113でシステム制御部50は、S2112で削除画像から情報が取得できていればS2114へ処理を進め、情報が取得できなければ処理を終了する。
S2114でシステム制御部50は、削除するJob_Offset1108およびJob_Size1109から、既存のDPOF印刷予約ファイル1100に対する削除処理を行う。書き換えではなく削除だけを行うので、他の情報はそのまま残り、かつ速やかにDPOF印刷予約ファイル1100の編集処理を完了し、素早く次の動作に移行できるメリットがある。
JOBの削除により、削除位置よりも後に存在するJOBのJob_Offset1108の値に影響を与えるため、解析結果1111におけるJob_Offset1108の値を更新する。
図17は、図16のS2112における削除位置判定処理の詳細を説明するフローチャートである。
S2141でシステム制御部50は、削除する画像の画像ID1110が比較した画像ID1110と一致した場合は、比較した画像IDを削除対象と見なし、S2141からS2143へ処理が移行する。一致しなければシステム制御部50はS2142で次の画像ID1110と比較を行う。
S2143では、比較した画像IDに対応するJob_Offset1108にJob_Size1109を加えた位置を削除する画像のJob_Offsetとして算出する。複数の書式を1ファイルに記載できる場合、挿入位置を複数定めることができる。最後の画像まで比較して画像IDが一致しなかった場合は、削除対象の画像ID1110に関して消去すべき情報がなかったと見なす。
図18は、図14のS2104、図16のS2114における簡易ファイル編集処理の詳細を説明するフローチャートである。
S2210でシステム制御部50は、編集するDPOF印刷予約ファイル1100をオープンする。新規にDPOF印刷予約ファイル1100を作成して挿入(追加)する場合は、ここでファイルを作成する。
S2211でシステム制御部50はDPOFに従い、機器のモデル名・作成日付を用いて、ヘッダを作成する。
S2212でシステム制御部50は、DPOF印刷予約ファイル1100に元々記載されているヘッダサイズと新たに作成したヘッダサイズを比較する。そして、両者が異なっていれば、システム制御部50はS2213で挿入位置までヘッダを読み出し、作成したヘッダを書き込む。両者のサイズが同じであればシステム制御部50はS2214で挿入位置を探し出し、その位置に作成したヘッダを書き込む。
ファイルサイズよりも簡易編集用に使用するメモリ32上の不図示のバッファが大きければ、書き込みは1回で済むが、メモリ32を効率良く使用する観点から、こまめに書き込みをする可能性があることを想定している。また書き込みはクラスタ単位で行うことにより書き込み速度を速めている。
S2215でシステム制御部50は、JOBの挿入を行うか否かを判定し、挿入する場合はS2216へ、削除する場合にはS2217へ処理を進める。
S2216でシステム制御部50は、S2103(図14)で作成したJOBの挿入を行う。
S2217でシステム制御部50は、S2112(図16)で取得した削除位置(Job_Offset1108およびJob_Size1109)に基づいてJOBの削除を行う。
S2216,S2217はあくまでもバイナリレベルで行うものとする。削除することによりJOB数がゼロ(JOBが存在しない状態)で、かつ、解析エラーフラグがOFFの場合は、システム制御部50はDPOF印刷予約ファイル1100に登録されたJOBが無くなったとみなしてファイルを削除する。解析エラーフラグがONの場合は、不正な記述があると見なしJOBの削除だけに留め、ファイルは削除しない。
S2218でシステム制御部50は、挿入又は削除すべきJOBがまだ存在するか否かを判定し、まだ存在する場合はS2219へ、存在しない場合はS2220へ、それぞれ処理を進める。
S2219でシステム制御部50は次の挿入位置まで読み出し、その読み出した情報を書き込む。
S2220でシステム制御部50はDPOF印刷予約ファイル1100の最後まで読み出し、その読み出した情報を書き込む。
S2221でシステム制御部50は、編集したDPOF印刷予約ファイル1100をクローズする。
(再生処理)
図19は、本実施形態のデジタルカメラ100が図3のS312で行う再生モード処理の詳細を説明するフローチャートである。
S4001でシステム制御部50は、記録媒体200から最新の画像情報を取得する。最新の画像情報の取得を総枚数計算や検索リスト作成よりも先に行うことで、再生モードに入るとすばやく画像表示ができるというメリットがある。
S4002でシステム制御部50はS4001で画像情報が取得できたかチェックする。取得できない場合は、画像が1枚もないものと見なし、処理をS4010へ進める。なお、メディア不良により画像情報が取得できない場合には、エラーメッセージの出力などを行っても良い。S4001において画像情報が取得できた場合に、システム制御部50は、少なくとも画像が1枚はあると判断し、処理をS4003へ進める。
S4003でシステム制御部50はS4001で取得した画像情報を元に記録媒体200から最新画像の読み込みを行う。
S4004でシステム制御部50は読み込んだ最新画像の画像の撮影情報や属性情報などのファイル解析処理を行う。ファイル解析処理の詳細は後述する。
S4005でシステム制御部50は読み込んだ最新画像を画像表示部28に表示させる。さらに撮影情報や属性情報なども設定に応じて表示する。また、S4004のファイル解析結果に応じて、ファイルの一部が壊れているなど画像データに不正があると判断される場合には、エラー表示も合わせて行う。
S4006でシステム制御部50は記録媒体200に記録されている画像の総枚数の計算処理を開始する。この処理は他の処理と並行して実行可能であり、完了を待たずに次の処理に進むことができる。このようにすることで、多くの画像が記録媒体200に記録され、総枚数計算に時間がかかるような場合でも画像の閲覧が可能となる。
S4007でシステム制御部50は検索リスト(検索情報)の作成を開始する。検索リストとは画像ファイルに付加されている属性情報を管理するリストである。あらかじめ検索リストを作成しておくことで、属性ごとの再生や消去といった処理をすばやく行うことが可能となる。検索リスト作成処理も総枚数計算と同様、他の処理と並行して実行可能であり、完了を待たずに次の処理に進むことができる。
S4011でシステム制御部50はDPOF印刷予約ファイル1100に関する詳細解析が完了しているか否かを示す詳細解析済みフラグ1106をチェックする。初回の再生起動時ではこのフラグはOFFのままであるため、S4008においてDPOF印刷予約ファイル1100の詳細解析を行う。本処理については後述する。
DPOF詳細解析処理の完了後、もしくはS4011において詳細解析済みフラグがONであった場合、システム制御部50はS4009で入力待ち状態に入る。
また、S4002で画像が1枚もないと判断された場合、システム制御部50は「画像がありません」等のメッセージ表示を伴う、画像なし表示(S4010)処理を行った後、S4009の入力待ち状態へ処理を進める。
(再生モード入力待ち状態)
図20は、図19のS4009における再生モード入力待ち状態処理の詳細を説明するフローチャートである。
S4020でシステム制御部50は、入力があるかどうかをチェックする。ここでチェックする入力には、ユーザによるボタンや電池蓋に対する操作や、電源電圧の低下などを知らせるイベントや、並行処理していた検索リスト作成処理の完了通知や、DPOF詳細解析処理の完了通知などが含まれる。
何も入力がなければ、システム制御部50は入力があるまでS4020の処理を継続する。何かしら入力があった場合、システム制御部50はS4021で、入力が画像送りボタンの操作かどうかを調べる。入力が画像送りボタンの操作だった場合、システム制御部50はS4022で、次の表示画像を記録媒体200からメモリ32へ読み込む。画像送りのボタンは例えば右方向ボタンと左方向ボタンのように、対向する方向を示すボタンで形成されており、操作されたボタンに応じて次表示画像が決定される。
S4023でシステム制御部50は、S4022で読み込んだ画像に対して撮影情報や属性情報などのファイル解析処理を行う。
S4024でシステム制御部50は、S4022で読み込んだ画像を、必要に応じて圧縮/伸張部16を用いて復号化したのち、画像表示部28に表示させる。さらに撮影情報や属性情報なども設定に応じて表示する。また、S4023のファイル解析処理の結果、ファイルの一部が壊れているなど画像データに異常がある場合、エラー表示も合わせて行う。表示が完了するとS4020の入力待ち状態へ戻る。
S4021で入力が画像送りボタンの操作でなかった場合、システム制御部50はS4025で入力が終了ボタンの操作かどうかを判定する。
入力が終了ボタンの操作であると判定された場合は、システム制御部50はS4026で検索リスト作成処理を終了する。システム制御部50は、この時点で検索リストが作成途中ならば処理を中断させ、作成が完了していれば何も行わない。
続いて、システム制御部50はS4032において、DPOF詳細解析処理を終了する。この処理においても、解析完了前であれば処理を中断し、解析完了していれば何も行わない。次にS4027でシステム制御部50は画像の総枚数計算処理を終了する。ここでも、総枚数計算中であれば処理を中断し、完了していれば何も行わない。その後、再生モードを終了し、図3のS306へ進む。
S4025で入力が終了ボタンの操作ではなかった場合、S4029でシステム制御部50は、S4006で開始した画像の総枚数計算処理が完了しているかチェックする。まだ完了していない場合はS4020の入力待ち状態へ戻る。このとき、まだ完了していない旨を伝えるメッセージやアイコンの表示を行ってもよい。
S4029で画像の総枚数計算処理が完了していると判定された場合、システム制御部50はS4030で、S4007で開始した検索リスト作成処理が完了しているかどうかをチェックする。まだ完了していない場合はS4020の入力待ち状態へ戻る。このとき、総枚数計算が完了していないとき同様、検索リストの作成がまだ完了していない旨を伝えるメッセージやアイコンの表示を行ってもよい。
S4030で検索リストの作成処理が完了していると判定された場合、システム制御部50はS4031で、S4008で開始したDPOF印刷予約ファイル1100の詳細解析処理が完了しているかどうかをチェックする。まだ完了していない場合はS4020の入力待ち状態へ戻る。
S4031でDPOF印刷予約ファイル1100の詳細解析が完了していると判定される場合、システム制御部50はS4035で、入力が消去ボタンの操作かどうか調べる。消去ボタンの操作であれば、S4038で、システム制御部50は図12〜図17を参照して説明した消去処理を行う。上述の通り、S4038の消去処理では、画像ファイルの消去と、対応するDPOF印刷予約ファイル1100の編集の双方を行う。
次に、システム制御部50はS4037で、消去処理後の画像の総枚数をチェックする。総枚数が0になっていた場合、システム制御部50はS4032で、図19のS4010と同様、「画像がありません」等のメッセージ表示を伴う画像なし表示処理を行った後、S4020の入力待ち状態へ移る。
一方、消去処理後も画像が残っている場合、システム制御部50はS4039で次の表示画像を読み込む。ここで読み込む画像は、消去された画像の次の画像IDを有する画像とする。また、最新画像が消去された場合は、消去された画像よりひとつ前の画像IDを有する画像を読み込む。S4040でシステム制御部50は、S4039で読み込んだ画像に対し、S4023と同様のファイル解析処理を行い、読み込んだ画像をS4041で画像表示部28に表示する。画像に加え、撮影情報や属性情報なども設定に応じて表示する。また、S4040のファイル解析処理の結果、ファイルの一部が壊れているなど画像データに異常がある場合、エラー表示も合わせて行う。表示が完了するとS4020の入力待ち状態へ戻る。
S4035において入力が消去ボタンの操作でない場合、システム制御部50はS4033で、現在表示中の画像の印刷予約を指示する印刷予約ボタンの操作かどうかを判定する。印刷予約ボタンの操作であると判定した場合、システム制御部50はS4034において、図14及び図15を用いて説明したDPOF印刷予約ファイル1100の簡易編集処理を行う。現在表示中の画像に対する印刷指定を行う処理のため、高速な処理が可能である。システム制御部50は、DPOF印刷予約ファイル1100の簡易編集処理が完了すると、S4020の入力待ち状態へ移る。
S4043において、システム制御部50は、入力がメニューボタンの操作かどうかを判定する。メニューボタンの操作であると判定される場合、システム制御部50はS4044で印刷メニュー処理を行う。本処理に関しては後述する。
S4043で入力がメニューボタンの操作でないと判定された場合、システム制御部50はS4042で、入力に応じた処理を実行する。ここで実行する処理には、例えばマルチ再生への切り替えなどがある。
(ファイル解析)
次に、図19のS4010、図20のS4023、S4040におけるファイル解析処理の詳細について、図21に示すフローチャートを用いて説明する。
S3301において、システム制御部50は、解析対象の画像ファイルに、撮影情報、分類情報等の属性情報が記載されたファイルヘッダが含まれるか否か判定する。そのようなファイルヘッダがあると判定された場合、システム制御部50は、ファイルヘッダからS3302で撮影情報を、S3303で分類情報をそれぞれ取得する。
ここで撮影情報とは、撮影日時に関する情報や、撮影時の撮影モードなどの情報である。一方、分類情報とは、画像検索に用いるための識別情報のことで、Exifのタグ情報などのことを指す。続いてS3304において、システム制御部50は、画像のファイルフォーマットに関する情報や、そのファイルフォーマットに基づき抽出される、画像本体開始位置、画像圧縮方法等の画像情報を取得する。
次に、S3305において、システム制御部50は、前述した撮影情報、分類情報、画像情報等が検索管理ファイルの内容と同じか否かを判定する。同じであると判定された場合は、解析処理を終了する。一方、S3305で相違があると判定された場合、システム制御部50は、S3306で検索管理ファイルを取得した情報と合致するように更新し、S3307で検索管理ファイルを記録媒体200に書き出し、解析処理を終了する。
以上のように、再生のために画像ファイルを読み出しヘッダを解析した場合に、同時に検索管理ファイルのファイル単位での照合を行うことにより別途な処理時間をかけることなく検索管理ファイルの詳細な照合及び訂正が可能となる。また、管理ファイル自身の改竄、管理対象ファイルの変更等を検知できなかった場合においても、管理ファイルを正しい値に再構築することが可能となる。
(検索リスト作成)
図22は、図19のS4007で開始する検索リスト作成処理の詳細を説明するフローチャートである。
S4007において検索リスト作成の開始が指示されると、処理はS3101からS3103へ進む。S3103において、システム制御部50は、信頼性未確認ディレクトリの有無を確認する。すべての再生対象ディレクトリに関して信頼性を確認済みであればS3103からS3115へ進み、検索許可フラグ=1をシステムメモリ52に設定し、処理を終える。
一方、S3103で、信頼性未確認のディレクトリがあると判断された場合、システム制御部50は、S3104において当該ディレクトリを信頼性確認をすべき対象ディレクトリに設定する。そして、S3105において、システム制御部50は、対象ディレクトリに対応する検索管理ファイルが記録媒体200に存在するか否かを判定する。存在すると判定された場合、システム制御部50は、S3106において、当該検索管理ファイルをシステムメモリ52に読み込む。S3107において、システム制御部50は、S3106で読み込んだ検索管理ファイルに対して後述する信頼性の確認を行う。そして、その確認の結果、全データに信頼性ありと判定されたならば、処理はS3108からS3114へ進み、対象ディレクトリ信頼性確認済み記憶処理を行う。そして、S3102へ進み、検索リスト作成中断の指示があったかどうかを確認する。
一方、S3107の信頼性確認処理の結果、一部のデータにも信頼性が無いと判定された場合、或いは、S3105において検索管理ファイルがないと判定された場合は、S3111に処理が進む。S3111において、システム制御部50は、ディレクトリ内の全データを再検査対象として検索管理ファイルの生成を実行する。
また、S3107の信頼性確認処理の結果、一部のデータにのみ信頼性が確認された場合は、S3109からS3110に処理が進む。S3110において、システム制御部50は、信頼性の確認されていない一部データを再検査対象として設定する。そして、S3112において、システム制御部50は、再検査対象に設定された画像ファイルについて検索管理ファイルを生成する。
S3112における検索管理ファイルの生成が終了したなら、S3113において、システム制御部50は、生成された検索管理ファイルを記録媒体200に書き出す。例えば、検索管理ファイルを格納するディレクトリ(XXXMSC)を生成し、そのディレクトリの中に生成した検索管理ファイル(M100.CTG、M101.CTG)を格納する。尚、本実施形態では、ディレクトリ毎に検索管理ファイルが生成され、格納される。例えば、M100.CTGはディレクトリ100XXXの検索管理ファイルであり、M101.CTGはディレクトリ101XXXの検索管理ファイルである。そして、S3114において、該当ディレクトリが信頼性確認済みであることをシステムメモリ52に記憶し、S3102に処理を進める。
S3102において、検索リスト作成中断の指示があると判定された場合は、S3101に戻り、再び検索リスト作成の指示を待つ。一方、S3102にて検索リスト作成の中断指示が無いと判定されたならば、S3103へ進み、上記一連の処理を信頼性未確認のディレクトリがなくなるまで続ける。そして、すべての再生対象ディレクトリに対して処理が終了したならば、S3103からS3115へ処理が進み、システム制御部50は、検索許可フラグ=1をシステムメモリ52に設定し、処理を終える。
(信頼性確認処理)
図23は、図22のS3107における信頼性確認処理の詳細を説明するフローチャートである。また、本実施形態による検索管理ファイルの構成例を図25に示す。
まず、S3141において、システム制御部50は、S3106で記録媒体200からシステムメモリ52に読み出した検索管理ファイルの整合性の確認を行う。整合性は、検索管理ファイルに含まれる管理ファイル信頼性情報3202に基づき確認する。図25に示すように、管理ファイル信頼性情報3202は、管理ファイルバージョン、管理ファイルサイズ、管理ファイルチェックサムのような、検索管理ファイル自身の整合性に関する情報であり、検索管理ファイル自体の改ざん有無の確認に使用できる。尚、管理ファイル信頼性情報3202としては、更に、生成時や変更時を示すタイムスタンプ、ハッシュ値等を利用することができる。S3141で整合性が確認できない場合、システム制御部50はS3150においてデータ信頼性なしと判定し、信頼性確認処理を終了する。以上により、検索管理ファイルが改ざんされたことにより正常な検索ができないという事態を防止することが可能となる。
S3141で検索管理ファイルの整合性が確認できた場合、処理はS3142に進む。S3142において、システム制御部50は、システムメモリ52に記憶されたディレクトリエントリ情報を取得する。そして、S3143において、システム制御部50は、記録媒体200から読み出した検索管理ファイルに記載のディレクトリエントリ情報と、S3142で取得したディレクトリエントリ情報とを比較する。ここでは、信頼性確認情報3201(図25)に示すような、最小ファイル番号、最大ファイル番号、ファイル番号総和、タイムスタンプ総和、ファイルサイズ総和、総ファイル数のような対象ディレクトリの構成を示す情報を用いて比較が行われる。尚、本実施形態ではDCFに準拠したファイルシステムの利用を想定してファイル番号をディレクトリエントリ情報としている。しかし、もちろんファイル名やファイル名の文字コードの総和、記録媒体上のディレクトリエントリのハッシュ値等をディレクトリエントリ情報としてもよい。
両者の情報が同一である場合、処理はS3144からS3151へ進み、システム制御部50は、全データ信頼性有りと判定して処理を終了する。すなわち、対象ディレクトリ内のファイル自体の変更、ファイル構成の変更により正常な検索ができないという事態を防止することが可能となる。
一方、S3143の比較の結果、情報が同一でないと判定された場合は、S3152に処理が進む。S3152において、システム制御部50は、管理ファイルにしか存在しないファイルがあるか否かの判定を行う。S3152において、管理ファイルにしか存在しないファイルがあると判定された場合は、S3150に処理が進む。ステップ3152において、管理ファイルにしか存在しないファイルがないと判定された場合は、S3145に処理が進む。
S3145において、システム制御部50は、管理ファイル内と、ディレクトリエントリ情報の両方に存在する共通ファイルがあるかを判定する。共通ファイルがあると判定された場合、システム制御部50は、S3146において、共通ファイル部のディレクトリエントリ情報を記録媒体200から取得する。そして、S3147において、共通ファイル部に関して、検索管理ファイルに記載のディレクトリエントリ情報と比較する。ここでのエントリ情報を用いた比較においては、タイムスタンプ、ファイルサイズ、ファイル名、プロテクト属性、隠し属性、アーカイブ属性等を用いることができる。
共通ファイルにおいてディレクトリエントリ情報が同一と判定されたならば、S3148からS3149へ処理が進む。S3149において、システム制御部50は、一部データ信頼性有りとして処理を抜ける。例えば、パソコン等で記録媒体200に画像が追加され、デジタルカメラ100における撮影画像情報の検索管理ファイルへそれが反映される前に電源遮断等がなされると、一部のファイルのみの情報が管理ファイルに記載されていないような場合が生じる。本実施形態によれば、そのような場合でも、すでに信頼性があると確認されているデータは有効に使用することが可能となる。
S3145で共通ファイルが無いと判定された場合や、S3148にて共通ファイル部の情報が同一でないと判定された場合は、S3150においてデータ信頼性なしと決定され、処理を抜ける。
以上の検索管理処理によれば、記録媒体200内の管理対象ファイルの構成の変更、管理対象ファイル自体の変更を検知して管理ファイルを自動的に再構築することが可能となる。また、記録媒体内の管理対象ファイル構成の変更、管理対象ファイルの変更の検知をディレクトリエントリ上に記載のデータで行う(S3142,S3143)ため、ファイルの内容を参照しないので高速に実行できる。
また、共通ファイルについて変更がなければ、共通ファイルの管理ファイルの情報はそのまま利用される(S3145〜S3149)。このため、本装置以外でディレクトリにファイルが追加された場合や、本装置でディレクトリにファイルを追加し管理ファイルを更新前に本装置の電源を落とした場合等においても、構築済みの管理ファイルを有効に使用することができる。また、管理ファイルの再構築では、共通ファイルに変化がなければ、記録媒体内の管理対象ファイル構成の変更、管理対象ファイルの変更の検知のあったディレクトリのうち、重複しない管理対象ファイルに対してのみ行われる。このため、すでに構築済みのファイル情報については再構築する必要が無く、追加が検出されたファイルのみ再検査を行うことができる。
また、信頼性の確認は検索管理ファイルに自身のファイル属性(図25の3202)を記載し、これを照合することにより行う(S3141)ことを含むので、管理ファイル自身の改竄を検知可能となり、誤った管理を行うことが防止される。また、管理ファイル自身の改竄確認は管理ファイル自身およびの自身のディレクトリエントリ上の情報なので、管理ファイル3203〜3206(図25)の単位で高速に確認が行える(S3143〜S3148)。
(検索管理ファイル生成)
図24は、図22のS3112における検索管理ファイル生成処理の詳細を説明するフローチャートである。以下、図24のフローチャートと図25の検索管理ファイルの構成例を参照して、検索管理ファイル生成処理を説明する。
検索管理ファイルの生成処理が開始されると、まず、S3161において、システム制御部50は、解析ファイルの設定を行う。これは、前述の検索リスト作成処理(図22)により設定されたディレクトリ内の全ファイルもしくは信頼性の確認ができなかった一部の画像ファイルのうち、本処理において未解析の画像ファイルである。
次に、S3162において、システム制御部50は、解析対象の画像ファイルの属性情報がシステムメモリ52内のキャッシュエリアに存在するか否かを判定する。このキャッシュ情報はたとえば画像の撮影時においてシステムメモリ52のキャッシュ領域に保持される。キャッシュ情報があると判断された場合、システム制御部50は、S3163においてキャッシュ情報から属性情報を取得し、S3168において、検索管理ファイルに記載する情報を生成し、登録する。これは、図25の3203のような管理ファイルであり、これは分類情報、撮影情報、被写体情報等を含み、管理ファイルを特定する情報と関連付けて記憶される。尚、管理ファイルを特定する情報として、ファイル名、ファイル番号等をリスト内に記載してもよい。また、リストの並び順によってファイルと関連付けるようにしてもよい。
一方、S3162において、キャッシュに属性情報がないと判断されたならば、処理はS3164へ進む。S3164において、システム制御部50は、対象の画像ファイルを記録媒体200から読み出す。そして、S3165において、この画像ファイルに属性情報の記載されたファイルヘッダがあるか否かを判定する。ファイルヘッダがあると判定された場合、システム制御部50は、ファイルヘッダからS3166で撮影情報を、S3167で分類情報をそれぞれ取得する。S3168において、検索管理ファイルに記載する情報を生成し検索管理ファイルに登録する。
一方、S3165で、属性情報が記載されたファイルヘッダが無いと判断された場合も、システム制御部50は、S3168において、その旨の情報を管理ファイルに登録する。
以上のようにして、S3168で解析ファイルの属性情報が管理ファイルに登録される。そして、S3169において、システム制御部50は、未解析ファイルの有無を確認し、未解析ファイルがあるならば処理をS3161に戻し、未解析ファイルを解析ファイルに設定して上記処理を繰り返す。全ての要求ファイルの解析が終了したならば、システム制御部50は、処理を終える。
以上のように、撮影等でキャッシュ上に存在する属性情報は改めて記録媒体内のファイルを読み出して解析するということをしないので、高速に検索管理ファイルの構築が可能となる。
まず、信頼性確認がなされる前の画像ファイルが消去された場合を説明する。この場合、画像ファイルの消去に伴って当該画像ファイルが属するディレクトリのディレクトリエントリが更新される。従って、検索管理ファイルに記載の信頼性確認情報3201と上記ディレクトリエントリとの間に不整合が生じ、図23における信頼性確認処理において、処理は、S3144からS3152へ進む。消去された画像ファイルはディレクトリエントリに存在しないので、当該画像ファイルは検索管理ファイルにのみ存在することになる。このため、検索管理ファイルのデータは信頼性なしと判定され(S3150)、全データが再検査対象に設定されて検索管理ファイルの生成が行われる(図22のS3111,S3112)。
次に、信頼性確認がなされる前の画像ファイルについて分類情報が変更された場合を説明する。この場合も、画像ファイルの分類情報の変更に伴って当該画像ファイルが属するディレクトリのディレクトリエントリ(タイムスタンプ等)が更新される。従って、検索管理ファイルに記載の信頼性確認情報3201と上記ディレクトリエントリとの間に不整合が生じ、図23の信頼性確認処理において、処理は、S3144からS3152へ進む。分類情報の変更では画像ファイルは消去されていないので、検索管理ファイルにのみ存在する画像ファイルは発生しない。
しかしながら、分類情報が変更されているため、当該画像ファイルに関してはディレクトリエントリと検索管理ファイルに共通に存在する画像ファイルとの間で不整合が生じる。そのため、処理はS3148からS150へ進み、検索管理ファイルのデータは信頼性なしと判定される。その結果、全データが再検査対象に設定されて検索管理ファイルの生成が行われる(図22のS3111,S3112)。
以上のようにして、信頼性確認の前に削除或いは分類情報の変更が行われた画像ファイルについては、本システムにおいて管理される画像ファイルの対象から外される。
(DPOF詳細解析)
図26は、図19のS4008におけるDPOF詳細解析処理の詳細を説明するフローチャートである。
まずS1200でシステム制御部50は、記録媒体200内にDPOF印刷予約ファイル1100が存在するかを判断し、DPOF印刷予約ファイル1100が存在する場合にS1201に進む。そして、システム制御部50は、DPOF印刷予約ファイル1100が詳細解析済みであるかを、対応する解析情報1111の詳細解析済みフラグ1106の値に基づいて判定する。詳細解析済みフラグ1106がOFFで、詳細解析されていないと判断される場合、システム制御部50は処理をS1202へ進める。
一方、S1200でDPOF印刷予約ファイル1100が存在しない場合や、S1201で詳細解析済みフラグ1106がONである場合(詳細解析済みと判断した場合)、システム制御部50はDPOF詳細解析処理を終了する。
S1202でシステム制御部50は、図11で説明したDPOF簡易解析処理を行う。S1203でシステム制御部50は、全ての画像IDに対し、記録媒体200内における存在有無を調べ終わったかどうか判断し、調べていない画像IDがあれば、処理をS1204に進める。S1204でシステム制御部50は、メモリ32上の解析情報1111に記載されている画像ID1110を読み出し、記録媒体200内に該当する画像ファイルが存在するかを判断し、該当する画像ファイルが存在する場合、S1207に進む。S1204で該当するファイルが存在しない場合、システム制御部50は、S1205で記録媒体200に存在しない画像ID1110をメモリ32上の解析情報1111から消去し、S1206で解析エラーフラグ1107をONにする。そして、S1207でシステム制御部50は、メモリ32上の解析情報1111の次の画像ID1110を参照し、S1203に戻る。
一方、S1203で全ての画像ID1110に対して存在するかを調べ終わった場合、S1208でシステム制御50は、メモリ32上の解析情報1111の詳細解析済みフラグ1107をONにして、DPOF詳細解析処理を終了する。
このように、いつ撮影指示があるか分からない撮影モードに対し、撮影時ほど操作に対する応答性を求められない再生モード時においては、詳細にDPOF印刷予約ファイルを解析する。前述した簡易解析に比べて、DPOF印刷予約ファイルの解析の完了までに時間を要するが、DPOF印刷予約ファイル内の画像IDが記録媒体200内に存在するかに関しても調べ、存在しない等の不正な画像IDを除去する。その結果、以後の処理においてDPOF印刷予約ファイルにおいて参照される画像ファイルと記録媒体200内に実在する画像間における不整合の発生を防ぐことができる。
(印刷メニュー)
図27は、図20のS4044における印刷メニュー処理の詳細を説明するフローチャートである。
まずS1300でシステム制御部50は、印刷メニュー画面を例えばシステムメモリ52に予め記憶された画面データに基づいて画像表示部28に表示させる。図28(a)に、印刷メニュー画面1300の例を示す。ユーザは操作部70に含まれる方向キーを操作してメニュー項目の1つを選択し、SETボタンを押下することで、選択したメニュー項目の実行を指示することができる。
S1301でシステム制御部50は、印刷メニュー画面1300に含まれる「画像を選択して印刷予約を行う」項目1301の実行が指示されたか否かを判断し、指示されたと判断された場合は、S1302に進む。また、図11のDPOF簡易解析処理や図26のDPOF詳細解析処理において、解析エラーが発生し、解析エラーフラグがONになっている場合、システム制御部50は、印刷メニューの画面1300に解析エラーの発生を示すアイコン1302等を表示する。
S1302でシステム制御部50は、記録媒体200に記録された撮影済み画像を読み出し、画像表示部28に表示する。図28(b)は、撮影画像の表示画面1303の例を示す。表示画面1303には、画像1305の他に、印刷予約されている画像に対して付加表示される予約アイコン1304、表示中の画像1305の番号/画像の総数1306などが表示される。
S1304でシステム制御部50は、操作部70のSETボタンが操作されたかどうかに応じて、表示中の画像に対する印刷予約が指示されたか否かを判定する。システム制御部50は、操作部70のSETボタンの操作が検出されなければ、方向キーが操作されたか判定する。方向キーの操作が検出された場合、システム制御部50はS1305に進み、方向キーの操作に対応して他の撮影済み画像を読み出し、S1302で表示する。
一方、S1304で操作部70のSETボタンの操作検出された場合、システム制御部50は、表示中の画像に対して印刷予約が終了したと判断する。そして、S1306で後述するDPOF詳細編集処理を行ってDPOF印刷予約ファイル1100を更新し、印刷メニュー処理を終了する。
また、S1301で印刷メニュー画面1300から「画像を選択して印刷予約を行う」項目1301以外のメニュー項目の実行が指定された場合、システム制御部50はS1307で指定された項目に対応した処理を実行し、印刷メニュー処理を終了する。S1307で行う処理としては、例えば、記録媒体200内の全ての画像を印刷指定する処理や特定の日付やフォルダの画像のみを印刷指定する処理がある。
(DPOF詳細編集)
図29は、図27のS1306におけるDPOF詳細編集処理の詳細を説明するフローチャートである。DPOF詳細編集処理は、DPOF印刷予約ファイル1100に登録されているすべてのJOBを作り直し、DPOF印刷予約ファイル1100を再作成することを目的とした処理である。
S2401でシステム制御部50は、編集対象のDPOF印刷予約ファイル1100に含まれるJOBの総数を取得する。
S2402でシステム制御部50は、編集対象のDPOF印刷予約ファイル1100に作成するJOBがあるか、すなわち1つ以上のJOBが含まれるか否かを判断する。印刷予約指定を解除された等によってJOBが1つもなければ、システム制御部50はS2403で、編集対象のDPOF印刷予約ファイル1100を削除してDPOF詳細編集処理を終了する。DPOF印刷予約ファイル1100を削除した際は、内部で保持しているJOB数分の画像情報もすべてクリアする。一方、編集対象のDPOF印刷予約ファイル1100に1つ以上のJOBが含まれていれば、システム制御部50はS2404で、後述する詳細ファイル作成処理を行う。
(詳細ファイル作成処理)
図30は、図29のS2404における詳細ファイル作成処理の詳細を説明するフローチャートである。
S2410でシステム制御部50は、編集対象のDPOF印刷予約ファイル1100をオープンする。DPOFファイルが存在しない場合は新規に作成する。
S2411でシステム制御部50は、機器のモデル名や作成日付を用い、DPOFに準拠したヘッダを作成する。
S2412でシステム制御部50は、作成するJOBがまだあるか判断し、作成するJOBがあればS2413へ、すべて作成済みであればS2416へ処理を進める。
S2413でシステム制御部50は画像ID1110をキーに検索リスト中の管理ファイル3203〜3206から画像情報(画像のファイルフォーマットに関する情報や、そのファイルフォーマットに基づき抽出される、画像本体開始位置、画像圧縮方法等)を取得する。この処理は図21を用いて前述しており、画像ファイルヘッダから取得するよりも検索リストから取得することにより速やかに取得できる。検索リストから画像情報が得られない場合には、図21を用いたファイル解析処理を行い、画像ファイルヘッダから画像情報を取得する。
S2414でシステム制御部50は、S2413で取得した画像情報を元にDPOFに準拠したJOBを作成してメモリ32上の不図示のバッファに記憶する。複数の書式を1ファイルに記載できるため、書式によっては書式分複数作成することができる。
S2415でシステム制御部50は、解析情報1111における、S2414で作成したJOBに対するJob_Offset1108、Job_Size1109を更新する。
S2416でシステム制御部50は、S2411で作成したヘッダ、S2414で作成したJOBを、DPOF印刷予約ファイル1100に書き込む。
ファイルサイズよりも詳細ファイル作成用に使用するメモリ32上の不図示のバッファが大きければ、書き込みは1回で済むが、メモリを効率良く使用する観点から、こまめに書き込む可能性があることを想定している。また書き込みはクラスタ単位で行うことにより書き込み速度を速めている。
S2417でシステム制御部50は総JOB数を更新する。
S2418でシステム制御部50は、編集したDPOF印刷予約ファイル1100をクローズする。
このように、追加するJOBのみを追加編集する簡易編集とは異なり、詳細編集はDPOF印刷予約ファイル1100中の全JOBを作成しなおす。本実施形態では、詳細解析処理において、削除された画像ID1110を取り除いたDPOF印刷予約ファイルを作成する。これにより、DPOF印刷予約ファイル1100から参照される画像ファイルと記録媒体200内に実在する画像ファイル間における不整合の発生を防ぎ、正確なDPOF印刷予約ファイルが作成可能となる。
また、本実施形態によれば、画像検索用に作成した分類情報(検索リスト)から取得した画像情報を用いてJOB生成を行うので、個々の画像ファイルにアクセスする必要が無く、DPOF印刷予約ファイルの生成をより高速に実現することが可能となる。
(他の実施形態)
なお、上述の実施形態においては、DPOFファイルの例として、DPOF印刷予約ファイルを挙げて説明した。しかしながら、上述の通り、DPOF version 1.10からは印刷予約のみならず、画像送信や自動再生についての指定も可能になっている。従って、撮影画像から画像送信や自動再生の対象として指定する場合であっても、撮影モードにおいてはDPOFファイルの簡易解析および簡易編集を行い、再生モードにおいて詳細解析および詳細編集を行うことで、同様の効果を得ることができる。
上述の実施形態は、システム或は装置のコンピュータ(或いはCPU、MPU等)によりソフトウェア的に実現することも可能である。
従って、上述の実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。
上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。
そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。
つまり、上述の実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。
また、上述の実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。
さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。