(57)【要約】【課題】格子パターン投影法において縞の不連続部分に対しても縞波番号を自動的に取得する。【解決手段】明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、当該被計測物体についての第１の画像を取得するステップと、第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、被計測物体についての第２の画像を取得するステップと、第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップとを含む。意図的に特定の縞の明暗を反転させるため当該反転させた縞の縞波番号は自明であり、第１の画像と第２の画像との差から反転させた縞に関連する画素が特定できれば、当該画素の縞は決定できるようになる。【選択図】  図３
2004325096.tif 000002
【特許請求の範囲】
【請求項１】
明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第１の画像を取得する第１画像取得ステップと、
前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第２の画像を取得する第２画像取得ステップと、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップと、
を含む格子パターン投影法における画像処理方法。
【請求項２】
特定された前記画素に対応して前記反転させた縞の縞波番号を特定するステップ
をさらに含む請求項１記載の画像処理方法。
【請求項３】
前記第１又は第２の画像における所定の画素について、当該画素の縞波番号から特定される縞波区間内の位置に基づき縞内部位相角を計算するステップと、
をさらに含む請求項２記載の画像処理方法。
【請求項４】
前記第２画像取得ステップにおいて、
全ての縞の明暗を少なくとも一度は反転するように前記第２の格子パターンを複数回変更し、各前記第２の格子パターンに対応する第２の画像を取得する
ことを特徴とする請求項１記載の画像処理方法。
【請求項５】
前記第２画像取得ステップが、
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、前記被計測物体についての各前記撮影ステージの画像を取得するステップ
を含む請求項１記載の画像処理方法。
【請求項６】
前記第１の画像に基づき、明の縞に関連する画素については第１のコードを暗の縞に関連する画素については第２のコードを割り当てるステップと、
前記第１及び第２の画像に基づき、明暗が反転していない縞に関連する画素を特定するステップと、
前記反転していない縞に関連する画素については、前記第１の画像の対応する画素に割り当てられたコードと同じコードを割り当てるステップと、
前記反転させた縞に関連する画素については前記第１の画像の対応する画素に割り当てられたコードとは異なるコードを設定するステップと、
所定の前記撮影ステージについての各画素のコード系列を取得するステップと、
をさらに含む請求項１記載の画像処理方法。
【請求項７】
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、前記被計測物体についての各前記撮影ステージの画像を取得するステップと、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する判断ステップと、
前記所定の画素について、第１ステージから最終ステージまでの明暗シーケンス又は明に対応付けられたコードと暗に対応付けられたコードとによるコード・シーケンスを特定するステップと、
を含む格子パターン投影法における画像処理方法。
【請求項８】
明と暗の縞から構成される第１の格子パターンと前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンとを被計測物体に投影する手段と、
前記第１の格子パターンに対する、前記被計測物体についての第１の画像と、前記第２の格子パターンに対する、前記被計測物体についての第２の画像とを撮影する手段と、
画像処理装置であって、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定する手段と、
特定された前記画素に対応して前記反転させた縞の縞波番号を特定する手段と、
を有する画像処理装置と、
を有する計測装置。
【請求項９】
明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第１の画像を取得する第１画像取得ステップと、
前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第２の画像を取得する第２画像取得ステップと、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップと、
をコンピュータに実行させるためのプログラム。
【請求項１０】
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影させる手段と、
前記被計測物体についての各前記撮影ステージの画像を取得する手段と、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する手段と、
前記所定の画素について、所定の前記撮影ステージについての明暗シーケンス又は明と暗とに対応付けられたコードによるコード・シーケンスを特定する手段と、
を有する画像処理装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、被測定物体に対して格子パターンを投影して当該被測定物体の三次元形状を計測するための技術に関する。
【０００２】
【従来の技術】
３次元形状の計測は工業のみならず、医学、生物学、考古学、美術品の調査復元など社会の多くの領域で使用されるようになってきている。３次元計測では、従来からの接触型よりも光を用いた非接触型の光計測が望まれている。光計測の領域計測には、１本の線状のスリット光をスリット方向と直交する方向に走査することにより領域の計測を行う光切断法と、面単位で一括して計測する計測方法に分類される。計測時間の観点からは後者の方が有利であり、この開発が望まれている。
【０００３】
光切断法は既に十分確立された技術であり、様々な態様が開発され、信頼性の高い計測が可能となっている。しかし、「光三次元計測」吉澤徹編［新技術コミニュケーションズ］ｐ．３１に見るようにスリット光の投影部などの機械的な移動機構を必要としており、これが隘路となって計測時間を短縮することができず、能率が悪いという問題がある。従って計測時間を短縮する必要がある分野における適用には問題がある。また、機械的移動機構を有するため保守調整に手間が掛かるという問題点もある。
【０００４】
一方、面を一括して処理する方法の代表的なものは、モアレ縞により等高線を取得するモアレ法（「光三次元計測」吉澤徹編［新技術コミニュケーションズ］ｐ．６５）、縞状の格子を物体に投影してできる格子パターンを観測する格子パターン投影法（「光三次元計測」吉澤徹編［新技術コミニュケーションズ］ｐ．８３）がある。特に計測精度及び装置の価格からして、現在では後者が期待されている。
【０００５】
格子パターン投影装置は、図１に示すように投影部１０００、プロジェクタのレンズ１００２及び格子１００１を含む投影系と被計測物体１００４に投影された変形格子パターン１００３をレンズ１００６を介して撮影する撮影部１００５を含む撮影系の二つの系統に分けられる。投影部１０００は格子１００１による縞状の格子をレンズ１００２を介して被計測物体１００４に投影する。投影により生ずる格子パターンは被計測物体の凹凸によって変形される。撮影部１００５は、変形された格子パターン１００３を投影方向とは異なる角度から撮影し、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）などの受光素子を介して電気信号に変換し、記憶装置に蓄積する。これを解析することによって被測定物体１００４の３次元形状を計測する。なお、各受光素子はその点における照度（輝度）に対応した電圧などの電気信号を出力する。格子１００１については、以前はガラスの表面などに作成され固定的であったが、最近は液晶等による格子が実用化され、コンピュータにより液晶デバイスに実体化された縞格子のＯＮ又はＯＦＦを高速に制御するようになっている。
【０００６】
通常、投影部１０００の光軸に直交する基準平面を設定し、この上で縞方向Ｙ及び縞直交方向Ｘの二つの軸を設定する。詳しくは非特許文献１（Ｈ．Ｌｕ  ｅｔ  ａｌ．，”Ａｕｔｏｍａｔｉｃ  Ｍｅａｓｕｒｅｍｅｎｔ  ｏｆ  ３−Ｄ  Ｏｂｊｅｃｔ  Ｓｈａｐｅｓ  Ｂａｓｅｄ  ｏｎ  Ｃｏｍｐｕｔｅｒ−ｇｅｎｅｒａｔｅｄ  Ｒｅｆｅｒｅｎｃｅ  Ｓｕｒｆａｃｅ”，  Ｂｕｌｌ．  Ｊａｐａｎ  Ｓｏｃ．  ｏｆ  Ｐｒｅｃ．  Ｅｎｇ．  Ｖｏｌ．  ２１，  Ｎｏ．４，  ｐ２５１  （１９８７））に開示されているが、この方法では、格子パターンを、縞と直交する軸Ｘ上の位置に対する、照度Ｉの波として表現し、被計測物体１００４を基準平面上に設置した場合の波の位相Φ（＝Φ２）又は基準平面についての波の位相Φ１と被計測物体１００４を基準平面上に設置した場合の波の位相Φ２との差分ΔΦ（＝Φ２−Φ１）を用いて解析する。これにより格子パターン投影法は別名「変調格子位相法」とも呼ばれる。ここで波の位相の差分ΔΦを使用するのは、計測における系統誤差が引き算によって消滅するので、精度が向上するためである。この方法では、縞波（明の縞と暗の縞のペア）番号は相対的であれば任意に設定することができる。
【０００７】
詳しい計算式は非特許文献１に開示されているのでここでは詳細な説明は省略するが、図１に示すようにΔΦを求めるためにΦ１は、格子１００１とレンズ１００２の間の距離、撮影部１００５の光軸と投影部１０００の光軸との交点とレンズ１００２との距離、格子間隔、撮影部１００５の光軸と投影部１０００の光軸の角度などの光学的な幾何位置関係から計算にて求める。一方、（Φ２＝２π×縞波番号＋縞内部位相角）であって、計測にて求めることになる。以下でも述べるが、特に縞波番号を特定することが重要となる。
【０００８】
縞内部位相角を取得するために、基準平面上に対して設定した縞直交方向のＸ軸（図１参照）に沿って走査が行われる。正弦波格子はもちろん、縞格子が２値化されたいわゆるロンキー格子であっても、明及び暗の縞の境界付近は、光の回折現象や受光素子による離散化誤差などによって、基準平面上の縞直交方向のＸ軸に沿った格子パターンの照度Ｉは除変する。この照度分布を波と認識し、正弦波の基点を始点とする縞波内位相角を求める。波の山及び谷をπ／２，３π／２とする方法（前述非特許文献１）の他に、谷から山に至る区間の中央値となる点を縞波内位相角０とする方法などが存在する。いずれの方法を用いるにせよ、縞内部位相角０の点で縞波番号は変化し、そこで１つの縞波が区分される。
【０００９】
上で述べたように、投影された格子パターン１００３は照度Ｉの波として認識されるので、その位相Φは２π×縞波番号＋縞内部位相角として表現される。従って、格子パターン投影法などでは、縞波番号が分からなければ３次元計測ができないことになる。縞波が連続的である場合にはＸ軸に沿って縞波番号は１ずつ増減するため、容易に位相差ΔΦを計算することはできる。しかし、図２に示すように、縞が不連続になる場合がある。図２では、基準平面上に球形状の物体を配置した場面を示しており、通常の順番では明の縞が現れるべき部分に暗の縞を生成させ３本の暗の縞を連続させることにより、縞の不連続部分を明確にしている。すなわち平面上のライン１１００と球上のライン１１０１とは同じラインであるが、基準平面上のライン１１００の位置と球上のライン１１０１の位置とは大きく距離が離れており不連続となっている。このように縞が不連続となってしまった場合には、上記のような縞波番号の連続性を使用することはできないので、位相差を計算することは容易ではなくなってしまう。また、縞波番号を誤って認識してしまうと、測定の誤差が生じてしまう。
【００１０】
これに対して、縞の不連続性に対応して自動的に縞波番号を取得する方法として、以下に記す非特許文献３に概括されているように白黒の縞格子に対して多数の研究がなされているが、いずれも成功しているとは言いがたい。この他、カラー縞格子を用いる方法が知られている（特許文献１及び非特許文献２）。理論的には、色の数を増やせば、縞が不連続であっても、いずれの縞波番号の縞であるかを判定しやすくなる。しかし、カラーを用いる方法は、レンズの色収差を取り除くのが容易でない上に、色収差を除去するとレンズも高価になるという問題がある。さらに、物体の色の影響を受けやすく使用できる色の種類が限定され、縞の不連続度が高い場合には対応できなくなってしまうという問題もある。
【００１１】
この他には、空間コード化法という方法も存在している（「光三次元計測」吉澤徹編［新技術コミニュケーションズ］ｐ．７９）。空間コード化法は、測定対象空間の各点を２進数コードで符号化し、少ない投影回数で距離画像を入力する方法である。プロジェクタＬから、それぞれマスクＡ、Ｂ、Ｃによって明暗のピッチが倍々に変化するパターン光が順に投影される。光の通過部を１、光が通過しない遮光部を０として、投影光は２進コード化されたパターン光となる。このパターン光を投影した測定対象物は、カメラＱにより濃淡画像として入力される。この方法では、空間の点Ｐが属する縞のコードを用いて∠ＱＰＬを求め、カメラＱで撮影された点Ｐの位置より∠ＰＱＬを求め３角測量によって点Ｐの位置を測定するものである。このように空間コード化法では、３次元中に存在する物体の表面の各点に縞番号を与えるようにしているため、「本来ロボットビジョンを目的としており、計測という点では精度が十分でない」（「格子パタン投影法を用いた反射物体の表面形状計測」，山本将之ほか，精密工学会誌，ｖｏｌ．  ６４，  Ｎｏ．８，  ｐ．１１７１，  （１９９８））という評価がなされている。また、縞（位相）の不連続性の問題を解決するといった観点は存在していない。また、陰影を判定するという観点もない。
【００１２】
【特許文献１】
特開平３−１９２４７４号公報
【非特許文献１】
Ｈ．Ｌｕ  ｅｔ  ａｌ．，”Ａｕｔｏｍａｔｉｃ  Ｍｅａｓｕｒｅｍｅｎｔ  ｏｆ  ３−Ｄ  Ｏｂｊｅｃｔ  Ｓｈａｐｅｓ  Ｂａｓｅｄ  ｏｎ  Ｃｏｍｐｕｔｅｒ−ｇｅｎｅｒａｔｅｄ  Ｒｅｆｅｒｅｎｃｅ  Ｓｕｒｆａｃｅ”，  Ｂｕｌｌ．  Ｊａｐａｎ  Ｓｏｃ．  ｏｆ  Ｐｒｅｃ．  Ｅｎｇ．  Ｖｏｌ．  ２１，  Ｎｏ．４，  ｐ２５１  （１９８７）
【非特許文献２】
Ｗ．  Ｌｉｕ  ｅｔ  ａｌ．，  Ｃｏｌｏｒ  Ｃｏｄｅｄ  Ｐｒｏｊｅｃｔｉｏｎ  Ｇｒａｔｉｎｇ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｈａｐｅ  Ｍｅａｓｕｒｅｍｅｎｔ  ｗｉｔｈ  ａ  Ｓｉｎｇｌｅ  Ｅｘｐｏｓｕｒｅ，  Ａｐｐｌｉｅｄ  Ｏｐｔｉｃｓ  Ｖｏｌ．３９，  Ｎｏ．２０，  ｐ３５０３  （２０００）
【非特許文献３】
Ｘｉａｏ  Ｙｕａｎ  Ｈｅ  ｅｔ  ａｌ．  ”Ｐｒｏｐｏｓｅｄ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｐｈａｓｅ  Ｕｎｗｒａｐｐｉｎｇ”，  Ａｐｐｌｉｅｄ  Ｏｐｔｉｃｓ  Ｖｏｌ  ４１，  Ｎｏ．  ３５，  ｐ．７４２２，  Ｄｅｃ，  ２００２
【００１３】
【発明が解決しようとする課題】
従って、本発明の目的は、以上の諸問題を解決すべく、格子パターン投影法において、縞の不連続部分に対しても縞波番号を自動的に取得するための新規な技術を提供することである。
【００１４】
【課題を解決するための手段】
本発明の第１の態様に係る、格子パターン投影法における画像処理方法は、明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、当該被計測物体についての第１の画像を取得する第１画像取得ステップと、第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、当該被計測物体についての第２の画像を取得する第２画像取得ステップと、第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップとを含む。
【００１５】
意図的に特定の縞の明暗を反転させるため当該反転させた縞の縞波番号は自明であり、第１の画像と第２の画像との差から反転させた縞に関連する画素が特定できれば、当該画素の縞は決定できるようになる。また、複数本の縞を反転する場合であっても、反転させた縞に関連する画素を特定することにより、縞波番号を特定できるようになる。
【００１６】
また、本発明の第１の態様において、特定された画素に対応して上記反転させた縞の縞波番号を特定するステップをさらに含むようにしてもよい。明と暗の縞のセットから縞波が構成されるので、縞の番号等から縞波番号を特定する。
【００１７】
さらに、本発明の第１の態様において、第１又は第２の画像における所定の画素について、当該画素の縞波番号から特定される縞波区間内の位置に基づき縞内部位相角を計算するステップとをさらに含むようにしてもよい。
【００１８】
また、上で述べた第２画像取得ステップにおいて、全ての縞の明暗を少なくとも一度は反転するように第２の格子パターンを複数回変更し、各第２の格子パターンに対応する第２の画像を取得するようにしてもよい。例えば１本ずつ縞の明暗を反転させてゆく。
【００１９】
さらに、上で述べた第２画像取得ステップが、撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、当該被計測物体についての各撮影ステージの画像を取得するステップを含むようにしてもよい。
【００２０】
また、本発明の第１の態様において、第１の画像に基づき、明の縞に関連する画素については第１のコードを暗の縞に関連する画素については第２のコードを割り当てるステップと、第１及び第２の画像に基づき、明暗が反転していない縞に関連する画素を特定するステップと、反転していない縞に関連する画素については、第１の画像の対応する画素に割り当てられたコードと同じコードを割り当てるステップと、反転させた縞に関連する画素については第１の画像の対応する画素に割り当てられたコードとは異なるコードを設定するステップと、所定の撮影ステージについての各画素のコード系列から縞波番号を特定するステップとをさらに含むようにしてもよい。
【００２１】
本発明の第２の態様に係る、格子パターン投影法における画像処理方法は、撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、当該被計測物体についての各撮影ステージの画像を取得するステップと、各撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する判断ステップと、所定の画素について、所定の撮影ステージについての明暗シーケンス又は明に対応付けられたコードと暗に対応付けられたコードとによるコード・シーケンスを特定するステップとを含む。
【００２２】
各撮影ステージにおいて所定の画素について明と暗の縞のいずれに属するかを判断してゆくことにより、当該所定の画素の縞番号に対応する明暗シーケンス又は同等のコード・シーケンスを特定することができるようになる。
【００２３】
なお、上述の方法はプログラム及びコンピュータの組み合わせにて実施することができ、このプログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメモリに一時保管される。
【００２４】
【発明の実施の形態】
本発明の一実施の形態に係る機能ブロック図を図３に示す。本実施の形態では、本実施の形態における主要な処理を実施し且つコンピュータである画像処理装置５と、当該画像処理装置５に接続されており且つランプなどの投影部１１と格子を形成するための液晶パネル１２とレンズ１３とを有する液晶プロジェクタ１と、レンズ４１とＣＣＤ４２と図示しないメモリを有するカメラ４とにより計測装置が構成されている。なお、被計測物体３は、基準平面２上に配置されており、液晶プロジェクタ１から格子パターンが投影される。基準平面２上において、縞直交方向をＸ軸とし、縞方向をＹ軸とし、Ｚ軸方向にカメラ４の光軸が設けられている。
【００２５】
画像処理装置５は、投影制御部５６と、画像取得部５１と、明暗反転判定部５３と、位相角計算部５４と、高度計算部５５と、カメラ４により撮影された画像などを格納する格子パターン格納部５７と、位相角計算部５４や高度計算部５５の計算結果を格納する計測データ格納部５９とを含む。また、画像処理装置５は、例えばメインメモリなどにワークメモリ領域５８を確保する。投影制御部５６は、液晶プロジェクタ１の液晶パネル１２を制御して、所定の格子パターンを投影させる。画像取得部５１は、所定の格子パターンが投影された被計測物体３の、カメラ４のＣＣＤ４２が捉えた画像をカメラ４から読み出す。画像の各画素はＲＧＢで表されるが、本実施の形態では照度値（明度値）で処理される。明暗反転判定部５３は、画像取得部５１が取得した２つの画像の照度値に基づき明暗反転判定データを生成する。位相角計算部５４は、明暗反転判定部５３により生成された明暗反転判定データを処理することなどにより各画素の縞波番号を判定する縞波番号判定部５４１を含み、さらに各画素の縞内部位相角を算出することにより、（２π×縞波番号＋縞内部位相角）により各画素の位相角を算出する。高度計算部５５は、上で説明した非特許文献１において述べられているように、各画素について計算された位相角から被計測物体３の基準平面２からの高度を計算する。高度計算部５５の処理内容については、本発明の主要部ではなく、非特許文献１などに詳しく説明されているので、以降これについては説明しない。
【００２６】
［実施の形態１］
本実施の形態では、図２に示したように、明の縞と暗の縞とが繰り返し現れる格子のうち１本の縞の明暗を反転させた格子を用いて格子パターン（反転格子パターンと呼ぶ）を投影し、当該反転格子パターンの画像を撮影する。この反転格子パターンの画像と通常の格子パターンの画像との照度についての差画像を生成して、反転させた縞に関連する画素を特定する。このようにすれば、反転させた縞の縞波番号を当該反転させた縞に関連する画素に割り当てることができるようになる。そして、全ての縞の明暗を反転させて上記のような処理を実施すれば、縞が投影されている画素については縞波番号が割り当てられる。全ての縞の明暗を反転させても変化が見出されなかった画素は、陰影である。すなわち、図４に示すように、物体に光を当てた場合にその物体にできる暗部である陰も、物体の陰を投影面に投影したものである影についても共に黒く撮影される。従って、いずれの反転格子パターンを用いても「暗」と判定される画素については被計測物体３の基準平面２からの高さを計測することはできないので、「陰影」と判断できる。
【００２７】
以下本実施の形態に係る計測装置の処理について図５乃至図１１を用いて説明する。最初に、投影制御部５６は、液晶プロジェクタ１に対して通常の格子パターンの投影を指示し、液晶プロジェクタ１の液晶パネル１２は指示に従って通常の格子を構成して、被計測物体３に投影する（ステップＳ１）。本実施の形態では、図６（ａ）に示すような格子を使用する。すなわち、明の縞と暗の縞が繰り返し所定の間隔で並べられた格子である。
【００２８】
これに対してカメラ４は、レンズ４１を介してＣＣＤ４２により上記のような格子パターンが投影された被計測物体３の格子パターンの画像を撮影し、カメラ４に内蔵するメモリに格納する（ステップＳ３）。なお、当該格子パターンの画像において、図３に示すように水平方向に縞が並んでいるものとする。そして、画像処理装置５の画像取得部５１は、撮影された格子パターンの画像をカメラ４から読み出し、画像処理装置５の格子パターン画像格納部５７に格納する。また、ワークメモリ領域５８に、例えば図７（ａ）に示すようなテーブルを登録する。図７（ａ）は、今回の計測に係る管理テーブルであって、画素番号の行と、照度値（通常の格子パターンについての画像の照度値）の行と、縞波番号＋の行と、縞内部位相角の行とが設けられ、各画素について基準となる照度値と縞波番号＋と縞内部位相角とが記録される。ここで縞波番号＋は、「１−１」といったように、縞波番号と１（暗）又は２（明）といった形で登録されるようになっている。また、縞内部位相差は、例えば「１」であれば「１」πを意味するものとする。ステップＳ３では、各画素の照度値が登録される。さらに、反転させる縞の番号ｎを１に初期化する（ステップＳ５）
【００２９】
次に、投影制御部５６は、液晶プロジェクタ１に対してｎ番目の縞を反転させた格子パターンの投影を指示し、液晶プロジェクタ１の液晶パネル１２は指示に従ってｎ番目の縞を反転させた格子を構成して、被計測物体３に投影する（ステップＳ７）。ここではｎ＝１であるから図６（ｂ）に示すような格子を使用する。すなわち、ｎ＝１の暗の縞が明の縞に反転させられた格子である。以下、ｎ＝２の場合には図６（ｃ）に示すように２番目の明の縞が暗の縞に反転されられた格子を用い、ｎ＝３の場合には図６（ｄ）に示すように３番目の暗の縞が明の縞に反転させられた格子を用いる。
【００３０】
これに対してカメラ４は、レンズ４１を介してＣＣＤ４２により上記のような格子パターンが投影された被計測物体３の格子パターンの画像を撮影し、カメラ４に内蔵するメモリに格納する（ステップＳ９）。なお、当該格子パターンの画像においても図３に示すように水平方向に縞が並んでいるものとする。そして、画像処理装置５の画像取得部５１は、撮影された格子パターンの画像をカメラ４から読み出し、画像処理装置５の格子パターン画像格納部５７に格納する。また、ワークメモリ領域５８に、例えば図７（ｂ）に示すようなテーブルを登録する。図７（ｂ）は、１つの反転格子パターンについてのテーブルであって、画素番号の行と、照度値（今回の反転格子パターンについての画像の照度値）の行と、通常の格子パターンの画像の照度値と今回の反転格子パターンの画像の照度値との差（絶対値）の行と、反転又は非反転の判定結果の行と、縞波番号＋の行とが設けられており、各画素について比較対象となる照度値と基準となる照度値との差の絶対値と反転又は非反転の判定結果と反転したと判断された画素についての縞波番号＋とが登録されるようになっている。ステップＳ９では、各画素の照度値が登録される。
【００３１】
そして、明暗反転判定部５３及び位相角計算部５４は、反転画素の特定処理を実施する（ステップＳ１１）。この反転画素の特定処理については図８を用いて説明する。明暗反転判定部５３は、通常の格子パターンの画像と今回ｎ番目の縞の明暗を反転させた格子パターンの画像との照度値の差の絶対値を計算し、例えばワークメモリ領域５８に格納する（ステップＳ３１）。照度値の差の絶対値は例えば図７（ｂ）のテーブルに画素に対応して登録される。そして位相角計算部５４の縞波番号判定部５４１は、照度差の絶対値が所定値以上の画素については反転画素と判断し、ｎから縞波番号＋を算出し、「反転」を表すデータ及び縞波番号＋を例えば図７（ａ）及び図７（ｂ）のテーブルに登録する（ステップＳ３３）。縞波番号は、上でも述べたように明と暗の縞のセットについての番号であり、縞波番号＋は縞波番号に明又は暗の識別子を付したものである。例えば縞番号がｎの場合には、ｎ／２の整数部分が縞波番号となり、例えば余りがない場合には明の識別子、余りがある場合には暗の識別子を付す。そして、照度値の差の絶対値が所定の基準値未満の画素については、反転させた縞に関係する画素ではないと判断して、「非反転」を表すデータを例えば図７（ｂ）のテーブルに登録する（ステップＳ３５）。従って図７（ｂ）において「曖昧」を表すデータは登録されることはない。
【００３２】
図８に示すような処理を実施して問題がない場合もあるが、１つの閾値だけではうまく反転又は非反転を判定できない場合もある。そのような場合には図９のような処理を実施するようにしても良い。明暗反転判定部部５３は、通常の格子パターンの画像と今回ｎ番目の縞の明暗を反転させた格子パターンの画像との照度値の差の絶対値を計算し、例えばワークメモリ領域５８に格納する（ステップＳ４１）。照度値の差の絶対値は例えば図７（ｂ）のテーブルに画素に対応して登録される。そして位相角計算部５４の縞波番号判定部５４１は、照度値の差の絶対値が第１の所定値以上の画素については反転画素と判断し、ｎから縞波番号＋を算出し、「反転」を表すデータ及び縞波番号＋を例えば図７（ａ）及び図７（ｂ）のテーブルに登録する（ステップＳ４３）。縞波番号＋は上で述べたような計算にて特定される。また、照度値の差の絶対値が第２の所定値未満である画素については非反転画素と判断し、「非反転」を表すデータを例えば図７（ｂ）のテーブルに登録する（ステップＳ４４）。位相角計算部５４の縞波番号判定部５４１は、照度値の差の絶対値が第２の所定値以上であって且つ上記第１の所定値未満である画素については「曖昧」画素であると判定し、「曖昧」を表すデータを例えば図７（ｂ）のテーブルに当該画素に対応して登録する（ステップＳ４５）。
【００３３】
図５に戻って、次に位相角計算部５４の縞波番号判定部５４１は、曖昧画素の縞波番号＋の特定処理を実施する（ステップＳ１３）。なお、図７に示すような処理を実施する場合は、「曖昧」画素は存在しないので、本ステップはスキップされる。曖昧画素の縞波番号＋の特定処理については図１０及び図１１（ａ）及び（ｂ）を用いて説明する。
【００３４】
縞波番号判定部５４１は、通常の格子パターンの画像から、例えば、非特許文献３に記載されているごとく、図７（ｂ）を走査して曖昧画素と判定された画素を含む１本のラインを抽出する（ステップＳ５１）。そして、通常の格子パターンの画像の抽出されたラインから、図７（ｂ）を走査して曖昧画素と判定された画素及び同じラインで反転画素と判定された画素を抽出する（ステップＳ５３）。そして、抽出された画素のうち照度値が最も高い画素が曖昧画素である場合には照度値が最低の反転画素を、抽出された画素のうち照度値が最も低い画素が曖昧画素である場合には照度値が最高の反転画素を基準に、縞波区間を設定する（ステップＳ５５）。
【００３５】
図１１（ａ）及び（ｂ）を用いてステップＳ５５についての処理を説明する。明暗の縞の繰り返しは波として表すことができ、通常の格子パターンの画像の１走査ラインを抽出するとその照度値は図１１（ａ）に示すような波で表すことができる。図１１（ａ）では、白丸印は曖昧画素と判定された画素であり、三角印は非反転画素であると判定された画素であり、黒丸印は反転画素と判定された画素である。ここでは、明の縞が反転された場合を示しており、照度値が高い画素が反転画素と判定されている。一方、非反転画素と判定された画素については照度値が低い画素及び他の縞波区間における照度値が高い画素である。ステップＳ５３において反転画素と曖昧画素が抽出されており、図１１（ａ）の例では、抽出された画素のうち照度値が最も低い画素が曖昧画素（白丸）であるから、照度値が最高の反転画素１２０１を特定し、当該反転画素１２０１を基準に縞波区間を設定する。縞波区間は明の縞と暗の縞の横幅の長さを有しており、照度値が最高の反転画素１２０１はこの縞波区間の１／４（位相角でπ）の位置であるから、その位置に従って縞波区間を設定する。一方図１１（ｂ）では、暗の縞が反転された場合を示しており、照度値が低い画素が反転画素と判定されている。非反転画素と判定された画素については照度値が高い画素及び他の縞波区間における照度値が低い画素画素である。ステップＳ５３において反転画素と曖昧画素が抽出されており、図１１（ｂ）の例では、抽出された画素のうち照度値が最も高い画素が曖昧画素（白丸）であるから、照度値が最低の反転画素１２０２を特定し、当該反転画素１２０２を基準に縞波区間を設定する。縞波区間は、照度値が最低の反転画素１２０２はこの縞波区間の３／４（位相角で３π／２）の位置であるから、その位置に従って縞波区間を設定する。
【００３６】
このようにして設定された縞波区間に入る曖昧画素を特定し、当該縞波区間の前半に入る曖昧画素については、反転画素の縞波番号と同じ縞波番号であって「明」の縞を表す縞波番号＋を、後半に入る曖昧画素については、反転画素の縞波番号と同じ縞波番号であって「暗」の縞を表す縞波番号＋を、図７（ａ）及び図７（ｂ）に登録する（ステップＳ５７）。そして、全てのラインを処理したか判断し（ステップＳ５９）、未処理のラインがあればステップＳ５１に戻り、全てのラインを処理していれば元の処理に戻る。
【００３７】
図５に戻って、このように縞波番号＋が特定されると、ｎは最大値となったか判断する（ステップＳ１５）。ｎが最大値未満である場合には、ｎを１インクリメントし（ステップＳ１７）、ステップＳ７に戻る。一方、ｎが最大値になっている場合には、通常の格子パターンの画像の各ラインにおいて、縞波番号＋が確定している画素で照度値が極大及び極小である画素により縞波区間を設定し、当該縞波区間内における位置に基づき縞内部位相角を計算し、例えば図７（ａ）のテーブルに登録する（ステップＳ１９）。図１１（ａ）及び図１１（ｂ）で説明したように、照度値が極大となる画素は縞波区間の１／４の位置を示しており、照度値が極小となる画素は縞波区間の３／４の位置を示しているので、縞波区間内の画素位置によって位相角が計算できる。
【００３８】
そして、全ての格子パターンの画像において不変の画素に対して「陰影」というデータを例えば図７（ａ）のテーブルに登録する（ステップＳ２１）。「陰影」については縞を反転してもいつも「非反転」と判断されるため、全ての格子パターンについての図７（ｂ）のテーブルを走査して、いずれの行においても非反転とされている画素については陰影であると判断できる。従って、図７（ａ）のテーブルに当該画素に対応して「陰影」を表すデータを登録する。
【００３９】
このようにすれば陰影以外の画素について縞波番号＋及び縞内部位相角のデータを得ることができる。なお、例えば図７（ａ）のテーブルのデータについては計測データ格納部５９に登録する。また、縞波番号と縞内部位相角が取得できれば、全体における位相を２π×縞波番号＋縞内部位相角にて各画素について計算することができ、周知の方法にて高度計算部５５は、被計測物体３の基準平面２からの高度を計算することができるようになる。このデータについては例えば計測データ格納部５９に格納する。
【００４０】
なお、上の説明では１つの格子パターンについて１つの縞を反転させる例を示しているが、必ずしも１つの縞に限定するものではない。すなわち、縞の不連続部分を超える間隔で複数箇所縞を反転させることも可能である。その場合であっても上で説明した処理を反転させた縞の部分毎に実行すれば、自動的に各画素の縞波番号を特定できるようになる。
【００４１】
［実施の形態２］
実施の形態１の方法を用いると処理時間が長くなってしまう。また、複数の縞を同時に反転させる方法を少々述べたが、これによれば処理時間を短縮できる。任意の画素の縞波番号を特定できる、複数の縞を同時に反転させる方法は無数に存在するが、反転規則が単純で開発が容易で、最も効率がよいバイナリ縞反転法について説明する。
【００４２】
簡単に説明すると、最初のステージでは図１２（ａ）のように全領域「白」のパターンを投影し、第２のステージでは図１２（ｂ）のように全領域の半分を「白」とし残りの半分を「黒」とする格子パターンを投影し、第３のステージでは図１２（ｃ）のように全領域の１／４を「白」「黒」「白」「黒」の縞で分割する格子パターンを投影し、第４のステージでは図１２（ｄ）のように全領域の１／８を「白」「黒」「白」「黒」「白」「黒」「白」「黒」の縞で分割する格子パターンを投影する。このように前ステージの格子パターンの縞を白の縞と黒の縞に分割して格子パターンを生成するといった処理をリカーシブに行う。なお、最終的に実施の形態１で用いた格子パターンとなるまで分割を繰り返す。なお、Ｍ本の縞を含む格子パターンの場合には、ｌｏｇ２Ｍ回のステージで計測が行われる。一方、１本ずつ反転させる場合にはＭ回のステージが必要であり、計測時間の短縮を図ることができる。なお、この格子パターン群は２分木と同一の構成となる。図１２（ａ）乃至（ｄ）では完全２分木を想定して説明しているが、必ずしも完全２分木でなくともよい。
【００４３】
このような前提を基に以下に図１３乃至図１５を用いて処理を説明する。最初に、ステージ数ｎを１に初期化する（ステップＳ６１）。そして、投影制御部５６は、液晶プロジェクタ１に対して第ｎステージの格子パターンの投影を指示し、液晶プロジェクタ１の液晶パネル１２は指示に従って第ｎステージの格子を構成して、被計測物体３に投影する（ステップＳ６３）。第１ステージでは、図１２（ａ）に示すような格子を使用する。すなわち、全領域「明」のパターンである。
【００４４】
これに対してカメラ４は、レンズ４１を介してＣＣＤ４２により第ｎステージの格子パターンが投影された被計測物体３の格子パターンの画像を撮影し、カメラ４に内蔵するメモリに格納する（ステップＳ６５）。そして、画像処理装置５の画像取得部５１は、撮影された格子パターンの画像をカメラ４から読み出し、ワークメモリ領域５８に格納すると共に、画像処理装置５の格子パターン画像格納部５７に格納する。
【００４５】
そして、明暗反転判定部５３は、明暗判定処理を実施する（ステップＳ６７）。この明暗判定処理について図１４を用いて説明する。まず、位相角計算部５４は、第１ステージであるか否かを判断する（ステップＳ８１）。現ステージが第１ステージであれば、所定の照度値以下の画像を検出し、「陰影」を例えば図１５のテーブルに登録する（ステップＳ１０９）。そして元の処理に戻る。
【００４６】
図１５のテーブルには、画素番号の行と、第１ステージでの明（「０」）又は暗（「陰影」）の判定結果の行と、第２ステージでの明又は暗（以下「１」）の判定結果の行と、第３ステージでの明又は暗の判定結果の行と、第４ステージでの明又は暗の判定結果の行と、．．．．縞波番号の行と、縞内部位相角の行とが設けられており、各画素について第２ステージから最終ステージまでの明暗シーケンス（０１のシーケンス）と縞波番号と縞内部位相角とが登録される。
【００４７】
一方現ステージが第１ステージではない場合には、縞波番号判定部５４１は、処理すべきラインを１ライン特定し（ステップＳ８３）、当該ラインのうち処理すべき１画素を特定し（ステップＳ８５）、当該画素の照度値を例えば格子パターン画像格納部５７から読み出す。そして、縞波番号判定部５４１は、読み出した照度値が第１の閾値以上であるか判断する（ステップＳ８７）。照度値が第１の閾値以上である場合には当該画素を「明」と判定して、「０」を例えば図１５のテーブルに登録する（ステップＳ８９）。そしてステップＳ１０３に移行する。照度値が第１の閾値以上ではない場合には照度値が第２の閾値以下であるか判断する（ステップＳ９１）。照度値が第２の閾値以下である場合には当該画素を「暗」と判定して、「１」を例えば図１５のテーブルに登録する（ステップＳ９３）。そしてステップＳ１０３に移行する。
【００４８】
照度値が第２の閾値以下であると判断された場合には、明暗反転判定部５３が同じ画素について、（前ステージの照度値−現ステージの照度値）を計算し、ワークメモリ領域５８に格納する（ステップＳ９５）。そして、縞波番号判定部５４１は、計算結果の絶対値が第３の閾値以上であるか判断する（ステップＳ９７）。計算結果の絶対値が第３の閾値以上である場合には、計算結果の値が正であれば、前ステージの照度値の方が大きい、すなわち明から暗に反転したことが分かるので「１」を登録し、計算結果の値が負であれば、前ステージの照度値の方が小さい、すなわち暗から明に反転したことが分かるので「０」を登録する（ステップＳ９９）。このように前のステージの画像を参照することにより明暗を判断するのは以下の理由からである。すなわち、図１２（ａ）乃至（ｄ）に示すように２分木に従って分割すると、現ステージの明と暗の境界は前ステージにおいて明らかに暗又は明の場合が多いからである。例えば現在第４ステージで左から最初の明暗の境界は、第３ステージでは明らかに明の縞の部分となる。従って、現ステージでは明暗が曖昧な画素であっても前ステージでは明らかな明又は暗であればそれらの照度値の差はもし明暗が切り替わっていれば第３の閾値以上になることが期待される。このように前ステージを参照して明又は暗を判定する。前ステージを参照しても、例えば図１２（ｄ）の２つ目の境界では前ステージでも明暗の境界となっているため、場合によっては差を計算しても不明瞭なままの場合もある。すなわち計算結果が第３の閾値未満であると判断された場合には、「曖昧画素」を表すデータを図１４のテーブルに登録する（ステップＳ１０１）。なお、さらに前のステージについてステップＳ９９を実行しても良い。２以上前のステージでは明らかに「明」、さらに明らかに「暗」の画素である可能性もあるためである。
【００４９】
そしてステップＳ８３において特定されたラインについて全ての画素を処理したか判断する（ステップＳ１０３）。未処理の画素が存在している場合にはステップＳ８５に戻る。もし、特定のラインの全画素を処理し終わった場合には、現ステージの処理の結果曖昧画素と判定された画素が存在していれば、縞波番号判定部５４１は、当該曖昧画素について、現ステージの縞区間長及び現在処理しているラインの各画素の照度値を基に縞区間を設定して、曖昧画素が明の縞と暗の縞のいずれに属するか判断し、「０」又は「１」を登録する（ステップＳ１０５）。そして、全てのラインについて処理したか判断する（ステップＳ１０７）。未処理のラインが存在しているのならばステップＳ８３に戻る。一方、全てのラインについて処理した場合には元の処理に戻る。
【００５０】
このような処理を実施すれば、現ステージにおいて各画素が明又は暗のいずれの縞に属するのかを判定することができる。
【００５１】
図１３の処理に戻って、ステップＳ６７において明暗の判定が終了すると、現ステージが最終ステージであるか判断する（ステップＳ６９）。まだ最終ステージではない場合には、ｎを１インクリメントし（ステップＳ７１）、ステップＳ６３に戻る。一方、最終ステージであれば、図１５に示した第２ステージから最終ステージまでの明暗シーケンスから縞波番号を決定し、図１５のテーブルに登録する（ステップＳ７３）。例えばある画素について「０００００」という明暗シーケンスを得た場合には、その画素は縞番号「０」という縞に属する。従って、縞波番号は「０」である。さらに「００００１」という明暗シーケンスを得た場合には、その画素は縞番号「１」という縞に属する。従って、縞波番号は「０」である。さらに「０００１０」という明暗シーケンスを得た場合には、その画素は縞番号「２」という縞に属する。従って、縞波番号は「１」となる。このような処理を行うことにより縞波番号を決定する。
【００５２】
そして、最終ステージの格子パターンの画像の各ラインにおいて、縞波番号が確定している画素で照度値が極大及び極小である画素により縞波区間を設定し、当該縞波区間内における位置に基づき縞内部位相角を計算し、例えば図１５のテーブルに登録する（ステップＳ７５）。図１１（ａ）及び図１１（ｂ）で説明したように、照度値が極大となる画素は縞波区間の１／４の位置を示しており、照度値が極小となる画素は縞波区間の３／４の位置を示しているので、縞波区間内の位置によって位相角が計算できる。
【００５３】
このようにすれば陰影以外の画素について縞波番号及び縞内部位相角のデータを得ることができる。なお、例えば図１５のテーブルの少なくとも一部のデータについては計測データ格納部５９に登録する。また、縞波番号と縞内部位相角が取得できれば、全体における位相を２π×縞波番号＋縞内部位相角にて各画素について計算することができ、周知の方法にて高度計算部５５は、被計測物体３の基準平面２からの高度を計算することができるようになる。このデータについては例えば計測データ格納部５９に格納する。
【００５４】
以上のような処理を実施すれば、より効率的に各画素の縞波番号及び縞内部位相角を特定することができるようになる。
【００５５】
また、次にような処理によっても同様の結果を得ることができる。最初に、撮影ステージ番号ｎを１に初期化する（図１６：ステップＳ１１１）。そして、投影制御部５６は、液晶プロジェクタ１に対して第ｎステージの格子パターンの投影を指示し、液晶プロジェクタ１の液晶パネル１２は指示に従って第ｎステージの格子を構成して、被計測物体３に投影する（ステップＳ１１３）。第１ステージでは、図１２（ａ）に示すような格子を使用する。すなわち、全領域「明」のパターンである。第２ステージでは、図１２（ｂ）に示すような格子を使用する。以下、図１２（ｃ）、図１２（ｄ）．．．となる。
【００５６】
これに対してカメラ４は、レンズ４１を介してＣＣＤ４２により第ｎステージの格子パターンが投影された被計測物体３の格子パターンの画像を撮影し、カメラ４に内蔵するメモリに格納する（図１６：ステップＳ１１５）。そして、画像処理装置５の画像取得部５１は、撮影された格子パターンの画像をカメラ４から読み出し、画像処理装置５の格子パターン画像格納部５７に格納する。そして、今回の投影及び撮影が最終ステージについてのものか判断する（ステップＳ１１７）。もし、最終ステージではない場合には、ｎを１インクリメントし（ステップＳ１１８）、ステップＳ１１３に戻る。最終ステージの場合には、明暗反転判定部５３及び位相角計算部５４は、明暗判定処理を実施する（ステップＳ１１９）。明暗判定処理については図１７を用いて説明する。
【００５７】
位相角計算部５４は、処理すべきラインを１ライン特定し（ステップＳ１３１）、当該ラインに属する処理すべき画素を１画素特定する（ステップＳ１３３）。そして、明暗反転判定部５３は、第１ステージにおける当該画素の照度値と最終ステージにおける当該画素の照度値との差を計算し、例えばワークメモリ領域５８に格納する（ステップＳ１３５）。そして、位相角計算部５４の縞波番号判定部５４１は当該差の絶対値が第１の閾値以上であるか判断する（ステップＳ１３７）。差の絶対値が第１の閾値以上である場合には、第１ステージが全領域「明」であるから、反転、すなわち「明」から「暗」への反転が発生したものとして、例えば図１８（ａ）に示すテーブルに「１」を、例えば図１８（ｂ）に示すテーブルに「反転」を登録する（ステップＳ１３９）。そしてステップＳ１４７に移行する。
【００５８】
図１８（ａ）のテーブルでは、画素番号の行と、最終ステージの基準となる格子パターンの画像の各画素が「明」であるか「暗」であるかを登録するための明暗の行と、第２ステージの比較結果の行と、第３ステージの比較結果の行と、第４ステージの比較結果の行と、．．．．縞波番号の行と、縞内部位相角の行とが設けられており、各画素について当該画素の明暗の判断結果と各ステージについてのコード・シーケンスと縞波番号と縞内部位相角とが対応付けられている。一方、図１８（ｂ）のテーブルでは、画素番号の行と、第１ステージにおける格子パターンの画像と最終ステージの基準となる格子パターンの画像との比較で明暗が反転しているか否かを登録するための行と、第２ステージにおける格子パターンの画像と最終ステージの基準となる格子パターンの画像との比較で明暗が反転しているか否かを登録するための行と、第３ステージにおける格子パターンの画像と最終ステージの基準となる格子パターンの画像との比較で明暗が反転しているか否かを登録するための行と、第４ステージにおける格子パターンの画像と最終ステージの基準となる格子パターンの画像との比較で明暗が反転しているか否かを登録するための行と、．．．．とが含まれている。
【００５９】
図１７の処理に戻って、位相角計算部５４の縞波番号判定部５４１は、ステップＳ１３５で計算された差の絶対値が第２の閾値以下であるか判断する（ステップＳ１４１）。差の絶対値が第２の閾値以下である場合には、第１ステージが全領域「明」であるから、非反転、すなわち「明」のままであるとして、例えば図１８（ａ）に示すテーブルに「０」を、例えば図１８（ｂ）に示すテーブルに「非反転」を登録する（ステップＳ１４３）。そしてステップＳ１４７に移行する。
【００６０】
なお、画像内に陰影が存在している場合には、ここでは「明」を表す「０」が登録されてしまうが、必ず「非反転」となるため、全ステージについて処理した後に全てのステージについて「非反転」の画素については「陰影」であるものとして取り扱われる。なお、本実施の形態では左端の明の縞については一度も反転されないので、この縞の部分については計測には使用できない。この部分についても使用する場合には、全領域「暗」のパターンを投影して、当該パターンについての画像との比較を行わなければならない。
【００６１】
ステップＳ１３５で計算された差の絶対値が第２の閾値を超え且つ第１の閾値未満である場合には、仮に曖昧画素として例えば図１８（ａ）のテーブルに登録する（ステップＳ１４５）。
【００６２】
そして特定のラインの全ての画素について処理したか判断する（ステップＳ１４７）。未処理の画素が存在している場合にはステップＳ１３３に戻る。一方特定のラインの全ての画素について処理した場合には、曖昧画素と登録された画素について、最終ステージの縞区間長及び現在処理しているラインの各画素の照度値を基に縞区間を設定して、曖昧画素が明の縞と暗の縞のいずれに属するか判断し、「明」の場合には「０」及び「非反転」を、「暗」の場合には「１」及び「反転」を登録する（ステップＳ１４９）。そして、全てのラインについて処理が終了したか判断する（ステップＳ１５１）。未処理のラインが存在する場合にはステップＳ１３１に戻る。一方、全てのラインについて処理を行った場合には元の処理に戻る。
【００６３】
このようにして最終ステージの各画素についての「明」又は「暗」の判定及び「反転」又は「非反転」の判定が行われる。
【００６４】
図１６の処理フローに戻ると、明暗反転判定部５３及び位相角計算部５４は、基準となる最終ステージについての画像と各ステージについての画像との比較処理を実施する（ステップＳ１２１）。この比較処理については図１９を用いて説明する。
【００６５】
最初に、ステージ番号ｎをｎ＝２にセットする（ステップＳ１６１）。そして、明暗反転判定部５３は、第ｎステージの画像と最終ステージの画像の照度値の差の絶対値を計算し、例えばワークメモリ領域５８に格納する（ステップＳ１６３）。そして、位相角計算部５４は、処理すべきラインを１ライン特定し（ステップＳ１６５）、さらに処理すべき画素を１画素特定する（ステップＳ１６７）。そして、縞波番号判定部５４１は当該画素の照度値の差の絶対値が第１の所定値以上であるか判断する（ステップＳ１６９）。当該画素の照度値の差の絶対値が第１の所定値以上である場合には、縞が反転したとして、例えば図１８（ａ）のテーブルに最終ステージにおける判定結果とは逆の判定結果（最終ステージにおいて「明（０）」であれば「暗（１）」又はその逆）を登録し、例えば図１８（ｂ）のテーブルに「反転」を表すデータを登録する（ステップＳ１７１）。そしてステップＳ１８５に移行する。
【００６６】
一方、当該画素の照度値の差の絶対値が第１の所定値以上ではないと判断された場合には、縞波番号判定部５４１は、当該画素の照度値の差の絶対値が第２の所定値以下であるか判断する（ステップＳ１７３）。当該画素の照度値の差の絶対値が第２の所定値以下である場合には、縞が非反転であるとして、例えば図１８（ａ）のテーブルに最終ステージにおける判定結果と同じ判定結果（最終ステージにおいて「明（０）」でれば「明（０）」を「暗（１）」であれば「暗（１）」）を登録し、例えば図１８（ｂ）のテーブルに「非反転」を表すデータを登録する（ステップＳ１７５）。そしてステップＳ１８５に移行する。
【００６７】
一方、当該画素の照度値の差の絶対値が第１の所定値未満で且つ第２の所定値を超えている場合には、明暗反転判定部５３は第（ｎ−１）ステージの照度値と第ｎステージの照度値との差を算出し、例えばワークメモリ領域５８に格納する（ステップＳ１７７）。そして、縞波番号判定部５４１は、計算結果の絶対値が第３の閾値以上であるか判断する（ステップＳ１７９）。このように前ステージのデータを参照するのはステップＳ９５で述べたとおりの理由からである。もし、計算結果の絶対値が第３の閾値以上である場合には、第（ｎ−１）ステージにおける判定結果とは逆の判定結果を例えば図１８（ａ）のテーブルに登録し、さらに第（ｎ−１）ステージとは逆の反転状態を登録する（ステップＳ１８１）。ステップＳ１７７の計算結果の絶対値が第３の閾値以上である場合には、第（ｎ−１）ステージとの比較で反転しているということであり、第（ｎ−１）ステージで「明（０）」であれば「暗（１）」、「暗（１）」であれば「明（０）」を登録する。また、第（ｎ−１）ステージで「反転」と判断されていればさらに反転されていることになるので「非反転」を、「非反転」と判断されていればその状態から反転されているので「反転」を登録する。
【００６８】
ステップＳ１７９でステップＳ１７７の計算結果の絶対値が第３の閾値未満であると判断された場合には、仮に曖昧画素として例えば図１８（ａ）のテーブルに登録する（ステップＳ１８３）。そして特定のラインの全ての画素について処理したか判断する（ステップＳ１８５）。未処理の画素が存在している場合にはステップＳ１６７に戻る。一方特定のラインの全ての画素について処理した場合には、曖昧画素と登録された画素について、第ｎステージの縞区間長及び現在処理しているラインの各画素の照度値を基に縞区間を設定して、曖昧画素が明の縞と暗の縞のいずれに属するか判断し、図１８（ａ）のテーブルに「明」の場合には「０」を、「暗」の場合には「１」を登録し、当該判定結果と最終ステージにおける対応する画素の明暗とから「反転」又は「非反転」を図１８（ｂ）のテーブルに登録する（ステップＳ１８７）。
【００６９】
そして、全てのラインについて処理が終了したか判断する（ステップＳ１８９）。未処理のラインが存在する場合にはステップＳ１６５に戻る。一方、全てのラインについて処理を行った場合には元の処理に戻る。
【００７０】
このようにして各ステージの各画素についての「明」又は「暗」の判定及び「反転」又は「非反転」の判定が行われる。
【００７１】
図１６の処理フローに戻って、縞波番号判定部５４１は、図１８（ｂ）のテーブルにおいて全てのステージにおいて「非反転」の画素を陰影と判定し、図１８（ａ）のテーブルに「陰影」と登録する（ステップＳ１２３）。図１８（ａ）の例では第１画素が陰影と判断されている。
【００７２】
そして、縞波番号判定部５４１は、図１８（ａ）に示した第２ステージから最終ステージまでのコード・シーケンスから縞波番号を決定し、図１８（ａ）のテーブルに登録する（ステップＳ１２５）。例えばある画素について「０００００」というコード・シーケンスを得た場合には、その画素は縞番号「０」という縞に属する。従って、縞波番号は「０」である。さらに「００００１」というコード・シーケンスを得た場合には、その画素は縞番号「１」という縞に属する。従って、縞波番号は「０」である。さらに「０００１０」というコード・シーケンスを得た場合には、その画素は縞番号「２」という縞に属する。従って、縞波番号は「１」となる。このような処理を行うことにより縞波番号を決定する。
【００７３】
そして、最終ステージの格子パターンの画像の各ラインにおいて、縞波番号が確定している画素で照度値が極大及び極小である画素により縞波区間を設定し、当該縞波区間内における位置に基づき縞内部位相角を計算し、例えば図１８（ａ）のテーブルに登録する（ステップＳ１２７）。図１１（ａ）及び図１１（ｂ）で説明したように、照度値が極大となる画素は縞波区間の１／４の位置を示しており、照度値が極小となる画素は縞波区間の３／４の位置を示しているので、縞波区間内の位置によって位相角が計算できる。
【００７４】
このようにすれば陰影以外の画素について縞波番号及び縞内部位相角のデータを得ることができる。なお、例えば図１８（ａ）のテーブルの少なくとも一部のデータについては計測データ格納部５９に登録する。また、縞波番号と縞内部位相角が取得できれば、全体における位相を２π×縞波番号＋縞内部位相角にて各画素について計算することができ、周知の方法にて高度計算部５５は、被計測物体３の基準平面２からの高度を計算することができるようになる。このデータについては例えば計測データ格納部５９に格納する。
【００７５】
以上のような処理を実施すれば、より効率的に各画素の縞波番号及び縞内部位相角を特定することができるようになる。
【００７６】
以上本発明の実施の形態を説明したが、本発明のこれに限定されるものではない。例えば、縞の明暗の反転のさせ方は、上で述べた態様に限定されず、別の方法を用いても良い。
【００７７】
また、例えば、図３に示した機能ブロック図は一例であって、必ずしも液晶プロジェクタ１でなければならないことはなく、他の投影装置を用いるようにしても良い。また、画像処理装置５の機能部についても実際のプログラムモジュールが対応しない場合もある。また、撮影制御部５６については画像処理装置５とは別の装置によって実現される場合もある。さらに、液晶プロジェクタ１やカメラ４に、画像処理装置５の一部の機能を保持させるような構成とする場合もある。
【００７８】
さらに、上で述べた処理フローで、格子パターンの投影及び撮影毎に処理を行う処理フローを示したが、全ての格子パターンの投影及び撮影を行ってから処理を行うようにしても良い。また上で述べた処理フローについては一例であって、同様の機能を異なる処理ステップについて実現することも可能である。
【００７９】
（付記１）
明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第１の画像を取得する第１画像取得ステップと、
前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第２の画像を取得する第２画像取得ステップと、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップと、
を含む格子パターン投影法における画像処理方法。
【００８０】
（付記２）
特定された前記画素に対応して前記反転させた縞の縞波番号を特定するステップ
をさらに含む付記１記載の画像処理方法。
【００８１】
（付記３）
前記第１又は第２の画像における所定の画素について、当該画素の縞波番号から特定される縞波区間内の位置に基づき縞内部位相角を計算するステップと、
をさらに含む付記２記載の画像処理方法。
【００８２】
（付記４）
前記第２画像取得ステップにおいて、
全ての縞の明暗を少なくとも一度は反転するように前記第２の格子パターンを複数回変更し、各前記第２の格子パターンに対応する第２の画像を取得する
ことを特徴とする付記１記載の画像処理方法。
【００８３】
（付記５）
全ての前記第２の格子パターンに対応する第２の画像と前記第１の画像とに基づき、陰影に関連する画素を特定するステップ
をさらに含む付記４記載の画像処理方法。
【００８４】
（付記６）
前記第２画像取得ステップが、
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、前記被計測物体についての各前記撮影ステージの画像を取得するステップ
を含む付記１記載の画像処理方法。
【００８５】
（付記７）
前記第１の画像に基づき、明の縞に関連する画素については第１のコードを暗の縞に関連する画素については第２のコードを割り当てるステップと、
前記第１及び第２の画像に基づき、明暗が反転していない縞に関連する画素を特定するステップと、
前記反転していない縞に関連する画素については、前記第１の画像の対応する画素に割り当てられたコードと同じコードを割り当てるステップと、
前記反転させた縞に関連する画素については前記第１の画像の対応する画素に割り当てられたコードとは異なるコードを設定するステップと、
所定の前記撮影ステージについての各画素のコード系列を取得するステップと、
をさらに含む付記１記載の画像処理方法。
【００８６】
（付記８）
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、前記被計測物体についての各前記撮影ステージの画像を取得するステップと、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する判断ステップと、
前記所定の画素について、所定の前記撮影ステージについての明暗シーケンス又は明に対応付けられたコードと暗に対応付けられたコードとによるコード・シーケンスを特定するステップと、
を含む格子パターン投影法における画像処理方法。
【００８７】
（付記９）
前記所定の画素について、前記明暗シーケンス又は前記コード・シーケンスに基づき縞波番号を特定するステップ
をさらに含む付記８記載の画像処理方法。
【００８８】
（付記１０）
前記判断ステップにおいて、
特定の撮影ステージにおける画像と当該特定の撮影ステージより前の画像とを用いて、前記画像の所定の画素について、明又は暗の縞のいずれに属するか判断する
ことを特徴とする付記８記載の画像処理方法。
【００８９】
（付記１１）
前記最終ステージにおける前記画像の所定の画素について、当該画素の縞波番号から特定される縞波区間内の位置に基づき縞内部位相角を計算するステップと、
をさらに含む付記８記載の画像処理方法。
【００９０】
（付記１２）
明と暗の縞から構成される第１の格子パターンと前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンとを被計測物体に投影する手段と、
前記第１の格子パターンに対する、前記被計測物体についての第１の画像と、前記第２の格子パターンに対する、前記被計測物体についての第２の画像とを撮影する手段と、
画像処理装置であって、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定する手段と、
特定された前記画素に対応して前記反転させた縞の縞波番号を特定する手段と、
を有する画像処理装置と、
を有する計測装置。
【００９１】
（付記１３）
明と暗の縞から構成される第１の格子パターンと前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンとを被計測物体に投影させる手段と、
前記第１の格子パターンに対する、前記被計測物体についての第１の画像と、前記第２の格子パターンに対する、前記被計測物体についての第２の画像とを取得する手段と、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定する手段と、
を有する画像処理装置。
【００９２】
（付記１４）
明と暗の縞から構成される第１の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第１の画像を取得する第１画像取得ステップと、
前記第１の格子パターンの一部の縞の明暗を反転させた第２の格子パターンを被計測物体に投影した場合における、前記被計測物体についての第２の画像を取得する第２画像取得ステップと、
前記第１及び第２の画像に基づき、明暗を反転させた縞に関連する画素を特定するステップと、
をコンピュータに実行させるためのプログラム。
【００９３】
（付記１５）
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影する手段と、
前記被計測物体についての各前記撮影ステージの画像を撮影する手段と、
画像処理装置であって、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する手段と、
前記所定の画素について、所定の前記撮影ステージについての明暗シーケンス又は明と暗とに対応付けられたコードによるコード・シーケンスを特定する手段と、
前記所定の画素について、前記明暗シーケンス又は前記コード・シーケンスに基づき縞波番号を特定する手段と、
を有する画像処理装置と、
を有する計測装置。
【００９４】
（付記１６）
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影させる手段と、
前記被計測物体についての各前記撮影ステージの画像を取得する手段と、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する手段と、
前記所定の画素について、所定の前記撮影ステージについての明暗シーケンス又は明と暗とに対応付けられたコードによるコード・シーケンスを特定する手段と、
を有する画像処理装置。
【００９５】
（付記１７）
撮影ステージ番号ｎ（ｎは１以上の整数）に基づき最大２ｎ本の明と暗の縞を含む格子パターンを被計測物体に投影した場合における、前記被計測物体についての各前記撮影ステージの画像を取得するステップと、
各前記撮影ステージにおける画像の所定の画素について、明又は暗の縞のいずれに属するか判断する判断ステップと、
前記所定の画素について、所定の前記撮影ステージについての明暗シーケンス又は明と暗とに対応付けられたコードによるコード・シーケンスを特定するステップと、
をコンピュータに実行させるためのプログラム。
【００９６】
【発明の効果】
以上述べたように本発明によれば、格子パターン投影法において、縞の不連続部分に対しても縞波番号を自動的に取得することができる。
【００９７】
その結果、人手を介することなく縞の不連続部に対しても高度計測値を獲得することが可能である。
【図面の簡単な説明】
【図１】従来技術における計測装置の概要を示す図である。
【図２】縞の不連続部分を説明するための図である。
【図３】本発明の計測装置の機能ブロック図を示す図である。
【図４】陰影を説明するための図である。
【図５】本発明の第１の実施の形態に係る処理フローを示す図である。
【図６】（ａ）は通常の格子を、（ｂ）乃至（ｄ）は、１つの縞を反転させた格子を示す。
【図７】（ａ）及び（ｂ）は、処理に用いられるデータ・テーブルの一例を示す図である。
【図８】反転画素の特定処理の処理フローの第１の例を示す図である。
【図９】反転画素の特定処理の処理フローの第２の例を示す図である。
【図１０】曖昧画素の縞波番号＋の特定処理の処理フローを示す図である。
【図１１】（ａ）及び（ｂ）は、曖昧画素の縞波番号＋を特定する方法を模式的に示す図である。
【図１２】（ａ）乃至（ｄ）は、本発明の第２の実施の形態に係る各ステージの格子の例を示す図である。
【図１３】本発明の第２の実施の形態におけるメイン処理フローを示す図である。
【図１４】明暗判定処理の処理フローを示す図である。
【図１５】処理に用いられるデータ・テーブルの一例を示す図である。
【図１６】本発明の第２の実施の形態における第２のメイン処理フローを示す図である。
【図１７】明暗判定処理の処理フローを示す図である。
【図１８】（ａ）及び（ｂ）は処理に用いられるデータ・テーブルの一例を示す図である。
【図１９】比較処理の処理フローを示す図である。
【符号の説明】
１  液晶プロジェクタ    ２  基準平面    ３  被計測物体
４  カメラ    ５  画像処理装置
１１  投影部    １２  液晶パネル    １３  レンズ
４１  レンズ    ４２  ＣＣＤ
５１  画像取得部
５３  明暗反転判定部    ５４  位相角計算部
５４１  縞波番号判定部    ５５  高度計算部
５６  投影制御部    ５７  格子パターン画像格納部
５８  ワークメモリ領域    ５９  計測データ格納部
【図１】
2004325096.tif 000003
【図２】
2004325096.tif 000004
【図３】
2004325096.tif 000005
【図４】
2004325096.tif 000006
【図５】
2004325096.tif 000007
【図６】
2004325096.tif 000008
【図７】
2004325096.tif 000009
【図８】
2004325096.tif 000010
【図９】
2004325096.tif 000011
【図１０】
2004325096.tif 000012
【図１１】
2004325096.tif 000013
【図１２】
2004325096.tif 000014
【図１３】
2004325096.tif 000015
【図１４】
2004325096.tif 000016
【図１５】
2004325096.tif 000017
【図１６】
2004325096.tif 000018
【図１７】
2004325096.tif 000019
【図１８】
2004325096.tif 000020
【図１９】
2004325096.tif 000021