JP3800841B2 - 三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 - Google Patents
三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 Download PDFInfo
- Publication number
- JP3800841B2 JP3800841B2 JP37268298A JP37268298A JP3800841B2 JP 3800841 B2 JP3800841 B2 JP 3800841B2 JP 37268298 A JP37268298 A JP 37268298A JP 37268298 A JP37268298 A JP 37268298A JP 3800841 B2 JP3800841 B2 JP 3800841B2
- Authority
- JP
- Japan
- Prior art keywords
- light receiving
- light
- measurement
- spatial code
- receiving element
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体に係り、特に、高精度で測定対象物の表面の位置を計測する三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体に関する。
【0002】
【従来の技術】
従来、三次元形状を計測するために、レーザ光の照射角度と当該レーザ光の戻り光を受光するCCDの受光素子の位置とに基づいて、三角測量の原理により測定対象物表面までの距離を算出している。レーザ光の照射角度を、角度コード又は空間コードという。この空間コードがそれぞれ定義されたスリット光を照射し、このスリット光の角度コードを空間コードとすることができる。そして、スリット光の角度コードとこの角度コードのスリット光を受光した画素位置とから、測定対象物までの距離を算出することができる。
【0003】
【発明が解決しようとする課題】
しかしながら、上記従来例では、スリット光は測定対象物の傾斜によっては細くなってしまうことがあり、受光素子の大きさよりも細く、かつ受光素子と受光素子の間に戻り光が位置するような場合には、測定不能な画素が存在してしまう、という不都合があった。また、空間分解能を向上させるためにスリット光を細くすると、同様に、測定不能点が生じてしまう。そして、この穴の空いた状態の空間コード化画像から距離画像データを生成したときに、測定対象物の面に穴が空いた状態のデータとなってしまう、という不都合があった。
【0004】
距離画像データに穴が存在すると、距離画像データからポリゴンを生成する処理や、また、測定対象物の段差や稜線(エッジ)などの形状の特徴を抽出する処理が複雑となってしまう、という不都合があった。
【0005】
また、ノイズの影響を除去する画像処理の手法として、例えば、局所空間フィルタと呼ばれるフィルタリング処理がある。この処理は注目画素の近傍画像のデータ(明るさ)を用いて注目画素のデータを近傍値の最大値・最小値・中央値などに置換えることで、ノイズの除去を行う。しかしながら、ノイズを除去するには、画像全体に対してフィルタリング処理を行う必要があり、フィルタリング処理後はノイズ以外の画素のデータも変更が加えられるという欠点がある。三次元計測装置より出力される空間コード化画像は、その画素位置とコードの値を用いて三次元座標へ変換されるため、コード値が変化することは精度の面から好ましくない。
【0006】
【発明の目的】
本発明は、係る従来例の有する不都合を改善し、特に、精度を落さずに取扱いを容易とする距離画像データを生成することのできる三次元形状を計測する方法および装置を提供することを、その目的とする。
【0007】
【課題を解決するための手段】
そこで、本発明では、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程と、この照射工程で照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて受光する受光工程と、この受光工程にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理工程と、この空間コード処理工程にて算出された空間コードと受光素子の位置とに基づいて予め定められた座標系での原点から測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程とを備えている。
しかも、空間コード処理工程が、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する測定不能点抽出工程と、この測定不能点抽出工程にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程とを備えた、という構成を採っている。これにより前述した目的を達成しようとするものである。
【0008】
照射工程では、角度コードをそれぞれ定義されるスリット光や、スポット光を計測光として照射する。受光工程では、例えばエリア型のCCDセンサを使用して計測光を受光する。空間コード処理工程では、計測光の種類に応じて、例えばスリット光であれば輝度値が最大となったスリット光の順序に基づいて、空間コード化画像を生成する。そして、距離算出工程では、計測光の角度(空間コード)と、空間コード化画像の画素位置とに応じて三角測量の原理により測定対象物までの距離を算出する。このとき、例えば受光の焦点位置を原点としても良いし、また較正を行うことで測定対象物を含む空間の一点を原点としても良い。
【0009】
空間コード処理工程では、測定不能点抽出工程にて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する。すると、受光工程で種々の理由によってスリット光や最も細いパターン光を受光しない画素が生じてしまっても、この受光不能となった受光素子またはその対応する空間コード化画像の画素位置を抽出する。続いて、補完工程にて、測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する。すると、正常に算出した空間コードを変更することなく、測定不能点に補完値が格納される。このため、距離算出工程にて算出された距離の配列からなる距離画像データは、穴のない連続的な形状を表す。
【0010】
本発明による三次元形状計測装置は、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段と、この照射手段によって照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段と、この受光手段の各受光素子が受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段とを備えている。
しかも、この空間コード処理手段によって算出された空間コードを各受光素子に対応した画素位置に記憶する空間コード記憶手段と、この空間コード記憶手段の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から測定対象物の各表面までの距離を各受光素子毎に算出する距離算出手段とを備えている。
そして、空間コード処理手段が、空間コードが格納されなかった画素を抽出する測定不能点抽出部と、この測定不能点抽出部によって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部とを備えた、という構成を採っている。
【0011】
ここでは、空間コード処理手段は、計測光の種類に応じて受光素子の位置毎に空間コードを特定し、空間コード化画像を生成する。そして、空間コード記憶手段が、当該空間コードを記憶する。続いて、測定不能点抽出部は、計測光を受光しなかった画素に対応した空間コード化画像の画素位置を特定する。例えば、空間コードが初期値のままのものや、または、空間コードの格納の有無を示すフラグを参照して、当該測定不能であった画素を抽出する。すると、補完値算出部は、この測定不能点抽出部によって抽出された測定不能点の空間コードを補完する。すなわち、測定不能点の近傍の画素に格納された空間コードを読出すと共に、例えば、4近傍または8近傍の空間コードを読出すと共に、これらの値の平均や中央値を補完値とする。このため、空間コード化画像およびこの空間コード化画像に基づいて算出した距離画像データは連続的なデータとなる。また、補完値の算出では、近傍値のうち初期値を除いた値の中央値等とすると、死角領域をそのままにCCDの構造上の理由等で生じた穴のみが補完される。
【0012】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。図1に示すように、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程A1と、この照射工程A1で照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて当該計測光を受光する受光工程A2と、この受光工程A2にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを特定する空間コード特定工程A3とを備えている。
【0013】
さらに、空間コード特定工程A3に続いて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する測定不能点抽出工程A4と、この測定不能点抽出工程A4にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程A5と、この空間コード処理工程A3乃至A5にて算出された空間コードと受光素子の位置とに基づいて予め定められた座標系での原点から測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程A6と、この距離算出工程A6にて算出された距離画像データを出力する距離画像データ出力工程とを備えている。
【0014】
測定不能点抽出工程A4では、受光素子の配列と等しい配列の空間コード化画像から、空間コードが格納されなかった画素を探索することで、計測光を受光しなかった受光素子を抽出するようにしても良い。また、空間コード特定工程A3は、各受光素子について計測光を受光したか否かを示す受光フラグを設定する受光フラグ設定工程を備え、測定不能点抽出工程A4が、受光フラグを参照して測定不能点を探索する受光フラグ参照工程を備える構成としてもよい。
【0015】
このように、本実施形態では、有効な測定点であるか否かを判定し、さらに空間コードの連続性の性質を利用して、空間コード化画像中の測定が不能であった画素位置の検出を行う。測定が不能であった画素位置についてのみ例えば近傍画像のコードの中央値を記録することで、正しいデータを変化させることなく、測定不能な画素にコードを補完する。有効な測定点であるか否かの判定は、例えば測定不能な画素にはデータが初期値のままであることを利用するか、または、メモリ・アドレス(画素位置)について測定中にアクセスされたか否かを示すフラグを用いる。
【0016】
図2は空間コードを利用した距離計測の原理を示す説明図である。図2に示す例では、照射工程A1を実現する照射手段は、レーザ光源22と、ガルバノミラー23とを備えている。また、受光工程A2は、カメラ3を使用する。レーザ光源22,ガルバノミラー23及びカメラ3は、図2に示すように、床面(水平面)に対して水平である同一平面上に位置している。また、ガルバノミラー23は、カメラ3の光軸から長さlの距離で配置されており、カメラ3の受光素子31の水平走査線に対して垂直方向(スリット光Rと平行方向)を軸として回転する。この配置により、スリット光Rを受光素子31の水平走査線に沿って平行方向に移動させてカメラ3の受光素子31に受光させることを可能としている。
【0017】
空間コードは、例えば図2に示すθの値に対応してガルバノスキャナ23の走査方向に一定角度毎に増加させた値とする。任意の画素について投光角度θが特定され、且つ、各画素の位置座標のx成分からカメラ3からスリット光R位置の角度αが特定される(図2では直角となっている)。また、カメラ3とガルバノミラー23との離間距離lは既値であるため、例えば、距離h=l・sinθ/sin(α+θ)から求められる。θの値はガルバノスキャナの走査角度によって定り、αの値は受光した受光素子の位置によって定るため、この2つの角度と予め定められた距離lとから、計測光が照射された位置の測定対象物表面までの距離hを算出することができる。
【0018】
図3及び図4は空間コードの例を示す説明図である。図3(A)および図4(A)では、空間コードを濃淡で表しており、黒で示す空間コードが最小で、白で示す空間コードが最大である。図3(A)に示す例では、飛び飛びに黒点が現れていて、これが測定不能点である。図3(B)に示すように、測定不能点の空間コードは最小となる。一方、補完処理を行うと、図4(A)に示す如くとなる。測定対象物が平面である場合、空間コードは水平画素座標の増加に応じて単調に増加する。
【0019】
図5に補完工程A5での補完処理の一例を示す。補完工程A5での補完の手法は種々あるが、例えば、測定不能点の近傍値のうち初期値以外の空間コードに基づいて当該測定不能点の補完値を特定するようにしてもよい。すなわち、空間コード化画像をラスタ走査して測定不能点(例えば0等の初期値)を検索する。次いで、測定不能な画素近傍の画素位置におけるコードの中央値を求め、測定不能点のコード‘0’と置換える。図5(A)に8近傍の例を、図5(B)に4近傍の例を示す。
【0020】
補完処理の具体例としては、注目画素が測定不能点であれば、8近傍コードの中央値を注目画素位置に記録する。また、近傍コード値のうち、0でないものの中央値を注目画素位置に記録するようにするとよい。さらに、近傍コード値のうち、0でないものの平均値を注目画素位置に記録するようにしてもよい。すると、死角による測定不能点の影響を受けない。
【0021】
また、補完工程A5が、測定不能点の補完値について計測光の走査方向にて空間コードが増加又は減少する方向であるのに連続して減少または増加する値となったときには当該補完値を修正する工程を備えるようにしても良い。これは、図3及び図4に示すように、空間コードは測定対象物の形状に関わらず増加(または減少)するため、その予め定められた増加方向にて空間コードが例えば3連続で減少してしまうような補完値は削除するようにする。すると、測定対象物表面から死角へ至るエッジの画素の値に不正確な補完値を格納することがない。
【0022】
図6は本実施形態による三次元形状計測方法の実施に好適な三次元形状計測装置の構成を示すブロック図である。図6に示すように、本実施形態による三次元形状計測装置は、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段2と、この照射手段2によって照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段3と、この受光手段3の各受光素子が受光する計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段4とを備えている。
【0023】
この計測装置はさらに、この空間コード処理手段4によって算出された空間コードを各受光素子に対応した画素位置に記憶する空間コード記憶手段42と、この空間コード記憶手段42の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から測定対象物の各表面までの距離を各受光素子毎に算出する距離算出手段100とを備えている。
【0024】
そして、空間コード処理手段4が、空間コードが格納されなかった画素を抽出する測定不能点抽出部4Bと、この測定不能点抽出部4Bによって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部4Cとを備えている。
【0025】
この空間コード処理手段のうち、測定不能点抽出部4Bと、補完値算出部4Cとは、コンピュータ等の演算装置を使用して実現することができる。この場合、演算装置は、三次元計測用プログラムを記憶した記憶手段と、このプログラムを実行する事により測定不能点抽出部4B等として機能するCPUと、このCPUの主記憶装置となるRAMとを備えている。この三次元計測用プログラムは、演算装置を動作させる指令として、空間コード化画像の各画素のうち空間コード化画像が格納されなかった画素を抽出させる測定不能点抽出指令と、この測定不能点抽出指令に応じて抽出される画素の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出させる補完指令とを備える。これにより、図6に示す構成を実現し、さらに、この図6に示す構成を使用することで図1に示す処理が行われる。
【0026】
【実施例】
次に、三次元形状計測処理の実施例を図面を参照して説明する。
<較正>
図7乃至図9に三次元形状計測装置の構成を行う例を示す。図2に示すように、個別の照射角度と受光素子の画素位置とにより、測定対象物までの距離を算出することができるが、実際には、カメラの画角や、設置時の調整の困難性や、測定対象物を含む座標系での値が扱が容易である等の理由から、本実施例では、空間コードと画素位置との関係を較正している。
【0027】
一般に、撮像画面は平面状のCCD撮像センサにより検出されるため。、カメラ座標系は、Xc−Ycの二次元座標系によって得られる。物体座標系とこのカメラ座標系との関係を同次座標系表現で表すと、次式(1)のように表される。ここで、物体座標系をカメラ座標系に変換する行列Cをカメラパラメータという。
【0028】
【数1】
【0029】
一方、プロジェクタは、一次元方向の変位を求めるため、得られる座標系はXpの一次元のみである。このプロジェクタ座標系と物体座標系との関係を同次座標系表現で表すと、次式(2)のように表される。ここで、物体座標系をプロジェクタ座標系に変換する行列Pをプロジェクタパラメータという。
【0030】
【数2】
【0031】
これら各パラメータを展開し、連立して整理することにより、次式(3),(4),(5)の関係が求められる。
【0032】
【数3】
【0033】
従って、行列Qに逆行列が存在すれば、カメラ座標系(Xc,Yc)及びプロジェクタ座標系Xpから物体座標系V=(X,Y,Z)を求めることができる。前述した各手法により三次元形状の測定を行う場合には、この行列Qを求めるために、前述したカメラパラメータ及びプロジェクタパラメータを予め求める必要がある。
【0034】
まず、CCDカメラで基準立方体Bの明暗画像とスリットプロジェクタで空間コード化法によりコード化画像を取り込む。そして、明暗画像を二値化して指標部を取り出し、各立方体の面内で相対する指標同士を仮想的に結んで格子状に得られるその交点を基準点(Xi,Yi,Zi)として抽出する。
【0035】
カメラパラメータを算出する場合には、この物体座標系上の基準点(既知)の位置座標と、撮像画像上のCCDカメラのイメージセンサ上における画素位置(カメラ座標系上の位置座標(Xci,Yci))をペアで記憶する。
【0036】
この物体座標系上の基準点の位置座標(Xi,Yi,Zi)とカメラ座標系上の位置座標(Xci,Yci)との間には、前述の式(3),(4)から求まる次式(6),(7)の関係が成立する。
【0037】
【数4】
【0038】
各式(6),(7)のC11・・・C21・・・C34の合計12の未知数を求めるには、少なくとも同一平面上にない少なくとも六つ以上の基準点についてカメラ座標系上の点を検出する必要がある。そして、未知数は最小二乗法により求めることができる。
【0039】
図7に三次元計測装置および較正装置の一例を示す。三次元形状計測装置は、測定対象物に対して一定の一次元方向について位置座標を付する照射光を照射する照射機構としてのプロジェクタ202と、照射光を照射された測定対象物を撮像するカメラ3と、このカメラ3による撮像画像から測定対象物の三次元画像データを算出する画像処理ボード201とを備えている。
【0040】
プロジェクタ202は、ストライプ状のパターン光をピッチを変えて照射することが可能であり、ホストコンピュータ200により照射タイミングやパターン光のピッチの指定等の動作制御が行われる。また、パターン光に代えて、スリット光を照射するようにしてもよい。一次元座標系たるプロジェクタ座標系は、ストライプの並び方向(パターン光を垂直に横切る方向)に形成される。
【0041】
CCDカメラ3は、受光した光の輝度に応じた輝度信号を出力する受光素子を備えている。この受光素子は、平面状に配置された画素となる。二次元座標系たるカメラ座標系は、このCCD撮像センサの平面に対応して形成され、各画素の位置が座標系の位置座標に対応する。
【0042】
画像処理ボード201は、プロジェクタ202とCCDカメラ3の同期を図り、また、CCDカメラ3の出力に基づいて三次元形状データを算出する。
【0043】
次に、三次元形状計測装置の較正装置について説明する。この較正装置は、平滑な一平面221上に既知の配置で複数の指標222を付した較正用二次元ゲージ202と、このゲージ202をその一平面221に垂直な方向に移動自在に保持する一軸数値制御テーブル230と、この一軸数値制御テーブル230に装備され,較正用二次元ゲージ202の移動量を調節する調節手段としての一軸数値制御コントローラ240とを備えている。
【0044】
較正用二次元ゲージ202は、図7に示すように、正方形の一平面221を有し、この一平面221がCCDカメラ3及びプロジェクタ202に正対するように一軸数値制御テーブル230に保持されている。そして、CCDカメラ3の対物レンズの光軸と一平面221の法線とが平行である。即ち、これにより、一平面221に対してプロジェクタ202からパターン光の照射が行われ、CCDカメラ3は一平面221における明暗画像の撮像ができ、ホストコンピュータ200では、後述する三次元座標データを画像処理ボード201を介して得ることができる。
【0045】
三次元座標系である物体座標系は、較正用二次元ゲージ202を基準にして設定される。即ち、図7の位置(この位置を現位置とする)にある較正用二次元ゲージ202において、図8(A)に示すように、座標系のX軸は一平面221の左上方の角を原点として水平右方向に設定され、座標系のY軸は一平面21の同じ角を原点として垂直下方向に設定されている。また、座標系のZ軸は、図8(B)に示すように、一平面221の同じ角を原点として当該一平面221の法線方向に沿ってCCDカメラ3と反対側に向けて設定されている。本実施例では、この物体座標系の原点からの距離を空間コードと画素位置とに基づいて算出する。
【0046】
さらに、較正用二次元ゲージ202の一平面221上は白色に彩られ、その上に基準点23を決定する黒点である指標222が付されている。指標222は、図8(A)に示す如く、X軸,Y軸と各辺を平行とした正方形の四辺上に五つずつ等ピッチpで配列されている。互いに対向する辺上にある各指標は、それぞれが他方の辺上にある指標と対応しており、図8(A)の点線で示すように、対応する二つの指標は、X軸又はY軸に平行な直線で結ばれる。この対応する指標を結ぶ各直線の交点が基準点223となる。これら基準点223は、一平面21上に升目状に5×5=25個が展開される。各指標21は、前述した物体座標系において、いずれも既知の位置座標上に位置しており、これに伴い、各基準点23の位置座標も既知となる。
【0047】
一軸数値制御テーブル230は、較正用二次元ゲージ202の保持部材231と、これと係合しZ軸方向に保持部材31を送るボールネジ32と、ボールネジ32を一軸数値制御コントローラ4による数値制御のもとで駆動するステッピングモータ33とを備えている。
【0048】
一軸数値制御コントローラ240は、ホストコンピュータ200からのZ方向の送り量の数値入力を受けて、これに対応する駆動量でステッピングモータ233を駆動制御し、較正用二次元ゲージ202をZ方向について任意の位置に位置決めすることができる。較正の際に一軸数値制御テーブル230は、通常、較正用二次元ゲージ202の送り方向をCCDカメラ3の対物レンズの光軸と平行にして置かれ、当該較正用二次元ゲージ202を、Z方向について、基準点223のピッチpと等しい送り量で現位置から四回送る。
【0049】
ホストコンピュータ200は、三次元形状計測装置及び較正装置の動作制御を行うと共に測定情報の演算を行う。図9に示す三次元形状計測装置の自動較正システムの動作は、全て、このホストコンピュータ200に予め入力されたプログラムによって行われる。
【0050】
図9は、本実施形態の動作を示すフローチャートである。以下、これに基づいて本実施形態の三次元形状計測に先だって行われる三次元形状計測装置の較正動作を説明する。
【0051】
ホストコンピュータ200に記憶される変数ステップを0に初期化する(工程S1)。
【0052】
そして、三次元形状計測装置のプロジェクタ202から出力されるレーザ光を連続的に投影し、較正用二次元ゲージ202の一平面上に付された各指標の画像をCCDカメラ3によって取り込み明暗画像を得る。これにより、ホストコンピュータ200は、その記憶領域に二次元座標系たるカメラ座標系Xc−Ycを設定する(工程S2)。
【0053】
次に、プロジェクタ202からグレイコードパターン(ストライプ上のパターン光)を順次照射して空間コード化画像をCCDカメラ3により撮像する。ホストコンピュータ200は、取り込まれた画像から空間コードを得て、これにより記憶領域に一次元座標系たるプロジェクタ座標系Xpを設定する(工程S3)。
【0054】
撮像した明暗画像を二値化し、円形たる各指標222の重心画素(中心)を求める(工程S4)。
【0055】
ホストコンピュータ200では、正対する各々の指標22同士を結んだ直線の仮想交点を較正用の実座標基準点23として計算により求める(工程S5)。
【0056】
そして、ホストコンピュータの記憶領域において、各基準点223のカメラ座標系上の位置座標(Xc−Yc)とプロジェクタ座標形状の位置座標Xpをそれぞれ対応させてデータとして記憶する(工程S6)。
【0057】
ホストコンピュータ200では、ステップをインクリメントして(工程S7)、較正用二次元ゲージ202をピッチpの距離だけZ方向に移動させる(工程S8)。
【0058】
較正用二次元ゲージ202の撮像が五回行われたか、即ち、Z軸方向の移動が四回行われたかを確認し(工程S9)、もし目標回数を達していなければ工程S2から工程S8の動作を繰り返す。また、達していれば、記憶された上記データを基に、カメラパラメータとプロジェクタパラメータを求めてシステムパラメータを計算する(工程S10)。そして、これにより較正が終了する。
【0059】
また、本実施形態では、空間コード化法に基づいて三次元形状の計測を行う三次元形状計測装置100に対する較正作業を行う例を示したが、一つのスリット光の走査により三次元形状の計測を行う計測装置や他の手法に基づく計測装置に対しても有効である。
【0060】
このように、図7に示す較正装置を使用して画素位置と空間コードとの関係を予め較正しておく。すると、実際の計測では空間コードとその画素位置とから、物体座標系での原点からの距離を算出することができる。
【0061】
<計測>
空間コード化画像を得るには、スリット光を用いる光切断法と、時系列空間コード化パターン(グレイコード化パターン)を使用するパターン光投影法などがある。パターン光投影法については、パターン光の投影では、死角領域や受光素子自体の異常などの他には穴あきは生じがたい。一方、スリット光投影での空間コード化画像の算出処理では穴あきが生じてしまうことがあるため、以下、光切断法を例として測定対象物の形状計測の一例を説明する。
【0062】
図10は、本実施例のブロック図である。ここでは、測定対象物Sに対してスリット光Rを走査する照射手段2と、この照射手段2とは異なる方向から走査により移動するスリット光Rを複数回撮像するカメラ3と、複数の撮像画像から空間コード(角度コード)を算出する空間コード処理手段4とを備えている。
【0063】
また、この三次元形状の計測装置は、図示の如く、空間コード処理手段4で算出した三次元画像データをデジタルI/Oボード102を介して接続されたコンピュータ100に出力する。一方、コンピュータ100は、空間コード処理手段4からの角度コード化画像(空間コード化画像)とその画素位置とに基づいて三次元形状を算出する。この算出では、上述した較正装置を用いて算出したカメラパラメータ等を用い、物体座標系での距離を算出する。
【0064】
照射手段2は、レーザドライバ21により駆動される一本のスリット状のレーザ光(以下、スリット光Rとする)を照射するレーザ光源22と、照射されたスリット光Rを測定対象物S側に反射するガルバノミラー23と、ガルバノミラー23を回転してスリット光Rを測定対象物Sに対して走査するガルバノスキャナ24と、ガルバノスキャナ24の駆動制御を行うスキャナドライバ25と、空間コード処理手段4からの角度信号に基づいてスキャナドライバ25に投光角度指令を出力する投光角度指令作成回路26とを備える。
【0065】
レーザ光源22から射出されるスリット光Rは、測定時における床面に対して垂直方向(図10における上下方向)に沿った棒状の光であり、ガルバノミラー23により当該スリット光Rと垂直方向に移動して測定対象物Sに対して走査を行う。また、スリット光Rは、カメラ3の受光素子31の水平走査線に対して垂直となるように予めその向きが設定されている。
【0066】
投光角度指令作成回路26には、空間コード処理手段4のメモリアドレス作成回路46から投光角度信号が出力され、これに基づいてガルバノスキャナ24の駆動制御が行われる。
【0067】
また、レーザ光源22,ガルバノミラー23及びカメラ3は、図2に示すように、床面(水平面)に対して水平である同一平面上に位置している。そして、ガルバノミラー23は、カメラ3の受光素子31の水平走査線に対して垂直方向(スリット光Rと平行方向)を軸として回転する。この配置により、スリット光Rを受光素子31の水平走査線に沿って平行方向に移動させてカメラ3の受光素子31に受光させることを可能としている。
【0068】
受光素子31は、本実施例では、各画素が水平走査線方向に256個設けられ、そして、かかる水平走査線が243本設けられ、計256×243個の画素が規則正しく配置されている。各画素からの輝度信号の出力は、水平走査線ごとに、羅列された水平走査線方向の並び順に行われる。このときの一本の水平走査線の輝度信号の出力する期間を出力期間といい、出力が行われない出力期間と出力期間との間の期間を帰線期間という。また、一つの水平走査線上の各画素は、出力期間の間にその配列順に出力を行う。そして、全ての画素における出力が映像信号として空間コード処理手段4に送られる。このように、本実施例では、カメラ3の水平走査線方向の画素数と同一の空間コードを有する。
【0069】
また、カメラ3は、スリット光Rの一回の走査を走査線上の画素数(256)で分割して撮像を行う。このため、ガルバノスキャナ24の走査範囲角度を256分割し、各角度ごとに撮像を行うべく、後述する空間コード処理手段4の同期回路43から出力される水平,垂直同期信号により同期が図られる。
【0070】
空間コード処理手段4のブロック図を図11に示す。この空間コード処理手段4は、受光素子31の各走査線ごとに各画素から出力される輝度の最大値を検出し特定するピーク検出部5と、このピーク検出部5の検出に対応して,最大輝度を出力する画素について走査線上の位置を検出し特定する画素位置検出部8と、受光素子31の各画素に個別に対応する輝度の記録領域を有する輝度メモリ41と、ピーク検出部5に検出された輝度と画素位置検出部8に検出された画素の位置に基づいて,輝度メモリ41の対応する画素の記録領域に記録された記録輝度との大小を比較する比較部としての第二の比較回路6と、検出輝度が記録輝度よりも大きい場合に輝度メモリ41の記録輝度を検出輝度の値に更新する第一の更新部としての第三の選択回路7と、各画素に個別に対応する投光角度の記録領域を有する角度コード化メモリ42を備えている。
【0071】
さらに、空間コード処理手段4は、カメラ3の水平,垂直同期を図る同期回路43と、上記カメラ3からの映像信号の輝度信号を量子化するA/D変換回路44と、輝度メモリ41及び角度コード化メモリ42のアドレスを作成するメモリアドレス作成回路46を備えている。
【0072】
このメモリアドレス作成回路46は、同期回路43からの水平同期信号をカウントすることにより、受光素子31の現在出力中の画素が位置する水平走査線番号(端から何番目の水平走査線上で出力を行っているか、を示す。以下、垂直アドレスyとする)を出力する。
【0073】
さらに、メモリアドレス作成回路46は、水平駆動周波数(走査線中画素数768、14.318MHz)を三分周(走査線中画素数を256とするため)したものをカウントし、受光素子31の現在出力中の画素の水平走査線上の位置(水平走査線上で端から何番目の画素が出力を行っているか、を示す。以下、水平アドレスxとする)を出力する。
【0074】
また、同期回路43からの垂直同期信号をカウントし、投光角度信号を作成する共に照射手段2に出力する。さらに、このメモリアドレス作成回路46では、水平同期信号により、後述するピーク検出部5の一時輝度メモリ51及び画素位置検出部8の一時位置メモリ81のクリア信号を一水平走査線の出力ごとに作成し出力する。
【0075】
ところで、A/D変換回路44により量子化された輝度信号は、ピーク検出部5に出力される。このピーク検出部5は、一つの走査線上で最大レベルとなる輝度のみを記録する一時輝度メモリ51と、A/D交換回路44にて量子化された輝度信号の信号レベル(以下、単に「輝度」とする)と走査線中最大輝度メモリ51に記録された輝度とを比較し、いずれの輝度が高いかを出力する第一の比較回路53と、この第一の比較回路53の出力に基づいていずれか高い方の輝度を選択し、一時輝度メモリ51中の記録輝度を更新する第一の選択回路54とを備えている。
【0076】
なお、上述の一時輝度メモリ51は、一画素分の輝度信号を記録できれば足りるので、その記憶容量は、輝度分解能×1(8bit)である。また、一時輝度メモリ51の内容は、各水平帰線期間中(一水平走査線ごと)に0にクリアされる。
【0077】
上記の構成からピーク検出部5では、各走査線ごとの輝度信号の最大レベルが検出され記録される。
【0078】
また、このピーク検出部5による一走査線上の最大輝度が検出される際に、同時に画素位置検出部8では、上記最大輝度を出力する画素の水平アドレスxが検出される。この画素位置検出部8は、一つの走査線上で最大輝度を出力する画素の水平アドレスxのみを記録する一時位置メモリ81と、メモリアドレス作成回路46から順次出力される各画素に対応する水平アドレスxの内、前述したピーク検出部5の第一の比較回路53の出力により選択された最大輝度を出力する画素の水平アドレスxを一時位置メモリ81に上書きする第二の選択回路82とを備えている。
【0079】
なお、上述の一時位置メモリ81は、256ある内のいずれかの画素であるかを記録できれば足りるので、その記憶容量は、256×1(8bit)である。また、一時位置メモリ81の内容は、各水平帰線期間中(一水平走査線ごと)に0にクリアされる。
【0080】
上記の構成から画素位置検出部8では、各走査線ごとの最大輝度を出力する画素の水平アドレスxが検出され記録される。
【0081】
上記各一時輝度メモリ51は、ゲート91を介して前述の第二の比較回路6及び第三の選択回路7に接続されており、ゲート91が閉じた場合に一時輝度メモリ51中の記録輝度がこれらに出力される。一方、一時位置メモリ81は、ゲート92を介して輝度メモリ42及び角度コード化メモリ42に接続されており、ゲート92が閉じた場合に一時位置メモリ81中の水平アドレスxがこれらに出力される。
【0082】
これらのゲート91,92は、いずれもメモリアドレス作成回路46に接続されており、受光素子31の水平同期信号の出力を受けている。そして、これらのゲート91,92は、通常は開かれており、水平同期信号から受光素子31が帰線期間中であることが入力されると閉じられる。
【0083】
これら各ゲート91,92は、受光素子31が帰線期間中のときに同時に一時輝度メモリ51及び一時位置メモリ81の記録内容を出力させる出力同期部9を構成している。
【0084】
次に、輝度メモリ41について説明する。この輝度メモリ41は、受光素子31の各画素に個別に対応する輝度の記録領域が形成されている(図13参照)。そして、この輝度メモリ41の各記録領域中には,それぞれ予め0乃至通常のスリット光の輝度よりも小さい値に設定された輝度が記録されている。
【0085】
前述の如く、各ゲート91,92が閉じられると、一時輝度メモリ51から第二の比較回路6に最大輝度が出力され、一時位置メモリ81からその水平アドレスxが輝度メモリ41に出力される。また、メモリアドレス作成回路46からは、輝度メモリ41に常時現在の垂直アドレスyが出力される。
【0086】
これにより、輝度メモリ41に対して、水平アドレスxと垂直アドレスyから最大輝度を出力した画素が、受光素子31の画素の内のいずれのものであるかが特定され、これに対応する記録領域から記録輝度が第二の比較回路6に出力される。
【0087】
第二の比較回路6では、一時輝度メモリ51からの輝度と輝度メモリ41に既に記録された輝度との比較を行い、いずれが高いかを出力する。第三の選択回路7では、第二の比較回路6の出力を受けて、一時輝度メモリ51からの輝度が高い場合には輝度メモリ41の記録輝度を一時輝度メモリ51の輝度に更新し、そうでない場合には、輝度メモリ41の記録輝度をそのまま維持する。
【0088】
次に、角度コード化メモリ42について説明する。この角度コード化メモリ42は、受光素子31の各画素に個別に対応するスリット光Rの投光角度(ここでは、ガルバノミラー23の回転角度と同義)θの記録領域を備えている。
【0089】
また、この角度コード化メモリ42には、各記録領域の投光角度θの更新を行う第二の更新部としての第四の選択回路45が併設されている。かかる第四の選択回路45は、ゲート91が閉じられることにより作動する第二の比較回路6と接続されており、また同時にメモリアドレス作成回路46から現在の投光角度θを示す投光角度信号が入力されている。
【0090】
一方、角度コード化メモリ42には、常時、メモリアドレス作成回路46から現在の垂直アドレスyが入力され、また、ゲート92が閉じられることにより、一時位置メモリ81から最大輝度を出力した画素の水平アドレスxが入力される。これにより、角度コード化メモリ42に対して、水平アドレスxと垂直アドレスyから最大輝度を出力した画素が、受光素子31の画素の内のいずれのものであるかが特定され、第四の選択回路45による入力待ち状態となる。
【0091】
第四の選択回路45は、第二の比較回路6により、一時輝度メモリ51の輝度と輝度メモリ41の輝度の内,一時輝度メモリ51の輝度が高いと出力された場合に、メモリアドレス作成回路46からの投光角度θを対応する記録領域に記録し、輝度メモリ41の輝度が高いと出力された場合には更新を行わない。このように、第三及び第四の選択回路7,45は、いずれも第二の比較回路6の出力により更新を行うため、輝度メモリ41に対して一時輝度メモリ51の輝度が更新されたときにのみ、角度コード化メモリ42に対する投光角度θの記録(既に記録されている場合には更新)が行われる。
【0092】
ここで、上述した輝度メモリ41及び角度コード化メモリ42は、いずれも、測定開始時において、その記録が0にクリアされる。
【0093】
図12(A)は、この受光素子31上に撮像されたスリット光Rを示している。このとき、照射機構による走査範囲を256分割し、各分割された範囲ごとに撮像が行われるため、投光角度を撮像順に1から256の番号で表すこととする。図12(B)は、走査線番号1の水平走査線に沿った各画素から検出された輝度レベルを示している。この図によれば、水平走査線方向の位置x0で最大輝度レベルが観測され、これをスリット光と見なすことができる。
【0094】
上記各部の機能を総合すると、三次元形状の計測装置10では、出力期間中の水平走査線上において最大輝度を検出した画素をスリット光の照射位置とみなし、各走査線ごとに最大輝度を検出した画素の水平アドレスxを求め、且つ照射したスリット光の投光角度を求め、角度コード化メモリ42を完成させる。これにより、各画素のアドレスについて投光角度が求められると、各アドレスに撮像された測定対象物Sからカメラ3までの距離を算出することが可能となり、コンピュータ100により三次元形状の計測が行われる。
【0095】
このため、まず、ピーク検出部5によって現在出力期間中である水平走査線について、その水平走査線上の画素から出力される輝度の内、最大となる輝度が特定され一時輝度メモリ51に記録される。また、同出力期間中に、画素位置検出部8により、最大輝度を出力する画素の水平アドレスxが特定され、これが一時位置メモリ81に記録される。
【0096】
各メモリ51,81に記録された最大輝度及び水平アドレスxは、その出力期間が終わり帰線期間となるまで保留され、出力同期部9により、帰線期間に移行した時点で輝度メモリ41又は角度コード化メモリ42側に出力される。このように、輝度及び水平アドレスxは、出力期間の間,保留されるため、途中経過で最大と判断された輝度については、その下流側での処理(輝度メモリ41,角度コード化メモリ42への記録)が行われない。
【0097】
そして、これらの出力及びメモリアドレス作成回路46による垂直アドレスy及び投光角度信号の出力により、第二の比較回路6及び第三の選択回路7によって特定されたアドレスの輝度について、輝度メモリ41が比較更新される。即ち、全ての投光角度による撮像画像に対して全ての水平走査線について上述の比較又は更新が行われることにより、全ての画素について、各投光角度によって撮像された全ての撮像画像を通じて最高となった輝度のみが輝度メモリ41中に保管される。
【0098】
また、角度コード化メモリ42には、第二の比較回路6と接続された第四の選択回路45が併設されているため、同様にして、全ての画素について、各投光角度によって撮像された全ての撮像画像を通じて最高となった輝度が検出されたときの当該投光角度のみが角度コード化メモリ42中に保管される。
【0099】
そして、完成した角度コード化メモリ42の情報を出力し、コンピュータ100により三次元形状の計測が行われる。
【0100】
ここで、空間コード処理手段4の演算処理方法を図13乃至図15に示す簡単な例を用いて説明する。ここでは、カメラ3の受光素子31の画素数を3×3(水平方向×垂直方向)と仮定して説明する。また、輝度メモリ41及び角度コード化メモリ42の各記録領域は、測定開始前には全て0にリセットされているものとする。
【0101】
水平方向の画素数が三つであるため、これに対応してスリット光Rが各画素単位で撮像されるガルバノミラー23の回転角度θ0,θ1,θ2で撮像が行われるものとする。
【0102】
まず、投光角度θ=θ0のときの処理を図13に基づいて説明する。まず、投光角度θ=θ0のときのスリット光Rの受光素子31の撮像画像を図13(A)に示す。受光素子31において、横方向は水平アドレスx(図における左から順番に画素に付した番号),縦方向は垂直アドレスy(図における上から順番に水平走査線に付した番号)を示すものとする。また、図13(B)に更新記録前の輝度メモリ41を示す。
【0103】
受光素子31の垂直アドレスy=1の水平走査線の出力期間において、各画素の検出輝度が順番に出力され、ピーク検出部5により出力期間の終わりまでに最大輝度が200と特定され、同時にその水平アドレスxがx=1と特定される。そして、帰線期間に移行すると、特定された最大輝度が輝度メモリ41の記録輝度と比較され、その後、当該最大輝度が記録輝度として更新される(図13(C))。また、輝度メモリ41の更新と同時に、角度コード化メモリ42における水平アドレスx=1,垂直アドレスy=1の記録領域の内容が、そのときの投光角度θ0に更新される(図13(D))。
【0104】
同様の処理が、垂直アドレスy=2,y=3についても行われる(同図(E),(F)はy=2のときの輝度メモリ41,角度コード化メモリ42の更新を示し、同図(G),(H)はy=3のときの輝度メモリ41,角度コード化メモリ42の更新を示す)。
【0105】
次に、投光角度θ=θ1のときの処理を図14に基づいて説明する。まず、投光角度θ=θ1のときのスリット光Rの受光素子31の撮像画像を図14(A)に示す。これに基づき、後の処理は、θ=θ0のときと同様にして、y=1について輝度メモリ41を更新(図14(B))し、角度コード化メモリ42を更新する(図14(C))。
【0106】
さらに、同様の処理が、垂直アドレスy=2,y=3についても行われる(同図(D),(E)はy=2のときの輝度メモリ41,角度コード化メモリ42の更新を示し、同図(F),(G)はy=3のときの輝度メモリ41,角度コード化メモリ42の更新を示す)。
【0107】
最後に、投光角度θ=θ2のときの処理を図15に基づいて説明する。まず、投光角度θ=θ2のときのスリット光Rの受光素子31の撮像画像を図15(A)に示す。これに基づき、後の処理は、θ=θ0のときと同様にして、y=1について輝度メモリ41を更新(図15(B))し、角度コード化メモリ42を更新する(図15(C))。
【0108】
そして、垂直アドレスy=2のとき、スリット光が受光素子31に照射されていないので、かかる水平走査線上では、スリット光以外の光(例えば、測定対象物の他の部位に照射されたスリット光の反射光等のノイズ)が最大輝度として特定されるが、既に輝度メモリ41上に記録された輝度を越えることは実質上有り得ないので、かかる検出輝度は輝度メモリ41上に更新されることはない。
【0109】
さらに、垂直アドレスy=3についても、最大輝度及び水平アドレスxが特定され、これにより、輝度メモリ41上の記録輝度及び角度コード化メモリ42上の投光角度が更新される。(図15(D),(E))。
【0110】
これにより、全ての投光角度の撮像画像の処理が終了し、角度コード化メモリ42が完成する。かかる角度コード化メモリ42の全てのデータは、コンピュータ100に出力される。
【0111】
さらに、コンピュータ(演算装置)100では、角度コード化メモリに格納された角度コードデータ(空間コード化画像)のうち、測定不能点を抽出し、さらに補完値を算出する。その後、補完後の角度コード(空間コード)とその角度コード化メモリ42に格納された画素位置とから物体座標系での距離を算出する。
【0112】
図16および図17は角度コードを算出するまでの処理例を示すフローチャートである。
【0113】
まず、同期回路43及びメモリアドレス作成回路46によりカメラ3と照射手段2の同期が図られ、測定対象物Sに対するスリット光Rの照射と撮像が行われる(ステップS1)。かかる同期によりスリット光は、受光素子31上を水平走査線方向に一画素ごとに位置を変えて撮像される。
【0114】
まず、投光角度1の撮像画像に応じて、走査線番号1の水平走査線から当該走査線上の各画素の並び順に輝度の出力が行われる。このときの一つの水平走査線上の全ての画素から出力が終了するまでが当該水平走査線における出力期間である(ステップS2)。
【0115】
かかる撮像画像に基づいてピーク検出部5により各水平走査線ごとに最大輝度の検出が行われ、同時に、かかる検出に基づいて最大輝度を出力する画素の水平アドレスの検出が行われる(ステップS3)。このとき検出された最大輝度は一時輝度メモリ51に保管され、水平アドレスxは一時位置メモリ81に保管される。
【0116】
上記各検出は、一つの水平走査線の出力期間が終了するまで継続して行われ、最終的に、当該水平走査線について全ての画素の出力に基づいて最大輝度及び水平アドレスが求められ、記録される(ステップS4)。
【0117】
そして、出力期間から帰線期間に移行すると、一時輝度メモリ51及び一時位置メモリ81の各ゲート91,92が閉路する(ステップS5)。
【0118】
ゲート91の閉路により、走査線番号1の水平走査線中の最大輝度が一時輝度メモリ51から第二の比較回路6に出力される。この第二の比較回路6では、検出された最大輝度と輝度メモリ41のアドレス(x,y)=(x0,1)に記録された輝度とを比較する(ステップS6,S7)。そして、検出された最大輝度の方が高い場合に、第三の選択回路7により輝度メモリ41のアドレス(x0,1)の記録輝度が検出された最大輝度の数値に更新される(ステップS8)。
【0119】
なお、このときの輝度メモリ41は、測定開始前に予め初期化されて記録輝度が0の状態であるため、スリット光Rの輝度レベルであれば、通常更新が行われる。また、投光角度が2以降に進行している場合には、それまでの撮像画像による検出によって、既に同じアドレスについて最大輝度が更新されていることもあり得るが、かかる場合も同様にして検出輝度が高い場合には更新される。
【0120】
輝度メモリ41の更新が行われると、角度コード化メモリ42のアドレス(x,y)=(x0,1)にも、そのときの投光角度1が記録される(ステップS9)。
【0121】
一方、検出された最大輝度レベルの方が低い場合には、輝度メモリ41の更新は行われず、同時に、角度コード化メモリ42の記録も行われない(ステップS10)。
【0122】
そして、一つのスリット光Rに対して、全ての水平走査線について上記の工程が繰り返し行われる(ステップS11)。これにより、投光角度1におけるスリット光について各水平走査線方向の位置(水平アドレスx)が角度コード化メモリ42上に記録される。
【0123】
一つのスリット光について処理が終わると、次の投光角度のスリット光の撮像が行われ、上記の工程が繰り返される(ステップS12)。そして、全ての投光角度におけるスリット光の処理が終わると、角度コード化メモリ42の記録情報が測定データとしてコンピュータ100に出力される(ステップS13)。コンピュータ100は、角度コード化メモリ42からの出力により、補完処理および三次元形状演算を行い表示する(ステップS14)。
【0124】
本実施例では、記録輝度の設定輝度レベルが、スリット光の検出輝度の記録を妨げるほどに高くない場合には、仮に、スリット光が照射されない部分が生じた場合,或いはスリット光が暗くしか照射されなかった場合に、ノイズを選択して取り込むことを防止することが可能である。これは、ノイズはスリット光の輝度よりもかなり低い輝度であり、上述の例にように予めスリット光の半分程度の輝度が輝度メモリ41に入力されていれば、これに満たないノイズの輝度が更新記録することはないからである。
【0125】
<補完>
次に、補完処理を説明する。
本実施例では、コード化画像の測定前の初期値(例えば0)を測定不能点として判断する。すなわち、測定装置内部の空間コード記録用メモリを測定前に一定値で初期化しておく。測定終了後、初期値が記録されている画素は測定不能点(画素)として処理する。図18(A)に示すように、角度コードの初期値を0とすると、測定不能点が存在する場合には測定後の角度コード化メモリ42には測定された角度コード42cが格納されず、初期値42dのままとなる。このため、測定不能点を探索するには、この初期値42dを検索するとよい。
【0126】
また、角度コード化メモリの各画素にアクセスされたか否かを示すフラグを設けるようにしてもよい。すなわち、メモリ・アクセス用のフラグを1bit設け、フラグにより判定するようにしてもよい。空間コード記録用メモリを1bit増やす。例えば、投光角度コードが0から255であれば、8+1=9bitとする。測定前にフラグ用bitを1(または0)に設定しておく。測定中にアクセスされたメモリ・アドレス(画素位置)のフラグbitを0(または1)とする。測定後当該フラグを調べることで測定不能点(画素)の検出が可能となる。図18(B)に示す例では、フラグの初期値を1とすると、測定後には測定不能点42eのみフラグが1となり、角度コードが格納された画素のフラグは0となる。これにより、測定不能点を抽出する。
【0127】
図20は測定不能点の発生理由の一例を説明するための説明図である。図20に示すように、CCD等の固体撮像素子では、受光素子31の間に垂直転送用のCCD32があるため、各画素と画素の境目の領域が存在する。ある投光角度のときに、スリット光Rがこの境界領域に入ってしまうと、その投光角度におけるスリット位置が図中R1,R2となり、図中符号42dで示す画素位置には投光角度が記録されず、測定不能となる。
【0128】
また、図21に示すように、異なる投光角度においてスリット光で測定対象を照明したとき、画像中のスリット光の位置がR3,R4,R5のようになる場合がある。この場合も図中符号42dで示すの画素位置には投光角度が記録されず測定不能点となる。
【0129】
また、照明が当らない死角部分も測定不能点となる。しかし、この場合には、異なった角度から測定を行った結果をつなぎ合せることにより死角領域のデータを補うことが可能である。すなわち、死角領域は一般に画像中の広い範囲に存在するため、中央値によって補完する本提案では近傍画素にデータがなければ死角領域への影響もない。例えば、近傍画素の値が0であれば、補完されるデータも0となる。
【0130】
図22は測定された空間コード化画像の一部分(6×6の領域)の空間コード値である。この例では、測定不能点をコード値0で検出する。図22では、測定不能点を符号42dおよび42eで示す。近傍のコードから、符号42fで示す画素は123、符号42gで示す画素は122と推測される。この画素について周辺4近傍のデータの0以外の中央値を用いた平滑化処理を行うと図23の結果を得る。
【0131】
図22と図23との比較すると、正しい測定データが影響を受けずに符号42fで示す画素は123、符号42gで示す画素は122となり推測どおりの平滑化が行われた。この例では、A,B点のデータを測定不能点の4近傍のコードの中央値を用いて補完したが、4近傍でなく8近傍でもよい。また中央値でなく測定不能点を除く近傍のコードの平均値を用いても良い。
【0132】
図24は図17の符号14で示す三次元形状の演算処理中、補完処理の一例を示すフローチャートである。ここでは、画素数256×256(x×y)、空間コード化画像をCode(x,y)とする。図24に示すように、xおよびyの値を0に初期化する(ステップC1)。続いて、測定不能点を検出する(ステップC2)。測定不能点であれば(ステップC3)、中央値を演算する(ステップC4)。そして、x=255でなければ、xの値をカウントアップして(ステップC6)、ステップC2に戻る。水平方向の走査が終了すると、次にyの値をカウントアップして(ステップC7,8)、補完処理を継続する。これを垂直走査方向について完了するまで繰返す。
【0133】
図25は補完処理の一例を示す説明図である。図25に示すように、補完処理を行わないと穴の多い立体形状となってしまうが、補完処理を行うと、表面が連続した距離画像データを得ることができる。
【0134】
上述したように本実施例によると、測定不能であった画素を検出し、その画素についてのみフィルタリング処理を行うため、正しい測定データを変更せずに補完処理を行うことができる。この補間後に生成する距離画像では、ポリゴン生成も隣の画素を順次接続することで行うことができるため、ポリゴン生成が容易となる。また、ジャンプエッジの検出などは近傍画素の微分によって行うことが可能となるため、測定対象物の段差などの特徴抽出処理を簡便化することができる。
【0135】
【発明の効果】
本発明は以上のように構成され機能するので、これによると、測定不能点抽出工程にて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出し、続いて、補完工程にて、測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出するため、正常に算出した空間コードを変更することなく、種々の理由で受光できなかった受光素子に対応する空間コード化画像の測定不能点に補完値を格納することができ、さらに、補完工程では、測定不能点の近傍の値に基づいて補完値を算出するため、空間コードの連続性に基づいて正確な補完値を算出することができ、従って、空間コードに不連続に穴が生じてしまっても、この補完工程にて空間コードを連続にすることができ、すると、測定対象物の表面に画素一つ分の穴が空いてしまう状態の発生を有効に防止することができ、このため、例えばポリゴン生成も隣の画素を順次接続することで行うことができ、従って、距離画像に基づくポリゴン生成が容易となり、その他、測定対象物の段差などの特徴抽出処理を簡便化することができ、このように、取扱いの容易な距離画像データを生成することができるという従来にない優れた三次元形状計測方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の第一の実施形態の構成を示すフローチャートである。
【図2】図1に示した空間コードと受光素子の位置と測定対象物までの距離の関係を示す説明図である。
【図3】測定不能点を有する空間コード化画像の一例を示す説明図であり、図3(A)は空間コードを濃淡で示した図で、図3(B)は図3(A)中の矢印にて切断した空間コードの例を示す図である。
【図4】補完処理後の空間コード化画像の一例を示す説明図であり、図4(A)は空間コードを濃淡で示した図で、図4(B)は図4(A)中の矢印にて切断した空間コードの例を示す図である。
【図5】図1に示した補完処理にて近傍画素を参照する例を示す説明図であり、図5(A)は8近傍の例を示す図で、図5(B)は4近傍の例を示す図である。
【図6】本発明による三次元形状計測装置の構成を示すブロック図である。
【図7】図6に示した三次元計測装置を較正する較正装置の例を示す斜視図である。
【図8】図7に開示した較正用二次元ゲージを示す図で、図8(A)はその正面図、図8(B)は側面図である。
【図9】図7に示した装置による較正処理例を示すフローチャートである。
【図10】光切断法による三次元計測装置の構成を示すブロック図である。
【図11】図10に示した空間コード処理手段の一例を示すブロック図である。
【図12】図12(A)はスリット光を撮像したCCD撮像センサを示す説明図であり、図12(B)は走査線番号1の水平走査線を構成する画素の出力を並び順に示す説明図である。
【図13】空間コード処理手段の動作を説明する構成を簡易化して示した説明図であり、図13(A)は一つ目のスリット光を撮像したCCD撮像センサを示し、図13(B)は初期化された輝度メモリを示し、図13(C)は図13(A)のスリット光の撮像により得られた一番目の走査線における輝度を記録した輝度メモリを示し、図13(D)は図13(C)の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図13(E)から図13(H)までは、同様にして各走査線ごとに輝度メモリ及び角度コード化メモリが記録される状態を示している。
【図14】算出手段の動作を説明する構成を簡易化して示した図13の続きの説明図であり、図14(A)は二つ目のスリット光を撮像したCCD撮像センサを示し、図14(B)は図14(A)のスリット光の撮像により得られた一番目の走査線における輝度を記録した輝度メモリを示し、図14(C)は図14(B)の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図14(D)から図14(G)までは、同様にして各走査線ごとに輝度メモリ及び角度コード化メモリが記録される状態示している。
【図15】算出手段の動作を説明する構成を簡易化して示した図5の続きの説明図であり、図15(A)は三つ目のスリット光を撮像したCCD撮像センサを示し、図15(B)は図15(A)のスリット光の撮像により得られた一番目の走査線の輝度を記録した輝度メモリを示し、図15(C)は図15(B)の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図15(D)は三番目の走査線の輝度を記録した輝度メモリを示し、図15(E)は図15(D)の輝度メモリに基づいて記録された角度コード化メモリを示す。
【図16】図10に示した構成により光切断法に基づく空間コードの生成処理の一例を示すフローチャートの前段である。
【図17】図10に示した構成により光切断法に基づく空間コードの生成処理の一例を示すフローチャートの後段である。
【図18】測定不能点の抽出処理の一例を示す説明図であり、図18(A)はコードの初期値を示す図で、図18(B)は測定後のコードの例を示す図である。
【図19】測定不能点の抽出処理の他の例を示す説明図であり、図19(A)はコードの初期値を示す図で、図19(B)は測定後のコードの例を示す図である。
【図20】測定不能点が生じる理由を説明するための説明図である。
【図21】測定不能点が生じる他の理由を説明するための説明図である。
【図22】測定不能点を有する空間コード化画像の一例を示す説明図である。
【図23】図22に示した空間コード画像を補完した例を示す説明図である。
【図24】補完処理の一例を示すフローチャートである。
【図25】補完処理の結果を示す説明図であり、図25(A)は補完処理前の空間コード化画像から算出した距離画像データの一例を示す図で、図25(B)は補完処理後の空間コード化画像から算出した距離画像の例を示す説明図である。
【符号の説明】
2 照射機構
3 カメラ
4 算出手段
31 受光素子
41 輝度メモリ
42 角度コード化メモリ
R スリット光
S 測定対象物
Claims (5)
- 測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程と、この照射工程で照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて当該計測光を受光する受光工程と、この受光工程にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理工程と、この空間コード処理工程にて算出された空間コードと前記受光素子の位置とに基づいて予め定められた座標系での原点から前記測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程とを備えた三次元形状計測方法において、
前記空間コード処理工程が、前記受光平面上の各受光素子のうち前記計測光を受光しなかった受光素子を抽出する測定不能点抽出工程と、この測定不能点抽出工程にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程とを備えたことを特徴とする三次元形状計測方法。 - 前記空間コード処理工程が、前記各受光素子について前記計測光を受光したか否かを示す受光フラグを設定する受光フラグ設定工程を備え、前記測定不能点抽出工程が、前記受光フラグを参照して測定不能点を探索する受光フラグ参照工程を備えたことを特徴とする請求項1記載の三次元形状計測方法。
- 前記補完工程が、前記測定不能点の近傍値のうち初期値以外の空間コードに基づいて当該測定不能点の補完値を特定する工程を備えたことを特徴とする請求項1記載の三次元形状計測方法。
- 測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段と、この照射手段によって照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段と、この受光手段の各受光素子が受光する計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段とを備えると共に、
この空間コード処理手段によって算出された空間コードを前記各受光素子に対応した画素位置に記憶する空間コード記憶手段と、この空間コード記憶手段の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から前記測定対象物の各表面までの距離を前記各受光素子毎に算出する距離算出手段とを備えた三次元形状計測装置において、
前記空間コード処理手段が、前記空間コードが格納されなかった画素を抽出する測定不能点抽出部と、この測定不能点抽出部によって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部とを備えたことを特徴とする三次元形状測定装置。 - 測定対象物を含む空間を分割する空間コードに対応した計測光を照射させる照射装置と、この照射装置によって照射された照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて受光する受光装置と、この受光装置にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理装置と、この空間コード処理装置によって生成された空間コード化画像に基づいて予め定められた座標系での原点から前記測定対象物の表面までの距離を各受光素子毎に算出する演算装置とを備えた三次元形状計測装置を使用して前記測定対象物の形状を測定する三次元形状計測用プログラムを記憶した記憶媒体であって、
前記三次元形状計測用プログラムは前記演算装置を動作させる指令として、前記空間コード化画像の各画素のうち空間コード化画像が格納されなかった画素を抽出させる測定不能点抽出指令と、この測定不能点抽出指令に応じて抽出される画素の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出させる補完指令とを備えたことを特徴とする三次元形状計測用プログラムを記憶した記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37268298A JP3800841B2 (ja) | 1998-12-28 | 1998-12-28 | 三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37268298A JP3800841B2 (ja) | 1998-12-28 | 1998-12-28 | 三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000193433A JP2000193433A (ja) | 2000-07-14 |
JP3800841B2 true JP3800841B2 (ja) | 2006-07-26 |
Family
ID=18500876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37268298A Expired - Fee Related JP3800841B2 (ja) | 1998-12-28 | 1998-12-28 | 三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3800841B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5543476B2 (ja) * | 2010-10-26 | 2014-07-09 | 一般財団法人機械振興協会 | 工具衝突防止システム及び工具衝突防止方法 |
DE102014012710A1 (de) * | 2014-08-27 | 2016-03-03 | Steinbichler Optotechnik Gmbh | Verfahren und Vorrichtung zum Bestimmen der 3D-Koordinaten eines Objekts |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3786997B2 (ja) * | 1996-02-13 | 2006-06-21 | テルモ株式会社 | 画像処理装置 |
JPH10300443A (ja) * | 1997-04-25 | 1998-11-13 | Suzuki Motor Corp | 三次元形状計測装置 |
JPH11108633A (ja) * | 1997-09-30 | 1999-04-23 | Peteio:Kk | 3次元形状計測装置及びそれを用いた3次元彫刻装置 |
-
1998
- 1998-12-28 JP JP37268298A patent/JP3800841B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000193433A (ja) | 2000-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7116246B2 (en) | Apparatus and method for sensing the occupancy status of parking spaces in a parking lot | |
US7456842B2 (en) | Color edge based system and method for determination of 3D surface topology | |
EP0669593B1 (en) | Two-dimensional code recognition method | |
JP4885584B2 (ja) | レンジファインダ校正方法及び装置 | |
JP2001116526A (ja) | 3次元形状計測装置 | |
US7260243B2 (en) | Intruding-object detection apparatus | |
WO2009120073A2 (en) | A dynamically calibrated self referenced three dimensional structured light scanner | |
JPH11166818A (ja) | 三次元形状計測装置の校正方法及び校正装置 | |
JP3800842B2 (ja) | 三次元形状を計測する方法および装置並びに三次元形状計測用プログラムを記憶した記憶媒体 | |
JP2007508557A (ja) | 三次元物体を走査するための装置 | |
JPH10122838A (ja) | 三次元構造推定方法及び装置 | |
JPH1144533A (ja) | 先行車両検出装置 | |
JP2001159506A (ja) | 3次元形状計測装置および方法、並びに記録媒体 | |
JP3800841B2 (ja) | 三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体 | |
JP3621215B2 (ja) | 3次元測定装置 | |
JPH0791927A (ja) | 三次元計測装置 | |
JPH10269365A (ja) | 特徴抽出方法およびその方法を用いた物体認識装置 | |
JP3253328B2 (ja) | 距離動画像入力処理方法 | |
JP3151472B2 (ja) | 3次元物体像の生成方法 | |
JP2000337829A (ja) | 輝度計測方法及び輝度計測用プログラムを記憶した記憶媒体並びに三次元計測装置 | |
JP2002131031A (ja) | 三次元形状計測方法および三次元形状計測装置 | |
JP2961140B2 (ja) | 画像処理方法 | |
JP2001264017A (ja) | 3次元画像撮影装置 | |
JPH10283478A (ja) | 特徴抽出方法およびその方法を用いた物体認識装置 | |
JPH11223516A (ja) | 3次元画像撮像装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050325 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060424 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140512 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |