以下、この発明の実施の形態について図面を参照して詳細に説明する。
実施の形態1.
まず、この発明の実施の形態1について説明する。
図1には、3次元計測システム100の概略的な構成が示されている。図1に示すように、3次元計測システム100は、プロジェクタ1とカメラ2とコンピュータ3とを備える。プロジェクタ1は、投影光(構造化光)を計測対象物4に投影する投影部である。カメラ2は、その投影光(構造化光)により計測対象物4に投影された被投影パターン(投影像)を撮像する撮像部である。カメラ2とコンピュータ3との間は、通信ネットワークで接続されている。この通信ネットワークにより、カメラ2とコンピュータ3との間で画像データの送受信が可能となる。コンピュータ3は、カメラ2での撮像により得られた画像データに基づいて、計測対象物4の3次元形状(プロジェクタ1から見た計測対象物4の奥行き)を計測する計測部である。
図2には図1の3次元計測システム100の光学系の構成が示されている。図2に示すように、プロジェクタ1は、映像面11と投影光学系12と符号化開口13とを備える。光源から発せられた投影光は、映像面11を透過する。映像面11は、例えば透過型の液晶素子であり、映像面11には映像(2次元パターン)が表示されている。したがって、映像面11を透過した光は、映像面11に表示された映像の情報を含んだ光となる。この光は、投影光学系12に入射する。
投影光学系12は、入射した光を外部に投影する。投影光学系12は、屈折光学系であり、映像面11に表示された映像を結像面に結像させる。
投影光学系12の出射面には符号化開口13が装着されている。図3Aに示すように、符号化開口13には、符号パターン(符号化開口パターン)5が設けられている。符号パターン5は左右非対称なパターンである。投影光学系12を出射した光は、符号パターン5の開口部分を介してプロジェクタ1から出射される。符号パターン5では、図3Aに示す白の部分が光を透過させる。これにより、プロジェクタ1の出射光は、符号パターン5の形状の情報を含んだ光(構造化光)となる。
図2に戻り、投影光学系12の光軸AXに沿った座標軸dの原点を投影光学系12の中心とする。プロジェクタ1の出射光は、投影光学系12の光軸AXを中心としながら座標軸dの+d方向に進み、点dpで合焦する。プロジェクタ1の映像面11は、点dpとは結像関係にある。したがって、点dpにスクリーンを置くと、そのスクリーンには、映像面11に表示された映像が結像する。この結像位置が位置Bである。
一方、符号化開口13は、結像映像と畳み込みの関係にあり、フーリエ変換などでその性質を解析可能である。したがって、映像面11において点状の投影パターンを投影した場合、符号化開口13の符号パターン5は、点dp、すなわち合焦状態では点状のパターンとなり、デフォーカスするにつれて、符号パターン5の像が現れてくるようになる。この実施の形態に係る3次元計測システム100は、デフォーカス状態にある符号パターン5の画像データを処理することにより、投影光学系12により結像する投影パターン(2次元パターン)の結像位置dpを基準とする計測対象物4の光軸AXの方向(座標軸dの方向)の奥行きを計測する。符号パターン5の像を読み取りできる範囲は、位置Aと位置Cとの間であるため、計測対象物4の奥行きの探索範囲は、位置Aから位置Cまでの範囲Fとなる。図3Bに示すように、計測対象物4に投影される符号パターンの投影像(被投影パターン)は、座標軸dの方向(すなわち投影光学系12のフォーカス方向)の奥行きに応じて変化する。
この実施の形態では、映像面11に2種類の映像が表示される。図4Aに示す投影パターン11Aと図5Aに示す投影パターン11Bである。
図4Aに示すように、投影パターン11Aでは、複数の点状の第1投影パターンが4行4列の格子状に設けられている。この複数の第1投影パターンからなる符号パターン5を介した構造化光の投影により、計測対象物4には符号パターン5の像(第1被投影パターン)が形成される。図4Bには、符号化開口13Aにおけるフォーカス方向に関するパターン像の変化が示されている。図4Bに示すように、合焦位置Bにおいて、投影パターン11Aのパターン像は、4×4のほぼ点状のパターンとなるが、デフォーカス状態にある位置A、Cでは、符号パターン5の像が4行4列に並ぶ配列パターンとなる。
符号パターン5は非対称となっているため、−d方向にデフォーカスした位置Aと、+d方向にデフォーカスした位置Cとでは、符号パターン5の像が異なっている。このため、各符号パターン5の形状(ボケ状態)を解析すれば、被投影パターンがどちらの方向にどの程度デフォーカスしているのかを求めることができる。
前述のように、位置Aから位置Cまでが、投影光学系12のフォーカス方向に関する奥行きの探索範囲Fであるが、探索範囲Fにおいて、符号化開口13Aの符号パターン5を介した投影像では、符号パターン5の像が他の符号パターン5の像と干渉が少ないように、映像面11における投影パターン11Aは、疎な配置となっている。特に、全く干渉しないように配置すると、投影パターン11Aの配列密度は疎となるが、処理は安定する。コンピュータ3は、符号化開口13Aを介した構造化光の投影により計測対象物4に形成された複数の被投影パターン(孤立パターン)の画像データ(第1の画像データ)に基づいて、投影光学系12のフォーカス方向に関する各被投影パターンの奥行きの探索範囲を計測する。
図5Bに示すように、映像面11に表示された投影パターン11Bでは、複数の第2の点状パターンが7行7列の格子状に設けられている。すなわち、投影パターン11Bでは、点状パターンの配列密度が投影パターン11Aよりも密となっている。図5Bに示すように、合焦位置Bにおいて、投影パターン11Bの像は、7×7のドット状のパターンとなるが、デフォーカス状態にある位置A、Cでは、符号パターン5の像が7行7列に並ぶ配列パターンとなる。
符号パターン5は非対称となっているため、−d方向にデフォーカスした位置Aと、+d方向にデフォーカスした位置Cとでは、符号パターン5の像が異なっている。このため、各符号パターン5の形状(ボケ状態)を解析すれば、その被投影パターンがどちらの方向にどの程度デフォーカスしているのかを求めることができる点は、投影パターン11Aと同じである。
投影パターン11Bは、投影パターン11Aの符号パターンよりも、密に配列されているので、投影光学系12のフォーカス方向に関する奥行きの探索範囲F(位置A〜位置C)において、符号化開口13Bの符号パターン同士が大きく重なる区間が出てくる。
コンピュータ3では、投影パターン11Bを用いた構造化光の投影により計測対象物4に形成された被投影パターンの画像データ(第2の画像データ)に対し、投影光学系12のフォーカス方向に関して投影パターン11Aを用いて計測された奥行きの探索範囲に絞り込んで逆畳込み演算を行う。この逆畳込み演算により、複数の投影パターン11Bにそれぞれ対応する複数の復元パターンが形成される。コンピュータ3は、その演算により得られた復元パターンと投影パターン11Bとの類似度計算により、投影光学系12のフォーカス方向に関する各復元パターンの奥行きを計測する。
符号化開口13Aと符号化開口13Bとは、投影光学系12に選択的に装着される。その選択は手動によって行われてもよいし、自動的に、例えばコンピュータ3の制御により行われるようにしても良い。あるいは、カラーフィルタを用いて、別々の透過色として配置してもよい。また、その場合、投影パターンの色もそれに合わせて配色すると良い。選択的に装着した符号化開口13A、13Bを介した光は、前述のように、各符号パターン5の構造情報を含む構造化光となる。この構造光は投影光として計測対象物4(キャリブレーションの際には平面スクリーン)に投影される。
カメラ2は、構造化光により計測対象物4に投影された被投影パターンを撮像する。カメラ2は、光軸AX上に設置されていても、されていなくても良い。プロジェクタ1とカメラ2が同軸ではない場合、ハーフミラーなどを使用する必要がなく、より明るいパターンを計測することが出来る他、視差を利用した計測の高精度化がなされるというメリットがある。
コンピュータ3は、カメラ2での撮像により得られた画像データに基づいて、計測対象物4の3次元形状を計測する。上述のように、計測対象物4の各符号パターン5の像の形成状態は、座標軸dの位置に依存するため、計測対象物4の各符号パターン5の像の形成状態を画像解析することにより、計測対象物4のフォーカス方向の奥行きを求めることができる。
図1のコンピュータ3のハードウエア構成を示す図6に示すように、コンピュータ3は、制御部31、主記憶部32、外部記憶部33、操作部34、表示部35及び通信部36を備える。主記憶部32、外部記憶部33、操作部34、表示部35及び通信部36はいずれも内部バス30を介して制御部31に接続されている。
制御部31は、CPU(Central Processing Unit)等から構成されている。このCPUが、外部記憶部33に記憶されているプログラム39を実行することにより、図1に示すコンピュータ3の各構成要素が実現される。
主記憶部32は、RAM(Random-Access Memory)等から構成されている。主記憶部32には、外部記憶部33に記憶されているプログラム39がロードされる。この他、主記憶部32は、制御部31の作業領域(データの一時記憶領域)として用いられる。
外部記憶部33は、フラッシュメモリ、ハードディスク、DVD−RAM(Digital Versatile Disc Random-Access Memory)、DVD−RW(Digital Versatile Disc ReWritable)等の不揮発性メモリから構成される。外部記憶部33には、制御部31に実行させるためのプログラム39があらかじめ記憶されている。また、外部記憶部33は、制御部31の指示に従って、このプログラム39の実行の際に用いられるデータを制御部31に供給し、制御部31から供給されたデータを記憶する。
操作部34は、キーボード及びマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス30に接続するインターフェイス装置から構成されている。操作部34を介して、操作者が操作した内容に関する情報が制御部31に入力される。
表示部35は、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)などから構成され、操作者が操作情報を入力する場合は、操作用の画面が表示される。
通信部36は、シリアルインターフェイスまたはパラレルインターフェイスから構成されている。通信部36は、通信ネットワークを介してカメラ2と接続されており、カメラ2から画像データを受信する。
図1に示すコンピュータ3の各種構成要素は、図6に示すプログラム39が、制御部31、主記憶部32、外部記憶部33、操作部34、表示部35及び通信部36などをハードウエア資源として用いて実行されることによってその機能を発揮する。
図6に示すようなハードウエア構成を有するコンピュータ3は、その機能構成として、図7に示すように、記憶部40と、データ取得部41と、初期計測部42と、ファイン計測部43と、出力部44とを備える。
記憶部40は、図6に示すハードウエア構成のうち、外部記憶部33に対応する。記憶部40は、各種データ(画像データ50A、50B、ヒストグラムデータベース51、奥行き範囲データ52、スケールパラメータ53、奥行きデータ54)を記憶する。
データ取得部41は、図6に示すハードウエア構成のうち、制御部31、操作部34、通信部36に対応する。データ取得部41は、カメラ2から送信された画像データを、画像データ50A、50Bとして、記憶部40に記憶する。操作部34の操作入力により、カメラ2から送信された画像データを、画像データ50A、50Bのいずれかとして記憶部40に記憶する。
投影パターン11Aが投影され符号化開口13Aが投影光学系12に装着されている場合に、データ取得部41は、操作部34の操作入力により、カメラ2で撮像された画像データを画像データ50Aとして記憶部40に記憶する。すなわち、画像データ50Aは、符号化開口13Aを介した構造化光の投影により計測対象物4に形成された複数の孤立パターン(図4B参照)の第1の画像データである。
一方、投影パターン11Bが投影され符号化開口13Bが投影光学系12に装着されている場合に、データ取得部41は、操作部34の操作入力により、カメラ2で撮像された画像データを画像データ50Bとして記憶部40に記憶する。すなわち、画像データ50Bは、符号化開口13Bを介した構造化光の投影により計測対象物4上に形成された被投影パターンの第2の画像データである。
第1の計測部としての初期計測部42は、図6に示すハードウエア構成のうち、制御部31、主記憶部32及び操作部34に対応する。初期計測部42は、記憶部40に記憶された画像データ50Aに基づいて、初期計測を行う。初期計測部42は、記憶部40に記憶された画像データ50Aに基づいて、投影光学系12のフォーカス方向(座標軸dの方向)に関する各孤立パターンの奥行きの探索範囲を計測する。計測結果は、奥行き範囲データ52として記憶部40に記憶される。
より具体的には、初期計測部42は、画像データ50Aにおける各孤立パターンの画像特徴を抽出する。画像特徴としては、ローカル・バイナリ・パターン(LBP)又はローカル・ターナリ・パターン(LTP)が採用される。さらに、初期計測部42は、ヒストグラムデータベース51を参照して、抽出された画像特徴に対応する各孤立パターンの奥行きを求める。図8に示すように、各孤立パターンの奥行き(Depth1、Depth2、Depth3)とLBPのヒストグラムとの間には相関関係がある。奥行きが同じであれば、各孤立パターンのLBPのヒストグラムはほぼ同じとなる。
ここで、LBP及びLTPとは、画像データを、中心画素とその中心画素に隣接する8画素各々について、その大小関係を0又は1のバイナリデータとして並べた例えば8ビットのデータ列を各画素の画素値とした画像データ(LBP画像、LTP画像ともいう)である。LTPでは、バイナリデータではなく3値データになる。LBPのヒストグラムは、横軸をLBPの輝度値とし、縦軸をその輝度値を有する画素数としたものである。
ヒストグラムデータベース51には、図8に示すような各孤立パターンの画像データの画像特徴と、フォーカス方向に関する各孤立パターンの奥行きとが関連づけて登録されている。ヒストグラムデータベース51には、予め行われるキャリブレーションにより得られたデータが登録される。
初期計測部42は、図9に示すように、画像データ50Aに含まれる孤立パターンの画像データをLBP画像に変換し、変換されたLBP画像に基づいてLBPのヒストグラムを生成する。初期計測部42は、生成したヒストグラムと、ヒストグラムデータベース51に登録された複数のLBP画像(Depth1、Depth2、Depth3)のヒストグラムとをマッチングし、最も類似度の高いヒストグラムに対応する奥行きを、4×4の孤立パターン毎に求める。孤立パターン毎に求められた奥行きの探索範囲は、奥行き範囲データ52として記憶部40に記憶される。
第2の計測部としての高精度(ファイン)計測部43は、図6に示すハードウエア構成のうち、制御部31、主記憶部32及び操作部34に対応する。ファイン計測部43は、記憶部40に記憶された画像データ50Bに基づいて、計測対象物4の正確な奥行きの計測を行う。ファイン計測により、投影光学系12のフォーカス方向に関する画像データ50Bに含まれる被投影パターンの奥行きが計測される。計測は、逆畳込み演算を用いて行われる。
計測対象物4に投影される被投影パターンは、投影パターン11Bと点広がり関数(PSF)との畳込みにより形成される。PSFは、奥行きに応じて異なったものとなる。このため、被投影パターンに対して各奥行きに対応するPSFで逆畳込み演算を行った結果、得られる復元パターンが投影パターン11Bに最も近いときの奥行きが、その復元パターンに対応する奥行きということになる。
ファイン計測部43は、画像データ50Bに対して探索範囲内の複数のサンプリング位置で逆畳込み演算を行う。これにより、計測範囲内の複数のサンプリング位置に対応する逆畳込み演算後の画像データ(復元パターン)が得られる。
ただし、この実施の形態では、ファイン計測部43は、奥行き範囲データ52に含まれる奥行きの探索範囲(Fより小さい微小範囲)に絞りこんで、探索範囲内の複数のサンプリング位置で逆畳込み演算を行う。これにより、逆畳込み演算という計算量の多い複雑な演算の演算回数を著しく少なくすることができる。
この実施の形態では、符号パターンの像のボケ具合を積極的に利用して形状復元を行うため、そのボケ具合が必然的に大きくなることから、そのボケ具合を予めキャリブレーションしておく必要がある。収差を無視できる場合には、キャリブレーションするパラメータを、ボケの大きさ(スケール)Sに関するもののみとすることができる。
投影光学系12の光軸AX上に平面スクリーンを置いた場合、その平面スクリーン上に投影される点状パターンのボケの物理的な大きさyDは、次式で表される。
ここで、dは、座標軸d上の平面スクリーンの位置であり、y
aは、符号化開口13の開口径であり、d
pは、プロジェクタ1から投影される構造化光の合焦距離であり、d
aは、カメラ2から投影光学系12までの座標軸d方向に関する距離である。
ここで、投影像をカメラ2で撮影したとき、平面スクリーン上の点像のボケの大きさ(スケール)Sは、以下のように表される。
ここで、cがスケールパラメータである。スケールパラメータcは以下のようになる。
すなわち、スケールパラメータcと、平面スクリーンの位置dが決まれば、スケールSdが決まる。この実施の形態では、複数の既知の奥行きにおいて実際に観測したボケ画像を用いて、それぞれの奥行きにおけるスケールSdを獲得し、図10に示すように、スケールSdのフィッティングを行って正確なスケールパラメータcを求め、最終的に、スケールパラメータcに基づいて、奥行きdの関数であるスケールSdを求める。この方法は、必要な撮像画像が多くなるものの、現実に即したスケールパラメータcが直接得られ、カメラ2とプロジェクタ1との間のベースライン等のキャリブレーションも不要となる。スケールパラメータcは、スケールパラメータ53として記憶部40に記憶される。
ファイン計測部43は、図11に示すように、計測対象物4に符号化開口13Bを介して投影パターン11Bを投影し、キャリブレーションで得られたスケールパラメータcを用いて画像データ50Bの被投影パターンP2を複数の奥行きで(その奥行きのスケールSd)で逆畳込み演算して逆畳込み演算後のパターンP3〜P5を求める。ファイン計測部43は、投影パターン11Bに最も類似する復元パターン(パターンP3〜P5に含まれる各復元パターン)の奥行きdを、復元パターン毎に求める。逆畳込み演算を行うため、隣接する符号パターン5同士のボケが重なったような場合であっても、正しいスケールパラメータcで逆畳込み演算された場合には、それらは明確に分離され、各復元パターンの奥行きを安定して推定し、計測対象物4の3次元形状を正確に復元することが可能である。
ファイン計測部43は、スライディングウインドウ方式で画像データ50Bから抽出された部分画像データに対して逆畳込み演算を行う。図12に示すように、スライディングウインドウWは、画像データ50B上を左上から右に向かって順次スライドする。そして、それぞれの位置で、スライディングウインドウW内の画像データが抽出される。さらに、抽出された画像データに対して、上述の逆畳込み演算が行われ、画像データ内の被投影パターンの奥行きが算出される。スライディングウインドウWのスライド間隔は、スライド前の領域とスライド後の領域の一部が重なるようになっている。
ファイン計測部43では、スライディングウインドウW内の画像データに対して、逆畳込み演算が行われ、そのときの奥行きが算出される。スライディングウインドウWの横方向の走査が完了すると、スライディングウインドウWは、下方向及び左端にシフトする。そして、同様の処理が実行される。スライディングウインドウWの上下の間隔も、スライド前とスライド後とで一部が重なるようになっている。このようにして、画像データ50B全体のスライディングウインドウWの順次走査及び奥行きの推定が行われる。
図13に示すように、画像データ(Captured image)に対してスラインディングウインドウWで一部の画像データを抽出し、ハミング窓でフィルタリングしたものをスケールパラメータcに基づくカーネル(kernel)で逆畳込み演算する。そして、それぞれ逆畳込み演算された画像データを、ハミング窓を用いて他の画像データと統合(Intergration(Weighed sum))することにより、逆畳込み演算後の画像データ(Deconvolved image)を得る。
ファイン計測部43は、スライディング方式による逆畳込み演算により得られた復元パターンと投影パターン11Bとの類似度を計算し、投影光学系12のフォーカス方向に関する各復元パターンに対応する奥行きを計測する。類似度計算には、画像マッチングや、画像特徴量の比較を用いることができる。画像特徴量としては、ガウス関数のあてはめによる点らしさや、尖度などを用いることができる。
この実施の形態に係る3次元計測システム100では、カメラ2とプロジェクタ1とが同軸上にはない。したがって、図14に示すように、プロジェクタ1とカメラ2との間の視差により、プロジェクタ1及びカメラ2に近い平面(Near plane)上の点像(赤)と、遠い平面(Far plane)上の点像(緑)との射影ひずみが生じる。この射影ひずみは、逆畳込み演算に悪影響を及ぼす。そこで、この実施の形態では、スライディングウインドウ方式を採用すれば、演算を行う画像データの大きさを小さくすることができるので、この射影ひずみの影響を低減することができる。
ファイン計測部43は、逆畳込み演算を行うことにより得られた画像データに対して、グラフカット処理を行い、グラフカット処理が行われた画像データに含まれる復元パターンと投影パターン11B(オリジナルパターン)との類似度計算を行う。
グラフカット処理は、上述のエネルギEDを最小にする処理である。上述の式において、g(D
v)は、データコストであり、逆畳込み演算を行うことによりフォーカス方向に得られた複数の復元パターンと投影パターン11Bとの類似度を用いることができる。h(D
u,D
v)は、隣接する画素同士の輝度値の差分に相当する関数である。すなわち、グラフカット処理では、他の隣接画素と極端に輝度値が異なる画素について、エネルギEDが最小となるように、輝度値の修正が施される。図15には、4つの平面シートをそれぞれ異なる奥行きに設置した場合に得られる画像データが示されている。図15に示すように、このグラフカット処理により、画像データにおけるノイズ成分が低減され、画像データ全体が滑らかに調整される。
上述のように、この実施の形態では、図16に示すように、パターンが疎な投影パターン11Aを用いて、画像データ50A(Captured image with Coarse pattern)が撮像される。そして、初期計測部42により、画像データ50Aに含まれる複数の被投影パターン(孤立パターン)各々のLBPのヒストグラムと複数の奥行きの符号パターンのLBPのヒストグラムとの間のカイ二乗の距離(Chi-square distance)が求められて粗推定((a)Coarse estimation)が行われる。その結果、図16に示すようなグラフが求められ、奥行きの探索範囲(Estimated depth range in coarse estimation)が求められる。
そして、密な投影パターン11Bを用いて画像データ50B(Captured image with Dense pattern(patterns are overlapped each other))を撮像し、画像データ50Bにおける符号パターン5の像が互いに重なった被投影パターンに対して、求められた奥行きの探索範囲(Search depth range in dense estimation)で、各奥行きにおけるPSF(PSF for each depth)を用いて逆畳込み演算が行われる。そして、奥行きに対する元の投影パターン11B(オリジナルパターン)とのマッチングが行われて密推定((b)Dense estimation)が行われる。その結果、図16に示すようにグラフが求められ、各復元パターンに対応する奥行きが求められる。すなわち、この実施の形態では、粗推定と密推定とが段階的に行われる。この処理は、階層復元とも呼ばれる。
ファイン計測部43において、逆畳込み演算は、計測可能範囲F全体ではなく、奥行き範囲データ52の探索範囲(図16ではL1とL2)だけで行われる。これにより、逆畳込み演算の演算回数を著しく少なくすることができる。
出力部44は、図6に示すハードウエア構成のうち、制御部31、主記憶部32、操作部34及び表示部35に対応する。出力部44は、奥行きデータ54を表示する。
次に、3次元計測システム100の動作について説明する。
図17には、3次元計測システム100の3次元計測処理(メイン処理)が示されている。図17に示すように、まず、コンピュータ3は、キャリブレーションを行う(ステップS1)。
キャリブレーションでは、プロジェクタ1から出射された構造化光を投影する平面スクリーンが用いられる。図18に示すように、プロジェクタ1は、符号化開口13Aを投影光学系12に装着し、粗い投影パターン11Aを投影する(ステップS11)。続いて、平面スクリーンの位置(奥行き)が更新される(ステップS12)。ここでは、平面スクリーンが最初の位置に置かれる。最初の位置(平面スクリーンの奥行き)は、他の計測手段によって既知であるものとする。最初の位置は位置Aであるとする。続いて、カメラ2が、平面スクリーンに投影されたプロジェクタ1の投影像を撮像する(ステップS13)。これにより、撮像画像が、カメラ2からデータ取得部41を介して画像データ50Aとして記憶部40に記憶される。
続いて、初期計測部42は、撮像画像(画像データ50A)をLBP化する(ステップS14)。これにより、例えば図8に示すDepth1のLBP画像が生成される。続いて、初期計測部42は、LBP画像のヒストグラムを生成する(ステップS15)。これにより、例えば、Depth1でのLBP画像のヒストグラムが生成される。
初期計測部42は、奥行きと対応づけて生成されたヒストグラムをヒストグラムデータベース51に記憶する(ステップS16)。続いて、初期計測部42は、最後の位置であるか否かを判定する(ステップS17)。ここでは、位置Cが最後の位置であり、スクリーンの位置は、まだ位置Aであるので、判定は否定される。
最後の位置でなければ(ステップS17;No)、初期計測部42は、スクリーンの位置を更新する(ステップS12)。ここでは、位置AからΔdほど、+d方向にシフトされる。この後、投影像の撮像(ステップS13)、撮像画像のLBP化(ステップS14)、ヒストグラムの生成(ステップS15)、ヒストグラムデータベース51への登録(ステップS16)、最後の位置の判定(ステップS17)が繰り返される。このようにして、位置Aから位置Cまでの各位置について、一定のサンプリング間隔Δdで、LBP画像のヒストグラムが生成される。
最後の位置であると判定された場合(ステップS17;Yes)、図19に進み、プロジェクタ1の投影光学系12に符号化開口13Bを装着し、密に配列された投影パターン11B(密パターン)を投影する(ステップS21)。続いて、平面スクリーンの位置が更新される(ステップS22)。ここでは、平面スクリーンが位置Aに設定される。続いて、カメラ2は、投影像を撮像する(ステップS23)。
続いて、ファイン計測部43は、画像データ50Bに基づいて、その奥行きでのスケールSdを算出し、奥行きと対応づけて記憶部40に記憶する(ステップS24)。続いて、ファイン計測部43は、スクリーンが最後の位置であるか否かを判定する(ステップS25)。ここでは、位置Cが最後の位置であるとする。スクリーンの位置は、まだ位置Aであるので、判定は否定される。
最後の位置でなければ(ステップS25;No)、ファイン計測部43は、スクリーンの位置を更新する(ステップS22)。ここでは、位置AからΔdほど、+d方向にシフトされる。以降、投影像の撮像(ステップS23)、スケールSdの算出、記憶(ステップS24)、最後の位置の判定(ステップS25)が再び実行される。このようにして、位置Aから位置Cまでの各位置について、一定のサンプリング間隔Δdで、スケールSdが算出される。最後の位置であると判定された場合(ステップS25;Yes)、ファイン計測部43は、フィッティングを行って、スケールパラメータcを求める(ステップS26)。スケールパラメータcはスケールパラメータ53として記憶部40に記憶される。これにより、キャリブレーションが完了する。
図17に戻り、続いて、計測対象物4を、計測範囲F内に設置する(ステップS2)。これより、計測対象物4の3次元形状の計測が開始される。
続いて、初期計測部42は、初期計測を行う(ステップS3)。図20に示すように、プロジェクタ1は、投影光学系12に符号化開口13Aを装着して粗い投影パターン11Aを投影する(ステップS31)。続いて、カメラ2は、計測対象物4の投影像を撮像する(ステップS32)。これにより、カメラ2から画像データが送信され、データ取得部41は、この画像データを画像データ50Aとして記憶部40に記憶する。
続いて、初期計測部42は、画像データ50Aに含まれる各孤立パターンでのローカル・バイナリ・パターン(LBP)画像を生成する(ステップS33)。初期計測部42は、生成されたLBP画像のヒストグラムを生成する(ステップS34)。初期計測部42は、生成されたヒストグラムとヒストグラムデータベース51に登録された各奥行きでのヒストグラムとの類似度計算を行い(ステップS35)、最も近いLBPの奥行きの探索範囲を決定し、奥行き範囲データ52として、記憶部40に記憶する(ステップS36)。
続いて、初期計測部42は、すべてのパターンについて計測が完了したか否かを判定する(ステップS37)。まだ、すべてのパターンの計測が完了していなければ(ステップS37;No)、初期計測部42は、孤立パターンでのLBPの生成(ステップS33)、ヒストグラムの生成(ステップS34)、マッチング(ステップS35)、最も近いLBPの奥行きの探索範囲の決定(ステップS36)、すべてのパターン完了の判定(ステップS37)が繰り返される。すべてのパターンで、計測が完了し、奥行きの探索範囲が決定されると(ステップS37;Yes)、初期計測部42は初期計測を終了する。
図17に戻り、ファイン計測部43は、ファイン計測を行う(ステップS4)。図21に示すように、プロジェクタ1の投影光学系12に符号化開口13Bを装着し、計測対象物4に投影パターン11B(密パターン)を投影する(ステップS41)。続いて、カメラ2は投影像を撮像する(ステップS42)。これにより、カメラ2から画像データが送信され、データ取得部41は、この画像データを画像データ50Bとして記憶部40に記憶する。
続いて、ファイン計測部43は、奥行き設定を更新する(ステップS43)。ここで、奥行きは、奥行き範囲データ52に定められた探索範囲内で設定される。
ファイン計測部43は、スライディングウインドウ方式で、撮像された画像データ50Bに対して設定された奥行きの範囲で逆畳込み演算を行う(ステップS44)。ここでは、図13に示すような処理が行われ、逆畳込み演算後の画像データ(Deconvolved image)が求められる。
続いて、ファイン計測部43は、逆畳込み演算後の画像データに対してグラフカット処理を行う(ステップS45)。これにより、全体的にノイズ成分の少ない画像データが得られる。
続いて、ファイン計測部43は、逆畳込み演算により得られグラフカット処理が施された画像データに含まれる複数の復元パターン各々と、オリジナルの投影パターン11Bとの類似度を算出する(ステップS46)。
ファイン計測部43は、最後の位置であるか否かを判定する(ステップS47)。最後の位置でなければ(ステップS47;No)、ファイン計測部43は、奥行きの設定を更新する(ステップS43)。以降、最後の位置であると判定されるまで、ステップS43〜S47が繰り返される。
最後の奥行きであると判定されれば(ステップS47;Yes)、ファイン計測部43は、これまでに最も類似度が高い奥行きを探索し、探索された奥行きの集合を奥行きデータ54として記憶部40に記憶する(ステップS48)。この後、ファイン計測部43は、ファイン計測を終了する。
図17に戻り、ファイン計測が終了すると、3次元計測処理が終了する。求められた奥行きデータ54が、計測対象物4の3次元形状を示している。この3次元形状は、出力部44により表示出力される。
この3次元計測システム100の利用方法としては様々なものがある。計測時間が短縮されているため、図22には、この3次元計測システム100での計測対象物4の3次元形状の計測結果の一例が示されている。図22に示すように、動体の3次元計測、モーションジェスチャの認識などにも適用することができる。
以上詳細に説明したように、この実施の形態によれば、計測対象物4に形成された複数の疎な投影パターン11Aの画像データに基づいて、投影光学系12のフォーカス方向に関する各被投影パターンの奥行きの探索範囲を絞り込んでから、複数の密な投影パターン11Bの画像データに基づいて逆畳込み演算を行うことにより、各被投影パターンの奥行きを計測している。これにより、逆畳込み演算を行う範囲を、その奥行きを基準として限定された計測範囲内とするので、逆畳込み演算の演算回数を少なくすることができる。この結果、より計算量を低減しつつ、精度良く計測対象物4の3次元計測を行うことができる。
実施の形態2.
次に、この発明の実施の形態2について説明する。
図23に示すように、この実施の形態2に係る3次元計測システム100は、ハーフミラー60をさらに有する。3次元計測システム100は、カメラ2の光軸が、プロジェクタ1の投影光学系12の光軸AXと同軸に構成されている。プロジェクタ1から出射された投影光は、ハーフミラー60を透過して計測対象物4に投影される。計測対象物4での反射光は、ハーフミラー60で反射してカメラ2に至り、カメラ2にて計測対象物4の投影像が、撮像される。
このようにすれば、奥行きの変化による射影ひずみの発生を防止することができる。したがって、グラフカット処理及びスライディングウインドウ方式を採用しなくても精度良く計測対象物4の3次元形状を求めることができる。
実施の形態3.
次に、この発明の実施の形態3について説明する。
図24に示すように、この実施の形態2に係る3次元計測システム100は、2つのプロジェクタ1A、1Bを備える。プロジェクタ1A、1Bの構成は、プロジェクタ1と同じである。
プロジェクタ1Aの投影光学系12には、符号化開口13が装着されている。ただし、プロジェクタ1Aの投影光学系12に装着された符号化開口13は、第1の色としての赤色光を透過させる赤色フィルタである。プロジェクタ1Bの投影光学系12にも、符号化開口13が装着されている。ただし、プロジェクタ1Bの投影光学系12に装着された符号化開口13は、第2の色としての青色光を透過させる青色フィルタである。
プロジェクタ1Aから出射される赤色光は、ハーフミラー61を介して投影される。プロジェクタ1Bから出射される青色光は、ハーフミラー61を介して投影される。
カメラ2は、赤色光による画像と、青色光による画像とを別々に撮像可能なRGBカメラとなっている。RGBカメラは、構造化光により計測対象物4に投影された被投影パターンを色毎に撮像する。
赤色光と青色光とは波長が異なるため、合焦位置が異なる。すなわち、この3次元計測システム100では、投影部(プロジェクタ1A、1B)は、合焦位置がそれぞれ異なる複数色の構造化光を、計測対象物4に投影する。構造化光により計測対象物4に投影された被投影パターンを色毎に撮像する。コンピュータ3は、カメラ2での撮像により得られた各色の画像データのうち、符号パターン5の像を読み取り可能な画像データに基づいて、計測対象物4の3次元形状を計測する。
赤色光の合焦位置BF1近傍に被投影パターンが形成されている場合には、プロジェクタ1Bから出射される青色光による画像データを用いて、計測を行うようにすればよい。図24に示すように、赤色光の合焦位置BF1近傍では、赤色光による符号パターン5の像は、点像に近くなっており、青色光による符号パターン5の像を用いた方が、奥行きを精度良く求められるからである。また、青色光の合焦位置BF2近傍に被投影パターンが形成されている場合には、赤色光による画像データを用いて、計測を行うようにすればよい。青色光の合焦位置BF2近傍では、青色光による符号パターン5の像は、点像に近くなっており、赤色光による符号パターン5の像を用いた方が、奥行きを精度良く求められるからである。
なお、プロジェクタ1Aに投影される投影パターンを疎な投影パターン11Aとし、プロジェクタ11Bに投影される投影パターンを密な投影パターン11Bとしてもよい。この場合には、初期計測及びファイン計測を1回の撮像(1ショット)により行うことができる。
また、プロジェクタ1Bには、符号化開口13Bを装着しなくてもよい。本特許ではこれを開口パターンと呼ぶ。この場合、プロジェクタ1Bには、映像面11に、特定の空間周波数成分を有する周期パターンを表示させ、その周期パターンの映像を含む構造化光を投影させるようにする。そして、プロジェクタ1Aから出射される赤色光の画像データに基づいて初期計測を行い、プロジェクタ1Bから出射され映像として移し出されるパターンのボケ具合に基づいて、ファイン計測を行うようにしてもよい。高周波パターンは僅かなボケでもこれを高精度に計測することが出来るため、合焦位置付近ではボケ具合が少なくなる。このため、逆畳み込みによる奥行き推定精度が低くなる点を、効果的に補うことができる。
上記実施の形態1のような同軸落射方式でない3次元計測システムでは、スライディングウインドウ方式を用いて、奥行きの変化による被投影パターンの射影ひずみを解決した。しかし、プロジェクタとカメラとのベースラインが既知である場合には、奥行きの変化による被投影パターンの位置ずれ量を算出することができるので、カメラで撮像された画像データに含まれる被投影パターンの位置をベースラインに基づいて補正した上で、奥行きの推定を行うようにしてもよい。
また、上記各実施の形態では、ローカル・バイナリ・パターン(LBP)を画像特徴として、初期計測を行ったが、前述のように、ローカル・ターナリ・パターン(LTP)を画像特徴として、初期計測を行うようにしてもよい。
また、上記各実施の形態では、投影光学系12の出射側に符号化開口13を装着したが、投影光学系12の入射側に符号化開口13を装着するようにしてもよい。また、投影光学系12の内部に符号化開口13を組み込んでもよい。投影光学系12が複数のレンズより構成されている場合には、そのレンズ間に符号化開口13を装着するようにしてもよい。
符号パターン5も、図3Aに示すものには限られない。計測対象物4に非対称なパターンを形成できるものであればよい。
実施の形態4(ラインパターンとライン開口による手法).
次に、この発明の実施の形態4について説明する。
この実施の形態では、図25Aに示すように、コンピュータ3は、プロジェクタ1及びカメラ2に接続されている。コンピュータ3は、プロジェクタ1の映像面11に表示される画像データを出力する。図25Bに示すように、映像面11には、一方向(X軸方向)に空間周波数成分を有する2次元パターンが表示される。この2次元パターンは、縦(Y軸方向)に延びX軸方向に並ぶラインパターンから成るラインパターン群である。このラインパターンは、配列間隔及び線幅が不規則・ランダムであると、奥行き推定精度や安定さが増す効果がある。一方で、規則パターンであっても、開口パターンとの組合せにより、計測範囲内において同一パターンが生じない組合せも可能であることから、計算量の削減や装置作成の簡略化のために、規則パターンを用いることも可能である。計測対象物4には、この2次元パターンの投影光が、投影光学系12を介して投影される。
本実施の形態においても、カメラ2は、投影光が投影された計測対象物4を撮像する。プロジェクタ1の投影光学系12の光軸AXと、カメラ2の光軸とは非同軸に設定されている。カメラ2とプロジェクタ1とは、2次元パターンを構成するラインパターンの配列方向にずれている。これにより、プロジェクタ1とカメラ2との間には、投影像について視差が生じる。
この実施の形態では、図26Aに示すように、符号化開口13Cが用いられる。この符号化開口13Cの符号パターンは、映像面11に表示される2次元パターンと同じ方向(光学的に同じ方向;図26AのX軸方向)に配列されたライン状の開口パターンから成る。投影光は、この符号化開口13Cを介して計測対象物4に投影される。計測対象物4が、映像面11に対してデフォーカスしている場合には、図26Bに示すように、位置Aから位置Cまでの間に、その位置に応じて符号パターンの投影像が現れるようになっている。
投影光学系12により、映像面11の結像位置(図26Bの位置B)には、映像面11に表示された2次元パターンの像が結像する。この像は、映像面11に表示された2次元パターンと、符号化開口13Cの符号パターンとの畳込みにより形成される。図27に示すように、2次元パターンの投影像は、その結像位置(位置B)を中心に、デフォーカスするにつれて、変化する。3次元計測システム100は、この投影像の画像データを処理して、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の光軸AXの方向(座標軸dの方向)の奥行きを推定することにより、計測対象物4の3次元形状を計測する。
コンピュータ3は、その機能構成として、図28に示すように、投影パターン設定部46と、記憶部40と、データ取得部41と、奥行き推定部45と、出力部44と、を備える。
投影パターン設定部46は、プロジェクタ1の映像面11に表示される2次元パターンの画像データを出力する。これにより、プロジェクタ1の映像面11(透過型液晶開口)には、図25Bに示す2次元パターンが表示される。
データ取得部41は、カメラ2から送信された画像データを、リファレンス画像データ群70の画像データ又は計測対象画像データ71のいずれかとして、記憶部40に記憶する。リファレンス画像データ群70の画像データであるか、計測対象画像データ71であるかは、操作部34の操作入力により決定されてもよいし、プログラムで自動的に制御さるようにしてもよい。
リファレンス画像データ群70は、図29Aに示すように、投影光学系12の光軸AXに直交する2次元平面(平面スクリーン)を、光軸AXに関するd方向の複数の異なる位置にそれぞれ置いたときにカメラ2により撮像された2次元平面の参照画像データ群である。記憶部40は、このリファレンス画像データ群70を記憶する。
計測対象画像データ71は、カメラ2で撮像された計測対象物4の画像データである。例えば、図29Bに示すように、計測対象物4が2つのボールである場合、この2つのボールに2次元パターンの投影像が投影される。この場合、図29Cに示すような画像データがカメラ2で撮像される。計測対象物4には、映像面11に表示された2次元パターンの投影像(X軸方向に並ぶラインパターンから成る2次元パターンの像)が投影される。この画像データが、計測対象画像データ71として記憶部40に記憶される。
奥行き推定部45は、カメラ2で撮像された計測対象物4の画像データ(計測対象画像データ71)と、記憶部40に記憶されたリファレンス画像データ群70との間でマッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置(位置B)を基準とする計測対象物4の奥行きを推定する。図29Cには、計測対象画像データ71内に設定されるマッチング窓MWが示されている。また、図29Aには、図29Cのマッチング窓MWに対応するマッチング窓MWが示されている。マッチング窓MWは、カメラ2で撮像された計測対象物4の画像データに含まれる2次元パターンの配列方向(X軸方向)を長手方向とする矩形状の窓である。投影される2次元パターンは、X軸方向に並ぶラインパターンであるため、X軸方向に奥行きを求めるための情報を有しているので、X軸方向に長いマッチング窓MWを用いた方がマッチング精度を向上することができるためである。
次に、3次元計測システム100の動作について説明する。
図30に示すように、まず、コンピュータ3は、キャリブレーションを行う(ステップS51)。
キャリブレーションでは、プロジェクタ1から出射された投影光を投影する平面スクリーンが用いられる。図31に示すように、プロジェクタ1に、符号化開口13Cを装着し、投影パターン設定部46から2次元パターンの画像データを映像面11に出力して、コンピュータ3が、プロジェクタ1に、図25Bに示す2次元パターンの投影像を投影させる(ステップS61)。続いて、平面スクリーンの位置(奥行き)が更新される(ステップS62)。ここでは、平面スクリーンが最初の位置に置かれる。最初の位置(平面スクリーンの奥行き)は、他の計測手段によって既知であるものとする。最初の位置は位置Aである。
続いて、カメラ2が、平面スクリーンに投影されたプロジェクタ1の投影像を撮像する(ステップS63)。この撮像により得られた画像データは、カメラ2からデータ取得部41に送られ、データ取得部41は、この画像データを、リファレンス画像データ群70の中の1枚の画像データとして記憶部40に記憶する(ステップS64)。このとき、この画像データは、そのときの平面スクリーンの奥行きと対応づけて記憶される。
続いて、コンピュータ3は、平面スクリーンの位置が、最後の位置であるか否かを判定する(ステップS65)。ここでは、位置Cが最後の位置であり、平面スクリーンの位置は、まだ位置Aであるので、判定は否定される。
最後の位置でなければ(ステップS65;No)、平面スクリーンの位置が更新される(ステップS62)。ここでは、位置AからΔdほど、+d方向にシフトされる。この後、最後の位置となるまで(ステップS65;Yes)、スクリーンの位置の更新(ステップS62)、投影像の撮像(ステップS63)、画像データの記憶(ステップS64)、最後の位置の判定(ステップS65)が繰り返される。このようにして、位置Aから位置Cまでの各位置について、一定のサンプリング間隔Δdで、参照用の画像データが生成され、リファレンス画像データ群70の1枚の画像データとして奥行きに対応づけられて、記憶部40に記憶される。
最後の位置であると判定された場合(ステップS65;Yes)、キャリブレーションが完了する。
図30に戻り、続いて、計測対象物4が、計測範囲F内に設置される(ステップS52)。続いて、コンピュータ3は、計測対象物4の奥行き計測を行う(ステップS53)。
ステップS52では、まず、図32に示すように、プロジェクタ1に2次元パターンの投影像を投影する(ステップS71)。続いて、コンピュータ3は、カメラ2に計測対象物4に投影された投影像を撮像させる(ステップS72)。カメラ2の撮像による計測対象物4の画像データは、コンピュータ3に送られる。コンピュータ3のデータ取得部41は、この投影像の画像データを計測対象画像データ71として記憶する(ステップS73)。
続いて、奥行き推定部45は、計測対象画像データ71を読み込む(ステップS74)。奥行き推定部45は、計測対象画像データ71にマッチング窓MWを設定する(ステップS75)。ここで、例えば図33に示すように、計測対象画像データ71の左上端に、マッチング窓MWが設定される。
続いて、奥行き推定部45は、リファレンス画像データ群70の中から1枚の参照画像データを読み込む(ステップS76)。続いて、奥行き推定部45は、計測対象物4の画像データと読み込まれた参照画像データとの間のマッチング窓MWにおける相関値を算出する(ステップS77)。ここでは、計測対象画像データ71におけるマッチング窓MWの領域と、参照画像データにおける同一の位置にあるマッチング窓MWの領域との画像マッチングが行われ、両画像の一致度が相関値として算出される。
続いて、奥行き推定部45は、読み込んだ参照画像データが、最後の参照画像データであるか否かを判定する(ステップS78)。最後の参照画像データでない場合(ステップS78;No)、奥行き推定部45は、次の参照画像データの読み込み(ステップS76)、相関値の算出(ステップS77)、最後の参照画像データの判定(ステップS78)、を繰り返し行う。
最後の参照画像データである場合(ステップS78;Yes)、奥行き推定部45は、奥行きdtを推定する(ステップS79)。例えば、図34に示すように、奥行き推定部45は、各参照画像データに対応する奥行きに対する相関値の変化を示すグラフを生成する。さらに、奥行き推定部45は、フィッティングによる補間で、マッチング窓MW内の奥行きdtを推定する。
続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、画像データ内のすべての位置で完了したか否かを判定する(ステップS80)。推定が完了していなければ(ステップS80;No)、奥行き推定部45は、マッチング窓MWを画像データ内の他の場所に設定し(ステップS75)、参照画像データ群70から参照画像データを読み込んで(ステップS76)、計測対象画像データ71と参照画像データとのマッチング窓MW内での相関値を算出する(ステップS77)処理を、最後の参照画像データとなる(ステップS78;Yes)まで繰り返す。
最後の参照画像データまで達すると(ステップS78;Yes)、奥行き推定部45は、前回と同様にして、計測対象物4の奥行きを推定する(ステップS79)。続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、計測対象画像データ71内のすべての位置で完了したか否かを判定する(ステップS80)。推定が完了していなければ(ステップS80;No)、奥行き推定部45は、再びステップS75→S76→S77→S78を実行し、そのマッチング窓MWでの各奥行きの参照画像データとの画像マッチングを行って、その相関値を求める。最後の参照画像データまで読み込むと(ステップS78;Yes)、奥行き推定部45は、そのマッチング窓MWの部分における奥行きを推定する(ステップS79)。
このようにして、マッチング窓MWが画像データ内を移動しつつ、そのマッチング窓MWの部分における奥行きが推定される。推定が完了すると(ステップS80;Yes)、奥行き推定部45は、奥行き計測を完了する。推定された奥行きは、奥行きデータ74として記憶部40に記憶され、出力部44から表示出力される。
以上詳細に説明したように、この実施の形態によれば、X軸方向にラインパターンが不規則に配列された2次元パターンが、そのパターンと同じ方向にライン状に並ぶ開口パターンの符号化開口13Cを介して計測対象物4に投影される。これにより、計測対象物4に投影される投影像は、2次元パターンと符号化開口13Cの開口パターンとの畳込みにより形成される像となり、計測対象物4の奥行きの変化に対してパターンの変化が大きい画像となる。このため、計測対象物4の奥行き分解能を向上することができる。この時、それぞれのパターンはインパルス列であるため、畳み込み後のパターンもインパルス列となり、ボケることがない。このため、奥行き方向が大きく変化してもパターンがボケず、計測レンジが飛躍的に向上するというメリットが生まれる。
また、計測対象物4の奥行きは、すでに撮像されたリファレンス画像データ群70との画像マッチングにより推定される。したがって、計測対象物4の奥行きを推定するのに符号化開口13Cの開口パターンによる逆畳込み演算などの複雑な演算を行う必要がなくなる上、DfD法とステレオ法とを融合した高精度な計測が可能となる。すなわち、この実施の形態によれば、より計算量を低減しつつ、精度良く計測対象物4の3次元計測を行うことができる。
また、本実施の形態によれば、予め2次元平面に対して投影光学系12を介して投影された2次元パターンの投影像がカメラ2で撮像されて得られる画像データと、2次元平面の参照画像データ群との画像マッチングにより、計測対象物4の奥行きが推定される。このため、投影される投影像のデフォーカスのみならず、プロジェクタ1とカメラ2との間の視差、投影光学系12の収差、カメラ2の光学系の収差の影響をすべて加味した状態で、計測対象物4の奥行きを高精度に推定することができる。
実施の形態5(斜め形状の推定).
次に、この発明の実施の形態5について説明する。
図35に示すように、上記実施の形態では、コンピュータ3が、仮想斜面画像作成部48を備える。仮想斜面画像作成部48は、投影光学系12の光軸AXに直交する2次元平面を、光軸AXに関する複数の異なる位置にそれぞれ置いたときにカメラ2により撮像される2次元平面の参照画像データ(リファレンス画像データ群70の参照画像データ)の各部分を合成する。この合成により、光軸AXに対して複数の異なる角度でそれぞれ置いたときに得られるリファレンス斜面画像データ群72が生成される。
記憶部40は、投影される2次元パターンを構成するラインパターンの配列方向に沿って奥行きが変わるように、投影光学系12の光軸AXに斜交する2次元平面を、光軸AXに対して複数の異なる角度でそれぞれ置いたときに得られる2次元平面の参照画像データ群をリファレンス斜面画像データ群72として記憶する。奥行き推定部45は、カメラ2で撮像された計測対象物4の画像データと、記憶部40に記憶されたリファレンス斜面画像データ群72との間でマッチング窓MWを用いた画像マッチングも行う。これにより、投影光学系12による映像面11の2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
図36Aには、仮想斜面の生成方法が模式的に示されている。仮想斜面は、以下の数式に従って生成される。
ここで、Dは奥行きであり、Xは、投影光学系12の光軸AXに直交する平面における空間周波数成分を有する方向の座標である。また、θは平面の回転角度であり、fはカメラ2の焦点距離であり、D
pivotは、回転方向の奥行き、すなわち仮想斜面の空間周波数成分を有する方向の位置である。この式によれば、仮想斜面の奥行きD
pivotの位置には、奥行きDの画像データのX位置の部分データが配置される。
この実施の形態では、上記実施の形態4と同様に、図30、図32に示すフローチャートに従って、3次元計測処理が実行される。ステップS51のキャブレーションについては、図37のフローチャートに従って実行される。このキャリブレーションは、図31に示すキャリブレーションとほぼ同じであるが、仮想斜面画像作成部48が、最後に、リファレンス画像データ群70に基づいて、リファレンス斜面画像データ群72を生成する(ステップS66)点が異なる。ここで、例えば、回転角度θ=30度、45度、60度等の仮想斜面の画像データが生成され、リファレンス斜面画像データ群72として記憶部40に記憶される。
また、ステップS53(図30)の奥行き計測では、図32のステップS76→S77→S78の繰り返しにおいて、奥行き推定部45は、リファレンス画像データ群70だけでなく、リファレンス斜面画像データ群72の参照斜面画像データと、計測対象画像データ71との画像マッチングも行って両者の相関値を算出する。ステップS79において、マッチング窓MWの画像データが、参照斜面画像データと最も相関値が高かった場合には、奥行き推定部45は、その仮想斜面を用いて奥行きを推定する。
図36Bに示すような計測対象物4の画像データに対して、投影光学系12の光軸AXに直交する2次元平面の参照画像データの画像マッチングのみ行う場合、図36Cの矢印で示すように、計測対象物4と背景との境界については推定される奥行きが不安定になる場合がある。
これに対して、投影光学系12の光軸AXに直交する2次元平面の参照画像データの画像マッチングに加え、リファレンス斜面画像データ群72との画像マッチングも行った場合には、図36Dの計測対象物4の斜面の法線を表す法線マップに示すように、計測対象物4の斜面との画像マッチングが可能となるので、球状の物体の輪郭周辺の斜面をより正確に表現することができるようになる。このため、図36Eに示すように、計測対象物4の奥行きを高精度に推定することができるようになる。
実施の形態5’(シミュレーション演算によるデータベースの作成).
次に、この発明の実施の形態5’について説明する。
この実施の形態では、参照画像データ群を実際に撮影する代わりに、コンピュータ3(演算部)が、2次元パターンの情報及び開口パターンの情報、さらにプロジェクタの内部パラメータ(焦点距離やピクセルの縦横比、歪みなど)や、カメラの内部パラメータの情報を用いて、計算により参照画像データを生成することで、奥行き推定を行う。これにより、膨大な参照画像データを撮影する必要がなくなり、そのデータを蓄えておく必要も無くなるというメリットが得られる。上記のパラメータ情報は、プロジェクタとカメラのキャリブレーションを事前に行うことで推定しておく。
実施の形態6(色によるCoarse−to−fine).
次に、この発明の実施の形態6について説明する。
この実施の形態では、計測対象物4の奥行きを粗く計測し、粗く求められた奥行きに基づいて、奥行きの計測範囲を狭くしてから、その奥行きを精細に計測する、いわゆるCoarse−to−fine計測が行われる。この実施の形態では、プロジェクタ1の映像面11(透過型液晶)にはR(赤色)、G(緑色)、B(青色)から成るカラー映像が表示されるものとし、カメラ2は、R(赤色)、G(緑色)、B(青色)から成るカラー画像データを撮像するものとする。一般的に、カラー画像データは、赤色、緑色、青色の画像データに分離抽出することが可能である。ここでも、プロジェクタ1には、符号化開口13Cが用いられる。
コンピュータ3は、その機能構成として、図38に示すように、投影パターン設定部46と、色画像分割部47と、記憶部40と、奥行き推定部45と、出力部44と、を備える。
投影パターン設定部46は、プロジェクタ1の映像面11に表示される2次元パターンの画像データを出力する。ここでは、図39Aに示す青色の2次元パターンと、図39Bに示す赤色の2次元パターンとが合成された画像が表示される。図39Aに示すように、青色の2次元パターンは、一方向(X軸方向)にラインパターンが並ぶ、配列周期の長いラインパターン群である。また、図39Bに示すように、赤色の2次元パターンは、青色の2次元パターンと同じ方向に、青色の2次元パターンよりも周期の短い(空間周波数成分が高い)ラインパターン群である。
色画像分割部47は、カメラ2で撮像されたカラー画像データを入力する。色画像分割部47は、カラー画像から得られた赤色(R)の画像データを、リファレンスR画像データ群70A又は計測対象R画像データ71Aとして記憶部40に格納する。さらに、色画像分割部47は、カラー画像から得られた青色の画像データを、リファレンスB画像データ群70C又は計測対象B画像データ71Cとして記憶部40に格納する。推定された奥行きは、粗奥行きデータ75として記憶部40に記憶される。上述のように、青色の2次元パターンの空間周波数は、赤色の2次元パターンよりも低いため、青色の参照画像データが撮像される間隔Δd1は、赤色のパターンでの間隔Δd2よりも大きくなる。
記憶部40は、Δd1で、投影光学系12の光軸AXに関する複数の異なる位置にそれぞれ置いたときにカメラ2により撮像された青色の参照画像データ群(リファレンスB画像データ群70C)と、Δd1よりも短いΔd2で、光軸AXに関する複数の異なる位置にそれぞれ置いたときにカメラ2により撮像された赤色の参照画像データ群(リファレンスR画像データ群70A)と、を記憶する。
奥行き推定部45は、計測対象B画像データ71Cと、リファレンスB画像データ群70Cとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。推定された奥行きは、粗奥行きデータ75として記憶部40に記憶される。
奥行き推定部45は、粗奥行きデータ75に記憶された奥行きを中心とする限定された範囲で、カメラ2で撮像された計測対象物4の画像データから得られる計測対象R画像データ71Aと記憶部40に記憶された赤色のリファレンスR画像データ群70Aとの間でマッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
この実施の形態に係る3次元計測システム100の3次元計測処理は、図30のフローチャートで示す処理と同じ処理が行われる。キャリブレーション(ステップS51)においては、基本的には、図31に示す流れで処理が行われるが、ステップS64においては、色画像分割部47が、カメラ2から送られたカラー画像データから、赤色の画像データを抽出して、リファレンスR画像データ群70Aの1つの画像データとして、記憶部40に記憶する。また、色画像分割部47は、カメラ2から送られたカラー画像データから、青色の画像データを抽出して、リファレンスB画像データ群70Cの1つの画像データとして、記憶部40に記憶する。
奥行き計測(ステップS53)で行われる処理は、図40、図41に示されている。
ステップS52では、まず、図40に示すように、プロジェクタ1に2次元パターンの投影像を投影する(ステップS71)。続いて、コンピュータ3は、カメラ2に計測対象物4に投影された投影像を撮像させる(ステップS72)。カメラ2の撮像による計測対象物4のカラー画像データは、コンピュータ3に送られる。コンピュータ3の色画像分割部47は、この投影像のカラー画像データから抽出された赤色の画像データを、計測対象R画像データ71Aとして記憶し、カラー画像データから抽出された青色の画像データを、計測対象B画像データ71Cとして記憶する(ステップS73)。
続いて、奥行き推定部45は、計測対象B画像データ71Cを読み込む(ステップS74)。奥行き推定部45は、計測対象B画像データ71Cにマッチング窓MWを設定する(ステップS75)。
続いて、奥行き推定部45は、リファレンスB画像データ群70Cの中から1枚の参照画像データを読み込む(ステップS76)。続いて、奥行き推定部45は、計測対象物4の計測対象B画像データ71Cと、読み込まれた参照画像データとの間のマッチング窓MWにおける相関値を算出する(ステップS77)。ここでは、計測対象B画像データ71Cにおけるマッチング窓MWの領域と、参照画像データにおける同一の位置にあるマッチング窓MWの領域との画像マッチングが行われ、両画像の一致度が相関値として算出される。
続いて、奥行き推定部45は、読み込んだ参照画像データが、最後の参照画像データであるか否かを判定する(ステップS78)。最後の参照画像データでない場合(ステップS78;No)、奥行き推定部45は、リファレンスB画像データ群70Cから次の参照画像データの読み込み(ステップS76)、相関値の算出(ステップS77)、最後の参照画像データの判定(ステップS78)を繰り返し行う。
最後の参照画像データである場合(ステップS78;Yes)、奥行き推定部45は、奥行きを推定する(ステップS79)。図42には、奥行き推定部45において求められた奥行きに対する相関値の変化を示すグラフが示されている。図42では、青色の画像データにおける奥行きと相関値との関係が、点(Coarse)で示されている。奥行き推定部45は、奥行きに対する相関値の変化に基づいて、計測対象物4の奥行きの候補を幾つか抽出する。図42の例では、相関値が1.0となる点が、3点抽出されるようになる。
続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、画像データ内のすべての位置で完了したか否かを判定する(ステップS80)。推定が完了していなければ(ステップS80;No)、奥行き推定部45は、マッチング窓MWを画像データ内の他の場所に設定し(ステップS75)、リファレンスB画像データ群70Cから参照画像データを読み込んで(ステップS76)、計測対象B画像データ71Cと参照画像データとのマッチング窓MW内での相関値を算出する(ステップS77)処理を、最後の参照画像データとなる(ステップS78;Yes)まで繰り返す。
最後の参照画像データまで達すると(ステップS78;Yes)、奥行き推定部45は、前回と同様にして、計測対象物4の奥行きを推定する(ステップS79)。続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、計測対象B画像データ71C内のすべての位置で完了したか否かを判定する(ステップS80)。推定が完了していなければ(ステップS80;No)、奥行き推定部45は、再びステップS75→S76→S77→S78を実行し、そのマッチング窓MWでの各奥行きの参照画像データとの画像マッチングを行って、その相関値を求める。最後の参照画像データまで読み込むと(ステップS78;Yes)、奥行き推定部45は、そのマッチング窓MWの部分における奥行きを推定する(ステップS79)。
このようにして、マッチング窓MWが計測対象B画像データ71C内を移動しつつ、そのマッチング窓MWの部分における奥行きが推定される。推定が完了すると(ステップS80;Yes)、奥行き推定部45は、推定結果を、粗奥行きデータ75として、記憶部40に記憶する(ステップS81)。
続いて、奥行き推定部45は、図41に示すように、奥行きの探索範囲を決定する(ステップS82)。例えば、図42に示すように、計測対象B画像データ71Cで画像マッチングを行ったときの相関値が1.0となった奥行きを中心に、相関値が0.5以上である範囲A、B、Cの範囲に探索範囲を限定する。
続いて、奥行き推定部45は、計測対象R画像データ71Aを読み込む(ステップS83)。奥行き推定部45は、計測対象R画像データ71Aにマッチング窓MWを設定する(ステップS84)。
続いて、奥行き推定部45は、リファレンスR画像データ群70Aの中から1枚の参照画像データを読み込む(ステップS85)。続いて、奥行き推定部45は、計測対象物4の計測対象R画像データ71Aと、読み込まれた参照画像データとの間のマッチング窓MWにおける相関値を算出する(ステップS86)。ここでは、計測対象R画像データ71Aにおけるマッチング窓MWの領域と、参照画像データにおける同一の位置にあるマッチング窓MWの領域との画像マッチングが行われ、両画像の一致度が相関値として算出される。
続いて、奥行き推定部45は、読み込んだ参照画像データが、最後の参照画像データであるか否かを判定する(ステップS87)。最後の参照画像データでない場合(ステップS87;No)、奥行き推定部45は、リファレンスR画像データ群70Aから次の参照画像データの読み込み(ステップS85)、相関値の算出(ステップS86)、最後の参照画像データの判定(ステップS87)を繰り返し行う。
最後の参照画像データである場合(ステップS87;Yes)、奥行き推定部45は、奥行きを推定する(ステップS88)。例えば、図42に示すように、奥行き推定部45は、各参照画像データに対応する奥行きに対する相関値の変化を示すグラフを生成する。図42では、赤色の画像データによる推定結果は、曲線(fine)で示されている。
続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、画像データ内のすべての位置で完了したか否かを判定する(ステップS89)。推定が完了していなければ(ステップS89;No)、奥行き推定部45は、マッチング窓MWを画像データ内の他の場所に設定し(ステップS84)、リファレンスR画像データ群70Aから参照画像データを読み込んで(ステップS85)、計測対象R画像データ71Aと参照画像データとのマッチング窓MW内での相関値を算出する(ステップS86)処理を、最後の参照画像データとなる(ステップS87;Yes)まで繰り返す。
最後の参照画像データまで達すると(ステップS87;Yes)、奥行き推定部45は、前回と同様にして、計測対象物4の奥行きを推定する(ステップS88)。続いて、奥行き推定部45は、マッチング窓MWによる奥行きの推定が、計測対象R画像データ71A内のすべての位置で完了したか否かを判定する(ステップS89)。推定が完了していなければ(ステップS89;No)、奥行き推定部45は、再びステップS84→S85→S86→S87を実行し、そのマッチング窓MWでの各奥行きの参照画像データとの画像マッチングを行って、その相関値を求める。最後の参照画像データまで読み込むと(ステップS87;Yes)、奥行き推定部45は、そのマッチング窓MWの部分における奥行きを推定する(ステップS88)。例えば、図42のグラフでは、範囲Bにあるピークの奥行きが、最終的な奥行きとして推定される。
このようにして、マッチング窓MWが計測対象R画像データ71A内を移動しつつ、そのマッチング窓MWの部分における奥行きが推定される。推定が完了すると(ステップS89;Yes)、奥行き推定部45は、推定結果を、ファイン奥行きデータ76として、記憶部40に記憶する(ステップS90)。奥行き推定部45は、奥行き計測を完了する。ファイン奥行きデータ76は、記憶部40に記憶され、出力部44から表示出力される。
この実施の形態によれば、空間周波数が低く、サンプリング間隔が長いがラインパターン群(青色の2次元パターン)で計測対象物4の奥行きをおおまかに検出してから、探索範囲を絞って、空間周波数が高くサンプリング間隔が短いラインパターン群(赤色の2次元パターン)で計測対象物4の奥行きを精細に推定する。これにより、より計算量を低減しつつ、精度良く計測対象物の3次元計測を行うことができる。
実施の形態7(3色による曖昧性減少による精度向上).
次に、この発明の実施の形態7について説明する。
この実施の形態では、プロジェクタ1の映像面11にはカラー画像が表示され、投影像もカラーの投影像となる。カメラ2は、投影像のカラー画像データを撮像する。このカラー画像データは、赤色、緑色、青色の画像データに分離可能である。このコンピュータ3は、カラー画像から分割される、赤色、緑色、青色の画像データに基づいて、それぞれ画像マッチングを行うことにより、計測対象物4の奥行きを推定する。
コンピュータ3は、その機能構成として、図43に示すように、投影パターン設定部46と、色画像分割部47と、記憶部40と、奥行き推定部45と、出力部44と、を備える。
投影パターン設定部46は、プロジェクタ1の映像面11に表示される2次元パターンを出力する。ここでは、図44Aに示す赤色の2次元パターンと、図44Bに示す緑色のパターンと、図44Cに示す青色のパターンと、が合成された画像が表示される。図44Aに示すように、赤色の2次元パターンは、一方向(X軸方向)に並ぶラインパターン群から成るラインパターン群である。また、図44Bに示すように、緑色の2次元パターンは、赤色の2次元パターンと同程度の高さを有し、かつ、赤色の2次元パターンとは異なるパターンである。さらに、図44Cに示すように、青色の2次元パターンは、赤色、緑色の2次元パターンと同程度の高さを有し、かつ、赤色、緑色の2次元パターンとは異なるパターンである。
色画像分割部47は、カメラ2で撮像されたカラー画像データを入力する。色画像分割部47は、カラー画像データから抽出された赤色の画像データを、リファレンスR画像データ群70A又は計測対象R画像データ71Aとして記憶部40に格納する。また、色画像分割部47は、カラー画像データから抽出された緑色の画像データを、リファレンスG画像データ群70B又は計測対象G画像データ71Bとして記憶部40に格納する。さらに、色画像分割部47は、カラー画像データから抽出された青色の画像データを、リファレンスB画像データ群70C又は計測対象B画像データ71Cとして記憶部40に格納する。
奥行き推定部45は、計測対象R画像データ71Aと、リファレンスR画像データ群70Aとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
また、奥行き推定部45は、計測対象G画像データ71Bと、計測対象G画像データ70Bとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
また、奥行き推定部45は、計測対象B画像データ71Cと、計測対象B画像データ70Cとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
この実施の形態では、各色の画像データに対して、それぞれ図30、図31、図32のフローチャートに従って、3次元計測処理が実行される。ただし、コンピュータ3は、赤色、緑色、青色の画像データに対して、それぞれ個別に計測対象物4の奥行きを求める。
具体的には、図31のステップS64(画像データの記憶)では、色画像分割部47は、カラー画像データから分離された赤色、緑色、青色の画像データを分離し、赤色の画像データをリファレンスR画像データ群70Aとして記憶部40に記憶し、緑色の画像データをリファレンスG画像データ群70Bとして記憶部40に記憶し、青色の画像データのリファレンスB画像データ群70Cとして記憶部40に記憶する。
また、図32のステップS53(奥行き計測)では、奥行き推定部45は、計測対象R画像データ71A、計測対象G画像データ71B、計測対象B画像データ71Cそれぞれについて図32のステップS74〜S79が実行される。
この実施の形態では、ステップS80終了後、奥行き推定部45は、赤色、緑色、青色でそれぞれ求められた奥行きの平均値を、最終的な奥行きの推定値として算出する。算出された奥行きの推定値は、奥行きデータ55として記憶部40に記憶され、出力部44により表示出力される。図45には、赤色、緑色、青色、全色の画像データにおける奥行きに対する相関値の変動が示されている。赤色、緑色、青色、全色の2次元パターンはそれぞれ異なるが、図45に示すように、相関値が最も大きい奥行きは、良く一致している。これにより、各色で求められた奥行きは、信頼性の高い推定値となる。
実施の形態8(縦・横直交パターン).
次に、この発明の実施の形態8について説明する。
この実施の形態では、プロジェクタ1の映像面11にはカラー映像が表示される。したがって、計測対象物4には、カラーの投影光が投影される。カメラ2は、カラー画像データを撮像する。このコンピュータ3は、カラー画像データから抽出される、赤色、青色の画像データに基づいて、それぞれ画像マッチングを行うことにより、計測対象物4の奥行きを推定する。
コンピュータ3は、その機能構成として、図46に示すように、投影パターン設定部46と、色画像分割部47と、記憶部40と、奥行き推定部45と、出力部44と、を備える。
投影パターン設定部46は、プロジェクタ1の映像面11に表示される2次元パターンを出力する。ここでは、図47Aに示す赤色により形成されたラインパターン群と、図47Bに示す青色により形成されたラインパターン群とが合成された画像が表示される。図47Aに示すように、赤色のパターンは、X軸方向に配列されたラインパターンより成るラインパターン群である。また、図47Bに示すように、青色のパターンは、赤色のパターンと同程度の高さを有し、かつ、Y軸方向に配列されたラインパターンより成るラインパターン群である。
色画像分割部47は、カメラ2で撮像されたカラー画像データを入力する。色画像分割部47は、カラー画像データから分割された赤色の画像データを、リファレンスR画像データ群70A又は計測対象R画像データ71Aとして記憶部40に格納する。色画像分割部47は、カラー画像データから分割された青色の画像データを、リファレンスB画像データ群70C又は計測対象B画像データ71Cとして記憶部40に格納する。
奥行き推定部45は、計測対象R画像データ71Aと、リファレンスR画像データ群70Aとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4のおおまかな奥行きを推定する。
また、奥行き推定部45は、計測対象B画像データ71Cと、リファレンスB画像データ群70Cとの間で、マッチング窓MWを用いた画像マッチングを行うことにより、投影光学系12による2次元パターンの結像位置を基準とする計測対象物4の奥行きを推定する。
奥行き推定部45は、赤色、青色でそれぞれ求められた奥行きの平均値を、最終的な奥行きの推定値(奥行きデータ55)として算出する。
なお、この実施の形態では、図47Aに示すような2次元パターンの画像マッチングに用いられるマッチング窓MWは、X軸方向が長手方向となり、図47Bに示すような2次元パターンの画像マッチングに用いられるマッチング窓MWは、Y軸方向が長手方向となる。
このように、色毎の画像データにおいてラインパターンが並ぶ方向(空間周波数成分を有する方向)を互いに直交するようにすれば、ラインパターンの空間周波数成分の方向に関わらず、奥行きを正確に推定することができる。この時、共通の開口パターンを使用した場合、Y軸は開口パターンに直交する方向となるため、投影パターンはただのボケた画像となる。これにより、Y軸方向ではDfDの効果を得ることができ、Coarse to fineがワンショットで実現される。あるいは、Y軸の投影パターンに合わせて、開口パターンもY軸方向にすれば、X軸およびY軸それぞれがインパルス列となり、冗長性による精度向上や、マッチング窓がオクルージョンの影響を受けにくくなるというメリットが生まれる。これにより、図48に示すように、球状の計測対象物4の上側の輪郭部分や、左側の輪郭部分の奥行きを精度良く推定することができる。
実施の形態8’(カラーフィルタによる開口).
次に、この発明の実施の形態8’について説明する。
この実施の形態では、開口パターンには、第1の色(例えば赤色)の光のみを遮断するカラーフィルタを備えた第1の開口パターンと、第2の色(例えば青色)の光のみを遮断するカラーフィルタを備えた第2の開口パターンとが含まれる。複数のパターンを異なる色で投影する際に、それぞれの色に適したカラーフィルタを用いて開口パターンを作成することで、投影されるパターンに異なる性質を与えることができる。これにより、前記のCoarse to fineや、複数色による曖昧性の減少、直交パターンによるオクルーディングバウンダリの精度向上などを、より効果的に実現できる。
実施の形態9(プロジェクタ2台によるシステム).
次に、この発明の実施の形態9について説明する。
図49に示すように、この実施の形態では、3次元計測システム100は、プロジェクタ1A、1Bを2台備えている。プロジェクタ1A、1Bは、異なる方向から計測対象物4に2次元パターンを投影する。カメラ2の光軸は、プロジェクタ1A、1Bの光軸とは同軸ではない。
このように、複数の異なる方向から2次元パターンの投影像を計測対象物4に投影し、カメラ2でその投影像を撮像するようにすれば、例えばプロジェクタ1Aと計測対象物4との間に障害物6があったとしても、プロジェクタ1Bの投影光により、計測対象物4の上に投影像を投影することができるので、計測対象物4の奥行きを正確に推定することができる。
なお、計測対象物4の奥行きを計測するには、プロジェクタ1Aから投影された投影像と、プロジェクタ1Bから投影された投影像とを分離して撮像するのが望ましい。このために、プロジェクタ1A、1Bから投影される投影光の色を異なるものとし、カメラ2側にバンドパスフィルタを設けて、2つの投影像の画像データを分離するようにしてもよい。また、プロジェクタ1A、1Bから投影される投影光を異なる方向の偏光とし、カメラ2側で偏光フィルタ又は偏光ビームスプリッタ等を設けて、2つの投影像を別々に撮像可能としてもよい。
また、図50に示すように、プロジェクタ1Aの光軸AXとカメラ2の光学系の光軸とのずれを示す基線をベースラインB1とし、プロジェクタ1Bの光軸AXとカメラ2の光学系の光軸とのずれを示す基線をベースラインB2とする。この場合、ベースラインB1、B2が直交するようにプロジェクタ1A、1Bを配置するようにしてもよい。この場合、プロジェクタ1A、1Bにおける符号化開口13D、13Eの空間周波数成分の方向は、ベースラインB1、B2が延びる方向に設定される。映像面11に表示される2次元パターンも同様である。このようにすれば、計測対象物4のY軸方向の輪郭だけでなく、X軸方向の輪郭も精度良く推定することができる。
なお、上記各実施の形態では、画像マッチングにより2つの画像データの相関値を求めて、画像マッチングを行うことにより、計測対象物4の奥行きを推定した。しかしながら、計測対象物4の奥行きを求める方法は、これには限られない。例えば、画像データ内のマッチング窓MWと同じ大きさの領域についてそれぞれ特徴量を求め、インデックスを奥行きとするKd木を生成し、Kd木による探索により、画像マッチングを行い、計測対象物4の奥行きを推定するようにしてもよい。例えば、図51に示すようなカラー画像データAを投影する場合、各色の画像データB、C、Dにおけるマッチング窓MW内の画像データにおけるX座標ごとの輝度の総和を特徴量ベクトルとして用いればよい。
なお、上記実施の形態では、赤色、緑色、青色とされているものを、適宜他の色(赤色、緑色、青色を含む)に変更することができる。
また、複数の色で奥行きの推定を行う場合には、符号化開口として、各色に対応する符号化開口をプロジェクタに設けるようにしてもよい。
実施の形態10(DOE(Diffractive Optical Element)による実装).
次に、この発明の実施の形態10について説明する。
図52に示すように、この実施の形態では、3次元計測システムの光源としてレーザ光源80を用いる。まずレーザ光源80から出射されたレーザを、ドット列(例えば、不規則に2次元状に配列されたランダムドットパターン)を出力とする第1のDOEとしてのDOE81に入射する。次に、その出力を、ラインパターン列を形成する第2のDOEとしてのDOE82に入射する。これにより、前記した投影パターンと開口パターンとの畳込みと同様の効果を実現することができる。DOE81、82は、光量を数%程度しか減衰させないため、本システムでは光量をほとんど減衰させずにパターン(平面レーザ群83)を形成することができるメリットがある。また、DOEの組合せとしては、ドット列とラインパターンを逆転させても良い。あるいは、双方をラインパターン、ドットパターンとしても良い。
符号化開口13の開口パターンと、投影される2次元パターンは少なくとも一方が不規則なランダムパターンであればよい。また、上記実施の形態4等では、プロジェクタ1の投影光学系12の光軸AXと、カメラ2の光軸とが非同軸に設定されているとしたが、プロジェクタ1の投影光学系12の光軸AXと、カメラ2の光軸とを同軸に設定するようにしてもよい。
その他、コンピュータ3のハードウエア構成やソフトウエア構成は一例であり、任意に変更および修正が可能である。
制御部31、主記憶部32、外部記憶部33、操作部34、表示部35及び通信部36、内部バス30などから構成されるコンピュータ3の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体(フレキシブルディスク、CD−ROM、DVD−ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するコンピュータ3を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでコンピュータ3を構成してもよい。
コンピュータ3の機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)にコンピュータプログラムを掲示し、ネットワークを介してコンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
この発明は、この発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、この発明の範囲を限定するものではない。すなわち、この発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
なお、本願については、2015年5月21日に出願された日本国特許出願2015−103366号を基礎とする優先権を主張し、本明細書中に日本国特許出願2015−103366号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。