(57)【要約】【課題】周期性を有する画像を用いて視差量を算出する際の、算出誤差を低減することができる視差検出装置を提供する。【解決手段】視差を有する画像組を取得する取得手段と、画像組の片方の画像上で基準画像を設定し、該基準画像に基づいて画像組の相関値を算出する相関算出手段と、相関値を用いて画像組の視差量を算出する視差算出手段とを備え、相関算出手段は、画像組の片方の画像上で第１の基準画像を設定し、該第１の基準画像に基づいて第１の相関値を算出し、画像組の片方の画像上で、所定の方向において第１の基準画像の位置とは異なる位置に第２の基準画像を設定し、該第２の基準画像に基づいて第２の相関値を算出し、視差算出手段は、第１の相関値と第２の相関値を用いて視差量を算出する、視差検出装置。【選択図】図１
2019184568.tif 000002
【特許請求の範囲】
【請求項１】
視差を有する画像組を取得する取得手段と、
前記画像組の片方の画像上で基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、
前記相関値を用いて前記画像組の視差量を算出する視差算出手段と、
を備え、
前記相関算出手段は、
前記画像組の片方の画像上で第１の基準画像を設定し、該第１の基準画像に基づいて第１の相関値を算出し、
前記画像組の片方の画像上で、所定の方向において前記第１の基準画像の位置とは異なる位置に第２の基準画像を設定し、該第２の基準画像に基づいて第２の相関値を算出し、
前記視差算出手段は、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出する、視差検出装置。
【請求項２】
前記取得手段は、パターン光が投影された被写体を撮像した、視差を有する画像組を取得する、請求項１に記載の視差検出装置。
【請求項３】
前記パターン光は、前記所定の方向に対して垂直な方向に高輝度領域及び低輝度領域が伸びるラインパターンを有する、請求項２に記載の視差検出装置。
【請求項４】
前記相関算出手段は、前記第１の基準画像と前記第２の基準画像を、前記第１の基準画像の前記所定の方向の幅、及び該幅と前記画像組の少なくとも一方の画像上における前記パターン光の周期との差のいずれか一方の分だけ、前記所定の方向において異なる位置に設定する、請求項２又は３に記載の視差検出装置。
【請求項５】
前記相関算出手段は、前記第１の基準画像と前記第２の基準画像を、前記第１の基準画像の前記所定の方向の幅と前記画像組の少なくとも一方の画像上における前記パターン光の高輝度領域の幅との差、及び該差から前記パターン光の周期を引いた量のいずれか一方の分だけ、前記所定の方向において異なる位置に設定する、請求項２又は３に記載の視差検出装置。
【請求項６】
前記相関算出手段は、前記画像組より前記パターン光に基づく画素値の変動の周期を算出し、算出した前記変動の周期に基づいて前記第２の基準画像の位置を決定する、請求項２又は３に記載の視差検出装置。
【請求項７】
前記パターン光を被写体に投影する投影手段を更に備える、請求項２乃至６のいずれか一項に記載の視差検出装置。
【請求項８】
前記画像組のいずれかの画像が前記所定の方向において周期性を有するかを判定する判定手段を更に備え、
前記画像組のいずれかの画像が前記周期性を有すると判定された場合には、前記相関算出手段が前記第１及び第２の相関値を算出する、請求項１に記載の視差検出装置。
【請求項９】
前記相関算出手段は、前記第１の基準画像と前記第２の基準画像を、前記所定の方向に対して垂直な方向において異なる位置に設定する、請求項１乃至８のいずれか一項に記載の視差検出装置。
【請求項１０】
前記第１の基準画像及び前記第２の基準画像は画像サイズが同じである、請求項１乃至９のいずれか一項に記載の視差検出装置。
【請求項１１】
被写体にパターン光を投影する投影手段と、
視差を有する画像組を取得する取得手段と、
前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、
前記相関値を用いて前記画像組の視差量を算出する視差算出手段と、
を備え、
前記投影手段は、所定の方向において互いに対して位置がずれたパターンを有する第１のパターン光と第２のパターン光を投影し、
前記相関算出手段は、
前記第１のパターン光を投影して取得した第１の画像組に基づいて第１の相関値を算出し、
前記第２のパターン光が投影して取得した第２の画像組に基づいて第２の相関値を算出し、
前記視差算出手段は、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出する、視差検出装置。
【請求項１２】
前記相関算出手段は、前記第１の画像組の片方の画像及び前記第２の画像組の片方の画像上の同じ位置に設定した基準画像を用いて、前記第１の相関値と前記第２の相関値とを算出する、請求項１１に記載の視差検出装置。
【請求項１３】
前記第１のパターン光と前記第２のパターン光は、前記所定の方向において高輝度領域と低輝度領域とが交互に繰り返される周期的な光であり、前記所定の方向に垂直な第２の方向に該高輝度領域及び該低輝度領域が伸びるラインパターンを有する、請求項１１又は１２に記載の視差検出装置。
【請求項１４】
前記第１のパターン光と前記第２のパターン光は、同じ輝度分布を有するパターン光を互いに対して前記所定の方向にずらした光である、請求項１１に記載の視差検出装置。
【請求項１５】
前記投影手段は、前記基準画像の前記所定の方向の幅と前記第１の画像組の少なくとも一方の画像における前記第１のパターン光の高輝度領域の幅との差、及び該差から該少なくとも一方の画像における前記第１のパターン光の周期を引いた量のいずれか一方の分だけ、前記第１のパターン光が有するパターンと前記第２のパターン光が有するパターンの前記所定の方向における位置が異なるように、前記第２のパターン光を投影する、請求項１１又は１２に記載の視差検出装置。
【請求項１６】
前記投影手段は、前記基準画像の前記所定の方向の幅、及び該幅と前記第１の画像組の少なくとも一方の画像における前記第１のパターン光の周期との差のいずれか一方の分だけ、前記第１のパターン光が有するパターンと前記第２のパターン光が有するパターンの前記所定の方向における位置が異なるように、前記第２のパターン光を投影する、請求項１１又は１２に記載の視差検出装置。
【請求項１７】
前記第１の画像組の少なくとも一方の画像における前記第１のパターン光の前記所定の方向における周期を評価する評価手段を更に備え、
前記投影手段は、評価した前記周期に基づいて決定された位置に、前記第２のパターン光を投影する、請求項１３に記載の視差検出装置。
【請求項１８】
前記第１の画像組の少なくとも一方の画像及び前記第２の画像組の少なくとも一方の画像に基づいて、前記第１のパターン光と前記第２のパターン光の前記所定の方向における位置ずれ量を算出し、該位置ずれ量に基づいて前記基準画像の該所定の方向における長さを決定する演算手段を更に備える、請求項１１乃至１４のいずれか一項に記載の視差検出装置。
【請求項１９】
前記投影手段は、波長帯域が異なる前記第１のパターン光と前記第２のパターン光とを投影し、
前記取得手段は、前記第１のパターン光に基づく画像組と、前記第２のパターン光に基づく画像組とを分離して取得する、請求項１１乃至１８のいずれか一項に記載の視差検出装置。
【請求項２０】
前記視差算出手段は、前記第１の相関値と前記第２の相関値の加算及び加算平均のいずれかにより算出した相関値を用いて前記視差量を算出する、請求項１乃至１９のいずれか一項に記載の視差検出装置。
【請求項２１】
前記視差算出手段は、
前記第１の相関値より第１の視差量を算出し、
前記第２の相関値より第２の視差量を算出し、
前記第１の視差量と前記第２の視差量を加算平均した視差量を用いて前記画像組の視差量を算出する、請求項１乃至１９のいずれか一項に記載の視差検出装置。
【請求項２２】
前記相関算出手段は、前記画像組の他方の画像上に参照画像を設定し、該参照画像の位置を前記所定の方向に移動させながら前記基準画像と該参照画像との相関値を算出する、請求項１乃至２１のいずれか一項に記載の視差検出装置。
【請求項２３】
被写体にパターン光を投影する投影手段と、
視差を有する画像組を取得する取得手段と、
前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、
前記相関値を用いて前記画像組の視差量を算出する視差算出手段と、
を備え、
前記パターン光は、第１のサブパターン光と第２のサブパターン光を含み、
前記第１のサブパターン光及び前記第２のサブパターン光は、第１の方向及び該第１の方向に垂直な第２の方向において互いに対して位置がずれたパターン光であり、
前記基準画像は、前記第１のサブパターン光と前記第２のサブパターン光が投影された領域の画像を含む、視差検出装置。
【請求項２４】
前記第１のサブパターン光と前記第２のサブパターン光は、前記第１の方向において高輝度領域と低輝度領域とが交互に繰り返される周期的な光である、請求項２３に記載の視差検出装置。
【請求項２５】
前記第１のサブパターン光と前記第２のサブパターン光は、同じ輝度分布を有するパターン光を互いに対して前記第１及び第２の方向にずらした光である、請求項２４に記載の視差検出装置。
【請求項２６】
前記投影手段は、前記基準画像の前記第１の方向の幅と前記画像組の少なくとも一方の画像における前記第１のサブパターン光の前記第１の方向の高輝度領域の幅との差、及び該差から該少なくとも一方の画像における前記第１のサブパターン光の前記第１の方向の周期を引いた量のいずれか一方の分だけ、前記第１のサブパターン光と前記第２のサブパターン光との前記第１の方向における位置が異なるように、前記パターン光を投影する、請求項２４又は２５に記載の視差検出装置。
【請求項２７】
前記投影手段は、前記第１の方向のおける前記基準画像の幅、及び該幅と前記画像組の少なくとも一方の画像における前記第１のサブパターン光の前記第１の方向の周期との差のいずれか一方の分だけ、前記第１のサブパターン光と前記第２のサブパターン光との前記第１の方向における位置が異なるように、前記パターン光を投影する、請求項２４又は２５に記載の視差検出装置。
【請求項２８】
前記第１のサブパターン光と前記第２のサブパターン光は、前記第２の方向において同じ周期を有する光である、請求項２３乃至２７のいずれか一項に記載の視差検出装置。
【請求項２９】
前記第２の方向における前記基準画像の長さは、前記第２の方向における前記第１のサブパターン光及び前記第２のサブパターン光の周期の整数倍の長さである、請求項２８に記載の視差検出装置。
【請求項３０】
前記画像組の少なくとも一方の画像における前記第１のサブパターン光の前記第１の方向の周期、又は該少なくとも一方の画像における前記第１のサブパターン光と前記第２のサブパターン光の前記第１の方向における位置の差を評価し、該周期又は該位置の差に基づいて、前記基準画像の前記第１の方向及び前記第２の方向の長さを決定する評価手段を更に備える、請求項２３乃至２５のいずれか一項に記載の視差検出装置。
【請求項３１】
前記画像組の少なくとも一方の画像における前記第１のサブパターン光の前記第１の方向の周期、又は該少なくとも一方の画像における前記第１のサブパターン光と前記第２のサブパターン光の前記第１の方向における位置の差を評価する評価手段を更に備え、
前記投影手段は、評価した前記周期又は前記位置の差と、前記基準画像の該第１の方向及び前記第２の方向の長さとに基づいて前記第１のサブパターン光と前記第２のサブパターン光の周期と位置とを修正したパターン光を投影する、請求項２３乃至２５のいずれか一項に記載の視差検出装置。
【請求項３２】
前記相関算出手段は、前記画像組の他方の画像上に参照画像を設定し、該参照画像の位置を前記第１の方向に移動させながら前記基準画像と該参照画像との相関値を算出する、請求項２３乃至３１のいずれか一項に記載の視差検出装置。
【請求項３３】
請求項１乃至３２のいずれか一項に記載の視差検出装置と、
ロボットアームと、
前記ロボットアームに設けられたロボットハンドと、
前記ロボットアーム及び前記ロボットハンドを制御する制御装置と、
を備えた、ロボット装置。
【請求項３４】
前記視差検出装置は、
前記視差量に基づいて、被写体までの距離を算出する距離算出手段を更に備え、
ワークまでの距離を含む距離情報及び該ワークの画像情報を取得し、
前記制御装置は、
前記距離情報及び前記画像情報を用いて前記ワークの位置姿勢を推定し、
前記位置姿勢に基づいて前記ロボットアーム及び前記ロボットハンドを制御する、請求項３３に記載のロボット装置。
【請求項３５】
請求項１乃至３２のいずれか一項に記載の視差検出装置と、
前記視差検出装置が検出した視差量を用いて被写体までの距離を検出する距離算出手段と、
を備える距離検出装置。
【請求項３６】
視差を有する画像組を取得することと、
前記画像組の片方の画像上で基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出することと、
前記相関値を用いて前記画像組の視差量を算出することと、
を含み、
前記相関値を算出することは、
前記画像組の片方の画像上で第１の基準画像を設定し、該第１の基準画像に基づいて第１の相関値を算出することと、
前記画像組の片方の画像上で、所定の方向において前記第１の基準画像の位置とは異なる位置に第２の基準画像を設定し、該第２の基準画像に基づいて第２の相関値を算出することと、
を含み、
前記視差量を算出することは、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出することを含む、視差検出方法。
【請求項３７】
被写体にパターン光を投影することと、
視差を有する画像組を取得することと、
前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出することと、
前記相関値を用いて前記画像組の視差量を算出することと、
を含み、
前記投影することは、所定の方向において互いに対して位置がずれたパターンを有する第１のパターン光と第２のパターン光を投影することを含み、
前記相関値を算出することは、
前記第１のパターン光を投影して取得した第１の画像組に基づいて第１の相関値を算出することと、
前記第２のパターン光が投影して取得した第２の画像組に基づいて第２の相関値を算出することと、
を含み、
前記視差量を算出することは、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出することを含む、視差検出方法。
【請求項３８】
被写体にパターン光を投影することと、
視差を有する画像組を取得することと、
前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出することと、
前記相関値を用いて前記画像組の視差量を算出することと、
を含み、
前記パターン光は、第１のサブパターン光と第２のサブパターン光を含み、
前記第１のサブパターン光及び前記第２のサブパターン光は、第１の方向及び該第１の方向に垂直な第２の方向において互いに対して位置がずれたパターン光であり、
前記基準画像は、前記第１のサブパターン光と前記第２のサブパターン光が投影された領域の画像を含む、視差検出方法。
【請求項３９】
請求項３６乃至３８のいずれか一項に記載の視差検出方法の各工程と、
前記視差検出方法で検出した視差量を用いて被写体までの距離を検出することと、
を含む、距離検出方法。
【請求項４０】
距離検出装置を用いた距離検出方法であって、
前記距離検出装置によって撮影した画像における被写体の大きさ及び前記被写体について以前に検出した前記被写体と前記距離検出装置との距離のいずれか一方に基づいて、前記被写体と前記距離検出装置との第１の距離を取得することと、
前記第１の距離が所定の距離よりも長い場合に、請求項３６又は３８に記載の視差検出方法により検出した視差量に基づいて前記被写体と前記距離検出装置との第２の距離を検出することと、
前記第１の距離が前記所定の距離以下の場合に、請求項３７に記載の視差検出方法により検出した視差量に基づいて前記第２の距離を検出することと、
を含む、距離検出装置を用いた距離検出方法。
【請求項４１】
プロセッサによって実行されると、該プロセッサに請求項３６乃至４０のいずれか一項に記載の方法の各ステップを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、視差検出装置、距離検出装置、ロボット装置、視差検出方法、距離検出方法及びプログラムに関する。
【背景技術】
【０００２】
被写体の撮影画像を取得し、撮影画像から被写体に対する距離情報を算出する手法が提案されている。このような手法の一例として、異なる視点からの画像を含む画像組を取得し、各画像間の相関値（類似度ともいう）から視差量を求め、距離情報を取得する手法がある。
【０００３】
具体的には、まず、画像組の片方の画像において注目画素を含む部分領域の画像信号を基準画像として抜き出す。次に、他方の画像における部分領域の画像信号を参照画像として抜き出す。その後、参照画像を抜き出す画像上の位置を変えながら、基準画像と各位置における参照画像の相関値を算出（相関演算）する。算出された基準画像と各位置における参照画像との相関値において最も相関値が高くなる位置を求めることで、注目画素における視差量を算出することができる。その後、視差量を既知の手法により距離情報に変換することで、被写体の距離情報を算出することができる。
【０００４】
しかしながら、撮影画像中に模様の乏しい領域があると、画像信号のコントラストが低下し、相関演算による視差量の算出ができず、距離情報の算出（測距）ができなくなることがある。これに対して、特許文献１では、パターン光の投影を併用して撮影画像の取得を行うことで、このような領域の測距を可能にする手法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許５８０３０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、パターン光を投影して撮影した画像を用いて測距を行う場合、撮影画像の画素値が大きく変化する領域（投影パターンの明領域と暗領域の境界部）と基準画像の端部とが重なる状態で視差量を算出すると、算出される視差量に誤差が発生する。この場合には、視差量に誤差が発生していることに起因して、視差量を変換して求められる距離情報にも誤差が生じる。特に、高輝度領域と低輝度領域が交互に並ぶラインパターンなどの周期性を有するパターン光を投影して測距を行うとき、この誤差が顕著となる。なお、この視差量の算出誤差は、周期性がある模様を有する被写体の撮影画像を用いて視差量を求める場合にも、同様に生じる場合がある。
【０００７】
そこで、本発明は、周期性を有する画像を用いて視差量を算出する際の、算出誤差を低減することができる視差検出装置、距離検出装置、ロボット装置、視差検出方法、距離検出方法及びプログラムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一実施態様に係る視差検出装置は、視差を有する画像組を取得する取得手段と、前記画像組の片方の画像上で基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、前記相関値を用いて前記画像組の視差量を算出する視差算出手段とを備え、前記相関算出手段は、前記画像組の片方の画像上で第１の基準画像を設定し、該第１の基準画像に基づいて第１の相関値を算出し、前記画像組の片方の画像上で、所定の方向において前記第１の基準画像の位置とは異なる位置に第２の基準画像を設定し、該第２の基準画像に基づいて第２の相関値を算出し、前記視差算出手段は、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出する。
【０００９】
また、本発明の他の実施態様に係る視差検出装置は、被写体にパターン光を投影する投影手段と、視差を有する画像組を取得する取得手段と、前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、前記相関値を用いて前記画像組の視差量を算出する視差算出手段とを備え、前記投影手段は、所定の方向において互いに対して位置がずれたパターンを有する第１のパターン光と第２のパターン光を投影し、前記相関算出手段は、前記第１のパターン光を投影して取得した第１の画像組に基づいて第１の相関値を算出し、前記第２のパターン光が投影して取得した第２の画像組に基づいて第２の相関値を算出し、前記視差算出手段は、前記第１の相関値と前記第２の相関値を用いて前記視差量を算出する。
【００１０】
さらに、本発明の更なる他の実施態様に係る視差検出装置は、被写体にパターン光を投影する投影手段と、視差を有する画像組を取得する取得手段と、前記画像組の片方の画像上に基準画像を設定し、該基準画像に基づいて前記画像組の相関値を算出する相関算出手段と、前記相関値を用いて前記画像組の視差量を算出する視差算出手段とを備え、前記パターン光は、第１のサブパターン光と第２のサブパターン光を含み、前記第１のサブパターン光及び前記第２のサブパターン光は、第１の方向及び該第１の方向に垂直な第２の方向において互いに対して位置がずれたパターン光であり、前記基準画像は、前記第１のサブパターン光と前記第２のサブパターン光が投影された領域の画像を含む。
【発明の効果】
【００１１】
本発明によれば、周期性を有する画像を用いて視差量を算出する際の、算出誤差を低減することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１による距離検出装置の概略的な構成例を示す。
【図２】実施例１に係る撮像素子に含まれる画素の概略的な構成例を示す。
【図３】実施例１に係る距離検出方法を説明するための図である。
【図４】実施例１に係る測定結果の一例を示す。
【図５】実施例１に係る距離検出方法を説明するための図である。
【図６】実施例１に係る距離検出方法を説明するための図である。
【図７】実施例１の変形例に係る距離検出方法を説明するための図である。
【図８】実施例１の変形例に係る距離検出方法のフローを示す。
【図９】実施例２に係るロボット装置の概略的な構成例を示す。
【図１０】実施例３に係る距離検出装置の概略的な構成例、及び距離検出方法のフローを示す。
【図１１】実施例４に係るパターン光の一例を示す。
【図１２】実施例４に係る距離検出方法を説明するための図である。
【図１３】実施例４に係る測定結果の一例を示す。
【図１４】実施例４に係る距離検出方法を説明するための図である。
【図１５】実施例４に係る距離検出方法を説明するための図である。
【図１６】実施例５による距離検出装置の概略的な構成例を示す。
【図１７】実施例５に係る距離検出方法を説明するための図である。
【図１８】実施例６に係る距離検出装置の概略的な構成例を示す。
【図１９】実施例６に係る距離検出方法を説明するための図である。
【図２０】実施例６に係る測定結果の一例を示す。
【図２１】実施例６に係る距離検出方法を説明するための図である。
【図２２】実施例６に係る距離検出方法を説明するための図である。
【図２３】実施例６の変形例に係る距離検出方法を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための例示的な実施例を、図面を参照して詳細に説明する。ただし、以下の実施例で説明する寸法、材料、形状、及び構成要素の相対的な位置等は任意であり、本発明が適用される装置の構成又は様々な条件に応じて変更できる。また、図面において、同一であるか又は機能的に類似している要素を示すために図面間で同じ参照符号を用いる。
【００１４】
（実施例１）
以下、図１（ａ）乃至６を参照して、本発明の実施例１による距離検出装置について説明する。図１は、本実施例による距離検出装置の概略的な構成例を示す。図１（ａ）はパターン光の投影を併用した距離検出装置１００の概略的な構成例を示す。図１（ｂ）は、投影されるパターン光の一例を示す。
【００１５】
（装置構成）
本実施例による距離検出装置１００には、投影装置１０１、及び撮影装置１０３が設けられている。投影装置１０１は被写体１０２へパターン光の投影を行い、撮影装置１０３は被写体１０２からのパターン光の戻り光を用いて被写体１０２を撮影し、撮影画像を取得する。また、投影装置１０１及び撮影装置１０３は、制御部１０８に接続され、制御部１０８は、投影装置１０１及び撮影装置１０３の同期などの制御を行う。なお、投影装置１０１は撮影装置１０３に任意の方法で固定されることができ、撮影装置１０３に対して着脱可能に固定されてもよい。
【００１６】
投影装置１０１には、不図示の光源と、結像光学系と、パターン形成手段の一例としてすりガラスや金属板などにパターンを形成したパターンマスクとが設けられている。光源には、ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）等を用いることができる。なお、投影装置１０１にこれらの構成要素のみを配置する場合には、装置コストを低減したり、装置を小型化したりすることができる。また、本実施例では、投影装置１０１により投影するパターン光の一例として、図１（ｂ）に示すラインパターン１０９を投影する。
【００１７】
撮影装置１０３には、結像光学系１０４、撮像素子１０５、演算処理部１０６、及び本体メモリ１０７が設けられている。なお、撮影装置１０３には、投影装置１０１を固定するためのマウント等が設けられていてもよい。
【００１８】
結像光学系１０４は、被写体１０２の像を撮像面である撮像素子１０５に形成する機能を有する。結像光学系１０４には複数の不図示のレンズ群及び絞り等が設けられ、結像光学系１０４は撮像素子１０５から所定距離だけ離れた位置に射出瞳を有する。ここで、図１（ａ）中には、結像光学系１０４の光軸１４０が一点鎖線で示されており、光軸１４０はｚ軸と平行である。また、ｘ軸とｙ軸は互いに垂直であり、且つ光軸１４０及びｚ軸と垂直な軸とする。
【００１９】
撮像素子１０５には、基板２０４と複数の画素が配置される。ここで、図２（ａ）及び（ｂ）は撮像素子１０５に含まれる画素の概略的な構成例を示す。図２（ａ）は、撮像素子１０５に配置される画素の断面図である。
【００２０】
各画素には、マイクロレンズ２０１、カラーフィルタ２０２、及び光電変換部２０３Ａ，２０３Ｂが設けられている。撮像素子１０５は、画素毎に、検出する波長帯域に応じたＲＧＢ（Ｒｅｄ、Ｇｒｅｅｎ、Ｂｌｕｅ：赤、緑、青）の分光特性がカラーフィルタ２０２によって与えられ、各画素は、不図示の公知の配色パターンによってｘｙ平面上に配置されている。撮像素子１０５の基板２０４には、検出する波長帯域に感度を有する光電変換部２０３Ａ，２０３Ｂが画素毎に形成されている。また、各画素には、不図示の配線が設けられており、各画素は配線を介して出力信号（画像信号）を演算処理部１０６に送ることができる。
【００２１】
図２（ｂ）は、光軸１４０と撮像素子１０５の交点（中心像高）から見た、結像光学系１０４の射出瞳１３０を示す。光電変換部２０３Ａ及び光電変換部２０３Ｂには、それぞれ射出瞳１３０の異なる領域である第１の瞳領域２１０を通過した第１の光束及び第２の瞳領域２２０を通過した第２の光束が入射する。各画素における光電変換部２０３Ａ及び光電変換部２０３Ｂは入射した光束を光電変換することで、それぞれＡ画像及びＢ画像に対応する画像信号を生成することができる。生成された画像信号は演算手段の一例である演算処理部１０６に伝送され、演算処理部１０６は受け取った画像信号に基づいて、Ａ画像及びＢ画像を生成する。演算処理部１０６は、Ａ画像及びＢ画像を用いて距離検出処理を行って距離値を算出し、算出した距離値を本体メモリ１０７に蓄える。また、演算処理部１０６は、Ａ画像とＢ画像を加算した画像を画像情報として本体メモリ１０７に記憶し、以降の処理で利用することができる。なお、演算処理部１０６は、Ａ画像及びＢ画像自体を本体メモリ１０７に記憶させることもできる。
【００２２】
また、図２（ｂ）には第１の瞳領域２１０の重心位置（第１の重心位置２１１）、及び第２の瞳領域２２０の重心位置（第２の重心位置２２１）が示されている。本実施例においては、第１の重心位置２１１は、射出瞳１３０の中心から第１の軸２００に沿って偏心（移動）している。一方、第２の重心位置２２１は、第１の軸２００に沿って、第１の重心位置２１１とは逆の方向に偏心（移動）している。第１の重心位置２１１と第２の重心位置２２１とを結ぶ方向を瞳分割方向と呼ぶ。また、第１の重心位置２１１と第２の重心位置２２１との重心間距離が基線長２３０となる。
【００２３】
Ａ画像とＢ画像は、デフォーカスによって瞳分割方向と同じ方向（本実施例ではｘ軸方向）に位置がずれる。この画像間の相対的な位置ずれ量、すなわちＡ画像とＢ画像の視差量は、デフォーカス量に応じた量となる。よって、この視差量を後述の手法により取得し、既知の変換手法によって視差量をデフォーカス量に変換することができる。また、既知の変換手法によってデフォーカス量を距離情報に変換することができる。
【００２４】
演算処理部１０６には、相関算出部１６１、視差算出部１６２及び距離算出部１６３が設けられている。相関算出部１６１は、Ａ画像上において、距離算出を行う画素（注目画素）を含む部分領域の画像を基準画像として設定し、Ｂ画像に参照画像を設定し、参照画像の位置を所定の方向に移動させながら基準画像と参照画像との相関値を算出する。
【００２５】
視差算出部１６２は、相関算出部１６１によって算出された相関値を用いてＡ画像及びＢ画像を含む画像組の視差量を算出する。距離算出部１６３は、視差算出部１６２によって算出された視差量を用いて被写体１０２までの距離を算出する。
【００２６】
なお、制御部１０８は、汎用のコンピュータを用いて構成されてもよいし、距離検出装置１００専用のコンピュータとして構成されてもよい。また、演算処理部１０６の各構成要素は、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）等の演算装置上で実行されるソフトウェアモジュールによって構成されることができる。同様に、演算処理部１０６の各構成要素は、ＡＳＩＣ等の特定の機能を果たす回路等によって構成されてもよい。さらに、投影装置１０１及び撮影装置１０３の同期制御等を行う制御部１０８を、撮影装置１０３の演算処理部１０６において実現してもよい。また、本体メモリ１０７は、ＲＡＭやＲＯＭ等の既知の任意のメモリによって構成されてよい。
【００２７】
（距離検出処理のフロー）
次に、図３（ａ）乃至（ｃ）を参照して、本実施例に係る距離検出処理のフローについて説明する。図３（ａ）は本実施例に係る距離検出処理のフローチャートであり、図３（ｂ）及び（ｃ）は、相関算出部１６１によって行う相関演算を説明するための図である。本実施例に係る距離検出処理が開始されると、処理はステップＳ３０１に移行する。
【００２８】
ステップＳ３０１「パターン光投影画像取得」では、投影装置１０１から被写体１０２へパターン光を投影している状態で、撮影装置１０３を用いて撮影を行い、撮影画像を本体メモリ１０７に記憶させる。具体的には、まず、投影装置１０１の内部に設けたパターン制御手段の一例である空間光変調器（不図示）によって、ラインパターン１０９を有する光を生成し、被写体１０２の表面へと照射する。その後、この状態で撮影装置１０３により撮影を行い、視差を有するＡ画像及びＢ画像を含む画像組を生成・取得し、取得した画像組を本体メモリ１０７に記憶させる。この際、制御部１０８が、パターン光投影を行った状態で撮影装置１０３の露光を行うように、投影装置１０１と撮影装置１０３の動作及びタイミングの制御を行う。
【００２９】
ここで、模様（テクスチャともいう）が乏しい被写体１０２を周辺環境光のみで撮影した場合には、Ａ画像やＢ画像のコントラストやＳ／Ｎ比が低下し、相関演算を用いた距離算出（測距演算）の精度が低下する。これに対し、投影装置１０１から被写体１０２にパターン光を照射・投影し、被写体１０２の表面にテクスチャを重畳した状態で撮影を行うことで距離算出の精度を向上させることができる。
【００３０】
ステップＳ３０２からステップＳ３０５の処理は、演算処理部１０６によって行う。ここで、図３（ｂ）及び（ｃ）は、ステップＳ３０２及びステップＳ３０３にて設定する基準画像及び参照画像の位置関係を説明するための図である。図３（ｂ）にはＡ画像３１０Ａが示され、図３（ｃ）にはＢ画像３１０Ｂが示されている。
【００３１】
ステップＳ３０２「相関演算１」では、演算処理部１０６の相関算出部１６１が、Ａ画像３１０Ａ及びＢ画像３１０Ｂの第１の相関値を算出する。具体的には、相関算出部１６１は、まず、Ａ画像３１０Ａ上において、注目画素３２０とその近傍画素を含む部分領域を抜き出し、第１の基準画像３１１として設定する。次に、相関算出部１６１は、Ｂ画像３１０Ｂ上において、第１の基準画像３１１と同じ面積（画像サイズ）の領域を抜き出して参照画像３１３として設定する。その後、相関算出部１６１は、Ｂ画像３１０Ｂ上で参照画像３１３を抜き出す位置を瞳分割方向と同じｘ軸方向に移動させて、各移動量（各位置）における参照画像３１３と第１の基準画像３１１との相関値を算出する。これにより、相関算出部１６１は、各移動量に対応する相関値のデータ列からなる第１の相関値を算出する。なお、相関算出部１６１は、参照画像３１３を第１の基準画像３１１の縦及び横寸法と同じ縦及び横寸法を有する画像として設定することができる。
【００３２】
参照画像３１３を移動させて相関演算を行う方向を視差算出方向と呼ぶ。視差算出方向は瞳分割方向と同じ方向に設定することで、Ａ画像３１０ＡとＢ画像３１０Ｂの被写体距離に応じて生じる視差量を正しく算出することができる。なお、相関値の算出方法としては、ＳＡＤ（Ｓｕｍ ｏｆ Ａｂｓｏｌｕｔｅ Ｄｉｆｆｅｒｅｎｃｅ）やＳＳＤ（Ｓｕｍ ｏｆ Ｓｑｕａｒｅｄ Ｄｉｆｆｅｒｅｎｃｅ）などの一般的な算出方法を用いることができる。
【００３３】
次に、ステップＳ３０３「相関演算２」では、相関算出部１６１は、Ａ画像３１０Ａ及びＢ画像３１０Ｂの第２の相関値を算出する。具体的には、相関算出部１６１は、Ａ画像３１０Ａ上において、第１の基準画像３１１と同じ面積（画像サイズ）の領域であって、瞳分割方向（ｘ軸方向）において異なる位置にある部分領域を抜き出して第２の基準画像３１２として設定する。次に、相関算出部１６１は、Ｂ画像３１０Ｂ上において、第２の基準画像３１２と同じ面積（画像サイズ）の領域を抜き出して、参照画像３１３として設定する。その後、相関算出部１６１は、ステップＳ３０２と同様に、参照画像３１３の位置を視差算出方向に移動させ、各移動量における参照画像３１３と第２の基準画像３１２との相関値を算出する。これにより、相関算出部１６１は、各移動量に対する相関値のデータ列からなる第２の相関値を算出する。なお、相関算出部１６１は、第２の基準画像３１２を第１の基準画像３１１の縦及び横寸法と同じ縦及び横寸法を有する画像として設定することができる。
【００３４】
なお、相関演算２において、第２の基準画像３１２に対する参照画像３１３は、第１の基準画像３１１に対する参照画像３１３の設定条件と同様の条件で、設定されることができる。例えば、参照画像３１３がＡ画像３１０Ａにおける第１の基準画像３１１の位置に対応するＢ画像３１０Ｂの位置の画像となるように設定されるとする。この場合には、相関演算２において、参照画像３１３は、Ａ画像３１０Ａにおける第２の基準画像３１２の位置に対応するＢ画像３１０Ｂの位置の画像となるように設定されてよい。なお、Ａ画像３１０Ａ上の位置とＢ画像３１０Ｂ上の位置の対応関係は、既知の手法で特定されてよく、例えば、それぞれの画像を構成する画像信号を取得する画素の構造に基づいて特定されることができる。
【００３５】
また、相関演算２における参照画像３１３の移動量は、相関演算１における参照画像３１３の移動量と略同量とすることができる。例えば、相関算出部１６１は、相関演算１における参照画像３１３の移動量を−Ｍから＋Ｍとした場合、相関演算２における参照画像３１３の移動量も−Ｍから＋Ｍとすることができる。
【００３６】
ステップＳ３０４「視差量算出」では、演算処理部１０６の視差算出部１６２が、ステップＳ３０２及びステップＳ３０３で求められた第１の相関値と第２の相関値を用いて視差量を算出する。具体的には、視差算出部１６２は、第１の相関値と第２の相関値の各移動量における相関値をそれぞれ加算又は加算平均し、第３の相関値を算出する。このとき、視差算出部１６２は、第１の相関値及び第２の相関値における対応する移動量の相関値同士を加算又は加算平均して求めた各相関値のデータ列から、第３の相関値を算出することができる。例えば、視差算出部１６２は、参照画像の移動量−Ｍの第１の相関値及び第２の相関値を加算又は加算平均し、移動量−Ｍに対応する第３の相関値を算出することができる。
【００３７】
その後、視差算出部１６２は、既知の任意の手法により、第３の相関値を用いて視差量を算出する。例えば、第３の相関値の中で最も高い相関が得られる移動量とその近傍の移動量に対応する相関値のデータ列を抽出し、既知の任意の内挿手法により、最も相関が高くなる移動量をサブピクセル精度で推定することで、視差量を算出することができる。
【００３８】
ステップＳ３０５「距離値算出」では、演算処理部１０６の距離算出部１６３が、既知の任意の手法により、視差量をデフォーカス量又は被写体距離に変換する。視差量からデフォーカス量への換算は、基線長を用いた幾何学的関係を用いて行うことができる。また、デフォーカス量から被写体距離への変換は、結像光学系１０４の結像関係を用いて行うことができる。また、視差量に所定の変換係数を乗算することで、視差量をデフォーカス量又は被写体距離に変換してもよい。このような方法により、距離算出部１６３は、注目画素３２０における視差量を用いて被写体１０２までの距離を算出することができる。
【００３９】
このように本実施例による距離検出方法では、瞳分割方向（視差算出方向）における異なる位置で第１の基準画像３１１と第２の基準画像３１２を設定し、それぞれに対して設定された参照画像３１３との相関値を算出し、両相関値より視差量を算出する。当該処理によれば、投影パターンの輝度分布と基準画像の位置とに関係して発生する視差量の算出誤差を軽減して測距誤差を軽減することができ、高精度な測距を行うことができる。
【００４０】
ここで、図４（ａ）及び（ｂ）を参照して、本実施例による距離検出方法の処理結果の一例について述べる。図４（ａ）は、既知の距離において、撮影装置１０３と並行となるように配置した平板に、投影装置１０１を用いてパターン光を投影し、撮影装置１０３で撮影した画像である。図４（ｂ）は、平板上の各位置における視差量を算出した際の誤差の結果である。図４（ｂ）の横軸は移動量（画素位置）を表しており、縦軸は視差量の算出誤差を表している。図４（ｂ）には、従来の処理で算出した視差量の算出誤差４０１が破線で示され、本実施例による処理で算出した視差量の算出誤差４０２が実線で示されている。従来と比べて本実施例の手法により、誤差が０に近づき、視差量の算出誤差を低減していることが分かる。
【００４１】
次に、図５（ａ）乃至（ｅ）を参照して、従来の処理では視差量の算出に誤差が発生し、本実施例による処理では視差量の算出誤差が低減する理由について説明する。以降の説明では、Ａ画像とＢ画像は同じ濃淡を有する画像で視差が無いものと仮定する。図５（ａ）乃至（ｃ）は誤差の発生理由を説明する図である。
【００４２】
図５（ａ）は、明領域及び暗領域が交互に現れるラインパターンを有するＡ画像５０１と基準画像５０２及び基準画像５０３との位置関係を示した図である。基準画像５０２は、Ａ画像５０１の明領域と暗領域が切り替わる画像エッジ５０４，５０５（境界部）を基準画像５０２の内部に含んでいる。図５（ｂ）は、基準画像５０２に対して設定された参照画像を移動させて基準画像５０２と参照画像の相関演算を行うことで算出される各相関値を示している。ここでは、相関値が低いほど相関が高いことを表している。
【００４３】
相関値Ｃ０，Ｃｐ，Ｃｍはそれぞれ参照画像の位置を０、＋１、−１画素だけ移動させたときの相関値である。ここでは、Ａ画像及びＢ画像が視差を有さないものと仮定しているため、移動量が０のとき、両画像は一致し、相関値Ｃ０は低い値となる。参照画像を＋１画素又は−１画素だけ移動させると、画像エッジ５０４，５０５に起因して基準画像５０２と参照画像に差（違い）が生じるため、相関値Ｃｐ，Ｃｍは相関値Ｃ０より増加する。このとき、相関値Ｃｐ，Ｃｍに対応する参照画像の移動量の絶対値は同じであるため、ラインパターン上の画像エッジ５０４，５０５に起因する画像間の差も同量となる。そのため、相関値Ｃｐと相関値Ｃｍは同じ値となる。この相関値を内挿して相関曲線５１０を求め、最も高い相関値となる移動量（視差量）を算出することで視差量５１１が求まり、正しい値（視差量０）が求まる。
【００４４】
一方、基準画像５０３では、画像エッジ５０４と基準画像５０３の右端が重なる。図５（ｃ）は、基準画像５０３に対して設定された参照画像を移動させて基準画像５０３と参照画像の相関演算を行うことで算出される各相関値を示している。移動量が０のとき、両画像は一致し、相関値Ｃ０は低い値となる。移動量が＋１画素のとき、基準画像５０２の場合と同様に、相関値Ｃｐは相関値Ｃ０より増加する。これに対し、移動量が−１画素のときには、画像エッジ５０５のみに起因して基準画像と参照画像との差が生じるため、相関値Ｃ０からの相関値Ｃｍの増加量は微量となる。そのため、この場合の相関値は、参照画像の移動量の＋側と−側で非対称となり、これを内挿した相関曲線５１２により求まる視差量５１３は正しい値（視差量０）とは異なる値となり、誤差が発生する。これが、投影パターンの輝度分布と基準画像の位置とに関係して発生する視差量の算出誤差となる。
【００４５】
次に、本実施例のように、第１の基準画像とは視差算出方向に位置が異なる第２の基準画像を設定し、第１の基準画像及び第２の基準画像の各々を用いて算出した相関値より視差量を算出することで、視差量の算出誤差が低減する理由について説明する。図５（ｄ）は、Ａ画像５０１と第１の基準画像５０３及び第２の基準画像５０６の位置を示した図である。図５（ｅ）は第１の基準画像５０３及び第２の基準画像５０６を用いて算出される相関値を示している。
【００４６】
第１の基準画像５０３は、前述と同様に画像エッジ５０４と基準画像の右端が重なる基準画像を仮定する。このとき、第１の基準画像５０３より算出される第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１は、図５（ｃ）に示す相関値Ｃｍ，Ｃ０，Ｃｐと同じになる。
【００４７】
次に第２の基準画像５０６を、第２の基準画像５０６の左端が画像エッジ５０４と重なるように設定する。このとき、第２の基準画像５０６と画像エッジ５０４との位置関係は、第１の基準画像５０３と画像エッジ５０４との位置関係を反転した関係になる。そのため、図５（ｅ）に示すように、第２の基準画像５０６を用いて得られる第２の相関値Ｃｍ２，Ｃ０２，Ｃｐ２は、第１の基準画像５０３を用いて得られる第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１を反転したものとなる。
【００４８】
これらの相関値を参照画像の位置（移動量）毎に加算平均すると、相関値は第３の相関値Ｃｍ３，Ｃ０３，Ｃｐ３のようになる。第３の相関値は、参照画像の移動量の＋側と−側の非対称性がキャンセルされ、対称となる。この場合、相関値を内挿した相関曲線５１４より求まる視差量５１５は正しい値（視差量０）となり、適切な視差量を算出することができる。本実施例による処理では、このような原理により視差量の算出誤差を低減することができ、適切に算出された視差量に基づいて高精度に測距を行うことができる。
【００４９】
ここで、本実施例による距離検出方法では、第１の基準画像と第２の基準画像の位置を、視差算出方向において適切な量だけ異ならせることで、視差量の算出誤差をより低減することができる。図６は各基準画像の適切な位置を説明する図である。
【００５０】
第１の基準画像５２０及び第１の基準画像５２１は、基準画像の右端がＡ画像５０１の画像エッジ５０４又は画像エッジ５０５と重なる基準画像である。これらの第１の基準画像５２０，５２１を用いたときに相関値に発生する誤差を、第２の基準画像で算出した相関値でキャンセルする場合を考える。
【００５１】
この場合には、第１の基準画像の右端における画像エッジに起因する相関値の誤差をキャンセルするため、第２の基準画像の左端における画像エッジに起因する相関値の誤差が生じるように第２の基準画像を設定すればよい。そのため、第２の基準画像を、第１の基準画像５２０，５２１の近傍で、第２の基準画像の左端がＡ画像５０１に含まれる画像エッジに重なるように設定すればよい。
【００５２】
例えば、図６に示すように第２の基準画像５２２，５２３，５２４，５２５，５２６，５２７のいずれかのように、第２の基準画像を設定することができる。このとき、第１の基準画像５２０又は第１の基準画像５２１と第２の基準画像５２２，５２３，５２４，５２５，５２６，５２７の各々とのｘ軸方向における位置の差を求めると、当該位置の差は以下の式（１ａ）又は式（１ｂ）で表すことができる。
【数１】
2019184568.tif 000003
【数２】
2019184568.tif 000004
【００５３】
ここで、Ｗは第１の基準画像及び第２の基準画像のｘ方向（視差算出方向）の幅、Ｐは投影パターンの撮影画像上における周期、Ｈは投影パターンの撮影画像上における高輝度領域の幅、ｎは任意の整数を表している。
【００５４】
本実施例による距離検出方法では、第１の基準画像と第２の基準画像の位置を、式（１ａ）又は式（１ｂ）で示す量だけ視差算出方向に互いに異ならせることで、最も適切に視差量の算出誤差を低減することができ、高精度な測距を行うことができる。
【００５５】
なお、第２の基準画像の視差算出方向に垂直な方向（ｙ軸方向）における位置は、第１の基準画像とは異なる位置に設定してもよい。また、第１の基準画像と第２の基準画像とのｘ軸方向又はｙ軸方向の位置は、互いにできるだけ近傍とすることができる。第１の基準画像と第２の基準画像が互いに近い位置にある方が、被写体の距離が略同じ領域に両基準画像を設定することができ、より適切に視差量の算出誤差を低減できる。
【００５６】
また、投影装置１０１の照明ムラや結像光学系１０４の収差等により、距離検出装置１００で取得される画像には像高依存性を有する。この観点からも、第１の基準画像と第２の基準画像とのｘ軸方向又はｙ軸方向の位置は互いに近い位置に設けることができる。好ましくは、撮影画像の対角の長さを１とすると、第１の基準画像及び第２の基準画像は、距離が０．１以内になるように近づけた方がよく、より好ましくは、距離が０．０５以内になるように近づけた方がよい。このように、第１及び第２の基準画像の位置を設定することで、より適切に視差量の算出誤差を低減できる。
【００５７】
上記のように、本実施例による距離検出装置は、投影装置１０１と、撮影装置１０３と、相関算出部１６１、視差算出部１６２、及び距離算出部１６３を含む演算処理部１０６とを備えている。投影装置１０１は、被写体１０２にパターン光を投影する。撮影装置１０３は、投影装置１０１から投影されるパターン光を用いて、視差を有する画像組を取得する。相関算出部１６１は、取得した画像組の片方の画像上で基準画像を設定し、基準画像に基づいて画像組の相関値を算出する。より具体的には、相関算出部１６１は、画像組の他方の画像上に参照画像を設定し、参照画像の位置を所定の方向に移動させながら基準画像と参照画像との相関値を算出する。視差算出部１６２は、相関算出部１６１が算出した相関値を用いて画像組の視差量を算出する。距離算出部１６３は、視差算出部１６２が算出した視差量を用いて被写体１０２までの距離を算出する。
【００５８】
より具体的には、相関算出部１６１は、画像組の片方の画像上で第１の基準画像を設定し、第１の基準画像に基づいて第１の相関値を算出する。また、相関算出部１６１は、画像組の片方の画像上で、視差算出方向において第１の基準画像の位置とは異なる位置に第２の基準画像を設定し、第２の基準画像に基づいて第２の相関値を算出する。そして、視差算出部１６２は、第１の相関値と第２の相関値を用いて視差量を算出する。
【００５９】
ここで、相関算出部１６１は、式（１ａ）又は式（１ｂ）に従って、第１の基準画像と第２の基準画像を設定する。より具体的には、相関算出部１６１は、第１の基準画像と第２の基準画像を、第１の基準画像の視差算出方向の幅、又は該幅と撮影画像上におけるパターン光の周期との差の分だけ、視差算出方向において異なる位置に設定する。又は、相関算出部１６１は、第１の基準画像と第２の基準画像を、第１の基準画像の視差算出方向の幅と撮影画像上におけるパターン光の高輝度領域の幅との差だけ視差算出方向において異なる位置に設定する。若しくは、相関算出部１６１は、第１の基準画像と第２の基準画像を、第１の基準画像の視差算出方向の幅から撮影画像上におけるパターン光の高輝度領域の幅とパターン光の周期とを引いた量の分だけ、視差算出方向において異なる位置に設定する。
【００６０】
また、視差算出部１６２は、第１の相関値と第２の相関値を加算又は加算平均した相関値より視差量を算出する。
【００６１】
このような構成から、距離検出装置１００が、パターン光を投影した撮影画像を用いた距離検出における視差量の算出誤差を低減することができる。そのため、距離検出装置１００は、算出誤差の低減された視差量に基づいて、被写体１０２の高精度な距離情報を取得することができる。
【００６２】
なお、本実施例に係る距離検出処理のフローでは、相関演算１の後に相関演算２を行うとしているが、相関演算１において第１の基準画像を設定した後に、相関演算１と相関演算２を並列に処理してもよい。
【００６３】
また、本実施例における視差量を算出する方法は、前述したステップＳ３０４における方法に限定されるものでない。例えば、視差算出部１６２が、第１の相関値より第１の視差量を算出し、第２の相関値より第２の視差量を算出し、これらの視差量を加算平均することで最終的な視差量を算出してもよい。この場合には、相関算出部１６１は、第１及び第２の相関値を用いて第３の相関値を求めなくてよい。
【００６４】
さらに、図７（ａ）に示すように、Ａ画像３１０Ａにおいて、注目画素３２０を中心とし、第１の基準画像７０１と第２の基準画像７０２を視差算出方向において互いに逆方向に偏心させて設定してもよい。この場合にも、第１の基準画像７０１と第２の基準画像７０２を用いて注目画素３２０を中心とする部分領域の平均的な距離情報が算出されるため、注目画素３２０の位置と距離情報との位置ずれを低減することができる。また、前述のように、第１の基準画像７０１と第２の基準画像７０２の視差算出方向における位置関係を適切に設定することで、より適切に視差量の算出誤差を低減することができる。
【００６５】
本実施例では、第１の基準画像と第２の基準画像の２つの基準画像を設定し、視差量を算出する手法について述べた。しかしながら、第１の基準画像の周囲にさらに多数の基準画像を設定し、各々の基準画像で算出した相関値を用いて視差量を算出してもよい。
【００６６】
例えば、図７（ｂ）に示すように、相関算出部１６１は、第１の基準画像７０１と第２の基準画像７０２と第３の基準画像７０３を設定し、各々の基準画像を用いて第１の相関値、第２の相関値、及び第３の相関値を算出する。その後、視差算出部１６２は、上述のように、これらの相関値を加算又は加算平均して求めた相関値より視差量を算出してもよい。また、視差算出部１６２は、第１の相関値と第２の相関値を加算して求めた相関値より視差量を算出し、第１の相関値と第３の相関値を加算して求めた相関値より視差量を算出し、これらの視差量を加算平均することで最終的な視差量を算出してもよい。
【００６７】
同じ画像エッジに対して第１の基準画像と第２の基準画像とを設定した場合でも、投影パターンの輝度のばらつきや撮影画像に付与されるノイズ、収差の影響等によって、第１の相関値と第２の相関値とは完全に対称な関係にはならない場合がある。これに対して、より多くの基準画像を設定し、各々の基準画像より求めた相関値を用いて視差量を算出することで、これらの影響を軽減し、視差量の算出誤差をより低減することができる。そのため、当該処理を行うことで、より適切に高精度に測距を行うことができる。
【００６８】
さらに、本実施例では、１つの注目画素について、被写体１０２までの距離を算出する場合について述べた。これに対して、Ａ画像上の複数の画素における距離（距離画像）を効率よく算出する距離検出方法のフローを図８に示す。当該距離検出方法が開始されると、処理はステップＳ８０１に移行する。
【００６９】
ステップＳ８０１「パターン光投影画像取得」では、ステップＳ３０１と同様に、投影装置１０１が被写体１０２へパターン光投影を行った状態で撮影装置１０３により撮影を行い、撮影画像を本体メモリ１０７に記憶させる。
【００７０】
次に、ステップＳ８０２「各画素の相関値算出」では、相関算出部１６１が、Ａ画像上の各画素における相関値を算出する。具体的には、Ａ画像上において注目画素とその近傍画素を含む部分領域を抜き出して基準画像を設定する。次にＢ画像上で参照画像を設定し、参照画像を抜き出す位置を視差算出方向に移動させて、各移動量における参照画像と基準画像との相関値を算出することで、各移動量に対する相関値を算出する。この演算を、Ａ画像上の各々の画素を注目画素として設定して行うことで、各画素における相関値を算出する。
【００７１】
ステップＳ８０３「各画素の視差量算出」では、視差算出部１６２が、Ａ画像上の各画素における視差量を算出する。その後、視差算出部１６２は、Ａ画像上において注目画素と視差算出方向において所定の位置だけ異なる画素を選択する。このとき、視差算出部１６２は、注目画素を含む第１の基準画像から前述のように適切な位置にだけ異なるように設定された第２の基準画像における注目画素に対応する画素を選択する。そして、視差算出部１６２は、注目画素と選択画素について、ステップＳ８０２で算出した相関値を選択し、選択した両相関値を用いて視差量を算出する。なお、視差量はステップＳ３０４と同様の方法で算出することができる。
【００７２】
ステップＳ８０４「各画素の距離値算出」では、距離算出部１６３が、Ａ画像上の各画素における距離値を算出する。具体的には、距離算出部１６３は、ステップＳ８０３の各画素で算出した視差量を、ステップＳ３０５と同様に既知の手法を用いてデフォーカス量又は被写体距離に変換する。
【００７３】
このようなフローにより、各々の注目画素について複数の基準画像を設定して相関値を算出する場合と比べて、重複して行われる相関演算の回数を低減することができ、効率的に複数の画素における距離（距離画像）を算出することができる。
【００７４】
また、代替例として、ステップＳ８０２において、相関算出部１６１が各画素の相関値を算出した後、視差算出部１６２がこの相関値を用いて各画素の仮の視差量を算出する。次にステップＳ８０３にて、視差算出部１６２が、ステップＳ８０２で算出した各画素の視差量を用いて、注目画素から上述の適切な位置だけ異なる画素の視差量と注目画素の視差量を加算平均することで最終的な視差量を算出してもよい。この場合でも、効率的に複数の画素における距離を算出することができる。なお、仮の視差量の算出は、ステップＳ８０３で行われてもよい。
【００７５】
なお、投影装置１０１によって被写体１０２に照射される投影パターンは、視差算出方向に垂直な方向に高輝度領域と低輝度領域が伸びるラインパターンであることが好ましい。投影パターンが視差算出方向に垂直な方向に対して斜めに傾くと、撮影画像に含まれる視差算出方向（瞳分割方向）の空間周波数成分が減少するため、相関演算の精度が低下し、視差量の算出精度が低下する。
【００７６】
そのため、視差算出方向と投影パターンの明領域が伸びる方向がなす角度は６０度以上であることが好ましく、さらに好ましくは８０度以上であることが好ましい。視差算出方向に垂直な方向により近い方向に高輝度領域（照明領域）が伸びるパターンを投影し、本実施例で述べた方法で視差量を算出することで、より高精度な測距を行うことができる。
【００７７】
また、本実施例では、第１の基準画像の近傍に第２の基準画像を設定し、両基準画像で算出した相関値を用いて視差量を算出することから、投影パターンにおいて、できるだけ同じパターン同士が近傍にあることが望ましい。そのため、投影パターンは周期的に輝度分布が繰り返される周期パターンであることが好ましい。このとき完全な周期パターンであると、相関演算で視差量を算出する際に、一周期ずれた領域が誤って検出される場合がある。そこで、視差量を探索する範囲（参照画像を動かす移動量）をパターンの周期よりも小さくなるように制限することで、この誤検出を回避することができる。
【００７８】
また、投影パターンを完全に同じ輝度分布が繰り返されるパターンにする必要はない。投影パターンは周期的に略同じ輝度分布が繰り返されるパターンであればよい。例えば、明領域の視差算出方向における幅がライン毎に異なっていてもよい。また、明領域又は暗領域内に輝度のばらつきがあるパターンであってもよい。適度に輝度変化を与えることで、１周期ずれた領域が誤って検出されることを回避することができる。
【００７９】
さらに、視差画像を取得する撮影装置は、２つ以上の複数の光学系とそれに対応する撮像素子から構成されたステレオカメラで構成されてもよい。この場合には、基線長の設計自由度が向上し、測距分解能が向上する。また、撮影装置と投影装置とを別の装置として距離検出装置を構成してもよい。
【００８０】
なお、制御装置を撮影装置内に備えられたＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）等を用いて構成する場合、装置を小型化することができる。
【００８１】
また、投影装置１０１は、光源としてＬＤ（Ｌａｓｅｒ  Ｄｉｏｄｅ）を用いてもよい。さらに、パターン形成手段として反射型ＬＣＯＳ（Ｌｉｑｕｉｄ Ｃｒｙｓｔａｌ Ｏｎ Ｓｉｌｉｃｏｎ）や透過型ＬＣＯＳ、ＤＭＤ（Ｄｉｇｉｔａｌ Ｍｉｃｒｏｍｉｒｒｏｒ Ｄｅｖｉｃｅ）を用いてもよい。これらを用いる場合には、被写体の大きさや距離に応じて投影パターンの周期を適時変えることができ、状況に応じてより高精度な測距を行うことができる。
【００８２】
さらに、投影装置１０１の光源からの光を、光の波長が可視光域の全域を含む白色とすることで、被写体１０２の分光反射率によらず反射率補正の効果が得られる。また、使用エネルギーに対する光利用効率の観点から、投影装置１０１の光源をＲＧＢの３色から構成し、光源からの光の波長を撮影装置１０３のカラーフィルタ透過帯域と一致させることができる。
【００８３】
投影装置１０１の光源の波長がＩＲ（Ｉｎｆｒａｒｅｄ）領域である場合、これに対応した透過帯域及び受光感度を持つカラーフィルタ並びに撮像素子１０５を備えた撮影装置１０３を用いて撮影を行うことができる。この場合には、ＲＧＢ帯域を用いて鑑賞用画像を同時に撮影することができる。特にＩＲの波長帯域が８００ｎｍから１１００ｎｍの間である場合、撮像素子の光電変換部にＳｉを用いることができ、カラーフィルタの配列を変更することで、ひとつの撮像素子によりＲＧＢ鑑賞画像とＩＲ測距画像を取得することができる。
【００８４】
なお、本実施例では、被写体１０２までの距離を算出する例について示したが、視差量を検出する視差検出装置にも本実施例に係る視差量の算出方法を適用することができる。この場合には、図３において、ステップＳ３０５「距離値算出」を省略してもよい。例えば、視差検出装置では、視差量に基づいて、合焦位置近傍の被写体を画像から切り出すなどの処理を施すことができる。この視差量検出装置は、本実施例における距離検出装置１００において視差量を距離に変換せずにそのまま出力する構成とすれば、その他の構成は距離検出装置１００と同じでよい。
【００８５】
本実施例に係る距離検出方法は、距離検出装置に適用する他に、コンピュータプログラムとして実現されてもよい。このようなコンピュータプログラムは、距離又は視差量の算出のために、コンピュータ（プロセッサ）に所定の工程を実行させるものである。当該プログラムは、距離検出装置、視差検出装置、又はそのいずれかを備えるデジタルカメラ等の撮像装置のコンピュータにインストールされる。この場合には、インストールされたプログラムがコンピュータによって実行されることで上記の機能が実現し、高精度な距離検出や視差量の検出を行うことができる。
【００８６】
（実施例２）
図９を参照して、実施例２による、例えば生産作業用ロボット装置等のロボット装置について説明する。本実施例によるロボット装置９００には、架台９０１と、多関節ロボットアームであるロボットアーム９０２と、ロボットハンド９０３と、制御装置９０５と、距離検出装置１００が設けられている。なお、本実施例に係る距離検出装置１００は、実施例１による距離検出装置１００と同様の装置であるため、同じ参照符号を付し、説明を省略する。
【００８７】
ロボットアーム９０２は架台９０１に設置され、ロボットアーム９０２の先端部には、ロボットハンド９０３が取り付けられている。ロボットハンド９０３は、ワーク（工業部品）９０４を把持し、把持したワーク９０４を他の部品に組付けることができる。
【００８８】
ロボットアーム９０２の先端部には、ワーク９０４が撮影範囲内に入るように、距離検出装置１００が固定されている。なお、距離検出装置１００の固定の方法は任意の方法であってよく、着脱可能に構成されていてもよい。距離検出装置１００は、撮影を通して取得した画像情報や距離情報を制御装置９０５に送信する。
【００８９】
制御装置９０５は、ロボットアーム９０２、ロボットハンド９０３、及び距離検出装置１００等を制御する。制御装置９０５には、演算部９５１及び制御部９５２が設けられている。
【００９０】
演算部９５１は、距離検出装置１００から送られてきた距離情報や画像情報に基づいて、ワーク９０４の位置姿勢の推定や、ロボットアーム９０２やロボットハンド９０３の駆動量の算出を行う。制御部９５２は、距離検出装置１００に対して距離検出の指令を送信するタイミングや、演算部９５１での演算結果に基づいてロボットアーム９０２、及びロボットハンド９０３の駆動を制御する。
【００９１】
なお、制御装置９０５は任意のコンピュータで構成されてよく、制御装置９０５の各構成要素は、ＣＰＵやＭＰＵ等の演算装置上で実行されるソフトウェアモジュールによって構成されることができる。同様に、制御装置９０５の各構成要素は、ＡＳＩＣ等の特定の機能を果たす回路によって構成されてもよい。
【００９２】
ロボット装置９００を用いた生産工程では、ロボットハンド９０３で架台９０１上に配置されたワーク９０４を把持する。このため、制御部９５２は、ロボットアーム９０２に対して、シリアル通信路を介して移動指令を送信し、ワーク９０４付近にロボットハンド９０３が移動するように、ロボットアーム９０２及びロボットハンド９０３を制御する。
【００９３】
ワーク９０４の位置姿勢は不定であるため、ロボットハンド９０３によりワーク９０４の把持を行う前に、ロボット装置９００は、距離検出装置１００によりワーク９０４を撮影し、画像情報及び距離情報を取得する。制御装置９０５の演算部９５１は、これら画像情報及び距離情報に基づいて、ワーク９０４の位置姿勢情報を演算し、ワーク９０４の位置姿勢を推定する。さらに、演算部９５１は、演算したワーク９０４の位置姿勢情報に基づいて、ロボットアーム９０２の移動量を演算する。演算部９５１は、演算したロボットアーム９０２の移動量のデータを制御部９５２に送信する。
【００９４】
制御部９５２は、ロボットアーム９０２に対して、演算部９５１から受け取った移動量分だけ移動するように指令を送信する。これにより、ロボットアーム９０２はワーク９０４を把持するのに適した位置に移動する。ロボットアーム９０２の移動が完了したら、制御部９５２はロボットハンド９０３に対してハンドを閉じるように指令を送信する。ロボットハンド９０３は、制御部９５２からの指令に応じてハンドを閉じてワーク９０４を把持する。
【００９５】
制御部９５２は、ロボットハンド９０３が把持したワーク９０４を不図示の本体部品に組み付けるために、所定の位置にロボットアーム９０２を移動させ、移動した後にロボットハンド９０３を開くように指令を送信する。これらの作業を繰り返し行うことで、ロボット装置９００によるワーク９０４の組み付け作業が行われる。
【００９６】
一般的なワーク９０４は表面に模様が無いことが多い。そのため、ロボット装置９００では、距離検出装置１００の投影装置１０１からパターン光の投影を行い、ワーク９０４の表面にテクスチャを重畳した状態で撮影を行う。これにより、高精度な測距を行うことができる。
【００９７】
また、距離検出装置１００は、実施例１と同様に、第１の基準画像と第２の基準画像を適切に設定し、これらの基準画像を用いて算出した相関値より視差量を算出し、距離を求めることで、ワーク９０４の距離情報をより高精度に取得することできる。これにより、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【００９８】
上記のように、本実施例に係るロボット装置９００は、距離検出装置１００と、ロボットアーム９０２と、ロボットアーム９０２に設けられたロボットハンド９０３と、ロボットアーム９０２及びロボットハンド９０３を制御する制御装置９０５とを備える。ここで、距離検出装置１００は、ワーク９０４までの距離を含む距離情報及びワーク９０４の画像情報を取得する。制御装置９０５は、距離情報及び画像情報を用いてワーク９０４の位置姿勢を推定し、推定した位置姿勢に基づいてロボットアーム９０２及びロボットハンド９０３を制御する。このような構成により、ロボット装置９００では、視差量の算出誤差を低減でき、ワーク９０４の距離情報をより高精度に取得することで、ワーク９０４の位置姿勢推定精度を向上させ、より高精度な組み付け作業を行うことができる。
【００９９】
なお、本実施例では、距離検出装置１００をロボットアーム９０２に固定した例について述べたが、ロボットアーム９０２とは離れた位置に距離検出装置１００を設けてもよい。この場合には、ワーク９０４が撮影範囲内に入るように距離検出装置１００を設置すればよい。また、演算処理部１０６は距離検出装置１００内に設けられなくてもよく、制御装置９０５内に設けられてもよい。また、演算処理部１０６で行う処理を制御装置９０５内の演算部９５１で行ってもよい。
【０１００】
距離検出装置１００とワーク９０４との距離は、ロボットアーム９０２やロボットハンド９０３の位置に応じて変化する。このとき、投影装置１０１の投影パターンを変えないで距離検出を行うと、撮影画像上におけるパターンの周期が、距離検出装置１００とワーク９０４との距離に応じて変化する。このため、第１の基準画像と第２の基準画像との最適な位置関係が変化し、視差量の算出誤差を低減させる効果が弱くなることがある。
【０１０１】
そこで、相関算出部１６１は、投影パターンを撮影して取得した画像を分析し、分析結果に基づいて第２の基準画像の位置を設定してもよい。具体的には、相関算出部１６１は、投影パターンを撮影して取得した画像組を分析し、画像上におけるパターンの周期を示す画素値の変動の周期を算出・評価する。次に、相関算出部１６１は、視差算出方向における第１の基準画像の幅とパターンの周期に基づいて、第２の基準画像を設定する位置を決定する。なお、この際には、相関算出部１６１は、上述した式（１ａ）又は式（１ｂ）に従って、第２の基準画像の位置を決定することができる。このような処理により、相関算出部１６１は、距離検出装置１００とワーク９０４との距離に応じて、第２の基準画像の位置を適切に設定することができる。
【０１０２】
また、ワーク９０４とロボットハンド９０３の距離が近いときほど、面内解像度が高い距離情報を取得し、ワーク９０４の位置姿勢を高精度に推定することが求められる。ここで、ワーク９０４の距離は、撮影画像上におけるワーク９０４の大きさから概略的に算出することができる。また、距離検出装置１００によるワーク９０４の距離情報の取得と制御装置９０５によるロボットアーム９０２の制御は時系列で順次行うため、これら処理の１サイクル前に取得した距離情報に基づいて、ワーク９０４の距離を概略的に知ることもできる。
【０１０３】
そこで、相関算出部１６１又は演算処理部１０６は、概略的なワーク９０４の距離情報に基づいて、ワーク９０４の距離が近いほど第１の基準画像と第２の基準画像の大きさが小さくなるように、これら画像の大きさを設定してもよい。この場合、相関算出部１６１は、投影パターンの画像上における周期と第１の基準画像の大きさとから第２の基準画像の位置を決定することができる。
【０１０４】
また、ワーク９０４の距離が近いときほど投影パターンの周期が細かくなるように、制御部１０８によって投影装置１０１の投影パターンを変更してもよい。これらのような処理により、距離検出装置１００とワーク９０４との距離に応じて、第２の基準画像を適切に設定することができる。
【０１０５】
これらの方法により、第２の基準画像を適切に設定することで、ロボット装置９００は、距離検出装置１００による視差量の算出誤差を低減することができ、ワーク９０４の距離を高精度に算出することができる。このため、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【０１０６】
（実施例３）
図１０（ａ）及び（ｂ）を参照して、実施例３による距離検出装置について説明する。実施例１による距離検出装置１００では投影装置１０１を設けたが、距離検出装置の構成はこれに限られない。本実施例による距離検出装置１１０では、投影装置１０１を設けずに、被写体１１２の模様を分析し、被写体１１２への距離を検出する。このような距離検出装置１１０は、周期的に模様が変化する被写体１１２に対して距離検出を行う場合に特に有効である。
【０１０７】
なお、本実施例による距離検出装置１１０は、投影装置１０１が設けられていない点と、演算処理部１１６に判定部１６４が設けられている点を除き、実施例１による距離検出装置１００と同様の構成を有する。そのため、演算処理部１１６及び判定部１６４以外の構成要素については、実施例１と同じ参照符号を用いて、説明を省略する。以下、本実施例による距離検出装置１１０と実施例１による距離検出装置１００との違いを中心に説明する。
【０１０８】
図１０（ａ）は、本実施例による距離検出装置１１０の概略的な構成例を示す。撮影装置１０３には、結像光学系１０４、撮像素子１０５、演算処理部１１６、及び本体メモリ１０７が設けられている。結像光学系１０４、撮像素子１０５、及び本体メモリ１０７は実施例１と同様の構成である。
【０１０９】
演算処理部１１６には、相関算出部１６１、視差算出部１６２、及び距離算出部１６３に加えて、判定部１６４が設けられている。相関算出部１６１、視差算出部１６２、及び距離算出部１６３は実施例１と同様の構成である。判定部１６４は、取得した被写体１１２の撮影画像が周期性を有するか否かを判定し、判定結果を相関算出部１６１に送信する。相関算出部１６１は、判定部１６４から受け取った判定結果に基づいて、相関演算を行う。
【０１１０】
図１０（ｂ）を参照して、本実施例に係る距離検出方法のフローについて説明する。距離検出方法が開始されると、処理はステップＳ１００１に移行する。
【０１１１】
ステップＳ１００１「画像取得」では、撮影装置１０３により被写体１１２を撮影し、視差を有するＡ画像とＢ画像を含む画像組を生成・取得し、取得した画像組を本体メモリ１０７に蓄える。
【０１１２】
以降の各ステップの処理は、演算処理部１１６にて行う。ステップＳ１００２「相関演算１」では、相関算出部１６１が、第１の基準画像を設定し、第１の相関値を算出する。
【０１１３】
次に、ステップＳ１００３「周期性判定処理」において、判定部１６４が、撮影画像の画素値が視差算出方向において周期性を有しているかを判定する。周期性の判定は、例えば、Ａ画像の部分領域画像を抜き出し、抜き出した画像とＡ画像上の他の部分領域画像との相関演算を行う。相関が高くなる領域が周期的に現れるとき、判定部１６４は、撮影画像が周期性を有すると判定することができる。また、判定部１６４は、相関算出部１６１が求めた第１の相関値を用いて、参照画像の移動量に対して周期的に第１の基準画像と参照画像との相関値が高くなっているか否かを判定してもよい。この場合には、判定部１６４は、周期的に相関値が高くなっていたら、撮影画像が周期性を有すると判定することができる。ステップＳ１００３において、撮影画像が周期性を有していると判定された場合、処理はステップＳ１００４に移行する。
【０１１４】
ステップＳ１００４「相関演算２」では、相関算出部１６１が第２の基準画像を設定し、第２の相関値を算出する。第２の基準画像の設定方法及び第２の相関値の算出方法は実施例１と同様である。
【０１１５】
ステップＳ１００５「視差量算出」では、視差算出部１６２が、ステップＳ１００２及びステップＳ１００４で求めた第１の相関値と第２の相関値より視差量を算出する。視差量の算出方法は実施例１と同様である。なお、本実施例では、パターン光を投影しないため、画像エッジは被写体１１２の模様のエッジとなる。
【０１１６】
ステップＳ１００６「距離値算出」では、距離算出部１６３が、実施例１と同様に、ステップＳ１００５で算出した視差量を既知の手法によりデフォーカス量又は被写体距離に変換する。
【０１１７】
一方で、ステップＳ１００３において、撮影画像が周期性を有していないと判定された場合には、処理はステップＳ１００７「視差量算出２」に移行する。ステップＳ１００７では、視差算出部１６２が、ステップＳ１００２で算出した第１の相関値より視差量を算出する。第１の相関値より視差量を算出する方法は前述と同様の方法を用いることができる。ステップＳ１００７で視差量を算出したら、距離算出部１６３は、ステップＳ１００６において、算出した視差量に基づいて距離値を算出する。
【０１１８】
このような処理により、本実施例による距離検出装置１１０は、周期的に模様が変化する被写体１１２に対しても、実施例１と同様の理由により、視差量の算出誤差を低減でき、高精度な距離検出を行うことができる。
【０１１９】
上記のように、本実施例による距離検出装置１１０は、撮影装置１０３で取得した画像組のいずれかの画像が視差算出方向において周期性を有するかを判定する判定部１６４を備える。そして、画像組のいずれかの画像が視差算出方向において周期性を有すると判断された場合に、相関算出部１６１が第１の相関値と第２の相関値を算出し、視差算出部１６２が、第１の相関値及び第２の相関値を用いて視差量を算出する。これにより、距離検出装置１１０は、パターン光を投影しない場合であっても、被写体１１２が有する周期的に変化する模様に基づいて、視差量の算出誤差を低減でき、高精度な測距を行うことができる。
【０１２０】
なお、本実施例に係る距離検出装置は、実施例２と同様にロボット装置に対して適用されてもよい。この場合であっても、ワークの距離を高精度に算出することができる。そのため、ワークの位置姿勢の推定精度を向上させることで、ロボットアーム及びロボットハンドの位置制御の精度を向上させ、より高精度な組み付け作業を行うことができる。
【０１２１】
また、本実施例に係る距離検出方法における視差検出方法は、実施例１と同様に、検出した視差量を出力するための視差検出装置に適用されてもよい。この場合にも、周期的に模様が変化する被写体に対する視差量の検出誤差を低減させることができる。
【０１２２】
（実施例４）
実施例１では、１つの投影パターンの光を撮影した画像において視差算出方向における異なる箇所に基準画像を設定し、各基準画像に関して参照画像との相関値を算出して距離を検出した。これに対し、実施例４に係る距離検出装置では、視差算出方向にずらした２つの投影パターンの光を撮影した２つの画像組における同一箇所に基準画像を設定し、各基準画像に関して参照画像との相関値を算出して距離を検出する。
【０１２３】
以下、図１１（ａ）乃至１５（ｂ）を参照して、本実施例による距離検出装置について説明する。本実施例による距離検出装置の構成は実施例１による距離検出装置１００の構成と同様であるため、実施例１と同じ参照符号を用いて説明を省略する。以下、本実施例による距離検出装置と実施例１による距離検出装置１００との違いを中心に説明する。
【０１２４】
本実施例における投影するパターン光を図１１（ａ）と図１１（ｂ）に示す。第１のパターン光であるパターン光１１０１は、ｘ軸方向に高輝度領域と低輝度領域が交互に繰り返され、周期１１０３を有している。また、パターン光１１０１は、ｙ軸方向に各輝度領域が伸びるラインパターンを有している。第２のパターン光であるパターン光１１０２は、パターン光１１０１と同じｘ軸方向に周期的な輝度分布を有するとともに、ｙ軸方向に各輝度領域が伸びるラインパターンを有している。パターン光１１０２のラインパターンは、パターン光１１０１のラインパターンとはｘ軸方向における位置がずれている。
【０１２５】
次に、図１２（ａ）乃至（ｃ）を参照して、本実施例に係る測距演算フローについて説明する。図１２（ａ）は本実施例に係る距離検出処理のフローチャートであり、図１２（ｂ）及び（ｃ）は、相関算出部１６１によって行う相関演算を説明するための図である。本実施例に係る距離検出処理が開始されると、処理はステップＳ１２０１に移行する。
【０１２６】
ステップＳ１２０１「パターン光投影画像取得１」では、投影装置１０１から被写体１０２へパターン光１１０１を投影している状態で、撮影装置１０３を用いて撮影を行い、撮影画像を本体メモリ１０７に記憶させる。なお、パターン光の投影方法は実施例１と同様であるため説明を省略する。
【０１２７】
ステップＳ１２０２「パターン光投影画像取得２」では、被写体１０２へパターン光１１０２を投影している状態で撮影を行い、撮影画像を本体メモリ１０７に記憶させる。パターン光の投影方法は実施例１と同様であるため説明を省略する。
【０１２８】
ステップＳ１２０３からステップＳ１２０６の処理は、演算処理部１０６によって行う。ここで、図１２（ｂ）及び（ｃ）は、それぞれ、ステップＳ１２０３及びステップＳ１２０４にて設定する基準画像及び参照画像の位置関係を説明するための図である。図１２（ｂ）にはステップＳ１２０１で取得されたＡ画像１２１０Ａ及びＢ画像１２１０Ｂが示され、図１２（ｃ）にはステップＳ１２０２で取得されたＡ画像１２２０Ａ及びＢ画像１２２０Ｂが示されている。以下、Ａ画像１２１０Ａ及びＡ画像１２２０Ａ上の同じ位置にある、距離算出を行う画素を注目画素１２３０として説明する。
【０１２９】
ステップＳ１２０３「相関演算１」では、相関算出部１６１が、ステップＳ１２０１で取得した画像組を用いて第１の相関値を算出する。具体的には、相関算出部１６１は、Ａ画像１２１０Ａ上において、注目画素１２３０とその近傍画素を含む部分領域を抜き出し、第１の基準画像１２１１として設定する。次に、相関算出部１６１は、Ｂ画像１２１０Ｂ上において、第１の基準画像１２１１と同じ面積（画像サイズ）の領域を抜き出して参照画像１２１２として設定する。その後、相関算出部１６１は、Ｂ画像１２１０Ｂ上で参照画像１２１２を抜き出す位置を瞳分割方向と同じｘ軸方向に移動させて、各移動量（各位置）における参照画像１２１２と第１の基準画像１２１１との相関値を算出する。これにより、相関算出部１６１は、各移動量に対応する相関値のデータ列からなる第１の相関値を算出する。
【０１３０】
なお、相関値の算出方法は、実施例１に係るステップＳ３０２と同様であってよい。また、相関算出部１６１は、参照画像１２１２を第１の基準画像１２１１の縦及び横寸法と同じ縦及び横寸法を有する画像として設定することができる。
【０１３１】
次に、ステップＳ１２０４「相関演算２」では、相関算出部１６１は、ステップＳ１２０２で取得した画像組を用いて第２の相関値を算出する。具体的には、相関算出部１６１は、Ａ画像１２２０Ａ上において、注目画素１２３０とその近傍画素を含む部分領域を抜き出し、第２の基準画像１２２１として設定する。次に、相関算出部１６１は、Ｂ画像１２２０Ｂ上において、第２の基準画像１２２１と同じ面積の領域を抜き出して参照画像１２２２として設定する。その後、相関算出部１６１は、ステップＳ１２０３と同様に、参照画像１２２２の位置を視差算出方向に移動させ、第２の基準画像１２２１との相関値を算出することで、各移動量に対応する相関値のデータ列からなる第２の相関値を算出する。なお、参照画像１２１２，１２２２の設定条件等は、実施例１と同様であってよい。
【０１３２】
ステップＳ１２０５「視差量算出」では、視差算出部１６２が、実施例１に係るステップＳ３０４と同様に、ステップＳ１２０３及びステップＳ１２０４で求めた第１の相関値と第２の相関値を用いて視差量を算出する。より具体的には、視差算出部１６２は、第１の相関値と第２の相関値の各移動量における相関値をそれぞれ加算又は加算平均し、第３の相関値を算出し、第３の相関値に基づいて視差量を算出する。また、ステップＳ１２０６「距離値算出」では、距離算出部１６３が、実施例１に係るステップＳ３０５と同様に、既知の手法により視差量をデフォーカス量又は被写体距離に変換し、被写体１０２までの距離を算出する。
【０１３３】
このように本実施例による距離検出方法では、瞳分割方向（視差算出方向）においてラインパターンが異なる第１の画像組及び第２の画像組について、それぞれ第１の基準画像１２１１と第２の基準画像１２２１を設定する。その後、第１の基準画像１２１１と第１の基準画像１２１１に対して設定された参照画像１２１２との相関値、及び第２の基準画像１２２１と第２の基準画像１２２１に対して設定された参照画像１２２２との相関値を算出し、両相関値より視差量を算出する。当該処理によれば、各々の画像組より第１の相関値と第２の相関値を算出し、両相関値より視差量を算出することで、投影パターンの輝度分布と基準画像の位置とに関係して発生する測距誤差を軽減することができ、高精度な測距を行うことができる。
【０１３４】
ここで、図１３を参照して、本実施例による距離検出方法の処理結果の一例について述べる。図１３は、既知の距離において、撮影装置１０３と並行となるように配置した平板に、投影装置１０１を用いてパターン光を投影して、撮影装置１０３で撮影し、平板上の各位置における視差量を算出した結果を示すグラフである。図１３の横軸は移動量（画素位置）を表しており、縦軸は視差量の算出誤差を表している。図１３には、従来の処理として、第１のパターン光のみを投影して取得した画像組から算出した視差量の算出誤差１３０１が破線で示され、本実施例に係る手法で算出した視差量の算出誤差１３０２が実線で示されている。従来と比べて本実施例に係る手法により、誤差量が０に近き、視差量の算出誤差を低減していることが分かる。従って、本実施例に係る手法によれば、高精度に測距することができる。
【０１３５】
次に、図１４（ａ）乃至（ｆ）を参照して、従来の処理では視差量の算出に誤差が発生し、本実施例による処理では視差量の算出誤差が低減する理由について説明する。以降の説明では、Ａ画像とＢ画像は同じ濃淡を有する画像で視差が無いものと仮定する。図１４（ａ）乃至（ｃ）は誤差の発生理由を説明する図である。なお、誤差の発生理由に関しては、実施例１で説明したものと同様であるため、説明を簡略化する。
【０１３６】
図１４（ａ）は、明領域及び暗領域が交互に現れるラインパターンを有するＡ画像１４０１と基準画像１４０２及び基準画像１４０３との位置関係を示した図である。基準画像１４０２は、Ａ画像１４０１の明領域と暗領域が切り替わる画像エッジ１４０４（境界部）を基準画像１４０２の内部に含んでいる。図１４（ｂ）は、基準画像１４０２に対して設定された参照画像を移動させて基準画像１４０２と参照画像の相関演算を行うことで算出される各相関値を示している。
【０１３７】
相関値Ｃ０，Ｃｐ，Ｃｍはそれぞれ参照画像の位置を０、＋１、−１画素だけ移動させたときの相関値である。この場合、実施例１で説明したように、相関値Ｃｐ，Ｃｍに対応する参照画像の移動量の絶対値は同じであるため、ラインパターン上の画像エッジ１４０４に起因する画像間の差も同量となる。そのため、相関値Ｃｐと相関値Ｃｍは同じ値となる。この相関値を内挿して相関曲線１４１０を求め、最も高い相関値となる移動量（視差量）を算出することで視差量１４１１が求まり、正しい値（視差量０）が求まる。
【０１３８】
一方、基準画像１４０３では、画像エッジ１４０４と基準画像１４０３の右端が重なる。図１４（ｃ）は、基準画像１４０３に対して設定された参照画像を移動させて基準画像１４０３と参照画像の相関演算を行うことで算出される各相関値を示している。実施例１で説明したように、この場合の相関値は、参照画像の移動量の＋側と−側で非対称となり、これを内挿した相関曲線１４１２により求まる視差量１４１３は正しい値（視差量０）とは異なる値となり、誤差が発生する。これが、投影パターンの輝度分布と基準画像の位置とに関係して発生する視差量の算出誤差となる。
【０１３９】
次に、本実施例のように、視差算出方向に位置ずれした第１のパターン光と第２のパターンを投影して取得した各々の画像組より第１の相関値と第２の相関値を算出し、両相関値より視差量を算出することで、前述の誤差が低減する理由について説明する。図１４（ｄ）は、第１のパターン光を投影して取得したＡ画像１４０１と第１の基準画像１４０３の位置を示した図である。図１４（ｅ）は、第２のパターン光を投影して取得したＡ画像１４０５と第２の基準画像１４０６の位置を示した図である。図１４（ｆ）は、各基準画像を用いて算出される相関値を示している。
【０１４０】
第１の基準画像１４０３として、前述と同様に画像エッジ１４０４と基準画像の右端が重なる基準画像を仮定する。このとき、第１の基準画像１４０３より算出される第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１は、図１４（ｃ）に示す相関値Ｃｍ，Ｃ０，Ｃｐと同様になる。
【０１４１】
次に、第１の基準画像１４０３と同じ位置に設定した第２の基準画像１４０６の左端と画像エッジ１４０７が重なるように第２のパターン光を投影する。このとき、第２の基準画像１４０６と画像エッジ１４０７との位置関係は、第１の基準画像１４０３と画像エッジ１４０４との位置関係を反転した関係になる。そのため、図１４（ｆ）で示したように、第２の基準画像１４０６を用いて得られる第２の相関値Ｃｍ２，Ｃ０２，Ｃｐ２は、第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１を反転したものとなる。
【０１４２】
これらの相関値を参照画像の位置（移動量）毎に加算平均すると、相関値は第３の相関値Ｃｍ３，Ｃ０３，Ｃｐ３のようになる。第３の相関値は、参照画像の移動量の＋側と−側の非対称性がキャンセルされ、対称となる。この場合、相関値を内挿した相関曲線１４１４より求まる視差量１４１５は正しい視差量（視差量０）となり、適切な視差量を算出することができる。本実施例による処理では、このような原理により視差量の算出誤差を低減することができ、適切に算出された視差量に基づいて高精度に測距を行うことができる。
【０１４３】
本実施例では、第１のパターン光と第２のパターンの位置を、視差算出方向において適切な量だけ異ならせることで、視差量の算出誤差をより低減することができる。図１５（ａ）及び（ｂ）は、各基準画像についての第１のパターン光と第２のパターン光の適切な位置を説明する図である。
【０１４４】
第１の基準画像１４０３と第２の基準画像１４０６は、それぞれ、第１のパターン光及び第２のパターン光を用いて取得した画像１４０１，１４０５上の同じ位置に設定した基準画像である。第１の基準画像１４０３の右端と第１のパターン光による画像エッジ１４０４は重なっている。
【０１４５】
ここで、第１の基準画像１４０３を用いたときに相関値に発生する誤差を、第２の基準画像１４０６を用いて算出した相関値でキャンセルする場合を考える。この場合には、第１の基準画像１４０３の右端における画像エッジ１４０４に起因する相関値の誤差をキャンセルするため、第２の基準画像１４０６の左端に関して画像エッジに起因する相関値の誤差が生じるように、第２のパターン光を設定すればよい。なお、パターン光の設定は、演算処理部１０６によって行われてもよいし、制御部１０８によって行われてもよい。
【０１４６】
図１５（ａ）は、第２の基準画像１４０６の左端が第２のパターン光による画像エッジ１４０７と重なる場合を示している。この場合には、第１の基準画像１４０３を用いて算出した第１の相関値に発生する誤差を、第２の基準画像１４０６を用いて算出した第２の相関値でキャンセルすることができる。
【０１４７】
また、図１５（ｂ）は、第２の基準画像１４０６の左端と第２のパターン光による他の画像エッジ１５０８とが重なる場合を示している。この場合にも、第１の基準画像１４０３を用いて算出した第１の相関値に発生する誤差を、第２の基準画像１４０６を用いて算出した第２の相関値でキャンセルすることができる。
【０１４８】
これらの場合における、第１のパターン光と第２のパターン光との視差算出方向（ｘ軸方向）における位置の差を求めると、上述した式（１ａ）又は式（１ｂ）で表すことができる。なお、式中のＷ、Ｐ、Ｈ、及びｎは実施例１において説明したパラメータと同様のパラメータとすることができる。
【０１４９】
本実施例による距離検出方法では、第１のパターン光と第２のパターン光との位置を、式（１ａ）又は式（１ｂ）で示す量だけ視差算出方向に互いに異ならせることで、最も適切に視差量の算出誤差を低減することができ、高精度な測距を行うことができる。なお、パターン光の位置は、制御部１０８によって、投影装置１０１において、光源に対してパターンマスク等のパターン形成手段の位置を制御・変更することで、変更することができる。また、制御部１０８の制御に応じて、投影装置１０１内の空間光変調器を制御したり、複数のパターン形成手段を切り替えて用いたりする等、その他の既知の任意方法によりパターン光の位置を変更してもよい。
【０１５０】
上記のように、本実施例に係る投影装置１０１は、視差算出方向において互いに対して位置がずれたパターンを有する第１のパターン光と第２のパターン光を投影する。相関算出部１６１は、第１のパターン光を投影して取得した第１の画像組に基づいて第１の相関値を算出し、第２のパターン光が投影して取得した第２の画像組に基づいて第２の相関値を算出する。なお、相関算出部１６１は、第１の画像組の片方の画像及び第２の画像組の片方の画像上の同じ位置に設定した基準画像を用いて、第１の相関値と第２の相関値とを算出する。視差算出部１６２は、第１の相関値と第２の相関値を用いて視差量を算出する。
【０１５１】
ここで、第１のパターン光と第２のパターン光は、視差算出方向において高輝度領域と低輝度領域とが交互に繰り返される周期的な光であり、視差算出方向に垂直な第２の方向に高輝度領域及び低輝度領域が伸びるラインパターンを有する。特に、本実施例において、第１のパターン光と第２のパターン光は、同じ輝度分布を有するパターン光を互いに対して視差算出方向にずらした光である。
【０１５２】
また、投影装置１０１は、式（１ａ）又は式（１ｂ）に従って、位置が設定された第１のパターン光と第２のパターン光を投影する。より具体的には、演算処理部１０６は、基準画像の視差算出方向の幅、又は該幅と撮影画像における第１のパターン光の周期との差の分だけ、視算出方向において第１のパターン光と第２のパターン光の位置をずらして設定する。又は、演算処理部１０６は、基準画像の視差算出方向の幅と撮影画像における第１のパターン光の高輝度領域の幅との差の分だけ、視算出方向において第１のパターン光と第２のパターン光の位置をずらして設定する。若しくは、演算処理部１０６は、当該差から撮影画像における第１のパターン光の周期を引いた量だけ、視差算出方向において第１のパターン光と第２のパターンの光の位置をずらして設定する。投影装置１０１は、設定された位置に基づいて、第１のパターン光が有するパターンと第２のパターン光が有するパターンの視差算出方向における位置が異なるように、第１及び第２のパターン光を投影する。
【０１５３】
このような構成から、本実施例に係る距離検出装置は、パターン光を投影した撮影画像を用いた距離検出における視差量の算出誤差を低減することができる。そのため、距離検出装置は、算出誤差の低減された視差量に基づいて、被写体１０２の高精度な距離情報を取得することができる。
【０１５４】
なお、本実施例における視差量を算出する方法は、実施例１と同様に、ステップＳ３０４について説明した方法に制限されるものでない。例えば、視差算出部１６２が、第１の相関値より第１の視差量を算出し、第２の相関値より第２の視差量を算出し、これらの視差量を加算平均することで最終的な視差量を算出してもよい。この場合にも、視差量の算出誤差を低減し、高精度な測距を行うことができる。なお、この場合には、相関算出部１６１は、第１及び第２の相関値を用いて第３の相関値を求めなくてよい。
【０１５５】
なお、本実施例ではステップＳ１２０１及びＳ１２０２で、第１のパターン光及び第２のパターン光に基づく画像を取得し、次に、ステップＳ１２０３及びステップＳ１２０４で各々のパターン光に基づく画像を用いて相関値を算出する例について示した。しかしながら、相関値を算出するタイミングはこれに限定されるものではない。例えば、第１のパターン光に伴う画像を取得して第１の相関値を算出し、次に、第２のパターン光に伴う画像を取得して第２の相関値を算出してもよい。この場合にも、前述と同様の効果を奏することができる。
【０１５６】
また、撮影画像上のどの位置に基準画像を設定しても、基準画像の両端付近に各々のパターン光に基づく画像エッジがあることが好ましい。そのため、実施例１と同様に、投影パターンは、ｘ軸方向に周期的に輝度分布が繰り返される周期パターンであることが好ましい。このとき完全な周期パターンであると、相関演算で視差量を算出する際に、一周期ずれた領域が誤って検出される場合がある。そこで、視差量を探索する範囲（参照画像を動かす移動量）をパターンの周期よりも小さくなるように制限することで、この誤検出を回避することができる。
【０１５７】
また、投影パターンを完全に同じ輝度分布が繰り返されるパターンにする必要はない。投影パターンは周期的に略同じ輝度分布が繰り返されるパターンであればよい。例えば、明領域の視差算出方向における幅がライン毎に異なっていてもよい。また、明領域又は暗領域内に輝度のばらつきがあるパターンであってもよい。適度に輝度変化を与えることで、１周期ずれた領域が誤って検出されることを回避することができるとともに、上述した視差量の算出誤差の低減効果を奏することができる。
【０１５８】
また、本実施例に係る距離検出装置を、実施例２と同様に、生産作業用ロボット装置に適用することもできる。この場合の例について、図９を参照して簡単に説明する。なお、この場合のロボット装置の構成は、実施例２に係るロボット装置の構成と同様であってよいため、図９と同じ参照符号を用いて説明を省略する。
【０１５９】
このようなロボット装置では、本実施例で説明したように、視差算出方向に位置ずれした第１のパターン光と第２のパターン光をワーク９０４に投影し、各々のパターン光に基づく画像組を撮像する。その後、各画像組より第１の相関値と第２の相関値を算出し、距離を求めることで、ワーク９０４の距離情報をより高精度に取得することができる。これにより、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【０１６０】
なお、距離検出装置とワーク９０４との距離は、ロボットアーム９０２やロボットハンド９０３の位置に応じて変化する。このとき、投影装置１０１の投影パターンを変えないで距離計測を行うと、撮影画像上におけるパターンの周期が距離に応じて変化する。そのため、第１のパターン光と第２のパターン光との最適な位置関係が変化し、視差量の算出誤差を低減させる効果が弱くなることがある。
【０１６１】
そこで、演算処理部１０６は、第１のパターン光を投影して取得した画像を分析し、分析結果に基づいて第２のパターン光におけるラインパターンの位置ずれ量を決定してもよい。具体的には、演算処理部１０６は、第１のパターン光を投影して取得した画像を分析し、取得した画像上において視差算出方向における第１のパターン光の周期を示す画素値の変動の周期を算出・評価する。次に、演算処理部１０６は、視差算出方向における第１の基準画像の幅（サイズ）とパターンの周期に基づいて、第２のパターン光の視差算出方向における位置ずれ量を決定する。
【０１６２】
また、演算処理部１０６は、第１のパターン光と第２のパターン光の位置ずれ量を各々のパターン光を投影して取得した画像より分析し、それに応じて視差算出方向における第１及び第２の基準画像の幅を決定してもよい。具体的には、演算処理部１０６は、第１のパターン光と第２のパターン光をそれぞれ投影して得た各画像群の少なくとも一方の画像に基づいて、視差算出方向における第１のパターン光と第２のパターン光の位置ずれ量を算出する。次に、演算処理部１０６は、第１のパターン光と第２のパターン光の位置ずれ量に基づいて、第１及び第２の基準画像の幅を決定する。
【０１６３】
これらのような処理により、演算処理部１０６は、距離検出装置とワーク９０４との距離に応じて第１のパターン光と第２のパターン光との位置ずれ量と第１及び第２の基準画像の大きさ（サイズ）を適切に設定することができる。なお、当該位置ずれ量や基準画像の幅を決定する際には、上述した式（１ａ）又は式（１ｂ）に従って、これらを決定することができる。また、演算処理部１０６による処理は、制御部１０８で行われてもよいし、制御装置９０５によって行われてもよい。
【０１６４】
また、ワーク９０４とロボットハンド９０３の距離が近いときほど、面内解像度が高い距離情報を取得し、ワーク９０４の位置姿勢を高精度に推定することが求められる。ここで、ワーク９０４の距離は、撮影画像上におけるワーク９０４の大きさから概略的に算出することができる。また、距離検出装置によるワーク９０４の距離情報の取得と制御装置９０５によるロボットアーム９０２の制御は時系列で順次行うため、これらの処理の１サイクル前に取得した距離情報に基づいてワーク９０４の距離を概略的に知ることもできる。
【０１６５】
そこで、演算処理部１０６は、概略的なワーク９０４の距離情報に基づいて、ワーク９０４の距離が近いほど第１の基準画像の大きさが小さくなるように設定してもよい。この場合、演算処理部１０６は、画像上における第１のパターン光の周期と第１の基準画像の大きさとから第２のパターン光の位置ずれ量を決定することができる。
【０１６６】
また、演算処理部１０６は、距離が近いときほど投影パターンの周期が細かくなるように、投影パターンを変更してもよい。このような処理により、演算処理部１０６は、距離検出装置とワーク９０４との距離に応じて、第１のパターン光と第２のパターン光との位置ずれ量を適切に設定することができる。なお、演算処理部１０６に代わって、制御部１０８や制御装置９０５が画像を分析してパターン光の位置ずれ量を決定してもよい。また、パターン光の位置は制御部１０８によって制御されてよい。
【０１６７】
これらの方法により、第１のパターン光と第２のパターン光と基準画像を適切に設定することで、ロボット装置９００は、距離検出装置による視差量の算出誤差を低減することができ、ワーク９０４の距離を高精度に算出することができる。このため、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【０１６８】
（実施例５）
実施例４による距離検出装置では、視差算出方向にずらした２つの投影パターンの光を撮影した２つの画像における同一箇所に基準画像を設定し、各基準画像に関して参照画像との相関値を算出して距離を検出した。これに対し、実施例５による距離検出装置では、波長帯域が異なる複数のパターン光を投影し、各々のパターン光による画像組を取得して距離を検出する。
【０１６９】
以下、図１６（ａ）乃至１７（ｃ）を参照して、本実施例による距離検出装置について説明する。図１６（ａ）は、本実施例による距離検出装置１６００の概略的な構成を示す。なお、本実施例による距離検出装置１６００において、実施例１による距離検出装置１００と同様の構成については、同じ参照符号を用いて説明を省略する。以下、実施例４による距離検出装置との違いを中心として、本実施例に係る距離検出装置１６００について説明する。
【０１７０】
本実施例による距離検出装置１６００には、投影装置１６１０、及び撮影装置１６０３が設けられている。撮影装置１６０３には、結像光学系１０４、撮像素子１６２０、演算処理部１０６、及び本体メモリ１０７が設けられている。また、投影装置１６１０及び撮影装置１６０３は、制御部１０８に接続され、制御部１０８は、投影装置１６１０及び撮影装置１６０３の同期などの制御を行う。
【０１７１】
投影装置１６１０は、パターン光１６１１とパターン光１６１２を投影するように構成されている。図１６（ｂ）及び図１６（ｃ）は、それぞれ、本実施例において投影するパターン光の例であるパターン光１６１１，１６１２を示す。第１のパターン光であるパターン光１６１１は、ラインパターンを有し、ｘ軸方向に高輝度領域と低輝度領域が交互に繰り返され、周期１６１３を有している。第２のパターン光であるパターン光１６１２は、パターン光１６１１と同じｘ軸方向に周期的な輝度分布を有するラインパターンを有している。また、パターン光１６１２のラインパターンは、パターン光１６１１のラインパターンとは、ｘ軸方向における位置がずれている。
【０１７２】
ここで、本実施例に係るパターン光１６１１とパターン光１６１２は、それぞれ波長帯域が異なる光である。そのため、投影装置１６１０には、例えば、光源と結像光学系とパターン形成手段とを含む投影光学系が２台設けられる。当該２台の投影光学系には、互いに波長帯域が異なる光源と、互いにパターンが異なるパターンマスクとが含まれる。なお、同じパターンマスクを含むとともにパターンマスクの位置を変更できるように構成された投影光学系を用いてもよい。
【０１７３】
図１６（ｄ）は、撮像素子１６２０の一部を示す。撮像素子１６２０には、複数の画素１６２１，１６２２，１６２３が配置され、これら画素上には透過波長帯域が異なるカラーフィルタが配置されている。本実施例では、画素１６２１上のカラーフィルタはパターン光１６１１の波長帯域、画素１６２２上のカラーフィルタはパターン光１６１２の波長帯域の光を透過するように構成されている。このような撮像素子を用いることで、各パターン光の波長に対応するカラーフィルタが配置された画素において、対応する波長のパターン光を受光することができ、各々のパターン光に基づく画像組を分離して取得することができる。なお、撮像素子１６２０における、複数の画素１６２１、複数の画素１６２２、及び複数の画素１６２３の配置は、図１６（ｄ）に示す配置に限定されず、所望の構成に応じて任意に変更されてよい。
【０１７４】
次に、図１７（ａ）乃至（ｃ）を参照して、本実施例に係る測距演算フローについて説明する。図１７（ａ）は本実施例に係る距離検出処理のフローチャートであり、図１７（ｂ）及び（ｃ）は、相関算出部１６１によって行う相関演算を説明するための図である。本実施例に係る距離検出処理が開始されると、処理はステップＳ１７０１に移行する。
【０１７５】
ステップＳ１７０１「パターン光投影画像取得」では、投影装置１６１０から被写体１０２へパターン光１６１１及び１６１２を投影している状態で、撮影装置１６０３を用いて撮影を行い、撮影画像を本体メモリ１０７に記憶させる。撮影装置１６０３は、この状態で撮影を行うことで、画素１６２１を用いて画像組１７１０を取得し、画素１６２２を用いて画像組１７２０を取得し、本体メモリ１０７に記憶させることができる。なお、パターン光の投影方法は、実施例１や実施例４と同様であるため説明を省略する。また、以下において、画像組１７１０は、Ａ画像１７１０Ａ及びＢ画像１７１０Ｂを含むものとして、画像組１７２０は、Ａ画像１７２０Ａ及びＢ画像１７２０Ｂを含むものとして説明する。
【０１７６】
ステップＳ１７０２からステップＳ１７０５の処理は、演算処理部１０６によって行う。ここで、図１７（ｂ）及び（ｃ）は、ステップＳ１７０２及びステップＳ１７０３において設定する基準画像及び参照画像の位置関係を説明する図である。図１７（ｂ）にはステップＳ１７０１で画素１６２１を用いて取得したＡ画像１７１０Ａ及びＢ画像１７１０Ｂが示され、図１７（ｃ）には画素１６２２を用いて取得したＡ画像１７２０Ａ及びＢ画像１７２０Ｂが示されている。以下、Ａ画像１７１０Ａ及びＡ画像１７２０Ａ上の同じ位置にある、距離算出を行う画素を注目画素１７３０として説明する。
【０１７７】
ステップＳ１７０２「相関演算１」では、相関算出部１６１が、ステップＳ１７０１で取得した画像組１７１０を用いて相関値を算出する。具体的には、相関算出部１６１は、Ａ画像１７１０Ａ上において、注目画素１７３０とその近傍画素を含む部分領域を抜き出し、第１の基準画像１７１１として設定する。次に、相関算出部１６１は、Ｂ画像１７１０Ｂ上において、第１の基準画像１７１１と同じ面積の領域を抜き出して参照画像１７１２として設定する。その後、相関算出部１６１は、実施例４に係るステップＳ１２０３と同様に、第１の基準画像１７１１と参照画像１７１２とを用いて第１の相関値を算出する。
【０１７８】
なお、相関値の算出方法は、実施例１に係るステップＳ３０２と同様であってよい。また、相関算出部１６１は、参照画像１７１２を第１の基準画像１７１１の縦及び横寸法と同じ縦及び横寸法を有する画像として設定することができる。
【０１７９】
次に、ステップＳ１７０３「相関演算２」では、相関算出部１６１は、ステップＳ１７０１で取得した画像組１７２０を用いて相関値を算出する。具体的には、相関算出部１６１は、Ａ画像１７２０Ａ上において、注目画素１７３０とその近傍画素を含む部分領域を抜き出し、第２の基準画像１７２１として設定する。次に、相関算出部１６１は、Ｂ画像１７２０Ｂ上において、第２の基準画像１７２１と同じ面積の領域を抜き出して参照画像１７２２として設定する。その後、相関算出部１６１は、実施例４に係るステップＳ１２０４と同様に、第２の基準画像１７２１と参照画像１７２２とを用いて第２の相関値を算出する。なお、相関算出部１６１は、実施例４と同様に、第１の基準画像１７１１と同じ位置に第２の基準画像１７２１を設定することができる。
【０１８０】
ステップＳ１７０４「視差量算出」では、視差算出部１６２が、実施例１に係るステップＳ３０４と同様に、ステップＳ１７０３及びステップＳ１７０４で求めた第１の相関値と第２の相関値を用いて視差量を算出する。より具体的には、視差算出部１６２は、第１の相関値と第２の相関値の各移動量における相関値をそれぞれ加算又は加算平均し、第３の相関値を算出し、第３の相関値に基づいて視差量を算出する。また、ステップＳ１７０５「距離値算出」では、距離算出部１６３が、実施例１に係るステップＳ３０５と同様に、既知の手法により視差量をデフォーカス量又は被写体距離に変換し、被写体１０２までの距離を算出する。
【０１８１】
このように本実施例による距離検出方法では、投影装置１６１０が、視差算出方向に位置ずれしたラインパターンを有する、波長帯域が異なる第１のパターン光と第２のパターン光を投影する。また、撮影装置１６０３は、第１のパターン光に基づく画像組と、第２のパターン光に基づく画像組とを分離して取得する。相関算出部１６１は、各々の画像組について、それぞれ第１の基準画像１７１１と第２の基準画像１７２１を設定する。その後、相関算出部１６１は、第１の基準画像１７１１と対応して設定された参照画像１７１２との第１の相関値、及び第２の基準画像１７２１と対応して設定された参照画像１７２２との第２の相関値を算出する。視差算出部１６２は、両相関値より視差量を算出する。当該処理によれば、各々の画像組より第１の相関値と第２の相関値を算出し、両相関値より視差量を算出することで、投影パターンの輝度分布と基準画像の位置とに関係して発生する測距誤差を軽減することができ、高精度な測距を行うことができる。
【０１８２】
特に、本実施例では、波長帯域が異なる第１のパターン光と第２のパターン光を同時に投影し、各々のパターン光に基づく画像組を撮像素子１６２０で取得する。このため、一回のパターン投影で距離計測を行うことができ、高速な計測を行うことができる。
【０１８３】
なお、第１のパターン光と第２のパターン光の波長帯域は、互いに離れていることが好ましい。例えば、第１のパターン光を青色や紫外の波長帯域とし、第２のパターン光を赤色や赤外域の波長帯域とすることができる。両パターン光の波長帯域を離すことで、一般的に用いられている撮像素子で、両パターン光による画像組を分離して取得することが容易となる。
【０１８４】
また、本実施例では、画素１６２３上に、パターン光１６１１及びパターン光１６１２の波長帯域の光を透過しないカラーフィルタを配置することで、パターン光の模様がない被写体画像を取得することができる。このような画像を用いることで、前述の手法で求めた距離情報が被写体１０２上のどの位置を測定したものかを特定することができる。これらの画像情報と距離情報は被写体１０２の位置や姿勢を検出するために用いることができる。また、撮影した被写体１０２が、複数の種類の物体のうち、どの物体かを判断するために用いることもできる。なお、画像情報や距離情報を用いた被写体１０２の位置や姿勢の検出等のこれらの処理は、演算処理部１０６や制御部１０８によって行われてよい。
【０１８５】
（実施例６）
実施例１では、１つの投影パターンの光を撮影した画像において視差算出方向における異なる箇所に基準画像を設定し、各基準画像に関して参照画像との相関値を算出して距離を検出した。これに対し、実施例６に係る距離検出装置では、視差算出方向にずらした２つのサブパターンを含む投影パターンの光を撮影した画像において基準画像を設定し、基準画像に関して参照画像との相関値を算出して距離を検出する。
【０１８６】
以下、図１８乃至２２を参照して、本実施例による距離検出装置について説明する。本実施例による距離検出装置の構成は実施例１による距離検出装置１００の構成と同様であるため、実施例１と同じ参照符号を用いて説明を省略する。以下、本実施例による距離検出装置と実施例１による距離検出装置１００との違いを中心に説明する。
【０１８７】
本実施例における投影するパターン光の一例を図１８に示す。パターン光１８００は、パターン光１８０１（第１のサブパターン光）とパターン光１８０２（第２のサブパターン光）で構成される。両パターン光１８０１，１８０２は、ｘ軸方向（第１の方向）において同じ輝度分布を有し、ｘ軸方向における位置が互いにずれている。また、両パターン光１８０１，１８０２は、ｙ軸方向（第２の方向）において異なる位置に位置しており、本実施例では、両パターン光１８０１，１８０２はｙ軸方向において交互に位置している。各々のパターン光のｘ軸方向における輝度分布は、高輝度領域と低輝度領域が交互に繰り返され、周期１８０３を有している。また、両パターン光１８０１，１８０２は、ｙ軸方向において同じ長さ１８０４を有している。
【０１８８】
次に、図１９（ａ）乃至（ｃ）を参照して、本実施例に係る測距演算フローについて説明する。図１９（ａ）は本実施例に係る距離検出処理のフローチャートであり、図１９（ｂ）及び（ｃ）は、相関算出部１６１によって行う相関演算を説明するための図である。本実施例に係る距離検出処理が開始されると、処理はステップＳ１９０１に移行する。
【０１８９】
ステップＳ１９０１「パターン光投影画像取得」では、投影装置１０１から被写体１０２へパターン光１８００を投影している状態で、撮影装置１０３を用いて撮影を行い、撮影画像を本体メモリ１０７に記憶させる。なお、パターン光の投影方法は実施例１と同様であるため説明を省略する。
【０１９０】
ステップＳ１９０２からステップＳ１９０４の処理は、演算処理部１０６によって行う。ここで、図１９（ｂ）及び（ｃ）は、ステップＳ１９０２にて設定する基準画像及び参照画像の位置関係を説明するための図である。図１９（ｂ）には、ステップＳ１９０１で取得されたＡ画像１９１０Ａ及びＢ画像１９１０Ｂが示されている。以下、Ａ画像１９１０Ａ上において距離算出を行う画素を注目画素１９２０として説明する。
【０１９１】
ステップＳ１９０２「相関演算」では、相関算出部１６１が、ステップＳ１９０１で取得した画像組を用いて第１の相関値を算出する。具体的には、相関算出部１６１は、Ａ画像１９１０Ａ上において距離算出を行う注目画素１９２０とその近傍画素を含む部分領域を抜き出し、基準画像１９１１とする。図１９（ｃ）は基準画像の領域を説明するための図である。相関算出部１６１は、基準画像１９１１を、パターン光１８０１とパターン光１８０２が投影された領域を含むように設定する。
【０１９２】
次に、相関算出部１６１は、Ｂ画像１９１０Ｂ上において、基準画像１９１１と同じ面積（画像サイズ）の領域を抜き出し、参照画像１９１２として設定する。その後、相関算出部１６１は、Ｂ画像１９１０Ｂ上で参照画像１９１２を抜き出す位置を瞳分割方向と同じｘ軸方向に移動させて、各移動量（各位置）における参照画像１９１２と基準画像１９１１との相関値を算出する。これにより、相関算出部１６１は、各移動量に対する相関値のデータ列からなる相関値を算出する。
【０１９３】
なお、相関値の算出方法は、実施例１に係るステップＳ３０２と同様であってよい。また、相関算出部１６１は、参照画像１９１２を基準画像１９１１の縦及び横寸法と同じ縦及び横寸法を有する画像として設定することができる。
【０１９４】
次に、ステップＳ１９０３「視差量算出」では、視差算出部１６２が、既知の任意の手法により、ステップＳ１９０２で求めた相関値を用いて視差量を算出する。例えば、相関値の中で最も高い相関が得られる移動量とその近傍の移動量に対応する相関値のデータ列を抽出し、既知の任意の内挿手法により、最も相関が高くなる移動量をサブピクセル精度で推定することで、視差量を算出することができる。
【０１９５】
ステップＳ１９０４「距離値算出」では、距離算出部１６３が、実施例１に係るステップＳ３０５と同様に、既知の手法により視差量をデフォーカス量又は被写体距離に変換し、被写体１０２までの距離を算出する。
【０１９６】
このように本実施例による距離検出方法では、瞳分割方向（視差算出方向）に位置ずれしたパターン光１８０１とパターン光１８０２が投影された領域を含むように基準画像１９１１を設定する。その後、基準画像１９１１と参照画像１９１２との相関値を算出し、相関値から視差量を算出することで、投影パターンの輝度分布と基準画像の位置とに関係して発生する測距誤差を軽減することができ、高精度な測距を行うことができる。
【０１９７】
ここで、図２０を参照して、本実施例による距離検出方法の処理結果の一例について述べる。図２０は、既知の距離において、撮影装置１０３と並行となるように配置した平板に、投影装置１０１を用いてパターン光を投影して、撮影装置１０３で撮影し、平板上の各位置における視差量を算出した結果を示すグラフである。図２０の横軸は移動量（画素位置）を表しており、縦軸は視差量の算出誤差を表している。図２０には、従来の処理として、明部と暗部がｙ軸方向に一様に伸びるラインパターンを投影して算出した視差量の算出誤差２００１が破線で示され、本実施例に係るパターンを投影して算出した視差量の算出誤差２００２が実線で示されている。従来と比べて本実施例の手法により、誤差量が０に近き、視差量の算出誤差を低減していることが分かる。従って、本実施例に係る処理によれば、高精度に測距することができる。
【０１９８】
次に、図２１（ａ）乃至（ｆ）を参照して、従来の処理では視差量の算出に誤差が発生し、本実施例による処理では視差量の算出誤差が低減する理由について説明する。以降の説明では、Ａ画像とＢ画像は同じ濃淡を有する画像で視差が無いものと仮定する。図２１（ａ）乃至（ｃ）は、従来の手法として、ラインパターンを投影して視差量を算出した場合の誤差の発生理由を説明する図である。なお、誤差の発生理由に関しては、実施例１で説明したものと同様であるため、説明を簡略化する。
【０１９９】
図２１（ａ）は、明領域及び暗領域が交互に現れるラインパターンを有するＡ画像２１０１と基準画像２１０２及び基準画像２１０３との位置関係を示した図である。基準画像２１０２は、Ａ画像２１０１の明領域と暗領域が切り替わる画像エッジ２１０４，２１０５，２１０６（境界部）を基準画像２１０２の内部に含んでいる。図２１（ｂ）は、基準画像２１０２に対して設定された参照画像を移動させて基準画像２１０２と参照画像の相関演算を行うことで算出される各相関値を示している。
【０２００】
相関値Ｃ０，Ｃｐ，Ｃｍはそれぞれ参照画像の位置を０、＋１、−１画素だけ移動させたときの相関値である。この場合、実施例１で説明したように、相関値Ｃｐ，Ｃｍに対応する参照画像の移動量の絶対値は同じであるため、ラインパターン上の画像エッジ２１０４，２１０５，２１０６に起因する画像間の差も同量となる。そのため、相関値Ｃｐと相関値Ｃｍは同じ値となる。この相関値を内挿して相関曲線２１１０を求め、最も高い相関値となる移動量（視差量）を算出することで視差量２１１１が求まり、正しい値（視差量０）が求まる。
【０２０１】
一方、基準画像２１０３では、画像エッジ２１０４と基準画像２１０３の右端が重なる。図２１（ｃ）は、基準画像２１０３に対して設定された参照画像を移動させて基準画像２１０３と参照画像の相関演算を行うことで算出される各相関値を示している。この場合には、移動量が＋１画素のとき、基準画像２１０２の場合と同様に、相関値Ｃｐは相関値Ｃ０より増加する。これに対し、移動量が−１画素のときには、画像エッジ２１０５，２１０６のみに起因して基準画像と参照画像との差が生じるため、相関値Ｃ０からの相関値Ｃｍの増加量は微量となる。そのため、相関値は、参照画像の移動量の＋側と−側で非対称となり、これを内挿した相関曲線２１１２により求まる視差量２１１３は正しい値（視差量０）とは異なる値となり、誤差が発生する。これが、投影パターンの輝度分布と基準画像の位置とに関係して発生する視差量の算出誤差となる。
【０２０２】
次に、本実施例のように、視差算出方向に位置ずれしたパターン光１８０１，１８０２を含むパターン光１８００を投影して撮影し、両パターン光１８０１，１８０２を含む基準画像を用いて測距演算を行うことで、前述の誤差が低減する理由を説明する。図２１（ｄ）は、本実施例に係るパターン光１８００を投影して取得したＡ画像２１００と基準画像２１２０を示した図である。図２１（ｅ）は、原理を簡便に説明するために、基準画像２１２０内を第１の部分画像２１２１及び第２の部分画像２１２２に分割し、各々の部分画像２１２１，２１２２で算出される相関値を示した図である。
【０２０３】
第１の部分画像２１２１として、パターン光１８０１による画像エッジ２１２３と部分画像の右端が重なる部分画像を仮定する。このとき、第１の部分画像２１２１より算出される第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１は、図２１（ｃ）に示す相関値Ｃｍ，Ｃ０，Ｃｐと同様になる。
【０２０４】
次に、第２の部分画像２１２２として、部分画像の左端がパターン光１８０２による画像エッジ２１２４と重なるように、第１の部分画像２１２１とは異なる部分画像を設定する。このとき、第２の部分画像２１２２と画像エッジ２１２４との位置関係は、第１の部分画像２１２１と画像エッジ２１２３との位置関係を反転した関係になる。そのため、図２１（ｅ）で示したように、第２の部分画像２１２２を用いて得られる第２の相関値Ｃｍ２，Ｃ０２，Ｃｐ２は、第１の相関値Ｃｍ１，Ｃ０１，Ｃｐ１を反転したものとなる。
【０２０５】
これらの相関値を参照画像の位置（移動量）毎に加算平均すると、相関値は第３の相関値Ｃｍ３，Ｃ０３，Ｃｐ３のようになる。第３の相関値は、参照画像の移動量の＋側と−側の非対称性がキャンセルされ、対称となる。この場合、相関値を内挿した相関曲線２１１４より求まる視差量２１１５は正しい値（視差量０）となり、適切な視差量を算出することができる。本実施例による処理では、このような原理により視差量の算出誤差を低減することができ、適切に算出された視差量に基づいて高精度に測距を行うことができる。
【０２０６】
本実施例では、パターン光１８０１とパターン光１８０２を、ｘ軸方向（視差算出方向）において適切な量だけ異ならせることで、視差量の算出誤差をより低減することができる。図２２（ａ）及び（ｂ）は、投影されるパターン光に含まれる第１のパターン光及び第２のパターン光と基準画像の適切な位置を説明するための図である。
【０２０７】
基準画像２２３０は、第１のパターン光及び第２のパターン光を含む異なるパターン光を用いて取得した画像２２１０，２２２０に設定した基準画像である。図２２（ａ）及び（ｂ）では、基準画像２２３０の右端と第１のパターン光による画像エッジが重なっている。
【０２０８】
ここで、第１のパターン光の画像エッジに基づく相関値の誤差を、第２のパターン光を用いてキャンセルする場合を考える。この場合には、例えば、基準画像の右端における第１のパターン光の画像エッジに起因する相関値の誤差をキャンセルするため、基準画像の左端に関して第２のパターン光の画像エッジに起因する相関値の誤差が生じるように、第２のパターン光を設定すればよい。なお、基準画像の左端における１のパターン光の画像エッジに起因する相関値の誤差をキャンセルする場合には、基準画像の右端に関して第２のパターン光の画像エッジに起因する相関値の誤差が生じるように、第２のパターン光を設定すればよい。なお、パターン光の設定は、演算処理部１０６によって行われてもよいし、制御部１０８によって行われてもよい。
【０２０９】
図２２（ａ）は、第１のパターン光２２１１及び第２のパターン光２２１２を含むパターン光を投影して取得した画像２２１０を示している。画像２２１０では、基準画像２２３０の右端が第１のパターン光２２１１の画像エッジ２２１３と重なり、基準画像の左端が第２のパターン光２２１２の画像エッジ２２１４と重なっている。この場合には第１のパターン光２２１１の画像エッジ２２１３に基づいて発生する第１の相関値の誤差を、第２のパターン光２２１２の画像エッジ２２１４に基づいて算出した第２の相関値を用いてキャンセルすることができる。
【０２１０】
また、図２２（ｂ）は、第１のパターン光２２２１及び第２のパターン光２２２２を含むパターン光を投影して取得した画像２２２０を示している。画像２２２０において、基準画像２２３０の右端が第１のパターン光２２２１の画像エッジ２２２３と重なり、基準画像２２３０の左端が第２のパターン光２２２２の画像エッジ２２２４と重なっている。この場合には第１のパターン光２２２１の画像エッジ２２２３に基づいて発生する第１の相関値の誤差を、第２のパターン光２２２２の画像エッジ２２２４に基づいて算出した第２の相関値を用いてキャンセルすることができる。
【０２１１】
これらの場合における、第１のパターン光と第２のパターン光との視差算出方向（ｘ軸方向）における位置の差を求めると、上述した式（１ａ）又は式（１ｂ）で表すことができる。なお、式中のＷ、Ｐ、Ｈ、及びｎは実施例１において説明したパラメータと同様のパラメータとすることができる。
【０２１２】
本実施例による距離検出方法では、第１のパターン光と第２のパターン光との位置を、式（１ａ）又は式（１ｂ）で示す量だけ視差算出方向に互いに異ならせることで、最も適切に視差量の算出誤差を低減することができ、高精度な測距を行うことができる。なお、パターン光の位置は、制御部１０８によって、投影装置１０１において、光源に対して各サブパターン光を形成するためのパターンマスク等のパターン形成手段の位置を制御・変更することで、変更することができる。また、制御部１０８の制御に応じて、投影装置１０１内の空間光変調器を制御したり、複数のパターン形成手段を切り替えて用いたりする等、その他の既知の任意方法によりパターン光の位置を変更してもよい。
【０２１３】
なお、第１のパターン光と第２のパターン光の視差算出方向に垂直な方向（ｙ軸方向）における長さは、基準画像の同方向における長さよりも短くなるように設定する。これにより、基準画像内に両パターン光の投影領域が含まれるようになり、そのような基準画像を用いることで視差量の算出誤差を低減することができる。特に、第１のパターン光と第２のパターン光の視差算出方向に垂直な方向における長さは、基準画像の同方向における長さの偶数分の１の長さにすることができる。この場合には、基準画像内に両パターン光の投影領域が均等に含まれるようになり、視差量の算出誤差を低減する効果を最も得ることができる。
【０２１４】
また、第１のパターン光と第２のパターン光は、ｙ軸方向において間隔を空けずに交互に投影されることができる。この場合には、基準画像内において、第１のパターン光及び第２のパターン光により輝度が変化する領域が増えるため、視差量の算出誤差を適切に低減でき、視差量を高精度に算出することができる。
【０２１５】
なお、本実施例ではパターン光は２つのサブパターン光を含むものとして説明したが、パターン光に含まれるサブパターン光は２つに限られない。例えば、図２３に示すように、パターン光２３００は、パターン光２３０１（第１のサブパターン光）と、パターン光２３０２（第２のサブパターン光）と、パターン光２３０３（第３のサブパターン光）を含んでもよい。
【０２１６】
パターン光２３０１，２３０２，２３０３は、それぞれ、ｘ軸方向（視差算出方向、第１の方向）に同じ輝度分布を有しており、ｘ軸方向の位置が互いにずれている。また、パターン光２３０１，２３０２，２３０３は、ｙ軸方向（第２の方向）の異なる位置に投影され、より具体的には順番に繰り返して投影される。各々のパターン光２３０１，２３０２，２３０３のｘ軸方向における輝度分布は、高輝度領域と低輝度領域が交互に繰り返され、同じ周期を有している。
【０２１７】
このようなパターン光でも基準画像の両端にいずれかのパターン光による画像エッジがかかることで、上述した視差量の算出誤差の低減効果を奏することができる。なお、サブパターン光の数は、３つ以上であっても同様の効果を奏することができる。
【０２１８】
上記のように、本実施例に係る距離検出装置では、投影されるパターン光は、第１のサブパターン光と第２のサブパターン光を含む。第１のサブパターン光及び第２のサブパターン光は、視差算出方向（第１の方向）及び第１の方向に垂直な第２の方向において互いに対して位置がずれたパターン光である。また、第１のサブパターン光と第２のサブパターン光は、第１の方向において高輝度領域と低輝度領域とが交互に繰り返される周期的な光であり、本実施例では、同じ輝度分布を有するパターン光を互いに対して第１及び第２の方向にずらした光である。また、基準画像は、第１のサブパターン光と第２のサブパターン光が投影された領域の画像を含む。
【０２１９】
また、投影装置１０１は、式（１ａ）又は式（１ｂ）に従って、位置が設定された第１のサブパターン光と第２のサブパターン光を投影する。具体的には、演算処理部１０６は、基準画像の第１の方向の幅、又は該幅と撮影画像における第１のサブパターン光の第１の方向の周期との差の分だけ、視算出方向において第１のサブパターン光と第２のサブパターン光の位置をずらして設定する。又は、演算処理部１０６は、基準画像の第１の方向の幅と撮影画像における第１のサブパターン光の第１の方向の高輝度領域の幅との差の分だけ、視算出方向において第１のサブパターン光と第２のサブパターン光の位置をずらして設定する。若しくは、演算処理部１０６は、当該差から撮影画像における第１のサブパターン光の第１の方向の周期を引いた量の分だけ、視算出方向において第１のサブパターン光と第２のサブパターン光の位置をずらして設定する。投影装置１０１は、設定された位置に基づいて、第１のサブパターン光と第２のサブパターン光との第１の方向における位置が異なるように、パターン光を投影する。
【０２２０】
このような構成から、本実施例に係る距離検出装置は、パターン光を投影した撮影画像を用いた距離検出における視差量の算出誤差を低減することができる。そのため、距離検出装置は、算出誤差の低減された視差量に基づいて、被写体１０２の高精度な距離情報を取得することができる。
【０２２１】
なお、本実施例では、相関値の算出方法として、基準画像内を分割し、各々の部分画像で相関値を算出し、加算平均することで算出した。しかしながら、相関値の算出方法はこれに限られず、例えば、基準画像内の行毎に相関値を算出し、各行の相関値を加算平均することで算出してもよいし、基準画像の全領域を用いて相関値を算出してもよい。なお、部分画像や行の相関値についての演算は加算平均に限られず、加算であってもよい。
【０２２２】
また、本実施例では、上側半分にパターン光１８０１の投影領域が含まれ、下側半分にパターン光１８０２の投影領域が含まれるように基準画像２１２０を設定する場合について述べた。しかしながら、基準画像の設定方法はこれに限られない。図２１（ｆ）は基準画像の他の設定例を示したものである。例えば、図２１（ｆ）に示す基準画像２１３０のように、基準画像内のｙ方向の複数の領域に、パターン光１８０１，１８０２の投影領域が含まれるように、基準画像を設定してもよい。言い換えると、ｙ方向における基準画像の長さを、ｙ方向におけるパターン光１８０１，１８０２の周期の整数倍の長さとなるように設定してもよい。
【０２２３】
これらの方法により相関値を算出し、視差量を算出することでも、視差量の算出誤差を低減することができ、適切に算出された視差量に基づいて高精度に測距を行うことができる。
【０２２４】
なお、撮影画像上のどの位置に基準画像を設定しても、基準画像の両端に各々のパターン光に基づく画像エッジがあることが好ましい。そのため、投影パターンはＸ軸方向に周期的に輝度分布が繰り返される周期パターンであることが好ましい。このとき完全な周期パターンであると、相関演算で視差量を算出する際に、一周期ずれた領域が誤って検出される場合がある。そこで、視差量を探索する範囲（参照画像を動かす変位量）をパターンの周期よりも小さくなるように制限することで、この誤検出を回避することができる。
【０２２５】
また、投影パターンを完全に同じ輝度分布が繰り返されるパターンにする必要はない。投影パターンは周期的に略同じ輝度分布が繰り返されるパターンであればよい。例えば、明領域の視差算出方向における幅がライン毎に異なっていてもよい。また、明領域又は暗領域内に輝度のばらつきがあるパターンであってもよい。適度に輝度変化を与えることで、１周期ずれた領域が誤って検出されることを回避することができるとともに、上述した視差量の算出誤差の低減効果を奏することができる。
【０２２６】
また、本実施例に係る距離検出装置を、実施例２と同様に、生産作業用ロボット装置に適用することもできる。この場合の例について、図９を参照して簡単に説明する。なお、この場合のロボット装置の構成は、実施例２に係るロボット装置の構成と同様であってよいため、図９と同じ参照符号を用いて説明を省略する。
【０２２７】
このようなロボット装置では、本実施例で説明したように、第１のパターン光１８０１と第２のパターン光１８０２を含むパターン光１８００をワーク９０４に投影し、パターン光１８００に基づく画像組を撮像する。その後、両パターン光１８０１，１８０２の投影領域を含む基準画像を用いて相関値を算出し、距離を求めることで、ワーク９０４の距離情報をより高精度に取得することができる。これにより、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【０２２８】
なお、距離検出装置とワーク９０４との距離は、ロボットアーム９０２やロボットハンド９０３の位置に応じて変化する。このとき、投影装置１０１の投影パターンを変えないで距離計測を行うと、撮影画像上におけるパターンの大きさが距離に応じて変化する。そのため、この場合には、パターン光１８０１，１８０２による画像エッジの位置や、基準画像内に含まれるパターン光１８０１，１８０２の割合が変化し、視差量の検出誤差を低減させる効果が弱くなることがある。
【０２２９】
そこで、演算処理部１０６は、パターン光１８００を撮影して取得した画像を分析し、パターン光１８０１，１８０２のｘ軸方向の位置ずれ量、ｘ軸方向の周期間隔、又はｙ軸方向の長さを算出・評価することができる。次に、演算処理部１０６は、これらの大きさに応じて基準画像の大きさを決定することができる。
【０２３０】
また、演算処理部１０６は、撮影画像から算出したこれらの大きさと基準画像の大きさから、各パターン光１８０１，１８０２のｘ軸方向における位置ずれ量や周期間隔、ｙ軸方向の長さを決定してもよい。この場合には、制御部１０８によって投影装置１０１を制御し、演算処理部１０６で決定したパラメータに基づいて修正したパターン光を投影して、距離計測を行うことができる。
【０２３１】
これらのような処理によれば、距離検出装置とワーク９０４との距離に応じて、最適な基準画像及び投影パターン光で距離計測を行うことができ、高精度な距離計測を行うことができる。なお、演算処理部１０６による処理は、制御部１０８で行われてもよいし、制御装置９０５によって行われてもよい。
【０２３２】
また、ワーク９０４とロボットハンド９０３の距離が近いときほど、面内解像度が高い距離情報を取得し、ワーク９０４の位置姿勢を高精度に推定することが求められる。ここで、ワーク９０４の距離は、撮影画像上におけるワーク９０４の大きさから概略算出することができる。また、距離検出装置によるワーク９０４の距離情報の取得と制御装置９０５によるロボットアーム９０２の制御は時系列で順次行うため、これらの処理の１サイクル前に取得した距離情報に基づいてワーク９０４の距離を概略知ることもできる。
【０２３３】
そこで、演算処理部１０６は、概略的なワーク９０４の距離情報に基づいて、各パターン光１８０１，１８０２のｘ軸方向における位置ずれ量や周期間隔、ｙ軸方向の長さが小さくなるように設定してもよい。また、距離が近いほど、演算処理部１０６は、各パターン光１８０１，１８０２の周期間隔に基づいて、基準画像のｘ軸方向及びｙ軸方向の大きさが小さくなるように設定してもよい。このような処理によれば、距離検出装置とワーク９０４との距離に応じて、最適な基準画像及び投影パターン光で距離計測を行うことができ、高精度な距離計測を行うことができる。なお、演算処理部１０６による処理は、制御部１０８で行われてもよいし、制御装置９０５によって行われてもよい。
【０２３４】
これらの方法によれば、各パターン光と基準画像を適切に設定することができ、ロボット装置９００は、距離検出装置による視差量の算出誤差を低減することができ、ワーク９０４の距離を高精度に算出することができる。このため、ロボット装置９００では、ワーク９０４の位置姿勢の推定精度が向上し、ロボットアーム９０２及びロボットハンド９０３の位置制御の精度が向上し、より高精度な組み付け作業を行うことができる。
【０２３５】
（実施例７）
実施例１は、パターン光を投影して取得した撮影画像上において視差算出方向に異なる位置に第１の基準画像と第２の基準画像を設定し、両基準画像と参照画像との相関値を算出して両相関値より視差量を算出した。また、実施例４では、視差算出方向に位置ずれした第１のパターン光と第２のパターン光を投影して各パターン光に基づく画像組を取得し、各々の画像組より第１の相関値と第２の相関値を算出して両相関値より視差量を算出した。さらに、実施例６では、視差算出方向に位置ずれした複数のサブパターン光を含むパターン光を投影し、撮像画像上の両サブパターン光が投影された領域を含むように基準画像を設定し、基準画像を用いて相関値を算出して視差量を算出した。
【０２３６】
ここで、実施例１に係る手法を第１の手法、実施例６に係る手法を第２の手法、実施例４に係る手法を第３の手法とする。第１の手法と第２の手法では、一回のパターン投影で距離計測を行うことができ、高速な距離計測を行うことができる。これに対し、第３の手法では、注目画素を含む狭い領域に基準画像を設定し、複数のパターン光の位置調整を行って測距を行うことで、注目画素の周辺にある物体の距離情報が混合することを避けることでき、注目画素の距離を高精度に計測することができる。
【０２３７】
そこで、実施例７では、これら第１〜３の手法を、測距条件に応じて切り替えて使用する場合について説明する。なお、本実施例に係る距離検出装置及びロボット装置の構成は、実施例１に係る距離検出装置の構成及び実施例２に係るロボット装置の構成と同様であるため、図１及び９と同じ参照符号を用いて説明を省略する。
【０２３８】
例えば、実施例２で述べたロボット装置９００において、ロボットハンド９０３とワーク９０４の距離が遠いときは、ワーク９０４近傍にロボットハンド９０３を速やかに近づけることが求められる。このような場合には、第１の手法又は第２の手法を用いて、高速に測距を行うことが好ましい。
【０２３９】
また、ロボットハンド９０３とワーク９０４の距離が近いときは、ロボットハンド９０３とワーク９０４との位置合わせを高精度に行うことが求められる。このような場合には、第３の手法を用いて、ワークの位置を高精度に計測することが好ましい。
【０２４０】
このため、本実施例に係るロボット装置では、演算処理部１０６が、距離検出装置とワーク９０４の距離が、所定の距離よりも長い場合には、実施例１で説明した第１の手法又は実施例６で説明した第２の手法を用いて測距を行う。また、演算処理部１０６は、距離検出装置とワーク９０４の距離が、所定の距離以下の（所定の距離よりも短い）場合には、実施例４で説明した第３の手法を用いて測距を行う。
【０２４１】
ここで、ワーク９０４の距離は、撮影画像上におけるワーク９０４の大きさから概略算出することができる。また、距離検出装置によるワーク９０４の距離情報の取得と制御装置９０５によるロボットアーム９０２の制御は時系列で順次行うため、これらの処理の１サイクル前（以前）に取得した距離情報に基づいてワーク９０４の距離を概略知ることもできる。このため、演算処理部１０６は、これら概略的なワーク９０４の距離（第１の距離）に基づいて、距離検出装置とワーク９０４との距離（第２の距離）の検出に用いる手法の切り替えを行ってよい。なお、演算処理部１０６は、継時的に検出した距離に基づいて測距に用いる手法の切り替える場合、ワーク９０４の距離を初めて検出する場合には、第１〜第３の手法のうち予め設定された手法を用いてワーク９０４の距離を検出してもよい。
【０２４２】
本実施例に係る距離検出装置では、距離検出装置と被写体との概略的な距離に基づいて、測距手法を切り替えて測距を行うことができる。このため、距離検出装置と被写体との位置関係及び状況等に応じて、より適切な測距を行うことができる。
【０２４３】
なお、演算処理部１０６による上述の処理は、制御部１０８や制御装置９０５で行われてもよい。また、本実施例に係る距離検出装置で距離検出する被写体は、ワーク９０４に限られず、任意の被写体であってよい。
【０２４４】
上述した実施例１、及び３乃至７による距離検出装置は、ロボット装置に適用される構成に限られず、カメラや内視鏡等の撮影装置に適用されてもよい。
【０２４５】
（その他の実施例）  
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０２４６】
以上、実施例を参照して本発明について説明したが、本発明は上記実施例に限定されるものではない。本発明の趣旨に反しない範囲で変更された発明、及び本発明と均等な発明も本発明に含まれる。また、上述の各実施例及び変形例は、本発明の趣旨に反しない範囲で適宜組み合わせることができる。
【符号の説明】
【０２４７】
１００：距離検出装置、１０１：投影装置、１０２：被写体、１０３：撮影装置、１６１：相関算出部、１６２：視差算出部
【図１】
2019184568.tif 000005
【図２】
2019184568.tif 000006
【図３】
2019184568.tif 000007
【図４】
2019184568.tif 000008
【図５】
2019184568.tif 000009
【図６】
2019184568.tif 000010
【図７】
2019184568.tif 000011
【図８】
2019184568.tif 000012
【図９】
2019184568.tif 000013
【図１０】
2019184568.tif 000014
【図１１】
2019184568.tif 000015
【図１２】
2019184568.tif 000016
【図１３】
2019184568.tif 000017
【図１４】
2019184568.tif 000018
【図１５】
2019184568.tif 000019
【図１６】
2019184568.tif 000020
【図１７】
2019184568.tif 000021
【図１８】
2019184568.tif 000022
【図１９】
2019184568.tif 000023
【図２０】
2019184568.tif 000024
【図２１】
2019184568.tif 000025
【図２２】
2019184568.tif 000026
【図２３】
2019184568.tif 000027