図1に示すこの発明の一実施例である監視カメラシステム10は、3台のWEBカメラ(以下、単に「カメラ」という。)C1,C2およびC3とサーバ12と複数の端末装置14,14,…とによって構成される。たとえば、この実施例では、カメラC1〜C3とサーバ12とは、インターネット16を介して接続され、サーバ12と端末装置14,14,…とは、イントラネット(LAN)18を介して接続される。
カメラC1〜C3の各々は、被写体を所望のフレームレートで撮影し、撮影された各フレームの画像データをJPEG2000方式で圧縮し、そして各々が1フレーム分の圧縮画像データと当該圧縮画像データを管理するヘッダ情報とを含む複数の画像ファイルを作成する。ここで、ヘッダ情報には、画像ファイル名,カメラ番号(カメラID),圧縮画像データのサイズ(画像サイズ),被写体の撮影時刻(取り込み時刻)などが含まれる。撮影時刻は、ミリ秒単位まで表現される。作成された複数の画像ファイルは、インターネット16を通してサーバ12に出力される。
サーバ12は、画像管理装置として機能し、インターネット16を通して与えられた画像ファイルを蓄積する。図2は、このサーバ12の電気的な構成を示すブロック図である。この図2を参照して、画像ファイルは、NIC(Network Interface Card)12aを通して取り込まれ、RAM12dに一時的に格納される。CPU12fは、RAM12dに格納された画像ファイルからヘッダ情報および圧縮画像データを抽出し、圧縮画像データをHDD12bに与えるとともに、ヘッダ情報に基づいて作成した画像管理情報をHDD12cに与える。画像管理情報には、ヘッダ情報から抽出されたカメラ番号(CN)および画像サイズ(NS)の他に、カメラテーブル番号(TN)が含まれる。
HDD12bは、カメラC1〜C3から与えられた圧縮画像データをディスクD1に順次記憶する。また、HDD12cは、カメラC1〜C3から与えられた圧縮画像データの画像管理情報をディスクD2に順次記憶する。図3は、ディスクD1に形成された画像記憶領域12imおよびディスクD2に形成された領域管理テーブル12mtの一例を示す図解図である。上述したように、画像記憶領域12imには、カメラC1〜C3から与えられた圧縮画像データが順次記憶され、図3に示す例では、先頭アドレス(Nadr=0)から順に、カメラC1画像データ,カメラC2画像データ,カメラC1画像データ,カメラC3画像データ,…,カメラC3画像データおよびカメラC1画像データのように圧縮画像データが記憶される。つまり、サーバ12では、異なるカメラからの圧縮画像データがCPU12fによって時分割で多重され、画像記憶領域12imに書き込まれる。これは、図3からも分かるように、画像サイズが、カメラC1画像データ、カメラC2画像データおよびカメラC3画像データの間で異なり、また、フレームレートおよび伝送距離(時間的距離および物理的距離)がカメラC1〜C3の間で異なるためである。
なお、カメラ毎に画像記憶領域或いはディスクを設けて、個別に圧縮画像データを記録することも考えられるが、画像サイズやフレームレートの違いによって、圧縮画像データが更新される頻度が異なるため、同じ時間帯における各カメラの圧縮画像データを記録しておくことができなくなってしまう。
画像記憶領域12imが満杯になると、次に受信される圧縮画像データは、画像記憶領域12im内の最も古い圧縮画像データに上書きされる。図3に示すように、画像記憶領域12imの容量には、上限値(ループリミット)が設けられており、圧縮画像データを受信したときに、当該圧縮画像データの書き込み開始位置に当該圧縮画像データの画像サイズを加えた値が当該ループリミットを超えてしまう場合には、当該圧縮画像データは、画像記憶領域12imの先頭アドレスから書き込まれる(上書きされる)。このように、画像記憶領域12imには、圧縮画像データが循環的に書き込まれる。したがって、画像記憶領域12imを1つの画像ファイルと考えると、リングファイルとして機能すると言える。
また、領域管理テーブル12mtには、領域管理テーブル番号(N)に対応して、カメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)が記述される。この領域管理テーブル12mtは、画像記憶領域12imに対応しており、たとえば、画像記憶領域12imの先頭アドレスから書き込まれたカメラC1画像データに関する情報が領域管理テーブル番号(1)に記述され、次のカメラC2画像データに関する情報が領域管理テーブル番号(2)に記述される。他の番号(3,4,…,10)についても同様である。
ここで、領域管理テーブル12mtに含まれるカメラ番号(CN)および画像サイズ(NS)は、上述したように、圧縮画像データのヘッダ情報に含まれる。カメラテーブル番号(TN)は、カメラC1、C2およびC3にそれぞれ対応して設けられるカメラテーブル12ct1、12ct2および12ct3のテーブル番号である。図4(A)に示すように、カメラテーブル12ct1〜12ct3には、カメラテーブル番号(TN)に対応して、領域管理テーブル番号(N)および画像情報が記述される。カメラテーブル12ct1〜12ct3は、領域管理テーブル12mtと同様に、HDD12cに記憶される。画像情報には、画像の撮影時刻の情報および撮影フレームレートの情報が含まれる。
図3に示したように、画像記憶領域12imにカメラC1〜C3についての圧縮画像データが記録された場合には、カメラテーブル12ct1では、カメラテーブル番号(1)〜(5)について、領域管理テーブル番号(N)および画像情報が登録される。カメラテーブル12ct2では、カメラテーブル番号(1)〜(3)について、領域管理テーブル番号(N)および画像情報が登録される。カメラテーブル12ct3では、カメラテーブル番号(1)および(2)について、領域管理テーブル番号(N)および画像情報が登録される。カメラテーブル12ct1〜12ct3は、画像記憶領域12imに対応しているため、画像記憶領域12imに圧縮画像データが順次記録されている場合には、それに従って領域管理テーブル番号(N)および画像情報が順次追加され、画像記憶領域12imが満杯になると、上書きする圧縮画像データに対応するカメラについてのカメラテーブル12ctnでは、カメラテーブル番号(1)に戻って領域管理テーブル番号(N)および画像情報が上書きされる。つまり、カメラテーブル12ct1〜12ct3の各々もまた、循環的に書き換えられる。
さらに、HDD12cには、更新参照テーブル12rtが記憶される。この更新参照テーブル12rtは、図3に示した領域管理テーブル12mtおよび図4(A)に示したカメラテーブル12ct1〜12ct3に基づいて作成される。領域管理テーブル12mtおよびカメラテーブル12ct1〜12ct3のそれぞれには、最新番号(NEW)、最古番号(OLD)および最大番号(MAX)の項目が設けられる。最新番号(NEW)には、最新の圧縮画像データについての情報が記録されているテーブル番号(N,TN)が登録される。最古番号(OLD)には、最古の圧縮画像データについての情報が記録されているテーブル番号(N,TN)が登録される。最大番号(MAX)には、テーブル番号(N、TN)の最大値が登録される。
このように、領域管理テーブル12mtとカメラテーブル12ct1〜12ct3と、そして、領域管理テーブル12mtと更新参照テーブル12rtとは、領域管理テーブル番号(N)によって相関(リレーションシップ)が取られ、カメラテーブル12ct1〜12ct3と更新参照テーブル12rtとはカメラテーブル番号(TN)によって相関が取られている。
図5は、図3に示した状態から、さらにカメラC2画像データ、カメラC1画像データおよびカメラC3画像データを順に受信した場合の画像記憶領域12imおよび領域管理テーブル12mtを示している。上述したように、画像記憶領域12imはリングファイルとして働き、満杯になった後は、最も古い圧縮画像データに最新の圧縮画像データが上書きされる。
ここで、図3においては、先頭アドレス(0)からアドレス(17)に、カメラC1画像データ、カメラC2画像データ、カメラC1画像データおよびカメラC3画像データが記憶されていたが、図5に示すように、これらに上書きされたカメラC2画像データ、カメラC1画像データおよびカメラC3画像データは、先頭アドレス(0)からアドレス(14)までである。したがって、アドレス(14)〜アドレス(17)までには、先に書き込まれていたカメラC3画像データの一部が存在することになる。しかし、この一部については、正常に再生することができないため、この実施例では、当該一部については破壊領域として無効にするようにしてある。ただし、次の圧縮画像データを受信した場合には、当該破壊領域の最初のアドレス(図5では、アドレス(15))から受信した圧縮画像データが上書きされる。
上述したように、領域管理テーブル12mtは、画像記憶領域12imに対応しているため、画像記憶領域12imが更新されると、領域管理テーブル12mtも更新される。したがって、領域管理テーブル番号(1)〜(4)について更新が行われる。N=1では、カメラ番号(CN)として“2”が記述され、カメラテーブル番号(TN)として“1”が記述され、画像サイズ(NS)として“5”が記述される。また、N=2では、カメラ番号(CN)として“1”が記述され、カメラテーブル番号(TN)として“1”が記述され、画像サイズ(NS)として“3”が記述される。さらに、N=3では、カメラ番号(CN)に“3”が記述され、カメラテーブル番号(TN)として“1”が記述され、画像サイズ(NS)として“6”が記述される。さらにまた、N=4では、これに対応する画像記憶領域12imが破壊領域であるため、カメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)には、それぞれ、“0”が記述され、これは無効を意味する。
また、画像記憶領域12imの更新に従って、カメラテーブル12ct1〜12ct3も更新される。上述したように、カメラテーブル12ct1〜12ct3は、それぞれ、リングファイルとして機能し、圧縮画像データの書込先が画像記憶領域12imの先頭に戻ると、当該圧縮画像データに対応するカメラのカメラテーブル12ctn(n=1,2または3)もカメラテーブル番号(1)から上書きされる。ただし、既にカメラテーブルの先頭位置(カメラテーブル番号(1))に、領域管理テーブル番号(N)および画像情報が上書きされている場合には、つまり当該カメラテーブル12ctnについての最古番号(OLD)が“1”でない場合には、当該カメラテーブル12ctnについての最古番号(OLD)が示す位置すなわちカメラテーブル番号(TN)の欄に、領域管理テーブル番号(N)および画像情報が上書きされる。
たとえば、図6(A)に示すカメラテーブル12ct1〜12ct3は、図3に示したように、画像記憶領域12imが満杯の状態で、カメラC2画像データ、カメラC1画像データおよびカメラC3画像データを順に受信し、画像記憶領域12imに記録した状態を示してある。
具体的には、カメラテーブル12ct1では、カメラテーブル番号(1)の欄に、領域管理テーブル番号(N)として“2”が上書きされ、それに対応する画像情報が上書きされる。さらに、カメラテーブル番号(2)の欄に、領域管理テーブル番号(N)および画像情報として、“無効”が上書きされる。その他のカメラテーブル番号(3)〜(5)については、上述した図4(A)の状態と同じである。
カメラテーブル12ct2では、カメラテーブル番号(1)の欄に、領域管理テーブル番号(N)として“1”が上書きされ、それに対応する画像情報が上書きされる。また、他のカメラテーブル番号(2)および(3)については、上述した図4(A)の状態と同じである。
カメラテーブル12ct3では、カメラテーブル番号(1)の欄に、領域管理テーブル番号(N)として“3”が上書きされ、それに対応する画像情報が上書きされる。また、他のカメラテーブル番号(2)については、上述した図4(A)の状態と同じである。
また、画像記憶領域12imおよびカメラテーブル12ct1〜12ct3の更新に従って、図6(B)に示すように、更新参照テーブル12rtも更新される。つまり、領域管理テーブル番号(N)では、最新番号(NEW)が“3”に更新され、最古番号(OLD)が“5”に更新される。また、カメラテーブル12ct1のテーブル番号(TN)では、最新番号(NEW)が“1”に更新され、最古番号(OLD)が“3”に更新される。さらに、カメラテーブル12ct2のテーブル番号(TN)では、最新番号(NEW)が“1”に更新され、最古番号(OLD)が“2”に更新され、最大番号(MAX)は“3”のままである。さらにまた、カメラテーブル12ct3のテーブル番号(TN)では、最新番号(NEW)が“1”に更新され、最古番号(OLD)が“2”に更新され、最大番号(MAX)は“2”のままである。
上述したような領域管理テーブル12mt、カメラテーブル12ct1〜12ct3および更新参照テーブル12rtの更新について、以下に具体的に説明することにする。
図3に示した状態で、図5に示したように、カメラC2画像データが画像記憶領域12imに上書きされると、図7(A)に示すように、領域管理テーブル12mtには、領域管理テーブル番号(1)の欄に、カメラ番号(CN)として“2”が上書きされ、カメラテーブル番号(TN)として“1”が上書きされ、そして、画像サイズ(NS)として“5”が上書きされる。また、カメラC2画像データを上書きした場合には、画像記憶領域12imのアドレス(3)〜(8)に記憶されていたカメラC2画像データの一部が欠けてしまうため、領域管理テーブル12mtの領域管理テーブル番号(2)の欄には、カメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)として、それぞれ、“0”が上書きされる。それ以外の領域管理テーブル番号(3)〜(10)については更新されない。
次に、カメラC1画像データが画像記憶領域12imに上書きされると、図7(B)に示すように、領域管理テーブル番号(2)の欄に、カメラ番号(CN)として“1”が上書きされ、カメラテーブル番号(TN)として“1”が上書きされ、画像サイズ(NS)として“3”が上書きされる。それ以外の領域管理テーブル番号(1)および(3)〜(10)については、何ら更新されない。
次に、カメラC3画像データが画像記憶領域12imに上書きされると、図7(C)に示すように、領域管理テーブル番号(3)の欄に、カメラ番号(CN)として“3”が上書きされ、カメラテーブル番号(TN)として“1”が上書きされ、画像サイズ(NS)として“6”が上書きされる。また、カメラC3画像データが上書きされた場合には、画像記憶領域12imのアドレス(11)〜(17)に記憶されていたカメラC3画像データの一部が欠けてしまうため、領域管理テーブル番号(4)の欄には、カメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)として、それぞれ、“0”が上書きされる。それ以外の領域管理テーブル番号(1)、(2)および(5)〜(10)については更新されない。この図7(C)に示す状態が、図5に示した領域管理テーブル12mtの状態である。
また、図3に示した状態で、図5に示したように、カメラC2画像データが画像記憶領域12imに上書きされると、図8(A)に示すように、カメラテーブル12ct2のカメラテーブル番号(1)の欄に、領域管理テーブル番号(N)として“1”が上書きされ、それに対応する画像情報が上書きされる。ただし、図面の都合上、図8(A)〜(C)においては、画像情報の欄は省略してある。また、このとき、上書きされたカメラC1画像データは全て失われ、無効となるため、カメラテーブル12ct1のカメラテーブル番号(1)に登録されていた領域管理テーブル番号(N)および画像情報が無効にされる。つまり、カメラC12テーブルのカメラテーブル番号(1)の欄に、領域管理テーブル番号(N)および画像情報として、“無効”が上書きされる。このとき、カメラC3画像データには、当該カメラC2画像データは上書きされないため、カメラテーブル12ct3は更新されない。
次に、カメラC1画像データが画像領域に上書きされると、図8(B)に示すように、カメラテーブル12ct1のカメラテーブル番号(1)に領域管理テーブル番号(N)として“2”が上書きされ、それに対応する画像情報が上書きされる。このとき、カメラC1画像データは、先にカメラC2画像データを画像記憶領域12imの先頭アドレスから上書きした際に無効にされた領域(アドレス(5)〜(8))に書き込まれるため、カメラテーブル12ct2およびカメラテーブル12ct3については、更新されない。
次に、カメラC3画像データが画像記憶領域12imに上書きされると、図8(C)に示すように、カメラテーブル12ct3のカメラテーブル番号(1)に領域管理テーブル番号(N)として“3”が上書きされ、これに対応する画像情報が上書きされる。また、このとき、上書きされたカメラC1画像データは無効となるため、当該カメラC1画像データに対応するカメラテーブル12ct1のカメラテーブル番号(2)の欄に、領域管理テーブル番号および画像情報として、“無効”が上書きされる。このとき、カメラC2画像データには、当該カメラC3画像データは上書きされないため、カメラテーブル12ct2は更新されない。この図8(C)に示す状態が、図6(A)に示したカメラテーブル12ct1〜12ct3の状態である。
なお、カメラテーブル12ct1〜12ct3においては、“無効”と記述するようにしてあるが、上述の領域管理テーブル12mtと同様に、“0”を記述するようにしてもよい。
さらに、図3に示した状態で、図5に示したように、カメラC2画像データが画像記憶領域12imに上書きされると、図9(A)に示すように、更新参照テーブル12rtでは、領域管理テーブル番号(N)およびカメラテーブル12ct2のテーブル番号(TN)についての欄が更新される。つまり、領域管理テーブル番号(N)では、最新番号(NEW)として“1”が上書きされ、最古番号(OLD)として“3”が上書きされる。ただし、領域管理テーブル12mtには、カメラ番号(CN)等は追加されていないため、最大番号(MAX)は更新されない。カメラテーブル12ct2のテーブル番号(TN)では、最新番号(NEW)として“1”が上書きされ、最古番号(OLD)として、“2”が上書きされる。ただし、カメラテーブル12ct2には、領域管理テーブル番号(N)等は追加されていないため、最大番号(MAX)は更新されない。さらに、上述したように、カメラC2画像データが上書きされると、画像記憶領域12imのアドレス(3)〜(8)に記憶されていたカメラC1画像データが無効にされるため、カメラテーブル12ct1のテーブル番号(TN)では、最古番号(OLD)として“2”が上書きされる。ただし、最新番号(NEW)および最大番号(MAX)については更新されない。カメラテーブル12ct3のテーブル番号(TN)については更新されない。
次にカメラC1画像データが画像記憶領域12imに上書きされると、図9(B)に示すように、領域管理テーブル番号(N)およびカメラテーブル12ct1のテーブル番号(TN)についての欄が更新される。領域管理テーブル番号(N)では、最新番号(NEW)として“2”が上書きされる。ただし、最古番号(OLD)および最大番号(MAX)は更新されない。カメラテーブル12ct1のテーブル番号(TN)では、最新番号(NEW)として、“1”が上書きされる。ただし、最古番号(OLD)および最大番号(MAX)については更新されない。また、カメラテーブル12ct2および12ct3のテーブル番号(TN)についても更新されない。
次にカメラC3画像データが画像記憶領域12imに上書きされると、図9(C)に示すように、領域管理テーブル番号(N)およびカメラテーブル12ct3のテーブル番号(TN)についての欄が更新される。領域管理テーブル番号(N)では、最新番号(NEW)として、“3”が上書きされ、最古番号(OLD)として、“5”が上書きされる。ただし、最大番号(MAX)については更新されない。カメラテーブル12ct3のテーブル番号(TN)では、最新番号(NEW)として、“1”が上書きされ、最古番号(OLD)として、“2”が上書きされる。ただし、最大番号(MAX)については更新されない。また、カメラC3画像データが画像記憶領域12imのアドレス(8)〜(11)に記憶されていたカメラC1画像データに上書きされるため、カメラテーブル12ct1のテーブル番号(2)の情報が無効となるため、当該カメラテーブル12ct1のテーブル番号(TN)では、最古番号(OLD)として“3”が上書きされる。ただし、カメラテーブル12ct2についてのテーブル番号(TN)は更新されない。この図9(B)に示す状態が、図6(B)に示した更新参照テーブル12rtの状態である。
上述したような画像記録の動作を、図2に示したサーバ12のCPU12fが図10〜図13に示すフロー図に従って処理する。図10に示すように、CPU12fが画像記録処理を開始すると、ステップS1で、初期値をセットする。具体的には、変数IPOSに“0”を設定し、変数MPOSに“1”を設定し、変数CPOSnに“1”を設定し、変数LOOPに“0”を設定し、そして、変数IMAXに上限値を設定する。ここで、変数IPOSは、画像記憶領域12imへの圧縮画像データの書き込み開始位置(アドレス)を示す。変数MPOSは、領域管理テーブル12mtの書き込み位置(領域管理テーブル番号(N))を示す。変数CPOSnは、カメラテーブル12ctnの書き込み位置(カメラテーブル番号(TN))を示す。変数LOOPは、オーバライト(上書き)するかしないかを示すフラグを示し、フラグオンでは“1”を設定し、フラグオフでは“0”を設定する。変数IMAXは、画像記憶領域12imの書き込み上限値(ループリミット)を示す。
続くステップS3では、圧縮画像データを受信したかどうかを判断する。ただし、厳密には、圧縮画像データは、ヘッダ情報を含む画像ファイルである。ステップS3で“NO”であれば、つまり圧縮画像データを受信していなければ、そのままステップS3に戻る。一方、ステップS3で“YES”であれば、つまり圧縮画像データを受信すれば、ステップS5で、IPOS+SIZEr>IMAXかどうかを判断する。ここで、変数SIZErは、今回受信した圧縮画像データのサイズ(画像サイズ)を示す。つまり、ステップS5では、今回受信した圧縮画像データを画像記憶領域12imに書き込んだ場合に、画像記憶領域12imの書き込み上限値を超えるかどうかを判断しているのである。
ステップS5で“NO”であれば、つまりIPOS+SIZEr≦IMAXであれば、今回受信した圧縮画像データを画像記憶領域12imに書き込んだ場合であっても、画像記憶領域12imの書き込み上限値を越えないと判断して、そのままステップS9に進む。一方、ステップS5で“YES”であれば、つまりIPOS+SIZEr>IMAXであれば、今回受信した圧縮画像データを画像記憶領域12imに書き込んだ場合には、画像記憶領域12imの書き込み上限値を越えると判断して、ステップS7で、ループフラグをセット(オン)して、ステップS9に進む。つまり、ここでは、変数IPOSに“0”を設定し、変数MPOSに“1”を設定し、そして、変数LOOPに“1”を設定する。
ステップS9では、ループフラグがオン(LOOP=1)であるかどうかを判断する。ステップS9で“YES”であれば、つまりループフラグがオン(LOOP=1)であれば、図12に示すステップS29に進む。一方、ステップS9で“NO”であれば、つまりループフラグがオフ(LOOP=0)であれば、ステップS11で、変数IPOSが示す画像記憶領域12imの位置に(アドレスから)今回受信した圧縮画像データを画像記憶領域12imに書き込む。具体的に説明すると、CPU12fは、インターネット16およびNIC12aを介して受信した画像ファイルをRAM12dに一旦格納する。そして、HDD12dを通してディスクD1にアクセスし、画像記憶領域12imの書き込み開始位置(IPOS)から圧縮画像データを記憶する。そして、ステップS13で、次の書き込み開始位置を計算する。つまり、次回受信する圧縮画像データの書き込み開始アドレスを数1に従って求める。
続いて、ステップS15で、MPOSが示す位置に今回受信した圧縮画像データにいてのカメラ番号(CN),カメラテーブル番号(TN),画像サイズ(NS)を書き込む。つまり、上述のようにしてRAM12dに格納された画像ファイルのヘッダ情報を参照して、カメラ番号(CN)および画像サイズ(NS)を取得するとともに、更新参照テーブル12rtを参照して、当該カメラについての最新番号(NEW)が示すカメラテーブル番号の次の番号をカメラテーブル番号として取得する。たとえば、最新番号(NEW)が“2”である場合には、次のカメラテーブル番号(TN)として“3”が取得される。
続くステップS17では、対応するカメラテーブル12ctnに、MPOS(領域管理テーブル番号(N))および画像情報を登録する。次に、図11に示すステップS19では、変数CPOSnの値が“1”であるかどうかを判断する。つまり、カメラテーブル12ctnについてのカメラテーブル番号(TN)が“1”であるかどうかを判断する。ステップS19で“NO”であれば、つまり変数CPOSnの値が“1”でなければ、そのままステップS23に進む。一方、ステップS19で“YES”であれば、つまり変数CPOSnの値が“1”であれば、ステップS21で、変数CPOSnが示す値を対応するカメラの最古番号(OLD)に設定してからステップS23に進む。
ステップS23では、変数CPOSnが示す値を、対応するカメラの最新番号(NEW)に設定する。ここで、上述したように、ステップS19で、変数CPOSnの値が“1”であると判断した場合には、ステップS21で、変数CPOSnの値を最古番号(OLD)に設定し、さらに、ステップS23で、変数CPOSnの値を最新番号(NEW)に設定するが、これは、画像記憶領域12imに圧縮画像データを上書きしない場合には、変数CPOSnの値が“1”であれば、当該カメラテーブル12ctnにはカメラテーブル番号(1)に対応する領域管理テーブル番号(N)および画像情報しか存在しないためである。
次のステップS25では、更新参照テーブル12rtを更新する。ここでは、ステップS21やステップS23で更新されたカメラテーブル12ctnについての最新番号(NEW)や最古番号(OLD)を更新する。そして、ステップS27で、次に登録する領域管理テーブル12mtおよびカメラテーブル12ctnについての書き込み位置(テーブル番号)を、数2および数3に従ってそれぞれ計算して、ステップS3に戻る。
このように、ステップS1〜ステップS27の処理を繰り返すことにより、圧縮画像データが順次画像記憶領域12imに記録され、領域管理テーブル12mt、カメラテーブル12ct1〜12ct3および更新参照テーブル12rtの内容が追加(更新)される。そして、画像記憶領域12imが満杯になると、つまり、上述したように、ステップS9で、ループフラグがオンであり、画像記憶領域12imに圧縮画像データを上書きすると判断した場合には、図12に示すステップS29で、更新参照テーブル12rtを参照して、今回受信した圧縮画像データに対応するカメラテーブル12ctnについての最新番号(NEW)が最古番号(OLD)より大きいかどうかを判断する。
ステップS29で“NO”であれば、つまり最新番号(NEW)が最古番号(OLD)以下である場合には、そのままステップS35に進む。一方、ステップS29で“YES”あれば、つまり最新番号(NEW)が最古番号(OLD)より大きい場合には、ステップS31で、当該最古番号(NEW)が“1”であるかどうかを判断する。ステップS31で“NO”であれば、つまり当該最古番号(OLD)が“1”でない場合には、そのままステップS35に進む。一方、ステップS31で“YES”であれば、つまり当該最古番号(OLD)が“1”である場合には、ステップS33で、カメラテーブル12ctnの書き込み位置を元に戻す。つまり、変数CPOSnに“1”を設定する。このように、画像記憶領域12imに圧縮画像データが記録される毎に、カメラテーブル12ctnに領域管理テーブル番号(N)および画像情報が記録され、画像記憶領域12imに圧縮画像データが上書きされると、当該圧縮画像データに対応するカメラのカメラテーブル12ctnも上書きされるのである。
ステップS35では、今回受信した圧縮画像データを画像記憶領域12imの書き込み開始位置(IPOS)から書き込む。続くステップS37で、次の書き込み開始位置を上述した数1に従って計算する。次のステップS39では、MPOSが示す位置から元の画像サイズSIZExを取り出し、これを変数SIZEyに代入する。ここで、変数SIZEyは、上書きされた領域に存在していた元の圧縮画像データのデータサイズを意味する。ステップS41で、MPOSが示す位置にカメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)を登録し、変数CPOSnが示す位置に領域管理テーブル番号(N)および画像情報を登録する。このとき、上書きされた元の圧縮画像データについてのカメラテーブル12ctnの該当する欄の情報が無効にされる。
そして、ステップS43で、更新参照テーブル12rtを更新する。ここでは、変数CPOSnが示す値を最新番号(NEW)とし、変数CPOSnに“1”加算した値を最古番号(OLD)とする。また、上述したように、ステップS41においてカメラテーブル12ctnの情報が無効にされると、それに従って当該カメラテーブル12ctnについての最古番号(OLD)も更新される。さらに、ステップS45で、次に登録するテーブル位置を計算する。つまり、上述した数2および数3に従って変数MPOSおよび変数CPOSnを求める。
続いて、図13に示すように、ステップS47で、今回上書きした圧縮画像データの画像サイズSIZErが上書きされた圧縮画像データの画像サイズSIZExよりも大きいかどうかを判断する。ステップS47で“NO”であれば、つまり画像サイズSIZErが画像サイズSIZEx以下であれば、そのまま図10に示したステップS3に戻る。ただし、画像サイズSIZErが画像サイズSIZExより小さい場合には、その差分に相当する一部の圧縮画像データが画像記憶領域12imで無効にされる。
一方、ステップS47で“YES”であれば、つまり画像サイズSIZErが画像サイズSIZExより大きければ、ステップS49で、変数MPOSおよび変数CPOSnの値を退避し、ステップS51で、変数MPOSが示す位置から元の画像サイズSIZExを取り出す。
続くステップS53では、変数MPOSが示す位置および該当するカメラの変数CPOSnが示す位置の情報を無効にする。つまり、領域管理テーブル12mtの変数MPOSが示す領域管理テーブル番号(N)のカメラ番号(CN)、カメラテーブル番号(TN)および画像サイズ(NS)を無効にするとともに、該当するカメラテーブル12ctnについての変数CPOSnが示すカメラテーブル番号(TN)の領域管理テーブル番号(N)および画像情報を無効にする。そして、ステップS55で、更新参照テーブル12rtを更新する。ここでは、該当するカメラテーブル12ctnの最古番号(OLD)が更新される。次に、ステップS57で、登録抹消したサイズすなわち元の圧縮画像データのデータサイズ(SIZEy)を数4に従って計算する。
続いて、ステップS59で、次にチェックするテーブル番号を計算する。この計算は、上述の数2および数3と同じである。そして、ステップS61で、さらに次の領域にもまたがっているかどうかを判断する。つまり、上書きされた圧縮画像データの画像サイズSIZErが登録抹消された圧縮画像データのデータサイズSIZEyよりも大きいかどうかを判断する。ステップS61で“YES”であれば、つまりさらに次の領域にもまたがっている場合には、ステップS51に戻る。一方、ステップS61で“NO”であれば、つまり次の領域にまたがっていない場合には、ステップS63で、変数MPOSおよび変数CPOSnの値を戻して、図10に示したステップS3に戻る。
このようにして、圧縮画像データを受信する毎に、当該圧縮画像データの画像記憶領域12imへの記録および各テーブルの登録(更新)が実行される。
また、画像記憶領域12imに記録された圧縮画像データについては、図1に示したように、イントラネット18を介してサーバ12に接続される端末(クライアント)14からの要求に応じて再生することができる。具体的に説明すると、端末14は、図14に示すように構成される。電源が投入されると、CPU14dは、初期画面データを作成し、作成した初期画面データを表示I/F14eを通してCRT或いはLCDのようなディスプレイ14fに与える。ディスプレイ14fには、図15(A)に示す初期検索画面が表示される。図15(A)によれば、カメラC1の撮影画像を表示するための小窓SC1、カメラC2の撮影画像を表示するための小窓SC2およびカメラC3の撮影画像を表示するための小窓SC3が、画面の上半分に表示される。
なお、この実施例では、3台のカメラについての初期検索画面を表示するようにしてあるが、4台以上のカメラがサーバ12に接続されている場合には、そのカメラの数と同じ数の小窓を設けるようにしてもよく、また、後述するように、選択したカメラの数と同じ数の小窓を表示するようにしてもよい。
また、カメラC1で撮影された画像データ、カメラC2で撮影された画像データおよびカメラC3で撮影された画像データについての先頭フレームの画像データの撮影実行を案内する時刻ガイドGSTと、末尾フレームの画像データの撮影時刻を案内する時刻ガイドGETと、所望の検索時刻の入力欄INTと、カメラC1ボタンB1,カメラC2ボタンB2,カメラC3ボタンB3,再生ボタンB4および停止ボタンB5とが、画面の下半分に表示される。
図15(A)から分かるように、初期検索画面では、時刻ガイドGSTおよびGETに具体的な数値は表示されず、検索時刻の入力欄INTも空欄とされる。また、時刻ガイドGSTおよびGETならびに検索時刻のいずれも、秒単位までしか表示されない。なお、カメラC1〜カメラC3で撮影された画像データの先頭フレームについての画像データの撮影時刻を“先頭時刻”と定義し、末尾フレームについての画像データの撮影時刻を“末尾時刻”と定義する。
初期検索画面が表示された状態で、図14に示すコンピュータマウス(以下、単に「マウス」という。)14iによって、ボタンB1、ボタンB2、ボタンB3がクリックされると、カメラC1、カメラC2、カメラC3を個別に選択することができる。また、ボタンB1、ボタンB2、ボタンB3をクリックした状態で、もう一度クリックすると、カメラC1、カメラC2、カメラC3の選択を個別に解除することができる。ボタンB1、ボタンB2およびボタンB3の少なくとも1つがクリックされると、対応する状態信号が入力I/F14gからCPU14dに与えられる。
CPU14dは、選択されたカメラに対応するカメラIDを含む時刻情報要求を、NIC14aを通してサーバ12に送出する。時刻情報要求は、図2に示したNIC12eを通してCPU12fに与えられる。CPU12fは、時刻情報要求に含まれるカメラIDに基づいて該当するカメラテーブル12ctnおよび更新参照テーブル12rtにアクセスし、現時点の先頭時刻および末尾時刻を検出する。つまり、図4(B)および図6(B)に示したような更新参照テーブル12rtを参照して、最古番号(OLD)および最新番号(NEW)が示すカメラテーブル番号(N)をそれぞれ取得し、カメラテーブル12ctnを参照して、画像情報に含まれる撮影時刻の情報を取得(検出)する。ここで、先頭時刻および末尾時刻はミリ秒単位まで表現された時刻であり、CPU12fは、撮影時刻の情報を検出することにより、取得した先頭時刻および末尾時刻を含む時刻情報を、NIC12eを通して要求元の端末14に返送する。
なお、オペレータないしユーザによるキー操作またはマウス操作が行われない限り、同じ時刻情報要求が端末14からサーバ12に繰り返し返送される。サーバ12は、時刻情報要求が与えられる毎に時刻情報を端末14に返送する。また、複数のカメラが選択されている場合には、複数のカメラについての先頭時刻および末尾時刻を含む時刻情報が順次要求元の端末14に返送される。
端末14のCPU14dは、返送された時刻情報に基づいて、秒単位まで表現された先頭時刻および末尾時刻が、時刻ガイドGSTおよびGETとして初期検索画面に表示される。図15(B)によれば、先頭時刻は2002年02月18日15時30分47秒であり、末尾時刻は2002年02月20日09時12分59秒である。ただし、複数のカメラが選択されている場合には、カメラ毎の先頭時刻および末尾時刻が順次初期検索画面に表示される。または、カメラ毎に先頭時刻および末尾時刻を表示するように、初期検索画面に複数の表示部を設けるようにしてもよい。
キーボード14hによって所望の検索時刻(指定時刻)が入力欄INTに入力され、かつマウス14iによって再生ボタンB4がクリックされると、CPU14dは、画像検索要求を、NIC14aを通してサーバ12に送出する。この画像検索要求には、選択されたカメラのカメラIDと、入力された指定時刻と、再生指示とが含まれる。ここで、入力された指定時刻が先頭時刻から末尾時刻までの範囲から外れるときは、画像検索要求の出力に変えてエラーメッセージが画面に表示される。
なお、図15(B)によれば、入力された検索時刻は2002年02月20日09時12分59秒であり、現時点の先頭時刻および末尾時刻の間に含まれる。したがって、当該検索時刻は受け付けられ、画像検索要求がサーバ12に送出される。
送出された画像検索要求は、図2に示したように、NIC12eを通してCPU12fに与えられる。CPU12fは、画像検索要求を受信すると、指定時刻以降に撮影された複数フレームの圧縮画像データをカメラテーブル12ctnに従って画像記憶領域12imから順に検出する。ここで、画像検索要求に複数のカメラIDが含まれる場合には、それぞれのカメラについての圧縮画像データがカメラテーブル12ctnに従って検出される。
画像記憶領域12imから検出された圧縮画像データ、ならびに更新参照テーブル12rtから検出された先頭時刻および末尾時刻は、NIC12eを通して要求元の端末14に返送される。端末14のCPU14dは、返送された圧縮画像データを、RAM14bを用いて伸長し、伸長画像を小窓SC1、SC2、SC3に表示する。CPU14dはまた、返送された先頭時刻および末尾時刻によって時刻ガイドGSTおよびGETを更新する。
この結果、順方向に動く動画像が、小窓SC1、SC2およびSC3の少なくとも1つに表示される。なお、先頭時刻および末尾時刻の表示は、動画像の再生中も更新される。
また、再生が行われている途中で停止ボタンB5が押されると、CPU14dは、再生停止要求(再生停止指示)をサーバ12に送信する。これに応じて、サーバ12のCPU12fは、圧縮画像データの送出を停止する。
具体的には、サーバ12のCPU12fは、画像検索要求を受けると、選択されたカメラのそれぞれについて、画像再生処理を実行する。画像再生処理は、図16のフロー図で示される。ただし、ここでは、カメラC1についての画像再生処理について説明することとし、他のカメラC2、カメラC3についての画像再生処理についての説明は省略することにする。図16に示すように、画像再生処理を開始すると、ステップS71で、カメラC1のフレームレートを取り出し、画像送出時間間隔t0を数5に従って計算する。
続くステップS73では、カメラテーブル12ct1の画像情報を検索し、指定時刻tn以降の直近時刻tNを検索して、ステップS75で、画像があるかどうかを判断する。つまり、直近時刻tNに撮影された画像があるかどうかを判断する。ステップS75で“NO”であれば、つまり直近時刻tNに撮影された画像がなければ、ステップS77で警告して、画像再生処理をリターンする。一方、ステップS75で“YES”であれば、つまり直近時刻tNに撮影された画像があれば、ステップS79で、カメラテーブル12ct1から領域管理テーブル12mtを取得し、領域管理テーブル12mtを参照して、画像記憶領域12imから画像を取り出す。
そして、ステップS81で、取り出した画像を再生要求のあった端末に送信する。次のステップS83では、カメラC1についての画像の全検索を完了したかどうかを判断する。つまり、指定時刻tn以降の全ての画像を送出したかどうかを判断する。ステップS83で“NO”であれば、つまりカメラC1についての画像の全検索を完了していなければ、ステップS85で、次の画像送出時刻tNを数6に従って計算し、ステップS75に戻る。
一方、ステップS83で“YES”であれば、つまりカメラC1についての画像の全検索を完了すれば、ステップS87で再生停止指示があるかどうかを判断する。ステップS87で“NO”であれば、つまり再生停止指示がなければ、そのままステップS73に戻って、指定時刻tn以降の画像を始めから再生する。一方、ステップS87で“YES”であれば、つまり再生停止指示があれば、再生処理をリターンする。
なお、この実施例では、再生ボタンがクリックされると、指定時刻以降の画像を順方向に再生する場合についてのみ説明してあるが、逆方向再生、スチル再生或いはコマ送り再生の各ボタンを設けて、逆方向再生、スチル再生およびコマ送り再生をできるようにしてもよい。かかる場合には、順方向再生、逆方向再生、スチル再生およびコマ送り再生のいずれか1つを示す再生モード情報が画像検索要求に含めるようにして、サーバが要求のあった端末に対して、再生モード情報に応じた態様で画像を送出するようにすればよい。
この実施例によれば、複数のカメラから送信された画像データを受信した順番に画像記憶領域に記録するとともに、画像記憶領域が満杯になると、最も古い画像データに対して上書きするようにするので、画像記憶領域を有効に使用することができる。
また、カメラ毎に画像データを記憶する領域を分別しないので、フレームレートが異なるカメラであっても、ほぼ同じ時間帯の画像データを記憶領域に残すことができる。また、画像データについての管理情報を領域管理テーブルで管理するとともに、カメラ毎のカメラテーブルを管理するようにするため、端末で時間を指定して複数のカメラについての画像の再生を指示した場合であっても、ほぼ同じ時間帯の画像を再生することができる。