(58)【調査した分野】(Int.Cl.,DB名)
N個のパターンの中から前記評価手段による評価が高い上位M個(Mは1以上N−1以下の整数)に基づく新たなパターンの生成は、前記上位M個のパターンの中から1つを選択し、選択されたパターンの一部分を再生成することによって行われる、
請求項9または10に記載のパターン生成装置。
複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンを有するパターン光を、照明手段から測定対象物に投影する照明ステップと、
前記パターン光が投影された前記測定対象物を撮像手段によって撮影する撮像ステップと、
演算手段が、撮影画像における線分の切断点の位置と前記線分の周囲の線分の切断点の位置を用いて、前記撮影画像における前記線分と前記パターンにおける線分との対応を求めて、前記測定対象物の3次元位置を算出する算出ステップと、
を含み、
前記パターンは、前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わり、
前記算出ステップでは、
前記パターン中のターゲット線分と対応する線分の候補を、前記撮影画像における線分の上端および下端の位置に基づいて抽出し、
候補線分の上、下、左上、右上、左下、右下の6つの隣接線分の上端および下端の位置に基づいて対応の正確さを表す評価値を求め、
当該評価値に基づいて前記パターン中のターゲット線分に対応する前記撮影画像中の線分を決定する、
ことを特徴とする3次元測定方法。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は上記実情に鑑みなされたものであって、本発明の目的は、線パターンを用いたアクティブステレオ測量において精度の良い3次元位置測定が可能な手法を提供することである。
【課題を解決するための手段】
【0009】
上記の課題を解決するために、本発明の第一の態様は、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンを有するパターン光を測定対象物に投影する照明手段と、前記パターン光が投影された前記測定対象物を撮影する撮像手段と、撮影画像における線分の上端および下端の位置と前記線分の周囲の線分の上端および下端の位置を用いて、前記撮影画像における前記線分と前記パターンにおける線分との対応を求めて、前記測定対象物の3次元位置を算出する算出手段と、を備える3次元測定装置である。ここで、前記パターンは、前記パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わる、という制約を満たすことを特徴とする。
【0010】
このような制約を満たす線パターンを採用すれば、線パターンにおける各線分の上端および下端を通るエピポーララインに沿って隣接線分を探索する際に、かならず隣接列の線分が見つけられる。すなわち、撮影画像中において線分の隣接線分を求める際の誤検出を抑制できる。なお、誤検出には、実際には隣接していない線分を隣接線分として検出してしまうことと、隣接線分を見つけられないことの両方が含まれる。
【0011】
なお、本発明における線パターンは、構成要素である線分の全てについて上記の制約を満たすことが好ましい(ただしパターン端部列の線分については隣接する線分との間で制約を満たせばよい)。全ての線分に関して隣接線分を正しく求められるためである。しかしながら、一部の線分について上記の制約を満たさなかったとしても全体的には精度の良い測定が可能である。したがって、一部の線分については上記の制約を満たさなくても構わない。本発明においては、線パターンを構成する全線分のうち90%以上の線分について上記の制約を満たすことが好ましく、全線分のうち95%以上の線分について上記の制約を満たすことがさらに好ましく、全線分について上記の制約を満たすことが最も好ましい。
【0012】
上記の説明において、投影光のパターンは複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンである、と記載しているが、これはパターンの生成方法を特定するものではない。この記載は、パターンの形状自体を特定するものである。したがって、上記のパターンは、任意の手法によって生成されたものであって構わない。
【0013】
本態様において、照明手段と撮像手段の光軸を略平行とし、上記のパターンにおける線分をエピポーララインと垂直とすることが好ましい。この場合、上記の制約は、パターンにおける線分の上端および下端位置を通る当該線分の垂線が、前記線分のいずれの側においても隣接列の線分と交わるという制約と等しくなる。
【0014】
また、本態様において、左右方向に隣接する線分同士は、線分方向について所定の長さ以上の重なりを有することが好ましい。すなわち、前記パターンは、前記パターンにおける線分の上端位置からエピポーララインに沿って直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の下端位置よりも所定の長さ以上、上の位置で交
わり、前記線分の下端位置からエピポーララインに沿って直線を引いたときに、当該直線は前記線分のいずれの側においても隣接列の線分の上端位置よりも所定の長さ以上、下の位置で交わる、ことが好ましい。ここでの所定の長さは、撮影画像の歪みやノイズに伴って生じうる位置ズレ量もしくはそれ以上の値であることが好ましい。このようにすれば、画像撮影時に歪みやノイズが生じた場合であっても、隣接線分を正しく求めることができる。
【0017】
本発明の第
二の態様は、照明手段と撮像手段を有する3次元測定装置における照明手段が投影する投影光のパターンを生成するパターン生成装置である。本態様に係るパターン生成装置が生成するパターンは、複数列に平行に並ぶ直線をそれぞれランダムな位置および間隔で切断して複数の線分に分割したパターンであり、かつ、当該パターンにおける線分の上端および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は前記線分のいずれの側においても隣接列の線分と交わるという制約を満たす、ことを特徴とする。
【0018】
本態様に係るパターン生成装置は、1つまたは複数の線分のパターンをランダムに仮生成して、上記制約を満たさなければ再生成し、上記制約を満たせばパターンとして採用するようにする。すなわち、本態様に係るパターン生成装置は、線分の長さおよび線分間の間隔(縦間隔)をランダムに決定して1つまたは複数の線分を生成する生成手段と、新たに生成した1つまたは複数の線分と、既にパターンとして確定した線分との間で、上記制約を満たすか否かを確認する確認手段と、を備え、前記制約を満たす場合は新たに生成した1つまたは複数の線分をパターンの一部として確定し、前記制約を満たさない場合は前記制約を満たすまで前記生成手段による生成と前記確認手段による確認を繰り返す、ことができる。このようにすれば、上記の制約を満たすパターンを生成することができる。なお、線分の太さと隣接列の線分同士の間隔は、それぞれ固定値を用いればよい。
【0019】
上記の構成において、1列ずつ、ランダムな生成と制約を満たすか否かの確認を行うことができる。あるいは、複数列ずつ、ランダムな生成と制約を満たすか否かの確認を行うことができる。
【0020】
本態様に係るパターン生成装置は、全体の列数の半分の列については、前記生成手段と前記確認手段を用いて生成し、残りの半分については、前記生成手段と前記確認手段を用いて生成されたパターンを180度回転させたパターンとして生成する、ことが好ましい。制約を満たすパターンは180度回転させても制約を満たすので、ランダムに生成したパターンと回転させたパターンの境界部を除いて制約を必ず満たす。境界部において制約を満たさない場合には、上記制約を満たすように境界部分のいずれかまたは両方の列のパ
ターンを再生成すればよい。このようにすれば、ランダムに生成する列の数を全体の半分としつつ全体として制約を満たすパターンを生成できるので、処理が高速化される。
【0021】
本態様に係るパターン生成装置は、生成したパターンに所定の変形処理を加えたパターンを3次元測定装置における撮像手段によって撮影される画像とみなして、生成したパターンとの間で線分の対応関係を求めて、求められた対応関係の正確さを評価する評価手段をさらに有し、前記制約を満たす複数のパターンを生成して、前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、ことが好ましい。ここで、上記所定の変形処理は、実際の3次元測定を行う際に生じる歪みやノイズに起因する線分抽出時の変形を模擬したものとすることが好ましい。上述のように線パターンを用いた3次元測定では、各線分の上下方向の位置を用いて線分の対応関係が求められるので、撮影画像とみなすパターンにおける各線分の上下方向の位置にランダムな誤差またはオフセット誤差を与えることが好ましい。このランダムな誤差は、例えば、平均がゼロで所定の標準偏差にしたがった正規分布にしたがった乱数により決定するとよい。また、このオフセット誤差は、例えば、予め定められた一定の値とするとよい。このようにすれば、生成したパターンを用いて3次元測定を行ったときの対応関係の正確さを評価することができ、最も正確な対応関係が得られるパターンを選択することができる。なお、対応関係の正確さは、3次元測定において用いられるロジックと同様のロジックを用いて線分の対応関係を求め、正しい対応関係が得られた線分の数あるいは割合として求めることができる。
【0022】
また、本態様に係るパターン生成装置は、前記制約を満たすパターンをN個(Nは2以上の整数)生成して、N個のパターンの中から前記評価手段による評価が高い上位M個(Mは1以上N−1以下の整数)に基づいてN−M個のパターンを新たに生成し、前記上位M個のパターンと、新たに生成したN−M個のパターンの中から前記評価手段による評価が最も高いパターンを最終的なパターンとして決定する、ことも好ましい。このように、評価の高いパターンを変形させて新たなパターンを生成することで、より評価の高いパターンが得られる可能性がある。
【0023】
ここで、N個のパターンの中から前記評価手段による評価が高い上位M個に基づいてN−M個のパターンを新たに生成する処理を、繰り返し実行する、ことも好ましい。繰り返しの際には、評価が高い上位M個のパターンと新たに生成したN−M個のパターンの合計N個のパターンの中から、改めて評価が高い上位M個を選択するとよい。繰り返しに応じて、より評価の高いパターンが生成される可能性が高まる。ここで、繰り返しを終了する判定基準は、例えば、繰り返し処理をあらかじめ定められた所定回数行った場合、最も評価値の高いパターンが所定回数の繰り返し処理後でも変化しない場合、最も高い評価値が閾値以上となった場合などとすることができる。
【0024】
また、N個のパターンの中から前記評価手段による評価が高い上位M個(Mは1以上N−1以下の整数)に基づく新たなパターンの生成は、前記上位M個のパターンの中から1つを選択し、選択されたパターンの一部分を再生成することによって行われる、ことができる。ここで、上位M個のパターンの中から1つのパターンを選択する処理は、均等な確率でランダムに選択してもよいし、評価値に応じた確率でランダムに選択してもよいし、上位M個のパターンを順番に選択してもよい。また、選択された一部分の再生成は、ランダムに行ってもよいし、評価が高い上記M個のパターンのうち選択されたパターン以外のパターンの一部分で置き換えることによって行ってもよい。
【0025】
なお、本発明は、上記手段の少なくとも一部を含む3次元測定装置
、パターン生成装置として捉えることができる。また、本発明は、上記手段が行う処理の少なくとも一部を含む3次元測定方法
、パターン生成方法として捉えることもできる。また、これらの方法の各ステップをコンピュータに実行させるためのコンピュータプログラムや、当該プログラムを非一時的に記憶したコンピュータ読取可能な記憶媒体として捉えることもできる。上記構成および処理の各々は技術的な矛盾が生じない限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【0026】
本発明によれば、線パターンを用いたアクティブステレオ測量において精度の良い3次元位置測定が可能となる。
【発明を実施するための形態】
【0028】
(第1の実施形態)
以下、図面を参照して本発明の好適な実施形態について説明する。本実施形態に係る3次元測定装置は、測定対象物にパターン光を投影して撮影を行い、三角測量の原理を用いて測定対象物の3次元形状を測定する。
【0029】
[構成]
図1は、本実施形態に係る3次元測定装置100の構成を示す図である。3次元測定装置100は、大略、投影部110、カメラ120、演算装置130から構成される。
【0030】
(投影部)
投影部110は、測定対象物150に対して、パターン光(構造化光)を投影するためのものであり、ハロゲンランプやキセノンランプなどの光源、光源から照射された光にパターンを形成するための液晶素子などのパターン生成素子、およびマイクロレンズなどの光学系を備える。この他に、光源として半導体レーザを用いた場合は、パターン生成素子として光学回折素子またはMEMSスキャナを用いて投影部110を構成することもできる。投影部110が投影する光は、近赤外光などの不可視光であってもよい。本実施形態においては光のパターンは、パターン記憶部131が記憶しており、パターン記憶部131から出力されるデータに基づいて制御部132が投影部110を制御することにより、投影部110からパターン光が投影される。
【0031】
本実施形態において、投影部110の光軸は、カメラ120の光軸と平行に設定されている。投影部110とカメラ120が並ぶ方向を水平方向(X方向)とすると、投影パターンにおけるエピポーララインは水平方向となる。以下では、エピポーララインが水平であるものとして説明する。
【0032】
投影部110が投影する光のパターンについて説明する。本実施形態において投影部110が投影する光のパターンは、複数列に平行に並ぶ直線をそれぞれランダムな(不規則な)位置および間隔で切断して複数の線分に分割したパターンである。以下、本実施形態において使用するこのようなパターンを「線パターン」と称する。本実施形態において使用する線パターンの例を、
図2(A)に示す。線パターンでは、各線分の上端位置と下端位置および、当該線分と上、下、右上、左上、右下、左下のそれぞれの方向で隣接する各隣接線分(合計6本)の上端位置と下端位置(14個の値の組み合わせ)によって、符号化が行われる。つまり、撮影画像中において、各線分の隣接線分を求めて、その上端位置および下端位置を算出することによって、投影パターン中において対応する線分を決定することができる。
【0033】
本実施形態における線パターンは、
図2(B)に示すように、
(制約1)各線分の上端位置および下端位置から水平方向に(より正確には、エピポーララインに沿って)直線を引いたときに、これらの直線は隣接する列の線分部分と交わる、
という制約を満たす。
図2(B)において、線分200の上端位置および下端位置からそれぞれ水平方向に引いた直線201〜204は、いずれも隣接列の線分と交わっている。
【0034】
本実施形態における線パターンはさらに、
(制約2)隣接する線分の線分方向について所定の長さ以上の重複を有する、
という制約をさらに満たす。
図2(B)において、線分200と隣接線分の重複205〜208はいずれも所定の長さ以上ある。この制約2は、線分の上端位置から水平方向に(より正確には、エピポーララインに沿って)直線を引いたときに、隣接列の線分の下端位置から所定の長さ以上上で交わり、線分の下端位置から水平方向に直線を引いたときに、隣接列の線分の上端位置から所定の長さ以上下で交わる、とも表現できる。ここでの所定の長さは、撮影画像の歪みやノイズに伴って生じうる位置ズレ量以上とすることが好ましい。
【0035】
上記制約を満たさないパターンを
図2(C)に示す。
図2(C)に示すパターンでは、線分200の上端位置から水平右方向に直線209を引いたときに、この直線209は隣接列の線分と交わらない。したがって、
図2(C)に示すパターンは上記制約を満たさない。
【0036】
後述するように、撮影画像における各線分の隣接線分を求める際には、線分の上端位置
および下端位置から水平方向に沿って探索を行い、最初に交差した線分を隣接線分として決定する。撮影画像中におけるパターンの形状は、測定対象物150の形状によって変化するが、垂直方向(Y方向)の位置関係は変化しない。したがって、上記制約を満たす線パターンを用いることで、撮影画像における各線分の隣接線分を、正しく求めることができる。
【0037】
(カメラ)
カメラ120は、パターン光が投影された測定対象物150を撮影する。カメラ120は、制御部132からの指令に基づき、投影部110からのパターン光の投影と同期して撮影処理を行う。カメラ120が撮影した画像データは、画像入力部133に入力される。
【0038】
(演算装置)
演算装置130は、CPUなどのプロセッサ、RAMやROMなどのメモリ(記憶装置)、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータである。演算装置130は、メモリに格納されたプログラムをCPUが実行することにより、パターン記憶部131、制御部132、画像入力部133、3次元位置算出部137などの機能を提供する。なお、3次元位置算出部137は、線分抽出部134、対応付け処理部135、三角測量部136の機能を備える。演算装置130の各機能部については、以下のフローチャートとともに説明する。
【0039】
[処理]
図3は、本実施形態に係る3次元測定装置100が行う3次元測定処理の流れを示すフローチャートである。ここで示すフローチャートは処理の一例であり、その処理内容や処理順序は適宜変更して構わない。なお、投影部110とカメラ120のキャリブレーション(較正処理)は完了しているものとし、パターン上の点とそれに対応する撮影画像の点は同じY座標になるように調整されている。
【0040】
まず、ステップS301において、線パターンのパターン光を投影部110から測定対象物150に対して投影し、パターン光の投影にあわせてカメラ120が測定対象物150を撮影する。この処理では、制御部132が、パターン記憶部131からパターンデータを読み出し、このパターンデータを投影部110に出力する。投影部110は、パターンデータにしたがって液晶素子を制御して、指定されたパターンの光を測定対象物150に投影する。カメラ120によって撮影された画像データは、画像入力部133に入力されて、一時的に記憶される。
【0041】
図4は、ステップS301において投影される投影光のパターン(A)とパターン光が投影された測定対象物150を撮影した撮影画像の例(B)を示す図である。直線からなるパターン光は測定対象物150の形状に応じて歪んだ形状として撮影される。ここで、投影光のパターン中の各点は、撮影画像中ではエピポーラライン上に位置する。そして、本実施形態では、エピポーララインが撮影画像中において水平方向であると仮定している。したがって、投影光のパターンにおける各点のY座標位置(垂直方向の位置)は撮影画像中においても変化しない。
【0042】
ステップS302において、線分抽出部134は、入力画像から線分を抽出する。線分抽出処理S302の詳細な流れを
図5に示す。線分抽出部134は、まず、入力画像を二値化する(S501)。より具体的には、線分抽出部134は、入力画像のサイズを半分に縮小した後、横方向の微分フィルタを適用してエッジ強度が高い部分を抽出し、抽出した領域に対して適応二値化処理を施す。適応二値化処理では、例えば、一辺15画素の大
きさのウィンドウ内の平均輝度値を閾値として二値化を行う。線分抽出部134は、適応二値化処理後の画像を、サイズを2倍にして元のサイズに戻す。画像サイズを半分にしてから二値化処理を施すのは、線分の幅が太いと線分の幅方向中心でのエッジ強度が弱く検出され二値化処理時に中心部分が抜けてしまう現象を回避するためである。
【0043】
次に、線分抽出部134は、二値化処理後の画像から線分の領域を抽出する(S502)。具体的には、線分抽出部134は、画像中の高輝度部分の連結領域をラベリングし、誤検出領域を除去した後、細線化処理を施す。誤検出領域は、例えば、所定の幅以上ある連結領域として検出できる。また、細線化処理では、各連結領域の水平方向(X方向)の中心ピクセルを線分の座標とする。この処理により、線分の座標を画素単位で求めることができる。
【0044】
線分抽出部134は、線分の座標をサブ画素単位で求める。まず、X座標のサブピクセル推定(S503)について説明する。線分抽出部134は、ステップS502において求められた線分位置を中心とした所定の範囲におけるX方向の輝度プロファイルを取得する。この輝度プロファイルは、二値化処理前の画像を対象として行う。線分抽出部134は、輝度プロファイルにおける重心位置をサブ画素単位で求める。線分の中の各Y座標に対してX方向の重心位置を求めた後、線分抽出部134は、複数のY座標のX方向重心位置からなる線に対してさらに平滑化処理を施す。線分抽出部134は、このようにして得られたサブ画素精度の重心位置を線分のX座標とする。
【0045】
次に、線分の上端および下端位置のY座標のサブピクセル推定(S504)について説明する。線分抽出部134は、線分の端点よりも所定画素だけ内側の点を用いて、線分の傾きを求める。端点ではなく内側の点を用いるのは、端点ではノイズが多く正確な傾き算出が困難なためである。線分抽出部134は、求めた傾きに沿って二値化前の画像の輝度プロファイルを求め、プロファイル中において最大値と最小値の中間値を取る点のY座標をサブ画素単位で求めて、この座標を線分端点のY座標として決定する。
【0046】
以上の処理により、撮影画像中の線分の位置(座標)を、サブ画素単位で求めることができる。
【0047】
線分抽出処理S302が終了すると、ステップS303(
図3)において、対応付け処理部135が、撮影画像中の線分とパターンにおける線分との対応関係を求める。対応付け処理S303の詳細な流れを
図6に示す。対応付け処理S303は、ループL1の処理において、撮影画像中の各線分について6方向の隣接線分を特定する。
【0048】
ステップS601では、対応付け処理部135は、ターゲット線分LS1と上下方向において隣接する線分をそれぞれ求める。ここでは、上方向の隣接線分の求め方を
図7(A)を参照して説明する。対応付け処理部135は、以下の条件を満たす線分LS2を探す。
(条件1)線分LS2の下端B2のY座標位置がターゲット線分LS1の上端T1よりも上にあり、かつ、
(条件2)線分LS2の下端B2とターゲット線分LS1の上端T1を結ぶ直線と、ターゲット線分LS1の傾き(上端T1と下端B1を結ぶ直線)とのなす角度θが45度以内である。
これらの条件を満たす線分LS2が複数存在する場合は、対応付け処理部135は、上端T1と下端B2の間の重みつき距離が最小となる線分を、ターゲット線分LS1の上方向隣接線分として特定する。なお、重みつき距離は、上端T1と下端B2の変位のうち、線分LS1の傾きに沿った変位をLy、線分LS1の傾きと垂直な変位をLxとしたときに、例えば、[4Lx
2+Ly
2]
1/2として求めることができる。すなわち、線分L
S1の傾きと垂直な方向への変位に対して、傾きに沿った方向の変位よりも大きな重み付けをして得られる距離を、重み付き距離とする。なお、ここでは上方向の隣接線分の求め方を説明したが、下方向の隣接線分も同様にして求めることができる。
【0049】
次に、ステップS602において、対応付け処理部135は、左上、右上、左下、右下の4方向の隣接線分をそれぞれ求める。ここでは、左上方向の隣接線分の求め方を
図7(B)を参照して説明する。対応付け処理部135は、具体的には、ターゲット線分LS1の上端T1から水平左方向に向かって直線を伸ばし、この直線と最初に交差した線分をターゲット線分LS1の左上方向の隣接線分として特定する。右上、左下、右下の各方向の隣接線分も同様にして求めることができる。
【0050】
撮影画像中の各線分について隣接線分が特定されたら、対応付け処理部135は、ループL2の処理において、パターン中の各線分と対応する撮影画像中の線分を特定する。以下のループL2内では、パターン中の各線分をターゲット線分として処理を繰り返す。
【0051】
対応付け処理部135は、まず、ターゲット線分と対応する線分の候補を撮影画像中から抽出する(S603)。具体的には、
図8に示すように、線分の上端位置と下端位置の少なくともいずれか一方がターゲット線分801の上端位置および下端位置と許容誤差の範囲内で一致し、かつ、視差(撮影画像中におけるX方向位置)が所定の探索範囲内である、という条件を満たす線分が対応候補として抽出される。
図8においては、線分802はその上端および下端が線分801の上端および下端と、線分803の上端は線分801の上端と、線分804の下端は線分801の下端と、それぞれ許容誤差の範囲内で一致する。さらに、線分802〜804の視差は、探索範囲内である。したがって、ターゲット線分801に対応する線分の候補として、線分802〜804が抽出される(線分の横の丸印は対応候補であることを示す)。線分805については、上端および下端が線分801の上端および下端と許容誤差の範囲内で一致するものの、視差が探索範囲よりも大きいため対応候補としては抽出されない。なお、ここでは上端位置と下端位置の少なくとも一方が許容誤差の範囲で一致することを条件としているが、上端位置と下端位置の両方が誤差の範囲で一致することを条件としてもよい。
【0052】
対応付け処理部135は、抽出された対応候補のそれぞれに対して、ターゲット線分との対応の正確さを表す評価値を計算する(S604)。ここでは、値が小さいほど対応付けが正しい可能性が高く、値が大きいほど対応付けが間違っている可能性が高い評価値を用いる。したがって、評価値のことをコストとも称する。コスト(評価値)は、
図9に示すように、ターゲット線分および6方向の隣接線分のそれぞれについて、上端のY座標の差(絶対値)と下端のY座標の差(絶対値)の合計として定義される。パターンにおけるターゲット線分の上端および下端Y座標をy
p0U,y
p0Dとし、隣接線分の上端および下端Y座標をy
piU,y
piD(i=1〜6)とし、撮影画像におけるターゲット線分の上端および下端Y座標をy
c0U,y
c0Dとし、隣接線分の上端および下端Y座標をy
ciU,y
ciD(i=1〜6)とすると、コストは次式のように定義される。
【数1】
【0053】
ここで、パターンと撮影画像における各点のY座標は変わらず、線分同士の対応が正しければ上記のコストは理想的にはゼロになる。したがって、対応付け処理部135は、コストが最小の線分を、パターン中のターゲット線分に対応する撮影画像中の線分として決定する(S605)。互いに対応する線分は、対応ペアとして記憶される。
【0054】
対応付け処理部135は、ステップS605において求めた対応が誤対応であるか否かを確認し、誤対応の場合は対応ペアから除去する(S606)。正しい対応線分が得られている場合には、
図10(A)に示すように、パターン中のターゲット線分LS1と対応する撮影画像中の線分LS1’の隣接線分LS2’は、パターン中のターゲット線分LS1の隣接線分LS2と対応する撮影画像中の線分LS2’と等しくなる。一方、正しい対応線分が得られていない場合には、
図10(B)に示すように、パターン中のターゲット線分LS1と対応する撮影画像中の線分LS1’の隣接線分LS3’と、パターン中のターゲット線分LS1の隣接線分LS2と対応する撮影画像中の線分LS2’が等しくない。したがって、対応線分の隣接線分が隣接線分の対応線分と等しいか否かを判定することにより、対応関係が正しいか否かを決定することができる。本実施形態では、6方向のいずれについてもターゲット線分の隣接線分と隣接線分の対応線分が異なる場合に、対応付け処理部135はステップS605において求めた対応が誤対応であると判断する。ただし、6方向のうち所定数(1〜6個)以上についてターゲット線分の隣接線分と隣接線分の対応線分が異なる場合に、誤対応であると判断してもよい。対応付け処理部135は、ステップS606において誤対応であると判定された線分ペアは対応ペアから除去する。なおここでは、パターン中のターゲット線分を起点として対応付けの正しさを確認したが、ターゲット線分に対応すると判定された撮影画像中の線分を起点として対応付けの正しさを確認してもよい。
【0055】
なお、対応付け処理部135は、撮影画像中において隣接線分との深度が所定距離以上異なる場合についても、誤対応と判断して良い。深度の差は、それぞれの線分の各位置における深度の中間値の差として評価するとよい。
【0056】
以上の処理により、パターン中の各線分と対応する撮影画像中の線分が求められる。
【0057】
次いで、ステップS304(
図3)において、三角測量部136は、撮影画像の各画素について3次元位置を求める。具体的には、三角測量部136は、対応する線分同士の視差から線分中の各点についての深度を求める。三角測量部136は、次に、水平方向に深度を補間することで、線分が存在しない画素も含めて全ての画素における深度を求め、最終的に各画素に写っている被写体の3次元位置を表す点群を求める。以上により、測定対象物150の3次元形状の測定が終了する。
【0058】
[本実施形態の有利な効果]
本実施形態では、線パターンを用いており、各線分およびその周囲の線分の上下端点のY座標位置の関係を用いて位置を符号化している。したがって、各線分の周囲の線分(隣接線分)を適切に求める必要がある。本実施形態における投影部110が投影する線パターンは、線パターンの各線分の上端位置および下端位置から水平方向に直線を引いたときに、これらの直線は隣接する列の線分部分と交わる、という制約1を満たす。本実施形態では、エピポーララインは撮影画像中において水平なので、パターン中の各点(線分の端点)のY座標は、撮影画像中において変化しない。したがって、撮影画像中においても、線分の上端位置および下端位置から水平方向に直線を引いたときに、これらの直線は隣接する列の線分部分と交わる。すなわち、撮影画像中における各線分の隣接線分を求める際に、隣接する列の線分を確実に検出することができる。上記条件を満たさないような線パターンを用いると、2列以上離れた列の線分を隣接線分として検出してしまう可能性があるが、本実施形態ではこのような誤検出を回避できる。隣接線分を正しく検出できることで、3次元位置の算出における誤検出も回避できる。
【0059】
さらに、隣接線分同士のY方向の重複を所定距離以上としているので、キャリブレーションが完全でなく変形が生じたり、撮影画像にノイズ付加されたりした場合であっても、隣接線分を誤検出する可能性を抑制できる。
【0060】
[変形例]
上記の説明では、投影部110とカメラ120の光軸が平行であり、したがって、エピポーララインが水平方向であることを前提に説明した。しかしながら、投影部110とカメラ120の光軸は必ずしも平行でなくても良い。投影部110とカメラ120の光軸が平行ではない場合は、エピポーララインは平行ではなく、位置によって変化する。
図11(A)はパターンにおけるエピポーラライン(の一部)を示した図である。なお前述の通り、パターン生成素子を用いて光源から照射された光にパターンを形成することからパターンとパターン生成素子の関係は明確であり、パターンにおけるエピポーララインは、パターン生成素子におけるエピポーララインから求めることができる。
【0061】
一般に、左右(左上、右上、左下、右下)方向の隣接線分は、対象線分の上端位置および下端位置からエピポーララインに沿った方向に直線を伸ばし、最初に交差する線分として求められる。したがって、投影部110が投影する線パターンは、
図11(B)に示すように、各線分の上端位置および下端位置からエピポーララインに沿って直線1101、1102を引いたときに、これらの直線が隣接する列の線分部分と交わる、という制約を満たすように設定する必要がある。
【0062】
なお、パターンの各位置におけるエピポーララインの方向は、投影部110とカメラ120の配置(位置および向き)によって決定される。そこで、投影部110とカメラ120の配置にあった、線パターンをあらかじめ生成しておくとよい。あるいは、エピポーララインが水平な場合の線パターンを生成しておき、投影部110とカメラ120の配置に応じてパターンを変形させてもよい。この変形は、レクティフィケーション処理の逆変換処理である。
【0063】
(第2の実施形態)
本発明の第2の実施形態は、第1の実施形態において用いられる投影光のパターンを生成するためのパターン生成装置である。すなわち、パターン生成装置は下記の制約を満たす線パターンを生成する。
(制約1)各線分の上端位置および下端位置から水平方向に(より正確には、エピポーララインに沿って)直線を引いたときに、これらの直線は隣接する列の線分部分と交わる。(制約2)隣接する線分の線分方向について所定の長さ以上の重複を有する。
【0064】
[構成]
本実施形態に係るパターン生成装置1200は、ハードウェア的には通常のコンピュータとして構成される。すなわち、本実施形態に係るパターン生成装置は、CPUなどのプロセッサ、RAMやROMなどのメモリ(記憶装置)、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータとして構成される。本実施形態に係るパターン生成装置1200は、メモリに格納されたプログラムをCPUが実行することにより、
図12に示すように、設計パラメータ取得部1201、ライン生成部1202、制約確認部1203、反転パターン生成部1204として機能する。これらの各機能部については、以下のフローチャートともに説明する。
【0065】
[処理]
図13は、本実施形態に係るパターン生成装置が行うパターン生成処理の流れを示すフローチャートである。ここで示すフローチャートは処理の一例であり、その処理内容や処理順序は適宜変更して構わない。なお、ここでは、照明装置(投影部)とカメラの光軸が平行であり、エピポーララインが水平の場合を例に説明する。
【0066】
ステップS1301において、設計パラメータ取得部1201が、線パターンの設計パラメータを取得する。設計パラメータについて、
図14を参照して説明する。本実施形態においては、設計パラメータは、線分の長さの範囲(最大値および最小値)、線分間の縦間隔の範囲(最大値および最小値)、隣接線分の重なりの範囲(最小値)、列数(固定値)、線幅(固定値)、隣接列の間隔(固定値)を含む。設計パラメータ取得部1201は、設定ファイルを読み込むことやユーザからの入力を受け付けることによって、これらの設計パラメータを取得する。
【0067】
以下、パターン生成装置1200は、乱数を用いてランダムに1列分ずつパターンを生成していく。なお、ここでは左端の列から右端の列に向かって順次パターンを生成するものとする。以下で、k列目というのは、左端からk番目の列を表す。また、パターン全体のうち左側半分は乱数を用いて生成し、右側半分は左側半分のパターンを180度回転(反転)させたパターンとして決定する。以下、詳細に説明する。
【0068】
まず、ライン生成部1202は、ステップS1302において、1列目のパターンをランダムに生成する。各線分の長さおよび線分間の縦間隔は、設計パラメータによって指定される範囲内の一様乱数により決定する。線分の太さ(線幅)は、設計パラメータによって指定された値を用いる。
【0069】
次に、ループL3の処理によって、2列目からL/2列目までを生成する。ここで、Lは設計パラメータによって指定される列数であり偶数であるものとする。パターン生成装置は、変数kを2からL/2の範囲で増分させつつ、以下のステップS1303からS1307の処理を繰り返し実行する。ステップS1303において、ライン生成部1202は、k列目のパターンをランダムに生成する。この処理はステップS1302の処理と同様である。次にステップS1304で、制約確認部1203が、k列目のパターンとk−1列目のパターンの間で上記の制約1,2を満たすかどうかを確認する。制約1,2のいずれかを満たさない場合には、ステップS1303に戻ってk列目のパターンを再生成する。変数kがL/2でなければ(S1305−NO)、ステップS1303で生成したパターンをk列目のパターンとして確定する。一方、変数kがL/2であれば(S1305−YES)、ステップS1306において、制約確認部1203は、生成した1列分のパターンとこのパターンを上下反転させたパターンとの間でも、上記の制約1,2を満たすか否かをさらに確認する。満たさない場合には、ステップS1303に戻ってk(=L/2)列目のパターンを再生成する。
【0070】
ループL3の処理が終了した時点で、1列目からL/2列目、すなわちパターン全体の左側半分の列のパターンが決定する。反転パターン生成部1204は、ステップS1308において、左側半分(1列目からL/2列目まで)のパターンを180度回転させたパターンを、右側半分(L/2+1列目からL列目まで)のパターンとして決定する。
図15を参照して説明する。
図15(A)は、ループL3の処理によって生成された左側半分のパターン1501を示す。反転パターン生成部1204は、パターン1501を180度回転させたパターン1502を、右側半分のパターンとして決定する。すなわち、L/2+1列目のパターンはL/2列目のパターンを上下反転したパターンであり、L/2+2列目のパターンはL/2−1列目のパターンを上下反転したパターンである、といった具合である。これにより、最終的に生成されるパターンは、中心に対して点対称なパターンとなる。
【0071】
以上のようにして生成されたパターンを表すデータは、パターン記憶部1205に記憶される。このパターン記憶部1205に記憶されているパターンデータが、3次元測定装置100に読み込まれて3次元測定の際に用いられる。
【0072】
[本実施形態の効果]
本実施形態に係るパターン生成装置によれば、上記制約1,2を満たすパターンを生成できる。制約1,2を満たすことで、3次元測定の際に、隣接線分を確実に求めることでき、精度の良い測定が行える。
【0073】
パターン生成の際に、領域全体の半分の領域のパターンのみを乱数を用いて生成し、残りの半分はこのパターンを180度回転させたパターンとして決定している。180度回転させても制約1,2を満たすので、全体として制約1,2を満たすパターンを高速に生成することができる。
【0074】
[変形例]
上記の説明では、ループL3の処理において、領域の端から中央に向かって1列ずつパターンを生成している。しかしながら、中央から端に向かって1列ずつパターンを生成してもよい。すなわち、ループL3において変数kをk=L/2からk=1まで1ずつ減らしながら処理を行っても良い。この場合、L/2列目のパターンは、自身を上下反転させたパターンとの間でのみ制約1,2を満たせばよいので、制約が比較的緩くなる。
【0075】
また、線パターンの列数Lは奇数であってもよい。この場合に、先に生成した半分の領域のパターンを180度回転させたパターンを残りの領域のパターンとするためには、(L+1)/2列目(全体のパターンの中心列)のラインは、上下対称となるように生成するとよい。あるいは、(L−1)/2列目が(L+1)/2列目およびその上下反転の両方との間で制約1,2を満たすように生成し、1列目から(L−1)/2列目のパターンを上下反転させたパターンを、(L+1)/2+1列目からL列目のパターンとして生成してもよい。列数Lが奇数の場合には、上述のように、先に(L+1)/2列目のパターンを上下対称に生成してから中心列から端に向かってランダムに各列のパターンを生成すると、制約が比較的緩くなるので好ましい。
【0076】
また、上記の説明では、1列ずつランダムな生成と確認を行っているが、1つの線分や1つのギャップ(縦間隔)をランダムに生成する度に確認を行ってもよい。この場合、1つまたは複数の線分をランダムに生成するたびに、これまでに生成(確定)した線分との間で制約1,2を満たすか否かを確認し、満たす場合はこれら1つまたは複数の線分をパターンとして確定し、そうでなければランダムに再生成する。また、1列ずつではなく、複数列ずつ生成と確認を行っても良い。複数列をまとめて生成する場合には、制約確認部1203は、これら複数列の間で制約1,2を満たし、かつ、これまでに生成(確定)したパターンとの境界において制約1,2を満たすか否かを確認する。これらの制約を満たす場合は、生成した複数列のパターンを確定し、そうでなければランダムに再生成する。以上のように、ランダムな生成と制約を満たすか否かの確認をどのような単位で行うかは任意である。
【0077】
また、上記の説明では、半分の領域のパターンを乱数を用いて生成し、このパターンを180度回転させたパターンを残り半分の領域のパターンとしている。しかしながら、領域の全てについて乱数を用いて生成しても構わない。
【0078】
また、上記の説明では、線分の長さおよび線分の縦間隔を、設計パラメータの範囲内でランダムに決定してから、制約を満たすか否かを判定している。しかしながら、全てに確定している隣接列のパターンから、制約を満たすために必要な線分の上端位置および下端位置の範囲が決定する。すなわち、既に確定した隣接列のパターンから、制約1,2を満たすための線分の長さや線分の縦間隔の範囲が決定される。したがって、設計パラメータとして与えられる範囲と制約1,2を満たすための範囲が重複する範囲の中から、乱数を用いて線分の長さや線分の縦間隔を決定するようにしてもよい。
【0079】
また、上記の説明では、照明装置とカメラの光軸が平行であり、エピポーララインが水平であることを前提として説明した。しかしながら、照明装置とカメラの光軸が平行ではない場合には、エピポーララインが位置によって異なる。このような場合には、上記制約1を、各線分の上端位置および下端位置からエピポーララインに沿って直線を引いたときに、これらの直線は隣接する列の線分と交わる、と読み替えて上記と同じ処理を行えばよい。なお、各画素におけるエピポーララインの方向は、照明装置とカメラの配置に基づいてあらかじめ把握できる。また、パターン生成装置は、エピポーララインが水平である場合の線パターンを生成しておき、照明装置とカメラの配置に応じて線パターンを変形させることによって最終的な線パターンを生成してもよい。この変形は、レクティフィケーション処理の逆変換処理である。
【0080】
(第3の実施形態)
本発明の第3の実施形態は、第2の実施形態と同様に、第1の実施形態において用いられる投影光のパターンを生成するためのパターン生成装置である。第2の実施形態との違いは、本実施形態においては、より精度の良い3次元測定が行える線パターンを生成するための処理を含む点である。
【0081】
本実施形態に係るパターン生成装置も、ハードウェア的には第2の実施形態と同様に通常のコンピュータとして構成される。すなわち、本実施形態に係るパターン生成装置は、CPUなどのプロセッサ、RAMやROMなどのメモリ(記憶装置)、外部装置とのインタフェース、キーボードやマウスなどの入力装置、およびディスプレイやスピーカーなどの出力装置を備えるコンピュータとして構成される。本実施形態に係るパターン生成装置は、メモリに格納されたプログラムをCPUが実行することにより、
図16に示すように、パターン生成部1601、評価部1602、パターン選択部1603、パターン変形部1604として機能する。ここで、パターン生成部1601は、第2の実施形態のパターン生成装置1200(
図12)と同様の機能を有し、上記制約を満たす線パターンを生成するものである。パターン生成部1601の詳しい説明の繰り返しは省略し、その他の機能部については以下のフローチャートともに説明する。
【0082】
ステップS1701において、パターン生成部1601が、上記制約1,2を満たすパターンをN個生成する。パターン生成部1601によるパターン生成処理は、第2の実施形態で説明したので繰り返しの説明は省略する。ここで、生成するパターン数Nは、2以上の整数であれば適宜決定すればよい。
【0083】
ステップS1702において、評価部1602が、生成したN個のパターンのそれぞれについて、当該パターンを用いて3次元測定を行ったときの正確さを表す評価値を算出する。このパターン評価処理S1602の詳細を、
図18を参照して説明する。評価部1602は、評価対象のパターンを、3次元測定装置の照明装置から投影するパターンであり、かつカメラが撮影する撮影画像であるとみなす(S1801)。次に、評価部1602は、撮影画像(実際には撮影画像とみなしたパターンデータ。以下このような記載は省略する)に対して、所定の変形処理を施す(S1802)。エピポーララインが水平の場合は理想的にはパターンと撮影画像の間でY座標は変化しないが、実際の3次元測定においては、キャリブレーションの不完全さ、画像のひずみやノイズなど影響により、撮影画像から抽出される線分のY座標位置は変化する。ステップS1802の変形処理は、この影響を模擬するためのものである。具体的には、評価部1602は、平均がゼロで所定の標準偏差を有する正規分布にしたがった乱数を、撮影画像の各線分の上端および下端のY座標に加える。または、予め定められた一定の値(オフセット値)を当該Y座標に加えてもよいし、乱数とオフセット値の両方を当該Y座標に加えてもよい。Y座標のみに誤差を与えるのは、上述のように線分の対応付けの際には線分のY座標位置が重要だからである。
【0084】
評価部1602は、パターンと変形後の撮影画像の間で線分の対応付け処理を行う(S1803)。この対応付け処理は、第1の実施形態において説明した処理(
図6のフローチャート)と同じであるので説明は省略する。評価部1602は、この対応付け処理によって、正しく対応付けできた線分の数(あるいは割合)を、評価値として算出する(S1804)。正しい対応付けができないというのは、誤った線分と対応付けがされる場合と、対応する線分が得られない場合を含む。
【0085】
このようにして算出される評価値は、実際の3次元測定において、線分同士の対応付けの正確さを表す値であるといえる。線分の対応付けの正確さは3次元測定の精度に関連するので、評価値は3次元測定の精度を表す値ともいえる。
【0086】
次に、ステップS1703において、パターン選択部1603は、N個のパターンの中から評価値が高い上位M個のパターンを選択する。Mの値は1以上N−1であればよい。以下、ここで選択された上位M個のパターンのことを、エリートパターンと称する。
【0087】
ステップS1704では、パターン変形部1604が、パターン選択部1603によって選択されたM個のエリートパターンを親パターンとして、N−M個の子パターンを再生成する。具体的には、エリートパターンの一部を変更することによって、新しいパターンが生成される。以下、パターン変形処理S1704を詳細に説明する。
【0088】
図19(A)は、パターン変形処理S1704の詳細な流れを示すフローチャートである。パターン変形部1604は、M個のエリートパターンの中から1つのパターンをランダムに選択する(S1901)。ここでの選択は、全てのエリートパターンを同じ確率で選択するものであってもよいし、評価値が大きいほど高い確率で選択するものであってもよい。ただし、確率的な選択を行わず、それぞれのエリートパターンを順番に選択するようにしても構わない。
【0089】
パターン変形部1604は、線パターンを構成する複数列のいずれかをランダムに選択する(S1902)。
図19(B)に示すように、ここで選択された列を左からk列目であるとする。すると、パターン変形部1604は、
図19(C)に示すように、k列目よりも右側の列、すなわちk+1列目以降の列を乱数を用いて再生成する(S1903)。ここでのパターンの生成処理は、第2の実施形態で説明した方法と同様であるので、詳しい説明は省略する。なお、ここではk+1列目から右端の列までを再生成しているが、列全体の中間の範囲のみを再生してもよい。
【0090】
以上により、1つのパターンが再生成できる。この処理をN−M回繰り返すことで、M個のエリートパターンに基づいたN−M個のパターンが再生成される。
【0091】
図20(A)は、パターン変形処理S1704の別の例を示すフローチャートである。ここでは、2つのエリートパターンを組み合わせて新しいパターンを生成する。パターン変形部1604は、M個のエリートパターンの中から2つのパターンP1,P2をランダムに選択する(S2001)。この選択も上記と同様に、均等な確率で選択するものであっても良いし、評価値に応じて確率で選択するものであっても良い。次に、パターン変形部1604は、
図20(B)に示すように、線パターンを構成する複数列のうちの一部の範囲をランダムに選択し(S2002)、パターンP1のうち選択した範囲の列を、パターンP2の同じ範囲の列で置換したパターンを生成する(S2003)。なお、
図20(B)では、列全体の中の中間の範囲を選択して置換するように説明しているが、選択範囲をある列から端部までの範囲としても構わない。このようにして2つのパターンを組み合わせて生成したパターンは、選択範囲の境界において上記制約1,2を満たさないことが
考えられる。そこで、パターン変形部1604は、選択範囲の境界部の列が上記制約1,2を満たすように調整(列の再生成)を行う(S2004)。
【0092】
以上により、1つのパターンが再生成できる。この処理をN−M回繰り返すことで、M個のエリートパターンに基づいたN−M個のパターンが再生成される。
【0093】
M個のエリートパターンに基づいてN−M個の新しいパターンが得られたら、繰り返し処理を判定するか否かの判定を行う(S1705)。処理を繰り返すと判定された場合には、M個のエリートパターンとN−M個の新しいパターンの合計N個のパターンを対象として、上記のステップS1702〜S1704の処理を再実行する。一方、繰り返しを終了すると判定された場合には、M個のエリートパターンとN−M個の新しいパターンの合計N個のパターンについて評価部1602が評価値を算出し(S1706)、パターン選択部1603が最も評価値の高いパターンを選択する(S1707)。以上のようにして生成されたパターンを表すデータは、パターン記憶部1605に記憶される。このパターン記憶部1605に記憶されているパターンデータが、3次元測定装置100が読み込まれて3次元測定の際に用いられる。
【0094】
ステップS1705の繰り返し終了判定は、次のようにして行うことができる。例えば、繰り返し処理回数をあらかじめ定めておいて繰り返し回数がこの回数に達したか否かにより、繰り返しを終了するか否かを判定できる。あるいは、最も評価値の高いパターンが所定の繰り返し回数変化しなかった場合に、繰り返し処理を終了すると判定することもできる。また、各パターンの評価値の最大値あるいは平均値が所定の値以上となった場合に、繰り返し処理を終了すると判定することもできる。
【0095】
[本実施形態の有利な効果]
本実施形態では、評価値を用いて実際の3次元測定における測定精度を評価している。そして、評価値の高いパターンに基づいて新しいパターンを再生成しているので、より良いパターンが得られることが期待できる。したがって、本実施形態によるパターン生成装置が生成する線パターンは、実際の測定において線分の誤対応が発生しにくく、精度の良い3次元測定が行える。
【0096】
[変形例]
上記の説明では、パターンの再生成処理(
図17のステップS1702〜S1704)を繰り返し実行しているが、この処理を繰り返さずに1回のみ行ってもかまわない。再生成処理を1回しか行わなくても、単純にN個の線パターンを生成して評価のよいパターンを選択するよりも良いパターンを生成できる。
【0097】
さらに、パターンの再生成処理を行わずに、N個の線パターンを生成して評価が最も良いパターンを選択するようにしてもよい。このようにしても、1つのみのパターンを生成するよりも良いパターンを生成できる。