以下、実施形態を図面を用いて説明する。
図1は、距離測定装置および距離測定方法の一実施形態を示している。この実施形態の距離測定装置MSYSは、所定の位置から物体までの距離を三角測量の原理を用いて測定する。例えば、距離測定装置MSYSは、ボリュームデータを測定するボリュームデータ測定装置として使用される。この場合、距離測定装置MSYSは、物体の各部分までの距離を三角測量の原理を用いて測定することにより、物体の形状を非接触で計測する。なお、図1の破線の矢印は、光の経路の一例を示している。
例えば、距離測定装置MSYSは、測定対象の物体を互いに異なる位置から撮影した2つの画像を用いて、物体の各部分までの距離を算出する。この際、距離測定装置MSYSは、2つの画像の互いに対応する位置を簡易に特定にするために、パターン光を測定対象の物体に投影し、パターン光が投影された物体を撮影する。
パターン光のパターンは、例えば、カラーの領域と黒色の領域とが交互に現れる縞模様である。例えば、パターン光は、三角測量における三角形の面と交差する方向にカラーの領域および黒色の領域が延在するように投影される。以下、カラーの領域をカラー帯とも称し、黒色の領域を黒帯とも称する。例えば、距離測定装置MSYSは、物体の各部分(各点)に対応する画像内の位置を、画像内のカラー帯の配列(色の組み合わせ)に基づいて特定する。
距離測定装置MSYSは、例えば、プロジェクタPROと、2つのカメラCAM(CAMR、CAML)と、演算部OP1とを有している。プロジェクタPROは、例えば、パターン情報PTINFを演算部OP1(より詳細には、パターン生成部PGEN)から受け、パターン情報PTINFに基づくパターンのパターン光を測定対象の物体に投影する。また、プロジェクタPROは、パターン光を投影する際のプロジェクタPROの設定値を示す設定情報SINFPを、演算部OP1(より詳細には、更新部UPD)に出力する。
プロジェクタPROは、例えば、光を放射するランプ等を含む光源LSと、レンズLEN10と、液晶ライトバルブLCLVと、レンズLEN1と、レンズLEN1の絞りを調整する絞り機構DM1とを有している。レンズLEN10は、例えば、光源LSと液晶ライトバルブLCLVとの間に配置される。例えば、レンズLEN10は、光源LSから放射された光が液晶ライトバルブLCLVの入射面にほぼ垂直に入射するように設計されている。
液晶ライトバルブLCLVは、カラーの領域と黒色の領域とが交互に現れる縞模様のパターン光をレンズLEN1を介して測定対象の物体に投影する投影部の一例である。例えば、液晶ライトバルブLCLVは、光源LSから放射された光をレンズLEN10を介して受け、受けた光をパターン情報PTINFに基づくパターンのパターン光に変調する。そして、液晶ライトバルブLCLVは、パターン光をレンズLEN1を介して測定対象の物体に投影する。
レンズLEN1の絞りや位置は、測定対象の物体に焦点が合うように、調整される。なお、図1では、絞り機構DM1の動作を制御するブロック(例えば、絞り制御部)やレンズLEN1の位置を制御するブロック(例えば、位置制御部)等の記載を省略している。プロジェクタPROから演算部OP1に転送される設定情報SINFPには、液晶ライトバルブLCLVとレンズLEN1との距離を示す情報等が含まれている。なお、設定情報SINFPには、液晶ライトバルブLCLVの1画素のサイズ等を示すプロジェクタPROの設計情報が含まれてもよい。
カメラCAMR、CAMLは、パターン光が投影された物体を互いに異なる位置から撮影した2つの画像IMG(IMGR、IMGL)を生成する撮像装置の一例である。例えば、カメラCAMRとカメラCAMLとの間隔は、三角測量の基線長に対応している。以下、2つの画像IMGを左右画像IMGとも称する。また、2つの画像IMGの一方を右画像IMGRとも称し、2つの画像IMGの他方を左画像IMGLとも称する。カメラCAMR、CAMLは、例えば、デジタルビデオカメラでもよいし、デジタルカメラでもよい。
例えば、各カメラCAMR、CAMLは、撮像素子ISENと、レンズLEN2と、レンズLEN2の絞りを調整する絞り機構DM2とを有している。撮像素子ISENは、レンズLEN2を介して受ける光に基づいて画像IMGを生成する。例えば、カメラCAMRの撮像素子ISENは、パターン光が投影された物体の右画像IMGRを生成する。また、例えば、カメラCAMLの撮像素子ISENは、パターン光が投影された物体の左画像IMGLを生成する。そして、カメラCAMR、CAMLは、右画像IMGRおよび左画像IMGLを演算部OP1(より詳細には、取得部CINF)にそれぞれ出力する。
レンズLEN2の絞りや位置は、測定対象の物体に焦点が合うように、調整される。なお、図1では、絞り機構DM2の動作を制御するブロック(例えば、絞り制御部)やレンズLEN2の位置を制御するブロック(例えば、位置制御部)等の記載を省略している。また、レンズLEN2の絞りや位置の設定値は、カメラCAMR、CAMLで同じになるように制御される。例えば、カメラCAMRは、測定対象の物体に焦点が合うように、レンズLEN2の絞りや位置を調整する。
そして、カメラCAMRは、調整後のレンズLEN2の絞りや位置を示す設定情報SINFCを、カメラCAMLおよび演算部OP1(より詳細には、更新部UPD)に転送する。カメラCAMLは、カメラCAMRから受けた設定情報SINFCに基づいて、レンズLEN2の絞りや位置を調整する。すなわち、設定情報SINFCは、パターン光が投影された物体を撮影する際のカメラCAML、CAMRの設定値を示す情報である。なお、設定情報SINFCには、撮像素子ISENの1画素のサイズ等を示すカメラCAMの設計情報が含まれてもよい。
演算部OP1は、プロジェクタPROと、パターン光が投影された物体の左右画像IMGL、IMGRを生成する撮像装置(例えば、カメラCAML、CAMR)とを用いて、所定の位置から物体までの距離を算出する距離測定装置の一例である。すなわち、演算部OP1も距離測定装置の一態様である。例えば、演算部OP1は、携帯電話やコンピュータ等の制御端末に搭載され、カメラCAMおよびプロジェクタPROと通信可能に接続される。なお、演算部OP1は、カメラCAMやプロジェクタPROに搭載されてもよい。
演算部OP1は、例えば、取得部CIF、更新部UPD、パターン生成部PGENおよび距離測定部DMを有している。取得部CIFは、左右画像IMGL、IMGRを撮像装置(例えば、カメラCAML、CAMR)から取得する取得部の一例である。例えば、取得部CIFは、パターン光が投影された物体の左右画像IMGL、IMGRをカメラCAML、CAMRからそれぞれ取得する。そして、取得部CIFは、左右画像IMGL、IMGRを更新部UPDおよび距離測定部DMに転送する。
更新部UPDは、最終的なパターン光の投影部(例えば、液晶ライトバルブLCLV)における黒色の領域の幅を算出する第1算出部の一例である。例えば、更新部UPDは、プロジェクタPROの設定情報SINFP、カメラCAML、CAMRの設定情報SINFCおよび左右画像IMGL、IMGRを受ける。
そして、更新部UPDは、パターン光の黒帯の幅、カメラCAML、CAMRで撮影された黒帯の幅、液晶ライトバルブLCLVとレンズLEN1との距離、撮像素子ISENとレンズLEN2との距離に基づいて、最終的なパターン光の黒帯の幅β(t)を算出する。以下、幅を示すデータを、幅データとも称する。例えば、黒帯の幅β(t)を示すデータを、幅データβ(t)とも称する。
パターン光の黒帯の幅は、例えば、前回のパターン光の液晶ライトバルブLCLVにおける黒帯の幅であり、更新部UPDからアクセス可能な記憶部等に記憶されている。例えば、更新部UPDは、前回のパターン光の黒帯の幅が記憶されている記憶部から、前回のパターン光の黒帯の幅を読み出す。
また、カメラCAML、CAMRで撮影された黒帯の幅は、例えば、前回のパターン光が投影された物体を撮影した左右画像IMGL、IMGRにおける黒帯の幅である。例えば、更新部UPDは、カメラCAML、CAMRで撮影された黒帯の幅を、前回のパターン光が投影された物体を撮影した左右画像IMGL、IMGRから算出する。液晶ライトバルブLCLVとレンズLEN1との距離は、例えば、前回のパターン光を投影した際のプロジェクタPROの液晶ライトバルブLCLVとレンズLEN1との距離である。例えば、液晶ライトバルブLCLVとレンズLEN1との距離を示すデータは、設定情報SINFPに含まれている。
撮像素子ISENとレンズLEN2との距離は、例えば、前回のパターン光が投影された物体を撮影した際のカメラCAML、CAMRの撮像素子ISENとレンズLEN2との距離である。例えば、撮像素子ISENとレンズLEN2との距離を示すデータは、設定情報SINFCに含まれている。最終的なパターン光の黒帯の幅β(t)は、例えば、物体の距離を算出する際に投影されるパターン光の液晶ライトバルブLCLVにおける黒帯の幅である。最終的なパターン光の黒帯の幅β(t)は、例えば、パターン生成部PGENに通知される。例えば、更新部UPDは、幅データβ(t)をパターン生成部PGENに出力する。
パターン生成部PGENは、例えば、所定の幅のカラー帯と第1幅の黒帯とが交互に現れる縞模様を示すパターン情報PTINFをプロジェクタPROに出力する。例えば、2回目以降のパターン光に対応するパターン情報PTINFでは、第1幅は、パターン生成部PGENで算出された黒帯の幅β(t)である。
なお、最初に投影されるパターン光に対応するパターン情報PTINFでは、第1幅は、例えば、任意の初期値である。例えば、距離測定装置MSYSは、パターン光の黒帯の幅の初期値を、投影時のぼけや撮影時のぼけの影響を受ける黒帯の幅と撮像素子ISENの1画素分の幅との和に設定する。なお、投影時のぼけは、例えば、プロジェクタPROが物体にパターン光を投影したときに発生するぼけである。撮影時のぼけは、例えば、カメラCAM(CAMR、CAML)が物体を撮影したときに発生するぼけである。以下、投影時のぼけを、投射ぼけとも称し、撮影時のぼけを撮像ぼけとも称する。
距離測定部DMは、最終的なパターン光が投影された物体を撮影した左右画像IMGL、IMGRを用いて、所定の位置から物体までの距離を算出する測定部の一例である。例えば、距離測定部DMは、最終的なパターン光が投影された物体を撮影した左右画像IMGL、IMGRを、取得部CIFから受ける。そして、距離測定部DMは、例えば、取得部CIFから受けた左右画像IMGL、IMGRに基づいて視差量を算出し、三角測量の原理を用いて物体までの距離を測定する。
なお、距離測定部DMは、例えば、三角測量の基線長として、カメラCAMRとカメラCAMLとの間隔を示す情報を予め取得している。また、最終的なパターン光は、例えば、パターン生成部PGENで算出された最終的な黒帯の幅β(t)を有するパターン光である。
このように、距離測定装置MSYSは、前回のパターン光の液晶ライトバルブLCLVでの黒帯の幅、画像IMG上の黒帯の幅、プロジェクタPROの設定値、カメラCAMの設定値等に基づいて、パターン光の液晶ライトバルブLCLVでの黒帯の幅を更新する。これにより、最終的なパターン光の液晶ライトバルブLCLVでの黒帯の幅が算出される。この結果、距離測定装置MSYSは、測定分解能を向上できる。
なお、距離測定装置MSYSの構成は、この例に限定されない。例えば、距離測定装置MSYSは、2つのカメラCAMR、CAMLの代わりに、ステレオアダプタが装着された1つのカメラCAMRを有してもよい。
図2は、画像IMG内のパターン光の一例を示している。例えば、図2の更新前は、黒帯BARの幅を更新する前のパターン光が投影された物体の画像を示している。また、図2の更新後は、黒帯BARの幅を更新した後のパターン光が投影された物体の画像を示している。そして、図2の比較例は、互いに隣接するカラー帯CARの色の混ざりが発生した場合を示している。
更新前では、例えば、測定対象の物体に写るカラー帯CAR(CAR1、CAR2、CAR3)は、3つである。図2の更新後の例では、更新部UPDは、黒帯BARの幅を、更新前の黒帯BARの幅に比べて小さい値に更新している。これにより、更新後では、測定対象の物体に写るカラー帯CAR(CAR1、CAR2、CAR3、CAR4)は、4つに増加している。カラー帯CAR毎に測定が実行されるため、測定できる箇所は、測定対象の物体に写るカラー帯CARの数の増加に伴い増加する。更新後では、測定できる箇所は、更新前の4/3倍である。すなわち、更新後では、測定分解能が向上している。
比較例では、互いに隣接するカラー帯CARの色の混ざりが発生している。互いに隣接するカラー帯CARの色の混ざりは、例えば、黒帯BARの幅を狭くし過ぎた場合に、投影時や撮影時のぼけの影響により、発生する。領域MIX1は、カラー帯CAR1、CRA2の色が混ざった領域である。領域MIX2は、カラー帯CAR2、CRA3の色が混ざった領域である。領域MIX3は、カラー帯CAR3、CRA4の色が混ざった領域である。
例えば、カラー帯CAR1、CRA2の色がそれぞれ水色と黄色の場合、緑色の領域MIX1が、カラー帯CAR1、CRA2の間に発生する。この場合、カラー帯CARの色の組み合わせが誤判定されるおそれがある。あるいは、色の検出が不安定になるおそれがある。すなわち、カラー帯CARの配列が誤判定されるおそれがある。
距離測定装置MSYSは、例えば、測定対象の物体の各点に対応する画像IMG内の位置を、画像IMG内の色の組み合わせ(カラー帯CARの配列)に基づいて特定する。例えば、距離測定装置MSYSは、色の組み合わせを誤判定した場合、測定対象の物体の各点に対応する画像IMG内の正しい位置を特定できない。なお、距離測定装置MSYSは、互いに隣接するカラー帯CARの色の混ざりが発生しない範囲で、黒帯BARの幅を狭くする。これにより、距離測定装置MSYSは、測定が不安定になることを防止しつつ、測定の分解能を向上できる。
図3は、パターン光の投影時のぼけの影響の一例を示している。なお、図3は、プロジェクタPROの焦点が測定対象の物体OBJ(以下、被写体OBJとも称する)よりも前の位置に合う場合を示している。例えば、被写体OBJに投影されるパターン光の黒帯の幅Y2において、両端から幅Y1の領域は、プロジェクタPROの投射ぼけの影響により、カラー帯の区切りとして利用できない。また、幅Y2の黒帯の両端から幅Y1を除いた領域(幅ω)の一部(両端付近)は、図5等に示すように、撮影時のぼけの影響により、カラー帯の区切りとして利用できない場合がある。
図の距離uは、被写体OBJとレンズLEN1の主点との光軸方向に沿う距離を示し、距離u1は、焦点が合う位置とレンズLEN1の主点との光軸方向に沿う距離を示している(図3では、u≧u1)。以下、焦点が合う位置(レンズLEN1の主点から光軸に沿って距離u1離れた位置)を、位置u1とも称する。開口径D1は、レンズLEN1の開口径を示している。距離X1は、レンズLEN1の主点と液晶ライトバルブLCLVとの光軸方向に沿う距離を示している。また、距離f1は、レンズLEN1の開口部(開口径D1)の両端と位置u1におけるパターン光の黒帯(幅W)の両端とを頂点とする四角形の対角線の交点からレンズLEN1の主点までの光軸方向に沿う距離を示している。
被写体OBJにおけるパターン光の黒帯の幅Y2(カラー帯の区切りとして利用できない幅Y1も含む)と、位置u1におけるパターン光の黒帯の幅Wとの関係は、三角形の相似関係より、距離u、u1、f1を用いて式(1)で表される。また、開口径D1と幅Wとの関係は、三角形の相似関係より、距離u1、f1を用いて式(2)で表される。
Y2:W=(u−f1):(u1−f1) ‥(1)
D1:W=f1:(u1−f1) ‥(2)
式(1)および式(2)より、幅Y2は、距離u、u1、幅W、開口径D1を用いて、式(3)で表される。なお、式中の”*”は、乗算を示している。
Y2=W*u/u1+D1*(u−u1)/u1 ‥(3)
また、幅Y1は、三角形の相似関係より、開口径D1、距離u、u1を用いて式(4)で表される。
Y1=D1*(u−u1)/u1 ‥(4)
したがって、u≧u1の場合、式(3)および式(4)より、被写体OBJにおけるパターン光の有効な黒帯の幅ω(=Y2−2*Y1)は、式(5)で表される。
ω=W*u/u1−D1*(u−u1)/u1 ‥(5)
また、幅Wは、三角形の相似関係より、液晶ライトバルブLCLV上の黒帯の幅W1、距離X1、u1を用いて式(6)で表される。
W=W1*u1/X1 ‥(6)
さらに、幅W1は、液晶ライトバルブLCLVの1画素のサイズ(黒帯の延在方向と交差する方向の幅)をs1、液晶ライトバルブLCLV上の黒帯の幅W1に対応する画素数をN1とした場合、式(7)で表される。
W1=N1*s1 ‥(7)
式(6)および式(7)より、幅Wは、画素数N1、1画素のサイズs1を用いて、式(8)で表される。
W=N1*s1*u1/X1 ‥(8)
図4は、パターン光の投影時のぼけの影響の別の例を示している。なお、図4は、プロジェクタPROの焦点が被写体OBJよりも後ろの位置で合う場合を示している。すなわち、図4は、u<u1のときのプロジェクタPROの投射ぼけの影響の一例を示している。図4の距離u、u1、X1、f1、開口径D1、幅W、W1、ω、Y1、Y2等の意味は、図3と同様である。
被写体OBJにおけるパターン光の有効な黒帯の幅ω(=Y2−2*Y1)と、位置u1(焦点が合う位置)におけるパターン光の黒帯の幅Wとの関係は、三角形の相似関係より、距離u、u1、f1を用いて式(9)で表される。また、開口径D1と幅Wとの関係は、三角形の相似関係より、距離u1、f1を用いて式(10)で表される。
ω:W=(u−f1):(u1−f1) ‥(9)
D1:W=f1:(u1−f1) ‥(10)
式(9)および式(10)より、幅ωは、距離u、u1、幅W、開口径D1を用いて、式(11)で表される。
ω=W*u/u1+D1*(u−u1)/u1 ‥(11)
このように、有効な幅ωは、u<u1の場合には、式(11)で表される。また、図3で説明したように、u≧u1の場合には、式(5)で表される。したがって、有効な幅ωは、距離u、u1の差の絶対値|u−u1|を用いて、式(12)で表される。
ω=W*u/u1−D1*|u−u1|/u1 ‥(12)
図5は、撮影時のぼけの影響の一例を示している。なお、図5は、カメラCAMRの焦点が被写体OBJよりも前の位置に合う場合を示している。例えば、撮像素子ISEN上の黒帯の幅ω1において、両端から幅Z1の領域は、撮像ぼけの影響により、カラー帯の区切りとして利用できない。
図の距離uは、被写体OBJとレンズLEN2の主点との光軸方向に沿う距離を示し、距離u2は、焦点が合う位置とレンズLEN2の主点との光軸方向に沿う距離を示している(図5では、u≧u2)。開口径D2は、レンズLEN2の開口径を示している。距離aは、レンズLEN2の主点と撮像素子ISENとの光軸方向に沿う距離を示している。距離a1は、レンズLEN2の主点から像までの距離を示している。以下、像の位置(レンズLEN2の主点から光軸に沿って距離a1離れた位置)を位置a1とも称する。
また、距離f2は、レンズLEN2の開口部(開口径D2)の両端と位置a1における幅ω2の黒帯の両端とを頂点とする四角形の対角線の交点からレンズLEN2の主点までの光軸方向に沿う距離を示している。図5の例では、距離f2は、レンズLEN2の主点と焦点との距離に対応している。
区切りとして使用できない領域の幅Z1は、三角形の相似関係より、開口径D2、距離a、a1、を用いて式(13)で表される。
Z1=D2*(a−a1)/a1=D2*(a/a1−1) ‥(13)
レンズの公式より、レンズLEN2の焦点距離をfとした場合、距離f、a、u2、a1、uの関係は、式(14)で表される。
1/f=1/a+1/u2=1/a1+1/u ‥(14)
式(13)および式(14)より、幅Z1は、開口径D2、距離a、u、u2を用いて式(15)で表される。
Z1=D2*a*((u−u2)/u2)/u ‥(15)
また、撮像素子ISEN上の黒帯の幅ω1は、三角形の相似関係より、位置a1における黒帯の幅ω2、距離a、a1、f2を用いて式(16)で表される。
ω1=ω2*(a−f2)/(a1−f2) ‥(16)
また、幅ω2と開口径D2との関係は、三角形の相似関係より、距離a1、f2を用いて式(17)で表される。また、式(17)より、距離f2は、式(18)で表される。
ω2:D2=(a1−f2):f2 ‥(17)
f2=a1/((ω2/D2)+1) ‥(18)
式(16)および式(18)より、幅ω1は、式(19)で表される。
ω1=(a/a1)*ω2+D2*(a/a1−1) ‥(19)
被写体OBJにおける黒帯の幅ωは、焦点が合う面上(距離a1)では、レンズの公式により、a1/u倍される。したがって、幅ω2は、式(20)で表される。
ω2=(a1/u)*ω ‥(20)
式(14)、式(19)および式(20)より、幅ω1は、式(21)で表される。
ω1=a*ω/u+D2*a*((u−u2)/u2)/u ‥(21)
パターン光の黒帯の幅ωは、撮像素子ISEN上で幅ω1になる。なお、例えば、撮像素子ISEN上の黒帯の幅ω1において、両端から幅Z1の領域は、撮像ぼけの影響により、カラー帯の区切りとして利用できない。したがって、u≧u2の場合、式(15)および式(21)より、撮像素子ISEN上の有効な黒帯の幅ω3(=ω1−2*Z1)は、式(22)で表される。
ω3=a*ω/u−D2*a*((u−u2)/u2)/u ‥(22)
図6は、撮影時のぼけの影響の別の例を示している。なお、図6は、カメラCAMRの焦点が被写体OBJよりも後ろの位置で合う場合を示している。すなわち、図6は、u<u2のときの撮像ぼけの影響の一例を示している。図6の距離u、u2、a、a1、f2、開口径D2、幅ω、ω1、ω2、ω3、Z1等の意味は、図5と同様である。
撮像素子ISEN上の有効な黒帯の幅ω3は、三角形の相似関係より、位置a1における黒帯の幅ω2、距離a、a1、f2を用いて式(23)で表される。
ω3=ω2*(a−f2)/(a1−f2) ‥(23)
また、図5と同様に、幅ω2と開口径D2との関係は、距離a1、f2を用いて、式(17)で表され、距離f2は、式(18)で表される。さらに、幅ω2は、式(20)で表され、a、u2、a1、uの関係は、式(14)で表される。したがって、幅ω3は、式(14)、式(18)、式(20)および式(23)より、式(24)で表される。
ω3=a*ω/u+D2*a*((u−u2)/u2)/u ‥(24)
このように、有効な幅ω3は、u<u2の場合には、式(24)で表される。また、図5で説明したように、u≧u2の場合には、式(22)で表される。したがって、有効な幅ω3は、距離u、u2の差の絶対値|u−u2|を用いて、式(25)で表される。
ω3=a*ω/u−D2*a*(|u−u2|/u2)/u ‥(24)
ここで、撮像素子ISENの1画素のサイズ(幅)をs2とした場合、黒帯をカラー帯の区切りとして利用するための条件は、例えば、式(25)で表される。
a*ω/u−D2*a*(|u−u2|/u2)/u≧s2 ‥(25)
また、式(25)は、図3および図4で説明した式(8)および式(12)により、式(26)に変形される。さらに、式(26)は、式(28)に変形される。なお、式(27)は、式(26)から式(28)への変形過程を示している。
a*N1*s1/X1-(D1*a*|u-u1|/u1)/u-D2*a*(|u-u2|/u2)/u≧s2 ‥(26)
N1*s1/X1≧(D1*|u-u1|/u1)/u+D2*(|u-u2|/u2)/u+s2/a ‥(27)
N1*s1/X1≧D1*|1/u1-1/u|+D2*|1/u2-1/u|+s2/a ‥(28)
ここで、式(28)の右辺第1項は、距離u1と距離uとが最も異なるとき、最大になる。例えば、プロジェクタPROの焦点ずれが最大で100*(1−n)%の割合(距離uに対する割合)で発生すると仮定した場合、nは、n=u1/uとなる。すなわち、式(28)の右辺第1項の1/uは、n/u1で表される。
また、式(28)の右辺第2項は、距離u2と距離uとが最も異なるとき、最大になる。例えば、カメラCAM(CAMR、CAML)の焦点ずれが最大で100*(1−k)%の割合(距離uに対する割合)で発生すると仮定した場合、kは、k=u2/uとなる。すなわち、式(28)の右辺第2項の1/uは、k/u2で表される。
例えば、プロジェクタPROの焦点ずれの公差およびカメラCAMの焦点ずれの公差として、所定の値がn、kに与えられている場合、式(28)は、式(29)に変形される。
N1*s1/X1≧D1*|n-1|/u1+D2*|k-1|/u2+s2/a ‥(29)
式(29)の左辺は、パターン光の黒帯の幅に対応している。また、式(29)の右辺第1項および第2項は、プロジェクタPROの投射ぼけおよびカメラCAMの撮像ぼけの影響を受ける黒帯の幅(カラー帯の区切りとして利用できない黒帯の幅)に対応している。式(29)の右辺第3項は、撮像素子ISENの1画素分の幅に対応している。
例えば、演算部OP1は、式(29)のs1、X1、D1、n、u1、D2、k、u2、s2、aをプロジェクタPROおよびカメラCAMの設定値等から取得する。そして、演算部OP1は、液晶ライトバルブLCLV上の黒帯の幅W1に対応する画素数N1の初期値を式(29)を満たす最小の整数に設定する。これにより、距離測定装置MSYSは、投射ぼけや撮像ぼけが発生したときにもカラー帯の区切りとして利用可能な黒帯を有するパターン光を、黒帯の幅を広くし過ぎることなく生成できる。
なお、この実施形態では、式(29)の右辺第3項をh*s2/aとし、ユーザ入力等により、hが可変に設定されてもよい。例えば、ユーザは、hを0に設定し、式(29)の右辺第3項を0画素分に設定してもよいし、hを1.5に設定し、式(29)の右辺第3項を1.5画素分に設定してもよい。
式(29)に基づいて算出された黒帯の幅W1を有するパターン光では、推定誤差が発生した場合、黒帯の幅が推定値からずれ、測定性能が低下するおそれがある。例えば、推定誤差により黒帯の幅が推定値より広くなる場合、測定の分解能が低下する。また、例えば、推定誤差により黒帯の幅が推定値より狭くなる場合、カラー帯の区切りとして利用できなくなるおそれがある。このため、距離測定装置MSYSの更新部UPDは、前回のパターン光の黒帯の幅と今回のパターン光の黒帯の幅との関係に基づいて、黒帯の幅を更新する。これにより、推定誤差分が自動で補正される。
図7は、図1に示した更新部UPDの一例を示している。更新部UPDは、例えば、検出部DET、算出部CALおよび記憶部MEMを有している。検出部DETは、パターン光が投影された被写体OBJを撮影した2つの画像IMGR、IMGLの少なくとも一方における黒帯の幅を検出する検出部の一例である。例えば、検出部DETは、時刻(t−1)に投射されたパターン光を受けた被写体OBJの左右画像IMGL、IMGRを、取得部CIFから受ける。そして、検出部DETは、時刻(t−1)の左右画像IMGL、IMGR上の黒帯の幅α(t−1)を算出し、算出した幅α(t−1)を示す幅データα(t−1)を算出部CALに出力する。
例えば、検出部DETは、左右画像IMGL、IMGR中の各黒帯の幅を行毎に計測し、全ての行の平均値や最小値を黒帯毎に算出する。そして、検出部DETは、算出した全ての黒帯の幅の平均値や最小値を、幅α(t−1)として算出部CALに通知する。なお、行方向は、黒帯の延在方向と交差する方向に対応している。また、検出部DETは、例えば、算出した各黒帯の幅を、幅データα(t−1)として算出部CALに出力してもよい。この場合、算出部CALは、例えば、時刻(t−1)の左右画像IMGL、IMGR上の黒帯の幅α(t−1)を示す幅データα(t−1)を、黒帯毎に受ける。
なお、検出部DETは、黒帯が検出されない場合(例えば、時刻(t−1)に投射されたパターン光の黒帯の幅が狭すぎる場合)、カラー帯の色が混じり合う領域(例えば、図2の比較例に示した領域MIX)の幅を、黒帯の幅として計測してもよい。この場合、検出部DETは、例えば、幅データα(t−1)が負の値であることを示すデータとともに、幅データα(t−1)を算出部CALに転送する。
算出部CALは、パターン光の液晶ライトバルブLCLVにおける黒帯の幅β(t)を検出部DETで検出された黒帯の幅α(t−1)等に基づいて算出する第2算出部の一例である。例えば、算出部CALは、設定情報SINFP、SINFC、幅データα(t−1)および幅データβ(t−1)を受ける。そして、算出部CALは、設定情報SINFP、SINFC、幅データα(t−1)および幅データβ(t−1)に基づいて、パターン光の液晶ライトバルブLCLVにおける黒帯の幅β(t)を算出する。
幅データβ(t−1)は、例えば、時刻(t−1)のパターン光の液晶ライトバルブLCLVにおける黒帯の幅β(t−1)を示すデータであり、記憶部MEMに記憶されている。例えば、算出部CALは、幅データβ(t−1)を記憶部MEMから読み出す。なお、幅β(t)を算出する際に参照される設定情報SINFPには、例えば、液晶ライトバルブLCLVとレンズLEN1との距離X1、液晶ライトバルブLCLVの1画素の幅s1が含まれる。また、幅β(t)を算出する際に参照される設定情報SINFCには、例えば、撮像素子ISENとレンズLEN2との距離a、撮像素子ISENの1画素の幅s2が含まれる。
算出部CALで算出された幅β(t)は、パターン生成部PGENに通知されるとともに、記憶部MEMに記憶される。例えば、算出部CALは、幅データβ(t)を、パターン生成部PGENおよび記憶部MEMに出力する。すなわち、記憶部MEMは、算出部CALで算出した幅を示すデータを記憶する記憶部の一例である。記憶部MEMは、例えば、半導体メモリである。なお、記憶部MEMに記憶された幅データβ(t)は、例えば、次のパターン光の黒帯の幅βを算出するときに、前の時刻の幅データβ(t−1)として読み出される。
ここで、パターン光の液晶ライトバルブLCLVにおける黒帯の幅β(t)の算出方法の一例を説明する。推定誤差が発生した場合、式(29)より、黒帯の幅β(t−1)と黒帯の幅α(t−1)との関係は、推定誤差Erを用いて、式(30)で表される。
β(t-1)*s1/X1-D1*|n-1|/u1-D2*|k-1|/u2-Er=α(t-1)*s2/a ‥(30)
なお、式(30)の幅β(t−1)は、時刻(t−1)に投射されたパターン光の液晶ライトバルブLCLVにおける黒帯の幅(画素数換算)に対応している。すなわち、式(30)の幅β(t−1)は、式(29)の画素数N1に対応している。また、式(30)の幅α(t−1)は、時刻(t−1)のパターン光が投影された被写体OBJの左右画像IMGL、IMGRにおける黒帯の幅(画素数換算)に対応している。
また、時刻tのパターン光が投影された被写体OBJの左右画像IMGL、IMGRにおける黒帯の幅(画素数換算)が撮像素子ISENの1画素分の場合(α(t)=1の場合)、式(30)は、式(31)に変形される。なお、式(31)の幅β(t)は、時刻tに投射されるパターン光の液晶ライトバルブLCLVにおける黒帯の幅(画素数換算)に対応している。すなわち、式(31)の幅β(t)は、式(29)の画素数N1に対応している。
β(t)*s1/X1-D1*|n-1|/u1-D2*|k-1|/u2-Er=s2/a ‥(31)
式(30)および式(31)より、幅β(t)は、式(32)で表される。式(32)の右辺第1項が推定誤差を表す項に対応している。
β(t)=X1*s2*(1-α(t-1))/(a*s1)+β(t-1) ‥(32)
例えば、算出部CALは、式(32)のα(t−1)およびβ(t−1)に対応する幅データα(t−1)、β(t−1)を、検出部DETおよび記憶部MEMからそれぞれ受ける。また、算出部CALは、式(32)のX1、s2、a、s1をプロジェクタPROおよびカメラCAMの設定値等から取得する。そして、算出部CALは、例えば、時刻tに投射するパターン光の液晶ライトバルブLCLVにおける黒帯の幅β(t)を、式(32)に基づいて算出する。
なお、算出部CALは、例えば、幅データα(t−1)を黒帯毎に受けた場合、黒帯の幅β(t)を黒帯毎に算出する。この場合、プロジェクタPROから投影されるパターン光の黒帯の幅は黒帯毎に異なるが、左右画像IMGL、IMGR上の黒帯の幅は、全て所定の幅となるように最適化される。
また、例えば、算出部CALは、カラー帯の色が混じり合う領域(例えば、図2の比較例に示した領域MIX)の幅を示すデータを黒帯の幅データα(t−1)として受けた場合、α(t−1)を負の値として処理する。
なお、この実施形態では、収束の速度を調整するとともに、振動の影響を抑制するために、学習係数γ(t−1)を、式(32)の右辺第1項に追加してもよい。この場合、式(32)は、式(33)に変形される。
β(t)=γ(t-1)*X1*s2*(1-α(t-1))/(a*s1)+β(t-1) ‥(33)
学習係数γ(t−1)は、0より大きく1以下の固定値でもよいし、時間の経過とともに小さくなる関数(例えば、γ(t)=q*γ(t−1)、0<q≦1)でもよい。さらに、この実施形態では、式(33)は、ユーザ入力等により可変に設定される変数h2を用いた式(34)に変形されてもよい。
β(t)=γ(t-1)*X1*s2*(h2-α(t-1))/(a*s1)+β(t-1) ‥(34)
例えば、ユーザは、h2を0に設定し、時刻tの左右画像IMGL、IMGR上の黒帯の幅を0画素分に設定してもよいし、h2を1.5に設定し、時刻tの左右画像IMGL、IMGR上の黒帯の幅を1.5画素分に設定してもよい。
図8は、図1に示した距離測定装置MSYSの動作の一例を示している。図8の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、距離測定プログラム等のソフトウエアは、プロジェクタPROおよびカメラCAMの制御や演算部OP1の動作(例えば、ステップS200、S400−S700)をコンピュータに実行させてもよい。すなわち、コンピュータは、距離測定プログラムを記録した記憶媒体を読み取り、プロジェクタPROおよびカメラCAMの制御や演算部OP1の動作を実行してもよい。
なお、プロジェクタPROおよびカメラCAMの制御や演算部OP1の動作(例えば、ステップS200、S400−S700)をコンピュータに実行させるプログラムは、距離測定プログラムの一態様である。また、演算部OP1の動作(例えば、ステップS200、S400−S700)をコンピュータに実行させるプログラムも距離測定プログラムの一態様である。
ステップS100では、プロジェクタPROおよびカメラCAMは、絞り、焦点位置を調整する。例えば、プロジェクタPROは、絞り機構DM1を制御してレンズLEN1の絞りを調整する。また、プロジェクタPROは、レンズLEN1の位置を制御して焦点位置を調整する。これにより、レンズLEN1の開口径D1、レンズLEN1と液晶ライトバルブLCLVとの距離X1等が設定される。
また、例えば、カメラCAMRは、絞り機構DM2を制御してレンズLEN2の絞りを調整する。カメラCAMRは、レンズLEN2の位置を制御して焦点位置を調整する。これにより、レンズLEN2の開口径D2、レンズLEN2と撮像素子ISENとの距離a等が設定される。なお、カメラCAMLは、例えば、カメラCAMRで設定された絞り、焦点位置に基づいて、絞り、焦点位置を設定する。
ステップS200では、演算部OP1は、パターン光の黒帯の幅の初期値を設定する。例えば、演算部OP1は、カラー帯と黒帯とが交互に現れる縞模様のパターン光の黒帯の幅を、任意の初期値に設定する。そして、例えば、演算部OP1のパターン生成部PGENは、黒帯の幅の初期値を含むパターン情報PTINFをプロジェクタPROに出力する。
なお、演算部OP1は、黒帯の幅の初期値を、図6で説明した式(29)に基づいて算出してもよい。例えば、演算部OP1は、黒帯の幅の初期値を式(29)に基づいて算出する場合、式(29)に用いられる距離X1等のパラメータを、プロジェクタPROおよびカメラCAMの設定値等(ステップS100により設定された調整値等)から取得する。
ステップS300では、プロジェクタPROは、演算部OP1で設定されたパターンのパターン光を被写体OBJ(測定対象の物体)に投射する。例えば、プロジェクタPROは、ステップS200で設定されたパターン情報PTINFを受けた場合、黒帯の幅がステップS200で設定された初期値であるパターン光を、被写体OBJに投射する。また、例えば、プロジェクタPROは、ステップS500で更新されたパターン情報PTINFを受けた場合、黒帯の幅がステップS500で更新された値であるパターン光を、被写体OBJに投射する。
ステップS400では、距離測定装置MSYSは、左画像IMGLと右画像IMGRとを取得する。例えば、カメラCAMR、CAMLは、ステップS300で投射されたパターン光を受けている被写体OBJを撮影する。そして、演算部OP1の取得部CIFは、カメラCAML、CAMRで撮影された左右画像IMGL、IMGRを取得する。
ステップS500では、演算部OP1の更新部UPDは、今回のパターン光の黒帯の幅を更新する。例えば、更新部UPDは、ステップS400で取得した左右画像IMGL、IMGR、ステップS100で設定された絞り、焦点位置等に基づいて、黒帯の幅を算出する。すなわち、更新部UPDは、例えば、図7で説明した式(32)に基づいて、黒帯の幅を算出する。あるいは、更新部UPDは、式(33)に基づいて黒帯の幅を算出してもよいし、式(34)に基づいて黒帯の幅を算出してもよい。
なお、今回のパターン光が実際に投射されるか否かは、ステップS600で判定される。また、今回のパターン光に対して、ステップS500の前に実行されたステップS300で投射されたパターン光を前回のパターン光とも称する。
ステップS600では、演算部OP1は、更新値(ステップS500で更新した黒帯の幅)の変化量が予め決められた閾値以下か否かを判定する。例えば、演算部OP1は、ステップS500で更新した黒帯の幅と更新前の黒帯の幅との差が閾値以下か否かを判定する。更新前の黒帯の幅データβは、例えば、演算部OP1の記憶部MEMに記憶されている。
更新値の変化量が閾値以下であるとき(ステップS600のYes)、距離測定装置MSYSの動作は、ステップS700に移る。一方、更新値の変化量が閾値より大きいとき(ステップS600のNo)、距離測定装置MSYSの動作は、ステップS300に戻る。すなわち、黒帯の幅の更新処理は、更新値の変化量が閾値以下になるまで繰り返される。
なお、距離測定装置MSYSの動作がステップS300に戻る場合、プロジェクタPROは、ステップS500で更新された黒帯の幅データβを含むパターン情報PTINFを演算部OP1から受ける。また、更新値の変化量が閾値より大きいとき、記憶部MEMに記憶されている幅データβは、ステップS500で更新された黒帯の幅データβに更新される。
ステップS700では、演算部OP1の距離測定部DMは、左画像IMGLと右画像IMGRとを用いて、所定の位置から被写体OBJまでの距離を測定する。例えば、距離測定部DMは、ステップS400で取得した左右画像IMGL、IMGRから視差量を算出する。この際、距離測定部DMは、例えば、パターン光の色の組み合わせ(カラー帯の配列)に基づいて、左右画像IMGL、IMGRの互いに対応する位置(被写体OBJの測定対象の部分)を特定する。
また、距離測定部DMは、カメラCAMRとカメラCAMLとの間隔およびカメラCAMR、CAMLの焦点距離の情報を取得する。そして、距離測定部DMは、左右画像IMGL、IMGRの視差量、カメラCAMRとカメラCAMLとの間隔およびカメラCAMR、CAMLの焦点距離に基づいて、所定の位置から被写体OBJまでの距離を測定する。
なお、カメラCAMR、CAMLの焦点距離は、例えば、ステップS100で調整されたレンズLEN2の位置から撮像素子ISENまでの距離aに対応している。また、カメラCAMRとカメラCAMLとの間隔は、既知の値である。
このように、この実施形態では、距離測定装置MSYSは、黒帯の幅の更新処理(ステップS300−S600)を、更新値の変化量が閾値以下になるまで繰り返す。これにより、この実施形態では、パターン光の黒帯の幅を、適切な幅(例えば、カラー帯の区切りとして利用可能な最小の幅)に設定できる。
なお、距離測定装置MSYSの動作は、この例に限定されない。例えば、ステップS600は、省かれてもよい。この場合、距離測定装置MSYSは、例えば、ステップS100、S200、S300、S400、S500を実行した後に、ステップS300、S400、S700を実行する。
図9は、図7に示した更新部UPDの動作の一例を示している。なお、図9の動作は、図8に示したステップS500に対応している。図9の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、距離測定プログラム等のソフトウエアは、図9の動作をコンピュータに実行させてもよい。すなわち、コンピュータは、距離測定プログラムを記録した記憶媒体を読み取り、図9の動作を実行してもよい。
ステップS510では、更新部UPDの検出部DETは、左右画像IMGL、IMGR上の黒帯の幅α(t−1)を検出する。黒帯の幅α(t−1)は、例えば、図8のステップS300で投射されたパターン光を受けている被写体OBJの左右画像IMGL、IMGR上の黒帯の幅である。
ステップS520では、更新部UPDの算出部CALは、黒帯の幅β(t−1)、α(t−1)、液晶ライトバルブLCLVの1画素の幅s1、撮像素子ISENの1画素の幅s2、距離X1、aを用いて、今回のパターン光の黒帯の幅β(t)を算出する。
黒帯の幅β(t−1)は、前回のパターン光(例えば、図8のステップS300で投射されたパターン光)の液晶ライトバルブLCLVにおける黒帯の幅である。算出部CALは、例えば、黒帯の幅β(t−1)を記憶部MEMから読み出す。また、算出部CALは、例えば、ステップS510で検出された黒帯の幅α(t−1)を、検出部DETから受ける。
距離X1は、例えば、図8のステップS100で調整されたレンズLEN1の位置から液晶ライトバルブLCLVまでの距離である。例えば、算出部CALは、1画素の幅s1等の設計情報およびステップS100で調整された設定値の情報を含む設定情報SINFPを、プロジェクタPROから受ける。
距離aは、例えば、図8のステップS100で調整されたレンズLEN2の位置から撮像素子ISENまでの距離である。例えば、算出部CALは、1画素の幅s2等の設計情報およびステップS100で調整された設定値の情報を含む設定情報SINFPを、カメラCAMRから受ける。そして、算出部CALは、例えば、図7で説明した式(32)に基づいて、黒帯の幅β(t)を算出する。なお、算出部CALは、式(33)に基づいて黒帯の幅β(t)を算出してもよいし、式(34)に基づいて黒帯の幅β(t)を算出してもよい。
ステップS530では、更新部UPDは、ステップS520で算出した今回のパターン光の黒帯の幅β(t)を記憶部MEMに記憶する。例えば、更新部UPDは、今回のパターン光の黒帯の幅β(t)と前回のパターン光の黒帯の幅β(t−1)との差が閾値より大きいとき、黒帯の幅β(t)を記憶部MEMに記憶する。
なお、更新部UPDの動作は、この例に限定されない。例えば、更新部UPDは、ステップS520で算出した今回のパターン光の黒帯の幅β(t)を、更新値の変化量に拘わらず、記憶部MEMに記憶してもよい。
ここで、パターン光の液晶ライトバルブLCLVにおける黒帯の幅の設定例を、具体的な数値を用いて説明する。例えば、カメラCAM(CAMR、CAML)は、2眼式のデジタルビデオカメラである。カメラCAMの仕様は、例えば、絞り値(F値)が1.8から3.4で、焦点距離が3.2から32.0mmで、撮像素子ISENのサイズが1/3.91型(横幅は、5.2mm)で、撮像素子ISENの画素数が1920*1080である。
また、プロジェクタPROの仕様は、例えば、絞り値(F値)が1.44で、焦点距離が16.7mmで、液晶ライトバルブLCLVのサイズが0.55型(横幅は、11.2mm)で、液晶ライトバルブLCLVの画素数が800*600である。
例えば、図8に示したステップS100の実行により、カメラCAMR、CAMLの焦点距離が17.6mmに調整され、カメラCAMR、CAMLのレンズLEN2の絞りが2.6に調整されたとする。また、プロジェクタPROおよびカメラCAMは、300mmの位置に焦点が合っている。
この場合、例えば、プロジェクタPROのレンズLEN1と液晶ライトバルブLCLVとの距離X1は、17.7mm(1/焦点距離=1/焦点を合わせた位置+1/X1に、焦点距離=16.7および焦点を合わせた位置=300を代入する)である。カメラCAMR、CAMLのレンズLEN2と撮像素子ISENとの距離aは、18.7mm(1/焦点距離=1/焦点を合わせた位置+1/aに、焦点距離=17.6および焦点を合わせた位置=300を代入する)である。液晶ライトバルブLCLVの1画素の幅s1は、0.014mm(=11.2mm/800)である。撮像素子ISENの1画素の幅s2は、0.0027mm(=5.2mm/1920)である。
また、レンズの開口径は、焦点距離を絞り値で割ることにより算出される。例えば、プロジェクタPROのレンズLEN1の開口径D1は、11.6mm(=16.7mm/1.44)である。撮像素子ISENのレンズLEN2の開口径D2は、6.77mm(=17.6mm/2.6)である。プロジェクタPROおよびカメラCAMの焦点が合う位置までの距離u1、u2は、300mmである。プロジェクタPROおよびカメラCAMの焦点ずれの最大範囲(公差n、k)は、例えば、物体の凹凸も含めて広めに設定されている。例えば、公差n、kは、0.8(最大で20%のずれ)に設定されている。
先ず、パターン光の黒帯の幅に対応する画素数N1の初期値は、例えば、式(29)のs1、X1、D1、n、u1、D2、k、s2、aに、上述の値を代入することにより算出される。例えば、式(29)を満たす画素数N1の最小値は、約15.67である。なお、画素数N1の初期値は、カラー帯の色が混ざることを避けるため、式(29)を満たす画素数N1の最小値(15.67)の小数を切り上げして算出される。この例では、画素数N1の初期値は、16画素に設定される。
次に、16画素の幅に設定された黒帯を有するパターン光が投影された被写体OBJの左右画像IMGL、IMGR上の黒帯の幅α(t−1)に基づいて、画素数N1が更新される。例えば、パターン光を被写体OBJに投影したときの焦点ずれの実際の範囲は、被写体OBJの凹凸の具合によっては、15%程度に収まる場合等が考えられる。この場合、黒帯の幅が最適な幅に比べて広くなり、測定の分解能が低下する。
例えば、焦点ずれの範囲が15%の場合(n=0.85の場合)、黒帯の幅α(t−1)は、式(30)より、約24.0と見積もられる。この見積もりでは、推定誤差Erは、D1*|n−1|/u1+D2*|k−1|/u2において、n=k=0.85としたときの結果(0.009185)とn=k=0.8としたときの結果(0.0122466)との差分としている。実動作では、黒帯の幅α(t−1)は、例えば、左右画像IMGL、IMGR上の黒帯の幅を計測することにより算出される。
ここで、例えば、γ(t−1)=1、X1=17.7、s2=0.0027、α(t−1)=24.0、a=18.7、s1=0.014、β(t−1)=16として式(33)を計算すると、β(t)≒11.8015が得られる。そして、画素数N1は、式(33)より得られたβ(t)の値(11.8015)の小数を切り上げして、12画素に更新される。この場合、更新値の変化量は、4(=16−12)画素である。
例えば、図8のステップS600で使用される閾値が1画素の場合、更新値の変化量が閾値より大きいため、12画素の幅に更新された黒帯を有するパターン光が被写体OBJに投影される。この場合、例えば、黒帯の幅が12画素であるパターン光を受けた被写体OBJの左右画像IMGL、IMGR上の黒帯の幅αは、式(30)より、約2.1と見積もられる。
例えば、γ(t−1)=1、X1=17.7、s2=0.0027、α(t−1)=2.1、a=18.7、s1=0.014、β(t−1)=12として式(33)を計算すると、β(t)≒11.7992が得られる。そして、画素数N1は、式(33)より得られたβ(t)の値(11.7992)の小数を切り上げして、12画素に更新される。更新後の黒帯の幅の画素数N1が更新前の黒帯の幅の画素数N1と同じ値になるため、黒帯の幅は収束していると判断できる。例えば、更新値の変化量は、0(=12−12)画素である。
この場合、更新値の変化量(例えば、0画素)が閾値(例えば、1画素)以下であるため、黒帯の幅が12画素であるパターン光を受けた被写体OBJの左右画像IMGL、IMGRに基づいて、所定の位置から被写体OBJまでの距離が測定される。
なお、式(30)において、β(t−1)=11.8015としてα(t−1)を計算すると、α(t−1)≒1.03889が得られる。このように、目標値である1とほぼ同じ値が得られる。なお、プロジェクタPROで投射可能な幅が画素単位(整数値)であるため、カラー帯の色が混ざらないように、β(t)の小数を切り上げして黒帯の幅を算出している。
この例では、黒帯の幅の初期値が16画素に設定され、黒帯の幅の最終的な値が12画素に設定される。したがって、初期値と最終的な値とには、4画素の違いがある。カラー帯の幅を15画素とした場合、初期値(16画素)の幅の黒帯とカラー帯とを合わせた領域の幅は、31画素(=15+16画素)となる。この場合、横サイズが800画素のプロジェクタPROから投影されるパターン光に含まれるカラー帯の数は、例えば、25個(800/31の計算結果を切り下げした値)である。
一方、最終的な値(12画素)の幅の黒帯とカラー帯とを合わせた領域の幅は、27画素(=12+15画素)となる。この場合、横サイズが800画素のプロジェクタPROから投影されるパターン光に含まれるカラー帯の数は、例えば、29個(800/27の計算結果を切り下げした値)である。すなわち、黒帯の幅を更新することにより、パターン光に含まれるカラー帯の数は、約16.0%(=(29−25)/25*100)増加する。例えば、黒帯の幅の更新後では、更新前より、測定の分解能を約16.0%向上できる。
図10は、パターン光を用いた距離測定の一例を示している。なお、図10では、図を見やすくするために、プロジェクタPROの記載を省略している。図10の太い破線は、被写体OBJからカメラCAMRのレンズLEN2の中心を通過して撮像素子ISENに到達する光を示す線を、カメラCAMLのレンズLEN2の中心まで平行移動した線である。
カメラCAMRとカメラCAMLとの間隔DISは、例えば、カメラCAMR、CAMLの設計情報として、演算部OP1に予め通知されている。視差量DPは、左右画像IMGL、IMGRから算出される。レンズLEN2と撮像素子ISENとの距離aは、カメラCAMRが被写体OBJに焦点を合わせた際の設定情報SINFCから算出される。例えば、レンズLEN2と被写体OBJとの間の光軸方向に沿う距離uは、カメラCAMRとカメラCAMLとの間隔DIS、視差量DP、レンズLEN2と撮像素子ISENとの距離aとを用いて、三角形の相似関係により算出される。
以上、図1から図10に示した実施形態の距離測定装置MSYSおよび距離測定方法は、プロジェクタPROおよびカメラCAMR、CAMLの設定値等に基づいて、最終的なパターン光の液晶ライトバルブLCLVにおける黒色の領域の幅を算出する。例えば、算出部OP1は、パターン光の液晶ライトバルブLCLV上の黒帯の幅、物体OBJを撮影した2つの画像IMGL、IMGR上の黒帯の幅、距離X1、aに基づいて、最終的なパターン光の液晶ライトバルブLCLVにおける黒色の領域の幅を算出する。なお、距離X1は、液晶ライトバルブLCLVとレンズLEN1との距離であり、プロジェクタPROの設定値である。また、距離aは、撮像素子ISENとレンズLEN2との距離であり、カメラCAMR、CAMLの設定値である。
このように、この実施形態では、一時刻前と現時刻における黒帯の幅の関係に基づいて黒帯の幅を更新する。これにより、この実施形態では、互いに隣接するカラー帯の色が混ざらない範囲で、黒帯の幅を最小値に更新できる。この結果、この実施形態では、測定が不安定になることを防止しつつ、測定の分解能を向上できる。例えば、この実施形態では、ボリュームデータ測定の分解能を向上できる。
図11は、距離測定装置および距離測定方法の別の実施形態を示している。この実施形態の距離測定装置MSYSでは、図1に示した距離測定装置MSYSに初期値推定部IESTが追加されている。図11に示した距離測定装置MSYSのその他の構成は、図1に示した距離測定装置MSYSと同様である。図1から図10で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
距離測定装置MSYSは、例えば、プロジェクタPROと、2つのカメラCAM(CAMR、CAML)と、演算部OP2とを有している。プロジェクタPROおよびカメラCAMは、図1に示したプロジェクタPROおよびカメラCAMと同様である。演算部OP2は、プロジェクタPROと、パターン光が投影された物体の左右画像IMGL、IMGRを生成する撮像装置(例えば、カメラCAML、CAMR)とを用いて、所定の位置から物体までの距離を算出する距離測定装置の一例である。すなわち、演算部OP2も距離測定装置の一態様である。
演算部OP2は、例えば、取得部CIF、更新部UPD、パターン生成部PGEN、距離測定部DMおよび初期値推定部IESTを有している。取得部CIF、更新部UPD、パターン生成部PGENおよび距離測定部DMは、図1に示した取得部CIF、更新部UPD、パターン生成部PGENおよび距離測定部DMと同様である。すなわち、演算部OP2では、図1に示した演算部OP1に初期値推定部IESTが追加されている。演算部OP2のその他の構成は、図1に示した演算部OP1と同様である。また、演算部OP2の動作は、初期値推定部IESTに関する動作を除いて、図1に示した演算部OP1と同様である。
初期値推定部IESTは、パターン光の液晶ライトバルブLCLVにおける黒帯の幅の初期値を設定する設定部の一例である。例えば、初期値推定部IESTは、プロジェクタPROの設定情報SINFPおよびカメラCAML、CAMRの設定情報SINFCを、プロジェクタPROおよびカメラCAMRからそれぞれ受ける。そして、初期値推定部IESTは、設定情報SINFP、SINFCに基づいて、パターン光の液晶ライトバルブLCLVにおける黒帯の幅の初期値β(0)を算出する。
設定情報SINFPには、例えば、レンズLEN1の開口径D1、焦点が合う位置までの距離u、焦点ずれの最大範囲に対応する公差n、液晶ライトバルブLCLVの1画素の幅s1、液晶ライトバルブLCLVとレンズLEN1との距離X1が含まれる。設定情報SINFPに含まれる距離uは、例えば、プロジェクタPROがパターン光を物体OBJに投影するために合わせた焦点の位置に対応している。公差nは、例えば、プロジェクタPROの焦点ズレとして予め与えられている。
また、設定情報SINFCには、例えば、レンズLEN2の開口径D2、焦点が合う位置までの距離u、焦点ずれの最大範囲に対応する公差k、撮像素子ISENの1画素の幅s2、撮像素子ISENとレンズLEN2との距離aが含まれる。設定情報SINFCに含まれる距離uは、例えば、カメラCAMRが物体OBJを撮影するために合わせた焦点の位置に対応している。公差kは、例えば、カメラCAMRの焦点ズレとして予め与えられている。
例えば、初期値推定部IESTは、図6で説明した式(29)のs1、X1、D1、n、u1、D2、k、u2、s2、aに設定情報SINFP、SINFCから取得した値を代入する。これにより、式(29)を満たす画素数N1の最小値が算出される。例えば、初期値推定部IESTは、式(29)を満たす画素数N1の最小値を、液晶ライトバルブLCLV上の黒帯の幅W1に対応する画素数N1の初期値β(0)に設定する。そして、初期値推定部IESTは、幅データβ(0)をパターン生成部PGENに出力する。
これにより、距離測定装置MSYSは、最初に投射するパターン光を、黒帯の幅が広くなり過ぎることを抑制しつつ、投射ぼけや撮像ぼけが発生したときにもカラー帯の区切りとして利用可能に生成できる。黒帯がカラー帯の区切りとして利用可能であるため、例えば、更新部UPDは、更新処理時に、左右画像IMGL、IMGR上の黒帯の幅を容易に検出できる。
なお、距離測定装置MSYSの構成は、この例に限定されない。例えば、初期値推定部IESTは、パターン生成部PGENに含まれてもよいし、更新部UPDに含まれてもよい。また、例えば、距離測定装置MSYSは、2つのカメラCAMR、CAMLの代わりに、ステレオアダプタが装着された1つのカメラCAMRを有してもよい。
以上、図11に示した実施形態においても、図1から図10に示した実施形態と同様の効果を得ることができる。例えば、この実施形態では、測定が不安定になることを防止しつつ、測定の分解能を向上できる。さらに、この実施形態では、演算部OP2は、初期値推定部IESTを有している。例えば、初期値推定部IESTは、プロジェクタPROの設定情報SINFPおよびカメラCAML、CAMRの設定情報SINFCに基づいて、パターン光の液晶ライトバルブLCLVにおける黒帯の幅の初期値を設定する。
このように、この実施形態では、初期値推定部IESTは、カメラCAML、CAMRの設定値とプロジェクタPROの設定値とパターン光の黒帯の幅の関係から、黒帯の幅が最小となる値を推定する。そして、更新部UPDは、一時刻前と現時刻における黒帯の幅の関係に基づいて黒帯の幅を更新することにより、推定誤差の影響を除去する。これにより、パターン光は、色が混ざらない、かつ黒帯の幅が最小となるように更新される。この結果、ボリュームデータ測定の分解能が向上する。なお、この実施形態では、最初に投射されるパターン光の黒帯がカラー帯の区切りとして利用可能であるため、更新部UPDは、黒帯の幅を更新する際、左右画像IMGL、IMGR上の黒帯の幅を容易に検出できる。
図12は、ステレオアダプタADAPを用いたときの距離測定の一例を示している。図12では、例えば、距離測定装置MSYSは、図1や図11に示した2つのカメラCAMR、CAMLの代わりに、ステレオアダプタADAPが装着された1つのカメラCAM1を有している。例えば、カメラCAM1は、図1に示したカメラCAMRと同様である。ステレオアダプタADAPが装着されたカメラCAM1は、パターン光が投影された物体を互いに異なる位置から撮影した2つの画像IMG(IMGR、IMGL)を生成する撮像装置の一例である。
ステレオアダプタADAPは、ミラーMIR1a、MIR1b、MIR2を有している。ミラーMIR1a、MIR1bは、ミラーMIR2より外側に配置されている。図12(a)に示すように、被写体OBJが発する光は、例えば、ミラーMIR1a、MIR1bに到達する。被写体OBJからミラーMIR1aに到達した光は、ミラーMIR1aで反射してミラーMIR2に到達する。そして、ミラーMIR1aで反射してミラーMIR2に到達した光は、ミラーMIR2で反射してレンズLEN2を通過して撮像素子ISENに到達する。
一方、被写体OBJからミラーMIR1bに到達した光は、ミラーMIR1bで反射してミラーMIR2に到達する。そして、ミラーMIR1bで反射してミラーMIR2に到達した光は、ミラーMIR2で反射してレンズLEN2を通過して撮像素子ISENに到達する。これにより、ステレオアダプタADAPが装着されたカメラCAM1は、パターン光が投影された被写体OBJを互いに異なる位置から撮影した2つの画像IMG(IMGR、IMGL)を生成できる。なお、ステレオアダプタADAPの基線長BLNは、例えば、外側のミラーMIR1a、MIR1bの間隔に対応している。
外側のミラーMIR1a、MIR1bから内側のミラーMIR2を経由してレンズLEN2に入る線の距離は、被写体OBJから外側のミラーMIR1a、MIR1bまでの線の距離に比べて十分短い。このため、内側のミラーMIR2と外側のミラーMIR1a、MIR1bが平行でないことによる歪みやボケの影響がないと仮定する。この場合、基線長BLNのステレオアダプタADAPが装着されたカメラCAM1は、図12(b)に示すように、基線長BLNと同じ間隔で配置された2台のカメラCAM1a、CAM1bで近似される。なお、カメラCAM1a、CAM1bは、レンズLEN2a、LEN2bの光軸がミラーMIR1a、MIR1bの面に垂直となるように傾けられている。
カメラCAM1a、CAM1bが傾いたままでは、図13に示すように、台形歪みが発生する。台形歪みの特性は、例えば、ステレオアダプタADAPの構造(ミラーMIR1a、MIR1b、MIR2の傾き、配置等)から事前に得られる。そして、台形歪みの特性から、補正行列のパラメータが求められる。補正行列を用いて補正されたカメラCAM1a、CAM1bは、図12(c)に示すように、カメラCAM1aとカメラCAM1bとの間隔DISが基線長BLで、レンズLEN2a、LEN2bの光軸が互いに平行となるように配置される。
このように、ステレオアダプタADAPを用いたときにも、ステレオアダプタADAPの基線長BLNをカメラ間隔DISとして、距離を計測できる。なお、例えば、内側のミラーMIR2と外側のミラーMIR1a、MIR1bが平行でないことによる歪みを無視しない場合には、台形歪みを補正する際に、歪みの特性から補正行列を求めて補正してもよい。
また、ステレオアダプタADAPを用いたときにも、パターン光の黒帯を更新する際に参照されるカメラCAMの設定値(開口径D2、距離a等)として、カメラCAM1の設定値(開口径D2、距離a等)を利用できる。
図13は、ステレオアダプタADAPを用いたときの歪みの一例を示している。カメラCAM1a、CAM1bが傾いていない場合は、撮像素子上において、左右画像IMGL、IMGRに、歪みは発生していない。これに対し、カメラCAM1a、CAM1bが傾いている場合は、撮像素子上において、左右画像IMGL、IMGRに、台形歪みが発生している。例えば、左画像IMGLは、左辺が右辺より短い台形状に歪む。また、例えば、右画像IMGRは、右辺が左辺より短い台形状に歪む。
図14は、ステレオアダプタADAPを用いて撮影した画像IMGL、IMGRの一例を示している。図の黒丸は、歪みがないときの位置を示し、白丸は、歪みにより移動した位置を示している。レンズの性質で撮像される映像は撮像素子上の映像とは逆さになることから、撮像される映像では撮像素子上における歪みとは逆方向に歪んでいる。
左画像IMGL1では、例えば、歪みにより、左上および左下の位置の像は、左上方向および左下方向にそれぞれ移動し、右上および右下の位置の像は、左下方向および左上方向にそれぞれ移動している。これにより、例えば、”E”の形状の被写体OBJを撮影した左画像IMGL2では、被写体OBJは、右側が左側に比べて短くなる。
右画像IMGR1では、例えば、歪みにより、左上および左下の位置の像は、右下方向および右上方向にそれぞれ移動し、右上および右下の位置の像は、右上方向および右下方向にそれぞれ移動している。これにより、例えば、”E”の形状の被写体OBJを撮影した右画像IMGR2では、被写体OBJは、左側が右側に比べて短くなる。右画像IMGR2内の破線は、左画像IMGL2を右画像IMGR2に重ねたときの左画像IMGL2の被写体OBJを示している。
左右画像IMGL1、IMGR1の矢印は、例えば、台形歪みの特性を示している。台形歪みの特性に基づいて、補正行列のパラメータが求められる。例えば、歪みがないときの位置をPsrc={Xsrc、Ysrc、1}とし、歪みにより移動した位置をPdst={Xdst、Ydst、1}とする。この場合、歪みにより移動した位置Pdstは、射影変換行列をRTとした場合、式(35)で表される。また、歪みがないときの位置Psrcは、射影変換行列RTの逆行列RT−1を用いて、式(36)で表される。
Pdst=RT*Psrc ‥(35)
Psrc=RT−1*Pdst ‥(36)
例えば、X方向にtx、Y方向にtyだけ平行移動することを示す射影変換行列RTは、式(37)で表される。
また、例えば、サイズがW*H画素の画像に対して、画像の中央画素を回転の中心としてθ[rad]回転することを示す示す射影変換行列RTは、式(38)で表される。
ステレオアダプタADAPを用いたときにも、台形歪みの特性から射影変換行列RTを求めることにより、台形歪みを補正できる。
図15は、プロジェクタの別の例を示している。図15では、例えば、距離測定装置MSYSは、図1や図11に示したプロジェクタPROの代わりに、プロジェクタPRO2を有している。プロジェクタPRO2は、例えば、赤、緑、青の光に対して専用の液晶ライトバルブLCLVr、LCLVg、LCLVbを用いてパターン光を投射することを除いて、図1に示したプロジェクタPROと同様である。図1から図11で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
プロジェクタPRO2は、例えば、光源LSと、液晶ライトバルブLCLVr、LCLVg、LCLVbと、ダイクロイックミラーDMIR(DMIR1−DMIR7)と、レンズLEN1と、絞り機構DM1とを有している。ダイクロイックミラーDMIRは、特定の波長の光を反射する。なお、特定の波長以外の光は、ダイクロイックミラーDMIRを透過する。図の破線は、光の経路の一例を示している。
例えば、光源LSから放射された赤の光は、ダイクロイックミラーDMIR1を透過し、ダイクロイックミラーDMIR4で反射して、液晶ライトバルブLCLVrに到達する。光源LSから放射された緑の光は、ダイクロイックミラーDMIR1で反射してダイクロイックミラーDMIR2に到達する。そして、ダイクロイックミラーDMIR2に到達した緑の光は、ダイクロイックミラーDMIR2で反射して、液晶ライトバルブLCLVgに到達する。
光源LSから放射された青の光は、ダイクロイックミラーDMIR1で反射し、ダイクロイックミラーDMIR2を透過してダイクロイックミラーDMIR3で反射する。そして、ダイクロイックミラーDMIR3で反射した青の光は、ダイクロイックミラーDMIR5に向かい、ダイクロイックミラーDMIR5で反射して液晶ライトバルブLCLVbに到達する。
液晶ライトバルブLCLVr、LCLVg、LCLVbは、それぞれ赤、緑、青の光をパターン情報PTINFに基づくパターンのパターン光に変調する。例えば、液晶ライトバルブLCLVrから放射される赤のパターン光は、ダイクロイックミラーDMIR7で反射し、レンズLEN1を介して被写体OBJに投影される。液晶ライトバルブLCLVbから放射される緑のパターン光は、ダイクロイックミラーDMIR6、DMIR7を透過し、レンズLEN1を介して被写体OBJに投影される。液晶ライトバルブLCLVbから放射される青のパターン光は、ダイクロイックミラーDMIR6で反射し、レンズLEN1を介して被写体OBJに投影される。
このように、赤、緑、青のパターン光がレンズLEN1を介して被写体OBJに投影される。したがって、図1に示したプロジェクタPROと同様に、パターン情報PTINFに基づくパターンのパターン光が被写体OBJに投影される。なお、各液晶ライトバルブLCLVr、LCLVg、LCLVbからレンズLEN1までの光の経路の長さは、ほぼ等しい。このため、例えば、液晶ライトバルブLCLVgとレンズLEN1との距離X1が図3等に示した液晶ライトバルブLCLVとレンズLEN1との距離X1に対応する。
したがって、プロジェクタPRO2を用いた距離測定装置MSYSにおいても、図7で説明した式(32)、式(33)、式(34)のいずれかに基づいて、パターン光の黒帯の幅を適切な幅に更新できる。なお、プロジェクタPRO2の構成は、この例に限定されない。
図16は、図1および図11に示した演算部OP(OP1、OP2)のハードウエア構成の一例を示す図である。なお、図1から図15で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
コンピュータ装置CPは、プロセッサPUと、メモリMEM2と、ハードディスク装置HDDと、入出力インタフェースIFと、光学ドライブ装置ODRとを有している。プロセッサPUと、メモリMEM2と、ハードディスク装置HDDと、入出力インタフェースIFと、光学ドライブ装置ODRとは、バスBUSを介して互いに接続されている。例えば、演算部OP1あるいは演算部OP2の機能は、プロセッサPUと、メモリMEM2と、ハードディスク装置HDDと、入出力インタフェースIFとにより実現される。
光学ドライブ装置ODRは、光ディスク等のリムーバブルディスクRDISを装着可能であり、装着したリムーバブルディスクRDISに記録された情報の読み出しおよび記録を行う。また、コンピュータ装置CPは、例えば、入出力インタフェースIFを介してコンピュータ装置CPの外部と通信する。
メモリMEM2は、例えば、コンピュータ装置CPのオペレーティングシステムを格納している。また、メモリMEM2は、例えば、演算部OP1あるいは演算部OP2の動作をプロセッサPUが実行するための距離測定プログラム等のアプリケーションプログラムを格納している。
距離測定プログラム等のアプリケーションプログラムは、例えば、光ディスク等のリムーバブルディスクRDISに記録して頒布することができる。例えば、コンピュータ装置CPは、距離測定プログラム等のアプリケーションプログラムを、リムーバブルディスクRDISから光学ドライブ装置ODRを介して読み出し、メモリMEM2やハードディスク装置HDDに格納してもよい。また、コンピュータ装置CPは、距離測定プログラム等のアプリケーションプログラムを、インターネット等のネットワークに接続する通信装置を介してダウンロードし、メモリMEM2やハードディスク装置HDDに格納してもよい。
演算部OP1、OP2のハードウエア構成は、この例に限定されない。例えば、コンピュータ装置CPは、光学ドライブ装置ODRが省かれてもよい。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。