(57)【特許請求の範囲】
【請求項１】
複数枚の画像を記憶するための画像ファイル管理方法であって、
前記複数枚の画像の各々の画像データを区切り情報を挟んで連続して記憶する画像データ領域と、前記各々の画像データの前記画像データ領域における格納位置を示す位置情報を含む管理情報を格納する管理情報領域とを含む画像ファイルに関して、前記画像データ領域中において対応する位置情報が存在しない画像データを無効な画像データとして検出する検出工程と、
前記検出工程によって検出された無効な画像データの前記画像データ領域における格納位置を当該無効な画像データに隣接する区切り情報に基づいて取得し、取得した格納位置を示す位置情報を生成する生成工程と、
前記生成工程で生成された位置情報を前記管理情報領域に記録して前記無効な画像データを復活させる復活工程とを備えることを特徴とする画像ファイル管理方法。
【請求項２】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々の先頭位置を示すことを特徴とする請求項１に記載の画像ファイル管理方法。
【請求項３】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々のデータ量を示すことを特徴とする請求項１に記載の画像ファイル管理方法。
【請求項４】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々の先頭位置とデータ量を示すことを特徴とする請求項１に記載の画像ファイル管理方法。
【請求項５】
前記検出工程は、
ある画像データの先頭位置とデータ量から求まる次の画像データの先頭位置と、当該次の画像データに対応する位置情報が表す先頭位置とが一致しない場合に無効化された画像データがあると判断する判断工程を備え、
前記判断工程において無効化された画像データがあると判断された場合は、前記画像データ領域の、当該画像データの位置情報が示す先頭位置から前記次の画像データの位置情報が示す先頭位置までの間を調査して検出された区切り情報に基づいて無効な画像データを検出することを特徴とする請求項４に記載の画像ファイル管理方法。
【請求項６】
前記管理情報は、前記画像データ領域に含まれる有効な画像データの数を示す画像数情報を含み、
前記復活手段によって復活した画像の数に基づいて前記画像数情報を更新する更新手段を更に備えることを特徴とする請求項１に記載の画像ファイル管理方法。
【請求項７】
複数枚の画像を記憶するための画像ファイル管理装置であって、
前記複数枚の画像の各々の画像データを区切り情報を挟んで連続して記憶する画像データ領域と、前記各々の画像データの前記画像データ領域における格納位置を示す位置情報を含む管理情報を格納する管理情報領域とを含む画像ファイルを格納する格納手段と、
前記画像ファイルに関して、前記画像データ領域中において対応する位置情報が存在しない画像データを無効な画像データとして検出する検出手段と、
前記検出手段によって検出された無効な画像データの前記画像データ領域における格納位置を当該無効な画像データに隣接する区切り情報に基づいて取得し、取得した格納位置を示す位置情報を生成する生成手段と、
前記生成手段で生成された位置情報を前記管理情報領域に記録して前記無効な画像データを復活させる復活手段とを備えることを特徴とする画像ファイル管理装置。
【請求項８】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々の先頭位置を示すことを特徴とする請求項７に記載の画像ファイル管理装置。
【請求項９】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々のデータ量を示すことを特徴とする請求項７に記載の画像ファイル管理装置。
【請求項１０】
前記位置情報は、前記画像データ領域における前記複数枚の画像の各々の先頭位置とデータ量を示すことを特徴とする請求項７に記載の画像ファイル管理装置。
【請求項１１】
前記検出手段は、
ある画像データの先頭位置とデータ量から求まる次の画像データの先頭位置と、当該次の画像データに対応する位置情報が表す先頭位置とが一致しない場合に無効化された画像データがあると判断する判断手段を備え、
前記判断手段において無効化された画像データがあると判断された場合は、前記画像データ領域の、当該画像データの位置情報が示す先頭位置から前記次の画像データの位置情報が示す先頭位置までの間を調査して検出された区切り情報に基づいて無効な画像データを検出することを特徴とする請求項１０に記載の画像ファイル管理装置。
【請求項１２】
前記管理情報は、前記画像データ領域に含まれる有効な画像データの数を示す画像数情報を含み、
前記復活手段によって復活した画像の数に基づいて前記画像数情報を更新する更新手段を更に備えることを特徴とする請求項７に記載の画像ファイル管理装置。
【請求項１３】
複数枚の画像を記憶するための画像ファイル管理処理をコンピュータに実行させるための制御プログラムを格納する記憶媒体であって、
前記画像ファイル管理処理が、
前記複数枚の画像の各々の画像データを区切り情報を挟んで連続して記憶する画像データ領域と、前記各々の画像データの前記画像データ領域における格納位置を示す位置情報を含む管理情報を格納する管理情報領域とを含む画像ファイルに関して、前記画像データ領域中において対応する位置情報が存在しない画像データを無効な画像データとして検出する検出工程と、
前記検出工程によって検出された無効な画像データの前記画像データ領域における格納位置を当該無効な画像データに隣接する区切り情報に基づいて取得し、取得した格納位置を示す位置情報を生成する生成工程と、
前記生成工程で生成された位置情報を前記管理情報領域に記録して前記無効な画像データを復活させる復活工程とを備えることを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数の画像から所望の画像を検索するために用いる画像データベースに好適な画像管理方法及び装置に関するものである。
【０００２】
【従来の技術】
多数の画像データの中から所望の画像を検索するための画像データベースが多数提案されている。これらの多くは、
・キーワードや撮影日時等の非画像情報を画像に関連付け、それを基に検索を行う方法、
・画像自体の特徴量（輝度・色差情報、画像周波数、ヒストグラムなど）を基に検索を行う方法、の２つに大別される。
【０００３】
このいずれの方法においても、検索を行うための情報と画像データとは別々に管理されているのが一般的である。例えば、検索用のデータは１つのファイルやリレーショナルデータベースによって管理され、検索対象となる。そして、検索結果から該当する画像データのファイル名が得られ、そのファイル名によって画像データにアクセスし表示する。このような方式を採用するのは、画像データは一般にその容量が大きく、検索用データと分けて管理する方が効率がよいからである。
【０００４】
個々の画像データはファイルシステム内で管理されるが、その管理の方法として次の２つの方法が考えられる。まず、第一の方法は、すべての画像データをひとつのディレクトリで管理する方法である。第二の方法は、画像データを複数枚数毎のいくつかのグループに分け、それぞれのグループ毎にディレクトリに分類して管理する方法である。たとえば、「動物」、「花」などに画像の内容で分類してディレクトリに分ける方法が考えられる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記第一、および第二の方法どちらにおいても、検索キー等による検索の結果得られた複数枚数の画像を同時に表示しようとした場合に、その枚数が多いと、画像のアクセスに極端に時間がかかるようになる。
【０００６】
また上記第一の方法の場合、画像の管理は容易であるが、枚数が極端に多くなると、ディレクトリ情報を得るだけでも膨大な時間を要するようになる。第二の方法では、常に、どの画像ファイルがどのディレクトリにあるかという対応関係を正しく維持する必要があり、ファイルの移動などの管理が煩雑になる。
【０００７】
通常、画像データベースへの画像の登録は自動化されている場合が多い。たとえば、連続するフィルムからスキャナ装置により連続して画像を読み取り、これらをデータベースへ登録する、ビデオテープなどから動画を連続して静止画として取り込み、データベースへ登録するといった方式が実用化されている。
【０００８】
しかしながら、写真を撮影する場合であれば、同じシーンを連続して撮影することも多い。またビデオであれば、数秒間まったく同じ映像が連続する場合も多々ある。このいずれの場合でも、上記の如き自動的な登録を行えば、全く同じ、或いは非常に類似したシーンの画像が何枚も連続してデータベースに登録されてしまうことになる。また、たとえば映像と映像のあいだにコマーシャルのように、ユーザが必要としない画像がデータベースに登録されてしまう場合もある。
【０００９】
このような画像はデータベースから削除することが望まれるが、上述したように、一般的な画像データベースでは、画像のアクセスに時間がかかること、ディレクトリ等の管理が複雑なことから、１枚の画像を削除するにも、多くの時間を必要としてしまう。
【００１０】
本発明は、上記の問題に鑑みてなされたものであり、画像データへの高速アクセス及び画像データの簡易な管理を可能とするとともに、画像データベースからの画像データの削除を高速に行える画像記憶方法及び装置を提供することを目的とする。
【００１１】
また、本発明の目的は、いったん削除した画像でも、再び必要となったときに、削除された画像を復活可能とすることを目的とする。
【００１２】
【課題を解決するための手段】
上記の目的を達成するための本発明の一態様による画像ファイル管理方法は、たとえば以下の工程を備える。すなわち、
複数枚の画像を記憶するための画像ファイル管理方法であって、
前記複数枚の画像の各々の画像データを区切り情報を挟んで連続して記憶する画像データ領域と、前記各々の画像データの前記画像データ領域における格納位置を示す位置情報を含む管理情報を格納する管理情報領域とを含む画像ファイルに関して、前記画像データ領域中において対応する位置情報が存在しない画像データを無効な画像データとして検出する検出工程と、
前記検出工程によって検出された無効な画像データの前記画像データ領域における格納位置を当該無効な画像データに隣接する区切り情報に基づいて取得し、取得した格納位置を示す位置情報を生成する生成工程と、
前記生成工程で生成された位置情報を前記管理情報領域に記録して前記無効な画像データを復活させる復活工程とを備える。
【００１３】
また、上記の目的を達成する本発明の他の態様による画像ファイル管理装置はたとえば以下の構成を備える。すなわち、
複数枚の画像を記憶するための画像ファイル管理装置であって、
前記複数枚の画像の各々の画像データを区切り情報を挟んで連続して記憶する画像データ領域と、前記各々の画像データの前記画像データ領域における格納位置を示す位置情報を含む管理情報を格納する管理情報領域とを含む画像ファイルを格納する格納手段と、
前記画像ファイルに関して、前記画像データ領域中において対応する位置情報が存在しない画像データを無効な画像データとして検出する検出手段と、
前記検出手段によって検出された無効な画像データの前記画像データ領域における格納位置を当該無効な画像データに隣接する区切り情報に基づいて取得し、取得した格納位置を示す位置情報を生成する生成手段と、
前記生成手段で生成された位置情報を前記管理情報領域に記録して前記無効な画像データを復活させる復活手段とを備える。
【００１４】
【発明の実施の形態】
以下、添付の図面を参照して本発明の一の実施形態を説明する。
【００１５】
＜第１の実施形態＞
図１は、本実施形態による画像記憶装置としてのコンピュータシステムの構成を示すブロック図である。図１において、１０１はＣＰＵで、システム全体の制御を行なっている。１０２はキーボードで、１０２ａのマウスとともにシステムへの操作入力に使用される。１０３は表示部であり、ＣＲＴや液晶等で構成されている。１０４はＲＯＭ、１０５はＲＡＭであり、システムの記憶装置を構成し、システムが実行するプログラムやシステムが利用するデータを記憶する。１０６はハードディスク装置、１０７はフロッピーディスク装置で、システムのファイルシステムに使用される外部記憶装置を構成している。１０８はプリンタであり、画像データに基づいて記録媒体上への可視画像の形成を行う。
【００１６】
なお、以下で説明する画像ファイルの作成等の処理は、ＣＰＵ１０１がＲＯＭ１０４もしくはＲＡＭ１０５に格納された制御プログラムを実行することでなされるものである。また、以下の説明において形成される画像ファイルは、最終的にハードディスク１０６或いはフロッピーディスク１０７等の外部記憶装置に格納されるものとする。
【００１７】
図２は第１の実施形態による画像記憶方式により作成される画像ファイルの概略構成図である。図２において、２０１は画像情報領域であり、画像の枚数、圧縮方式、縦横画素数、特徴量抽出方法などの、画像の読み出しや表示に必要な情報を記憶する領域である。２０２は画像データ領域であり、当該画像ファイルとして格納すべきすべての画像データを連続して記憶する領域である。２０３はサイズオフセット領域であり、複数の画像各々のデータ量を連続して記憶する領域である。２０４は特徴量データ領域であり、画像データ領域２０２に格納される複数の画像の各々の特徴量（輝度・色差情報、画像周波数、ヒストグラムなど）を連続して記憶する領域である。
【００１８】
図３は図２に示した画像情報領域２０１の詳細なデータ構成例を示す図である。この例では、それぞれの領域が４バイトずつとられているが、扱う画像の数や大きさに応じて領域の大きさは変更してかまわない。
【００１９】
領域３０１は本画像フォーマットの改訂番号を示すバージョン（Version）を格納する領域である。領域３０２は記録している画像の総数を示す画像数（Images）を格納する。領域３０３はどのような値を画像特徴量として使っているかを示すモード（Mode）を格納する。Modeに、例えば色差情報としてＲＧＢ値を用いている場合は値「０」、ＹＵＶを用いている場合は値「１」を入れることにより、画像特徴量の種別を表す。領域３０４は画像データ領域２０３に蓄積されている画像のフォーマットを示す情報（TileFormat）を格納する。TileFormatには、たとえば、JPEGでは値０、BMPでは値１、FlashPixでは値２がセットされる。
【００２０】
領域３０５、３０６は画像データ領域２０３に蓄積されている画像の幅を示す情報（TileWidth）、および高さを示す情報（TileHeight）を格納する領域である。なお、これらは画素数によって表される。領域３０７には特徴量を算出する際の画面の分割方法を示す情報（SectionMode）が格納される。本例では、後述するように画像を６分割していれば値０、分割していなければ値−１がセットされる。
【００２１】
領域３０８には画像データ領域２０２の先頭アドレスを示すポインタ（PointerToTile）が、領域３０９にはサイズオフセット領域２０３の先頭アドレスを示すポインタ（PointerToSizeOFDS）が、領域３１０は画像特徴量データ領域２０２の先頭アドレスを示すポインタ（PointerToData）が格納される。領域３１１は予備領域であり、Ｎ×４バイトの領域が確保されている。なお、本例ではＮ＝５として以下の説明を行う。
【００２２】
例えば、画像情報領域２０１の直後からすきまをあけず画像データ領域２０２が続くのであれば、画像情報領域２０１が本例では６４バイトなので、領域３０８のPointerToTileとして、値「６４」が格納される。なお、これら３０１から３１１までの情報の順番はこの例に限ったものではない。
【００２３】
図４は図２の画像特徴量データ領域２０４におけるデータ構成の詳細を示す図である。図中４０１、４０２、はそれぞれ複数枚ある画像中の１番目、２番目の画像から算出された特徴量を示している。なお、画像特徴量の算出方法については後述する。図４において、Ｒ（０，０）〜Ｂ（２，１）の計１８個のデータが１枚の画像の特徴量をあらわしている。Ｒ（０，０）、Ｇ（０，０），Ｂ（０，０）はそれぞれ１枚の画像を６分割したうちの、左上角の領域（図９により後述する）のＲＧＢ値の平均値を示している。
【００２４】
なお、図４において、ＮＡは値に意味のないことを示している。本実施形態では、各分割領域ごとに、Ｒ，Ｇ、Ｂの平均値を各１バイトで示し、区切りの良いように４バイトを１単位としているためである。別の方法として、ＮＡ部分を削除し、詰めて並べてもよい。
【００２５】
図５は図２の画像データ領域２０２におけるデータ構成の詳細を示す図である。図５では、画像圧縮方式としてＪＰＥＧを使った場合を示している。したがってこの場合、画像情報領域２０１中の、画像フォーマットを示す情報が格納される領域３０４には、ＪＰＥＧを示す情報が格納される。
【００２６】
図５において５０１は画像データ中の１番目の画像のＪＰＥＧ圧縮データであり、５０２は２番目の画像のＪＰＥＧ圧縮データである。図中、ＳＯＩ、ＡＰＰ0、ＤＨＴ，ＤＱＴ、ＳＯＦ0、ＳＯＳ，ＥＯＩはマーカーと呼ばれる区切り記号である。ＳＯＩはＪＰＥＧデータの開始、ＥＯＩはデータの終了、ＡＰＰ0はアプリケーションにより任意に使用可能な領域、ＤＨＴはハフマンテーブル、ＤＱＴは量子化テーブル、ＳＯＦ0はベースラインＪＰＥＧ圧縮、ＳＯＳはハフマンコードを示している。１つの画像の圧縮データはＳＯＩとＥＯＩで挟まれた部分となる。なお、ＪＰＥＧについてはITU-T WHITE BOOK ディジタル静止画像圧縮符号化関連勧告集（財団法人 新日本ITU協会発行）を参照のこと。また、図５の例ではＪＰＥＧデータを用いているが、ＢＭＰ、FlashPix等他の画像ファイルフォーマットであってもかまわない。
【００２７】
図６は図２に示したサイズオフセット領域２０３のデータ構成の詳細を示す図である。図６において、５１０１は１番目の画像の開始位置（５１０１ａ）およびデータ量（５１０１ｂ）を記憶する領域である。同様にして、領域５１０２、５１０３と順次画像データの各々の開始位置およびデータ量が記憶される。このようにして、サイズオフセット領域２０３には、ｎ枚の画像データの開始位置（オフセット）とデータ量（サイズ）が格納される。
【００２８】
次に、ハードディスク１０６あるいは、フロッピーディスク１０７上に、以上で説明した構成のフォーマットでデータを書き込み、画像ファイルを作成するための処理手順を説明する。なお、ここでは、本画像フォーマットの改定番号であるバージョン番号が３、画像枚数が１００枚、特徴量モードがＲＧＢ，画像フォーマットがＪＰＥＧ、画像サイズが幅×高さ＝３８４×２５６、特徴量抽出が分割モード（６分割）である場合を例にあげて説明する。
【００２９】
図７は第１の実施形態における画像ファイル生成処理の概略を示すフローチャートである。図７において、ステップＳ６０１では画像情報領域２０１にヘッダデータを書き込み、ステップＳ６０２では画像データの処理を行い、画像データ領域２０２に画像データの書き込みを行う。ステップＳ６０３では、再び画像情報領域２０１へヘッダデータの書き込みを行う。そして、ステップＳ６０４ではサイズオフセット領域、特徴量領域への書き込みを行う。
【００３０】
以下、図７に示した各処理について更に詳細に説明を加える。
【００３１】
図８は図７のステップＳ６０１のヘッダデータ書込み処理を詳細に説明するフローチャートである。なお、本処理を実行するに際して、書き込み対象となる画像ファイルはすでにオープンされているものとする。
【００３２】
ステップＳ７０１では画像情報領域２０１内の領域３０１にバージョン（Version）を示す値（本例では「３」）を書き込む。また、ステップＳ７０２では、領域３０２に当該画像ファイルに格納すべき画像数（本例では「１００」）を書き込む。ステップＳ７０３では、領域３０３に画像特徴量のモードとして、０（ＲＧＢ）或いは１（ＹＵＶ）のいずれかを書き込む（本例では、ＲＧＢを採用するので、値「０」が書き込まれる）。ステップＳ７０４では画像データ領域２０３に書き込む画像のフォーマットを表す画像フォーマット３０４に値０を書き込む。なお、フローチャートでタイルと記載されているのは、画像データ領域に格納される各画像のことである。ステップＳ７０５では領域３０５と領域３０６のそれぞれに、画像の幅（TileWidth）（本例では、「３８４」）と画像の高さ（TileHeight）（本例では「２５６」）を書き込む。ステップＳ７０６では、領域３０７に、画像特徴量を算出する際の分割モードを示す値を書き込む。本実施形態では、分割しないモードの場合に−１、６分割の場合に０、８分割の場合に１が格納される。したがって本例では６分割が採用されるので、領域３０７に値０が書き込まれる。
【００３３】
ステップＳ７０７では、当該画像ファイルに格納される特徴量データを一時的に記憶するための領域をメモリ（ＲＡＭ１０５）上に確保する。本実施形態では図４に示すごとく、各々の画像について２４バイトの領域を使用する特徴量データが格納されるので、メモリ上に確保する領域は２４バイト×画像数となる。なお、ここで、画像数はステップＳ４０２で領域３０２に設定された画像数（Images）である。なお、ここで確保された領域は、Ｄ［Images］［24］という配列として、後述の図９のフローチャートで用いられる。
【００３４】
ステップＳ７０８では各画像の開始位置とデータ量を一時的に記憶する領域をメモリ上に確保する。本実施形態では、図６に示すごとく、各々の画像について開始位置、データ量各４バイトの領域を使用するので、メモリ上に確保する領域は８バイト×画像数となる。ここで、画像数はステップＳ４０２で領域３０２に設定された画像数（Images）である。なお、ここで確保された領域は、ＩＳＩＺＥ［Images］［2］という配列として、後述の図９のフローチャートで用いられる。
【００３５】
ステップＳ７０９は画像データ領域２０２の先頭アドレスポインタを領域３０８（PointerToTile）へ書き込む。本実施形態では、画像情報領域２０１は６４バイトであり、その直後に画像データ領域が配置されるので、「６４」が書き込まれることになる。
【００３６】
図９は図７のステップＳ６０２における処理の詳細な手順を説明するフローチャートである。
【００３７】
図９では複数の入力画像ファイルを逐一開き、各々の画像について、画像特徴量の算出、圧縮処理、圧縮後の画像データ量の算出を行う。さらに、画像データは連続してファイル内に記憶されることから、画像データ領域２０２の開始位置に算出した画像データ量を累積加算していくことにより、各々の画像の開始位置を算出する。その後、圧縮データの書き込みを行い、１枚の入力画像の処理を終了しファイルを閉じる。この処理をすべての入力画像に対して行う。
【００３８】
ステップＳ８０１では変数ＩＮＵＭに全画像数の値（領域３０１に格納されている値、本例では１００）をセットする。ステップＳ８０２では変数ｉを０に初期化する。
【００３９】
ステップＳ８０３では入力ファイル（ｉ）をオープンする。ステップＳ８０４ではオープンした画像から特徴量を計算し、ステップＳ７０７で確保した一時記憶領域の配列Ｄ[i][0]〜Ｄ[i][23]に記憶する。なお、特徴量の算出処理の詳細については後述する。
【００４０】
ステップＳ８０５ではオープンしたファイルの画像データを圧縮する。圧縮後のデータの容量をSIZEとする。ステップＳ８０６では圧縮後のデータ容量SIZEをステップＳ７０８で確保した一時記憶領域の配列ＩＳＩＺＥ[i][1]に記憶する。また、ＩＳＩＺＥ[I-1][0]とＩＳＩＺＥ[I-1][1]の和を計算することによりｉ番目の圧縮画像データのオフセット位置が得られるので、これをＩＳＩＺＥ[i][0]に代入する。
【００４１】
ステップＳ８０７では圧縮後のデータを出力ファイルへ書き込む。書き込む位置は、１枚目の画像は画像データ領域２０２の先頭アドレスを示すポインタ３０８から開始し、以後、次の画像はその直前の画像データの直後に連続して配置されるように書き込みを行う。なお、圧縮後のデータは図５で説明したフォーマットで書き込まれる。ステップＳ８０８では当該入力ファイル（ｉ）をクローズする。ステップＳ８０９では変数ｉを値１だけ増加させる。ステップＳ８１０で、変数ｉをＩＮＵＭと比較し、両者が等しくない場合はステップＳ８０３にもどり上述の処理を繰り返す。両者が等しければ、ＩＮＵＭ個の全ての画像ファイルを処理したことになるので、本処理を終了する。
【００４２】
次に、上述した画像特徴量の計算（ステップＳ８０４）について説明する。図１０は本実施形態における特徴量算出時の画面分割を示す図である。図９に示されるように、対象となる画像の大きさは、水平方向にＷ画素、垂直方向にＨ画素である。本実施形態では、これを水平方向に３分割、垂直方向に２分割の計６分割し、左上から順に領域(0,0)、領域(1,0)、…領域(2,1)とする。そして、これら各領域のＲ，Ｇ，Ｂ値の平均値を算出し、計１８個の数値をもって、画像の特徴量とする。
【００４３】
図１１は本実施形態による特徴量算出処理を説明するフローチャートである。まず、ステップＳ１００１で変数ｋを値０で初期化し、ステップＳ１００２で変数ｊを値０で初期化し、ステップＳ１００３で変数ｉを値０で初期化する。
【００４４】
次に、ステップＳ１００４で、配列ｄのｋ番目の要素ｄ（ｋ）に、領域（ｉ，ｊ）のＲ値の平均値を代入する。また、ｄ（ｋ＋１）にＧ値の平均値、ｄ（ｋ＋２）にＢ値の平均値を代入する。なお、Ｒ，Ｇ，Ｂ値の平均値の算出方法は図１２のフローチャートを用いて後述する。
【００４５】
ステップＳ１００５では、ｋを値３だけ増加させる。ステップＳ１００６で、ｉを値１だけ増加させる。ステップＳ１００７ではｉを値２と比較し、２より多きければステップＳ１００８へ進む。そうでなければステップＳ１００４へ戻る。
【００４６】
ｉが２よりも大きくなった場合は、当該分割行に対する処理が修了したことを表すので、次の分割行へ進むことになる。従って、ステップＳ１００８で、ｊを値１だけ増加させる。ステップＳ１００９ではｊを値１と比較する。ｊが1より多きければ、分割行の第２行目の処理を終えたこと、すなわち当該画面の全体の処理を終えたことを示すので、本処理を完了する。そうでなければ、新たな分割行について処理を行うためにステップＳ１００３へ戻る。
【００４７】
以上のような処理を完了すると、１８個の要素をもつ配列ｄ（）に、イラスト画像の画像特徴量が格納されることになる。
【００４８】
なお、ここでは特徴量の算出のため、画像を6個の等面積の矩形領域に分割しているが、分割は矩形に限らずより複雑な形状でもよいし、分割数を増減させても良い。分割数を増減したときは、特徴量の要素数は１８個でなく、それに応じて増減することは容易に理解され得る。
【００４９】
次に、Ｒ，Ｇ，Ｂ値の平均値の算出方法について更に詳しく説明する。図１２は、領域毎のＲ，Ｇ，Ｂ値の平均値算出方法を説明するフローチャートである。なお、画像データは、Ｒ(X,Y)，Ｇ(X,Y)，Ｂ(X,Y)の３つの配列に格納されているものとする。ただし、０≦Ｘ＜Ｗ、０≦Ｙ＜Ｈであり、画像の左上隅を起点(0,0)とする。
【００５０】
図１２に示される処理ではＸ０≦Ｘ＜Ｘ１，Ｙ０≦Ｙ＜Ｙ１の部分領域の平均濃度を算出し、変数ＤＲ，ＤＧ，ＤＢのそれぞれにＲ，Ｇ，Ｂの平均濃度値を入れて返す。
【００５１】
ステップＳ８０４及び図１１によって示した処理において、領域(i,j)に相当する領域は、
Ｘ０＝Ｗ×ｉ／３，Ｘ１＝Ｗ×（ｉ＋１）／３
Ｙ０＝Ｈ×ｊ／２，Ｙ１＝Ｈ×（ｊ＋１）／２
に対応するので、定数Ｘ０，Ｘ１，Ｙ０，Ｙ１を上記のように初期化してから図１２フローチャートを実行する。
【００５２】
まず、ステップＳ１１０１で変数ＤＲ，ＤＧ，ＤＢを値０で初期化する。ステップＳ１１０２で変数Ｙを上記のＹ０で初期化する。同様に、ステップＳ１１０３で変数Ｘを上記のＸ０で初期化する。
【００５３】
次に、ステップＳ１１０４で、ＤＲにＲ(X,Y)を加える。同様にＤＧにＧ(X,Y)、ＤＢにＢ(X,Y)を加える。そして、ステップＳ１１０５で変数Ｘを値１だけ増加させる。次に、ステップＳ１１０６で変数ＸとＸ１を比較し、等しければステップＳ１１０７へ、そうでなければＳ１１０４へ戻る。ステップＳ１１０７では変数Ｙを値１だけ増加させる。そして、ステップＳ１１０８で変数ＹとＹ１を比較し、等しければステップＳ１１０９へ、そうでなければステップＳ１１０３へ戻る。以上のステップＳ１１０３〜ステップＳ１１０８の処理により、ＤＲ、ＤＧ、ＤＢのそれぞれには、Ｘ０、Ｘ１、Ｙ０、Ｙ１で特定される領域内のＲ値の合計値、Ｇ値の合計値、Ｂ値の合計値が格納されることになる。
【００５４】
次に、ステップＳ１１０９で、変数ＤＲ，ＤＧ，ＤＢをそれぞれ（Ｘ１−Ｘ０）×（Ｙ１−Ｙ０）で除算する。これは、各変数に格納されている値を領域内の画素の数で割ること、すなわち平均値を取ることを表す。従って、ステップＳ１１０９の処理により、ＤＲ，ＤＧ，ＤＢの内容は、領域内の画素濃度の総和を画素数で割った平均濃度となる。
【００５５】
次に、図７のステップＳ６０３の処理を説明する。図１３はステップＳ６０３におけるヘッダデータの際書き込み処理の詳細を示すフローチャートである。
【００５６】
図１３において、ステップＳ１２０１では最後の画像、すなわちこの例では１００枚目の画像の開始位置（ISIZE[INUM-1][0]）とデータ量（ISIZE[INUM-1][1]）を加えることで、画像データ領域２０２の直後に位置するサイズオフセット領域２０３の開始アドレスを算出する。算出した値を、画像情報領域２０１内のサイズオフセット領域２０３の先頭アドレスを示すポインタPointerToSizeOFSとして領域３０９へ書き込む。
【００５７】
また、ステップＳ１２０２ではサイズオフセット領域２０３の先頭アドレスポインタ３０９の値に当該サイズオフセット領域が占める容量、すなわち８バイト×画像数（Images）を加算した値を、特徴量データ領域２０４の先頭アドレスを示すポインタPointerToDataとして、画像情報領域２０１内の領域３１０へ書き込む。
【００５８】
次に、図７のステップＳ６０４における、サイズ領域・特徴量領域書込処理を図１４のフローチャートを参照して説明する。
【００５９】
ステップＳ１３０１ではメモリ上に確保され、ステップＳ８０６の処理によって所定のデータが格納された配列ＩＳＩＺＥ[Images][2]を、サイズオフセット領域２０３へ書き込む。なお、このサイズオフセット領域２０３への書き込みの先頭アドレスは、領域３０９に格納されたPointerToSizeOFSが示す位置となる。続いて、ステップＳ１３０２では、メモリ上に確保されステップＳ８０４の処理によって特徴量データが格納された配列Ｄ[Images][24]を、特徴量データ領域２０４へ書き込む。なお、この特徴量データ領域２０４への書き込みの先頭アドレスは、領域３１０に格納されたPointerToDataが示す位置となる。
【００６０】
次に前記作成した画像ファイルから所望の画像データを読み出す処理の流れを説明する。図１５は本実施形態による画像データの検索処理を説明するフローチャートである。
【００６１】
ステップＳ１５０１では、画像情報領域から画像数３０２、サイズオフセット領域へのポインタ３０９、特徴量データ領域へのポインタ３１０、画像データ領域へのポインタ３０８等を読み出す。ステップＳ１５０２ではサイズオフセット領域２０３の内容をメモリ（ＲＡＭ１０５）上の一時記憶領域に読み出す。ステップＳ１５０３では特徴量データ領域２０４の内容をメモリ（ＲＡＭ１０５）の一時記憶領域に読み出す。ステップＳ１５０４では不図示の与えられた画像特徴量と、メモリに記憶された特徴量データ領域の内容とを逐一比較し、そのもっとも類似したものを取り出す。ステップＳ１５０５ではステップＳ１５０４で該当した番号の画像の先頭アドレスへのポインタを、ステップＳ１５０２でメモリに格納したサイズオフセット領域の内容を参照して獲得する。そして、獲得した画像の先頭アドレスへのポインタにより当該画像ファイルの画像データ領域から特定された画像を読み出し、表示する。
【００６２】
さて、以上のような画像データファイルに不要な画像データが含まれていた場合には、それを当該画像データファイルから削除する必要がある。以下、不要な画像を削除する方法について説明する。
【００６３】
図１６は削除前の画像ファイルの状態の一例を示す図である。図１６の画像ファイルでは５枚の画像が格納されている。画像情報領域６０１は図２の画像情報領域２０１に対応する。
【００６４】
６０２から６０６は画像データ領域２０２に格納された各画像データを示している。６０７から６１１は、サイズオフセット領域２０３で、Ｐ０〜Ｐ４は画像データ６０２〜６０６の開始位置の値、Ｓ０〜Ｓ４は画像データ６０２〜６０６のデータ量を示している。６１２〜６１６は画像特徴量データ領域２０４で、画像データ６０２〜６０６の各々の特徴量データをＤ０〜Ｄ５で示してある。
【００６５】
図１７は削除後の不要な画像データを含む画像ファイルの状態を説明する図である。この例では２番目の画像データを削除した後で、不要な２番目の画像データを含んだ様子を示している。このとき、画像情報領域７０１内の領域３０２の画像数（Images）は５から４に更新される。７０３は削除対象であるところの２番めの画像データであり、このように削除後も画像データ７０３はファイル中に存在している。７０７〜７１１のサイズオフセット領域では２番めの画像領域の開始位置Ｐ１，データ量Ｓ１を示す項目が削除され、順次配列がつめられている。ただし、７１１にはもともと記憶されていた５番めの画像の開始位置Ｐ４とデータ量Ｓ４の値が残っている。
【００６６】
同様に、７１２〜７１６の特徴量データ領域でも、２番目の画像の特徴量Ｄ１は削除され、Ｄ０，Ｄ２，Ｄ３，Ｄ４が順につめられて記憶されている。そして、７１６にはもともとの値が残されている。
【００６７】
図１８は上記削除処理を説明するフローチャートである。
【００６８】
ステップＳ１８０１では画像情報領域２０２の領域３０２から画像数（Images）を読み出してこれを変数inumへセットする。また、領域３０９のサイズオフセット領域へのポインタ（PointerToSizeOFS）を読み出してこれを変数pSizeへセットする。更に、領域３１０の特徴量データ領域へのポインタ（PointerToData）を読み出してこれを変数pDataにセットする。
【００６９】
ステップＳ１８０２ではステップＳ１８０１で得られたpSizeの位置から、サイズオフセット領域の内容をメモリ（ＲＡＭ１０５）上に設けた配列ＩＳＩＺＥ[Images][2]へ、またpDataの位置から特徴量データ領域の内容をメモリ（ＲＡＭ１０５）上の配列Ｄ[Images][24]へ読み込む。
【００７０】
ステップＳ１８０３では変数ｉを値０で初期化する。また、ステップＳ１８０４では変数ｊを値０で初期化する。
【００７１】
ステップＳ１８０５では変数ｉ番目の画像が削除対象であるかどうかを判断する。この判断の根拠となるものはたとえば、キーボード１０２やマウス１０２aによってユーザから指示された内容である。削除対象の選択方法については、ここでは限定するものではない。ステップＳ１８０５で、第ｉ番目の画像が削除対象であった場合はステップＳ１８０８に進み、削除対象でない場合はステップＳ１８０６へ進む。
【００７２】
ステップＳ１８０６ではＩＳＩＺＥ[i][2]の内容をＩＳＩＺＥ２[j][2]にコピーするとともに、Ｄ[i][24]の内容をＤ２[j][24]へコピーする。ステップＳ１８０７では変数ｊを値１だけ増加する。そして、ステップＳ８０８では変数ｉを値１だけ増加する。
【００７３】
ステップＳ１８０９では変数ｉの値と変数inumの値を比較し、両者が等しい場合はステップＳ１８１０へすすみ、そうでない場合はステップＳ１８０５へ戻る。ステップＳ１８１０では変数ｊの値を画像情報領域２０１の領域３０２へ画像数（Images）として書き込む。そして、ステップＳ１８１１ではＩＳＩＺＥ２[Images][2]の内容をサイズオフセット領域２０３へ書き込むとともに、特徴量データＤ２[Images][24]の内容を特徴量データ領域２０４へ書き込む。なお、領域３０９と領域３１０の内容（PointerToSizeOFSとPointerToData）は変化しないので、各領域のｉ−ｊ個の画像分のデータはそのまま残ることになる（図１７の領域７１１、７１６）。
【００７４】
以上のようにして、図１７に示したように、画像ファイル内に存在する所望の画像データを無効化することができる。以下では、以上のような無効化処理を誤って実行してしまった場合等において、削除した画像データを再度有効化（復活）するための処理（以下、再生処理という）を説明する。上述したように、本実施形態の削除処理では画像データの実態は削除されず、サイズオフセット領域の情報、特徴量データ領域のみが削除されている。従って、再生処理においては、これらの情報を復活させればよい。
【００７５】
上述の図１７においては、２番目の画像データを削除した様子が示されている。この場合、画像情報領域２０１で示される画像総数（Images）は４であるが、実際に画像データ領域２０２には７０２〜７０６までの５つの画像データが記憶されている。すなわち、７０３は削除対象となった２番めの画像データであり、このように削除後も画像データ７０３はファイル中に存在している。したがって、削除というよりは、無効化という方が適当である。従って、以下の図１９に示される再生処理は、無効化された画像データを有効化するものということもできる。
【００７６】
図１９は本実施形態による、無効画像の再生処理の流れを示すフローチャートである。本再生処理では、サイズオフセット領域の各画像のオフセット位置、サイズ情報から順次次の画像の開始位置を算出する。こうして算出した次画像の開始位置と、サイズオフセット領域に格納されているオフセット位置によって示される次画像の開始位置情報とが等しければ、その間は画像が詰まっていると判断する。一方、算出された開始位置とサイズオフセット領域のオフセット情報で示される開始位置とが異なる場合、次の画像との間に、すくなくともひとつの無効画像データが存在することになる。
【００７７】
たとえば、図１７において領域７０９に格納されているオフセット情報Ｐ３とサイズＳ３から次の画像の開始位置が求まるが、これは領域７１０に格納されているオフセット情報Ｐ４が示す開始位置と等しく、この間に無効な画像データは存在しない。一方、領域７０７におけるオフセット情報Ｐ０とサイズＳ０から次画像の開始位置を求めると、図１７のＰ１の位置が求まる。これに対して、次の画像のオフセット情報は、領域７０８に格納されているＰ２であるから、算出された開始位置とは一致しない。従って、この間に無効化された画像データが存在すると判断される。
【００７８】
そして、この無効画像データ領域をスキャンし、ＪＰＥＧデータであればＥＯＩマーカーコードを検出することで、一つの無効画像データを抽出できる。そのときの画像のデータ量を、再登録することで、無効画像データを再生することができる。以下、図１９のフローチャートに従って更に詳細に説明する。
【００７９】
まず、ステップＳ１９０１では変数ｉに領域３０２（Images）の値を、変数pSizeに領域３０９（PointerToSize）の値を、変数pDataに領域３１０（PointerToData）の値を代入する。ステップＳ１９０２では配列ISIZEにサイズオフセット領域のサイズデータを読み込む。また配列IPOSにはサイズオフセット領域のオフセットデータを読み込む。更に、ステップＳ１９０３では変数ｉを値０で初期化し、ステップＳ１９０３では変数ｊを値０で初期化する。
【００８０】
ステップＳ１９０５では変数PNEXTに、配列要素OPOS[j-1]とOSIZE[j-1]の和を代入する。なお、この処理において、OPOS[-1]にはPointerToTileの値が、OSIZE[-1]には０がセットされている。そして、ステップＳ１９０６において、変数PNEXTとIPOS[i]を比較する。ここで、両者が等しい場合は、算出された開始位置とオフセット情報による開始位置が等しいので、無効化された画像は存在しないと判断され、ステップＳ１９０９へ進む。一方、両者が等しくない場合は、算出された開始位置とオフセット情報による開始位置が不一致であり、無効化された画像データが存在すると判断され、ステップＳ１９０７へ進む。
【００８１】
ステップＳ１９０７では、図５で説明した画像データの構造から、ＥＯＩマーカーを検出し、検出した位置を変数TPOS，そのときに読み込んだ画像データのデータ量を変数TSIZEに代入する。そして、ステップＳ１９０８において、配列要素OSIZE[j]に変数TSIZEの内容を、OPOS[j]に変数TPOSの内容をそれぞれ代入する。こうして、オフセットサイズ領域に、無効化された画像データのオフセット位置とサイズが復活する。
【００８２】
一方、無効化された画像が存在しないと判断された場合、ステップＳ１９０９において配列要素OSIZE[j]に配列要素ISIZE[i]の内容を、OPOS[j]にISIZE[i]の内容を代入する。
【００８３】
ステップＳ１９１０では変数ｉを値１だけ増大する。ステップＳ１９１１では変数ｊを値１だけ増大する。ステップＳ１９１２では、OPOS[j]とPointerToSizeを比較し、どちらも等しい場合にはステップＳ１９１３へ進み、サイズオフセット領域にOPOS[0]〜OPOS[j]と、OSIZE[0]〜OSIZE[j]を書き込むとともに、Imagesを変数ｊの内容で更新し、本処理を終了する。ステップＳ１９１２の条件を満足しない場合は、ステップＳ１９０５に戻り、上記処理を繰り返す。
【００８４】
以上説明したように、画像ファイル中の無効画像データをスキャンする手段を設けたことにより、無効データを再登録することが可能になる。
【００８５】
また、復活した画像データについて上述した特徴量算出を行ない、特徴量データ領域２０４の適切な位置に挿入する必要がある。すなわち、復活した画像データに対してステップＳ８０４で説明した特徴量算出処理を行ない、得られた特徴量データ（配列Ｄ[i][0]〜Ｄ[i][23]）を特徴量データ領域２０４内の復活した画像データに対応する位置に挿入する。
【００８６】
なお、上記実施形態では、サイズオフセット領域に各画像の開始位置を示すオフセット情報と各画像のサイズを示すサイズ情報が格納されているので、これらを用いてステップＳ１９０５、Ｓ１９０６のようにして無効化された画像の存在を検出している。しかしながら、本発明は、サイズオフセット領域２０３に各画像の開始位置を示すオフセット情報のみを記憶している場合や、各画像のサイズ情報のみを記憶している場合についても適用できることは明らかである。
【００８７】
たとえば、サイズオフセット領域２０３にオフセット情報のみを記憶している場合は、各画像のサイズをオフセット位置の間隔によって得ることができる。ただし、たとえば図１７に示すように削除を行なった場合、オフセット位置Ｐ０の次にＰ２が記録されることになる。従って、ステップＳ１９０５、Ｓ１９０６で示した処理の代わりに、次のオフセット情報が示す位置まで画像データ領域をスキャンし、検出されたＳＯＩとＥＯＩに基づいて無効化画像の存在を知ることができる。たとえば、オフセット位置Ｐ０からＰ２をスキャンすれば、スキャンの最中のオフセット位置Ｐ１のところでＳＯＩとＥＯＩが出現するので無効化画像が存在していることがわかる。
【００８８】
また、オフセットサイズ領域にサイズ情報のみを記憶している場合は、各画像のオフセット位置を各画像のサイズを累積することで得ることができる。ただし、たとえば図１７に示すように削除を行なった場合、次の画像データの位置Ｐ２を正しく得られるように、領域７０７のサイズ情報をＳ０＋Ｓ１とする必要がある。従って、ステップＳ１９０５とＳ１９０６で示した処理の代わりに、サイズ情報の累積によって得られる位置から、対応する画像のサイズの全体にわたって画像データ領域をスキャンし、検出されたＳＯＩとＥＯＩに基づいて無効化画像の存在を知る。たとえば、図１７の場合、Ｐ０の位置からＳ０＋Ｓ１の大きさの画像データ領域をスキャンすることになる。そして、この場合、スキャンの最中のオフセット位置Ｐ１（位置Ｐ０からサイズＳ０の位置）のところでＳＯＩとＥＯＩが出現するので、無効化画像が存在していることがわかる。
【００８９】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【００９０】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００９１】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９２】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００９３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９５】
【発明の効果】
以上説明したように、本発明によれば、画像データへの高速アクセス及び画像データの簡易な管理が可能となるとともに、画像データベースからの画像データの削除を高速に行える。
【００９６】
また、本発明によれば、いったん削除した画像でも、再び必要となったときには、削除された画像を復活させることが可能となる。
【００９７】
【図面の簡単な説明】
【図１】本実施形態による画像記憶装置としてのコンピュータシステムの構成を示すブロック図である。
【図２】第１の実施形態による画像記憶方式により作成される画像ファイルの概略構成図である。
【図３】図２に示した画像情報領域２０１の詳細なデータ構成例を示す図である。
【図４】図２の画像特徴量データ領域２０４におけるデータ構成の詳細を示す図である。
【図５】図２の画像データ領域２０２におけるデータ構成の詳細を示す図である。
【図６】図２に示したサイズオフセット領域２０３のデータ構成の詳細を示す図である。
【図７】第１の実施形態における画像ファイル生成処理の概略を示すフローチャートである。
【図８】図７のステップＳ６０１のヘッダデータ書込み処理を詳細に説明するフローチャートである。
【図９】図７のステップＳ６０２における処理の詳細な手順を説明するフローチャートである。
【図１０】本実施形態における特徴量算出時の画面分割を示す図である。
【図１１】本実施形態による特徴量算出処理を説明するフローチャートである。
【図１２】領域毎のＲ，Ｇ，Ｂ値の平均値算出方法を説明するフローチャートである。
【図１３】ステップＳ６０３におけるヘッダデータの際書き込み処理の詳細を示すフローチャートである。
【図１４】図７のステップＳ６０４における、サイズ領域・特徴量領域書込処理を説明するフローチャートである。
【図１５】本実施形態による画像データの検索処理を説明するフローチャートである。
【図１６】画像削除前の画像ファイルの状態の一例を示す図である。
【図１７】画像削除後の不要な画像データを含む画像ファイルの状態を説明する図である。
【図１８】画像の削除処理を説明するフローチャートである。
【図１９】本実施形態による、無効画像の再生処理の流れを示すフローチャートである。
【図１】
0003832976.tif 000002
【図２】
0003832976.tif 000003
【図３】
0003832976.tif 000004
【図４】
0003832976.tif 000005
【図５】
0003832976.tif 000006
【図６】
0003832976.tif 000007
【図７】
0003832976.tif 000008
【図８】
0003832976.tif 000009
【図９】
0003832976.tif 000010
【図１０】
0003832976.tif 000011
【図１１】
0003832976.tif 000012
【図１２】
0003832976.tif 000013
【図１３】
0003832976.tif 000014
【図１４】
0003832976.tif 000015
【図１５】
0003832976.tif 000016
【図１６】
0003832976.tif 000017
【図１７】
0003832976.tif 000018
【図１８】
0003832976.tif 000019
【図１９】
0003832976.tif 000020