(57)【特許請求の範囲】
【請求項１】
測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程と、この照射工程で照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて当該計測光を受光する受光工程と、この受光工程にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理工程と、この空間コード処理工程にて算出された空間コードと前記受光素子の位置とに基づいて予め定められた座標系での原点から前記測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程とを備えた三次元形状計測方法において、
前記空間コード処理工程が、前記受光平面上の各受光素子のうち前記計測光を受光しなかった受光素子を抽出する測定不能点抽出工程と、この測定不能点抽出工程にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程とを備えたことを特徴とする三次元形状計測方法。
【請求項２】
前記空間コード処理工程が、前記各受光素子について前記計測光を受光したか否かを示す受光フラグを設定する受光フラグ設定工程を備え、前記測定不能点抽出工程が、前記受光フラグを参照して測定不能点を探索する受光フラグ参照工程を備えたことを特徴とする請求項１記載の三次元形状計測方法。
【請求項３】
前記補完工程が、前記測定不能点の近傍値のうち初期値以外の空間コードに基づいて当該測定不能点の補完値を特定する工程を備えたことを特徴とする請求項１記載の三次元形状計測方法。
【請求項４】
測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段と、この照射手段によって照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段と、この受光手段の各受光素子が受光する計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段とを備えると共に、
この空間コード処理手段によって算出された空間コードを前記各受光素子に対応した画素位置に記憶する空間コード記憶手段と、この空間コード記憶手段の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から前記測定対象物の各表面までの距離を前記各受光素子毎に算出する距離算出手段とを備えた三次元形状計測装置において、
前記空間コード処理手段が、前記空間コードが格納されなかった画素を抽出する測定不能点抽出部と、この測定不能点抽出部によって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部とを備えたことを特徴とする三次元形状測定装置。
【請求項５】
測定対象物を含む空間を分割する空間コードに対応した計測光を照射させる照射装置と、この照射装置によって照射された照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて受光する受光装置と、この受光装置にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理装置と、この空間コード処理装置によって生成された空間コード化画像に基づいて予め定められた座標系での原点から前記測定対象物の表面までの距離を各受光素子毎に算出する演算装置とを備えた三次元形状計測装置を使用して前記測定対象物の形状を測定する三次元形状計測用プログラムを記憶した記憶媒体であって、
前記三次元形状計測用プログラムは前記演算装置を動作させる指令として、前記空間コード化画像の各画素のうち空間コード化画像が格納されなかった画素を抽出させる測定不能点抽出指令と、この測定不能点抽出指令に応じて抽出される画素の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出させる補完指令とを備えたことを特徴とする三次元形状計測用プログラムを記憶した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体に係り、特に、高精度で測定対象物の表面の位置を計測する三次元形状を計測する方法および装置ならびに三次元形状計測用プログラムを記憶した記憶媒体に関する。
【０００２】
【従来の技術】
従来、三次元形状を計測するために、レーザ光の照射角度と当該レーザ光の戻り光を受光するＣＣＤの受光素子の位置とに基づいて、三角測量の原理により測定対象物表面までの距離を算出している。レーザ光の照射角度を、角度コード又は空間コードという。この空間コードがそれぞれ定義されたスリット光を照射し、このスリット光の角度コードを空間コードとすることができる。そして、スリット光の角度コードとこの角度コードのスリット光を受光した画素位置とから、測定対象物までの距離を算出することができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来例では、スリット光は測定対象物の傾斜によっては細くなってしまうことがあり、受光素子の大きさよりも細く、かつ受光素子と受光素子の間に戻り光が位置するような場合には、測定不能な画素が存在してしまう、という不都合があった。また、空間分解能を向上させるためにスリット光を細くすると、同様に、測定不能点が生じてしまう。そして、この穴の空いた状態の空間コード化画像から距離画像データを生成したときに、測定対象物の面に穴が空いた状態のデータとなってしまう、という不都合があった。
【０００４】
距離画像データに穴が存在すると、距離画像データからポリゴンを生成する処理や、また、測定対象物の段差や稜線（エッジ）などの形状の特徴を抽出する処理が複雑となってしまう、という不都合があった。
【０００５】
また、ノイズの影響を除去する画像処理の手法として、例えば、局所空間フィルタと呼ばれるフィルタリング処理がある。この処理は注目画素の近傍画像のデータ（明るさ）を用いて注目画素のデータを近傍値の最大値・最小値・中央値などに置換えることで、ノイズの除去を行う。しかしながら、ノイズを除去するには、画像全体に対してフィルタリング処理を行う必要があり、フィルタリング処理後はノイズ以外の画素のデータも変更が加えられるという欠点がある。三次元計測装置より出力される空間コード化画像は、その画素位置とコードの値を用いて三次元座標へ変換されるため、コード値が変化することは精度の面から好ましくない。
【０００６】
【発明の目的】
本発明は、係る従来例の有する不都合を改善し、特に、精度を落さずに取扱いを容易とする距離画像データを生成することのできる三次元形状を計測する方法および装置を提供することを、その目的とする。
【０００７】
【課題を解決するための手段】
そこで、本発明では、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程と、この照射工程で照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて受光する受光工程と、この受光工程にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理工程と、この空間コード処理工程にて算出された空間コードと受光素子の位置とに基づいて予め定められた座標系での原点から測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程とを備えている。
しかも、空間コード処理工程が、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する測定不能点抽出工程と、この測定不能点抽出工程にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程とを備えた、という構成を採っている。これにより前述した目的を達成しようとするものである。
【０００８】
照射工程では、角度コードをそれぞれ定義されるスリット光や、スポット光を計測光として照射する。受光工程では、例えばエリア型のＣＣＤセンサを使用して計測光を受光する。空間コード処理工程では、計測光の種類に応じて、例えばスリット光であれば輝度値が最大となったスリット光の順序に基づいて、空間コード化画像を生成する。そして、距離算出工程では、計測光の角度（空間コード）と、空間コード化画像の画素位置とに応じて三角測量の原理により測定対象物までの距離を算出する。このとき、例えば受光の焦点位置を原点としても良いし、また較正を行うことで測定対象物を含む空間の一点を原点としても良い。
【０００９】
空間コード処理工程では、測定不能点抽出工程にて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する。すると、受光工程で種々の理由によってスリット光や最も細いパターン光を受光しない画素が生じてしまっても、この受光不能となった受光素子またはその対応する空間コード化画像の画素位置を抽出する。続いて、補完工程にて、測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する。すると、正常に算出した空間コードを変更することなく、測定不能点に補完値が格納される。このため、距離算出工程にて算出された距離の配列からなる距離画像データは、穴のない連続的な形状を表す。
【００１０】
本発明による三次元形状計測装置は、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段と、この照射手段によって照射された計測光を当該計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段と、この受光手段の各受光素子が受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段とを備えている。
しかも、この空間コード処理手段によって算出された空間コードを各受光素子に対応した画素位置に記憶する空間コード記憶手段と、この空間コード記憶手段の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から測定対象物の各表面までの距離を各受光素子毎に算出する距離算出手段とを備えている。
そして、空間コード処理手段が、空間コードが格納されなかった画素を抽出する測定不能点抽出部と、この測定不能点抽出部によって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部とを備えた、という構成を採っている。
【００１１】
ここでは、空間コード処理手段は、計測光の種類に応じて受光素子の位置毎に空間コードを特定し、空間コード化画像を生成する。そして、空間コード記憶手段が、当該空間コードを記憶する。続いて、測定不能点抽出部は、計測光を受光しなかった画素に対応した空間コード化画像の画素位置を特定する。例えば、空間コードが初期値のままのものや、または、空間コードの格納の有無を示すフラグを参照して、当該測定不能であった画素を抽出する。すると、補完値算出部は、この測定不能点抽出部によって抽出された測定不能点の空間コードを補完する。すなわち、測定不能点の近傍の画素に格納された空間コードを読出すと共に、例えば、４近傍または８近傍の空間コードを読出すと共に、これらの値の平均や中央値を補完値とする。このため、空間コード化画像およびこの空間コード化画像に基づいて算出した距離画像データは連続的なデータとなる。また、補完値の算出では、近傍値のうち初期値を除いた値の中央値等とすると、死角領域をそのままにＣＣＤの構造上の理由等で生じた穴のみが補完される。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。図１に示すように、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射工程Ａ１と、この照射工程Ａ１で照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子にて当該計測光を受光する受光工程Ａ２と、この受光工程Ａ２にて受光した計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを特定する空間コード特定工程Ａ３とを備えている。
【００１３】
さらに、空間コード特定工程Ａ３に続いて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出する測定不能点抽出工程Ａ４と、この測定不能点抽出工程Ａ４にて抽出された測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出する補完工程Ａ５と、この空間コード処理工程Ａ３乃至Ａ５にて算出された空間コードと受光素子の位置とに基づいて予め定められた座標系での原点から測定対象物の表面までの距離を各受光素子毎に算出する距離算出工程Ａ６と、この距離算出工程Ａ６にて算出された距離画像データを出力する距離画像データ出力工程とを備えている。
【００１４】
測定不能点抽出工程Ａ４では、受光素子の配列と等しい配列の空間コード化画像から、空間コードが格納されなかった画素を探索することで、計測光を受光しなかった受光素子を抽出するようにしても良い。また、空間コード特定工程Ａ３は、各受光素子について計測光を受光したか否かを示す受光フラグを設定する受光フラグ設定工程を備え、測定不能点抽出工程Ａ４が、受光フラグを参照して測定不能点を探索する受光フラグ参照工程を備える構成としてもよい。
【００１５】
このように、本実施形態では、有効な測定点であるか否かを判定し、さらに空間コードの連続性の性質を利用して、空間コード化画像中の測定が不能であった画素位置の検出を行う。測定が不能であった画素位置についてのみ例えば近傍画像のコードの中央値を記録することで、正しいデータを変化させることなく、測定不能な画素にコードを補完する。有効な測定点であるか否かの判定は、例えば測定不能な画素にはデータが初期値のままであることを利用するか、または、メモリ・アドレス（画素位置）について測定中にアクセスされたか否かを示すフラグを用いる。
【００１６】
図２は空間コードを利用した距離計測の原理を示す説明図である。図２に示す例では、照射工程Ａ１を実現する照射手段は、レーザ光源２２と、ガルバノミラー２３とを備えている。また、受光工程Ａ２は、カメラ３を使用する。レーザ光源２２，ガルバノミラー２３及びカメラ３は、図２に示すように、床面（水平面）に対して水平である同一平面上に位置している。また、ガルバノミラー２３は、カメラ３の光軸から長さｌの距離で配置されており、カメラ３の受光素子３１の水平走査線に対して垂直方向（スリット光Ｒと平行方向）を軸として回転する。この配置により、スリット光Ｒを受光素子３１の水平走査線に沿って平行方向に移動させてカメラ３の受光素子３１に受光させることを可能としている。
【００１７】
空間コードは、例えば図２に示すθの値に対応してガルバノスキャナ２３の走査方向に一定角度毎に増加させた値とする。任意の画素について投光角度θが特定され、且つ、各画素の位置座標のｘ成分からカメラ３からスリット光Ｒ位置の角度αが特定される（図２では直角となっている）。また、カメラ３とガルバノミラー２３との離間距離ｌは既値であるため、例えば、距離ｈ＝ｌ・sinθ／sin（α＋θ）から求められる。θの値はガルバノスキャナの走査角度によって定り、αの値は受光した受光素子の位置によって定るため、この２つの角度と予め定められた距離ｌとから、計測光が照射された位置の測定対象物表面までの距離ｈを算出することができる。
【００１８】
図３及び図４は空間コードの例を示す説明図である。図３（Ａ）および図４（Ａ）では、空間コードを濃淡で表しており、黒で示す空間コードが最小で、白で示す空間コードが最大である。図３（Ａ）に示す例では、飛び飛びに黒点が現れていて、これが測定不能点である。図３（Ｂ）に示すように、測定不能点の空間コードは最小となる。一方、補完処理を行うと、図４（Ａ）に示す如くとなる。測定対象物が平面である場合、空間コードは水平画素座標の増加に応じて単調に増加する。
【００１９】
図５に補完工程Ａ５での補完処理の一例を示す。補完工程Ａ５での補完の手法は種々あるが、例えば、測定不能点の近傍値のうち初期値以外の空間コードに基づいて当該測定不能点の補完値を特定するようにしてもよい。すなわち、空間コード化画像をラスタ走査して測定不能点（例えば０等の初期値）を検索する。次いで、測定不能な画素近傍の画素位置におけるコードの中央値を求め、測定不能点のコード‘０’と置換える。図５（Ａ）に８近傍の例を、図５（Ｂ）に４近傍の例を示す。
【００２０】
補完処理の具体例としては、注目画素が測定不能点であれば、８近傍コードの中央値を注目画素位置に記録する。また、近傍コード値のうち、０でないものの中央値を注目画素位置に記録するようにするとよい。さらに、近傍コード値のうち、０でないものの平均値を注目画素位置に記録するようにしてもよい。すると、死角による測定不能点の影響を受けない。
【００２１】
また、補完工程Ａ５が、測定不能点の補完値について計測光の走査方向にて空間コードが増加又は減少する方向であるのに連続して減少または増加する値となったときには当該補完値を修正する工程を備えるようにしても良い。これは、図３及び図４に示すように、空間コードは測定対象物の形状に関わらず増加（または減少）するため、その予め定められた増加方向にて空間コードが例えば３連続で減少してしまうような補完値は削除するようにする。すると、測定対象物表面から死角へ至るエッジの画素の値に不正確な補完値を格納することがない。
【００２２】
図６は本実施形態による三次元形状計測方法の実施に好適な三次元形状計測装置の構成を示すブロック図である。図６に示すように、本実施形態による三次元形状計測装置は、測定対象物を含む空間を分割する空間コードに対応した計測光を照射する照射手段２と、この照射手段２によって照射された計測光の照射角度に対して予め定められた角度をなす受光平面に二次元に配列された各受光素子を有する受光手段３と、この受光手段３の各受光素子が受光する計測光の順序に基づいて各受光素子に対応する位置ごとに空間コードを算出する空間コード処理手段４とを備えている。
【００２３】
この計測装置はさらに、この空間コード処理手段４によって算出された空間コードを各受光素子に対応した画素位置に記憶する空間コード記憶手段４２と、この空間コード記憶手段４２の各画素位置及び当該画素に格納された空間コードに基づいて予め定められた座標系での原点から測定対象物の各表面までの距離を各受光素子毎に算出する距離算出手段１００とを備えている。
【００２４】
そして、空間コード処理手段４が、空間コードが格納されなかった画素を抽出する測定不能点抽出部４Ｂと、この測定不能点抽出部４Ｂによって抽出された測定不能点の空間コードについて当該測定不能点の近傍の画素に格納された空間コードに基づく補完値を算出する補完値算出部４Ｃとを備えている。
【００２５】
この空間コード処理手段のうち、測定不能点抽出部４Ｂと、補完値算出部４Ｃとは、コンピュータ等の演算装置を使用して実現することができる。この場合、演算装置は、三次元計測用プログラムを記憶した記憶手段と、このプログラムを実行する事により測定不能点抽出部４Ｂ等として機能するＣＰＵと、このＣＰＵの主記憶装置となるＲＡＭとを備えている。この三次元計測用プログラムは、演算装置を動作させる指令として、空間コード化画像の各画素のうち空間コード化画像が格納されなかった画素を抽出させる測定不能点抽出指令と、この測定不能点抽出指令に応じて抽出される画素の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出させる補完指令とを備える。これにより、図６に示す構成を実現し、さらに、この図６に示す構成を使用することで図１に示す処理が行われる。
【００２６】
【実施例】
次に、三次元形状計測処理の実施例を図面を参照して説明する。
＜較正＞
図７乃至図９に三次元形状計測装置の構成を行う例を示す。図２に示すように、個別の照射角度と受光素子の画素位置とにより、測定対象物までの距離を算出することができるが、実際には、カメラの画角や、設置時の調整の困難性や、測定対象物を含む座標系での値が扱が容易である等の理由から、本実施例では、空間コードと画素位置との関係を較正している。
【００２７】
一般に、撮像画面は平面状のＣＣＤ撮像センサにより検出されるため。、カメラ座標系は、Ｘc−Ｙcの二次元座標系によって得られる。物体座標系とこのカメラ座標系との関係を同次座標系表現で表すと、次式（１）のように表される。ここで、物体座標系をカメラ座標系に変換する行列Ｃをカメラパラメータという。
【００２８】
【数１】
0003800841.tif 000002
【００２９】
一方、プロジェクタは、一次元方向の変位を求めるため、得られる座標系はＸpの一次元のみである。このプロジェクタ座標系と物体座標系との関係を同次座標系表現で表すと、次式（２）のように表される。ここで、物体座標系をプロジェクタ座標系に変換する行列Ｐをプロジェクタパラメータという。
【００３０】
【数２】
0003800841.tif 000003
【００３１】
これら各パラメータを展開し、連立して整理することにより、次式（３），（４），（５）の関係が求められる。
【００３２】
【数３】
0003800841.tif 000004
【００３３】
従って、行列Ｑに逆行列が存在すれば、カメラ座標系（Ｘc，Ｙc）及びプロジェクタ座標系Ｘpから物体座標系Ｖ＝（Ｘ，Ｙ，Ｚ）を求めることができる。前述した各手法により三次元形状の測定を行う場合には、この行列Ｑを求めるために、前述したカメラパラメータ及びプロジェクタパラメータを予め求める必要がある。
【００３４】
まず、ＣＣＤカメラで基準立方体Ｂの明暗画像とスリットプロジェクタで空間コード化法によりコード化画像を取り込む。そして、明暗画像を二値化して指標部を取り出し、各立方体の面内で相対する指標同士を仮想的に結んで格子状に得られるその交点を基準点（Ｘi，Ｙi，Ｚi）として抽出する。
【００３５】
カメラパラメータを算出する場合には、この物体座標系上の基準点（既知）の位置座標と、撮像画像上のＣＣＤカメラのイメージセンサ上における画素位置（カメラ座標系上の位置座標（Ｘci，Ｙci））をペアで記憶する。
【００３６】
この物体座標系上の基準点の位置座標（Ｘi，Ｙi，Ｚi）とカメラ座標系上の位置座標（Ｘci，Ｙci）との間には、前述の式（３），（４）から求まる次式（６），（７）の関係が成立する。
【００３７】
【数４】
0003800841.tif 000005
【００３８】
各式（６），（７）のＣ11・・・Ｃ21・・・Ｃ34の合計１２の未知数を求めるには、少なくとも同一平面上にない少なくとも六つ以上の基準点についてカメラ座標系上の点を検出する必要がある。そして、未知数は最小二乗法により求めることができる。
【００３９】
図７に三次元計測装置および較正装置の一例を示す。三次元形状計測装置は、測定対象物に対して一定の一次元方向について位置座標を付する照射光を照射する照射機構としてのプロジェクタ２０２と、照射光を照射された測定対象物を撮像するカメラ３と、このカメラ３による撮像画像から測定対象物の三次元画像データを算出する画像処理ボード２０１とを備えている。
【００４０】
プロジェクタ２０２は、ストライプ状のパターン光をピッチを変えて照射することが可能であり、ホストコンピュータ２００により照射タイミングやパターン光のピッチの指定等の動作制御が行われる。また、パターン光に代えて、スリット光を照射するようにしてもよい。一次元座標系たるプロジェクタ座標系は、ストライプの並び方向（パターン光を垂直に横切る方向）に形成される。
【００４１】
ＣＣＤカメラ３は、受光した光の輝度に応じた輝度信号を出力する受光素子を備えている。この受光素子は、平面状に配置された画素となる。二次元座標系たるカメラ座標系は、このＣＣＤ撮像センサの平面に対応して形成され、各画素の位置が座標系の位置座標に対応する。
【００４２】
画像処理ボード２０１は、プロジェクタ２０２とＣＣＤカメラ３の同期を図り、また、ＣＣＤカメラ３の出力に基づいて三次元形状データを算出する。
【００４３】
次に、三次元形状計測装置の較正装置について説明する。この較正装置は、平滑な一平面２２１上に既知の配置で複数の指標２２２を付した較正用二次元ゲージ２０２と、このゲージ２０２をその一平面２２１に垂直な方向に移動自在に保持する一軸数値制御テーブル２３０と、この一軸数値制御テーブル２３０に装備され，較正用二次元ゲージ２０２の移動量を調節する調節手段としての一軸数値制御コントローラ２４０とを備えている。
【００４４】
較正用二次元ゲージ２０２は、図７に示すように、正方形の一平面２２１を有し、この一平面２２１がＣＣＤカメラ３及びプロジェクタ２０２に正対するように一軸数値制御テーブル２３０に保持されている。そして、ＣＣＤカメラ３の対物レンズの光軸と一平面２２１の法線とが平行である。即ち、これにより、一平面２２１に対してプロジェクタ２０２からパターン光の照射が行われ、ＣＣＤカメラ３は一平面２２１における明暗画像の撮像ができ、ホストコンピュータ２００では、後述する三次元座標データを画像処理ボード２０１を介して得ることができる。
【００４５】
三次元座標系である物体座標系は、較正用二次元ゲージ２０２を基準にして設定される。即ち、図７の位置（この位置を現位置とする）にある較正用二次元ゲージ２０２において、図８（Ａ）に示すように、座標系のＸ軸は一平面２２１の左上方の角を原点として水平右方向に設定され、座標系のＹ軸は一平面２１の同じ角を原点として垂直下方向に設定されている。また、座標系のＺ軸は、図８（Ｂ）に示すように、一平面２２１の同じ角を原点として当該一平面２２１の法線方向に沿ってＣＣＤカメラ３と反対側に向けて設定されている。本実施例では、この物体座標系の原点からの距離を空間コードと画素位置とに基づいて算出する。
【００４６】
さらに、較正用二次元ゲージ２０２の一平面２２１上は白色に彩られ、その上に基準点２３を決定する黒点である指標２２２が付されている。指標２２２は、図８（Ａ）に示す如く、Ｘ軸，Ｙ軸と各辺を平行とした正方形の四辺上に五つずつ等ピッチｐで配列されている。互いに対向する辺上にある各指標は、それぞれが他方の辺上にある指標と対応しており、図８（Ａ）の点線で示すように、対応する二つの指標は、Ｘ軸又はＹ軸に平行な直線で結ばれる。この対応する指標を結ぶ各直線の交点が基準点２２３となる。これら基準点２２３は、一平面２１上に升目状に５×５＝２５個が展開される。各指標２１は、前述した物体座標系において、いずれも既知の位置座標上に位置しており、これに伴い、各基準点２３の位置座標も既知となる。
【００４７】
一軸数値制御テーブル２３０は、較正用二次元ゲージ２０２の保持部材２３１と、これと係合しＺ軸方向に保持部材３１を送るボールネジ３２と、ボールネジ３２を一軸数値制御コントローラ４による数値制御のもとで駆動するステッピングモータ３３とを備えている。
【００４８】
一軸数値制御コントローラ２４０は、ホストコンピュータ２００からのＺ方向の送り量の数値入力を受けて、これに対応する駆動量でステッピングモータ２３３を駆動制御し、較正用二次元ゲージ２０２をＺ方向について任意の位置に位置決めすることができる。較正の際に一軸数値制御テーブル２３０は、通常、較正用二次元ゲージ２０２の送り方向をＣＣＤカメラ３の対物レンズの光軸と平行にして置かれ、当該較正用二次元ゲージ２０２を、Ｚ方向について、基準点２２３のピッチｐと等しい送り量で現位置から四回送る。
【００４９】
ホストコンピュータ２００は、三次元形状計測装置及び較正装置の動作制御を行うと共に測定情報の演算を行う。図９に示す三次元形状計測装置の自動較正システムの動作は、全て、このホストコンピュータ２００に予め入力されたプログラムによって行われる。
【００５０】
図９は、本実施形態の動作を示すフローチャートである。以下、これに基づいて本実施形態の三次元形状計測に先だって行われる三次元形状計測装置の較正動作を説明する。
【００５１】
ホストコンピュータ２００に記憶される変数ステップを０に初期化する（工程Ｓ１）。
【００５２】
そして、三次元形状計測装置のプロジェクタ２０２から出力されるレーザ光を連続的に投影し、較正用二次元ゲージ２０２の一平面上に付された各指標の画像をＣＣＤカメラ３によって取り込み明暗画像を得る。これにより、ホストコンピュータ２００は、その記憶領域に二次元座標系たるカメラ座標系Ｘc−Ｙcを設定する（工程Ｓ２）。
【００５３】
次に、プロジェクタ２０２からグレイコードパターン（ストライプ上のパターン光）を順次照射して空間コード化画像をＣＣＤカメラ３により撮像する。ホストコンピュータ２００は、取り込まれた画像から空間コードを得て、これにより記憶領域に一次元座標系たるプロジェクタ座標系Ｘpを設定する（工程Ｓ３）。
【００５４】
撮像した明暗画像を二値化し、円形たる各指標２２２の重心画素（中心）を求める（工程Ｓ４）。
【００５５】
ホストコンピュータ２００では、正対する各々の指標２２同士を結んだ直線の仮想交点を較正用の実座標基準点２３として計算により求める（工程Ｓ５）。
【００５６】
そして、ホストコンピュータの記憶領域において、各基準点２２３のカメラ座標系上の位置座標（Ｘc−Ｙc）とプロジェクタ座標形状の位置座標Ｘpをそれぞれ対応させてデータとして記憶する（工程Ｓ６）。
【００５７】
ホストコンピュータ２００では、ステップをインクリメントして（工程Ｓ７）、較正用二次元ゲージ２０２をピッチｐの距離だけＺ方向に移動させる（工程Ｓ８）。
【００５８】
較正用二次元ゲージ２０２の撮像が五回行われたか、即ち、Ｚ軸方向の移動が四回行われたかを確認し（工程Ｓ９）、もし目標回数を達していなければ工程Ｓ２から工程Ｓ８の動作を繰り返す。また、達していれば、記憶された上記データを基に、カメラパラメータとプロジェクタパラメータを求めてシステムパラメータを計算する（工程Ｓ１０）。そして、これにより較正が終了する。
【００５９】
また、本実施形態では、空間コード化法に基づいて三次元形状の計測を行う三次元形状計測装置１００に対する較正作業を行う例を示したが、一つのスリット光の走査により三次元形状の計測を行う計測装置や他の手法に基づく計測装置に対しても有効である。
【００６０】
このように、図７に示す較正装置を使用して画素位置と空間コードとの関係を予め較正しておく。すると、実際の計測では空間コードとその画素位置とから、物体座標系での原点からの距離を算出することができる。
【００６１】
＜計測＞
空間コード化画像を得るには、スリット光を用いる光切断法と、時系列空間コード化パターン（グレイコード化パターン）を使用するパターン光投影法などがある。パターン光投影法については、パターン光の投影では、死角領域や受光素子自体の異常などの他には穴あきは生じがたい。一方、スリット光投影での空間コード化画像の算出処理では穴あきが生じてしまうことがあるため、以下、光切断法を例として測定対象物の形状計測の一例を説明する。
【００６２】
図１０は、本実施例のブロック図である。ここでは、測定対象物Ｓに対してスリット光Ｒを走査する照射手段２と、この照射手段２とは異なる方向から走査により移動するスリット光Ｒを複数回撮像するカメラ３と、複数の撮像画像から空間コード（角度コード）を算出する空間コード処理手段４とを備えている。
【００６３】
また、この三次元形状の計測装置は、図示の如く、空間コード処理手段４で算出した三次元画像データをデジタルＩ／Ｏボード１０２を介して接続されたコンピュータ１００に出力する。一方、コンピュータ１００は、空間コード処理手段４からの角度コード化画像（空間コード化画像）とその画素位置とに基づいて三次元形状を算出する。この算出では、上述した較正装置を用いて算出したカメラパラメータ等を用い、物体座標系での距離を算出する。
【００６４】
照射手段２は、レーザドライバ２１により駆動される一本のスリット状のレーザ光（以下、スリット光Ｒとする）を照射するレーザ光源２２と、照射されたスリット光Ｒを測定対象物Ｓ側に反射するガルバノミラー２３と、ガルバノミラー２３を回転してスリット光Ｒを測定対象物Ｓに対して走査するガルバノスキャナ２４と、ガルバノスキャナ２４の駆動制御を行うスキャナドライバ２５と、空間コード処理手段４からの角度信号に基づいてスキャナドライバ２５に投光角度指令を出力する投光角度指令作成回路２６とを備える。
【００６５】
レーザ光源２２から射出されるスリット光Ｒは、測定時における床面に対して垂直方向（図１０における上下方向）に沿った棒状の光であり、ガルバノミラー２３により当該スリット光Ｒと垂直方向に移動して測定対象物Ｓに対して走査を行う。また、スリット光Ｒは、カメラ３の受光素子３１の水平走査線に対して垂直となるように予めその向きが設定されている。
【００６６】
投光角度指令作成回路２６には、空間コード処理手段４のメモリアドレス作成回路４６から投光角度信号が出力され、これに基づいてガルバノスキャナ２４の駆動制御が行われる。
【００６７】
また、レーザ光源２２，ガルバノミラー２３及びカメラ３は、図２に示すように、床面（水平面）に対して水平である同一平面上に位置している。そして、ガルバノミラー２３は、カメラ３の受光素子３１の水平走査線に対して垂直方向（スリット光Ｒと平行方向）を軸として回転する。この配置により、スリット光Ｒを受光素子３１の水平走査線に沿って平行方向に移動させてカメラ３の受光素子３１に受光させることを可能としている。
【００６８】
受光素子３１は、本実施例では、各画素が水平走査線方向に２５６個設けられ、そして、かかる水平走査線が２４３本設けられ、計２５６×２４３個の画素が規則正しく配置されている。各画素からの輝度信号の出力は、水平走査線ごとに、羅列された水平走査線方向の並び順に行われる。このときの一本の水平走査線の輝度信号の出力する期間を出力期間といい、出力が行われない出力期間と出力期間との間の期間を帰線期間という。また、一つの水平走査線上の各画素は、出力期間の間にその配列順に出力を行う。そして、全ての画素における出力が映像信号として空間コード処理手段４に送られる。このように、本実施例では、カメラ３の水平走査線方向の画素数と同一の空間コードを有する。
【００６９】
また、カメラ３は、スリット光Ｒの一回の走査を走査線上の画素数（２５６）で分割して撮像を行う。このため、ガルバノスキャナ２４の走査範囲角度を２５６分割し、各角度ごとに撮像を行うべく、後述する空間コード処理手段４の同期回路４３から出力される水平，垂直同期信号により同期が図られる。
【００７０】
空間コード処理手段４のブロック図を図１１に示す。この空間コード処理手段４は、受光素子３１の各走査線ごとに各画素から出力される輝度の最大値を検出し特定するピーク検出部５と、このピーク検出部５の検出に対応して，最大輝度を出力する画素について走査線上の位置を検出し特定する画素位置検出部８と、受光素子３１の各画素に個別に対応する輝度の記録領域を有する輝度メモリ４１と、ピーク検出部５に検出された輝度と画素位置検出部８に検出された画素の位置に基づいて，輝度メモリ４１の対応する画素の記録領域に記録された記録輝度との大小を比較する比較部としての第二の比較回路６と、検出輝度が記録輝度よりも大きい場合に輝度メモリ４１の記録輝度を検出輝度の値に更新する第一の更新部としての第三の選択回路７と、各画素に個別に対応する投光角度の記録領域を有する角度コード化メモリ４２を備えている。
【００７１】
さらに、空間コード処理手段４は、カメラ３の水平，垂直同期を図る同期回路４３と、上記カメラ３からの映像信号の輝度信号を量子化するＡ／Ｄ変換回路４４と、輝度メモリ４１及び角度コード化メモリ４２のアドレスを作成するメモリアドレス作成回路４６を備えている。
【００７２】
このメモリアドレス作成回路４６は、同期回路４３からの水平同期信号をカウントすることにより、受光素子３１の現在出力中の画素が位置する水平走査線番号（端から何番目の水平走査線上で出力を行っているか、を示す。以下、垂直アドレスｙとする）を出力する。
【００７３】
さらに、メモリアドレス作成回路４６は、水平駆動周波数（走査線中画素数７６８、１４．３１８ＭＨｚ）を三分周（走査線中画素数を２５６とするため）したものをカウントし、受光素子３１の現在出力中の画素の水平走査線上の位置（水平走査線上で端から何番目の画素が出力を行っているか、を示す。以下、水平アドレスｘとする）を出力する。
【００７４】
また、同期回路４３からの垂直同期信号をカウントし、投光角度信号を作成する共に照射手段２に出力する。さらに、このメモリアドレス作成回路４６では、水平同期信号により、後述するピーク検出部５の一時輝度メモリ５１及び画素位置検出部８の一時位置メモリ８１のクリア信号を一水平走査線の出力ごとに作成し出力する。
【００７５】
ところで、Ａ／Ｄ変換回路４４により量子化された輝度信号は、ピーク検出部５に出力される。このピーク検出部５は、一つの走査線上で最大レベルとなる輝度のみを記録する一時輝度メモリ５１と、Ａ／Ｄ交換回路４４にて量子化された輝度信号の信号レベル（以下、単に「輝度」とする）と走査線中最大輝度メモリ５１に記録された輝度とを比較し、いずれの輝度が高いかを出力する第一の比較回路５３と、この第一の比較回路５３の出力に基づいていずれか高い方の輝度を選択し、一時輝度メモリ５１中の記録輝度を更新する第一の選択回路５４とを備えている。
【００７６】
なお、上述の一時輝度メモリ５１は、一画素分の輝度信号を記録できれば足りるので、その記憶容量は、輝度分解能×１（８ｂｉｔ）である。また、一時輝度メモリ５１の内容は、各水平帰線期間中（一水平走査線ごと）に０にクリアされる。
【００７７】
上記の構成からピーク検出部５では、各走査線ごとの輝度信号の最大レベルが検出され記録される。
【００７８】
また、このピーク検出部５による一走査線上の最大輝度が検出される際に、同時に画素位置検出部８では、上記最大輝度を出力する画素の水平アドレスｘが検出される。この画素位置検出部８は、一つの走査線上で最大輝度を出力する画素の水平アドレスｘのみを記録する一時位置メモリ８１と、メモリアドレス作成回路４６から順次出力される各画素に対応する水平アドレスｘの内、前述したピーク検出部５の第一の比較回路５３の出力により選択された最大輝度を出力する画素の水平アドレスｘを一時位置メモリ８１に上書きする第二の選択回路８２とを備えている。
【００７９】
なお、上述の一時位置メモリ８１は、２５６ある内のいずれかの画素であるかを記録できれば足りるので、その記憶容量は、２５６×１（８ｂｉｔ）である。また、一時位置メモリ８１の内容は、各水平帰線期間中（一水平走査線ごと）に０にクリアされる。
【００８０】
上記の構成から画素位置検出部８では、各走査線ごとの最大輝度を出力する画素の水平アドレスｘが検出され記録される。
【００８１】
上記各一時輝度メモリ５１は、ゲート９１を介して前述の第二の比較回路６及び第三の選択回路７に接続されており、ゲート９１が閉じた場合に一時輝度メモリ５１中の記録輝度がこれらに出力される。一方、一時位置メモリ８１は、ゲート９２を介して輝度メモリ４２及び角度コード化メモリ４２に接続されており、ゲート９２が閉じた場合に一時位置メモリ８１中の水平アドレスｘがこれらに出力される。
【００８２】
これらのゲート９１，９２は、いずれもメモリアドレス作成回路４６に接続されており、受光素子３１の水平同期信号の出力を受けている。そして、これらのゲート９１，９２は、通常は開かれており、水平同期信号から受光素子３１が帰線期間中であることが入力されると閉じられる。
【００８３】
これら各ゲート９１，９２は、受光素子３１が帰線期間中のときに同時に一時輝度メモリ５１及び一時位置メモリ８１の記録内容を出力させる出力同期部９を構成している。
【００８４】
次に、輝度メモリ４１について説明する。この輝度メモリ４１は、受光素子３１の各画素に個別に対応する輝度の記録領域が形成されている（図１３参照）。そして、この輝度メモリ４１の各記録領域中には，それぞれ予め０乃至通常のスリット光の輝度よりも小さい値に設定された輝度が記録されている。
【００８５】
前述の如く、各ゲート９１，９２が閉じられると、一時輝度メモリ５１から第二の比較回路６に最大輝度が出力され、一時位置メモリ８１からその水平アドレスｘが輝度メモリ４１に出力される。また、メモリアドレス作成回路４６からは、輝度メモリ４１に常時現在の垂直アドレスｙが出力される。
【００８６】
これにより、輝度メモリ４１に対して、水平アドレスｘと垂直アドレスｙから最大輝度を出力した画素が、受光素子３１の画素の内のいずれのものであるかが特定され、これに対応する記録領域から記録輝度が第二の比較回路６に出力される。
【００８７】
第二の比較回路６では、一時輝度メモリ５１からの輝度と輝度メモリ４１に既に記録された輝度との比較を行い、いずれが高いかを出力する。第三の選択回路７では、第二の比較回路６の出力を受けて、一時輝度メモリ５１からの輝度が高い場合には輝度メモリ４１の記録輝度を一時輝度メモリ５１の輝度に更新し、そうでない場合には、輝度メモリ４１の記録輝度をそのまま維持する。
【００８８】
次に、角度コード化メモリ４２について説明する。この角度コード化メモリ４２は、受光素子３１の各画素に個別に対応するスリット光Ｒの投光角度（ここでは、ガルバノミラー２３の回転角度と同義）θの記録領域を備えている。
【００８９】
また、この角度コード化メモリ４２には、各記録領域の投光角度θの更新を行う第二の更新部としての第四の選択回路４５が併設されている。かかる第四の選択回路４５は、ゲート９１が閉じられることにより作動する第二の比較回路６と接続されており、また同時にメモリアドレス作成回路４６から現在の投光角度θを示す投光角度信号が入力されている。
【００９０】
一方、角度コード化メモリ４２には、常時、メモリアドレス作成回路４６から現在の垂直アドレスｙが入力され、また、ゲート９２が閉じられることにより、一時位置メモリ８１から最大輝度を出力した画素の水平アドレスｘが入力される。これにより、角度コード化メモリ４２に対して、水平アドレスｘと垂直アドレスｙから最大輝度を出力した画素が、受光素子３１の画素の内のいずれのものであるかが特定され、第四の選択回路４５による入力待ち状態となる。
【００９１】
第四の選択回路４５は、第二の比較回路６により、一時輝度メモリ５１の輝度と輝度メモリ４１の輝度の内，一時輝度メモリ５１の輝度が高いと出力された場合に、メモリアドレス作成回路４６からの投光角度θを対応する記録領域に記録し、輝度メモリ４１の輝度が高いと出力された場合には更新を行わない。このように、第三及び第四の選択回路７，４５は、いずれも第二の比較回路６の出力により更新を行うため、輝度メモリ４１に対して一時輝度メモリ５１の輝度が更新されたときにのみ、角度コード化メモリ４２に対する投光角度θの記録（既に記録されている場合には更新）が行われる。
【００９２】
ここで、上述した輝度メモリ４１及び角度コード化メモリ４２は、いずれも、測定開始時において、その記録が０にクリアされる。
【００９３】
図１２（Ａ）は、この受光素子３１上に撮像されたスリット光Ｒを示している。このとき、照射機構による走査範囲を２５６分割し、各分割された範囲ごとに撮像が行われるため、投光角度を撮像順に１から２５６の番号で表すこととする。図１２（Ｂ）は、走査線番号１の水平走査線に沿った各画素から検出された輝度レベルを示している。この図によれば、水平走査線方向の位置ｘ0で最大輝度レベルが観測され、これをスリット光と見なすことができる。
【００９４】
上記各部の機能を総合すると、三次元形状の計測装置１０では、出力期間中の水平走査線上において最大輝度を検出した画素をスリット光の照射位置とみなし、各走査線ごとに最大輝度を検出した画素の水平アドレスｘを求め、且つ照射したスリット光の投光角度を求め、角度コード化メモリ４２を完成させる。これにより、各画素のアドレスについて投光角度が求められると、各アドレスに撮像された測定対象物Ｓからカメラ３までの距離を算出することが可能となり、コンピュータ１００により三次元形状の計測が行われる。
【００９５】
このため、まず、ピーク検出部５によって現在出力期間中である水平走査線について、その水平走査線上の画素から出力される輝度の内、最大となる輝度が特定され一時輝度メモリ５１に記録される。また、同出力期間中に、画素位置検出部８により、最大輝度を出力する画素の水平アドレスｘが特定され、これが一時位置メモリ８１に記録される。
【００９６】
各メモリ５１，８１に記録された最大輝度及び水平アドレスｘは、その出力期間が終わり帰線期間となるまで保留され、出力同期部９により、帰線期間に移行した時点で輝度メモリ４１又は角度コード化メモリ４２側に出力される。このように、輝度及び水平アドレスｘは、出力期間の間，保留されるため、途中経過で最大と判断された輝度については、その下流側での処理（輝度メモリ４１，角度コード化メモリ４２への記録）が行われない。
【００９７】
そして、これらの出力及びメモリアドレス作成回路４６による垂直アドレスｙ及び投光角度信号の出力により、第二の比較回路６及び第三の選択回路７によって特定されたアドレスの輝度について、輝度メモリ４１が比較更新される。即ち、全ての投光角度による撮像画像に対して全ての水平走査線について上述の比較又は更新が行われることにより、全ての画素について、各投光角度によって撮像された全ての撮像画像を通じて最高となった輝度のみが輝度メモリ４１中に保管される。
【００９８】
また、角度コード化メモリ４２には、第二の比較回路６と接続された第四の選択回路４５が併設されているため、同様にして、全ての画素について、各投光角度によって撮像された全ての撮像画像を通じて最高となった輝度が検出されたときの当該投光角度のみが角度コード化メモリ４２中に保管される。
【００９９】
そして、完成した角度コード化メモリ４２の情報を出力し、コンピュータ１００により三次元形状の計測が行われる。
【０１００】
ここで、空間コード処理手段４の演算処理方法を図１３乃至図１５に示す簡単な例を用いて説明する。ここでは、カメラ３の受光素子３１の画素数を３×３（水平方向×垂直方向）と仮定して説明する。また、輝度メモリ４１及び角度コード化メモリ４２の各記録領域は、測定開始前には全て０にリセットされているものとする。
【０１０１】
水平方向の画素数が三つであるため、これに対応してスリット光Ｒが各画素単位で撮像されるガルバノミラー２３の回転角度θ0，θ1，θ2で撮像が行われるものとする。
【０１０２】
まず、投光角度θ＝θ0のときの処理を図１３に基づいて説明する。まず、投光角度θ＝θ0のときのスリット光Ｒの受光素子３１の撮像画像を図１３（Ａ）に示す。受光素子３１において、横方向は水平アドレスｘ（図における左から順番に画素に付した番号），縦方向は垂直アドレスｙ（図における上から順番に水平走査線に付した番号）を示すものとする。また、図１３（Ｂ）に更新記録前の輝度メモリ４１を示す。
【０１０３】
受光素子３１の垂直アドレスｙ＝１の水平走査線の出力期間において、各画素の検出輝度が順番に出力され、ピーク検出部５により出力期間の終わりまでに最大輝度が２００と特定され、同時にその水平アドレスｘがｘ＝１と特定される。そして、帰線期間に移行すると、特定された最大輝度が輝度メモリ４１の記録輝度と比較され、その後、当該最大輝度が記録輝度として更新される（図１３（Ｃ））。また、輝度メモリ４１の更新と同時に、角度コード化メモリ４２における水平アドレスｘ＝１，垂直アドレスｙ＝１の記録領域の内容が、そのときの投光角度θ0に更新される（図１３（Ｄ））。
【０１０４】
同様の処理が、垂直アドレスｙ＝２，ｙ＝３についても行われる（同図（Ｅ），（Ｆ）はｙ＝２のときの輝度メモリ４１，角度コード化メモリ４２の更新を示し、同図（Ｇ），（Ｈ）はｙ＝３のときの輝度メモリ４１，角度コード化メモリ４２の更新を示す）。
【０１０５】
次に、投光角度θ＝θ1のときの処理を図１４に基づいて説明する。まず、投光角度θ＝θ1のときのスリット光Ｒの受光素子３１の撮像画像を図１４（Ａ）に示す。これに基づき、後の処理は、θ＝θ0のときと同様にして、ｙ＝１について輝度メモリ４１を更新（図１４（Ｂ））し、角度コード化メモリ４２を更新する（図１４（Ｃ））。
【０１０６】
さらに、同様の処理が、垂直アドレスｙ＝２，ｙ＝３についても行われる（同図（Ｄ），（Ｅ）はｙ＝２のときの輝度メモリ４１，角度コード化メモリ４２の更新を示し、同図（Ｆ），（Ｇ）はｙ＝３のときの輝度メモリ４１，角度コード化メモリ４２の更新を示す）。
【０１０７】
最後に、投光角度θ＝θ2のときの処理を図１５に基づいて説明する。まず、投光角度θ＝θ2のときのスリット光Ｒの受光素子３１の撮像画像を図１５（Ａ）に示す。これに基づき、後の処理は、θ＝θ0のときと同様にして、ｙ＝１について輝度メモリ４１を更新（図１５（Ｂ））し、角度コード化メモリ４２を更新する（図１５（Ｃ））。
【０１０８】
そして、垂直アドレスｙ＝２のとき、スリット光が受光素子３１に照射されていないので、かかる水平走査線上では、スリット光以外の光（例えば、測定対象物の他の部位に照射されたスリット光の反射光等のノイズ）が最大輝度として特定されるが、既に輝度メモリ４１上に記録された輝度を越えることは実質上有り得ないので、かかる検出輝度は輝度メモリ４１上に更新されることはない。
【０１０９】
さらに、垂直アドレスｙ＝３についても、最大輝度及び水平アドレスｘが特定され、これにより、輝度メモリ４１上の記録輝度及び角度コード化メモリ４２上の投光角度が更新される。（図１５（Ｄ），（Ｅ））。
【０１１０】
これにより、全ての投光角度の撮像画像の処理が終了し、角度コード化メモリ４２が完成する。かかる角度コード化メモリ４２の全てのデータは、コンピュータ１００に出力される。
【０１１１】
さらに、コンピュータ（演算装置）１００では、角度コード化メモリに格納された角度コードデータ（空間コード化画像）のうち、測定不能点を抽出し、さらに補完値を算出する。その後、補完後の角度コード（空間コード）とその角度コード化メモリ４２に格納された画素位置とから物体座標系での距離を算出する。
【０１１２】
図１６および図１７は角度コードを算出するまでの処理例を示すフローチャートである。
【０１１３】
まず、同期回路４３及びメモリアドレス作成回路４６によりカメラ３と照射手段２の同期が図られ、測定対象物Ｓに対するスリット光Ｒの照射と撮像が行われる（ステップＳ１）。かかる同期によりスリット光は、受光素子３１上を水平走査線方向に一画素ごとに位置を変えて撮像される。
【０１１４】
まず、投光角度１の撮像画像に応じて、走査線番号１の水平走査線から当該走査線上の各画素の並び順に輝度の出力が行われる。このときの一つの水平走査線上の全ての画素から出力が終了するまでが当該水平走査線における出力期間である（ステップＳ２）。
【０１１５】
かかる撮像画像に基づいてピーク検出部５により各水平走査線ごとに最大輝度の検出が行われ、同時に、かかる検出に基づいて最大輝度を出力する画素の水平アドレスの検出が行われる（ステップＳ３）。このとき検出された最大輝度は一時輝度メモリ５１に保管され、水平アドレスｘは一時位置メモリ８１に保管される。
【０１１６】
上記各検出は、一つの水平走査線の出力期間が終了するまで継続して行われ、最終的に、当該水平走査線について全ての画素の出力に基づいて最大輝度及び水平アドレスが求められ、記録される（ステップＳ４）。
【０１１７】
そして、出力期間から帰線期間に移行すると、一時輝度メモリ５１及び一時位置メモリ８１の各ゲート９１，９２が閉路する（ステップＳ５）。
【０１１８】
ゲート９１の閉路により、走査線番号１の水平走査線中の最大輝度が一時輝度メモリ５１から第二の比較回路６に出力される。この第二の比較回路６では、検出された最大輝度と輝度メモリ４１のアドレス（ｘ，ｙ）＝（ｘ0，１）に記録された輝度とを比較する（ステップＳ６，Ｓ７）。そして、検出された最大輝度の方が高い場合に、第三の選択回路７により輝度メモリ４１のアドレス（ｘ0，１）の記録輝度が検出された最大輝度の数値に更新される（ステップＳ８）。
【０１１９】
なお、このときの輝度メモリ４１は、測定開始前に予め初期化されて記録輝度が０の状態であるため、スリット光Ｒの輝度レベルであれば、通常更新が行われる。また、投光角度が２以降に進行している場合には、それまでの撮像画像による検出によって、既に同じアドレスについて最大輝度が更新されていることもあり得るが、かかる場合も同様にして検出輝度が高い場合には更新される。
【０１２０】
輝度メモリ４１の更新が行われると、角度コード化メモリ４２のアドレス（ｘ，ｙ）＝（ｘ0，１）にも、そのときの投光角度１が記録される（ステップＳ９）。
【０１２１】
一方、検出された最大輝度レベルの方が低い場合には、輝度メモリ４１の更新は行われず、同時に、角度コード化メモリ４２の記録も行われない（ステップＳ１０）。
【０１２２】
そして、一つのスリット光Ｒに対して、全ての水平走査線について上記の工程が繰り返し行われる（ステップＳ１１）。これにより、投光角度１におけるスリット光について各水平走査線方向の位置（水平アドレスｘ）が角度コード化メモリ４２上に記録される。
【０１２３】
一つのスリット光について処理が終わると、次の投光角度のスリット光の撮像が行われ、上記の工程が繰り返される（ステップＳ１２）。そして、全ての投光角度におけるスリット光の処理が終わると、角度コード化メモリ４２の記録情報が測定データとしてコンピュータ１００に出力される（ステップＳ１３）。コンピュータ１００は、角度コード化メモリ４２からの出力により、補完処理および三次元形状演算を行い表示する（ステップＳ１４）。
【０１２４】
本実施例では、記録輝度の設定輝度レベルが、スリット光の検出輝度の記録を妨げるほどに高くない場合には、仮に、スリット光が照射されない部分が生じた場合，或いはスリット光が暗くしか照射されなかった場合に、ノイズを選択して取り込むことを防止することが可能である。これは、ノイズはスリット光の輝度よりもかなり低い輝度であり、上述の例にように予めスリット光の半分程度の輝度が輝度メモリ４１に入力されていれば、これに満たないノイズの輝度が更新記録することはないからである。
【０１２５】
＜補完＞
次に、補完処理を説明する。
本実施例では、コード化画像の測定前の初期値（例えば０）を測定不能点として判断する。すなわち、測定装置内部の空間コード記録用メモリを測定前に一定値で初期化しておく。測定終了後、初期値が記録されている画素は測定不能点（画素）として処理する。図１８（Ａ）に示すように、角度コードの初期値を０とすると、測定不能点が存在する場合には測定後の角度コード化メモリ４２には測定された角度コード４２ｃが格納されず、初期値４２ｄのままとなる。このため、測定不能点を探索するには、この初期値４２ｄを検索するとよい。
【０１２６】
また、角度コード化メモリの各画素にアクセスされたか否かを示すフラグを設けるようにしてもよい。すなわち、メモリ・アクセス用のフラグを１bit設け、フラグにより判定するようにしてもよい。空間コード記録用メモリを１bit増やす。例えば、投光角度コードが０から２５５であれば、８＋１＝９bitとする。測定前にフラグ用bitを１（または０）に設定しておく。測定中にアクセスされたメモリ・アドレス（画素位置）のフラグbitを０（または１）とする。測定後当該フラグを調べることで測定不能点（画素）の検出が可能となる。図１８（Ｂ）に示す例では、フラグの初期値を１とすると、測定後には測定不能点４２ｅのみフラグが１となり、角度コードが格納された画素のフラグは０となる。これにより、測定不能点を抽出する。
【０１２７】
図２０は測定不能点の発生理由の一例を説明するための説明図である。図２０に示すように、ＣＣＤ等の固体撮像素子では、受光素子３１の間に垂直転送用のＣＣＤ３２があるため、各画素と画素の境目の領域が存在する。ある投光角度のときに、スリット光Ｒがこの境界領域に入ってしまうと、その投光角度におけるスリット位置が図中Ｒ1，Ｒ2となり、図中符号４２ｄで示す画素位置には投光角度が記録されず、測定不能となる。
【０１２８】
また、図２１に示すように、異なる投光角度においてスリット光で測定対象を照明したとき、画像中のスリット光の位置がＲ3，Ｒ4，Ｒ5のようになる場合がある。この場合も図中符号４２ｄで示すの画素位置には投光角度が記録されず測定不能点となる。
【０１２９】
また、照明が当らない死角部分も測定不能点となる。しかし、この場合には、異なった角度から測定を行った結果をつなぎ合せることにより死角領域のデータを補うことが可能である。すなわち、死角領域は一般に画像中の広い範囲に存在するため、中央値によって補完する本提案では近傍画素にデータがなければ死角領域への影響もない。例えば、近傍画素の値が０であれば、補完されるデータも０となる。
【０１３０】
図２２は測定された空間コード化画像の一部分（６×６の領域）の空間コード値である。この例では、測定不能点をコード値０で検出する。図２２では、測定不能点を符号４２ｄおよび４２ｅで示す。近傍のコードから、符号４２ｆで示す画素は１２３、符号４２ｇで示す画素は１２２と推測される。この画素について周辺４近傍のデータの０以外の中央値を用いた平滑化処理を行うと図２３の結果を得る。
【０１３１】
図２２と図２３との比較すると、正しい測定データが影響を受けずに符号４２ｆで示す画素は１２３、符号４２ｇで示す画素は１２２となり推測どおりの平滑化が行われた。この例では、Ａ，Ｂ点のデータを測定不能点の４近傍のコードの中央値を用いて補完したが、４近傍でなく８近傍でもよい。また中央値でなく測定不能点を除く近傍のコードの平均値を用いても良い。
【０１３２】
図２４は図１７の符号１４で示す三次元形状の演算処理中、補完処理の一例を示すフローチャートである。ここでは、画素数２５６×２５６（ｘ×ｙ）、空間コード化画像をＣｏｄｅ（ｘ，ｙ）とする。図２４に示すように、ｘおよびｙの値を０に初期化する（ステップＣ１）。続いて、測定不能点を検出する（ステップＣ２）。測定不能点であれば（ステップＣ３）、中央値を演算する（ステップＣ４）。そして、ｘ＝２５５でなければ、ｘの値をカウントアップして（ステップＣ６）、ステップＣ２に戻る。水平方向の走査が終了すると、次にｙの値をカウントアップして（ステップＣ７，８）、補完処理を継続する。これを垂直走査方向について完了するまで繰返す。
【０１３３】
図２５は補完処理の一例を示す説明図である。図２５に示すように、補完処理を行わないと穴の多い立体形状となってしまうが、補完処理を行うと、表面が連続した距離画像データを得ることができる。
【０１３４】
上述したように本実施例によると、測定不能であった画素を検出し、その画素についてのみフィルタリング処理を行うため、正しい測定データを変更せずに補完処理を行うことができる。この補間後に生成する距離画像では、ポリゴン生成も隣の画素を順次接続することで行うことができるため、ポリゴン生成が容易となる。また、ジャンプエッジの検出などは近傍画素の微分によって行うことが可能となるため、測定対象物の段差などの特徴抽出処理を簡便化することができる。
【０１３５】
【発明の効果】
本発明は以上のように構成され機能するので、これによると、測定不能点抽出工程にて、受光平面上の各受光素子のうち計測光を受光しなかった受光素子を抽出し、続いて、補完工程にて、測定不能点の空間コードについて当該測定不能点の近傍の受光素子での空間コードの値に基づく補完値を算出するため、正常に算出した空間コードを変更することなく、種々の理由で受光できなかった受光素子に対応する空間コード化画像の測定不能点に補完値を格納することができ、さらに、補完工程では、測定不能点の近傍の値に基づいて補完値を算出するため、空間コードの連続性に基づいて正確な補完値を算出することができ、従って、空間コードに不連続に穴が生じてしまっても、この補完工程にて空間コードを連続にすることができ、すると、測定対象物の表面に画素一つ分の穴が空いてしまう状態の発生を有効に防止することができ、このため、例えばポリゴン生成も隣の画素を順次接続することで行うことができ、従って、距離画像に基づくポリゴン生成が容易となり、その他、測定対象物の段差などの特徴抽出処理を簡便化することができ、このように、取扱いの容易な距離画像データを生成することができるという従来にない優れた三次元形状計測方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の第一の実施形態の構成を示すフローチャートである。
【図２】図１に示した空間コードと受光素子の位置と測定対象物までの距離の関係を示す説明図である。
【図３】測定不能点を有する空間コード化画像の一例を示す説明図であり、図３（Ａ）は空間コードを濃淡で示した図で、図３（Ｂ）は図３（Ａ）中の矢印にて切断した空間コードの例を示す図である。
【図４】補完処理後の空間コード化画像の一例を示す説明図であり、図４（Ａ）は空間コードを濃淡で示した図で、図４（Ｂ）は図４（Ａ）中の矢印にて切断した空間コードの例を示す図である。
【図５】図１に示した補完処理にて近傍画素を参照する例を示す説明図であり、図５（Ａ）は８近傍の例を示す図で、図５（Ｂ）は４近傍の例を示す図である。
【図６】本発明による三次元形状計測装置の構成を示すブロック図である。
【図７】図６に示した三次元計測装置を較正する較正装置の例を示す斜視図である。
【図８】図７に開示した較正用二次元ゲージを示す図で、図８（Ａ）はその正面図、図８（Ｂ）は側面図である。
【図９】図７に示した装置による較正処理例を示すフローチャートである。
【図１０】光切断法による三次元計測装置の構成を示すブロック図である。
【図１１】図１０に示した空間コード処理手段の一例を示すブロック図である。
【図１２】図１２（Ａ）はスリット光を撮像したＣＣＤ撮像センサを示す説明図であり、図１２（Ｂ）は走査線番号１の水平走査線を構成する画素の出力を並び順に示す説明図である。
【図１３】空間コード処理手段の動作を説明する構成を簡易化して示した説明図であり、図１３（Ａ）は一つ目のスリット光を撮像したＣＣＤ撮像センサを示し、図１３（Ｂ）は初期化された輝度メモリを示し、図１３（Ｃ）は図１３（Ａ）のスリット光の撮像により得られた一番目の走査線における輝度を記録した輝度メモリを示し、図１３（Ｄ）は図１３（Ｃ）の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図１３（Ｅ）から図１３（Ｈ）までは、同様にして各走査線ごとに輝度メモリ及び角度コード化メモリが記録される状態を示している。
【図１４】算出手段の動作を説明する構成を簡易化して示した図１３の続きの説明図であり、図１４（Ａ）は二つ目のスリット光を撮像したＣＣＤ撮像センサを示し、図１４（Ｂ）は図１４（Ａ）のスリット光の撮像により得られた一番目の走査線における輝度を記録した輝度メモリを示し、図１４（Ｃ）は図１４（Ｂ）の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図１４（Ｄ）から図１４（Ｇ）までは、同様にして各走査線ごとに輝度メモリ及び角度コード化メモリが記録される状態示している。
【図１５】算出手段の動作を説明する構成を簡易化して示した図５の続きの説明図であり、図１５（Ａ）は三つ目のスリット光を撮像したＣＣＤ撮像センサを示し、図１５（Ｂ）は図１５（Ａ）のスリット光の撮像により得られた一番目の走査線の輝度を記録した輝度メモリを示し、図１５（Ｃ）は図１５（Ｂ）の輝度メモリに基づいて記録された角度コード化メモリを示す。そして、図１５（Ｄ）は三番目の走査線の輝度を記録した輝度メモリを示し、図１５（Ｅ）は図１５（Ｄ）の輝度メモリに基づいて記録された角度コード化メモリを示す。
【図１６】図１０に示した構成により光切断法に基づく空間コードの生成処理の一例を示すフローチャートの前段である。
【図１７】図１０に示した構成により光切断法に基づく空間コードの生成処理の一例を示すフローチャートの後段である。
【図１８】測定不能点の抽出処理の一例を示す説明図であり、図１８（Ａ）はコードの初期値を示す図で、図１８（Ｂ）は測定後のコードの例を示す図である。
【図１９】測定不能点の抽出処理の他の例を示す説明図であり、図１９（Ａ）はコードの初期値を示す図で、図１９（Ｂ）は測定後のコードの例を示す図である。
【図２０】測定不能点が生じる理由を説明するための説明図である。
【図２１】測定不能点が生じる他の理由を説明するための説明図である。
【図２２】測定不能点を有する空間コード化画像の一例を示す説明図である。
【図２３】図２２に示した空間コード画像を補完した例を示す説明図である。
【図２４】補完処理の一例を示すフローチャートである。
【図２５】補完処理の結果を示す説明図であり、図２５（Ａ）は補完処理前の空間コード化画像から算出した距離画像データの一例を示す図で、図２５（Ｂ）は補完処理後の空間コード化画像から算出した距離画像の例を示す説明図である。
【符号の説明】
２  照射機構
３  カメラ
４  算出手段
３１  受光素子
４１  輝度メモリ
４２  角度コード化メモリ
Ｒ  スリット光
Ｓ  測定対象物
【図１】
0003800841.tif 000006
【図２】
0003800841.tif 000007
【図３】
0003800841.tif 000008
【図４】
0003800841.tif 000009
【図５】
0003800841.tif 000010
【図６】
0003800841.tif 000011
【図７】
0003800841.tif 000012
【図８】
0003800841.tif 000013
【図９】
0003800841.tif 000014
【図１０】
0003800841.tif 000015
【図１１】
0003800841.tif 000016
【図１２】
0003800841.tif 000017
【図１３】
0003800841.tif 000018
【図１４】
0003800841.tif 000019
【図１５】
0003800841.tif 000020
【図１６】
0003800841.tif 000021
【図１７】
0003800841.tif 000022
【図１８】
0003800841.tif 000023
【図１９】
0003800841.tif 000024
【図２０】
0003800841.tif 000025
【図２１】
0003800841.tif 000026
【図２２】
0003800841.tif 000027
【図２３】
0003800841.tif 000028
【図２４】
0003800841.tif 000029
【図２５】
0003800841.tif 000030