"複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なる所定のシンボルを割り当てることで得られた二次元シンボル列を含む投影パターン画像を被写体に投影し、前記投影パターン画像が投影された被写体を撮像することにより得られた撮像画像を用いて前記被写体の三次元計測を行う画像情報処理装置であって、前記撮像画像から前記シンボル列を抽出して撮像パターンを取得する取得手段と、前記取得手段で取得された前記撮像パターンの各シンボルを、対応する符号に変換して撮像符号列を取得する変換手段と、所定数の符号の二次元位置とそれらの順序が規定された複数種類のサンプリング形状から選択された一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する生成手段と、前記情報符号列と選択された前記一つのサンプリング形状とに基づいて前記情報符号列と前記投影符号列の部分とを対応付けることで前記撮像パターンの座標と前記投影パターン画像の座標を対応付けて三次元計測を行う計測手段とを備え、前記生成手段は、前記一つのサンプリング形状を用いて前記撮像符号列から所定数の符号を取得できなかった場合には、別のサンプリング形状を選択して前記情報符号列を生成することを特徴とする画像情報処理装置。一つのサンプリング形状から得られる全ての情報符号列が前記投影パターン画像において唯一つしか存在しないように前記複数のサンプリング形状と前記投影符号列が構成されていることを特徴とする請求項1に記載の画像情報処理装置。前記複数のサンプリング形状のそれぞれは、予め定められたサイズの部分符号列から前記所定数の情報符号列を選択するものであり、前記部分符号列における前記所定数の情報符号列以外の冗長符号を用いて前記情報符号列の誤りを検出する検出手段を更に備えることを特徴とする請求項1または2に記載の画像情報処理装置。前記複数のサンプリング形状のそれぞれは、横方向にm個、縦方向にn1個の点を有する部分符号列において、横方向から選択された1列と縦方向から選択された1列に含まれるmn個の符号の位置とその順序を規定していることを特徴とする請求項1に記載の画像情報処理装置。前記部分符号列における、前記情報符号列の生成に用いられる前記mn個の符号以外の符号に対応する符号を冗長符号として用いて前記情報符号列の誤りを検出、訂正する検出手段を更に備えることを特徴とする請求項4に記載の画像情報処理装置。前記投影符号列は、縦横の2つの方向に対して1つずつの、3値以上の符号によるdeBruijn系列に基づいて生成されていることを特徴とする請求項3乃至5のいずれか1項に記載の画像情報処理装置。前記部分符号列の縦横の大きさが、前記投影符号列に用いられた縦横のdeBruijn系列における部分系列長と等しいことを特徴とする請求項6に記載の画像情報処理装置。前記投影符号は、縦横の2つの方向に対して1つずつの、2値符号によるM系列に基づいて生成されていることを特徴とする請求項4または5に記載の画像情報処理装置。前記部分符号列の縦横の大きさが、前記投影符号列に用いられた縦横のM系列における部分系列長と等しいことを特徴とする請求項8に記載の画像情報処理装置。複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号ごとに種類ごとに異なる所定のシンボルを割り当てることで得られた二次元のシンボル列を含む投影パターン画像を被写体に投影し、前記投影パターン画像が投影された被写体を撮像することにより得られた撮像画像を用いて前記被写体の三次元計測を行う画像情報処理装置の制御方法であって、取得手段が、前記撮像画像から前記シンボル列を抽出して撮像パターンを取得する取得工程と、変換手段が、前記取得工程で取得した前記撮像パターンの各シンボルを、対応する符号に変換して撮像符号列を取得する変換工程と、生成手段が、所定数の点の位置とそれらの順序が規定された複数種類のサンプリング形状から選択された一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する生成工程と、計測手段が、前記情報符号列と選択された前記一つのサンプリング形状とに基づいて前記情報符号列と前記投影符号列の部分とを対応付けることで前記撮像パターンの座標と前記投影パターン画像の座標を対応付けて三次元計測を行う計測工程とを備え、前記生成工程では、前記一つのサンプリング形状を用いて前記撮像符号列から所定数の符号を取得できなかった場合には、別のサンプリング形状を選択して前記情報符号列を生成することを特徴とする画像情報処理装置の制御方法。複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なる所定のシンボルを割り当てることで得られたシンボル列を含む投影パターン画像を被写体に投影し、前記投影パターン画像が投影された被写体を撮像することにより得られた撮像画像を用いて前記被写体の三次元計測を行う画像情報処理装置であって、前記撮像画像から前記シンボル列を抽出して撮像パターンを取得する取得手段と、前記取得手段で取得された前記撮像パターンの各シンボルを、対応する符号に変換して撮像符号列を取得する変換手段と、所定数の符号の二次元位置とそれらの順序が規定されたサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する生成手段とを有することを特徴とする画像情報処理装置。複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なる所定のシンボルを割り当てることで得られたシンボル列を含む投影パターン画像を被写体に投影し、前記投影パターン画像が投影された被写体を撮像することにより得られた撮像画像を用いて前記被写体の三次元計測を行う画像情報処理装置の制御方法であって、取得手段が、前記撮像画像から前記シンボル列を抽出して撮像パターンを取得する取得工程と、変換手段が、前記取得手段で取得された前記撮像パターンの各シンボルを、対応する符号に変換して撮像符号列を取得する変換工程と、生成手段が、所定数の符号の二次元位置とそれらの順序が規定されたサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する生成工程とを有することを特徴とする画像情報処理装置の制御方法。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置であって、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成手段と、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得手段と、所定数の符号の二次元位置が規定された複数種類のサンプリング形状から、一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、情報符号列を生成する符号サンプリング手段と、前記投影符号列と、前記情報符号列と、選択した前記サンプリング形状から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算手段と、を備えることを特徴とする画像情報処理装置。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置であって、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成手段と、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得手段と、所定数の符号の二次元位置が規定されたサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、情報符号列と冗長符号を生成する符号サンプリング手段と、前記冗長符号を用いて前記情報符号列の誤りを検出、もしくは訂正する符号誤り検出訂正手段と、前記投影符号列と、前記情報符号列から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算手段と、を備えることを特徴とする画像情報処理装置。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置であって、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成手段と、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得手段と、所定数の符号の二次元位置が規定された複数種類のサンプリング形状から、一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、情報符号列と冗長符号を生成する符号サンプリング手段と、前記冗長符号を用いて前記情報符号列の誤りを検出、もしくは訂正する符号誤り検出訂正手段と、前記投影符号列と、前記情報符号列と、選択した前記サンプリング形状から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算手段と、を備えることを特徴とする画像情報処理装置。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置の制御方法であって、パターン生成手段が、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成工程と、情報取得手段が、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得工程と、符号サンプリング手段が、所定数の符号の二次元位置とそれらの順序が規定された複数種類のサンプリング形状から、一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する符号サンプリング工程と、対応計算手段が、前記投影符号列と、前記情報符号列と、選択した前記サンプリング形状から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算工程と、を有することを特徴とする画像情報処理装置の制御方法。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置の制御方法であって、パターン生成手段が、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成工程と、情報取得手段が、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得工程と、符号サンプリング手段が、所定数の符号の二次元位置とそれらの順序が規定されたサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列と冗長符号を生成する符号サンプリング工程と、符号誤り訂正手段が、前記冗長符号を用いて前記情報符号列の誤りを検出、もしくは訂正する符号誤り検出訂正工程と、対応計算手段が、前記投影符号列と、前記情報符号列から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算工程と、を有することを特徴とする画像情報処理装置の制御方法。被写体に投影パターン画像を投影し、その撮像画像から投影パターン画像の投影位置を同定する画像情報処理装置の制御方法であって、パターン生成手段が、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なるシンボルを割り当てることで得られた二次元シンボル列を含む前記投影パターン画像を生成するパターン生成工程と、情報取得手段が、前記撮像画像内の撮像パターンから、各シンボルを対応する符号に変換して撮像符号列を出力する情報取得工程と、符号サンプリング手段が、所定数の符号の二次元位置とそれらの順序が規定された複数種類のサンプリング形状から、一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列と冗長符号を生成する符号サンプリング工程と、符号誤り検出訂正手段が、前記冗長符号を用いて前記情報符号列の誤りを検出、もしくは訂正する符号誤り検出訂正工程と、対応計算手段が、前記投影符号列と、前記情報符号列と、選択した前記サンプリング形状から、前記投影パターン画像の座標と前記撮像パターンの座標を対応付ける計算を行い、対応付け結果を得る対応計算工程と、を有することを特徴とする画像情報処理装置の制御方法。請求項1乃至9、11および13乃至15のいずれか1項に記載の画像情報処理装置の各手段としてコンピュータを機能させるためのプログラム。しかし上記従来技術例では、被写体の形状によっては、撮像符号列から十分な大きさの部分符号列を抜き出せない撮像画像の領域では対応付けが不能となるため、三次元形状計測が行えないという課題がある。また、誤って撮像点列から本来は隣り合わない点列から部分符号列を抜き出した場合や、撮像点列の色がノイズや被写体表面のテクスチャなどの影響で誤った色として識別された場合には、誤った二次元位置に対応付けされてしまい、不正確な三次元計測結果が出力されるという課題がある。対応付けに用いる部分符号列をより長くすることでこのような対応付けの誤りの検出を行うことは出来るものの、一方で被写体の形状によっては、撮像符号列から部分符号列を抜き出せない領域がより増加するという課題が生じる。本発明は上記課題に鑑みてなされたものであり、その目的は、誤った対応付けを低減すると同時に、より様々な被写体の形状に対しても三次元計測を可能とする、よりロバストな三次元計測方法を提供することである。上記の目的を達成するための本発明の一態様による画像情報処理装置は以下の構成を備える。すなわち、複数種類の符号が二次元に並ぶ投影符号列の各符号に、符号の種類ごとに異なる所定のシンボルを割り当てることで得られた二次元シンボル列を含む投影パターン画像を被写体に投影し、前記投影パターン画像が投影された被写体を撮像することにより得られた撮像画像を用いて前記被写体の三次元計測を行う画像情報処理装置であって、前記撮像画像から前記シンボル列を抽出して撮像パターンを取得する取得手段と、前記取得手段で取得された前記撮像パターンの各シンボルを、対応する符号に変換して撮像符号列を取得する変換手段と、所定数の符号の二次元位置とそれらの順序が規定された複数種類のサンプリング形状から選択された一つのサンプリング形状にしたがって前記撮像符号列から前記所定数の符号を取得し、取得した符号を前記順序に従って並べて情報符号列を生成する生成手段と、前記情報符号列と選択された前記一つのサンプリング形状とに基づいて前記情報符号列と前記投影符号列の部分とを対応付けることで前記撮像パターンの座標と前記投影パターン画像の座標を対応付けて三次元計測を行う計測手段とを備え、前記生成手段は、前記一つのサンプリング形状を用いて前記撮像符号列から所定数の符号を取得できなかった場合には、別のサンプリング形状を選択して前記情報符号列を生成する。本発明によれば、誤った対応付けが低減されるとともに、より様々な被写体の形状に対しても三次元計測を可能とする、よりロバストな三次元計測方法が提供される。以下、添付の図面を参照して本発明の好適な実施形態の一例を説明する。<第1実施形態>図1に、本実施形態における画像情報処理装置の全体の構成を示す。プロジェクタ101は、計測対象となる被写体102に対して、図2に示すような赤、緑、青のいずれかの色で着色された点列からなる投影パターン画像を投影する、パターン投影部として作用する。パターン生成部103は、上述したプロジェクタ101で投影するための投影パターン画像二次元シンボル列を含む投影パターンの画像として、図3に示す1,2,3の符号からなる投影符号列を赤、緑、青の各色の点列に置き換える円形のシンボルとして割り当てた画像を生成するパターン投影装置として作用する。カメラ104は、投影パターン画像が投影された状態の被写体102を撮像する撮像部として作用する。ここで、カメラ104の位置姿勢は、カメラ104上の画像座標系におけるx軸と、プロジェクタ101、カメラ104の2つの主点位置がなす直線とが平行になるよう調整されている。パターン抽出部105は、カメラ104で得られた撮像画像内から、被写体102上で投影パターン画像に照射されたシンボルの部分である撮像点列のみを抽出する処理を行う。情報取得部106は、パターン抽出部105で抽出された撮像点列の各点を、各色に対応した符号に変換し、撮像符号列として取得する。この撮像符号列は、符号サンプリング部107は、情報取得部で得られた撮像符号列から、予め決められた複数種類のサンプリング形状図9、図10により後述のうちの一つを選択して所定数の符号のサンプリングを行う。このサンプリングにより、対応付けの計算に用いるための情報符号列と符号誤り検出訂正に用いるための冗長符号を取得する。符号誤り検出訂正部108は、符号サンプリング部107で得られた情報符号列と冗長符号とを合わせて符号の照合を行い、情報符号列、冗長符号の符号誤りの検出と、可能であれば符号誤りの訂正を行い、照合済情報符号列を出力する。対応計算部109は、符号誤り検出訂正部108で得られた照合済情報符号列と、パターン生成部103で使用した投影符号列と、符号サンプリング部107でサンプリングを行ったサンプリング形状から、投影パターン画像と撮像符号列の対応付けを行う。三次元形状取得部110は、対応付けが行われた撮像点列を用いて、三角測量の原理でカメラ104と、投影パターン画像が投影された被写体102との間の奥行き、すなわち形状を計算する。図4に本実施形態による画像情報処理装置の制御を説明するフローチャートを示す。以下、フローチャートのステップ番号に従って、本実施形態による画像情報処理装置の動作説明を行う。ステップS401:パターン生成部103が、投影パターン画像を生成する。ここで生成される投影パターン画像は図2に示すように、符号に応じて赤、緑、青の3色に着色され、縦横に規則的に配置された点列で構成されている。この赤、緑、青の点列は、投影符号列を表現するシンボル列として作用し、それらの並ぶ順序は、図3に示す投影符号列を用いて決められている。本実施形態では、投影符号列の1を赤、2を緑、3を青としてそれぞれ投影パターン画像内のシンボルに割り当てている。図3に示すように、投影符号列はuvの各方向の縦横二次元の数列で構成されており、以下に述べる規則を用いて符号化されている。最初に、u方向、v方向で1つずつ、すなわち、横方向と縦方向の計2方向で2つのdeBruijn系列を選択する。deBruijn系列は、使える単位符号の種類がk個の場合、系列長klからなる系列で、lの部分系列長を有する連続した部分系列が、全符号列中に一つしか存在しない性質を有する。たとえば、投影パターン画像として使用できるシンボルの数をk、後述するサンプリング形状を囲む矩形の大きさをuv順でm×横方向にm個、縦方向にn1個のサイズとする。この場合、u方向のdeBruijn系列はkmのものを、v方向はknのものをそれぞれ選択する。本実施形態では、3つの色をシンボルとして使用するため、k3である。また、後述するサンプリング形状は、全て大きさ3×3の矩形で囲まれるため、m3、n2となる。本実施形態のu方向で用いるk3,m3系列長3327のdeBruijn系列は、以下に示す数列となる。33132131123122121113323222333...1同様に、本実施形態のv方向で用いるk3,n2のdeBruijn系列を以下に示す。3311322123...2なお、本実施例で使用している1、2のdeBruijn系列は巡回を考慮していないため、本来の系列長よりもそれぞれmk1、nk1だけ長い配列となる。パターンに繰り返しを持つ場合については後述する。次に、上記2つのdeBruijn系列を用いた投影符号列の生成方法について述べる。最初にu方向1行目として、u方向のdeBruijn系列をそのまま投影符号列として使用する。u方向2行目以降は、1つ前の行の符号列の各値に対して、v方向のdeBruijn系列の値を加算した結果を符号列とする。ここで、加算結果は1~kで表されるk進数で表し、繰り上がりは無視する。例えば、図2の1行目の符号列最下行の符号列の各値には、2に示される系列の1番目の数値3が加算される。この場合、13=1、23=2、33=3という演算が行なわれるので、1行目の符号列と2行目の符号列は等しくなる。また、4行目の符号列は、3行目の符号列に2の系列の3番目の値1が加算される。11=2、21=3、31=1となるので、図3の3行目の符号列の各値に1が加算されると4行目のような符号列が得られることになる。以上のように、全てのv方向のdeBruijn系列を1行ずつ加算して符号列を求めていくことで、図3に示すようなuv各方向二次元の投影符号列を生成することが出来る。以上の方法で生成した投影符号列は、投影符号列内のm×nの所定のサイズを持つ任意の位置にある矩形で囲まれる部分符号列の領域内で、所定のある行とある列を固定した順序でサンプリングしたmnの長さの符号列は、投影符号列の中で唯一つしか存在しない性質を有する。この性質は、後述するステップS408におけるサンプリング形状の決定と、ステップS410における符号誤りの検出訂正に使用される。以上の性質を持つ投影符号列が、上記のように3色の点でシンボル化して埋め込まれた投影パターン画像を生成することで、以下のステップの処理を可能にする。ステップS402:プロジェクタ101が、被写体102に対して、ステップS401で生成された投影パターン画像の投影を行う。ステップS403:カメラ104が、投影パターン画像の投影が行われた被写体102を撮像し、図5aに示す撮像画像501を生成する。ステップS404:パターン抽出部105が、取得手段として機能し、ステップS403で生成された撮像画像501内から、図5bに示すように被写体102上に照射された投影パターン画像に相当する撮像パターンである、撮像点列502を抽出する。本処理では、赤、緑、青の各色で一定以上の輝度の領域をそれぞれシンボルとして抽出することで撮像点列502を抽出する。なお、抽出した全ての色情報は保持しておく。また、単一の色を持つ1つの連続領域を単位撮像点として扱い、撮像点の重心ごとにカメラ座標系xy上の二次元位置を保持しておく。ステップS405:情報取得部106が、ステップS404で抽出した撮像点列502に付加されている撮像符号列を取得する。ここでは、ステップS401において各色の点をシンボルとして割り当てた符号を、逆に数値へ復号すればよい。つまり、赤は1、緑は2、青は3として撮像符号列を取得する。撮像符号列を構成する単位撮像符号は、復元された符号の値と、対応する撮像点のxy座標上の二次元位置を保持する。図6に、復号された撮像符号列601を示す。次に、各撮像符号同士の上下左右に存在する、隣接符号との隣接関係を復元する。図7に撮像符号列を一部拡大した様子を示す。例として、図7における注目撮像符号701における隣接関係の復元を説明する。カメラ104の位置姿勢は、カメラ104上の画像座標系におけるx軸と、プロジェクタ101、カメラ104の2つの主点位置がなす直線とが平行になるよう調整されているため、撮像点列は全てx軸に対して平行に撮像されている。ゆえに、撮像符号列同士のx方向の接続関係は容易に復元できる。最初に注目撮像符号701のx方向左右に存在する最近傍の符号を隣接する符号として探索する。次に、y方向上下の隣接関係を探索する。この時、y方向はy軸に対して平行ではなく、x方向にオフセットを持った状態で隣接符号が存在する可能性があるため、x方向に探索範囲702を設けて、この範囲内で隣接符号を探索する。上記の手順により、各撮像符号同士の上下左右の隣接関係を復元し、結果を各撮像符号単位で保持しておく。ステップS406:符号サンプリング部107が、情報取得部106で得られた撮像符号列を走査し、後述する情報符号列を得るための、符号をサンプリングする最初の点となる原点を設定する。走査は、同じ原点が重複して設定されないように行われ、全ての撮像符号列が原点として設定されるまで走査が行われたら、走査終了とする。ステップS407:ステップS406における結果が、走査終了かどうかを判定する。走査終了であれば、本処理を終了する。そうでない場合は、ステップS408に進む。ステップS408:符号サンプリング部107が、予め決められた複数種類のサンプリング形状から一つを選択する。そして、符号サンプリング部107は、情報取得部106で得られた撮像符号列のステップS406で設定された原点に対応した位置から、選択したサンプリング形状にしたがって符号のサンプリングを行う。そして、情報符号列と、冗長符号を一組取得する。図8に、ステップS408における情報符号列と冗長符号の取得方法を説明するフローチャートを示す。以下、図8のフローチャートのステップ番号に従って、ステップS408の動作を詳細に説明する。ステップS801:符号サンプリング部107は、符号サンプリングに使用するサンプリング形状を示す、サンプリング形状番号Pを1に初期化する。本サンプリング形状は、抽出するべき所定数の点の位置と、それらの情報符号列における順序を規定したものである。たとえば、本実施形態におけるサンプリング形状は、撮像符号列中の3×3の部分点列を含む矩形内で、任意の行と任意の列を決まった順序でサンプリングする場合の、全ての組み合わせ形状を予め用意し、番号Pを割り当てておく。図9の1~9に、本実施形態における全てのサンプリング形状を示す。丸印が各符号、点線が撮像符号列中の3×3の部分点列を含む矩形を示している。符号内の数字はサンプリングする順序情報符号列における順序を示しており、注目している符号のサンプリング順序を1として、番号順にサンプリングを行う。また、上記部分点列における所定数の点以外の点上記mn個の符号以外の点に対応する符号は冗長符号として情報符号列の誤りを検出するために用いられる。たとえば、本実施形態においては、サンプリングする順序の1~5が対応付けに用いる長さがmn=5の長さの情報符号列、それ以外の、すなわち情報符号列以外の6~9が符号誤り検出訂正に用いる冗長符号を示している。情報符号列は、図10の1~9に示すように、各サンプリング形状で異なる組み合わせの撮像符号列からサンプリングするよう定められている。たとえば、複数のサンプリング形状は、横方向にm個、縦方向にn1個の点を有する部分符号列において図10の場合、m=3、n=2、横方向から選択された1列と縦方向から選択された1列に含まれるmn個の符号の位置とその順序が規定されている。ステップS802:符号サンプリング部107は、サンプリングする符号列の順序を示す、サンプリング順序Nを1に初期化する。ステップS803:符号サンプリング部107は、サンプリング形状番号Pが、最大の番号Pmaxを超えていないかどうかをチェックする。本実施形態においては、図9で示したようにPmax9である。ステップS803においてPがPmaxを超えていると判定された場合は、全てのサンプリング形状で情報符号列を取得できなかったことを意味するため、ステップS406の処理を失敗として終了する。超えていなければ処理を続行する。ステップS804:符号サンプリング部107は、現在のサンプリング形状番号Pにおける、サンプリング順序Nに当たる符号のサンプリングを行い、情報符号列を1つ取得する。取得に成功した場合はステップS806に進む。撮像符号列内で、隣接する符号が存在せず、サンプリング順序Nの位置での撮像符号列の取得に失敗した場合はステップS805に進む。ステップS805:サンプリング形状番号Pに1を加えて、ステップS803に戻る。ステップS806:符号サンプリング部107は、サンプリング順序Nが、情報符号列の長さ5に達しているかどうかをチェックする。達していなければ、ステップS807に進む。達していればステップS808に進む。ステップS807:サンプリング順序Nに1を加えて、ステップS804に戻る。ステップS808:符号サンプリング部107は、現在のサンプリング形状番号Pにおける、サンプリング順序Nに当たる符号のサンプリングを行い、冗長符号を1つ取得する。取得に成功した場合はステップS809に進む。撮像符号列内で、サンプリング順序Nの位置に取得できる符号が存在せず、取得に失敗した場合は符号サンプリング成功として処理を終了する。ステップS809:符号サンプリング部107は、サンプリング順序Nが、情報符号列と冗長符号を合わせた最大長さの9に達しているかどうかをチェックする。達していなければ、ステップS810に進む。達していれば成功として処理を終了する。ステップS810:サンプリング順序Nに1を加えて、ステップS808に戻る。以上の手順で処理を行うことにより、ステップS408において、情報取得部106で得られた撮像符号列からサンプリングが行われ、情報符号列と冗長符号以下で、これらを合わせてサンプリング符号列と呼ぶが取得される。ステップS408の符号サンプリングの処理を終えると、処理はステップS409へ進む。ステップS409:符号誤り検出訂正部108は、ステップS408における符号サンプリング処理の成否を判定する。処理結果が失敗であれば、ステップS406に戻る。処理結果が成功であればステップS410に進む。ステップS410:符号誤り検出訂正部108が、サンプリング符号列を用いて符号の照合を行い、サンプリング符号列における符号誤りを検出する。さらに、符号誤りが訂正可能であれば、符号の訂正を行う。図11に、ステップS410における符号誤りの検出訂正の方法を説明するフローチャートを示す。以下、図11のフローチャートのステップ番号に従って、ステップS410の動作説明を行う。ステップS1101:符号誤り検出訂正部108は、サンプリング符号列から、符号照合結果を示すハッシュ値を計算する。図12のa~cに、サンプリング符号列の例を示す。図12のa~cは、いずれも同一の情報符号列1201を有し、冗長符号の数のみが異なっている。情報符号列と冗長符号の上下左右の隣接関係は、いずれも撮像符号列の隣接関係に準じており、投影符号列における座標軸のuを行方向、vを列方向とする。ハッシュ値として、これらの情報符号列と冗長符号の行方向に対して、右列から左へ順に差分計算を行う。本実施形態では列の数がn1=3のため、各行2つの差分値をハッシュ値として計算する。なお、差分計算の結果は全てk進数で行う。本実施形態においてはk3となるため、ハッシュ値は0、1、2のいずれかの値となる。また、サンプリング符号列が存在しない位置ではハッシュ値の計算を行わず、空白とする。図12のa~cにおける情報符号列と冗長符号のハッシュ値を図13のa~cに示す。符号誤り検出訂正の処理においては、計算された全ての列が揃った1行のハッシュ値を、1つの符号照合結果として扱う。ステップS1102:符号誤り検出訂正部108は、ステップS1101において計算できたハッシュ値が1行よりも多く存在するかどうかを判定する。1行の場合は、情報符号列で生成される行でしかハッシュ値をもたず、符号誤りの検出は不能なため、ステップS410を成功として終了する。1行よりも多く存在する場合にはステップS1103に進む。図13のaに示す例では、ハッシュ値が1行しか存在しないため、本ステップを成功として終了する。図13のbcに示す例では、ハッシュ値がそれぞれ2行、3行と、いずれも1行よりも多く存在するため、ステップS1103に進む。ステップS1103:符号誤り検出訂正部108は、ハッシュ値が列方向で全て一致するかどうかを判定する。列方向で相互の値が同一の場合は、投影符号列の生成時に、列単位で同一の値を加算した結果に対して矛盾せず、計算されたハッシュ値の範囲では符号誤りが検出されなかったことを意味する。よって、計算を成功として終了する。他方、列方向で相互の値が一つでも異なる場合、上述の計算結果に矛盾が生じるため、符号誤りが存在すると判定して、処理はステップS1104に進む。図13のbcに示す例では、いずれも右の列方向で値が異なるため、いずれも符号誤りが存在すると判定されて、処理はステップS1104に進む。ステップS1104:符号誤り検出訂正部108は、ステップS1101において計算したハッシュ値が、3行全て存在するかどうかを判定する。3行よりも少ない場合は、符号誤りの訂正は出来ないため、ステップS410を失敗として終了する。3行全て存在する場合にはステップS1105に進む。図13のbに示す例では、一番下の行のハッシュ値が揃っていないため、本ステップS401を失敗として終了する。図13cに示す例では、3行全てハッシュ値が揃っているため、ステップS1105に進む。ステップS1105:符号誤り検出訂正部108は、対象となるサンプリング符号列に対して、符号誤り訂正が可能であるかどうかを判定する。最初に、3行のハッシュ値のうち、列方向の値が同一でない行を検出する。全ての行で異なるハッシュ値が存在する場合は符号誤りが訂正できないため、ステップS410を失敗として終了する。3行のハッシュ値のうち、1行のハッシュ値のみが異なる場合、当該行に訂正可能な符号誤りが存在すると判定してステップS1106に進む。図13のcに示す例では、一番上の行1301における右列の値のみが異なっているため、この行に訂正可能な符号誤りが存在すると判定し、ステップS1106に進む。ステップS1106:符号誤り検出訂正部108は、ステップS1105で訂正可能な符号誤りが存在すると判定したサンプリング符号列の行に対して、他の行のハッシュ値を利用して符号誤りの訂正を行う。符号誤り検出訂正部108は、最初に符号誤りが存在すると判定した行で、ハッシュ値が他の行と異なる列を調べる。ハッシュ値の左列のみが異なる場合は、サンプリング符号列における当該行の左側の符号値に誤りが存在するとして、これが訂正される。誤り訂正は、サンプリング符号列における当該行の中央列の符号値から、当該行以外の左列ハッシュ値の差を取った値を、誤り値と置き換えればよい。この差分計算も繰り下げが存在しないk進数、本実施形態では答えが1、2、3のみとなる3進数で行う。ハッシュ値の右列のみが異なる場合には、サンプリング符号列における当該行の右側の符号値に誤りが存在するとして、同様に訂正する。誤り訂正は、サンプリング符号列における当該行の中央列の符号値と、当該行以外の右列ハッシュ値の3進数での和の値を、誤り値と置き換えればよい。ハッシュ値の左右の列双方ともに異なる場合には、サンプリング符号列における当該行の中央列の符号値に誤りが存在するとして、同様に訂正する。誤り訂正は、サンプリング符号列における当該行の右列の符号値から、当該行以外の右列ハッシュ値の3進数での差を取った値を、誤り値と置き換えればよい。図13のcに示す例では、行1301のハッシュ値の右列のみが異なるため、サンプリング符号列における当該行右列の符号値である3に誤りが存在するとして訂正する。誤り訂正の計算では、図12のcにおけるサンプリング符号列の当該行中央列の符号値である2と、行1301以外の右列ハッシュ値である0との和である訂正値2を誤り値3と置き換える。このように符号誤り訂正を行うことで、誤り訂正前の情報符号列が図12のcに示す12321であったのに対して、dに示すように、訂正値1202によって12221へと訂正されることが分かる。以上の計算の後、本ステップS410を成功として終了する。上記のステップS1101~S1106を実行することで、サンプリング符号列における符号誤りが検出される。さらに、符号誤りが訂正可能であれば、符号の訂正が行われる。なお、本ステップS410において処理に成功した情報符号列を、以下で照合済情報符号列とする。処理は、図4のステップS411に進む。ステップS411:符号誤り検出訂正部108が、ステップS410における符号誤り検出訂正の処理結果を判定する。処理が成功であれば、処理はステップS412に進む。処理が失敗であれば、ステップS406に戻り、処理対象を次の符号サンプリング位置へ移動する。ステップS412:対応計算部109が、投影パターン画像と、撮像符号列を構成する照合済情報符号列の対応付けを行う。図14に、ステップS412における投影パターン画像と撮像符号列の対応付け方法を説明するフローチャートを示す。以下で、図14のフローチャートのステップ番号に従って、ステップS412の動作を詳細に説明する。ステップS1401:対応計算部109は、ステップS408において情報符号列をサンプリングした際に用いた、サンプリング形状番号Pに等しい番号の投影符号列テーブルを選択する。図15に本実施形態で使用する投影符号列テーブルの例を示す。投影符号列テーブルは、投影符号列を各u,vの二次元位置でサンプリング形状番号Pを用いてサンプリングした場合の情報符号列の値を格納したものであり、使用するサンプリング形状の数本例では9個だけ用意される。このような投影符号列テーブルを使用することで、煩雑な計算を行うことなく、簡易に投影符号列と照合済情報符号列の対応付け計算が行える。ステップS1402:対応計算部109は、ステップS1401にて選択した投影符号列テーブルをu,v方向二次元で走査し、照合済情報符号列と一致するテーブル値を探索する。一致するテーブル値があれば、そのu,v位置を記録する。ステップS1403:対応計算部109は、ステップS1402の探索において、照合済情報符号列と一致するテーブル値が存在したかどうかを判定する。テーブル値が存在した場合には、ステップS1404に進む。テーブル値が存在しなかった場合には対応付けが行えないため、対応付け失敗と判定し、ステップS412を終了する。ステップS1404:対応計算部109は、ステップS1403の探索において、照合済情報符号列と一致したテーブル値のu,v位置を含む照合済情報符号列を、対応済撮像符号列として出力し、対応付け成功と判定してステップS412を終了する。以上の手順で処理を行うことにより、対応計算部109は、投影パターン画像と、撮像符号列を構成する照合済情報符号列の対応付けを行う。そして、処理はステップS413へ進む。ステップS413:対応計算部109が、ステップS412における対応付け計算の処理結果を判定する。処理が成功であれば、ステップS414に進む。処理が失敗であれば、ステップS406に戻る。ステップS414:三次元形状取得部110が、ステップS412で得られた対応済撮像符号列を用いて、被写体102の三次元形状を計測する。図16に、カメラの主点位置1601を原点Oとするカメラ座標系1602を用いて、撮像点列中における対応済撮像符号列に相当する計測点1603の投影位置を同定する場合の模式図を示す。プロジェクタ101で投影される投影パターン画像内において、同一のu座標値を持つ点列は、v方向で単一の直線1604上に並ぶよう配置されている。このとき計測点1603は、直線1604が空間内になす切断平面1605と被写体102との交線上に存在する一点となる。ここで、投影計測線パターンがなす切断平面1605は、カメラ座標系を用いて以下の式3で予め較正されているものとする。また、計測点1603は、図1におけるカメラ104による撮像画像1606上の投影点1607の位置Pを用いて、以下の式4で表される直線1608上に存在する。なお、撮像画像1606には簡単のため、計測点1603以外の撮像点列は省略している。また、図16における撮像画像1606は、図1におけるカメラ104をピンホールカメラと仮定したときの、撮像素子上における投影像と等しい実寸法としている。さらに、撮像画像1606はカメラ座標のxy平面に対して平行で、画像中心が原点位置からz軸方向に焦点距離のfだけ離れた位置に配置されているものとする。tは任意の実数をとるパラメータである。式3で示した切断平面1605と、式4で示した直線1608の交点が計測点1603となるため、計測点1603の位置Cはカメラ座標系において以下の式5で表される。以上の計算を全ての対応済撮像符号列に対して適用すれば、計測点1603の集合により被写体102全体の形状が求められる。以上の手順を実施することにより、従来手法では誤った対応付け結果となりやすかった、表面に著しいテクスチャを有するような被写体においても、ステップS410における符号誤り検出訂正により誤った対応付けを最小限に出来る。また、従来手法ではサンプリング形状が単一のために、対応付けが困難であった複雑な形状の被写体においても、ステップS408において複数種類のサンプリング形状で情報符号列のサンプリングを試みることで、対応付け可能な領域が増加する。以上から、従来手法と比較してよりロバストな三次元計測が可能となる。なお、本実施形態の図1における、パターン生成部103、パターン抽出部105、情報取得部106、符号サンプリング部107、符号誤り検出訂正部108、対応計算部109、三次元形状取得部110は、必ずしも各部が独立した装置である必要はない。これらの各部は、中央演算装置、主記憶装置、外部記憶装置、そしてそれらを相互接続する情報バスから構成される計算機上において、実行するプログラムの一部分として実現しても良い。また、ステップS401におけるパターン生成部103による投影パターン画像の生成は、必ずしも処理ごとにやり直す必要はない。一度生成した投影パターン画像を、メモリに格納しておき、次に必要になった場合には当該メモリから読み出すようにしても良い。撮像する被写体が限定されており、最適な投影パターン画像が事前に決定しているような場合には、上記の構成によって処理を省略し、高速化を図ることが出来る。また、被写体102の周辺部が単純な直線形状であるなど、被写体102の形状、大きさ、表面の材質によっては、より少数のサンプリング形状でほとんどの領域から情報符号列を取得できる場合も存在する。このような場合には、ステップS408において使用するサンプリング形状を、最低一つまでに削減して、ステップS410における符号誤り検出訂正のみを行うことで、誤った対応付けを最小限にできる。より少数のサンプリング形状とするほど計算負荷が減るため、前記の削減を適宜行うことで、撮像可能な被写体の複雑さと処理速度のバランスを取ることが出来る。また、被写体102の表面が単一色であるなど、被写体102の形状、大きさ、表面の材質によっては、符号誤りがほとんど発生しない場合も存在する。このような場合には、符号誤り検出訂正部108と、相当する処理であるステップS410を省略して、ステップS408において複数種類のサンプリング形状で情報符号列のサンプリングを試みるのみとしても良い。符号誤り検出訂正の処理の省略によって計算負荷が減るため、前記の省略を適宜行うことで、撮像可能な被写体の複雑さと処理速度のバランスを取ることが出来る。また、本実施形態においては、投影パターン画像に使用するシンボルを赤、青、緑の3種類として、サンプリング形状を囲む矩形の大きさを3×3としている。そのため、投影符号列を生成するdeBruijn系列は3値で、部分系列長が2と3のものを選択している。これらの数値も、投影パターン画像に使用できるシンボルの種類や、被写体の性質によって適宜3値以上で部分系列長が3以上のものに変更しても良い。使用するシンボル数を増やせれば、選択するdeBruijn系列によっては符号誤り検出訂正能力を向上させることが出来る。あるいはより投影符号列全体のサイズを大きくして、撮像可能な範囲を向上させることもできる。また、本実施形態においては、投影パターン画像に使用するシンボルとして、各符号値に赤、緑、青を対応させた点列を用いたがこれに限られるものではない。使用するシンボルは、各符号値に対応して、色、輝度、及び形状などの識別可能な特徴が設定され、各符号値を識別できるような形態であればよい。図17にその他の投影パターン画像の例を示す。本例における投影パターン画像では、シンボルは点ではなく、縦横の格子状の線を有する投影パターン画像の交点位置の形状として表される。本例においては、交点位置の形状が矩形であれば対応する符号を1、×形であれば2、丸形であれば3としている。以上の構成により、単色の投影パターン画像を使用することが出来るため、プロジェクタ101を簡略化することが出来る。また、縦横の格子状の線を辿ることで、符号同士の隣接関係をより容易に検出することも出来る。また、本実施形態においては、deBruijn系列からなる投影符号列を1つだけ使用する構成としているが、被写体の奥行き方向の変化が十分に小さく、同一値の情報符号列同士が重なる事が無い場合には、投影符号列が繰り返される投影パターン画像にしてもよい。なお、投影符号列を繰り返す場合には、使用するdeBruijn系列に対して巡回を考慮する必要があるため、本来の系列長の配列を使用する必要がある。本例のu方向で用いるk3,m3系列長3327のdeBruijn系列は、以下に示す数列となる。331321311231221211133232223...6同様に、本実施形態のv方向で用いるk3,n2のdeBruijn系列を以下に示す。331132212...7以上のように、投影符号列が繰り返される投影パターン画像を使用することで、撮像可能な範囲を拡大することが出来る。また、本実施形態におけるステップS410内のステップS1102では、ハッシュ値が1行しかない場合は符号誤りの検出が不能なため、符号誤り無しとして処理を終了させているが、より誤対応を削減したい場合には、これを失敗と判定しても良い。さらに、より長い冗長符号ほど符号誤り検出訂正の能力が向上するため、取得できている冗長符号の長さを信頼度として扱い、対応付け結果として使用するかどうかの判定基準としても良い。また、本実施形態のように、必ずしも投影符号列としてdeBruijn系列を使用する必要はない。モノクロのプロジェクタで投影パターン画像を投影する場合など、2種類しかシンボルが使用できない場合には、01の2値符号から形成されるM系列を投影符号列として使用しても良い。M系列を使用する場合は、サンプリング形状を囲む矩形の大きさをm×として、u方向とv方向、それぞれm次とn次の2種類のM系列を選択し、2進数の和の計算を行うことで、上記の例と同様に投影符号列を生成すればよい。M系列を使用する場合には、サンプリング形状が相対的に大きくなるものの、シンボル数は2種類で済み、高密度な投影パターン画像での投影が可能となるため、符号誤りが少ない環境であればより密な三次元計測が行える。以上のように、本実施形態によれば、撮像画像内から抜き出す撮像パターンを最小限としながら、符号の誤りに対しても訂正が可能な符号列を得られるため、誤った対応付けを低減できると同時に、より様々な被写体形状にも対応することが可能となる。<第2実施形態>次に、本発明の第2実施形態を説明する。なお、第2実施形態における画像情報処理装置全体の構成は第1実施形態図1に準じる。また、第2実施形態による画像処理装置の制御を説明するフローチャートは、ステップS408の符号サンプリング処理を除き、同様に図4に示す実施例1に準じる。第2実施形態におけるステップS408では、符号サンプリング部107が、情報取得部106で得られた撮像符号列のステップS406で設定された原点に対応した位置から、あらかじめ決められた複数種類のサンプリング形状で符号のサンプリングを行う。そして、符号サンプリング部107は、その中から最適な情報符号列と冗長符号を一組取得する。図18に、ステップS408における情報符号列と冗長符号の取得方法を説明するフローチャートを示す。以下、図18のフローチャートのステップ番号に従って、ステップS408の動作を詳細に説明する。本ステップS408におけるステップS1801~S1811の処理は、スレッド1812の処理単位に分けられ、符号サンプリング部107において同時並行して処理されるものとする。ステップS1801:符号サンプリングに使用するサンプリング形状を示す、サンプリング形状番号P1~P9を設定する。サンプリング形状は、抽出するべき所定数の点の位置と、それらの情報符号列における順序を規定する。本サンプリング形状の定義は第1実施形態における処理のステップS801図8と同様であり、全ての組み合わせ形状を予め用意し、番号Pを割り当てておく。図9の1~9に、第2実施形態における全てのサンプリング形状を示す。図18に示すように、サンプリング形状Pはそれぞれのスレッド1812で異なるよう1~9に設定する。ステップS1802:サンプリングする符号列の順序を示す、サンプリング順序N1~N9を1に初期化する。ステップS1803:サンプリング形状番号P1~P9における、サンプリング順序N1~N9にあたる各符号のサンプリングを行い、情報符号列を各スレッドで1つ取得する。取得に成功した場合はステップS1804に進む。撮像符号列内で、隣接する符号が存在せず、サンプリング順序N1~N9の位置で撮像符号列の取得に失敗した場合はステップS1809に進む。ステップS1804:サンプリング順序N1~N9が、情報符号列の長さ5に達しているかどうかをチェックする。達していなければ、ステップS1805に進む。達していればステップS1806に進む。ステップS1805:サンプリング順序N1~N9に1を加えて、ステップS1803に戻る。ステップS1806:現在のサンプリング形状番号P1~P9における、サンプリング順序N1~N9に当たる符号のサンプリングを行い、冗長符号を各スレッドで1つ取得する。取得に成功した場合はステップS1807に進む。撮像符号列内で、サンプリング順序N1~N9の位置に取得できる符号が存在せず、取得に失敗した場合はステップS1809に進む。ステップS1807:サンプリング順序N1~N9が、情報符号列の長さ9に達しているかどうかをチェックする。達していなければ、ステップS1808に進む。達していればステップS1809に進む。ステップS1808:サンプリング順序N1~N9に1を加えて、ステップS1806に戻る。ステップS1809:最初に、スレッド1~9が全てステップS1809に到達するまで待機する。到達後、スレッド1~9におけるサンプリング順序N1~N9を比較して、最大のサンプリング順序Nmaxを選択する。ステップS1810:Nmaxが情報符号列の長さ5に達しているかどうかをチェックする。達していなければステップS408の処理を失敗として終了する。達していれば処理を続行する。ステップS1811:最大のサンプリング順序Nmaxを有するサンプリング形状Pmaxにおける情報符号列と冗長符号を、出力する情報符号列と冗長符号列として選択し、ステップS408の処理を成功として終了する。以上の手順で処理を行うことにより、ステップS408において、情報取得部106で得られた撮像符号列からサンプリングが行われ、情報符号列と冗長符号以下で、これらを合わせてサンプリング符号列と呼ぶが取得される。以降の処理は第1実施形態と同様に行われる。以上の手順を実施することにより、従来手法では誤った対応付け結果となりやすかった、表面に著しいテクスチャを有するような被写体においても、ステップS410における符号誤り検出訂正により誤った対応付けを最小限に出来る。また、従来手法ではサンプリング形状が単一のために、対応付けが困難であった複雑な形状の被写体においても、対応付け可能な領域が増加することができる。すなわち、複雑な形状の被写体においても、ステップS408において複数種類のサンプリング形状で情報符号列のサンプリングを同時並行で試みることにより、処理の高速性を損なうことなく対応付け可能な領域が増加する。以上から、従来手法と比較してよりロバストかつ高速な三次元計測が可能となる。なお、第2実施形態における符号サンプリング部107は、図18におけるスレッド1802を同時並行して処理できる構成であればよい。たとえば、ステップS1801~ステップS1808の処理部分を複数有することにより並列して実行できるような処理回路を用いれば、高速に同時並行して処理を行うことができる。また、必ずしも専用の処理回路を使用する必要はなく、マルチコア構成、あるいはマルチスレッド動作が可能な汎用のCPUを用いて、ソフトウェアにより並列処理を行ってもよい。以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。"