(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-24
(45)【発行日】2024-07-02
(54)【発明の名称】画像処理装置、ロボットシステム、及び画像処理方法
(51)【国際特許分類】
B25J 13/08 20060101AFI20240625BHJP
G06T 7/00 20170101ALI20240625BHJP
G06T 7/593 20170101ALI20240625BHJP
【FI】
B25J13/08 A
G06T7/00 C
G06T7/593
G06T7/00 610Z
(21)【出願番号】P 2019234820
(22)【出願日】2019-12-25
【審査請求日】2022-10-21
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(72)【発明者】
【氏名】和田 潤
【審査官】杉山 悟史
(56)【参考文献】
【文献】米国特許出願公開第2003/0038875(US,A1)
【文献】特開2010-210585(JP,A)
【文献】特開2011-112401(JP,A)
【文献】特開2003-232867(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
G06T 7/00
G06T 7/593
(57)【特許請求の範囲】
【請求項1】
予め定めた複数の撮像位置に配置されたカメラが撮像した検出対象部の画像データを取得する画像取得部と、
第1の前記撮像位置で撮像された第1の前記画像データ
に写る前記検出対象部の第1輪郭と、第2の前記撮像位置で撮像された第2の前記画像データ
に写る前記検出対象部の第2輪郭とを、各々の前記撮像位置に対して既知の位置に設定された投影面に投影させた投影画像データを生成する投影画像生成部であって、前記位置が互いに異なる複数の前記投影面の各々で前記投影画像データを生成する、投影画像生成部と、
前記投影画像生成部が生成した前記投影画像データにおいて前記第1
輪郭の
投影画像データの第1投影位置と前記第2
輪郭の
投影画像データの第2投影位置とが一致する前記投影面を検索する投影面検索部と、を備える、画像処理装置。
【請求項2】
前記投影面検索部は、
前記投影画像生成部が生成した前記投影画像データにおいて前記第1投影位置と前記第2投影位置とが一致するか否かを判定し、
前記第1投影位置と前記第2投影位置とが一致しないと判定した場合に、前記投影面の前記位置を変更して指定し、
変更後の前記位置の前記投影面で前記投影画像生成部が生成した前記投影画像データにおいて前記第1投影位置と前記第2投影位置とが一致するか否かを判定する、
一連の動作を繰り返し実行することによって、前記一致する投影面を検索する、請求項1に記載の画像処理装置。
【請求項3】
前記投影面検索部は、前記投影画像データにおいて、前記第1投影位置及び前記第2投影位置に対応する画素の明るさ又は画素数に基づいて、前記第1投影位置と前記第2投影位置とが一致するか否かを判定する、請求項2に記載の画像処理装置。
【請求項4】
前記検出対象部は、平面であって、
前記投影面は、前記平面と平行に設定される、請求項1~3のいずれか1項に記載の画像処理装置。
【請求項5】
前記投影面の前記位置の入力情報を受け付ける入力受付部をさらに備え、
前記投影画像生成部は、前記入力受付部が受け付けた前記位置の前記投影面で前記投影画像データを生成する、請求項1~4のいずれか1項に記載の画像処理装置。
【請求項6】
前記入力情報を入力するための入力画像と、入力された前記位置の前記投影面で前記投影画像生成部が生成した前記投影画像データの画像と、が並べて表示される検証画像データを生成する検証画像生成部をさらに備える、請求項5に記載の画像処理装置。
【請求項7】
各々の前記撮像位置は、基準座標系に対して既知の位置関係となるように定められ、
前記投影面は、前記基準座標系における既知の位置に設定され、
前記画像処理装置は、前記投影面検索部が検索した前記一致する投影面の、前記基準座標系における位置データを取得する位置データ取得部をさらに備える、請求項1~6のいずれか1項に記載の画像処理装置。
【請求項8】
請求項7に記載の画像処理装置と、
前記カメラと、
前記検出対象部を有するワークに対して作業を行うロボットと、
前記位置データ取得部が取得した前記位置データに基づいて、前記作業を実行させるように前記ロボットを制御する制御装置と、を備える、ロボットシステム。
【請求項9】
前記第1の撮像位置で前記第1の画像データを撮像する第1の前記カメラと、
前記第2の撮像位置で前記第2の画像データを撮像する第2の前記カメラと、を備える、請求項8に記載のロボットシステム。
【請求項10】
予め定めた複数の撮像位置に配置されたカメラが撮像した検出対象部の画像データを取得し、
第1の前記撮像位置で撮像された第1の前記画像データ
に写る前記検出対象部の第1輪郭と、第2の前記撮像位置で撮像された第2の前記画像データ
に写る前記検出対象部の第2輪郭とを、各々の前記撮像位置に対して既知の位置に設定された投影面に投影させた投影画像データを、前記位置が互いに異なる複数の前記投影面の各々で生成し、
生成した前記投影画像データにおいて前記第1
輪郭の
投影画像データの第1投影位置と前記第2
輪郭の
投影画像データの第2投影位置とが一致する前記投影面を検索する、画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、ロボットシステム、及び画像処理方法に関する。
【背景技術】
【0002】
複数の撮像位置でカメラが撮像した物体の画像データに基づいて、該物体の位置を検出する装置が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、産業機械の分野において、作業対象となる検出対象部の位置を示す情報を、カメラが撮像した画像データから、自動的且つ正確に取得可能とする技術が求められている。
【課題を解決するための手段】
【0005】
本開示の一態様において、画像処理装置は、予め定めた複数の撮像位置に配置されたカメラが撮像した検出対象部の画像データを取得する画像取得部と、第1の撮像位置で撮像された第1の画像データと、第2の撮像位置で撮像された第2の画像データとを、各々の撮像位置に対して既知の位置に設定された投影面に投影させた投影画像データを生成する投影画像生成部であって、位置が互いに異なる複数の投影面の各々で投影画像データを生成する、投影画像生成部と、投影画像生成部が生成した投影画像データにおいて第1の画像データの第1投影位置と第2の画像データの第2投影位置とが一致する投影面を検索する投影面検索部とを備える。
【0006】
本開示の他の態様において、画像処理方法は、予め定めた複数の撮像位置に配置されたカメラが撮像した検出対象部の画像データを取得し、第1の撮像位置で撮像された第1の画像データと、第2の撮像位置で撮像された第2の画像データとを、各々の撮像位置に対して既知の位置に設定された投影面に投影させた投影画像データを、位置が互いに異なる複数の投影面の各々で生成し、生成した投影画像データにおいて第1の画像データの第1投影位置と第2の画像データの第2投影位置とが一致する投影面を検索する。
【発明の効果】
【0007】
本開示によれば、複数の撮像位置に配置されたカメラが撮像した画像データから、検出対象部の位置を示す投影面を自動的且つ高精度に検索することができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係る画像処理装置及びカメラのブロック図である。
【
図2】複数のカメラが撮像位置に配置された状態を示している。
【
図3】第1の撮像位置に配置されたカメラが撮像する画像データの画像の一例を示す。
【
図4】第2の撮像位置に配置されたカメラが撮像する画像データの画像の一例を示す。
【
図5】
図1に示す画像処理装置の動作フローの一例を示すフローチャートである。
【
図8】投影画像データの画像のさらに他の例である。
【
図9】第1の撮像位置に配置されたカメラが撮像する画像データの画像の他の例を示す。
【
図10】他の実施形態に係る画像処理装置、カメラ、表示装置、及び入力装置のブロック図である。
【
図11】
図10に示す画像処理装置の動作フローの一例を示すフローチャートである。
【
図13】
図11中のステップS16のフローの一例を示すフローチャートである。
【
図14】一実施形態に係るロボットシステムの図である。
【
図16】他の実施形態に係るロボットシステムの図である。
【発明を実施するための形態】
【0009】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、
図1を参照して、一実施形態に係る画像処理装置10について説明する。画像処理装置10は、プロセッサ14、メモリ16、及びI/Oインターフェース17を有するコンピュータである。
【0010】
プロセッサ14は、CPU又はGPU等を有し、メモリ16及びI/Oインターフェース17とバス19を介して通信可能に接続されている。プロセッサ14は、メモリ16及びI/Oインターフェース17と通信しつつ、後述する画像処理装置10の機能を実行するための演算処理を行う。メモリ16は、ROM又はRAM等を有し、各種データを一時的又は恒久的に記憶する。I/Oインターフェース17は、イーサネット(登録商標)ポート、USBポート、又はHDMI(登録商標)端子等を有し、プロセッサ14の指令の下、外部機器とデータを通信する。
【0011】
本実施形態においては、画像処理装置10のI/Oインターフェース17に、複数のカメラ18及び20が、有線又は無線で通信可能に接続されている。
図2に示すように、カメラ18及び20は、同じ構成を有し、光学レンズ22(フォーカスレンズ等)と、撮像センサ24(CCD、CMOS等)とを有する。
【0012】
カメラ18には、カメラ座標系CC1が設定されている。カメラ座標系CC1は、カメラ18が撮像する画像データの各画素の座標を規定する座標系である。カメラ座標系CC1は、そのx-y平面が、カメラ18の光軸方向と直交するように、該カメラ18に対して設定されている。カメラ18は、予め定めた第1の撮像位置P1に配置されている。カメラ18は、第1の撮像位置P1に配置された状態で、ワークWを撮像する。
【0013】
一方、カメラ20には、カメラ座標系CC2が設定されている。カメラ座標系CC2は、カメラ20が撮像する画像データの各画素の座標を規定する座標系である。カメラ座標系CC2は、そのx-y平面が、カメラ20の光軸方向と直交するように、該カメラ20に対して設定されている。
【0014】
カメラ20は、予め定めた第2の撮像位置P2に配置されている。カメラ20は、第2の撮像位置P2に配置された状態で、ワークWを撮像する。なお、本稿において、「撮像位置」とは、カメラ18、20の3次元空間内の位置と、該カメラ18、20の姿勢(すなわち、光軸方向)とを意味することがある。
【0015】
したがって、第1の撮像位置P1は、該第1の撮像位置P1に配置されたカメラ18のカメラ座標系CC1の原点位置及び各軸の方向によって、表すことができる。同様に、第2の撮像位置P2は、該第2の撮像位置P2に配置されたカメラ20のカメラ座標系CC2の原点位置及び各軸の方向によって、表すことができる。
【0016】
以下の説明においては、第1の撮像位置P1は、該第1の撮像位置P1に配置されたカメラ18のカメラ座標系CC1の原点位置及び各軸の方向を示すことがあり、また、第2の撮像位置P2は、該第2の撮像位置P2に配置されたカメラ20のカメラ座標系CC2の原点位置及び各軸の方向を示すことがある。
【0017】
ワークWは、ワークセル内の予め定められた位置に設置されている。本実施形態においては、ワークWは、円柱状であって、その頂端に表面WS(検出対象部)を有する。本実施形態においては、表面WSは、円形の輪郭(又はエッジ)Eを有する平面である。一方、ワークセルの3次元空間には、基準座標系CRが設定されている。基準座標系CRは、3次元空間内に固定された固定座標系である。
【0018】
基準座標系CRは、例えば、ワークセルの3次元空間を規定するワールド座標系、ワークWに対して設定されるワーク座標系、又は、後述するロボットに対して設定されるロボット座標系等である。本実施形態においては、ワークWは、その表面WSが基準座標系CRのx-y平面と略平行となるように、固定されている。
【0019】
第1の撮像位置P
1と基準座標系C
Rとの位置関係は、キャリブレーションによって既知とされている。したがって、第1の撮像位置P
1、すなわち、
図2中のカメラ座標系C
C1の原点位置及び各軸の方向は、基準座標系C
Rの座標及びベクトル(又は関数)として、表される。
【0020】
この既知の位置関係により、カメラ座標系CC1の座標と、基準座標系CRの座標とは、第1の座標変換データを介して、相互に変換可能となっている。この第1の座標変換データは、例えばヤコビ行列であって、第1の撮像位置P1と基準座標系CRとのキャリブレーションによって取得できる。
【0021】
同様に、第2の撮像位置P
2と基準座標系C
Rとの位置関係は、キャリブレーションによって既知とされている。したがって、第2の撮像位置P
2、すなわち、
図2中のカメラ座標系C
C2の原点位置及び各軸の方向は、基準座標系C
Rの座標及びベクトル(又は関数)として表される。
【0022】
この既知の位置関係により、カメラ座標系CC2の座標と基準座標系CRの座標とは、第2の座標変換データを介して、相互に変換可能となっている。この第2の座標変換データは、例えばヤコビ行列であって、第2の撮像位置P2と基準座標系CRとのキャリブレーションによって取得できる。
【0023】
第1の撮像位置P1に配置されたカメラ18がワークWを撮像すると、ワークWからの光(すなわち、被写体像)A1は、カメラ18の光学レンズ22によって導光されて、撮像センサ24に結像される。撮像センサ24は、受光した被写体像A1を光電変換し、画像データID1を生成する。
【0024】
こうして、カメラ18は、ワークWの画像データID
1を撮像する。画像データID
1の画像の一例を、
図3に示す。画像データID
1には、表面W
Sの輪郭Eが見えるように、ワークWが写っている。画像データID
1の各画素は、カメラ座標系C
C1の座標として表される。
【0025】
同様に、第2の撮像位置P2に配置されたカメラ20がワークWを撮像すると、ワークWからの光(被写体像)A2は、カメラ20の光学レンズ22によって導光されて、撮像センサ24に結像される。撮像センサ24は、受光した被写体像A2を光電変換し、画像データID2を生成する。
【0026】
こうして、カメラ20は、ワークWの画像データID
2を撮像する。画像データID
2の画像の一例を、
図4に示す。画像データID
2には、表面W
Sの輪郭Eが見えるように、ワークWが画像データID
1とは異なる位置に写っている。画像データID
2の各画素は、カメラ座標系C
C2の座標として表される。なお、
図2中の被写体像A
1及びA
2は、ワークWの表面W
S(具体的には、輪郭E)の光路をそれぞれ示している。
【0027】
次に、
図5を参照して、画像処理装置10の動作について説明する。
図5に示すフローは、プロセッサ14が、オペレータ、上位コントローラ、又はコンピュータプログラムから起動指令を受信したときに、開始する。ステップS1において、プロセッサ14は、カメラ18及び20が撮像した画像データID
1及びID
2を取得する。
【0028】
具体的には、カメラ18は、第1の撮像位置P
1に配置された状態で画像データID
1を撮像し、カメラ20は、第2の撮像位置P
2に配置された状態で画像データID
2を撮像する。カメラ18及び20は、撮像した画像データID
1及びID
2を、I/Oインターフェース17へ送信する。プロセッサ14は、I/Oインターフェース17を通して、画像データID
1及びID
2を取得し、メモリ16に記憶する。このように、本実施形態においては、プロセッサ14は、画像データID
1及びID
2を取得する画像取得部26(
図1)として機能する。
【0029】
ステップS2において、プロセッサ14は、投影面PPの位置を指定する。具体的には、プロセッサ14は、後述のステップS3で画像データID1及びID2を投影させる投影面PPの、基準座標系CRにおける位置を指定する。例えば、プロセッサ14は、投影面PPの位置を、基準座標系CRのz軸の座標zとして、指定する。
【0030】
一例として、プロセッサ14は、投影面PPの座標zを、ワークWの表面WSよりも、基準座標系CRのz軸プラス方向へ離隔すると推定される座標zαとして、指定する。他の例として、プロセッサ14は、投影面PPの座標zを、ワークWの表面WSよりも、基準座標系CRのz軸マイナス方向へ離隔すると推定される座標zβとして、指定する。
【0031】
さらに他の例として、プロセッサ14は、投影面PPの座標zを、ワークWの表面WSと略同じ位置と推定される座標zγとして、指定する。これら座標zα、zβ又はzγは、ワークWの公称寸法又は図面データ(2D又は3DCAD)等を考慮してオペレータによって予め定められ、メモリ16に記憶され得る。
【0032】
ステップS3において、プロセッサ14は、投影画像データを生成する。具体的には、プロセッサ14は、ステップS2で指定した位置(すなわち、座標zα、zβ又はzγの位置)に、投影面PPを設定する。この投影面PPは、基準座標系CRのx-y平面(すなわち、ワークWの表面WS)と平行な仮想平面である。
【0033】
次いで、プロセッサ14は、ステップS1で取得した画像データID1から、検出対象部である表面WSの輪郭Eの画像データID1_Eを抽出する。例えば、プロセッサ14は、ワークWの図面データを取得し、検出対象部である表面WSの輪郭Eのモデル形状に類似する形状を画像データID1から検索することによって、画像データID1から輪郭Eの画像データID1_Eを抽出してもよい。同様にして、プロセッサ14は、画像データID2から輪郭Eの画像データID2_Eを抽出する。
【0034】
そして、プロセッサ14は、画像データID
1_E及びID
2_Eを、設定した投影面PPに投影させる。
図6~
図8に、画像データID
1_E及びID
2_Eの投影画像データの例を示す。
図6は、画像データID
1_E及びID
2_Eを、
図2中の投影面PP
1に投影させた投影画像データPD
1の例を示す。投影面PP
1は、基準座標系C
Rのz軸座標が、z=z
2の位置に設定されている。
【0035】
図7は、画像データID
1_E及びID
2_Eを、
図2中の投影面PP
2に投影させた投影画像データPD
2の例を示す。投影面PP
2は、基準座標系C
Rのz軸座標が、z=z
1(<z
2)の位置に設定されている。
図8は、画像データID
1_E及びID
2_Eを、
図2中の投影面PP
3に投影させた投影画像データPD
3の例を示す。投影面PP
3は、基準座標系C
Rのz軸座標が、z=z
0(<z
1)の位置に設定されている。
【0036】
上述したように、第1の撮像位置P1(カメラ座標系CC1)と基準座標系CRとの位置関係は、キャリブレーションによって既知とされている。一方、基準座標系CRにおける投影面PPの位置は、該基準座標系CRのz軸座標で表される。つまり、第1の撮像位置P1(カメラ座標系CC1)と投影面PPの位置とは、基準座標系CRを介して、既知となっている。
【0037】
プロセッサ14は、第1の撮像位置P1と基準座標系CRとの位置関係を示す第1の座標変換データを用いて、画像データID1_Eの各画素のカメラ座標系CC1の座標を、基準座標系CRにおける、投影面PPの位置(例えば、z軸の座標z0、z1又はz2の位置)でのx-y座標に変換する。
【0038】
該x-y座標に変換された各点は、被写体像A
1を受光した撮像センサ24の各画素から該被写体像A
1の光路に沿って延びる線と投影面PPとの交点であって、これら交点の基準座標系C
Rの座標は、投影面PPの位置(座標z)が既知であれば、第1の座標変換データを用いた座標変換によって求めることができる。こうして、
図6~
図8に示すように、画像データID
1_Eが投影面PPに投影された輪郭投影画像データPE
1を生成できる。
【0039】
同様に、プロセッサ14は、第2の撮像位置P
2と基準座標系C
Rとの位置関係を示す第2の座標変換データと、投影面PPの位置(座標z)とを用いて、画像データID
2_Eを投影面PPに投影させる。その結果、
図6~
図8に示すように、画像データID
2_Eが投影面PPに投影された輪郭投影画像データPE
2を生成できる。
【0040】
次いで、プロセッサ14は、投影面PPにおける投影画像データPDの範囲を画定する画像枠Fを設定し、
図6~
図8に示すような投影画像データPD
1、PD
2及びPD
3を生成する。したがって、プロセッサ14は、投影画像データPDを生成する投影画像生成部28(
図1)として機能する。
【0041】
なお、生成する投影画像データPDの画像枠Fの、投影面PP上の位置及びサイズは、オペレータが手動で設定してもよい。この場合において、プロセッサ14は、オペレータから、画像枠Fの縦横サイズを、基準座標系CRのy軸の座標範囲とx軸の座標範囲の入力として受け付けてもよい。又は、プロセッサ14は、画像枠Fの位置及びサイズを、投影された輪郭投影画像データPE1及びPE2を含むように自動で設定してもよい。
【0042】
図6~
図8に示すように、設定する投影面PP
1、PP
2、PP
3の位置が、基準座標系C
Rにおける実際の表面W
Sの位置に近づくにつれて、投影画像データPD
1、PD
2、PD
3における輪郭投影画像データPE
1の位置(第1投影位置)と、輪郭投影画像データPE
2の位置(第2投影位置)とが接近することになる。
【0043】
ステップS4において、プロセッサ14は、生成した投影画像データPDにおいて第1投影位置と第2投影位置とが一致しているか否かを判定する。上述したように、投影面PP
1、PP
2、PP
3の位置に応じて第1投影位置と第2投影位置とのずれ量が変化する。例えば、投影面PP
1及びPP
2で生成された投影画像データPD
1及びPD
2では、
図6及び
図7に示すように、輪郭投影画像データPE
1の位置と、輪郭投影画像データPE
2の位置とは、互いからずれている。
【0044】
その一方で、投影面PP
3で生成された投影画像データPD
3では、
図8に示すように、輪郭投影画像データPE
1の位置と輪郭投影画像データPE
2の位置とは、互いに一致している。プロセッサ14は、このステップS4において、直近のステップS3で生成した投影画像データPDにおいて、輪郭投影画像データPE
1の位置(第1投影位置)と、輪郭投影画像データPE
2の位置(第2投影位置)とが、
図8に示すように、互いに一致しているか否かを判定する。
【0045】
一例として、プロセッサ14は、投影画像データPDの各画素の明るさを、輪郭投影画像データPE1を写している場合は「1」としてカウントする一方、輪郭投影画像データPE1を写さない場合は「0」としてカウントする。同様に、プロセッサ14は、投影画像データPDの各画素の明るさを、輪郭投影画像データPE2を写す場合は「1」としてカウントする一方、輪郭投影画像データPE2を写さない場合は「0」としてカウントする。
【0046】
そして、プロセッサ14は、投影画像データPDの各画素において、カウントした明るさを加算する。この場合、輪郭投影画像データPE1及びPE2の双方を写す画素の明るさは「2」となり、輪郭投影画像データPE1及びPE2のいずれか一方を写す画素の明るさは「1」となり、輪郭投影画像データPE1及びPE2のいずれも写していない画素の明るさは「0」となる。
【0047】
プロセッサ14は、投影画像データPDにおいて明るさが「2」となる画素数N1が、予め定めた閾値Nth1よりも大きい場合に、投影画像データPDにおいて第1投影位置と第2投影位置とが一致している(すなわち、YES)と判定する。このように、本例では、プロセッサ14は、第1投影位置及び第2投影位置に対応する画素(つまり、輪郭投影画像データPE1、PE2を写す画素)の明るさ及び明るさ毎の画素数に基づいて、第1投影位置と第2投影位置とが一致するか否かを判定する。
【0048】
ここで、
図8に示す投影画像データPD
3においては、輪郭投影画像データPE
1及びPE
2の双方を写す画素数が、
図6及び
図7に示す投影画像データPD
1及びPD
2よりも増加するので、画素数N
1を閾値N
th1と比較することにより、第1投影位置と第2投影位置とが一致しているか否かを定量的に評価できる。なお、輪郭投影画像データPE
1又はPE
2を写す又は写さない画素の明るさは、「0」、「1」の2値に限らず、他の如何なる値に設定されてもよい。
【0049】
他の例として、プロセッサ14は、投影画像データPDにおいて、輪郭投影画像データPE1及びPE2の双方を写す画素数N1と、輪郭投影画像データPE1又はPE2を写す画素数N2との比R(=N1/N2)が、予め定めた閾値Rthよりも大きい場合に、投影画像データPDにおいて第1投影位置と第2投影位置とが一致している(すなわち、YES)と判定する。このように、本例においては、プロセッサ14は、第1投影位置及び第2投影位置に対応する画素数N1に基づいて、第1投影位置と前記第2投影位置とが一致するか否かを判定している。
【0050】
さらに他の例として、プロセッサ14は、投影画像データPDにおいて、輪郭投影画像データPE
1と輪郭投影画像データPE
2とで囲まれる閉領域B(
図7)を画定し、該閉領域Bの画素数(又は、面積)N
3が、予め定めた閾値N
th2よりも大きい場合に、投影画像データPDにおいて第1投影位置と第2投影位置とが一致している(すなわち、YES)と判定する。
【0051】
さらに他の例として、プロセッサ14は、投影画像データPDを画像処理し、輪郭投影画像データPE1の形状と輪郭投影画像データPE2の形状とを抽出し、互いに対応する、輪郭投影画像データPE1及びPE2の特徴点(中心点、頂点、エッジ等)を特定する。本実施形態においては、プロセッサ14は、互いに対応する特徴点として、輪郭投影画像データPE1の中心点CP1と、輪郭投影画像データPE2の中心点CP2とを特定する。
【0052】
そして、プロセッサ14は、輪郭投影画像データPE1の特徴点(中心点)CP1と、輪郭投影画像データPE2の特徴点CP2との、投影画像データPDにおける距離dを算出し、該距離dが、予め定めた閾値dthよりも小さい場合に、投影画像データPDにおいて第1投影位置と第2投影位置とが一致している(すなわち、YES)と判定する。
【0053】
以上のような方法により、プロセッサ14は、投影画像データPDにおいて第1投影位置と第2投影位置とが一致しているか否かを判定する。プロセッサ14は、YESと判定した場合は、
図5中のステップS6へ進む一方、NOと判定した場合は、ステップS5へ進む。
【0054】
ステップS5において、プロセッサ14は、投影面PPの位置を変更して指定する。一例として、上述のステップS2で投影面PPの座標zを座標zαとして指定した場合、プロセッサ14は、このステップS5において、投影面PPの座標zを、z-δ1(例えば、δ1=1)へ変更する。他の例として、上述のステップS2で投影面PPの座標zを座標zβとして指定した場合、プロセッサ14は、このステップS5において、投影面PPの座標zを、z+δ1(例えば、δ1=1)へ変更する。
【0055】
さらに他の例として、上述のステップS2で投影面PPの座標zを座標zγとして指定した場合、プロセッサ14は、このステップS5において、投影面PPの座標zを、z+δ1又はz-δ1へ変更する。この例において、直前のステップS4で取得した画素数N1(n)、比Rn、又は画素数N3(n)(若しくは、距離dn)が、2回前のステップS4で取得した画素数N1(n-1)、比Rn-1、又は画素数N3(n-1)(若しくは、距離dn-1)よりも小さく(若しくは大きく)なった場合、プロセッサ14は、投影面PPの座標zを変更する方向を、前回のステップS5から反転させてもよい。
【0056】
例えば、第n-1回目のステップS5で投影面PPの座標zを、z軸プラス方向へ変更してz+δ1とした結果、第n回目のステップS4で取得した画素数N1(n)、比Rn、又は画素数N3(n)(若しくは距離dn)が、第n-1回目のステップS4で取得した画素数N1(n-1)、比Rn-1、又は画素数N3(n-1)(若しくは距離dn-1)よりも小さく(若しくは大きく)なったとする。
【0057】
この場合、第n回目のステップS5において、プロセッサ14は、投影面PPの座標zを変更する方向を第n-1回目から反転させ、座標zを、z軸マイナス方向へ変更すべく、z-δ1とする。この構成により、ステップS4でYESと判定するまでのサイクルタイムを縮減できる。さらに他の例として、プロセッサ14は、投影面PPの座標zを、このステップS5の開始前に指定していない座標値にランダムに設定してもよい。
【0058】
ステップS5の後、プロセッサ14は、ステップS3へ戻り、ステップS5で変更した座標zの位置に投影面PPを設定し、設定した投影面PPで投影画像データPDを生成する。そして、ステップS4において、直近のステップS3で生成した投影画像データPDにおいて第1投影位置と第2投影位置とが一致するか否かを判定する。
【0059】
このように、プロセッサ14は、ステップS4でYESと判定するまで、ステップS3~S5のループを繰り返し実行することによって、第1投影位置と第2投影位置とが一致する投影面PD
3を検索する。したがって、本実施形態においては、プロセッサ14は、投影面PD
3を検索する投影面検索部30(
図1)として機能する。
【0060】
ステップS6において、プロセッサ14は、ステップS4でYESと判定した投影面PP
3の、基準座標系C
Rにおける位置データを取得する。本実施形態においては、プロセッサ14は、投影面PP
3の位置データとして、基準座標系C
Rのz軸座標z
0を取得し、メモリ16に記憶する。したがって、プロセッサ14は、位置データ(座標z
0)を取得する位置データ取得部32(
図1)として機能する。
【0061】
ここで、ステップS4でYESと判定した投影面PP3の位置は、基準座標系CRにおけるワークWの表面WSの位置に一致していると見做すことができる。したがって、このステップS6で取得した位置データ(座標z0)は、検出対象部である表面WSの、基準座標系CRの位置(具体的には、z軸の位置)を示すデータとなる。
【0062】
以上のように、本実施形態においては、プロセッサ14は、ステップS3で生成した投影画像データPDにおいて第1投影位置と第2投影位置とが一致する投影面PP3を検索している。この構成によれば、基準座標系CRにおいて検出対象部(表面WS)の位置を示す投影面PP3を、自動的且つ高精度に検索することができる。
【0063】
また、本実施形態においては、プロセッサ14は、ステップS4でYESと判定するまでにステップS3~S5の一連の動作を繰り返し実行することによって、投影面PP3を検索している。この構成によれば、投影面PP3を、比較的簡単なアルゴリズムで、迅速且つ確実に検索できる。
【0064】
また、本実施形態においては、プロセッサ14は、検索した投影面PP3の位置データ(座標z0)を取得している。この構成によれば、ワークWに対して作業を行うロボットの制御に用いる位置データを、自動で取得することができる。なお、ロボットの制御については、後述する。
【0065】
なお、上述の実施形態においては、プロセッサ14が、ステップS3において、画像データID1及びID2から輪郭Eの画像データID1_E及びID2_Eを抽出し、画像データID1_E及びID2_Eを投影面PPに投影させて投影画像データPDを生成する場合について述べた。しかしながら、プロセッサ14は、ステップS3において、ワークWの画像データID1及びID2を投影面PPに投影させて投影画像データPDを生成してもよい。
【0066】
この場合、投影画像データPDには、画像データID1を投影させたワーク投影画像データPW1と、画像データID2を投影させたワーク投影画像データPW2とが含まれ、ワーク投影画像データPW1は、輪郭投影画像データPE1を含み、ワーク投影画像データPW2は、輪郭投影画像データPE1を含むことになる。
【0067】
そして、プロセッサ14は、ステップS4において、例えばワークWの図面データを用いて、ワーク投影画像データPW2から輪郭投影画像データPE1を抽出し、ワーク投影画像データPW2から輪郭投影画像データPE2を抽出し、投影画像データPDにおいて輪郭投影画像データPE1の位置と輪郭投影画像データPE2の位置とが一致するか否かを判定してもよい。
【0068】
また、第1の撮像位置P
1に配置されたカメラ18の視野に、検出対象部である表面W
Sの全域が入らなかった場合においても、プロセッサ14は、ステップS3及びS4のプロセスを実行できる。以下、
図9を参照して、この機能について説明する。例えば、ステップS1において、カメラ18が、
図9に示す画像データID
1’を撮像したとする。
【0069】
この画像データID1’においては、表面WSの一部が写っておらず、これにより、輪郭Eのうち、部分E’は画像データID1’に写っている一方、点線で示す部分E”は画像データID1’に写っていない。この場合において、プロセッサ14は、ステップS3において、例えば、ワークWの図面データから輪郭Eのモデル形状を取得し、該モデル形状に基づいて、部分E”を推定して補完する。
【0070】
そして、プロセッサ14は、カメラ座標系CC1において、輪郭Eの部分E’と、推定した部分E”とを結合し、輪郭Eの画像データID1_Eを生成する。このように生成された画像データID1_Eの各画素は、カメラ座標系CC1の座標として表すことができるので、プロセッサ14は、該座標を、第1の座標変換データを用いて基準座標系CRへ変換し、該画像データID1_Eの各画素を投影面PPに投影させた投影点の基準座標系CRの座標を演算により求めることができる。
【0071】
こうして、プロセッサ14は、投影面PPで輪郭投影画像データPE1を生成することができる。同様に、第2の撮像位置P2に配置されたカメラ20の視野に表面WSの全域が入らなかった場合においても、プロセッサ14は、投影面PPで輪郭投影画像データPE2を生成することができる。
【0072】
次に、
図10を参照して、画像処理装置10の他の機能について説明する。本実施形態においては、画像処理装置10のI/Oインターフェース17に、表示装置40及び入力装置42が、有線又は無線で通信可能に接続されている。表示装置40は、LCD又は有機ELディスプレイ等を有し、プロセッサ14は、I/Oインターフェース17を介して、表示装置40に画像データを送信し、該表示装置40に画像を表示させる。
【0073】
入力装置42は、キーボード、マウス、又はタッチセンサ等を有し、オペレータが入力した入力情報を、I/Oインターフェース17を介してプロセッサ14へ送信する。なお、表示装置40及び入力装置42は、画像処理装置10に一体に設けられてもよいし、画像処理装置10とは別体として設けられてもよい。
【0074】
次に、
図11を参照して、画像処理装置10の動作の他の形態について説明する。なお、
図11に示すフローにおいて、
図5に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。ステップS11において、プロセッサ14は、検証画像データVDを生成する。検証画像データVDの画像の一例を、
図12に示す。
【0075】
図12に示す検証画像データVDにおいては、後述のステップS22で生成する投影画像データPDの画像を表示する投影画像領域44と、オペレータが情報を入力するための入力画像領域46とが、並べて表示されている。入力画像領域46は、自動検索ボタン画像48、マニュアルモードボタン画像50、位置データ取得ボタン画像52、及び動作終了ボタン画像54を有する。なお、入力画像領域46の機能については、後述する。プロセッサ14は、このステップS11において、検証画像データVDを生成し、表示装置40に表示させる。このように、本実施形態においては、プロセッサ14は、検証画像データVDを生成する検証画像生成部34(
図10)として機能する。
【0076】
ステップS12において、プロセッサ14は、自動検索ボタンとマニュアルモードボタンのいずれの入力を受け付けたかを判定する。例えば、オペレータは、表示装置40に表示される検証画像データVDを視認しつつ、入力装置42を操作して、自動検索ボタン画像48をクリックする。そうすると、プロセッサ14は、自動検索ボタンの入力を受け付けてYESと判定し、画像処理装置10の動作モードを自動検索モードに移行させ、ステップS13へ進む。
【0077】
一方、オペレータが、入力装置42を操作してマニュアルモードボタン画像50をクリックした場合、プロセッサ14は、マニュアルモードボタンの入力を受け付けてNOと判定し、画像処理装置10の動作モードをマニュアルモードに移行させ、入力画像領域46に入力画像56を、例えばプルダウン形式の画像として表示させ、ステップS16へ進む。入力画像56は、ステップS16のマニュアルモードにおいてオペレータが投影面PPの位置の入力情報を手動で入力するための画像である。なお、入力画像56の機能については、後述する。
【0078】
ステップ13において、プロセッサ14は、後述のステップS4でNOと判定した回数「m」を「ゼロ」にセットする。その後、プロセッサ14は、ステップS1~S4を実行する。ステップS4でNOと判定した場合、ステップS14において、プロセッサ14は、ステップS4でNOと判定した回数「m」を、「1」だけインクリメントする(m=m+1)。
【0079】
ステップS15において、プロセッサ14は、回数「m」が、予め定めた回数mMAX(例えば、mMAX=50)に達したか否かを判定する。プロセッサ14は、回数m=mMAXとなった場合にYESと判定し、検証画像データVDにおいて、入力画像領域46に入力画像56を表示させて、ステップS16へ進む。
【0080】
このとき、プロセッサ14は、例えば「投影面を検索できませんでした」という画像又は音声の形式のアラーム信号を生成し、表示装置40又はスピーカ(図示せず)を通してオペレータに報知してもよい。一方、プロセッサ14は、回数m<mMAXである場合にNOと判定し、ステップS5へ進む。このように、本実施形態においては、プロセッサ14は、回数mがmMAXに達するまで、ステップS3、S4及びS5を繰り返し実行し、投影面PP3を自動で検索する。
【0081】
一方、ステップS12でNOと判定した場合、又は、ステップS15でYESと判定した場合、ステップS16において、プロセッサ14は、マニュアルモードフローを実行する。このステップS16について、
図13を参照して説明する。マニュアルモードの開始後、ステップS21において、プロセッサ14は、投影面PPの位置の入力情報を受け付けたか否かを判定する。例えば、オペレータは、表示装置40に表示される検証画像データVDを視認しつつ、入力装置42を操作して、入力画像56に投影面PPの位置の入力情報を入力する。
【0082】
本実施形態においては、入力画像56は、数値入力画像58、変更入力画像60及び62を有する。数値入力画像58は、後述のステップS22で設定すべき投影面PPの位置として、基準座標系CRのz軸の座標zの値を任意に入力するための画像である。なお、数値入力画像58は、現時点で設定されている座標zを表示してもよい。
【0083】
変更入力画像60は、後述のステップS22で設定すべき投影面PPの座標zを、z軸プラス方向へ所定の値δ2(例えば、δ2=1)だけ増加させる(z=z+δ2)ための画像である。一方、変更入力画像62は、投影面PPの座標zを、z軸マイナス方向へ所定の値δ2だけ減少させる(z=z-δ2)ための画像である。
【0084】
例えば、オペレータは、数値入力画像58に、設定すべき投影面PPの座標zを、z=100のような座標値の入力情報として、入力する。又は、オペレータは、入力装置42を操作して、変更入力画像60又は62をクリックし、投影面PPの座標zを、現時点で設定されている座標zから値δ2だけ増加又は減少させる入力情報(z=z+δ2、z=z-δ2)を入力する。
【0085】
オペレータが投影面PPの座標zの入力情報(z=100、z=z+δ
2、又は、z=z-δ
2)を入力すると、I/Oインターフェース17は、入力装置42から該入力情報を受け付ける。このように、本実施形態においては、I/Oインターフェース17は、投影面PPの位置(座標z)の入力情報を受け付ける入力受付部36(
図10)として機能する。
【0086】
プロセッサ14は、I/Oインターフェース17を介して入力情報を取得すると、このステップS21でYESと判定し、取得した入力情報をメモリ16に記憶して、ステップS22へ進む。一方、プロセッサ14は、I/Oインターフェース17が入力情報を受け付けていない場合はNOと判定し、ステップS27へ進む。
【0087】
ステップS22において、プロセッサ14は、直近のステップS21で受け付けた座標zの位置に投影面PPを設定し、上述のステップS3と同様の方法で、投影画像データPDを生成する。そして、プロセッサ14は、生成した投影画像データPDを、検証画像データVDの投影画像領域44に表示する。投影画像領域44に表示された投影画像データPDを視認することで、オペレータは、入力画像56に入力した位置(z座標)の投影面PPで生成した投影画像データPDにおいて、第1投影位置と第2投影位置とが一致しているか否かを判断できる。
【0088】
ステップS23において、プロセッサ14は、位置データ取得ボタンの入力を受け付けたか否かを判定する。例えば、オペレータは、ステップS22で投影画像領域44に表示された投影画像データPDにおいて、第1投影位置と第2投影位置とが一致していると判断した場合、入力装置42を操作して、位置データ取得ボタン画像52をクリックする。そうすると、プロセッサ14は、位置データ取得ボタンの入力を受け付けてYESと判定し、ステップS24へ進む。一方、位置データ取得ボタンの入力を受け付けていない場合はNOと判定し、ステップS25へ進む。
【0089】
ステップS24において、プロセッサ14は、位置データ取得部32として機能し、ステップS23でYESと判定した投影面PP3の位置データ(座標z0)を取得し、メモリ16に記憶する。一方、ステップS23でNOと判定した場合、ステップS25において、プロセッサ14は、動作終了ボタンの入力を受け付けたか否かを判定する。
【0090】
例えば、オペレータは、入力装置42を操作して、動作終了ボタン画像54をクリックする。そうすると、プロセッサ14は、動作終了ボタンの入力を受け付けてYESと判定し、ステップS16を終了し、以って、
図11に示すフローを終了する。一方、プロセッサ14は、動作終了ボタンの入力を受け付けていない場合はNOと判定し、ステップS26へ進む。
【0091】
ステップS26において、プロセッサ14は、上述のステップS21と同様に、投影面PPの位置の入力情報を受け付けたか否かを判定する。プロセッサ14は、YESと判定した場合はステップS22へ戻る一方、NOと判定した場合はステップS23へ戻る。一方、ステップS21でNOと判定した場合、プロセッサ14は、上述のステップS25と同様に、動作終了ボタンの入力を受け付けたか否かを判定する。プロセッサ14は、YESと判定した場合は、ステップS16を終了し、以って、
図11に示すフローを終了する。一方、プロセッサ14は、NOと判定した場合はステップS21へ戻る。
【0092】
以上のように、本実施形態においては、プロセッサ14は、オペレータからのマニュアルモードボタンの入力に応じて、ステップS16のマニュアルモードへ移行し、オペレータが手動で入力した位置に設定した投影面PPで投影画像データPDを生成し、表示装置40に表示させている。この構成によれば、オペレータは、第1投影位置と第2投影位置とが一致する投影面PP3を、手動で検索できる。この機能は、例えば、オペレータが自らの経験則により投影面PP3を検索したい場合等に、有利である。
【0093】
また、本実施形態においては、プロセッサ14は、ステップS4でNOと判定した回数mがmMAXに達した場合、ステップS16のマニュアルモードへ移行している。この構成によれば、プロセッサ14が、何らかの理由(例えば、画像データに検出対象部が鮮明に写っていない等の理由)により、投影面PP3を検索できなかった場合に、オペレータが投影面PP3を手動で検索できるようになる。
【0094】
なお、検証画像データVDから自動検索ボタン画像48を省略してもよい。この場合において、プロセッサ14は、
図11に示すフローにおいて、ステップS11の後に、自動検索モードに移行することなく、ステップS16を実行するように構成されてもよい。また、
図12に示す検証画像データVDにおいては、投影画像領域44及び入力画像領域46が、紙面左右方向に並んで表示されている場合を例示したが、例えば紙面上下方向に並んで表示されてもよいし、如何なる配置に表示されてもよい。
【0095】
同様に、入力画像領域46において、自動検索ボタン画像48、マニュアルモードボタン画像50、位置データ取得ボタン画像52、動作終了ボタン画像54、数値入力画像58、変更入力画像60及び62は、如何なる配置に表示されてもよい。また、自動検索ボタン画像48、マニュアルモードボタン画像50、位置データ取得ボタン画像52、動作終了ボタン画像54、数値入力画像58、変更入力画像60及び62の少なくとも1つを省略し、省略した画像への入力を、入力装置42の所定の操作(コマンド入力、割り当てキー操作等)によって実行するように構成されてもよい。
【0096】
次に、
図14及び
図15を参照して、一実施形態に係るロボットシステム70について説明する。ロボットシステム70は、制御装置72、ロボット74、画像処理装置10、カメラ18及び20、表示装置40、及び入力装置42を備える。制御装置72は、ロボット74、カメラ18及び20の動作を制御する。
【0097】
本実施形態においては、ロボット74は、垂直多関節ロボットであって、ロボットベース76、旋回胴78、ロボットアーム80、手首部82、及びエンドエフェクタ84を有する。ロボットベース76は、ワークセルの床に固定されている。旋回胴78は、ロボットベース76に鉛直軸周りに旋回可能に設けられている。
【0098】
ロボットアーム80は、旋回胴78に回動可能に取り付けられた下腕部86と、該下腕部86の先端部に回動可能に取り付けられた上腕部88とを有する。手首部82は、上腕部88の先端部に連結され、エンドエフェクタ84を回動可能に支持する。エンドエフェクタ84は、ロボットハンド、切削工具、レーザ加工ヘッド、溶接トーチ、又は塗料塗布器等であって、ワークWに対して所定の作業(ハンドリング、切削加工、レーザ加工、溶接、塗工等)を行う。
【0099】
ロボット74の各コンポーネント(ロボットベース76、旋回胴78、ロボットアーム80、手首部82)には、サーボモータが内蔵されている。サーボモータは、プロセッサ14からの指令に応じて、ロボット74の各可動コンポーネント(旋回胴78、ロボットアーム80、手首部82)を動作させる。
【0100】
本実施形態においては、画像処理装置10は、制御装置72に実装されている。すなわち、制御装置72は、プロセッサ14、メモリ16、及びI/Oインターフェース17を有するコンピュータであって、プロセッサ14、メモリ16、及びI/Oインターフェース17は、画像処理装置10を構成する。
【0101】
プロセッサ14は、ロボット74によってワークWに作業を行う前に、
図5又は
図11に示すフローを実行し、ステップS6又はS24で投影面PP
3の位置データ(座標z
0)を取得する。また、プロセッサ14は、ステップS1で取得した画像データID
1(又はID
2)に写る表面W
Sの輪郭Eの特徴点(具体的には、中心点)の、該画像データID
1(又はID
2)における位置(すなわち、特徴点に対応する画素の位置)を特定する。そして、プロセッサ14は、画像データID
1(又はID
2)における該特徴点の位置の情報と、カメラ18(又は20)の内部パラメータとを用いて、該特徴点のカメラ座標系C
C1(又はC
C2)における座標(x
C,y
C)を取得する。
【0102】
そして、プロセッサ14は、取得した位置データ(座標z0)と、第1の座標変換データ(又は第2の座標変換データ)とを用いて、カメラ座標系CC1の座標(xC,yC)を、基準座標系CRにおける投影面PP3の位置(z=z0の位置)に変換し、基準座標系CRの座標(xR,yR,z0)を取得する。この座標(xR,yR,z0)は、基準座標系CRにおける表面WSの特徴点(中心点CP1、CP2)の位置を示すデータとなる。
【0103】
代替的には、プロセッサ14は、ステップS4でYESと判定した投影画像データPD3を画像処理し、輪郭投影画像データPE1又はPE2の特徴点CP1又はCP2を特定し、該特徴点CP1又はCP2の基準座標系CRのx-y平面の座標(xR,yR)を取得してもよい。そして、プロセッサ14は、取得した位置データ(座標z0)と、座標(xR,yR)とから、座標(xR,yR,z0)を取得してもよい。
【0104】
そして、プロセッサ14は、基準座標系CRにおける表面WSの位置:座標(xR,yR,z0)に基づいてロボット74を制御し、該ロボット74のエンドエフェクタ84よってワークW(例えば、表面WS)に対して所定の作業を行う。本実施形態によれば、撮像位置P1及びP2でカメラ18及び20が撮像した画像データID1及びID2から、ワークWの表面WSの位置:座標(xR,yR,z0)を取得し、該位置に基づいてロボット74を制御することによって、ワークWに対する作業を正確に実行することができる。
【0105】
なお、ロボットシステム70において、制御装置72と画像処理装置10とを別体として構成することもできる。この場合、制御装置72は、プロセッサ及びメモリを有する1つのコンピュータであって、画像処理装置10に通信可能に接続される。そして、画像処理装置10のプロセッサ14は、ステップS6又はS24で投影面PP3の位置データ(座標z0)を取得したときに、該位置データを制御装置72に送信してもよい。
【0106】
また、1つのカメラ18を用いて、
図5又は
図11に示すフローを実行することもできる。このような形態を
図16に示す。
図16に示すロボットシステム70’においては、上述のカメラ20が設けられておらず、カメラ18が、ロボット74のエンドエフェクタ84に設置されている。
【0107】
本実施形態においては、カメラ18は、ロボット74の手先(又は、TCP)に対して、キャリブレーションにより既知の位置関係に配置されている。したがって、制御装置72は、基準座標系CRにおけるカメラ18の位置及び姿勢(すなわち、カメラ座標系CC1の原点位置及び各軸の方向)を認識できるようになっている。
【0108】
ロボットシステム70’において
図5又は
図11に示すフローを実行する場合、プロセッサ14は、ステップS1において、ロボット74を動作させて、カメラ18を第1の撮像位置P
1に配置し、カメラ18によって画像データID
1を撮像する。また、プロセッサ14は、ロボット74を動作させて、カメラ18を第2の撮像位置P
2に配置し、カメラ18によって画像データID
2を撮像する。このように、1つのカメラ18を複数の撮像位置P
1、P
2に配置して撮像した画像データID
1、ID
2を用いて、
図5又は
図11に示すフローを実行し、投影面PP
3を検索することができる。
【0109】
なお、上述の画像処理装置10から、位置データ取得部32を省略することもできる。例えば、画像処理装置10の投影面検索部30が投影面PP3を検索したときに、オペレータが手動で投影面PP3の位置データ(座標z0)を取得してもよい。また、画像処理装置10から、メモリ16又はI/Oインターフェース17を省略してもよい。
【0110】
また、上述の実施形態においては、プロセッサ14が、ステップS3、S4及びS5を実行することによって投影面PP3を検索する場合について述べた。しかしながら、投影面PP3を検索する方法は、ステップS3、S4及びS5に限定されない。例えば、プロセッサ14は、複数の位置(座標z0、z1、z2、・・・zn)に設定した複数の投影面PP1、PP2、PP3、・・・PPnの各々で投影画像データPD1、PD2、PD3、・・・PDnを生成し、メモリ16に記憶する。
【0111】
次いで、プロセッサ14は、これら複数の投影画像データPD1、PD2、PD3、・・・PDnの各々において、第1投影位置と第2投影位置とが一致しているか否かを順に判定することによって、投影面PP3を検索してもよい。上述の実施形態においては、検出対象部が表面WSである場合について述べたが、これに限らず、物体(ワークW)の側面に形成されるエッジ、凸部、凹部等、如何なる構造のものであってもよい。
【0112】
また、表面WSは、円形に限らず、楕円形、多角形等、如何なる形状であってもよい。また、表面WSは、基準座標系CRのx-y平面に対して傾斜してもよい。この場合において、プロセッサ14は、上述のステップS3又はS22において、投影面PPを表面WSと平行に設定してもよい。
【0113】
また、第1の撮像位置P
1及び第2の撮像位置P
1は、
図2に示す位置に限定されず、如何なる位置であってもよい。また、計n個(nは3以上の正数)のカメラを、それぞれ、第1の撮像位置P
1、第2の撮像位置P
2、・・・第nの撮像位置P
nに配置させて、画像データID
1、ID
2、・・・ID
nを撮像させ、これら画像データID
1、ID
2、・・・ID
nを用いて、
図5又は
図11に示すフローを実行し、投影面PP
3を検索することもできる。以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【0114】
10 画像処理装置
14 プロセッサ
18,20 カメラ
26 画像取得部
28 投影画像生成部
30 投影面検索部
32 位置データ取得部
34 検証画像生成部
36 入力受付部
70,70’ ロボットシステム
72 制御装置
74 ロボット