本発明の実施の形態を、図を参照して詳細に説明する。
図1は、本発明による画像通信方法を実現可能な画像通信装置の一構成例を示すブロック図である。
図1の入力部101は、ユーザからの指示や、データを入力する装置で、キーボードやポインティング装置を含む。なお、ポインティング装置としては、マウス、トラックボール、トラックパッド、タブレット等が挙げられる。あるいは、本例を例えば公知のデジタルカメラ装置に適用した場合には、ボタンやモードダイヤル等で構成されるのであっても良い。
データ保存部102は、画像データを保持する部分で、通常はハードディスク、CD−ROMやCD−R、メモリーカード等で構成される。また、データ保存部102にプログラムやその他のデータを保存することも可能である。
通信部107は、イーサネット(登録商標)やモデムなどの通信を制御する部分である。通信方式は任意であって公知のUSB、IEEE1284、IEEE1394などの有線による通信方式であってもよいし、あるいは赤外線、IEEE802.11b等の無線通信方式であっても良い。通信部107はこれらの通信路制御装置部分である。
表示部103は、GUI(グラフィックユーザインターフェース)等の画像を表示する装置で、一般的にはCRTや液晶ディスプレイなどが用いられる。
104はCPUであり、上述した各構成の処理の全てに関わる。
ROM105とRAM106は、そのCPU104の処理に必要なプログラム、データ、作業領域などをCPU104に提供する。また、後述する処理に必要な制御プログラムは、データ保存部102に格納されているか、ROM105に格納されている場合は、一旦RAM106に読み込まれてから実行される。
時刻発生部108は時刻を表す値を保持するとともに、一定期間毎(例えば1秒毎)に時刻を表す値を更新する公知の計時手段である。また、表示部103と入力部102を用いて、ユーザが時刻を変更可能であるようにしても良い。
あるいは、図示しないが、さらに公知のCCDなどの画像入力手段を設けて、画像を入力してデータ保存部102に蓄える、というようにしてもよい。
なお、システム構成については、上記以外にも、様々な構成要素が存在するが、本発明の主眼ではないので、その説明は省略する。
図2は、本発明による画像通信方式による画像通信システムの例を示す図である。
図2では、例えば図1の構成による画像通信装置である201と202が通信路203によって接続している状態を示している。
通信路203は通信方式が公知のイーサネット(登録商標)、モデム、USB,IEEE1284,IEEE1394などの有線による方式の場合には物理的な形状を持つケーブルであるが、あるいは赤外線、IEEE802.11bなどの無線である場合には、概念的な通信経路である。本件による発明は通信経路の種類に依存しないが、図2では説明の便利のため通信経路203を図示している。
また、画像通信装置201の211は十字キー、212、213ボタンを示しており、図1の入力部101を構成している。十字キー、ボタンはあくまでも一例であって、その種類や数は本発明による方式には依存しないし、また本発明による方式を制限するものでもない。
本実施形態では、ユーザは画像通信装置201を操作し、画像通信装置202内部に保存されている画像を探す場合を例にして説明する。説明の便利のため、ユーザが操作する画像通信装置201をクライアント、画像を保持する画像通信装置202をサーバとも呼び区別することとする。
本発明による方式では、サーバ側に表示部や入力部は必須ではないので省略しても良い。図2の場合、本実施例での説明とは逆に画像通信装置201がサーバで画像通信装置202がクライアントにもなれるような構成の例を示しているだけである。
クライアント201とサーバ202は、それぞれ内部のデータ保存部102に幾つかの画像データファイルを保持している。また、各画像は、それぞれの装置内部の時刻発生部108に従い、画像生成を行った時刻が画像データファイルと関連付けされて記録されているとする。
これは例えばクライアント201およびサーバ202がデジタルカメラ装置である場合には、ユーザによる撮影時に画像データをデータ保持部102にファイル化して保存するとともに、時刻発生部108より時刻を取り出し、画像データファイルのタイムスタンプとして保持する。
ユーザがクライアント201のGUIを操作して検索を指示して検索モードに入った場合、クライアント201側でユーザは、例えば図3に示すような操作の流れを行う。
検索モードでは、まずステップS301で時刻、または時刻の範囲を指定する。時刻の指定は表示部103によるGUIと入力部102からの指示で、時刻を表す数値を入力する。
また、入力部101の十字キー211などを操作して、クライアント201のデータ保存部102にある画像、もしくはその一覧を表示部103に表示して、そのうちから一枚もしくは複数毎の画像を選択し、その選択した画像に関連付けられた時刻(例えば、選択された画像がデジタルカメラで撮影された画像の場合、その撮影時刻)を用いて、時刻もしくは時刻の範囲を指定する。
時刻の範囲の一例は、複数枚の画像が選択された場合、それらの画像のうちの時刻が最も古いものから新しいものまでの時刻の範囲である。また、時刻の範囲の他の例は、選択された一枚の画像に対応する時刻の前後所定範囲、または、選択された複数枚の画像に対応する時刻のうちの時刻が最も古いものの所定時間前から新しいものの所定時間後までの範囲である。
ここで言う時刻とは、時分秒の情報の他に年月日の情報を含むものであって良い。
図4は、時刻と装置内部での時刻の関係、また時刻の範囲について説明する概念図である。図4の451は例えば正確な時刻を表しており、452はクライアント201内部での、時刻発生部108による時刻を表している。451と452の間には|T0−T1|の時刻の違いがあるとする。
また、401〜410は撮影を行って得た画像データファイルを意味しており、それぞれT1からt1〜t10経った時刻に撮影したので、それぞれ画像データファイルのタイムスタンプが、(T1+t1)〜(T1+t10)となっているということを表している。
さて、画像を探す範囲の時刻を、ユーザが数値入力によって入力した場合、それは図4における451による時刻なのか452による時刻なのか、あるいはその他の時刻、例えばユーザが身につけている腕時計による時刻なのかが明確ではない。
例えば、ユーザが正確な時刻、すなわち451における時刻を指定した場合、各画像ファイルのタイムスタンプとは|T0−T1|のずれがある。したがって、ユーザが目的とした時刻を指定するためには、何らかの方法によりユーザが時刻の差|T0−T1|を算出した上でその時刻差を考慮して時刻の指定を行う必要がある。
一方、例えば画像、もしくはその一覧を表示して、ユーザが画像を選択する場合には、ユーザに明示的に時刻を提示することなく452上での時刻を指定することができる。例えば、図4では、画像404を起点、画像407を終点として、452上で時間範囲(T1+t4)〜(T1+t7)を指定した例を図示している。
また、他の形態では、上記方式による範囲指定に加えて、さらにその範囲の前後に範囲を拡張する指定が可能である。
例えば、ユーザが画像404、405、406、407を撮影したのは何らかのイベント、例えば運動会におけるゴールシーンなどを記録するためであるような場合がある。ユーザがそのイベントの全てを記録したとも限らない。すなわち、イベントに対して撮影開始が遅れたりあるいはイベントの最後の部分が撮影できなかった、という場合があり得る。したがって、ユーザが撮影した画像による時刻範囲指定に加えて、さらにユーザが前後のオフセット(図4の△t0、△t1)を指定することが可能である。
図5は、例えばこの時刻範囲指定処理のGUIの例を示す模式図である。
図5の501、502中の401〜409は画像を表しており、図4の401〜409に対応する。501、502は、表示部103に表示されるGUIの画面を表わす。
ユーザが範囲の指定を行う場合、例えばまず501のように画像の一覧を表示するとともに、その画像のうち1つを範囲の起点として指定させる。ユーザは入力部101を操作して画像を選択する。図5の501は例えば画像404を選択している状態を例示している。
ユーザが範囲の起点となる一枚目の画像を指定すると、GUIは502のように範囲の終点となる画像の指定を促す。ユーザは同様に入力部101を操作して画像を選択する。図5の502は例えば画像408を選択している状態を例示している。
例えば502において、501で指定した画像404の選択を禁止する理由は特にない。502で404を指定した場合は、単に時刻の範囲が0となるだけである。
502でユーザが範囲の終点となる二枚目の画像を指定すると、GUIは503のようにさらに501、502で指定した範囲の前後オフセットの入力を促す。ユーザは入力部101を操作して所望のオフセット値を設定する。503の例の場合、さらにGUI上にセットボタンを設けており、入力部101を操作してセットボタン503Sを選択することにより、501〜503で指定した範囲を確定させるようにしてある。
501〜503のGUIはあくまでも一例であって、この他の表現であってもかまわない。また503ではオフセット値を分で入力したが、これが時間や秒のような他の時間単位であっても構わない。さらには、予めこの値は設定されているか、あるいはシステム側で決定しているのであってもよいが、その場合は、503の処理は冗長であり省略するのであっても構わない。
例えば以上のようなシーケンスによって、図3のステップS301における時刻範囲の指定が実現される。
次にユーザは入力部101を操作し、検索を指示する(ステップS302)。ここでは、指定した時刻の画像、または指定した時刻の範囲の画像の検索を指示する。例えば図2の場合、サーバ202に対して検索を依頼することになるが、この部分の通信手順、サーバ202側での処理等は後述する。
次にクライアント201はサーバ202側での検索結果を受け取るので、その検索結果を提示する(ステップS303)。最も単純には、サーバ202側の画像の識別子、たとえば画像ファイル名を表示部103に表示する。あるいは、サーバ202側に該当する画像が一枚もなかった場合には、「該当する画像はありませんでした」等のメッセージを表示するなどして、その旨をユーザに通知する。
ステップS304では、S303で受け取った検索結果に応じて処理を振り分けている。サーバ202が返した検索結果で該当する画像が一枚もなかった場合には処理をステップS309に流し、そうでない場合には処理をステップS305に流す。
ステップS305では、実際にサーバ202から受け取る画像を指定する。ユーザが選択する場合には、ユーザは入力部101を操作して、ステップS303で表示された画像より所望のものを選択する。あるいは、ユーザの操作を介さず、自動的に全ての画像を選択するのであっても良い。
ステップS306では、ステップS305でのユーザの選択に応じて処理を振り分けている。ユーザが一枚以上の画像を選択した場合には処理はステップS307に流れ、画像の通信処理を行って、選択した画像をサーバ202から取得するが、ユーザが一枚も画像を選択しなかった場合には、ステップS307をスキップしてステップS308に処理は流れる。
ステップS308では、ステップS303で受け取った検索結果に対して、S305〜S307による処理を再度行うかどうかを判断している。これは表示部103にメッセージを表示して、ユーザが入力部101を操作して再度行うかどうかの指示を行い、その指示に応じて処理を振り分ける。再度行う場合には、処理はステップS303へ、そうでない場合には、処理はステップS309に流れる。
最後にステップS309では、検索処理をもう一度行うかどうかを判定して処理を分岐している。これもステップS308同様にメッセージを表示してユーザの指示に応じて処理を振り分ける。再度検索処理を行う指示の場合には処理はステップS301に戻り再度検索を行う。そうでない場合は、図3の流れ図による検索モードの処理は終了する。
図6は、クライアント201とサーバ202の処理と通信の流れを表す図である。
クライアント201およびサーバ202は、それぞれ、コンピュータであるCPU104の制御の元に以下の動作を行う。RAM106は、このプログラムをCPU104により読み出し可能に記憶した記憶媒体である。また、このプログラムを、不図示のフロッピー(登録商標)ディスク、コンパクトディスクからRAM106に読み込むように構成した場合、この不図示のフロッピー(登録商標)ディスク、コンパクトディスクが、このプログラムをCPU104により読み出し可能に記憶した記憶媒体に相当する。また、このプログラムは、インターネット等の通信媒体を介して、RAM106に読み込むようにしてもよい。
まず、クライアント201はクライアント201内部の時刻発生部108より現在の時刻(T1)を取得して(S601)、直ちにT1をサーバ202に送信する(ステップS611)。
次に、サーバ202はクライアント201からの時刻送信に応じて、サーバ202内部の時刻発生部108より現在の時刻(T2)を取得して、クライアント201とサーバ202の時差(T2−T1)を算出して保持する(ステップS602)。また、クライアント201に対してACKを返す(S612)。
時差(T2−T1)には、実際にはクライアント201とサーバ202の間の通信に要する時間も含まれるが、通信が十分に高速であれば誤差として許容できるので構わない。また、この通信に要する時間T0を考慮し、(T2−T1−T0)を時差とする。この時間T0は、固定の値でよい。この時間T0を考慮する形態については、後述する。
ACKを受け取ったクライアント201は、次に時刻もしくは期間(時刻の範囲)を検索条件としてサーバ202に送信する(S613)。時刻もしくは期間は、例えば図3で示した処理や図5で示したようなGUIにより、クライアント201を操作するユーザが指定する。ユーザが時刻もしくは期間を指定するタイミングは、サーバ202よりACKを受信した後でも構わないし、あるいはステップS601の処理の前に行っておくのでも構わない。すなわち、クライアント201の時刻は、クライアント201でサーバ202へ検索要求を行うための操作がなされたときに、クライアント201からサーバ202へ送信してもよいし、また、クライアント201での検索の操作とは無関係に、定期的、あるいは、ランダムなタイミングで、クライアント201からサーバ202へ送信してもよい。
ここで指定された時刻もしくは期間(すなわち、クライアント201がサーバ202に送信した検索条件の時刻もしくは期間)は、クライアント201内部の時刻発生部108に基づいた値である。
検索要求を受け取ったサーバ202は、検索要求内部にある時刻もしくは期間を、先にS602で算出した時差を用いて修正する(S603)。
図7は、この処理を説明する図である。
図7で201、202は図2のクライアント201、サーバ202と同一である。
図7の例の場合、サーバ202には701〜705の5枚の画像ファイルがあり、それぞれ撮影時刻が画像とともに関連付けられてサーバ202内部のデータ保存部102に記録されている。また、図7におけるクライアント201側の時刻T1、サーバ202側の時刻T2は、それぞれ2001年4月11日17時05分20秒、2001年4月11日17時02分25秒であるとする。
クライアント201の現在時刻T1が、クライアント201からサーバ202に送信されると、サーバ202は時差Td=(T2−T1)を算出する。図7の例の場合、−2分55秒という時差が得られる。ここで、時差の定義としてT2、T1でどちらからどちらを引くかということはあまり問題ではない。逆の場合は以下に説明する時刻修正処理において足し算、引き算が入れ替わるだけである。
つぎに、クライアント201側でユーザが指定した検索の条件の期間(時刻範囲)が2001年4月11日08時23分00秒から2001年4月11日11時18分00秒までであったとする。
この検索条件は、クライアント201内部の時刻発生部108に基づく時刻、すなわち言い換えればクライアント201側での時刻であって、サーバ202内部の時刻発生部108に基づく時刻、つまりサーバ202側での時刻ではない。一方で、サーバ202が保持する各画像701〜705に関連づけられている時刻はサーバ202側の時刻である。したがって、先に算出した時差Tdを用いて、この検索条件の時刻、期間を修正する。すなわち、この条件に対してTdを加える処理を行う。
修正前: 2001年4月11日08時27分00秒から2001年4月11日11時18分00秒まで
修正後: 2001年4月11日08時24分05秒から2001年4月11日11時15分05秒まで
上記例で説明されるように、検索条件の時刻、期間の修正をステップS603で行う。
次に、ステップS604で、この修正後の検索条件を用いて画像を検索する。例えば図7の例においては、修正後の検索条件が2001年4月11日08時24分05秒から2001年4月11日11時15分05秒までなので、画像702、703がヒットする。すなわち、サーバ202は、サーバ202の時刻とクライアント201の時刻の時差を考慮して、検索を行う。さらにサーバ202はこの検索結果をクライアント201に返す(ステップS614)。なお、ステップS603での修正を行わない場合、クライアント201からの検索要求に対応するのは、703、704であり、ステップS603での修正を行ったステップ604での検索結果とは異なる。
このサーバ202がクライアント201に返す検索結果は、少なくとも検索結果の画像の識別子(例えばファイル名など)を含む任意の形式でよい。
図8は、このサーバ202がクライアント201に返す検索結果の一例を示す図である。
801は、例えば図7で説明した検索結果の例である。ここでは例えば画像702、703の識別子として画像ファイル名がそれぞれimg0702.jpg,img0703.jpgであるとして例を示している。また、この例では画像の識別子の他に画像に関連付けられた時刻を付与している。例えば801の2行目のTime:の右側にある「20010411082512」は、2001年4月11日8時25分12秒であることを意味している。
802は801と同じ結果であるが、先に用いたTdを用いて検索結果の画像に関連付けられた時刻を修正して返す場合の例である。802の場合、サーバ202は、img0702.jpgに関連付けられた時刻を、時差Td(−2分55秒)を用いて修正し、「20010411082807」、すなわち2001年4月11日8時28分7秒になっている。
また、803は802の内容をXMLの形式で記述した例である。803において、imageタグは個々の検索結果の画像を意味し、その識別子はhandle属性、関連付けられた時刻はcreated属性の値として格納されている。image−listingタグは、各imageタグをまとめるためのものである。
なお、以上の説明では、検索条件の時刻を修正したが、図7の画像701〜705の時刻を、クライアント201とサーバ202の時刻の差に応じて変更したリストを作り、クライアント201から送られた検索条件に応じて、そのリストの中の検索条件に合う時刻を検索し、対応する画像を検索結果とすることもできる。
この検索結果を受け取ったクライアント201は、検索結果をユーザに提示して選択を行う(ステップS605)。この処理は図3のS303〜S305に相当する。
さらに、画像の選択を基にクライアント201は、画像の送信要求をサーバ202に送信する(S615)。すなわち、クライアント201は、選択に応じて対応する画像の識別子を検索結果より取り出し、画像の識別子とともに画像送信の要求をサーバ202に送信する。
サーバ202は画像送信の要求を受け取り、要求内部より画像の識別子を取り出し、識別子を基にデータ保存部102より対応する画像を取り出し、クライアント101に送信する(S616)。
以上説明したように、クライアント201とサーバ202の時刻が合致していない場合にも、クライアント201を操作するユーザが所望する時刻の画像をサーバ202で検索することができる。
本実施形態においては、検索結果として画像の識別子と時刻を返す例を説明したが、この他にも例えば、サムネイル画像を用いてクライアントを操作するユーザは検索結果の画像を概観することができるようにすれば、さらに使い勝手が向上する。
このようにするには、以下の様にすればよい。
サーバ側は、各画像のサムネイル画像データを返し、クライアント側では受け取ったサムネイル画像をユーザに提示して選択させる。
あるいは、クライアントが、受け取った検索結果の各画像の識別子をもとにサーバに対してサムネイル画像を要求し、受け取ったサムネイル画像の一覧を提示しユーザに選択させる。
またあるいは、サーバは、検索結果において画像の識別子と対応するようにサムネイル画像の識別子を付与し、クライアントは、検索結果の各画像に対応付けられたサムネイル画像の識別子を用いてサムネイル画像をサーバに要求して得て、受け取ったサムネイル画像の一覧を提示してユーザに選択させる、などサムネイル画像を容易に得られるように構成するのであっても良い。
以上の説明では、時差による時刻修正処理を全てサーバ側で行ったが、クライアント側で行うことも可能である。
次に、クライアント側で時刻修正処理を行う例を説明する。
図9は、本実施形態でのクライアントとサーバの処理と通信の流れを示す図である。
クライアント201およびサーバ202は、それぞれ、コンピュータであるCPU104の制御の元に以下の動作を行う。RAM106は、このプログラムをCPU104により読み出し可能に記憶した記憶媒体である。また、このプログラムを、不図示のフロッピー(登録商標)ディスク、コンパクトディスクからRAM106に読み込むように構成した場合、この不図示のフロッピー(登録商標)ディスク、コンパクトディスクが、このプログラムをCPU104により読み出し可能に記憶した記憶媒体に相当する。また、このプログラムは、インターネット等の通信媒体を介して、RAM106に読み込むようにしてもよい。
クライアント201(図2)は、処理を開始するにあたってまずサーバ202(図2)に対して時刻の要求を送信する(ステップS911)。この要求は、クライアント201で検索操作が行われたときに、送信してもよいし、クライアント201での検索操作とは関係なく、定期的に、あるいは、ランダムなタイミングで、送信してもよい。
サーバ202はクライアント201からの時刻送信の要求に応じて時刻発生部108より現在の時刻(T2)を取得して(ステップS901)、直ちにクライアント201に送信する(ステップS912)。
サーバ202よりの時刻応答を受け取ったクライアント201は、時刻発生部108より現在の時刻(T1)を取得し、クライアント201とサーバ202の時差を算出する(ステップS902)。なお、図6の形態と同様に、この時差は、クライアント201とサーバ202の間の時間T0を考慮して、求めてもよい。
さらに、ユーザが指定した時刻もしくは期間(時刻の範囲)を、算出した時差を用いて内部的に変換し(ステップS903)、変換後の時刻もしくは期間を検索条件としてサーバ202に検索要求を送信する(ステップS913)。すなわち、クライアント201は、サーバ202の時刻とクライアント201の時刻の時差を考慮して、検索を要求する。図7の形態と同様の検索条件がユーザにより指定された場合、検索範囲は、「8時27分00秒から11時18分00秒まで」だったものが、時差(−2分55秒)により、「8時24分5秒から11時15分5秒まで」になる。
サーバ202は受け取った条件を基に画像を検索し(ステップS904)、検索結果をクライアント201に送信する(ステップS914)。
クライアント201は検索結果をユーザに提示して、その結果を基に所望の画像を指定し(ステップS905)、画像送信の要求をサーバ202に送る(ステップS915)。この時、サーバが図8の様に画像の識別子の他に各画像に対応付けられた時刻の情報を送信してくる場合、好ましい実施形態では、クライアント201は、先に算出した時差(−2分55秒)を考慮して、画像に対応する時刻を修正して、表示部103からユーザに提示する。先の例では、画像702の時刻は、8時25分12秒が、8時28分07秒に、画像703の時刻は、8時48分37秒が、8時51分32秒になる。
クライアント201からの画像送信要求を受け取ったサーバ202は、送られてきた要求に書かれた画像の識別子を基にデータ保存部102より対応する画像を取り出し、クライアント101に送信する(ステップS916)。
本実施例の場合、主な時刻変換等の処理をクライアント側で行うので、サーバ側のリソース、たとえばCPU性能やROM,RAMの領域の大きさに制限がある場合にも適用可能である。
次に、図6のステップS602、図9のステップS902では、サーバ・クライアント間の通信速度が十分に高速で、通信時間は十分に無視できる場合の例を示したが、本実施例はそうでない場合に対応する形態を説明する。
図10は、通信時間推定方式の例を示す図である。図10はサーバ側で通信時間の推定を行う場合の例であるが、クライアント側で行う場合には、図10においてサーバとクライアントを入れ替えれば良い。
図10での処理は、サーバは、まずステップS1001において時刻発生部108の現在時刻(Ts)を取得する。次に、クライアントに対して返答を要求し(ステップS1011)、要求されたクライアントはサーバに対してACKを返す(ステップS1012)。ACKを受け取ったサーバは再度現在時刻(TE)を取得する(ステップS1002)。この2つの時刻の差(TE−Ts)は、実際にはサーバ側の処理時間やクライアント側の時間を含むものの、ステップS1001、S1002の処理が十分に軽く、またサーバ・クライアント間の通信量を小さくすることによって、サーバ・クライアント間一往復に要する通信時間に近似できる。
サーバ・クライアント間の通信速度が対称であれば、(TE−Ts)を2で割ることによりサーバからクライアント、もしくはクライアントからサーバへの通信時間として、図6のステップS602、図9のステップS902で説明した時差とともに考慮して時刻の修正処理を行う。
また、サーバ・クライアント間の通信速度が非対称であっても、その速度比を考慮することによって同様に通信時間が推定できることは自明である。
さらに、図10で説明したような処理を複数回行い、その結果を平均などの統計的手法によってさらに通信時間の推定の確度をあげるようにしてもよい。
図10で説明したような処理は、例えば図6の例えばS601の処理の前や、あるいはS602の後に行うことにより、より検索の精度を向上させることができる。
図10の場合、図6とは異なり、サーバ側が主体的に通信を開始するようになっているが、必要であれば図10による処理を開始するための要求をクライアントがサーバに送信し、サーバはその要求に応じて図10に示した処理を行うように構成すれば良い。
以上説明したように、通信時間を推定するための処理を設けることにより、通信が高速でない場合にも、ユーザの意図した検索を行うことが可能となる。
なお、サーバ、クライアント双方の時刻発生部108が保持する時刻値は、この時刻発生部に時刻値を与えて時刻の修正をすることも可能である。
そのように修正する場合、例えば時刻修正時に修正前の時刻値(Tbefore)と修正に用いる時刻値(Tafter)より時刻修正の時間差(Tafter−Tbefore)を算出し、データ保存部102にある各画像に対応付けられた時刻値を修正する。このような処理を設けることにより矛盾なく処理を行うことができる。
このようにすれば、ユーザが装置の時刻を変更した場合においても矛盾なくユーザの意図した検索を行うことが可能となる。
図9の形態では、クライアント201が、サーバ202の時刻を取得して、検索条件に含まれる時間を修正したが、サーバ、クライアント間の時差を算出するのではなく、検索条件を相対時刻にすることによって正しく検索を実行する形態を図11を参照して説明する。
クライアント201およびサーバ202は、それぞれ、コンピュータであるCPU104の制御の元に以下の動作を行う。RAM106は、このプログラムをCPU104により読み出し可能に記憶した記憶媒体である。また、このプログラムを、不図示のフロッピー(登録商標)ディスク、コンパクトディスクからRAM106に読み込むように構成した場合、この不図示のフロッピー(登録商標)ディスク、コンパクトディスクが、このプログラムをCPU104により読み出し可能に記憶した記憶媒体に相当する。また、このプログラムは、インターネット等の通信媒体を介して、RAM106に読み込むようにしてもよい。
まず、クライアント201は、時刻発生部108の現在の時刻(T1)を取得する(ステップS1101)。続いて、ユーザが指定した時刻もしくは期間を、時刻T1を用いて現在の時刻に対する相対時刻に変換し(ステップS1102)、サーバ202に送信する(ステップS1111)。
サーバ202は、相対時刻による検索リクエストを受け取ると、まず、サーバ202の時刻発生部108の現在の時刻(T2)を取得し(ステップS1103)、時刻T2を用いて、検索リクエストによって与えられた相対時刻による検索条件を通常の時刻に変換して、画像の検索を行う(ステップS1104)。
ここで、図7を参照して説明すると、サーバ202は、画像データ701〜705の時刻を、サーバ202の時刻発生部108を基準とした相対時刻として記憶している場合には、サーバ202は、検索のために、時刻を相対時刻から通常の時刻に変換する必要はない。
検索結果はサーバ202よりクライアント201に返される(ステップS1112)。クライアント201は検索結果一覧をユーザに提示して選択させ(ステップS1105)、選択結果に応じてサーバに画像送信のリクエストを発する(ステップS1113)。サーバはクライアントの画像送信のリクエストに応じて画像をデータ保存部102より取り出し、クライアントに返す(ステップS1114)。
検索結果に時刻を含むような場合には、好ましい形態では、検索結果の画像に関連付けられた時刻をサーバ202側でT2を用いて相対時間に変換してクライアント201に返し、結果を受け取ったクライアント側がT1を用いて通常の時刻データに戻す。
本実施形態では、図11のステップS1101〜S1105による処理全てを検索毎に行う必要があるで、サーバ・クライアント間の時差算出のための通信処理を省略できる。