以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
[第1の実施形態]
<デジタルカメラ100の内部構成>
図1は、本実施形態の撮像装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは撮像装置の一例としてデジタルカメラについて述べるが、撮像装置はこれに限られない。例えば撮像装置は、携帯電話や、タブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよいし、カメラ付き携帯電話等の通信装置であってもよい。
本実施形態のデジタルカメラ100では、第1制御部101と第2制御部108とが協働することにより各部の制御を行う。第1制御部101は、主に撮像して画像を生成するための処理を制御する。第2制御部108は、主にデジタルカメラ100の移動軌跡を示すログデータを生成するための処理を制御する。第1制御部101の制御する機能が必要無い場合は、ユーザ操作により第1制御部101への通電を停止することができる。その一方で、第2制御部108には通電を継続する。つまり、消費電力の低減とロギングの継続を両立する。
第1制御部101は、入力された信号や、後述のプログラムに従って、後述の第2制御部108と協働してデジタルカメラ100の各部を制御する。本実施形態では、第1制御部101は、主に撮像して画像を生成するための処理を制御する。なお、第1制御部101の機能を複数のハードウェアが分担してもよい。本実施形態のデジタルカメラ100は画像データを生成するための撮像モードと、画像データを表示するための再生モードとを有し、第1制御部101はこれらのモードに応じて適切に各部を制御する。
撮像部102は、撮像部102に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。撮像した画像データは後述する作業用メモリ104として使用されるバッファメモリに蓄えられた後、第1制御部101にて所定の演算を行い、記録媒体106に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、第1制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部105の画像表示用メモリ、第1制御部101の作業領域等として使用される。
表示部105は、撮像の際のビューファインダー画像の表示、撮像した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部105は必ずしもデジタルカメラ100が備える必要はない。デジタルカメラ100は表示部105と接続することができ、表示部105の表示を制御する表示制御機能を少なくとも有していればよい。
記録媒体106および記録媒体116は、撮像部102から出力された画像や、後述の第2制御部108から提供されるログデータ等を記録することができる。本実施形態では、画像をExif−jpegの形式で扱う。記録媒体106および記録媒体116は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体106および記録媒体116にアクセスする手段を有していればよい。なお、本実施形態では、記録媒体106と記録媒体116の二つの記録媒体を装着可能な装置を例に挙げて説明するが、この数に限られるものではない。例えば、三つ以上の記録媒体を装着可能な装置であってもよい。
通信部107は、外部装置と通信するためのインターフェースである。本実施形態のデジタルカメラ100は、通信部107を介して、外部装置とデータのやりとりを行うことができる。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、通信部107は、赤外線通信モジュール、Bluetooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI(登録商標)、IEEE1394など、有線接続を採用してもよい。
第2制御部108は、入力された信号や、後述のプログラムに従って、前述の第1制御部101と協働してデジタルカメラ100の各部を制御する。本実施形態では、第2制御部108は、主にログデータを生成するための処理を制御する。なお、第2制御部108の機能を複数のハードウェアが分担してもよい。本実施形態では、第2制御部108は、第1制御部101に電力を供給していない状態でも通電することができる。すなわち、第1制御部101の動作を停止した状態(いわゆる省電力状態)であっても、第2制御部108により制御される機能を有効に保つことができる。
不揮発性メモリ109は、電気的に消去・記録可能な不揮発性のメモリであり、第2制御部108で実行される後述のプログラム等が格納される。
作業用メモリ110は、後述の位置取得部112から出力されるデータを一時的に保持するバッファメモリや、第2制御部108の作業領域等として使用される。
操作部111は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部111は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮像を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンなどの操作部材を含む。なお、レリーズスイッチは、SW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がONとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮像準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がONとなる。これにより、撮像を行うための指示を受け付ける。また、操作部材が第2制御部108により制御されるのは、省電力状態から復帰する指示を受け付けられるようにするためである。ユーザは、操作部111の操作部材を操作することで、デジタルカメラ100を省電力状態から通常状態へと復帰させることができる。
位置取得部112は、測位処理を行う。本実施形態における測位処理とは、GPS衛星から信号を受信し、受信した信号からデジタルカメラ100の位置を示す位置情報、および信号を受信した日時を示す日時情報を算出する処理である。位置取得部112により算出された位置情報および日時情報は、必要に応じて第2制御部108や、第2制御部108を介して第1制御部101に提供される。例えば、本実施形態のデジタルカメラ100では、撮像部102から出力された画像データを記録媒体106や記録媒体116に記録する際に、位置取得部112によって算出された位置情報を、撮像位置として対応づけて記録することができる。この場合、第1制御部101からの要求に応じて、第2制御部108が位置取得部112から位置情報を取得することになる。また、後述のシリアルフラッシュメモリ113にログデータを記録するために、適宜第2制御部108が位置取得部112から位置情報を取得する。この処理については後に詳述する。
なお、本実施形態では位置取得部112としてGPSを用いる例について述べるが、位置取得部112はGPSに限定されるものではない。例えば、GLONASS、ガリレオ、みちびき等、他の衛星からの信号を、GPSの代わりに用いる、あるいはGPSと組み合わせて用いてもよい。また、例えば携帯電話の基地局といった外部装置などから位置情報や日時情報を取得する装置であってもよい。
シリアルフラッシュメモリ113は、位置取得部112で得られた位置情報および日時情報をログデータとして記録するための記録媒体である。本実施形態では、シリアルフラッシュメモリ113の記録領域をリングバッファの形で扱う。第2制御部108は、位置取得部112から提供される位置情報と日時情報を対応づけてシリアルフラッシュメモリ113へ記録する。
<撮像処理>
本実施形態の撮像処理について説明する。まず、撮像処理そのものの説明に先立って、撮像処理の結果生成される画像を記録する記録媒体を選択するメニューについて説明する。
ユーザは、撮像モードにおいて撮像部102により生成される画像をこれらの記録媒体のどちらに記録するかを、メニュー操作を介して予め設定することができる。なお、ここでいう撮像モードとは、撮像部102を用いて被写体を撮像し、画像データを生成するためのモードである。
図2に、撮像モードにおいて撮像部102により生成される画像をこれらの記録媒体のどちらに記録するかを選択するための画面の一例を示す。
この画面200では、ユーザは操作部111を介してカーソル202を操作して、表示領域201内に表示される選択肢を選ぶことができる。そして、ユーザはこれらスロット1およびスロット2のいずれか一方または両方を選択することで、対応する記録媒体の挿入口に装着されている記録媒体を、画像の記録先として設定することができる。ここで設定した記録先に関する情報は、不揮発性メモリ103に保持され、必要に応じて読みだされる。
なお、図2における「スロット」という文字列は、記録媒体の挿入口を表すものであるが、これは、デジタルカメラ100としては記録媒体を識別するというよりむしろ、どのスロットに接続されている記録媒体かでデータの出力先を区別することに由来する。また、上述の説明で記録媒体を選択するという表現を用いている部分は、いずれもデジタルカメラ100の動作としては、対応するスロットを選択するという認識に等しい。ただし、説明が煩雑になることを防ぐため、以降の説明でも、スロットを選択することも「記録媒体を選択する」という表現を用いる。
次に、撮像処理について説明する。
図3は本実施形態の撮像処理を実行するデジタルカメラの動作を示すフローチャートである。このフローチャートの各処理は、第1制御部101が不揮発性メモリ103に記録されているプログラムを作業用メモリ104に展開・実行することにより実現される。また、図3のフローチャートの処理は、ユーザのメニュー操作等によって、撮像モードを開始する指示を受け付けたことに応じて、ライブビューのために順次撮像されるスルー画像の表示と共に開始される。
まず、ステップS301では、第1制御部101は、他のモードに遷移する指示を受け付けたか否かを判断する。他のモードに遷移する指示を受け付けたと判断した場合、本フローチャートの処理を終了する。一方、他のモードに遷移する指示を受け付けていないと判断した場合、処理はステップS302に進む。
次に、ステップS302では、第1制御部101は、レリーズスイッチのSW1がONとなったか否かを判断する。ONでないと判断した場合、処理はステップS301に戻る。一方、ONであると判断した場合、処理はステップS303に進む。
ステップS303では、第1制御部101は、撮像準備動作を行う。
続いて、ステップS304にて第1制御部101は、SW2がONであるか否かを判断する。SW2がONでないと判断した場合、処理はステップS301に戻る。一方、SW2がONであると判断された場合、処理はステップS305に進む。
ステップS305では、第1制御部101は、撮像動作を行い、画像を生成する。
続くステップS306では、第1制御部101は、ステップS304で生成した画像を、記録媒体に記録する。ここでは、日時情報を撮像日時、位置情報を撮像位置として画像に対応づけて記録する。また、複数の記録媒体が装着されている場合は、図2で説明したような画面での操作によって予め記録先として設定されている記録媒体に画像を記録する。その後、処理はステップS301に戻る。
以上が、本実施形態における、撮像モードでのデジタルカメラ100の動作を示すフローチャートである。
<シリアルフラッシュメモリへのログデータの記録>
次に、デジタルカメラ100においてシリアルフラッシュメモリ113にログデータを記録する処理について説明する。本実施形態のデジタルカメラ100では、前述のように、第2制御部108がログデータを記録するための処理を制御する。第2制御部108は予め定められた間隔で位置取得部112に位置情報および日時情報を要求する。そして、その要求に対する応答として受信される位置情報と日時情報とを対応づけて、ログデータとしてシリアルフラッシュメモリ113に記録する。以後、このログデータの記録を繰り返すことをロギングと呼ぶ。また、位置情報と日時情報とが対応づけられてシリアルフラッシュメモリ113に記録されている状態のデータをログデータと呼ぶ。
このロギングの結果、複数のログデータが記録されたシリアルフラッシュメモリ113の記録領域の一部の概念図を図4に示す。図4において、記録領域400は、シリアルフラッシュメモリ113の記録領域の一部である。この領域400の内、記録領域402にはログデータが記録される。記録領域402に記録されている複数のログデータのうち、一つのログデータのデータ構造を示す概念図をログデータ420に示す。ログデータの一つ一つには、位置情報を取得した日時を示す日時情報221が先頭に記録される。この日時情報はUTC(Universal Time Coordinate:協定世界時)の時間軸で計時される日時を示す。また、位置情報として、緯度・経度を示す情報422〜426が記録される。また、この位置情報の精度を示す情報として、算出に用いた信号の数、すなわち利用した衛星の数427や、DOP情報428なども併せて記録される。この記録領域402はリングバッファの形式で構成される。ゆえに、ログデータは記録領域の先頭から末尾まで順に記録され、記録領域402の空き容量を超えるログデータが記録される場合は、足りない容量の分だけ最も古いログデータから上書きされていく。なお、これらのログデータのデータ長は一定となるように調整される。例えばデータの末尾に空データを付与するなどして調節する。
記録領域401は、ログデータを管理するための情報であるログ管理レコードが記録される。このログ管理レコードが記録される領域401もリングバッファ形式で構成される。
本実施形態のデジタルカメラ100では、シリアルフラッシュメモリ113に記録されている状態から、記録媒体106や記録媒体116に出力する際に、このログ管理レコードが管理するログデータを一つのまとまりとして出力する。記録領域401に記録されている複数のログ管理レコードのうち、一つのログ管理レコードの概念図をログ管理レコード410に示す。ログ管理レコードには、ロギングを開始した日時を示す開始日時411が記録されている。この開始日時411には、ログ管理レコードに対応する先頭のログデータの日時情報が用いられる。また、ログ管理レコードにはUTC時差412も記録される。UTC時差とは、UTCと現地時間(地方標準時)との時差を示す時差情報である。このUTC時差の情報は、ユーザがメニュー操作等を介して現在位置に対応するタイムゾーンを選択することにより、予めデジタルカメラ100の設定値として設定しておく。あるいは、位置取得部112から取得される位置情報に基づき、タイムゾーンを決定し、UTC時差を算出してもよい。更に、それぞれのログ管理レコードには、対応するログデータの記録開始アドレス413とデータサイズ414が含まれており、これらの情報により対応するログデータ群が決定される。具体的には、前述のように、ログデータのデータ長は一定であり、かつログデータは記録領域に順に記録されるため、開始アドレスからデータサイズの示す値分だけデータ量をカウントすれば、ログ管理レコードに対応するログデータ群を決定できる。これにより、記録領域400に順次記録されていく複数のログデータが、特定のまとまりに分けて管理される。なお、ロギング中の最新のログ管理レコードについては、対応するログデータが随時増加していく。つまり、最終的にそのログ管理レコードが管理するログデータのデータサイズが定まっていない。そのため、ロギング中の最新のログ管理レコードのデータサイズは未記録となる。このログ管理レコードのデータサイズが記録されるタイミングは、時間の経過やユーザ操作による日付の変更があった場合や、ユーザ操作やカメラの移動によりタイムゾーンの設定、すなわちUTC時差が変更された場合である。すなわち、ログ管理レコードは日付毎およびUTC時差毎に異なるレコードとなるように記録される。
上述のデータの記録を実現するための、デジタルカメラ100の処理について説明する。図5は、シリアルフラッシュメモリ113に位置情報と日時情報とを対応づけてログデータとして記録する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示される各処理は、デジタルカメラ100の第2制御部108が、不揮発性メモリ109に記録されているプログラムを実行し、プログラムに従いデジタルカメラ100の各部を制御することにより実現される。以降の第2制御部108が実行するフローチャートについても同様である。また、このフローチャートに示される処理は、例えばGPSを用いたロギングを開始する指示を、メニュー操作等を介して受け付けたことに応じて開始される。
まず、ステップS501にて、第2制御部108は、位置取得部112から位置情報および日時情報を受信する。これらの情報は、第2制御部108が位置取得部112に要求した応答として返される情報である。
次に、ステップS502では、第2制御部108は、ステップS501で受信した位置情報および日時情報を、ログデータとしてシリアルフラッシュメモリ113に記録する。
続くステップS503では、第2制御部108は、ログ管理レコードのうち、ログデータを追加して対応付けるべきログ管理レコードが記録されているか否かを判断する。具体的には、第2制御部108は、シリアルフラッシュメモリ113に記録されているログ管理レコードのうち、データサイズが記録されていないものがあるか否かを判断する。前述のように、ロギング中はそのログ管理レコードには、対応するログデータのデータサイズが記録されない。つまり、管理するログデータのデータサイズが未記録のログ管理レコードは、今後ログデータが追加されるものであると判断できる。
まず、ステップS503で第2制御部108が、データサイズが記録されていないログ管理レコードがあると判断した場合について述べる。この場合、処理はステップS504に進む。
ステップS504では、第2制御部108は、ステップS502でシリアルフラッシュメモリ113に記録したログデータの日時情報に基づき、日付の変更があるか否か判断する。具体的には、ステップS502以前に記録したログデータの日時情報とステップS502で記録したログデータの日時情報とを比較して、日付が異なるか否かを判断する。日付が異なっている場合は、日付の変更があったと判断することになる。例えば、時間の経過により次の日になってからログデータが取得される場合などは、異なる日付を示す。
まず、ステップS504にて、第2制御部108が、日付の変更があったと判断した場合について説明する。この場合、処理はステップS506に進む。
ステップS506では、第2制御部108は、ログ管理レコードが管理するログデータの総サイズを、該当するログ管理レコードのデータサイズの項目に記録する。ここで記録するサイズは、ステップS502で記録された位置情報を含まないように記録される。これによりログ管理レコードが管理するログデータの範囲が確定する。例えば、図4のログ管理レコード4の記録開始アドレス413にログデータ7のアドレスが記録されている状態で、本ステップの処理によりログ管理レコード4のデータサイズ414に3つのログデータ分のサイズが記録されたとする。この場合、ログ管理レコード4が管理するログデータの範囲は、ログデータ7〜ログデータ9として確定する。
そして、続くステップS507にて、第2制御部108は、新たにログ管理レコードを生成し、ステップS502で記録された位置情報のアドレスを記録開始アドレスの項目に記録する。これにより、新たなログ管理レコードの記録範囲の開始位置が確定する。
その後、ステップS508では、第2制御部108は、ロギングの終了指示を受け付けたか否かを判断する。指示を受け付けていないと判断した場合、処理はステップS501に戻り、本フローチャートの処理を繰り返す。結果として、定期的に位置情報が記録される。これらの一連の位置情報は、デジタルカメラ100の移動軌跡を示すことになる。一方、ロギングの終了指示を受け付けたと判断した場合、処理を終了する。
以上が、ステップS504にて、第2制御部108が、日付の変更があったと判断した場合の説明である。
次に、ステップS504にて、第2制御部108が、日付の変更がなかったと判断した場合について説明する。この場合、処理はステップS505に進む。
ステップS505では、第2制御部108は、UTC時差が変更されたか否かを判断する。具体的には、現在のデジタルカメラ100のUTC時差の設定と、シリアルフラッシュメモリ113に記録されている最新のログ管理レコードのUTC時差とを比較する。比較の結果、UTC時差が一致していない場合は、UTC時差が変更されたと判断する。UTC時差が変更されていないと判断した場合、処理はステップS508に進む。一方、UTC時差が変更されたと判断した場合、処理はステップS506に進む。
次に、ステップS503で第2制御部108が、データサイズが記録されていないログ管理レコードがないと判断した場合について述べる。この場合は、既にログ管理レコードの管理するログデータの範囲が定まっているため、新たに記録されたログデータは新たなログ管理レコードに管理されることになる。ゆえに、処理はステップS507に進み、第2制御部108は新たなログ管理レコードを生成する。その後の処理は上述で説明した通りである。
以上が、シリアルフラッシュメモリ113にログデータを記録する際のデジタルカメラ100の動作の説明である。
<記録媒体へのログデータの出力>
次に、シリアルフラッシュメモリ113に記録されているログデータを、記録媒体106または記録媒体116にログファイルとして出力する処理について説明する。 本実施形態におけるデジタルカメラ100では、シリアルフラッシュメモリ113に記録されているログデータを、管理レコードで区切られた単位毎に一つのログファイルとして記録媒体106または記録媒体116に出力することができる。
図6は、シリアルフラッシュメモリ113に記録されているログデータを、記録媒体106または記録媒体116にログファイルとして出力する際のデジタルカメラ100の動作の概要を示すシーケンス図である。このシーケンス図に示す動作は第1制御部101および第2制御部108がそれぞれ、不揮発性メモリ103および不揮発性メモリ109に記録されているプログラムを、作業用メモリ104および作業用メモリ110に展開・実行することにより実現される。またこのシーケンス図の動作は、例えばログデータを記録媒体106に出力する指示を第2制御部108が受け付けたことに応じて開始する。この指示は、例えばユーザによる操作部111を介した所定の操作が受け付けられることで入力される。
所定の操作を受け付けた第2制御部108は、まずステップS601にて、シリアルフラッシュメモリ113に記録されているすべてのログ管理レコードの情報を第1制御部101に送信する。それぞれのログ管理レコードの情報には、データサイズと開始日時、およびUTC時差が含まれる。
ログ管理レコードの情報を受信した第1制御部101は、ステップS602にて、ログ管理レコードの情報に含まれるデータサイズからログデータの総サイズを算出する。そして、記録媒体106または記録媒体116のうち、図2で説明したような画面での操作によって、撮像した画像の記録先として予め設定されているほうの記録媒体の空き容量とログデータの総サイズとを比較する。これにより、記録媒体106にログデータを記録するのに十分な空き容量があるかを判断する。比較の結果、第1制御部101が、いずれか一方の記録媒体の空き容量が足りないと判断した場合、第1制御部101は空き容量が不足している旨をユーザに通知し、本シーケンスの処理を終了する。一方、比較の結果、第1制御部101が空き容量が十分であると判断した場合、第1制御部101はS601で情報を送信されたログ管理レコードのうち、一つのログ管理レコードに対応するログデータの要求を第2制御部108に送信する。図6では、説明のため、空き容量が十分あると判断した場合の例を示している。すなわち、ステップS603にて、第1制御部101はログデータの要求を第2制御部108に送信する。
ログデータの要求を受信した第2制御部108はステップS604にて、シリアルフラッシュメモリ113に記録されているログデータのうち、要求されたログデータを読み出し、第1制御部101に送信する。
ログデータを受信した第1制御部101はステップS605で、受信したログデータを記録媒体に記録するログファイルの形式に変換する。本実施形態では記録媒体106は、FAT(File Allocation Tables:データの管理のためのファイルシステムの形式)形式でデータを取り扱う。
続くステップS606では、第1制御部101は、変換して得たログファイルを、図2で説明したような画面での操作によって、撮像した画像の記録先として予め設定されているほうの記録媒体に記録する。なお、両方のスロットが画像データの記録先として選択されていた場合は、両方の記録媒体に同じログファイルを記録する。その後、処理を終了する。
以上が、ログデータを記録媒体106または記録媒体116に出力する際のデジタルカメラ100の動作の概要である。
なお、ログファイルは、ログデータから変換することで初めてデータサイズが確定する。言い換えれば、ステップS602にてログ管理レコードの情報から算出するサイズはおおよその予測サイズである。にもかかわらず、この予測でしかないサイズを利用して記録可能かどうかを判断するのは、ログファイルの書き込みが不可能である場合はより早い段階でユーザに通知することが望ましいと考えられるためである。というのも、ログデータからログファイルへの変換には一定の時間を要する。そのため、ログファイルへの変換を待ってから通知する場合は、変換のための時間をユーザに待たせることになり、操作性の面で不都合である。従って、操作性をより優先し、暫定的な予測のサイズをデータサイズとして採用する。
さて、ログデータの出力の結果、記録媒体106または記録媒体116には図7に示すようなログファイル700が記録される。本実施形態におけるログファイル700はNMEAフォーマットに従ったデータが記録されたテキストデータである。NMEAフォーマットでは記録されている情報のうち、$GPGGAから始まる行と$GPRMCから始まる行とが対になっている。この対の情報には、位置情報713とその位置情報を取得した日付712および時間711が記録されている。また、ログファイルのヘッダ領域701には、ログファイルが記録される際の記録条件が記録される。具体的には、ログファイルとして記録される位置情報が取得された日時を示す記録日時702が記録される。この記録日時702には、位置情報を管理していたログ管理レコードの開始日時411の値が用いられる。さらに、ログファイルを生成した際にデジタルカメラ100に設定されているタイムゾーンの情報、すなわちUTC時差703も記録条件として記録される。これらの記録条件は、図6のステップS601で送信されたログ管理レコードの情報が用いられ、ステップS606で記録媒体に記録される際にヘッダに記録される。また、ログファイルのファイルネームは、ログ管理レコードの開始日時411の値に基づき決定される。
<第1制御部101の動作>
続いて、上述の動作を実現するための第1制御部101の動作について説明する。
図8は、上記の動作を実現するための第1制御部101の動作を示すフローチャートである。このフローチャートの各処理は、第1制御部101が不揮発性メモリ103に記録されているプログラムを作業用メモリ104に展開・実行することにより実現される。またこのフローチャートの処理は、例えば第1制御部101が通電されたことに応じて開始する。
まず、ステップS801にて、第2制御部108からログ管理レコードの情報(開始日時とUTC時差、およびデータサイズ)を受信する。このログ管理レコードの情報は、それぞれのログ管理レコードに対応する情報であることが区別可能な状態で受信される。
続いて、ステップS802では、第1制御部101は、図2のような画面を介して画像データの記録先として設定されている記録媒体の空き容量とログデータの総サイズとを比較して、ログデータを記録するのに十分な空き容量があるかを判断する。
比較の結果、第1制御部101が、画像データの記録先として設定されている記録媒体の空き容量が足りないと判断した場合、処理はステップS803に進む。ステップS803では、第1制御部101は空き容量が不足している旨を第2制御部108に通知する。これに併せて、第1制御部101はステップS804にて、空き容量が不足している旨をユーザに通知し、本シーケンスの処理を終了する。
一方、比較の結果、第1制御部101が空き容量が十分であると判断した場合、処理はステップS805に進む。第1制御部101はステップS805で、ログ管理レコードが管理するログデータの要求を第2制御部108に送信する。ここは、ステップS801で受信したログ管理レコードの情報に基づき、一つのログ管理レコードが管理するログデータをまとめて要求する。この要求を受けた第2制御部108は、シリアルフラッシュメモリ113から対応するログデータを読み出し、第1制御部101に送信する。
ステップS806にて第2制御部108からログデータを受信すると、第1制御部101はステップS807でログデータを、画像データの記録先として設定されている記録媒体に記録するためのログファイルの形式に変換する。例えば、FAT(File Allocation Tables:データの管理のためのファイルシステムの形式)形式に変換する。
本実施形態では、ステップS807で得られるログファイルを記録する前に、既に記録媒体106に記録されているログファイルにまとめて記録するか、別のファイルとして記録するかを判断する。具体的には、ステップS808にて、第1制御部101は記録媒体106に既に記録されているログファイルのヘッダ領域からログファイルの記録条件を読み出し、ステップS801で受信したログ管理レコードの情報に含まれる情報と比較する。比較の結果、記録条件とログ管理レコードの情報に含まれる情報とが所定の関係を満たす場合、ログデータは既に記録されているログファイルに追記されることになる。ここでログファイルのヘッダ領域から読み出される記録条件とは、図7の説明で述べた記録日時702とUTC時差703である。第1制御部101は、ログファイルから読み出した記録日時702と、これから記録しようとしている位置情報に対応するログ管理レコードに含まれる開始日時411とを比較する。同様に、ログファイルから読み出したUTC時差703と、これから記録しようとしている位置情報に対応するログ管理レコードに含まれるUTC時差412とを比較する。記録日時702の示す日付と開始日時411の示す日付とが一致していないと判断された場合、ステップS807で得られたログファイルは、画像データの記録先として設定されている記録媒体に既に記録されているログファイルとは記録条件が異なると判断する。または、UTC時差703とUTC時差412とが一致しない場合、ステップS807で得られたログファイルの記録条件は、画像データの記録先として設定されている記録媒体に既に記録されているログファイルの記録条件と異なると判断する。日付の比較、及びUTC時差の比較の両方で一致していると判断された場合は、ステップS807で得られたログファイルの記録条件は、画像データの記録先として設定されている記録媒体に既に記録されているログファイルの記録条件と一致すると判断する。
ステップS808にて、記録条件が一致すると判断された場合、処理はステップS809に進む。
ステップS809では、第1制御部101は画像データの記録先として設定されている記録媒体に既に記録されているログファイルに、ステップS807で変換したログファイルをマージする。この結果、同一日、同一UTC時差のログデータは、一つのログファイルにまとめて記録されることになる。これにより、ログファイルの管理が容易になる。また、画像データの記録先として設定されている記録媒体にログデータを出力することにより、画像データとログデータとを一緒に管理することができる。その後、本フローチャートの処理を終了する。
一方、ステップS808にて、記録条件が一致しないと判断された場合、処理はステップS810に進む。
ステップS810では、第1制御部101はステップS807で変換したログファイルを、既に記録されているログファイルとは別のファイルとして画像データの記録先として設定されている記録媒体に記録する。この結果、日付あるいはUTC時差が異なるログデータは別のファイルとして記録されることになる。その後、本フローチャートの処理を終了する。
以上が、第1制御部101の動作の説明である。
<第2制御部108の動作>
次に、上記の第1制御部101の動作に対応する第2制御部108の動作について説明する。図9は、図6の動作を実現するための第2制御部101の動作を示すフローチャートである。このフローチャートの各処理は、第2制御部101が不揮発性メモリ109に記録されているプログラムを作業用メモリ110に展開・実行することにより実現される。またこのフローチャートは、例えば操作部111を介して第2制御部108がログデータの出力指示を受け付けたことに応じて開始する。
まずステップS901にて第2制御部108は、一旦ロギングの処理を停止するよう位置取得部112を制御する。
次に、ステップS902で第2制御部108は、データサイズが未記録のログ管理レコードについて、現在記録されているログデータまでを管理の対象としてデータサイズを記録する。これにより、現在シリアルフラッシュメモリ113に記録されているログ管理レコードは全てデータサイズが記録され、その管理範囲が決定されることになる。
続いて、ステップS903では、第2制御部108は、シリアルフラッシュメモリ113に記録されているすべてのログ管理レコードに関する情報を第1制御部101に送信する。具体的にはそれぞれのログ管理レコードに含まれるデータサイズ、開始日時、およびUTC時差が送信される。
次に、ステップS904にて第2制御部108は、第1制御部101からの応答が、空き容量が足りない旨を示す情報か、ログデータの要求であるかを判断する。空き容量が足りない旨を示す情報であった場合、本フローチャートの処理を終了する。一方、ログデータの要求であった場合、処理はステップS905に進む。
ステップS905では、第2制御部108は、シリアルフラッシュメモリ113に記録されているログデータのうち、要求されたログデータを読み出し、第1制御部101に送信する。
ステップS906では、第2制御部108は、すべてのログデータを送信したか否かを判断する。まだ送信していないログデータがあると判断された場合、処理はステップS904に戻り、第1制御部101からの要求を待つ。一方、すべてのログデータを送信したと判断した場合、処理はステップS907に進む。
ステップS907では、第2制御部108は第1制御部101に送信したログデータおよびそれらのログデータを管理の対象としていたログ管理レコードを削除し、ロギングを再開するよう位置取得部112を制御する。
以上が、ログデータを記録媒体106に出力する際のデジタルカメラ100の動作の説明である。
<ログデータの自動出力>
上述では、ユーザの指示をトリガとしてログデータを出力する場合について述べた。しかしながら、ユーザがログデータを記録媒体に出力するのを忘れてしまうことも考えられる。特に、ユーザがログデータを出力しないまま画像の記録先とする記録媒体を再設定することにより、別の記録媒体に切り替えられた場合に不都合が生じる。すなわち、切り替え前の記録媒体に記録されている画像データと、切り替え前に取得したログデータとが、別々の記録媒体に記録されてしまう恐れがある。そこで、本実施形態のデジタルカメラ100では、ユーザが画像データの記録先として設定するメディアを切り替えたタイミングで、自動的にログデータを切り替え前のメディアに出力する。これにより、ユーザがログデータの出力を意識することなく、自然な操作で自動的に、適切な記録媒体にログデータを出力することができる。
以下、上記の動作を実現するための第1制御部101および第2制御部108の動作について説明する。
図10は、デジタルカメラ100の動作を示すフローチャートである。このフローチャートの各処理は、第1制御部101と第2制御部108とが協働することによって実現される。なお、このフローチャートの処理は、例えばデジタルカメラ100の電源がONとなったことに応じて開始される。
まず、ステップS1001では、第1制御部101は、画像の記録先の設定を変更する指示が操作部111によって受け付けられたか否かを判断する。具体的には、第2制御部108が、操作部111で受け付けられた操作を検知し、第1制御部101に通知する。第1制御部101は、受け付けられた操作に基づき、例えば図2で説明したような画面を経て画像の記録先となる記録媒体が変更する指示が受け付けられたか否かを検知する。
本ステップにて、第1制御部101が、画像の記録先の設定を変更する指示が操作部111によって受け付けられていないと判断した場合、本ステップの処理を繰り返し、ユーザ操作の監視を継続する。一方、第1制御部101が、画像の記録先の設定を変更する指示が操作部111によって受け付けられたと判断した場合、処理はステップS1002に進む。
ステップS1002では、第1制御部101は、ログデータがシリアルフラッシュメモリ113に記録されているか否かを判断する。具体的には、第1制御部101は、第2制御部108に対して、シリアルフラッシュメモリ113にログデータが記録されているかどうかを判断させる。そして、第2制御部108から通知された判断結果を持って、ログデータがシリアルフラッシュメモリ113に記録されているか否かを判断する。
ここで、第1制御部101が、ログデータがシリアルフラッシュメモリ113に記録されていないと判断した場合、処理はステップS1001に戻る。
一方、第1制御部101が、ログデータがシリアルフラッシュメモリ113に記録されていると判断した場合、処理はステップS1003に進む。
ステップS1003では、第1制御部101および第2制御部108は、図8および図9で説明した処理を実行し、現在、画像データの記録先として設定されている記録媒体に、現在シリアルフラッシュメモリ113に記録されているログデータを出力する。ログデータの出力が完了すると、処理はステップS1004に進む。
ステップS1004では、第1制御部101は、ステップS1001で受け付けたと判断した指示に従って、画像データの記録先の記録媒体を変更する。
以上が、本実施形態における、画像データの記録先を変更する際に自動的にログデータを出力する処理の説明である。
上述のように本実施形態のデジタルカメラでは、画像データの記録先を変更する際に、変更前の記録媒体にログデータを出力してから、画像データの記録先を変更する。これにより、画像ファイルに関連するログファイルを同じ記録媒体で管理することが容易となる。
[第2の実施形態]
本実施形態では、第1の実施形態に対して、ログデータを出力する条件を更に追加した場合について述べる。具体的には、画像データの記録先を切り替えただけでなく、切り替え前の記録媒体に画像データを記録するような撮像が行われていた場合に、ログデータを出力する。このようにすることで、例えば一旦記録先を切り替えたものの、撮像することなく再度元の記録媒体に、画像データの記録先を戻すような場合に、無駄にログデータを出力する可能性を低減することができる。
以下、本実施形態におけるデジタルカメラ100の動作について述べる。なお、本実施形態では、第1の実施形態と共通する部分については説明を省略し、本実施形態に特有の部分を中心に説明する。
<撮像処理>
まず、ログデータを出力する処理の説明に先立って、本実施形態における撮像処理について説明する。
図11は、本実施形態における撮像処理を実行する際のデジタルカメラの動作を示すフローチャートである。図11のフローチャートの処理は、ユーザのメニュー操作等によって、撮像モードを開始する指示を受け付けたことに応じて、ライブビューのために順次撮像されるスルー画像の表示と共に開始される。
ステップS1101〜ステップS1106は、図3のステップS301〜ステップS306と同様の処理が実行される。
ステップS1107では、第1制御部101は不揮発性メモリ103に格納された「撮影有無情報」を「有り」に設定する。「撮影有無情報」は画像データの記録先が変更される前に撮像部102により撮像が行われたか否かを表す情報であり、0・1のフラグで「有り」と「無し」を管理する。なお、このステップで「有り」に設定されたこの情報は、画像データの記録先が変更されることに伴い、「無し」に設定される。これについては後述する。
以上が、本実施形態における撮像処理を実行する際のデジタルカメラ100の動作の説明である。
<ログデータの自動出力>
続いて、本実施形態におけるログデータの自動出力について説明する。
図12は、デジタルカメラ100の動作を示すフローチャートである。このフローチャートの各処理は、第1制御部101と第2制御部108とが協働することによって実現される。なお、このフローチャートの処理は、例えばデジタルカメラ100の電源がONとなったことに応じて開始される。
ステップS1201では、図10のステップS1001と同様の処理が実行される。
続くステップS1202では、第1制御部101は、不揮発性メモリ103に格納している撮影有無情報を参照し、現在の画像データの記録先として設定してある記録媒体に画像データを記録したか否かを判断する。例えば、撮影有無情報が有りに設定されていた場合、第1制御部101は、現在の画像データの記録先として設定してある記録媒体に、設定後に撮像を行い画像データを記録したと判断する。一方、撮影有無情報が無しに設定されていた場合、第1制御部101は、現在の画像データの記録先として設定してある記録媒体には、設定してから撮像を行っておらず画像データを記録していないと判断する。
第1制御部101が、現在の画像データの記録先として設定してある記録媒体に画像データを記録していないと判断した場合、ログデータを出力する必要はない。そのため、この場合、処理はステップS1201に戻り再度画像データの記録先を変更する指示が受け付けられていないかを監視する。
一方、第1制御部101が、現在の画像データの記録先として設定してある記録媒体に画像データを記録したと判断した場合、処理はステップS1203に進む。
ステップS1203〜ステップS1205では、図10のステップS1002〜ステップS1004の処理が実行さる。
以上が、本実施形態における、画像データの記録先を変更する際に自動的にログデータを出力する処理の説明である。
上述のように本実施形態のデジタルカメラでは、画像データの記録先を変更する場合、変更前の記録媒体に画像データを記録しているならば、ログデータを変更前の記録媒体に出力してから画像データの記録先を変更する。これにより、画像ファイルに関連するログファイルを同じ記録媒体で管理することが容易となると共に、無駄なログデータの出力を行う可能性を低減することができる。
[第3の実施形態]
本実施形態では、第2の実施形態に対して、ログデータを出力する条件を更に追加した場合について述べる。具体的には、切り替え前の記録媒体に画像データが記録されているかどうかに加えて、切り替え後に撮像して画像データを切り替え後の記録媒体に記録した場合に、ログデータを出力する。このようにすることで、例えば一旦記録先を切り替えたものの、撮像することなく再度元の記録媒体に、画像データの記録先を戻すような場合に、無駄にログデータを出力する可能性をより低減することができる。
以下、本実施形態におけるデジタルカメラ100の動作について述べる。なお、本実施形態では、第1の実施形態および第2の実施形態と共通する部分については説明を省略し、本実施形態に特有の部分を中心に説明する。
<画像データの記録先変更処理>
まず、ログデータを出力する処理の説明に先立って、画像データの記録先をユーザからの指示に応じて変更する際の処理について説明する。
図13は、本実施形態におけるデジタルカメラの動作を示すフローチャートである。
まず、ステップS1301では、図10のステップS1001と同様の処理が実行される。
次に、ステップS1302では、第1制御部101は、不揮発性メモリ103に格納されている撮影有無情報が有りに設定されているか無しに設定されているかを判断する。
ステップS1302にて、第1制御部101が撮影有無情報が「有り」に設定されていると判断した場合、処理はステップS1303に進む。ステップS1303では、第1制御部101は、「画像記録先変更前の撮影有無情報」を「有り」に設定して、その後、撮影有無情報を「無し」に設定する。「画像記録先変更前の撮影有無情報」は画像記録先を変更する前の設定で撮影が行われていたか否かを表す情報である。
一方、ステップS1302にて第1制御部101が、撮影有無情報が「無し」に設定されていると判断した場合、処理はステップS1304に進む。ステップS1304では、第1制御部101は、「画像記録先変更前の撮影有無情報」を「無し」に設定して、撮影有無情報は「無し」のままとする。
続くステップS1305にて、画像データの記録先を変更したタイミングまでのログデータと、これ以降取得されるログデータとを区別可能に管理する。例えば、不揮発性メモリ103の領域に、画像データの記録先を変更したタイミングを示す日時情報を保持しておき、ログデータの日時情報と比較することで、保持されている日時情報よりも前のログデータであるか否かを判断する。あるいは、ログデータのデータ構造そのものに、画像データの記録先を変更したタイミングを示す情報を記録する領域を設けてもよい。
その後、ステップS1306では、第1制御部101は、ステップS1001で受け付けたと判断した指示に従って、画像データの記録先の記録媒体を変更する。
その後、本フローチャートを終了する。
<ログデータの自動出力>
続いて、本実施形態におけるログデータの自動出力について説明する。
図14は、本実施形態における撮像処理を実行する際のデジタルカメラの動作を示すフローチャートである。図14のフローチャートの処理は、ユーザのメニュー操作等によって、撮像モードを開始する指示を受け付けたことに応じて、ライブビューのために順次撮像されるスルー画像の表示と共に開始される。
ステップS1401〜ステップS1407は、図11のステップS1101〜ステップS306と同様の処理が実行される。
続くステップS1408では、第1制御部101は、不揮発性メモリ103に格納された「画像記録先変更前の撮影有無情報」が「有り」に設定されているか、「無し」に設定されているかを判断する。
まず、ステップS1408にて、第1制御部101が、「画像記録先変更前の撮影有無情報」が「有り」に設定されていると判断した場合について説明する。この場合、処理はステップS1409に進む。
ステップS1409では、第1制御部101および第2制御部108は、図8および図9で説明した処理を実行し、現在、画像データの記録先として設定されている記録媒体に、ログデータを出力する。なお、ここでは、現在シリアルフラッシュメモリ113に記録されているログデータのうち、図13のステップS1305にて、画像データの記録先を変更したタイミングまでのログデータとして管理しているログデータを出力する。この際、第1制御部101は、図13のステップS1305で管理する方法に沿った情報を参照することで、現在シリアルフラッシュメモリ113に記録されているログデータのどれが画像データの記録先を変更したタイミングまでのログデータかを判断する。ログデータの出力が完了すると、処理はステップS1410に進む。
ステップS1410では、第1制御部101は不揮発性メモリ103に格納された「画像記録先変更前の撮影有無情報」を「無し」に設定する。その後、処理はステップS1401に戻る。
以上が、ステップS1408にて、第1制御部101が、「画像記録先変更前の撮影有無情報」が「有り」に設定されていると判断した場合の説明である。
一方、ステップS1408にて、第1制御部101が、「画像記録先変更前の撮影有無情報」が「無し」に設定されていると判断した場合、処理はステップS1409やステップS1410を経ることなく、ステップS1401に戻る。
以上が、本実施形態における、撮像の際に自動的にログデータを出力する処理の説明である。
上述のように本実施形態のデジタルカメラでは、撮像した場合、現在の画像データの記録先に変更する前に記録先として設定されていた記録媒体に画像データを記録しているならば、変更前の記録先にログデータを出力する。これにより、画像ファイルに関連するログファイルを同じ記録媒体で管理することが容易となると共に、無駄なログデータの出力を行う可能性を低減することができる。
[その他の実施形態]
上述の実施形態に加え、画像の撮像日時に基づき記録先の記録媒体を決定するか、常に撮像モードでの画像の記録先と同じ記録媒体に記録するようにするかを、ユーザのメニュー操作により、予め切り替えられるようにしてもよい。この場合、例えば、ユーザによる操作部111への所定の操作を受け付けることに応じて、図15のような画面を表示部105に表示する。この画面では、ユーザは、操作部111を介してカーソル1502を操作して、表示領域1501内に表示される選択肢を選ぶことができる。そして、ユーザはこれらの選択肢のいずれか一方を選択することで、対応する記録モードに設定することができる。「選択肢1.記録された画像に応じて記録先に記録する」を選択した場合、ログデータの出力の際には、図6を用いて説明した手順を実行する設定となる。一方、「選択肢2.画像の記録先の設定に従う」を選択した場合は、図2で設定した画像の記録先の設定を、ログデータの記録先として兼用する設定となる。なお、上記では予め設定しておく場合を例に挙げているが、図15のメニューをログデータの出力の指示を受け付けたことに応じて表示させるようにしてもよい。この場合は、どのような記録モードでログデータを出力するかを、ログデータを出力する度に選択することができる。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出し実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。