(57)【要約】  パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された対象物を撮像することに得られる第２の画像と、を取得する。第１の画像に基づいて画素ごとに距離値を有する第１の距離画像を生成し、該第１の距離画像の距離値に基づいて第１の画像の歪みを補正する。歪みが補正された後の第１の画像に基づいて画素ごとに距離値を有する第２の距離画像を生成する。第２の画像における対象物のエッジの情報を有するエッジ画像の画素ごとに、第１の距離画像又は第２の距離画像の対応する画素の距離値を用いて、エッジ画像の歪みを補正する。
2018168757.tif 000002
【特許請求の範囲】
【請求項１】
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得手段と、
前記第１の画像に基づいて画素ごとに距離値を有する第１の距離画像を生成し、該第１の距離画像の距離値に基づいて前記第１の画像の歪みを補正する第１の補正手段と、
前記第１の補正手段によって歪みが補正された後の第１の画像に基づいて画素ごとに距離値を有する第２の距離画像を生成する生成手段と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の距離画像又は前記第２の距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記第２の補正手段は、前記エッジ画像の画素ごとに、該画素に対応する前記第１の画像の画素を、前記第１の画像と前記第２の画像との画素の対応関係に基づいて特定し、該特定した画素に対応する前記第１の距離画像の対応画素の距離値に対応した補正を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記対応関係は、前記第１の画像と前記第２の画像との間の二次元射影変換行列によって規定されていることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記第１の補正手段は、前記第１の画像の画素ごとに、前記第１の距離画像の対応画素の距離値を用いて該距離値に応じて異なる補正を行うことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記第２の補正手段は、複数の距離値のそれぞれについて予め求めた補正パラメータから前記対応画素の距離値に応じた補正パラメータを特定し、該補正パラメータを用いて前記エッジ画像の歪みを補正することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項６】
前記第２の補正手段は、距離値と補正パラメータとの関係を規定する関数を用いて、前記対応画素の距離値に対応する補正パラメータを特定し、該補正パラメータを用いて前記エッジ画像の歪みを補正することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項７】
前記第２の補正手段による歪み補正後のエッジ画像と前記第２の距離画像とに基づいて、前記対象物の３次元位置姿勢を求める手段を備えることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得手段と、
前記第１の画像に基づいて画素ごとに距離値を有する距離画像を生成し、該距離画像の距離値に基づいて前記距離画像の歪みを補正する第１の補正手段と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の補正手段が補正した距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正手段と
を備えることを特徴とする画像処理装置。
【請求項９】
更に、
前記第２の補正手段による歪み補正後のエッジ画像と前記第１の補正手段による歪み補正後の距離画像とに基づいて、前記パターン光が投影されている対象物の３次元位置姿勢を求める手段を備えることを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記第１の画像を撮像する撮像素子、前記第２の画像を撮像する撮像素子のそれぞれに対し、パターン光と均一照明の光とが投影された対象物から入射する光を異なる波長の光に分光したうちの前記パターン光、前記均一照明の光が入射することを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
請求項１乃至１０の何れか１項に記載の画像処理装置と、
前記画像処理装置によって処理された画像に基づいて被検物を保持して移動させるロボットと、を有するシステム。
【請求項１２】
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得手段と、
前記第１の画像に基づいて画素ごとに距離値を有する距離画像を生成し、該距離画像の距離値に基づいて前記距離画像の歪みを補正する第１の補正手段と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の補正手段が補正した距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正手段と、
前記第２の補正手段によって歪みが補正された前記エッジ画像に基づいて前記対象物を保持して移動させるロボットと、
を有するシステム。
【請求項１３】
請求項１乃至１０の何れか１項に記載の画像処理装置を用いて被検物を計測する工程と、
該計測の結果に基づいて被検物を処理することにより物品を製造する工程と、を有することを特徴とする物品の製造方法。
【請求項１４】
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得工程と、
前記第１の画像に基づいて画素ごとに距離値を有する距離画像を生成し、該距離画像の距離値に基づいて前記距離画像の歪みを補正する第１の補正工程と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の補正工程で補正した距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正工程と
前記第２の補正工程によって歪みが補正された前記エッジ画像に基づいて、前記対象物を保持して移動させる移動工程と、
を備えることを特徴とする物品の製造方法。
【請求項１５】
画像処理方法であって、
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得工程と、
前記第１の画像に基づいて画素ごとに距離値を有する第１の距離画像を生成し、該第１の距離画像の距離値に基づいて前記第１の画像の歪みを補正する第１の補正工程と、
前記第１の補正工程によって歪みが補正された後の第１の画像に基づいて画素ごとに距離値を有する第２の距離画像を生成する生成工程と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の距離画像又は前記第２の距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正工程と
を備えることを特徴とする画像処理方法。
【請求項１６】
画像処理装置が行う画像処理方法であって、
パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得工程と、
前記第１の画像に基づいて画素ごとに距離値を有する距離画像を生成し、該距離画像の距離値に基づいて前記距離画像の歪みを補正する第１の補正工程と、
前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の補正工程で補正した距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正工程と
を備えることを特徴とする画像処理方法。
【請求項１７】
コンピュータを、請求項１乃至１０の何れか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象物の３次元位置姿勢を求めるための技術に関するものである。
【背景技術】
【０００２】
撮像画像から得られる距離点群データとエッジ点群データを対象物のＣＡＤモデルとフィッティングすることにより対象物の３次元位置姿勢を計測する技術が実用化されている。特に、２つの撮像素子を用いて距離データ取得用の撮像とエッジデータ取得用の撮像とを同時に行う構成によれば、一つの撮像素子で両者の撮像を行う場合と比べて短時間での計測が可能であり、移動中の計測や、移動する対象物の計測に適用できる。【０００３】
ところで、３次元位置姿勢の計測で利用される、対象物の３次元位置と撮像画像の画素の位置との対応関係は、一般に、焦点距離などのパラメータを使ったカメラモデルによって表現される。このパラメータは内部パラメータとも呼ばれ、その値は光学系によって一意に決定されるものとして扱われることが多い。しかし実際には、このパラメータの値は、撮像光学系の歪によって、対象物までの距離、すなわち撮像素子に対する奥行き方向の位置に応じて変化する。そのため、奥行き方向の位置によらず同一パラメータを使った場合、上記の対応関係は、実際の光学系から乖離し、計測誤差が生じる。この計測誤差を低減するための技術として、次のような技術が開示されている。【０００４】
特許文献１の技術によれば、まず仮のパラメータを用いて撮像画像から仮の距離データを生成する。生成された距離データからは、撮像画像の各画素に対応する奥行き方向の位置情報が得られる。この奥行き方向の位置情報に基づき、あらかじめ用意しておいた奥行きの位置毎のパラメータを用いて、最終的な距離データを生成する。【０００５】
また、特許文献２の技術によれば、撮像素子の各画素に入射する光線の方向をあらかじめ計測しておく。そして、この計測値を利用することで、カメラモデルの代わりに光線追跡によって上記の対応関係を計算する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１７０２８０号公報
【特許文献２】特許第４０７７７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の技術では、奥行き方向の位置情報を取得できないエッジデータには適用できない。また、特許文献２の技術では、対象物の３次元位置と撮像画像の画素の位置との対応関係を計算コストの高い光線追跡で計算する必要があり、高速処理ができない。すなわち、従来技術では、撮像画像から得られる距離データとエッジデータを利用した対象物の高速・高精度な３次元位置姿勢計測ができない、という課題がある。【０００８】
本発明はこのような課題に鑑みてなされたものであり、対象物の距離画像とエッジ画像とを利用して、該対象物の３次元位置姿勢を高速・高精度に計測するための技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の一様態は、パターン光が投影された対象物を撮像することによって得られる第１の画像と、該パターン光を含まない光が投影された前記対象物を撮像することに得られる第２の画像と、を取得する取得手段と、前記第１の画像に基づいて画素ごとに距離値を有する第１の距離画像を生成し、該第１の距離画像の距離値に基づいて前記第１の画像の歪みを補正する第１の補正手段と、前記第１の補正手段によって歪みが補正された後の第１の画像に基づいて画素ごとに距離値を有する第２の距離画像を生成する生成手段と、前記第２の画像における前記対象物のエッジの情報を有するエッジ画像の画素ごとに、前記第１の距離画像又は前記第２の距離画像の対応する画素の距離値を用いて、前記エッジ画像の歪みを補正する第２の補正手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明の構成によれば、対象物の距離画像とエッジ画像とを利用して、該対象物の３次元位置姿勢を高速・高精度に計測することができる。【００１１】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１２】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】システムの構成例を示すブロック図。
【図２】撮像部１０３の構成例を示す図。
【図３】マルチラインパターン３００の構成例を示す図。
【図４】校正データ１２５を取得するための方法のフローチャート。
【図５】ステップＳ１００２における処理の詳細を示すフローチャート。
【図６】ステップＳ１００３における処理の詳細を示すフローチャート。
【図７】校正用ボードの例を示す図。
【図８】コンピュータ装置のハードウェア構成例を示すブロック図。
【図９】Ｚ位置ごとの校正データのテーブルデータの構成例を示す図。
【図１０】画像処理装置１２１が行う処理のフローチャート。
【図１１】計測装置とロボットアームを含む制御システムを示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１４】
［第１の実施形態］
先ず、本実施形態に係るシステムの構成例について、図１のブロック図を用いて説明する。本実施形態に係るシステムは、対象物１００の３次元形状、３次元位置姿勢の計測（３次元計測）を行うためのものであり、図１に示す如く、３次元スキャナ１０１と、画像処理装置１２１と、を有する。
【００１５】
先ず、３次元スキャナ１０１について説明する。３次元スキャナ１０１は、対象物１００に対してパターン光を投影する投影部１０２と、対象物１００を撮像する撮像部１０３と、を有する。
【００１６】
投影部１０２から投影されるパターン光（投影パターン）には、例えば、図３に示すようなマルチラインパターン３００が用いられる。マルチラインパターン３００の各ライン３０１には、該ライン３０１を識別するための符合としてランダムな間隔でドット３０２が配置されている。マルチラインパターン３００が投影された対象物の撮像画像が得られた場合、該撮像画像上で観測されるラインとドットの位置を手掛かりに、対象物上で観測されるラインが投影パターンの何番目のラインであるのかを識別することができる。各ライン上の任意の点は光切断法により三角測距が可能であるため、複数のラインの３次元位置（３次元座標）を一度の撮影で計測できる。なお、マルチラインの各ラインを識別するための符号はランダムドットに限定されない。例えば、各ラインの太さを変え、それを基に各ラインを識別するようにしてもよい。また、投影パターンはマルチラインパターンに限定されず、投影パターンと、撮像画像上の対象物に投影されたパターン光と、の対応付けが取れ、一度の撮影により取得した撮像画像から３次元位置を計測できるものであれば、如何なるパターンを採用しても良い。
【００１７】
撮像部１０３は、投影部１０２により投影パターンが投影された対象物１００を撮像することで、投影パターンを含む撮像画像（第１の撮像画像）と、投影パターンを含まない撮像画像（第２の撮像画像）と、を取得する。撮像部１０３の構成例について、図２を用いて説明する。
【００１８】
外界からの光はレンズ２００を介して分光プリズム２０１に入射する。分光プリズム２０１は、投影部１０２から投影して対象物１００で反射する投影パターンの光（投影パターン光）と、不図示の均一照明から照射して対象物１００で反射される光（均一照明光）と、を空間的に分離するために用いられる。投影パターン光の波長と均一照明光の波長とは互いに異なる波長であり、分光プリズム２０１に入射した光のうち投影パターン光は分光プリズム２０１を透過して撮像素子２０２へと入射し、均一照明光は分光プリズム２０１で反射され撮像素子２０３へ入射する。これにより撮像素子２０２及び撮像素子２０３のそれぞれは、互いに視差が少ない第１及び第２の撮像画像をほぼ同時に撮像することができる。
【００１９】
撮像素子２０２及び撮像素子２０３は、例えばＣＭＯＳセンサ、ＣＣＤセンサなどの各種の光電変換素子である。なお、撮像素子２０２、２０３で光電変換されたアナログ信号は、撮像部１０３内の不図示の制御部により標本化ならびに量子化され、デジタル画像信号に変換される。更にこの制御部は、このデジタル画像信号から、各画素が輝度階調値（濃度値、画素値）を有する画像（撮像画像）を生成し、この撮像画像を適宜撮像部１０３内のメモリ及び／又は画像処理装置１２１に対して送出する。
【００２０】
次に、画像処理装置１２１について説明する。３次元スキャナ１０１から取得した第１の撮像画像及び第２の撮像画像に基づいて対象物１００の３次元位置姿勢を求めるために画像処理装置１２１が行う処理について、図１０のフローチャートに従って説明する。なお、以下の処理で用いる第１の撮像画像及び第２の撮像画像は３次元スキャナ１０１から直接取得しても良いし、一端画像処理装置１２１内のメモリ若しくは外部のメモリに格納したものを読み出して取得しても良い。
【００２１】
ステップＳ１００２では、画像処理装置１２１は、第１の撮像画像に基づく距離画像に対する歪み補正処理を行う。ステップＳ１００２における処理の詳細について、図５のフローチャートに従って説明する。
【００２２】
ステップＳ５０１で距離画像生成部１２３は第１の撮像画像に対し、予め求めた補正パラメータとしての校正データ１２５を用いて歪み補正処理を行い、歪み補正処理済みの第１の撮像画像から三角測量の原理に基づいて距離画像（第１の距離画像）を生成する。ここで、校正データ１２５を取得するための方法について、図４のフローチャートに従って説明する。校正データ１２５は、距離値（Ｚ位置）に依存する校正データと、Ｚ位置に依存していない校正データと、を含む。
【００２３】
ステップＳ４０１では、校正用ボードを、１軸方向に移動可能なステージである一軸移動ステージに設置する。一軸移動ステージの移動方向をＺ軸とし、校正用ボード面内にＸ軸、Ｙ軸を設定する。校正用ボードの例を図７に示す。校正用ボードとしては、二次元的に一定間隔で円パターンなどの指標を印刷した平面板を用いる。校正用ボード上のＸ軸とＹ軸を特定するために、例えば図７に示す如く、円パターン群の中に二重円のパターンを複数配置し、二重円パターンがより多く並んでいる方向をＸ軸、それと直交する方向をＹ軸と定める。精度良く校正データを算出するために、円パターンなどの指標の間隔は別途高精度な三次元計測機などで測定しておく。ここでは指標を円パターンとしたが、撮影した画像から画像処理により指標の画像上の位置を検出できるものであれば他の形状でもよい。
【００２４】
ステップＳ４０２では、一軸移動ステージを駆動して該一軸移動ステージをＺ軸上の計測範囲内で移動させながら該一軸移動ステージ（校正用ボード）を複数回撮像する。これにより、Ｚ軸上の複数の位置（Ｚ位置）における校正用ボードの撮像画像（校正用画像）を取得する。一軸移動ステージを撮像する撮像装置は、例えば校正用ボードと相対するように固定して設けられているものとする。校正用ボード上の指標のＸＹ座標は既知であり、撮像画像取得位置のＺ位置は一軸移動ステージの移動間隔を基準に決めることができる。
【００２５】
ステップＳ４０１及びＳ４０２の工程は、校正用ボードに投影パターンを投影した状態、校正用ボードに投影パターンを投影しない状態、のそれぞれの状態について行うものとする。以下では、校正用ボードに投影パターンを投影した状態で撮像された校正用画像を第１の校正用画像、校正用ボードに投影パターンを投影しない状態で撮像された校正用画像を第２の校正用画像と称する。また、第１の校正用画像及び第２の校正用画像に共通の説明を行う場合には、これらを区別せずに単に校正用画像と称する。
【００２６】
なお、ステップＳ４０１及びＳ４０２の各工程は、撮像位置から互いに異なる複数の奥行き（Ｚ位置）にある校正用画像を取得するための工程の一例である。然るに、撮像位置から互いに異なる複数の奥行き（Ｚ位置）にある校正用画像を取得することができるのであれば、該校正用画像の取得方法は特定の取得方法に限らない。本実施形態では、このような複数の校正用画像は、撮像素子２０２及び撮像素子２０３のそれぞれにおいて撮像するものとする。
【００２７】
次にステップＳ４０３では、ステップＳ４０１及びＳ４０２の各工程で取得した第１の校正用画像及び第２の校正用画像からＺ位置に依存しない校正データを算出する。Ｚ位置に依存しない校正データとは、投影部１０２及び撮像部１０３のそれぞれのピンホールカメラモデル（式（１）〜（８））における内部パラメータ及び外部パラメータである。内部パラメータは、焦点距離ｆｘ、ｆｙ、画像中心ｃｘ、ｃｙ、歪み係数ｋ１、ｋ２、ｋ３、ｐ１、ｐ２を含む。外部パラメータは、姿勢Ｒ、位置Ｔを含む。
【００２８】
【数１】
2018168757.tif 000003
【００２９】
ここで（Ｘ、Ｙ、Ｚ）はステージ座標系（一軸移動ステージを基準とした座標系）における校正用ボード上の指標の３次元座標を表し、（ｕ、ｖ）は撮像素子面に投影された点（校正用ボード上の指標、投影パターンにおけるドット）の２次元座標を表す。なお、歪み係数は上記のｋ１、ｋ２、ｋ３、ｐ１、ｐ２に限らず、より高次の項を含むように式（４）、（５）を拡張してもよい。
【００３０】
撮像部１０３は２つの撮像素子２０２、２０３を有するため、撮像素子２０２、２０３のそれぞれの撮像素子について、上記の内部パラメータ及び外部パラメータのセットを算出する。具体的には、第２の校正用画像から各指標の画像上の２次元座標（ｕ、ｖ）を画像処理により算出し、該２次元座標（ｕ、ｖ）と対応する３次元座標（Ｘ、Ｙ、Ｚ）とを対応付ける。また、第１の校正用画像から各ドットの画像上の２次元座標（ｕ、ｖ）を画像処理により算出し、該２次元座標（ｕ、ｖ）と対応する３次元座標（Ｘ、Ｙ、Ｚ）とを対応付ける。そして上記の対応付けの結果に基づいて、投影部１０２及び撮像部１０３（撮像素子２０２、２０３）の内部パラメータ、投影部１０２と撮像部１０３との間、投影部１０２とステージとの間、撮像部１０３とステージとの間の外部パラメータを算出する。内部パラメータ及び外部パラメータは、バンドル調整法などの公知の技術を用いて算出することができる。
【００３１】
次に、ステップＳ４０４では、Ｚ位置ごとの校正データを算出する。例えばＺ位置＝Ｚ１，Ｚ２，…，Ｚ１０の１０箇所における校正用ボードの撮像を行った場合、（投影部１０２、撮像素子２０２、撮像素子２０３のそれぞれに対応する内部パラメータ（計３つ））×１０＝３０個の内部パラメータを計算することになる。Ｚ位置ごとの内部パラメータは、以下のようなパラメータを用いて求める。
【００３２】
・  Ｚ位置ごとの第１の校正用画像における各ドットの該第１の校正用画像上の２次元座標（ｕ、ｖ）と対応する３次元座標（Ｘ，Ｙ，Ｚ）との対応付け結果
・  Ｚ位置ごとの第２の校正用画像における各指標の該第２の校正用画像上の２次元座標（ｕ、ｖ）と対応する３次元座標（Ｘ，Ｙ，Ｚ）との対応付け結果
・  Ｚ位置に依存しない校正データ
すなわち、上記の対応付け結果がピンホールカメラモデルにフィッティングするように、例えば非線形最適化手法などの手法により、上記の内部パラメータ及び外部パラメータを算出する。その際に、ステージ座標系と撮像部１０３及び投影部１０２の座標系との関係はＺ位置に依存しない校正データに含まれている外部パラメータを用いて定める。また、非線形最適化手法を用いた計算の初期値として、Ｚ位置に依存しない校正データに含まれている内部パラメータを用いることにより、上記のＺ位置ごとの校正データを算出する。
【００３３】
なお、Ｚ位置ごとの校正データは、図９に示すように、Ｚ位置（Ｚ座標）ごとに、該Ｚ位置と対応する校正データとを関連づけてテーブルデータとして生成しても良い。図９では、Ｚ位置（Ｚ座標）＝０，１０，２０，…，１００のそれぞれに対応する校正データ（ｆｘ、ｆｙ、ｃｘ、ｃｙ、ｋ１、ｋ２、ｋ３、ｐ１、ｐ２）が登録されている。また、Ｚ位置ごとの校正データを近似する多項式Ｄ＝ｆ（ｚ）を、Ｚ位置ごとの校正データとして求めても良い。この多項式Ｄ＝ｆ（ｚ）は、Ｚ位置と校正データとの関係を規定する関数であり、Ｚ位置＝ｚを引数とし、ｚに対応する校正データＤを出力する関数である。
【００３４】
以上説明したステップＳ４０３，Ｓ４０４の各工程の処理は画像処理装置１２１が行っても良いし、画像処理装置１２１以外の装置が行っても良い。ステップＳ４０３，Ｓ４０４の各工程の処理をどのような装置で実行しても、上記のようにして生成された校正データは校正データ１２５として画像処理装置１２１に適宜入力される。なお、校正データ１２５の生成方法は上記の方法に限らない。
【００３５】
そしてステップＳ５０１では、このようにして生成された校正データ１２５のうちＺ位置に依存しない校正データを用いて第１の撮像画像に対する歪み補正を行い、歪み補正済みの第１の撮像画像を用いて、三角測量の原理に基づいて第１の距離画像を生成する。第１の距離画像は、Ｚ位置に依存しない校正データに基づいて算出されているため、コマ収差などに起因するＺ位置ごとに歪みが異なる影響を考慮していないために精度が悪い。そこで、以下の処理工程でその影響を補正する。
【００３６】
次に、ステップＳ５０２では、画像歪み補正部１２２は、ステップＳ５０１で歪みが補正された第１の撮像画像において未選択の画素を選択画素として選択する。ステップＳ５０１で歪みが補正された第１の撮像画像における画素の選択順については特定の選択順に限らず、例えば、ラスタスキャン順で画素を選択しても良い。
【００３７】
ステップＳ５０３では画像歪み補正部１２２は、ステップＳ５０１で歪みが補正された第１の撮像画像における選択画素の画素位置を（ｘｓ、ｙｓ）とした場合に、第１の距離画像において画素位置（ｘｓ、ｙｓ）における画素値、すなわち距離値ｄを特定する。
【００３８】
ステップＳ５０４では、画像歪み補正部１２２は、ステップＳ５０３で特定した距離値ｄに対応するＺ位置の校正データを、図４のフローチャートに従って生成された「Ｚ位置ごとの校正データ」に基づいて取得する。
【００３９】
「Ｚ位置ごとの校正データ」が図９に示すようなテーブルデータとして管理されている場合には、このテーブルデータから距離値ｄに対応するＺ位置の校正データを取得することができる。距離値ｄに対応するＺ位置の校正データがテーブルデータに登録されていない場合、テーブルデータにおいて距離値ｄに最も近いＺ位置の校正データを取得しても良い。また、距離値ｄに対応するＺ位置の校正データがテーブルデータに登録されていない場合、距離値ｄの近傍の複数のＺ位置に対応する校正データから補間した補間校正データを、距離値ｄに対応する校正データとして取得しても良い。
【００４０】
また、「Ｚ位置ごとの校正データ」が上記の多項式Ｄ＝ｆ（ｚ）として管理されている場合には、ｆ（ｄ）の出力を、距離値ｄに対応する校正データとして取得することができる。
【００４１】
そして画像歪み補正部１２２は、ステップＳ５０１で歪みが補正された第１の撮像画像における選択画素に対して、距離値ｄに対応する校正データを用いて歪み補正処理を行う。例えば、距離値ｄに対応する校正データを用いた歪み補正により、選択画素の画素位置がどの画素位置に変換されるのかを求め、該求めた画素位置に選択画素を移動させる。
【００４２】
ステップＳ５０５では、画像歪み補正部１２２は、ステップＳ５０１で歪みが補正された第１の撮像画像の全ての画素を選択画素として選択したか否かを判断する。画像歪み補正部１２２が、ステップＳ５０１で歪みが補正された第１の撮像画像の全ての画素を選択画素として選択したと判断した場合には、処理はステップＳ５０６に進む。一方、画像歪み補正部１２２が、ステップＳ５０１で歪みが補正された第１の撮像画像において未選択画素が残っていると判断した場合には、処理はステップＳ５０２に戻る。
【００４３】
なお、図５では、ステップＳ５０２〜Ｓ５０４の処理を、第１の撮像画像の全ての画素について行うものとしたが、これに限らない。例えば、１回目の距離点の計算に使用した画素を再度歪み補正し、その他の画素については補間するようにしても良い。
【００４４】
ステップＳ５０６では、画像歪み補正部１２２は、ステップＳ５０４における歪み補正を行った第１の撮像画像に基づいて距離画像（第２の距離画像）を生成する。距離画像の生成方法についてはステップＳ５０１と同様である。そして処理は図１０のステップＳ１００３に進む。
【００４５】
図１０に戻って、次にステップＳ１００３では、画像処理装置１２１は、第２の撮像画像に基づくエッジ画像に対する歪み補正処理を行う。ステップＳ１００３における処理の詳細について、図６のフローチャートに従って説明する。
【００４６】
ステップＳ６０１でエッジ画像生成部１２６は、第２の撮像画像に対し、Ｚ位置に依存しない校正データを用いて歪み補正処理を行い、歪み補正処理済みの第２の撮像画像のエッジ画像（対象物１００の輪郭、稜線などのエッジの情報を有する画像）を生成する。
【００４７】
ステップＳ６０２では、対応画素特定部１２７は、エッジ画像においてエッジを構成する画素（エッジ画素）のうち未選択のエッジ画素を選択エッジ画素として選択する。なお、ステップＳ６０２ではエッジ画素だけでなく非エッジ画素を選択するようにしても良い。
【００４８】
ステップＳ６０３では、対応画素特定部１２７は、選択エッジ画素に対応する第１の撮像画像（ステップＳ５０１で歪みが補正された第１の撮像画像）上の画素位置Ｐを特定する。理想的には撮像素子２０２による撮像画像と撮像素子２０３による撮像画像とに視差は生じないが、現実的には組立時の設置誤差などにより視差が生じ、撮像素子２０２による撮像画像と撮像素子２０３による撮像画像との間に数ピクセル程度の画素ずれが生じる。
【００４９】
そこで、撮像素子２０２による撮像画像と撮像素子２０３による撮像画像との間の二次元射影変換を実現する二次元射影変換行列が必要になる。このような二次元射影変換行列を用いれば、撮像素子２０３による撮像画像上の画素位置（ｘ、ｙ）に対応する、撮像素子２０２による撮像画像上の画素位置（ｘ’、ｙ’）を特定することができる。二次元射影変換行列は予め求めておき、画像処理装置１２１に適宜入力することになる。
【００５０】
ここで、二次元射影変換行列を求める方法の一例について説明する。上記の校正用ボードを上記の一軸移動ステージに設置し、該一軸移動ステージをＺ軸上の計測範囲内における任意のＺ位置で固定した状態で該一軸移動ステージ（校正用ボード）を撮像素子２０２及び撮像素子２０３によって撮像する。その際、投影パターンの投影は行わない。そして、校正用ボード上の各指標の特徴点の、撮像素子２０２による撮像画像上における２次元座標をｍ１、撮像素子２０３による撮像画像上における２次元座標をｍ２、とする。このとき、撮像素子２０２及び撮像素子２０３の両方の視野内にある全ての指標の特徴点について以下の式（９）を満たすような二次元射影変換行列Ｈが存在する。
【００５１】
【数２】
2018168757.tif 000004
【００５２】
ここで、二次元射影変換行列Ｈは３×３の行列であり、自由度は８であるため、同一平面上の４点以上の２次元座標ｍ１、ｍ２の組み合わせから算出することができる。ここで、指標の２次元座標ｍ１、ｍ２は、歪みを補正した画像上の２次元座標であることが必要である。画像の歪みを補正するために用いる校正データとしてＺ位置に依存しない校正データを用いることもできる。しかし、校正用ボードを撮像したＺ位置に対応する校正データを算出しておき、該校正データを用いて画像の歪みを補正することにより高精度な二次元射影変換行列を生成することができる。
【００５３】
然るに、このようにして求めた二次元射影変換行列Ｈを用いてエッジ画像上の選択エッジ画素の画素位置を変換した画素位置を、エッジ画像上の選択エッジ画素の画素位置に対応する第１の撮像画像上の画素位置Ｐとして求めることができる。なお、エッジ画像上の選択エッジ画素の画素位置に対応する第１の撮像画像上の画素位置Ｐを特定することができれば、そのための手法は特定の手法に限らない。そして対応画素特定部１２７は、第１の距離画像（または第２の距離画像）中の画素位置Ｐにおける画素値、すなわち距離値を取得する。
【００５４】
なお、選択エッジ画素の位置はサブピクセル推定されているため、距離画像（第１の距離画像／第２の距離画像）において対応する画素位置が存在しない場合がある。これは、二次元射影変換行列Ｈを用いてエッジ画像上の選択エッジ画素の画素位置を変換した画素位置の座標値が整数でない場合も同様である。このような場合には、近傍の画素の距離値を基にニアレストネイバー法、バイリニア法などの公知の補間方法により内挿して求めることができる。
【００５５】
ステップＳ６０４では、画像歪み補正部１２２は、選択エッジ画素に対して、ステップＳ６０３で取得した距離値に対応する校正データを用いて歪み補正処理を行う。ステップＳ６０４における歪み補正は、上記のステップＳ５０４と同様にして行う。
【００５６】
ステップＳ６０５では、画像歪み補正部１２２は、エッジ画像の全てのエッジ画素を選択エッジ画素として選択したか否かを判断する。画像歪み補正部１２２が、エッジ画像の全てのエッジ画素を選択エッジ画素として選択したと判断した場合には、処理はステップＳ１００４に進む。一方、画像歪み補正部１２２が、エッジ画像において未選択のエッジ画素が残っていると判断した場合には、処理はステップＳ６０２に戻る。エッジ画像の全てのエッジ画素についてステップＳ６０４の歪み補正を行うことで、エッジ画像の歪み補正を行うことができる。
【００５７】
ステップＳ１００４で算出部１２４は、第２の距離画像と、ステップＳ１００３で歪み補正を行ったエッジ画像と、に基づき、対象物１００のモデルデータ（ＣＡＤデータ等）とモデルフィッティングすることで、対象物１００の３次元位置姿勢を求める。算出部１２４が算出した対象物１００の３次元位置姿勢は、画像処理装置１２１内のメモリ、画像処理装置１２１と接続されている外部メモリ、サーバ装置、等に格納しても良いし、不図示のモニタなどに表示しても良い。
【００５８】
［第２の実施形態］
本実施形態を含む以下の各実施形態では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。撮像素子２０３による撮像画像上の画素位置（ｘ、ｙ）に対応する、撮像素子２０２による撮像画像上の画素位置（ｘ’、ｙ’）を特定するための情報は、二次元射影変換行列に限らない。例えば、以下の手法でもって取得した情報を二次元射影変換行列の代わりに使用することができる。
【００５９】
先ず、評価基準となる特徴量を持つ対象物（校正用ボードなど）を上記の一軸移動ステージに設置する。そして、該一軸移動ステージをＺ軸上の計測範囲内における任意のＺ位置で固定した状態で該一軸移動ステージ（校正用ボード）を撮像素子２０２及び撮像素子２０３によって撮像する。その際、投影パターンの投影は行わない。そして撮像素子２０２による撮像画像、撮像素子２０３による撮像画像のそれぞれの歪みを上記のようにして補正する。そして、撮像素子２０２による撮像画像と、撮像素子２０３による撮像画像と、で画像特徴量が最も類似する箇所の位置ずれ量を求め、該求めた位置ずれ量を二次元射影変換行列の代わりに使用する。つまり、撮像素子２０３による撮像画像上の座標にこの位置ずれ量を加えることで、撮像素子２０２による撮像画像上の対応する座標を求めることができる。
【００６０】
［第３の実施形態］
第１，２の実施形態では、投影パターンを投影した対象物１００の撮像画像から距離画像を生成していたが、他の手法を用いて距離画像を生成しても良い。例えば、Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔなどの他の方法によって距離画像を生成するようにしても良い。
【００６１】
［第４の実施形態］
図５のフローチャートに従った処理は、以下のように変形しても良い。ステップＳ５０２では、画像歪み補正部１２２は、第１の距離画像において未選択の画素を選択画素として選択する。ステップＳ５０３では、画像歪み補正部１２２は、第１の距離画像において選択画素の画素値、すなわち距離値ｄを特定する。ステップＳ５０４では、画像歪み補正部１２２は、ステップＳ５０３で特定した距離値ｄに対応するＺ位置の校正データを、図４のフローチャートに従って生成された「Ｚ位置ごとの校正データ」に基づいて取得する。そして画像歪み補正部１２２は、第１の距離画像における選択画素に対して、距離値ｄに対応する校正データを用いて歪み補正処理を行う。ステップＳ５０５では、画像歪み補正部１２２は、第１の距離画像の全ての画素を選択画素として選択したか否かを判断する。画像歪み補正部１２２が、第１の距離画像の全ての画素を選択画素として選択したと判断した場合には、処理はステップＳ１００３に進む。一方、画像歪み補正部１２２が、第１の距離画像において未選択画素が残っていると判断した場合には、処理はステップＳ５０２に戻る。ステップＳ５０６は不要である。このような処理により、歪み補正後の第１の距離画像を第２の距離画像として生成することができる。
【００６２】
この場合、図６のフローチャートに従った処理において、ステップＳ６０３では、第２の撮像画像と歪み補正後の第１の距離画像との間の画素の対応関係を用いて、選択エッジ画素に対応する第１の距離画像上の画素位置を特定する。
【００６３】
［第５の実施形態］
図１に示した画像処理装置１２１中の各機能部（校正データ１２５を除く）は何れもハードウェアで実装しても良いが、ソフトウェア（コンピュータプログラム）で実装しても良い。後者の場合、このようなソフトウェアを実行可能なコンピュータ装置であれば、上記の画像処理装置１２１に適用可能である。画像処理装置１２１に適用可能なコンピュータ装置のハードウェア構成例について、図８のブロック図を用いて説明する。
【００６４】
ＣＰＵ８０１は、メインメモリ８０２に格納されているコンピュータプログラム、データを用いて処理を実行する。これによりＣＰＵ８０１は、コンピュータ装置全体の動作制御を行うと共に、画像処理装置１２１が行うものとして上述した各処理を実行若しくは制御する。ＧＰＵ８１０は、撮像画像、距離画像、エッジ画像などの各種の画像を用いた上記の様々な画像処理を行う。
【００６５】
メインメモリ８０２は、ＣＰＵ８０１、ＧＰＵ８１０が各種の処理を実行する際に用いるワークエリア、記憶部８０３、ＲＯＭ８０４からロードされたコンピュータプログラム、データを格納するためのエリアを有する。このようにメインメモリ８０２は、各種のエリアを適宜提供することができる。
【００６６】
記憶部８０３は、ハードディスクドライブ装置、ソリッドステートドライブ（ＳＳＤ）などに代表される大容量情報記憶装置である。記憶部８０３には、ＯＳ（オペレーティングシステム）、画像処理装置１２１が行うものとして上述した各処理をＣＰＵ８０１、ＧＰＵ８１０に実行若しくは制御させるためのコンピュータプログラム、データが保存されている。記憶部８０３に保存されているコンピュータプログラムには、図１に示した画像処理装置１２１の各機能部が行うものとして上述した各処理をＣＰＵ８０１、ＧＰＵ８１０に実行若しくは制御させるためのコンピュータプログラムが含まれている。また、記憶部８０３に保存されているデータには、上記の説明において既知の情報として説明したもの、例えば、上記の校正データ、二次元射影変換行列のデータが含まれている。記憶部８０３に保存されているコンピュータプログラム、データは、ＣＰＵ８０１による制御に従って適宜メインメモリ８０２にロードされ、ＣＰＵ８０１、ＧＰＵ８１０による処理対象となる。ＲＯＭ８０４には、コンピュータ装置のＢＩＯＳに係るコンピュータプログラム及びデータ等が格納されている。
【００６７】
表示装置８０８は、ビデオカード８０６に接続されている。表示装置８０８は、ＣＲＴ、液晶画面などにより構成されており、ＣＰＵ８０１、ＧＰＵ８１０による処理結果を画像及び／又は文字などでもって表示することができる。なお、表示装置８０８はタッチパネル画面であっても良い。
【００６８】
入力装置８０９は、ＵＳＢ（Universal Serial Bus）などの汎用Ｉ／Ｆ（インターフェース）８０７に接続されている。入力装置８０９は、マウス、キーボードなどのユーザインターフェースにより構成されており、ユーザが操作することで各種の指示をＣＰＵ８０１に対して入力することができる。なお、この汎用Ｉ／Ｆ８０７には、上記の３次元スキャナ１０１を接続しても良い。ＣＰＵ８０１、ＧＰＵ８１０、メインメモリ８０２、記憶部８０３、ＲＯＭ８０４、ビデオカード８０６、汎用Ｉ／Ｆ８０７は何れも、システムバス８０５に接続されている。
【００６９】
［第６の実施形態］
上述の図１に示したシステムは計測装置１１００として、ある支持部材に支持された状態で使用されうる。本実施形態では、一例として、図１１のようにロボットアーム１３００（把持装置）に備え付けられて使用される制御システムについて説明する。計測装置１１００は、支持台１３５０に置かれた被検物１２１０にパターン光を投影して撮像し、画像を取得する。そして、計測装置１１００の制御部が、又は、計測装置１１００の制御部から画像データを取得した制御部１３１０が、被検物１２１０の位置および姿勢を求め、求められた位置および姿勢の情報を制御部１３１０が取得する。制御部１３１０は、その位置および姿勢の情報に基づいて、ロボットアーム１３００に駆動指令を送ってロボットアーム１３００を制御する。ロボットアーム１３００は先端のロボットハンドなど（把持部）で被検物１２１０を保持して、並進や回転などの移動をさせる。この際、前述の実施形態で記載したように、被検物１２１０（ワーク、組立用部品、被加工物）のエッジ画像を正確に把握できることによって、ロボットアーム１３００が被検物１２１０を正確に保持して移動させることができる。さらに、ロボットアーム１３００によって被検物１２１０を他の部品に組み付けることにより、複数の部品で構成された物品、例えば電子回路基板や機械などを製造することができる。また、移動された被検物１２１０を加工することにより、物品を製造することができる。制御部１３１０は、ＣＰＵなどの演算装置やメモリなどの記憶装置を有する。なお、ロボットを制御する制御部を制御部１３１０の外部に設けても良い。また、計測装置１１００により計測された計測データ（計測結果）や得られた画像をディスプレイなどの表示部１３２０に表示してもよい。なお、以上説明したそれぞれの実施形態の一部若しくは全部は適宜組み合わせて使用しても構わない。
【００７０】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７１】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【００７２】
本願は、２０１７年３月１３日提出の日本国特許出願特願２０１７−０４７４８８を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
【符号の説明】
【００７３】
１２２：画像歪み補正部  １２３：距離画像生成部  １２４：算出部  １２５：校正データ  １２６：エッジ画像生成部  １２７：対応画素特定部
【図１】
2018168757.tif 000005
【図２】
2018168757.tif 000006
【図３】
2018168757.tif 000007
【図４】
2018168757.tif 000008
【図５】
2018168757.tif 000009
【図６】
2018168757.tif 000010
【図７】
2018168757.tif 000011
【図８】
2018168757.tif 000012
【図９】
2018168757.tif 000013
【図１０】
2018168757.tif 000014
【図１１】
2018168757.tif 000015
【国際調査報告】
2018168757.tif 000016
2018168757.tif 000017
2018168757.tif 000018
2018168757.tif 000019