(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-07
(45)【発行日】2023-12-15
(54)【発明の名称】3次元形状計測方法及び3次元形状計測装置
(51)【国際特許分類】
G01B 11/25 20060101AFI20231208BHJP
【FI】
G01B11/25 H
(21)【出願番号】P 2021197429
(22)【出願日】2021-12-06
【審査請求日】2022-11-07
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(73)【特許権者】
【識別番号】000001270
【氏名又は名称】コニカミノルタ株式会社
(74)【代理人】
【識別番号】110001254
【氏名又は名称】弁理士法人光陽国際特許事務所
(72)【発明者】
【氏名】伊東 秀謹
(72)【発明者】
【氏名】鏡 慎吾
(72)【発明者】
【氏名】橋本 浩一
(72)【発明者】
【氏名】鈴木 大地
(72)【発明者】
【氏名】十都 善行
(72)【発明者】
【氏名】稲垣 義弘
【審査官】飯村 悠斗
(56)【参考文献】
【文献】特開2020-46229(JP,A)
【文献】特開2018-109531(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00-11/30
G01C 3/06
(57)【特許請求の範囲】
【請求項1】
投影画像を投影可能な投影部により、互いに異なる行方向縞パターンを含む複数の第1投影画像、及び互いに異なる列方向縞パターンを含む複数の第2投影画像を計測対象物に投影し、前記計測対象物の撮影画像を取得可能な撮影部により、前記複数の第1投影画像の各投影時における複数の第1撮影画像、及び前記複数の第2投影画像の各投影時における複数の第2撮影画像を取得する第1ステップと、
前記撮影画像の複数の撮影画素の各々に対応する、前記投影画像の投影画素を特定する第2ステップと、
前記第2ステップの結果に基づいて前記計測対象物の3次元形状を特定する第3ステップと、
を有し、
前記第2ステップでは、前記複数の撮影画素の各々について、
前記複数の第1撮影画像と、前記複数の第1投影画像の行方向縞パターンとに基づいて、前記投影画像の複数の画素行のうち当該撮影画素に対応する対応画素行を特定し、
前記複数の第2撮影画像と、前記複数の第2投影画像の列方向縞パターンとに基づいて、前記投影画像の複数の画素列のうち当該撮影画素に対応する対応画素列を特定し、
前記対応画素行及び前記対応画素列の交点に相当する投影画素のうちエピポーラ拘束を満たす投影画素から、当該撮影画素に対応する投影画素を特定する、
3次元形状計測方法。
【請求項2】
前記エピポーラ拘束を満たす投影画素は、前記投影画像におけるエピポーラ線と重なる投影画素である、請求項1に記載の3次元形状計測方法。
【請求項3】
前記エピポーラ拘束を満たす投影画素は、前記投影画像におけるエピポーラ線からの距離が所定距離以内である投影画素である、請求項1に記載の3次元形状計測方法。
【請求項4】
前記第2ステップでは、前記エピポーラ線に近い投影画素ほど重み付けが大きくなるように評価値を定め、当該評価値に基づいて、前記撮影画素に対応する投影画素を特定する、請求項3に記載の3次元形状計測方法。
【請求項5】
前記評価値が最も大きい投影画素を、前記撮影画素に対応する投影画素として特定する、請求項4に記載の3次元形状計測方法。
【請求項6】
前記評価値が所定の基準値以上である投影画素を、前記撮影画素に対応する投影画素として特定する、請求項4に記載の3次元形状計測方法。
【請求項7】
任意の前記撮影画素に対応する前記エピポーラ線が、前記投影画像の画素行及び画素列のいずれとも非平行となるように前記投影部及び前記撮影部の位置関係が定められている、請求項2~6のいずれか一項に記載の3次元形状計測方法。
【請求項8】
前記第2ステップでは、
前記複数の第1撮影画像、及び前記複数の第1投影画像に含まれる複数の前記行方向縞パターンに基づいて、前記複数の撮影画素の各々に対応する前記対応画素行を表すLTMを、スパース最適化により特定し、
前記複数の第2撮影画像、及び前記複数の第2投影画像に含まれる複数の前記列方向縞パターンに基づいて、前記複数の撮影画素の各々に対応する前記対応画素列を表すLTMを、スパース最適化により特定する、
請求項1~7のいずれか一項に記載の3次元形状計測方法。
【請求項9】
前記第1ステップでは、投影時に、前記行方向縞パターンにおける各前記画素行に対応する部分が、前記画素行ごとに異なる第1周波数で変化するような前記複数の第1投影画像、及び、投影時に、前記列方向縞パターンにおける各前記画素列に対応する部分が、前記画素列ごとに異なる第2周波数で変化するような前記複数の第2投影画像を投影し、
前記第2ステップでは、各撮影画素について、
前記複数の第1撮影画像に基づいて、前記第1周波数に基づく対応付けにより前記対応画素行を特定し、
前記複数の第2撮影画像に基づいて、前記第2周波数に基づく対応付けにより前記対応画素列を特定する、
請求項1~7のいずれか一項に記載の3次元形状計測方法。
【請求項10】
前記投影画像は、画素行の数及び画素列の数が等しい、請求項1~9のいずれか一項に記載の3次元形状計測方法。
【請求項11】
前記複数の第2投影画像の各々における前記列方向縞パターンは、パターンの向きを除いて、前記複数の第1投影画像の各々における前記行方向縞パターンと同一である、請求項10に記載の3次元形状計測方法。
【請求項12】
処理部を備えた3次元形状計測装置であって、
前記処理部は、
投影画像を投影可能な投影部により、互いに異なる行方向縞パターンを含む複数の第1投影画像、及び互いに異なる列方向縞パターンを含む複数の第2投影画像を計測対象物に投影させ、前記計測対象物の撮影画像を取得可能な撮影部により、前記複数の第1投影画像の各投影時における複数の第1撮影画像、及び前記複数の第2投影画像の各投影時における複数の第2撮影画像を取得させる第1処理と、
前記撮影画像の複数の撮影画素の各々に対応する、前記投影画像の投影画素を特定する第2処理と、
前記第2処理の結果に基づいて前記計測対象物の3次元形状を特定する第3処理と、
を実行し、
前記第2処理では、前記複数の撮影画素の各々について、
前記複数の第1撮影画像と、前記複数の第1投影画像の行方向縞パターンとに基づいて、前記投影画像の複数の画素行のうち当該撮影画素に対応する対応画素行を特定し、
前記複数の第2撮影画像と、前記複数の第2投影画像の列方向縞パターンとに基づいて、前記投影画像の複数の画素列のうち当該撮影画素に対応する対応画素列を特定し、
前記対応画素行及び前記対応画素列の交点に相当する投影画素のうちエピポーラ拘束を満たす投影画素から、当該撮影画素に対応する投影画素を特定する、
3次元形状計測装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元形状計測方法及び3次元形状計測装置に関する。
【背景技術】
【0002】
従来、計測対象物の3次元形状を計測する方法として、アクティブステレオ法が知られている。アクティブステレオ法では、プロジェクター等の投影部によりパターン画像(投影画像)が投影された計測対象物を撮影部により撮影し、得られた撮影画像に基づいて、投影画像の投影画素と、撮影画像の撮影画素との対応関係を特定し、三角測量法の原理により各対応点の奥行きを求める。
【0003】
アクティブステレオ法では、計測対象物の表面における直接反射以外の成分(光透過性部材における内部反射や、光沢のある表面における複数回反射等)が無視できない場合には、不適切な対応点が抽出されて計測誤差が生じる。この問題への対処方法の1つに、投影画素と撮影画素との対応関係を複数得ておき、そのうち直接反射によるものを抽出するアプローチがある。非特許文献1には、このようなアプローチによる3次元計測方法として、LTM(Light Transport Matrix)法が開示されている。
【0004】
LTM法は、画素ごとにランダムな画素値を取る複数の投影画像(以下、当該投影画像のパターンを「ランダムパターン」と記す)を投影したときの複数の撮影画像に基づいて、撮影画素と投影画素との全ての対応関係を表すLTMをスパース推定により求め、得られた対応点のうちエピポーラ拘束を満たすものを残す方法である。スパース推定は、LTMがスパース性(要素にゼロを多く含むという性質)を有していることを利用して、少ない観測数からLTMの非ゼロ要素を推定する(すなわち、劣決定系の連立方程式を解く)方法である。スパース推定によるLTMの算出には、LASSO型の最小値化問題を数値的に解く公知のアルゴリズムが適用できる。このため、LTM法によれば、多数の投影画素と撮影画素との対応関係を数値演算により特定することができる。
【0005】
ただし、ランダムパターンを用いたスパース推定によるLTMの算出には、計算量が非常に多く演算時間が長いという問題がある。これに対し、非特許文献1には、投影画像の解像度を段階的に変更することで、省略可能な計算を削ってLTMの非ゼロ要素を効率的に特定する「多段解像度LTM推定」と呼ばれる手法がさらに提案されている。
【先行技術文献】
【非特許文献】
【0006】
【文献】Naoya Chiba and Koichi Hashimoto. Ultra-fast multi-scale shape estimation of light transport matrix for complex light reflection objects. IEEE International Conference on Robotics and Automation (ICRA2018), pp. 6147-6152, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、多段解像度LTM推定では、解像度を段階的に切り替えていく際に、前段の解像度に係る計算結果を用いて後段の解像度に係る計算を行う必要がある。よって、後段の計算量を低減することはできるものの、各段階の計算を並列して行うことができないため、依然として演算時間が長いという課題がある。
【0008】
この発明の目的は、演算時間を短縮することができる3次元形状計測方法及び3次元形状計測装置を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、請求項1に記載の3次元形状計測方法の発明は、
投影画像を投影可能な投影部により、互いに異なる行方向縞パターンを含む複数の第1投影画像、及び互いに異なる列方向縞パターンを含む複数の第2投影画像を計測対象物に投影し、前記計測対象物の撮影画像を取得可能な撮影部により、前記複数の第1投影画像の各投影時における複数の第1撮影画像、及び前記複数の第2投影画像の各投影時における複数の第2撮影画像を取得する第1ステップと、
前記撮影画像の複数の撮影画素の各々に対応する、前記投影画像の投影画素を特定する第2ステップと、
前記第2ステップの結果に基づいて前記計測対象物の3次元形状を特定する第3ステップと、
を有し、
前記第2ステップでは、前記複数の撮影画素の各々について、
前記複数の第1撮影画像と、前記複数の第1投影画像の行方向縞パターンとに基づいて、前記投影画像の複数の画素行のうち当該撮影画素に対応する対応画素行を特定し、
前記複数の第2撮影画像と、前記複数の第2投影画像の列方向縞パターンとに基づいて、前記投影画像の複数の画素列のうち当該撮影画素に対応する対応画素列を特定し、
前記対応画素行及び前記対応画素列の交点に相当する投影画素のうちエピポーラ拘束を満たす投影画素から、当該撮影画素に対応する投影画素を特定する。
【0010】
請求項2に記載の発明は、請求項1に記載の3次元形状計測方法において、
前記エピポーラ拘束を満たす投影画素は、前記投影画像におけるエピポーラ線と重なる投影画素である。
【0011】
請求項3に記載の発明は、請求項1に記載の3次元形状計測方法において、
前記エピポーラ拘束を満たす投影画素は、前記投影画像におけるエピポーラ線からの距離が所定距離以内である投影画素である。
【0012】
請求項4に記載の発明は、請求項3に記載の3次元形状計測方法において、
前記第2ステップでは、前記エピポーラ線に近い投影画素ほど重み付けが大きくなるように評価値を定め、当該評価値に基づいて、前記撮影画素に対応する投影画素を特定する。
【0013】
請求項5に記載の発明は、請求項4に記載の3次元形状計測方法において、
前記評価値が最も大きい投影画素を、前記撮影画素に対応する投影画素として特定する。
【0014】
請求項6に記載の発明は、請求項4に記載の3次元形状計測方法において、
前記評価値が所定の基準値以上である投影画素を、前記撮影画素に対応する投影画素として特定する。
【0015】
請求項7に記載の発明は、請求項2~6のいずれか一項に記載の3次元形状計測方法において、
任意の前記撮影画素に対応する前記エピポーラ線が、前記投影画像の画素行及び画素列のいずれとも非平行となるように前記投影部及び前記撮影部の位置関係が定められている。
【0016】
請求項8に記載の発明は、請求項1~7のいずれか一項に記載の3次元形状計測方法において、
前記第2ステップでは、
前記複数の第1撮影画像、及び前記複数の第1投影画像に含まれる複数の前記行方向縞パターンに基づいて、前記複数の撮影画素の各々に対応する前記対応画素行を表すLTMを、スパース最適化により特定し、
前記複数の第2撮影画像、及び前記複数の第2投影画像に含まれる複数の前記列方向縞パターンに基づいて、前記複数の撮影画素の各々に対応する前記対応画素列を表すLTMを、スパース最適化により特定する。
【0017】
請求項9に記載の発明は、請求項1~7のいずれか一項に記載の3次元形状計測方法において、
前記第1ステップでは、投影時に、前記行方向縞パターンにおける各前記画素行に対応する部分が、前記画素行ごとに異なる第1周波数で変化するような前記複数の第1投影画像、及び、投影時に、前記列方向縞パターンにおける各前記画素列に対応する部分が、前記画素列ごとに異なる第2周波数で変化するような前記複数の第2投影画像を投影し、
前記第2ステップでは、各撮影画素について、
前記複数の第1撮影画像に基づいて、前記第1周波数に基づく対応付けにより前記対応画素行を特定し、
前記複数の第2撮影画像に基づいて、前記第2周波数に基づく対応付けにより前記対応画素列を特定する。
【0018】
請求項10に記載の発明は、請求項1~9のいずれか一項に記載の3次元形状計測方法において、
前記投影画像は、画素行の数及び画素列の数が等しい。
【0019】
請求項11に記載の発明は、請求項10に記載の3次元形状計測方法において、
前記複数の第2投影画像の各々における前記列方向縞パターンは、パターンの向きを除いて、前記複数の第1投影画像の各々における前記行方向縞パターンと同一である。
【0020】
また、上記目的を達成するため、請求項12に記載の3次元形状計測装置の発明は、
処理部を備えた3次元形状計測装置であって、
前記処理部は、
投影画像を投影可能な投影部により、互いに異なる行方向縞パターンを含む複数の第1投影画像、及び互いに異なる列方向縞パターンを含む複数の第2投影画像を計測対象物に投影させ、前記計測対象物の撮影画像を取得可能な撮影部により、前記複数の第1投影画像の各投影時における複数の第1撮影画像、及び前記複数の第2投影画像の各投影時における複数の第2撮影画像を取得させる第1処理と、
前記撮影画像の複数の撮影画素の各々に対応する、前記投影画像の投影画素を特定する第2処理と、
前記第2処理の結果に基づいて前記計測対象物の3次元形状を特定する第3処理と、
を実行し、
前記第2処理では、前記複数の撮影画素の各々について、
前記複数の第1撮影画像と、前記複数の第1投影画像の行方向縞パターンとに基づいて、前記投影画像の複数の画素行のうち当該撮影画素に対応する対応画素行を特定し、
前記複数の第2撮影画像と、前記複数の第2投影画像の列方向縞パターンとに基づいて、前記投影画像の複数の画素列のうち当該撮影画素に対応する対応画素列を特定し、
前記対応画素行及び前記対応画素列の交点に相当する投影画素のうちエピポーラ拘束を満たす投影画素から、当該撮影画素に対応する投影画素を特定する。
【発明の効果】
【0021】
本発明によれば、演算時間を短縮することができる。
【図面の簡単な説明】
【0022】
【
図1】3次元形状計測システムの概略構成を示す図である。
【
図2】投影部により投影される投影画像を示す図である。
【
図3】撮影部により取得される撮影画像の構成を示す図である。
【
図4】3次元形状計測装置の主要な機能構成を示すブロック図である。
【
図6】第1投影画像及び第1撮影画像を示す図である。
【
図7】第2投影画像及び第2撮影画像を示す図である。
【
図8】対応画素行、対応画素列及び候補投影画素の例を示す図である。
【
図9】エピポーラ拘束を満たす対応投影画素の第1の抽出方法を説明する図である。
【
図10】エピポーラ拘束を満たす対応投影画素の第2の抽出方法を説明する図である。
【
図11】評価値を定める際の重み付けの例を示す図である。
【
図12】3次元形状計測処理の制御手順を示すフローチャートである。
【
図13】撮影処理の制御手順を示すフローチャートである。
【
図14】対応投影画素特定処理の制御手順を示すフローチャートである。
【
図15】本実施形態及び比較例におけるCPUによるLTMの算出時間の計測結果を示す図である。
【
図16】変形例に係る第1投影画像及び第2投影画像を示す図である。
【発明を実施するための形態】
【0023】
以下、本発明の3次元形状計測方法及び3次元形状計測装置に係る実施の形態を図面に基づいて説明する。
【0024】
<3次元形状計測システム1の構成>
図1は、本発明の実施形態に係る3次元形状計測システム1の概略構成を示す図である。
3次元形状計測システム1は、3次元形状計測装置10、投影部20、及び撮影部30を備える。投影部20及び撮影部30は、計測時には、予め定められた幾何的関係を満たす向き及び位置に固定される。また、投影部20及び撮影部30は、それぞれ3次元形状計測装置10との間でデータ通信可能に接続されている。3次元形状計測装置10と投影部20との間のデータ通信、及び3次元形状計測装置10と投影部20との間のデータ通信は、有線及び無線のいずれによるものであってもよい。
【0025】
投影部20は、光源から出力された光を投影素子により変調することで、所定パターンの投影画像Ip(
図2参照)を計測対象物2に投影するプロジェクターである。投影部20の投影素子としては、例えば、デジタルマイクロミラー素子(DMD)を用いることができる。この場合の投影素子は、行列をなすように配列された複数の画素の各々に微小ミラーを有する。投影部20は、投影素子の各画素の微小ミラーの傾斜角度を、画像データの値に応じて個々に高速で切り替えることにより、各画素から投影面への光反射の有無を定め、その反射光の分布により投影画像を形成(投影)する。
なお、投影素子の方式はDMDに限られず、例えば画素ごとに光の透過(又は反射)の有無を切り替え可能な液晶素子などが用いられてもよい。
【0026】
図2は、投影部20により投影される投影画像Ipを示す図である。
投影画像Ipは、N行の投影画素行pr(複数の画素行)、及びN列の投影画素列pc(複数の画素列)をなすように配列された複数の投影画素pを有する。よって、複数の投影画素pは、N×Nの正方行列をなしている。本実施形態では、N=256である。
図2では、r行c列(1≦r≦N、1≦c≦N)の投影画素pが「投影画素p
rc」の形式で表されている。
図2に示す投影画像Ipの複数の投影画素pは、投影部20の投影素子の複数の画素と、1対1に対応する。
【0027】
なお、投影画素行pr及び投影画素列pcの数Nは256に限られず、3次元形状の計測解像度や3次元形状計測装置10の処理能力等に応じて適宜変更することができる。また、投影画素行prの数と、投影画素列pcの数とが異なっていてもよい。
【0028】
図1に示す撮影部30は、撮像素子を用いて計測対象物2を撮影して、計測対象物2の撮影画像Ic(
図3参照)を取得するカメラである。撮像素子は、行列をなすように配列された複数の画素の各々に、入射光の強度に応じた大きさの検出電流を出力する光検出素子を有する。撮影部30は、撮像素子の各光検出素子からの検出電流に応じて、モノクロの撮影画像Icを生成して3次元形状計測装置10に出力する。
【0029】
図3は、撮影部30により取得される撮影画像Icの構成を示す図である。
撮影画像Icは、N行の撮影画素行cr、及びN列の撮影画素列ccをなすように配列された複数の撮影画素cを有する。よって、複数の撮影画素cは、N×Nの正方行列をなしている。上述のとおり、本実施形態では、N=256である。
図3では、r行c列(1≦r≦N、1≦c≦N)の撮影画素cが「撮影画素c
rc」の形式で表されている。
図3に示す撮影画像Icの複数の撮影画素cは、撮影部30の撮像素子の複数の画素と、1対1に対応し、撮影部30は、N×Nピクセルの解像度の撮影画像Icを生成する。
【0030】
なお、撮影画素行cr及び撮影画素列ccの数Nは256に限られず、3次元形状の計測解像度や3次元形状計測装置10の処理能力等に応じて適宜変更することができる。また、撮影画素行crの数と、撮影画素列ccの数とが異なっていてもよい。また、撮影画素行crの数は、必ずしも投影画素行prの数と同一でなくてもよく、撮影画素列ccの数は、必ずしも投影画素列pcの数と同一でなくてもよい。
【0031】
図1に示す3次元形状計測装置10は、投影部20による投影動作、及び撮影部30による撮影動作を制御する。また、3次元形状計測装置10は、投影部20が投影した投影画像Ipのパターンと、撮影部30により取得された撮影画像Icとに基づいて、計測対象物2の3次元形状を計測(特定)し、当該3次元形状に係る3次元形状データを生成する。
【0032】
図4は、3次元形状計測装置10の主要な機能構成を示すブロック図である。
3次元形状計測装置10は、CPU11(Central Processing Unit)(処理部)と、RAM12(Random Access Memory)と、記憶部13と、操作部14と、表示部15と、通信部16と、バス17などを備える。3次元形状計測装置10の各部は、バス17により接続されている。
【0033】
CPU11は、3次元形状計測装置10の各部の動作を制御するプロセッサである。CPU11は、記憶部13に記憶されているプログラム131を読み出してRAM12のワークエリアに展開し、当該展開されたプログラムに従って各種処理を実行する。例えば、CPU11は、所定のタイミングで投影部20により所定のパターンの投影画像Ipを計測対象物2に投影させる。また、CPU11は、投影部20による投影画像Ipの投影タイミングに同期するように、投影画像Ipが投影されている状態の計測対象物2を撮影部30により撮影させ、撮影画像Icを取得させる。また、CPU11は、後述する各種演算処理を実行して、計測対象物2の3次元形状を特定し、3次元形状データを生成して記憶部13に記憶させる。
【0034】
RAM12は、CPU11に作業用のメモリ空間を提供し、一時データを記憶する。RAM12は、不揮発性メモリを含んでいてもよい。
【0035】
記憶部13は、コンピュータとしてのCPU11により読み取り可能な非一時的な記録媒体であり、HDD(Hard Disk Drive)、SSD(Solid State Drive)などにより構成される。記憶部13には、CPU11により実行されるプログラム131、当該プログラムの実行時に参照される各種データ、及びCPU11により生成された上記の3次元形状データなどが記憶されている。プログラム131は、コンピュータ読み取り可能なプログラムコードの形態で記憶部13に格納されている。
【0036】
操作部14は、マウスなどのポインティングデバイス及びキーボードなどを有し、ユーザによる位置入力及びキー入力などを受け付けてその操作情報をCPU11に出力する。
【0037】
表示部15は、液晶ディスプレイなどの表示装置を備え、CPU11からの制御信号に従って、3次元形状の計測結果や各種ステータスなどの表示を行う。
【0038】
通信部16は、投影部20及び撮影部30との間で通信を行ってデータを送受信する。通信部16は、ネットワーク等を介して、投影部20及び撮影部30以外の機器やシステムとのデータ通信が可能とされていてもよい。
【0039】
<3次元形状計測システム1による3次元計測の原理>
次に、3次元形状計測システム1による3次元計測の原理について説明する。
本実施形態の3次元形状計測システム1は、アクティブステレオ法により計測対象物2の3次元形状を計測する。詳しくは、3次元形状計測システム1は、投影部20により所定パターンの投影画像Ipを投影し、投影画像Ipが投影された状態の計測対象物2を撮影部30により撮影して撮影画像Icを取得する。次に、投影したパターンと、取得された撮影画像Icとに基づいて、撮影画像Icの撮影画素cと、投影画像Ipの投影画素pとの対応関係を特定する。そして、特定した対応関係と、投影部20及び撮影部30の幾何的関係とに基づいて、三角測量法の原理により各対応点の奥行きを求める。
【0040】
図5は、3次元計測の原理を説明する図である。
図5では、投影部20から計測対象物2に投影される投影画像Ipと、撮影部30により撮影される撮影画像Icとが示されている。投影画像Ipを構成する光の一部は、計測対象物2の表面で反射して、投影画像Ipとして撮影される。
【0041】
撮影画像Icのうち、ある撮影画素cとして検出された光が、投影画像Ipのうちのどの投影画素pからの光に対応するかを特定できれば、特定された対応関係と、投影部20及び撮影部30の既知の幾何的関係と、に基づいて、三角測量の原理により、計測対象物2のうち光が反射した位置の奥行きを求めることができる。例えば、
図5における撮影画素c1により検出された光が、投影画素p1からの光であると特定された場合には、三角測量の原理により、計測対象物2における光の反射点が点Q1であると特定することができる。撮影画像Icの全ての撮影画素cについて、対応する投影画素p(以下、対応投影画素pnとも記す)を特定することにより、計測対象物2の表面における光の反射点の分布、すなわち3次元形状を特定することができる。
【0042】
ただし、上記の方法は、計測対象物2の表面において1回のみ反射した光(以下、直接反射光と記す)が撮影画素cとして検出されることを前提としているため、直接反射光以外の成分(光透過性部材における内部反射や、光沢のある表面における複数回反射等)が無視できない場合には、不適切な対応点が抽出されて計測誤差が生じる。
【0043】
例えば、
図5に示すように、計測対象物2の表面の一部が光沢を有する曲面2aであるような場合には、投影画素p1からの光の他に、投影画素p2から曲面2aに入射して当該曲面2aで2回反射した光も撮影画素c1に入射する。撮影画素c1と投影画素p2との対応関係に基づいて三角測量の原理で反射点を特定しようとすると、曲面2a上にない誤った点が特定され、3次元形状の計測誤差が生じる。
また、光透過性を有する計測対象物2の内部反射がある場合には、計測対象物2の内部における反射位置が誤って特定されるため、3次元形状の計測誤差に繋がる。
【0044】
そこで、本実施形態の3次元形状計測システム1では、撮影画素cと投影画素pとの対応関係を複数得ておき、そのうち直接反射光によるものを抽出することで、上記の計測誤差を抑制する。詳しくは、撮影画素cに対応する複数の投影画素pの候補のうち、エピポーラ拘束(エピポーラ制約)を満たすものを、撮影画素cに対応する対応投影画素pnとして特定する。ここでは、投影画像Ipにおけるエピポーラ線Lpに重なる投影画素pが、エピポーラ拘束を満たす投影画素pとして特定される。
図5に示すエピポーラ線Lpは、投影部20及び撮影部30の幾何的関係と、撮影画素c1として検出される光線の光路OPと、によって定まる。詳しくは、投影部20及び撮影部30の各光学中心(投影画像Ipを通る投影光の収束点、及び撮影画像Icを通る撮影光の収束点)と、光路OPとを通る平面をエピポーラ面とした場合に、エピポーラ線Lpは、エピポーラ面と投影画像Ipとの交線である。撮影画像Icに含まれる各撮影画素cについて、投影画像Ip上に1つのエピポーラ線Lpが定まる。
【0045】
光路OP上にある計測対象物2の表面での直接反射光が撮影画素cとして検出される場合には、当該直接反射光を投影する投影画素pは、エピポーラ線Lp上のいずれかに位置する性質がある。言い換えると、撮影画素cとして検出される直接反射光は、必ず当該撮影画素cに対応するエピポーラ線Lp上の投影画素pから投影される性質がある。また、撮影画素cとして検出される間接反射光(直接反射光以外の光)の多くは、当該撮影画素cに対応するエピポーラ線Lp上にない投影画素pから投影される。このため、エピポーラ線Lp上にある投影画素pから対応投影画素pnを抽出することで、間接反射光に対応する不適切な投影画素pを効率よく除外して、適切な対応投影画素pnを特定することができる。
【0046】
本実施形態では、任意の撮影画素cに対応するエピポーラ線Lpが、投影画像Ipの投影画素行pr及び投影画素列pcのいずれとも非平行となるように投影部20及び撮影部30の位置関係が定められている。任意の撮影画素cに対応するエピポーラ線Lpが、投影画像Ipの投影画素行pr及び投影画素列pcのいずれとも所定の下限角度以上の角度をなすように投影部20及び撮影部30の位置関係を定めることが、より好ましい。この場合の下限角度は、例えば10°以上とされ、20°以上とすることがより好ましい。
【0047】
<対応投影画素pnの特定方法>
次に、本実施形態における撮影画素cに対応する対応投影画素pnの特定方法について説明する。対応投影画素pnの特定方法の概略は、以下のとおりである。
まず、互いに異なる行方向縞パターンを含む複数の第1投影画像Ipr(
図6(a)参照)、及び互いに異なる列方向縞パターンを含む複数の第2投影画像Ipc(
図7(a)参照)を1枚ずつ計測対象物2に投影し、複数の第1投影画像Iprの各投影時における複数の第1撮影画像Icr(
図6(b)参照)、及び複数の第2投影画像Ipcの各投影時における複数の第2撮影画像Icc(
図7(b)参照)を取得する(第1ステップ)。
次に、複数の第1撮影画像Icr及び複数の第2撮影画像Iccと、投影した複数の行方向縞パターン及び複数の列方向縞パターンとに基づいて、複数の撮影画素cの各々に対応する対応投影画素pnを特定する(第2ステップ)。この第2ステップでは、1つの撮影画素cについて、複数の第1撮影画像Icrと、複数の第1投影画像Iprの行方向縞パターンとに基づいて、複数の投影画素行prのうち当該1つの撮影画素cに対応する対応画素行prx(
図8(a)参照)を特定する。また、複数の第2撮影画像Iccと、複数の第2投影画像Ipcの列方向縞パターンとに基づいて、複数の投影画素列pcのうち当該1つの撮影画素cに対応する対応画素列pcx(
図8(b)参照)を特定する。そして、対応画素行prx及び対応画素列pcxの交点に相当する投影画素p(以下、候補投影画素pxと記す。
図8(c)参照)のうちエピポーラ拘束を満たす候補投影画素pxから、上記の1つの撮影画素cに対応する対応投影画素pnを特定する。
以下、各ステップについて詳細に説明する。
【0048】
(第1ステップ)
図6は、第1投影画像Ipr及び第1撮影画像Icrを示す図である。
図6(a)に示すように、第1投影画像Iprは、複数の投影画素行prの各々がランダムにオン(黒)又はオフ(白)となっている行方向縞パターンを含む。第1ステップでは、行方向縞パターンが互いに異なるM枚の第1投影画像Iprが、1枚ずつ順番に計測対象物2に投影される。また、複数の第1投影画像Iprの各投影時に、
図6(b)に示す第1撮影画像Icrが1枚ずつ撮影されて取得される。よって、第1ステップでは、M枚の第1投影画像Iprに対応するM枚の第1撮影画像Icrが取得される。
【0049】
図7は、第2投影画像Ipc及び第2撮影画像Iccを示す図である。
図7(a)に示すように、第2投影画像Ipcは、複数の投影画素列pcの各々がランダムにオン(黒)又はオフ(白)となっている列方向縞パターンを含む。第1ステップでは、列方向縞パターンが互いに異なるM枚の第2投影画像Ipcが1枚ずつ順番に計測対象物2に投影される。また、複数の第2投影画像Ipcの各投影時に、
図7(b)に示す第2撮影画像Iccが1枚ずつ撮影されて取得される。よって、第1ステップでは、M枚の第2投影画像Ipcに対応するM枚の第2撮影画像Iccが取得される。
複数の第1投影画像Ipr及び複数の第2投影画像Ipcの投影順序(すなわち、複数の第1撮影画像Icr及び複数の第2撮影画像Iccの取得順序)は、任意とすることができる。
【0050】
ここで、複数の第2投影画像Ipcの各々における列方向縞パターンは、複数の第1投影画像Iprの各々における行方向縞パターンを90°回転させたものである。すなわち、複数の第2投影画像Ipcの各々における列方向縞パターンは、パターンの向きを除いて、複数の第1投影画像Iprの各々における行方向縞パターンと同一である。ただし、これに限られず、複数の第2投影画像Ipcの各々における列方向縞パターンと、複数の第1投影画像Iprの各々における行方向縞パターンとが少なくとも一部で異なっていてもよい。
【0051】
(第2ステップ)
第2ステップでは、各撮影画素cについて、複数の第1撮影画像Icrと、複数の第1投影画像Iprの行方向縞パターンとに基づいて、スパース最適化(スパース推定)により対応画素行prxを特定し、複数の第2撮影画像Iccと、複数の第2投影画像Ipcの列方向縞パターンとに基づいて、スパース最適化(スパース推定)により対応画素列pcxを特定する。
【0052】
以下、スパース最適化による対応画素行prxの特定方法について説明する。ここでは、m枚目(1≦m≦M)の第1投影画像Iprの行方向縞パターンを表すパターンベクトルをpm(式(1-1))とし、そのときの第1撮影画像Icrの内容を表す撮影画素ベクトルをcm(式(1-2))とする。パターンベクトルpmは、N次元のベクトルであり、その要素は、第1投影画像IprのN行の各投影画素行prがオン又はオフのいずれであるかを表す。撮影画素ベクトルcmは、N×N(N2)次元のベクトルであり、その要素は、第1撮影画像IcrのN2個の撮影画素cの各々がオン(黒)又はオフ(白)のいずれであるかを表す。
【0053】
【0054】
【0055】
また、M枚の第1撮影画像Icrに対応するM個の撮影画素ベクトルcmを表す撮影画像行列をC(式(1-3))、M枚の第1投影画像Iprに対応するM個のパターンベクトルpmを表す投影パターン行列をP(式(1-4))とすると、行列C及び行列Pは、式(1-5)を満たす。ここで、式(1-5)の行列Wは、複数の撮影画素cの各々が、複数の投影画素行prのうちいずれに対応するか(すなわち、どの投影画素行prから投影された光を検出しているか)を表すLTMである。式(1-6)に示すように、行列Wは、N2×N次元の行列である。
【0056】
【0057】
ここで、1つの撮影画素cに対応する対応画素行prxは、通常、N行の投影画素行prのうちのごく一部であるため、行列Wは、スパース性(要素にゼロを多く含むという性質)を有する。式(1-5)を満たし、かつスパース性を有する行列Wは、LASSO型の最小値化問題(L1ノルム正則化の問題)を数値的に解くアルゴリズムを適用することで計算することができる。詳しくは、ここで用いるアルゴリズムは、LASSO型の最小化問題を、近接勾配法を用いて数値的に解くアルゴリズムであって、ADMM(Alternating Direction Method of Multipliers)を用いたものである。
【0058】
以下に、行列Wを計算するためのアルゴリズムの具体的な内容を記す。ここでは、N2×N次元の行列A1、A2、A3、x、y、z、tを用いる。また、投影パターン行列Pの転置行列を行列Aとする。
【0059】
まず、前処理として式(2-1)~(2-5)の計算及び代入処理を実行する。式(2-1)~(2-5)は、第1投影画像IprのM枚の行方向縞パターンが分かっていれば計算が可能であるため、計測対象物2の3次元計測を開始する前に予め実行しておくことで、計測時間を短縮できる。
【0060】
【0061】
次に、計測対象物2の3次元計測が開始されると、対応画素行prxを特定するためのオンライン処理が開始される。オンライン処理では、まず、M枚の第1投影画像Iprの投影、及びM枚の第1撮影画像Icrの取得が完了し、撮影画像行列Cが確定したところで、式(3-1)、(3-2)の計算及び代入処理を実行する。
【0062】
【0063】
次に、変数iを1から100までインクリメントしつつ、各変数iについて式(3-3)~(3-6)の計算を繰り返し実行する。このうち式(3-3)の右辺は、軟判定閾値関数であり、入力xの絶対値がしきい値(1/μ)を超えた場合に、超えた分の大きさの絶対値を有する出力を返す関数である。式(3-3)~(3-6)のループ処理により、行列Wが、スパースな要素を有するLTMに収れんする。なお、変数iの上限は100に限られず、例えば計算状況等に基づいて定まる変数としてもよい。式(3-3)~(3-6)のループ処理が終了すると、対応画素行prxを特定するためのオンライン処理が終了する。
【0064】
【0065】
上記のアルゴリズムにより算出された行列W(LTM)は、複数の撮影画素cの各々についての対応画素行prxを表す。すなわち、上記のループ処理により行列Wを算出することで、全ての撮影画素cについての対応画素行prxを特定することができる。これは、全ての撮影画素cについて行列A(すなわち投影パターン行列P)が共通であることによる。
【0066】
図8(a)は、ある撮影画素cに対応する対応画素行prxの例を表す。1つの撮影画素cに対応する対応画素行prxは、本来は1つであるが、ここでは、間接反射光に基づいて抽出された対応画素行prxも含まれ得るため、対応画素行prxは複数となる場合がある。
図8(a)に示す例では、7つの対応画素行prxが特定されている。
【0067】
対応画素行prxの特定方法と同様の方法により、対応画素列pcxが特定される。上述の対応画素行prxの特定方法の説明において、「第1投影画像Ipr」、「第1撮影画像Icr」、「投影画素行pr」、及び「対応画素行prx」、を、それぞれ「第2投影画像Ipc」、「第2撮影画像Icc」、「投影画素列pc」、及び「対応画素列pcx」に置き替えることで、対応画素列pcxの特定方法の説明となる。ここで、上述したとおり、複数の第2投影画像Ipcの列方向縞パターンは、向きを除いて複数の第1投影画像Iprの行方向縞パターンと同一であるため、行列A(すなわち投影パターン行列P)は、対応画素行prxの特定時に用いたものと同一となる。したがって、前処理は共通であり、複数の第1撮影画像Icrに基づく撮影画像行列Cを用いて式(3-1)~(3-6)のオンライン処理を実行することで対応画素列pcxを特定できる。以下では、対応画素行prxを表す行列Wを「行列Wr」とも記し、対応画素列pcxを表す行列Wを「行列Wc」とも記す。行列Wr及び行列Wcは、それぞれ対応画素行prx及び対応画素列pcxを表すものであるため、「LineLTM」と呼ぶこともできる。
【0068】
図8(b)は、ある撮影画素cに対応する対応画素列pcxの例を表す。1つの撮影画素cに対応する対応画素列pcxは、本来は1つであるが、ここでは、間接反射光に基づいて抽出された対応画素列pcxも含まれ得るため、対応画素列pcxは複数となる場合がある。
図8(b)に示す例では、8つの対応画素列pcxが特定されている。
【0069】
各撮影画素cについて対応画素行prx及び対応画素列pcxが特定されると、
図8(c)に示すように、対応画素行prx及び対応画素列pcxの交点(対応画素行prxの集合と対応画素列pcxの集合の直積)に相当する投影画素pが、撮影画素cに対応する候補投影画素pxとして特定される。上記の交点は、行列Wrのうちある撮影画素cに対応する要素と、行列Wcのうち当該撮影画素cに対応する要素との積のうち、非ゼロとなる組み合わせに相当する。なお、上記の要素同士の積が所定の微小値以下となる組み合わせを除外してもよい。対応画素行prx及び対応画素列pcxのうち少なくとも一方が複数である場合には、複数の候補投影画素pxが特定される。
図8(c)に示す例では、56個の候補投影画素pxが特定されている。
【0070】
候補投影画素pxが特定されると、複数の候補投影画素pxのうちエピポーラ拘束を満たすものが抽出され、撮影画素cに対応する対応投影画素pnとして特定される。エピポーラ拘束を満たす対応投影画素pnの抽出方法としては、以下の第1の抽出方法及び第2の抽出方法がある。
【0071】
図9は、エピポーラ拘束を満たす対応投影画素pnの第1の抽出方法を説明する図である。
第1の抽出方法では、投影画像Ipにおけるエピポーラ線Lpと重なる候補投影画素pxを、エピポーラ拘束を満たす対応投影画素pnとして抽出する。例えば、エピポーラ線Lpが、ある投影画素pの範囲内を通る場合に、当該投影画素pを、エピポーラ線Lpと重なる投影画素pとすることができる。
図9には、
図8(c)に示す56個の候補投影画素pxのうち、エピポーラ線Lpと重なる1つの候補投影画素px1が示されている。
【0072】
図10は、エピポーラ拘束を満たす対応投影画素pnの第2の抽出方法を説明する図である。
第2の抽出方法では、投影画像Ipにおけるエピポーラ線Lpからの距離が所定距離d以内である候補投影画素pxの中から、エピポーラ拘束を満たす対応投影画素pnを抽出する。
図10には、
図8(c)に示す56個の候補投影画素pxのうち、エピポーラ線Lpから距離d以内に位置する5つの候補投影画素px1~px5が示されている。距離dは、第1投影画像Iprにおける投影画素pの配置ピッチの所定数倍とすることができる。距離dは、所望する計測精度等に応じて適宜定めることができ、例えば配置ピッチの数倍程度としてもよい。また、各投影画素pの位置は、例えば投影画素pの矩形領域の中心とすることができる。
なお、第2の抽出方法は、エピポーラ線Lpに距離2dの幅を持たせた上で、当該エピポーラ線Lpに重なる候補投影画素pxの中からエピポーラ拘束を満たす対応投影画素pnを抽出する方法、と言い換えることもできる。
【0073】
第2の抽出方法では、エピポーラ線Lpから距離d以内に位置する全ての候補投影画素pxを、エピポーラ拘束を満たす対応投影画素pnとしてもよい。
【0074】
また、第2の抽出方法では、エピポーラ線Lpから距離d以内に位置する候補投影画素pxの中から、所定の抽出方法によりさらに抽出された候補投影画素pxを、対応投影画素pnとしてもよい。例えば、エピポーラ線Lpに近い候補投影画素pxほど重み付けが大きくなるように各候補投影画素pxの評価値を定め、当該評価値に基づいて対応投影画素pnを特定してもよい。具体的には、評価値が最も大きい候補投影画素pxを対応投影画素pnとして特定してもよい。また、評価値が所定の基準値以上である候補投影画素pxを対応投影画素pnとして特定してもよい。また、重み付けの値そのものを評価値としてもよいし、行列Wr及び行列Wcの要素同士の積で表される基本値に重み付けを乗じた値を評価値としてもよい。
【0075】
図11は、評価値を定める際の重み付けの例を示す図である。
図11に示す例では、エピポーラ線Lp上に位置する候補投影画素pxの重み付けw1が最も大きく、エピポーラ線Lpから離れるにつれて正規分布に従うように重み付けがw2、w3、w4と段階的に減少している。具体的には、エピポーラ線Lpからの距離がd/4以下である候補投影画素pxについては、重み付けをw1として評価値を定める。また、エピポーラ線Lpからの距離がd/4より大きくd/2以下である候補投影画素pxについては、重み付けをw2(<w1)として評価値を定める。また、エピポーラ線Lpからの距離がd/2より大きく3d/4以下である候補投影画素pxについては、重み付けをw3(<w2)として評価値を定める。また、エピポーラ線Lpからの距離が3d/4より大きくd以下である候補投影画素pxについては、重み付けをw4(<w3)として評価値を定める。これによれば、エピポーラ線Lpに近い候補投影画素pxを優先して対応投影画素pnとして抽出することができる。
なお、重み付けを同一とする区間の幅は、d/4に限られない。また、正規分布以外の規則に従うように重み付けを定めてもよい。
【0076】
エピポーラ拘束を満たす候補投影画素pxを抽出するステップは、対応画素行prx及び対応画素列pcxの交点に相当する候補投影画素pxが1つのみである場合には省略することとしてもよい。あるいは、候補投影画素pxが1つのみである場合にも、当該1つの候補投影画素pxが間接反射光に対応し得ることを想定して、エピポーラ拘束を満たす候補投影画素pxを抽出するステップを実行してもよい。
【0077】
<3次元形状計測処理>
続いて、3次元形状計測装置10により実行される3次元形状計測処理のCPU11による制御手順について説明する。
【0078】
図12は、3次元形状計測処理の制御手順を示すフローチャートである。
3次元形状計測処理が開始されると、CPU11は、複数の第1投影画像Iprにおいて用いられる複数の行方向縞パターン、及び複数の第2投影画像Ipcにおいて用いられる複数の列方向縞パターンに基づいて、投影パターン行列P(行列A)を特定し、前処理を実行する(ステップS101)。ここでは、CPU11は、上述の式(2-1)~(2-5)の計算及び代入処理を実行する。前処理が終了すると、CPU11は、撮影処理を実行する(ステップS102)。
【0079】
図13は、撮影処理の制御手順を示すフローチャートである。
撮影処理が呼び出されると、CPU11は、変数mに「1」を代入する(ステップS201)。また、CPU11は、投影部20に制御信号を送信して、投影部20により、m枚目の第1投影画像Iprを計測対象物2に投影させる(ステップS202)。また、CPU11は、第1投影画像Iprの投影と同期したタイミングで撮影部30に制御信号を送信して、撮影部30により、m枚目の第1撮影画像Icrを撮影、取得させる(ステップS203)。
【0080】
CPU11は、変数mに「m+1」を代入し(ステップS204)、変数mがMより大きいか否かを判別する(ステップS205)。変数mがM以下である(すなわちM枚の第1撮影画像Icrの取得が完了していない)と判別された場合には(ステップS205で“NO”)、CPU11は、処理をステップS202に戻す。
【0081】
変数mがMより大きい(すなわちM枚の第1撮影画像Icrの取得が完了した)と判別された場合には(ステップS205で“YES”)、CPU11は、変数mに「1」を代入する(ステップS206)。また、CPU11は、投影部20に制御信号を送信して、投影部20により、m枚目の第2投影画像Ipcを計測対象物2に投影させる(ステップS207)。また、CPU11は、第2投影画像Ipcの投影と同期したタイミングで撮影部30に制御信号を送信して、撮影部30により、m枚目の第2撮影画像Iccを撮影、取得させる(ステップS208)。
【0082】
CPU11は、変数mに「m+1」を代入し(ステップS209)、変数mがMより大きいか否かを判別する(ステップS210)。変数mがM以下である(すなわちM枚の第2撮影画像Iccの取得が完了していない)と判別された場合には(ステップS210で“NO”)、CPU11は、処理をステップS207に戻す。変数mがMより大きい(すなわちM枚の第2撮影画像Iccの取得が完了した)と判別された場合には(ステップS210で“YES”)、CPU11は、撮影処理を終了させて、処理を3次元形状計測処理に戻す。
【0083】
図12のフローにおいて撮影処理が終了すると、CPU11は、対応投影画素特定処理を実行する(ステップS103)
【0084】
図14は、対応投影画素特定処理の制御手順を示すフローチャートである。
対応投影画素特定処理が呼び出されると、CPU11は、M枚の第1撮影画像Icrに基づいて上述のオンライン処理を実行し、全ての撮影画素cについて対応画素行prxを特定する(ステップS301)。ここでは、CPU11は、M枚の第1撮影画像Icrに基づいて撮影画像行列Cを特定し、まず上述の式(3-1)、(3-2)の計算及び代入処理を実行する。次いで、変数iをインクリメントしつつ上述の式(3-3)~(3-6)の計算を繰り返し実行し、行列W(行列Wr)(LTM)を取得する。
【0085】
また、CPU11は、M枚の第2撮影画像Iccに基づいて上述のオンライン処理を実行し、全ての撮影画素cについて対応画素列pcxを特定する(ステップS302)。ここでは、CPU11は、M枚の第2撮影画像Iccに基づいて撮影画像行列Cを特定し、まず上述の式(3-1)、(3-2)の計算及び代入処理を実行する。次いで、変数iをインクリメントしつつ上述の式(3-3)~(3-6)の計算を繰り返し実行し、行列W(行列Wc)(LTM)を取得する。
ステップS301及びステップS302は、並行して実行されてもよい。
【0086】
CPU11は、変数nに「1」を代入する(ステップS303)。また、CPU11は、n番目の撮影画素cについて、対応画素行prx及び対応画素列pcxの交点に相当する候補投影画素pxを特定する(ステップS304)。また、CPU11は、候補投影画素pxのうちエピポーラ拘束を満たすものを抽出し、n番目の撮影画素cに対応する対応投影画素pnとして特定する(ステップS305)。
【0087】
CPU11は、変数nに「n+1」を代入し(ステップS306)、変数nがN2より大きいか否かを判別する(ステップS307)。変数nがN2以下である(すなわち、いずれかの撮影画素cについて対応投影画素pnの特定が完了していない)と判別された場合には(ステップS307で“NO”)、CPU11は、処理をステップS304に戻す。各変数nに対応するステップS304、S305の処理は、並行して実行されてもよい。
変数nがN2より大きい(すなわち、全ての撮影画素cについて対応投影画素pnの特定が完了した)と判別された場合には(ステップS307で“YES”)、CPU11は、対応投影画素特定処理を終了させて、処理を3次元形状計測処理に戻す。
【0088】
図12のフローにおいて対応投影画素特定処理が終了すると、CPU11は、各撮影画素cと、その対応投影画素pnとの対応関係に基づき、三角測量の原理を用いて計測対象物2の各対応点の奥行きを算出し、3次元形状を特定する(ステップS104)。また、CPU11は、特定した3次元形状に係る3次元形状データを生成して記憶部13に記憶させる。
【0089】
CPU11は、全ての計測対象物2の計測が終了したか否かを判別する(ステップS105)。未計測の計測対象物2があると判別された場合には(ステップS105で“NO”)、CPU11は、処理をステップS102に戻し、次の計測対象物2の3次元形状の計測を開始する。ここでは、ステップS101の前処理は省略することができる。
全ての計測対象物2の計測が終了したと判別された場合には(ステップS105で“YES”)、CPU11は、3次元形状計測処理を終了させる。
【0090】
以上の3次元形状計測処理のうち、ステップS102が「第1ステップ」及び「第1処理」に対応し、ステップS101、S103が「第2ステップ」及び「第2処理」に対応し、ステップS104が「第3ステップ」及び「第3処理」に対応する。
【0091】
<比較例に対する効果>
次に、ランダムパターンの投影画像を用いる従来のLTM法を比較例として、この比較例に対する本実施形態の効果について説明する。従来のLTM法は、ランダムパターン(画素ごとにランダムな画素値を取る投影画像のパターン)の複数の投影画像を投影したときの複数の撮影画像に基づいて、撮影画素と投影画素との全ての対応関係を表すLTMをスパース推定により求め、得られた対応点のうちエピポーラ拘束を満たすものを残す方法である。以下、従来のLTM法によるLTMの算出方法について説明する。ここでは、m枚目(1≦m≦M)の投影画像のランダムパターンを表すパターンベクトルをpm(式(4-1))、そのときの撮影画像の内容を表す撮影画素ベクトルをcm(式(4-2))とする。比較例におけるパターンベクトルpmは、N×N(N2)次元のベクトルであり、その要素は、投影画像のN2個の投影画素の各々がオン又はオフのいずれであるかを表す。比較例における撮影画素ベクトルcmは、N×N(N2)次元のベクトルであり、その要素は、撮影画像のN2個の撮影画素の画素値を表す。
【0092】
【0093】
【0094】
また、M枚の撮影画像に対応するM個の撮影画素ベクトルcmを表す撮影画像行列をC(式(4-3))、M枚の投影画像に対応するM個のパターンベクトルpmを表す投影パターン行列をP(式(4-4))とすると、行列C及び行列Pは、式(4-5)を満たす。ここで、式(4-5)の行列Wは、複数の撮影画素の各々が、複数の投影画素のうちいずれに対応するか(どの投影画素から投影された光を検出しているか)を表すLTMである。式(4-6)に示すように、比較例に係る行列Wは、N2×N2次元の行列である。行列Wは、上記実施形態と同様にスパース性を有する。
【0095】
【0096】
撮影画像行列Cの各行Cjの転置行列、及び行列W(LTM)の各行Wjの転置行列について、式(4-7)が成り立つ。
【0097】
【0098】
Wjの転置行列は、1つの撮影画素に対応する投影画素を表す。この場合において、式(4-8)の問題、すなわちLASSO型の最小値化問題(L1ノルム正則化の問題)を解くことにより、Wjの転置行列(ベクトルx)を特定することができる。
【0099】
【0100】
式(4-8)を満たすベクトルxは、以下の公知のアルゴリズムにより計算することができる。下記のアルゴリズムも、LASSO型の最小化問題を、近接勾配法を用いて数値的に解くアルゴリズムであって、ADMMを用いたものである。当該アルゴリズムでは、変数iを1から100までインクリメントしつつ、各変数iについて式(4-9)~(4-11)の計算を繰り返し実行することで、スパースなベクトルxが算出される。
【0101】
【0102】
この従来のLTM法では、全ての撮影画素について、対応する投影画素を特定するためには、式(4-9)~(4-11)のループ処理を、複数の撮影画素のそれぞれに対して別個に実行する必要がある。また、投影画像の解像度を段階的に変更することで後段の計算を簡素化する「多段解像度LTM推定」を行う場合には、前段の推定結果に応じて行列A(投影パターン行列P)を都度構成する必要がある。このため、前段の計算と後段の計算とが独立しておらず、前段の計算の後に後段の計算を行う必要があり、演算時間が長くなる。
【0103】
これに対し、本実施形態では、多段解像度推定が不要であり、全ての撮影画素に対して行列A(投影パターン行列P)が等しくなる。このため、例えば式(3-3)~(3-6)における行列演算を並列化することができる。
また、対応画素行prxの特定のための処理と、対応画素列pcxの特定のための処理とを並列化することもできる。その際、対応画素行prxの特定のための演算と、対応画素列pcxの特定のための演算とで、行列A(投影パターン行列P)が同一であるため、容易に並列化を行うことが可能である。
これらのような並列演算による行列Wの算出処理をGPU(Graphics Processing Unit)に実装することで、更なる高速化が実現できる。
【0104】
図15は、本実施形態及び比較例におけるCPUによるLTMの算出時間の計測結果を示す図である。
図15は、計測対象物2のサンプル1~4の各々について、本実施形態及び比較例における行列W(LTM)の算出時間の計測結果を示す。このうち本実施形態の結果は、CPU11による行列Wr及び行列Wcの算出時間の合計値である。また、サンプル1、2として、光透過性を有する樹脂部材の計測対象物2を用い、サンプル3、4として、光沢を有する金属部材の計測対象物2を用いた。また、本実施形態及び比較例の各々について、サンプル1~4の算出時間の平均値を求めた。
計測の結果、
図15に示すように、本実施形態の方法を適用した場合おける算出時間の平均値は4.3秒となり、比較例の方法を適用した場合おける算出時間の平均値は7.1秒となった。よって、演算を容易に並列化可能な本実施形態の方法によれば、比較例の方法に対して算出時間を4割程度削減できることが確認された。
なお、上記はCPUによる計算時間であり、本実施形態の処理をGPUを用いて並列化した場合には、1秒以下の計算時間で実行できることが確認されている。
【0105】
<変形例>
次に、上記実施形態の変形例について説明する。本変形例は、1つの撮影画素に対応する対応画素行prx及び対応画素列pcxの特定方法が上記実施形態と異なる。以下では、上記実施形態との相違点について説明し、上記実施形態と共通する点については説明を省略する。
【0106】
図16は、変形例に係る第1投影画像Ipr及び第2投影画像Ipcを示す図である。
図16(a)に示すように、本変形例に係る複数の第1投影画像Iprも、互いに異なる行方向縞パターンを含む。本変形例に係る第1投影画像Iprの各投影画素pは、多段階の画素値(異なる複数の階調値)をとり得る。ここで、複数の第1投影画像Iprの行方向縞パターンは、1枚目~M枚目の第1投影画像Iprを順に投影したときに、行方向縞パターンにおける各投影画素行prに対応する部分が、投影画素行prごとに異なる周波数(以下、第1周波数と記す)で変化するように定められている。具体的には、1行目~N行目の各投影画素行prにおける第1周波数が、それぞれf
1~f
Nとなるように行方向縞パターン(各第1投影画像Iprの各投影画素pの画素値)が定められている。第1周波数f
1~f
Nは、互いに異なっていればよく、必ずしも昇順又は降順に並んでいなくてもよい。
【0107】
また、
図16(b)に示すように、本変形例に係る複数の第2投影画像Ipcも、互いに異なる列方向縞パターンを含む。本変形例に係る第2投影画像Ipcの各投影画素pは、多段階の画素値(異なる複数の階調値)をとり得る。ここで、複数の第2投影画像Ipcの列方向縞パターンは、1枚目~M枚目の第2投影画像Ipcを順に投影したときに、列方向縞パターンにおける各投影画素列pcに対応する部分が、投影画素列pcごとに異なる周波数(以下、第2周波数と記す)で変化するように定められている。具体的には、1列目~N列目の各投影画素列pcにおける第2周波数が、それぞれf
1~f
Nとなるように行方向縞パターン(各第1投影画像Iprの各投影画素pの画素値)が定められている。第2周波数f
1~f
Nは、互いに異なっていればよく、必ずしも昇順又は降順に並んでいなくてもよい。また、第2周波数f
1~f
Nは、それぞれ第1周波数f
1~f
Nと同一であってもよい。
【0108】
第1ステップでは、上記の複数の第1投影画像Ipr及び複数の第2投影画像Ipcを計測対象物2に投影し、上記実施形態と同様に複数の第1撮影画像Icr及び第2撮影画像Iccを取得する。
【0109】
続く第2ステップでは、各撮影画素cについて、複数の第1撮影画像Icrに基づいて、第1周波数f1~fNに基づく対応付けにより対応画素行prxを特定する。すなわち、M枚の第1撮影画像Icrにおける対象の撮影画素cのパターンの変化を動画とみなして、フーリエ変換により周波数分解し、当該撮影画素cが、第1周波数f1~fNのうちいずれの周波数成分を有するパターンを検出しているかを特定する。そして、特定された第1周波数に相当する投影画素行prを、対応画素行prxとして特定する。
【0110】
列方向についても同様に、各撮影画素cについて、複数の第2撮影画像Iccに基づいて、第2周波数f1~fNに基づく対応付けにより対応画素列pcxを特定する。すなわち、M枚の第2撮影画像Iccにおける対象の撮影画素cのパターンの変化を動画とみなして、フーリエ変換により周波数分解し、当該撮影画素cが、第2周波数f1~fNのうちいずれの周波数成分を有するパターンを検出しているかを特定する。そして、特定された第2周波数に相当する投影画素列pcを、対応画素列pcxとして特定する。
以降の候補投影画素pxの特定方法、及びエピポーラ拘束を考慮した対応投影画素pnの抽出方法は、上記実施形態と同様である。
【0111】
<効果>
以上のように、本実施形態に係る3次元形状計測方法は、投影画像Ipを投影可能な投影部20により、互いに異なる行方向縞パターンを含む複数の第1投影画像Ipr、及び互いに異なる列方向縞パターンを含む複数の第2投影画像Ipcを計測対象物2に投影し、計測対象物2の撮影画像Icを取得可能な撮影部30により、複数の第1投影画像Iprの各投影時における複数の第1撮影画像Icr、及び複数の第2投影画像Ipcの各投影時における複数の第2撮影画像Iccを取得する第1ステップと、撮影画像Icの複数の撮影画素cの各々に対応する、投影画像Ipの投影画素p(対応投影画素pn)を特定する第2ステップと、第2ステップの結果に基づいて計測対象物2の3次元形状を特定する第3ステップと、を有する。第2ステップでは、複数の撮影画素cの各々について、複数の第1撮影画像Icrと、複数の第1投影画像Iprの行方向縞パターンとに基づいて、投影画像Ipの複数の投影画素行prのうち当該撮影画素cに対応する対応画素行prxを特定し、複数の第2撮影画像Iccと、複数の第2投影画像Ipcの列方向縞パターンとに基づいて、投影画像Ipの複数の投影画素列pcのうち当該撮影画素cに対応する対応画素列pcxを特定し、対応画素行prx及び対応画素列pcxの交点に相当する投影画素p(候補投影画素px)のうちエピポーラ拘束を満たす投影画素pから、当該撮影画素cに対応する投影画素p(対応投影画素pn)を特定する。
このような方法によれば、投影パターンを表すベクトルの次元数を、従来のLTM法における「N2」(投影画像Ipの全画素数)から、「N」(投影画像Ipの行数(列数))に低減できるため、投影パターン行列P(複数の第1投影画像Iprの行方向縞パターンを表す行列、及び複数の第2投影画像Ipcの列方向縞パターンを表す行列)の次元数を低減でき、行列演算における計算量を大幅に削減することができる。これにより、演算時間を短縮することができる。
また、計算量を減らす従来法には多段解像度LTM推定があるが、解像度の切り替え前後で投影パターン行列Pが共通ではなくなるため並列処理に向かないのに対して、上記実施形態の方法によれば、行列Wr及び行列Wc(LTM)を特定するための演算の全体に亘って共通の投影パターン行列Pを用いることができるため、容易に処理を並列化することができる。また、従来の多段解像度LTM推定では、解像度の切り替え前後で撮影画素cごとにパターン行列が変わるため、撮影画素cごとの並列処理が困難であり、GPU実装を行うことができない。これに対し、上記実施形態の方法では、全ての撮影画素cに対して投影パターン行列Pが共通のままであるため、行列Wr及び行列Wcを算出する際における各撮影画素cについての計算内容を統一することが可能であり、複数の撮影画素cについての演算を並列化しやすい。このため、演算時間を短縮することができる。また、GPU実装が可能であり、GPU実装によって演算時間をさらに短縮することができる。
また、対応画素行prxの特定のための処理と、対応画素列pcxの特定のための処理とを並列化することもできる。これによっても、演算時間を短縮することができる。
また、撮影画素cと対応投影画素pnとの対応関係を複数得ておいた上で、エピポーラ拘束を満たすものを抽出する方法により、直接反射光に相当する対応投影画素pnを、簡易かつ適切に抽出することができる。
【0112】
また、投影画像Ipにおけるエピポーラ線Lpと重なる投影画素pを、エピポーラ拘束を満たす投影画素pとすることにより、直接反射光に相当する対応投影画素pnを正確に抽出することができる。よって、間接反射光に起因する計測誤差をより確実に低減することができる。
【0113】
また、投影画像Ipにおけるエピポーラ線Lpからの距離が所定距離以内である投影画素pを、エピポーラ拘束を満たす投影画素pとすることにより、直接反射光に相当する対応投影画素pnを、より確実に抽出することができる。すなわち、直接反射光に相当する対応投影画素pnの抽出漏れを生じにくくすることができる。
【0114】
また、第2ステップでは、エピポーラ線Lpに近い投影画素pほど重み付けが大きくなるように評価値を定め、当該評価値に基づいて、撮影画素cに対応する投影画素p(対応投影画素pn)を特定する。これにより、エピポーラ線Lpに近い投影画素pを優先して対応投影画素pnとして抽出することができる。
【0115】
また、評価値が最も大きい投影画素pを、撮影画素cに対応する投影画素pとして特定することにより、直接反射光に相当する投影画素pがより抽出されやすいように、また、間接反射光に相当する投影画素pがより排除されやすいようにすることができる。
【0116】
また、評価値が所定の基準値以上である投影画素pを、撮影画素cに対応する投影画素pとして特定することにより、直接反射光に相当する対応投影画素pnを、より確実に抽出することができる。すなわち、直接反射光に相当する対応投影画素pnの抽出漏れを生じにくくすることができる。
【0117】
また、任意の撮影画素cに対応するエピポーラ線Lpが、投影画像Ipの投影画素行pr及び投影画素列pcのいずれとも非平行となるように投影部20及び撮影部30の位置関係が定められている。これにより、エピポーラ拘束条件がより効果的に効くようにすることができる。すなわち、エピポーラ拘束を満たす投影画素pを抽出する方法によって、直接反射光に相当する投影画素pをより正確に抽出することができる。
【0118】
また、第2ステップでは、複数の第1撮影画像Icrを表す撮影画像行列C、及び複数の第1投影画像Iprに含まれる複数の行方向縞パターンを表す投影パターン行列Pに基づいて、複数の撮影画素cの各々に対応する対応画素行prxを表す行列Wr(LTM)を、スパース最適化により特定し、複数の第2撮影画像Iccを表す撮影画像行列C、及び複数の第2投影画像Ipcに含まれる複数の列方向縞パターンを表す投影パターン行列Pに基づいて、複数の撮影画素cの各々に対応する対応画素列pcxを表す行列Wc(LTM)を、スパース最適化により特定する。これにより、行列Wr及び行列Wcがスパース性を有していることを利用して、より少ない第1投影画像Ipr及び第2投影画像Ipc(すなわち、より少ない第1撮影画像Icr及び第2撮影画像Icc)に基づいて、簡易な計算で正確に、対応画素行prx及び対応画素列pcxを特定することができる。
【0119】
また、変形例に係る3次元形状計測方法において、第1ステップでは、投影時に、行方向縞パターンにおける各投影画素行prに対応する部分が、投影画素行prごとに異なる第1周波数で変化するような複数の第1投影画像Ipr、及び、投影時に、列方向縞パターンにおける各投影画素列pcに対応する部分が、投影画素列pcごとに異なる第2周波数で変化するような複数の第2投影画像Ipcを投影し、第2ステップでは、各撮影画素cについて、複数の第1撮影画像Icrに基づいて、第1周波数に基づく対応付けにより対応画素行prxを特定し、複数の第2撮影画像Iccに基づいて、第2周波数に基づく対応付けにより対応画素列pcxを特定する。このような方法によっても、対応画素行prx及び対応画素列pcxを特定することができる。
【0120】
また、投影画像Ipは、投影画素行prの数及び投影画素列pcの数が等しい。これにより、対応画素行prxの特定のための処理内容と、対応画素列pcxの特定のための処理内容とを共通化することができる。よって、CPU11の処理負担を軽減できるとともに、処理を容易に並列化することができる。
【0121】
また、複数の第2投影画像Ipcの各々における列方向縞パターンは、パターンの向きを除いて、複数の第1投影画像Iprの各々における行方向縞パターンと同一である。これにより、対応画素行prxの特定のための演算と、対応画素列pcxの特定のための演算とで、投影パターン行列P(行列A)を同一にすることができる。よって、より容易に処理を並列化することができる。
【0122】
また、本実施形態に係る3次元形状計測装置10は、処理部としてのCPU11を備える。CPU11は、投影画像Ipを投影可能な投影部20により、互いに異なる行方向縞パターンを含む複数の第1投影画像Ipr、及び互いに異なる列方向縞パターンを含む複数の第2投影画像Ipcを計測対象物2に投影させ、計測対象物2の撮影画像Icを取得可能な撮影部30により、複数の第1投影画像Iprの各投影時における複数の第1撮影画像Icr、及び複数の第2投影画像Ipcの各投影時における複数の第2撮影画像Iccを取得させる第1処理と、撮影画像Icの複数の撮影画素cの各々に対応する、投影画像Ipの投影画素p(対応投影画素pn)を特定する第2処理と、第2処理の結果に基づいて計測対象物2の3次元形状を特定する第3処理と、を実行する。CPU11は、第2処理では、複数の撮影画素cの各々について、複数の第1撮影画像Icrと、複数の第1投影画像Iprの行方向縞パターンとに基づいて、投影画像Ipの複数の投影画素行prのうち当該撮影画素cに対応する対応画素行prxを特定し、複数の第2撮影画像Iccと、複数の第2投影画像Ipcの列方向縞パターンとに基づいて、投影画像Ipの複数の投影画素列pcのうち当該撮影画素cに対応する対応画素列pcxを特定し、対応画素行prx及び対応画素列pcxの交点に相当する投影画素pのうちエピポーラ拘束を満たす投影画素pから、当該撮影画素cに対応する投影画素pを特定する。
これによれば、行(列)方向縞パターンを用いることで、投影パターン行列Pの次元数を低減できるため、行列演算における計算量を大幅に削減できるとともに、演算時間を短縮することができる。また、各撮影画素cについての計算内容を統一することが可能であり、各撮影画素cについての演算を並列化しやすくなるため、演算時間を短縮することができる。また、GPU実装が容易であり、GPU実装によって演算時間をさらに短縮することができる。また、対応画素行prxの特定のための処理と、対応画素列pcxの特定のための処理とを並列化することによっても、演算時間を短縮することができる。また、撮影画素cと対応投影画素pnとの対応関係を複数得ておいた上で、エピポーラ拘束を満たすものを抽出する方法により、直接反射光に相当する対応投影画素pnを、簡易かつ適切に抽出することができる。
【0123】
なお、本発明は、上記実施形態及び各変形例に限られるものではなく、様々な変更が可能である。
例えば、上記実施形態では、3次元形状計測装置10、投影部20及び撮影部30が別個に設けられている例を用いて説明したが、この構成に限られず、これらのうち一部又は全部が統合された構成であってもよい。
【0124】
また、上記実施形態では、第1投影画像Iprの行方向縞パターン、及び第2投影画像Ipcの列方向縞パターンが、オン(黒)又はオフ(白)の2値の組み合わせからなる態様を例示したが、これに限られず、3値以上の多値の行方向縞パターン及び列方向縞パターンを用いてもよい。言い換えると、第1投影画像Ipr及び第2投影画像Ipcの各投影画素pの画素値は2値に限られず、3値以上の多値であってもよい。
【0125】
また、投影画像Ipの複数の投影画素pは、投影部20の投影素子の複数の画素と1対1に対応し、撮影画素cの複数の撮影画素cは、撮影部30の撮像素子の複数の画素と1対1に対応する。よって、撮影画素cに対応する対応投影画素pnを特定することは、撮像素子の画素に対応する投影素子の画素を特定することと言い換えることができる。
【0126】
本発明のいくつかの実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定されるものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。
【符号の説明】
【0127】
1 3次元形状計測システム
2 計測対象物
10 3次元形状計測装置
11 CPU(処理部)
12 RAM
13 記憶部
131 プログラム
14 操作部
15 表示部
16 通信部
17 バス
20 投影部
30 撮影部
Ic 撮影画像
Icr 第1撮影画像
Icc 第2撮影画像
Ip 投影画像
Ipr 第1投影画像
Ipc 第2投影画像
Lp エピポーラ線
c、c1 撮影画素
cr 撮影画素行
cc 撮影画素列
p、p1、p2 投影画素
pr 投影画素行
prx 対応画素行
pn 対応投影画素
pc 投影画素列
pcx 対応画素列
px、px1~px5 候補投影画素