(57)【要約】【課題】膨大なデータ量の３次元点群データの場合であっても、３次元点群データから高速に物体の形状を抽出することができる形状抽出装置及び形状抽出方法を提供する。【解決手段】３次元に分布する複数の点からなり、物体の形状を表す３次元点群データに対して、複数の点のすべてを包括する包括ボクセルを設定する包括ボクセル設定部３２０２と、複数の点のピッチよりも大きなサイズを有する複数の仮想ボクセルで包括ボクセルを分割する仮想ボクセル設定部３２０４と、複数の仮想ボクセルのそれぞれに固有の識別番号を設定するボクセルＩＤ設定部３２０８と、識別番号が付与された仮想ボクセル内の点の有無に応じて、仮想ボクセルを単位としてラベリング処理を行い、点を含む複数の仮想ボクセルのうち、連結する仮想ボクセルに同一のラベル値を付与するラベリング処理部３２１２とを有している。【選択図】図３
2016003886.tif 000002
【特許請求の範囲】
【請求項１】
３次元に分布する複数の点からなり、物体の形状を表す３次元点群データに対して、前記複数の点のすべてを包括する包括ボクセルを設定する包括ボクセル設定部と、
前記複数の点のピッチよりも大きなサイズを有する複数の仮想ボクセルで前記包括ボクセルを分割する仮想ボクセル設定部と、
複数の前記仮想ボクセルのそれぞれに固有の識別番号を設定する識別番号設定部と、
前記識別番号が付与された前記仮想ボクセル内の前記点の有無に応じて、前記仮想ボクセルを単位として第１のラベリング処理を行い、前記点を含む前記複数の仮想ボクセルのうち、連結する前記仮想ボクセルに同一のラベル値を付与する第１のラベリング処理部と
を有する形状抽出装置。
【請求項２】
前記仮想ボクセルの周辺に前記仮想ボクセルと同様の周辺ボクセルを設定する周辺ボクセル設定部をさらに有し、
前記第１のラベリング処理部は、前記第１のラベリング処理に際して、注目の前記仮想ボクセルとの連結性を判定するその近傍の前記仮想ボクセルに前記周辺ボクセルを含める請求項１記載の形状抽出装置。
【請求項３】
所定の前記仮想ボクセル内に含まれる前記複数の点について第２のラベリング処理を行う第２のラベリング処理部をさらに有する請求項１又は２に記載の形状抽出装置。
【請求項４】
前記第１のラベリング処理部は、前記複数の仮想ボクセルを複数の仮想ボクセル群に分割し、前記複数の仮想ボクセル群についての前記第１のラベリング処理を並列処理する請求項１乃至３のいずれか１項に記載の形状抽出装置。
【請求項５】
前記第１のラベリング処理部は、前記複数の仮想ボクセル群について前記ラベリング処理を行った後、前記複数の仮想ボクセル群の間の接合面に隣接する前記仮想ボクセルについて前記第１のラベリング処理を行って、前記第１のラベリング処理の結果に反映させる請求項４記載の形状抽出装置。
【請求項６】
前記点が含まれる前記仮想ボクセルに対して前記点の存在を示す値を付与し、前記点が含まれない前記仮想ボクセルに対して前記点の不存在を示す値を付与するデータ有無判別部をさらに有する請求項１乃至５のいずれか１項に記載の形状抽出装置。
【請求項７】
３次元に分布する複数の点からなり、物体の形状を表す３次元点群データに対して、前記複数の点のすべてを包括する包括ボクセルを設定するステップと、
前記複数の点のピッチよりも大きなサイズを有する複数の仮想ボクセルで前記包括ボクセルを分割するステップと、
複数の前記仮想ボクセルのそれぞれに固有の識別番号を設定するステップと、
前記識別番号が付与された前記仮想ボクセル内の前記点の有無に応じて、前記仮想ボクセルを単位としてラベリング処理を行い、前記点を含む前記複数の仮想ボクセルのうち、連結する前記仮想ボクセルに同一のラベル値を付与するステップと
を有する形状抽出方法。
【請求項８】
部品となるワークを得るステップと、
請求項７記載の形状抽出方法を用い、前記物体として前記ワークについて前記ラベリング処理を行うステップと、
前記ラベリング処理の結果に基づき、前記ワークの形状における欠陥部分を検出するステップと
を有する部品の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元点群データから物体の形状を抽出する形状抽出装置及び形状抽出方法に関する。
【背景技術】
【０００２】
アルミニウム鋳造品等の部品の形状には、種々の原因により設計とは異なる欠陥部分が生じることがある。そこで、検査対象である部品の３次元形状データを取得し、これを設計データ、良品の３次元形状データ等の基準となる形状データと比較することにより欠陥部分を検出することが行われている。
【０００３】
上記のような３次元形状データに対する処理の一つとして、ラベリング処理が行われている。ラベリング処理は、２次元画像や３次元画像等の画像において、連結する画素又は領域に対して同一のラベル値を割り振る処理である。このようなラベリング処理は、画像のデータ量が増大するほど処理に要する時間が長時間になる。このため、ラベリング処理の高速化が求められている。
【０００４】
特許文献１には、複雑な２値画像のラベリング処理の処理速度を向上することを目的としたラベリング処理方法が記載されている。特許文献１に記載されたラベリング処理方法では、まず、３次元画像である２値画像にラベリング処理が施され、仮ラベル画像が作成される。次いで、仮ラベル画像の異なるラベル番号が連結している箇所のラベル番号を格納した仮ラベルテーブルが作成される。次いで、仮ラベルテーブルに基づいて、仮ラベル画像のラベル番号に対する最終ラベル画像のラベル番号を格納した再ラベルテーブルが作成される。次いで、再ラベルテーブルが参照され、仮ラベル画像のラベル番号が変換され、最終ラベル画像が作成される。また、仮ラベルテーブルを作成する際には、任意の画素のラベル番号と任意の画素の周囲に存在する３×３×２の画素集合のラベル番号とが比較されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１６４０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のラベリング処理方法では、例えば数十万点を超えるような大規模の画素データを有する３次元画像について、全画素データを対象にして処理を行おうとすると、非常に長い処理時間を要することになる。処理時間を短縮するためには、全画素データを複数の画素データ群に分割し、画素データ群毎に並列に処理することも考えられる。しかしながら、特許文献１に記載されるような従来のラベリング処理方法では、各画素データ群の間で同一のラベル番号が存在することになり、これらを区別することができない。区別するためには、分割した全画素データを通して再度ラベル番号を付与する処理等が必要になるため、結局、処理時間を短縮することは困難であると考えられる。
【０００７】
また、分割した画素データ群の間でラベル番号が重複しないように、画素データ群毎にある程度の範囲のラベル番号を割り当てることも考えられる。しかしながら、ラベリング処理前には各画素データ群に必要な最小ラベル番号数が不明であるため、余裕を持った数のラベル番号を割り当てる必要があり、ラベリング処理に負担がかかることになる。また、メモリ等のハードウェア資源を効率的に使用することも困難になる。
【０００８】
また、特許文献１に記載されたラベリング処理方法は、縦横に等ピッチで配列された画素データについて、背景に対応する０と物体に対応する１との２値で表現した２値画像を前提とするものである。このため、縦横に等ピッチで配列されない不等ピッチの画素データには、特許文献１に記載されたラベリング処理方法を適用することは困難であると考えられる。
【０００９】
また、特許文献１に記載されたラベリング処理方法では、上述のように、仮ラベルテーブルを作成する際に、任意の画素のラベル番号と任意の画素の周囲に存在する３×３×２の画素集合のラベル番号とが比較されている。しかしながら、２値画像の周囲端のように、注目画素の周囲に３×３×２の画素集合が存在しない場合、存在しない画素についてのラベリング処理を回避するため、２値画像における注目画素の位置を判定する処理が別途必要になる。この結果、処理時間の短縮化は困難であると考えられる。
【００１０】
本発明の目的は、膨大なデータ量の３次元点群データの場合であっても、３次元点群データから高速に物体の形状を抽出することができる形状抽出装置及び形状抽出方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一観点によれば、３次元に分布する複数の点からなり、物体の形状を表す３次元点群データに対して、前記複数の点のすべてを包括する包括ボクセルを設定する包括ボクセル設定部と、前記複数の点のピッチよりも大きなサイズを有する複数の仮想ボクセルで前記包括ボクセルを分割する仮想ボクセル設定部と、複数の前記仮想ボクセルのそれぞれに固有の識別番号を設定する識別番号設定部と、前記識別番号が付与された前記仮想ボクセル内の前記点の有無に応じて、前記仮想ボクセルを単位として第１のラベリング処理を行い、前記点を含む前記複数の仮想ボクセルのうち、連結する前記仮想ボクセルに同一のラベル値を付与する第１のラベリング処理部とを有する形状抽出装置が提供される。
【００１２】
また、本発明の他の観点によれば、３次元に分布する複数の点からなり、物体の形状を表す３次元点群データに対して、前記複数の点のすべてを包括する包括ボクセルを設定するステップと、前記複数の点のピッチよりも大きなサイズを有する複数の仮想ボクセルで前記包括ボクセルを分割するステップと、複数の前記仮想ボクセルのそれぞれに固有の識別番号を設定するステップと、前記識別番号が付与された前記仮想ボクセル内の前記点の有無に応じて、前記仮想ボクセルを単位としてラベリング処理を行い、前記点を含む前記複数の仮想ボクセルのうち、連結する前記仮想ボクセルに同一のラベル値を付与するステップとを有する形状抽出方法が提供される。
【発明の効果】
【００１３】
本発明によれは、膨大なデータ量の３次元点群データの場合であっても、３次元点群データから高速に物体の形状を抽出することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の一実施形態による形状抽出装置の全体構成を示す概略図である。
【図２】図２は、ワークの形状を表す３次元点群データの一例を示す概略図である。
【図３】図３は、本発明の一実施形態による形状抽出装置における演算部の構成を示す概略図である。
【図４】図４は、本発明の一実施形態による形状抽出装置における包括ボクセル設定部による包括ボクセルの設定を説明する概略図である。
【図５】図５は、本発明の一実施形態による形状抽出装置における仮想ボクセル設定部による仮想ボクセルの設定を説明する概略図である。
【図６】図６は、本発明の一実施形態による形状抽出装置における周辺ボクセル設定部による周辺ボクセルの設定を説明する概略図である。
【図７】図７は、本発明の一実施形態による形状抽出装置におけるラベリング処理部によるラベリング処理の際の注目の仮想ボクセルに対する２６近傍の仮想ボクセルを示す概略図である。
【図８】図８は、本発明の一実施形態による形状抽出方法を示すフローチャートである。
【図９】図９は、本発明の一実施形態による形状抽出方法におけるラベリング処理の準備を示すフローチャートである。
【図１０】図１０は、本発明の一実施形態による形状抽出方法におけるラベリング処理を示すフローチャート（その１）である。
【図１１】図１１は、本発明の一実施形態による形状抽出方法におけるラベリング処理を示すフローチャート（その２）である。
【図１２】図１２は、本発明の一実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理を示すフローチャートである。
【図１３】図１３は、本発明の一実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理の具体例を示す概略図（その１）である。
【図１４】図１４は、本発明の一実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理の具体例を示す概略図（その２）である。
【図１５】図１５は、本発明の一実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理の具体例を示す概略図（その３）である。
【図１６】図１６は、本発明の一実施形態による形状抽出方法における分割ラベリングを説明する概略図である。
【発明を実施するための形態】
【００１５】
［一実施形態］
本発明の一実施形態による形状抽出装置及び形状抽出方法について図１乃至図１６を用いて説明する。
【００１６】
まず、本実施形態による形状抽出装置について図１乃至図７を用いて説明する。図１は、本実施形態による形状抽出装置の全体構成を示す概略図である。図２は、ワークの形状を表す３次元点群データの一例を示す概略図である。図３は、本実施形態による形状抽出装置における演算部の構成を示す概略図である。図４は、本実施形態による形状抽出装置における包括ボクセル設定部による包括ボクセルの設定を説明する概略図である。図５は、本実施形態による形状抽出装置における仮想ボクセル設定部による仮想ボクセルの設定を説明する概略図である。図６は、本実施形態による形状抽出装置における周辺ボクセル設定部による周辺ボクセルの設定を説明する概略図である。図７は、本実施形態による形状抽出装置におけるラベリング処理部によるラベリング処理の際の注目の仮想ボクセルに対する２６近傍の仮想ボクセルを示す概略図である。
【００１７】
図１に示すように、本実施形態による形状抽出装置１０は、ワーク台１２上に載置されたワーク１４の画像データを取得するセンサユニット１６と、センサユニット１６が取り付けられた多関節ロボット１８とを有している。また、本実施形態による形状抽出装置１０は、多関節ロボット１８の動作を制御するロボットコントローラ２０と、形状抽出装置１０の動作の制御、データの処理等を行う制御装置２２とを有している。
【００１８】
センサユニット１６は、ワーク１４に対してスリット状のレーザ光Ｌを照射するレーザ光源２４を有している。レーザ光源２４から出射されたレーザ光Ｌは、扇形に広がってスリット状の状態でワーク１４に照射される。レーザ光源２４は、特にその構成が限定されるものではなく、スリット状のレーザ光Ｌを照射することができるものであればよい。レーザ光源２４には、後述する制御装置２２のレーザ制御部２８が接続されており、レーザ光源２４によるレーザ光Ｌの照射がレーザ制御部２８により制御されるようになっている。
【００１９】
また、センサユニット１６は、レーザ光源２４によりレーザ光Ｌが照射されたワーク１４を撮像してワーク１４の画像データを取得する撮像装置２６を有している。撮像装置２６は、例えばＣＣＤカメラ、ＣＭＯＳカメラ等で構成することができ、特にその構成が限定されるものではないが、高解像度のものであることが好ましい。撮像装置２６には、後述する制御装置２２の画像処理部３０が接続されており、撮像装置２６により取得されたワーク１４の画像データが画像処理部３０に送られるようになっている。
【００２０】
上記レーザ光源２４及び撮像装置２６を有するセンサユニット１６は、多関節ロボット１８のアーム先端部に取り付けられている。多関節ロボット１８は、回動可能なアーム、伸縮可能なアーム、屈曲可能な関節部等を有しており、ワーク台１２上のワーク１４に対するセンサユニット１６の位置及び向きを変更することが可能になっている。多関節ロボット１８には、ロボットコントローラ２０が接続されており、ロボットコントローラ２０により多関節ロボット１８の動作が制御されるようになっている。ロボットコントローラ２０には、後述する制御装置２２が接続されている。ロボットコントローラ２２は、制御装置２２からロボットコントローラ２２に出力される制御信号に基づき、多関節ロボット１８の動作を制御する。
【００２１】
制御装置２２は、演算、制御等の処理を実行するＣＰＵを有し、また、ＣＰＵによって実行される制御プログラム、ＣＰＵが参照するデータベース等を格納するＲＯＭを有している。また、制御装置２２は、ＣＰＵが処理中のデータや入力データ等を一時的に格納するＲＡＭを有している。このようにＣＰＵ等により構成される制御装置２２は、具体的には、レーザ制御部２８と、画像処理部３０と、演算部３２と、記憶部３４とを有している。レーザ制御部２８、画像処理部３０及び演算部３２は、ＣＰＵ及びこれにより実行されるプログラムによって構成されている。
【００２２】
レーザ制御部２８は、レーザ光源２４によるレーザ光Ｌの照射を制御するものである。レーザ制御部２８は、レーザ光源２４に対して制御信号を出力することによりレーザ光源２４の点灯及び消灯を制御する。
【００２３】
画像処理部３０には、撮像装置２６により取得されたワーク１４の画像データが送られる。画像処理部３０は、撮像装置２６から送られるワーク１４の画像データを格納する画像メモリ（図示せず）を有している。画像処理部３０は、ワーク１４の画像データに対して所定の画像処理を行うことにより、ワーク１７の画像データから、ワーク１４の形状を表す３次元点群データを生成する。この３次元点群データは、不等ピッチで分布し、ワーク１４の表面上の位置情報を有する複数の点からなり、ワーク１４という物体の形状を表すものである。
【００２４】
形状抽出装置１０では、光切断法により、ワーク１４の形状を表す３次元点群データが取得される。３次元点群データを取得する際には、レーザ光源２４により、スリット状のレーザ光Ｌがワーク１４に照射される。レーザ光Ｌが照射されたワーク１４は、撮像装置２６により撮像される。こうして、撮像装置２６により、スリット状のレーザ光Ｌが照射されているワーク１４の画像データが取得される。ワーク１４の画像データは画像処理部３０に送られ、画像処理部３０の画像メモリに格納される。
【００２５】
画像処理部３０は、ワーク１４の画像データからレーザ光Ｌが照射されている部分を抽出する。さらに、画像処理部３０は、抽出した部分の画像情報に基づき、三角測量法の原理に従って、レーザ光Ｌが照射されている部分にわたって、ワーク１４の表面上における３次元的な位置を示す点の位置情報を求める。
【００２６】
形状抽出装置１０は、レーザ光源２４により照射されるレーザ光Ｌを走査し又はレーザ光Ｌとワーク１４との相対位置を変更して、ワーク１４におけるレーザ光Ｌの照射位置を変更しつつ、各照射位置について撮像装置２６によりワーク１４の撮像を繰り返す。このようにして得られたワーク１４の画像データのそれぞれに基づき、画像処理部３０は、上記のようにしてワーク１４の表面上における３次元的な位置を示す点の位置情報を求める。こうして、画像処理部３０において、ワーク１４の表面上の位置情報を有する複数の点からなり、ワーク１４の形状を表す３次元点群データが取得される。取得された３次元点群データは、制御装置２２が有する記憶部３４等の記憶手段に格納される。
【００２７】
図２は、上記のようにして取得されたワーク１４の形状を表す３次元点群データの一例を示している。３次元点群データ１４Ｄは、ワーク１４の表面上における３次元的な位置を示す複数の点により構成され、それら複数の点によりワーク１４の外形形状が表現されている。３次元点群データ１４Ｄに対しては３次元座標系が定義され、３次元点群データ１４Ｄの各点は３次元座標を有している。なお、ワーク１４は特定の部品等に限定されるものではなく、あらゆる物体をワーク１４として形状抽出の対象とすることができる。
【００２８】
演算部３２は、画像処理部３０において取得された３次元点群データ１４Ｄが入力され、その３次元点群データ１４Ｄに対し、後述する仮想ボクセルを単位とするラベリング処理を行うものである。演算部３２は、図３に示すように、包括ボクセル設定部３２０２と、仮想ボクセル設定部３２０４と、周辺ボクセル設定部３２０６と、ボクセルＩＤ設定部３２０８と、データ有無判定部３２１０と、ラベリング処理部３２１２とを有している。
【００２９】
包括ボクセル設定部３２０２は、図４に示すように、画像処理部３０において取得された３次元点群データ１４Ｄに対して、そのすべての点を包括する直方体又は立方体の包括ボクセルＶＡを設定するものである。包括ボクセルＶＡは、Ｘ軸に沿った方向を幅方向、Ｙ軸に沿った方向を高さ方向、Ｚ軸に沿った方向を奥行き方向とするものとする。包括ボクセル設定部３２０２は、３次元点群データ１４Ｄの各点について、Ｘ座標の最大値及び最小値、Ｙ座標の最大値及び最小値、及びＺ座標の最大値及び最小値をそれぞれ求める。次いで、包括ボクセル設定部３２０２は、Ｘ座標の最大値と最小値の差分を包括ボクセルＶＡの幅として計算し、Ｙ座標の最大値と最小値の差分を包括ボクセルＶＡの高さとして計算し、Ｚ座標の最大値と最小値の差分を包括ボクセルＶＡの奥行きとして計算する。
【００３０】
仮想ボクセル設定部３２０４は、図５に示すように、包括ボクセル設定部３２０２により設定された包括ボクセルＶＡを所定のサイズの直方体又は立方体の仮想ボクセルｖｉで分割する。仮想ボクセルｖｉのサイズ、すなわち仮想ボクセルｖｉの幅、高さ及び奥行きは、３次元点群データ１４Ｄの点の間のピッチよりも大きなものとし、例えば、３次元点群データ１４Ｄの点の間の最大ピッチの１．５倍とする。仮想ボクセル設定部３２０４は、仮想ボクセルｖｉのＸ方向、Ｙ方向及びＺ方向のボクセル数をそれぞれＷｉｄｔｈ個、Ｈｅｉｇｈｔ個及びＤｅｐｔｈ個として、複数の仮想ボクセルｖｉを包括ボクセルＶＡ内の３次元点群データ１４Ｄに対して設定する。後述するように、ラベリング処理部３２１２によるラベリング処理は、こうして設定された仮想ボクセルｖｉを単位として行われる。
【００３１】
周辺ボクセル設定部３２０６は、図６に示すように、仮想ボクセル設定部３２０４により設定された仮想ボクセル全体の全周囲にわたって、仮想ボクセルｖｉと同様の周辺ボクセルｖｐを１ボクセル分だけ設定する。なお、周辺ボクセルｖｐと仮想ボクセルｖｉとの関係を示すため、図６では、正面、上面及び右側面の一部について周辺ボクセルｖｐの表示を省略している。
【００３２】
周辺ボクセルｖｐは、ラベリング処理部３２１２によるラベリング処理に際して、注目する仮想ボクセルｖｉとの連結性を判定するその近傍の仮想ボクセルｖｉに含められる。これにより、ラベリング処理を行う注目の仮想ボクセルｖｉが最外周に位置するものであっても、最外周に位置することを考慮することなく他の仮想ボクセルｖｉと同様にラベリング処理を行うことができる。このように周辺ボクセルｖｐを設定することにより、ラベリング処理を行う注目の仮想ボクセルｖｉが最外周に位置するか否かの判定処理が不要になるため、ラベリング処理の高速化を図ることができる。
【００３３】
ボクセルＩＤ設定部３２０８は、仮想ボクセル設定部３２０４により設定された複数の仮想ボクセルｖｉのそれぞれに対して、固有の識別番号（ＩＤ番号）を付与するものである。仮想ボクセルｖｉに付与する識別番号は、仮想ボクセルｖｉのそれぞれに固有のものであれば特に限定されるものではないが、仮想ボクセルｖｉの全部について又は仮想ボクセルｖｉの一定数毎について連続する番号であって、簡単な計算式で求められるものが好ましい。具体的には、仮想ボクセルｖｉのボクセル座標を（Ｘｉ，Ｙｉ，Ｚｉ）（ただし、Ｘｉは０≦Ｘｉ≦Ｗｉｄｔｈ−１を満たす整数、Ｙｉは０≦Ｙｉ≦Ｈｅｉｇｈｔ−１を満たす整数、Ｚｉは０≦Ｚｉ≦Ｄｅｐｔｈ−１を満たす整数である。）とすると、仮想ボクセルｖｉに付与する識別番号ＶｏｘｅｌＩＤは、例えば、次式により求めることができる。なお、次式では、仮想ボクセルｖｉの全周囲にわたって設定された周辺ボクセルｖｐがＸ方向、Ｙ方向及びＺ方向の各方向に２ボクセルずつ存在することを考慮し、周辺ボクセルｖｐも識別番号ＶｏｘｅｌＩＤのカウントに含めたものである。次式における識別番号ＶｏｘｅｌＩＤは、（Ｗｉｄｔｈ＋２）×（Ｈｅｉｇｈｔ＋２）＋（Ｗｉｄｔｈ＋２）＋１以上の整数となる。
ＶｏｘｅｌＩＤ＝（Ｚｉ＋１）×｛（Ｗｉｄｔｈ＋２）×（Ｈｅｉｇｈｔ＋２）｝
＋（Ｙｉ＋１）×（Ｗｉｄｔｈ＋２）
＋（Ｘｉ＋１）
【００３４】
また、次式によりＶｏｘｅｌＩＤを求めることもできる。
ＶｏｘｅｌＩＤ＝（Ｘｉ＋１）×｛（Ｈｅｉｇｈｔ＋２）×（Ｄｅｐｔｈ＋２）｝
＋（Ｚｉ＋１）×（Ｈｅｉｇｈｔ＋２）
＋（Ｙｉ＋１）
【００３５】
また、次式によりＶｏｘｅｌＩＤを求めることもできる。
ＶｏｘｅｌＩＤ＝（Ｙｉ＋１）×｛（Ｄｅｐｔｈ＋２）×（Ｗｉｄｔｈ＋２）｝
＋（Ｘｉ＋１）×（Ｄｅｐｔｈ＋２）
＋（Ｚｉ＋１）
【００３６】
上記識別番号ＶｏｘｅｌＩＤを求める３式は、３次元点群データにおけるデータの生成順等に応じて選定することができる。例えば、上記３式のうち、１番目の式は、Ｘ方向及びＹ方向にデータが生成され、次いでＺ方向にデータが定まる場合に好適に用いることができる。２番目の式は、Ｙ方向及びＺ方向にデータが生成され、次いでＸ方向にデータが定まる場合に好適に用いることができる。３番目の式は、Ｚ方向及びＸ方向にデータが生成され、次いでＹ方向にデータが定まる場合に好適に用いることができる。
【００３７】
データ有無判定部３２１０は、複数の仮想ボクセルｖｉのそれぞれについて、仮想ボクセルｖｉ内に３次元点群データ１４Ｄの点が存在するか否かを判定する。判定の結果、データ有無判定部３２１０は、３次元点群データ１４Ｄの点が存在する仮想ボクセルｖｉには、点の存在を示す値である「１」を付与する。また、データ有無判定部３２１０は、３次元点群データ１４Ｄの点が存在しない仮想ボクセルｖｉには、点の不存在を示す値である「０」を付与する。データ有無判定部３２１０により仮想ボクセルｖｉに対して３次元点群データ１４Ｄの点の存否に応じた値を付与することにより、３次元点群データ１４Ｄの点の存在しない背景部分を３次元点群データ１４Ｄから取り除くことができる。これにより、３次元点群データ１４Ｄからワーク１４の形状を高速に抽出することが可能になる。
【００３８】
ラベリング処理部３２１２は、識別番号が付与された仮想ボクセルｖｉ内の３次元点群データ１４Ｄの点の有無に応じて、仮想ボクセルｖｉを単位としてラベリング処理を行うものである。具体的には、ラベリング処理部３２１２は、データ有無判定部３２１０により値「１」が付与された複数の仮想ボクセルｖｉに対してラベリング処理を行う。
【００３９】
ラベリング処理に際し、ラベリング処理部３２１２は、図７に示すように、注目する仮想ボクセルｖｉ（図７中、網掛けした立方体で示す。）について、その周辺の２６近傍に位置する仮想ボクセルｖｉ（図７中、破線の立方体で示す。）との連結関係を判定する。その結果、ラベリング処理部３２１２は、点の存在を示す値「１」が付与された仮想ボクセルｖｉについて、連結する仮想ボクセルｖｉに同一のラベル値を付与する。
【００４０】
また、ラベリング処理部３２１２は、仮想ボクセル全体を所定のボクセル数の仮想ボクセルｖｉからなる仮想ボクセル群に分割し、各仮想ボクセル群についてのラベリング処理を並列処理することも可能である。並列処理によりラベリング処理の高速化を図ることができる。なお、仮想ボクセルの分割数は、特に限定されるものではなく、３次元点群データ１４Ｄのデータ量、演算部３２の演算速度等に応じて適宜設定することができる。
【００４１】
また、ラベリング処理を並列処理する場合には、ラベリング処理部３２１２は、各仮想ボクセル群についてのラベリング処理の並列処理の後、仮想ボクセル群の間の接合面に隣接する複数の仮想ボクセルｖｉについてラベリング処理を行う。これにより、ラベリング処理部３２１２は、分割した仮想ボクセル群の間の接合面を跨ぐ仮想ボクセルｖｉ間の連結関係を判定する。
【００４２】
記憶部３４は、３次元点群データ１４Ｄが格納される記憶領域、識別番号等の仮想ボクセルｖｉに関する情報が格納される記憶領域、仮想ボクセルｖｉ間の連結関係を示す連結テーブルが格納される記憶領域等を有するものである。
【００４３】
以下、本実施形態による上記形状抽出装置１０を用いた形状抽出方法についてさらに図８乃至図１６を用いて説明する。図８は、本実施形態による形状抽出方法を示すフローチャートである。図９は、本実施形態による形状抽出方法におけるラベリング処理の準備を示すフローチャートである。図１０及び図１１は、本実施形態による形状抽出方法におけるラベリング処理を示すフローチャートである。図１２は、本実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理を示すフローチャートである。図１３乃至図１５は、本実施形態による形状抽出方法におけるラベリング処理の際のラベル値の付与処理の具体例を示す概略図である。図１６は、本実施形態による形状抽出方法における分割ラベリングを説明する概略図である。
【００４４】
まず、形状抽出の対象となるワーク１４をワーク台１２上に載置する。次いで、レーザ光源２４により照射されるレーザ光Ｌを走査し又はレーザ光Ｌとワーク１４との相対位置を変更して、ワーク１４におけるレーザ光Ｌの照射位置を変更しつつ、各照射位置について撮像装置２６によりワーク１４の撮像を繰り返す。
【００４５】
上記のようにして得られたワーク１４の画像データのそれぞれに基づき、画像処理部３０により、三角測量法の原理に従って、ワーク１４の表面上における３次元的な位置を示す点の位置情報を求める。こうして、画像処理部３０において、ワーク１４の形状を表す３次元点群データ１４Ｄを取得する（図８：ステップＳ１）。取得された３次元点群データ１４Ｄは、記憶部３４に格納され、ラベリング処理に際して演算部３２に読み出されることになる。
【００４６】
次に、取得した３次元点群データ１４Ｄのデータ量等に応じたラベリング処理の準備を行う（図８：ステップＳ２）。ラベリング処理の準備の詳細は、以下に述べるとおりである。
【００４７】
まず、仮想ボクセル設定部３２０４において、仮想ボクセルｖｉのサイズ、すなわち仮想ボクセルｖｉの幅、高さ及び奥行きを設定する（図９：ステップＳ１１）。仮想ボクセルｖｉの幅、高さ及び奥行きは、要求されるラベリング処理の分解能等に応じて適宜設定することができるが、３次元点群データ１４Ｄの点の間のピッチよりも大きくなるように設定する。
【００４８】
次いで、包括ボクセル設定部３２０２において、３次元点群データ１４Ｄのすべての点を包括する包括ボクセルＶＡのサイズ、すなわち包括ボクセルＶＡの幅、高さ及び奥行きを設定する（図９：ステップＳ１２）。なお、包括ボクセルＶＡの幅、高さ及び奥行きは、それぞれステップＳ１１にて設定した仮想ボクセルｖｉの幅、高さ及び奥行きの整数倍になるように設定する。
【００４９】
次いで、仮想ボクセル設定部３２０４において、上記仮想ボクセルｖｉ及び包括ボクセルＶＡのサイズに基づき、仮想ボクセルｖｉのＸ方向、Ｙ方向及びＺ方向のボクセル数であるＷｉｄｔｈ、Ｈｅｉｇｈｔ及びＤｅｐｔｈをそれぞれ計算する（図９：ステップＳ１３）。計算したＷｉｄｔｈ、Ｈｅｉｇｈｔ及びＤｅｐｔｈは、仮想ボクセルｖｉの識別番号の計算に用いられる。
【００５０】
次いで、記憶部３４に、識別番号等の仮想ボクセルｖｉに関する情報を格納する記憶領域を確保する（図９：ステップＳ１４）。
【００５１】
次いで、記憶部３４に、仮想ボクセルｖｉの連結関係を示す連結テーブルを格納する記憶領域を確保する（図９：ステップＳ１５）。連結テーブルには、仮想ボクセルｖｉの識別番号に対応してラベル値が保存される。
【００５２】
次いで、ラベリング処理を分割して並列処理する分割ラベリングを行うか否かを決定し、分割ラベリングを行う場合には、仮想ボクセル全体を複数の仮想ボクセル群に分割する分割数を設定する（図９：ステップＳ１６）。分割ラベリングを行わない場合には、分割数に１を設定し、分割ラベリングを行う場合には、分割数に２以上の整数を設定する。
【００５３】
こうして、ステップＳ２のラベリング処理の準備を終了する。
【００５４】
次に、仮想ボクセルｖｉを単位とするラベリング処理を行う（図８：ステップＳ３）。ラベリング処理の詳細は、以下に述べるとおりである。
【００５５】
まず、上記ステップＳ１にて取得した３次元点群データ１４Ｄを演算部３２に読み込む（図１０：ステップＳ２１）。
【００５６】
次いで、包括ボクセル設定部３２０２により、３次元点群データ１４Ｄに対して、上記ステップＳ１２にてサイズを設定した包括ボクセルＶＡを設定する（図１０：ステップＳ２２）。
【００５７】
次いで、仮想ボクセル設定部３２０４により、包括ボクセルＶＡに対して、上記ステップＳ１１にてサイズを設定した仮想ボクセルｖｉを設定して、仮想ボクセルｖｉで包括ボクセルＶＡを分割する（図１０：ステップＳ２３）。
【００５８】
次いで、周辺ボクセル設定部３２０６により、仮想ボクセル全体の全周囲にわたって、仮想ボクセルｖｉと同様の周辺ボクセルｖｐを１ボクセル分だけ設定する（図１０：ステップＳ２４）。
【００５９】
次いで、ボクセルＩＤ設定部３２０８により、各仮想ボクセルｖｉに識別番号を付与する（図１０：ステップＳ２５）。識別番号は、連続する番号とすることができ、例えば、上述した識別番号ＶｏｘｅｌＩＤを計算する式に従って計算することができる。
【００６０】
次いで、データ有無判定部３２１０により、各仮想ボクセルｖｉ内における３次元点群データ１４Ｄの点の有無を判定する（図１０：ステップＳ２６）。判定の結果、３次元点群データ１４Ｄの点が存在する仮想ボクセルｖｉには、点の存在を示す値である「１」を付与し、存在しない仮想ボクセルｖｉには、点の不存在を示す値である「０」を付与する。これにより、３次元点群データ１４Ｄから、その点が存在しない背景部分を高速に除去することができる。
【００６１】
ラベリング処理では、値「１」が付与された仮想ボクセルｖｉを対象にラベリングが行われ、値「１」は、ラベリング処理が行われていないことを示す未ラベル値として扱われる。ここで付与された値「０」又は「１」は、仮想ボクセルｖｉの識別番号と対応付けられて記憶部３４に保存される。
【００６２】
次いで、上記ステップＳ１６で設定されたラベリング処理の分割数が１であるか否かを判定する（図１０：ステップＳ２７）。
【００６３】
分割数が１である場合、すなわちラベリング処理の分割を行わない場合（ステップＳ２７、ＹＥＳ）、そのままラベル値の付与処理（図１０：ステップＳ３０）に移行する。
【００６４】
一方、２以上の分割数が設定されており、分割数が１でない場合（ステップＳ２７、ＮＯ）、分割した各仮想ボクセル群について、先頭の仮想ボクセルｖｉの識別番号及びボクセル数を保存する（図１０：ステップＳ２８）。次いで、分割した仮想ボクセル群のラベリングを並列処理するためのスレッドを起動する（図１０：ステップＳ２９）。次いで、ラベル値の付与処理（図１０：ステップＳ３０）に移行し、スレッド毎に各仮想ボクセル群についてラベル値の付与処理を行う。
【００６５】
ステップＳ３０のラベル値の付与処理は、ラベリング処理部３２１２により、対象となる仮想ボクセルｖｉについてラベル値の付与を行うものである。対象となる仮想ボクセルｖｉは、分割ラベリングを行わない場合には仮想ボクセル全体であり、分割ラベリングを行う場合には分割した仮想ボクセル群に含まれる仮想ボクセルｖｉである。以下、このラベル値の付与処理の詳細について述べる。
【００６６】
まず、未ラベル値「１」が付与されている注目の仮想ボクセルｖｉ及びその２６近傍の仮想ボクセルｖｉの位置を特定する（図１２：ステップＳ４１）。
【００６７】
次いで、２６近傍の仮想ボクセルｖｉに付与されているラベル値のうちの最小値である最小ラベル値を探索する（図１２：ステップＳ４２）。なお、値「１」が未ラベル値として扱われ、ラベル値としては２以上の整数が付与される。このため、ここで探索される最小ラベル値は、２以上の整数である。この探索により発見された最小ラベル値は、記憶部３４に一時的に格納される。
【００６８】
次いで、２６近傍の仮想ボクセルｖｉのなかに、既にラベルが付与されたラベル済みのものがあるか否かを判定する（図１２：ステップＳ４３）。
【００６９】
ラベル済みの仮想ボクセルｖｉがない場合（ステップＳ４３、ＮＯ）、注目の仮想ボクセルｖｉの識別番号を、その注目の仮想ボクセルｖｉのラベル値とする（図１２：ステップＳ４４）。注目の仮想ボクセルｖｉの識別番号に対応付けられて保存されている未ラベル値「１」は、ラベル値としてその注目の仮想ボクセルｖｉの識別番号に書き換えられる。その後、図１２：ステップＳ４６に移行する。
【００７０】
一方、ラベル済みの仮想ボクセルｖｉがある場合（ステップＳ４３、ＹＥＳ）、上記ステップＳ４２にて探索により発見した最小ラベル値を、注目の仮想ボクセルｖｉのラベル値とする（図１２：ステップＳ４５）。注目の仮想ボクセルｖｉの識別番号に対応付けられて保存されている未ラベル値「１」は、ラベル値として最小ラベル値に書き換えられる。その後、図１２：ステップＳ４６に移行する。
【００７１】
ステップＳ４６では、注目の仮想ボクセルｖｉに対する２６近傍の仮想ボクセルｖｉのなかに、未ラベル値「１」が付与されている未ラベルの仮想ボクセルｖｉがあるか否かを判定する。
【００７２】
未ラベルの仮想ボクセルｖｉがある場合（ステップＳ４６、ＹＥＳ）、上記ステップＳ４２にて探索により発見した最小ラベル値を、その未ラベルの仮想ボクセルｖｉのラベル値とする（ステップＳ４７）。その未ラベルの仮想ボクセルｖｉの識別番号に対応付けられて保存されている未ラベル値「１」は、ラベル値として最小ラベル値に書き換えられる。なお、２６近傍の仮想ボクセルｖｉにラベル済みのものがなく、上記ステップ４２において最小ラベル値が発見されていない場合がある。この場合、未ラベルの仮想ボクセルｖｉのラベル値は、上記ステップＳ４４にて付与した注目の仮想ボクセルｖｉのラベル値と同じものとして、その未ラベル値「１」がそのラベル値に書き換えられる。その後、図１２：ステップＳ４８に移行する。
【００７３】
一方、未ラベルの仮想ボクセルｖｉがない場合（ステップＳ４６、ＮＯ）、そのまま図１２：ステップＳ４８に移行する。
【００７４】
ステップＳ４８では、注目の仮想ボクセルｖｉに対する２６近傍の仮想ボクセルのすべてのラベル値が、上記ステップＳ４２にて探索により発見した最小ラベル値になっているか否かを判定する。
【００７５】
最小ラベル値になっていない場合（ステップＳ４８、ＮＯ）、異なるラベル値が付与された仮想ボクセルｖｉが連結していることになるため、連結テーブルにそれらの異なるラベル値を関連付けて保存する（図１２：ステップＳ４９）。連結テーブルには、ラベル値として用いられた仮想ボクセルｖｉの識別番号と、その仮想ボクセルｖｉに連結する仮想ボクセルｖｉのラベル値とを関連づけて保存することができ、これによりラベル済みの仮想ボクセルｖｉの間の連結情報を保存することができる。より具体的には、連結テーブルは、ラベル値として用いられた仮想ボクセルｖｉの識別番号に対応する順番の値として、その仮想ボクセルｖｉに連結する仮想ボクセルｖｉのラベル値を保存することができるようになっている。この点については、後述する図１３乃至図１５に示す具体例を用いて詳述する。その後、図１２：ステップＳ５０に移行する。なお、上記ステップＳ４２において最小ラベル値が発見されていない場合には、そのまま図１２：ステップＳ５０に移行する。
【００７６】
一方、最小ラベル値になっている場合（ステップＳ４８、ＹＥＳ）、そのまま図１２：ステップＳ５０に移行する。
【００７７】
ステップＳ５０では、ラベル値の付与の対象となっている仮想ボクセルｖｉのすべてについて、ラベル値を付与する処理を終了したか否かを判定する。
【００７８】
対象となる仮想ボクセルｖｉのすべてについてラベル値の付与を終了していない場合（ステップＳ５０、ＮＯ）、ラスタースキャン方式により注目の仮想ボクセルｖｉを変更する（図１２：ステップＳ５１）。その後、ステップＳ４１に戻り、ラベル値の付与を継続する。
【００７９】
一方、対象となる仮想ボクセルｖｉのすべてについてラベル値の付与を終了している場合（ステップＳ５０、ＹＥＳ）、ラベル値の付与処理を完了する。
【００８０】
ここで、上記ラベル値の付与処理の具体例について図１３乃至図１５を用いて説明する。図１３乃至図１５では、グレーで示す注目の仮想ボクセルｖｉに対して、２６近傍の仮想ボクセルｖｉのうち、前面側の９個のボクセル（Ｆｒｏｎｔ）、中央周囲８個のボクセル（Ｃｕｒｒｅｎｔ）、背面側の９個のボクセル（Ｂａｃｋ）を示している。
【００８１】
まず、図１３に示す２６近傍の仮想ボクセルｖｉについて、ラベル済みのボクセルがあるか否かを判定する（ステップＳ４３）。図１３に示す場合、ラベル値として「９１」、「９７」が付与されたボクセルが存在している。「９１」＜「９７」であり、２６近傍の仮想ボクセルｖｉにおける最小ラベル値は「９１」であるため、注目の仮想ボクセルｖｉにラベル値として最小ラベル値である「９１」を付与する（ステップＳ４５）。
【００８２】
次いで、図１３に示す２６近傍の仮想ボクセルｖｉについて、未ラベルのボクセルがあるか否かを判定する（ステップＳ４６）。図１３に示す場合、未ラベル値「１」が付与されている未ラベルのボクセルが２個存在している。そこで、図１４に示すように、これら未ラベルのボクセルにラベル値として最小ラベル値である「９１」をそれぞれ付与する（ステップＳ４７）。
【００８３】
こうして、図１５に示すように、注目の仮想ボクセルｖｉ及びその２６近傍の仮想ボクセルｖｉについてラベル値が付与される。ここで、２６近傍の仮想ボクセルｖｉがすべて最小ラベル値か否かを判定する（ステップＳ４８）。図１５に示す場合、注目の仮想ボクセルｖｉに付与された最小ラベル値である「９１」ではない「９７」が付与されたボクセルが存在している。この「９７」が付与されたボクセルが「９１」が付与された注目の仮想ボクセルｖｉと連結していることを示す連結情報を連結テーブルＬＵＴに保存するため、連結テーブルＬＵＴの９７番目の値として「９１」を保存する（ステップＳ４９）。このようにして、仮想ボクセルｖｉの間の連結情報が連結テーブルＬＵＴに保存される。
【００８４】
上記のようにしてステップＳ３０においてラベル値を付与した後、ラベリング処理の分割数が１であるか否かを判定する（図１１：ステップＳ３１）。
【００８５】
分割数が１である場合、すなわちラベリング処理の分割を行わない場合（ステップＳ３１、ＹＥＳ）、そのまま図１１：ステップＳ３５に移行する。
【００８６】
一方、２以上の分割数が設定されており、分割数が１でない場合（ステップＳ３１、ＮＯ）、分割した各仮想ボクセル群が接合する接合面の数を確定する（図３２：ステップＳ３２）。接合面の数は、上記ステップＳ１６にて設定した分割数から１を引いた値である。同時に、接合面に隣接する複数の仮想ボクセルｖｉについて、先頭の仮想ボクセルｖｉの識別番号及びボクセル数を保存する。
【００８７】
次いで、ラベル値の付与処理（図１１：ステップＳ３３）に移行し、接合面に隣接する複数の仮想ボクセルｖｉについてラベル値の付与処理を行う。ステップＳ３３のラベル値の付与処理は、上述した図１２に示すステップＳ４１〜Ｓ５１を有するものであり、対象となる仮想ボクセルｖｉについてラベル値の付与を行う。ここで対象となる仮想ボクセルｖｉは、接合面に隣接する複数の仮想ボクセルｖｉである。接合面に隣接する複数の仮想ボクセルｖｉについてラベル値の付与を行うことにより、分割した仮想ボクセル群の間の接合面を跨ぐ仮想ボクセルｖｉ間の連結関係がラベリング処理の結果に反映される。
【００８８】
ステップＳ３３においてラベルの付与処理を完了した後、接合面すべてに関し、接合面に隣接する複数の仮想ボクセルｖｉについてラベル値の付与の処理を終了したか否かを判定する（図１１：ステップＳ３４）。
【００８９】
接合面すべてに関しラベル値の付与処理を終了していない場合（ステップＳ３４、ＮＯ）、ステップＳ３３に戻り、他の接合面に関しラベルの付与処理を行う。
【００９０】
一方、接合面すべてに関しラベル値の付与処理を終了した場合（ステップＳ３４、ＹＥＳ）、図１１：ステップＳ３５に移行する。
【００９１】
ここで、分割ラベリングの例について図１６を用いて説明する。図１６は、分割数を３として分割ラベリングを行う場合を示している。図１６（ａ）に示すように、仮想ボクセル全体を複数の仮想ボクセル群Ｇ１、Ｇ２、Ｇ３に分割する。そして、仮想ボクセル群Ｇ１、Ｇ２、Ｇ３についてのラベリング処理を並列処理し、それぞれのラベリング処理の結果を連結テーブルＬＵＴに保存する。
【００９２】
次に、図１６（ｂ）に示すように、仮想ボクセル群Ｇ１と仮想ボクセル群Ｇ２との接合面に隣接する複数の仮想ボクセルＪ１についてラベリング処理を行う。また、仮想ボクセル群Ｇ２と仮想ボクセル群Ｇ３との接合面に隣接する複数の仮想ボクセルＪ２についてラベリング処理を行う。これら複数の仮想ボクセルＪ１、Ｊ２のラベリング処理の結果を連結テーブルＬＵＴに反映させることにより、接合面を跨ぐ仮想ボクセルｖｉの連結関係をラベリング処理の結果に反映させることができる。
【００９３】
上記のようにしてラベル値の付与処理を行った後、ステップＳ３５では、連結テーブルにおいて、仮想ボクセルｖｉの識別番号と、その仮想ボクセルｖｉのラベル値とが一致しているかを判定する。この判定は、ラベル値を付与した仮想ボクセルｖｉの順序とは逆順に行っていく。図１６に示す場合には、図１６（ｃ）に示すように、連結テーブルＬＵＴを逆順に探索していく。
【００９４】
注目の仮想ボクセルｖｉの識別番号とこれに対応するラベル値とが一致していない場合（ステップＳ３５、ＮＯ）、そのラベル値と同一の識別番号を逆順に遡って参照する。参照した識別番号とこれに対応するラベル値が一致しない場合には、さらに、そのラベル値と同一の識別番号を逆順に遡って参照し、これを繰り返して、識別番号とこれに対応するラベル値とが一致するものを探索する。探索した結果、識別番号とこれに対応するラベル値とが一致する仮想ボクセルｖｉが発見されたら、そのラベル値を、識別番号とラベル値とが一致していない注目の仮想ボクセルｖｉのラベル値として、連結テーブルを書き換える（図１１：ステップＳ３６）。その後、ステップＳ３５の判定を繰り返す。
【００９５】
一方、識別番号とラベル値とが一致している場合（ステップＳ３５、ＹＥＳ）、連結関係のすべてが完成し、連結テーブルが完成したかを判定する（ステップＳ３７）。
【００９６】
連結テーブルが完成していない場合（ステップＳ３７、ＮＯ）、ステップＳ３５の判定を繰り返す。
【００９７】
一方、連結テーブルが完成した場合（ステップＳ３７、ＹＥＳ）、ステップＳ３のラベリング処理を終了する。
【００９８】
以上のようにして、仮想ボクセルｖｉを単位とするラベリング処理を行うことにより、ワーク１４の形状が抽出される。
【００９９】
本実施形態によれば、３次元点群データ１４Ｄについて、仮想ボクセルｖｉを単位とすするラベリング処理を行うため、３次元点群データ１４Ｄのデータ量が膨大であっても、ラベリング処理を高速に行うことができる。したがって、本実施形態によれば、ワーク１４の形状を高速に抽出することができる。しかも、ラベリング処理の単位が仮想ボクセルｖｉであるため、３次元点群データ１４Ｄの点が不等ピッチで分布するものであっても、ラベリング処理を行うことができる。
【０１００】
また、本実施形態によれば、仮想ボクセルｖｉに固有の識別番号を付与し、識別番号に基づいてラベリング処理を行うため、識別番号の数を超えるラベル値の数を確保する必要がない。したがって、本実施形態によれば、ラベリング処理における負担を軽減することができる。
【０１０１】
また、本実施形態によれば、仮想ボクセル全体を分割した仮想ボクセル群のラベリング処理を並列処理することにより、ラベリング処理のさらなる高速化を図ることができる。
【０１０２】
なお、上記のように仮想ボクセルｖｉを単位とするラベリング処理を行った後、所定の仮想ボクセルｖｉに含まれる３次元点群データの複数の点についてラベリング処理を別個に行うこともできる。この場合、上記仮想ボクセルｖｉを単位とするラベリング処理を行うラベリング処理部３２１２を第１のラベリング処理部として、演算部３２は、この３次元点群データの複数の点についてのラベリング処理を行う第２のラベリング処理部をさらに有するものとすることができる。なお、第２のラベリング処理部によるラベリング処理には常法を用いることができる。このように、第１のラベリング処理部による仮想ボクセルｖｉを単位とする第１のラベリング処理と、第２のラベリング処理部による３次元点群データの複数の点についての第２のラベリング処理とを順次行うこともできる。
【０１０３】
また、上記本実施形態による形状抽出方法は、アルミニウム鋳造品等の部品を製造する部品の製造方法において、部品となるワークを得た後、そのワークの形状における欠陥検査に利用することができる。この場合、本実施形態による形状抽出方法を用い、検査対象のワークについてラベリング処理の結果を得る。次いで、検査対象のワークについて得られたラベリング処理の結果を、良品であるワークについて得られたラベリング処理の結果、設計データに基づくラベリング処理の結果等の基準結果と比較する。この比較結果に基づき、検査対象であるワークの形状における欠陥部分を検出することができる。
【０１０４】
［変形実施形態］
上記実施形態に限らず、種々の変形が可能である。
【０１０５】
例えば、上記実施形態では、光切断法により３次元点群データを取得する場合について説明したが、３次元点群データの取得方法は特に限定されるものではなく、光切断法のほか、種々の方法を用いることができる。また、３次元点群データは、必ずしも不等ピッチでその点が分布するものである必要はなく、等ピッチでその点が分布するものであってもよい。
【０１０６】
また、上記実施形態では、注目の仮想ボクセルｖｉに対して、２６近傍の仮想ボクセルｖｉとの連結関係を判定する場合について説明したが、演算部３２の処理能力、要求される精度等に応じて、１８近傍、６近傍の仮想ボクセルｖｉとの連結関係を判定してもよい。
【符号の説明】
【０１０７】
１０・・・形状抽出装置
１２・・・ワーク台
１４・・・ワーク
１４Ｄ・・・３次元点群データ
１６・・・センサユニット
１８・・・多関節ロボット
２０・・・ロボットコントローラ
２２・・・制御装置
２４・・・レーザ光源
２６・・・撮像装置
２８・・・レーザ制御部
３０・・・画像処理部
３２・・・演算部
３２０２・・・包括ボクセル設定部
３２０４・・・仮想ボクセル設定部
３２０６・・・周辺ボクセル設定部
３２０８・・・ボクセルＩＤ設定部
３２１０・・・データ有無判定部
３２１２・・・ラベリング処理部
３４・・・記憶部
ＶＡ・・・包括ボクセル
ｖｉ・・・仮想ボクセル
ｖｐ・・・周辺ボクセル
【図１】
2016003886.tif 000003
【図２】
2016003886.tif 000004
【図３】
2016003886.tif 000005
【図４】
2016003886.tif 000006
【図５】
2016003886.tif 000007
【図６】
2016003886.tif 000008
【図７】
2016003886.tif 000009
【図８】
2016003886.tif 000010
【図９】
2016003886.tif 000011
【図１０】
2016003886.tif 000012
【図１１】
2016003886.tif 000013
【図１２】
2016003886.tif 000014
【図１３】
2016003886.tif 000015
【図１４】
2016003886.tif 000016
【図１５】
2016003886.tif 000017
【図１６】
2016003886.tif 000018