三次元位置計測装置、三次元位置計測方法、及びコンピュータプログラム
【課題】空間符号化法における物体の三次元形状の計測を高速に且つ高精度に行う。
【解決手段】それぞれのエッジの位置が相互に重ならない複数の周波数のスリット光パターンを被写体に投影したときのそれぞれの撮像画像から、スリット光パターンのエッジの部分を特定する。そして、2以上のスリット光パターンの撮像画像において、エッジの部分が重なる場合に、そのエッジに対応する位置の距離算出値の信頼度を低下させる。
【解決手段】それぞれのエッジの位置が相互に重ならない複数の周波数のスリット光パターンを被写体に投影したときのそれぞれの撮像画像から、スリット光パターンのエッジの部分を特定する。そして、2以上のスリット光パターンの撮像画像において、エッジの部分が重なる場合に、そのエッジに対応する位置の距離算出値の信頼度を低下させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元位置計測装置、三次元位置計測方法、及びコンピュータプログラムに関し、特に、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を用いて、非接触で被写体の三次元形状を計測するために用いて好適なものである。
【背景技術】
【0002】
三次元形状の計測装置は、製品の立体形状検査、寸法測定、組み立て位置決め等、一般にロボットビジョンと呼ばれる分野で用いられる。
非接触での三次元形状の計測方法には、様々な方法があり、一長一短がある。例えば、レーザースリット光を用いた光切断法による三次元形状の計測方法では、スキャナ、ミラー、及び半導体レーザー等のコンパクトな部品で構成できるという長所がある。しかし、光切断法では、スキャンラインの数と同数の撮影枚数が必要となるので、光切断法は、物体の三次元形状を高速に計測するには、不利と言わざるを得ない。
【0003】
このような欠点を克服する手法として、空間符号化法と呼ばれる明暗パターンのスリット光パターンを物体に投影することで、空間分割を行い、三次元形状の計測を行う手法がある(非特許文献1を参照)。
この空間符号化法では、空間分割数をNとすると、撮影枚数は(log2N)枚で済む。よって、空間符号化法では、光切断法と比較すると、少ない撮影枚数で物体の三次元計測が可能となる。
【0004】
しかし、この空間符号化法では、空間分割を行う際に、空間分解能が投影パターンの量子化bit数に制限されてしまう。
そこで、ある程度の段階まで空間符号化法により空間分割測定を行い、空間分割された個々の領域の三次元形状を光切断法にて同時に計測するマルチスリット光による空間測定法が存在する(特許文献1を参照)。
この手法によって、光切断法と比較して、より少ない撮影枚数で物体の三次元計測を行うことが可能になると共に、空間符号化法のみによる測定よりも空間分解能が高い物体の三次元計測を行うことが可能になる。
【0005】
従来は、以上のような原理を用いることで、物体の三次元形状の計測精度を向上させることが行われていた。
三次元形状計測装置では、レーザースリット光やスリット光パターンの投影等を行うことで、形状の計測が行われるが、投影した光の反射光の撮影状態によって、計測値のベースとなる計測線の検出等に問題が生ずる。すなわち、被写体の光の反射特性である双方向反射率分布関数(BRDF(Bidirectional Reflectance Distribution Function)によって、計測線の検出が理想状態(拡散反射)とはならず、鏡面性を持つ。このこと等の理由により、三次元形状計測装置では、計測線の間接反射が計測される。
【0006】
このような場合、真の計測線(直接反射による計測線)と偽の計測線(間接反射による計測線)とが観測されることによって、距離計測値の信頼度が落ちる可能性がある。また、被写体の反射強度自体が低い場合、計測線そのものの信号雑音比(Signal/Noise:SN比)の低下によって、物体の観測が難しくなり、ノイズ成分が多く観測される場合等、距離計測値の信頼度が落ちる可能性がある。
また、被写体の観測方向からの見た場合の傾斜の状態によっても問題が生じる。被写体面と、三次元計測装置のプロジェクタ装置及びカメラ装置の光軸とが垂直であれば、計測の状態としては良い条件と言える。しかし、この状態から、被写体面と、三次元計測装置のプロジェクタ装置及びカメラ装置の光軸とのなす角度に傾斜が発生すると、レーザースリット光やスリット光パターンの投影の反射光量が低下する。よって、観測信号に対してノイズが多くなり、信号雑音比が低下する問題が発生する。
また、計測線同士の間隔が狭くなり、カメラ装置の画素分解能を超えてしまう、つまり、スリット光パターンの計測が、カメラ分解能のナイキスト周波数を超えてしまうと、その画像の部分の周辺では、計測状態が不安定となる。
そこで、特許文献1では、スリット光パターンの一部の空間分割を示す符号値の符号化誤りを検出するためのパターンを物体に投影することで、符号化の誤りの検出を行っている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−337829号公報
【非特許文献】
【0008】
【非特許文献1】井口征士・佐藤宏介共著、「三次元画像計測」、昭晃堂、1990年
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の手法では、間接光による影響を取り除くために、新たなパターンの投影等を必要とする。このため、間接光による影響を測定することは可能となるが、スリット光パターンの投影回数の増加をもたらす。すなわち、特許文献1に記載の手法では、非特許文献1で説明される通常の空間分割による三次元形状の計測で必要となる撮影回数よりも多く撮影を必要とする。このため、特許文献1に記載の手法では、計測時間の低下をもたらし、物体の三次元形状を高速に計測することが容易でないという問題点があった。
【0010】
また、前述の被写体面に対する、カメラ装置及びプロジェクタ装置の光軸の傾斜によって、ナイキスト周波数よりも高い周波数のスリット光パターンが撮影されてしまう場合や、被写体の反射率が低い場合がある。特許文献1に記載の手法では、このような場合に発生する信号雑音比の低下に対応することが容易でないという問題があった。
本発明は、このような問題点に鑑みてなされたものであり、空間符号化法における被写体の三次元形状の計測を高速に且つ高精度に行うことを目的とする。
【課題を解決するための手段】
【0011】
本発明の三次元位置計測装置は、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得手段と、前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出手段と、前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出手段と、前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出手段と、を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、撮像画像から検出されたエッジの位置と、その重なり度合いとに基づき、被写体の位置を算出するようにした。したがって、パターン光の投影回数を増やすことなく、ノイズを低減することができる。よって、空間符号化法における被写体の三次元形状の計測を高速に且つ高精度に行うことができる。
【図面の簡単な説明】
【0013】
【図1】三次元位置計測システムの構成を示す図である。
【図2】被写体に投影するスリット光パターンの一例を示す図である。
【図3】三次元位置計測システムにより実行される三次元位置計測の方法を示す図である。
【図4】三次元位置計測システムの計算処理部のソフトウェア構成を示す図である。
【図5】被写体に投影するスリット光パターンの他の例を示す図である。
【図6】撮像された被写体の実際の画像を示す図である。
【図7】低周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図8】中周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図9】高周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図10】エッジ重なり値の算出結果を示す図である。
【図11】エッジ重なり算出処理を説明するフローチャートである。
【図12】オクルージョンの影響を示す図である。
【図13】エッジ座標の算出方法を説明する図である。
【図14】エッジ重なり値の算出方法を説明する図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を説明する。
(第1の実施形態)
まず、第1の実施形態について説明する。
図1は、三次元位置計測システムの構成の一例を示す図である。
三次元位置計測システムは、プロジェクタ112と、カメラ113と、計算処理部100とを有する。
プロジェクタ112は、縞パターン光やマルチスリットパターン光を被写体117に投影する。カメラ113は、縞パターン光やマルチスリットパターン光が投影された被写体117(被写体117で反射された縞パターン光やマルチスリットパターン光)を撮像する。計算処理部100は、縞パターン光やマルチスリットパターン光の投影や撮像を指示したり、撮像された画像データを計算処理して被写体117の三次元位置計測を行ったりする。
【0015】
計算処理部100は、中央処理部(CPU)110、フレームバッファ111、画像メモリ114、メモリ115、コントローラ116、出力部118、及び表示部119を有し、互いにバスを介して接続されている。
コントローラ116は、メモリ115や画像メモリ114やフレームバッファ111等との通信や、演算の補助を行うハードウェアである。フレームバッファ111は、RAM等で構成されている。
CPU110は、不揮発性メモリを含むメモリ115に記録されるパターンを用いて投影パターンを構成し、フレームバッファ111に記録する。
不揮発性メモリを含むメモリ115には、縞パターン光やマルチスリット光のパターン形状プログラム、投影時間を設定するタイムアカウントプログラム等が記録されている。
【0016】
CPU110から投影指示を受信したコントローラ116は、メモリ115より、縞パターン光形状信号やマルチスリットパターン光形状信号を、フレームバッファ111を介して、プロジェクタ112に送信する。
また、コントローラ116は、CPU110からの指示に基づき、タイムアカウント信号を、プロジェクタ112及びカメラ113に送信する。これにより、縞パターン光やマルチスリットパターン光の投影及び撮像のタイミングが管理される。
カメラ113で撮像された複数枚の画像データは、画像メモリ114に一時的に格納され、コントローラ116を介してCPU110に入力される。CPU110は、入力した画像データに対して、二値化処理等の画像処理を行う。この二値化処理は、縞パターン光の明部と暗部との境界位置を決定する処理である。CPU110は、この二値化処理により、白黒の二値化画像データを生成する。この二値化画像データは、メモリ115に蓄積され、後の処理での距離値の算出に使用される。
【0017】
メモリ115は、不揮発性メモリであるROMや、揮発性メモリであるRAM等を備えて構成されている。メモリ115は、プロジェクタ112とカメラ113との基線長、カメラ113の焦点距離、及びカメラ113の画素数等の機器に依存するパラメータや、予め行うキャリブレーションによるディストーション、及び外光輝度等の外部パラメータを格納する。また、メモリ115は、三角測量による三次元位置計測プログラムも格納する。
CPU110は、二値化画像データ、及び各種パラメータを入力として、メモリ115に格納されている三次元位置計測プログラムに基づく処理を実行して、被写体117の三次元位置計測を行う。
CPU110による被写体117の三次元位置計測の結果は、距離画像データとして生成される。
距離画像データは、出力部(不図示)で画像化され、表示部(不図示)で距離画像として表示される。
以上の一連の処理は、全てCPU110からの指示に基づいて行われる。
【0018】
尚、サブピクセル精度による縞パターン光のエッジ(明暗の境界)部分の算出等を行う場合、画像メモリ114の大きさとして、カメラ113の撮影画像よりも大きな仮想撮影画像を想定することで、サブピクセルの精度を考慮した二値化画像データを作成できる。
【0019】
次に投影するスリット光パターンについて説明する。本実施形態では、空間符号化法として、グレイコードによる空間符号化を例にして説明する。
図2は、被写体117に投影するスリット光パターンの一例を示す図である。
図2に示すように、スリット光パターン200〜202は、明暗のスリットを交互に配した縞パターンを有するパターン光である。
図2に示す例では、空間符号化法によるパターンのスリット光パターン200〜202は、3bitのグレイコードによる空間符号化のスリット縞パターン光である。本実施形態では、3bitの空間符号化を行う場合を例に挙げて説明するが、3bitの空間符号化を行う場合に限定されるものではない。Nbitの空間符号化を行う場合、スリット光パターンがN枚となる。
【0020】
スリット光パターン201は、スリット光パターン200よりも空間解像度が2倍になっている縞パターン光である。同様に、スリット光パターン202は、スリット光パターン201よりも空間解像度が2倍になっている縞パターン光である。
このような空間符号化法によるスリット光パターン200〜202をプロジェクタ112から被写体117に向けて投影し、被写体117に投影されたスリット光パターン200〜202をカメラ113で撮像する。このようにすることで、計算処理部100は、撮像範囲を8分割し、被写体117を認識することができる。
【0021】
図3は、三次元位置計測システムにより実行される三次元位置計測の方法の一例を概念的に示す図である。
プロジェクタ112から被写体117に向けて、明部と暗部とが所定の周期で交互に配置された縞パターンからなるスリット光パターン200〜202を投射する。
スリット光パターン200〜202の縞パターン(形状及び大きさ)は、予め決められており、それらが各々被写体117に順次個別に投影される。そして、その投影の度に、被写体117に投影されたスリット光パターンをカメラ113で撮像して、計算処理部100が画像データとして取得する。
【0022】
図3において、被写体117の明部と暗部との境界位置(エッジ位置)を(X,Y,Z)とする。また、境界位置(X,Y,Z)と、プロジェクタ112を相互に結んだときのプロジェクタ112の光線位置を(X1,Y1,Z1)とする。また、境界位置(X,Y,Z)と、カメラ113とを相互に結んだときのカメラ113の光線位置を(X2,Y2,Z2)とする。カメラ113の光線位置(X2,Y2,Z2)は、カメラ113の撮像センサ(CCDやCMOS等)の画素の平面座標によって求まる。プロジェクタ112の光線位置(X1,Y1,Z1)は、投光素子(液晶等)の画素の平面座標によって求まる。
【0023】
また、プロジェクタ112とカメラ113との間の距離Lは基線長となる。基線長Lは、装置の構成条件から定められる。これらのパラメータから三角測量の原理によって被写体117の境界位置(X,Y,Z)を求めることができる。被写体117の全面に対してそれぞれの境界位置(X,Y,Z)を求めることで、被写体117の三次元形状を測定することができる。尚、被写体117の全面に対してそれぞれの境界位置(X,Y,Z)を求めることと、被写体117の三次元形状を測定することは、公知の技術で実現できるので、ここでは、これらの詳細な説明を省略する。
【0024】
次に、本実施形態で提案する技術の概略を述べる。
図4は、三次元位置計測システムの計算処理部100のソフトウェア構成の一例を示す図である。
計算処理部100は、402〜412までに示されるソフトウェア手段によって実現される。これらのソフトウェア手段は、図1に示したCPU110、フレームバッファ111、画像メモリ114、メモリ115、コントローラ116等のハードウェアを用いて実行されるプログラムの事を指している。尚、本実施形態では、これらの手段をソフトウェアとして説明を行うが、これらの一部又は全部を、ハードウェアを用いて演算処理しても構わない。最終的に、これらのソフトウェア手段を用いて、距離画像データ413の出力をすることが、ソフトウェア手段全体の目的である。
距離画像データ413は、カメラ113によって撮像される画像の画素それぞれに対して、距離値を算出することにより得られる二次元配列で構成されたデータである。距離画像データ413は、それぞれの画素の値としてカメラ113から被写体117までの距離の値を持つ三次元空間情報である。
【0025】
まず、三次元位置計測システム全体は、システム管理部404によって制御される。図4では、システム管理部404が、特にパターン投影部402及び画像取り込み部403を制御しているように示しているが、実際には、その他のブロックも、システム管理部404によって管理されている。
システム管理部404は、スリット光パターンの投影のタイミングや、画像の撮像のタイミング等の管理や、演算の順序の管理や、出力データの管理等、三次元位置計測システム全体の様々なリソースの管理と時間の管理等を行っている。
【0026】
パターン投影部402は、プロジェクタ112から投影されるスリット光パターンの生成を行う。生成されたスリット光パターンは、プロジェクタ112から投影される。
このときの被写体117の像をカメラ113で撮像し、画像取り込み部403によって装置(計算処理部100)内に取り込む。
このスリット光パターンの投影処理と撮影処理は、例えば、図2に示したスリット光パターン200〜202の投影とその像の撮像とによって行われる。
【0027】
本実施形態の手法のスリット光パターンは、図2に示す縦パターンでも、図5に示す横パターンでも問題なく動作する。尚、以降の説明では、図2に示す縦パターンではなく、図5に示す横パターンを用いた場合を例に挙げる。
このパターンの選択は、カメラ113とプロジェクタ112との空間的な配置の位置関係により決定される。
もし、カメラ113とプロジェクタ112とが、縦方向(図3に示す例ではY方向)において間隔を有して配置されているのであれば、スリット光パターンとして横パターンを用いる。逆に、カメラ113とプロジェクタ112とが、横方向(図3に示す例ではX方向)において間隔を有して配置されているのであれば、スリット光パターンとして縦パターンを用いる。
スリット光パターンとしては、図2に示されるように、グレイコードによるスリット光パターンを用い、且つ、空間を分解するのに適したBit数に応じて、低周波〜高周波までの複数のスリット光パターンを用いる。
二値化部405は、撮像された被写体117の画像を、スリット光パターンが投影されている場所と、スリット光パターンが投影されていない場所とに分ける。例えば、撮像された被写体117の画像の輝度の情報を、大津法等の閾値決定手法によって決定された閾値に応じて分けることにより、領域を分けることができる。このようにして二値化部405によって得られる二値化情報は、エッジ算出部407に送られる。
エッジ算出部407は、二値化部405から出力された二値化情報に基づいて、スリット光パターンの明暗の変わる部分の詳細な位置情報(以降、この情報を必要に応じて「エッジ位置情報」と称する)を算出する。
【0028】
エッジ算出部407は、エッジ位置情報を、サブピクセル演算部409に送る。
サブピクセル演算部409は、エッジ周辺の画素の輝度変化情報から、エッジ位置の情報として、更に詳細な座標データの算出を行う。この際、ここで算出されるエッジ位置の情報は、カメラ113の画素単位やプロジェクタ112の投影画素単位ではなく、1ピクセル以下の精度の座標値とすることが可能である。
また、エッジ算出部407は、エッジ位置情報をエッジ重なり算出部410に送る。
エッジ重なり算出部410は、前述の各スリット光パターンの周波数毎に、各撮像画素におけるスリット光パターンのエッジの重なりをカウントする。本実施形態では、エッジ重なり算出部410は、エッジ重なり算出部410は、複数のエッジ位置が撮像素子の1ピクセル内に存在する場合に、エッチ位置が重なっていると判定する。
【0029】
また、二値化部405は、二値化情報をバイナリー値算出部406に送る。
バイナリー値算出部406は、低周波数から高周波数までの複数のスリット光パターンが個別に投影された被写体117の画像から生成された各周波数における二値化画像を統合する。これにより、バイナリー値算出部406は、プロジェクタ112の投影像での位置情報(以降、この情報を必要に応じて「ディスパリティマップデータ」と称する)が符号化された画像の生成を行う。
空間符号化法では、一般に、ディスパリティマップデータは、グレイコードと呼ばれるエンコードが行われている。そこで、投影面位置情報デコード部408は、ディスパリティマップデータのグレイコードの符号化情報を復号化し、復号化されていないディスパリティマップデータの算出を行う。
このディスパリティマップデータを用いることで、プロジェクタ112の投影面上での座標と、カメラ113で撮像された画像上での座標との対応関係を得ることができる。
【0030】
距離値算出部411は、投影面位置情報デコード部408で復号化されたディスパリティマップデータのグレイコードと、サブピクセル演算部409で得られたエッジ位置の情報と、エッジ重なり算出部410で得られたエッジの重なりのカウント値とを入力する。距離値算出部411は、これらの演算結果を受けて、距離画像データの算出を行う。
空間符号化法では、プロジェクタ112の投影面上での座標と、カメラ113で撮像された画像上での座標との対応関係から、非特許文献1等に示される三角測量法を用いて、被写体117上(物体上)の各点の位置における距離画像データを得ることができる。特に、本実施形態の手法では、サブピクセル演算部409でサブピクセル処理を行うことによって、スリット光パターンのエッジ位置を、画像ピクセル単位以下の精度で算出する。このため、非常に高精度に被写体117の三次元空間上での位置を算出することが可能である。尚、三角測量法により距離画像データを算出する方法自体は公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【0031】
次に、距離値算出部411によって得られた距離画像データ(被写体117の距離の算出結果)は、高信頼度距離値算出部412に送られる。
高信頼度距離値算出部412は、エッジ重なり算出部410で算出されたエッジの重なりのカウント値の情報から、各スリット光パターンのエッジの位置に重なりが発生している箇所を特定する。次に、高信頼度距離値算出部412は、その部分の距離画像データは、不正確であると判断し、距離算出値をクリアする。
尚、エッジの位置に重なりが発生している箇所の情報から、その部分の距離画像データは、不正確であると判断し、距離算出値をクリアする際の詳細な処理に関しては、後述する。
最終的に、高信頼度距離値算出部412は、不正確ではないと判断した距離画像データのみで距離画像データ413を再構成し、出力する。
【0032】
図5は、被写体に投影するスリット光パターンの他の例を示す図である。前述したように、図5では、スリット光パターンとして横パターンのスリット光パターンを示している。
図6〜図10では、カメラ113とプロジェクタ112とが縦方向において間隔を有して配置を行っている場合を例に挙げて示している。このため、図6〜図10では、図5に示すように横方向のスリット光パターン(横パターン)を被写体601に投影することで、各スリット光パターンのエッジの位置の重なりのカウント値を算出している。尚、以下の説明では、このカウント値を必要に応じて「エッジ重なり値」と称する。
図6〜図10では、図2に示すのと同様に、低周波から高周波に至るパターンを有する複数のスリット光パターン500〜505を被写体601に順次投影し、その度に被写体601の撮像を行う。
【0033】
前述した、各スリット光パターンのエッジ部分の算出は、例えば、次のようにして行う。すなわち、ストライプ投影パターン(ポジパターン)500によって得られた撮像画像と、ストライプ投影パターン(ネガパターン)503によって得られた撮像画像との輝度勾配情報によって、各スリット光パターンのエッジ部分の位置(エッジ位置)の算出を行う。
図5に示す例でも、図2に示した例と同様に、3bitのグレイコードとして、投影面の位置情報をエンコードした状態で、各スリット光パターンの投影を行う。
高周波パターン(高周波のスリット光パターン)のbit数は、プロジェクタ112の投影画素の分解能によって決定される。例えば、プロジェクタ112の投影画素の分解能が、1024×768であり、横パターンを投影する場合、高周波パターンのビット数は、10bit分必要となる。
【0034】
図6は、撮像された被写体の実際の画像の一例を示す図である。
カメラ113によって撮像されるスリット光パターンの投影時の被写体601を、輝度が相対的に高い部分と、相対的に低い部分とに分けることができる。この処理は、前述の二値化部405によって行われる。
スリット光パターンの投影処理と撮像処理は、必要な分解能の分だけ繰り返し行われ、その度に、撮像画像から得られるエッジ位置が算出され、保持される。この処理は、前述のエッジ算出部407によって行われる。
図6に示す例では、撮像画像600の中に、測定物体である被写体601が存在する。図6は、その被写体601にスリット光パターンを投影した状態における撮像画像600を示している。図7〜図10に示すエッジ位置の算出例は、この被写体601に対して行われたものである。
【0035】
図7は、低周波数のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値700は、低周波数のスリット光パターンの投影によるエッジ位置の算出値の全体を示している。このエッジ算出値700は、前述のストライプ投影パターン(ポジパターン)及びストライプ投影パターン(ネガパターン)から算出された結果である。
エッジ算出値700には、スリット光パターンの輝度変化のエッジ部分701が表示されている。
エッジ算出部407は、このエッジ部分701の値(エッジ位置情報)をメモリ115に保持する。この、エッジ部分701の値(エッジ位置情報)は、エッジ重なり算出部410によって使用される。
【0036】
図8は、中周波数(中間周波数)のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値800は、図7に示したエッジ算出値700と比較して、より高周波数のスリット光パターンの投影によるエッジ位置の算出値の全体を示している。中周波数のスリット光パターンを被写体601に投影すると、エッジ部分801に示される様に、図7に示したエッジ部分701と比較してより高周波数のエッジ位置の算出が可能になっている。
【0037】
図9は、高周波数のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値900は、プロジェクタ112の画素の空間周波数を10bitに符号化した場合のエッジ位置の算出結果の一例を示している。高周波数のスリット光パターンを被写体601に投影すると、エッジ部分901に示されるように、図7及び図8に示したエッジ部分701、801と比較してより高周波数のエッジ位置の算出が可能になっている。
【0038】
図10は、エッジ重なり値の算出結果の一例を示す図である。
エッジ算出部407は、図7〜図9に示される様に、各周波数におけるスリット光パターンを被写体601に投影したときの撮像画像からエッジ位置情報を得る。エッジ重なり算出部410は、各周波数におけるスリット光パターンから得られたエッジ位置情報から、カメラ113の画素が同一の位置におけるエッジの存在をカウントすることで、エッジ重なり値を算出する。
図10(a)に示すエッジ重なり値の算出結果1000は、カメラ113の各画素位置におけるエッジ重なり値を示している。一方、図10(b)に示すエッジ重なり値1001は、エッジ重なり値の算出結果1000の各画素の値を高さ方向に示した三次元グラフを示している。
図10(a)に示す、エッジ重なり値がある画素位置(エリア)1002と、図10(b)に示す、エッジ重なり値がある画素位置(エリア)1003とは、同一の場所であり、且つ、エッジ重なり値が、2以上の場所である。また、図10(a)に示す、エッジ重なり値がある画素位置(エリア)1004と、図10(b)に示す、エッジ重なり値がある画素位置(エリア)1005とは、同一の場所であり、且つ、エッジ重なり値が、1の場所である。
高信頼度距離値算出部412は、エッジ重なり値が1のエリアを、距離画像データの同一の位置における距離算出値の信頼度が高いエリアであると判断する。一方、高信頼度距離値算出部412は、エッジ重なり値が2以上のエリアを、距離画像データの同一の位置における距離算出値の信頼度が基準よりも低いエリアであると判断する。
高信頼度距離値算出部412は、このようなエッジ重なり値の評価を行うことで、距離値算出部411によって得られた距離画像データの距離値の信頼度の低い部分を抽出して、距離画像データ413として出力しないようにすることが可能になる。
【0039】
次に、エッジ重なり値と距離画像データの信頼度との関係に関して説明する。
一般に、空間符号化法では、グレイコードを用いて、プロジェクタ装置の投影面上での座標位置を符号化して投影を行う。そのため、投影時においては、グレイコードでエンコードされた各スリット光パターンの投影面上でのエッジ位置は、完全に平行でありそれぞれのエッジ部分が重なることはない。グレイコードの低周波成分のエッジ位置は、それ以上のグレイコードの高周波成分のエッジ位置と重なることはないという性質があるからである。図2及び図5で示されるグレイコードのスリット光パターンの投影例でも、各周波数におけるスリット光パターンの明暗が入れ替わるエッジ位置は、低周波、中周波、高周波のいずれでも重なることはない。
【0040】
そのため、カメラによって撮影された被写体の画像によって観測されるエッジ位置も、次のような場合でない限り、重なることはない。間接光による影響がある場合、オクルージョンがある場合、被写体面の傾斜が大きすぎてカメラでスリット光パターンのエッジを分解できない場合、被写体の反射率が低い場合に発生する信号雑音比の低下等がない限り、エッジ位置は重なることはない。
そこで、エッジ重なり値が1である部分の距離画像データは、空間符号化法のアルゴリズムの条件を満たしていると判断することが可能であり、信頼度が高いと判断することができる。逆に、エッジ重なり値が2以上である部分の距離画像データは、空間符号化法のアルゴリズムの条件を満たしていると判断することが難しく、信頼度が低いと判断することができる。
【0041】
エッジ重なり値が2以上であるエリアは、前述の通り、例えば、間接光による影響や、オクルージョンや、信号雑音比(SN比)の低下によるノイズ等の影響があること言うことができる。
本実施形態では、特許文献1の様に、間接光の反射による影響や信号雑音比の低下によるノイズの影響を計るための特別なスリット光パターンの投影等は必要とせず、非特許文献1で示される通常の空間符号化法と同一の撮像画像を用いて三次元形状を測定できる。そのため、特に、撮像回数の増加は発生せず、通常の空間符号化法と同様の撮像速度で、間接光の反射による影響や信号雑音比による影響等を排除することが可能である。
【0042】
図11は、エッジ重なり算出処理の一例を説明するフローチャートである。
まず、ステップS1101において、エッジ重なり算出部410は、エッジ重なり値のクリア処理を行う。
次に、ステップS1102において、画像取り込み部403は、スリット光パターンのポジパターン投影時の撮像画像(p画像)と、スリット光パターンのネガパターン投影時の撮像画像(n画像)とのそれぞれを低周波数から高周波数まで入力する。尚、ステップS1103では、撮像画像を1つずつ入力するものとする。
次に、ステップS1103において、二値化部405は、ステップS1102で入力した撮像画像のそれぞれに対して二値化処理を行い、二値化情報を生成する。
次に、ステップS1104において、エッジ算出部407は、二値化情報に基づいて、エッジ部分を抽出し、エッジ位置情報を生成する。このステップS1104では、図7〜図9に示したようなエッジ算出値700、800、900が得られる。
【0043】
次に、ステップS1105において、エッジ重なり算出部410は、エッジの存在する部分(エリア)に対するエッジ重なり値に「1」を加算する。このエッジ重なり値の加算処理の詳細は、図10を参照しながら説明した通りである。
そして、ステップS1106において、システム管理部404は、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行ったか否かを判定する。この判定の結果、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行っていない場合には、ステップS1102に戻り、次の周波数における撮像画像を入力する。そして、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行うまで、ステップS1102〜S1106の処理を繰り返し行う。
そして、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行うと、エッジ重なり値の算出が完了し、図11のフローチャートによる処理を終了し、処理の復帰を行う。
このようにして、エッジ重なり値の算出を行う。
【0044】
(オクルージョンの影響)
ここで、本実施形態におけるオクルージョンによる影響について説明する。オクルージョンによる影響は、プロジェクタ112からの投影光がプロジェクタ112からの影(オクルージョン)に近い場合に発生する。図12を用いて、オクルージョンに関する説明を行う。図12は、オクルージョンの影響の一例を示す図である。
図12において、プロジェクタ112から投影されるパターン光は、被写体1201によって遮られる。この影になる部分のエリア1202については、カメラ113によってパターン光の撮影をすることが出来ない。しかし、被写体1201は、傾斜を持った物体であり、エリア1202のエッジ部分の光は、環境光と微弱なパターン光との合算値の輝度値となる。
【0045】
このように、狭いエリアに微弱なパターン光が投影されている状態であるため、エリア1202の特定は困難となる。そのため、パターン光の高周波パターンのエッジと低周波パターンのエッジとが同一の撮影画素エリアになりやすくなり、エッジ重なり値が上昇する。また、エリア1203は、カメラ113で撮像することが出来ないエリアであるが、パターン光が投射されているエリアである。
このエリア1203に関しては、カメラ113は、被写体1201の表面を撮影することになる。尚、プロジェクタ112からのパターン光の投影も正当に行われる。
エリア1204もエリア1202、1203と同様に床面のエリアではあるが、パターン光が投影されているエリアであり、且つ、カメラ113による撮影が行われるエリアである。
【0046】
このような状況では、エリア1203とエリア1204との境界部分で、計測線の不連続や、エッジの重なりが発生する。そのため、エッジ重なり値が上昇する。
エッジ重なり値が2以上である部分は、前述した通り、間接光による影響や、オクルージョンによる影響や、信号雑音比(SN比)の低下によるノイズなどの影響があると考えることが出来る。つまり、画像全体のエッジ重なり値マップデータは、パターン光によって検出されたスリット光パターンのエッジの信頼性を示すマップ、つまり信頼性マップデータと考えることが出来る。
尚、本実施形態における手法は、特開2000−337829公報で開示されている技術のような、間接光の反射による影響や信号雑音比(SN比)の低下によるノイズの影響を計るための特別なスリット光パターンの投影を必要としない。よって、通常の空間符号化法と同一の撮影画像を用いて演算することで、間接光の反射による影響やノイズによる影響を排除することが可能である。そのため、特に撮影回数の増加は発生せず、通常の空間符号化法と同様の撮影速度で、間接光の反射による影響やノイズによる影響を排除することが可能である。
【0047】
(エッジの算出方法)
ここで、本実施形態におけるエッジの算出方法の一例について説明する。図13は、エッジの算出方法の一例を説明する図である。
エッジの算出は、ポジパターンによる撮影画像と、ネガパターンによる撮影画像との2つによって算出が可能である。図13に示すグラフは、投影したパターン光を撮影した撮影画像の輝度分布を示すグラフである。撮影画像は、二次元のデータであるが、図13では、画像の縦軸方向のデータを一次元のデータとして示している。
【0048】
図13において、横方向の軸は、撮影画像の縦方向の座標を示す。縦方向軸は、撮影画像の輝度の強弱を示す。
図13において、グラフ1301は、ポジパターンの投影による撮影画像の輝度変化を示すグラフである。また、グラフ1302は、ネガパターンの投影による撮影画像の輝度変化を示すグラフである。
図13に示す輝度変化は、パターンの変化が発生している局所的な部分を拡大したものである。グラフ1301は、パターンの変化している点1304で、グラフ1302と輝度値が同一になる。この点1304を輝度変化のエッジの座標として算出することで、エッジ座標位置1303を決定する。同様の演算処理を、撮影画像全体に対して行うことで、各周波数パターンの撮影画像における各パターンのエッジ座標位置の算出を行う。
【0049】
(エッジの重なり値の算出)
図14は、エッジ重なり値の算出方法の一例を説明する図である。
図14において、データ1401は、Nビット目の投影パターンを撮影した撮影画像から前述した方法によって算出されたエッジの位置を示すデータである。データ1402は、N+1ビット目の投影パターンを撮影した撮影画像から同様に算出されたエッジの位置を示すデータである。エッジの位置を示すデータは、撮影画面と同様の二次元の大きさを持つデータである。
【0050】
もし、各画素に対応する部分に、エッジが存在する場合は、データの値は1となり(画素1404等を参照)、エッジが存在しない場合は、データの値は0となる(画素1405等を参照)。これらの各ビットでのパターンの同一画素でのエッジ重なり数をカウントしたデータが、エッジ重なり値を示すマップ1403となる。
もし、エッジが存在しないのであれば、エッジ重なり値を示すマップ1403の値は0を示す(画素1408等を参照)。もし、エッジが1個(エッジが重なっていない状態)であれば、エッジ重なり値を示すマップ1403の値は1を示す(画素1407等を参照)。もし、エッジが2個(エッジが重なっている状態)であれば、エッジ重なり値を示すマップ1403の値は2を示す(画素1406等を参照)。
【0051】
或る画素(場所)のエッジ重なり数(エッジ重なり値)が1であれば、その場所ではエッジの重なりは発生しておらず、その場所は、原理的に空間符号化法が正しく観測が出来る場所である。或る画素(場所)のエッジ重なり数が2以上であれば、その場所ではエッジの重なりが発生しており、その場所は、原理的に空間符号化法が正しく観測出来ないと考えられる場所である。以上の処理によって、撮影画像の各画素位置におけるエッジの重なり値を算出することが出来る。
【0052】
次に、高信頼度距離値算出処理の一例について説明する。
高信頼度距離値算出部412は、エッジ重なり値が1であれば、その領域の距離画像データの値の信頼度が高いと判断し、その領域の距離画像データを有効にする。一方、エッジ重なり値が2以上であれば、その領域の距離画像データの値の信頼度が低いと判断し、その領域の距離画像データの値を無効にする。
この様にして、距離画像データの信頼度が低い部分に関しては、無効化処理を行い、結果として、信頼度の高い距離画像データ413を生成することができる。
【0053】
以上のように本実施形態では、複数の周波数のスリット光パターンであって、それぞれのエッジの位置が相互に重ならない501〜505を被写体601に投影したときのそれぞれの撮像画像から、スリット光パターンのエッジの部分を特定する。そして、2以上のスリット光パターンの撮像画像において、エッジの部分が重なる場合に、そのエッジに対応する位置の距離算出値の信頼度を低下させる。したがって、空間符号化法による被写体の三次元形状の計測を行うに際し、スリット光パターンの投影回数を増やすことなく、測定点におけるノイズの影響や間接光による影響がある箇所を、不正確な距離の演算が行われた箇所として認識することができる。よって、空間符号化法における物体の三次元形状の計測を高速に且つ高精度に行うことができる。
【0054】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第1の実施形態では、エッジ重なり値が2以上の領域に対応する距離画像データを無効にする場合を例に挙げて説明した。これに対し、本実施形態では、エッジ重なり値が2以上の場合には、スリット光パターンの最高周波数のビット数からエッジ重なり値を減算したビット数までのスリット光パターンを用いてグレイコードを構成し、距離画像データを生成する。このように、本実施形態と第1の実施形態とは、距離画像データの算出(又は採用)方法の一部が主として異なる。よって、本実施形態の説明において、第1の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0055】
本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410で算出されたエッジ重なり値を用いることで、第1の実施形態よりも、精度的は落ちるものの、より多くの場所での距離画像データを算出することを目的とする。すなわち、エッジ重なり値を次のように解釈することで、信頼性のある低周波数のスリット光パターンの投影結果も用いて距離計測を行う。
まず、エッジ重なり値が1の場合には、全ての周波数のスリット光パターンを用いて、グレイコードを構成し、距離演算を行う。
一方、エッジ重なり値が2以上の場合は、(スリット光パターンの最高周波数のビット数−エッジ重なり値)のビット数までのスリット光パターンを用いてグレイコードを構成し、距離演算を行う。
低周波数のスリット光パターンの方が高周波数のスリット光パターンよりも光量が多く、エッジ位置の算出にとって、高周波数のスリット光パターンによる演算結果よりも信号雑音比(S/N比)が高いためである。すなわち、エッジ重なり値が2以上であっても、その値がある程度小さい場合には、低周波数のスリット光パターンによる演算結果を相対的に多く使用し、その値が大きい場合には、低周波数のスリット光パターンによる演算結果を相対的に少なく使用する。
このようにすることによって、第1の実施形態と比較して、より多くの場所での距離画像データの算出が可能になる。
尚、距離値算出部411で全ての距離画像データを求め、高信頼度距離値算出部412が、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定し、判定結果に応じて、エッジ重なり値が2以上の距離算出値を求め直すようにしてもよい。
【0056】
(第3の実施形態)
次に、第3の実施形態について説明する。本実施形態では、エッジ重なり値が2以上であっても、サブピクセル精度で求めたエッジの位置が完全に一致していない場合には、その位置の距離画像データを算出(又は採用)する。このように、本実施形態と第1、第2の実施形態とは、距離画像データの算出(又は採用)方法の一部が主として異なる。よって、本実施形態の説明において、第1、第2の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0057】
本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410で算出されたエッジ重なり値と、サブピクセル演算部409で得られた、エッジの座標値(サブピクセル値)とを用いる。これにより、第1、第2の実施形態では算出されなかった高周波数のスリット光パターンの投影結果による距離画像データの算出が可能になる。
エッジ重なり値が2以上のエリア(画素)は、低周波数のスリット光パターンのエッジ位置と高周波数のスリット光パターンのエッジ位置とが、カメラ113の同一画素内に存在する状態であると考えられる。つまり、エッジ重なり値が2以上のエリア(画素)は、エッジ位置の分解能が、カメラ113の画素分解能よりも高い場合にも発生する。
この場合は、各周波数におけるスリット光パターンの輝度を用いて、サブピクセル演算部409によって、エッジ位置をサブピクセル精度で算出が可能である。そのため、カメラ113の画素単位よりも細かなエッジ位置を演算することが可能になる。
つまり、エッジ重なり値が2以上の場合、距離値算出部411は、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定する。この判定の結果、重なっているエッジ位置のサブピクセル値が一致していない場合、距離値算出部411は、当該エッジ位置に対応する被写体までの距離を算出する。このようにすることによって、第1、第2の実施形態よりも高精度な距離値の算出が可能になり、被写体の三次元形状をより高精度に求めることができる。
尚、距離値算出部411で全ての距離画像データを求め、高信頼度距離値算出部412が、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定し、一致している場合、当該エッジ位置に対応する距離算出値をクリアしてもよい。
【0058】
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410のエッジ重なり値を用いることで、距離画像データ(距離値)を無効とするのではなく、第1の実施形態よりも精度的には落ちるものの距離画像データ(距離値)を算出する。このように本実施形態と第1〜第3の実施形態とは、距離画像データの算出方法の一部が主として異なる。よって、本実施形態の説明において、第1〜第3の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0059】
前述した第1の実施形態では、エッジ重なり算出部410によって算出されるエッジ重なり値が2以上の場合は、そのエッジ重なり値が2以上であるエッジに対応する位置の距離算出値が、信頼性のない距離計測値であるとして処理を行った。これに対し、本実施形態では、エッジ重なり値を、次のように解釈することで、信頼性のある低周波数のスリット光パターンの投影結果までを用いて距離計測を行う。
【0060】
(1)エッジ重なり値が1の場合には、全ての周波数の投影パターンを用いて、グレイコードを構成し、距離演算を行う。
(2)エッジ重なり値が2以上の場合には、(投影パターンの最高周波数のビット数−エッジ重なり値)のビット数までの結果の投影パターンを用いてグレイコードを構成し、距離演算を行う。
これは、低周波数のスリット光パターンの方が高周波数のスリット光パターンよりも光量が多く、エッジ位置の算出にとって、高周波数のスリット光パターンによる演算結果よりも信号雑音比(S/N比)がより高いためである。このような処理によって、第1の実施形態と比較して、より多くの場所での距離画像データの算出が可能になる。
【0061】
(第5の実施形態)
次に、本発明の第5の実施形態について説明する。本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410のエッジ重なり値及びサブピクセル演算部409のエッジのサブピクセル値を用いる。このようにすることで、他の実施形態では算出されなかった高周波のスリット光パターンの投影結果による距離画像データの算出を行うことができる。このように本実施形態と第1〜第4の実施形態とは、距離画像データの算出方法の一部が主として異なる。よって、本実施形態の説明において、第1〜第4の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0062】
エッジ重なり値が2以上の画像ピクセルは、低周波数なスリット光パターンのエッジ位置と、高周波なスリット光パターンのエッジ位置とがカメラ113の同一画素内に存在する状態であると考えられる。つまり、エッジ位置の分解能が、カメラ113の画素分解能よりも高い場合にも発生する。このような場合には、各周波数におけるスリット光パターンの輝度を用いて、サブピクセル演算部409がサブピクセル処理を行うことによって、エッジ位置をサブピクセル精度で算出することが可能である。そのため、カメラ113の画素単位よりも細かなエッジ位置を演算することが可能になる。つまり、エッジ重なり値が2以上の場合は、距離値演算部411が、エッジ位置のサブピクセル値まで用いて、被写体までの距離計測を行うことによって、他の実施形態よりも高精度な距離値の算出が可能になる。
【0063】
尚、前述した各実施形態では、例えば、プロジェクタ112により投影手段の一例が実現され、カメラ113により撮像手段の一例が実現される。また、例えば、距離値算出部411により距離値算出手段の一例が実現され、エッジ算出部407によりエッジ位置検出手段の一例が実現される。また、エッジ重なり算出部410によりエッジ重なり度合い検出手段の一例が実現され、距離値算出部411により位置算出手段の一例が実現され、高信頼度距離値算出部412により信頼度算出手段の一例が実現される。
【0064】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0065】
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【0066】
100 計算処理部、112 プロジェクタ、113 カメラ
【技術分野】
【0001】
本発明は、三次元位置計測装置、三次元位置計測方法、及びコンピュータプログラムに関し、特に、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を用いて、非接触で被写体の三次元形状を計測するために用いて好適なものである。
【背景技術】
【0002】
三次元形状の計測装置は、製品の立体形状検査、寸法測定、組み立て位置決め等、一般にロボットビジョンと呼ばれる分野で用いられる。
非接触での三次元形状の計測方法には、様々な方法があり、一長一短がある。例えば、レーザースリット光を用いた光切断法による三次元形状の計測方法では、スキャナ、ミラー、及び半導体レーザー等のコンパクトな部品で構成できるという長所がある。しかし、光切断法では、スキャンラインの数と同数の撮影枚数が必要となるので、光切断法は、物体の三次元形状を高速に計測するには、不利と言わざるを得ない。
【0003】
このような欠点を克服する手法として、空間符号化法と呼ばれる明暗パターンのスリット光パターンを物体に投影することで、空間分割を行い、三次元形状の計測を行う手法がある(非特許文献1を参照)。
この空間符号化法では、空間分割数をNとすると、撮影枚数は(log2N)枚で済む。よって、空間符号化法では、光切断法と比較すると、少ない撮影枚数で物体の三次元計測が可能となる。
【0004】
しかし、この空間符号化法では、空間分割を行う際に、空間分解能が投影パターンの量子化bit数に制限されてしまう。
そこで、ある程度の段階まで空間符号化法により空間分割測定を行い、空間分割された個々の領域の三次元形状を光切断法にて同時に計測するマルチスリット光による空間測定法が存在する(特許文献1を参照)。
この手法によって、光切断法と比較して、より少ない撮影枚数で物体の三次元計測を行うことが可能になると共に、空間符号化法のみによる測定よりも空間分解能が高い物体の三次元計測を行うことが可能になる。
【0005】
従来は、以上のような原理を用いることで、物体の三次元形状の計測精度を向上させることが行われていた。
三次元形状計測装置では、レーザースリット光やスリット光パターンの投影等を行うことで、形状の計測が行われるが、投影した光の反射光の撮影状態によって、計測値のベースとなる計測線の検出等に問題が生ずる。すなわち、被写体の光の反射特性である双方向反射率分布関数(BRDF(Bidirectional Reflectance Distribution Function)によって、計測線の検出が理想状態(拡散反射)とはならず、鏡面性を持つ。このこと等の理由により、三次元形状計測装置では、計測線の間接反射が計測される。
【0006】
このような場合、真の計測線(直接反射による計測線)と偽の計測線(間接反射による計測線)とが観測されることによって、距離計測値の信頼度が落ちる可能性がある。また、被写体の反射強度自体が低い場合、計測線そのものの信号雑音比(Signal/Noise:SN比)の低下によって、物体の観測が難しくなり、ノイズ成分が多く観測される場合等、距離計測値の信頼度が落ちる可能性がある。
また、被写体の観測方向からの見た場合の傾斜の状態によっても問題が生じる。被写体面と、三次元計測装置のプロジェクタ装置及びカメラ装置の光軸とが垂直であれば、計測の状態としては良い条件と言える。しかし、この状態から、被写体面と、三次元計測装置のプロジェクタ装置及びカメラ装置の光軸とのなす角度に傾斜が発生すると、レーザースリット光やスリット光パターンの投影の反射光量が低下する。よって、観測信号に対してノイズが多くなり、信号雑音比が低下する問題が発生する。
また、計測線同士の間隔が狭くなり、カメラ装置の画素分解能を超えてしまう、つまり、スリット光パターンの計測が、カメラ分解能のナイキスト周波数を超えてしまうと、その画像の部分の周辺では、計測状態が不安定となる。
そこで、特許文献1では、スリット光パターンの一部の空間分割を示す符号値の符号化誤りを検出するためのパターンを物体に投影することで、符号化の誤りの検出を行っている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−337829号公報
【非特許文献】
【0008】
【非特許文献1】井口征士・佐藤宏介共著、「三次元画像計測」、昭晃堂、1990年
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の手法では、間接光による影響を取り除くために、新たなパターンの投影等を必要とする。このため、間接光による影響を測定することは可能となるが、スリット光パターンの投影回数の増加をもたらす。すなわち、特許文献1に記載の手法では、非特許文献1で説明される通常の空間分割による三次元形状の計測で必要となる撮影回数よりも多く撮影を必要とする。このため、特許文献1に記載の手法では、計測時間の低下をもたらし、物体の三次元形状を高速に計測することが容易でないという問題点があった。
【0010】
また、前述の被写体面に対する、カメラ装置及びプロジェクタ装置の光軸の傾斜によって、ナイキスト周波数よりも高い周波数のスリット光パターンが撮影されてしまう場合や、被写体の反射率が低い場合がある。特許文献1に記載の手法では、このような場合に発生する信号雑音比の低下に対応することが容易でないという問題があった。
本発明は、このような問題点に鑑みてなされたものであり、空間符号化法における被写体の三次元形状の計測を高速に且つ高精度に行うことを目的とする。
【課題を解決するための手段】
【0011】
本発明の三次元位置計測装置は、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得手段と、前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出手段と、前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出手段と、前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出手段と、を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、撮像画像から検出されたエッジの位置と、その重なり度合いとに基づき、被写体の位置を算出するようにした。したがって、パターン光の投影回数を増やすことなく、ノイズを低減することができる。よって、空間符号化法における被写体の三次元形状の計測を高速に且つ高精度に行うことができる。
【図面の簡単な説明】
【0013】
【図1】三次元位置計測システムの構成を示す図である。
【図2】被写体に投影するスリット光パターンの一例を示す図である。
【図3】三次元位置計測システムにより実行される三次元位置計測の方法を示す図である。
【図4】三次元位置計測システムの計算処理部のソフトウェア構成を示す図である。
【図5】被写体に投影するスリット光パターンの他の例を示す図である。
【図6】撮像された被写体の実際の画像を示す図である。
【図7】低周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図8】中周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図9】高周波数のスリット光パターンの投影によるエッジ位置の算出結果を示す図である。
【図10】エッジ重なり値の算出結果を示す図である。
【図11】エッジ重なり算出処理を説明するフローチャートである。
【図12】オクルージョンの影響を示す図である。
【図13】エッジ座標の算出方法を説明する図である。
【図14】エッジ重なり値の算出方法を説明する図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を説明する。
(第1の実施形態)
まず、第1の実施形態について説明する。
図1は、三次元位置計測システムの構成の一例を示す図である。
三次元位置計測システムは、プロジェクタ112と、カメラ113と、計算処理部100とを有する。
プロジェクタ112は、縞パターン光やマルチスリットパターン光を被写体117に投影する。カメラ113は、縞パターン光やマルチスリットパターン光が投影された被写体117(被写体117で反射された縞パターン光やマルチスリットパターン光)を撮像する。計算処理部100は、縞パターン光やマルチスリットパターン光の投影や撮像を指示したり、撮像された画像データを計算処理して被写体117の三次元位置計測を行ったりする。
【0015】
計算処理部100は、中央処理部(CPU)110、フレームバッファ111、画像メモリ114、メモリ115、コントローラ116、出力部118、及び表示部119を有し、互いにバスを介して接続されている。
コントローラ116は、メモリ115や画像メモリ114やフレームバッファ111等との通信や、演算の補助を行うハードウェアである。フレームバッファ111は、RAM等で構成されている。
CPU110は、不揮発性メモリを含むメモリ115に記録されるパターンを用いて投影パターンを構成し、フレームバッファ111に記録する。
不揮発性メモリを含むメモリ115には、縞パターン光やマルチスリット光のパターン形状プログラム、投影時間を設定するタイムアカウントプログラム等が記録されている。
【0016】
CPU110から投影指示を受信したコントローラ116は、メモリ115より、縞パターン光形状信号やマルチスリットパターン光形状信号を、フレームバッファ111を介して、プロジェクタ112に送信する。
また、コントローラ116は、CPU110からの指示に基づき、タイムアカウント信号を、プロジェクタ112及びカメラ113に送信する。これにより、縞パターン光やマルチスリットパターン光の投影及び撮像のタイミングが管理される。
カメラ113で撮像された複数枚の画像データは、画像メモリ114に一時的に格納され、コントローラ116を介してCPU110に入力される。CPU110は、入力した画像データに対して、二値化処理等の画像処理を行う。この二値化処理は、縞パターン光の明部と暗部との境界位置を決定する処理である。CPU110は、この二値化処理により、白黒の二値化画像データを生成する。この二値化画像データは、メモリ115に蓄積され、後の処理での距離値の算出に使用される。
【0017】
メモリ115は、不揮発性メモリであるROMや、揮発性メモリであるRAM等を備えて構成されている。メモリ115は、プロジェクタ112とカメラ113との基線長、カメラ113の焦点距離、及びカメラ113の画素数等の機器に依存するパラメータや、予め行うキャリブレーションによるディストーション、及び外光輝度等の外部パラメータを格納する。また、メモリ115は、三角測量による三次元位置計測プログラムも格納する。
CPU110は、二値化画像データ、及び各種パラメータを入力として、メモリ115に格納されている三次元位置計測プログラムに基づく処理を実行して、被写体117の三次元位置計測を行う。
CPU110による被写体117の三次元位置計測の結果は、距離画像データとして生成される。
距離画像データは、出力部(不図示)で画像化され、表示部(不図示)で距離画像として表示される。
以上の一連の処理は、全てCPU110からの指示に基づいて行われる。
【0018】
尚、サブピクセル精度による縞パターン光のエッジ(明暗の境界)部分の算出等を行う場合、画像メモリ114の大きさとして、カメラ113の撮影画像よりも大きな仮想撮影画像を想定することで、サブピクセルの精度を考慮した二値化画像データを作成できる。
【0019】
次に投影するスリット光パターンについて説明する。本実施形態では、空間符号化法として、グレイコードによる空間符号化を例にして説明する。
図2は、被写体117に投影するスリット光パターンの一例を示す図である。
図2に示すように、スリット光パターン200〜202は、明暗のスリットを交互に配した縞パターンを有するパターン光である。
図2に示す例では、空間符号化法によるパターンのスリット光パターン200〜202は、3bitのグレイコードによる空間符号化のスリット縞パターン光である。本実施形態では、3bitの空間符号化を行う場合を例に挙げて説明するが、3bitの空間符号化を行う場合に限定されるものではない。Nbitの空間符号化を行う場合、スリット光パターンがN枚となる。
【0020】
スリット光パターン201は、スリット光パターン200よりも空間解像度が2倍になっている縞パターン光である。同様に、スリット光パターン202は、スリット光パターン201よりも空間解像度が2倍になっている縞パターン光である。
このような空間符号化法によるスリット光パターン200〜202をプロジェクタ112から被写体117に向けて投影し、被写体117に投影されたスリット光パターン200〜202をカメラ113で撮像する。このようにすることで、計算処理部100は、撮像範囲を8分割し、被写体117を認識することができる。
【0021】
図3は、三次元位置計測システムにより実行される三次元位置計測の方法の一例を概念的に示す図である。
プロジェクタ112から被写体117に向けて、明部と暗部とが所定の周期で交互に配置された縞パターンからなるスリット光パターン200〜202を投射する。
スリット光パターン200〜202の縞パターン(形状及び大きさ)は、予め決められており、それらが各々被写体117に順次個別に投影される。そして、その投影の度に、被写体117に投影されたスリット光パターンをカメラ113で撮像して、計算処理部100が画像データとして取得する。
【0022】
図3において、被写体117の明部と暗部との境界位置(エッジ位置)を(X,Y,Z)とする。また、境界位置(X,Y,Z)と、プロジェクタ112を相互に結んだときのプロジェクタ112の光線位置を(X1,Y1,Z1)とする。また、境界位置(X,Y,Z)と、カメラ113とを相互に結んだときのカメラ113の光線位置を(X2,Y2,Z2)とする。カメラ113の光線位置(X2,Y2,Z2)は、カメラ113の撮像センサ(CCDやCMOS等)の画素の平面座標によって求まる。プロジェクタ112の光線位置(X1,Y1,Z1)は、投光素子(液晶等)の画素の平面座標によって求まる。
【0023】
また、プロジェクタ112とカメラ113との間の距離Lは基線長となる。基線長Lは、装置の構成条件から定められる。これらのパラメータから三角測量の原理によって被写体117の境界位置(X,Y,Z)を求めることができる。被写体117の全面に対してそれぞれの境界位置(X,Y,Z)を求めることで、被写体117の三次元形状を測定することができる。尚、被写体117の全面に対してそれぞれの境界位置(X,Y,Z)を求めることと、被写体117の三次元形状を測定することは、公知の技術で実現できるので、ここでは、これらの詳細な説明を省略する。
【0024】
次に、本実施形態で提案する技術の概略を述べる。
図4は、三次元位置計測システムの計算処理部100のソフトウェア構成の一例を示す図である。
計算処理部100は、402〜412までに示されるソフトウェア手段によって実現される。これらのソフトウェア手段は、図1に示したCPU110、フレームバッファ111、画像メモリ114、メモリ115、コントローラ116等のハードウェアを用いて実行されるプログラムの事を指している。尚、本実施形態では、これらの手段をソフトウェアとして説明を行うが、これらの一部又は全部を、ハードウェアを用いて演算処理しても構わない。最終的に、これらのソフトウェア手段を用いて、距離画像データ413の出力をすることが、ソフトウェア手段全体の目的である。
距離画像データ413は、カメラ113によって撮像される画像の画素それぞれに対して、距離値を算出することにより得られる二次元配列で構成されたデータである。距離画像データ413は、それぞれの画素の値としてカメラ113から被写体117までの距離の値を持つ三次元空間情報である。
【0025】
まず、三次元位置計測システム全体は、システム管理部404によって制御される。図4では、システム管理部404が、特にパターン投影部402及び画像取り込み部403を制御しているように示しているが、実際には、その他のブロックも、システム管理部404によって管理されている。
システム管理部404は、スリット光パターンの投影のタイミングや、画像の撮像のタイミング等の管理や、演算の順序の管理や、出力データの管理等、三次元位置計測システム全体の様々なリソースの管理と時間の管理等を行っている。
【0026】
パターン投影部402は、プロジェクタ112から投影されるスリット光パターンの生成を行う。生成されたスリット光パターンは、プロジェクタ112から投影される。
このときの被写体117の像をカメラ113で撮像し、画像取り込み部403によって装置(計算処理部100)内に取り込む。
このスリット光パターンの投影処理と撮影処理は、例えば、図2に示したスリット光パターン200〜202の投影とその像の撮像とによって行われる。
【0027】
本実施形態の手法のスリット光パターンは、図2に示す縦パターンでも、図5に示す横パターンでも問題なく動作する。尚、以降の説明では、図2に示す縦パターンではなく、図5に示す横パターンを用いた場合を例に挙げる。
このパターンの選択は、カメラ113とプロジェクタ112との空間的な配置の位置関係により決定される。
もし、カメラ113とプロジェクタ112とが、縦方向(図3に示す例ではY方向)において間隔を有して配置されているのであれば、スリット光パターンとして横パターンを用いる。逆に、カメラ113とプロジェクタ112とが、横方向(図3に示す例ではX方向)において間隔を有して配置されているのであれば、スリット光パターンとして縦パターンを用いる。
スリット光パターンとしては、図2に示されるように、グレイコードによるスリット光パターンを用い、且つ、空間を分解するのに適したBit数に応じて、低周波〜高周波までの複数のスリット光パターンを用いる。
二値化部405は、撮像された被写体117の画像を、スリット光パターンが投影されている場所と、スリット光パターンが投影されていない場所とに分ける。例えば、撮像された被写体117の画像の輝度の情報を、大津法等の閾値決定手法によって決定された閾値に応じて分けることにより、領域を分けることができる。このようにして二値化部405によって得られる二値化情報は、エッジ算出部407に送られる。
エッジ算出部407は、二値化部405から出力された二値化情報に基づいて、スリット光パターンの明暗の変わる部分の詳細な位置情報(以降、この情報を必要に応じて「エッジ位置情報」と称する)を算出する。
【0028】
エッジ算出部407は、エッジ位置情報を、サブピクセル演算部409に送る。
サブピクセル演算部409は、エッジ周辺の画素の輝度変化情報から、エッジ位置の情報として、更に詳細な座標データの算出を行う。この際、ここで算出されるエッジ位置の情報は、カメラ113の画素単位やプロジェクタ112の投影画素単位ではなく、1ピクセル以下の精度の座標値とすることが可能である。
また、エッジ算出部407は、エッジ位置情報をエッジ重なり算出部410に送る。
エッジ重なり算出部410は、前述の各スリット光パターンの周波数毎に、各撮像画素におけるスリット光パターンのエッジの重なりをカウントする。本実施形態では、エッジ重なり算出部410は、エッジ重なり算出部410は、複数のエッジ位置が撮像素子の1ピクセル内に存在する場合に、エッチ位置が重なっていると判定する。
【0029】
また、二値化部405は、二値化情報をバイナリー値算出部406に送る。
バイナリー値算出部406は、低周波数から高周波数までの複数のスリット光パターンが個別に投影された被写体117の画像から生成された各周波数における二値化画像を統合する。これにより、バイナリー値算出部406は、プロジェクタ112の投影像での位置情報(以降、この情報を必要に応じて「ディスパリティマップデータ」と称する)が符号化された画像の生成を行う。
空間符号化法では、一般に、ディスパリティマップデータは、グレイコードと呼ばれるエンコードが行われている。そこで、投影面位置情報デコード部408は、ディスパリティマップデータのグレイコードの符号化情報を復号化し、復号化されていないディスパリティマップデータの算出を行う。
このディスパリティマップデータを用いることで、プロジェクタ112の投影面上での座標と、カメラ113で撮像された画像上での座標との対応関係を得ることができる。
【0030】
距離値算出部411は、投影面位置情報デコード部408で復号化されたディスパリティマップデータのグレイコードと、サブピクセル演算部409で得られたエッジ位置の情報と、エッジ重なり算出部410で得られたエッジの重なりのカウント値とを入力する。距離値算出部411は、これらの演算結果を受けて、距離画像データの算出を行う。
空間符号化法では、プロジェクタ112の投影面上での座標と、カメラ113で撮像された画像上での座標との対応関係から、非特許文献1等に示される三角測量法を用いて、被写体117上(物体上)の各点の位置における距離画像データを得ることができる。特に、本実施形態の手法では、サブピクセル演算部409でサブピクセル処理を行うことによって、スリット光パターンのエッジ位置を、画像ピクセル単位以下の精度で算出する。このため、非常に高精度に被写体117の三次元空間上での位置を算出することが可能である。尚、三角測量法により距離画像データを算出する方法自体は公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【0031】
次に、距離値算出部411によって得られた距離画像データ(被写体117の距離の算出結果)は、高信頼度距離値算出部412に送られる。
高信頼度距離値算出部412は、エッジ重なり算出部410で算出されたエッジの重なりのカウント値の情報から、各スリット光パターンのエッジの位置に重なりが発生している箇所を特定する。次に、高信頼度距離値算出部412は、その部分の距離画像データは、不正確であると判断し、距離算出値をクリアする。
尚、エッジの位置に重なりが発生している箇所の情報から、その部分の距離画像データは、不正確であると判断し、距離算出値をクリアする際の詳細な処理に関しては、後述する。
最終的に、高信頼度距離値算出部412は、不正確ではないと判断した距離画像データのみで距離画像データ413を再構成し、出力する。
【0032】
図5は、被写体に投影するスリット光パターンの他の例を示す図である。前述したように、図5では、スリット光パターンとして横パターンのスリット光パターンを示している。
図6〜図10では、カメラ113とプロジェクタ112とが縦方向において間隔を有して配置を行っている場合を例に挙げて示している。このため、図6〜図10では、図5に示すように横方向のスリット光パターン(横パターン)を被写体601に投影することで、各スリット光パターンのエッジの位置の重なりのカウント値を算出している。尚、以下の説明では、このカウント値を必要に応じて「エッジ重なり値」と称する。
図6〜図10では、図2に示すのと同様に、低周波から高周波に至るパターンを有する複数のスリット光パターン500〜505を被写体601に順次投影し、その度に被写体601の撮像を行う。
【0033】
前述した、各スリット光パターンのエッジ部分の算出は、例えば、次のようにして行う。すなわち、ストライプ投影パターン(ポジパターン)500によって得られた撮像画像と、ストライプ投影パターン(ネガパターン)503によって得られた撮像画像との輝度勾配情報によって、各スリット光パターンのエッジ部分の位置(エッジ位置)の算出を行う。
図5に示す例でも、図2に示した例と同様に、3bitのグレイコードとして、投影面の位置情報をエンコードした状態で、各スリット光パターンの投影を行う。
高周波パターン(高周波のスリット光パターン)のbit数は、プロジェクタ112の投影画素の分解能によって決定される。例えば、プロジェクタ112の投影画素の分解能が、1024×768であり、横パターンを投影する場合、高周波パターンのビット数は、10bit分必要となる。
【0034】
図6は、撮像された被写体の実際の画像の一例を示す図である。
カメラ113によって撮像されるスリット光パターンの投影時の被写体601を、輝度が相対的に高い部分と、相対的に低い部分とに分けることができる。この処理は、前述の二値化部405によって行われる。
スリット光パターンの投影処理と撮像処理は、必要な分解能の分だけ繰り返し行われ、その度に、撮像画像から得られるエッジ位置が算出され、保持される。この処理は、前述のエッジ算出部407によって行われる。
図6に示す例では、撮像画像600の中に、測定物体である被写体601が存在する。図6は、その被写体601にスリット光パターンを投影した状態における撮像画像600を示している。図7〜図10に示すエッジ位置の算出例は、この被写体601に対して行われたものである。
【0035】
図7は、低周波数のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値700は、低周波数のスリット光パターンの投影によるエッジ位置の算出値の全体を示している。このエッジ算出値700は、前述のストライプ投影パターン(ポジパターン)及びストライプ投影パターン(ネガパターン)から算出された結果である。
エッジ算出値700には、スリット光パターンの輝度変化のエッジ部分701が表示されている。
エッジ算出部407は、このエッジ部分701の値(エッジ位置情報)をメモリ115に保持する。この、エッジ部分701の値(エッジ位置情報)は、エッジ重なり算出部410によって使用される。
【0036】
図8は、中周波数(中間周波数)のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値800は、図7に示したエッジ算出値700と比較して、より高周波数のスリット光パターンの投影によるエッジ位置の算出値の全体を示している。中周波数のスリット光パターンを被写体601に投影すると、エッジ部分801に示される様に、図7に示したエッジ部分701と比較してより高周波数のエッジ位置の算出が可能になっている。
【0037】
図9は、高周波数のスリット光パターンの投影によるエッジ位置の算出結果の一例を示す図である。
エッジ算出値900は、プロジェクタ112の画素の空間周波数を10bitに符号化した場合のエッジ位置の算出結果の一例を示している。高周波数のスリット光パターンを被写体601に投影すると、エッジ部分901に示されるように、図7及び図8に示したエッジ部分701、801と比較してより高周波数のエッジ位置の算出が可能になっている。
【0038】
図10は、エッジ重なり値の算出結果の一例を示す図である。
エッジ算出部407は、図7〜図9に示される様に、各周波数におけるスリット光パターンを被写体601に投影したときの撮像画像からエッジ位置情報を得る。エッジ重なり算出部410は、各周波数におけるスリット光パターンから得られたエッジ位置情報から、カメラ113の画素が同一の位置におけるエッジの存在をカウントすることで、エッジ重なり値を算出する。
図10(a)に示すエッジ重なり値の算出結果1000は、カメラ113の各画素位置におけるエッジ重なり値を示している。一方、図10(b)に示すエッジ重なり値1001は、エッジ重なり値の算出結果1000の各画素の値を高さ方向に示した三次元グラフを示している。
図10(a)に示す、エッジ重なり値がある画素位置(エリア)1002と、図10(b)に示す、エッジ重なり値がある画素位置(エリア)1003とは、同一の場所であり、且つ、エッジ重なり値が、2以上の場所である。また、図10(a)に示す、エッジ重なり値がある画素位置(エリア)1004と、図10(b)に示す、エッジ重なり値がある画素位置(エリア)1005とは、同一の場所であり、且つ、エッジ重なり値が、1の場所である。
高信頼度距離値算出部412は、エッジ重なり値が1のエリアを、距離画像データの同一の位置における距離算出値の信頼度が高いエリアであると判断する。一方、高信頼度距離値算出部412は、エッジ重なり値が2以上のエリアを、距離画像データの同一の位置における距離算出値の信頼度が基準よりも低いエリアであると判断する。
高信頼度距離値算出部412は、このようなエッジ重なり値の評価を行うことで、距離値算出部411によって得られた距離画像データの距離値の信頼度の低い部分を抽出して、距離画像データ413として出力しないようにすることが可能になる。
【0039】
次に、エッジ重なり値と距離画像データの信頼度との関係に関して説明する。
一般に、空間符号化法では、グレイコードを用いて、プロジェクタ装置の投影面上での座標位置を符号化して投影を行う。そのため、投影時においては、グレイコードでエンコードされた各スリット光パターンの投影面上でのエッジ位置は、完全に平行でありそれぞれのエッジ部分が重なることはない。グレイコードの低周波成分のエッジ位置は、それ以上のグレイコードの高周波成分のエッジ位置と重なることはないという性質があるからである。図2及び図5で示されるグレイコードのスリット光パターンの投影例でも、各周波数におけるスリット光パターンの明暗が入れ替わるエッジ位置は、低周波、中周波、高周波のいずれでも重なることはない。
【0040】
そのため、カメラによって撮影された被写体の画像によって観測されるエッジ位置も、次のような場合でない限り、重なることはない。間接光による影響がある場合、オクルージョンがある場合、被写体面の傾斜が大きすぎてカメラでスリット光パターンのエッジを分解できない場合、被写体の反射率が低い場合に発生する信号雑音比の低下等がない限り、エッジ位置は重なることはない。
そこで、エッジ重なり値が1である部分の距離画像データは、空間符号化法のアルゴリズムの条件を満たしていると判断することが可能であり、信頼度が高いと判断することができる。逆に、エッジ重なり値が2以上である部分の距離画像データは、空間符号化法のアルゴリズムの条件を満たしていると判断することが難しく、信頼度が低いと判断することができる。
【0041】
エッジ重なり値が2以上であるエリアは、前述の通り、例えば、間接光による影響や、オクルージョンや、信号雑音比(SN比)の低下によるノイズ等の影響があること言うことができる。
本実施形態では、特許文献1の様に、間接光の反射による影響や信号雑音比の低下によるノイズの影響を計るための特別なスリット光パターンの投影等は必要とせず、非特許文献1で示される通常の空間符号化法と同一の撮像画像を用いて三次元形状を測定できる。そのため、特に、撮像回数の増加は発生せず、通常の空間符号化法と同様の撮像速度で、間接光の反射による影響や信号雑音比による影響等を排除することが可能である。
【0042】
図11は、エッジ重なり算出処理の一例を説明するフローチャートである。
まず、ステップS1101において、エッジ重なり算出部410は、エッジ重なり値のクリア処理を行う。
次に、ステップS1102において、画像取り込み部403は、スリット光パターンのポジパターン投影時の撮像画像(p画像)と、スリット光パターンのネガパターン投影時の撮像画像(n画像)とのそれぞれを低周波数から高周波数まで入力する。尚、ステップS1103では、撮像画像を1つずつ入力するものとする。
次に、ステップS1103において、二値化部405は、ステップS1102で入力した撮像画像のそれぞれに対して二値化処理を行い、二値化情報を生成する。
次に、ステップS1104において、エッジ算出部407は、二値化情報に基づいて、エッジ部分を抽出し、エッジ位置情報を生成する。このステップS1104では、図7〜図9に示したようなエッジ算出値700、800、900が得られる。
【0043】
次に、ステップS1105において、エッジ重なり算出部410は、エッジの存在する部分(エリア)に対するエッジ重なり値に「1」を加算する。このエッジ重なり値の加算処理の詳細は、図10を参照しながら説明した通りである。
そして、ステップS1106において、システム管理部404は、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行ったか否かを判定する。この判定の結果、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行っていない場合には、ステップS1102に戻り、次の周波数における撮像画像を入力する。そして、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行うまで、ステップS1102〜S1106の処理を繰り返し行う。
そして、エッジ重なり値の加算処理をスリット光パターンの全ての周波数において行うと、エッジ重なり値の算出が完了し、図11のフローチャートによる処理を終了し、処理の復帰を行う。
このようにして、エッジ重なり値の算出を行う。
【0044】
(オクルージョンの影響)
ここで、本実施形態におけるオクルージョンによる影響について説明する。オクルージョンによる影響は、プロジェクタ112からの投影光がプロジェクタ112からの影(オクルージョン)に近い場合に発生する。図12を用いて、オクルージョンに関する説明を行う。図12は、オクルージョンの影響の一例を示す図である。
図12において、プロジェクタ112から投影されるパターン光は、被写体1201によって遮られる。この影になる部分のエリア1202については、カメラ113によってパターン光の撮影をすることが出来ない。しかし、被写体1201は、傾斜を持った物体であり、エリア1202のエッジ部分の光は、環境光と微弱なパターン光との合算値の輝度値となる。
【0045】
このように、狭いエリアに微弱なパターン光が投影されている状態であるため、エリア1202の特定は困難となる。そのため、パターン光の高周波パターンのエッジと低周波パターンのエッジとが同一の撮影画素エリアになりやすくなり、エッジ重なり値が上昇する。また、エリア1203は、カメラ113で撮像することが出来ないエリアであるが、パターン光が投射されているエリアである。
このエリア1203に関しては、カメラ113は、被写体1201の表面を撮影することになる。尚、プロジェクタ112からのパターン光の投影も正当に行われる。
エリア1204もエリア1202、1203と同様に床面のエリアではあるが、パターン光が投影されているエリアであり、且つ、カメラ113による撮影が行われるエリアである。
【0046】
このような状況では、エリア1203とエリア1204との境界部分で、計測線の不連続や、エッジの重なりが発生する。そのため、エッジ重なり値が上昇する。
エッジ重なり値が2以上である部分は、前述した通り、間接光による影響や、オクルージョンによる影響や、信号雑音比(SN比)の低下によるノイズなどの影響があると考えることが出来る。つまり、画像全体のエッジ重なり値マップデータは、パターン光によって検出されたスリット光パターンのエッジの信頼性を示すマップ、つまり信頼性マップデータと考えることが出来る。
尚、本実施形態における手法は、特開2000−337829公報で開示されている技術のような、間接光の反射による影響や信号雑音比(SN比)の低下によるノイズの影響を計るための特別なスリット光パターンの投影を必要としない。よって、通常の空間符号化法と同一の撮影画像を用いて演算することで、間接光の反射による影響やノイズによる影響を排除することが可能である。そのため、特に撮影回数の増加は発生せず、通常の空間符号化法と同様の撮影速度で、間接光の反射による影響やノイズによる影響を排除することが可能である。
【0047】
(エッジの算出方法)
ここで、本実施形態におけるエッジの算出方法の一例について説明する。図13は、エッジの算出方法の一例を説明する図である。
エッジの算出は、ポジパターンによる撮影画像と、ネガパターンによる撮影画像との2つによって算出が可能である。図13に示すグラフは、投影したパターン光を撮影した撮影画像の輝度分布を示すグラフである。撮影画像は、二次元のデータであるが、図13では、画像の縦軸方向のデータを一次元のデータとして示している。
【0048】
図13において、横方向の軸は、撮影画像の縦方向の座標を示す。縦方向軸は、撮影画像の輝度の強弱を示す。
図13において、グラフ1301は、ポジパターンの投影による撮影画像の輝度変化を示すグラフである。また、グラフ1302は、ネガパターンの投影による撮影画像の輝度変化を示すグラフである。
図13に示す輝度変化は、パターンの変化が発生している局所的な部分を拡大したものである。グラフ1301は、パターンの変化している点1304で、グラフ1302と輝度値が同一になる。この点1304を輝度変化のエッジの座標として算出することで、エッジ座標位置1303を決定する。同様の演算処理を、撮影画像全体に対して行うことで、各周波数パターンの撮影画像における各パターンのエッジ座標位置の算出を行う。
【0049】
(エッジの重なり値の算出)
図14は、エッジ重なり値の算出方法の一例を説明する図である。
図14において、データ1401は、Nビット目の投影パターンを撮影した撮影画像から前述した方法によって算出されたエッジの位置を示すデータである。データ1402は、N+1ビット目の投影パターンを撮影した撮影画像から同様に算出されたエッジの位置を示すデータである。エッジの位置を示すデータは、撮影画面と同様の二次元の大きさを持つデータである。
【0050】
もし、各画素に対応する部分に、エッジが存在する場合は、データの値は1となり(画素1404等を参照)、エッジが存在しない場合は、データの値は0となる(画素1405等を参照)。これらの各ビットでのパターンの同一画素でのエッジ重なり数をカウントしたデータが、エッジ重なり値を示すマップ1403となる。
もし、エッジが存在しないのであれば、エッジ重なり値を示すマップ1403の値は0を示す(画素1408等を参照)。もし、エッジが1個(エッジが重なっていない状態)であれば、エッジ重なり値を示すマップ1403の値は1を示す(画素1407等を参照)。もし、エッジが2個(エッジが重なっている状態)であれば、エッジ重なり値を示すマップ1403の値は2を示す(画素1406等を参照)。
【0051】
或る画素(場所)のエッジ重なり数(エッジ重なり値)が1であれば、その場所ではエッジの重なりは発生しておらず、その場所は、原理的に空間符号化法が正しく観測が出来る場所である。或る画素(場所)のエッジ重なり数が2以上であれば、その場所ではエッジの重なりが発生しており、その場所は、原理的に空間符号化法が正しく観測出来ないと考えられる場所である。以上の処理によって、撮影画像の各画素位置におけるエッジの重なり値を算出することが出来る。
【0052】
次に、高信頼度距離値算出処理の一例について説明する。
高信頼度距離値算出部412は、エッジ重なり値が1であれば、その領域の距離画像データの値の信頼度が高いと判断し、その領域の距離画像データを有効にする。一方、エッジ重なり値が2以上であれば、その領域の距離画像データの値の信頼度が低いと判断し、その領域の距離画像データの値を無効にする。
この様にして、距離画像データの信頼度が低い部分に関しては、無効化処理を行い、結果として、信頼度の高い距離画像データ413を生成することができる。
【0053】
以上のように本実施形態では、複数の周波数のスリット光パターンであって、それぞれのエッジの位置が相互に重ならない501〜505を被写体601に投影したときのそれぞれの撮像画像から、スリット光パターンのエッジの部分を特定する。そして、2以上のスリット光パターンの撮像画像において、エッジの部分が重なる場合に、そのエッジに対応する位置の距離算出値の信頼度を低下させる。したがって、空間符号化法による被写体の三次元形状の計測を行うに際し、スリット光パターンの投影回数を増やすことなく、測定点におけるノイズの影響や間接光による影響がある箇所を、不正確な距離の演算が行われた箇所として認識することができる。よって、空間符号化法における物体の三次元形状の計測を高速に且つ高精度に行うことができる。
【0054】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第1の実施形態では、エッジ重なり値が2以上の領域に対応する距離画像データを無効にする場合を例に挙げて説明した。これに対し、本実施形態では、エッジ重なり値が2以上の場合には、スリット光パターンの最高周波数のビット数からエッジ重なり値を減算したビット数までのスリット光パターンを用いてグレイコードを構成し、距離画像データを生成する。このように、本実施形態と第1の実施形態とは、距離画像データの算出(又は採用)方法の一部が主として異なる。よって、本実施形態の説明において、第1の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0055】
本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410で算出されたエッジ重なり値を用いることで、第1の実施形態よりも、精度的は落ちるものの、より多くの場所での距離画像データを算出することを目的とする。すなわち、エッジ重なり値を次のように解釈することで、信頼性のある低周波数のスリット光パターンの投影結果も用いて距離計測を行う。
まず、エッジ重なり値が1の場合には、全ての周波数のスリット光パターンを用いて、グレイコードを構成し、距離演算を行う。
一方、エッジ重なり値が2以上の場合は、(スリット光パターンの最高周波数のビット数−エッジ重なり値)のビット数までのスリット光パターンを用いてグレイコードを構成し、距離演算を行う。
低周波数のスリット光パターンの方が高周波数のスリット光パターンよりも光量が多く、エッジ位置の算出にとって、高周波数のスリット光パターンによる演算結果よりも信号雑音比(S/N比)が高いためである。すなわち、エッジ重なり値が2以上であっても、その値がある程度小さい場合には、低周波数のスリット光パターンによる演算結果を相対的に多く使用し、その値が大きい場合には、低周波数のスリット光パターンによる演算結果を相対的に少なく使用する。
このようにすることによって、第1の実施形態と比較して、より多くの場所での距離画像データの算出が可能になる。
尚、距離値算出部411で全ての距離画像データを求め、高信頼度距離値算出部412が、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定し、判定結果に応じて、エッジ重なり値が2以上の距離算出値を求め直すようにしてもよい。
【0056】
(第3の実施形態)
次に、第3の実施形態について説明する。本実施形態では、エッジ重なり値が2以上であっても、サブピクセル精度で求めたエッジの位置が完全に一致していない場合には、その位置の距離画像データを算出(又は採用)する。このように、本実施形態と第1、第2の実施形態とは、距離画像データの算出(又は採用)方法の一部が主として異なる。よって、本実施形態の説明において、第1、第2の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0057】
本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410で算出されたエッジ重なり値と、サブピクセル演算部409で得られた、エッジの座標値(サブピクセル値)とを用いる。これにより、第1、第2の実施形態では算出されなかった高周波数のスリット光パターンの投影結果による距離画像データの算出が可能になる。
エッジ重なり値が2以上のエリア(画素)は、低周波数のスリット光パターンのエッジ位置と高周波数のスリット光パターンのエッジ位置とが、カメラ113の同一画素内に存在する状態であると考えられる。つまり、エッジ重なり値が2以上のエリア(画素)は、エッジ位置の分解能が、カメラ113の画素分解能よりも高い場合にも発生する。
この場合は、各周波数におけるスリット光パターンの輝度を用いて、サブピクセル演算部409によって、エッジ位置をサブピクセル精度で算出が可能である。そのため、カメラ113の画素単位よりも細かなエッジ位置を演算することが可能になる。
つまり、エッジ重なり値が2以上の場合、距離値算出部411は、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定する。この判定の結果、重なっているエッジ位置のサブピクセル値が一致していない場合、距離値算出部411は、当該エッジ位置に対応する被写体までの距離を算出する。このようにすることによって、第1、第2の実施形態よりも高精度な距離値の算出が可能になり、被写体の三次元形状をより高精度に求めることができる。
尚、距離値算出部411で全ての距離画像データを求め、高信頼度距離値算出部412が、重なっているエッジ位置のサブピクセル値が一致しているか否かを判定し、一致している場合、当該エッジ位置に対応する距離算出値をクリアしてもよい。
【0058】
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410のエッジ重なり値を用いることで、距離画像データ(距離値)を無効とするのではなく、第1の実施形態よりも精度的には落ちるものの距離画像データ(距離値)を算出する。このように本実施形態と第1〜第3の実施形態とは、距離画像データの算出方法の一部が主として異なる。よって、本実施形態の説明において、第1〜第3の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0059】
前述した第1の実施形態では、エッジ重なり算出部410によって算出されるエッジ重なり値が2以上の場合は、そのエッジ重なり値が2以上であるエッジに対応する位置の距離算出値が、信頼性のない距離計測値であるとして処理を行った。これに対し、本実施形態では、エッジ重なり値を、次のように解釈することで、信頼性のある低周波数のスリット光パターンの投影結果までを用いて距離計測を行う。
【0060】
(1)エッジ重なり値が1の場合には、全ての周波数の投影パターンを用いて、グレイコードを構成し、距離演算を行う。
(2)エッジ重なり値が2以上の場合には、(投影パターンの最高周波数のビット数−エッジ重なり値)のビット数までの結果の投影パターンを用いてグレイコードを構成し、距離演算を行う。
これは、低周波数のスリット光パターンの方が高周波数のスリット光パターンよりも光量が多く、エッジ位置の算出にとって、高周波数のスリット光パターンによる演算結果よりも信号雑音比(S/N比)がより高いためである。このような処理によって、第1の実施形態と比較して、より多くの場所での距離画像データの算出が可能になる。
【0061】
(第5の実施形態)
次に、本発明の第5の実施形態について説明する。本実施形態では、距離値算出部411の距離算出過程において、エッジ重なり算出部410のエッジ重なり値及びサブピクセル演算部409のエッジのサブピクセル値を用いる。このようにすることで、他の実施形態では算出されなかった高周波のスリット光パターンの投影結果による距離画像データの算出を行うことができる。このように本実施形態と第1〜第4の実施形態とは、距離画像データの算出方法の一部が主として異なる。よって、本実施形態の説明において、第1〜第4の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
【0062】
エッジ重なり値が2以上の画像ピクセルは、低周波数なスリット光パターンのエッジ位置と、高周波なスリット光パターンのエッジ位置とがカメラ113の同一画素内に存在する状態であると考えられる。つまり、エッジ位置の分解能が、カメラ113の画素分解能よりも高い場合にも発生する。このような場合には、各周波数におけるスリット光パターンの輝度を用いて、サブピクセル演算部409がサブピクセル処理を行うことによって、エッジ位置をサブピクセル精度で算出することが可能である。そのため、カメラ113の画素単位よりも細かなエッジ位置を演算することが可能になる。つまり、エッジ重なり値が2以上の場合は、距離値演算部411が、エッジ位置のサブピクセル値まで用いて、被写体までの距離計測を行うことによって、他の実施形態よりも高精度な距離値の算出が可能になる。
【0063】
尚、前述した各実施形態では、例えば、プロジェクタ112により投影手段の一例が実現され、カメラ113により撮像手段の一例が実現される。また、例えば、距離値算出部411により距離値算出手段の一例が実現され、エッジ算出部407によりエッジ位置検出手段の一例が実現される。また、エッジ重なり算出部410によりエッジ重なり度合い検出手段の一例が実現され、距離値算出部411により位置算出手段の一例が実現され、高信頼度距離値算出部412により信頼度算出手段の一例が実現される。
【0064】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0065】
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【0066】
100 計算処理部、112 プロジェクタ、113 カメラ
【特許請求の範囲】
【請求項1】
明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得手段と、
前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出手段と、
前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出手段と、
前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出手段と、を有することを特徴とする三次元位置計測装置。
【請求項2】
前記明暗の縞パターンは、グレイコードであることを特徴とする請求項1に記載の三次元位置計測装置。
【請求項3】
前記位置算出手段は、前記エッジ位置の重なり数が1の前記撮像画像の中の画素に基づき、前記被写体の位置を算出することを特徴とする請求項1又は2に記載の三次元位置計測装置。
【請求項4】
前記位置算出手段は、前記エッジ位置の重なり数が2以上の前記撮像画像の中の画素を、前記被写体の位置の算出には用いないことを特徴とする請求項1〜3の何れか1項に記載の三次元位置計測装置。
【請求項5】
前記エッジ位置検出手段は、前記エッジ位置の重なり数が2以上の場合、サブピクセル処理によって、前記明暗の縞パターンのエッジ位置を検出することを特徴とする請求項1〜3の何れか1項に記載の三次元位置計測装置。
【請求項6】
前記エッジ位置の重なり度合いに基づき、前記位置算出手段によって算出された前記被写体の位置の算出の信頼度を算出する信頼度算出手段を有することを特徴とする請求項1〜5の何れか1項に記載の三次元位置計測装置。
【請求項7】
前記信頼度算出手段は、前記信頼度が基準よりも低い前記位置を出力しないことを特徴とする請求項6に記載の三次元位置計測装置。
【請求項8】
前記信頼度算出手段は、前記信頼度に基づき、前記明暗の縞パターンの周波数を決定することを特徴とする請求項6に記載の三次元位置計測装置。
【請求項9】
取得手段が、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得工程と、
エッジ位置検出手段が、前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出工程と、
エッジ重なり度合い検出手段が、前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出工程と、
位置算出手段が、前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出工程と、を有することを特徴とする三次元位置計測方法。
【請求項10】
明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得工程と、
前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出工程と、
前記エッジ位置検出工程により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出工程と、
前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出工程と、をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項1】
明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得手段と、
前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出手段と、
前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出手段と、
前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出手段と、を有することを特徴とする三次元位置計測装置。
【請求項2】
前記明暗の縞パターンは、グレイコードであることを特徴とする請求項1に記載の三次元位置計測装置。
【請求項3】
前記位置算出手段は、前記エッジ位置の重なり数が1の前記撮像画像の中の画素に基づき、前記被写体の位置を算出することを特徴とする請求項1又は2に記載の三次元位置計測装置。
【請求項4】
前記位置算出手段は、前記エッジ位置の重なり数が2以上の前記撮像画像の中の画素を、前記被写体の位置の算出には用いないことを特徴とする請求項1〜3の何れか1項に記載の三次元位置計測装置。
【請求項5】
前記エッジ位置検出手段は、前記エッジ位置の重なり数が2以上の場合、サブピクセル処理によって、前記明暗の縞パターンのエッジ位置を検出することを特徴とする請求項1〜3の何れか1項に記載の三次元位置計測装置。
【請求項6】
前記エッジ位置の重なり度合いに基づき、前記位置算出手段によって算出された前記被写体の位置の算出の信頼度を算出する信頼度算出手段を有することを特徴とする請求項1〜5の何れか1項に記載の三次元位置計測装置。
【請求項7】
前記信頼度算出手段は、前記信頼度が基準よりも低い前記位置を出力しないことを特徴とする請求項6に記載の三次元位置計測装置。
【請求項8】
前記信頼度算出手段は、前記信頼度に基づき、前記明暗の縞パターンの周波数を決定することを特徴とする請求項6に記載の三次元位置計測装置。
【請求項9】
取得手段が、明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得工程と、
エッジ位置検出手段が、前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出工程と、
エッジ重なり度合い検出手段が、前記エッジ位置検出手段により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出工程と、
位置算出手段が、前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出工程と、を有することを特徴とする三次元位置計測方法。
【請求項10】
明暗の縞パターンを有するパターン光が投影された被写体の撮像画像を取得する取得工程と、
前記撮像画像の中の前記パターン光の明暗の境界を示すエッジ位置を検出するエッジ位置検出工程と、
前記エッジ位置検出工程により検出されたエッジ位置の重なり度合いを検出するエッジ重なり度合い検出工程と、
前記エッジ位置と、前記エッジ位置の重なり度合いとに基づき、前記被写体の位置を算出する位置算出工程と、をコンピュータに実行させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−63352(P2012−63352A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2011−176946(P2011−176946)
【出願日】平成23年8月12日(2011.8.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願日】平成23年8月12日(2011.8.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]