以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
[第1実施形態]
図1に示すように、ロボット装置1は、ロボット本体2と、ロボット本体2から離隔して配置されロボット本体2が移動させるワーク(検出対象)Wを上方から撮影可能なカメラ4と、ロボット本体2及びカメラ4を制御する制御装置3と、を備えている。
ロボット本体2は、6軸の垂直多関節アーム(以下、アームと呼ぶ)21と、エンドエフェクタであるハンド22とを有している。本実施形態では、アーム21として6軸の垂直多関節アームを適用しているが、軸数は用途や目的に応じて適宜変更してもよい。また、本実施形態では、エンドエフェクタとしてハンド22を適用しているが、これには限られず、ワークWに対して作業可能なツールの全般を含めることができる。
アーム21は、7つのリンク61〜67と、各リンク61〜67を揺動又は回動可能に連結する6つの関節71〜76とを備えている。各リンク61〜67としては、長さが固定されたものを採用している。但し、例えば、直動アクチュエータにより伸縮可能なリンクを採用してもよい。各関節71〜76には、各関節71〜76を各々駆動するモータと、モータの回転角度を検知するエンコーダと、各モータに供給する電流を検知する電流センサと、各関節71〜76のトルクを検知するトルクセンサと、が設けられている。
ハンド22は、アーム21の先端リンク67に取り付けられて支持され、アーム21の動作により位置及び姿勢の少なくとも一自由度が調整されるようになっている。ハンド22は、2本の指23と、これら指23の間隔を開閉可能に支持するハンド本体24とを備え、指23同士が接近する閉動作によりワークWを把持可能になっている。
図2に示すように、制御装置3は、コンピュータにより構成され、ロボット本体2及びカメラ4を制御するようになっている。制御装置3を構成するコンピュータは、例えばCPU30と、データを一時的に記憶するRAM31と、各部を制御するためのプログラムを記憶するROM32と、を備えている。CPU30は、後述するパターンマッチング装置5を備え(図1参照)、後述する画像処理やパターンマッチングに関する演算処理を行うようになっている。RAM31は、CPU30にて処理中のデータや、カメラインタフェース33から取り込まれた画像等を一時的に記憶するようになっている。ROM32は、CPU30が行うロボット装置1の制御や画像処理、パターンマッチングやワークの位置姿勢演算に関する演算プログラムや設定パラメータ、カメラ4の撮影パラメータ、パターンマッチング用のテンプレート画像等を保存している。ROM32に記憶されたデータは、CPU30からの書き込みや消去を除き、制御装置3の電源がオフ状態にされても保持されるようになっている。
また、制御装置3は、カメラ4に接続されるカメラインタフェース33と、モニタ34に接続されるモニタインタフェース35と、マウス36に接続される入力装置インタフェース37と、通信インタフェース38と、を備えている。カメラインタフェース33は、カメラ4で撮影された画像を取り込み、RAM31に転送するようになっている。モニタインタフェース35は、モニタ34にロボット装置1の状態や画像処理結果等を表示するようになっている。入力装置インタフェース37は、作業者がモニタ34を見ながらマウス36で行う操作信号を受信し、CPU30に送信するようになっている。通信インタフェース38は、ロボット装置1の上位システムに接続され、演算で得られたワークWの位置姿勢等の情報の通信を行うようになっている。
図1に示すように、制御装置3は、テンプレート画像と撮影画像とに基づいた画像に対してパターンマッチングを実行するパターンマッチング装置5を備えている。パターンマッチング装置5は、後述する補正パラメータを利用して、テンプレート画像から補正テンプレート画像を生成し、補正テンプレート画像と撮影画像とでパターンマッチングする演算部50を備えている。パターンマッチング装置5は本実施形態では制御装置3に内蔵されており、演算部50はCPU30により構成されている。
図3に示すように、演算部50は、カメラ校正部51と、パラメータ管理部52と、歪み補正部53と、テンプレート生成部54と、テンプレート補正部55と、パターンマッチ部56と、三次元復元部57と、を備えている。
カメラ校正部51は、歪み補正部53にて補正するために必要な撮影パラメータ40及び補正後撮影パラメータ41を算出するようになっている。尚、これら撮影パラメータ40及び補正後撮影パラメータ41は、テンプレート画像42を実際の撮影画像に対してパターンマッチング可能に補正する補正パラメータである。歪み補正部53は、カメラ校正部51で算出された撮影パラメータ40及び補正後撮影パラメータ41を用いて、カメラ4で撮影された撮影画像の補正を行うようになっている。テンプレート生成部54は、テンプレートにすべきワークWを撮影した画像を用いて、パターンマッチ部56でパターンマッチングを行うためのテンプレート画像42を作成するようになっている。
テンプレート補正部55は、テンプレート生成時の補正後撮影パラメータ41aと、実際の撮影時の補正後撮影パラメータ41bと用いて、テンプレート画像42の変換を行い、補正テンプレート画像43を作成し、パラメータ管理部52に保存する。パターンマッチ部56は、歪み補正を行った撮影画像と、補正テンプレート画像43とでパターンマッチングを行い、撮影画像でのワークWの位置を算出するようになっている。三次元復元部57は、パターンマッチ部56より出力された画像上のワークWの位置と補正後撮影パラメータ41とを用いて、画像上の位置を三次元座標上の位置に変換し、三次元位置データを出力して、計測結果として上位システムへ送信するようになっている。
上述したパターンマッチング装置5の演算部50での各画像生成及びパターンマッチングの処理を、図3及び図4を用いて説明する。
カメラ4により、計測平面6に設置したカメラ校正用マーカ(不図示)が撮影され、撮影された画像は、カメラインタフェース33を経由してRAM31に取り込まれ、更にカメラ校正部51及び歪み補正部53に入力される。カメラ校正部51は、撮影パラメータ40及び補正後撮影パラメータ41をカメラ4で撮影された画像から算出して、パラメータ管理部52に記憶する。
ここで、撮影パラメータ40及び補正後撮影パラメータ41は、内部パラメータ及び外部パラメータに関する情報となっている。図4のピンホールカメラモデルに示すように、内部パラメータは、レンズ歪み、焦点距離fo、画素ピッチcx,cy、画素数、画像光軸中心C等となっている。画像光軸中心Cは、センサ面4a上で光軸Lと交わる点であり、レンズ歪みの画像への影響は画像光軸中心Cを中心に放射状に発生する。
また、外部パラメータは、計測平面6及びカメラ4の距離、相対位置姿勢等となっている。これにより、計測平面6とカメラ4との相対位置関係、更にはカメラ4のセンサ面4a(画像)上の位置と計測平面6上の位置との相対関係が表される。尚、センサ面4aと計測平面6との相対位置関係には、両者の相対的な傾斜を含んでおり、この傾斜を補正するための傾斜情報(歪情報)も外部パラメータに含まれている。
カメラ校正部51は、入力された撮影画像に基づき、非特許文献1に記載された手法を用いて撮影パラメータ40を算出する。この場合、カメラ校正用マーカの姿勢を変えながら、数十枚程度の画像を撮影し、これらの画像を用いて撮影パラメータ40を算出する。詳細な算出方法については、非特許文献1に記載されているので、ここでは説明を省略する。尚、撮影パラメータ40の算出方法としては、非特許文献1の方法には限られず、他の既存の又は新規の方法を適用することができる。
カメラ校正部51は、算出した撮影パラメータ40に基づき、レンズ歪みが無く、計測平面6とカメラ4のセンサ面4aとの相対位置姿勢を平行にした補正後撮影パラメータ41を算出する。即ち、補正後撮影パラメータ41は、カメラ4の画像光軸中心Oと計測平面6との距離を変えずに、計測平面6に対してカメラ4の光軸Lが垂直に位置して、レンズ歪みの無いカメラ4が設置された場合の撮影パラメータである。この算出処理は、カメラインタフェース33経由でカメラ4からRAM31に取り込んだ撮影画像を用いて、CPU30にてROM32のカメラ校正プログラムを実行することで行う。
カメラ校正部51は、算出した撮影パラメータ40及び補正後撮影パラメータ41を、テンプレート生成時と実際の撮影時とで別々にして、パラメータ管理部52に登録する。カメラ校正部51は、テンプレート生成時には撮影パラメータ40a及び補正後撮影パラメータ41aを登録し、実際の撮影時には撮影パラメータ40b及び補正後撮影パラメータ41bを登録する。パラメータ管理部52に登録された各撮影パラメータは、ROM32に記録される。
パラメータ管理部52は、テンプレート生成時の撮影パラメータ40a及び補正後撮影パラメータ41aと、実際の撮影時の撮影パラメータ40b及び補正後撮影パラメータ41bと、について、登録されたデータを管理する。更に、パラメータ管理部52は、パターンマッチング用のテンプレート画像42及び補正テンプレート画像43についても、登録されたデータを管理する。パラメータ管理部52における処理は、CPU30でROM32のパラメータ管理プログラムを実行することにより実現され、登録されたデータはROM32に記録される。
歪み補正部53は、カメラ校正部51で算出された撮影パラメータ40及び補正後撮影パラメータ41を用いて、カメラ4で撮影された画像の補正を行う。ここでの補正方法を、図4(b)を用いて説明する。尚、同図中、符号140は撮影パラメータ40であるカメラ4のセンサ面4aの位置姿勢、符号141は補正後撮影パラメータ41であるカメラ4のセンサ面4aの位置姿勢をそれぞれ示す。
歪み補正部53は、元画像の点P1について、撮影パラメータ40を利用して計測平面6に投影して、対応する点P3を求める。そして、歪み補正部53は、点P3を、補正後撮影パラメータ41の利用により歪み補正画像に投影することで、点P2を求める。このような補正方法で、歪み補正画像の全画素について画像間で対応する点を求めることで、歪み補正を行う。
具体的には、元画像の点P1の画像座標を(u,v)とし、レンズ歪みを補正した仮想点の画像座標を(u1,v1)とし、撮影パラメータ40の内部パラメータのうちレンズ歪み係数をKとし、画像光軸中心Oを(u0,v0)とする。これらの関係により、数式1が得られる。
また、撮影パラメータ40の内部パラメータのうちレンズ歪み以外をAとし、撮影パラメータ40の外部パラメータを[R t]とし、座標(u1,v1)に基づいて最後に1の要素を加えたベクトルをm=[u1 v1 1]とする。更に、点P3の三次元座標を(x,y,z)とし、それに基づいて最後に1の要素を加えたベクトルをM=[x y z 1]とすると、ベクトルm及びベクトルMの関係は数式2となる。
同様に、補正後撮影パラメータ41によって表現される歪み補正画像の座標上の点P2の画像座標を(u’,v’)とし、それに基づいて最後に1の要素を加えたベクトルをn=[u’ v’ 1]とする。また、補正後撮影パラメータ41の内部パラメータをA’とし、外部パラメータを[R’ t’]とする。これにより、点P3の三次元座標に関するベクトルM=[x y z 1]とベクトルnとの関係は、数式3となる。
数式2及び数式3により、ベクトルmとベクトルnとの関係は、数式4となる。
尚、カメラ校正部51に非特許文献1の手法を用いた場合、f(u,v,u0,v0,K)と、内部パラメータAと、外部パラメータ[R t]とは、それぞれ数式5〜数式8で示されるようになる。
但し、x=(u−u
0)c
x及びy=(v−v
0)c
y
ここで、cx及びcyは、撮影パラメータ内で定義されたカメラ4のセンサ上でのu及びvの各方向の画素ピッチである。
このようにして、歪み補正画像の各画素について対応する元画像の画素を求め、元画像の各画素の輝度を当てはめることにより、歪み補正画像を得る。尚、対応する画素が複数ある場合、バイリニア補間等の方法により複数の対応する画素の輝度値を混合して求めても良い。歪み補正部53により歪み補正された結果、歪みの無いレンズで補正後撮影パラメータ41のカメラ4の位置姿勢、即ち計測平面6に平行な位置から撮影したかのような画像が得られる。また、得られた画像は、補正後撮影パラメータ41で表現されている解像度になる。
歪み補正部53での処理は、RAM31に取り込んだ撮影画像と、パラメータ管理部52によりROM32に記憶された撮影パラメータ40とを用いて、CPU30にてROM32に記録された歪み補正プログラムを実行することで行われる。補正して得られた歪み補正画像はRAM31に一時記憶する。歪み補正部53で補正された画像は、テンプレート生成部54及びパターンマッチ部56に入力される。
テンプレート生成部54は、ワークWを撮影した画像を用いて、パターンマッチ部56でパターンマッチングを行うためのテンプレート画像42を作成する。具体的には、テンプレート生成部54は、RAM31に一時記憶された歪み補正画像を、モニタインタフェース35を介してモニタ34に表示する。図4(c)に示すように、作業者がモニタ34の画像34aを見ながらワークWの画像34bの全体や、ワークWの画像34bの特徴的な部分を切り出し部34cとしてマウス36の使用により指定する。
そして、作業者がマウス36を用いて入力した操作信号は、入力装置インタフェース37を介してCPU30が受信し、テンプレート生成部54が歪み補正画像からテンプレート画像42を生成する。作成されたテンプレート画像42は、パラメータ管理部52へテンプレート画像42として登録することで、ROM32に記録される。また、テンプレート画像42の生成時の画像34aでのテンプレート画像42の位置も合わせて保存する。尚、このテンプレート画像42は、画像データで作成することには限られず、エッジを構成する点の情報(例えば、画像座標の配列、直線や円弧を表す方程式等)で作成しても良い。
尚、テンプレート生成部54でのテンプレート生成処理は、ROM32上のモデル作成プログラムを実行するCPU30と、モニタインタフェース35及びモニタ34と、入力装置インタフェース37及びマウス36とにより実現される。また、テンプレート画像42の登録時に、パラメータ管理部52は、テンプレート画像42の生成時の撮影パラメータ40a及び補正後撮影パラメータ41aとテンプレート画像42とを関連付けて管理する。尚、テンプレート画像42を再生成する等のためカメラ校正が再度行われることで撮影パラメータ40aが変更され、撮影パラメータ40aとテンプレート画像42との関連が無くなる場合がある。この場合、パラメータ管理部52は、テンプレート画像42及び補正テンプレート画像43を消去する。
テンプレート補正部55は、テンプレート画像42の生成時の補正後撮影パラメータ41aと、撮影時の補正後撮影パラメータ41bとを用いて、テンプレート画像42の変換を行い、補正テンプレート画像43を生成し、パラメータ管理部52に保存する。ここでの補正方法を、図4(d)を用いて説明する。尚、同図中、符号140aは撮影パラメータ40aであるカメラ4のセンサ面4aの位置姿勢、符号141aは補正後撮影パラメータ41aであるカメラ4のセンサ面4aの位置姿勢をそれぞれ示す。また、符号140bは撮影パラメータ40bであるカメラ4のセンサ面4aの位置姿勢、符号141bは補正後撮影パラメータ41bであるカメラ4のセンサ面4aの位置姿勢をそれぞれ示す。
テンプレート補正部55は、テンプレート画像42の点P5について、補正後撮影パラメータ41aを利用して計測平面6に投影して対応する点P4を求める。そして、テンプレート補正部55は、点P4を、補正後撮影パラメータ41bの利用により補正テンプレート画像43に投影することで、対応する点P6を求める。このような補正方法で、補正テンプレート画像43の全画素について画像間で対応する点を求めることで、テンプレート補正を行う。尚、テンプレート画像42の点P5の座標系は、テンプレート画像42にテンプレート生成部54で保存されたテンプレート生成時の生成用画像上のテンプレートの位置を用いて、テンプレート生成時の画像座標系を用いる。
具体的には、テンプレート画像42の点P5の画像座標を(up5,vp5)とし、それに基づいて最後に1の要素を加えたベクトルをmp5=[up5 vp5 1]とする。また、補正後撮影パラメータ41aの内部パラメータをAp5とし、外部パラメータを[Rp5 tp5]とする。更に、点P4の三次元座標を(xp4,yp4,zp4)とし、それに基づいて最後に1の要素を加えたベクトルをMp4=[xp4 yp4 zp4 1]とすると、ベクトルmp5及びベクトルMp4の関係は数式9となる。
同様に、補正後撮影パラメータ41bによって表現される補正テンプレート画像43の座標上の点P6の画像座標を(up6,vp6)とし、それに基づいて最後に1の要素を加えたベクトルをnp6=[up6 vp6 1]とする。また、補正後撮影パラメータ41bの内部パラメータをAp6とし、外部パラメータを[Rp6 tp6]とする。これにより、点P4の三次元座標に関するベクトルMp4=[xp4 yp4 zp4 1]とベクトルnp6との関係は、数式10となる。
数式9及び数式10により、ベクトルmp5とベクトルnp6との関係は、数式11となる。
尚、非特許文献1の手法を用いた場合、各係数は、歪み補正部53での場合と同様に数式5〜数式8で示されるようになる。
このようにして、補正テンプレート画像43の各画素について対応するテンプレート画像42の画素を求め、テンプレート画像42の各画素の輝度を当てはめることにより、補正テンプレート画像43を得る。尚、対応する画素が複数ある場合、バイリニア補間等の方法により複数の対応する画素の輝度値を混合して求めても良い。また、形状ベースマッチング等、エッジ構成点群で表現されるテンプレート画像を用いる際は、テンプレート画像を構成する各点について、数式11を用いて変換することで補正テンプレート画像43を得るようにする。
テンプレート補正部55での処理は、CPU30にてROM32に記録されたテンプレート補正プログラムを実行することで行われる。このテンプレート補正プログラムでは、ROM32に記録されたテンプレート画像42と、テンプレート生成時の補正後撮影パラメータ41aと、実際の撮影時の補正後撮影パラメータ41bとをパラメータ管理部52から読み出しRAM31に展開する。そして、テンプレート補正プログラムでは、CPU30にて前述の補正演算を行い、生成された補正テンプレート画像43をパラメータ管理部52に登録し、ROM32に記録する。
パターンマッチ部56は、実際の撮影時にカメラ4により撮影された撮影画像の歪み補正画像と補正テンプレート画像43とでパターンマッチングを行い、撮影画像におけるテンプレートの位置を算出する。パターンマッチングの具体的な方法については、正規化相関法や形状ベースマッチング等の既存の又は新規の画像座標ベースのマッチング方法を用いる。
パターンマッチ部56での処理は、ROM32のパターンマッチングプログラムをCPU30で実行することにより実現される。パターンマッチ部56は、RAM31に一時記憶された歪み補正画像と、パラメータ管理部52を介してROM32より読み出した補正テンプレート画像43とについて、マッチングを行う。パターンマッチ部56は、マッチング結果として得られる歪み補正画像の座標上のワークWの位置を、RAM31に一時記憶する。
三次元復元部57は、パターンマッチ部56より出力されたワークWの画像上の位置と、補正後撮影パラメータ41bとを用いて、画像上の位置を三次元座標上の位置に変換し、三次元位置データを出力し、計測結果として上位システムへ送信する。
三次元復元部57の処理は、ROM32の三次元座標変換プログラムをCPU30で実行することにより実現する。三次元復元部57は、RAM31に一時記憶されたパターンマッチング結果の画像座標を、パラメータ管理部52を介してROM32より読み出した撮影時の補正後撮影パラメータ41bを用いて三次元座標に変換する。三次元復元部57は、得られた三次元位置データをRAM31に一時記憶した後、CPU30からの指令により通信インタフェース38を介して上位システムに送信する。
ここで、テンプレート画像Xと撮影画像Yとでパターンマッチングを実行するための補正について、解像度のみに着目して図5及び図6を用いて説明する。尚、図5及び図6では、説明のためにテンプレート画像を符号X、実際の組立等の作業中にワークWを撮影した撮影画像を符号Yで示す。
パターンマッチングの1つの手法として、図6に示すように、テンプレート画像Xの解像度はそのままで、撮影画像Y1(又はY2)を撮影パラメータQ1(又はQ2)により補正して、テンプレート画像Xの解像度に合わせる手法が考えられる。即ち、この手法では、XとQ1・Y1(又はQ2・Y2)とのマッチングになる。
しかし、この手法では、例えば、撮影画像Y1の解像度がテンプレート画像Xの生成時に比べて2倍になった場合でも、テンプレート画像Xに合わせた解像度に補正する必要があるため、1/2倍に縮小し離散化した補正画像に対してマッチングを行う。このため、マッチングの精度は、テンプレート画像Xの生成時の解像度と同等になってしまい、撮影画像Y1を撮影するカメラを高解像度のカメラに交換してもパターンマッチングの高精度化は困難である。
また、この手法では、例えば、撮影画像Y2の解像度がテンプレート画像Xの生成時に比べて1/2倍になった場合でも、テンプレート画像Xに合わせた解像度に補正する必要があるため、2倍に拡大した補正画像に対してマッチングを行う。このため、撮影画像Y2を撮影するカメラを低解像度のカメラに交換しても、パターンマッチングの高速化は困難である。
そこで、本実施形態では、図5に示すように、撮影画像Y1(又はY2)の解像度はそのままで、テンプレート画像Xを撮影パラメータQ1(又はQ2)により補正して、撮影画像Y1(又はY2)の解像度に合わせるようにしている。即ち、本実施形態の手法では、X/Q1(又はX/Q2)とY1(又はY2)とのマッチングになる。
このように、本実施形態の手法によれば、テンプレート画像Xを撮影画像Y1の解像度に合わせて補正するため、撮影画像Y1の解像度を維持したままマッチングを行うことができる。このため、マッチング時の精度も撮影画像Y1の解像度になり、テンプレート画像Xの生成時の解像度に比べて2倍になり、高解像度の画像同士のパターンマッチングで検出の高精度化を図ることができる。
また、本実施形態の手法によれば、テンプレート画像Xを撮影画像Y2の解像度に合わせて補正するため、撮影画像Y2の解像度を維持したままマッチングを行うことができる。このため、検索する範囲が面積比で1/4になるため、テンプレート画像Xの生成時の解像度に比べて検出速度が4倍になり、低解像度の画像同士のパターンマッチングで処理の高速化を図ることができる。
上述したパターンマッチング装置5によりワークWのパターンマッチングを実行する処理手順について、図7に示すフローチャートに沿って説明する。
まず、テンプレート画像42を生成する前に、カメラ4の校正を行う(ステップS1)。ここでは、計測平面6に設置したカメラ校正用マーカ(不図示)をカメラ4で撮影し、演算部50のカメラ校正部51に入力する。これにより、テンプレート画像42の生成時の撮影パラメータ40a及び補正後撮影パラメータ41aが算出され、パラメータ管理部52に登録される。
そして、テンプレート画像42となるワークWが計測平面6に設置され、カメラ4で撮影され、その撮影画像が演算部50に入力される(ステップS2)。入力された撮影画像は、歪み補正部53により、ステップS1にて校正した撮影パラメータ40a及び補正後撮影パラメータ41aを用いて補正される(ステップS3)。
歪み補正部53から出力された補正後撮影画像は、テンプレート生成部54に入力され、テンプレート画像42が生成される。ここでは、例えば、制御装置3がモニタ34に補正後撮影画像を表示し(ステップS4)、作業者に補正後撮影画像上の切り出し部34cを選択させる(ステップS5)。
そして、テンプレート生成部54は、補正後撮影画像及び切り出し部34cからテンプレート画像42を生成し、パラメータ管理部52に登録する(ステップS6)。その際、パラメータ管理部52では、テンプレート画像42と、撮影パラメータ40a及び補正後撮影パラメータ41aとを関連付けして登録する。
ここで、ステップS6でのテンプレート画像42の生成後に、経時変化や、カメラ4の交換や、カメラ4への何かの衝突等により撮影パラメータ40aが変化したか否かを判断する(ステップS7)。撮影パラメータ40aが変化していないと判断された場合は、テンプレート画像42をそのまま利用して、後述するパターンマッチング処理(ステップS10)を実行する。
撮影パラメータ40aが変化したと判断された場合は、パターンマッチング処理の前に、テンプレート画像42を補正する。まず、カメラ校正部51が、ステップS1と同様の処理手順にて、撮影パラメータ40b及び補正後撮影パラメータ41bを算出して、パラメータ管理部52に登録する(ステップS8)。そして、テンプレート補正部55は、テンプレート画像42に対して、撮影パラメータ40a及び補正後撮影パラメータ41aと、撮影パラメータ40b及び補正後撮影パラメータ41bとを用いて、補正テンプレート画像43を生成する(ステップS9)。当該ステップS9が、本発明の補正画像生成工程に相当する。これにより、現在の撮影パラメータ40b及び補正後撮影パラメータ41bに適したテンプレートが生成される。テンプレート補正部55は、補正テンプレート画像43をパラメータ管理部52に登録する。
そして、実際に撮影されたワークWの画像を利用して、パターンマッチング処理が実行される(ステップS10、パターンマッチング工程)。ここでは、カメラ4により計測平面6のワークWを撮影した画像は、歪み補正部53に送られ、歪み補正部53は、当該画像を補正後撮影パラメータ41a及び補正後撮影パラメータ41bを用いて補正して、歪み補正画像を生成する。その後、パターンマッチ部56が、歪み補正画像と、補正テンプレート画像43とのパターンマッチングを実行し、歪み補正画像でのワークWの位置を算出する。三次元復元部57は、パターンマッチ部56で算出された位置と、補正後撮影パラメータ41bとから、ワークWの三次元位置データを算出する。
上述したように、本実施形態のパターンマッチング装置5によれば、テンプレート画像42を撮影画像と同じになるように変換してからパターンマッチングを行っている。このため、テンプレート画像42の生成後に撮影パラメータ40a及び補正後撮影パラメータ41aが変化しても、テンプレート画像42の再生成は不要になる。これにより、テンプレート画像42を何度も再生成する場合に比べて、作業者の時間と労力の浪費を防止できる。
また、本実施形態のパターンマッチング装置5によれば、撮影画像の撮影パラメータが変化した場合に、撮影画像の補正時に撮影画像の解像度をテンプレート画像に合わせなくて良いので、撮影パラメータの変化に対応したパターンマッチングを実行できる。
例えば、撮影画像を撮影するカメラ4を高解像度に交換した場合、テンプレート画像42が補正パラメータにより高解像度の補正テンプレート画像43に補正されるので、高解像度の画像同士のパターンマッチングで検出の高精度化を図ることができる。
また、撮影画像を撮影するカメラ4を低解像度に交換した場合、テンプレート画像42が補正パラメータにより低解像度の補正テンプレート画像43に補正されるので、低解像度の画像同士のパターンマッチングで処理の高速化を図ることができる。尚、図6に示す例では、撮影画像Y2をテンプレート画像Xの生成時の解像度に高解像度化してからパターンマッチングを行っているため、本実施形態に比べて見かけの検出精度は高くなる。しかし、実際には撮影画像Y2の解像度で離散化され、情報量が決定しているため、実質的な検出精度は撮影画像Y2の解像度によることになり、本実施形態の検出精度と同等になる。
尚、本実施形態のパターンマッチング装置5では、図6に示す例と比べ、テンプレート画像42の生成時の撮影パラメータを登録する領域が必要になる。しかし、撮影パラメータのデータは、焦点距離、レンズ歪み、センサの画素ピッチ、解像度、計測平面6とカメラ4の三次元相対位置姿勢等、数十個程度の値であるので、登録領域の大幅な増加を招くことは無い。例えば、一辺200画素の画像、即ち4万画素の画像のテンプレート画像42の登録に必要なデータ領域に比べ、撮影パラメータの登録に必要なデータ領域は極めて小さい。このため、本実施形態によるパターンマッチング装置5のコスト等への影響は、小さく抑えることができる。
[第2実施形態]
次に、本発明の第2実施形態に係るパターンマッチング装置5の演算部250について説明する。
第2実施形態の演算部250は、第1実施形態と比較して、図8に示すように、歪み補正部53を省略している点で構成を異にしている。それ以外の構成は、第1実施形態と同様であるので同一符号を付して説明を省略する。
カメラ校正部251は、第1実施形態のカメラ校正部51と同様に、入力された撮影画像に基づき、非特許文献1に記載された手法を用いて撮影パラメータ40を算出する。但し、カメラ校正部251は、第1実施形態のカメラ校正部51と異なり、補正後撮影パラメータ41は算出しない。カメラ校正部251は、算出した撮影パラメータ40を、テンプレート生成時と実際の撮影時とで別々にして、パラメータ管理部252に登録する。
パラメータ管理部252は、テンプレート生成時の撮影パラメータ40a及び実際の撮影時の撮影パラメータ40bと、パターンマッチング用のテンプレート画像242及び補正テンプレート画像243とについて、登録されたデータを管理する。パラメータ管理部52における処理は、CPU30でROM32のパラメータ管理プログラムを実行することにより実現され、登録されたデータはROM32に記録される。
テンプレート補正部255は、テンプレート画像242の生成時の撮影パラメータ40aと、撮影時の撮影パラメータ40bとを用いて、テンプレート画像242の変換を行い、補正テンプレート画像243を生成し、パラメータ管理部252に保存する。
テンプレート補正部255は、図4(d)に示すように、符号140aのテンプレート画像242の点P7について、撮影パラメータ40aを利用して計測平面6に投影して対応する点P4を求める。そして、テンプレート補正部255は、点P4を、撮影パラメータ40bの利用により符号140bの補正テンプレート画像243に投影することで、対応する点P8を求める。このような補正方法で、補正テンプレート画像243の全画素について画像間で対応する点を求めることで、テンプレート補正を行う。
具体的には、テンプレート画像242の点P7の画像座標を(up7,vp7)とし、それに基づいて最後に1の要素を加えたベクトルをmp7=[up7 vp7 1]とする。また、撮影パラメータ40aの内部パラメータをAp7とし、外部パラメータを[Rp7 tp7]とする。更に、点P4の三次元座標を(xp4,yp4,zp4)とし、それに基づいて最後に1の要素を加えたベクトルをMp4=[xp4 yp4 zp4 1]とすると、ベクトルmp7及びベクトルMp4の関係は数式12となる。
同様に、撮影パラメータ40bによって表現される補正テンプレート画像243の座標上の点P8の画像座標を(up8,vp8)とし、それに基づいて最後に1の要素を加えたベクトルをnp8=[up8 vp8 1]とする。また、撮影パラメータ40bの内部パラメータをAp8とし、外部パラメータを[Rp8 tp8]とする。これにより、点P4の三次元座標に関するベクトルMp4=[xp4 yp4 zp4 1]とベクトルnp8との関係は、数式13となる。
数式12及び数式13により、ベクトルmp7とベクトルnp8との関係は、数式14となる。
尚、非特許文献1の手法を用いた場合、各係数は、第1実施形態での歪み補正部53の場合と同様に数式5〜数式8で示されるようになる。
このようにして、補正テンプレート画像243の各画素について対応するテンプレート画像242の画素を求め、テンプレート画像242の各画素の輝度を当てはめることにより、補正テンプレート画像243を得る。尚、対応する画素が複数ある場合、バイリニア補間等の方法により複数の対応する画素の輝度値を混合して求めても良い。また、形状ベースマッチング等、エッジ構成点群で表現されるテンプレート画像を用いる際は、テンプレート画像を構成する各点について、数式14を用いて変換することで補正テンプレート画像を得るようにする。
テンプレート補正部255での処理は、CPU30にてROM32に記録されたテンプレート補正プログラムを実行することで行われる。このテンプレート補正プログラムでは、ROM32に記録されたテンプレート画像242と、テンプレート生成時の撮影パラメータ40aと、実際の撮影時の撮影パラメータ40bとをパラメータ管理部252から読み出しRAM31に展開する。そして、テンプレート補正プログラムでは、CPU30にて前述の補正演算を行い、生成された補正テンプレート画像243をパラメータ管理部252に登録し、ROM32に記録する。
三次元復元部257は、パターンマッチ部56より出力されたワークWの画像上の位置と、撮影パラメータ40bとを用いて、画像上の位置を三次元座標上の位置に変換し、三次元位置データを出力し、計測結果として上位システムへ送信する。
三次元復元部257の処理は、ROM32の三次元座標変換プログラムをCPU30で実行することにより実現する。三次元復元部257は、RAM31に一時記憶されたパターンマッチング結果の画像座標を、パラメータ管理部252を介してROM32より読み出した撮影時の撮影パラメータ40bを用いて三次元座標に変換する。三次元復元部257は、得られた三次元位置データをRAM31に一時記憶した後、CPU30からの指令により通信インタフェース38を介して上位システムに送信する。
上述したパターンマッチング装置5によりワークWのパターンマッチングを実行する処理手順について、図9に示すフローチャートに沿って説明する。
まず、テンプレート画像242を生成する前に、カメラ4の校正を行う(ステップS11)。ここでは、計測平面6に設置したカメラ校正用マーカ(不図示)をカメラ4で撮影し、演算部250のカメラ校正部251に入力する。これにより、テンプレート画像242の生成時の撮影パラメータ40aが算出され、パラメータ管理部252に登録される。
そして、テンプレート画像242となるワークWが計測平面6に設置され、カメラ4で撮影され、その撮影画像が演算部250に入力される(ステップS12)。撮影画像は、テンプレート生成部54に入力され、テンプレート画像242が生成される。ここでは、例えば、制御装置3がモニタ34に撮影画像を表示し(ステップS13)、作業者に撮影画像上の切り出し部34cを選択させる(ステップS14)。
そして、テンプレート生成部54は、撮影画像及び切り出し部34cからテンプレート画像242を生成し、パラメータ管理部252に登録する(ステップS15)。その際、パラメータ管理部252では、テンプレート画像242と、撮影パラメータ40aとを関連付けして登録する。
ここで、ステップS15でのテンプレート画像242の生成後に、経時変化や、カメラ4の交換や、カメラ4への何かの衝突等により撮影パラメータ40aが変化したか否かを判断する(ステップS16)。撮影パラメータ40aが変化していないと判断された場合は、テンプレート画像242をそのまま利用して、後述するパターンマッチング処理(ステップS19)を実行する。
撮影パラメータ40aが変化したと判断された場合は、パターンマッチング処理の前に、テンプレート画像242を補正する。まず、カメラ校正部251が、ステップS11と同様の処理手順にて、撮影パラメータ40bを算出して、パラメータ管理部252に登録する(ステップS17)。そして、テンプレート補正部255は、テンプレート画像242に対して、撮影パラメータ40aと、撮影パラメータ40bとを用いて、補正テンプレート画像243を生成する(ステップS18、補正画像生成工程)。これにより、現在の撮影パラメータ40bに適したテンプレートが生成される。テンプレート補正部255は、補正テンプレート画像243をパラメータ管理部252に登録する。
そして、実際に撮影されたワークWの画像を利用して、パターンマッチング処理が実行される(ステップS19、パターンマッチング工程)。ここでは、パターンマッチ部56が、カメラ4により計測平面6のワークWを撮影した画像と補正テンプレート画像243とのパターンマッチングを実行し、撮影画像でのワークWの位置を算出する。三次元復元部257は、パターンマッチ部56で算出された位置と、撮影パラメータ40bとから、ワークWの三次元位置データを算出する。
上述したように、本実施形態のパターンマッチング装置5によれば、第1実施形態と同様に、テンプレート画像242を撮影画像と同じになるように変換してからパターンマッチングを行っている。このため、テンプレート画像242の生成後に撮影パラメータ40aが変化しても、テンプレート画像242の再生成は不要になるので、テンプレート画像242を何度も再生成する場合に比べて、作業者の時間と労力の浪費を防止できる。
また、本実施形態のパターンマッチング装置5によれば、第1実施形態と同様に、撮影画像の撮影パラメータが変化した場合に、撮影画像を補正しないので、撮影パラメータの変化に対応したパターンマッチングを実行できる。
また、本実施形態のパターンマッチング装置5によれば、撮影画像の歪み補正が不要になる。このため、例えば、カメラ4のレンズ歪みが小さく、またセンサ面4aが計測平面6に対してほぼ平行に置かれている場合等、カメラ4とワークWとの距離の変化にのみ対応でき歪み補正が不要な場合に好適である。この場合、撮影画像の歪み補正が不要になることから、パターンマッチング処理を高速に実行できる。
上述した第1及び第2実施形態では、テンプレート画像42,242はワークWをカメラ4により撮影して生成する場合について説明したが、これには限られない。例えば、テンプレート画像42,242は、ワークWの3次元CADモデルを2次元に投影することで生成してもよい。この場合も、得られたテンプレート画像42,242を補正テンプレート画像43,243に補正して、撮影画像とパターンマッチングすることができる。
また、上述した第1及び第2実施形態では、テンプレート画像42,242と撮影画像とをパターンマッチングするために、常にテンプレート画像42,242の方を補正する場合について説明したが、これには限られない。例えば、状況に応じて、図6の例と同様に、撮影画像の方を補正してテンプレート画像42,242に合うように補正画像を生成するようにしてもよい。これにより、例えば、テンプレート画像42,242よりも高解像度の撮影画像を得た場合で高いマッチング精度が必要ない場合は、撮影画像を低解像度のテンプレート画像42,242に合わせることで、マッチング時間を短縮することができる。即ち、パターンマッチング精度及び速度に求められる条件により、テンプレート画像42,242と撮影画像とのいずれを補正するか適宜選択するようにできる。
また、上述した第1及び第2実施形態では、パターンマッチングの対象をテンプレート画像42,242と撮影画像とにした場合について説明したが、これには限られない。例えば、複数の検出対象をそれぞれ撮影して得られた複数の画像同士をパターンマッチングする等、2枚以上の画像同士のパターンマッチングの全般に適用することができる。
また、上述した第1及び第2実施形態では、パターンマッチング装置5がロボット装置1の制御装置3に内蔵されている場合について説明したが、これには限られない。例えば、パターンマッチング装置をNC機器や生産ラインに配置される機器等の生産装置を備える生産設備にも適用することができる。この場合、例えば、生産設備のカメラがワークを撮影し、撮影で得られた情報に基づきパターンマッチング装置がワークの位置姿勢や真贋等を判定し、その結果に基づいて制御装置が生産装置に対して動作を制御するようにできる。
尚、以上述べた第1及び第2実施形態の各処理動作は具体的には演算部50,250により実行されるものである。従って上述した機能を実現するソフトウェアのプログラムを記録した記録媒体を演算部50,250に供給し、演算部50,250を構成するCPU30が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した各実施の形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
また、第1及び第2実施形態では、コンピュータ読み取り可能な記録媒体がROM32であり、ROM32にプログラムが格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、HDD、外部記憶装置、記録ディスク等を用いてもよい。