(57)【要約】【課題】ダイナミックレンジの狭い撮像手段を用いた場合であっても、被写体の３次元形状を検出することができる３次元形状検出装置を提供すること。【解決手段】明と暗とを交互に並べてなる複数種類のパターン光の各々を時系列に被写体に投影されている状態の被写体を複数の異なる露出条件で撮像し、それぞれ各露出条件毎に複数の輝度画像を生成する。さらに、複数の輝度画像に基づいて、各露出条件毎のコード画像を生成し、空間コードのコード境界位置を各露出条件ごとに求める。このように求められた各露出条件毎の複数のコード境界位置に基づいて、前記被写体の３次元形状を算出するための一つのコード境界位置を決定し、被写体の３次元形状を算出する。【選択図】図１９
2007271530.tif 000002
【特許請求の範囲】
【請求項１】
明と暗とを交互に並べてなるパターン光を被写体に投影して撮像した画像情報を基に、その撮像領域内にある被写体の３次元形状を検出する３次元形状検出装置であって、
前記パターン光の各々を被写体に投影する投影手段と、
前記投影手段から前記パターン光が投影されている状態の被写体を複数の異なる露出条件で撮像する撮像手段と、
前記各露出条件毎に、前記撮像手段で撮像した撮像画像からパターン光の軌跡を抽出するパターン光軌跡抽出手段と、
前記パターン光軌跡抽出手段によって抽出された各露出条件毎のパターン軌跡位置に基づいて、前記被写体の３次元形状を算出するための一つのパターン軌跡位置を決定するパターン軌跡統合手段と、
前記パターン軌跡統合手段によって決定されたパターン軌跡位置に基づいて被写体の３次元形状を算出する３次元形状算出手段と、
を備えた３次元形状検出装置。
【請求項２】
前記パターン光は、明と暗とを交互に並べてなる複数種類のパターン光であり、
前記投影手段は、
複数種類の前記パターン光の各々を時系列に被写体に投影し、
前記撮像手段は、
前記投影手段から前記各パターン光が投影されている状態の被写体を複数の異なる露出条件で撮像し、
前記パターン光軌跡抽出手段は、
前記各露出条件毎に、前記撮像手段によって撮像される各撮像画像から各画素の輝度を算出した複数の輝度画像を生成する輝度画像生成手段と、
前記複数の輝度画像に対して所定の閾値による閾値処理を行って各画素毎に前記空間コードを割り当てた、前記各露出条件毎のコード画像を生成するコード画像生成手段と、
前記空間コードのコード境界位置を前記コード画像から抽出する処理を前記各露出条件の前記コード画像それぞれに対して行うコード境界抽出手段と、を有し、
前記パターン軌跡統合手段は、
前記コード境界抽出手段によって抽出された各露出条件毎のコード境界位置に基づいて、前記被写体の３次元形状を算出するための一つのコード境界位置を決定するコード境界統合手段を有し、
前記３次元形状算出手段は、
前記コード境界統合手段によって決定されたコード境界位置に基づいて被写体の３次元形状を算出すること
を特徴とする請求項１に記載の３次元形状検出装置。
【請求項３】
異なる複数の露出条件の情報を格納する露出条件情報格納部と、
前記撮像手段における撮像領域の輝度を検出し、当該輝度に基づいて、前記設定情報格納部から一の露出条件を決定する露出決定手段と、を備え、
前記複数露出撮像処理手段は、
前記露出決定手段によって決定した露出条件と、当該決定した露出条件と露出度合いが近い前後の露出条件とからなる複数の露出条件を、前記複数の異なる露出条件とする
ことを特徴とする請求項２に記載の３次元形状検出装置。
【請求項４】
前記コード境界統合手段は、
前記各露出条件における前記コード境界位置の各座標毎に、当該各座標に対応する画素の輝度の検出を行い、当該輝度が前記露出条件における有効輝度範囲内となるか否かを判定し、当該有効輝度範囲内であると判定した画素に対応する前記コード境界位置の座標を用いて、前記被写体の３次元形状を算出するための一つのコード境界位置を決定することを特徴とする請求項２又は請求項３に記載の３次元形状検出装置。
【請求項５】
前記コード境界統合手段は、
前記各座標に対応する画素の輝度を、当該画素とその周囲の画素との平均輝度としたことを特徴とする請求項４に記載の３次元形状検出装置。
【請求項６】
前記各露出条件毎に、前記撮像手段によって撮像される各撮像画像から各画素の最大輝度値を検出して最大輝度画像を生成する最大輝度画像生成手段を備え、
前記各座標に対応する画素の輝度の検出を前記最大輝度画像を用いて行うことを特徴とする請求項４又は請求項５に記載の３次元形状検出装置。
【請求項７】
前記露出条件は露光時間である
ことを特徴とする請求項１から請求項６のいずれか１項に記載の３次元形状検出装置。
【請求項８】
明と暗とを交互に並べてなるパターン光を被写体に投影して撮像した画像情報を基に、その撮像領域内にある被写体の３次元形状を検出する３次元形状検出方法であって、
前記パターン光を被写体に投影手段により投影するステップと、
前記投影手段から前記各パターン光が投影されている状態の被写体を、撮像手段により複数の異なる露出条件で撮像するステップと、
前記各露出条件毎に、前記撮像手段で撮像した撮像画像からパターン光の軌跡を抽出するステップと、
前記抽出された各露出条件毎のパターン軌跡位置に基づいて、前記被写体の３次元形状を算出するための一つのパターン軌跡位置を決定するステップと、
前記決定されたパターン軌跡位置に基づいて被写体の３次元形状を算出するステップと、
を有する３次元形状検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元形状検出装置及び３次元形状検出方法に関する。詳細には、パターン光を被写体に投影して撮像した画像からパターン光の軌跡を抽出して撮像領域内にある被写体の３次元形状を検出する３次元形状検出装置及び３次元形状検出方法に関する。
【背景技術】
【０００２】
従来より、対象物体である被写体に投影部からスリット光やスポット光などのパターン光を投光して、そのパターン光が投光された被写体をＣＣＤカメラなどの撮像手段によって撮像し、その撮像された画像から検出されるパターン光の軌跡に基づいて、被写体の３次元形状を検出する３次元形状検出装置が知られている。
【０００３】
このような３次元形状検出装置においては、その３次元形状検出方法として、能動型測定方法と受動型測定方法がある。能動型測定方法としては、複数のパターン光の投影による空間コード化方法が代表的である。
【０００４】
パターン光を投影する能動型測定方法の場合、被写体の表面反射特性への依存度が高く、測定可能な被写体が限定される。すなわち、低反射面、微細構造面、鏡面反射面、投影光色と補色関係にある色を有する面など、対象物の表面に投影したパターン光の反射成分が観測に充分な強度を望めない面やその反射成分の強度が強すぎたりする面が被写体表面上の領域に存在する場合、３次元形状の検出が困難となることがある。
【０００５】
そこで、従来の３次元形状検出装置においては、被写体の表面反射特性に基づいて、パターン光を投光するための光源の光量を調整したり、撮像手段によって撮像する時の露出を調整したりすることによって、その対策を行っていた（たとえば、特許文献１参照）。
【特許文献１】特開平８−３５８２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、被写体によっては、その被写体表面に低反射領域や高反射領域など様々な反射特性を持つ領域が分布しているものがあり、上記対策を施した場合であっても、被写体の３次元形状の検出を充分に行うことができないことがあった。
【０００７】
すなわち、被写体表面の反射分布が低反射から高反射まで広範囲に及んでいるときには、パターン光を投光するための光源の光量を調整したとしても、或いは撮像手段によって撮像する時の露出を調整したとしても、上記広範囲の反射分布をカバーできないことがあった。
【０００８】
たとえば、被写体表面の低反射領域を３次元形状検出するために、撮像手段の絞りを開く或いは露出時間を長くすると、逆に被写体表面の高反射領域において３次元形状の検出が困難となる。また、その逆、すなわち、被写体表面の高反射領域を３次元形状検出するために、撮像手段の絞りを絞る或いは露出時間を短くすると、逆に被写体表面の低反射領域において３次元形状の検出が困難となる。すなわち、ある領域では３次元形状検出が可能となるが、別の領域では３次元形状検出が困難となるのである。
【０００９】
そこで、ダイナミックレンジの広い撮像手段をこの３次元形状検出に用いることが考えられる。すなわち、被写体の広範囲の反射分布をカバーできるダイナミックレンジの撮像手段を採用するのである。
【００１０】
しかし、このようにダイナミックレンジの広い撮像手段は高価であるため、３次元形状検出装置の製造コストを押し上げてしまうことになる。
【００１１】
そこで、本発明は、ダイナミックレンジの狭い撮像手段を用いた場合であっても、被写体の３次元形状を検出することができる３次元形状検出装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
かかる課題を解決するために、請求項１に記載の発明は、明と暗とを交互に並べてなるパターン光を被写体に投影して撮像した画像情報を基に、その撮像領域内にある被写体の３次元形状を検出する３次元形状検出装置であって、前記パターン光の各々を被写体に投影する投影手段と、前記投影手段から前記パターン光が投影されている状態の被写体を複数の異なる露出条件で撮像する撮像手段と、前記各露出条件毎に、前記撮像手段で撮像した撮像画像からパターン光の軌跡を抽出するパターン光軌跡抽出手段と、前記パターン光軌跡抽出手段によって抽出された各露出条件毎のパターン軌跡位置に基づいて、前記被写体の３次元形状を算出するための一つのパターン軌跡位置を決定するパターン軌跡統合手段と、前記パターン軌跡統合手段によって決定されたパターン軌跡位置に基づいて被写体の３次元形状を算出する３次元形状算出手段とを備えることとした。
【００１３】
また、請求項２に記載の発明は、前記パターン光は、明と暗とを交互に並べてなる複数種類のパターン光であり、前記投影手段は、複数種類の前記パターン光の各々を時系列に被写体に投影し、前記撮像手段は、前記投影手段から前記各パターン光が投影されている状態の被写体を複数の異なる露出条件で撮像し、前記パターン光軌跡抽出手段は、前記各露出条件毎に、前記撮像手段によって撮像される各撮像画像から各画素の輝度を算出した複数の輝度画像を生成する輝度画像生成手段と、前記複数の輝度画像に対して所定の閾値による閾値処理を行って各画素毎に前記空間コードを割り当てた、前記各露出条件毎のコード画像を生成するコード画像生成手段と、前記空間コードのコード境界位置を前記コード画像から抽出する処理を前記各露出条件の前記コード画像それぞれに対して行うコード境界抽出手段とを有し、前記パターン軌跡統合手段は、前記コード境界抽出手段によって抽出された各露出条件毎のコード境界位置に基づいて、前記被写体の３次元形状を算出するための一つのコード境界位置を決定するコード境界統合手段を有し、前記３次元形状算出手段は、前記コード境界統合手段によって決定されたコード境界位置に基づいて被写体の３次元形状を算出することを特徴とすることを特徴とする。
【００１４】
また、請求項３に記載の発明は、請求項２に記載の発明であって、異なる複数の露出条件の情報を格納する露出条件情報格納部と、前記撮像手段における撮像領域の輝度を検出し、当該輝度に基づいて、前記設定情報格納部から一の露出条件を決定する露出決定手段と、を備え、前記複数露出撮像処理手段は、前記露出決定手段によって決定した露出条件と、当該決定した露出条件と露出度合いが近い前後の露出条件とからなる複数の露出条件を、前記複数の異なる露出条件とすることを特徴とする。
【００１５】
また、請求項４に記載の発明は、請求項２又は請求項３に記載の発明であって、前記コード境界統合手段は、前記各露出条件における前記コード境界位置の各座標毎に、当該各座標に対応する画素の輝度の検出を行い、当該輝度が前記露出条件における有効輝度範囲内となるか否かを判定し、当該有効輝度範囲内であると判定した画素に対応する前記コード境界位置の座標を用いて、前記被写体の３次元形状を算出するための一つのコード境界位置を決定することを特徴とする。
【００１６】
また、請求項５に記載の発明は、請求項４に記載の発明であって、前記コード境界統合手段は、前記各座標に対応する画素の輝度を、当該画素とその周囲の画素との平均輝度としたことを特徴とする。
【００１７】
また、請求項６に記載の発明は、請求項４又は請求項５に記載の発明であって、前記各露出条件毎に、前記撮像手段によって撮像される各撮像画像から各画素の最大輝度値を検出して最大輝度画像を生成する最大輝度画像生成手段を備え、前記各座標に対応する画素の輝度の検出を前記最大輝度画像を用いて行うことを特徴とする。
【００１８】
また、請求項７に記載の発明は、請求項１から請求項６のいずれか１項に記載の発明であって、前記露出条件は露光時間であることを特徴とする。
【００１９】
また、請求項８に記載の発明は、明と暗とを交互に並べてなるパターン光を被写体に投影して撮像した画像情報を基に、その撮像領域内にある被写体の３次元形状を検出する３次元形状検出方法であって、前記パターン光を被写体に投影手段により投影するステップと、前記投影手段から前記各パターン光が投影されている状態の被写体を、撮像手段により複数の異なる露出条件で撮像するステップと、前記各露出条件毎に、前記撮像手段で撮像した撮像画像からパターン光の軌跡を抽出するステップと、前記抽出された各露出条件毎のパターン軌跡位置に基づいて、前記被写体の３次元形状を算出するための一つのパターン軌跡位置を決定するステップと、前記決定されたパターン軌跡位置に基づいて被写体の３次元形状を算出するステップとを有することを特徴とする。
【発明の効果】
【００２０】
請求項１，８に記載の発明によれば、各露出条件で撮像した画像からそれぞれパターン軌跡位置を抽出し、これらのパターン軌跡位置から適切なパターン軌跡位置を選択することができるため、表面の反射分布が低反射から高反射まで広範囲に及んでいる被写体について、ダイナミックレンジの狭い撮像手段を用いた場合であっても、被写体の３次元形状を検出することができる。すなわち、どのようなダイナミックレンジの撮像手段を用いた場合であっても、種々の反射分布を有する被写体の３次元形状の検出を精度よく行うことができるのである。
【００２１】
請求項２に記載の発明によれば、各露出条件で撮像した画像からそれぞれコード境界を抽出し、これらのコード境界位置から適切なコード境界位置を選択することができるため、表面の反射分布が低反射から高反射まで広範囲に及んでいる被写体について、ダイナミックレンジの狭い撮像手段を用いた場合であっても、被写体の３次元形状を検出することができる。すなわち、どのようなダイナミックレンジの撮像手段を用いた場合であっても、種々の反射分布を有する被写体の３次元形状の検出を精度よく行うことができるのである。
【００２２】
また、請求項３に記載の発明によれば、異なる複数の露出条件の情報を格納する露出条件情報格納部と、撮像手段における撮像領域の輝度を検出し、当該輝度に基づいて、設定情報格納部から一の露出条件を決定する露出決定手段とを備え、複数露出撮像処理手段は、露出決定手段によって決定した露出条件と、当該決定した露出条件と露出度合いが近い前後の露出条件とからなる複数の露出条件を、複数の異なる露出条件とするので、被写体を撮像するための露出条件が多数ある場合においても、全ての露出条件で輝度画像の生成、コード画像の生成及びコード境界の抽出を行うことがないため、それらの演算処理の負荷が軽減され、しかも、３次元形状の検出時間も必要以上にかかることがない。
【００２３】
また、請求項４に記載の発明によれば、コード境界統合手段は、各露出条件におけるコード境界位置の各座標毎に、当該各座標に対応する画素の輝度の検出を行い、当該輝度が前記露出条件における有効輝度範囲内となるか否かを判定し、有効輝度範囲内であると判定した画素に対応するコード境界位置の座標を用いて、被写体の３次元形状を算出するための一つのコード境界位置を決定するので、各露出条件で撮像した画像からそれぞれコード境界位置を抽出し、当該コード境界毎に有効輝度範囲内にあるコード境界位置を選択することができるため、種々の反射分布を有する被写体の３次元形状の検出をより精度よく行うことができる。すなわち、被写体の表面反射特性に適した露出条件で撮影した画像を用いるようにしているため、精度よくコード境界位置を検出することができるのである。
【００２４】
また、請求項５に記載の発明によれば、コード境界統合手段は、各座標に対応する画素の輝度を、当該画素とその周囲の画素との平均輝度としたので、被写体の３次元形状の検出をより精度よく行うことができる。すなわち、撮像手段の状態やその撮像状態によっては、一部の座標の画素の輝度が本来の輝度とは異なったものとなることがあるが、座標に対応する画素の輝度だけでなくその画素の周囲の画素の輝度をも参酌しているため、各露光条件のコード境界位置のうち適正なコード境界位置を選択することができ、したがって３次元形状の検出精度を向上させることができるのである。たとえば、その座標の画素の輝度が有効輝度範囲にある場合でも、周囲の輝度に比べて異常に高く、周囲の画素の輝度で平均化すると有効輝度範囲外となる場合には、その画素の輝度が本来の取得されるべき輝度とは異なるものであるとして、その画素に対応する露出条件のコード境界位置を使用しないようにし、これによりより精度よく３次元形状の検出を行うのである。
【００２５】
また、請求項６に記載の発明によれば、各露出条件毎に、撮像手段によって撮像される各撮像画像から各画素の最大輝度値を検出して最大輝度画像を生成する最大輝度画像生成手段を備え、各座標に対応する画素の輝度の検出を最大輝度画像を用いて行うので、最大輝度画像を別個に撮像することがなく、撮像枚数の増加を抑えることができる。しかも、光源から被写体の全面に投光することができるようなマスクを投影手段に設ける必要がないから、表面の反射分布が低反射から高反射まで広範囲に及んでいる被写体の３次元形状を検出する場合であっても、投影手段を変更する必要がない。
【００２６】
また、請求項７に記載の発明によれば、前記露出条件は露光時間であるので、撮像手段において機械的な絞り機構を備える必要が無く、安価な撮像手段を採用することが可能となる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明のさらに具体的な実施の形態のうちのいくつかを図面に基づいて詳細に説明する。なお、本実施形態においては、空間コード化法を用いた３次元形状検出を例に挙げて説明するが、単純な平行線（スリット状）パターン光を用いた光切断法や、何らかの規則性を持たせたスポット光群、明暗をメッシュ状に配したパターン光等を用いた３次元形状に適用することも当然に可能である。
【００２８】
図１には、本発明の第１実施形態に従う３次元形状検出装置１０の外観が斜視図で示されている。この３次元形状検出装置１０は、明と暗とを交互に並べてなる複数種類のパターン光の各々を時系列に被写体Ｓに投影する後述の投影部１２と、投影部１２から各パターン光が投影されている状態の被写体を複数の異なる露出条件で撮像する後述の撮像部１４とを有しており、撮像部１４による撮像結果に基づき、被写体Ｓの３次元情報および表面色情報をコンピュータによって取得する信号処理を行うように設計されている。
【００２９】
図１ないし図４には、３次元形状検出装置１０の外部構成が示される一方、図５ないし図１１には、３次元形状検出装置１０の内部構成が示されている。以下、まず、外部構成を説明し、次に、内部構成を説明する。
【００３０】
図１に示すように、３次元形状検出装置１０は、測定ヘッドＭＨと、台座部ＨＤとを含むように構成されている。
【００３１】
測定ヘッドＭＨは、被写体Ｓを光学的に撮像し、その撮像結果に基づいて被写体Ｓの３次元形状および表面色を測定するために設けられている。台座部ＨＤは、測定ヘッドＭＨ及び被写体Ｓを載置可能に構成されており、一端の領域に測定ヘッドＭＨを装着する測定ヘッド装着部を設けると共に、他端に被写体Ｓを載置する載置台としての回転テーブル部ＲＴを設けている。回転テーブル部ＲＴは、測定ヘッドＭＨに対して被写体Ｓを割り出し回転させるごとに測定ヘッドＭＨによる被写体Ｓの撮像を可能にし、それにより、被写体Ｓの外面の全体領域を複数の部分領域に分割して撮像することを可能にするために設けられている。
【００３２】
被写体Ｓについては、各部分領域ごとの撮像によって複数の部分画像が取得される。それら取得された複数の部分画像を処理することにより３次元形状が得られる。各部分画像から得られた３次元形状は１つの３次元ステッチ形状に結合される。同じ被写体Ｓについて取得された表面色情報がその３次元ステッチ形状にマッピングされ、それにより、その被写体Ｓについてのステッチテクスチャ画像が生成される。
【００３３】
図１に示すように、測定ヘッドＭＨは、被写体Ｓにパターン光を投影するための投影部１２と、被写体Ｓを撮像するための撮像部１４と、被写体Ｓの３次元情報および表面色情報の取得とを行うために信号処理を行う処理部１６とを備えている。それら投影部１２、撮像部１４および処理部１６は、測定ヘッドＭＨの、略直方体状を成すケーシング２０に装着されている。
【００３４】
図１に示すように、そのケーシング２０には、鏡筒２４とフラッシュ２６とが、それぞれが部分的にケーシング２０の正面において露出する姿勢で装着されている。このケーシング２０には、さらに、撮像部１４の一部である撮像光学系３０が、それのレンズの一部がケーシング２０の正面において露出する姿勢で装着されている。その撮像光学系３０は、それの露出部分において、被写体Ｓを表す画像光を受光する。
【００３５】
鏡筒２４は、図１に示すように、ケーシング２０の正面から突出しており、その内部において、図５に示すように、投影部１２の一部である投影光学系３２を収容している。投影光学系３２は、複数枚の投影レンズ３４と絞り３６とを含むように構成されている。
【００３６】
鏡筒２４は、投影光学系３２を、焦点調節のために全体的に移動可能である状態で保持し、さらに、この鏡筒２４は、投影光学系３２を損傷から保護している。鏡筒２４の露出端面から、複数枚の投影レンズ３４のうち最も外側に位置するものが露出している。投影光学系３２は、その最も外側の投影レンズ３４において、被写体Ｓに向かってパターン光を投影する。
【００３７】
フラッシュ２６は、不足光量を補充するために発光する光源であり、例えば、キセノンガスが充填された放電管を用いて構成されている。したがって、このフラッシュ２６は、ケーシング２０に内蔵されているコンデンサ（図示しない）の放電により繰り返し使用することができる。
【００３８】
図１に示すように、ケーシング２０には、それの上面において、レリーズボタン４０が装着されている。また、図２（ｂ）に示すように、ケーシング２０には、さらに、それの背面において、モード切替スイッチ４２（図２（ｂ）に示す例においては、２個のボタンから成る。）と、４方向カーソルキー（十字キー）４３と、モニタＬＣＤ４４とが装着されている。それらモード切替スイッチ４２および４方向カーソルキー４３はそれぞれ、ファンクションボタンの一例を構成する。
【００３９】
レリーズボタン４０は、３次元形状検出装置１０を作動させるためにユーザによって操作される。このレリーズボタン４０は、ユーザの操作状態（押下状態）が「半押し状態」である場合と「全押し状態」である場合とで異なる指令を発令できる２段階の押しボタン式のスイッチによって構成されている。レリーズボタン４０の操作状態は処理部１６によって監視される。処理部１６によって「半押し状態」が検出されれば、よく知られたオートフォーカス（ＡＦ）および自動露出（ＡＥ）の機能が起動し、ピント、絞りおよびシャッタスピードが自動的に調節される。これに対し、処理部１６によって「全押し状態」が検出されれば、撮像等が行われる。
【００４０】
モード切替スイッチ４２は、３次元形状検出装置１０の作動モードを、後述の三次元測定モード（図２（ｂ）において「３Ｄ」で示す。）およびオフモード（図２（ｂ）において「ＯＦＦ」で示す。）を含む複数種類のモードのいずれかとして設定するためにユーザによって操作される。このモード切替スイッチ４２の操作状態は処理部１６によって監視されており、モード切替スイッチ４２の操作状態が処理部１６によって検出されると、その検出された操作状態に対応するモードでの処理が３次元形状検出装置１０において行われる。
【００４１】
モニタＬＣＤ４４は、液晶ディスプレイ（Liquid Crystal Display）を用いて構成されており、処理部１６から画像信号を受けて、画像をユーザに表示する。このモニタＬＣＤ４４は、例えば、被写体Ｓの３次元形状の検出結果を表す画像（立体画像）等を表示する。
【００４２】
図２に示すように、ケーシング２０には、さらに、ＲＦ（無線）インタフェイスとしてのアンテナ５０が装着されている。アンテナ５０は、図５に示すように、ＲＦドライバ５２に接続されている。このアンテナ５０は、被写体Ｓを立体画像として表すデータ等を、ＲＦドライバ５２を介して、図示しない外部インタフェイスに無線によって送信する。
【００４３】
ここで、図１および図３を参照することにより、測定ヘッドＭＨを台座部ＨＤに着脱可能に装着する構造を説明する。
【００４４】
測定ヘッドＭＨは、台座部ＨＤの一端の上面に機械的に係合することにより、その台座部ＨＤに装着される。その係合を実現するために、測定ヘッドＭＨは、図３に示すように、台座部ＨＤとの係合部である下端部にヘッド沈座部１５０が形成されている。このヘッド沈座部１５０は、第１および第２の係合爪１５２，１５４を一対の雄側係合部として有している。
【００４５】
図３に示すように、それら第１および第２の係合爪１５２，１５４は、測定ヘッドＭＨの横方向、すなわち、台座部ＨＤの幅方向に互いに隔たる一対の位置において、それぞれ測定ヘッドＭＨの前後方向、すなわち、台座部ＨＤの長さ方向に延びるように形成されている。本実施形態においては、測定ヘッドＭＨが台座部ＨＤにできる限り強固に固定されるようにするために、それら第１および第２の係合爪１５２，１５４間の距離ができる限り長くなるようにそれら第１および第２の係合爪１５２，１５４の各位置が選定されている。
【００４６】
図３に示すように、台座部ＨＤには、ヘッド沈座部１５０との機械的係合によってそのヘッド沈座部１５０を固定的に受容するヘッド受容部１６０が形成されている。このヘッド受容部１６０は、ヘッド沈座部１５０が嵌り入るヘッドベース沈座空隙１６２を備え、さらに、測定ヘッドＭＨの第１および第２の係合爪１５２，１５４にそれぞれ係合する第１および第２の爪突き当て部１６４，１６６を一対の雌側係合部として備えている。
【００４７】
第１の爪突き当て部１６４は、対応する第１の係合爪１５２に係合して、測定ヘッドＭＨが台座部ＨＤから、それの上面に直角な方向に離脱することを阻止する固定爪突き当て部である。一方、第２の爪突き当て部１６６は、（ａ）対応する第２の係合爪１５４に係合して、測定ヘッドＭＨが台座部ＨＤから、それの上面に直角な方向に離脱することを阻止する係合位置と、（ｂ）対応する第２の係合爪１５４から離脱して、測定ヘッドＭＨが台座部ＨＤから、それの上面に直角な方向に離脱することを許可する解放位置とに変位可能な可動爪突き当て部である。
【００４８】
第２の爪突き当て部１６６の一例は、台座部ＨＤの長さ方向（台座部ＨＤに対する測定ヘッドＭＨの装着・離脱時にその測定ヘッドＭＨが回転する回転平面に直角な方向）に延びるピボット軸線まわりにピボット可能なピボット部材１７０を含んでいる。
【００４９】
そのピボット部材１７０は、そのピボット軸線と同軸な軸線を有するジョイント１７２によって台座部ＨＤにピボット可能に装着される。このピボット部材１７０は、対応する第２の係合爪１５４に機械的に係合してその第２の係合爪１５４が離脱することを阻止する可動係合部１７４を含んでいる。その可動係合部１７４が第２の係合爪１５４を上方から係合する向きにピボット部材１７０が常時、弾性部材としてのスプリング１７６によって付勢される。本実施形態においては、そのピボット部材１７０が、さらに、可動係合部１７４による係合を解除するためにユーザによって押圧操作される操作部１７８と、スプリング１７６の弾性力を拡大して可動係合部１７４に伝達するレバレッジ１８０とを含んでいる。
【００５０】
次に、図３を参照することにより、台座部ＨＤに対する測定ヘッドＭＨの着脱作業を説明する。
【００５１】
測定ヘッドＭＨを台座部ＨＤに装着するためには、ユーザは、ピボット部材１７０の操作部１７８を、スプリング１７６の弾性力に抗して、可動係合部１７４が係合位置から解放位置に向かう解放方向に押圧する。その押圧状態で、ユーザは、ヘッド沈座部１５０がヘッドベース沈座空隙１６２内に進入しつつ第１の係合爪１５２が第１の爪突き当て部１６４内に進入して当接するように、測定ヘッドＭＨを概して垂直面内において回転させつつ下降させる。その後、ユーザは、操作部１７８の押圧を解除し、それにより、ピボット部材１７０がスプリング１７６の弾性回復力によって解放位置から係合位置に回動して、可動係合部１７４が第２の係合爪１５４に上方から係合して突き当たる。その結果、第１の係合爪１５２が第１の爪突き当て部１６４から上方に離脱することが阻止されるとともに、第２の係合爪１５４が第２の爪突き当て部１６６から上方に離脱することも阻止される。それにより、測定ヘッドＭＨが台座部ＨＤから離脱することが阻止される。
【００５２】
これに対し、測定ヘッドＭＨを台座部ＨＤから離脱するためには、ユーザは、上記の場合と同様にして、ピボット部材１７０の操作部１７８をスプリング１７６の弾性力に抗して、解放方向に押圧する。その押圧状態で、ユーザは、ヘッド沈座部１５０がヘッドベース沈座空隙１６２から退避しつつ第１の係合爪１５２が第１の爪突き当て部１６４から退避するように、測定ヘッドＭＨを概して垂直面内において回転させつつ上昇させて、測定ヘッドＭＨを台座部ＨＤから離脱させる。その後、ユーザは、操作部１７８の押圧を解除し、それにより、ピボット部材１７０がスプリング１７６の弾性回復力によって解放位置から係合位置に復元する。
【００５３】
次に、図４を参照することにより、回転テーブル部ＲＴを詳細に説明する。
【００５４】
この回転テーブル部ＲＴは、被写体Ｓが載置されるべき回転テーブル１８４と、その回転テーブル１８４を回転可能に支持する支持フレーム１８６とを含んでいる。その支持フレーム１８６は、上板部１８８と下板部１８９とを含むように薄い中空箱状を成しており、上板部１８８の開口から回転テーブル１８４の上面が露出している。本実施形態においては、その支持フレーム１８６のうちの下板部１８９がテーブルベースとしても機能する。
【００５５】
回転テーブル１８４の上面は、撮像されるべき被写体Ｓが載置される載置面１９０である。一方、回転テーブル１８４の下面から、回転シャフト１９１が同軸に延び出しており、この回転シャフト１９１は、軸受け１９２を介して支持フレーム１８６に回転可能に支持されている。その軸受け１９２は、支持フレーム１８６に形成された軸受けホルダ１９３によって保持されている。
【００５６】
回転テーブル１８４を回転させるテーブルモータ１９４が支持フレーム１８６に装着されている。このテーブルモータ１９４を収容するモータボックス１９５が支持フレーム１８６に形成されている。
【００５７】
このモータボックス１９５は、支持フレーム１８６の上板部１８８の上面に、その上面から上方に突出する姿勢で形成されている。このモータボックス１９５の上面は、回転テーブル１８４の上面より高く設定されている。それにより、被写体Ｓが回転テーブル１８４と共に回転させられる際にその被写体Ｓが、回転テーブル１８４を同軸に投影した投影空間から外側にはみ出していると、モータボックス１９５のうち回転テーブル１８４の上面より上方に位置する部分が被写体Ｓに当接してその被写体Ｓの向きを変化させる。
【００５８】
したがって、モータボックス１９５は、テーブルモータ１９４の収容部として機能するのみならず、被写体Ｓが回転テーブル１８４に位置決めされる位置を規制する位置規制部１９６としても機能する。
【００５９】
テーブルモータ１９４の回転を回転テーブル１８４に伝達するために、テーブルモータ１９４の回転シャフトにモータギヤ１９７が同軸に固定され、このモータギヤ１９７にかみ合うテーブルギヤ１９８が回転テーブル１８４に同軸に固定されている。モータギヤ１９７は、テーブルギヤ１９８より小径であるため、テーブルギヤ１９８の回転速度が減速されて回転テーブル１８４に伝達される。
【００６０】
ところで、テーブルモータ１９４は、支持フレーム１８６の上板部１８８の上面から突出しないように支持フレーム１８６に装着することが可能である。一方、上板部１８８の上面のうち回転テーブル１８４が露出する部分を除く部分の上方空間にテーブルモータ１９４を配置しても、何ら支障がなく、むしろ、支持フレーム１８６の薄型化に有利である。
【００６１】
したがって、本実施形態によれば、テーブルモータ１９４を上板部１８８の上面から突出するように配置することにより、上述の位置規制部１９６としての機能に加えて、支持フレーム１８６の薄型化を容易にするという機能も実現される。
【００６２】
この３次元形状検出装置１０は、複数種類のモードのうちユーザによって選択されたものに従って作動する。それらモードは、三次元計測モード（以下「３Ｄモード」とする。）と、オフモードとを含んでいる。３Ｄモードは、被写体Ｓを撮像し、被写体Ｓの立体形状を検出するモードである。オフモードは、この３次元形状検出装置１０の動作を停止させるモードである。
【００６３】
撮像部１４は、被写体Ｓを撮像し、その画像を取り出すことが可能であるように構成されている。
【００６４】
投影部１２は、被写体Ｓにパターン光を投影するためのユニットである。この投影部１２は、図５および図６に示すように、基板６０と、ＬＥＤ６２（例えば、単一のＬＥＤ素子によって広い出射面から光を出力するＬＥＤ）と、照明絞り６３と、光源レンズ６４と、マスク２００を送るためのマスクモータ（例えば、パルスモータ）６５を駆動源とする投影機構６６と、投影光学系３２とを、投影方向に沿って直列に備えている。
【００６５】
図６には、この投影部１２のハードウエア構成のうち、基板６０と、ＬＥＤ６２と、照明絞り６３と、光源レンズ６４と、マスク２００と、投影光学系３２とが詳細に示されている。図７には、この投影部１２を含む３次元形状検出装置１０全体のソフトウエア構成および電気的接続関係が詳細に示されている。図８ないし図１１には、投影部１２のハードウエア構成のうち、投影機構６６が詳細に示されている。
【００６６】
撮像部１４は、被写体Ｓを撮像するための撮像モジュールである。この撮像部１４は、図５に示すように、撮像光学系３０と、ＣＣＤ（Charge Coupled Device）７０とを、画像光の入射方向に沿って直列に備えている。このＣＣＤ７０は、インターライントランスファー方式でプログレッシブ走査を行うように構成されている。また、撮像部１４には、ＣＣＤ７０を制御するためのＣＣＤドライバ８８を備えている。
【００６７】
撮像光学系３０は、図５に示すように、複数枚のレンズを用いて構成されている。この撮像光学系３０は、よく知られたオートフォーカス機能により、焦点距離および絞りを自動調整して外部からの光をＣＣＤ７０上に結像する。
【００６８】
ＣＣＤ７０は、フォトダイオード素子などの光電変換素子をマトリクス状に配列して構成されている。このＣＣＤ７０は、撮像光学系３０を介してこのＣＣＤ７０の表面に結像される画像の光の色および強さに応じた信号を各画素ごとに生成する。その生成された信号は、デジタルデータに変換されて処理部１６に出力される。
【００６９】
図７にブロック図で表すように、処理部１６は、フラッシュ２６、レリーズボタン４０およびモード切替スイッチ４２にそれぞれ電気的に接続されている。処理部１６は、さらに、モニタＬＣＤ４４にはモニタＬＣＤドライバ７２を介して、アンテナ５０にはＲＦドライバ５２を介して、バッテリ７４には電源インタフェイス７６を介してそれぞれ電気的に接続されている。それらフラッシュ２６等は、処理部１６によって制御される。
【００７０】
処理部１６は、さらに、外部メモリ７８、キャッシュメモリ８０及び撮像モジュールである撮像部１４にそれぞれ電気的に接続されている。処理部１６は、さらに、ＬＥＤ６２には光源ドライバ８４を介して、投影機構６６のマスクモータ６５にはマスクモータドライバ８６を介して、それぞれ電気的に接続されている。それらＬＥＤ６２等は、処理部１６によって制御される。
【００７１】
外部メモリ７８は、着脱可能なフラッシュＲＯＭであり、立体画像モードにおいて撮像された撮像画像や３次元情報（前述のステッチテクスチャ画像、３次元ステッチ形状を含む。）を記憶することが可能である。外部メモリ７８を構成するために、例えば、ＳＤカード、コンパクトフラッシュ（登録商標）カード等を使用することができる。
【００７２】
キャッシュメモリ８０は、データの読み書きを高速で行い得る記憶装置である。キャッシュメモリ８０は、例えば、デジカメモードにおいて撮像された撮像画像を高速でキャッシュメモリ８０に転送し、処理部１６で画像処理を行ってから外部メモリ７８に格納することを可能にするために使用される。キャッシュメモリ８０を構成するために、例えば、ＳＤＲＡＭ、ＤＤＲＲＡＭ等を使用することができる。
【００７３】
電源インタフェイス７６、光源ドライバ８４、マスクモータドライバ８６およびＣＣＤドライバ８８はそれぞれ、バッテリ７４、ＬＥＤ６２、投影機構６６のマスクモータ６５およびＣＣＤ７０を制御する各種のＩＣ(Integrated Circuit）によって構成されている。
【００７４】
図２（ａ）に示すように、測定ヘッドＭＨには、ＡＣアダプタ端子９０と、ＵＳＢ端子９１と、テーブルモータ端子９２とが設けられている。ＡＣアダプタ端子９０は、図５にも示すように、バッテリ７４に電気的に接続されており、それにより、３次元形状検出装置１０が外部の交流電源を電力源として利用することが可能となっている。ＵＳＢ端子９１は、図５に示すように、ＵＳＢドライバ９３を介して処理部１６に接続されている。テーブルモータ端子９２は、図５に示すように、テーブルモータドライバ９４を介して処理部１６に接続されている。
【００７５】
図１に示すように、回転テーブル部ＲＴのテーブルモータ１９４から電気ラインとしてのハーネス９５が延び出している。このハーネス９５は、図２（ａ）に示すように、そのハーネス９５の先端に接続されたＬ字プラグ９６においてテーブルモータ端子９２に接続されている。そのハーネス９５は、測定ヘッドＭＨからテーブルモータ１９４に制御信号および電力を供給する電気ラインとして機能する。したがって、図７に示すように、テーブルモータ１９４がテーブルモータドライバ９４を介して処理部１６に接続されることになる。
【００７６】
図１に示すように、ハーネス９５は、台座部ＨＤの表面上でハーネス止め９７，９８，９８によって規定される。
【００７７】
前述のように、投影部１２は、図６に示すように、基板６０と、ＬＥＤ６２と、照明絞り６３と、光源レンズ６４と、投影機構６６と、投影光学系３２とをパターン光の投影方向に沿って直列に備えている。
【００７８】
基板６０は、それにＬＥＤ６２が装着されることにより、その装着されたＬＥＤ６２との間において電気的な配線を行う。基板６０は、例えば、アルミニウム製基板に絶縁性合成樹脂を塗布してから無電解メッキによってパターンを形成したものや、ガラスエポキシ基材をコアとする単層または多層構造の基板を使用して製作することができる。ＬＥＤ６２は、投影機構６６に向けて放射状のアンバー色の光を広い面積で発光する光源であり、ＬＥＤケーシング１００内に収容されている。
【００７９】
図６に示すように、照明絞り６３は、ＬＥＤ６２から出力された光のうち不要な部分を遮蔽することにより、必要な部分のみを光源レンズ６４に誘導するために設けられている。光源レンズ６４は、ＬＥＤ６２から放射状に発光される光を集光するレンズであり、その材質はアクリルに代表される光学樹脂である。
【００８０】
本実施形態においては、図６に示すように、ＬＥＤ６２から発光される放射状の光が、光源レンズ６４によって効率良く集光され、ＬＥＤ６２からの出射光が投影機構６６の入射面１０６に略直角に入射するとともに、指向性の高い放射光として投影機構６６の出射面１０８から出射する。この意味において、光源レンズ６４は、コリメータレンズとして機能する。図６には、その出射面１０８上において互いに隔たった２個の注目点Ａ，Ｂにつき、それぞれの指向性特性が照度分布のグラフ（θ：半値拡がり半角）で表されている。
【００８１】
投影光学系３２は、投影機構６６を通過した光を被写体Ｓに向かって投影するための複数枚の投影レンズ３４を含んでいる。それら投影レンズ３４は、ガラス製レンズと合成樹脂製レンズとの組合せから成るテレセントリックレンズによって構成されている。テレセントリックとは、投影光学系３２を通過する主光線が、入射側の空間では光軸に平行になり、入射瞳の位置が無限になる構成をいう。
【００８２】
投影光学系３２は、上述のようにテレセントリック特性を持ち、その入射ＮＡが０．１程度であるため、垂直±５°以内の光のみが投影光学系３２の内部の絞り３６を通過できるように、投影光学系３２の光路が規制されている。したがって、本実施形態においては、投影光学系３２のテレセントリック性により、投影機構６６を垂直±５°で通過する光のみを投影光学系３２に投影し得る構成と相俟って、画質の向上を容易に図り得る。
【００８３】
ここで、図８ないし図１１を参照することにより、投影部１２のハードウエア構成のうち投影機構６６を詳細に説明する。
【００８４】
この投影機構６６は、光源としてのＬＥＤ６２からの入射光を複数種類のパターン光に選択的に変換することにより、それら複数種類のパターン光を順次被写体Ｓに投影するために設けられている。図８には、この投影機構６６が正面図で示され、図９には、この投影機構６６が部分断面側面図で示されている。
【００８５】
図８に示すように、この投影機構６６は、シート状を成して長さ方向に延びるマスク２００を備えており、そのマスク２００はマスクモータ６５によってそのマスク２００の長さ方向に送られる。
【００８６】
図１０には、そのマスク２００の長さ方向における一部が拡大されて正面図で示されている。このマスク２００には、前記複数種類のパターン光にそれぞれ対応する複数のフレーム２０２がマスク２００の長さ方向に並んで割り当てられている。図８に示すように、それらフレーム２０２は、選択的に前記入射光の照射領域に位置させられる。
【００８７】
本実施形態においては、３Ｄモードの際、被写体Ｓを撮像するために８種類のパターン光が順次被写体Ｓに投影される。図１０には、パターン番号ＰＮが５であるパターン光を形成するためのフレーム２０２（図１０において「コード５」を付して示す。）と、パターン番号ＰＮが６であるパターン光を形成するためのフレーム２０２（図１０において「コード６」を付して示す。）と、パターン番号ＰＮが７であるパターン光を形成するためのフレーム２０２（図１０において「コード７」を付して示す。）とが代表的に示されている。
【００８８】
マスク２００は、各フレーム２０２ごとに、マスク２００をそれの厚さ方向に貫通する貫通穴（空気開口）２０４を、各フレーム２０２に対応するパターン光の形状に対応する形状を有する状態で備えている。図１０に示すように、いずれのフレーム２０２においても、個々の貫通穴２０４が直線的に延びるスリット状を成している。複数個のフレーム２０２のうち、複数個の貫通穴２０４を有するものにおいては、それら複数個の貫通穴２０４がストライプ状を成すように配列されている。
【００８９】
さらに、本実施形態においては、いずれのフレーム２０２においても、各貫通穴２０４がマスク２００の長さ方向に平行に延びるように配置されている。
【００９０】
そのマスク２００は、長さ方向と厚さ方向との双方に平行な平面内において屈曲可能である。このマスク２００は、金属製の薄いシートによって構成されている。マスク２００を構成する金属は、不透明弾性材料の一例であり、そのような材料の一例はステンレスである。このマスク２００の板厚の一例は、０．１ｍｍである。
【００９１】
本実施形態においては、厚さ０．１ｍｍのステンレス板に対してウエットエッチングが施されることにより、そのステンレス板に複数個の貫通穴２０４がミクロン精度で形成され、それにより、マスク２００が製作されている。
【００９２】
このマスク２００は、弾性屈曲性を有しており、後述のようにローラに巻き取られて収容されていても、そのローラから解放されれば、真っ直ぐな平面を成す原形状に復元する性質を有する。
【００９３】
図８に示すように、投影機構６６は、マスク２００を巻き取り可能に保持しつつ送るために、ハウジング２１０を備えている。このハウジング２１０に、供給具としての供給ローラ２２０と、案内具としてのガイドローラ２２２と、送り具としての送りローラ２２４と、巻き取り具としての巻き取りローラ２２６とが、互いに平行な各軸線を有する姿勢で支持されている。それら供給ローラ２２０，ガイドローラ２２２，送りローラ２２４および巻き取りローラ２２６の軸線はいずれも、マスク２００の幅方向に平行に延びている。
【００９４】
図９に示すように、マスク２００は、それの長さ方向における両端部においてそれぞれ、供給ローラ２２０と巻き取りローラ２２６とに結合されている。マスク２００は、さらに、それら供給ローラ２２０と巻き取りローラ２２６との間において、供給ローラ２２０寄りのガイドローラ２２２と、巻き取りローラ２２６寄りの送りローラ２２４とに支持されている。
【００９５】
３次元形状検出装置１０の不使用状態においては、マスク２００は、供給ローラ２２０と巻き取りローラ２２６とのうち主に供給ローラ２２０に巻き付けられており、マスク２００は、この状態で３次元形状検出装置１０内において収容される。すなわち、マスク２００のうちの未使用部分は、供給ローラ２２０に巻き付けられて収容されるのであり、供給ローラ２２０は、マスク２００のうちの未使用部分を屈曲状態において収容するローラなのである。
【００９６】
被写体Ｓの撮像が開始されると、マスク２００のうちの未使用部分は、マスクモータ６５の正回転により、供給ローラ２２０から剥がされて巻き取りローラ２２６に向かって供給される。その未使用部分が被写体Ｓの撮像に使用されると、使用済部分として、巻き取りローラ２２６に巻き取られて収容される。すなわち、巻き取りローラ２２６は、マスク２００のうちの使用済部分を屈曲状態において収容するローラなのである。
【００９７】
被写体Ｓの撮像が終了した時点においては、マスク２００は、供給ローラ２２０と巻き取りローラ２２６とのうち主に巻き取りローラ２２６に巻き付けられ、マスク２００は、この状態で３次元形状検出装置１０内において収容される。その後、次回の撮像に備えて、マスクモータ６５の逆回転により、マスク２００は、供給ローラ２２０と巻き取りローラ２２６とのうち主に供給ローラ２２０に巻き取られ、それにより、マスク２００は、供給ローラ２２０に巻き付けられた状態で、３次元形状検出装置１０内において収容される。
【００９８】
図９に示すように、それらガイドローラ２２２と送りローラ２２４との間に、ＬＥＤ６２からの入射光がマスク２００に照射される照射位置２２８が設定されている。マスク２００のうちそれらガイドローラ２２２と送りローラ２２４とによって両端を支持される部分が、前記設定された照射位置２２８を前記入射光に直角な方向に通過する直線部２３０を形成している。
【００９９】
図９に示すように、本実施形態においては、マスク２００のうち供給ローラ２２０とガイドローラ２２２とによって両端を支持される部分２３２（図９において直線部より左側の部分）と、送りローラ２２４と巻き取りローラ２２６とによって両端を支持される部分２３４（図９において直線部より右の部分）とがそれぞれ、直線部２３０に対して同じ側に傾斜させられている。その傾斜角度は、小さいほど、直線部２３０に対する部分２３２，２３４の弾性曲げに起因する直線部２３０の反りを軽減するために望ましい。一方、その傾斜角度は、大きいほど、マスク２００の長さ方向においてこの投影機構６６を小型化するために望ましい。
【０１００】
図９に示すように、マスク２００は、それの長さ方向における両端部においてそれぞれ、供給ローラ２２０と巻き取りローラ２２６とに結合されている。
【０１０１】
供給ローラ２２０は、ハウジング２１０に固定されたシャフト２４０と、そのシャフト２４０を同軸に取り囲むローラ部２４２とを含むように構成されている。ローラ部２４２は、シャフト２４０に対して同軸に相対回転可能に支持されている。このローラ部２４２にマスク２００の一端部が固定され、そのローラ部２４２の回転によってそのローラ部２４２の外周面にマスク２００が巻き付けられる。ローラ部２４２の両回転方向のうち、ローラ部２４２にマスク２００が巻き付けられる回転方向が戻り回転方向であり、ローラ部２４２からマスク２００が剥がされる回転方向が送り回転方向である。
【０１０２】
ローラ部２４２には、付勢部材としてのスプリング２４６が係合させられており、それにより、ローラ部２４２は、戻り回転方向に常時付勢されている。そのスプリング２４６は、例えば、図９に示すように、ローラ部２４２とシャフト２４０との間の半径方向隙間内において、可動部材としてのローラ部２４２と静止部材としてのシャフト２４０とに係合させられるように使用される。そのスプリング２４６は、例えば、図９に示すように、シャフト２４０の外周面に巻き付けられるリーフスプリングとして構成される。そのスプリング２４６の弾性力により、マスク２００にテンションがそのマスク２００の長さ方向に作用させられる。
【０１０３】
図８および図１０に示すように、マスク２００の両側縁部にはそれぞれ、マスク２００の長さ方向に並んだ複数個の送り穴２５０から成るパーフォレーション領域２５２が形成されている。ガイドローラ２２２および送りローラ２２４は、それら送り穴２５０に貫通してそれら送り穴に係合する歯２５４，２５６を備えている。本実施形態においては、図９に示すように、ガイドローラ２２２も送りローラ２２４も、複数個の歯２５４，２５６を、各外周面上において等間隔に並んで備えている。
【０１０４】
ガイドローラ２２２はフリーローラであるのに対し、送りローラ２２４は、マスクモータ６５によって駆動される駆動ローラである。図８に示すように、本実施形態においては、マスクモータ６５が送りローラ２２４に同軸に連結されており、送りローラ２２４がマスクモータ６５によって回転駆動される。送りローラ２２４の両回転方向のうち、マスク２００が供給ローラ２２０から剥がされる回転方向が送り回転方向であり、マスク２００が供給ローラ２２０に巻き付けられる回転方向が戻り回転方向である。
【０１０５】
図９に示すように、そのマスクモータ６５は、送りローラ２２４を回転させる機能と、それと同期して巻き取りローラ２２６を回転させる機能とを有している。そのため、マスクモータ６５は、マスク２００を送りつつ巻き取りローラ２２６によって巻き取られる正回転と、マスク２００を巻き取りローラ２２６から剥がしつつ供給ローラ２２０に供給する逆回転とを選択的に行わせられる。
【０１０６】
図８に示すように、本実施形態においては、送りローラ２２４およびマスクモータ６５と同軸かつ一体的に回転させられる回転体としての駆動プーリ２６０と、巻き取りローラ２２６と同軸かつ一体的に回転させられる回転体としての被動プーリ２６２とに、動力伝達体としてのベルト２６４が巻き掛けられている。このように構成された伝動機構２６６により、マスクモータ６５の回転力が巻き取りローラ２２６に伝達される。
【０１０７】
図８および図９に示すように、投影機構６６は、照射位置２２８においてマスクガイド２７０を備えている。そのマスクガイド２７０は、マスク２００のうちの直線部２３０の送りを案内するために設けられている。
【０１０８】
本実施形態においては、マスクガイド２７０が、マスク２００の直線部２３０をそれの厚さ方向における両側から挟む構造を有しており、具体的には、マスク２００の直線部２３０を隔てて互いに対向する一対のガイド板２７２，２７２を備えている。このマスクガイド２７０は、マスク２００をそれの長さ方向にスライド可能に保持する一方、マスク２００をそれの幅方向にはできる限り変位しないように保持する。
【０１０９】
各ガイド板２７２には、それを厚さ方向に貫通する窓２７６が形成されている。この窓２７６も、貫通穴２０４と同様に、空気開口として形成されている。ＬＥＤ６２からの入射光のうち窓２７６を通過する部分のみが、マスク２００に照射される。
【０１１０】
図１０に示すように、マスク２００には、各フレーム２０２ごとに、位置基準穴２８０とＩＤ穴領域２８２とが、マスク２００の幅方向に並んで形成されている。それら位置基準穴２８０およびＩＤ穴領域２８２は、いずれも貫通穴（空気開口）としてマスク２００に形成されている。位置基準穴２８０は、いずれかのフレームが照射位置２２８に位置していることを光学的に検出するために設けられている。一方、ＩＤ穴領域２８２は、照射位置２２８に位置しているフレームのＩＤすなわちパターン番号ＰＮを光学的に特定するために設けられている。
【０１１１】
本実施形態においては、ＩＤ穴領域２８２が、３ビットの情報によって８個のフレーム２０２すなわち８種類のパターン光をそれぞれ識別する。そのため、各フレーム２０２ごとのＩＤ穴領域２８２には、最大で３個のＩＤ穴２９０，２９２，２９４が形成される。
【０１１２】
図１１に示すように、投影機構６６は、位置基準穴２８０を光学的に検出するために、位置センサ３００を、マスク２００の幅方向位置に関して位置基準穴２８０と一致する位置に備えている。本実施形態においては、その位置センサ３００は、位置基準穴２８０を高い位置精度で検出するために、絞ったビームをマスク２００に照射するとともに、マスク２００からの反射光を絞って受光する。
【０１１３】
そのため、位置センサ３００は、発光素子としてのＬＥＤ３０２と、受光素子としてのフォトダイオード（以下、「ＰＤ」という。）３０４と、ＬＥＤ３０２のための集光素子としてのＬＥＤレンズ３０６と、ＰＤ３０４のための集光素子としてのＰＤレンズ３０８とを含んでいる。この位置センサ３００は、図７に示すように、処理部１６に電気的に接続されている。
【０１１４】
ＰＤ３０４は、マスク２００からの反射光の受光の有無に応じて変化するＰＤ信号を出力する。具体的には、ＰＤ信号は、図１２にタイミングチャートで表すように、いずれの位置基準穴２８０も位置センサ３００に対向しないために位置センサ３００からの光がマスク２００で反射して位置センサ３００に入射する場合に、ハイレベルを示す一方、いずれかの位置基準穴２８０が位置センサ３００に対向するために位置センサ３００からの光がその位置基準穴２８０を透過して位置センサ３００に入射しない場合に、ローレベルを示すように変化する。
【０１１５】
ＬＥＤレンズ３０６は、ＬＥＤ３０２からの光を集光してマスク２００に照射する集光機能を有する。ＰＤレンズ３０８は、マスク２００からの反射光を集光してＰＤ３０４に照射する集光機能を有する。それらＬＥＤレンズ３０６およびＰＤレンズ３０８により、位置基準穴２８０の位置ひいてはフレーム２０２の位置を高精度に検出することが可能となっている。
【０１１６】
図１１に示すように、投影機構６６は、さらに、ＩＤ穴２９０，２９２，２９４を光学的に検出するために、第１ないし第３のＩＤセンサ３１０，３１２，３１４を備えている。それら第１ないし第３のＩＤセンサ３１０，３１２，３１４はそれぞれ、マスク２００の幅方向位置に関して３個のＩＤ穴２９０，２９２，２９４と一致する位置に配置されている。いずれのＩＤセンサ３１０，３１２，３１４も、ＩＤ穴領域２８２に向けて光を照射する発光素子と、ＩＤ穴領域２８２からの反射光を受光する受光素子とを含んでいる。
【０１１７】
第１ないし第３のＩＤセンサ３１０，３１２，３１４の３個の受光素子はそれぞれ、ＩＤ穴領域２８２からの反射光の有無を表す信号を、信号Ｓ１ないしＳ３として出力する。それら信号Ｓ１ないしＳ３は、前述のＰＤ信号と同様に変化する。それら第１ないし第３のＩＤセンサも、位置センサ３００と同様に、図７に示すように、処理部１６に電気的に接続されている。
【０１１８】
図１２には、ＰＤ信号およびＳ１ないしＳ３信号が互いに同期して変化する様子の一例がタイミングチャートで表されている。処理部１６においては、後に詳述するが、マスクモータ６５の駆動によってマスク２００が送られている間にいずれかの位置基準穴２８０が位置センサ３００に対向したためにＰＤ信号がハイレベルからローレベルに変化した事象をトリガとして、第１ないし第３のＩＤセンサ３１０，３１２，３１４からそれぞれＳ１ないしＳ３信号がサンプリングされる。
【０１１９】
図１１に示すマスク２００の例においては、第１および第３のＩＤセンサ３１０，３１４がそれぞれ、ＩＤ穴２９０，２９４に対向するため、Ｓ１信号およびＳ３信号がそれぞれ、ハイレベルからローレベルに変化する一方、第２のＩＤセンサ３１２は、ＩＤ穴２９２に対向しないため、Ｓ２信号がハイレベルに維持される。それらサンプリングされたＳ１ないしＳ３信号のレベルの組合せにより、位置センサ３００によって検出されたフレーム２０２のＩＤすなわちパターン番号ＰＮが検出される。
【０１２０】
図７には、３次元形状検出装置１０の電気的な構成がブロック図で表されている。処理部１６はコンピュータ４００を主体として構成されており、そのコンピュータ４００は、ＣＰＵ４０２と、ＲＯＭ４０４と、ＲＡＭ４０６と、バス４０８とを含むように構成されている。
【０１２１】
ＣＰＵ４０２は、ＲＯＭ４０４に記憶されたプログラムをＲＡＭ４０６を利用しつつ実行することにより、レリーズボタン４０の操作状態の検出、撮像部１４からの画像データの取込み、その取り込まれた画像データの転送および格納、モード切替スイッチ４２の操作状態の検出等の各種処理を行う。
【０１２２】
ＲＯＭ４０４には、カメラ制御プログラム４０４ａと、撮像処理プログラム４０４ｂと、輝度画像生成プログラム４０４ｃと、コード画像生成プログラム４０４ｄと、コード境界抽出プログラム４０４ｅと、最大輝度画像生成プログラム４０４ｆと、コード境界の統合プログラム４０４ｇと、コード境界の選択プログラム４０４ｈと、レンズ収差補正プログラム４０４ｉと、三角測量演算プログラム４０４ｊと、マスクモータ制御プログラム４０４ｋと、テーブルモータ制御プログラム４０４ｌとが格納されている。
【０１２３】
カメラ制御プログラム４０４ａは、３次元形状検出装置１０全体の制御を実行するために実行され、その制御には、図１３にフローチャートで概念的に表されているメイン処理が含まれる。
【０１２４】
撮像処理プログラム４０４ｂは、被写体Ｓの３次元形状を検出するために複数種類のパターン光の各々を時系列に被写体Ｓに投影し、各パターン光が投影されている状態の被写体Ｓを複数の異なる露出条件で撮像してパターン光有画像を取得し、さらに、パターン光が投影されていない被写体Ｓを撮像してパターン光無画像を取得するために実行される。
【０１２５】
輝度画像生成プログラム４０４ｃは、撮像処理プログラム４０４ｂの実行によって被写体Ｓについて取得された各画素のＲＧＢ値に基づき、複数枚のパターン光有画像にそれぞれ対応する複数枚の輝度画像を各露出条件毎に生成するために実行される。すなわち、ＣＰＵ４０２が輝度画像生成プログラム４０４ｃを実行することによって、輝度画像生成手段として、撮像部１４によって撮像される各パターン光有画像から各画素の輝度を算出した複数の輝度画像を複数の異なる露出条件に対してそれぞれ生成するのである。
【０１２６】
本実施形態においては、同じ被写体Ｓに対して複数種類のパターン光が時系列に順次投影され、各パターン光が投影されるごとに撮像部１４の露出条件を変えながら被写体Ｓが順次撮像される。そのようにして撮像された複数の異なる露出条件での複数枚のパターン光有画像の各々について各画素のＲＧＢ値が取得され、その結果、パターン光の種類と同数の輝度画像が各露出条件毎に生成される。
【０１２７】
コード画像生成プログラム４０４ｄは、輝度画像生成プログラム４０４ｃの実行によって生成された複数枚の輝度画像それぞれに対する閾値処理により生成される２値化画像から、各画素毎に空間コードが割り当てられたコード画像を各露出条件毎に生成するために実行される。すなわち、ＣＰＵ４０２がコード画像生成プログラム４０４ｄを実行することによって、コード画像生成手段として、複数の輝度画像に対して所定の閾値による閾値処理を行って各画素毎に空間コードを割り当てた、各露出条件毎のコード画像を生成するのである。
【０１２８】
概略的に説明するに、このコード画像生成プログラム４０４ｄが実行されると、複数種類のパターン光のうちパターンライン間の間隔が最も狭いものが投影された被写体Ｓの輝度画像におけるパターンライン間の間隔が周期として取得され、その周期の輝度画像全体における分布が周期分布として取得される。
【０１２９】
このコード画像生成プログラム４０４ｄが実行されると、さらに、その取得された周期分布に従ってサイズが変化する可変窓が各パターン光ごとの輝度画像にローカルに設定されることにより、前記可変窓を用いたフィルタ処理により輝度画像全体に対して閾値がローカルに算出されて設定される。そのようにして設定された閾値の分布を表す閾値画像と各パターン光ごとの輝度画像との関係から、各パターン光ごとに２値化画像が生成される。この２値化画像は各露出条件ごとに生成される。
【０１３０】
可変窓を用いたフィルタ処理により輝度画像全体に対して閾値をローカルに算出する技術は、本出願人の特願２００４−２８５７３６号明細書に詳細に開示されており、その明細書を参照することによってその明細書の内容を本明細書に引用する。
【０１３１】
コード境界抽出プログラム４０４ｅは、コード画像生成プログラム４０４ｄの実行によって生成された露出条件毎の各コード画像と、輝度画像生成プログラム４０４ｃの実行によって生成された露出条件毎の各輝度画像とを利用することにより、空間コードの境界位置であるコードの境界座標をサブピクセル精度で各コード画像毎に抽出するために実行される。すなわち、ＣＰＵ４０２がコード境界抽出プログラム４０４ｅを実行することによって、コード境界抽出手段として、空間コードのコード境界位置をコード画像から抽出する処理を各露出条件のコード画像それぞれに対して行うのである。
【０１３２】
最大輝度画像生成プログラム４０４ｆは、輝度画像生成プログラム４０４ｃの実行によって生成された複数の輝度画像から各露出条件ごとにそれぞれ各画素の最大輝度値を検出して最大輝度画像を生成するために実行される。すなわち、ＣＰＵ４０２が最大輝度画像生成プログラム４０４ｆを実行することによって、最大輝度画像生成手段として、各露出条件毎に、撮像部１４によって撮像される各撮像画像から各画素の最大輝度値を検出して最大輝度画像を生成するのである。なお、上述の輝度画像生成手段と、コード画像生成手段と、コード境界抽出手段とにより、撮像部１４で撮像したパターン光投光画像からパターン光の軌跡を抽出するパターン光軌跡抽出手段が構成される。
【０１３３】
コード境界の統合プログラム４０４ｇ及びコード境界の選択プログラム４０４ｈは、コード境界抽出プログラム４０４ｅの実行により抽出された各露出条件毎の複数のコード境界位置と最大輝度画像生成プログラム４０４ｆの実行により生成された最大輝度画像とに基づいて、被写体Ｓの３次元形状を算出するための一つのコード境界位置を決定するために実行される。すなわち、ＣＰＵ４０２がコード境界の統合プログラム４０４ｇ及びコード境界の選択プログラム４０４ｈを実行することによって、コード境界統合手段（パターン軌跡統合手段）として、各露出条件毎のコード境界位置（パターン軌跡位置）に基づいて、被写体Ｓの３次元形状を算出するための一つのコード境界位置（パターン軌跡位置）を決定する。このコード境界の統合プログラム４０４ｇ及びコード境界の選択プログラム４０４ｈは、図２４，図２５のフローチャートで概念的に表されている。
【０１３４】
レンズ収差補正プログラム４０４ｉは、コード境界の統合プログラム４０４ｇ及びコード境界の選択プログラム４０４ｈの実行によって求められたコードの境界位置に対して、撮像光学系３０の収差補正を行うために実行される。
【０１３５】
三角測量演算プログラム４０４ｊは、レンズ収差補正プログラム４０４ｉの実行によって収差補正が行われたコードの境界座標から、その境界座標に関する実空間の３次元座標を演算するために実行される。
【０１３６】
マスクモータ制御プログラム４０４ｋは、複数種類のパターン光を順次被写体Ｓに投影すべくマスクモータ６５を制御するために実行される。このマスクモータ制御プログラム４０４ｋは、図１７にフローチャートで概念的に表されている。
【０１３７】
テーブルモータ制御プログラム４０４ｌは、回転テーブル１８４を被写体Ｓと共に割り出し回転させるべくテーブルモータ１９４を制御するために実行される。このテーブルモータ制御プログラム４０４ｌは、他の処理と共に図１５にフローチャートで概念的に表されている。
【０１３８】
本実施形態においては、前述の一連のパターン光の被写体Ｓへの投影および被写体Ｓの撮像が、被写体Ｓの回転位置が等間隔で割り出されるごとに行われる。具体的には、被写体Ｓの回転位置が９０度ずつ間欠的に割り出され、各割り出し位置において、一連のパターン光の投影および被写体Ｓの撮像が複数の異なる露出条件に対して行われる。その結果、被写体Ｓの外面の全体領域が４つの部分領域に分割され、各部分領域ごとに３次元形状情報が取得される。それら３次元形状情報について、互いに重複する部分を除去する処理が施されて互いに結合（ステッチ）されることにより、被写体Ｓに対応する１つの３次元形状情報が３次元ステッチ形状として生成される。
【０１３９】
さらに、本実施形態においては、その生成された３次元ステッチ形状に、同じ被写体Ｓについて計測された表面色情報がマッピングされることにより、ステッチテクスチャ画像が生成される。これにより、被写体Ｓについての一連の３次元入力処理が終了する。
【０１４０】
図７に示すように、ＲＡＭ４０６には、パターン光有画像格納部４０６ａと、パターン光無画像格納部４０６ｂと、輝度画像格納部４０６ｃと、コード画像格納部４０６ｄと、コード境界座標格納部４０６ｅと、収差補正座標格納部４０６ｇと、３次元座標格納部４０６ｈと、周期分布格納部４０６ｐと、閾値画像格納部４０６ｑと、２値化画像格納部４０６ｒと、３次元ステッチ形状格納部４０６ｓと、ステッチテクスチャ画像格納部４０６ｔと、システムパラメータ格納部４０６ｕと、最大輝度画像格納部４０６ｖと、露出別パラメータテーブル格納部４０６ｗと、ワーキングエリア４１０とがそれぞれ記憶領域として割り当てられている。
【０１４１】
パターン光有画像格納部４０６ａは、撮像処理プログラム４０４ｂの実行によって撮像されたパターン光有画像を表すパターン光有画像データを格納する。パターン光無画像格納部４０６ｂは、撮像処理プログラム４０４ｂの実行によって撮像されたパターン光無画像を表すパターン光無画像データを格納する。
【０１４２】
輝度画像格納部４０６ｃは、輝度画像生成プログラム４０４ｃの実行によって生成された輝度画像を表すデータを格納する。コード画像格納部４０６ｄは、コード画像生成プログラム４０４ｄの実行によって生成されたコード画像を表すデータを格納する。コード境界座標格納部４０６ｅは、コード境界抽出プログラム４０４ｅの実行によってサブピクセル精度で抽出された各コードの境界座標を表すデータを格納する。
【０１４３】
収差補正座標格納部４０６ｇは、レンズ収差補正プログラム４０４ｉの実行によって収差補正が行われたコードの境界座標を表すデータを格納する。３次元座標格納部４０６ｈは、三角測量演算プログラム４０４ｊの実行によって演算された実空間の３次元座標を表すデータを格納する。
【０１４４】
周期分布格納部４０６ｐ、閾値画像格納部４０６ｑおよび２値化画像格納部４０６ｒは、コード画像生成プログラム４０４ｄの実行によって取得された周期分布、閾値画像および２値化画像を表すデータをそれぞれ格納する。
【０１４５】
３次元ステッチ形状格納部４０６ｓは、前述の３次元ステッチ形状を格納し、ステッチテクスチャ画像格納部４０６ｔは、前述のステッチテクスチャ画像を格納する。また、最大輝度画像格納部４０６ｖは、前述の最大輝度画像を格納する。また、システムパラメータ格納部４０６ｕは、前述のシステムパラメータを格納する。
【０１４６】
露出別パラメータテーブル格納部４０６ｗは、露出条件情報格納部として、撮像部１４におけるＣＣＤ７０の露出を設定するための異なる複数の露出条件の情報を露出別パラメータテーブルとして格納する。この露出別パラメータテーブルには、撮像部１４のＣＣＤ７０の露光時間を切り替えるための複数の露光時間パラメータを有しており、撮像処理プログラム４０４ｂの実行に伴って、これら複数の露光時間パラメータが順次撮像部１４に設定され、ＣＣＤ７０の露光時間が切り替えられる。本実施形態においては、ＣＣＤ７０の露光時間が露出条件となり、露光時間によって露出条件を切り替えられる構成について説明するが、これに限られるものではなく、撮像部１４の露出が光学系部材によって設定されるものにおいては、シャッターの絞りの度合いを変更することによって、露出条件を切り替えるようにしてもよい。
【０１４７】
ワーキングエリア４１０は、ＣＰＵ４０２がその動作のために一時的に使用するデータを格納する。
【０１４８】
ここで、システムパラメータ格納部４０６ｕに格納するシステムパラメータについて説明する。
【０１４９】
本実施形態における３次元形状検出装置１０では、３次元空間の１点を、平面と直線の交点、２本の直線の交点として決定するアクティブ型３次元画像計測法を用いる。すなわち、所定の位置にある投影部から投影されるパターン光と、所定の位置にある撮像部からの視線とを、それぞれ平面と直線として捉え、投影部及び撮像部による結像光学系をその位置及び姿勢などを含むシステムパラメータによってモデル化し、このシステムパラメータを用いて３次元形状を計測する。システムパラメータは、カメラパラメータ及びプロジェクタパラメータとから構成されるパメラメータであり、以下具体的に説明する。
【０１５０】
カメラパラメータは、以下の３×４のパラメータで表される。このパラメータには、撮像部に関して、その位置、姿勢、画角などのデータが含まれることになる。言い換えれば、撮像部からの視線を表す。
【０１５１】
【数１】
2007271530.tif 000003
このカメラパラメータにより、実空間３次元座標（Ｘ，Ｙ，Ｚ）と撮像部における歪曲収差補正後の撮像座標系の座標（ccdcx，ccdcy）との関係は、以下の式のように表すことができる。
【０１５２】
【数２】
2007271530.tif 000004
また、プロジェクタパラメータは、以下の２×４のパラメータで表される。このパラメータには、投影部に関して、その位置、姿勢などのデータが含まれることになる。言い換えれば、パターン光の平面を表す。
【０１５３】
【数３】
2007271530.tif 000005
このプロジェクタパラメータにより、実空間３次元座標（Ｘ，Ｙ，Ｚ）と空間コード境界値codeとの関係は、以下の式にように表すことができる。
【０１５４】
【数４】
2007271530.tif 000006
以上のカメラパラメータ及びプロジェクタパラメータを元に、以下の式によって被写体Ｓの実空間３次元座標Ｖ＝（Ｘ，Ｙ，Ｚ）を求めることができる。
【０１５５】
【数５】
2007271530.tif 000007
以上のようなシステムパラメータ、すなわちカメラパラメータ及びプロジェクタパラメータがシステムパラメータ格納部４０６ｕに格納されることになる。
【０１５６】
ここで、図１３を参照することにより、カメラ制御プログラム４０４ａを説明する。このカメラ制御プログラム４０４ａがコンピュータ４００によって実行されることにより、前述のメイン処理が実行される。
【０１５７】
このメイン処理においては、まず、ステップＳ１０１（以下、単に「Ｓ１０１」で表す。他のステップについても同じとする。）において、バッテリ７４を含む電源がＯＮされる。次に、Ｓ１０２において、処理部１６、周辺インタフェイス等が初期化される。
【０１５８】
続いて、Ｓ１０３において、モード切替スイッチ４２の操作状態を判別するためにキースキャンが行われ、その後、Ｓ１０４において、モード切替スイッチ４２の操作によって３Ｄモードが選択されたか否かが判定される。その後、詳述するＳ１０６の立体画像処理が実行され、続いて、Ｓ１０３に戻る。
【０１５９】
これに対し、今回は、モード切替スイッチ４２の操作によって３Ｄモードが選択されなかったと仮定すれば、Ｓ１０４の判定がＮＯとなり、Ｓ１０７において、モード切替スイッチ４２の操作によってオフモードが選択されたか否かが判定される。今回は、モード切替スイッチ４２の操作によってオフモードが選択されたと仮定すれば、判定がＹＥＳとなり、直ちに今回のメイン処理が終了するが、今回は、モード切替スイッチ４２の操作によってオフモードが選択されなかったと仮定すれば、判定がＮＯとなり、Ｓ１０３に戻る。
【０１６０】
図１４には、図１３におけるＳ１０６が立体画像処理ルーチンとしてフローチャートで概念的に表されている。この立体画像処理ルーチンの実行により、被写体Ｓの３次元形状を立体画像として検出し、表示する立体画像処理が実行される。この立体画像処理においては、さらに、同じ被写体Ｓの表面色も検出される。それら立体画像の検出結果と表面色の検出結果とが位置に関連付けて組み合わされたものが３次元色形状検出結果である。
【０１６１】
この立体画像処理においては、まず、Ｓ１００１において、ファインダ画像、すなわち、撮像光学系３０を通して見える範囲の画像と同じ画像がモニタＬＣＤ４４に表示される。よって、ユーザは、モニタＬＣＤ４４に表示された画像を見ることにより、実際の撮像前に、撮像画像（撮像範囲）を確認することができる。
【０１６２】
次に、Ｓ１００２において、レリーズボタン４０の操作状態がスキャンされ、その後、Ｓ１００３において、そのスキャン結果に基づき、レリーズボタン４０が半押し状態にあるか否かが判定される。半押し状態にあれば、判定がＹＥＳとなり、Ｓ１００４において、オートフォーカス（ＡＦ）および自動露出（ＡＥ）機能が起動し、それにより、ピント、絞りおよびシャッタスピードが調節される。レリーズボタン４０が半押し状態になければ、Ｓ１００３の判定がＮＯとなり、Ｓ１０１１に移行する。なお、Ｓ１００４において起動した自動露出（ＡＥ）機能によって調整された露出条件は、ワーキングエリア４１０に一時的に設定され、後述するパターン光無画像を撮像する際に用いられる。
【０１６３】
Ｓ１００４の実行後、Ｓ１００５において、再度、レリーズボタン４０の操作状態がスキャンされ、その後、Ｓ１００６において、そのスキャン結果に基づき、レリーズボタン４０が全押し状態にあるか否かが判定される。レリーズボタン４０が全押し状態になければ、このＳ１００６の判定がＮＯとなってＳ１００２に戻る。
【０１６４】
レリーズボタン４０が半押し状態から全押し状態に移行すれば、Ｓ１００６の判定がＹＥＳとなり、Ｓ１００７において、後述の３次元色形状検出処理が実行され、それにより、被写体Ｓの３次元形状および表面色が検出される。
【０１６５】
概略的に説明するに、その３次元色形状検出処理により、被写体Ｓについて３次元色形状検出結果が生成される。ここに、３次元色形状検出結果とは、後述の空間コード画像において検出される複数の空間コード境界座標を３次元座標に変換した結果取得される頂点座標の集合体であって、各頂点ごとに色形状情報とポリゴン情報とが互いに関連付けられたものを意味する。色形状情報は、実空間座標とＲＧＢ値との組合せを表す情報である。ポリゴン情報は、複数個の頂点のうち、被写体Ｓを３次元的に表面する立体を構成するために互いに連結されるべき複数の頂点の組合せを表す情報である。
【０１６６】
その後、Ｓ１００８において、その３次元色形状検出結果が外部メモリ７８に格納され、続いて、Ｓ１００９において、その３次元色形状検出結果が３次元コンピュータグラフィック画像としてモニタＬＣＤ４４に表示される。
【０１６７】
その後、Ｓ１０１０において、図１３におけるＳ１０３と同様にしてキースキャンが行われる。続いて、Ｓ１０１１において、モード切替スイッチ４２の操作状態に変化が無いか否かが判定される。変化が無ければ、Ｓ１０１１の判定がＹＥＳとなり、Ｓ１００１に戻るが、変化が有れば、Ｓ１０１１の判定がＮＯとなり、今回の立体画像処理が終了する。
【０１６８】
図１４のＳ１００７において実行される３次元色形状検出処理においては、空間コード化法を用いて被写体Ｓの３次元形状が検出される。
【０１６９】
図１５には、図１４におけるＳ１００７が３次元色形状検出処理ルーチンとしてフローチャートで概念的に表されている。この３次元色形状検出処理ルーチンには、テーブルモータ制御プログラム４０４ｌが組み込まれており、このテーブルモータ制御プログラム４０４ｌは、図１５におけるＳ１２０１およびＳ１２２１ないしＳ１２２３を含むように構成されている。
【０１７０】
この３次元色形状検出処理ルーチンにおいては、まず、Ｓ１２０１において、回転テーブル１８４の回転位相ＰＨが０に初期化される。本実施形態においては、回転テーブル１８４が１回転する間に４回停止させられるため、回転テーブル１８４には４つの回転位相ＰＨが離散的に設定される。具体的には、回転位相ＰＨは、初期の回転位相ＰＨを表す「０」と、次の回転位相ＰＨを表す「１」と、次の回転位相ＰＨを表す「２」と、最後の回転位相ＰＨを表す「３」とに離散的に変化させられる。
【０１７１】
次に、Ｓ１２１０において、撮像処理プログラム４０４ｂが実行されることにより、今回の回転位相ＰＨについて撮像処理が実行される。この撮像処理においては、投影部１２からストライプ状のパターン光が時系列的に被写体Ｓに投影される。さらに、複数種類のパターン光が投影されている被写体Ｓをそれぞれ複数の異なる露出条件で撮像した各露出条件毎の複数枚のパターン光有画像と、パターン光が投影されていない同じ被写体Ｓを撮像した１枚のパターン光無画像とが取得される。このＳ１２１０は、後に図１６を参照して詳述する。
【０１７２】
撮像処理が終了すると、Ｓ１２２０において、今回の回転位相ＰＨについて３次元計測処理が実行される。この３次元計測処理が実行されると、上述の撮像処理によって取得された各露出条件毎の複数枚のパターン光有画像と１枚のパターン光無画像とが利用されて、実際に被写体Ｓの３次元形状が計測される。このＳ１２２０は、後に図２２を参照して詳述する。
【０１７３】
この３次元計測処理が終了すると、Ｓ１２２１において、次回の撮像に備えて、回転位相ＰＨが１だけインクリメントされる。続いて、Ｓ１２２２において、回転位相ＰＨの現在値が４より大きいか否か、すなわち、被写体Ｓについての一連の撮像が既に終了しているか否かが判定される。
【０１７４】
今回は、回転位相ＰＨの現在値が４より大きくはないと仮定すれば、そのＳ１２２２の判定がＮＯとなり、Ｓ１２２３において、回転テーブル１８４を時計方向に９０度回転させるのに必要な駆動信号がテーブルモータ１９４に対して出力される。その結果、回転テーブル１８４が時計方向に９０度回転させられ、それにより、被写体Ｓが、前回の撮像時とは異なる部分領域において測定ヘッドＭＨに対向させられる。その後、Ｓ１２１０およびＳ１２２０が実行され、それにより、次の回転位相ＰＨについて前述の撮像処理および３次元計測処理が行われる。
【０１７５】
Ｓ１２１０ないしＳ１２２３のループが必要回数実行された結果、Ｓ１２２２の判定がＹＥＳとなれば、その後、Ｓ１２３０において、被写体Ｓについて計測された３次元形状と表面色とを組み合わせることにより、３次元色形状検出結果が生成される。このＳ１２３０は、後に図２７を参照して詳述する。
【０１７６】
この３次元色形状検出結果が生成されると、今回の３次元色形状検出処理が終了する。
【０１７７】
ここで、図１６を参照することにより、図１５におけるＳ１２１０を詳述する。図１６には、そのＳ１２１０が撮像処理プログラム４０４ｂとしてフローチャートで概念的に表されている。
【０１７８】
この撮像処理プログラム４０４ｂにおいては、まず、Ｓ２００１において、パターン光を形成するために使用されるマスクパターンの番号を表すパターン番号ＰＮが０に初期化される。続いて、Ｓ２００２において、そのパターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さいか否かが判定される。その最大値ＰＮｍａｘは、使用されるマスクパターンの合計数に応じて決定される。例えば、８種類のマスクパターンが使用される場合には、最大値ＰＮｍａｘが８に設定される。
【０１７９】
今回は、パターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さいと仮定すれば、Ｓ２００２の判定がＹＥＳとなり、続いて、Ｓ２００２ａにおいて、マスクモータ制御プログラム４０４ｋが実行される。
【０１８０】
このマスクモータ制御プログラム４０４ｋにおいては、図１７に示すように、まず、Ｓ２２０１において、マスクモータ６５を一定速度で回転駆動するための信号がマスクモータドライバ８６に供給される。これにより、マスク２００が供給ローラ２２０から照射位置２２８に供給される向きにマスク２００が送られる。
【０１８１】
次に、Ｓ２２０２において、位置センサ３００からＰＤ信号が読み取られる。続いて、Ｓ２２０３において、その読み取られたＰＤ信号がローレベルを示すか否かが判定される。すなわち、位置センサ３００がいずれかの位置基準穴２８０（今回は、先頭の位置基準穴２８０）が検出されたか否かが判定されるのである。
【０１８２】
今回は、ＰＤ信号がハイレベルを示すと仮定すれば、Ｓ２２０３の判定がＮＯとなり、Ｓ２２０１に戻り、マスクモータ６５の駆動およびＰＤ信号の読み取りが繰り返される。Ｓ２２０１ないしＳ２２０３の実行が何回か繰り返された結果、ＰＤ信号がハイレベルからローレベルに変化したと仮定すれば、Ｓ２２０３の判定がＹＥＳとなる。
【０１８３】
その後、Ｓ２２０４において、第１ないし第３のＩＤセンサ３１０ないし３１４からＳ１ないしＳ３信号がそれぞれ読み取られる。続いて、Ｓ２２０５において、それら読み取られたＳ１ないしＳ３信号のレベルの組合せ（３ビットの情報）がパターン番号ＰＮの現在値を表すか否かが判定される。すなわち、マスク２００における複数のフレーム２０２のうち現在、照射位置２２８に位置しているものすなわち現在フレーム２０２のパターン番号ＰＮが、パターン番号ＰＮの現在値と一致するか否かが判定されるのである。
【０１８４】
今回は、現在フレーム２０２のパターン番号ＰＮがパターン番号ＰＮの現在値と一致しないと仮定すると、Ｓ２２０５の判定がＮＯとなり、Ｓ２２０１に戻る。これに対し、今回は、現在フレーム２０２のパターン番号ＰＮがパターン番号ＰＮの現在値と一致すると仮定すると、Ｓ２２０５の判定がＹＥＳとなる。本実施形態においては、マスク２００において複数のフレーム２０２が並ぶ順序と同じ順序に、パターン番号ＰＮが１ずつ増加させられるようになっている。すなわち、マスク２００がシーケンシャルに送られるようになっているのであり、よって、Ｓ２２０５の判定は、３次元形状検出装置１０に異常が存在しない限り、ＹＥＳとなる。
【０１８５】
Ｓ２２０５の判定がＹＥＳとなると、その後、Ｓ２２０６において、マスクモータ６５が停止させられ、それにより、現在フレーム２０２が照射位置２２８に停止させられる。その結果、現在フレーム２０２の位置決めが完了する。
【０１８６】
以上で、このマスクモータ制御プログラム４０４ｋの一回の実行が終了する。
【０１８７】
なお付言するに、本実施形態においては、マスクモータ６５の間欠的駆動によるマスク２００の間欠的送りにより、複数のフレーム２０２が順次、照射位置２２８に位置決めされるように、マスクモータ６５が制御される。これに対し、マスクモータ６５の連続的駆動によるマスク２００の連続的送りにより、複数のフレーム２０２が順次、照射位置２２８に位置決めされるように、マスクモータ６５が制御される態様で本発明を実施することが可能である。
【０１８８】
ところで、前述のように、本実施形態においては、マスク２００において各貫通穴２０４の長さ方向がマスク２００の送り方向に一致させられている。よって、マスク２００の移動中でも、いずれかのフレーム２０２が照射位置２２８を通過する際に、同じフレーム２０２によって同じパターン光が生成されて被写体Ｓに投影される時間を確保することが容易である。
【０１８９】
したがって、マスク２００が一時的に停止しないにもかかわらず、同じパターン光を事実上、静止画像として被写体Ｓに投影することが容易である。このことは、マスク２００の連続的送りにより、複数のフレーム２０２を順次、照射位置２２８に確実に位置決めするために好都合である。
【０１９０】
本実施形態においては、マスクモータ制御プログラム４０４ｋの一回の実行が終了すると、図１６におけるＳ２００３において、使用される複数種類のマスクパターンのうち、パターン番号ＰＮの現在値と等しい番号が付されたＰＮ番目のマスクパターンの投影が開始される。
【０１９１】
続いて、Ｓ２００４において、ＰＮ番目のマスクパターンを被写体Ｓに投影するための投影処理が行われる。図１８には、このＳ２００４の詳細が投影処理サブルーチンとしてフローチャートで概念的に表されている。この投影処理サブルーチンの実行により、ＰＮ番目のマスクパターンを有するパターン光を投影部１２から被写体Ｓに投影する投影処理が投影機構６６との共同作用によって実行される。
【０１９２】
この投影処理においては、まず、Ｓ３００４において、光源ドライバ８４が駆動され、続いて、Ｓ３００５において、その光源ドライバ８４からの電気信号によってＬＥＤ６２が発光する。以上で、今回の投影処理が終了する。
【０１９３】
ＬＥＤ６２から発光した光は、光源レンズ６４を経て投影機構６６に到達する。その投影機構６６においては、マスク２００の現在フレーム２０２の開口パターンに応じた空間変調が施され、その結果、投影機構６６への入射光がパターン光に変換されて出力される。その投影機構６６から出力されるパターン光は、投影光学系３２を経て被写体Ｓに投影画像として投影される。
【０１９４】
以上のようにして、ＰＮ番目のマスクパターンによって形成されるＰＮ番目のパターン光が被写体Ｓに投影されると、続いて、図１６におけるＳ２００５において、そのＰＮ番目のパターン光が投影されている被写体Ｓが撮像部１４によって撮像される。
【０１９５】
その撮像により、ＰＮ番目のパターン光が投影されている被写体Ｓを撮像したＰＮ番目のパターン光有画像が複数の異なる露出条件それぞれについて取得される。その取得されたパターン光有画像は、対応するパターン番号ＰＮに関連付けてパターン光有画像格納部４０６ａに格納される。
【０１９６】
ここで、撮像部１４における露出条件について、図１９を参照して詳説する。図１９に示すグラフは、撮像部１４から出力される画像信号の出力輝度と被写体Ｓ表面の実際の輝度との関係を示したものであり、これらの関係が撮像部１４における露出条件それぞれの特性が示されている。なお、この図１９におけるグラフは、横軸（被写体Ｓの表面輝度）を対数として模式的に表したものである。
【０１９７】
本実施形態においては、撮像部１４の露出条件として、露出条件［０］〜露出条件［iEvNumMax-1］の７つの露出条件を有している。露出条件［０］が最も低い露出（最低露出）であり、露出条件［１］，［２］，・・，［iEvNumMax−１］の順に露出が大きくなる。露出条件［iEvNumMax-1］が最も高い露出（最高露出）である。一つの露出条件のダイナミックレンジは、図１９に示すように狭い範囲となっているが、これら７つの露出条件を切り替えることによって撮像部１４で撮像できる被写体Ｓの表面輝度は広い範囲のものとなる。
【０１９８】
また、各露出条件において検出することができる被写体Ｓの表面輝度は、隣接する露出条件同士でそのダイナミックレンジが重複するようにしている。たとえば、露出条件［３］のダイナミックレンジ（図１９におけるｂ１〜ｂ２の範囲）となり、露出条件［４］のダイナミックレンジ（図１９におけるｃ１〜ｃ２の範囲）や露出条件［２］のダイナミックレンジ（図１９におけるｄ１〜ｄ２の範囲）と重複する。したがって、被写体Ｓの所定範囲の表面輝度（図１９におけるａ１〜ａ２）は、最低露出と最高露出の間におけるいずれかの露出条件のダイナミックレンジ内となる。なお、ここでは、各撮像条件に関し、それぞれのダイナミックレンジよりも狭い範囲（cMin0[iEvNum]〜cMax[iEvNum]）を後述のコード境界座標を選択するための有効輝度範囲とする。
【０１９９】
ところで、撮像部１４の露出条件の設定は、露出別パラメータテーブル格納部４０６ｗに格納された複数の露光時間パラメータのうち一つの露光時間パラメータを撮像部１４に設定することによって行われる。すなわち、ＣＰＵ４０２が露出別パラメータテーブル格納部４０６ｗから露光時間パラメータを取り出し、撮像部１４に送信し、撮像部１４側において露光時間パラメータに応じた露光時間で撮像を行うように構成している。なお、図２０に示すように、露出別パラメータテーブル格納部４０６ｗには、露出条件、露出設定インデックスiEvNumがそれぞれ対応して格納されており、露出条件［０］〜露出条件［iEvNumMax-1］に対してそれぞれ露出時間パラメータEv[0]〜Ev[iEvNumMax-1]が対応する。
【０２００】
なお、本実施形態においては、露出条件［０］〜露出条件［iEvNumMax-1］の７つの露出条件で撮像部１４の露光時間を変更できることとしているが、ダイナミックレンジが大きい撮像部１４である場合には、この露出条件が７つ有る必要はない。
【０２０１】
ここで、図２１を参照することにより、図１６におけるＳ２００５の処理を詳述する。図２１には、そのＳ２００５がパターン光画像撮像処理サブルーチンとしてフローチャートで概念的に表されている。このサブルーチンは、ＣＰＵ４０２による撮像処理プログラム４０４ｂの実行による処理である。
【０２０２】
このサブルーチンにおいては、まず、Ｓ２０２０において、露出設定インデックスiEvNumが「０」にリセットされる。
【０２０３】
次に、Ｓ２０２１において、露出設定インデックスiEvNumが「iEvNumMax」よりも小さいか否かが判定される。今回は、露出設定インデックスiEvNumが「iEvNumMax」よりも小さい「０」であるので、そのＳ２０２１の判定がＹＥＳとなり、Ｓ２０２２において、撮像部１４に対して露出設定インデックスiEvNumに対応する露出条件［iEvNum］を設定する。
【０２０４】
たとえば、露出設定インデックスiEvNumが「０」であるとき、露出別パラメータテーブル格納部４０６ｗから複数の露出条件に対応する露出時間パラメータEv[0]〜Ev[iEvNumMax-1]のうち、露出時間パラメータEv[0]が取り出される。このように取り出された露出時間パラメータEv[0]は、撮像部１４に設定される。露出時間パラメータEv[0]が撮像部１４に設定されると、撮像部１４は露出条件[0]による撮像が可能となる。
【０２０５】
次に、S２０２３において、Ｎ番目のパターン光が投影されている被写体Ｓが、露出時間パラメータに応じた露出時間で撮像部１４によって撮像される。このように撮像されたパターン光有画像は、パターン光有画像格納部４０６ａに格納される。
【０２０６】
撮像部１４による撮像が終了すると、S２０２４において、露出設定インデックスiEvNumが１だけインクリメントされる。続いて、Ｓ２０２１に戻り、露出設定インデックスiEvNumが「iEvNumMax」よりも小さいか否かが判定される。今回は、露出設定インデックスiEvNumが「iEvNumMax」よりも小さいと仮定すれば、そのＳ２０２１の判定がＹＥＳとなり、Ｓ２０２２に移行する。
【０２０７】
Ｓ２０２３における撮像処理の実行が露出設定インデックスiEvNumMaxの数と同数回繰り返された結果、露出設定インデックスiEvNum値が「iEvNumMax」以上になると、Ｓ２０２１の判定がＮＯとなり、撮像処理プログラム４０４ｂによるパターン光画像撮像処理が終了する。
【０２０８】
以上の撮像が終了すると、Ｓ２００６において、ＰＮ番目のパターン光の投影が終了し、続いて、Ｓ２００７において、次のパターン光を投影すべく、パターン番号ＰＮが１だけインクリメントされ、その後、Ｓ２００２に戻る。
【０２０９】
Ｓ２００２ないしＳ２００７の実行がパターン光の種類の数と同数回繰り返された結果、パターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さくはない値になると、Ｓ２００２の判定がＮＯとなり、今回の撮像処理が終了する。したがって、一回の撮像処理により、各露出条件に対して最大値ＰＮｍａｘと同数枚のパターン光有画像が取得されることになる。
【０２１０】
続いて、Ｓ２００８において、フラッシュモードが選択されているか否かが判定される。フラッシュモードが選択されていれば、その判定がＹＥＳとなり、Ｓ２００９において、フラッシュ２６が発光させられるが、フラッシュモードが選択されていなければ、Ｓ２００８の判定がＮＯとなり、Ｓ２００９がスキップされる。いずれにしても、その後、Ｓ２０１０において、被写体Ｓが撮像される。
【０２１１】
この撮像は、被写体Ｓの表面色を計測することを目的として、投影部１２からパターン光を被写体Ｓに投影することなく、行われる。その結果、被写体Ｓについて１枚のパターン光無画像が取得される。その取得されたパターン光無画像はパターン光無画像格納部４０６ｂに格納される。なお、このときの撮像部１４における露出条件は、Ｓ１００４にて自動露出機能により取得した露出条件とするが、複数の露出条件のうちの中間の露出条件としてもよい。
【０２１２】
続いて、Ｓ２０１１において、マスク２００のうちの長さ方向における先頭部分が照射位置２２８に位置するようにマスク２００の長さ方向位置を初期化すべくマスクモータ６５が駆動される。
【０２１３】
以上で、この撮像処理プログラム４０４ｂの一回の実行が終了する。
【０２１４】
本実施形態においては、被写体Ｓからの入射光によるＣＣＤ７０の露光後に、その露光を反映した信号のＣＣＤ７０からの取り出しが行われる。１回の露光に１回の信号取り出しが対応しており、それら露光と信号取り出しとが互いに共同して１回の個別撮像処理を構成する。
【０２１５】
本実施形態においては、同じ被写体Ｓについて３次元形状情報の取得と表面色情報の取得とが連続的に、かつ、それらの順で行われる。
【０２１６】
被写体Ｓの３次元形状情報を取得するために、まず、露出別パラメータテーブル格納部４０６ｗから複数の露出条件[0]〜[iEvNumMax-1]のうち最低露出条件[0]の露出時間パラメータが順次取り出されて、それぞれの露出条件での撮像が行われる。このような複数の露出条件に対する撮像処理は、順次被写体Ｓに投影される８種類のパターン光（パターン番号ＰＮ＝０〜７）ごとに行われる。すなわち、被写体Ｓの３次元形状情報を取得するために、その被写体Ｓに対する個別撮像処理が順次、各露出条件毎に８回、合計８×iEvNumMax回行われるのである。
【０２１７】
ここで、図２２を参照することにより、図１５におけるＳ１２２０を詳述する。図２２には、そのＳ１２２０が３次元計測処理サブルーチンとしてフローチャートで概念的に表されている。
【０２１８】
この３次元計測処理サブルーチンにおいては、まず、Ｓ４００１において、ＣＰＵ４０２によるカメラ制御プログラム４０４ａの実行により、露出設定インデックスiEvNumが「０」にリセットされる。
【０２１９】
次に、Ｓ４００２において、露出設定インデックスiEvNumが「iEvNumMax」よりも小さいか否かが判定される。今回は、露出設定インデックスiEvNumが「iEvNumMax」よりも小さい「０」であるので、そのＳ４００２の判定がＹＥＳとなり、Ｓ４００３において、輝度画像生成プログラム４０４ｃの実行により、露出設定インデックスiEvNumに対応する露出条件[iEvNum]で撮像された複数枚のパターン光有画像に基づき、露出設定インデックスiEvNumに対応する露出条件[iEvNum]での輝度画像が生成される。
【０２２０】
このＳ４００３においては、輝度値が、ＹＣｂＣｒ空間におけるＹ値として定義されており、各画素のＲＧＢ値より、
Ｙ＝０．２９８９・Ｒ＋０．５８６６・Ｇ＋０．１１４５・Ｂ
なる式を用いて計算される。各画素についてＹ値を求めることにより、露出設定インデックスiEvNumに対応する露出条件[iEvNum]での複数枚のパターン光有画像にそれぞれ対応する複数枚の輝度画像が生成される。それら生成された輝度画像は、露出設定インデックスiEvNum及びパターン番号ＰＮに関連付けされて輝度画像格納部４０６ｃに格納される。ただし、輝度値の算出に用いられる式は、上記式に限定されるものではなく、他の式に適宜変更することが可能である。
【０２２１】
次に、Ｓ４００４において、ＣＰＵ４０２によって最大輝度画像生成プログラム４０４ｆが実行される。この最大輝度画像生成プログラム４０４ｆが実行されると、輝度画像格納部４０６ｃに格納された露出設定インデックスiEvNumに対応する露出条件[iEvNum]での複数枚の輝度画像から最大輝度画像が生成される。その生成された最大輝度画像は露出設定インデックスiEvNumに関連付けされて最大輝度画像格納部４０６ｖに格納される。
【０２２２】
この最大輝度画像の生成は、露出設定インデックスiEvNumに対応する露出条件での複数枚の輝度画像の各画素毎に最大輝度値を集めることによって行われるものである。すなわち、ＣＣＤ７０の結像面に設定された２次元座標系であるＣＣＤ座標系ｃｃｄｘ−ｃｃｄｙの各座標位置毎に、露出設定インデックスiEvNumに対応する露出条件[iEvNum]での複数枚の輝度画像のうち最も高い輝度値を抽出することによって最大輝度画像を生成するのである。
【０２２３】
次に、Ｓ４００５において、ＣＰＵ４０２によってコード画像生成プログラム４０４ｄが実行される。このコード画像生成プログラム４０４ｄが実行されると、露出設定インデックスiEvNumに対応する露出条件[iEvNum]での複数枚の輝度画像の組み合わせにより、各画素ごとに空間コードが割り当てられたコード画像が生成される。そのコード画像は、輝度画像格納部４０６ｃに格納された露出設定インデックスiEvNumに対応する露出条件[iEvNum]での複数種類のパターン光有画像に関する輝度画像に対する各画素ごとに輝度閾値が割り当てられた閾値画像との比較による２値化処理（閾値処理）の結果画像（２値化画像）を使って生成される。その生成されたコード画像は露出設定インデックスiEvNumに関連付けされてコード画像格納部４０６ｄに格納される。
【０２２４】
図２３には、このコード画像生成プログラム４０４ｄの詳細がフローチャートで概念的に表されている。このコード画像生成プログラム４０４ｄにおいて採用されている技術、特にS５００１からS５００４にわたる閾値画像の生成技術は、本出願人の特願２００４−２８５７３６号明細書に詳細に記載されているため、その特許出願を参照することにより、その特許出願の内容を本明細書に引用する。
【０２２５】
以下、このコード画像生成プログラム４０４ｄを時系列的に説明するが、それに先立ち、原理的に説明する。
【０２２６】
本実施形態においては、同じ被写体Ｓ（３次元対象物）につき、複数種類のパターン光のもとにそれぞれ複数枚の輝度画像が生成される。それらパターン光はいずれも、明部、すなわち、幅を有する明るいパターンラインと、暗部、すなわち、幅を有する暗いパターンラインとが交互に一定の周期で繰り返すように形成される。それらパターン光は、その周期に関して互いに異なっており、それぞれ、パターン番号ＰＮを有するパターン光と称される。それらパターン光のうち最も短い周期を有するパターン光が、パターン番号ＰＮが０であるパターン光であり、最も長い周期を有するパターン光が、パターン番号ＰＮが（ＰＮｍａｘ−１）であるパターン光である。
【０２２７】
いずれの輝度画像も、対応するパターン光のもとに取得されるため、明部としての明るいパターンラインと、暗部としての暗いパターンラインとが交互に並んで成るパターン画像として形成される。パターンライン間の間隔すなわち周期は、３次元形状検出装置１０と被写体Ｓとの間における相対的な幾何学的関係（位置および向きに関する関係）に依存するため、各輝度画像内のすべての位置において一定であるとは限らない。複数種類のパターン光のもとにそれぞれ取得される複数枚の輝度画像は、対応するパターン光のパターン番号ＰＮを用いて特定される。
【０２２８】
本実施形態においては、それら複数枚の輝度画像のうちのいずれかが代表パターン画像に選択される。その代表パターン画像の一典型例は、複数種類のパターン光のうちパターンライン周期が最小であるものに対応する輝度画像であり、これは、パターン番号ＰＮが０である輝度画像である。
【０２２９】
パターン光が投影された被写体Ｓを撮像した輝度画像においては、輝度値が画素列の方向において空間的にかつ周期的に変化する。その周期的変化を表すグラフにそれの複数個の下ピーク点（最低輝度点）において接する包絡線が存在する。この包絡線は、同じ被写体Ｓを無照射状態で撮像した輝度画像における輝度値、すなわち、被写体Ｓの背景光の輝度値の空間的変化を表している。このような包絡線が存在する輝度画像については、各画素の輝度値を閾値処理によって正確に２値化するためには、閾値を画素位置に応じて変化させることが望ましい。すなわち、輝度画像の実際の輝度値変化をトラッキングすることによって閾値を適応的に変化させることが望ましいのである。
【０２３０】
このような知見に基づき、本実施形態においては、輝度画像に対してフィルタ処理を行うことによって閾値を算出するフィルタ窓がローカルに設定され、フィルタ処理されることによりその位置に適した閾値が、輝度画像に対してローカルに設定される。輝度画像のうちのあるローカル位置に窓が設定されれば、輝度画像を構成する複数本のパターンラインのうちその窓内に存在する画素の輝度値が取り出されて参照されることにより、そのあるローカル位置に対応する閾値が設定される。
【０２３１】
本実施形態において使用される窓は、方形窓である。この方形窓を採用する場合には、その方形窓内に存在する複数本のパターンラインを構成する画素の輝度値が取り出され、それら輝度値に対して同一の重み係数が用いられて閾値が算出される。その重み係数により、方形窓の窓関数が定義される。
【０２３２】
さらに、方形窓を採用する場合には、その方形窓の、パターンラインが延びるライン方向におけるライン方向サイズに応じて、その方形窓内においてライン方向に存在する画素の数を可変とすることができる。一方、その方形窓の、複数本のパターンラインが列を成して並ぶ列方向における列方向サイズに応じて、その方形窓内において列方向に存在するパターンラインの数も画素の数も可変とすることができる。
【０２３３】
したがって、方形窓を採用する場合には、その方形窓の列方向サイズにより、輝度画像に窓を設定することによってその輝度画像から算出される閾値が変化することになる。よって、その閾値を適応的に変化させることが必要である場合には、方形窓の列方向サイズを適応的に変化させればよい。
【０２３４】
本実施形態においては、方形窓として構成される窓のサイズが、その窓内に存在するパターンラインの数がそれらパターンラインの間隔すなわち周期（例えば、明るいパターンラインが繰り返される周期）の整数倍であるように設定することが望ましい。すなわち、窓内に、明るいパターンラインと暗いパターンラインとが同数ずつ存在するように窓のサイズを設定することが望ましいのである。このように設定すれば、窓内に存在する複数本のパターンラインの輝度値の平均値を算出することにより、望ましい閾値を高精度取得することができる。
【０２３５】
しかしながら、同じ輝度画像上であっても、パターンラインの周期は場所によって異なる可能性がある。そのため、窓のサイズを固定した場合には、窓内に存在するパターンラインの数が場所によって変動してしまい、閾値の設定精度が低下してしまう。
【０２３６】
本実施形態においては、複数枚の輝度画像のうち、パターンラインの周期が最小であるパターン光のもとに撮像されたもの、すなわち、パターン番号ＰＮが０である輝度画像が代表パターン画像として選択される。さらに、本実施形態においては、その代表パターン画像に対してローカルに設定される窓ＶＷが、それのサイズが可変である可変窓として構成されている。それにより、その可変窓ＶＷのサイズが、代表パターン画像の実際のパターンライン周期に適応して変化させられる。
【０２３７】
したがって、本実施形態によれば、代表パターン画像におけるパターンライン周期が列方向位置に応じて変動しても、それに追従するように可変窓ＶＷのサイズが変更され、その結果、パターンライン周期の変動にもかかわらず、可変窓ＶＷ内に存在する明部と暗部のパターンラインの数が一定に維持される。本実施形態においては、代表パターン画像に対して可変窓ＶＷが設定される各ローカル位置ごとに閾値ＴＨが取得される。各ローカル位置ごとの閾値ＴＨは、各ローカル位置に最適なサイズを有する可変窓ＶＷのもとに精度よく取得されることになる。
【０２３８】
また、明部と暗部のパターンラインの数が一定に維持されるような可変窓ＶＷのサイズは、パターン番号ＰＮが０である輝度画像において最小となる。したがって、パターン番号ＰＮが０である輝度画像を代表パターン画像として選択することにより、最小の可変窓ＶＷのサイズが可能になり、可変窓ＶＷを用いた後のフィルタ処理の計算負担を抑えることが可能になる。
【０２３９】
本実施形態においては、その可変窓ＶＷが、サイズが可変である方形窓として構成されている。その可変窓ＶＷのサイズは、代表パターン画像の列方向には可変であるが、ライン方向には固定であるように設定されている。
【０２４０】
本実施形態においては、その可変窓ＶＷのサイズ、すなわち、代表パターン画像の列方向におけるサイズが、その代表パターン画像の実際のパターンライン周期を適応的に反映するように設定される。そのため、可変窓ＶＷのサイズを設定するために、代表パターン画像の実際のパターンライン周期分布が事前に判明していることが必要である。
【０２４１】
よって、本実施形態においては、可変窓ＶＷのサイズの設定に先立ち、サイズが固定された固定窓が代表パターン画像に対して設定される。その設定された固定窓によって捕捉される複数個の連続画素が複数個の注目画素として選択され、それら選択された注目画素の輝度値に基づき、代表パターン画像の実際のパターンライン周期分布が取得される。
【０２４２】
本実施形態においては、さらに、代表パターン画像における複数個の注目画素の輝度値に対してＦＦＴ(Fast Fourier Transform：高速フーリエ変換）処理が施され、それにより、代表パターン画像の列方向において輝度値変化の周波数成分のそれぞれについて強度（例えば、パワースペクトル）が取得される。ここに、「周波数成分」は、１個の固定窓によって捕捉される複数個の注目画素を列方向に辿った場合に、輝度値の変化が反復される反復回数を意味する。
【０２４３】
本実施形態においては、代表パターン画像において列方向に連続的に並んだ複数個の連続画素のそれぞれが順次注目画素に選定され、その選定された各注目画素ごとにパターンライン周期が、代表パターン画像の輝度値分布に基づいて取得される。取得されたパターンライン周期を参照して、閾値画像生成のためのフィルタ処理で用いる可変窓VWのサイズを決定する。
【０２４４】
以上、このコード画像生成プログラム４０４ｄを原理的に説明したが、以下、図２３を参照することにより、時系列的に説明する。
【０２４５】
このコード画像生成プログラム４０４ｄにおいては、まず、Ｓ５００１において、露出設定インデックスiEvNumに対応する露出条件[iEvNum]の輝度画像のうち、パターン番号ＰＮが０であるパターン光が投影された被写体Ｓが撮像された輝度画像が輝度画像格納部４０６ｃから、代表パターン画像として読み込まれる。
【０２４６】
次に、Ｓ５００２において、その代表パターン画像につき、前記読み込まれた輝度画像に基づき、前述のＦＦＴ変換によるアプローチにより、代表パターン画像において列方向に連続的に並んだ各画素ごとにパターンライン周期が演算される。演算された複数個のパターンライン周期は各画素（各列方向画素位置）に関連付けて周期分布格納部４０６ｐに格納される。
【０２４７】
続いて、Ｓ５００３において、演算された複数個のパターンライン周期に基づき、可変窓ＶＷの特性がローカルに設定される。本実施形態においては、可変窓ＶＷのライン方向サイズは、その可変窓ＶＷが設定される代表パターン画像上の位置にかかわらず、変化しないように設定されるのに対し、可変窓ＶＷの列方向サイズは、各列方向画素位置に関連付けて演算されたパターンライン周期の整数倍に相当するように設定される。
【０２４８】
その後、Ｓ５００４において、代表パターン画像に対して可変窓ＶＷが、ライン方向と列方向とに沿って平面的に、かつ、各画素に関連付けて設定される。それにより、各画素ごとに、可変窓ＶＷ内に存在する複数個の画素の輝度値の平均値がローカルな閾値として演算される。このＳ５００４においては、さらに、演算された閾値が各画素に割り当てられた閾値画像が生成される。生成された閾値画像は露出設定インデックスiEvNumに関連付けされて閾値画像格納部４０６ｑに格納される。
【０２４９】
続いて、Ｓ５００５において、パターン番号ＰＮが０に初期化され、その後、Ｓ５００６において、パターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さいか否かが判定される。今回は、パターン番号ＰＮの現在値が０であるため、判定がＮＯとなり、Ｓ５００７に移行する。
【０２５０】
このＳ５００７においては、パターン番号ＰＮの現在値と等しいパターン番号ＰＮが割り当てられ、かつ露出設定インデックスiEvNumに対応する露出条件[iEvNum]の輝度画像の輝度値と、前記生成された露出設定インデックスiEvNumに対応する露出条件[iEvNum]の閾値画像の閾値とが、各画素ごとに互いに比較される。その比較結果は、各画素ごとに２値化画像に反映される。具体的には、輝度画像の輝度値が閾値より大きい場合には、「１」を表すデータが、２値化画像のうち対応する画素位置に関連付けて２値化画像格納部４０６ｒに格納され、一方、輝度画像の輝度値が閾値より大きくはない場合には、「０」を表すデータが、２値化画像のうち対応する画素位置に関連付けて２値化画像格納部４０６ｒに格納される。
【０２５１】
その後、Ｓ５００８において、パターン番号ＰＮが１だけインクリメントされる。続いて、Ｓ５００６に戻り、パターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さいか否かが判定される。今回も、最大値ＰＮｍａｘより小さい場合には、判定がＮＯとなり、Ｓ５００７に移行する。
【０２５２】
Ｓ５００６ないしＳ５００８の実行がパターン光の種類の数と同数回繰り返された結果、パターン番号ＰＮの現在値が最大値ＰＮｍａｘより小さくはない値になると、Ｓ５００６の判定がＹＥＳとなり、Ｓ５００９に移行する。
【０２５３】
このＳ５００９においては、各画素ごとに、最大値ＰＮｍａｘと同数枚の２値化画像から画素値（「１」または「０」）が、露出設定インデックスiEvNumに対応する露出条件[iEvNum]で、かつパターン番号ＰＮが０である輝度画像に対応する２値化画像から、パターン番号ＰＮが（ＰＮｍａｘ−１）である輝度画像に対応する２値化画像に至る順序に従って抽出され、最下位ビットＬＳＭから最上位ビットＭＳＢに至る順序に従って並んだ空間コードが生成される。各画素ごとの空間コードのビット数は、最大値ＰＮｍａｘと同数である。各画素ごとに空間コードが生成されることにより、今回の被写体Ｓに対応する空間コード画像が生成される。生成された空間コードは、各画素位置及び露出設定インデックスiEvNumに関連付けられて空間コード格納部１１６ｄに格納される。例えば、最大値ＰＮｍａｘが８である場合には、生成される空間コードは０から２５５までの範囲内の値を有する。
【０２５４】
以上で、このコード画像生成プログラム４０４ｄの一回の実行が終了する。
【０２５５】
その後、図２２におけるＳ４００６において、コード境界抽出プログラム４０４ｅの実行により、コード境界座標検出処理が実施される。前述の空間コード化法によるコード化は、各画素単位で行われるため、実際のパターン光における明暗の境界線と、前記生成された露出設定インデックスiEvNumに対応する露出条件[iEvNum]でのコード画像における空間コードの境界線（ある空間コードが割り当てられた領域と別の空間コードが割り当てられた領域との間の境界線）との間にサブピクセル精度の誤差が生ずる。そのため、このコード境界座標検出処理は、空間コードの境界座標値をサブピクセル精度で検出することを目的として実施される。空間コードの境界座標値をサブピクセル精度で検出する処理の詳細については、本出願人の特願２００４−１０５４２６１号明細書に詳細に開示されている。
【０２５６】
このコード境界座標検出処理は、コード画像を参照することにより検出した境界座標値（画素境界でしか検出できないので整数精度）付近の輝度画像を参照して輝度の変化を多項式で近似し、同時に境界座標値付近の閾値の平均値を算出する。そして、輝度の変化を近似した多項式と、付近の閾値の平均値の交点を算出（小数精度：サブピクセル精度）することにより、空間コードの境界座標値をサブピクセル精度で検出するのである。
【０２５７】
ここで、各パターン光のライン方向と交差する離散的な基準線の位置をＣＣＤ座標系において２５５本設定すると、最大値ＰＮｍａｘが８（空間コードを２５６有するため、境界は２５５）である場合には、図２２におけるＳ４００３（コード境界抽出プログラム４０４ｅの実行）により、最大約６万５千の空間コードの境界座標値が検出される。すなわち、空間コードのコード境界数２５５は第１境界位置インデックスIcodeで定義され、第１境界位置インデックスIcode=0〜254が割り当てられる。また、第１境界位置インデックスIcode=0〜254ごとの各コード境界を構成する画素単位を第２境界位置インデックスＩccdxと定義し、第２境界位置インデックスIccdx=0〜254が割り当てられる。したがって、空間コードのコード境界座標の数は、第１境界位置インデックス数に第２境界位置インデックス数を積算した値であり、約６万５千となる。
【０２５８】
検出されたコード境界座標値はコード境界座標格納部４０６ｅに格納される。このコード境界座標値は、ＣＣＤ７０の結像面に設定された２次元座標系であるＣＣＤ座標系ｃｃｄｘ−ｃｃｄｙにおいて定義される。
【０２５９】
その後、Ｓ４００７において、露出設定インデックスiEvNumが１だけインクリメントされる。続いて、Ｓ４００２に戻り、露出設定インデックスiEvNumが「iEvNumMax」よりも小さいか否かが判定される。今回は、露出設定インデックスiEvNumが「iEvNumMax」以上であると仮定すれば、そのＳ４００２の判定がＹＥＳとなり、Ｓ４００３に移行する。
【０２６０】
Ｓ４００３ないしＳ４００６の実行が露出設定インデックスiEvNumの数と同数回繰り返された結果、露出設定インデックスiEvNum値がiEvNumMax以上の値となると、Ｓ４００２の判定がＮＯとなり、Ｓ４００８に移行する。
【０２６１】
以上で、このコード境界抽出プログラム４０４ｅの一回の実行が終了する。
【０２６２】
その後、図２４におけるＳ４００８において、ＣＰＵ４０２によるコード境界の統合プログラム４０４ｇの実行により、コード境界位置の統合処理が実施される。
【０２６３】
ここで、図２４を参照することにより、図２２におけるＳ４００８を詳述する。図２４には、そのＳ４００８がコード境界の統合サブルーチンとしてフローチャートで概念的に表されている。
【０２６４】
まず、Ｓ５１００において、このコード境界の統合処理によって統合されるコード境界座標（以下、「統合コード境界座標」とする。）を保存する領域（以下、「統合コード境界座標格納領域」とする。）をコード境界座標格納部４０６ｅに確保する。この統合コード境界座標格納領域は、図２６に示すように、各コード境界位置（Icode,Iccdx）がそれぞれのコード境界位置毎に格納可能に構成されている。
【０２６５】
次に、Ｓ５１０１において、第１境界位置インデックスIcodeが「０」に設定されて初期化される。続いて、Ｓ５１０２において、第１境界位置インデックスIcodeが「IcodeMax」よりも小さくなっているかが判定される。今回は、第１境界位置インデックスIcodeが「IcodeMax」よりも小さい「０」であるので、そのＳ５１０２の判定がＹＥＳとなり、Ｓ５１０３において、第２境界位置インデックスIccdxが「０」に設定されて初期化される。すなわち、第２境界位置インデックスIccdxが「０」に設定される。このように設定される第１境界位置インデックスIcode及び第２境界位置インデックスIccdxはワーキングエリア４１０に記憶される。後述するＳ５１０７やＳ５１０８においてインクリメントされた場合には、その都度ワーキングエリア４１０に記憶した第１境界位置インデックスIcode及び第２境界位置インデックスIccdxが更新される。
【０２６６】
その後、Ｓ５１０４において、第２境界位置インデックスIccdxが「IccdxMax」よりも小さい値となっているかが判定される。今回は、第２境界位置インデックスIccdxが「IccdxMax」よりも小さい「０」であるので、そのＳ５１０４の判定がＹＥＳとなり、Ｓ５１０５において、後述で詳説するコード境界の選択処理が行われる。コード境界の選択処理によって選択されたコード境界座標は、Ｓ５１０６において、上述の統合コード境界座標格納領域に格納される。
【０２６７】
その後、Ｓ５１０７において、第２境界位置インデックスIccdxが１だけインクリメントされる。続いて、Ｓ５１０４に戻り、第２境界位置インデックスIccdxが「IccdxMax」よりも小さい値となっているか否かが判定される。今回は、第２境界位置インデックスIccdxが「IccdxMax」よりも小さい値でないと仮定すれば、そのＳ５１０４の判定がＮＯとなり、Ｓ５１０８に移行する。
【０２６８】
Ｓ５１０８に移行すると、Ｓ５１０８において、第１境界位置インデックスIcodeが１だけインクリメントされる。続いて、Ｓ５１０２に戻り、第１境界位置インデックスIcodeが「IcodeMax」よりも小さい値となっているか否かが判定される。今回は、第１境界位置インデックスIcodeが「IcodeMax」よりも小さい値でないと仮定すれば、そのＳ５１０２の判定がＮＯとなり、コード境界の統合処理を終了する。
【０２６９】
ここで、図２５を参照することにより、図２４におけるＳ５１０５を詳述する。図２５には、そのＳ１１０５がコード境界の選択プログラム４０４ｈとしてフローチャートで概念的に表されている。
【０２７０】
まず、Ｓ５２００において、露出設定インデックスiEvNum値を初期化する。すなわち、露出設定インデックスiEvNumを「０」に設定する。本フローチャートで処理中の露出設定インデックスiEvNumの直前で処理されたの露出設定インデックスiEvNum−１を前回露出設定インデックスiEvNumＢとし、この前回露出設定インデックスiEvNumＢを「−１」に設定する。
【０２７１】
次に、Ｓ５２０１において、露出設定インデックスiEvNumが「iEvNumMax」よりも小さい値となっているか否かが判定される。今回は、露出設定インデックスiEvNumが「iEvNumMax」よりも小さい「０」であるので、そのＳ５２０１の判定がＹＥＳとなり、Ｓ５２０２において露出設定インデックスiEvNumに対応する撮像条件のコード境界座標（ccdx、ccdy）が取得される。ここで取得されるコード境界座標は、ワーキングエリア４１０に記憶した第１境界位置インデックスIcode及び第２境界位置インデックスIccdxから決定されるコード境界座標である。
【０２７２】
続いて、Ｓ５２０３にて、取得したコード境界座標（ccdx、ccdy）が不定であるか否かが判定される。ここで、コード境界座標（ccdx、ccdy）が不定であるとは、Ｓ４００６のコード境界抽出処理にて、コード境界座標の検出ができなかったことを意味する。
【０２７３】
Ｓ５２０３にて、取得したコード境界座標（ccdx、ccdy）が不定ではないと判定されると、そのＳ５２０３の判定がＮＯとなり、Ｓ５２０４において、取得したコード境界座標（ccdx、ccdy）付近の平均輝度値（AveY）を取得する。ここで、コード境界座標（ccdx、ccdy）付近の平均輝度値（AveY）とは、Ｓ４００４にて生成した最大輝度画像に基づき、このＳ５２０４において算出されるものである。たとえば、コード境界座標（ccdx、ccdy）と、このコード境界座標（ccdx、ccdy）の周囲の８つの座標（ccdx-1、ccdy-1），（ccdx-1、ccdy），（ccdx-1、ccdy+1），（ccdx、ccdy-1），（ccdx-1、ccdy+1），（ccdx+1、ccdy+1），（ccdx+1、ccdy+1），（ccdx-1、ccdy+1）にそれぞれ対応する輝度値を最大輝度画像から取り出し、これらの輝度値の平均を平均輝度値（AveY）として取得する。
【０２７４】
次に、Ｓ５２０５において、露出設定インデックスiEvNumが「iEvNumMax-1」となっているか否かが判定される。今回は、露出設定インデックスiEvNumが「０」であるので、そのＳ５２０５の判定がＮＯとなり、Ｓ５２０６において、さらに露出設定インデックスiEvNumが「０」となっているか否かが判定される。今回は、露出設定インデックスiEvNumが「０」であるので、そのＳ５２０６の判定がＹＥＳとなり、Ｓ５２１４において、平均輝度値（AveY）がcMin1[0]以上かつcMax[0]以下であるか否かが判定される。ここで、cMin1[0]以上かつcMax[0]以下とは、露出条件［０］における有効輝度範囲である（図１９参照）。
【０２７５】
平均輝度値（AveY）がcMin1[0]以上かつcMax[0]以下であるとき、Ｓ５２１４の判定がＹＥＳとなり、後述するＳ５２５２の処理に移行する。これに対して、平均輝度値（AveY）がcMin1[0]以上かつcMax[0]以下ではないとき、Ｓ５２１４の判定がＮＯとなり、さらに、Ｓ５２１５において、平均輝度値（AveY）がcMax[0]よりも大きいか否かが判定される。
【０２７６】
平均輝度値（AveY）がcMax[0]よりも大きいとき、Ｓ５２１５の判定がＹＥＳとなり、後述するＳ５２５１の処理に移行する。これに対して、平均輝度値（AveY）がcMax[0]よりも大きくないとき、Ｓ５２１５の判定がＮＯとなり、Ｓ５２３０にて、露出設定インデックスiEvNumを前回露出設定インデックスiEvNumB、平均輝度値（AveY）を前回平均輝度値（AveYB）、コード境界座標（ccdx、ccdy）を前回コード境界座標（ccdxB、ccdyB）としてそれぞれワーキングエリア４１０に一時保存データとして記憶し、保存する。その後、Ｓ５２３１において、露出設定インデックスiEvNumを１だけインクリメントして、Ｓ５２０１からの処理を繰り返す。
【０２７７】
また、Ｓ５２０６において、露出設定インデックスiEvNumが「０」となっていないとすると、そのＳ５２０６の判定がＮＯとなり、Ｓ５２０７において、平均輝度値（AveY）がcMin1[iEvNum]以上かつcMax[iEvNum]以下であるか否かが判定される。今回、平均輝度値（AveY）がcMin1[iEvNum]以上かつcMax[iEvNum]以下であると仮定すると、そのＳ５２０７の判定がＹＥＳとなり、後述するＳ５２５２の処理に移行する。
【０２７８】
これに対して、平均輝度値（AveY）がcMin1[iEvNum]以上かつcMax[iEvNum]以下ではないとき、そのＳ５２０７の判定がＮＯとなり、Ｓ５２１６において、平均輝度値（AveY）がcMax[iEvNum]より大きいか否かが判定される。今回、平均輝度値（AveY）がcMax[iEvNum]より大きくないと仮定すると、そのＳ５２１６の判定がＮＯとなり、その後、上述のＳ５２３０及びＳ５２３１の処理が行われた後、Ｓ５２０１からの処理を繰り返す。一方、平均輝度値（AveY）がcMax[iEvNum]より大きいとき、そのＳ５２１６の判定がＹＥＳとなり、後述するＳ５２１２の処理に移行する。
【０２７９】
また、Ｓ５２０５において、露出設定インデックスiEvNumが「iEvNumMax-1」となっていると仮定すると、そのＳ５２０５の判定がＹＥＳとなり、Ｓ５２１０において、平均輝度値（AveY）がcMin0[iEvNum]以上かつcMax[iEvNum]以下であるか否かが判定される。今回、平均輝度値（AveY）がcMin0[iEvNum]以上かつcMax[iEvNum]以下であると仮定すると、そのＳ５２１０の判定がＹＥＳとなり、後述のＳ５２５２に移行する。
【０２８０】
Ｓ５２１０において、平均輝度値（AveY）がcMin0[iEvNum]以上かつcMax[iEvNum]以下ではないと仮定すると、Ｓ５２１０の判定がＮＯとなり、さらに、Ｓ５２１１において、平均輝度値（AveY）がcMax[iEvNum]よりも大きく、かつ露出設定インデックスiEvNumが「０」でないか否かが判定される。今回、平均輝度値（AveY）がcMax[iEvNum]よりも大きく、かつ露出設定インデックスiEvNumが「０」であるとき、Ｓ５２１１の判定がＹＥＳとなり、さらに、Ｓ５２１２において、前回露出設定インデックスiEvNumBが「−１」でないか否かが判定される。今回、前回露出設定インデックスiEvNumBが「−１」でないと仮定すると、Ｓ５２１２の判定がＹＥＳとなり、さらに、Ｓ５２１３において、前回平均輝度値（AveYB）がcMin0[iEvNumB]以上かつcMax[iEvNumB]以下であるか否かが判定される。
【０２８１】
Ｓ５２１３において前回平均輝度値（AveYB）がcMin0[iEvNumB]以上かつcMax[iEvNumB]以下であると仮定するとＳ５２１３の判定がＹＥＳとなり、後述するＳ５２５０の処理に移行する。これに対して、前回平均輝度値（AveYB）がcMin0[iEvNumB]以上かつcMax[iEvNumB]以下ではないと仮定するとＳ５２１３の判定がＮＯとなり、後述するＳ５２５１の処理に移行する。
【０２８２】
また、Ｓ５２１１において、平均輝度値（AveY）がcMax[iEvNum]よりも大きくない、或いは露出設定インデックスiEvNumが「０」であると仮定するとＳ５２１１の判定がＮＯとなり、後述するＳ５２５１の処理に移行する。また、Ｓ５２１２において、前回露出設定インデックスiEvNumBが「−１」であると仮定するとＳ５２１２の判定がＮＯとなり、後述するＳ５２５１の処理に移行する。
【０２８３】
Ｓ５２０３において、コード境界座標（ccdx、ccdy）が不定であると判定されると、そのＳ５２０３の判定がＹＥＳとなり、さらに、Ｓ５２２０において、露出設定インデックスiEvNumが「iEvNumMax-1」となっているか否かが判定される。今回、露出設定インデックスiEvNumが「iEvNumMax-1」となっていると仮定すると、Ｓ５２２０の判定がＹＥＳとなり、さらに、Ｓ５２２１において、前回露出設定インデックスiEvNumBが「−１」となっているか否かが判定される。
【０２８４】
また、Ｓ５２２０において、露出設定インデックスiEvNumが「iEvNumMax-1」となっていないと仮定すると、Ｓ５２２０の判定がＮＯとなり、上述のＳ５２３１の処理が行われて、Ｓ５２０１からの処理が繰り返される。
【０２８５】
また、Ｓ５２２１において、前回露出設定インデックスiEvNumBが「−１」となっていないと仮定すると、そのＳ５２２１の判定がＹＥＳとなり、後述するＳ５２５０の処理に移行する。これに対して、前回露出設定インデックスiEvNumBが「−１」となっていると仮定すると、そのＳ５２２１の判定がＮＯとなり、後述するＳ５２５１の処理に移行する。
【０２８６】
このコード境界の選択処理は、次のＳ５２５０〜Ｓ５２５２のいずれかの処理を行ってから終了する。
【０２８７】
Ｓ５２５０においては、前回コード境界座標（ccdxB、ccdyB）をコード境界位置（Icode,Iccdx）の確定データとして決定し、コード境界座標格納部４０６ｅの統合コード境界座標格納領域に格納する。すなわち、前回平均輝度値AveBがcMin0[iEvNumB]以上かつcMax[iEvNumB]以下であるときには、前回のコード境界座標（ccdxB、ccdyB）をコード境界位置（Icode,Iccdx）の確定データとして決定する。
【０２８８】
Ｓ５２５１においては、コード境界位置（Icode,Iccdx）を不定として、コード境界座標格納部４０６ｅの統合コード境界座標格納領域に格納する。
【０２８９】
Ｓ５２５２においては、コード境界座標（ccdx、ccdy）をコード境界位置（Icode,Iccdx）の確定データとして決定し、コード境界座標格納部４０６ｅの統合コード境界座標格納領域に格納する。
【０２９０】
以上のように、コード境界の選択処理は、複数の露出条件におけるコード境界位置（Icode,Iccdx）の中から一つのコード境界位置（Icode,Iccdx）を選択する処理を、コード境界位置（Icode,Iccdx）ごとに行い、複数の露出条件のコード境界を一つのコード境界に統合するものである。より具体的には、コード境界位置（Icode,Iccdx）ごとに、最低露出条件[０]のコード境界座標から最高露出条件[iEvNumMax-1]のコード境界座標にかけて、順次コード境界座標に対応する輝度値が有効輝度範囲に入っているかを判定していき、有効輝度範囲に入る最初の露出条件のコード境界座標を選択するようにしている。そのためコード境界位置（Icode,Iccdx）ごとに、適切な露出条件での撮像画像を用いたコード境界位置の検出が可能となるのである。
【０２９１】
なお、本実施形態においては、有効輝度範囲に入る最初の露出条件のコード境界座標を選択するようにしたが、有効輝度範囲に入る露出条件のコード境界座標のうち、コード境界座標に対応する輝度値がそれぞれの有効輝度範囲の中心に最も近い露出条件のコード境界座標を選択するようにしてもよい。このようにすれば、さらに適切な露出条件での撮像画像を用いたコード境界位置の検出が可能となる。
【０２９２】
続いて、Ｓ４００９において、レンズ収差補正プログラム４０４ｉの実行により、レンズ収差補正処理が実施される。このレンズ収差補正処理は、撮像光学系３０に入射した光束の実際の結像位置であってその撮像光学系３０の収差の影響を受けたものを、その撮像光学系３０が理想レンズであったならば結像されるはずである理想結像位置に近づくように補正する処理である。
【０２９３】
このレンズ収差補正処理により、Ｓ４００８において統合されたコード境界座標値が、撮像光学系３０の歪みなどに起因した誤差が除去されるように補正される。そのようにして補正されたコード境界座標は収差補正座標格納部４０６ｇに格納される。
【０２９４】
その後、Ｓ４０１０において、三角測量演算プログラム４０４ｊの実行により、三角測量の原理による実空間変換処理が実施される。この実空間変換処理が実施されれば、三角測量の原理により、前述の、ＣＣＤ座標系ｃｃｄｘ−ｃｃｄｙ上のコード境界座標値であって収差補正が施されたものが、実空間に設定された３次元座標系である実空間座標系Ｘ−Ｙ−Ｚ上の３次元座標値に変換され、その結果、３次元色形状検出結果としての３次元座標値が取得される。その取得された３次元座標値は、対応する部分画像の回転位相ＰＨに関連付けて、３次元座標格納部４０６ｈに格納される。
【０２９５】
このＳ４０１０においては、被写体Ｓの３次元形状を複数個の３次元頂点の集まりとして空間離散的に計測するために、２次元的なコード画像が、各パターン光のライン方向と交差する離散的な複数本の基準線に関して空間離散的に参照される。これにより、そのコード画像の外周境界上の複数個の離散点にそれぞれ対応する複数個の３次元頂点が取得されるのみならず、そのコード画像の内部の複数個の離散点（Ｓ４００３において検出されたコードの境界座標点）にそれぞれ対応する複数個の３次元頂点が取得される。
【０２９６】
ここで、図２７を参照することにより、図１５におけるＳ１２３０を詳述する。図２７には、そのＳ１２３０が３次元色形状検出結果生成サブルーチンとして概念的にフローチャートで表されている。
【０２９７】
この３次元色形状検出結果生成サブルーチンにおいては、まず、Ｓ５５０１において、３次元座標格納部４０６ｈから、回転位相ＰＨ０ないし３のそれぞれに関連付けて、複数個の３次元座標値がロードされる。本実施形態においては、被写体Ｓの外面全体が４つの部分面（正面、右側面、左側面および背面）に分割され、各部分面ごとに３次元形状情報が生成される。このＳ５５０１においては、それら４つの部分面のすべてについて、各部分面に属する複数個の３次元座標値が３次元座標格納部４０６ｈからロードされる。
【０２９８】
次に、Ｓ５５０２において、それらロードされた複数個の３次元座標値（頂点座標値）に対し、各３次元座標値が属する各部分面の回転位相ＰＨに応じた回転変換が行われ、それにより、４つの部分面に属する複数個の３次元座標値が、各部分面の回転位相ＰＨを見込んで組み合わされる。その結果、複数個の３次元座標値によって３次元的に表現される４つの部分面が一体化されて、被写体Ｓの外面全体を現す３次元形状情報が合成される。ただし、この段階においては、その３次元形状情報に、測定ヘッドＭＨの分割撮像手法に起因して空間的にオーバラップする部分が存在する。
【０２９９】
続いて、Ｓ５５０３において、その生成された合成画像において空間的にオーバラップする部分が抽出される。さらに、その合成画像の長さ方向における各領域においてオーバラップする２つの部分が、それら２部分に属する複数個の３次元座標値の平均化等の手法により、１つの部分に結合（ステッチ）される。その結果、３次元形状情報において空間的なオーバラップが除去され、それにより、３次元ステッチ形状が完成する。その３次元ステッチ形状を表すデータが３次元ステッチ形状格納部４０６ｓに格納される。
【０３００】
その後、Ｓ６００１において、前述の実空間３次元座標系に座標変換された３次元頂点群の各実座標空間座標値に対応するＲＧＢ値（Ｒ輝度値、Ｇ輝度値およびＢ輝度値）が前述の表面色画像から抽出される。
【０３０１】
実空間座標系と、表面色画像を定義する平面座標系との関係は、前述の三角測量計算によって幾何学的に互いに対応付けられている。すなわち、コード画像、すなわち、被写体Ｓの３次元形状を計測するための２次元画像である形状画像を定義する平面座標系を実空間３次元座標系に計算によってマッピングさせるために用いられる変換の逆変換を用いることにより、実空間３次元座標系を、表面色画像を定義する平面座標系に計算によってマッピングさせることが可能なのである。したがって、このＳ６００１においては、２次元的な表面色画像から、各３次元頂点ごとに、それに対応する表面色値すなわちＲＧＢ値を抽出することが可能である。各３次元頂点ごとに対応する表面色値および、各３次元頂点の間の３次元空間位置に対応する表面色値を抽出し、新たに画像平面上に再配置する。再配置により生成された画像をステッチテクスチャ画像としてステッチテクスチャ画像格納部４０６ｔに格納する。
【０３０２】
以上で、この３次元色形状検出結果生成サブルーチンの一回の実行が終了し、それに伴い、図２７に示す３次元色形状検出処理ルーチンの一回の実行が終了する。
【０３０３】
ところで、Ｓ２００５におけるパターン光有画像撮像処理においては、露出別パラメータテーブル格納部４０６ｗに格納された全ての露出時間パラメータに対して撮像処理を行ったが、露出別パラメータテーブル格納部４０６ｗに格納された露出時間パラメータのうち一部を使用するようにして、撮像処理の時間を短縮するようにもできる。
【０３０４】
たとえば、Ｓ１００４において撮像部１４での自動露出（ＡＥ）機能の実行（露出決定手段）により、選択された露出条件[iEvNum]に近い３つの露出条件[iEvNum-1]，[iEvNum]，[iEvNum+1]の露出時間パラメータを露出別パラメータテーブル格納部４０６ｗから取り出し、Ｓ２０２３の撮像処理を行うようにするのである。すなわち、自動露出機能によって最も適切と判定された露出時間パラメータと、その露出時間が近い前後の露出時間パラメータとにより撮像するのである。このようにすることによって、自動露出機能によって決定される１つの露出条件では、被写体Ｓの輝度分布に充分に対応できない場合であっても、その前後の露出条件での撮像画像を用いることで、被写体Ｓの輝度分布に対するカバー範囲を的確に広げることができる。
【０３０５】
また、被写体Ｓを撮像するための露出条件が多数ある場合においても、全ての露出条件で輝度画像の生成、コード画像の生成及びコード境界の抽出を行うことがないため、それらの演算処理の負荷が軽減され、しかも、３次元形状の検出時間も必要以上にかかることがない。
【０３０６】
なお、自動露出（ＡＥ）機能の実行は、Ｓ１００４において行うのではなく、パターン光有画像撮像処理で行うようにしてもよい。また、この自動露出（ＡＥ）機能は、撮像部１４における撮像領域の輝度を検出し、当該輝度に基づいて露出条件を決定するものである。
【０３０７】
また、上述では複数の露出条件のうち一部を用いる例として、３つの露出条件の例について説明したがこれに限られず、２つであってもよく、４以上であってもよい。また、この露出条件の数は、設定により変更することができるようにしてもよい。
【０３０８】
以上、本発明の実施の形態のうちのいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記［発明の開示］の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０３０９】
たとえば、本実施形態においては、空間コード法におけるパターン光での３次元形状検出について説明したが、その他のパターン光による３次元形状検出であってもよい。たとえば、単純な平行線（スリット状）パターン光を用いた光切断法や、何らかの規則性を持たせたスポット光群、明暗をメッシュ状に配したパターン光等を用いた３次元形状検出にも適用可能である。
【図面の簡単な説明】
【０３１０】
【図１】本発明の第１実施形態に従う３次元形状検出装置の外観を示す斜視図である。
【図２】図１に示す３次元形状検出装置を示す側面図および背面図である。
【図３】図１における測定ヘッドホルダとの取付構造を説明するための部分断面背面図である。
【図４】図１における回転テーブル部を示す背面断面図である。
【図５】図１における測定ヘッドの内部構成を示す平面断面図である。
【図６】図１における投影部を拡大して示す平面図である。
【図７】図１に示す３次元形状検出装置の電気的構成を概念的に表すブロック図である。
【図８】図５における投影機構を示す正面図である。
【図９】図８に示す投影機構を示す部分側面断面図である。
【図１０】図８におけるマスクを部分的に拡大して示す正面図である。
【図１１】図８におけるマスクを部分的に示す正面図および図７における位置センサおよび第１ないし第３のＩＤセンサをマスクと共に示す側面図である。
【図１２】図１１における位置センサのＰＤ信号および第１ないし第３のＩＤセンサの信号を説明するためのタイミングチャートである。
【図１３】図７におけるカメラ制御プログラムにおいて実行されるメイン処理を概念的に表すフローチャートである。
【図１４】図１３における立体画像処理を概念的に表すフローチャートである。
【図１５】図１４における３次元色形状検出処理を３次元色形状検出処理ルーチンとして概念的に表すフローチャートである。
【図１６】図１５における撮像処理プログラムとして概念的に表すフローチャートである。
【図１７】図１６におけるマスクモータ制御プログラムとして概念的に表すフローチャートである。
【図１８】図１６における投影処理を投影処理サブルーチンとして概念的に表すフローチャートである。
【図１９】図８における撮像部の露出条件を説明するための図である。
【図２０】図７に示す露出別パラメータテーブル格納部における露出別パラメータテーブルの概念図である。
【図２１】図１６におけるパターン光有画像撮像処理をパターン光有画像撮像処理サブルーチンとして概念的に表すフローチャートである。
【図２２】図１５における３次元計測処理サブルーチンとして概念的に表すフローチャートである。
【図２３】図２２におけるコード画像生成プログラムを概念的に表すフローチャートである。
【図２４】図２２におけるコード境界の統合プログラムを概念的に表すフローチャートである。
【図２５】図２４におけるコード境界の選択プログラムを概念的に表すフローチャートである。
【図２６】図７に示すコード境界座標格納部における統合コード境界座標格納領域の概念図である。
【図２７】図１５における３次元色形状検出結果生成ルーチンとして概念的に表すフローチャートである。
【符号の説明】
【０３１１】
ＭＨ  測定ヘッド
ＲＴ  回転テーブル
ＨＤ  ホルダ
Ｓ  被写体
１０  ３次元形状検出装置
１２  投影部
１４  撮像部
１６  処理部
１８４  回転テーブル
【図１】
2007271530.tif 000008
【図２】
2007271530.tif 000009
【図３】
2007271530.tif 000010
【図４】
2007271530.tif 000011
【図５】
2007271530.tif 000012
【図６】
2007271530.tif 000013
【図７】
2007271530.tif 000014
【図８】
2007271530.tif 000015
【図９】
2007271530.tif 000016
【図１０】
2007271530.tif 000017
【図１１】
2007271530.tif 000018
【図１２】
2007271530.tif 000019
【図１３】
2007271530.tif 000020
【図１４】
2007271530.tif 000021
【図１５】
2007271530.tif 000022
【図１６】
2007271530.tif 000023
【図１７】
2007271530.tif 000024
【図１８】
2007271530.tif 000025
【図１９】
2007271530.tif 000026
【図２０】
2007271530.tif 000027
【図２１】
2007271530.tif 000028
【図２２】
2007271530.tif 000029
【図２３】
2007271530.tif 000030
【図２４】
2007271530.tif 000031
【図２５】
2007271530.tif 000032
【図２６】
2007271530.tif 000033
【図２７】
2007271530.tif 000034