以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
[第1の実施形態]
<デジタルカメラ100の内部構成>
図1は、本実施形態の画像処理装置の一例であるデジタルカメラ100の構成例を示すブロック図である。なお、ここでは画像処理装置の一例としてデジタルカメラについて述べるが、画像処理装置はこれに限られない。例えば画像処理装置は、携帯電話や、タブレットデバイス、パーソナルコンピュータなどの情報処理装置であってもよいし、カメラ付き携帯電話等の撮像装置であってもよい。
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。なお、制御部101が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部102は、撮像部102に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、制御部101にて所定の演算を行い、記録媒体110に記録される。
不揮発性メモリ103は、電気的に消去・記録可能な不揮発性のメモリであり、制御部101で実行される後述のプログラム等が格納される。
作業用メモリ104は、撮像部102で撮像された画像データを一時的に保持するバッファメモリや、表示部106の画像表示用メモリ、制御部101の作業領域等として使用される。
操作部105は、ユーザがデジタルカメラ100に対する指示をユーザから受け付けるために用いられる。操作部105は例えば、ユーザがデジタルカメラ100の電源のON/OFFを指示するための電源ボタンや、撮像を指示するためのレリーズスイッチ、画像データの再生を指示するための再生ボタンなどの操作部材を含む。また、後述する表示部106に形成されるタッチパネルも操作部105に含まれる。なお、レリーズスイッチは、SW1およびSW2を有する。レリーズスイッチが、いわゆる半押し状態となることにより、SW1がONとなる。これにより、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の撮像準備を行うための指示を受け付ける。また、レリーズスイッチが、いわゆる全押し状態となることにより、SW2がONとなる。これにより、撮像を行うための指示を受け付ける。
表示部106は、撮像の際のビューファインダー画像の表示、撮像した画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部106は必ずしもデジタルカメラ100が備える必要はない。デジタルカメラ100は表示部106と接続することができ、表示部106の表示を制御する表示制御機能を少なくとも有していればよい。
RTC109は、計時を行う計時部である。RTC109は制御部101の要求に応じて日時を示す日時情報を出力する。RTC109は内部に電源を有し、デジタルカメラ100本体の電源がOFFの状態でも、計時動作を継続することができる。
記録媒体110は、撮像部102から出力された画像を記録することができる。本実施形態では、画像をExif−jpegの形式で扱う。記録媒体110は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体110にアクセスする手段を有していればよい。
接続部111は、外部装置と接続するためのインターフェースである。本実施形態のデジタルカメラ100は、接続部111を介して、外部装置とデータのやりとりを行うことができる。なお、本実施形態では、接続部111はアンテナであり、制御部101は、アンテナを介して、外部装置と接続することができる。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture TransferProtocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、接続部211は、赤外線通信モジュール、Bluetooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI(登録商標),IEEE1394など、有線接続を採用してもよい。
<携帯電話200の内部構成>
図2は、本実施形態の外部装置の一例である携帯電話200の構成例を示すブロック図である。なお、ここでは外部装置の一例として携帯電話について述べるが、外部装置はこれに限られない。例えば外部装置は、無線機能付きのデジタルカメラ、タブレットデバイス、あるいはパーソナルコンピュータなどであってもよい。
制御部201は、入力された信号や、後述のプログラムに従って携帯電話200の各部を制御する。なお、制御部201が装置全体を制御する代わりに、複数のハードウェアが処理を分担することで、装置全体を制御してもよい。
撮像部202は、撮像部202に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行いデジタルデータを画像データとして出力する。撮像した画像データはバッファメモリに蓄えられた後、制御部201にて所定の演算を行い、記録媒体210に記録される。
不揮発性メモリ203は、電気的に消去・記録可能な不揮発性のメモリである。不揮発性メモリ203には、制御部201が実行する基本的なソフトウェアであるOS(オペレーティングシステム)や、このOSと協働して応用的な機能を実現するアプリケーションが記録されている。また、本実施形態では、不揮発性メモリ203には、携帯電話200の所在の緯度経度を時系列で記録するログデータを生成するアプリケーション(以下ログアプリ)が格納されている。
作業用メモリ204は、表示部206の画像表示用メモリや、制御部201の作業領域等として使用される。
操作部205は、携帯電話200に対する指示をユーザから受け付けるために用いられる。操作部205は例えば、ユーザが携帯電話200の電源のON/OFFを指示するための電源ボタンや、表示部206に形成されるタッチパネルなどの操作部材を含む。
表示部206は、画像データの表示、対話的な操作のための文字表示などを行う。なお、表示部206は必ずしも携帯電話200が備える必要はない。携帯電話200は表示部206と接続することができ、表示部206の表示を制御する表示制御機能を少なくとも有していればよい。
RTC207は、クロックを計数することで、現在の日時を計時する。RTC207は、制御部201の要求に応じて現在の日時を示す日情報を出力する。なお、本実施形態では、RTC207の計時する日時はUTC(世界協定時:Universal Time,Coordinated)である。
GPS受信部208は、測位処理を行う。測位処理とは、GPS衛星から信号を受信し、受信した信号から携帯電話200の位置を示す位置情報を算出する処理である。本実施形態では、位置情報は、緯度・経度の座標で表される。また、GPS受信部208は、この測位処理により位置情報を算出した日時を示す日時情報も取得する。具体的な取得の方法を以下に述べる。GPS衛星から受信した信号には、いわゆるGPS時という日時情報が含まれる。この信号に含まれるGPS時は、信号がGPS衛星から出力された日時を示す。なお、GPS時はUTCに同期するものである。更に、GPS衛星から受信した信号にはGPS時のUTCとのずれを示す情報が含まれる。GPS受信部208は、この情報を用いてGPS時からUTCを算出する。これにより、GPS受信部208は、位置情報を算出した日時を示す日時情報としてUTCを取得する。この位置情報および日時情報は、必要に応じて制御部201に提供される。本実施形態の携帯電話200では、OSの機能により、RTC207の計時する日時をGPS受信部208から得られる日時情報に基づき補正する。この補正は、RTC207の計時する日時が、GPS受信部208から得られる日時情報の示す日時と一定時間ずれていることが検知されたり、所定の時間補正が行われていないことが検知されることにより実行される。これにより、RTC207の計時する日時を一定の精度に保つことができる。なお、本実施形態では位置情報を取得する手段としてGPSを用いる例について述べるが、位置情報を取得する手段はGPSに限定されるものではない。例えば携帯電話の基地局といった外部装置などから位置情報を取得する装置であってもよい。あるいは、後述の接続部211を介して、公衆無線LANアクセスポイントから位置情報や日時情報を取得する装置であってもよい。このGPS受信部208は、位置取得手段や日時取得手段の一例である。
記録媒体210は、撮像部202から出力された画像データを記録することができる。記録媒体210は、携帯電話200に着脱可能なよう構成してもよいし、携帯電話200に内蔵されていてもよい。すなわち、携帯電話200は少なくとも記録媒体210にアクセスする手段を有していればよい。
接続部211は、外部装置と接続するためのインターフェースである。本実施形態の携帯電話200は、接続部211を介して、デジタルカメラ100とデータのやりとりを行うことができる。本実施形態では、接続部211はアンテナであり、制御部201は、アンテナを介して、デジタルカメラ100と接続することができる。なお、デジタルカメラ100との接続では、直接接続してもよいしアクセスポイントを介して接続してもよい。データを通信するためのプロトコルとしては、例えば無線LANを通じたPTP/IP(Picture Transfer Protocol over Internet Protocol)を用いることができる。なお、デジタルカメラ100との通信はこれに限られるものではない。例えば、接続部211は、赤外線通信モジュール、Bluetooth(登録商標)通信モジュール、WirelessUSB等の無線通信モジュールを含むことができる。さらには、USBケーブルやHDMI(登録商標),IEEE1394など、有線接続を採用してもよい。
公衆網接続部212は、公衆無線通信を行う際に用いられるインターフェースである。携帯電話200は、公衆網接続部212を介して、他の機器と通話することができる。この際、制御部201はマイク213およびスピーカ214を介して音声信号の入力と出力を行うことで、通話を実現する。本実施形態では、公衆網接続部212はアンテナであり、制御部201は、アンテナを介して、公衆網に接続することができる。なお、接続部211および公衆網接続部212は、一つのアンテナで兼用することも可能である。
<携帯電話200におけるログデータの生成>
次に、携帯電話200においてログデータを生成する処理について説明する。本実施形態の携帯電話200には、前述のログアプリが予め記録媒体210にインストールしてあるものとする。携帯電話200の制御部201は、このログアプリを記録媒体210から読みだして作業用メモリ204に展開し、実行することにより、OSの機能と協働して自機の移動軌跡を示すログデータを生成する。
図3(a)は、携帯電話200の制御部201が実行する各ソフトウェアの機能を説明するための概念図である。前述のように、本実施形態のログアプリ301は、OS302と協働してログデータを記録する機能を持つ。ログデータの記録について、以下にユーザインターフェースの例を交えて説明する。図3(b)は、ログアプリを実行中の携帯電話200の表示部206に表示される画面の一例である。この画面300は、ログアプリの動作が開始することに応じて、表示部206に表示される。また、図3(b)の例では携帯電話200が未だデジタルカメラ100と接続していない。そのため、デジタルカメラ100と接続していないことを示すメッセージ302が表示されている。図3(b)において、バー301は携帯電話200が接続可能な通信網の電波状況、時刻、電池の充電状況などを表示している。また、ボタン303はログデータの生成を開始するためのボタンである。ユーザは、ボタン303を操作部205を介して選択することにより、ログデータの記録を開始する指示を入力することができる。このログデータの記録が実行されている間は、図3(c)のように、ボタン303の代わりにボタン304を表示する。ボタン304はログデータの記録を終了するためのボタンである。ユーザは、ボタン304を操作部205を介して選択することにより、ログデータの記録を終了する指示を入力することができる。
ボタン303の選択が検知されると、制御部201は、ログアプリとOSの機能に従って、GPS受信部208により算出された位置情報を読み出し、RTC207から出力される日時情報と共にログデータとして記録媒体210に記録する。ここで、ログデータの記録の際に、ログアプリとOSとがどのように協働するのかについて述べる。
ボタン303の選択が検知されると、制御部201で実行されるログアプリ311は、OSに対して位置情報を要求する。これに応じてOS312は、GPS受信部208から出力される位置情報を受信しログアプリ311に送信する。ログアプリ311は、位置情報を受信すると、日時情報を取得する要求をOS312に対して要求する。これに応じてOS312では、RTC207から出力される日時情報をログアプリ311に送信する。位置情報および日時情報を受信したログアプリ311では、これらの情報を対応づけて記録媒体210にログデータとして記録する。なお、この位置情報の要求から、ログデータの記録までの一連の処理は、ログアプリ311が不図示のクロックをカウントして一定時間毎にOS312に位置情報を要求することで、定期的に実行される。また、この定期的なログデータの記録は、ユーザが図3(c)のボタン304を選択してログデータの記録の終了を指示するか、携帯電話200の電池残量が所定値以下になるまで継続される。このようにして生成されるログデータに含まれる複数の位置情報および日時情報は、携帯電話200の移動軌跡を示すことになる。
図4に、上記の手順により記録されるログデータの一例を示す。図4の例は、5分間隔で位置情報および日時情報をログデータとして記録した場合の例である。記録媒体210の記録領域の一部601には二つのログデータが記録されている。例えば、ユーザは、8時50分に緯度35.680969、経度139.766006の位置でログデータの記録を開始する指示を入力し、11時50分に緯度35.466066、経度139.623055の位置でログデータの記録を一旦終了する指示を入力する。そして、再び19時59分にログデータの記録を開始する指示を入力し、23時54分にログデータの記録を終了する指示を入力する。このような操作を行った結果として、図4のようにログデータ1とログデータ2が記録されることになる。なお、図4の例は、説明のために示す概念図であり、ログデータは位置情報および日時情報以外の情報を含むフォーマットで記録されてもよい。例えば、NMEAフォーマットに従った形式で記録されてもよい。また、ログデータの記録方法に関しては、上記の方法で限定されるものではない。例えば、一定の時間間隔でログデータを追記するのではなく、ログデータ追記後に所定距離以上移動した際に、位置情報と日時情報を追記するような方法でもよい。この場合、移動しなければ新たな位置情報と日時情報が追記されることがないため、ログデータのサイズを抑えることができる。また、上述のログデータの記録では、ログアプリが一定時間毎に位置情報をOSに要求するようにしたが、OSでクロックをカウントして一定時間毎に位置情報をログアプリに出力するようにしてもよい。この場合も、ログアプリは位置情報の取得に応じて日時情報をOSに要求する。また、本実施形態では、位置情報は緯度、経度で取り扱う例について述べるが、方位情報を含めたり、精度の情報(例えば測位に使用した衛星の数など)を含めてもよい。
以上が、ログデータを記録する手順の説明である。
<デジタルカメラ100における画像の生成>
続いて、図5を用いて、本実施例におけるデジタルカメラ100における画像の生成について説明する。図5は、画像を生成する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示される処理は、デジタルカメラ100の電源がONとなることに応じて開始される。なお、この状態では、表示部106には、撮像部102から入力されるスルー画像が表示されており、ユーザは表示部106に映し出される映像を確認しながら撮像を行うことが可能である。
まず、ステップS501では、制御部101はSW1がONとなったか否かを判断する。SW1がONとなっていないと判断された場合は、本ステップの処理を繰り返す。一方、SW1がONとなったと判断された場合、処理はステップS502に進む。
ステップS502では、制御部101はRTC109から日時情報を取得する。
ステップS503では、制御部101は撮像部102により撮像準備動作を行うよう制御する。
次に、ステップS504では、制御部101はSW2がONとなったか否かを判断する。SW2がONとなっていないと判断された場合、処理はステップS501に戻る。一方、SW2がONとなったと判断された場合、処理はステップS505に進む。
ステップS505では、制御部101は、撮像部102により撮像動作を行い画像を取得する。
続くステップS506では、制御部101は、ステップS504で取得した画像をステップS502で取得した日時情報と共に記録媒体110に記録する。この際、画像と共に記録される日時情報は、画像の撮像日時として、画像のヘッダ領域に記録される。また、制御部101はこれに併せて時差情報も画像のヘッダ領域に記録する。ここで、時差情報について説明する。本実施形態のデジタルカメラ100では、タイムゾーンを設定することができる。タイムゾーンとは、共通の地方標準時を利用する地域のことであり、ユーザはメニュー操作等によりタイムゾーンを設定することで、UTCとの時差を示す時差情報を予め設定することができる。例えば、日本ではUTCを9時間進めた日時を地方標準時として扱っており、このタイムゾーンをUTC+9と表す。そして、タイムゾーンを日本と設定した状態で得られた画像には、時差情報としてUTC+9という情報が付加される。本実施形態のデジタルカメラ100では、RTC109の出力する日時情報は、タイムゾーンに応じた時刻が予めユーザのメニュー操作等により設定されているものとして扱う。つまり、制御部101は、このRTC109の出力がタイムゾーンに応じた地方標準時を示すものとして扱う。したがって、RTC109の出力に対して時差情報示す時差を加算すれば、UTCを算出することができる。UTCの利用については、後述の画像への位置情報の付加の説明で詳述する。また時差情報は、ヘッダ領域のうち、いわゆるメーカーノートと呼ばれる領域に記録される。このステップの処理により画像が記録された記録媒体110の記録領域の一部を図6に示す。図6において、記録領域の一部601には、10の画像が撮像日時および時差情報と共に記録されている。また、本実施形態では、制御部101は、記録媒体110に記録されている画像の一つ一つに対して管理用の識別情報、すなわちIDを割り振る。制御部101は、このIDを用いてそれぞれの画像を特定することができる。このIDは、記録媒体110ではなく、作業用メモリ104に一時的に保持されるものであり、電源がONになったことにより記録媒体110に記録されている画像が走査され、それぞれの画像にユニークな値が割り振られる。そして、本ステップで新たに画像が記録される度に、対応するIDが新たに記録された画像に割り振られることになる。図6は、作業用メモリ104の記録領域の一部402に、img0001.jpgから順に割り振られているID1〜ID10が記録されている様子を示している。
ステップS507では、制御部101は、他のモードに遷移する指示を受け付けたか否かを判断する。例えば、操作部105に含まれる再生ボタンの押下が検知された場合、再生モードに遷移する指示を受け付けたと判断する。他のモードに遷移する指示を受け付けていないと判断した場合、処理はステップS501に戻る。一方、他のモードに遷移する指示を受け付けたと判断した場合、処理を終了する。
以上が、本実施例におけるデジタルカメラ100における画像の生成の説明である。
<画像への位置情報の付加>
次に、携帯電話200で生成したログデータを利用して、上述のデジタルカメラ100で生成した画像に位置情報を付加する処理について説明する。
まず、処理に先立って、デジタルカメラ100と携帯電話200とが、接続部111および接続部211を介して接続し、互いの通信をアプリケーションレベルで確立する。本実施形態では、ログアプリは、デジタルカメラ100との通信を確立するための機能を有しており、携帯電話200はログアプリの動作によりデジタルカメラ100との通信を確立することができる。
通信が確立している状態において、ログアプリを実行中の携帯電話200の表示部206に表示される画面の一例を図7(a)に示す。図7(a)の画面においては、携帯電話200がデジタルカメラ100と接続中であることを示すメッセージ702が表示されている。また、ボタン701は、接続したデジタルカメラ100内の画像に位置情報を付加する動作を実行するためのボタンである。このボタン701は、デジタルカメラ100と携帯電話200とが接続している間のみ表示される。ユーザは、操作部205を介してこのボタン701を選択することにより、デジタルカメラ100の記録媒体110に記録されている画像に位置情報を付加する処理を開始する指示を入力することができる。この指示の入力を受け付けることにより開始される、位置情報を付加する処理について概要を説明する。
図8は、上記処理の概要を説明するためのシーケンス図である。図8における処理は、携帯電話200の操作部205を介して、デジタルカメラ100の記録媒体110に記録されている画像に位置情報を付加する処理を開始する指示を受け付けることにより開始される。
まず、ステップS801では、携帯電話200は、デジタルカメラ100との日時の差分を算出するために、デジタルカメラ100に日時情報を要求する。
これに応答して、ステップS802では、デジタルカメラ100は、RTC109から日時情報を読み出す。前述の通り、この日時情報は地方標準時を表す。そのため、RTC207の出力であるUTCの時間軸とは正しく比較することはできない。そこで、デジタルカメラ100は、この日時情報を予め設定されているタイムゾーンに応じた時差情報を用いてUTCの時間軸になるよう補正する。
続くステップS803では、デジタルカメラ100は、このUTCを携帯電話200に送信する。
デジタルカメラ100からUTCを受信した携帯電話200は、ステップS804にて互いのRTCの計時する日時の時差を算出する。具体的には、携帯電話200は、RTC207から出力されるUTCと、デジタルカメラから受信したUTCとの差分を算出する。ここで、例えば、デジタルカメラ100のUTCが12:00:00、携帯電話200のUTCが12:10:00だったとする。この場合、デジタルカメラ100のRTC109が10分遅いと判断される。というのは、携帯電話200のRTC207はGPS受信部208で算出される日時情報により定期的に補正され、一定の精度が保たれる。つまり、互いのRTCの日時情報がずれている原因は、デジタルカメラ100のRTC109の日時情報がずれていることにあると考えられるからである。
次に、ステップS805では、携帯電話200は、ログデータの記録期間を示す日時情報を読み出し、算出された差分によって記録開始と記録終了の日時情報を補正する。これにより、ログデータの記録期間を示す日時を、デジタルカメラの時間軸に合わせる。図4の例では、ログデータの記録期間は、2012年6月5日8時50分から11時50分までと、2012年6月5日19時59分から23時54分までである。この記録期間を、デジタルカメラ100のUTCとの差分に基づき補正する。ステップS1105でデジタルカメラ100のUTCが10分遅いと判断されている場合は、このログデータの記録期間を10分遅らせる。つまり、ログデータの開始日時と終了日時を10分遅らせた日時にする。図4の例で言えば、2012年6月5日8時40分から11時40分までと、2012年6月5日19時49分から23時44分までに補正される。これにより、10分遅れた時刻を計時しているデジタルカメラ100に対応した日時に補正されることになる。デジタルカメラ100では、この要求に対してUTCに変換した撮像日時が要求に対応するか否かが判断される。この撮像日時はRTC109の出力を利用しているため、RTC109が10分遅れている場合は、変換して求められるUTCも携帯電話200で得られるUTCより10分遅れた値を示すことになる。このズレを補完するために、本ステップでの補正が行われる。なお、この補正はログデータそのものに行われるのではなく、デジタルカメラ100に要求するためにログデータから読み出した一時的なデータに対して行われる。また、補正を行うのは記録開始の日時と記録終了の日時に対して行われ、その他のログデータの日時情報には行われない。そして、携帯電話200は、このデジタルカメラ100の時間軸に合わせたログデータの記録期間に対応する画像のIDと撮像日時をデジタルカメラ100に要求する。具体的には、補正後のログデータの開始日時と終了日時により決定される期間内に撮像日時が含まれる画像のIDと撮像日時を要求する。この際、ログデータが複数記録されている場合は、それぞれのログデータの記録を開始した日時と記録を終了した日時により決定される時間の範囲に基づき、画像のIDと撮像日時を要求する。図4の例では、2012年6月5日8時40分から11時40分までと、2012年6月5日19時49分から23時44分までの間に撮像された画像のIDと撮像日時を要求する。なお、前述のようにログデータの記録期間はUTCで表されたものである。
この要求を受け付けたデジタルカメラ100は、ステップS806にて、記録媒体110から要求に対応する画像を読み出し、その画像のIDと撮像日時を携帯電話200に送信する。前述のように、ログデータの記録期間はRTC207の出力であるUTCの時間軸で表される。そのため、地方標準時を示すRTC109の出力を用いた撮像日時とは正しく比較することができない。そこでデジタルカメラ100は、画像の撮像日時をUTCに変換した上で要求に対応する画像を決定する。撮像日時のUTCへの変換については図5で説明したように、画像毎に記録される時差情報を用いて行われる。例えば図4のログデータに基づく要求を受け付けた場合、まず図6に示される画像の撮像日時をUTCに変換する。これにより、各画像の撮像日時から9時間ずつ遅れた日時がUTCとなる。そして、UTCに変換した撮像日時が要求に対応するか否かが判断される。その結果、img0004.jpg〜imp.0008.jpgの画像のIDとUTCに変換された撮像日時が携帯電話200に送信されることになる。以下、UTCに変換する前の撮像日時と区別するためUTCに変換した撮像日時を「撮像日時(UTC)」と記載する。
デジタルカメラ100から送信された、ログデータの記録期間に対応する画像のIDと撮像日時(UTC)を受信すると、ステップS807で携帯電話200は、受信した画像の撮像日時をステップS804で算出した時差に基づき補正する。これにより、撮像日時は、補正していないログデータの日時情報の時間軸に対応する日時に補正される。図6の例では、ステップS806で受信したimg0004.jpg〜img0008.jpgの撮像日時が10分早い日時を示すよう補正される。
ステップS808では、ステップS803にて携帯電話200は時間の情報をキーとしてマッチング処理を行う。ここでは、新たに記録媒体210から読み出したログデータの日時情報(つまり、差分で補正する前のログデータの日時情報)と、補正済みの撮像日時(UTC)とを比較し、差が一定の閾値以下の組み合わせのうち、最も差が小さい組み合わせの日時情報に対応する位置情報と、撮像日時(UTC)に対応する画像のIDとを対応づける。これにより、画像のIDとログデータの位置情報とが対応づけられたセットが生成されることになる。この処理は、受信した画像のID全てに対して実行される。その結果、IDと位置情報のセットが複数生成される。例えば、img0004.jpgのID4には位置情報として緯度35.680233、経度139.766122の位置を示す情報が対応づけられ、ID4と緯度35.680233、経度139.766122の位置を示す情報とが一組のセットとなる。なお、本実施形態のマッチングでは、日時の差が小さい組み合わせが優先される場合を例に挙げて説明するが、これに限られるものではない。例えば、撮像日時(UTC)よりも早い日時を示す日時情報のうち、最も日時の差が小さい日時情報との組み合わせが優先されるようにしてもよい。あるいは、撮像日時(UTC)よりも遅い日時を示す日時情報のうち、最も日時の差が小さい日時情報との組み合わせが優先されるようにしてもよい。
デジタルカメラ100から受信した画像のIDの全てに対してマッチングの処理を終えると、次にステップS809で携帯電話200は、ステップS808で生成したセットをデジタルカメラ100に送信する。
デジタルカメラ100では、このセットを受信すると、ステップS810にて、IDに対応する画像に、IDに対応する位置情報を付加する。例えば、img0004.jpgには、ID4に対応する位置情報である、緯度35.680233、経度139.766122の位置を示す情報が付加される。
ステップS810での位置情報の付加が完了すると、デジタルカメラ100は、ステップS811で、位置情報の付加が完了した旨を示す完了通知を携帯電話200に送信する。
この完了通知を受信すると、ステップS812で携帯電話200は、ステップS804で算出した時差が所定の値よりも大きい場合は、その旨をユーザに通知する。例えば、「デジタルカメラの日時の設定がずれている可能性があります。」といったメッセージを表示部206に表示する。これにより、ユーザは、デジタルカメラの日時がずれていることを認識することができる。このタイミングで日時のずれを通知するのは以下の理由による。上述のステップS805やステップS807の処理は、画像に日時情報が付加される際の日時情報のズレが本フローチャートの処理を実行する際のRTC109の計時する日時情報でも維持されていることを前提としている。つまり、マッチングの前にユーザによりデジタルカメラ100の日時情報が調整されてしまうと、正しくマッチングすることができない。そのため、本実施形態ではこのタイミングで日時のずれをユーザに通知する。
以上が、携帯電話200で生成したログデータを利用して、上述のデジタルカメラ100で生成した画像に位置情報を付加する処理の概要である。
次に、上述した動作を実現するための、携帯電話200とデジタルカメラ100の詳細な動作についてそれぞれ説明する。
まず、携帯電話200の動作について説明する。図9は、位置情報を付加する際の携帯電話200の動作を示すフローチャートである。このフローチャートに示される各処理は、携帯電話200の制御部201が、不揮発性メモリ203に記録されているプログラムを実行し、プログラムに従い携帯電話200の各部を制御することにより実現される。以降の携帯電話200で実行されるフローチャートについても同様である。また、このフローチャートに示される処理は、デジタルカメラ100とのアプリケーションレベルの通信が確立することに応じて開始される。
まず、ステップS901にて、制御部201は、図3(b)の画面から図7の画面に遷移するよう表示を制御する。これにより、デジタルカメラ100との接続中であることを示すメッセージ702が表示され、ユーザは接続中であることを認識することができる。
次に、ステップS902にて、制御部201は、カメラ内の画像に位置情報を付加する指示を受け付けたか否かを判断する。制御部201が受け付けていないと判断した場合、本ステップの処理を繰り返す。制御部201が受け付けたと判断した場合、処理はステップS903に進む。
次に、ステップS903では、制御部201は、デジタルカメラ100に対して、UTCを要求する。ここでは、デジタルカメラ100のRTC109から出力される日時情報をUTCに変換したものを要求する。これに対して、デジタルカメラ100では、予め設定してあるタイムゾーンの情報を用いて、RTC109からの出力をUTCに変換して、携帯電話200に送信する。この処理は、図8のステップS801に相当する。
続くステップS904では、制御部201は、デジタルカメラ100からUTCを受信したか否かを判断する。制御部201が、UTCを受信していないと判断した場合、本ステップの処理を繰り返し、UTCの受信を待つ。一方、制御部201が、UTCを受信したと判断した場合、処理はステップS905に進む。
ステップS905では、制御部201は、デジタルカメラ100から受信したデジタルカメラ100のUTCと、RTC207から出力されるUTCの差分を算出する。この処理は、図8のステップS804に相当する。
次に、ステップS906では、制御部201は、表示部206に例えば図7(b)に示すような、位置情報の付加の処理中であることを示すメッセージを表示する。これに併せて、記録媒体210に保存されているログデータを解析し、ログデータの記録期間を示す情報を読み出して作業用メモリ104に記録する。具体的には、ログデータの生成を開始した開始日時と終了した終了日時とを作業用メモリ104に記録する。前述のように、ログデータが複数記録されている場合は、それぞれのログデータについて、開始日時と終了日時を作業用メモリ104に記録する。
続くステップS907では、制御部201は、ステップS906で作業用メモリ104に記録したログデータの記録期間を補正する。
続いて、ステップS908では、制御部201はステップS907で補正したログデータの記録期間に撮像日時が含まれる画像のIDと撮像日時を要求するための信号をデジタルカメラ100に送信する。ここで送信される信号には、少なくとも、ログデータの生成を開始した日時を示す日時情報と終了した日時を示す日時情報とが含まれる。前述のように、複数のログデータが記録されている場合は、それぞれのログデータの開始日時を示す日時情報と終了日時を示す日時情報とが含まれることになる。ステップS906〜ステップS908の処理は、図8のステップS805に対応する。
ステップS909では、制御部201は、ステップS908で送信した要求に応じてデジタルカメラ100から送信されるIDと撮像日時(UTC)を受信したか否かを判断する。制御部201がIDと撮像日時(UTC)を受信していないと判断した場合、本ステップの処理を繰り返し、IDと撮像日時(UTC)の受信を待つ。制御部201がIDと撮像日時(UTC)を受信したと判断した場合、処理はステップS910に進む。
ステップS910では、制御部201は、制御部201は、受信した撮像日時(UTC)のそれぞれに対して、ステップS1105で算出した差分を用いて補正を行う。これにより、例えば10分遅れたUTCを計時するRTC109の出力を利用した撮像日時(UTC)が、ログデータの日時情報(すなわち、GPS衛星からの信号から算出される正確なUTCで補正された日時情報)に対応する日時に補正される。
ステップS911では、制御部201は、日時の情報をキーとして、画像のIDとログデータの位置情報とをマッチングする。具体的には、ステップS910で補正された撮像日時(UTC)と、ログデータに含まれる各位置情報に対応する日時情報とを比較する。そして、比較の結果、日時の差が一定の閾値以下である場合、制御部201は、その撮像日時(UTC)に対応するIDと日時情報に対応する位置情報とを対応づけて作業用メモリ104に保持する。前述のように、IDは画像毎にユニークな値を示す。つまり、IDに位置情報を対応づけることは、画像に位置情報を対応づけることに等しい。この処理は、ステップS905で受信した全ての撮像日時(UTC)に対して実行される。その結果、例えば作業用メモリ104には、いくつかのIDと位置情報のセットが記録されることになる。このステップの処理は、図8のステップS808に対応する。
ステップS912では、制御部201は、作業用メモリ204に保持した、画像のIDと位置情報とのセットをデジタルカメラ100に送信する。これにより、デジタルカメラ100では、IDをキーとして画像に位置情報を付加する準備が整う。このステップの処理は、図8のステップS809に対応する。
続くステップS913では、制御部201は、デジタルカメラ100から位置情報の付加が完了した旨を示す通知を受信したか否かを判断する。制御部201が通知を受信していないと判断した場合、通知を受信するまで待機する。一方、制御部201が通知を受信したと判断した場合、処理はステップS914に進む。
ステップS914では、制御部201は、ステップS905で算出した互いのRTCが計時する日時の差分が所定の値よりも大きいか否かを判断する。制御部201が所定の値よりも差分が大きくないと判断した場合、本フローチャートの処理を終了する。一方、制御部201が所定の値よりも差分が大きいと判断した場合、処理はステップS915に進む。
ステップS915では、制御部201は、表示部206にRTCの計時する日時がずれている旨を示すメッセージを表示する。例えば、図11のような画面を表示する。なお、前述のように携帯電話200のRTC207の日時情報は、一定の精度が保たれている。そのため、RTC207の計時する日時情報は、RTC109の計時する日時情報よりも正しい可能性が高い。そこで、図11の例では、デジタルカメラ100のRTC109の計時する日時情報がずれているることを通知するメッセージを表示している。これにより、ユーザはデジタルカメラ100の日時がずれていることを認識することができる。なお、デジタルカメラ100が何らかの方法でRTC109の日時情報の精度を保つことができる場合は、携帯電話200かデジタルカメラ100のいずれかのRTCの日時情報がずれている旨を示すメッセージを表示してもよい。
以上が、携帯電話200の動作の説明である。
次に、上述の携帯電話200の動作に対応するデジタルカメラ100の動作について説明する。
図10は、位置情報を付加する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示される各処理は、デジタルカメラ100の制御部101が、不揮発性メモリ103に記録されているプログラムを実行し、プログラムに従いデジタルカメラ100の各部を制御することにより実現される。以降のデジタルカメラ100で実行されるフローチャートについても同様である。また、このフローチャートに示される処理は、携帯電話200とのアプリケーションレベルの通信が確立することに応じて開始される。
まず、ステップS1001では、制御部101は、携帯電話200からUTCの要求を受信したか否かを判断する。制御部101が、要求を受信したと判断した場合、処理はステップS1002に進む。
ステップS1002では、制御部101は、RTC109から出力される日時情報を、予め設定されている時差情報に基づき、UTCに変換する。
続くステップS1003では、変換したUTCを携帯電話200に送信する。
一方、ステップS1001で、制御部101が、要求を受信していないと判断した場合、処理はステップS1004に進む。
ステップS1004では、制御部101は、画像のIDおよび撮像日時の要求を受信したか否かを判断する。
まず、制御部101が、要求を受信したと判断した場合について述べる。この場合、処理はステップS1006に進む。
ステップS1006では、制御部101は、記録媒体110に記録されている画像のうち、一つの画像のヘッダ情報を読み出し、作業用メモリ104に展開する。
ステップS1007では、制御部101は、読み込んだ画像に記録されている撮像日時をUTCに変換する。具体的には、画像のヘッダ領域に記録された時差情報を読み出し、この時差情報に基づき、RTC109の情報を記録した撮像日時をUTCに変換する。例えばUTC+9という時差情報が記録されている場合は、撮像日時を9時間戻すことにより、UTCに変換することができる。
続くステップS1008では、制御部101は、UTCに変換した撮像日時(UTC)が、受信した要求に対応する日時か否かを判断する。具体的には、要求に含まれるログデータの開始日時と終了日時の間に、撮像日時(UTC)が含まれるか否かを判断する。制御部101が対応する日時であると判断した場合、処理はステップS1009に進む。制御部101が対応する日時でないと判断した場合、処理はステップS1009をスキップして、ステップS1010に進む。
ステップS1009では、制御部101は、ステップS1006で読み出したヘッダ情報を含む画像を、対象画像として決定する。ここでいう対象画像とは、対応するIDを携帯電話200に送信する対象である画像を意味する。
ステップS1010では、制御部101は、記録媒体110に記録されている全ての画像について、ステップS1008の処理が行われたか否かを判断する。制御部101が、未処理の画像があると判断した場合、処理はステップS1006に戻り、他の画像について同様の処理を繰り返す。一方、制御部101が、全ての画像について処理が完了したと判断した場合、処理はステップS1011に進む。
ステップS1011では、制御部101は、ステップS1005で対象画像として決定した画像のIDと撮像日時(UTC)を、ステップS1001で受信した要求への応答として、携帯電話200に送信する。
以上が、ステップS1001にて、制御部101が要求を受信したと判断した場合の説明である。
次に、ステップS1001にて、制御部101が要求を受信していないと判断した場合について述べる。この場合、処理はステップS1005に進む。
ステップS1005では、制御部101は、IDと位置情報のセットを受信したか否かを判断する。制御部101が、セットを受信していないと判断した場合、処理はステップS1001に戻り、要求やセットの受信を待つ。一方、制御部101が、セットを受信したと判断した場合、処理はステップS1012に進む。
ステップS1012では、制御部101は、受信したセットに含まれるIDに対応する画像に、セットに含まれる位置情報を付加する。具体的には、IDに対応する画像のヘッダ領域に、セットに含まれる位置情報を記録する。
ステップS1013では、制御部101は、ステップS1012での位置情報の付加が、受信したセットの全てについて実行されたか否かを判断する。制御部101が、まだ全てについて実行されていないと判断した場合、処理はステップS1012に戻り、残りのセットを用いて位置情報の付加を実行する。一方、制御部101が、全てについて実行されたと判断した場合、処理はステップS1014に進む。
ステップS1014では、制御部101は、位置情報の付加が完了した旨を示す通知を、携帯電話200に送信する。その後、本フローチャートの処理を終了する。
以上が、デジタルカメラ100の動作の説明である。
上述したように、本実施形態では、位置情報の付加が完了した後に、互いのRTCがずれていることを通知するようにした。これにより、ユーザは適切なタイミングで日時のずれを認識できる。
また、デジタルカメラ100と携帯電話200とが協働することにより、ログデータや画像そのものをPCに送信することなく、位置情報を画像に付加することができる。
また、本実施形態では、ログデータの生成とマッチングの処理の両方を携帯電話200で動作するログアプリにより実行する。このようにするのは以下の理由による。携帯電話200でマッチングの処理を行えば、例えば精度の低いログデータはロギングやマッチングの対象から外すなど、柔軟な処理を行うことができる。それに対し、カメラ側でマッチングを行うようにした場合、ログデータの精度等の情報を携帯電話から取得する必要がある。以上の理由から、ログデータの生成とマッチングの処理の両方を携帯電話200で行うようにした。これにより、ログデータの生成の特性に合わせたマッチングを行うことが容易となる。さらに、デジタルカメラ100は、単に受信したセットに含まれるIDに対応する画像に、セットに含まれる位置情報を付加する機能だけを有していればよい。そのため、マッチングをデジタルカメラで行う場合やGPSをデジタルカメラに搭載する場合にくらべて、デジタルカメラのコストを低減することができる。
また、本実施形態では、マッチングのために画像を携帯電話に送信する必要がない。そのため、画像を他機に送信してマッチングする場合に比べて、通信量を低減することができる。
また、本実施形態では、マッチングを行う際にUTCを利用する。これにより、各機器で設定されたタイムゾーンが異なる状態でログデータや画像が取得された場合であっても、その影響を受けることなくマッチングを行うことができる。
[第2の実施形態]
第2の実施形態では、日時のずれが存在することを通知すると共に、自動的に日時を調整することについて述べる。なお、本実施形態では、第1の実施形態と共通する部分については説明を省略し、本実施形態に特有の部分を中心に説明する。
図12は、第2の実施施形態における携帯電話200の動作を示すフローチャートである。このフローチャートに示される処理は、デジタルカメラ100とのアプリケーションレベルの通信が確立することに応じて開始される。
ステップS1201〜ステップS1214では、図9のステップS901〜ステップS914と同様の処理が実行される。
ステップS1215では、制御部201は、日時がずれている旨をユーザに通知すると共に、日時情報の調整の指示を受け付ける。例えば、図13のような画面を表示部206に表示する。画面1300では、「デジタルカメラ100の日時情報がずれています」というメッセージを表示して、デジタルカメラ100の日時がずれている旨をユーザに通知する。これに併せて、「調整しますか?」というメッセージと共に、「はい」「いいえ」のそれぞれのボタンを表示する。ユーザは、操作部205を介して「はい」ボタンを選択することにより、日時情報の調整の指示を入力することができる。また、「いいえ」ボタンを選択することにより、日時情報の調整をしない指示を入力することができる。
ステップS1216では、制御部201は、ステップS1215で日時情報の調整をする指示を受け付けたか否かを判断する。制御部201が、日時情報の調整をする指示を受け付けていないと判断した場合、本フローチャートの処理を終了する。図13の例では、「いいえ」ボタンを選択することで、日時情報の調整をしない指示が入力された場合、本フローチャートの処理が終了する。一方、制御部201が、日時情報の調整をする指示を受け付けたと判断した場合、処理はステップS1217に進む。図13の例では、「はい」ボタンを選択することで、日時情報の調整の指示を入力された場合、処理はステップS1217に進む。
ステップS1217では、制御部201は、RTC209から日時情報を読み出し、この日時情報をデジタルカメラ100に送信する。また、この日時情報を用いてデジタルカメラ100のRTC109で計時される日時情報を調整する指示を示す情報も併せて送信する。これにより、デジタルカメラ100では、RTC109の計時する日時情報を、より正確なRTC209の日時情報に合わせるように調整することができる。この処理については後述する。
以上が、本実施形態における携帯電話200の動作の説明である。
次に、上記の携帯電話200の動作に対応するデジタルカメラ100の動作について説明する。図14は、第2の実施施形態におけるデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示される処理は、携帯電話200とのアプリケーションレベルの通信が確立することに応じて開始される。
ステップS1401では、制御部101は、携帯電話200から日時情報と日時情報の調整指示とを受け付けたか否かを判断する。制御部101が受け付けたと判断した場合、処理はステップS1402に進む。
ステップS1402では、制御部101は、受信した日時情報を、予め設定されているタイムゾーンに基づく時差情報で、そのタイムゾーンに応じた地方標準時に変換する。なお、携帯電話200から受信した日時情報は、前述のようにUTCを計時するRTC207から出力された日時情報である。すなわち、携帯電話200から受信した日時情報は、UTCを示す。そのため、地方標準時を計時するRTC109の時間軸に合わせるために、本ステップでの処理が実行される。
次いで、ステップS1403では、制御部201は、ステップS1402で変換した日時情報を用いて、RTC109で計時される日時情報を調整する。これにより、RTC109の計時する日時情報は、携帯電話200のRTC207の計時する日時情報と一致するように調整される。
一方、ステップS401で、制御部101が携帯電話200から日時情報と日時情報の調整指示とを受け付けていないと判断した場合、処理はステップS1402に進む。
ステップS1404以降の処理は、図10のステップS1001以降の処理と同様のため説明は省略する。
以上が、本実施形態におけるデジタルカメラ100の動作の説明である。
上述したように、本実施形態では、適切なタイミングで日時がずれていることを通知するだけでなく、その通知に併せてデジタルカメラ100の日時情報を調整する指示を受け付けるようにした。これにより、ユーザビリティが向上する。
[その他の実施形態]
なお、上述の実施形態に加えて、画像が書き込み不可(いわゆるプロテクト)の状態や、既に位置情報が付加されている場合は、要求された記録時間に含まれていても対象画像としないようにしてもよい。すなわち、図10のステップS1004とステップS1005の間に、画像が書き込み不可(いわゆるプロテクト)の状態か、既に位置情報が付加されているかを判断するようにしてもよい。そして、画像が書き込み不可(いわゆるプロテクト)の状態か、既に位置情報が付加されていると判断した場合は、処理をステップS1007に進める。つまり、その画像をマッチングの対象画像として決定しないようにする。これにより、位置情報の書き込みができない画像に対して付加しようとしたり、既に位置情報が付加されている画像に再度付加するなどの無用な処理を省くことができる。
また、上述の実施形態では、RTC207をGPS受信部208により算出される日時情報で補正する例について述べた。この補正については、他にも、接続部211を介してインターネット網にアクセスしNTP(Network Time Protocol)により取得される日時を用いることができる。あるいは、公衆網接続部212を介して公衆電話回線網にアクセスし、基地局から受信される日時を用いてもよい。
また、上述の実施形態ではRTC207がUTCを計時するものとして説明した。これについては、RTC207が地方標準時を計時するようにしてもよい。この場合、携帯電話200では、デジタルカメラ100と同様にタイムゾーンを設定することができ、タイムゾーンに応じた時差情報により、RTC207の出力を補正することでUTCを算出できるようにする。
また、上述の実施形態に加えて、日時がずれていることを通知する際にどの程度の日時がずれているのかを通知するようにしてもよい。
また、上述の実施形態では、日時がずれていることを通知する場合について述べた。これについては、マッチングの後に自動的にデジタルカメラ100の時刻調整を行うようにしてもよい。あるいは、時刻調整するかどうかの判断をユーザに促してもよい。例えば、日時がずれていることの通知と共に、「時刻調整を実行しますか?」といったメッセージと、時刻調整を実行するためのOKボタンと、キャンセルするためのキャンセルボタンとを表示する。ユーザは操作部205を介して、OKボタンを選択することにより、時刻調整を実行することができる。また、ユーザは操作部205を介してキャンセルボタンを選択することにより、時刻調整をせずに終了することができる。なお、これにより自動的に時刻調整を行うことが選択された場合、その選択に応じて制御部201はRTC207の出力(UTC)をデジタルカメラ100に送信する。その出力を受信したデジタルカメラでは、設定されているタムゾーンに応じた時差情報に基づき、地方標準時に変換する。そして、この地方標準時を示すように、RTC109で計時される日時を調整する。
また、上述の実施形態では、位置情報の付加が終了した後にデジタルカメラ100の日時がずれていることを通知する場合について述べた。これについては、このタイミングに限られるものではない。本実施形態では、正しいマッチングを行うために、調整前のRTCの出力の差分を算出することができれば十分である。そのため、この通知は例えば図9のステップS905以降であればどのタイミングで通知しても構わない。
また、既に調整前のRTC109の出力を受信済みであれば、マッチングの前、あるいはマッチングと並行して、デジタルカメラ100で計時される日時を調整してもよい。
また、上述の実施形態において、図11のステップS1112で、IDと位置情報のセットを送信する際に、それぞれの位置情報に対応する時差情報を含めてもよい。このようにした場合、デジタルカメラ100では、画像に位置情報を付加する際に、画像に記録されている時差情報を受信した時差情報に上書きしてもよい。なお、これに伴い撮像日時も新たな時差情報に対応した標準時となるように上書きする必要がある。これについては、例えば携帯電話200が時差情報に対応する標準時を、マッチングに用いたUTCから算出し、IDと位置情報のセットを送信する際に時差情報と標準時を含め、デジタルカメラ100で受信した時差情報と標準時を、それぞれ上書きしてもよい。あるいは、デジタルカメラ100は時差情報を受信すると、上書きする前の時差情報と撮像日時を用いて一旦UTCを算出し、そこからさらに受信した時差情報から対応する標準時を算出し、撮像日時として上書きしてもよい。これにより、ユーザの更なる手間を必要とすることなく画像の撮像日時および時差情報を適切な情報に改めることができる。
なお、上述の実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。