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