"特徴量を表す要素群であるパタンと特徴量を表す要素群である対象データと上記パタンの特徴量の空間と変換係数から上記対象データの特徴量の空間への変換関数とから、上記パタンを上記変換関数で変換した要素群が上記対象データの要素群と高い類似度となるように上記変換関数の変換係数を算出する検索方法において、上記パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算ステップと、上記パタンの最初とされた要素と上記対象データの所定の要素とから暫定の変換係数Tを計算する変換係数計算ステップと、上記変換係数Tを用いて、上記パタンの要素毎に、上記変換関数で変換された上記パタンの要素と上記対象データとのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算ステップと、上記スコアが更新されたときの上記パタンの要素の上記移動閾値より、更新された上記スコアが小さいか否かを判定する判定ステップと、更新された上記スコアが上記パタンの要素の上記移動閾値以上であると判定された場合、更新係数ベクトルUおよび上記変換係数Tを更新する変換係数更新ステップとを含み、更新された上記スコアが上記移動閾値より小さいと判定された場合、上記対象データの次の要素に対して、または上記の次の暫定の変換係数Tに対して、上記検索方法の手順を施すことを特徴とする検索方法。請求項1に記載の検索方法において、前記行列Bと前記行列Dを更新する前に、前記更新係数ベクトルUの係数の間の柔軟性を示す前記行列Bに初期値として対角行列を設定する設定ステップをさらに含み、前記変換係数更新ステップにおいて、更新された前記スコアが前記移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するとき、前記更新係数ベクトルUおよび前記変換係数Tが更新されることを特徴とする検索方法。請求項2に記載の検索方法において、前記変換係数更新ステップにおいて、更新された前記スコアが前記移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するとき、前記行列Bに前記対角行列が設定され、誤差の小さくなる位置を示す行列Dに0が設定されることを特徴とする検索方法。請求項2に記載の検索方法において、前記変換行列更新ステップにおいて、更新された前記スコアが前記移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するとき、前記行列Bがそのままとされ、誤差の小さくなる位置を示す行列Dに0が設定されることを特徴とする検索方法。請求項2に記載の検索方法において、前記変換行列更新ステップにおいて、更新された前記スコアが前記移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するとき、前記行列Bがそのままとされ、誤差の小さくなる位置を示す行列Dに、前記行列Bに前記係数ベクトルUを乗算して得られた積をそれまでの行列Dから引き算して得られた差が設定されることを特徴とする検索方法。請求項1から5に記載の検索方法において、対応関係効果計算ステップステップの前に、対応関係効果計算ステップステップまたは判定ステップにおいて使われる前記パタンとして、前記変換係数Tの値によって複数のパタンの中から一つを選ぶパタン選択ステップを含むことを特徴とする検索方法。特徴量を表す要素群であるパタンと特徴量を表す要素群である対象データと上記パタンの特徴量の空間と変換係数から上記対象データの特徴量の空間への変換関数とから、上記パタンを上記変換関数で変換した要素群が上記対象データの要素群と高い類似度となるように上記変換関数の変換係数を算出する検索方法を実行する検索装置において、上記パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算手段と、上記パタンの最初とされた要素と上記対象データの所定の要素とから暫定の変換係数Tを計算する変換係数計算手段と、上記変換係数Tを用いて、上記パタンの要素毎に、上記変換関数で変換された上記パタンの要素と上記対象データとのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算手段と、上記スコアが更新されたときの上記パタンの要素の上記移動閾値より、更新された上記スコアが小さいか否かを判定する判定手段と、更新された上記スコアが上記パタンの要素の上記移動閾値以上であると判定された場合、更新係数ベクトルUおよび上記変換係数Tを更新する変換係数更新手段とを有し、更新された上記スコアが上記移動閾値より小さいと判定された場合、上記対象データの次の要素に対して、または上記の次の暫定の変換係数Tに対して、上記検索方法の手順を施すことを特徴とする検索装置。特徴量を表す要素群であるパタンと特徴量を表す要素群である対象データと上記パタンの特徴量の空間と変換係数から上記対象データの特徴量の空間への変換関数とから、上記パタンを上記変換関数で変換した要素群が上記対象データの要素群と高い類似度となるように上記変換関数の変換係数を算出する検索方法の処理をコンピュータに実行させるプログラムにおいて、この検索方法の処理は、上記パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算ステップと、上記パタンの最初とされた要素と上記対象データの所定の要素とから暫定の変換係数Tを計算する変換係数計算ステップと、上記変換係数Tを用いて、上記パタンの要素毎に、上記変換関数で変換された上記パタンの要素と上記対象データとのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算ステップと、上記スコアが更新されたときの上記パタンの要素の上記移動閾値より、更新された上記スコアが小さいか否かを判定する判定ステップと、更新された上記スコアが上記パタンの要素の上記移動閾値以上であると判定された場合、更新係数ベクトルUおよび上記変換係数Tを更新する変換係数更新ステップとを含み、更新された上記スコアが上記移動閾値より小さいと判定された場合、上記対象データの次の要素に対して、または上記の次の暫定の変換係数Tに対して、上記検索方法の手順を施すことを特徴とするプログラム。しかしながら、祖サーチにおいて、サンプリングの刻みを充分細かくしないと解答を見落としてしまい、サンプリングの刻みを充分細かくすると、実行時間が非常に長くなる。隠蔽、ノイズ、背景などの影響もある。さらに、産業的には、数秒以内の実行時間が求められている。そこで、本発明は、上記課題を解決すること、すなわち、マッチングしながら微調整を行い、サンプリングの刻みをできるだけ大きくして、実行時間を短くしながら、解答を見つけることができる検索方法および検索装置、並びにプログラムを提供することを目的とする。上記課題を解決するために、本発明の検索方法の一側面は、それぞれ、対象データとパタンと変換関数とから、変換関数で対象データ空間へ変換されたパタンが対象データと高い類似度を占める様に、変換関数の係数を算出する検索方法であって、パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算ステップと、パタンの最初とされた要素と対象データの所定の要素と、検索空間のサンプリング係数とから変換関数の係数Tを計算する変換係数計算ステップと、変換係数Tを用いて、パタンの要素毎に、変換されたパタン要素と対応する対象データの要素を計算する対応要素計算ステップと、対応要素とのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算ステップと、スコアが更新されたときのパタンの要素の移動閾値より、更新されたスコアが小さいか否かを判定する判定ステップと、更新されたスコアがパタンの要素の移動閾値以上であると判定された場合、更新係数ベクトルUおよび変換係数Tを更新する変換係数更新ステップとを含み、更新されたスコアが移動閾値より小さいと判定された場合、対象データの所定の要素を次の対象データ要素として、スコアを初期化して、パタンの最初の要素から上述の処理を続けるものとされている。また、本発明の検索方法の一側面は、上述の構成に加えて、パタンの最初の要素に対して対応要素計算する前に、更新係数ベクトルUの係数の間の柔軟性を示す行列Bに初期値として対角行列を設定する設定ステップをさらに含み、変換係数更新ステップにおいて、更新されたスコアが移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立する時だけに、更新係数ベクトルUおよび変換係数Tが更新されるものとされている。さらに、本発明の検索方法の一側面は、上述の構成に加えて、変換係数更新ステップにおいて、更新されたスコアが移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立する時に、更新係数ベクトルUおよび変換係数Tを更新した後で、行列Bに対角行列が設定され、誤差の小さくなる位置を示す行列Dに0が設定されるものとされている。さらにまた、本発明の検索方法の一側面は、上述の構成に加えて、変換係数更新ステップにおいて、更新されたスコアが移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するときに、更新係数ベクトルUおよび変換係数Tを更新した後で、行列Bがそのままとされ、誤差の小さくなる位置を示す行列Dに0が設定されるものとされている。また、本発明の検索方法の一側面は、上述の構成に加えて、変換係数更新ステップにおいて、更新されたスコアが移動閾値以上であると判定された場合、予め定められた微調整をすべき条件が成立するときに、更新係数ベクトルUおよび変換係数Tを更新した後で、行列Bがそのままとされ、誤差の小さくなる位置を示す行列Dに、行列Bに更新係数ベクトルUを乗算して得られた積をそれまでの行列Dから引き算して得られた差が設定されるものとされている。上記課題を解決するために、本発明の検索装置の一側面は、それぞれ、対象データとパタンと変換関数とから、変換関数で対象データ空間へ変換されたパタンが対象データと高い類似度を占める様に、変換関数の係数を算出する検索方法を実行する検索装置であって、この検索方法は、パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算ステップと、パタンの最初とされた要素と対象データの所定の要素と、検索空間のサンプリング係数とから変換関数の係数Tを計算する変換係数計算ステップと、変換係数Tを用いて、パタンの要素毎に、変換されたパタン要素と対応する対象データの要素を計算する対応要素計算ステップと、対応要素とのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算ステップと、スコアが更新されたときのパタンの要素の移動閾値より、更新されたスコアが小さいか否かを判定する判定ステップと、更新されたスコアがパタンの要素の移動閾値以上であると判定された場合、更新係数ベクトルUおよび変換係数Tを更新する変換係数更新ステップとを含み、更新されたスコアが移動閾値より小さいと判定された場合、対象データの所定の要素を次の対象データ要素として、スコアを初期化して、パタンの最初の要素から上述の処理を続けるものとされている。上記課題を解決するために、本発明のプログラムの一側面は、それぞれ、対象データとパタンと変換関数とから、変換関数で対象データ空間へ変換されたパタンが対象データと高い類似度を占める様に、変換関数の係数を算出する処理をコンピュータに実行させるプログラムであって、この処理は、パタンに含まれる要素に順に付加されたインデックスの値に対して単調非減少の値となる移動閾値を計算する閾値計算ステップと、パタンの最初とされた要素と対象データの所定の要素と、検索空間のサンプリング係数とから変換関数の係数Tを計算する変換係数計算ステップと、変換係数Tを用いて、パタンの要素毎に、変換されたパタン要素と対応する対象データの要素を計算する対応要素計算ステップと、対応要素とのマッチングの度合いを配慮して、スコアと行列Bと行列Dを更新する対応関係効果計算ステップと、スコアが更新されたときのパタンの要素の移動閾値より、更新されたスコアが小さいか否かを判定する判定ステップと、更新されたスコアがパタンの要素の移動閾値以上であると判定された場合、更新係数ベクトルUおよび変換係数Tを更新する変換係数更新ステップとを含み、更新されたスコアが移動閾値より小さいと判定された場合、対象データの所定の要素を次の対象データ要素として、スコアを初期化して、パタンの最初の要素から上述の処理を続けるものとされている。本発明の一側面によれば、サンプリングの刻みをできるだけ大きくして、実行時間を短くしながら、解答を見つけることができる検索方法および検索装置、並びにプログラムを提供することができる。以下、本発明の一実施の形態の検索方法および検索装置について、図1~図5を参照しながら説明する。図1は、検索装置の機能の構成の例を示すブロック図である。検索装置は、プログラムを実行するコンピュータまたは専用の機器であり、移動閾値計算部11、変換係数計算部12、初期値設定部13、対応要素計算部14、対応関係効果計算部15、パラメータ/変換係数更新部16、およびポーズリスト生成部17を含む。移動閾値計算部11は、移動閾値を計算する。移動閾値については後述する。変換係数計算部12は、パタンの最初の要素パタンが持つ複数のベクトルの一つであるパタン要素0と対象データの要素と、検索空間サンプリングから変換係数Tを計算する。初期値設定部13は、行列Bや行列Dなどを初期化する。対応要素計算部14は、変換係数Tを使って変換されたパタンの要素と類似度の高い、対象データの要素を計算する。対応関係効果計算部15は、対応要素計算部14から対象データの対応要素が渡された場合、行列Bおよび行列Dを更新し、スコアを更新する。パラメータ/変換係数更新部16は、最小二乗法により更新係数ベクトルUを更新して、変換係数Tを更新する。パラメータ/変換係数更新部16は、判定部31を含む。判定部31は、スコアが更新されたときのパタンの要素の移動閾値より、更新されたスコアが小さいか否かを判定する。ポーズリスト生成部17は、変換係数Tとスコアとからなるポーズリストを生成する。図2は、検索の処理の例を説明するフローチャートである。このフローチャートを参照して、検索処理を説明する。ステップS11において、検索装置は、変換係数Tの入力変換係数リスト、パタン、対象データ、およびスコア閾値を入力する。ステップS12において、移動閾値計算部11は、パタンに含まれる要素に、検索順に付加されたインデックスであるパタン要素インデックスの値に対して単調非減少の値となる移動閾値を計算する。図3は、移動閾値を説明する図である。図3において、実線は移動閾値を示し、点線は移動閾値の上限を示す。なお点線は全てのパタン要素N個のパタン要素について検索された対象データがそのパタン要素との対応関係が完全な場合のスコアの推移を示すものとなっている。移動閾値は、パタン要素インデックスの値に対して単調非減少の値となるのが好ましい。例えば、概ね、0からパタン要素数Nの3分の1の範囲のパタン要素インデックスが小さい範囲すなわち最初の方で検索されるパタン要素については、移動閾値は単調増加し、パタン要素インデックスが中程度の範囲概ね、パタンの要素数Nの3分の1からパタンの要素数Nの3分の2の範囲で、移動閾値は一定の値となり、パタン要素インデックスが大きい範囲概ね、パタンの要素数Nの3分の2からパタンの要素数Nの範囲で、移動閾値は単調増加するようにしてもよい。また、例えば、パタン要素インデックスがパタンの要素数Nの半分以下の範囲で、移動閾値はパタン要素インデックスと同じ値とされ、パタン点インデックスがパタンの要素数Nの半分以上の範囲で、移動閾値は一定の値とするようにしてもよい。ステップS13とステップS30とは、ループ1の処理とされ、入力変換関数リストの変換係数Tを全て選択するまで、ステップS14~ステップS29の処理が繰り返される。ステップS14において、検索装置は、入力変換係数リストの変換係数Tを1つ選ぶ。ステップS15とステップS29とは、ループ2の処理とされ、対象データの全ての要素が選択されるまで、ステップS16~ステップS28の処理が繰り返される。ステップS16において、検索装置は、対象データの要素を1つ選ぶ。ステップS17において、変換係数計算部12は、パタンの最初の要素であるパタン要素0と選択された対象データの要素と選択された変換係数Tから、パタン要素0が選択された対象データの要素と類似度の高い要素に変換される様に、変換係数Tを計算する例えば、変換係数Tの中で移動量を表す移動量Vを計算してTに設定する。ステップS18とステップS27とは、ループ3の処理とされ、予め定められた最大ループ数まで、ステップS19~ステップS26の処理が繰り返される。なお、収束するまで、ステップS19~ステップS26の処理が繰り返されるようにしてもよい。ステップS19において、初期値設定部13は、行列Bおよび行列D式30を初期化し、スコアを0に初期化する。ステップS20とステップS25とは、ループ4の処理とされ、すべてのパタン要素に対して、ステップS21~ステップS24の処理が行われる。ステップS21において、対応要素計算部14は、現在選択されているパタン要素を、現在の変換係数Tを用いて、対象データ要素の空間に変換し、変換した要素と類似度の高い対象データ要素を計算する。ステップS22において、対応関係効果計算部15は、対応要素との類似度を配慮し、行列Bおよび行列Dを更新する。ステップS23において、対応関係効果計算部15は、対応要素との類似度を配慮し、スコアを更新するたとえば、値1を加算する。ステップS24において、判定部31は、スコアがパタン要素に対応する移動閾値より、スコアが小さいか否かを判定し、スコアが移動閾値より低ければ小さいと判定された場合、ループ4とループ3を中断して処理はステップS29に進む。ステップS26において、パラメータ/変換係数更新部16は、最小二乗法にて係数ベクトルUを更新して、変換係数Tを更新する。ステップS28において、計算されたスコアが入力スコア閾値以上の場合、ポーズリスト生成部17は、変換係数T、スコアを出力リストに追加する。ステップS31において、ポーズリスト生成部17は、ポーズのリストとして出力リストを返して、検索の処理は終了する。なお、ステップS23のスコアの更新は、足し算に限られるものではない。例えば、通常のパタン要素の場合、類似度の高い対応要素があれば、スコアを引き上げ、類似度の高い対応要素が無ければ、変更しないとする。また、例えば、マッチング機能において重要性の高いパタン要素の場合、類似度の高い対応点があれば、スコアを変更せず、類似度の高い対応点が無ければスコアを0とする。また、例えば他のパタンと識別するためのパタン要素であれば、類似度の高い対応要素があれば、スコアを引き下げて、類似度の高い対応要素が無ければ、変更しないようにしてもよい。以上のように、スコアがパタンの要素の移動閾値より、スコアが小さいか否かを判定したとえば、図2のS24の処理、スコアが移動閾値より小さいと判定された場合、ループ4とループ3を中断するようにしたので、処理を迅速に行うことができる。図4は、検索の処理の他の例を説明するフローチャートである。ステップS51において、検索装置は、変換係数Tの入力変換係数リスト、パタン、対象データ、およびスコア閾値を入力する。ステップS52において、移動閾値計算部11は、パタンに含まれる要素に順に付加されたインデックスであるパタン要素インデックスの値に対して単調非減少の値となる移動閾値を計算する。ステップS53とステップS71とは、ループ1の処理とされ、入力変換係数リストの変換係数Tを全て選択するまで、ステップS54~ステップS70の処理が繰り返される。ステップS54において、検索装置は、入力変換係数リストの変換係数Tを1つ選ぶ。ステップS55とステップS70とは、ループ2の処理とされ、対象データの全ての要素が選択されるまで、ステップS56~ステップS69の処理が繰り返される。ステップS56において、検索装置は、対象データの要素を選ぶ。ステップS57において、変換係数計算部12は、パタンの最初の要素であるパタン要素0と選択された対象データの要素と選択された変換係数Tから、パタン要素0が選択された対象データの要素と類似度の高い要素に変換される様に、変換係数Tを計算する例えば、変換係数Tの中で移動量を表す移動量Vを計算してTに設定する。ステップS58において、初期値設定部13は、行列Bおよび行列Dを初期化する。この場合、行列Bには、対角行列が設定されて初期化される。対角行列の要素は更新係数ベクトルUの要素の重みである。例えば、式1から式31を参照して上述したように3D対象データの中から3Dパタンを検索する場合は、式32に示されるように対角行列が設定される。式32において、wa,wb,wcは回転の重み、wx,wy,wzは移動量の重み、wsは、スケールについての重みであり、それらの値を調整することにより、たとえば、回転を制限することもできる。32更に、ステップS58において、初期値設定部13は、スコアを0に初期化し、パタン要素インデックスを示すパタン要素インデックス変数iを0に初期化し、整数である変数Nを0に初期化する。ステップS59とステップS68とは、ループ3の処理とされ、ステップS67でパタン要素インデックスiが変数Nより高い値となるまで、ステップS60~ステップS67の処理が繰り返される。ステップS60において、対応要素計算部14は、パタン要素インデックスiで選択されているパタン要素を、現在の変換係数Tを用いて、対象データ要素の空間に変換し、変換した要素と類似度の高い対象データ要素を計算する。ステップS61において、対応関係効果計算部15は、対応要素との類似度を配慮し、行列Bおよび行列Dを更新する。ステップS62において、対応関係効果計算部15は、対応要素との類似度を配慮し、スコアを更新するたとえば、値1を加算する。ステップS63において、判定部31は、スコアがパタン要素に対応する移動閾値より、スコアが小さいか否かを判定し、スコアが移動閾値より低ければ小さいと判定された場合、ループ3を中断して処理はステップS70に進む。ステップS64において、判定部31は、予め定められた微調整条件が満たされたか否かを判定する。例として、微調整条件は、最後の微調整から類似度の高い対応要素が見つかった事と、パタン要素インデックスiが変数Nに等しい事である。ステップS64において、微調整条件が満たされたと判定された場合、手続きはステップS65に進み、パラメータ/変換係数更新部16は、最小二乗法にて更新係数ベクトルUを更新して、変換係数Tを更新する。ステップS66において、パラメータ/変換係数更新部16は、行列B、行列D、変数Nを更新し、手続きはステップS67に進む。ここで、行列Bは、係数ベクトルUの係数の間の柔軟性を示し、行列Dは、誤差の小さくなる位置を示す。ステップS66における、行列Bおよび行列Dの更新方法は、例えば、行列Bおよび行列Dが先ず初期化され、そしてパタン要素0から微調整時のパタン要素インデックスiのパタン要素、現在の変換係数Tを用いて、パタン要素を対象データ空間に変換して、類似度の高い対象データ要素を計算して、その類似度を配慮して行列Bおよび行列Dが更新される。すなわち、更新された変換係数Tを用いて、行列Bと行列Dが正確に再計算される。なお詳細に、この再計算の処理に、対応要素計算のステップにおいて、対応要素を探索しても良いし、前回の微調整時に見つけた対象データの対応要素を使っても良い。また、行列Bおよび行列Dの再計算に、更新された変換係数Tの微分を計算して使用しても良いし、更新される前の変換係数Tの微分を使用しても良い。また、ステップ66における行列Bおよび行列Dの更新方法の例として、行列Bに、式32に示される様な対角行列を設定し、行列Dに、0を設定するようにしてもよい。すなわち、微調整までのマッチング情報を捨てて、初期化された状態に今後のマッチング情報を格納する。さらに、ステップ66における行列Bおよび行列Dの更新方法の例として、行列Bをそのままとし、行列Dに0を設定するようにしてもよい。すなわち、微調整までの誤差情報を捨てて、柔軟性の情報を今後のマッチングで使用するものである。さらにまた、ステップ66における行列Bおよび行列Dの更新方法の例として、行列Bをそのままとし、行列Dに、行列Bに更新係数ベクトルUを乗算して得られた積をそれまでの行列Dから引き算して得られた差を設定するようにしても良い。すなわち、微調整までの柔軟性の情報を保ち、誤差情報を更新された更新係数ベクトルUに合わせるものである。ステップS64において、微調整条件が満たされていないと判定された場合、ステップS65およびステップS66の手続きはスキップされて、手続きはステップS67に進む。ステップS67において、パラメータ/変換係数更新部16は、変数Nを更新する。具体的には、変数Nがパタン要素の数より小さい場合、1だけインクリメントされるように、変数Nが更新される。なお、例えば2または3だけインクリメントされるように、変数Nが更新されるようにしてもよい。またパラメータ/変換係数更新部16は、パタン要素インデックスiを更新する。より具体的には、微調整が行われた場合、パタン要素インデックスiが0とされ、他の場合、パタン要素インデックスiが1だけインクリメントされるように、パタン要素インデックスiが更新される。なお、パタン要素インデックスiのインクリメントは、例えば2または3だけインクリメントされるようにしてもよい。ステップS69において、ポーズリスト生成部17は、スコアが入力スコア閾値以上である場合、変換係数T、スコアを出力リストに追加する。ステップS72において、ポーズリスト生成部17は、ポーズのリストとして出力リストを返す。ループ1から抜けた場合、検索の処理は終了する。この様に、この例でループ3の最初のループでは、N=0、i=0、最初のパタン要素がマッチされる。ステップS64で微調整が行われたとする。するとステップS67で、N=1、i=0に更新が行われるので、次に、ループ3では、パタンの最初の二つの要素i0とi1がマッチされる。ステップS64で微調整が行われたとする。するとステップS68でN=2,i=0に更新が行われるので、次に、ループ3では、パタンの最初の三つの要素i02がマッチされる。すなわち、段々微調整に使われるパタン要素数を増やしながら微調整が続けられる。なお、ステップS58において、変数Nが、パタン要素数に初期化され、ステップS64における微調整条件を、パタン要素インデックスiがある整数kの倍数である事とし、ステップS67において、1だけインクリメントされるようにパタン要素インデックスiが更新されるようにし、ステップS67において変数Nを変更しない様にしてもよい。この場合、パタン要素を1つずつ処理して、パタン要素インデックスiがkの倍数になっている時のみに微調整が行われる。全てのパタン要素は1回だけ処理されるので処理速度は速い。なお、この場合、ステップS64における微調整条件を、パタン要素インデックスiがパタン作成時に決まった微調整パタン要素インデックスの1つとするようにしてもよい。例えば、形状を現すパタンの場合、パタンの曲率の高い部分では、低い部分より頻繁に微調整を行う必要があると考えられ、曲率をパタン作成時に計算して、曲率が高いパタン要素のパタン要素インデックスiを微調整インデックスリストに追加して、微調整条件を、パタン要素インデックスiが、微調整インデックスリストに含まれていることとする。さらに、ステップS59において、変数Nが、パタン要素数に初期化され、ステップS64における微調整条件を、最初の微調整から集めた対応する要素ペアの最小類似度または平均類似度が閾値を下回ることとし、ステップS67において変数Nを更新しない様にし、さらに、ステップ67において、1だけインクリメントされるようにパタン要素インデックスiが更新されるようにしてもよい。この場合、対応要素との類似度が低すぎると微調整を行い、必要な時だけに微調整を行うというアプローチである。なお、この場合、微調整を行ったとき、微調整時のパタン要素インデックスiを保存して、パタン要素インデックスiを0に更新し、パタン要素インデックスiが保存した値を超えるまで微調整を無効にするようにしてもよい。以上で説明した、微調整条件の具体例と更新処理とを組み合わせるようにしてもよい。また、パタン要素の順番を付ける方法には、例えば、未だ選択されていない要素の中からパタン要素0に最も類似度の高い要素をパタン要素iとするものがある。さらに、パタン要素の順番を付ける方法には、未だ選択されていない要素の中からパタン要素i-1に最も類似度の高い要素をパタン要素iとする方法もある。パタン要素の順番付けと移動閾値の採用により、仮に、パタン要素0に対応する要素が対象データに含まれていればパタンが検索される可能性は高い。しかし、パタン要素0に対応する要素が対象データに含まれていない場合、検索される可能性は低くなる。そこで、オーバーサンプリングの手法を採用する。すなわち、1つのパタンを複数のパタンとして扱う。但し、複数のパタンのそれぞれの最初の要素であるパタン要素0を異なる要素とする。これにより、隠蔽の影響により検索が失敗してしまう可能性が低くなる。オーバーサンプリングの手法における複数のパタン以下、オーバーサンプリングパタンと称するからのパタン要素0の決定は次のように行われる。すなわち、オーバーサンプリングパタンの数の削減を目指し、オーバーサンプリングパタンのパタン要素0を、対象データに含まれている可能性が高い要素にする。例えば、3D点から出来ているパタンの場合は、オーバーサンプリングパタンのパタン点0を、出来るだけ沢山の方向から見えるパタン点にすれば良い。また、パタンリンク法以下で説明するにて形の相似を利用し、出来るだけ他の部分に似ている部分の中心に近い点をパタン点0とするようにしてもよい。さらに、マッチングフェースで場所が違えばすぐにスコアが移動閾値を下回るように、出来るだけ特殊な形の部分の中心に近い点をパタン点0とするようにしてもよい。また、3Dパタンの場合は、計測器例えばカメラや距離センサーとワークの位置関係により、対象データに穴や隠蔽があることがある。これを配慮しないと、仮に綺麗な計測データがあっても、スコアが下がって、安定した検索が不可能になる。この場合、計測器とワークの位置関係依存のパタンを定義する。すなわち、パタンの中に沢山の視点パタンを設ける。より詳細には、計測器とワークの位置関係をサンプリングして隠蔽のない3Dパタンから見える部分を計算して視点パタンに保存する。また変換係数Tによって視点パタンが選択されるようにすることもできる。すなわち、変換係数Tと計測器位置Pから暫定の位置関係を計算し、その位置関係に最も近い位置関係の視点パタンを選択することができる。また、オーバーサンプリングパタンの導入により、パタンの数が増えて実行時間が長くなってしまうこともある。仮に、複数のパタンでパタン要素0の周りが似れば、それを1回だけマッチングすれば十分のはずである。仮に、視点パタン1のオーバーサンプリングパタン2の要素0~要素10が視点パタン3のオーバーサンプリングパタン4の要素0~要素10とほとんど同じだとする。視点パタン1のオーバーサンプリングパタン2から視点パタン3のオーバーサンプリングパタン4の間の変換Gが計算される。視点パタン3のオーバーサンプリングパタン4を祖サーチの中でパタン要素0から使わないようにする。祖サーチで視点パタン1のオーバーサンプリングパタン2でパタン要素10までマッチングされたポーズがあれば、そのポーズに計算した変換Gをかけて、祖サーチの中で視点パタン3のオーバーサンプリングパタン4でもマッチングを続けるようにする。すなわち、視点パタン1のオーバーサンプリングパタン2のパタン要素インデックス10に視点パタン3のオーバーサンプリングパタン4へのリンクが付けられ、そのリンクに対応付けて計算した変換Gが保存される。なお、以上においては、図2のステップS11または図4のステップS51で入力される変換係数リストについて言及しなかったが、その作成方法について説明する。例えば、検索空間が3次元空間の場合は、3D回転空間とスケールはサンプリングされる。移動量Vは0に初期化され、実際にマッチングの時に図2のステップS17または図4のステップS57パタン要素0の3D座標と対象データの対応する要素の3D座標から移動量Vが計算される。このように得られたパラメータにより変換係数リストが作成される。サンプリングの刻みを大きくすることができたので、リストの長さが短くなる。更に、実行時間を改良するためピラミッドの概念を導入する事が可能である。マルチレベルピラミッドとして、パタンの要素群と対象データの要素群をサブサンプリングして、ピラミッドを作成する。祖サーチは、ピラミッドのうち、圧縮率が高いレベルで実行される。精サーチは、各ポーズを圧縮率が高いレベルから段々に圧縮率が低いレベルまで検索される。ピラミッドレベルを変える時にポーズのフィルタリングを行う事ができる。例えば、ほとんど同じポーズがあればたとえば、変換係数の移動量等、間の角度をみて、あれが近いと判断したら消す、その中で一番スコアの高いポーズ以外のポーズを削除する。以上のように、サンプリングの刻みをできるだけ大きくして、実行時間を短くしながら、解答を見つけることができる。上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。図5は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。コンピュータにおいて、CPUCentralProcessingUnit101,ROMReadOnlyMemory102,RAMRandomAccessMemory103は、バス104により相互に接続されている。バス104には、さらに、入出力インタフェース105が接続されている。入出力インタフェース105には、キーボード、マウス、カメラなどよりなる入力部106、ディスプレイ、スピーカなどよりなる出力部107、ハードディスクや不揮発性のメモリなどよりなる記憶部108、ネットワークインタフェースなどよりなる通信部109、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア111を駆動するドライブ110が接続されている。以上のように構成されるコンピュータでは、CPU101が、例えば、記憶部108に記憶されているプログラムを、入出力インタフェース105及びバス104を介して、RAM103にロードして実行することにより、上述した一連の処理が行われる。コンピュータCPU101が実行するプログラムは、例えば、磁気ディスクフレキシブルディスクを含む、光ディスクCDROMDVD等、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア111に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。そして、プログラムは、リムーバブルメディア111をドライブ110に装着することにより、入出力インタフェース105を介して、記憶部108に記憶することで、コンピュータにインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部109で受信し、記憶部108に記憶することで、コンピュータにインストールすることができる。その他、プログラムは、ROM102や記憶部108にあらかじめ記憶しておくことで、コンピュータにあらかじめインストールしておくことができる。なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。また、式1~式31は3Dパタンを3D対象データから検索する場合使用出来る式だが、本発明は式1~式31の使用に限定されていない、また3Dパタンを3D対象データから検出する場合に限定されるものではない。変換係数とパタンの要素から出来ている空間から、対象データの要素の空間への変換関数がある場合、そして検索範囲が限られているなら、本発明にてパタンを対象データから検出する事が可能である。また、パタンを構成する要素群は、複数の種類の要素が使われる事が可能である。同じ様に、対象データを構成する要素群は、複数の種類の要素が使われる事が可能である。例えば、3Dパタンの場合、パタンが面を表すノーマルベクトル付の3次元点群と縁を表す3D点群で構成されている場合、それらの要素の種類に基づいて、対応要素検索や対応関係効果計算が行われる。"