(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024015880
(43)【公開日】2024-02-06
(54)【発明の名称】三次元点群データ処理システム
(51)【国際特許分類】
G06T 7/593 20170101AFI20240130BHJP
【FI】
G06T7/593
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022118246
(22)【出願日】2022-07-25
(71)【出願人】
【識別番号】000149066
【氏名又は名称】オークマ株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】弁理士法人YKI国際特許事務所
(72)【発明者】
【氏名】廣田 重元
(72)【発明者】
【氏名】片岡 章人
(72)【発明者】
【氏名】大友 隆行
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096CA04
5L096FA02
5L096KA04
(57)【要約】 (修正有)
【課題】より少ない計算量で点群データを生成できる三次元点群データ処理システムを提供する。
【解決手段】三次元点群データ処理システム10は、対象物100を撮像して、1以上の輝度情報32を取得する1以上のカメラを有する撮像ユニット22と、1以上の輝度情報32から対象物100の点群データを算出するコントローラ12と、を備える。コントローラ12は、1以上の輝度情報32の少なくとも一つから、対象物100を取り囲むとともに1以上の矩形を組み合わせて成る少なくとも一つのバウンディングボックスを算出し、少なくとも一つのバウンディングボックスと、1以上の輝度情報32と、に基づいて点群データを算出する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
対象物を撮像して、1以上の輝度情報を取得する1以上の撮像器と、
前記1以上の輝度情報から前記対象物の三次元点群データを算出するコントローラと、
を備え、前記コントローラは、
前記1以上の輝度情報の少なくとも一つから、前記対象物を取り囲むとともに1以上の矩形を組み合わせて成る少なくとも一つのBBを算出し、
前記少なくとも一つのBBと、前記1以上の輝度情報と、に基づいて前記三次元点群データを算出する、
ように構成されている、ことを特徴とする三次元点群データ処理システム。
【請求項2】
請求項1に記載の三次元点群データ処理システムであって、
前記1以上の輝度情報は、前記対象物を第一方向から撮像した第一輝度情報と、前記対象物を前記第一方向と異なる第二方向から撮像した第二輝度情報と、を含む、ことを特徴とする三次元点群データ処理システム。
【請求項3】
請求項2に記載の三次元点群データ処理システムであって、
前記コントローラは、
前記第二輝度情報から、前記対象物を取り囲む第二BBと、前記第二BBを前記第二方向に押し出した第二BB押し出し空間と、を算出し、
前記第一輝度情報から算出される点のうち、前記第二BB押し出し空間の外側の点をノイズとして除去する、
ように構成されている、ことを特徴とする三次元点群データ処理システム。
【請求項4】
請求項1から3のいずれか1項に記載の三次元点群データ処理システムであって、
前記1以上の輝度情報は、前記対象物を第一方向から撮像した前記第一輝度情報を含み、
前記コントローラは、
前記第一輝度情報に基づいて、前記対象物を囲む第一BBを算出し、
前記第一輝度情報を構成する複数の画素値のうち、前記第一BBの外側に位置する画素値をノイズとして除去し、除去後の第一輝度情報に基づいて、前記三次元点群データを算出する、
ように構成されている、ことを特徴とする三次元点群データ処理システム。
【請求項5】
請求項1または2に記載の三次元点群データ処理システムであって、
前記コントローラは、少なくとも前記少なくとも一つのBBと前記1以上の輝度情報を入力とし、前記1以上の輝度情報を構成する複数の画素それぞれにおける有効点の有無を出力として、予め機械学習させたAIとして機能するように構成されている、ことを特徴とする三次元点群データ処理システム。
【請求項6】
請求項1または2に記載の三次元点群データ処理システムであって、
前記コントローラは、少なくとも前記少なくとも一つのBBと前記1以上の輝度情報を入力とし、三次元空間を三次元マトリクス状に区切って成る複数の格子空間それぞれにおける有効点の有無を出力として、予め機械学習させたAIとして機能するように構成されている、ことを特徴とする三次元点群データ処理システム。
【請求項7】
請求項3に記載の三次元点群データ処理システムであって、
前記1以上の輝度情報は、さらに、1以上の追加の輝度情報を含み、
前記コントローラは、前記1以上の追加の輝度情報から算出される1以上の追加のBBと、前記第二BBと、前記第一輝度情報と、に基づき前記三次元点群データを算出する、ように構成されている、ことを特徴とする三次元点群データ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、対象物を撮像して得られる画像データから、対象物の三次元形状を示す三次元点群データを生成する三次元点群データ処理システムを開示する。
【背景技術】
【0002】
近年、対象物を撮像して得られた画像データに基づいて、対象物の三次元形状を示す三次元点群データ(以下「点群データ」と略す)を生成する技術が提案されている。かかる点群データは、例えば、工作機械において、加工対象物の三次元形状の測定に利用でき、この形状測定の結果は、工具と加工対象物との干渉検知や、工具の経路生成、加工精度の測定、物の有無判定等に利用できる。
【0003】
ところで、点群データを生成する際には、画像データから物体の表面を示す点を抽出して得られた点のデータ(以下、画像データから抽出された点データを「一次点データ」と呼ぶ)を、ワールド座標系(システムごとにただ一つの座標系、工作機械の場合は例えば機械座標系やワーク座標系とすればよい)に変換する。ただし、画像データから抽出した一次点データの中には、対象物とは無関係の点、すなわち、ノイズも多く含まれている。かかるノイズが多量に存在すると、対象物の形状を正確に把握できず、また、データサイズが非常に大きくなる。そのため、従来から、点群データからノイズを除去するための技術が多数提案されている。
【0004】
例えば、特許文献1には、対象物の設計形状データを予め記憶しておき、この設計形状データと点群データとを比較し、点群データからノイズを除去する技術が開示されている。
【0005】
また、特許文献2は、点群データから、XZ断面図を作成し、XZ断面から地層表面を推定し、地層以下の点をノイズとして除去する技術が提案されている。また、特許文献3には、点群データを回転させ、回転させたデータから地層表面を割り出し、地層表面から標準偏差の大きい点群を、ノイズとして除去する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2020-144686号公報
【特許文献2】国際公開第2015/061400号公報
【特許文献3】特開2005-024370号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1は、予め、設計形状データを有している必要があり、設計形状データがない対象物については、点群データを生成することが難しい。また、特許文献2,3では、地層の推定、および、標準偏差の算出のための計算量が多くなり、ノイズ除去処理に時間がかかるという問題があった。
【0008】
そこで、本明細書では、より少ない計算量で点群データを生成できる三次元点群データ処理システムを開示する。
【課題を解決するための手段】
【0009】
本明細書で開示する三次元点群データ処理システムは、対象物を撮像して、1以上の輝度情報を取得する1以上の撮像器と、前記1以上の輝度情報から前記対象物の三次元点群データを算出するコントローラと、を備え、前記コントローラは、前記1以上の輝度情報の少なくとも一つから、前記対象物を取り囲むとともに1以上の矩形を組み合わせて成る少なくとも一つのBB(バウンティングボックス)を算出し、前記少なくとも一つのBBと、前記1以上の輝度情報と、に基づいて前記三次元点群データを算出する、ように構成されている、ことを特徴とする。
【0010】
この場合、前記1以上の輝度情報は、前記対象物を第一方向から撮像した第一輝度情報と、前記対象物を前記第一方向と異なる第二方向から撮像した第二輝度情報と、を含んでもよい。
【0011】
また、前記コントローラは、前記第二輝度情報から、前記対象物を取り囲む第二BBと、前記第二BBを前記第二方向に押し出した第二BB押し出し空間と、を算出し、前記第一輝度情報から算出される点のうち、前記第二BB押し出し空間の外側の点をノイズとして除去する、ように構成されていてもよい。
【0012】
また、前記1以上の輝度情報は、前記対象物を第一方向から撮像した前記第一輝度情報を含み、前記コントローラは、前記第一輝度情報に基づいて、前記対象物を囲む第一BBを算出し、前記第一輝度情報を構成する複数の画素値のうち、前記第一BBの外側に位置する画素値をノイズとして除去し、除去後の第一輝度情報に基づいて、前記三次元点群データを算出する、ように構成されていてもよい。
【0013】
また、前記コントローラは、少なくとも前記少なくとも一つのBBと前記1以上の輝度情報を入力とし、前記1以上の輝度情報を構成する複数の画素それぞれにおける有効点の有無を出力として、予め機械学習させたAIとして機能するように構成されていてもよい。
【0014】
また、前記コントローラは、少なくとも前記少なくとも一つのBBと前記1以上の輝度情報を入力とし、三次元空間を三次元マトリクス状に区切って成る複数の格子空間それぞれにおける有効点の有無を出力として、予め機械学習させたAIとして機能するように構成されていてもよい。
【0015】
また、前記1以上の輝度情報は、さらに、1以上の追加の輝度情報を含み、前記コントローラは、前記1以上の追加の輝度情報から算出される1以上の追加のBBと、前記第二BBと、前記第一輝度情報と、に基づき前記三次元点群データを算出する、ように構成されていてもよい。
【発明の効果】
【0016】
本明細書で開示する技術によれば、1以上の矩形を組み合わせたBBは、単純形状であり、その算出のための計算量は少ない。かかるBBと輝度情報とに基づいて点群データを生成することで、より少ない計算量で点群データを生成できる。
【図面の簡単な説明】
【0017】
【
図1】三次元点群データ処理システムの構成を示す模式図である。
【
図2】三次元点群データ処理システムの構成を示すブロック図である。
【
図3】三次元モデル作成の大まかな流れを説明する図である。
【
図9】BBを利用した二次元的なノイズ除去を説明する模式図である。
【
図10】BB押し出し空間を説明する模式図である。
【
図11】三次元的なノイズ除去を説明する模式図である。
【
図12】三次元的なノイズ除去を説明する模式図である。
【
図13】BB押し出し空間の座標変換を説明する図である。
【
図14】CADデータの生成処理の前半の流れを示すフローチャートである。
【
図15】CADデータの生成処理の後半の流れを示すフローチャートである。
【
図16】CADデータの生成処理の前半の流れの他の例を示すフローチャートである。
【
図18】CADデータの生成処理の前半の流れの他の例を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、図面を参照して三次元点群データ処理システム10の構成について説明する。
図1は、三次元点群データ処理システム10の構成を示す模式図である。
図1の例では、三次元点群データ処理システム10は、工作機械80と組み合わせて使用される。
【0019】
工作機械80は、加工製品を製造するためにワークに対して所定の加工を施す。かかる工作機械80の種類は、特に限定されないが、例えば工作機械80は、金属製のワークに対して金属加工(例えば切削加工やプレス加工等)を施す金属加工機でもよい。
図1において、工作機械80は、主軸81および刃物台を有する旋盤である。以下の説明では、この工作機械80で取り扱うワークを、形状計測の対象物100として取り扱う。ただし、形状計測の対象物100はワークに限らず、他の部材、例えば工具や治具等でもよい。
【0020】
かかる工作機械80は、数値制御装置82を有している。数値制御装置82は、加工プログラム(「NCプログラム」ともいう)を解析して、工作機械80を操作するために、ワークに対する工具経路、加工に必要な作業の工程等を、数値および符号で構成した数値情報で指令する装置である。この数値制御装置82は、ワーク(すなわち対象物100)の形状を示すCADデータ44に基づいて、工具とワークとの干渉チェックや、工具の経路生成、加工精度の判定、対象物100の形状が基準形状と一致するかの判定、対象物100が所定の位置にあるかないかの判定等を行う。かかる数値制御装置82は、物理的には、プロセッサとメモリとを有したコンピュータである。工作機械80には、さらに、オペレータに情報を提示するとともにオペレータからの指令を受け付ける操作パネル84も設けられている。数値制御装置82は、有線通信または無線通信により、三次元点群データ処理システム10のコントローラ12と通信可能である。
【0021】
三次元点群データ処理システム10は、対象物100の形状を示す点群データ40およびCADデータ44を生成するもので、コントローラ12と、撮像ユニット22と、を有している。撮像ユニット22は、対象物100を撮像する。撮像ユニット22で撮像された画像データ30は、コントローラ12に送信される。画像データ30は、複数の画素ごとに輝度値が記録された情報、すなわち、輝度情報32である。
【0022】
コントローラ12は、撮像ユニット22による撮像処理を制御するとともに、得られた画像データ30に基づいて点群データ40(
図1では図示せず)およびCADデータ44を生成する。生成されたCADデータ44は、数値制御装置82に送信される。
【0023】
次に、三次元点群データ処理システム10の構成について、より詳細に説明する。
図2は、三次元点群データ処理システム10の構成を示すブロック図である。
図2に示すように、また、上述した通り、三次元点群データ処理システム10は、コントローラ12と、撮像ユニット22と、を有する。
【0024】
コントローラ12は、物理的には、プロセッサ14と、メモリ16と、通信I/F18と、UI装置20と、を有したコンピュータである。この「コンピュータ」には、コンピュータシステムを一つの集積回路に組み込んだマイクロコントローラも含まれる。また、プロセッサ14とは、広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。
【0025】
メモリ16は、各種データを記憶するもので、プロセッサ14が直接アクセスする主記憶装置、および、入出力チャネルを介してアクセスされる補助記憶装置の双方を含む。主記憶装置は、例えば半導体メモリで構成される。補助記憶装置は、例えば半導体メモリや、磁気記憶装置で構成される。
【0026】
通信I/F18は、外部の他の電子機器と、有線通信または無線通信により、データを送受する。通信I/F18は、例えば、数値制御装置82および撮像ユニット22が、通信相手となる。UI装置20は、オペレータに各種情報を提示するとともに、オペレータからの指示を受け付ける。かかるUI装置20は、例えば、ディスプレイやスピーカなどの出力装置と、キーボードやマウス、マイク、タッチパネル等の入力装置と、を有している。なお、本例では、UI装置20を、コントローラ12の構成要素として記載しているが、UI装置20の一部または全ては、コントローラ12とは、完全に異なる別の装置として構成されてもよい。例えば、UI装置20の一部機能は、オペレータが所有するとともにコントローラ12と通信可能な情報端末(例えばスマートホン等)のユーザインターフェースで実現されてもよい。また、コントローラ12は、単一のコンピュータである必要はなく、物理的に離隔した複数のコンピュータを組み合わせて構成されてもよい。
【0027】
撮像ユニット22は、工作機械80の加工室内に存在する対象物100を撮像する。撮像ユニット22は、
図2に示すように、カメラ24と、光源26と、を有する。カメラ24は、対象物100を撮像し、画像データ30を生成する。このカメラ24で得られた画像データ30は、コントローラ12に送られる。なお、カメラ24は、一つでもよいし、複数でもよい。
【0028】
光源26は、対象物100を照射する。かかる光源26は、対象物100を単純に照らし出すライトでもよいし、対象物100に所定のパターン光を照射するプロジェクタでもよい。
【0029】
次に、三次元点群データ処理システム10による対象物100の点群データ40の生成原理について
図3を参照して説明する。対象物100の点群データ40を生成する場合、コントローラ12は、撮像ユニット22を駆動して、対象物100の画像データ30を取得する。このとき、対象物100の全ての面について画像データ30が得られるように、カメラ24に対する対象物100の相対的な姿勢を変更して、複数回撮像を行う。なお、カメラ24に対する対象物100の相対的な姿勢を変更するために、対象物100を動かしてもよいし、カメラ24を動かしてもよい。本例では、対象物100を保持する主軸81を駆動して、対象物100のカメラ24に対する姿勢を変更する。
【0030】
コントローラ12は、得られた画像データ30(すなわち輝度情報32)に基づいて、対象物100の点群データ40を生成する。
図3の例では、対象物100を第一の方向から撮像した画像データ30a、および、対象物100を第一の方向と異なる第二の方向から撮像した画像データ30bそれぞれから、対象物100の点群データ40a,40bを生成し、さらに、これらに基づいて対象物100のCADデータ44を生成している。
【0031】
点群データ40を生成する場合には、画像データ30を構成する画素ごとに、対象物100の外表面を構成する点(以下「有効点」という)の有無と、有効点がある場合には、その座標と、を特定する。ここで、特定される座標は、カメラ24の光軸を基準とするカメラ座標系での座標である。そして、こうした有効点の演算を行うことで、カメラ座標系での点群データ40が得られる。
【0032】
複数の画像データ30a,30bそれぞれについて、カメラ座標系での点群データ40a,40bが得られれば、これらに基づいて、対象物100の形状を示すCADデータ44を生成する。CADデータ44を生成する際に、画像データ30a,30bそれぞれから算出されたデータの合成と、点群データからメッシュデータへの変換と、メッシュデータからソリッドデータへの変換と、を行う。このうち、データの合成は、メッシュデータへの変換前に行ってもよいし、メッシュデータへの変換後に行ってもよい。すなわち、複数の点群データ40a,40bを、ワールド座標系に変換して合成し、合成後の点群データ40から一つのメッシュデータを算出してもよい。また、別の形態として、複数の点群データ40a,40bを、それぞれ、メッシュデータに変換したうえで、これら複数のメッシュデータをワールド座標系に変換して合成してもよい。
【0033】
点群データ40は、光切断法または位相シフト法または三角法またはステレオ法またはこれらの組み合わせで、算出される。なお、光切断法または位相シフト法を用いる場合、光源26は、これらの手法に適したパターン光を対象物100に照射する。また、三角法を用いる場合、撮像ユニット22は、互いに離隔して配置された2以上のカメラ24で、一つの対象物100を同時に撮像する。
【0034】
ところで、単純に画像データ30から抽出された点群データ40には、対象物100とは無関係な点、いわゆるノイズも多数含まれる。こうしたノイズを除去するために従来からノイズ除去技術が多数提案されている。
図4は、高精度ノイズ除去技術の一例を示すイメージ図である。この高精度ノイズ除去技術では、点群データ40が配される空間を、三次元マトリクス状に配置された複数の格子空間46で分割し、格子空間46ごとに、点の密度を求める。そして、密度が一定以下の格子空間46については、当該格子空間46の内部にある点をノイズとみなし削除する。
図4の例では、格子空間46aは、点の密度が高いため、格子空間46a内の点は、有効点として判断される。一方、格子空間46bは、点の密度が低いため、格子空間46b内の点は、ノイズとして除去される。
【0035】
かかる高精度ノイズ除去技術によれば、高精度にノイズを除去できる一方で、計算量が多くなり、最終的な点群データ40の取得に時間がかかるという問題があった。そこで、本例では、高精度ノイズ除去技術を適用する前に、予め、後述するバウンティングボックス50(以下「BB50」と呼ぶ)を利用して、粗めのノイズ除去を実施する。以下、このBB50を利用したノイズ除去技術を「BB式ノイズ除去」と呼ぶ。
【0036】
はじめに、BB式ノイズ除去で使用するBB50について説明する。
図5は、対象物100の斜視図であり、
図6は、この対象物100を撮像した画像データ30の模式図である。BB50は、対象物100を取り囲む図形であり、1以上の矩形を組み合わせて構成される。
図6の例では、対象物100の最も右側の縁に沿った線と、対象物100の最も上側の縁に沿った線と、対象物100の最も左側の縁に沿った線と、対象物100の最も下側の縁に沿った線と、で構成される矩形Sを、所定量だけ外側にオフセットした図形をBB50として抽出している。
【0037】
また、BB50は、2以上の矩形を組み合わせて構成されてもよい。例えば、
図7に示すように、対象物100全体を取り囲む第一の矩形BX1を抽出した後、当該第一の矩形BX1の内部において対象物100が存在しない(すなわち輝度のない)角の領域BX2を求める。その後、
図8に示すように、その領域BX2に基づいて、第一の矩形BX1を、複数の矩形BX3,BX4,BX5に分割してもよい。そして、この三つの矩形BX3,BX4,BX5を、最終的なBB50として取得してもよい。
【0038】
なお、BB50を求める場合には、対象物100が存在する範囲を明確に特定できるように、画像データ30に対して1以上の画像処理を施してもよい。例えば、画像データ30に対して、エッジ強調、ソラリゼーション、二値化処理、モフォロジー処理、ブロブ処理、およびこれらの組み合わせを施してもよい。例えば、画像データ30に対して、エッジ強調およびソラリゼーションを施し、さらに、二値化処理とモフォロジー処理を施すと、画像データ30に写った物体は、連続する黒の塊となる。コントローラ12は、連続する黒の塊を取り囲む外接矩形をBB50として抽出する。一つの画像データ30に複数の黒の塊が存在する場合には、複数の塊それぞれについて外接矩形を求め、複数の矩形のうち最も大きな矩形を、BB50として抽出する。また、こうしたBB50の算出過程で、対象物100の背景が邪魔になる場合は、予め、背景画像データを記憶しておき、差分法で背景を画像データ30から除去したうえで、BB50を求めるようにしてもよい。
【0039】
BB50は、対象物100の存在する範囲を示す枠であるため、このBB50の外側にある点は、対象物100とは無関係なノイズとして排除できる。そこで、本例では、画像データ30から対象物100のBB50を特定し、このBB50の外側にある画素の情報または輝度情報32から算出される点をノイズとして除去する。
【0040】
このノイズ除去処理は、一つの画像データ30だけで完結する二次元的なノイズ除去処理と、互いに異なる方向から撮像された二以上の画像データ30を利用して行う三次元的なノイズ除去処理と、に大別される。
【0041】
はじめに、二次元的なノイズ除去処理について
図9を参照して説明する。この場合、コントローラ12は、一つの画像データ30(以下、「第一画像データ30f」または「第一輝度情報32f」と呼ぶ)から当該第一画像データ30fに写った対象物100を取り囲む第一BB50fを算出する。その後、コントローラ12は、この第一BB50fの外側に位置する画素値(すなわち、その画素の輝度値)または第一輝度情報32fから算出される点をノイズとして除去する。コントローラ12は、この処理を、撮像された全ての画像データ30に対して実行する。この二次元的なノイズ除去は、点群データ40を算出する前に行われてもよいし、点群データ40を算出した後に行ってもよい。また、この場合、点群データ40は、カメラ座標系で表されていてもよいし、ワールド座標系に変換されていてもよい。
図9の例では、黒塗りの点または画素値が、第一撮像方向(すなわちz1方向)からみて第一BB50fの外側に位置しているため、この黒塗りの点または画素値が、ノイズとして除去される。
【0042】
ここで、第一BB50fは、カメラ座標系に平行な直線で構成される単純形状である。かかる単純形状の第一BB50fは、対象物100の外形形状そのものに比べて、非常に簡単に算出できる。また、点または画素が第一BB50fの内側か否かを判断するための計算量も、点または画素が対象物100の外形形状の内側か否かを判断するための計算量よりも、大幅に低減できる。結果として、第一BB50fを利用してノイズを除去する場合、対象物100の外形形状そのものを利用してノイズを除去する場合に比べて、計算量を大幅に低減できる。
【0043】
ただし、第一BB50fそのものは二次元的な情報しかないため、第一BB50fだけでは、三次元的なノイズ除去はできない。そこで、本例では、さらに、第一輝度情報32fとは撮像方向が異なる第二輝度情報32sを利用して、三次元的なノイズ除去を行う。これについて、
図10、
図11を参照して説明する。コントローラ12は、一つの画像データ30(以下「第一画像データ30f」または「第一輝度情報32f」という)から点群データ40を算出する。ここでいう点群データ40は、カメラ座標系で表される点群データでもよいし、ワールド座標系で表される点群データでもよい。また、コントローラ12は、第一画像データ30fと異なる方向から対象物100を撮像した他の画像(以下「第二画像データ30s」または「第二輝度情報32s」という)から、対象物100を取り囲む第二BB50sと、当該第二BB押し出し空間52sと、を算出する。
図10は、第二BB50sおよび第二BB押し出し空間52sを示す模式図である。
【0044】
以下では、第一輝度情報32fにおけるカメラ座標系を第一カメラ座標系(x1,y1,z1)と呼び、第二輝度情報32sにおけるカメラ座標系を第二カメラ座標系(x2,y2,z2)と呼ぶ。
図9に示すように、第一BB50fは、第一カメラ座標系のx1-y1平面と平行な二次元図形である。また、
図10に示すように、第二BB50sは、第二カメラ座標系のx2-y2平面と平行な二次元図形である。さらに、第二BB押し出し空間52sは、z2方向に長い三次元形状である。
【0045】
第二BB押し出し空間52sが算出できれば、コントローラ12は、第二BB押し出し空間52sを、第一輝度情報32fから求まる点群データ40に重畳させる。この点群データ40が第一カメラ座標系で表されている場合、第二BB押し出し空間52sは、第一カメラ座標系に座標変換されたうえで、点群データ40に重畳される。点群データ40がワールド座標系に変換されている場合、第二BB押し出し空間52sは、ワールド座標系に座標変換されたうえで、点群データ40に重畳される。
【0046】
図13は、第二BB押し出し空間52sを、第一カメラ座標系に座標変換する様子を示している。
図13では、説明を簡単にするために、第二カメラ座標系は、第一カメラ座標系に対して90度回転している。この
図13に示すように、第二BB押し出し空間52sが、第二カメラ座標系において、x2方向にa、y2方向にb、z2方向に無限大の大きさを持つ形状であったとする。この第二BB押し出し空間52sを、第一カメラ座標系に座標変換した場合、第二BB押し出し空間52sは、z1方向にa、y1方向にb、x1方向に無限大の大きさを持つ形状となる。
【0047】
図11は、第一輝度情報32fから求まる点群データ40に、第二BB押し出し空間52sを重畳させた様子を示している。なお、
図11において、第一輝度情報32fから求まる点群データ40には、予め、第一BB50fを利用した二次元的なノイズ除去が施されている。コントローラ12は、第一輝度情報32fから求まる点群データ40のうち、第一BB押し出し空間52fの外側に位置する点を、ノイズとみなし、削除する。
図11の例では、点群のうち、黒塗りの点がノイズとして除去される。
【0048】
このように、第二輝度情報32sから算出される第二BB押し出し空間52sを、第一輝度情報32fから求まる点群データ40に重ね合わせることで、当該点群に含まれるノイズを三次元的に除去することができる。その一方、第二BB押し出し空間52sは、第二BB50sを一方向に押し出しただけの単純形状である。そのため、当該第二BB押し出し空間52sを算出するための計算、および、点が当該第二BB押し出し空間52sの外側に位置するか否かの計算は、いずれも比較的少ない計算量で行うことができる。結果として、本例によれば、短時間でノイズを三次元的に除去できる。
【0049】
なお、ここでは、第一輝度情報32fから求まる点群データ40に、第二BB押し出し空間52sのみを重畳している。しかし、さらに別の方向から撮像した追加の輝度情報に基づいて追加のBB押し出し空間を算出し、第二BB押し出し空間52sに加えて、この追加のBB押し出し空間を、第一輝度情報32fから求まる点群データ40に重畳してもよい。例えば、
図12に示すように、第三撮像方向から撮像した第三輝度情報から第三BB押し出し空間52tを求め、これを第一輝度情報32fから求まる点群データ40に重畳してもよい。そして、点群のうち、第三BB押し出し空間52tの外側となる点をノイズとして除去してもよい。
図12の例では、第三BB押し出し空間52tを追加で重畳することで、バツ印を施した点が新たにノイズとして除去される。
【0050】
なお、こうした追加の輝度情報の個数は、特に限定されない。しかし、理論的には、ノイズ除去の対象である第一輝度情報32fの撮像方向と、第二輝度情報32sの撮像方向と、一つの追加の輝度情報の撮像方向と、が互いに直交するようにすれば、少ないデータ量で、効率的に三次元的にノイズを除去できる。
【0051】
次に、BB式ノイズ除去を利用した対象物100のCADデータ44の生成処理について
図14、
図15を参照して説明する。CADデータ44を生成する際には、まず、三次元点群データ処理システム10の初期化を行う(S10)。この初期化では、例えば、カメラ24や光源26の動作パラメータの設定や、カメラ座標系とワールド座標系との座標合わせ等が行われる。続いて、オペレータは、対象物100を、カメラ24で撮像可能な状態にセットする(S12)。本例の場合、対象物100を、工作機械80の主軸81に取り付ける。
【0052】
この状態になれば、コントローラ12は、対象物100の姿勢を調整する(S14)。具体的には、コントローラ12は、工作機械80に対し、対象物100が所定の姿勢になるように指示する。この指示を受けて、工作機械80は、主軸81を回転させ、カメラ24が、任意の方向から対象物100を撮像できるように、対象物100の姿勢を調整する。
【0053】
対象物100の姿勢が調整できれば、カメラ24により対象物100を撮像する(S16)。撮像で得られた画像データ30は、カメラ24からコントローラ12に送られ、撮像位置または撮像方向に関する情報と紐づけられた状態で輝度情報32としてメモリ16に記憶される。コントローラ12は、得られた輝度情報32から点群データ40を生成する(S18)。具体的には、コントローラ12は、例えば、光切断法または位相シフト法または三角法またはこれらの組み合わせで、画素ごとに有効点の有無、および、有効点が存在する場合には、当該有効点のカメラ座標系でのz方向位置を判別する。こうして得られた点の集合が、点群データ40となる。なお、光切断法または位相シフト法を用いる場合、光源26は、これらの手法に適したパターン光を対象物100に照射する。
【0054】
続いて、コントローラ12は、対象物100について必要な面、全ての撮像が完了したか否かを確認する(S20)。撮像する面の数は、対象物100の上面、底面、右側面、および、左側面のうちの2~4面とする場合が多いが、精度を上げるために、さらに多数の面を撮像してもよい。また、撮像する面は、互いに直交する必要はなく、任意の角度の面でもよい。
【0055】
撮像できていない面がある場合、ステップS14に戻り、対象物100の姿勢を変更したうえで、対象物100の撮像と点群データ40の生成を行う(S16、S18)。一方、全ての面の撮像が完了した場合、コントローラ12は、得られた点群データ40からノイズを除去する(S22~S28)。
【0056】
具体的には、コントローラ12は、まず、得られた画像データ30それぞれについてBB50を算出する(S22)。続いて、画像データ30ごとに得られた点群データ40に対して、背景ノイズの除去処理を施す(S24)。背景ノイズの除去処理では、予め、対象物100が無い状態で撮像した背景画像データを取得しておき、この背景画像データと実際の画像データ30との比較に基づいて、画像データ30のうち、背景となるエリアを背景エリアとして特定する。その後、画像データから算出された点群データ40から、背景エリアにある点を一括削除する。ステップS24では、この背景ノイズの除去処理を、得られた複数の画像データ30全てに対して施す。なお、この背景ノイズの除去処理は、省略されてもよい。
【0057】
次に、コントローラ12は、BB式ノイズ除去を適用し、点群データ40に含まれるノイズを除去する(S26)。具体的には、コントローラ12は、第一輝度情報32fから得られる点群データ40fのうち、第一撮像方向からみて、第一BB50fの外側に位置する点をノイズとして除去する。なお、この点群データ40fは、上述した背景ノイズの除去処理が施された後の点群データである。
【0058】
また、コントローラ12は、第二輝度情報32sから算出された第二BB50sを、第二撮像方向に押し出して、第二BB押し出し空間52sを算出する。その後、コントローラ12は、第二BB押し出し空間52sを、座標変換したうえで、点群データ40fに重ね合わせる。そして、コントローラ12は、点群データ40のうち、第二BB押し出し空間52sの外側にある点をノイズとして除去する。さらに、同様の処理を、追加のBB押し出し空間を使用して行う。
【0059】
コントローラ12は、こうしたBB50を利用した二次元的なノイズ除去および三次元的なノイズ除去を、第一輝度情報32f、第二輝度情報32s、および、追加の輝度情報の割り当てを順次変えて、全ての輝度情報32に対して行う。例えば、1回目のノイズ除去では、1回目の撮像で得られた輝度情報を「第一輝度情報32f」、2回目の撮像で得られた輝度情報を「第二輝度情報32s」、3回目の撮像で得られた輝度情報を「追加の輝度情報」としてノイズ除去を行い、2回目のノイズ除去では、2回目の撮像で得られた輝度情報を「第一輝度情報32f」、3回目の撮像で得られた輝度情報を「第二輝度情報32s」、1回目の撮像で得られた輝度情報を「追加の輝度情報」としてノイズ除去を行う。
【0060】
BB式ノイズ除去が完了すれば、点群データ40に含まれるノイズは大幅に低減されており、点群データ40を構成する点の数、ひいてはデータサイズも大幅に低減されている。この状態になれば、コントローラ12は、点群データ40に対して、高精度ノイズ除去を適用する(S28)。高精度ノイズ除去は、上述した通り、また、
図4に示す通り、点群データ40に複数の格子空間46を重ね合わせ、格子空間46ごとの点の密度からノイズを除去する。この高精度ノイズ除去は、計算量が多く、計算時間も長くなりやすい。しかし、本例では、予め、背景ノイズ除去およびBB式ノイズ除去で、大多数のノイズを除去し、データ量を低減しているため、高精度ノイズ除去の処理時間を大幅に短くできる。
【0061】
高精度ノイズ除去が完了すれば、続いて、コントローラ12は、点群データ40を構成する点を、CADデータ44生成に必要な程度までに間引く(S30)。次に、コントローラ12は、輝度情報32ごとに得られた複数の点群データ40からメッシュデータを生成し、これをさらに、ソリッドモデル、すなわち、CADデータ44に変換する(S30~S42)。メッシュデータの生成は、輝度情報32ごとに得られた複数の点群データ40を合成してから行ってもよい(S34,S36)。また、別の形態として、複数の点群データ40それぞれをメッシュデータに変換し、得られた複数のメッシュデータを合成してもよい(S38,S40)。いずれにしても、最終的には、対象物100を三次元形状を示す一つのメッシュデータ、さらには、CADデータ44が得られる(S42)。なお、点群データ40をメッシュ化するのではなく、ボクセル化し、このボクセル化データをCADデータ44に変換してもよい。生成されたCADデータ44は、通信I/F18を介して、工作機械80に送信される。
【0062】
なお、点群データ40またはメッシュデータを合成する場合には、各点群データ40またはメッシュデータをワールド座標系に変換する必要がある。この座標変換に際しては、対象物100の撮像方向を正確に取得する必要がある。撮像方向は、工作機械80(すなわち対象物100の保持装置)から送られる主軸81の回転角度のような工作機械の位置情報から判別してもよいし、平面方程式で判別してもよい。平面方程式では、対象物100または対象物100に対して位置および姿勢が不変の基準物に基準マークを設けておく。そして、対象物100を撮像した画像内での基準マークの位置および形状から、対象物100の姿勢を判別する。
【0063】
次に、CADデータ44の生成処理の他の例について説明する。
図14、
図15では、全ての点群データ40を生成してから、BB式ノイズ除去を適用している。しかし、BB式ノイズ除去は、点群データ40を生成する過程で適用されてもよい。
【0064】
例えば、
図14のステップS14~S26に替えて、
図16のステップS50~S60を実行してもよい。この場合、コントローラ12は、対象物100の姿勢を変更しながら、対象物100を撮像する(S50~S54)。必要な面全ての撮像が完了すれば、コントローラ12は、複数の輝度情報32それぞれについてBB50およびBB押し出し空間52を算出する(S56)。
【0065】
続いて、コントローラ12は、第一輝度情報32fに第一BB50fを重ね、当該第一BB50fの外側に位置する画素値を削除する(S58)。すなわち、第一輝度情報32fから点群データ40fを生成する前に、不要な情報を削除する。これにより、次に、行う点群データ40fの生成に要する計算量を大幅に低減できる。コントローラ12は、こうした二次元的なノイズ除去を、第一輝度情報32fの割り当てを変更して、全ての輝度情報32に対して行う。すなわち、1回目の二次元ノイズ除去では、1回目の撮像で得られた輝度情報を「第一輝度情報32f」とし、2回目の二次元ノイズ除去では、2回目の撮像で得られた輝度情報を「第一輝度情報32f」とする。
【0066】
全ての輝度情報32に対して、二次元ノイズ除去が完了すれば、コントローラ12は、点群データ40の生成と、三次元的なノイズ除去と、を行う(S60)。すなわち、コントローラ12は、輝度情報32に基づいて、画素ごとに有効点の有無および有効点のカメラ座標系のz方向位置を判定する。このとき、コントローラ12は、さらに、各有効点が、対象の輝度情報32(すなわち、第一輝度情報32f)とは異なる撮像角度の輝度情報32(すなわち、第二輝度情報32sまたは追加の輝度情報)から求まるBB押し出し空間52(すなわち、第二BB押し出し空間52sまたは追加のBB押し出し空間)の外側か否かを判断する。有効点が、撮像角度が異なるBB押し出し空間52の外側にある場合、コントローラ12は、当該有効点は、ノイズであると判断し、当該有効点を除去する。一方で、有効点が、撮像角度が異なるBB押し出し空間52の内側にある場合、コントローラ12は、当該点を、点群データ40を構成する点の一つとして記憶する。三次元的なノイズ除去が完了すれば、
図15のステップS28に進む。
【0067】
このように、点群データ40を生成する前、すなわち、輝度情報32の状態で、BB50を利用して二次元的にノイズを除去することで、点群データ40を生成するための計算時間を大幅に低減できる。また、点群データ40の生成過程で、BB押し出し空間52を利用して、三次元的にノイズを除去することで、点群データ40のデータ量を低減できる。結果として、その後に行う高精度ノイズ除去や、CADデータの生成に要する計算量および計算時間を低減できる。
【0068】
次に、CADデータ44の生成処理の他の例について説明する。上述した例では、コントローラ12が、点ごと、または、画素ごとに、個別に演算してノイズ除去を行っているが、予め学習したAIを構築し、当該AIによりノイズ除去を行ってもよい。具体的には、AIは、第一BB50f、第二BB50s、および、第一輝度情報32fを入力とし、第一輝度情報32fから生成される点群データ40を出力として、予め学習させた教師あり学習器である。こうしたAIは、コントローラ12の一機能として構築できる。かかるAI60は、例えば、
図17に示すように、一つの入力層62と、1以上の中間層64と、一つの出力層66と、を有する3層のニューラルネットワークもしくは4層以上のディープニューラルネットワークでもよい。
図17の例では、第一撮像位置、第二撮像位置、第一輝度情報32f、第一BB50f、第二BB50s、第二BB押し出し空間52sが入力値となる。出力値は、第一輝度情報32fを構成する複数の画素それぞれでの有効点の存在確率、あるいは、三次元空間を複数の格子空間46に分割した際の複数の格子空間46それぞれでの有効点の存在確率である。画素それぞれの有効点の存在確率が出力された場合、コントローラ12は、存在確率が一定以上の画素それぞれについて、当該画素に存在する点のz方向位置を求め、点群データ40を生成する。また、格子空間46それぞれの有効点の存在確率が出力された場合、コントローラ12は、存在確率が一定以上の格子空間46に点があるとみなして、点群データ40を生成する。
【0069】
こうしたAI60を利用してノイズ除去を行う場合には、例えば、
図14のステップS14~S26に替えて、
図18のステップS70~S80を実行する。すなわち、コントローラ12は、対象物100の姿勢を変更しながら、対象物100を撮像し(S70,S72)、得られた輝度情報32からBB50およびBB押し出し空間52を算出する(S74)。全ての面の輝度情報32が得られれば、コントローラ12は、得られた輝度情報32、各輝度情報32を得たときの撮像位置、輝度情報32それぞれのBB50およびBB押し出し空間52を、AI60に入力する(S78)。その後、AI60から出力された出力値に基づいて、点群データ40を生成する(S80)。その後は、
図15のステップS28に進む。
【0070】
以上の説明で明らかな通り、第一輝度情報32fおよび第二BB50sを入力として、画素または格子空間46ごとの有効点の存在確率を出力とするAI60を構築することで、点群データ40の生成およびノイズ除去の処理を簡易化できる。
【0071】
なお、これまで説明した構成は、いずれも一例であり、少なくとも、1以上の輝度情報32と、1以上のBB50と、に基づいて点群データ40を生成するのであれば、その他の構成は変更されてもよい。例えば、本例では、工作機械80に対象物100を取り付け、工作機械80の機能を利用して対象物100の姿勢を変更しているが、対象物100は、工作機械80とは、無関係の装置で保持されてもよい。また、対象物100を動かすのではなく、カメラ24を動かしてもよい。また、これまでの説明では、BB50を利用した二次元的なノイズ除去と、BB押し出し空間52を利用した3次元的なノイズ除去の双方を実行しているが、いずれか一方のみを実行するのでもよい。
【符号の説明】
【0072】
10 三次元点群データ処理システム、12 コントローラ、14 プロセッサ、16 メモリ、18 通信I/F、20 UI装置、22 撮像ユニット、24 カメラ、26 光源、30 画像データ、32 輝度情報、40 点群データ、44 CADデータ、46 格子空間、50 BB、52 BB押し出し空間、62 入力層、64 中間層、66 出力層、80 工作機械、81 主軸、82 数値制御装置、84 操作パネル、100 対象物。