(57)【特許請求の範囲】
【請求項１】
複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンを有するパターン光を測定対象物に投影する照明手段と、
前記パターン光が投影された前記測定対象物を撮影する撮像手段と、
撮影画像における線分の上端および下端の位置と前記線分の周囲の線分の上端および下端の位置を用いて、前記撮影画像における前記線分と前記パターンにおける線分との対応を求めて、前記測定対象物の３次元位置を算出する算出手段と、
を備え、
前記パターンは、前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わり、
前記算出手段は、
前記パターン中のターゲット線分と対応する線分の候補を、前記撮影画像における線分の上端および下端の位置に基づいて抽出し、
候補線分の上、下、左上、右上、左下、右下の６つの隣接線分の上端および下端の位置に基づいて対応の正確さを表す評価値を求め、
当該評価値に基づいて前記パターン中のターゲット線分に対応する前記撮影画像中の線分を決定する、
ことを特徴とする３次元測定装置。
【請求項２】
前記照明手段と前記撮像手段の光軸は略平行であり、
前記パターンにおける線分はエピポーララインと垂直であり、
前記パターンにおける線分の上端および下端位置を通る当該線分の垂線は、前記線分のいずれの側においても隣接列の線分と交わる、
請求項１に記載の３次元測定装置。
【請求項３】
前記パターンは、前記パターンにおける線分の上端位置からエピポーララインに沿って
直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の下端位置よりも所定の長さ以上、上の位置で交わり、前記線分の下端位置からエピポーララインに沿って直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の上端位置よりも所定の長さ以上、下の位置で交わる、
請求項１または２に記載の３次元測定装置。
【請求項４】
照明手段と撮像手段を有する３次元測定装置における前記照明手段が投影する投影光のパターンを生成するパターン生成装置であって、
前記パターンは、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンであり、かつ、
前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わるという制約を満たし、
前記パターン生成装置は、
線分の長さおよび線分間の間隔をランダムに決定して１つまたは複数の線分を生成する生成手段と、
新たに生成した１つまたは複数の線分と、既にパターンとして確定した線分との間で、上記制約を満たすか否かを確認する確認手段と、
を備え、
前記制約を満たす場合は新たに生成した１つまたは複数の線分をパターンの一部として確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成手段による生成と前記確認手段による確認を繰り返す、
ことを特徴とするパターン生成装置。
【請求項５】
前記生成手段は、１列分のパターンを生成し、
前記生成手段が生成したパターンが前記制約を満たす場合は新たに生成した１列分のパターンを新しい列のパターンとして確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成手段による生成と前記確認手段による確認を繰り返す、
請求項４に記載のパターン生成装置。
【請求項６】
前記生成手段は、複数列分のパターンを生成し、
前記生成手段が生成したパターンが前記制約を満たす場合は新たに生成した複数列分のパターンを新しい列のパターンとして確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成手段による生成と前記確認手段による確認を繰り返す、
請求項４に記載のパターン生成装置。
【請求項７】
前記パターン生成装置は、
全体の列数の半分の列については、前記生成手段と前記確認手段を用いて生成し、
残りの半分については、前記生成手段と前記確認手段を用いて生成されたパターンを１８０度回転させたパターンとして生成する、
請求項４から６のいずれか１項に記載のパターン生成装置。
【請求項８】
前記パターン生成装置は、
生成したパターンに所定の変形処理を加えたパターンと、生成したパターンとの間で線分の対応関係を求めて、求められた対応関係の正確さを評価する評価手段をさらに有し、
前記制約を満たす複数のパターンを生成して、前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、
請求項４から７のいずれか１項に記載のパターン生成装置。
【請求項９】
前記制約を満たすパターンをＮ個（Ｎは２以上の整数）生成して、
Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個（Ｍは１以上Ｎ−１以下の整数）に基づいてＮ−Ｍ個のパターンを新たに生成し、
前記上位Ｍ個のパターンと、新たに生成したＮ−Ｍ個のパターンの中から前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、
請求項８に記載のパターン生成装置。
【請求項１０】
Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個に基づいてＮ−Ｍ個のパターンを新たに生成する処理を、繰り返し実行する、
請求項９に記載のパターン生成装置。
【請求項１１】
Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個（Ｍは１以上Ｎ−１以下の整数）に基づく新たなパターンの生成は、前記上位Ｍ個のパターンの中から１つを選択し、選択されたパターンの一部分を再生成することによって行われる、
請求項９または１０に記載のパターン生成装置。
【請求項１２】
複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンを有するパターン光を、照明手段から測定対象物に投影する照明ステップと、
前記パターン光が投影された前記測定対象物を撮像手段によって撮影する撮像ステップと、
演算手段が、撮影画像における線分の切断点の位置と前記線分の周囲の線分の切断点の位置を用いて、前記撮影画像における前記線分と前記パターンにおける線分との対応を求めて、前記測定対象物の３次元位置を算出する算出ステップと、
を含み、
前記パターンは、前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わり、
前記算出ステップでは、
前記パターン中のターゲット線分と対応する線分の候補を、前記撮影画像における線分の上端および下端の位置に基づいて抽出し、
候補線分の上、下、左上、右上、左下、右下の６つの隣接線分の上端および下端の位置に基づいて対応の正確さを表す評価値を求め、
当該評価値に基づいて前記パターン中のターゲット線分に対応する前記撮影画像中の線分を決定する、
ことを特徴とする３次元測定方法。
【請求項１３】
照明手段と撮像手段を有する３次元測定装置における前記照明手段が投影する投影光のパターンを生成するパターン生成方法であって、
前記パターンは、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンであり、かつ、
前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わるという制約を満たし、
コンピュータが、
線分の長さおよび線分間の間隔をランダムに決定して１列分のパターンを生成する生成ステップと、
新たに生成した１列分のパターンと、直前に確定した１列分のパターンとの間で、上記制約を満たすか否かを確認する確認ステップと、
を実行し、
前記制約を満たす場合は新たに生成した１列分のパターンを新しい列のパターンとして
確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成ステップによる生成と前記確認ステップによる確認を繰り返す、
ことを特徴とするパターン生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン光を投影して測定対象物の３次元位置を測定する３次元測定技術に関し、特に、ランダムカットを有する線パターンを投影する３次元測定技術における線パターンの決定に関する。
【背景技術】
【０００２】
測定対象物の３次元形状を測定する手法として、アクティブステレオ測量が知られている。アクティブステレオ測量では、測定対象物に符号化したパターン光（構造化光）を投影した状態で撮影を行い、撮影された画像上でのパターンの位置から、三角測量の原理を用いて測定対象物の３次元形状（各画素の３次元位置）を求める。正確な３次元位置を求めるためには、撮影画像から符号化したパターン光の符号（インデックス）を正確に求める必要がある。
【０００３】
物体表面に３次元的な起伏がある場合でも有効なパターンとして、ランダムカットを有する線パターンを用いることが知られている（特許文献１、非特許文献１）。ランダムカットを有する線パターンとは、複数列に平行に並ぶ直線（線分）をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンである。本明細書では簡単のためにランダムカットを有する線パターンのことを単に「線パターン」と称する。エピポーララインが水平（横方向、Ｘ方向）である場合、線パターンの各直線は一般に垂直方向（縦方向、Ｙ方向）に平行とする。線パターンでは、ある線分とその周囲の線分のＹ座標の相対位置（座標）の関係を用いて符号化が行われる。投影パターンのＹ座標の相対位置は対象物に対する距離や形状によらないので、符号情報が損なわれずに精度の良い測定が行える。
【０００４】
線パターンにおける符号情報は、周囲の線分のＹ座標の位置関係によって決定されるので、符号情報を求める対象の線分（以下、ターゲット線分と称する）と隣接する線分を決定する必要がある。従来技術では、ターゲット線分の上側、下側、右上側、左上側、右下側、左下側の６個の隣接線分を求めている。ターゲット線分の上下の隣接線分は、ターゲット線分を延長した方向にある線分として求められる。右上側の隣接線分は、ターゲット線分よりも右側に位置し、ターゲット線分の上端位置を通る水平線（より正確には、エピポーラライン）と右側で最初に交わる線分として特定される。左上、右下、左下側の隣接線分についても同様である。
【０００５】
上述のようにして隣接部分を探索するので、線パターンにおいて、ターゲット線分の上下端位置が隣接列のカット部分（線分がない部分）と一致すると、２列以上隣の列の線分がターゲット線分の隣接線分として求められたり、隣接線分が見つからなかったりする事態が生じる。つまり、ターゲット線分の隣接線分を誤検出することになり、正しい符号情報が得られずに３次元位置の誤検出が生じる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１−２７４００７号公報
【非特許文献】
【０００７】
【非特許文献１】Minoru Maruyama et. al., Range Sensing by Projecting Multiple Slits with Random Cuts, IEEE Transactions on pattern analysis and machine intelligence, Vol. 15, No., 6, June 1993.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は上記実情に鑑みなされたものであって、本発明の目的は、線パターンを用いたアクティブステレオ測量において精度の良い３次元位置測定が可能な手法を提供することである。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の第一の態様は、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンを有するパターン光を測定対象物に投影する照明手段と、前記パターン光が投影された前記測定対象物を撮影する撮像手段と、撮影画像における線分の上端および下端の位置と前記線分の周囲の線分の上端および下端の位置を用いて、前記撮影画像における前記線分と前記パターンにおける線分との対応を求めて、前記測定対象物の３次元位置を算出する算出手段と、を備える３次元測定装置である。ここで、前記パターンは、前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わる、という制約を満たすことを特徴とする。
【００１０】
このような制約を満たす線パターンを採用すれば、線パターンにおける各線分の上端および下端を通るエピポーララインに沿って隣接線分を探索する際に、かならず隣接列の線分が見つけられる。すなわち、撮影画像中において線分の隣接線分を求める際の誤検出を抑制できる。なお、誤検出には、実際には隣接していない線分を隣接線分として検出してしまうことと、隣接線分を見つけられないことの両方が含まれる。
【００１１】
なお、本発明における線パターンは、構成要素である線分の全てについて上記の制約を満たすことが好ましい（ただしパターン端部列の線分については隣接する線分との間で制約を満たせばよい）。全ての線分に関して隣接線分を正しく求められるためである。しかしながら、一部の線分について上記の制約を満たさなかったとしても全体的には精度の良い測定が可能である。したがって、一部の線分については上記の制約を満たさなくても構わない。本発明においては、線パターンを構成する全線分のうち９０％以上の線分について上記の制約を満たすことが好ましく、全線分のうち９５％以上の線分について上記の制約を満たすことがさらに好ましく、全線分について上記の制約を満たすことが最も好ましい。
【００１２】
上記の説明において、投影光のパターンは複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンである、と記載しているが、これはパターンの生成方法を特定するものではない。この記載は、パターンの形状自体を特定するものである。したがって、上記のパターンは、任意の手法によって生成されたものであって構わない。
【００１３】
本態様において、照明手段と撮像手段の光軸を略平行とし、上記のパターンにおける線分をエピポーララインと垂直とすることが好ましい。この場合、上記の制約は、パターンにおける線分の上端および下端位置を通る当該線分の垂線が、前記線分のいずれの側においても隣接列の線分と交わるという制約と等しくなる。
【００１４】
また、本態様において、左右方向に隣接する線分同士は、線分方向について所定の長さ以上の重なりを有することが好ましい。すなわち、前記パターンは、前記パターンにおける線分の上端位置からエピポーララインに沿って直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の下端位置よりも所定の長さ以上、上の位置で交
わり、前記線分の下端位置からエピポーララインに沿って直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の上端位置よりも所定の長さ以上、下の位置で交わる、ことが好ましい。ここでの所定の長さは、撮影画像の歪みやノイズに伴って生じうる位置ズレ量もしくはそれ以上の値であることが好ましい。このようにすれば、画像撮影時に歪みやノイズが生じた場合であっても、隣接線分を正しく求めることができる。
【００１７】
本発明の第二の態様は、照明手段と撮像手段を有する３次元測定装置における照明手段が投影する投影光のパターンを生成するパターン生成装置である。本態様に係るパターン生成装置が生成するパターンは、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンであり、かつ、当該パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わるという制約を満たす、ことを特徴とする。
【００１８】
本態様に係るパターン生成装置は、１つまたは複数の線分のパターンをランダムに仮生成して、上記制約を満たさなければ再生成し、上記制約を満たせばパターンとして採用するようにする。すなわち、本態様に係るパターン生成装置は、線分の長さおよび線分間の間隔（縦間隔）をランダムに決定して１つまたは複数の線分を生成する生成手段と、新たに生成した１つまたは複数の線分と、既にパターンとして確定した線分との間で、上記制約を満たすか否かを確認する確認手段と、を備え、前記制約を満たす場合は新たに生成した１つまたは複数の線分をパターンの一部として確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成手段による生成と前記確認手段による確認を繰り返す、ことができる。このようにすれば、上記の制約を満たすパターンを生成することができる。なお、線分の太さと隣接列の線分同士の間隔は、それぞれ固定値を用いればよい。
【００１９】
上記の構成において、１列ずつ、ランダムな生成と制約を満たすか否かの確認を行うことができる。あるいは、複数列ずつ、ランダムな生成と制約を満たすか否かの確認を行うことができる。
【００２０】
本態様に係るパターン生成装置は、全体の列数の半分の列については、前記生成手段と前記確認手段を用いて生成し、残りの半分については、前記生成手段と前記確認手段を用いて生成されたパターンを１８０度回転させたパターンとして生成する、ことが好ましい。制約を満たすパターンは１８０度回転させても制約を満たすので、ランダムに生成したパターンと回転させたパターンの境界部を除いて制約を必ず満たす。境界部において制約を満たさない場合には、上記制約を満たすように境界部分のいずれかまたは両方の列のパ
ターンを再生成すればよい。このようにすれば、ランダムに生成する列の数を全体の半分としつつ全体として制約を満たすパターンを生成できるので、処理が高速化される。
【００２１】
本態様に係るパターン生成装置は、生成したパターンに所定の変形処理を加えたパターンを３次元測定装置における撮像手段によって撮影される画像とみなして、生成したパターンとの間で線分の対応関係を求めて、求められた対応関係の正確さを評価する評価手段をさらに有し、前記制約を満たす複数のパターンを生成して、前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、ことが好ましい。ここで、上記所定の変形処理は、実際の３次元測定を行う際に生じる歪みやノイズに起因する線分抽出時の変形を模擬したものとすることが好ましい。上述のように線パターンを用いた３次元測定では、各線分の上下方向の位置を用いて線分の対応関係が求められるので、撮影画像とみなすパターンにおける各線分の上下方向の位置にランダムな誤差またはオフセット誤差を与えることが好ましい。このランダムな誤差は、例えば、平均がゼロで所定の標準偏差にしたがった正規分布にしたがった乱数により決定するとよい。また、このオフセット誤差は、例えば、予め定められた一定の値とするとよい。このようにすれば、生成したパターンを用いて３次元測定を行ったときの対応関係の正確さを評価することができ、最も正確な対応関係が得られるパターンを選択することができる。なお、対応関係の正確さは、３次元測定において用いられるロジックと同様のロジックを用いて線分の対応関係を求め、正しい対応関係が得られた線分の数あるいは割合として求めることができる。
【００２２】
また、本態様に係るパターン生成装置は、前記制約を満たすパターンをＮ個（Ｎは２以上の整数）生成して、Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個（Ｍは１以上Ｎ−１以下の整数）に基づいてＮ−Ｍ個のパターンを新たに生成し、前記上位Ｍ個のパターンと、新たに生成したＮ−Ｍ個のパターンの中から前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、ことも好ましい。このように、評価の高いパターンを変形させて新たなパターンを生成することで、より評価の高いパターンが得られる可能性がある。
【００２３】
ここで、Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個に基づいてＮ−Ｍ個のパターンを新たに生成する処理を、繰り返し実行する、ことも好ましい。繰り返しの際には、評価が高い上位Ｍ個のパターンと新たに生成したＮ−Ｍ個のパターンの合計Ｎ個のパターンの中から、改めて評価が高い上位Ｍ個を選択するとよい。繰り返しに応じて、より評価の高いパターンが生成される可能性が高まる。ここで、繰り返しを終了する判定基準は、例えば、繰り返し処理をあらかじめ定められた所定回数行った場合、最も評価値の高いパターンが所定回数の繰り返し処理後でも変化しない場合、最も高い評価値が閾値以上となった場合などとすることができる。
【００２４】
また、Ｎ個のパターンの中から前記評価手段による評価が高い上位Ｍ個（Ｍは１以上Ｎ−１以下の整数）に基づく新たなパターンの生成は、前記上位Ｍ個のパターンの中から１つを選択し、選択されたパターンの一部分を再生成することによって行われる、ことができる。ここで、上位Ｍ個のパターンの中から１つのパターンを選択する処理は、均等な確率でランダムに選択してもよいし、評価値に応じた確率でランダムに選択してもよいし、上位Ｍ個のパターンを順番に選択してもよい。また、選択された一部分の再生成は、ランダムに行ってもよいし、評価が高い上記Ｍ個のパターンのうち選択されたパターン以外のパターンの一部分で置き換えることによって行ってもよい。
【００２５】
なお、本発明は、上記手段の少なくとも一部を含む３次元測定装置、パターン生成装置として捉えることができる。また、本発明は、上記手段が行う処理の少なくとも一部を含む３次元測定方法、パターン生成方法として捉えることもできる。また、これらの方法の各ステップをコンピュータに実行させるためのコンピュータプログラムや、当該プログラムを非一時的に記憶したコンピュータ読取可能な記憶媒体として捉えることもできる。上記構成および処理の各々は技術的な矛盾が生じない限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００２６】
本発明によれば、線パターンを用いたアクティブステレオ測量において精度の良い３次元位置測定が可能となる。
【図面の簡単な説明】
【００２７】
【図１】第１の実施形態に係る３次元測定装置の構成を示す図である。
【図２】第１の実施形態において投影部が投影する投影光のパターン（線パターン）を説明する図である。
【図３】第１の実施形態に係る３次元測定処理の全体の流れを示すフローチャートである。
【図４】第１の実施形態における投影光のパターンと撮影画像の例を示す図である。
【図５】３次元測定処理における線分抽出処理の詳細な流れを示すフローチャートである。
【図６】３次元測定処理における対応付け処理の詳細な流れを示すフローチャートである。
【図７】対応付け処理における、隣接線分の特定方法を説明する図である。
【図８】対応付け処理における、線分の対応候補の抽出方法を説明する図である。
【図９】対応付け処理における、線分の対応関係の正しさを評価する評価値（コスト）を説明する図である。
【図１０】対応付け処理における、誤対応除去方法を説明する図である。
【図１１】投影部とカメラの光軸が平行でない場合のエピポーララインと線パターンが満たすべき制約とを説明する図である。
【図１２】第２の実施形態に係るパターン生成装置の構成を示す図である。
【図１３】第２の実施形態に係るパターン生成方法の流れを示すフローチャートである。
【図１４】第２の実施形態における設計パラメータを説明する図である。
【図１５】第２の実施形態におけるパターン生成方法を説明する図である。
【図１６】第３の実施形態に係るパターン生成装置の構成を示す図である。
【図１７】第３の実施形態に係るパターン生成方法の流れを示すフローチャートである。
【図１８】第３の実施形態におけるパターン評価方法の流れを示すフローチャートである。
【図１９】第３の実施形態のおけるパターン再生成処理の一例を説明する図である。
【図２０】第３の実施形態のおけるパターン再生成処理の別の例を説明する図である。
【発明を実施するための形態】
【００２８】
（第１の実施形態）
以下、図面を参照して本発明の好適な実施形態について説明する。本実施形態に係る３次元測定装置は、測定対象物にパターン光を投影して撮影を行い、三角測量の原理を用いて測定対象物の３次元形状を測定する。
【００２９】
［構成］
図１は、本実施形態に係る３次元測定装置１００の構成を示す図である。３次元測定装置１００は、大略、投影部１１０、カメラ１２０、演算装置１３０から構成される。
【００３０】
（投影部）
投影部１１０は、測定対象物１５０に対して、パターン光（構造化光）を投影するためのものであり、ハロゲンランプやキセノンランプなどの光源、光源から照射された光にパターンを形成するための液晶素子などのパターン生成素子、およびマイクロレンズなどの光学系を備える。この他に、光源として半導体レーザを用いた場合は、パターン生成素子として光学回折素子またはＭＥＭＳスキャナを用いて投影部１１０を構成することもできる。投影部１１０が投影する光は、近赤外光などの不可視光であってもよい。本実施形態においては光のパターンは、パターン記憶部１３１が記憶しており、パターン記憶部１３１から出力されるデータに基づいて制御部１３２が投影部１１０を制御することにより、投影部１１０からパターン光が投影される。
【００３１】
本実施形態において、投影部１１０の光軸は、カメラ１２０の光軸と平行に設定されている。投影部１１０とカメラ１２０が並ぶ方向を水平方向（Ｘ方向）とすると、投影パターンにおけるエピポーララインは水平方向となる。以下では、エピポーララインが水平であるものとして説明する。
【００３２】
投影部１１０が投影する光のパターンについて説明する。本実施形態において投影部１１０が投影する光のパターンは、複数列に平行に並ぶ直線をそれぞれランダムな（不規則な）位置および間隔で切断して複数の線分に分割したパターンである。以下、本実施形態において使用するこのようなパターンを「線パターン」と称する。本実施形態において使用する線パターンの例を、図２（Ａ）に示す。線パターンでは、各線分の上端位置と下端位置および、当該線分と上、下、右上、左上、右下、左下のそれぞれの方向で隣接する各隣接線分（合計６本）の上端位置と下端位置（１４個の値の組み合わせ）によって、符号化が行われる。つまり、撮影画像中において、各線分の隣接線分を求めて、その上端位置および下端位置を算出することによって、投影パターン中において対応する線分を決定することができる。
【００３３】
本実施形態における線パターンは、図２（Ｂ）に示すように、
（制約１）各線分の上端位置および下端位置から水平方向に（より正確には、エピポーララインに沿って）直線を引いたときに、これらの直線は隣接する列の線分部分と交わる、
という制約を満たす。図２（Ｂ）において、線分２００の上端位置および下端位置からそれぞれ水平方向に引いた直線２０１〜２０４は、いずれも隣接列の線分と交わっている。
【００３４】
本実施形態における線パターンはさらに、
（制約２）隣接する線分の線分方向について所定の長さ以上の重複を有する、
という制約をさらに満たす。図２（Ｂ）において、線分２００と隣接線分の重複２０５〜２０８はいずれも所定の長さ以上ある。この制約２は、線分の上端位置から水平方向に（より正確には、エピポーララインに沿って）直線を引いたときに、隣接列の線分の下端位置から所定の長さ以上上で交わり、線分の下端位置から水平方向に直線を引いたときに、隣接列の線分の上端位置から所定の長さ以上下で交わる、とも表現できる。ここでの所定の長さは、撮影画像の歪みやノイズに伴って生じうる位置ズレ量以上とすることが好ましい。
【００３５】
上記制約を満たさないパターンを図２（Ｃ）に示す。図２（Ｃ）に示すパターンでは、線分２００の上端位置から水平右方向に直線２０９を引いたときに、この直線２０９は隣接列の線分と交わらない。したがって、図２（Ｃ）に示すパターンは上記制約を満たさない。
【００３６】
後述するように、撮影画像における各線分の隣接線分を求める際には、線分の上端位置
および下端位置から水平方向に沿って探索を行い、最初に交差した線分を隣接線分として決定する。撮影画像中におけるパターンの形状は、測定対象物１５０の形状によって変化するが、垂直方向（Ｙ方向）の位置関係は変化しない。したがって、上記制約を満たす線パターンを用いることで、撮影画像における各線分の隣接線分を、正しく求めることができる。
【００３７】
（カメラ）
カメラ１２０は、パターン光が投影された測定対象物１５０を撮影する。カメラ１２０は、制御部１３２からの指令に基づき、投影部１１０からのパターン光の投影と同期して撮影処理を行う。カメラ１２０が撮影した画像データは、画像入力部１３３に入力される。
【００３８】
（演算装置）
演算装置１３０は、ＣＰＵなどのプロセッサ、ＲＡＭやＲＯＭなどのメモリ（記憶装置）、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータである。演算装置１３０は、メモリに格納されたプログラムをＣＰＵが実行することにより、パターン記憶部１３１、制御部１３２、画像入力部１３３、３次元位置算出部１３７などの機能を提供する。なお、３次元位置算出部１３７は、線分抽出部１３４、対応付け処理部１３５、三角測量部１３６の機能を備える。演算装置１３０の各機能部については、以下のフローチャートとともに説明する。
【００３９】
［処理］
図３は、本実施形態に係る３次元測定装置１００が行う３次元測定処理の流れを示すフローチャートである。ここで示すフローチャートは処理の一例であり、その処理内容や処理順序は適宜変更して構わない。なお、投影部１１０とカメラ１２０のキャリブレーション（較正処理）は完了しているものとし、パターン上の点とそれに対応する撮影画像の点は同じＹ座標になるように調整されている。
【００４０】
まず、ステップＳ３０１において、線パターンのパターン光を投影部１１０から測定対象物１５０に対して投影し、パターン光の投影にあわせてカメラ１２０が測定対象物１５０を撮影する。この処理では、制御部１３２が、パターン記憶部１３１からパターンデータを読み出し、このパターンデータを投影部１１０に出力する。投影部１１０は、パターンデータにしたがって液晶素子を制御して、指定されたパターンの光を測定対象物１５０に投影する。カメラ１２０によって撮影された画像データは、画像入力部１３３に入力されて、一時的に記憶される。
【００４１】
図４は、ステップＳ３０１において投影される投影光のパターン（Ａ）とパターン光が投影された測定対象物１５０を撮影した撮影画像の例（Ｂ）を示す図である。直線からなるパターン光は測定対象物１５０の形状に応じて歪んだ形状として撮影される。ここで、投影光のパターン中の各点は、撮影画像中ではエピポーラライン上に位置する。そして、本実施形態では、エピポーララインが撮影画像中において水平方向であると仮定している。したがって、投影光のパターンにおける各点のＹ座標位置（垂直方向の位置）は撮影画像中においても変化しない。
【００４２】
ステップＳ３０２において、線分抽出部１３４は、入力画像から線分を抽出する。線分抽出処理Ｓ３０２の詳細な流れを図５に示す。線分抽出部１３４は、まず、入力画像を二値化する（Ｓ５０１）。より具体的には、線分抽出部１３４は、入力画像のサイズを半分に縮小した後、横方向の微分フィルタを適用してエッジ強度が高い部分を抽出し、抽出した領域に対して適応二値化処理を施す。適応二値化処理では、例えば、一辺１５画素の大
きさのウィンドウ内の平均輝度値を閾値として二値化を行う。線分抽出部１３４は、適応二値化処理後の画像を、サイズを２倍にして元のサイズに戻す。画像サイズを半分にしてから二値化処理を施すのは、線分の幅が太いと線分の幅方向中心でのエッジ強度が弱く検出され二値化処理時に中心部分が抜けてしまう現象を回避するためである。
【００４３】
次に、線分抽出部１３４は、二値化処理後の画像から線分の領域を抽出する（Ｓ５０２）。具体的には、線分抽出部１３４は、画像中の高輝度部分の連結領域をラベリングし、誤検出領域を除去した後、細線化処理を施す。誤検出領域は、例えば、所定の幅以上ある連結領域として検出できる。また、細線化処理では、各連結領域の水平方向（Ｘ方向）の中心ピクセルを線分の座標とする。この処理により、線分の座標を画素単位で求めることができる。
【００４４】
線分抽出部１３４は、線分の座標をサブ画素単位で求める。まず、Ｘ座標のサブピクセル推定（Ｓ５０３）について説明する。線分抽出部１３４は、ステップＳ５０２において求められた線分位置を中心とした所定の範囲におけるＸ方向の輝度プロファイルを取得する。この輝度プロファイルは、二値化処理前の画像を対象として行う。線分抽出部１３４は、輝度プロファイルにおける重心位置をサブ画素単位で求める。線分の中の各Ｙ座標に対してＸ方向の重心位置を求めた後、線分抽出部１３４は、複数のＹ座標のＸ方向重心位置からなる線に対してさらに平滑化処理を施す。線分抽出部１３４は、このようにして得られたサブ画素精度の重心位置を線分のＸ座標とする。
【００４５】
次に、線分の上端および下端位置のＹ座標のサブピクセル推定（Ｓ５０４）について説明する。線分抽出部１３４は、線分の端点よりも所定画素だけ内側の点を用いて、線分の傾きを求める。端点ではなく内側の点を用いるのは、端点ではノイズが多く正確な傾き算出が困難なためである。線分抽出部１３４は、求めた傾きに沿って二値化前の画像の輝度プロファイルを求め、プロファイル中において最大値と最小値の中間値を取る点のＹ座標をサブ画素単位で求めて、この座標を線分端点のＹ座標として決定する。
【００４６】
以上の処理により、撮影画像中の線分の位置（座標）を、サブ画素単位で求めることができる。
【００４７】
線分抽出処理Ｓ３０２が終了すると、ステップＳ３０３（図３）において、対応付け処理部１３５が、撮影画像中の線分とパターンにおける線分との対応関係を求める。対応付け処理Ｓ３０３の詳細な流れを図６に示す。対応付け処理Ｓ３０３は、ループＬ１の処理において、撮影画像中の各線分について６方向の隣接線分を特定する。
【００４８】
ステップＳ６０１では、対応付け処理部１３５は、ターゲット線分ＬＳ１と上下方向において隣接する線分をそれぞれ求める。ここでは、上方向の隣接線分の求め方を図７（Ａ）を参照して説明する。対応付け処理部１３５は、以下の条件を満たす線分ＬＳ２を探す。
（条件１）線分ＬＳ２の下端Ｂ２のＹ座標位置がターゲット線分ＬＳ１の上端Ｔ１よりも上にあり、かつ、
（条件２）線分ＬＳ２の下端Ｂ２とターゲット線分ＬＳ１の上端Ｔ１を結ぶ直線と、ターゲット線分ＬＳ１の傾き（上端Ｔ１と下端Ｂ１を結ぶ直線）とのなす角度θが４５度以内である。
これらの条件を満たす線分ＬＳ２が複数存在する場合は、対応付け処理部１３５は、上端Ｔ１と下端Ｂ２の間の重みつき距離が最小となる線分を、ターゲット線分ＬＳ１の上方向隣接線分として特定する。なお、重みつき距離は、上端Ｔ１と下端Ｂ２の変位のうち、線分ＬＳ１の傾きに沿った変位をＬｙ、線分ＬＳ１の傾きと垂直な変位をＬｘとしたときに、例えば、［４Ｌｘ２＋Ｌｙ２］１／２として求めることができる。すなわち、線分Ｌ
Ｓ１の傾きと垂直な方向への変位に対して、傾きに沿った方向の変位よりも大きな重み付けをして得られる距離を、重み付き距離とする。なお、ここでは上方向の隣接線分の求め方を説明したが、下方向の隣接線分も同様にして求めることができる。
【００４９】
次に、ステップＳ６０２において、対応付け処理部１３５は、左上、右上、左下、右下の４方向の隣接線分をそれぞれ求める。ここでは、左上方向の隣接線分の求め方を図７（Ｂ）を参照して説明する。対応付け処理部１３５は、具体的には、ターゲット線分ＬＳ１の上端Ｔ１から水平左方向に向かって直線を伸ばし、この直線と最初に交差した線分をターゲット線分ＬＳ１の左上方向の隣接線分として特定する。右上、左下、右下の各方向の隣接線分も同様にして求めることができる。
【００５０】
撮影画像中の各線分について隣接線分が特定されたら、対応付け処理部１３５は、ループＬ２の処理において、パターン中の各線分と対応する撮影画像中の線分を特定する。以下のループＬ２内では、パターン中の各線分をターゲット線分として処理を繰り返す。
【００５１】
対応付け処理部１３５は、まず、ターゲット線分と対応する線分の候補を撮影画像中から抽出する（Ｓ６０３）。具体的には、図８に示すように、線分の上端位置と下端位置の少なくともいずれか一方がターゲット線分８０１の上端位置および下端位置と許容誤差の範囲内で一致し、かつ、視差（撮影画像中におけるＸ方向位置）が所定の探索範囲内である、という条件を満たす線分が対応候補として抽出される。図８においては、線分８０２はその上端および下端が線分８０１の上端および下端と、線分８０３の上端は線分８０１の上端と、線分８０４の下端は線分８０１の下端と、それぞれ許容誤差の範囲内で一致する。さらに、線分８０２〜８０４の視差は、探索範囲内である。したがって、ターゲット線分８０１に対応する線分の候補として、線分８０２〜８０４が抽出される（線分の横の丸印は対応候補であることを示す）。線分８０５については、上端および下端が線分８０１の上端および下端と許容誤差の範囲内で一致するものの、視差が探索範囲よりも大きいため対応候補としては抽出されない。なお、ここでは上端位置と下端位置の少なくとも一方が許容誤差の範囲で一致することを条件としているが、上端位置と下端位置の両方が誤差の範囲で一致することを条件としてもよい。
【００５２】
対応付け処理部１３５は、抽出された対応候補のそれぞれに対して、ターゲット線分との対応の正確さを表す評価値を計算する（Ｓ６０４）。ここでは、値が小さいほど対応付けが正しい可能性が高く、値が大きいほど対応付けが間違っている可能性が高い評価値を用いる。したがって、評価値のことをコストとも称する。コスト（評価値）は、図９に示すように、ターゲット線分および６方向の隣接線分のそれぞれについて、上端のＹ座標の差（絶対値）と下端のＹ座標の差（絶対値）の合計として定義される。パターンにおけるターゲット線分の上端および下端Ｙ座標をｙｐ０Ｕ，ｙｐ０Ｄとし、隣接線分の上端および下端Ｙ座標をｙｐｉＵ，ｙｐｉＤ（ｉ＝１〜６）とし、撮影画像におけるターゲット線分の上端および下端Ｙ座標をｙｃ０Ｕ，ｙｃ０Ｄとし、隣接線分の上端および下端Ｙ座標をｙｃｉＵ，ｙｃｉＤ（ｉ＝１〜６）とすると、コストは次式のように定義される。
【数１】
0006583674.tif 000002
【００５３】
ここで、パターンと撮影画像における各点のＹ座標は変わらず、線分同士の対応が正しければ上記のコストは理想的にはゼロになる。したがって、対応付け処理部１３５は、コストが最小の線分を、パターン中のターゲット線分に対応する撮影画像中の線分として決定する（Ｓ６０５）。互いに対応する線分は、対応ペアとして記憶される。
【００５４】
対応付け処理部１３５は、ステップＳ６０５において求めた対応が誤対応であるか否かを確認し、誤対応の場合は対応ペアから除去する（Ｓ６０６）。正しい対応線分が得られている場合には、図１０（Ａ）に示すように、パターン中のターゲット線分ＬＳ１と対応する撮影画像中の線分ＬＳ１’の隣接線分ＬＳ２’は、パターン中のターゲット線分ＬＳ１の隣接線分ＬＳ２と対応する撮影画像中の線分ＬＳ２’と等しくなる。一方、正しい対応線分が得られていない場合には、図１０（Ｂ）に示すように、パターン中のターゲット線分ＬＳ１と対応する撮影画像中の線分ＬＳ１’の隣接線分ＬＳ３’と、パターン中のターゲット線分ＬＳ１の隣接線分ＬＳ２と対応する撮影画像中の線分ＬＳ２’が等しくない。したがって、対応線分の隣接線分が隣接線分の対応線分と等しいか否かを判定することにより、対応関係が正しいか否かを決定することができる。本実施形態では、６方向のいずれについてもターゲット線分の隣接線分と隣接線分の対応線分が異なる場合に、対応付け処理部１３５はステップＳ６０５において求めた対応が誤対応であると判断する。ただし、６方向のうち所定数（１〜６個）以上についてターゲット線分の隣接線分と隣接線分の対応線分が異なる場合に、誤対応であると判断してもよい。対応付け処理部１３５は、ステップＳ６０６において誤対応であると判定された線分ペアは対応ペアから除去する。なおここでは、パターン中のターゲット線分を起点として対応付けの正しさを確認したが、ターゲット線分に対応すると判定された撮影画像中の線分を起点として対応付けの正しさを確認してもよい。
【００５５】
なお、対応付け処理部１３５は、撮影画像中において隣接線分との深度が所定距離以上異なる場合についても、誤対応と判断して良い。深度の差は、それぞれの線分の各位置における深度の中間値の差として評価するとよい。
【００５６】
以上の処理により、パターン中の各線分と対応する撮影画像中の線分が求められる。
【００５７】
次いで、ステップＳ３０４（図３）において、三角測量部１３６は、撮影画像の各画素について３次元位置を求める。具体的には、三角測量部１３６は、対応する線分同士の視差から線分中の各点についての深度を求める。三角測量部１３６は、次に、水平方向に深度を補間することで、線分が存在しない画素も含めて全ての画素における深度を求め、最終的に各画素に写っている被写体の３次元位置を表す点群を求める。以上により、測定対象物１５０の３次元形状の測定が終了する。
【００５８】
［本実施形態の有利な効果］
本実施形態では、線パターンを用いており、各線分およびその周囲の線分の上下端点のＹ座標位置の関係を用いて位置を符号化している。したがって、各線分の周囲の線分（隣接線分）を適切に求める必要がある。本実施形態における投影部１１０が投影する線パターンは、線パターンの各線分の上端位置および下端位置から水平方向に直線を引いたときに、これらの直線は隣接する列の線分部分と交わる、という制約１を満たす。本実施形態では、エピポーララインは撮影画像中において水平なので、パターン中の各点（線分の端点）のＹ座標は、撮影画像中において変化しない。したがって、撮影画像中においても、線分の上端位置および下端位置から水平方向に直線を引いたときに、これらの直線は隣接する列の線分部分と交わる。すなわち、撮影画像中における各線分の隣接線分を求める際に、隣接する列の線分を確実に検出することができる。上記条件を満たさないような線パターンを用いると、２列以上離れた列の線分を隣接線分として検出してしまう可能性があるが、本実施形態ではこのような誤検出を回避できる。隣接線分を正しく検出できることで、３次元位置の算出における誤検出も回避できる。
【００５９】
さらに、隣接線分同士のＹ方向の重複を所定距離以上としているので、キャリブレーションが完全でなく変形が生じたり、撮影画像にノイズ付加されたりした場合であっても、隣接線分を誤検出する可能性を抑制できる。
【００６０】
［変形例］
上記の説明では、投影部１１０とカメラ１２０の光軸が平行であり、したがって、エピポーララインが水平方向であることを前提に説明した。しかしながら、投影部１１０とカメラ１２０の光軸は必ずしも平行でなくても良い。投影部１１０とカメラ１２０の光軸が平行ではない場合は、エピポーララインは平行ではなく、位置によって変化する。図１１（Ａ）はパターンにおけるエピポーラライン（の一部）を示した図である。なお前述の通り、パターン生成素子を用いて光源から照射された光にパターンを形成することからパターンとパターン生成素子の関係は明確であり、パターンにおけるエピポーララインは、パターン生成素子におけるエピポーララインから求めることができる。
【００６１】
一般に、左右（左上、右上、左下、右下）方向の隣接線分は、対象線分の上端位置および下端位置からエピポーララインに沿った方向に直線を伸ばし、最初に交差する線分として求められる。したがって、投影部１１０が投影する線パターンは、図１１（Ｂ）に示すように、各線分の上端位置および下端位置からエピポーララインに沿って直線１１０１、１１０２を引いたときに、これらの直線が隣接する列の線分部分と交わる、という制約を満たすように設定する必要がある。
【００６２】
なお、パターンの各位置におけるエピポーララインの方向は、投影部１１０とカメラ１２０の配置（位置および向き）によって決定される。そこで、投影部１１０とカメラ１２０の配置にあった、線パターンをあらかじめ生成しておくとよい。あるいは、エピポーララインが水平な場合の線パターンを生成しておき、投影部１１０とカメラ１２０の配置に応じてパターンを変形させてもよい。この変形は、レクティフィケーション処理の逆変換処理である。
【００６３】
（第２の実施形態）
本発明の第２の実施形態は、第１の実施形態において用いられる投影光のパターンを生成するためのパターン生成装置である。すなわち、パターン生成装置は下記の制約を満たす線パターンを生成する。
（制約１）各線分の上端位置および下端位置から水平方向に（より正確には、エピポーララインに沿って）直線を引いたときに、これらの直線は隣接する列の線分部分と交わる。（制約２）隣接する線分の線分方向について所定の長さ以上の重複を有する。
【００６４】
［構成］
本実施形態に係るパターン生成装置１２００は、ハードウェア的には通常のコンピュータとして構成される。すなわち、本実施形態に係るパターン生成装置は、ＣＰＵなどのプロセッサ、ＲＡＭやＲＯＭなどのメモリ（記憶装置）、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータとして構成される。本実施形態に係るパターン生成装置１２００は、メモリに格納されたプログラムをＣＰＵが実行することにより、図１２に示すように、設計パラメータ取得部１２０１、ライン生成部１２０２、制約確認部１２０３、反転パターン生成部１２０４として機能する。これらの各機能部については、以下のフローチャートともに説明する。
【００６５】
［処理］
図１３は、本実施形態に係るパターン生成装置が行うパターン生成処理の流れを示すフローチャートである。ここで示すフローチャートは処理の一例であり、その処理内容や処理順序は適宜変更して構わない。なお、ここでは、照明装置（投影部）とカメラの光軸が平行であり、エピポーララインが水平の場合を例に説明する。
【００６６】
ステップＳ１３０１において、設計パラメータ取得部１２０１が、線パターンの設計パラメータを取得する。設計パラメータについて、図１４を参照して説明する。本実施形態においては、設計パラメータは、線分の長さの範囲（最大値および最小値）、線分間の縦間隔の範囲（最大値および最小値）、隣接線分の重なりの範囲（最小値）、列数（固定値）、線幅（固定値）、隣接列の間隔（固定値）を含む。設計パラメータ取得部１２０１は、設定ファイルを読み込むことやユーザからの入力を受け付けることによって、これらの設計パラメータを取得する。
【００６７】
以下、パターン生成装置１２００は、乱数を用いてランダムに１列分ずつパターンを生成していく。なお、ここでは左端の列から右端の列に向かって順次パターンを生成するものとする。以下で、ｋ列目というのは、左端からｋ番目の列を表す。また、パターン全体のうち左側半分は乱数を用いて生成し、右側半分は左側半分のパターンを１８０度回転（反転）させたパターンとして決定する。以下、詳細に説明する。
【００６８】
まず、ライン生成部１２０２は、ステップＳ１３０２において、１列目のパターンをランダムに生成する。各線分の長さおよび線分間の縦間隔は、設計パラメータによって指定される範囲内の一様乱数により決定する。線分の太さ（線幅）は、設計パラメータによって指定された値を用いる。
【００６９】
次に、ループＬ３の処理によって、２列目からＬ／２列目までを生成する。ここで、Ｌは設計パラメータによって指定される列数であり偶数であるものとする。パターン生成装置は、変数ｋを２からＬ／２の範囲で増分させつつ、以下のステップＳ１３０３からＳ１３０７の処理を繰り返し実行する。ステップＳ１３０３において、ライン生成部１２０２は、ｋ列目のパターンをランダムに生成する。この処理はステップＳ１３０２の処理と同様である。次にステップＳ１３０４で、制約確認部１２０３が、ｋ列目のパターンとｋ−１列目のパターンの間で上記の制約１，２を満たすかどうかを確認する。制約１，２のいずれかを満たさない場合には、ステップＳ１３０３に戻ってｋ列目のパターンを再生成する。変数ｋがＬ／２でなければ（Ｓ１３０５−ＮＯ）、ステップＳ１３０３で生成したパターンをｋ列目のパターンとして確定する。一方、変数ｋがＬ／２であれば（Ｓ１３０５−ＹＥＳ）、ステップＳ１３０６において、制約確認部１２０３は、生成した１列分のパターンとこのパターンを上下反転させたパターンとの間でも、上記の制約１，２を満たすか否かをさらに確認する。満たさない場合には、ステップＳ１３０３に戻ってｋ（＝Ｌ／２）列目のパターンを再生成する。
【００７０】
ループＬ３の処理が終了した時点で、１列目からＬ／２列目、すなわちパターン全体の左側半分の列のパターンが決定する。反転パターン生成部１２０４は、ステップＳ１３０８において、左側半分（１列目からＬ／２列目まで）のパターンを１８０度回転させたパターンを、右側半分（Ｌ／２＋１列目からＬ列目まで）のパターンとして決定する。図１５を参照して説明する。図１５（Ａ）は、ループＬ３の処理によって生成された左側半分のパターン１５０１を示す。反転パターン生成部１２０４は、パターン１５０１を１８０度回転させたパターン１５０２を、右側半分のパターンとして決定する。すなわち、Ｌ／２＋１列目のパターンはＬ／２列目のパターンを上下反転したパターンであり、Ｌ／２＋２列目のパターンはＬ／２−１列目のパターンを上下反転したパターンである、といった具合である。これにより、最終的に生成されるパターンは、中心に対して点対称なパターンとなる。
【００７１】
以上のようにして生成されたパターンを表すデータは、パターン記憶部１２０５に記憶される。このパターン記憶部１２０５に記憶されているパターンデータが、３次元測定装置１００に読み込まれて３次元測定の際に用いられる。
【００７２】
［本実施形態の効果］
本実施形態に係るパターン生成装置によれば、上記制約１，２を満たすパターンを生成できる。制約１，２を満たすことで、３次元測定の際に、隣接線分を確実に求めることでき、精度の良い測定が行える。
【００７３】
パターン生成の際に、領域全体の半分の領域のパターンのみを乱数を用いて生成し、残りの半分はこのパターンを１８０度回転させたパターンとして決定している。１８０度回転させても制約１，２を満たすので、全体として制約１，２を満たすパターンを高速に生成することができる。
【００７４】
［変形例］
上記の説明では、ループＬ３の処理において、領域の端から中央に向かって１列ずつパターンを生成している。しかしながら、中央から端に向かって１列ずつパターンを生成してもよい。すなわち、ループＬ３において変数ｋをｋ＝Ｌ／２からｋ＝１まで１ずつ減らしながら処理を行っても良い。この場合、Ｌ／２列目のパターンは、自身を上下反転させたパターンとの間でのみ制約１，２を満たせばよいので、制約が比較的緩くなる。
【００７５】
また、線パターンの列数Ｌは奇数であってもよい。この場合に、先に生成した半分の領域のパターンを１８０度回転させたパターンを残りの領域のパターンとするためには、（Ｌ＋１）／２列目（全体のパターンの中心列）のラインは、上下対称となるように生成するとよい。あるいは、（Ｌ−１）／２列目が（Ｌ＋１）／２列目およびその上下反転の両方との間で制約１，２を満たすように生成し、１列目から（Ｌ−１）／２列目のパターンを上下反転させたパターンを、（Ｌ＋１）／２＋１列目からＬ列目のパターンとして生成してもよい。列数Ｌが奇数の場合には、上述のように、先に（Ｌ＋１）／２列目のパターンを上下対称に生成してから中心列から端に向かってランダムに各列のパターンを生成すると、制約が比較的緩くなるので好ましい。
【００７６】
また、上記の説明では、１列ずつランダムな生成と確認を行っているが、１つの線分や１つのギャップ（縦間隔）をランダムに生成する度に確認を行ってもよい。この場合、１つまたは複数の線分をランダムに生成するたびに、これまでに生成（確定）した線分との間で制約１，２を満たすか否かを確認し、満たす場合はこれら１つまたは複数の線分をパターンとして確定し、そうでなければランダムに再生成する。また、１列ずつではなく、複数列ずつ生成と確認を行っても良い。複数列をまとめて生成する場合には、制約確認部１２０３は、これら複数列の間で制約１，２を満たし、かつ、これまでに生成（確定）したパターンとの境界において制約１，２を満たすか否かを確認する。これらの制約を満たす場合は、生成した複数列のパターンを確定し、そうでなければランダムに再生成する。以上のように、ランダムな生成と制約を満たすか否かの確認をどのような単位で行うかは任意である。
【００７７】
また、上記の説明では、半分の領域のパターンを乱数を用いて生成し、このパターンを１８０度回転させたパターンを残り半分の領域のパターンとしている。しかしながら、領域の全てについて乱数を用いて生成しても構わない。
【００７８】
また、上記の説明では、線分の長さおよび線分の縦間隔を、設計パラメータの範囲内でランダムに決定してから、制約を満たすか否かを判定している。しかしながら、全てに確定している隣接列のパターンから、制約を満たすために必要な線分の上端位置および下端位置の範囲が決定する。すなわち、既に確定した隣接列のパターンから、制約１，２を満たすための線分の長さや線分の縦間隔の範囲が決定される。したがって、設計パラメータとして与えられる範囲と制約１，２を満たすための範囲が重複する範囲の中から、乱数を用いて線分の長さや線分の縦間隔を決定するようにしてもよい。
【００７９】
また、上記の説明では、照明装置とカメラの光軸が平行であり、エピポーララインが水平であることを前提として説明した。しかしながら、照明装置とカメラの光軸が平行ではない場合には、エピポーララインが位置によって異なる。このような場合には、上記制約１を、各線分の上端位置および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は隣接する列の線分と交わる、と読み替えて上記と同じ処理を行えばよい。なお、各画素におけるエピポーララインの方向は、照明装置とカメラの配置に基づいてあらかじめ把握できる。また、パターン生成装置は、エピポーララインが水平である場合の線パターンを生成しておき、照明装置とカメラの配置に応じて線パターンを変形させることによって最終的な線パターンを生成してもよい。この変形は、レクティフィケーション処理の逆変換処理である。
【００８０】
（第３の実施形態）
本発明の第３の実施形態は、第２の実施形態と同様に、第１の実施形態において用いられる投影光のパターンを生成するためのパターン生成装置である。第２の実施形態との違いは、本実施形態においては、より精度の良い３次元測定が行える線パターンを生成するための処理を含む点である。
【００８１】
本実施形態に係るパターン生成装置も、ハードウェア的には第２の実施形態と同様に通常のコンピュータとして構成される。すなわち、本実施形態に係るパターン生成装置は、ＣＰＵなどのプロセッサ、ＲＡＭやＲＯＭなどのメモリ（記憶装置）、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータとして構成される。本実施形態に係るパターン生成装置は、メモリに格納されたプログラムをＣＰＵが実行することにより、図１６に示すように、パターン生成部１６０１、評価部１６０２、パターン選択部１６０３、パターン変形部１６０４として機能する。ここで、パターン生成部１６０１は、第２の実施形態のパターン生成装置１２００（図１２）と同様の機能を有し、上記制約を満たす線パターンを生成するものである。パターン生成部１６０１の詳しい説明の繰り返しは省略し、その他の機能部については以下のフローチャートともに説明する。
【００８２】
ステップＳ１７０１において、パターン生成部１６０１が、上記制約１，２を満たすパターンをＮ個生成する。パターン生成部１６０１によるパターン生成処理は、第２の実施形態で説明したので繰り返しの説明は省略する。ここで、生成するパターン数Ｎは、２以上の整数であれば適宜決定すればよい。
【００８３】
ステップＳ１７０２において、評価部１６０２が、生成したＮ個のパターンのそれぞれについて、当該パターンを用いて３次元測定を行ったときの正確さを表す評価値を算出する。このパターン評価処理Ｓ１６０２の詳細を、図１８を参照して説明する。評価部１６０２は、評価対象のパターンを、３次元測定装置の照明装置から投影するパターンであり、かつカメラが撮影する撮影画像であるとみなす（Ｓ１８０１）。次に、評価部１６０２は、撮影画像（実際には撮影画像とみなしたパターンデータ。以下このような記載は省略する）に対して、所定の変形処理を施す（Ｓ１８０２）。エピポーララインが水平の場合は理想的にはパターンと撮影画像の間でＹ座標は変化しないが、実際の３次元測定においては、キャリブレーションの不完全さ、画像のひずみやノイズなど影響により、撮影画像から抽出される線分のＹ座標位置は変化する。ステップＳ１８０２の変形処理は、この影響を模擬するためのものである。具体的には、評価部１６０２は、平均がゼロで所定の標準偏差を有する正規分布にしたがった乱数を、撮影画像の各線分の上端および下端のＹ座標に加える。または、予め定められた一定の値（オフセット値）を当該Ｙ座標に加えてもよいし、乱数とオフセット値の両方を当該Ｙ座標に加えてもよい。Ｙ座標のみに誤差を与えるのは、上述のように線分の対応付けの際には線分のＹ座標位置が重要だからである。
【００８４】
評価部１６０２は、パターンと変形後の撮影画像の間で線分の対応付け処理を行う（Ｓ１８０３）。この対応付け処理は、第１の実施形態において説明した処理（図６のフローチャート）と同じであるので説明は省略する。評価部１６０２は、この対応付け処理によって、正しく対応付けできた線分の数（あるいは割合）を、評価値として算出する（Ｓ１８０４）。正しい対応付けができないというのは、誤った線分と対応付けがされる場合と、対応する線分が得られない場合を含む。
【００８５】
このようにして算出される評価値は、実際の３次元測定において、線分同士の対応付けの正確さを表す値であるといえる。線分の対応付けの正確さは３次元測定の精度に関連するので、評価値は３次元測定の精度を表す値ともいえる。
【００８６】
次に、ステップＳ１７０３において、パターン選択部１６０３は、Ｎ個のパターンの中から評価値が高い上位Ｍ個のパターンを選択する。Ｍの値は１以上Ｎ−１であればよい。以下、ここで選択された上位Ｍ個のパターンのことを、エリートパターンと称する。
【００８７】
ステップＳ１７０４では、パターン変形部１６０４が、パターン選択部１６０３によって選択されたＭ個のエリートパターンを親パターンとして、Ｎ−Ｍ個の子パターンを再生成する。具体的には、エリートパターンの一部を変更することによって、新しいパターンが生成される。以下、パターン変形処理Ｓ１７０４を詳細に説明する。
【００８８】
図１９（Ａ）は、パターン変形処理Ｓ１７０４の詳細な流れを示すフローチャートである。パターン変形部１６０４は、Ｍ個のエリートパターンの中から１つのパターンをランダムに選択する（Ｓ１９０１）。ここでの選択は、全てのエリートパターンを同じ確率で選択するものであってもよいし、評価値が大きいほど高い確率で選択するものであってもよい。ただし、確率的な選択を行わず、それぞれのエリートパターンを順番に選択するようにしても構わない。
【００８９】
パターン変形部１６０４は、線パターンを構成する複数列のいずれかをランダムに選択する（Ｓ１９０２）。図１９（Ｂ）に示すように、ここで選択された列を左からｋ列目であるとする。すると、パターン変形部１６０４は、図１９（Ｃ）に示すように、ｋ列目よりも右側の列、すなわちｋ＋１列目以降の列を乱数を用いて再生成する（Ｓ１９０３）。ここでのパターンの生成処理は、第２の実施形態で説明した方法と同様であるので、詳しい説明は省略する。なお、ここではｋ＋１列目から右端の列までを再生成しているが、列全体の中間の範囲のみを再生してもよい。
【００９０】
以上により、１つのパターンが再生成できる。この処理をＮ−Ｍ回繰り返すことで、Ｍ個のエリートパターンに基づいたＮ−Ｍ個のパターンが再生成される。
【００９１】
図２０（Ａ）は、パターン変形処理Ｓ１７０４の別の例を示すフローチャートである。ここでは、２つのエリートパターンを組み合わせて新しいパターンを生成する。パターン変形部１６０４は、Ｍ個のエリートパターンの中から２つのパターンＰ１，Ｐ２をランダムに選択する（Ｓ２００１）。この選択も上記と同様に、均等な確率で選択するものであっても良いし、評価値に応じて確率で選択するものであっても良い。次に、パターン変形部１６０４は、図２０（Ｂ）に示すように、線パターンを構成する複数列のうちの一部の範囲をランダムに選択し（Ｓ２００２）、パターンＰ１のうち選択した範囲の列を、パターンＰ２の同じ範囲の列で置換したパターンを生成する（Ｓ２００３）。なお、図２０（Ｂ）では、列全体の中の中間の範囲を選択して置換するように説明しているが、選択範囲をある列から端部までの範囲としても構わない。このようにして２つのパターンを組み合わせて生成したパターンは、選択範囲の境界において上記制約１，２を満たさないことが
考えられる。そこで、パターン変形部１６０４は、選択範囲の境界部の列が上記制約１，２を満たすように調整（列の再生成）を行う（Ｓ２００４）。
【００９２】
以上により、１つのパターンが再生成できる。この処理をＮ−Ｍ回繰り返すことで、Ｍ個のエリートパターンに基づいたＮ−Ｍ個のパターンが再生成される。
【００９３】
Ｍ個のエリートパターンに基づいてＮ−Ｍ個の新しいパターンが得られたら、繰り返し処理を判定するか否かの判定を行う（Ｓ１７０５）。処理を繰り返すと判定された場合には、Ｍ個のエリートパターンとＮ−Ｍ個の新しいパターンの合計Ｎ個のパターンを対象として、上記のステップＳ１７０２〜Ｓ１７０４の処理を再実行する。一方、繰り返しを終了すると判定された場合には、Ｍ個のエリートパターンとＮ−Ｍ個の新しいパターンの合計Ｎ個のパターンについて評価部１６０２が評価値を算出し（Ｓ１７０６）、パターン選択部１６０３が最も評価値の高いパターンを選択する（Ｓ１７０７）。以上のようにして生成されたパターンを表すデータは、パターン記憶部１６０５に記憶される。このパターン記憶部１６０５に記憶されているパターンデータが、３次元測定装置１００が読み込まれて３次元測定の際に用いられる。
【００９４】
ステップＳ１７０５の繰り返し終了判定は、次のようにして行うことができる。例えば、繰り返し処理回数をあらかじめ定めておいて繰り返し回数がこの回数に達したか否かにより、繰り返しを終了するか否かを判定できる。あるいは、最も評価値の高いパターンが所定の繰り返し回数変化しなかった場合に、繰り返し処理を終了すると判定することもできる。また、各パターンの評価値の最大値あるいは平均値が所定の値以上となった場合に、繰り返し処理を終了すると判定することもできる。
【００９５】
［本実施形態の有利な効果］
本実施形態では、評価値を用いて実際の３次元測定における測定精度を評価している。そして、評価値の高いパターンに基づいて新しいパターンを再生成しているので、より良いパターンが得られることが期待できる。したがって、本実施形態によるパターン生成装置が生成する線パターンは、実際の測定において線分の誤対応が発生しにくく、精度の良い３次元測定が行える。
【００９６】
［変形例］
上記の説明では、パターンの再生成処理（図１７のステップＳ１７０２〜Ｓ１７０４）を繰り返し実行しているが、この処理を繰り返さずに１回のみ行ってもかまわない。再生成処理を１回しか行わなくても、単純にＮ個の線パターンを生成して評価のよいパターンを選択するよりも良いパターンを生成できる。
【００９７】
さらに、パターンの再生成処理を行わずに、Ｎ個の線パターンを生成して評価が最も良いパターンを選択するようにしてもよい。このようにしても、１つのみのパターンを生成するよりも良いパターンを生成できる。
【符号の説明】
【００９８】
１００：３次元測定装置    １１０：投影部    １２０：カメラ
１３０：演算装置    １３１：パターン光生成部    １３２：制御部    １３３：画像入力部
１３４：線分抽出部  １３５：対応付け処理部  １３６：３次元値算出部  
１２００：パターン生成装置    １２０１：設計パラメータ取得部    １２０２：ライン生成部
１２０３：制約確認部    １２０４：反転パターン生成部    １２０５：パターン記憶部１６００：パターン生成装置    １６０１：パターン生成部    １６０２：評価部
１６０３：パターン選択部    １６０４：パターン変形部    １６０５：パターン記憶部
【図１】
0006583674.tif 000003
【図２】
0006583674.tif 000004
【図３】
0006583674.tif 000005
【図４】
0006583674.tif 000006
【図５】
0006583674.tif 000007
【図６】
0006583674.tif 000008
【図７】
0006583674.tif 000009
【図８】
0006583674.tif 000010
【図９】
0006583674.tif 000011
【図１０】
0006583674.tif 000012
【図１１】
0006583674.tif 000013
【図１２】
0006583674.tif 000014
【図１３】
0006583674.tif 000015
【図１４】
0006583674.tif 000016
【図１５】
0006583674.tif 000017
【図１６】
0006583674.tif 000018
【図１７】
0006583674.tif 000019
【図１８】
0006583674.tif 000020
【図１９】
0006583674.tif 000021
【図２０】
0006583674.tif 000022