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