(57)【特許請求の範囲】
【請求項１】
所定の次元数の空間の設けられた第１超平面、前記第１超平面の法線ベクトルの方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第２超平面、および前記第１超平面の法線ベクトルの逆方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第３超平面を示す超平面情報を記憶する記憶部と、
第１比較対象データの特徴を前記空間内の位置で示す第１特徴ベクトルを取得し、前記第１特徴ベクトルで示される位置が前記第２超平面に対して前記法線ベクトルの方向にあるか否かにより第１バイナリ値を生成し、前記第１特徴ベクトルで示される位置が前記第３超平面に対して前記法線ベクトルの方向にあるか否かにより第２バイナリ値を生成し、第２比較対象データの特徴を前記空間内の位置で示す第２特徴ベクトルを取得し、前記第２特徴ベクトルで示される位置が前記第１超平面に対して前記法線ベクトルの方向にあるか否かにより第３バイナリ値を生成し、前記第１バイナリ値と前記第３バイナリ値との排他的論理和と、前記第２バイナリ値と前記第３バイナリ値との排他的論理和との乗算結果に基づいて、前記第１比較対象データと前記第２比較対象データとの類似度を判断する演算部と、
を有する情報処理装置。
【請求項２】
前記記憶部は、前記第１超平面、前記第２超平面、および前記第３超平面を含む複数の超平面セットを記憶しており、
前記演算部は、前記複数の超平面セットそれぞれに対して、前記第１バイナリ値、前記第２バイナリ値、前記第３バイナリ値の生成、および前記第１バイナリ値と前記第３バイナリ値との排他的論理和と、前記第２バイナリ値と前記第３バイナリ値との排他的論理和との乗算を行い、前記複数の超平面セットそれぞれの乗算結果の合計に基づいて、前記第１比較対象データと前記第２比較対象データとの類似度を判断する、
請求項１記載の情報処理装置。
【請求項３】
前記記憶部は、さらに、前記第１特徴ベクトルを複数記憶しており、
前記演算部は、さらに、前記第１特徴ベクトルの平均ベクトルで示される位置を通る前記第１超平面を生成し、生成した前記第１超平面に応じた前記第２超平面および前記第３超平面を生成し、前記第１超平面、前記第２超平面および第３超平面を示す前記超平面情報を前記記憶部に格納する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
コンピュータが、
所定の次元数の空間の設けられた第１超平面、前記第１超平面の法線ベクトルの方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第２超平面、および前記第１超平面の法線ベクトルの逆方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第３超平面を示す超平面情報を記憶部に格納し、
第１比較対象データの特徴を前記空間内の位置で示す第１特徴ベクトルを取得し、
前記第１特徴ベクトルで示される位置が前記第２超平面に対して前記法線ベクトルの方向にあるか否かにより第１バイナリ値を生成し、
前記第１特徴ベクトルで示される位置が前記第３超平面に対して前記法線ベクトルの方向にあるか否かにより第２バイナリ値を生成し、第２比較対象データの特徴を前記空間内の位置で示す第２特徴ベクトルを取得し、
前記第２特徴ベクトルで示される位置が前記第１超平面に対して前記法線ベクトルの方向にあるか否かにより第３バイナリ値を生成し、前記第１バイナリ値と前記第３バイナリ値との排他的論理和と、前記第２バイナリ値と前記第３バイナリ値との排他的論理和との乗算結果に基づいて、前記第１比較対象データと前記第２比較対象データとの類似度を判断する、
データ比較方法。
【請求項５】
コンピュータに、
所定の次元数の空間の設けられた第１超平面、前記第１超平面の法線ベクトルの方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第２超平面、および前記第１超平面の法線ベクトルの逆方向に、前記第１超平面に対して所定の間隔を開けて平行に設けられた第３超平面を示す超平面情報を記憶部に格納し、
第１比較対象データの特徴を前記空間内の位置で示す第１特徴ベクトルを取得し、
前記第１特徴ベクトルで示される位置が前記第２超平面に対して前記法線ベクトルの方向にあるか否かにより第１バイナリ値を生成し、
前記第１特徴ベクトルで示される位置が前記第３超平面に対して前記法線ベクトルの方向にあるか否かにより第２バイナリ値を生成し、第２比較対象データの特徴を前記空間内の位置で示す第２特徴ベクトルを取得し、
前記第２特徴ベクトルで示される位置が前記第１超平面に対して前記法線ベクトルの方向にあるか否かにより第３バイナリ値を生成し、前記第１バイナリ値と前記第３バイナリ値との排他的論理和と、前記第２バイナリ値と前記第３バイナリ値との排他的論理和との乗算結果に基づいて、前記第１比較対象データと前記第２比較対象データとの類似度を判断する、
処理を実行させるデータ比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、データ比較方法、およびデータ比較プログラムに関する。
【背景技術】
【０００２】
画像や音声、センサーデータなどの非構造データの利活用を考えた場合、それらのデータに対する類似検索は有用である。非構造データの類似検索は、例えば、類似する過去のデータから現状を把握したり、個人認証などの照合をしたりする際に用いられる。
【０００３】
非構造データの類似検索を活用できる技術として、手のひら静脈などの生体認証技術がある。例えば、銀行のＡＴＭ（Automatic Teller Machine）で静脈認証を行うときは、ＡＴＭを操作している人物とキャッシュカードの持ち主が同じであることを照合する。このときは、ＡＴＭを操作している人物の静脈データとキャッシュカードの持ち主が過去に登録した静脈データとの１対１の照合が行われる。一方で、災害などでキャッシュカードを紛失した場合は、銀行窓口に来た人物と銀行が保持しているすべてのデータとの照合を行うこととなる。また、企業の入館時にセキュリティーゲートをくぐる際、カードではなく静脈などを用いた生態認証で社員を特定することが考えられる。その場合も、セキュリティーゲートをくぐる人物の静脈データと企業が保持するすべての静脈データとの照合が行われる。ただし、静脈データ同士の照合処理は重く、セキュリティーゲートをくぐる人物の静脈データを、登録されているすべての静脈データと照合したのでは時間が掛かりすぎる。
【０００４】
そこで、登録されているすべての静脈データから特徴ベクトルを抽出しておき、非構造データの類似検索によって、クエリ静脈データから抜き出した特徴ベクトルと類似するデータを複数抜き出すことが考えられる。抜き出された類似データは、その後照合処理に回される。このようにすることで、照合対象のデータ量を削減し、全体の処理時間を短縮できる。なお、全体の処理時間を短縮のためには、類似検索の処理時間が短いことが重要である。
【０００５】
静脈などのデータから特徴ベクトルを抽出すると、高次元ベクトルになることがほとんどである。高次元ベクトルに対する類似検索は効率よく行えず、その処理時間は検索対象の特徴ベクトルのレコード数に線形に依存することが知られている。このような類似検索を高速化する方法として、例えば、高次元空間を超平面で分割し、分割された領域に０，１を付与することで、特徴ベクトルをバイナリ列に変換するものがある。変換されたバイナリ列の間のハミング距離には、元の特徴ベクトル間の類似性が反映される。また、バイナリ列間のハミング距離計算は、特徴ベクトル間の類似性の計算より高速に行える。さらに、バイナリ列はデータ量として非常に小さくとることができるため、特徴ベクトルのバイナリ列をメモリ上に保持しておくことで、処理の高速化が図れる。
【０００６】
このような特徴ベクトルをバイナリ列に変換する技術では、すべての特徴ベクトルが事前にバイナリ列に変換され、計算機に保持される。そして計算機が、クエリとしての静脈データを含む検索要求を取得した際に、第一段階として、クエリをバイナリ列に変換後、バイナリ列間のハミング距離を用いた類似検索により近傍データを取得する。第二段階として、計算機が、近傍データを照合対象として、照合処理を行う。
【０００７】
ところで、超平面により空間を分割した場合、分割面付近にあるデータは、生成されるバイナリ値が、データの持つノイズや超平面の位置の設定のわずかな差に鋭敏に依存する。そのため、上記のような二段階の検索・照合処理では、第一段階で真に特定したい照合データを取りこぼしてしまう恐れがある。特定した照合したいデータを第一段階で取りこぼした場合、第二段階目の照合処理で適切な照合結果を得ることができない。この場合、例えば手のひら静脈認証であれば、誤って本人を拒否してしまうことになる。
【０００８】
真に特定したい照合データの取りこぼしを防ぐため、例えば、変換の際に超平面にマージンを設け、特徴ベクトルをバイナリに変換せずに３値｛０，１，＊｝に変換する方法がある。この方法では、超平面のマージン内にある特徴ベクトルの値は「＊」に変換され、「＊」をワイルドカード（０，１の両方に一致する）と見なしてハミング距離が計算される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−２３０１６９号公報
【特許文献２】特開２０１０−２８７１３５号公報
【特許文献３】特開２０１１−２２１６８９号公報
【非特許文献】
【００１０】
【非特許文献１】R. Shinde et al."Similarity Search and Locality Sensitive Hashing using Ternary Content Addressable Memories" SIGMOD '10 Proceedings of the 2010 ACM SIGMOD International Conference on Management of data, June 2010, Pages 375-386
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記のように、超平面にマージンを設ければ、超平面からマージンの範囲内の特徴ベクトルは、超平面で分割された両方の領域のいずれを指定したクエリデータともハミング距離が近くなる。その結果、真に特定したい照合データの取りこぼしを抑止できる。
【００１２】
しかし、超平面にマージンを設けると、照合対象のデータ量が増大し、処理負荷の増大を招く。例えば、３値を保持するメモリは汎用計算機には搭載されておらず、特徴ベクトルを３値｛０，１，＊｝に変換した場合、汎用計算機では効率的なハミング距離の計算が困難である。そこで、ワイルドカードの使用に変えて、１つの特徴ベクトルに対応するバイナリ列のワイルドカードに相当する要素に「０」を割り振ったバイナリ列と「１」を割り振ったバイナリ列とを生成することが考えられる。例えばワイルドカードを用いたバイナリ列（１，＊，１）は、（１，０，１）と（１，１，１）との２つのバイナリ列に分かれる。この方法では、ワイルドカードとなる要素がＮ個（Ｎは１以上の整数）あると、１つの特徴ベクトルに対し２N個のバイナリ列が生成されてしまう。その結果、類似検索における検索対象のデータ量が肥大化し、処理負荷が増大する。
【００１３】
１つの側面では、本件は、超平面にマージンを設けることによる類似判断の処理負荷の増加を抑止することを目的とする。
【課題を解決するための手段】
【００１４】
１つの案では、以下のような記憶部と演算部とを有する情報処理装置が提供される。
記憶部は、所定の次元数の空間の設けられた第１超平面、第１超平面の法線ベクトルの方向に、第１超平面に対して所定の間隔を開けて平行に設けられた第２超平面、および第１超平面の法線ベクトルの逆方向に、第１超平面に対して所定の間隔を開けて平行に設けられた第３超平面を示す超平面情報を記憶する。
【００１５】
演算部は、第１比較対象データの特徴を空間内の位置で示す第１特徴ベクトルを取得する。次に演算部は、第１特徴ベクトルで示される位置が第２超平面に対して法線ベクトルの方向にあるか否かにより第１バイナリ値を生成する。さらに演算部は、第１特徴ベクトルで示される位置が第３超平面に対して法線ベクトルの方向にあるか否かにより第２バイナリ値を生成する。また演算部は、第２比較対象データの特徴を空間内の位置で示す第２特徴ベクトルを取得する。次に演算部は、第２特徴ベクトルで示される位置が第１超平面に対して法線ベクトルの方向にあるか否かにより第３バイナリ値を生成する。そして演算部は、第１バイナリ値と第３バイナリ値との排他的論理和と、第２バイナリ値と第３バイナリ値との排他的論理和との乗算結果に基づいて、第１比較対象データと第２比較対象データとの類似度を判断する。
【発明の効果】
【００１６】
１態様によれば、超平面にマージンを設けることによる類似判断の処理負荷の増加が抑止される。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態に係る情報処理装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。
【図４】バイナリ値への変換を幾何学的に表す図である。
【図５】ハミング距離の計算例を示す図である。
【図６】超平面で分割された領域と各領域に属するベクトルのバイナリ値とを示す図である。
【図７】非類似度の計算例を示す図である。
【図８】クエリに応じた特徴ベクトルが指す位置から距離「０」の範囲を示す図である。
【図９】非類似度の計算例を示す図である。
【図１０】非類似度の計算例を示す図である。
【図１１】超平面の位置の決定例を示す図である。
【図１２】手のひら静脈認証を実施するためのサーバの構成例を示すブロック図である。
【図１３】境界超平面記憶部のデータ構造の一例を示す図である。
【図１４】平行超平面記憶部のデータ構造の一例を示す図である。
【図１５】手のひら静脈ＤＢのデータ構造の一例を示す図である。
【図１６】超平面生成処理の手順の一例を示すフローチャートである。
【図１７】データ登録要求に応じたデータ登録処理の一例を示す図である。
【図１８】データ登録処理の手順の一例を示すフローチャートである。
【図１９】検索・照合処理の一例を示す図である。
【図２０】検索・照合処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。第１の実施の形態は、検索対象のレコードに対し２種類のバイナリ列を保持し、クエリとして入力されたデータに対して別の種類のバイナリ列を生成し、それらバイナリ列間の演算によって、マージンを持たせた超平面を用いた類似判断を可能とするものである。
【００１９】
図１は、第１の実施の形態に係る情報処理装置の機能構成例を示す図である。情報処理装置１０は、記憶部１１と演算部１２とを有する。
記憶部１１は、所定の次元数の空間の設けられた第１超平面ＨC、第２超平面ＨR、および第３超平面ＨLを示す超平面情報１１ａを記憶する。第１超平面ＨCには、法線ベクトル８が設定されている。第２超平面ＨRは、第１超平面ＨCの法線ベクトル８の方向に、第１超平面ＨCに対して所定の間隔を開けて平行に設けられている。第３超平面ＨLは、第１超平面ＨCの法線ベクトル８の逆方向に、第１超平面ＨCに対して所定の間隔を開けて平行に設けられている。
【００２０】
演算部１２は、第１比較対象データ１の特徴を空間内の位置で示す第１特徴ベクトル２を取得する（ステップＳ１）。例えば演算部１２は、第１比較対象データ１を複数の指標に基づいて解析し、解析指標ごとの数値を算出する。そして演算部１２は、算出された複数の数値を要素として有する第１特徴ベクトル２を生成する。
【００２１】
次に演算部１２は、第２超平面ＨRと第３超平面ＨLとに基づいて第１特徴ベクトルをバイナリ値に変換する処理（バイナリ変換）を行う（ステップＳ２）。例えば演算部１２は、第１特徴ベクトル２で示される位置が第２超平面ＨRに対して法線ベクトル８の方向にあるか否かにより第１バイナリ値３を生成する。第１特徴ベクトル２で示される位置が第２超平面ＨRに対して法線ベクトル８の方向にあれば、第１バイナリ値３は「１」となる。逆に第１特徴ベクトル２で示される位置が第２超平面ＨRに対して法線ベクトル８の逆方向にあれば、第１バイナリ値３は「０」である。同様にして、演算部１２は、第１特徴ベクトル２で示される位置が第３超平面ＨLに対して法線ベクトル８の方向にあるか否かにより第２バイナリ値４を生成する。第１特徴ベクトル２で示される位置が第３超平面ＨLに対して法線ベクトル８の方向にあれば、第２バイナリ値４は「１」となる。逆に第１特徴ベクトル２で示される位置が第３超平面ＨLに対して法線ベクトル８の逆方向にあれば、第２バイナリ値４は「０」である。
【００２２】
また、演算部１２は、第２比較対象データ５の特徴を前間内の位置で示す第２特徴ベクトル６を取得する（ステップＳ３）。例えば演算部１２は、第２比較対象データ５を複数の指標に基づいて解析し、解析指標ごとの数値を算出する。そして演算部１２は、算出された複数の数値を要素として有する第２特徴ベクトル６を生成する。第２比較対象データ５は、例えば予め登録された第１比較対象データ１を検索対象として、第２比較対象データ５と類似するものを検索するためのクエリである。
【００２３】
次に演算部１２は、第２超平面ＨRと第３超平面ＨLとに基づいて第１特徴ベクトルをバイナリ値に変換する処理（バイナリ変換）を行う（ステップＳ４）。例えば演算部１２は、第２特徴ベクトル６で示される位置が第１超平面ＨCに対して法線ベクトル８の方向にあるか否かにより第３バイナリ値７を生成する。具体的な生成方法は、第１バイナリ値３を生成する場合と同様である。第２特徴ベクトル６で示される位置が第１超平面ＨCに対して法線ベクトル８の方向にあれば、第３バイナリ値７は「１」となる。逆に第２特徴ベクトル６で示される位置が第１超平面ＨCに対して法線ベクトル８の逆方向にあれば、第３バイナリ値７は「０」である。
【００２４】
なお、上記の説明における第１特徴ベクトル２または第２特徴ベクトル６で示される位置とは、所定の点（例えば空間の座標原点）から特徴ベクトル内の各要素の値分だけ各座標軸方向に移動した位置である。また第１超平面ＨCで区分けされた領域のうち、第１特徴ベクトル２または第２特徴ベクトル６で示される位置を含む領域を、第１特徴ベクトル２または第２特徴ベクトル６が属する領域と呼ぶこととする。
【００２５】
そして、演算部１２は、第１バイナリ値３と第３バイナリ値７との排他的論理和と、第２バイナリ値４と第３バイナリ値７との排他的論理和との乗算結果に基づいて、第１比較対象データ１と第２比較対象データ５との類似度を判断する。第１バイナリ値３を「ｂR」、第２バイナリ値４を「ｂL」、第３バイナリ値７を「ｂC」とした場合、「（ｂR  ｘｏｒ  ｂC）×（ｂL  ｘｏｒ  ｂC）」という演算が行われる（ｘｏｒは、排他的論理和を示す）。この演算結果は、第１比較対象データ１と第２比較対象データ５との距離と捉えることができる。距離が短い（値が小さい）ほど、第１比較対象データ１と第２比較対象データ５とが類似していることを示す。
【００２６】
このような処理により、第１超平面ＨCで分割された２つの領域にマージンを設け、第１特徴ベクトル２と第２特徴ベクトル６との属する領域の同一性の有無によって、第１比較対象データ１と第２比較対象データ５との類似度を適切に判断することができる。
【００２７】
例えば、第２特徴ベクトル６が図１に示す点ｑ１の位置を示しているとき、第３バイナリ値７は「０」である。この場合、第１バイナリ値３と第２バイナリ値４との少なくとも一方の値が「０」であれば、距離の演算結果は「０」となる。すなわち、第１特徴ベクトル２の示す位置が、図１に示す点ａ１、点ａ２、点ａ３のいずれかであれば、距離は「０」となる。すなわち、点ａ３の位置は、第１超平面ＨCで分割された２つの領域のうち、第２特徴ベクトル６が示す位置（点ｑ１）と属する領域が異なるが、第１超平面ＨCのマージンの範囲内にあるため、属する領域が同じであるとみなされる。
【００２８】
また、第２特徴ベクトル６が図１に示す点ｑ２の位置を示しているとき、第３バイナリ値７は「１」である。この場合、第１バイナリ値３と第２バイナリ値４との少なくとも一方の値が「１」であれば、距離の演算結果は「０」となる。すなわち、第１特徴ベクトル２の示す位置が、図１に示す点ａ２、点ａ３、点ａ４のいずれかであれば、距離は「０」となる。すなわち、点ａ１の位置は、第１超平面ＨCで分割された２つの領域のうち、第２特徴ベクトル６が示す位置（点ｑ２）と属する領域が異なるが、第１超平面ＨCのマージンの範囲内にあるため、属する領域が同じであるとみなされる。
【００２９】
このようなマージンを考慮した類似判断を行うことで、第１超平面ＨCの近傍において、実際には距離が近い位置を示す特徴ベクトル間を、距離が離れていると誤って判断することを抑止できる。しかも第１の実施の形態では、検索対象となる第１比較対象データ１に対して、空間を分割する境界となる第１超平面ＨC１つに対して、２つのバイナリ値（２ビット）を設定するだけで済む。そのため、多数の第１超平面ＨCを設けた場合でも、１つの第１比較対象データ１に対して第１超平面ＨCの数分のバイナリ値を含むバイナリ列を２つ設定すればよい。そのため、保持しておくバイナリ値の量が過大になることが抑止される。その結果、超平面にマージンを設けることによる類似判断の処理負荷の増加が抑止される。
【００３０】
なお、記憶部１１には、多数の第１超平面ＨCを記憶させておくことができる。その場合、記憶部１１は、第１超平面ＨC、第２超平面ＨR、および第３超平面ＨLを含む複数の超平面セットを記憶する。第１超平面ＨCが複数ある場合、演算部１２は、複数の超平面セットそれぞれに対して、第１バイナリ値、第２バイナリ値、第３バイナリ値の生成を行う。また演算部１２は、複数の超平面セットそれぞれに対して、第１バイナリ値と第３バイナリ値との排他的論理和と、第２バイナリ値と第３バイナリ値との排他的論理和との乗算を行う。そして演算部１２は、複数の超平面セットそれぞれの乗算結果の合計に基づいて、第１比較対象データ１と第２比較対象データ５との類似度を判断する。例えば合計値が小さい程、類似度が高いと判断する。このようにして、空間内を多数の第１超平面ＨCで領域分割した場合であっても、バイナリ値を用いた演算による効率的な類似判断が行われる。
【００３１】
また、記憶部１１に、検索対象とする複数の第１比較対象データ１それぞれから生成した複数の第１特徴ベクトル２を記憶しておくこともできる。複数の第１特徴ベクトル２がある場合、演算部１２は、第１超平面ＨCの位置の最適化を図ることができる。例えば演算部１２は、複数の第１特徴ベクトルの平均ベクトルで示される位置を通る第１超平面ＨCを生成する。さらに演算部１２は、生成した第１超平面ＨCに応じた第２超平面ＨRおよび第３超平面ＨLを生成する。そして演算部１２は、第１超平面ＨC、第２超平面ＨR、および第３超平面ＨLを示す超平面情報１１ａを記憶部１１に格納する。第１超平面ＨCが、複数の第１特徴ベクトルの平均ベクトルで示される位置を通るようにすることで、第１超平面ＨCを境界とする２つの領域に、ほぼ同数の第１特徴ベクトルが属するようにすることができる。
【００３２】
これにより、類似度の判定の信頼性を向上させることができる。すなわち、第１超平面ＨCによって区分けされた領域の一方に、第１特徴ベクトルがほとんど存在しない場合、大多数の第１特徴ベクトルは同じ領域に属し、距離「０」となる。これでは、第１超平面ＨCを用いても、処理負荷が増えるだけで、類似度の適切な判定に寄与することができない。それに対して、第１超平面ＨCを境界とする２つの領域に、ほぼ同数の第１特徴ベクトルが属するようにすることで、第１超平面ＨCがあることによって、特徴ベクトル間の距離が「１」となる場合と「０」となる場合とが同じ頻度で発生する。その結果、適切は類似度判定を行うことができるようになる。
【００３３】
なお、演算部１２は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば情報処理装置１０が有するメモリまたはストレージ装置により実現することができる。
【００３４】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、手のひら静脈を用いてオフィスへの入室時の本人確認を行うシステムにおいて、真に特定したい照合データの取りこぼしを防止し、かつ本人確認を高速に行えるようにするものである。
【００３５】
図２は、第２の実施の形態のシステム構成例を示す図である。オフィス３０の入口付近には、手のひら静脈を読み取る静脈スキャナ３１が設置されている。静脈スキャナ３１は、ネットワーク２０を介してサーバ１００に接続されている。静脈スキャナ３１は、ドア３２に近づいた人の手のひらがかざされると、その手のひらの静脈パターンを読み取る。そして静脈スキャナ３１は、静脈パターンを示す静脈データを、ネットワーク２０を介してサーバ１００に送信する。
【００３６】
サーバ１００は、静脈スキャナ３１から送られた静脈データと、予め登録された従業員の静脈データとを照合する。照合の結果、いずれかの従業員の静脈データと一致した場合、サーバ１００は、ネットワーク２０経由でドア３２のロック機構を制御し、ロックを解除する。
【００３７】
図３は、第２の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３８】
メモリ１０２は、サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３９】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４０】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００４１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４４】
機器接続インタフェース１０７は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５、メモリリーダライタ２６、静脈スキャナ２８を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。静脈スキャナ２８は、人の手のひらの静脈パターンを読み取る装置である。
【００４５】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した情報処理装置１０も、図３に示したサーバ１００と同様のハードウェアにより実現することができる。
【００４７】
サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またサーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４８】
以下、サーバ１００における、静脈データの特徴を示す特徴ベクトルを用いた、類似検索について詳細に説明する。
＜特徴ベクトルのバイナリ変換＞
まず、超平面を用いた、特徴ベクトルのバイナリ列への変換について説明する。静脈データの特徴を示す特徴ベクトルは、例えば浮動小数点数の固定長列として表される。列の長さ（数値の個数）が次元数である。
【００４９】
２つの特徴ベクトル間の類似性は、類似度または非類似度で表すことができる。類似度とは似ているものほど値が大きくなる指標の事を指し、非類似度とは似ているものほど値が小さくなる指標を指す。例えば２つの特徴ベクトル間の類似度として、コサイン類似度を用いることができる。２つの特徴ベクトルが「（２．０，４．１，６．４），（２４．２，１４．３，９６．６）」であるとき、これらの特徴ベクトル間のコサイン類似度は、以下の式で表される。
【００５０】
【数１】
0006607061.tif 000002
【００５１】
第２の実施の形態では、このような類似度の計算よりも効率的に類似度を計算するため、特徴ベクトルをバイナリ列へ変換する。ここで、特徴ベクトルをベクトルｘ、超平面の法線ベクトルをベクトルｎ、オフセットをｄ（ｄは０以上の実数）とする。このとき、超平面の方程式は「ベクトルｘ・ベクトルｎ＋ｄ＝０」である。
【００５２】
特徴ベクトルをバイナリ列に変換する場合、超平面を境界として、特徴ベクトルの次元数を有する多次元空間が分割される。そして、特徴ベクトルが、超平面で分割された２つの領域のうちのどちらに属するのかにより、その特徴ベクトルにバイナリ値が付与される。バイナリ値を付与することは、次式を計算することと同じである。
【００５３】
【数２】
0006607061.tif 000003
【００５４】
図４は、バイナリ値への変換を幾何学的に表す図である。図４に示すように、超平面４０の法線ベクトルの方向に属する特徴ベクトルには、バイナリ値「１」が付与される。逆に、超平面４０の法線ベクトルの方向の反対側に属する特徴ベクトルには、バイナリ値「０」が付与される。
【００５５】
このような操作をＢ個（Ｂは１以上の整数）の超平面分行うことで、長さがＢのバイナリ列を生成できる。生成されたバイナリ列をベクトルｂと表記する。
明確にするために、ベクトルｘから生成したバイナリ列「ベクトルｂ（ベクトルｘ）」のｉ番目のビットを、「ベクトルｂ（ベクトルｘ）i」と書くと、バイナリ列は以下の式で表される。
【００５６】
【数３】
0006607061.tif 000004
【００５７】
ｉ番目の超平面の法線ベクトルをベクトルｎ(i)、オフセットをｄ(i)とすると、バイナリ列のｉ番目のビットの値は以下の式で表される。
【００５８】
【数４】
0006607061.tif 000005
【００５９】
このようにして、特徴ベクトルをバイナリ列に変換することができる。バイナリ列同士であれば、式（１）に示したコサイン類似度よりも容易に類似度または非類似度を計算できる。
【００６０】
＜非類似度の計算方法＞
バイナリ列間の非類似度は、例えばハミング距離で求めることができる。２つのバイナリ列（ベクトルｃ1とベクトルｃ2）の間のハミング距離は、バイナリ列内のビット同士の排他的論理和（ｘｏｒ）と、バイナリ列中の１の数を数えるポピュレーションカウントとで計算される。ポピュレーションカウントを「popc()」としたとき、ベクトルｃ1とベクトルｃ2とのハミング距離「Hamm()」は、以下の式で表される。
【００６１】
【数５】
0006607061.tif 000006
【００６２】
図５は、ハミング距離の計算例を示す図である。図５には、ベクトル（０，０，１，１，１，０，１，１）とベクトル（０，１，１，０，１，１，１，０）とのハミング距離の計算例が示されている。２つのベクトルのビットごとの排他的論理和をとると、２番目、４番目、６番目、８番目の要素の値が「１」となり、それ以外は「０」となる。値の「１」の要素数が４個なので、ポピュレーションカウントは「４」となる。すなわち、ハミング距離は「４」である。
【００６３】
特徴ベクトルのバイナリ列への変換と組み合わせて、特徴ベクトル間の非類似度「Sim()」が以下のように定義される。
【００６４】
【数６】
0006607061.tif 000007
【００６５】
このようにして、２つの特徴ベクトル間の非類似度を計算できる。以上が特徴ベクトル間の非類似度を計算する基本技術となる。第２の実施の形態では、超平面にマージンを設けるため、特徴ベクトルのバイナリ変換方法と非類似度の計算方法とについて、工夫が施される。
【００６６】
＜マージンを考慮したバイナリ変換＞
第２の実施の形態では、空間を分割する超平面（境界超平面）に平行な２つの超平面（平行超平面）が設けられる。ここで、三枚の平行な超平面ＨL，ＨC，ＨRを考える。これらの方程式はそれぞれ以下のようになる。
【００６７】
【数７】
0006607061.tif 000008
【００６８】
ｄ-，ｄ+は、共に０より大きい実数である。それぞれの超平面から生成されるバイナリへの変換関数をｂL，ｂC，ｂRとすると、変換関数は以下の式で表される。
【００６９】
【数８】
0006607061.tif 000009
【００７０】
【数９】
0006607061.tif 000010
【００７１】
【数１０】
0006607061.tif 000011
【００７２】
空間内を平行な３つの超平面で分けると、空間が４つの領域に分割される。
図６は、超平面で分割された領域と各領域に属するベクトルのバイナリ値とを示す図である。図６には、３つの超平面ＨL，ＨC，ＨRを境界とする領域ごとに点ａ１，ａ２，ａ３，ａ４が与えられている。図６において、超平面ＨL，ＨC，ＨRは、右側が表（法線ベクトル方法）であり、左側が裏である。点ａ１，ａ２，ａ３，ａ４は、予めサーバ１００内のデータベースに、検索対象のレコードとして登録しておく、社員の静脈データの特徴ベクトルで指し示される点である。検索対象のレコードとして登録しておく特徴ベクトルには、対応する点の位置と超平面ＨL、ＨRとの位置関係に基づいてバイナリ値が付与される。すなわち超平面ＨL、ＨRの表側にある点にはバイナリ値「１」が付与され、裏側にある点にはバイナリ値「０」が付与される。
【００７３】
例えば、点ａ１は、超平面ＨL，ＨRそれぞれの左（裏側）にあるため、バイナリ値ｂL，ｂRとして、共に「０」が付与される。また、点ａ２は、超平面ＨLの右（表側）かつ超平面ＨRの左（裏側）にあるため、バイナリ値ｂLとして「１」が付与され、バイナリ値ｂRとして「０」が付与される。
【００７４】
さらにＨCの両側の点ｑ１，ｑ２を考える。点ｑ１，ｑ２は、入室しようとする人からクエリとして取得した静脈データの特徴ベクトルで指し示される点である。クエリの特徴ベクトルは、特徴ベクトルで示される位置の点と超平面ＨCとの位置関係に基づいてバイナリ値が付与される。すなわち超平面ＨCの表側にある点に応じたバイナリ値は「１」であり、裏側にある点に応じたバイナリ値は「０」である。例えば点ｑ１は超平面ＨCの左（裏側）にあるため、点ｑ１を示す特徴ベクトルには、バイナリ値ｂCとして「０」が付与される。また点ｑ２は超平面ＨCの右（表側）にあるため、点ｑ２を示す特徴ベクトルには、バイナリ値ｂCとして「１」が付与される。
【００７５】
なお図６の例では点ｑ１の位置はＨLの左にあるが、ＨCより左であればどの位置であっても付与されるバイナリ値に違いはない。同様に、点ｑ２の位置は超平面ＨRの右にあるが、ＨCより右であればどの位置であっても付与されるバイナリ値に違いはない。
【００７６】
図６では、１組の超平面（１つの境界超平面と２つの平行超平面）に応じたバイナリ値を示しているが、境界超平面の数分のバイナリ値が特徴ベクトルに付与される。その結果、特徴ベクトルに対応するバイナリ列が生成される。
【００７７】
＜マージンを考慮した非類似度の計算＞
ここで、クエリに応じた特徴ベクトルｘと、データベースに保持されている特徴ベクトルｙとの非類似度を、以下のように定義する。
【００７８】
【数１１】
0006607061.tif 000012
【００７９】
「＋」を丸で囲んだ記号は、排他的論理和を示す。
図７は、非類似度の計算例を示す図である。図７には、クエリに応じた特徴ベクトルｘが指し示す位置と、データベースに保持されている特徴ベクトルｙが指し示す位置との組み合わせに応じた、非類似度の計算結果が示されている。図７の例では、特徴ベクトルｘが点ｑ１の位置を示している場合、特徴ベクトルｙが点ａ４の位置を示していれば、非類似度は「１」となり、特徴ベクトルｙが点ａ１〜ａ３の位置を示していれば、非類似度は「０」である。特徴ベクトルｘが点ｑ２を指している場合、特徴ベクトルｙが点ａ１の位置を示していれば、非類似度は「１」となり、特徴ベクトルｙが点ａ２〜ａ４の位置を示していれば、非類似度は「０」である。
【００８０】
図８は、クエリに応じた特徴ベクトルが指す位置から距離「０」の範囲を示す図である。非類似度ＭＸＯＲを距離の一種だと考えれば、ｑ１，ｑ２から距離が「０」で到達可能な領域は、図８の太線の矢印で示す範囲となる。超平面ＨLと超平面ＨRの間がマージン幅である。マージンを設けない場合、点ｑ１，ｑ２それぞれから距離「０」の範囲は、共に超平面ＨCまでである。
【００８１】
図８では、１つの境界超平面と、その境界超平面に平行な２つの平行超平面について説明したが、境界超平面は複数設けることができる。この場合、境界超平面ごとに、対応する平行超平面が２つずつ生成される。
【００８２】
ここで、１つの境界超平面と２つの平行超平面との３個の平行な超平面を１つの組として考え、Ｂ組（Ｂは、１以上の整数）の超平面セットを与える。この場合、特徴ベクトルには、超平面セットごとのバイナリ値が付与される。Ｂ組の超平面セットがあれば、特徴ベクトルには、Ｂ個のバイナリ値が付与されることとなる。特徴ベクトルと、その特徴ベクトルに付与されたバイナリ値の並びであるバイナリ列に置き換えることが、特徴ベクトルのバイナリ変換である。
【００８３】
特徴ベクトルをバイナリ変換するための変換関数は、以下のように、ベクトルｂL，ベクトルｂC，ベクトルｂRの３種類が与えられる。
【００８４】
【数１２】
0006607061.tif 000013
【００８５】
【数１３】
0006607061.tif 000014
【００８６】
【数１４】
0006607061.tif 000015
【００８７】
非類似度ＭＸＯＲ（ｑ，ａ）を用い、マージン付きの非類似度ＭＳｉｍ（ｘ，ｙ）が以下の式で定義できる。
【００８８】
【数１５】
0006607061.tif 000016
【００８９】
マージン付きの非類似度をバイナリ列に関する演算で表すと、以下のように定義できる。
【００９０】
【数１６】
0006607061.tif 000017
【００９１】
ここで、ある社員の静脈データから予め生成された特徴ベクトルを変更したバイナリ列として、「ベクトルｂL（ｒ）＝（０，０，１，１，１，０，１，１）」と「ベクトルｂR（ｒ）＝（０，０，１，０，０，０，０，１）」があるものとする。また、オフィス３０に入室しようとする者の静脈データから、クエリとして生成された特徴ベクトルを変換したバイナリ列が「ベクトルｂC（ｑ）＝（０，１，１，０，１，１，１，０）」であるものとする。このとき、ＭＳｉｍ（ｑ，ｒ）の計算は、図９に示すようになる。
【００９２】
図９は、非類似度の計算例を示す図である。図９に示すように、まず、ベクトルｂL（ｒ）とベクトルｂC（ｑ）とのビットごとの排他的論理和が計算される。同様に、ベクトルｂR（ｒ）とベクトルｂC（ｑ）とのビットごとの排他的論理和が計算される。そして、２つの排他的論理和演算の結果の、ビットごとの論理積が計算される。論理積の計算結果のうち、値が「１」の要素の数が、予め登録されている社員の静脈データと、入室しようとする者の静脈データとのバイナリ列による非類似度となる。
【００９３】
入室を希望する者の静脈データと、予め登録されている社員の静脈データとのバイナリ列による非類似度が所定値より小さければ、入室を希望する者の静脈データと予め登録されている社員の静脈データとの直接比較が行われる。そして、静脈データの直接比較による類似度に基づいて、入室を希望する者が社員本人か否かが判定される。
【００９４】
図１０は、非類似度の計算例を示す図である。図１０の例では、社員の手のひら静脈データＤ１〜Ｄ４がレコードとして、予めサーバ１００に登録されているものとする。また、３組の超平面セットが設けられている。第１の超平面セットは、超平面ＨL１，ＨC１，ＨR１で構成される。第２の超平面セットは、超平面ＨL２，ＨC２，ＨR２で構成される。第３の超平面セットは、超平面ＨL３，ＨC３，ＨR３で構成される。
【００９５】
図１０には、手のひら静脈データＤ１〜Ｄ４それぞれに基づいて生成された特徴ベクトルの多次元空間での位置を、網かかけの丸い図形、または黒丸で示している。図１０の例では、手のひら静脈データＤ１の特徴ベクトルをバイナリ変換すると、バイナリ列Ｌ（１，１，１）とバイナリ列Ｒ（１，０，１）が生成される。手のひら静脈データＤ２の特徴ベクトルをバイナリ変換すると、バイナリ列Ｌ（１，０，１）とバイナリ列Ｒ（０，０，１）が生成される。手のひら静脈データＤ３の特徴ベクトルをバイナリ変換すると、バイナリ列Ｌ（１，１，１）とバイナリ列Ｒ（０，０，１）が生成される。手のひら静脈データＤ４の特徴ベクトルをバイナリ変換すると、バイナリ列Ｌ（１，１，１）とバイナリ列Ｒ（０，０，０）が生成される。
【００９６】
このとき、クエリＱ１〜Ｑ４として手のひら静脈データが入力された場合を考える。図１０には、クエリＱ１〜Ｑ４それぞれに基づいて生成された特徴ベクトルの多次元空間での位置を、白丸で示している。図１０の例では、クエリＱ１の特徴ベクトルをバイナリ変換すると、バイナリ列Ｃ（１，０，１）が生成される。クエリＱ２の特徴ベクトルをバイナリ変換すると、バイナリ列Ｃ（０，０，１）が生成される。クエリＱ３の特徴ベクトルをバイナリ変換すると、バイナリ列Ｃ（１，１，１）が生成される。クエリＱ４の特徴ベクトルをバイナリ変換すると、バイナリ列Ｃ（０，１，０）が生成される。
【００９７】
このとき各クエリＱ１〜Ｑ４と、各レコードとの非類似度を、式（１６）に従って計算すると、図１０の下段に示す表のようになる。例えばクエリＱ１の特徴ベクトルと、レコードとして登録されている手のひら静脈データＤ４の特徴ベクトルとの間には、境界超平面ＨC１と境界超平面ＨC２とが存在する。すなわちクエリＱ１の特徴ベクトルと手のひら静脈データＤ４の特徴ベクトルとは、２つの境界超平面で区分けされた別々の領域に属する。しかし、手のひら静脈データＤ４の特徴ベクトルが示す位置は、境界超平面ＨC１と境界超平面ＨC２とのマージンの範囲内に存在する。そのため、クエリＱ１の特徴ベクトルと手のひら静脈データＤ４の特徴ベクトルとの非類似度は「０」となる。
【００９８】
このように、レコードとして登録されている手のひら静脈の特徴ベクトルが、境界超平面のマージンの範囲内にあれば、その境界超平面の両側の特徴ベクトルとの距離を示すベクトル値が「０」となり、非類似度が低く計算される。その結果、特徴ベクトルが境界超平面の近傍に位置するレコードを、漏らさずに照合対象として抽出できる。
【００９９】
＜超平面の位置の決定＞
上記のような特徴ベクトルを変換して得られるバイナリ列の各値は、超平面の位置に依存する。特徴ベクトルを適切に分類するためには、超平面を、特徴ベクトルが多数存在している領域を分割するように設定するのが適切である。そこで、第２の実施の形態では、複数の社員の静脈データに応じた特徴ベクトルが登録されている場合、登録済みの特徴ベクトルに応じて超平面の位置を決定する。
【０１００】
図１１は、超平面の位置の決定例を示す図である。超平面の位置は、例えばオフセットｄの値によって決定される。
超平面ＨCは特徴ベクトルが分布している領域を分割する。この際、分割した双方の領域にほぼ同数の特徴ベクトルが配置されるように超平面を配置するのが適切である。しかし、データベースに社員の静脈データに応じた特徴ベクトルが格納されていない場合、どこに特徴ベクトルが分布するか分からずない。そのため、超平面ＨCを配置すべき場所が分からない。そこで、データベースに社員の静脈データに応じた特徴ベクトルが未格納の場合、例えばサーバ１００は、法線ベクトルとオフセットをランダムに生成する。
【０１０１】
データベースにデータが格納されている場合、特徴ベクトルの分布が分かる。特徴ベクトルの平均ベクトルμは分布の特徴の１つである。超平面ＨCが平均ベクトルμを含めば、分割した双方の領域にほぼ同数の特徴ベクトルがあることが見込まれる。超平面ＨCの法線ベクトルｎ(i)が与えられたとき、超平面が平均ベクトルμを含むには、オフセットを以下の式で調整すればよい。
ｄ(i)＝−平均ベクトルμ・法線ベクトルｎ(i)
超平面ＨCの法線ベクトルを多変量標準正規分布から標本抽出した後、オフセットを前記の式で定めれば、適切な超平面の配置が得られる。オフセットｄを更新することで、図１１に示すように、超平面ＨCの表側の特徴ベクトル数と超平面ＨCの裏側の特徴ベクトル数とが均等になる位置に、超平面ＨCが配置される。
【０１０２】
＜サーバ１００による個人認証処理の詳細＞
以上のような特徴ベクトル間の非類似度判定を用いることで、手のひら静脈を用いた信頼性の高い個人認証を、効率的に実施することができる。
【０１０３】
図１２は、手のひら静脈認証を実施するためのサーバの構成例を示すブロック図である。サーバ１００は、境界超平面記憶部１１０、平行超平面記憶部１２０、手のひら静脈データベース（ＤＢ）１３０、超平面生成部１４１、登録情報特徴抽出部１４２、登録情報バイナリ変換部１４３、クエリ特徴抽出部１５１、クエリバイナリ変換部１５２、類似検索部１５３、および静脈照合部１５４を有している。
【０１０４】
境界超平面記憶部１１０は、特徴ベクトルが配置される多次元空間を２つの領域に分けるときの境界となる超平面（境界超平面）を記憶する。平行超平面記憶部１２０は、境界超平面に平行な超平面（平行超平面）を記憶する。手のひら静脈ＤＢ１３０は、社員の手のひら静脈に関する情報を記憶する。境界超平面記憶部１１０、平行超平面記憶部１２０、および手のひら静脈データベース（ＤＢ）１３０は、メモリ１０２またはストレージ装置１０３の記憶領域の一部に構築される。
【０１０５】
超平面生成部１４１は、超平面を生成する。例えば超平面生成部１４１は、ユーザからの入力に応じて境界超平面を生成し、境界超平面記憶部１１０に格納する。また超平面生成部１４１は、平行超平面生成指示が入力されると、境界超平面記憶部１１０に格納されている境界超平面それぞれに対応する平行超平面を生成する。超平面生成部１４１は、生成した平行超平面を、平行超平面記憶部１２０に格納する。
【０１０６】
登録情報特徴抽出部１４２は、静脈スキャナ２８から入力された手のひら静脈データを解析し、手のひら静脈パターンの特徴を表す特徴ベクトルを生成する。登録情報特徴抽出部１４２は、生成した特徴ベクトルを、生成元の手のひら静脈データに関連付けて、手のひら静脈ＤＢ１３０に格納する。また登録情報特徴抽出部１４２は、生成した特徴ベクトルを、登録情報バイナリ変換部１４３に送信する。
【０１０７】
登録情報バイナリ変換部１４３は、平行超平面記憶部１２０に格納されている平行超平面を参照し、平行超平面に基づいて特徴ベクトルをバイナリ列に変換する。登録情報バイナリ変換部１４３は、生成したバイナリ列を、生成元の特徴ベクトルに関連付けて、手のひら静脈ＤＢ１３０に格納する。
【０１０８】
クエリ特徴抽出部１５１は、静脈スキャナ３１から入力された手のひら静脈データを解析し、手のひら静脈パターンの特徴を表す特徴ベクトルを生成する。クエリ特徴抽出部１５１は、生成した特徴ベクトルを、登録情報バイナリ変換部１４３に送信する。
【０１０９】
クエリバイナリ変換部１５２は、境界超平面記憶部１１０に格納されている境界超平面を参照し、境界超平面に基づいて特徴ベクトルをバイナリ列に変換する。クエリバイナリ変換部１５２は、生成したバイナリ列を類似検索部１５３に送信する。
【０１１０】
類似検索部１５３は、取得したバイナリ列と類似するバイナリ列を有する手のひら静脈を、手のひら静脈ＤＢ１３０から検索する。類似検索部１５３は、検索によってヒットした手のひら静脈に含まれる手のひら静脈データを手のひら静脈ＤＢ１３０から抽出し、静脈照合部１５４に送信する。
【０１１１】
静脈照合部１５４は、手のひら静脈ＤＢ１３０から抽出された手のひら静脈データそれぞれと、静脈スキャナ３１から入力された手のひら静脈データとを比較し、同一人物の手のひら静脈データか否かを判断する。同一人物の手のひら静脈データが存在した場合、静脈照合部１５４は、手のひら静脈による個人認証を成功させ、オフィス３０のドア３２を解錠する。
【０１１２】
このような機能により、サーバ１００は、手のひら静脈を用いた個人認証を実施することができる。なお、図１２に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図１２に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【０１１３】
次に、図１３〜図１５を参照して、境界超平面記憶部１１０、平行超平面記憶部１２０、手のひら静脈ＤＢ１３０に格納されるデータについて詳細に説明する。
図１３は、境界超平面記憶部のデータ構造の一例を示す図である。例えば境界超平面記憶部１１０は、境界超平面を規定するデータを含む境界超平面データファイル１１１を有している。境界超平面データファイル１１１には、境界超平面を規定するレコードが、例えばＣＳＶ（Comma-Separated Values）形式で設定される。図１３の例では、境界超平面ごとに、超平面番号、法線ベクトル、およびオフセットを有するレコードが登録されている。
【０１１４】
図１４は、平行超平面記憶部のデータ構造の一例を示す図である。例えば平行超平面記憶部１２０は、平行超平面を規定するデータを含む平行超平面データファイル１２１を有している。平行超平面データファイル１２１には、平行超平面を規定するレコードが、例えばＣＳＶ（Comma-Separated Values）形式で設定される。図１４の例では、平行超平面の生成元となる境界超平面ごとに、超平面番号、法線ベクトル、オフセットｄ、オフセットｄ+、およびオフセットｄ-を有するレコードが登録されている。オフセットｄ+により、境界超平面の法線方向に存在する、その境界超平面と平行な平行超平面（超平面ＨR）が定義される。オフセットｄ-により、境界超平面の法線方向の逆方向に存在する、その境界超平面と平行な平行超平面（超平面ＨL）が定義される。およびオフセットｄ+およびオフセットｄ-は、２つの平行超平面それぞれの、生成元の境界超平面との距離を示している。
【０１１５】
図１５は、手のひら静脈ＤＢのデータ構造の一例を示す図である。手のひら静脈ＤＢ１３０は、例えば、手のひら静脈管理テーブル１３１を有している。手のひら静脈管理テーブル１３１には、個人ＩＤ、手のひら静脈データ、特徴ベクトル、バイナリ列Ｌ、およびバイナリ列Ｒの欄が設けられている。
【０１１６】
個人ＩＤの欄には、オフィス３０への入室を許可する社員の識別子（個人ＩＤ）が設定される。手のひら静脈データの欄には、社員の手のひら静脈データが設定される。特徴ベクトルの欄には、手のひら静脈データを解析して得られた、静脈パターンの特徴を示すベクトル（特徴ベクトル）が設定される。バイナリ列Ｌの欄には、超平面ＨLの集合に基づいて特徴ベクトルをバイナリ変換することで得られたバイナリ列（バイナリ列Ｌ）が設定される。バイナリ列Ｒの欄には、超平面ＨRの集合に基づいて特徴ベクトルをバイナリ変換することで得られたバイナリ列（バイナリ列Ｒ）が設定される。
【０１１７】
以上のような構成のサーバ１００により、手のひら静脈を用いた効率的な本人確認が行われる。本人確認を実施するために、サーバ１００では、まず、超平面生成処理が行われる。
【０１１８】
図１６は、超平面生成処理の手順の一例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。なお、図１６に示す処理は、超平面生成部１４１が、システム運用者から超平面生成要求を受け取ったときに開始される。
【０１１９】
［ステップＳ１０１］超平面生成部１４１は、システム運用者から超平面生成要求を受け取ると、超平面番号ｉ＝１，・・・，Ｂそれぞれの超平面ＨCに対し、ステップＳ１０２〜Ｓ１０９の処理を実行する。
【０１２０】
［ステップＳ１０２］超平面生成部１４１は、多変量標準正規分布から標本抽出した値を、ｉ番目の超平面ＨCの法線ベクトル（ｎ(i)）とする。
［ステップＳ１０３］超平面生成部１４１は、特徴ベクトルが手のひら静脈ＤＢ１３０に格納されているか否かを判断する。特徴ベクトルが格納されていれば、処理がステップＳ１０５に進められる。特徴ベクトルが格納されていなければ、処理がステップＳ１０４に進められる。
【０１２１】
［ステップＳ１０４］超平面生成部１４１は、特徴ベクトルが格納されていない場合、［０，１］上の一様分布から標本抽出した値を、オフセットｄ(i)とする。その後、処理がステップＳ１０７に進められる。
【０１２２】
［ステップＳ１０５］超平面生成部１４１は、特徴ベクトルが格納されている場合、それら特徴ベクトルの平均を算出し、平均ベクトルμとする。
［ステップＳ１０６］超平面生成部１４１は、法線ベクトルｎ(i)と平均ベクトルμの内積の値にマイナスを掛けた値を、オフセットｄ(i)とする。つまり「ｄ(i)＝−ベクトルμ・ベクトルｎ(i)」が計算される。
【０１２３】
［ステップＳ１０７］超平面生成部１４１は、ｉ番目の超平面ＨR（法線方向側の平行超平面）の法線ベクトルとして、ｉ番目超平面ＨCの法線ベクトルｎ(i)と同じものを設定する。そして超平面生成部１４１は、［０，１］上の一様分布から標本抽出した値を、オフセットｄ+(i)とする。
【０１２４】
［ステップＳ１０８］超平面生成部１４１は、ｉ番目の超平面ＨL（法線方向の反対側の平行超平面）の法線ベクトルとして、ｉ番目超平面ＨCの法線ベクトルｎ(i)と同じものを設定する。そして超平面生成部１４１は、［０，１］上の一様分布から標本抽出した値を、オフセットｄ-(i)とする。
【０１２５】
［ステップＳ１０９］超平面生成部１４１は、法線ベクトルｎ(i)とオフセットｄ(i)とにより、超平面ＨCを生成する。また超平面生成部１４１は、法線ベクトルｎ(i)、オフセットｄ(i)、およびオフセットｄ+(i)により、超平面ＨRを生成する。さらに超平面生成部１４１は、法線ベクトルｎ(i)、オフセットｄ(i)、およびオフセットｄ-(i)により、超平面ＨLを生成する。
【０１２６】
［ステップＳ１１０］超平面生成部１４１は、超平面番号ｉ＝１，・・・，Ｂに対応するＢ組の超平面セットの生成が完了すると、処理をステップＳ１１１に進める。
［ステップＳ１１１］超平面生成部１４１は、生成した超平面を格納する。例えば超平面生成部１４１は、Ｂ個の超平面ＨCそれぞれを示すレコードを含む境界超平面データファイル１１１を生成する。超平面ＨCを示すレコードには、超平面番号、法線ベクトルｎ(i)、およびオフセットｄ(i)が含まれている。超平面生成部１４１は、生成した境界超平面データファイル１１１を、境界超平面記憶部１１０に格納する。
【０１２７】
また超平面生成部１４１は、Ｂ組の超平面セット（超平面ＨC，超平面ＨR，超平面ＨL）を示すレコードを含む平行超平面データファイル１２１を生成する。各超平面セットを示すレコードには、超平面番号、法線ベクトルｎ(i)、オフセットｄ(i)、オフセットｄ+(i)、およびオフセットｄ-(i)を含む。法線ベクトルｎ(i)、オフセットｄ(i)、およびオフセットｄ+(i)により、超平面ＨRが表されている。法線ベクトルｎ(i)、オフセットｄ(i)、およびオフセットｄ-(i)により、超平面ＨLが表されている。超平面生成部１４１は、生成した平行超平面データファイル１２１を、平行超平面記憶部１２０に格納する。
【０１２８】
以上のようにして生成された超平面に基づいて、手のひら静脈データの特徴を表す特徴ベクトルのバイナリ変換が行われる。バイナリ変換は、例えば社員の手のひら静脈データの登録の要求（データ登録要求）の入力時と、オフィス３０に入室しようとする者の手のひら静脈データをクエリとした、検索および照合処理の要求（検索・照合要求）の入力時とに実行される。
【０１２９】
図１７は、データ登録要求に応じたデータ登録処理の一例を示す図である。サーバ１００は、データ登録要求を取得すると、例えば静脈スキャナ２８から手のひら静脈データ３３を取得し、手のひら静脈ＤＢ１３０に格納すると共に、手のひら静脈データ３３を登録情報特徴抽出部１４２に入力する。登録情報特徴抽出部１４２は、取得した手のひら静脈データ３３に示される静脈パターンの特徴を解析し、特徴ベクトルを生成する。登録情報特徴抽出部１４２は、生成した特徴ベクトルを、手のひら静脈データ３３に関連付けて手のひら静脈ＤＢ１３０に登録する。また登録情報特徴抽出部１４２は、生成した特徴ベクトルを登録情報バイナリ変換部１４３に送信する。
【０１３０】
登録情報バイナリ変換部１４３は、平行超平面記憶部１２０を参照し、取得した特徴ベクトルを２つのバイナリ列（バイナリ列ＬとバイナリＲ）に変換する。登録情報バイナリ変換部１４３は、変換によって生成されたバイナリ列を、生成元の特徴ベクトルに関連付けて、手のひら静脈ＤＢ１３０に登録する。
【０１３１】
次に、データ登録処理の手順について詳細に説明する。
図１８は、データ登録処理の手順の一例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１３２】
［ステップＳ２０１］サーバ１００は、社員の手のひら静脈データを、手のひら静脈スキャナ２８で読み取らせ、手のひら静脈スキャナ２８から手のひら静脈データを取得する。取得した手のひら静脈データは、手のひら静脈ＤＢ１３０に格納されると共に、登録情報特徴抽出部１４２に送られる。
【０１３３】
［ステップＳ２０２］登録情報特徴抽出部１４２は、手のひら静脈データから静脈のつながりなどを表す特徴量を計算する。そして登録情報特徴抽出部１４２は、複数の指標によって計算した複数の特徴量それぞれを要素とする特徴ベクトルｘを生成する。
【０１３４】
［ステップＳ２０３］登録情報特徴抽出部１４２は、生成した特徴ベクトルｘを、生成元の手のひら静脈データに関連付けて手のひら静脈ＤＢ１３０に格納する。また登録情報特徴抽出部１４２は、生成した特徴ベクトルｘを、登録情報バイナリ変換部１４３に送信する。
【０１３５】
［ステップＳ２０４］登録情報バイナリ変換部１４３は、特徴ベクトルｘを式（１２）の入力として、Ｂ個の超平面ＨLによるバイナリ値への変換を行い、長さがＢであるバイナリ列Ｌを生成する。
【０１３６】
［ステップＳ２０５］登録情報バイナリ変換部１４３は、特徴ベクトルｘを式（１４）の入力として、Ｂ個の超平面ＨRによるバイナリ値への変換を行い、長さがＢであるバイナリ列Ｒを生成する。
【０１３７】
［ステップＳ２０６］登録情報バイナリ変換部１４３は、生成したバイナリ列Ｌとバイナリ列Ｒとを、生成元の特徴ベクトルｘに関連付けて、手のひら静脈ＤＢ１３０に格納する。
【０１３８】
このようにして、社員の手のひら静脈データに基づく手のひら静脈が、手のひら静脈ＤＢ１３０に登録される。その後、オフィス３０への入室を希望する者が、静脈スキャナ３１に手をかざすと、検索・照合処理が行われる。
【０１３９】
図１９は、検索・照合処理の一例を示す図である。静脈スキャナ３１で読み取られた手のひら静脈データ３４はサーバ１００に送られ、クエリ特徴抽出部１５１と静脈照合部１５４とに入力される。クエリ特徴抽出部１５１は、手のひら静脈データから特徴ベクトルを生成し、クエリバイナリ変換部１５２に送信する。クエリバイナリ変換部１５２は、境界超平面記憶部１１０に格納されている超平面に基づいて、取得した特徴ベクトルをバイナリ列Ｃに変換する。バイナリ変換で生成されたバイナリ列Ｃは、類似検索部１５３に送信される。
【０１４０】
類似検索部１５３は、手のひら静脈ＤＢ１３０から、バイナリ列Ｃとの非類似度が所定値以下となるレコードを検索する。検索でヒットしたレコードは、類似検索結果として静脈照合部１５４に送信される。静脈照合部１５４は、類似検索結果に含まれる手のひら静脈データと、静脈スキャナ３１で読み取られた手のひら静脈データ３４とを照合する。そして、静脈照合部１５４は、手のひら静脈データ３４と同じ人物から読み取られた手のひら静脈データを含むレコードを、照合結果として出力する。
【０１４１】
次に、検索・照合処理の手順について詳細に説明する。
図２０は、検索・照合処理の手順の一例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１４２】
［ステップＳ３０１］サーバ１００は、オフィス３０に入室しようとする者が静脈スキャナ３１にかざすと、静脈スキャナ３１に手のひら静脈データを読み取らせる。そしてサーバ１００は、静脈スキャナ３１か手のひら静脈データを取得し、クエリ特徴抽出部１５１と静脈照合部１５４とに入力する。
【０１４３】
［ステップＳ３０２］クエリ特徴抽出部１５１は、手のひら静脈データから静脈のつながりなどを表す特徴量を計算する。そしてクエリ特徴抽出部１５１は、複数の指標によって計算した複数の特徴量それぞれを要素とする特徴ベクトルｘを生成する。クエリ特徴抽出部１５１は、生成した特徴ベクトルを、クエリバイナリ変換部１５２に送信する。
【０１４４】
［ステップＳ３０３］クエリバイナリ変換部１５２は、取得した特徴ベクトルを式（１３）の入力として、Ｂ個の超平面ＨCによるバイナリ値への変換を行い、長さがＢであるバイナリ列Ｃを生成する。クエリバイナリ変換部１５２は、生成したバイナリ列Ｃを、類似検索部１５３に送信する。
【０１４５】
［ステップＳ３０４］類似検索部１５３は、変数ｉに１を設定する。
［ステップＳ３０５］類似検索部１５３は、手のひら静脈ＤＢ１３０内のｉ番目のレコード内のバイナリ列Ｌとバイナリ列Ｒとを取得する。
【０１４６】
［ステップＳ３０６］類似検索部１５３は、バイナリ列Ｃ、バイナリ列Ｌ、バイナリ列Ｒを引数として、非類似度ＭＳｉｍＢを計算する。具体的には、類似検索部１５３は、クエリのバイナリ列ＣをＭＳｉｍＢの第一引数とし、ｉ番目のレコードのバイナリ列ＬをＭＳｉｍＢの第二引数とし、ｉ番目のレコードのバイナリ列ＲをＭＳｉｍＢの第三引数として、ＭＳｉｍＢを計算する。類似検索部１５３は、ＭＳｉｍＢの計算結果として得られる評価値を、クエリとｉ番目のレコードとの非類似度とする。
【０１４７】
［ステップＳ３０７］類似検索部１５３は、手のひら静脈ＤＢ１３０内に未処理のレコードがあるか否かを判断する。未処理のレコードがあれば、処理がステップＳ３０８に進められる。未処理のレコードがなければ、処理がステップＳ３０９に進められる。
【０１４８】
［ステップＳ３０８］類似検索部１５３は、ｉに１を加算し、処理をステップＳ３０５に進める。
［ステップＳ３０９］類似検索部１５３は、非類似度ＭＳｉｍＢの小さい順に、手のひら静脈ＤＢ１３０内のレコードを並べ替える。
【０１４９】
［ステップＳ３１０］類似検索部１５３は、上位ｋ件（ｋは１以上の整数）のレコードそれぞれの個人ＩＤと手のひら静脈データとを類似検索結果として、静脈照合部１５４に出力する。ｋの値はシステム運用者が事前に与えられているものとする。
【０１５０】
［ステップＳ３１１］静脈照合部１５４は、静脈スキャナ３１から取得した手のひら静脈データと類似検索結果のｋ件の手のひら静脈データとを照合する。そして静脈照合部１５４は、類似検索結果に含まれる手のひら静脈データのうち、静脈スキャナ３１から取得した手のひら静脈データと照合率がもっとも高い手のひら静脈データの個人ＩＤを、照合結果として出力する。このとき静脈照合部１５４は、例えば照合による一致度を示す数値を照合結果に含めてもよい。また静脈照合部１５４は、一致度を示す数値が所定の閾値以上の場合、ドア３２への解錠信号を出力してもよい。
【０１５１】
このようにして、手のひら静脈を用いた個人認証を、効率的に実施することができる。すなわち、第２の実施の形態によれば、汎用の計算機に搭載されているメモリを用いて、ワイルドカードと同様の効果を発揮できるため、適用できる資源の範囲が広がる。ワイルドカードを用いることができるため、取りこぼしを軽減できる。
【０１５２】
すなわち、第２の実施の形態では、検索対象のレコードに２種類のバイナリ列を保持しておき、クエリとして入力された手のひら静脈データをバイナリ列に変換し、レコード内のバイナリ列との間の比較により、非類似度を計算することができる。バイナリ列同士の論理演算は、ビット演算とポピュレーションカウントを用い、汎用計算機において高速に実行することができる。その結果、大量のレコードの中から、クエリとして入力された手のひら静脈データに類似するレコードを高速に抽出することが可能となる。
【０１５３】
なお、第２の実施の形態では、照合対象のデータが手のひら静脈データの例を示したが、第２の実施の形態の技術は、特徴ベクトルで特徴を表すことができる様々なデータの照合に適用できる。例えば、指紋データ、網膜データなどの生体データ、その他の様々な非構造データの照合に適用可能である。
【０１５４】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１５５】
１  第１比較対象データ
２  第１特徴ベクトル
３  第１バイナリ値
４  第２バイナリ値
５  第２比較対象データ
６  第２特徴ベクトル
７  第３バイナリ値
８  法線ベクトル
１０  情報処理装置
１１  記憶部
１１ａ  超平面情報
１２  演算部
ＨC  第１超平面
ＨR  第２超平面
ＨL  第３超平面
【図１】
0006607061.tif 000018
【図２】
0006607061.tif 000019
【図３】
0006607061.tif 000020
【図４】
0006607061.tif 000021
【図５】
0006607061.tif 000022
【図６】
0006607061.tif 000023
【図７】
0006607061.tif 000024
【図８】
0006607061.tif 000025
【図９】
0006607061.tif 000026
【図１０】
0006607061.tif 000027
【図１１】
0006607061.tif 000028
【図１２】
0006607061.tif 000029
【図１３】
0006607061.tif 000030
【図１４】
0006607061.tif 000031
【図１５】
0006607061.tif 000032
【図１６】
0006607061.tif 000033
【図１７】
0006607061.tif 000034
【図１８】
0006607061.tif 000035
【図１９】
0006607061.tif 000036
【図２０】
0006607061.tif 000037