(57)【要約】【課題】  ラインを含むパターンを投影した被検物の画像から該ラインをより高精度に検出するための技術を提供すること。【解決手段】  ラインを含むパターンが投影された被検物の画像を取得する画像取得手段が取得した該画像から検出されたラインに対応する画素ごとに、該画素に対応する該ラインの傾斜を取得する。画素ごとに取得した傾斜に基づいて画像におけるラインの検出を行う。【選択図】  図１
2019190969.tif 000002
【特許請求の範囲】
【請求項１】
ラインを含むパターンが投影された被検物の画像を取得する画像取得手段が取得した該画像から検出されたラインに対応する画素ごとに、該画素に対応する該ラインの傾斜を取得する取得手段と、
前記画素ごとに前記取得手段が取得した傾斜に基づいて前記画像におけるラインの検出を行う検出手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記取得手段は、前記画像の微分画像において輝度がピークとなる複数の座標に基づいて該複数の座標の各々における傾斜を求め、該座標について求めた傾斜を、該座標に対応する前記画像中の画素に対応するラインの傾斜とすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記取得手段は、前記画像の微分画像において輝度がピークとなる座標について求めたラインの傾斜を該座標に対応する前記画像中の画素に対応するラインの傾斜として登録したマップを生成することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記検出手段は、
水平方向に微分方向を有する微分フィルタと、垂直方向に微分方向を有する微分フィルタと、を前記画素について前記取得手段が取得した傾斜に基づいて合成した回転微分フィルタを生成し、該回転微分フィルタを前記画素に適用することで前記画像の微分画像を生成し、該微分画像からラインの検出を行うことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記検出手段は、
水平方向に微分方向を有する微分フィルタと、垂直方向に微分方向を有する微分フィルタと、を前記画素について前記取得手段が取得した傾斜を含む傾斜範囲の代表傾斜に基づいて合成した回転微分フィルタを生成し、該回転微分フィルタを前記画素に適用することで前記画像の微分画像を生成し、該微分画像からラインの検出を行うことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項６】
前記検出手段は、
前記画像を水平方向に微分した微分画像と、前記画像を垂直方向に微分した微分画像と、を前記画素について前記取得手段が取得した傾斜に基づいて合成した微分画像からラインの検出を行うことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項７】
前記画像処理装置は更に、前記検出手段が検出したラインに基づいて前記被検物の三次元形状を計測する手段を備えることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
請求項１乃至７の何れか１項に記載の画像処理装置と、
前記画像処理装置による計測結果に基づいて被検物を保持して移動させるロボットと、を有するシステム。
【請求項９】
請求項１乃至７の何れか１項に記載の画像処理装置を用いて被検物を計測する工程と、
該計測結果に基づいて被検物を処理することにより物品を製造する工程と、を有することを特徴とする物品の製造方法。
【請求項１０】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の取得手段が、ラインを含むパターンが投影された被検物の画像を取得する画像取得手段が取得した該画像から検出されたラインに対応する画素ごとに、該画素に対応する該ラインの傾斜を取得する取得工程と、
前記画像処理装置の検出手段が、前記画素ごとに前記取得工程で取得した傾斜に基づいて前記画像におけるラインの検出を行う検出工程と
を備えることを特徴とする画像処理方法。
【請求項１１】
コンピュータを、請求項１乃至７の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像からのライン検出技術に関する。
【背景技術】
【０００２】
物体の表面形状を計測する技術の一つに、光学式のアクティブステレオ法と称される方式がある。この方式は、プロジェクタにより所定の投影パターンを被検物に投影し、投影方向とは異なる方向から撮像を行い、三角測量の原理から各画素位置における距離情報を算出し、被検物の三次元情報を計測するものである。
【０００３】
アクティブステレオ法にて用いられるパターンに関しては様々な方式が存在する。その一つとして、特許文献１に記されるように、ラインパターン上に切断点（ドット）を配するパターンを投影する方式（以下、ドットラインパターン方式と称する）が知られている。本方式においては、検出された各ラインが投影パターン上のどのラインに対応するかの指標を、ライン上にて検出されたドットの座標情報を基に与えられるため、一回の画像撮影によって物体全体の三次元距離情報が取得可能である。
【０００４】
また、特許文献２には、ドットラインパターン方式のライン検出の際に、ラインピークおよびラインエッジを検出することで、計測される距離点の密度を向上させる技術が開示されている。また、特許文献２には、ドット近傍のラインネガティブピークやラインエッジ位置の精度が悪化するため、計測点から排除する技術も開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２５１７０６２号
【特許文献２】特開２０１６−２００５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ドットラインパターン方式の計測においては、パターン情報におけるドットの座標情報と検出されたドットの座標情報の対応付けのために十分な数のドットが検出されている必要がある。したがって、被検物のサイズが小さい場合においても被検物上に投影されるドットの数を十分に得るために、パターン中のドット密度を高く設定することが好ましい。
【０００７】
その場合、特許文献２に開示されている技術のように、ドット近傍の計測点を排除した場合には距離計測点密度が低下してしまう。加えて、後述するように、画素配列から計測線が傾く場合においては、ラインネガティブピークやラインエッジだけではなく、ピークの検出精度も大きく悪化してしまうことから、計測点の排除よりも検出精度の改善が求められる。本発明では、ラインを含むパターンを投影した被検物の画像から該ラインをより高精度に検出するための技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一様態は、ラインを含むパターンが投影された被検物の画像を取得する画像取得手段が取得した該画像から検出されたラインに対応する画素ごとに、該画素に対応する該ラインの傾斜を取得する取得手段と、前記画素ごとに前記取得手段が取得した傾斜に基づいて前記画像におけるラインの検出を行う検出手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、ラインを含むパターンを投影した被検物の画像から該ラインをより高精度に検出することができる。
【図面の簡単な説明】
【００１０】
【図１】三次元座標計測装置１００の構成例及び被検物５の例を示す図。
【図２】ドットラインパターン及び撮像画像の一例を示す図。
【図３】演算処理ユニット４が行う処理のフローチャート。
【図４】ソーベルフィルタ及び回転微分フィルタの構成例を示す図。
【図５】ライン座標の一例を示す図。
【図６】ドット部によりライン座標の検出誤差が発生する原因を説明する図。
【図７】マップの構成例を示す図。
【図８】演算処理ユニット４が行う処理のフローチャート。
【図９】制御システムの構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施形態の１つである。
【００１２】
［第１の実施形態］
本実施形態では、オブジェクト（被検物）に対してライン（計測線）を含むパターン（ラインパターン）を投影し、該ラインパターンが投影された被検物を撮像し、該撮像で得られる画像に基づいて被検物の三次元形状を計測する計測システムについて説明する。このような計測システムを適用した本実施形態に係る三次元座標計測装置１００の構成例を図１（ａ）に示す。
【００１３】
図１（ａ）に示す如く、三次元座標計測装置１００は、投影装置の一例であるプロジェクタ１、撮像装置の一例である撮像ユニット３、コンピュータ装置の一例である演算処理ユニット４と、を有する。そしてプロジェクタ１及び撮像ユニット３は演算処理ユニット４に接続されている。
【００１４】
先ず、プロジェクタ１について説明する。ＬＥＤ６から射出された光束は、照明光学系８で集光されて、空間変調素子７を照明する。空間変調素子７は、照明光学系８から入射した光束を変調して「複数のラインを含むパターン（ラインパターン）」を射出する（ＬＥＤ６からの光束にラインパターンを付与する）。空間変調素子７から射出されたラインパターンは、投影光学系１０を介して被検物５に投影される。なお、被検物５に上記のラインパターンを投影することができる装置であれば、投影装置は図１（ａ）のプロジェクタ１に限らない。
【００１５】
次に、撮像ユニット３について説明する。外界からの光は撮像光学系１１を介して撮像素子１３に入光する。撮像素子１３には画素が２次元的に配列されており（図１（ａ）に示す如く、ｕ軸方向及びｖ軸方向に画素が配列されており）、それぞれの画素の受光光量に基づいて撮像画像を生成し、該撮像画像を演算処理ユニット４に対して出力する。なお、ｕ軸とｖ軸とは直交している。然るに図１（ａ）の場合は、撮像ユニット３は、プロジェクタ１によってラインパターンが投影された被検物５の撮像画像（ラインパターン画像）を生成して演算処理ユニット４に出力する。なお、ラインパターンが投影された被検物５の撮像画像を生成して演算処理ユニット４に出力することができる装置であれば、撮像装置は図１（ａ）の撮像ユニット３に限らない。
【００１６】
ここで、プロジェクタ１と撮像ユニット３は、両者の主点間の線分である基線２を介して離れた距離に設置されている。ラインパターンに含まれている複数のラインの長手の向きは基線２と直交するＸ軸方向とし、撮像素子１３のｕ軸方向はＸ軸方向と略等しく配置され、エピポーラ線方向と略直交する。
【００１７】
次に、演算処理ユニット４について説明する。演算処理ユニット４は、演算処理ユニット４が行うものとして後述する各処理を実行可能なコンピュータ装置であり、例えば、次のようなハードウェア構成を有する。
【００１８】
ＣＰＵ１５１は、ＲＡＭ１５２やＲＯＭ１５３に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりＣＰＵ１５１は、演算処理ユニット４全体の動作制御を行うと共に、演算処理ユニット４が行うものとして後述する各処理を実行若しくは制御する。
【００１９】
ＲＡＭ１５２は、ＲＯＭ１５３や外部記憶装置１５６からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）１５７を介して外部から受信したデータ（例えば撮像ユニット３から受信した撮像画像）、を格納するためのエリアを有する。更にＲＡＭ１５２は、ＣＰＵ１５１が各種の処理を実行する際に用いるワークエリアを有する。このようにＲＡＭ１５２は、各種のエリアを適宜提供することができる。ＲＯＭ１５３には、演算処理ユニット４の設定データや起動プログラム等、書換不要の情報が格納されている。
【００２０】
操作部１５４は、キーボードやマウスなどのユーザインターフェースであり、ユーザが操作することで各種の指示をＣＰＵ１５１に対して入力することができる。表示部１５５は、液晶画面やタッチパネルなどにより構成されており、ＣＰＵ１５１による処理結果を画像や文字などでもって表示することができる。また、表示部１５５がタッチパネルであれば、ユーザによるタッチパネルへの操作入力はＣＰＵ１５１に通知される。
【００２１】
外部記憶装置１５６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１５６には、ＯＳ（オペレーティングシステム）や、演算処理ユニット４が行うものとして後述する各処理をＣＰＵ１５１に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。外部記憶装置１５６に保存されているデータには、以下の説明において既知の情報として取り扱うものや、プロジェクタ１が投影するラインパターンのデータなどが含まれている。外部記憶装置１５６に保存されているコンピュータプログラムやデータは、ＣＰＵ１５１による制御に従ってＲＡＭ１５２にロードされ、ＣＰＵ１５１による処理対象となる。
【００２２】
Ｉ／Ｆ１５７は、外部装置とのデータ通信を行うためのインタフェースとして機能するものであり、図１（ａ）の構成では、Ｉ／Ｆ１５７には、撮像ユニット３やプロジェクタ１が接続されていることになる。ＣＰＵ１５１、ＲＡＭ１５２、ＲＯＭ１５３、操作部１５４、表示部１５５、外部記憶装置１５６、Ｉ／Ｆ１５７、は何れもバス１５８に接続されている。
【００２３】
上記のような構成を有する演算処理ユニット４は、撮像ユニット３からの撮像画像に含まれている各ラインの座標（ライン座標）を検出する。ライン座標の検出は、撮像画像から得られる受光光量ピークから該撮像画像上の座標を検出することで行われる。複数のラインパターンを用いたパターン投影法では、撮像されたラインパターンの対応付けを行う必要がある。ラインパターンの対応付けとは、画像から検出された各ラインに対し、該ラインが空間変調素子７が付与したラインパターンに含まれるラインのうち何本目のラインであるのかを対応付ける処理工程である。複数枚のラインパターン画像から上記の対応付けを行う手法も複数知られているが、本実施形態では、特許文献１、２で開示されているような１枚のラインパターン画像から対応付けを行うことができる「ランダムに配置されたドット（切断点）によって符号化された図２（ａ）にパターンの一部を示すドットラインパターン」を、プロジェクタ１が投影するラインパターンとして用いる。
【００２４】
そして演算処理ユニット４は撮像画像から検出したライン座標、上記の対応付けの結果、事前に校正されたプロジェクタ１及び撮像ユニット３の光学特性や相対位置関係に基づいて被検物５の三次元形状（被検物５の表面の各位置における三次元座標）を求める。
【００２５】
演算処理ユニット４が撮像ユニット３による撮像画像からラインを検出するために行う処理について、同処理のフローチャートを示す図３を用いて説明する。ステップＳ３０１では、ＣＰＵ１５１は、撮像ユニット３から送出された撮像画像を、Ｉ／Ｆ１５７を介してＲＡＭ１５２に取得する。ステップＳ３０２では、ＣＰＵ１５１は、ステップＳ３０１においてＲＡＭ１５２に取得した撮像画像ｆの各画素に対して、ｖ軸方向に微分方向を持つソーベルフィルタＳｖを適用することで、微分画像ｇｖを生成する。ソーベルフィルタＳｖの構成例を図４（ａ）に示す。撮像画像ｆの各画素に対するソーベルフィルタＳｖの適用は、例えば、以下の式（１）のように、撮像画像ｆとソーベルフィルタフィルタＳｖの畳み込み演算により実施される。
【００２６】
【数１】
2019190969.tif 000003
【００２７】
ここで、ｆ（ｕ、ｖ）は、撮像画像ｆ中の画素位置（ｕ、ｖ）における画素値を表し、Ｓｖ（ｍ、ｎ）は、ソーベルフィルタＳｖの中心位置を（０，０）としたときの該中心位置に対する相対位置（ｍ、ｎ）における要素の値を表す。また、ｇｖ（ｕ、ｖ）は、微分画像ｇｖ中の画素位置（ｕ、ｖ）における画素値（輝度値）を表している。以下では、画像（撮像画像や微分画像など）において水平方向をｕ軸方向、垂直方向をｖ軸方向とする。
【００２８】
ステップＳ３０３では、ＣＰＵ１５１は、ステップＳ３０２において生成した微分画像ｇｖの各垂直ライン（ｕ座標ごとのｖ軸方向ライン）について、該垂直ラインの輝度分布において微分値が正から負に変わる座標（ピーク位置）をライン座標として検出する。例えば、着目垂直ラインからライン座標を検出する場合には、該着目垂直ラインを構成する各画素の輝度値から成る輝度分布（画素間の輝度値は補間などにより求める）において微分値が正から負に変わる座標（ピーク位置）をライン座標として検出する。ここで、輝度分布は垂直ライン方向の連続関数であるから、ライン座標のｕ座標値は整数値（該ライン座標を検出した垂直ラインのｕ座標値）、ライン座標のｖ座標値は実数値（ピーク位置）を取る。
【００２９】
また、ラインが切れているドット部であってもラインが連続する状態で検出される必要があるため、撮像画像上で観測されるラインとドットの輝度値を平滑化させるフィルタを、ソーベルフィルタ適用前の撮像画像に適用してもよい。この平滑化処理は光学系によるボケ（コントラスト劣化）が十分あり、ドット部であってもラインが連続する状態で検出される場合は不要である。
【００３０】
次に、ステップＳ３０４では、ＣＰＵ１５１は、ステップＳ３０３で得られたライン座標に対してラインラベリングを行う。ラインラベリングでは、着目ライン座標に対してｕ軸方向に隣接する（規定画素数離間しても良い）ライン座標は該着目ライン座標と同一ライン上の点の座標であるとし、該ライン座標に対して該着目ライン座標と同じラベルを割り当てる。
【００３１】
そしてＣＰＵ１５１は、同じラベルが割り当てられたライン座標で形成されるラインのうち、長さ（例えば、ｕ軸方向やｖ軸方向の画素数）が規定値以上となるラインを特定し、該特定したラインを形成しているライン座標を第１ライン座標とする。なお、ＣＰＵ１５１は、長さが規定値未満のラインはノイズであると判断し、該ラインを形成しているライン座標については非ライン座標とする。
【００３２】
ここで、図１（ｂ）に示す如く、被検物５の面５１が撮像ユニット３に対して正対している（面５１が撮像ユニット３の視軸と略直交している）場合に該撮像ユニット３により得られる撮像画像の例を図２（ｂ）に示す。図２（ｂ）に示す撮像画像は、撮像ユニット３に正対している面５１に投影されたラインパターンを撮像して得られるため、ｕ軸に略平行なラインが写っている。図２（ｂ）に示した撮像画像をステップＳ３０１で取得した場合に、該撮像画像に対して上記のステップＳ３０２〜Ｓ３０４の処理を行うことで得られるライン座標（第１のライン座標）を図５（ａ）に示す。図５（ａ）ではライン座標に対応する位置にドット（黒）を記している。図２（ｂ）に示す撮像画像にはｕ軸に略平行なラインが写っているため、図５（ａ）に示す如く、ライン座標は、ｕ軸に略平行なラインを形成している。
【００３３】
図１（ｃ）に示す如く、撮像ユニット３の撮像範囲に被検物５の面５１及び面５２（撮像ユニット３に対しＹ軸周りに傾いた２面）が含まれる（面５１と面５２との境界部分が含まれる）場合に該撮像ユニット３により得られる撮像画像の例を図２（ｃ）に示す。図２（ｃ）に示す撮像画像では、面５１及び面５２に投影されたラインパターンがｕ軸に対してそれぞれ傾いたラインパターンとして写っている。図２（ｃ）に示した撮像画像をステップＳ３０１で取得した場合に、該撮像画像に対して上記のステップＳ３０２〜Ｓ３０４の処理を行うことで得られるライン座標（第１のライン座標）を図５（ｂ）に示す。図５（ｂ）ではライン座標に対応する位置にドット（黒）を記している。図２（ｃ）に示す撮像画像には、ｕ軸に対して傾いたラインパターンが写っているため、図５（ｂ）に示す如く、ライン座標は、ｕ軸に対して傾いたラインを形成している。ここで、図５（ｂ）に示す如く、ライン座標にはドット部に起因して検出誤差が発生する。つまり、面５１及び面５２が平面である場合は各面について直線の検出結果が得られるが、ドット部に対応する部分でうねりが生じている。
【００３４】
撮像画像に傾いたラインパターンが写っている場合に、ドット部によりライン座標の検出誤差が発生する原因について、図６を用いて説明する。図６（ａ）は、ｕ軸に略平行なラインが写っている撮像画像に対してｖ軸方向に微分した微分画像から検出されたライン座標を示す図である。図６（ａ）において、Ｌ１はラインの中心線、Ｌ１１，Ｌ２１は該ラインの明部を示しており、ドットによって切れている。ただし、前述のとおり、実際の光量分布では明部Ｌ１１及びＬ１２が同一ラインとして連続する状態で検出される程度に平滑化されており、明部Ｌ１１及びＬ１２ではドット近傍の隅部では光量分布がボケている。Ｄ１は、撮像画像に対する微分方向（ｖ軸方向）を垂直ラインごとに示したものであり、ラインと略直交している。黒丸は垂直ラインごとに検出されたライン座標である。図６（ａ）のようにラインがｕ軸に略平行である場合には、ラインの中心線Ｌ１とライン座標とは略一致し、誤差なくライン座標を検出できる。
【００３５】
図６（ｂ）は、ｕ軸に対して傾いているラインが写っている撮像画像に対してｖ軸方向に微分した微分画像から検出されたライン座標を示す図である。図６（ｂ）において、Ｌ２はラインの中心線、Ｌ１２，Ｌ２２は該ラインの明部を示しており、図６（ａ）と同様に、ドットによって切れているが、上記の明部Ｌ１１及びＬ２１と同様に、明部Ｌ１２及びＬ２２ではドット近傍の隅部では光量分布がボケている。Ｄ２は、撮像画像に対する微分方向（ｖ軸方向）を垂直ラインごとに示したものであり、ラインは該微分方向に対して傾斜している。黒丸は垂直ラインごとに検出されたライン座標である。図６（ｂ）のように、ラインがｕ軸に対して傾いているような撮像画像に対してｖ軸方向に微分した微分画像では、該ラインの中心線Ｌ２からずれた位置をライン座標として検出してしまうケースが発生する。このずれが発生する原因について、図６（ｂ）に示す明部Ｌ２２周辺を拡大した図６（ｃ）を用いて説明する。
【００３６】
図６（ｃ）の明部Ｌ２２の輪郭線を光量の等高線として捉えると、輝度分布のピーク位置を探索するための探索線Ｄ２１と明部（等高線）Ｌ２２の２つの交点Ｃ１，Ｃ２の中間点（ラインの中心線Ｌ２からずれた位置Ｐ１）がライン座標として検出されてしまう。このように、ｕ軸に対して傾いているラインが写っている撮像画像に対してｖ軸方向に微分した微分画像に対してｖ軸方向にピーク位置を探索すると、ドット部がラインにとってノイズとして作用し、ドット部近傍でライン座標の検出に誤差が発生する。このような誤差の低減には、図６（ｄ）に示すように、撮像画像をラインの傾きに応じた微分方向Ｄ３に微分した微分画像からライン座標の検出を行うことが効果的である。撮像画像をラインの傾きに応じた微分方向Ｄ３に微分した微分画像では、図６（ｄ）に示す如く、ラインの中心線Ｌ２上にピーク位置（黒丸）が登場する。然るに、このような微分画像に対してｖ軸方向にピーク位置を探索しても、ラインの中心線Ｌ２上でライン座標を検出することができ、ドットの影響を低減して、良好な精度でライン検出を行うことができる。
【００３７】
ステップＳ３０５以降では、ステップＳ３０４までの処理で求めた第１のライン座標におけるラインの傾きを求め、該傾きに応じて撮像画像を微分した微分画像からライン検出を行う。
【００３８】
ステップＳ３０５では、ＣＰＵ１５１は、同じラベルが割り当てられた第１のライン座標の集合（つまり同一ラインを形成している第１のラインの集合）ごとに、該集合に含まれている各第１のライン座標におけるラインの傾斜角αを求める。例えば、着目集合に含まれている第１のライン座標においてｕ座標値がｎ（ｎは整数）の第１のライン座標Ｐ（ｎ）のｖ座標値をｖ（ｎ）とする。このとき、Ｐ（ｎ）におけるラインの傾斜角αはα＝ａｒｃｔａｎ（（ｖ（ｎ−１）−ｖ（ｎ＋１））／２）を計算することで求めることができる。なお、着目集合においてｕ座標値が最小の第１のライン座標（＝ｕｍｉｎ）におけるラインの傾斜角αは、第１のライン座標Ｐ（ｕｍｉｎ＋１）におけるラインの傾斜角αと同じものを採用する。また、着目集合においてｕ座標値が最大の第１のライン座標（ｕｍａｘ）におけるラインの傾斜角αは、第１のライン座標Ｐ（ｕｍａｘ−１）におけるラインの傾斜角αと同じものを採用する。このように、ステップＳ３０５では、全ての第１のライン座標について傾斜角αを求める。
【００３９】
ステップＳ３０６では、ＣＰＵ１５１は、撮像画像の各画素に対応する傾斜角を登録したマップを生成する。マップの構成例を図７（ａ）に示す。マップの水平方向にｕ軸、垂直方向にｖ軸を取る。マップにおいて位置（ｕ、ｖ）における要素（マス）には、撮像画像において画素位置（ｕ、ｖ）に対応する傾斜角が登録される。このようなマップを生成するために、本実施形態では、第１のライン座標（ｕ、ｙ）について求めた傾斜角を、マップにおいて位置（ｕ、Ｚ（ｙ））に登録する。ここでＺ（ｙ）はｙの整数部を返す関数である。例えば、Ｚ（ｙ）は、ｙの小数部が０．５以上であれば、ｙの整数部に１を加えてｙの小数部を切り捨て、ｙの小数部が０．５未満であれば、ｙの小数部を切り捨ててｙの整数部は変更しない関数である。
【００４０】
このようにして生成されるマップは、図７（ａ）の例では、例えば位置（ｕ、ｖ）＝（１，４）における要素（マス）には傾斜角Ｔａ１が登録されている。なお、図７（ａ）では、ラベル「ａ」が割り当てられた第１のライン座標に対応する傾斜角をＴａ１，Ｔａ２，…，Ｔａ１４としており、ラベル「ｂ」が割り当てられた第１のライン座標に対応する傾斜角をＴｂ３，Ｔｂ４，…，Ｔｂ１４としている。Ｔｘｙは、ラベル「ｘ」が割り当てられた第１のライン座標のうちｕ座標が「２」の第１のライン座標の傾斜角を表している。
【００４１】
次に、ＣＰＵ１５１は、図７（ａ）に矢印で示したように、傾斜角を登録した要素の上下２要素に該傾斜角をコピーし、傾斜角を登録していない要素には０を登録する。例えば図７（ａ）、（ｂ）に示す如く、傾斜角Ｔａ１が登録されている要素（位置（１，４）の要素）の上下２要素（位置（１，２）、（１，３）、（１，５）、（１，６）の要素）に傾斜角Ｔａ１を登録し、傾斜角を登録していない要素には０を登録する。
【００４２】
なお、本実施形態では、傾斜角を登録した要素の上下２要素に該傾斜角をコピーするようにしたが、傾斜角を登録した要素の上下ＮＮ（ＮＮは１以上の整数）要素に該傾斜角をコピーするようにしても良い。このとき、ＮＮは、微分フィルタのサイズや、撮像画像上で観測されるラインのピッチを基準に決定することができる。
【００４３】
次に、ステップＳ３０７では、ＣＰＵ１５１は、撮像画像を構成する各画素のうち未選択の画素を１つ選択画素として選択する。そしてＣＰＵ１５１は、上記のマップにおいて選択画素の画素位置に登録されている要素値θ（傾斜角若しくは値「０」）を取得する。例えば、選択画素の画素位置が（２，４）であれば、ＣＰＵ１５１は、マップにおいて（２，４）の位置に登録されている要素値θを取得する。
【００４４】
ステップＳ３０８では、ＣＰＵ１５１は、ｖ軸方向に微分方向を持つソーベルフィルタＳｖと、ｕ軸方向に微分方向を持つソーベルフィルタＳｕと、をステップＳ３０７でマップから取得した要素値θに応じて合成した回転微分フィルタＳｒｏｔを生成する。ソーベルフィルタＳｕの構成例を図４（ｂ）に示す。例えばＣＰＵ１５１は、ソーベルフィルタＳｖと、ソーベルフィルタＳｕと、ステップＳ３０７でマップから取得した要素値θと、を用いて以下の式を計算することで、回転微分フィルタＳｒｏｔ（θ）を生成する。
【００４５】
Ｓｒｏｔ（θ）＝Ｓｖ×ｃｏｓθ＋Ｓｕ×ｓｉｎθ
回転微分フィルタは、ソーベルフィルタＳｖやソーベルフィルタＳｕによる微分方向をθだけ回転させた微分方向を有する微分フィルタである。回転微分フィルタＳｒｏｔ（θ）の構成例を図４（ｃ）に示す。
【００４６】
ステップＳ３０９では、ＣＰＵ１５１は、選択画素に対して回転微分フィルタＳｒｏｔ（θ）を適用する。選択画素に対する回転微分フィルタＳｒｏｔ（θ）の適用は、以下の（式２）に従って実施される。
【００４７】
【数２】
2019190969.tif 000004
【００４８】
ここで、ｆ（ｕ、ｖ）は、撮像画像ｆにおける選択画素の画素位置（ｕ、ｖ）における画素値を表す。Ｓｒｏｔ（ｍ、ｎ、θ（ｕ、ｖ））はソーベルフィルタＳｖ、Ｓｕを選択画素の画素位置（ｕ、ｖ）に対応する要素値θ（ｕ、ｖ）に応じて合成した回転微分フィルタの中心位置を（０，０）としたときの中心位置からの相対位置（ｍ、ｎ）における要素値を表す。また、ｇｒｏｔ（ｕ、ｖ）は、撮像画像ｆの微分画像ｇｒｏｔの画素位置（ｕ、ｖ）における画素値（輝度値）であり、該画素値は、撮像画像ｆにおける選択画素に回転微分フィルタＳｒｏｔを適用したことで得られる画素値である。
【００４９】
ステップＳ３１０では、ＣＰＵ１５１は、撮像画像における全ての画素を選択画素として選択したか否かを判断する。この判断の結果、撮像画像における全ての画素を選択した場合には、処理はステップＳ３１１に進み、撮像画像において未だ選択画素として選択していない画素が残っている場合には、処理はステップＳ３０７に戻る。撮像画像における全ての画素についてステップＳ３０７〜ステップＳ３１０の処理を行うことで、撮像画像ｆの微分画像ｇｒｏｔが完成する。
【００５０】
ステップＳ３１１でＣＰＵ１５１は、微分画像ｇｒｏｔの各垂直ライン（ｕ座標ごとのｖ軸方向ライン）について、上記のステップＳ３０３と同様に、該垂直ラインの輝度分布において微分値が正から負に変わる座標（ピーク位置）をライン座標として求める。
【００５１】
ステップＳ３１２では、ＣＰＵ１５１は、ステップＳ３１１で得られたライン座標に対して上記のステップＳ３０４と同様の処理を行う。つまり、ＣＰＵ１５１は、ステップＳ３１１で得られたライン座標に対してラインラベリングを行い、同じラベルが割り当てられたライン座標で形成されているラインのうち長さが規定値以上のラインを形成しているライン座標を第２のライン座標とする。
【００５２】
図２（ｃ）に示した撮像画像をステップＳ３０１で取得した場合に、図３のフローチャートに従った処理によって得られる第２のライン座標を図５（ｃ）に示す。ステップＳ３０４までで得られたライン座標（図５（ｂ））から検出精度が改善していることが分かる。このように回転微分フィルタＳｒｏｔ（θ）を用いることで、ラインの傾斜角が画像中の場所ごとに変化した場合においても、ラインの傾斜角に応じた微分画像を得ることができるため、高い精度でライン検出を行うことができる。
【００５３】
そして、図３のフローチャートに従った処理の完了後、ＣＰＵ１５１は、同じラベルが割り当てられた第２のライン座標で形成されるラインを、被検物５の三次元形状計測に用いることで、より高精度に被検物５の三次元形状計測を行うことができる。なお、被検物５の三次元形状の計測結果の用途については様々な用途がある。
【００５４】
＜変形例１＞
ステップＳ３１１におけるライン座標の探索方向は、微分方向と同様に傾斜角に応じて回転することも可能であるが、微分方向を回転することで微分応答に対するドット起因のノイズは低減されているため、ｕ軸方向から変更しなくとも検出精度改善が得られる。
【００５５】
＜変形例２＞
第１の実施形態では、画素ごとに回転微分フィルタを求めていたが、画素ごとに求めた傾斜角を、傾斜角が近いグループ（傾斜角間の差が規定値以内のグループ）単位で分割し、グループごとに回転微分フィルタを求めても良い。この場合、グループに含まれている傾斜角の代表傾斜角（グループに含まれている傾斜角の平均値や代表値等）を上記のθとして用いて該グループに対応する回転微分フィルタを求める。グループごとの回転微分フィルタは、ステップＳ３０７の開始前に生成しておく。そして選択画素に対応する傾斜角を特定した場合には、該傾斜角が属するグループに対応する回転微分フィルタを該選択画素に適用する。
【００５６】
また、例えば、予め規定傾斜角範囲ごとに回転微分フィルタを求めておき、選択画素に対応する傾斜角を特定した場合には、該傾斜角を含む傾斜範囲（規定傾斜角範囲）に対応する回転微分フィルタを該選択画素に適用するようにしても良い。規定傾斜角範囲は、例えば、０〜９、１０〜１９，…，３４０〜３５９というように３６０度を複数の範囲に分割し、それぞれの分割範囲を規定傾斜角範囲としても良い。また、画素ごとに求めた傾斜角の最大値及び最小値をそれぞれ上限及び下限とする範囲を複数の範囲に等分したそれぞれを規定傾斜角範囲としても良い。そして、着目規定傾斜角範囲に対応する回転微分フィルタは、該着目規定傾斜角範囲の代表傾斜角（着目規定傾斜角範囲における中央の値等）を上記のθとして用いて求めることができる。規定傾斜角範囲ごとの回転微分フィルタは、ステップＳ３０７の開始前に生成しておく。
【００５７】
このように、どのような単位で回転微分フィルタを求めておくのかについては、特定の単位に限らない。また、傾斜角の代わりに、上記のｃｏｓθやｓｉｎθに相当する情報等、第１のライン座標におけるラインの傾斜を表す情報であれば、如何なる情報を採用しても構わない。
【００５８】
＜変形例３＞
第１の実施形態では、撮像ユニット３とプロジェクタ１とを別個の装置としているが、撮像ユニット３の機能と、プロジェクタ１の機能と、を有する１つの装置として一体化させても良い。
【００５９】
［第２の実施形態］
以下では、第１の実施形態との差分について説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。本実施形態では、直交する微分方向を持つ２つの微分画像を、画素ごとのラインの傾きに応じて合成した微分画像を生成し、該生成した微分画像からライン検出を行う。これにより、第１の実施形態のライン検出精度改善効果と同等の結果を得ることができる。
【００６０】
演算処理ユニット４が撮像ユニット３による撮像画像からラインを検出するために行う処理について、同処理のフローチャートを示す図８を用いて説明する。図８において、図３に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００６１】
ステップＳ８００では、ＣＰＵ１５１は、ステップＳ３０１においてＲＡＭ１５２に取得した撮像画像ｆの各画素に対して、ｕ軸方向に微分方向を持つソーベルフィルタＳｕを適用することで、微分画像ｇｕを生成する。撮像画像ｆの各画素に対するソーベルフィルタＳｕの適用は、例えば、以下の式（３）のように、撮像画像ｆとソーベルフィルタフィルタＳｖの畳み込み演算により実施される。
【００６２】
【数３】
2019190969.tif 000005
【００６３】
ここで、Ｓｕ（ｍ、ｎ）は、ソーベルフィルタＳｕの中心位置を（０，０）としたときの該中心位置からの相対位置（ｍ、ｎ）における要素の値を表す。また、ｇｕ（ｕ、ｖ）は、微分画像ｇｕ中の画素位置（ｕ、ｖ）における画素値（輝度値）を表している。なお、微分画像ｇｕの生成処理は、ステップＳ８０５の開始前であればよく、図８に示した処理順に限らない。図８では、ステップＳ８００の処理をステップＳ８０１，Ｓ８０２と並行して行っているため、並列化演算による演算時間短縮にも寄与しうる。
【００６４】
ステップＳ８０１では、ＣＰＵ１５１は、同じラベルが割り当てられた第１のライン座標の集合（つまり同一ラインを形成している第１のラインの集合）ごとに、該集合に含まれている各第１のライン座標におけるラインの傾きβを求める。例えば、着目集合に含まれている第１のライン座標においてｕ座標値がｎ（ｎは整数）の第１のライン座標Ｐ（ｎ）のｖ座標値をｖ（ｎ）とする。このとき、Ｐ（ｎ）におけるラインの傾きβはβ＝（（ｖ（ｎ−１）−ｖ（ｎ＋１））／２を計算することで求めることができる。なお、着目集合においてｕ座標値が最小の第１のライン座標（＝ｕｍｉｎ）におけるラインの傾きβは、第１のライン座標Ｐ（ｕｍｉｎ＋１）におけるラインの傾きβと同じものを採用する。また、着目集合においてｕ座標値が最大の第１のライン座標（ｕｍａｘ）におけるラインの傾きβは、第１のライン座標Ｐ（ｕｍａｘ−１）におけるラインの傾きβと同じものを採用する。このように、ステップＳ８０１では、全ての第１のライン座標について傾きβを求める。
【００６５】
ステップＳ８０２では、ＣＰＵ１５１は、上記のステップＳ３０６のマップ生成処理において「撮像画像の各画素に対応する傾斜角」の代わりに「撮像画像の各画素に対応するラインの傾き」を用いる点のみがステップＳ３０６と異なる。
【００６６】
ステップＳ８０３では、ＣＰＵ１５１は、撮像画像を構成する各画素のうち未選択の画素を１つ選択画素として選択する。そしてＣＰＵ１５１は、ステップＳ８０２で生成したマップにおいて選択画素の画素位置に登録されている要素値（傾き若しくは値「０」）を取得する。
【００６７】
ステップＳ８０４では、ＣＰＵ１５１は、ステップＳ３０２で生成した微分画像ｇｖと、ステップＳ８００で生成した微分画像ｇｕと、をステップＳ８０３で取得した要素値に応じて合成した微分画像ｇｒｏｔにおいて選択画素に対応する画素値を求める。具体的には、ＣＰＵ１５１は、以下の（式４）を計算することで、微分画像ｇｒｏｔにおいて選択画素に対応する画素値を求めることができる。
【００６８】
【数４】
2019190969.tif 000006
【００６９】
ここで、ｔａｎθ（ｕ、ｖ）は、ステップＳ８０２で生成したマップにおいて位置（ｕ、ｖ）に登録されている要素値に相当する。つまり、本実施形態では、微分画像ｇｒｏｔを生成するまでの過程において三角関数を用いた計算を行わないので、三角関数を用いて微分画像ｇｒｏｔを生成する第１の実施形態よりも低い演算コストで第１の実施形態と同等のライン検出結果を得ることができる。
【００７０】
この点についてより詳細に説明する。微分画像ｇｖと微分画像ｇｕとを第１の実施形態で生成したマップを用いて合成した微分画像ｇｒｏｔの生成は以下の（式５）を計算することで実施することができる。
【００７１】
【数５】
2019190969.tif 000007
【００７２】
このような（式５）に従って生成される微分画像ｇｒｏｔは、第１の実施形態にて生成した微分画像ｇｒｏｔと同等の微分画像となる。しかし、（式５）の計算を行うためには、第１の実施形態にて生成したマップが必要となり、上記の三角関数を用いた演算が必要となる。しかし、（式５）の右辺は（式４）の右辺に変形可能であることから、（式５）の演算は三角関数の演算を必要としない（式４）の演算に置き換えることができる。然るに、（式４）の演算により、三角関数を用いないで第１の実施形態と同等の微分画像ｇｒｏｔを得ることができる。なお、本実施形態では、第１の実施形態に対して微分画像ｇｕのみ追加で演算すればよく、全体として第１の実施形態よりも演算量が削減している。
【００７３】
ステップＳ８０５では、ＣＰＵ１５１は、撮像画像における全ての画素を選択画素として選択したか否かを判断する。この判断の結果、撮像画像における全ての画素を選択画素として選択した場合には、処理はステップＳ３１１に進み、撮像画像において未だ選択画素として選択していない画素が残っている場合には、処理はステップＳ８０３に戻る。撮像画像における全ての画素についてステップＳ８０３及びステップＳ８０４の処理を行うことで、撮像画像の微分画像ｇｒｏｔが完成する。以降は第１の実施形態と同様である。
【００７４】
［第３の実施形態］
第１，２の実施形態では、撮像画像中のラインの方向に関係なく、図３のフローチャートに従った処理や、図８のフローチャートに従った処理を行った。しかし、上記の通り、ラインがｕ軸方向と略平行な場合には、ｖ軸方向に微分した微分画像から良好なライン検出が可能であり、ステップＳ３０５以降の処理やステップＳ８００（Ｓ８０１）以降の処理は省いても構わない。然るに、例えば、ユーザが撮像画像中のラインを確認し、撮像画像中のラインが図２（ｂ）に示す如く、ｕ軸方向と略平行な場合には、ステップＳ３０１〜ステップＳ３０４の処理（第１の処理）の実行指示を操作部１５４を用いて指示する。一方、ユーザが撮像画像中のラインを確認した結果、撮像画像中のラインが図２（ｃ）に示す如く、ｕ軸方向に対して傾いているとする。この場合には、ユーザは、第１の処理及びステップＳ３０５以降の処理若しくはステップＳ８００（Ｓ８０１）以降の処理（第２の処理）の実行指示を操作部１５４を用いて指示する。ＣＰＵ１５１は、操作部１５４からの実行指示に従って第１の処理を実行する若しくは第１の処理及び第２の処理を実行する。なお、撮像画像中のラインがｕ軸方向と略平行であるのかそれとも傾いているのかを判断する方法はユーザによる視認に限らず、演算処理ユニット４による画像処理によって判断しても良い。
【００７５】
また、第１の処理については演算処理ユニット４とは別個の装置が実行するようにしても良く、その場合、演算処理ユニット４は、別個の装置が実行した第１の処理の結果を取得することになる。
【００７６】
なお、以上説明した各実施形態や各変形例の一部若しくは全部を適宜組み合わせて使用しても構わないし、以上説明した各実施形態や各変形例の一部若しくは全部を選択的に使用しても構わない。
【００７７】
［第４の実施形態］
上述の三次元座標計測装置１００は、ある支持部材に支持された状態で使用されうる。本実施形態では、一例として、図９のようにロボットアーム３００（把持装置）に備え付けられて使用される制御システムについて説明する。三次元座標計測装置１００は、支持台３５０に置かれた被検物２１０にパターン光を投影して撮像し、画像を取得（画像取得）する。そして、三次元座標計測装置１００の制御部が、又は、三次元座標計測装置１００の制御部から画像データを取得した制御部３１０が、被検物２１０の位置および姿勢を求め、求められた位置および姿勢の情報を制御部３１０が取得する。制御部３１０は、その位置および姿勢の情報に基づいて、ロボットアーム３００に駆動指令を送ってロボットアーム３００を制御する。ロボットアーム３００は先端のロボットハンドなど（把持部）で被検物２１０を保持して、並進や回転などの移動をさせる。さらに、ロボットアーム３００によって被検物２１０を他の部品に組み付けることにより、複数の部品で構成された物品、例えば電子回路基板や機械などを製造することができる。また、移動された被検物２１０を加工することにより、物品を製造することができる。制御部３１０は、ＣＰＵなどの演算装置やメモリなどの記憶装置を有する。なお、ロボットを制御する制御部を制御部３１０の外部に設けても良い。また、三次元座標計測装置１００により計測された計測データや得られた画像をディスプレイなどの表示部３２０に表示してもよい。
【００７８】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７９】
１：プロジェクタ  ３：撮像ユニット  ４：演算処理ユニット  ５：被検物
【図１】
2019190969.tif 000008
【図２】
2019190969.tif 000009
【図３】
2019190969.tif 000010
【図４】
2019190969.tif 000011
【図５】
2019190969.tif 000012
【図６】
2019190969.tif 000013
【図７】
2019190969.tif 000014
【図８】
2019190969.tif 000015
【図９】
2019190969.tif 000016