(57)【特許請求の範囲】
【請求項１】
物体を撮像して得られる多値画像データを二値化する際に、二値画像データの中の像域の特徴値が、予め設定した所定の値となるように二値化しきい値を設定して前記多値画像データを二値化する設定手段と、
前記設定手段によって二値化される二値画像データから前記特徴値に対応する領域を抽出する抽出手段と、
前記抽出手段において抽出される領域の重心と角度とを検出する検出手段と、
新たに設定された二値化しきい値を変化させて前記多値画像データを二値化して抽出された特定パターンの画像に基づき、前記多値画像データを強調する強調手段と、を有し、
前記強調手段によって強調された多値画像データを、前記設定手段によって二値化する処理を繰り返すことにより、前記抽出手段によって抽出される領域の重心と角度とを前記検出手段によって検出することを特徴とする画像処理装置。
【請求項２】
物体を撮像して得られる多値画像データを二値化する際に、二値画像データの中の像域の特徴値が、予め設定した所定の値となるように二値化しきい値を設定して前記多値画像データを二値化する設定ステップと、
前記設定ステップにおいて二値化される二値画像データから前記特徴値に対応する領域を抽出する抽出ステップと、
前記抽出ステップにおいて抽出される領域の重心と角度とを検出する検出ステップと、
新たに設定された二値化しきい値を変化させて前記多値画像データを二値化して抽出された特定パターンの画像に基づき、前記多値画像データを強調する強調ステップと、を有し、
前記強調ステップにおいて強調された多値画像データを、前記設定ステップにおいて二値化する処理を繰り返すことにより、前記抽出ステップにおいて抽出される領域の重心と角度とを前記検出ステップにおいて検出することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理を用いて物体の位置および角度を自動で検出する物体位置検出装置及びその検出方法に関するものである。
【０００２】
【従来の技術】
近年、画像処理技術の応用による物体の自動認識技術は、生産ラインにおける自動検査や自動組立等に広く応用されつつある。その場合、まず認識対象である物体と背景とを分離する方法として、撮像した多値画像データを明るさの違いにより、０と１のデータにする二値化の手法がある。ただしこの場合、分離の基準となる二値化レベルの値が問題となる。認識対象である物体の明るさが一定であれば二値化レベルの値はあらかじめ固定値とすれば良いが、実際にはロット及び周囲の環境により認識対象の明るさは変動する。こういった変動に対して、あらかじめ用意された複数の二値化レベル値を選択するようにした装置が、特公平２−３００６４等に開示されている。
【０００３】
【発明が解決しようとする課題】
しかしながら、このような従来技術によれば、認識対象である物体自身に明るさのむらがある場合、また一部が汚れている場合には、正確な形での背景からの物体の分離、位置や角度の検出が困難であるという問題がある。
【０００４】
そこで本発明は、物体の表面の一部が汚れていたり、光の反射の仕方にむらがあるような物体でも、その画像データから位置及び角度を安定して検出することができる装置およびその検出方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
前述の課題を解決するための構成として、本発明に係る画像処理装置は、物体を撮像して得られる多値画像データを二値化する際に、二値画像データの中の像域の特徴値が、予め設定した所定の値となるように二値化しきい値を設定して前記多値画像データを二値化する設定手段と、前記設定手段によって二値化される二値画像データから前記特徴値に対応する領域を抽出する抽出手段と、前記抽出手段において抽出される領域の重心と角度とを検出する検出手段と、新たに設定された二値化しきい値を変化させて前記多値画像データを二値化して抽出された特定パターンの画像に基づき、前記多値画像データを強調する強調手段と、を有し、前記強調手段によって強調された多値画像データを、前記設定手段によって二値化する処理を繰り返すことにより、前記抽出手段によって抽出される領域の重心と角度とを前記検出手段によって検出することを特徴とする。
【０００６】
これにより、多値画像データを最適な二値化しきい値で二値化できるため、反射率の違う物体や汚れのある物体でも安定して、物体の位置・角度を検出できる。
【００３３】
同課題の解決のための本発明の他の構成としての画像処理方法は、物体を撮像して得られる多値画像データを二値化する際に、二値画像データの中の像域の特徴値が、予め設定した所定の値となるように二値化しきい値を設定して前記多値画像データを二値化する設定ステップと、前記設定ステップにおいて二値化される二値画像データから前記特徴値に対応する領域を抽出する抽出ステップと、前記抽出ステップにおいて抽出される領域の重心と角度とを検出する検出ステップと、新たに設定された二値化しきい値を変化させて前記多値画像データを二値化して抽出された特定パターンの画像に基づき、前記多値画像データを強調する強調ステップと、を有し、前記強調ステップにおいて強調された多値画像データを、前記設定ステップにおいて二値化する処理を繰り返すことにより、前記抽出ステップにおいて抽出される領域の重心と角度とを前記検出ステップにおいて検出することを特徴とする。
【００３４】
これにより、多値画像データを最適な二値化しきい値で二値化できるため、反射率の違う物体や汚れのある物体でも安定して、物体の位置・角度を検出できる。
【００６１】
【発明の実施の形態】
以下に本発明の一実施形態として、ワークである箱の取り置きを行うパレタイズロボットへの適用例を説明する。
【００６２】
まず本発明を適用した装置のシステム構成を図１を参照して説明する。
【００６３】
図１は、本発明を適用したパレタイズロボットのシステム概略図である。
【００６４】
図中、撮像装置２はＣＣＤエリアセンサ等の受光素子（光電変換素子）を有し、面光源である照明１で照明されたワーク（箱）３を撮像する。尚、ワーク３は、図１に示すようにパレット９の上に１段に４つを２段積みした構成とする。撮影された画像は、電気信号に変換されて画像処理装置４に送られる。また画像処理装置４は、ロボット制御装置５と通信手段を介して接続され、画像データ等の通信を行なう。ロボット制御装置５は、ロボットアーム７の先端にロボットハンド８を備えたロボット６を制御する。
尚、４つの撮像装置２は各ワーク３の像がそれぞれ撮像エリアの中心部に位置するように配置され、ロボット６の動きに連動して、次に移動させるワーク（箱）３の全体像を撮像できるように順次切り替える機構を有している。
【００６５】
以上の構成により、図２〜図１６を参照して動作の詳細に説明する。
【００６６】
まず撮像装置２により撮像された撮像範囲の画像処理装置４での作像例を示す。但し図２は汚れ等がない理想的な状態である。
【００６７】
図２は、本発明の一実施形態としての撮像範囲の理想的な撮像例である。
【００６８】
図中、２０は撮像装置の撮像範囲である。２１はワーク３を載せているパレット９の画像である。２２が位置、角度を求めるべきワーク３の蓋の画像である。蓋は外縁部に比べ内側の高さが低くなっており、外縁部と内側との境界部に照明光によって薄い影ができる。この薄い影の内側の領域を本発明の手法により抽出し、位置及び角度を検出する。
【００６９】
４つ並んだワーク３のうちの一つを、それに対応する撮像装置２が撮像し、その撮像データを画像処理装置４に送る。画像処理装置４は本発明の方法によりワーク３の正確な位置と角度を撮像データから検出し、ロボット６に送る。ロボット制御装置５は画像処理装置４から送られたワーク３の位置、角度のデータによりロボット６の姿勢を制御し、ワーク３をロボットハンド８で把持し、別の位置にある他のパレット上に移動させる。またロボット制御装置５は、画像処理装置４に撮像装置２の切換タイミングを通信するので、この間に次に把持すべきワーク３をそれに対応する撮像装置２により撮像し、撮像データが画像処理装置４へと送られる。そして、ロボット６が別パレットに先のワーク３の移動を完了し、ロボットハンド８を初期位置に戻すまでに、画像処理装置４は次のワーク３の位置、角度データをロボット６に送る。ロボット制御装置５は、次のワーク３の位置、角度データを入手しているため、ロボットハンド８を戻した瞬間にすぐに次のワーク３の把持動作に入ることができる。これらの動作を繰り返すことで、連続して合計８つのワーク３を順次把持し、他のパレットに移動させることが可能となる。
【００７０】
次に画像処理装置４が本発明の方法によりワーク３の位置、角度を求める処理手順を具体的に説明する。
【００７１】
図３に処理手順の概要を示す。
【００７２】
図３は、本発明の一実施形態としての処理手順の概要を示すフローチャートである。
【００７３】
図中、ステップＳ１は、各パラメータのリセットや画像処理装置４の初期化を行う初期設定部である。ステップＳ２は、ワーク３の位置、角度を検出するのに最適な多値データの二値化のためのしきい値の設定を行う最適二値化設定部である。ステップＳ３は、ステップＳ２で設定した二値化しきい値で二値化した画像データから有効な部分だけ抽出する注目ラベル抽出部である。ステップＳ４は、ステップＳ３で抽出、作成された画像データにおいて汚れ等でデータの欠落した部分を補正し、位置を表す重心、角度を計算する重心・角度計算部である。更にステップＳ５の線強調処理部において、所定の条件に合う直線パターンだけを抽出して取り込み、画像に書き込む。そしてこの画像データを基に、再びステップＳ２〜Ｓ４の処理を行ない、重心と角度を求める。
【００７４】
次に、上述の各ステップにおける処理について詳細に説明する。
【００７５】
［初期設定部］
図４は、本発明の一実施形態としての初期設定部の処理を示すフローチャートである。
【００７６】
図中、まずステップＳ１００において、変数の初期値を設定する（変数counter とagein を０、変数histmenseki を１０００００）。画像処理装置４の初期化もここで行う。ステップＳ１０１において、各種パラメータに値を設定する。本実施形態では、ここでワーク３の蓋２２の面積に近似した理想面積、その理想面積との許容差、所定の重心エリア座標、ソフトウェア処理の最大ループ回数、及び強調ループ回数lloop 、そしてフィレ（Ｆｅｒｅ）座標、すなわちラベル付けされた画像を水平方向、及び垂直方向に投影した場合の水平軸、及び垂直軸上のそれぞれの長さ（以下、水平幅、垂直幅）を設定する。次に、ステップＳ１０２において、撮像装置２から送られてくる映像信号を画像データとしてメモリに取り込み、この取り込み画像をＰとする。この時の画像の一例を図１１に示す。
【００７７】
図１１は、本発明の一実施形態としての撮像範囲の取り込み画像例である。
【００７８】
次に、ステップＳ１０３において、メモリ中の画像Ｐのデータから二値化しきい値の初期値を求め、変数slvlにその値を代入する。本実施形態では、重心エリア内の画素の多値データの平均を取り、二値化しきい値の初期値としている。
【００７９】
［最適二値化設定部］
図５Ａ及び図５Ｂは、本発明の一実施形態としての最適二値化設定部の処理を示すフローチャートである。
【００８０】
図中、ステップＳ２００において、変数lvlに二値化のしきい値の初期値であるslvlを代入し、ステップＳ２０１〜ステップＳ２２５の二値化しきい値算出ルーチンを開始する。ステップＳ２０１において、ループカウンタ（counter ）を＋１する。ステップＳ２０２では、二値化しきい値をlvlとしてメモリ中の画像Ｐのデータの二値化を行なう。ここで得られた二値化画像は、隣接するワーク３の蓋２２の境界がつながってしまう場合が多い。そこで境界を明確にするために、この二値化データに対し８近傍ＡＮＤフィルタを２回適用した画像データを求める。ステップＳ２０３では、ステップＳ２０２で求めた画像データにおいて白画素（本実施形態では値が１の画素）のみラベル付けし、更に各ラベルのモーメント量を求めるため、モーメント演算を実行する。この演算結果に基づき、ステップＳ２０４では、所定の設定値以上の面積を持つラベル（以下、有効ラベル）の面積および重心座標を求め、これを保存するとともに、有効ラベルの数をカウントし、変数Ｋに代入する。ステップＳ２０５ではＫが０かどうか判別する。
【００８１】
Ｋが０であればステップＳ２０６に処理が移行する。ステップＳ２０６では変数lvlの値を１０減少させ、ステップＳ２０１へ処理を戻す。Ｋが０でなければステップＳ２０７に処理を移す。ステップＳ２０７では有効ラベルのうち、重心が重心エリア内にあり、かつその水平幅、垂直幅が設定値内のものがあるかを判別し、条件に合うラベルがあればこれを注目ラベルとする。実際にはこの注目ラベルが、ロボット６が次に移動させるべき目的の蓋２２に対応する。ステップＳ２０８において、そのラベルの面積を変数maxに代入する。次のステップＳ２０９で、黒画素および白画素の両方についてラベル付けし直し、注目ラベルを面積により判別し、その番号を求める。そして各ラベルについてフィレ座標を求める。更に求めた水平幅、垂直幅より注目ラベルと注目ラベル以外の全てのラベルとの間の内包関係を調べる。例えば、Ａというラベルのフィレ座標値が全てＢというラベルのフィレ座標値より小さければ、ＡはＢに含まれる。よって、任意のラベルが注目ラベルに含まれるかどうかをフィレ座標だけで判別できる。ステップＳ２１０では、注目ラベルに内包されるラベルの面積をmaxに加算する。ステップＳ２１１では注目ラベルのラベル番号を変数tmpmaxに代入し、そしてステップＳ２１５に処理を移す。
【００８２】
ステップＳ２０７で条件に合うラベルがなければ、ステップＳ２１２に処理を移す。ステップＳ２１２では、ステップＳ２０２で求めた二値化画像の黒画素、白画素両方に再度ラベル付けし、モーメント演算を行う。そしてステップＳ２１３で、重心エリア内の各画素について、その所属するラベルの番号を求め、ステップＳ２１４で重心エリア中で最も大きな面積を持つ白画素のラベルを求め、この面積値をmax に代入し、ラベルの番号をtmpmaxに代入する。実際にはこの白画素が、ロボット６が次に移動させるべき目的の蓋２２に対応する。そしてステップＳ２１５に処理を移す。
【００８３】
ステップＳ２１５において、現在の二値化しきい値による面積maxと前回までの二値化しきい値による面積histmensekiの比較により理想面積との差が最小になる場合を求めるため、｜理想面積−max ｜＜｜理想面積−histmenseki ｜が真か偽かを判定する。真であれば現在の二値化しきい値による面積maxのほうが理想面積との差が小さいので、maxの値をhistmensekiに代入する。更にこの時の２値画像をメモリに保存し、この時のlvl の値を変数bestlvl に代入する。偽であれば、前回までの二値化しきい値による面積histmensekiのままでステップＳ２１７に処理を移す。
【００８４】
ステップＳ２１７〜ステップＳ２２４では、現在のしきい値lvlに基づき次の二値化しきい値の算出を行なう。ステップＳ２１７では、｜理想面積−max ｜＞許容差、が真か偽かを判別する。偽であれば、最適な二値化しきい値が求まったことになり、ステップＳ２１８に処理を移してagein に１をセットし、ステップＳ２２５に処理を移す。真なら、ステップＳ２１９に処理を移して変数dtmpに（max −理想面積）×０．０００４を代入する。そして次のステップＳ２２０でdtmpの絶対値の値が３．０より大きいか否かを判定し、大きい場合はステップＳ２２２へ移行してlvl にdtmpの値を加え、ステップＳ２２５に処理を移す。一方、３．０以下の場合はステップＳ２２１に処理を移す。ステップＳ２２１ではdtmpが０．０より大きいか否かを判定し、大きければ、ステップＳ２２３でlvl を＋１し、ステップＳ２２５へ処理を移す。ステップＳ２２１でｄｕｍｐが０．０以下ならば、ステップＳ２２４でlvl を−１し、ステップＳ２２５に処理を移す。ステップＳ２２５ではagein が０でかつ、counter ＜最大ループ数、という条件が真であればステップＳ２０１に処理を移し、新しいしきい値lvlにより前述の処理を継続する。条件が偽であれば最適二値化設定を終了する。
【００８５】
［注目ラベル抽出部］
図６は、本発明の一実施形態としての注目ラベル抽出部の処理を示すフローチャートである。
【００８６】
図中、ステップＳ３００でagein が０かどうか判別する。０でなければ、ステップＳ３０６に処理を移す。０であれば、次のステップＳ３０１に処理を移す。
【００８７】
ステップＳ３０１ではmax にhistmenseki の値を代入する。そして、ステップＳ３０２において、最適二値化設定処理において最後にステップＳ２１６で保存された２値画像を処理メモリに戻し、ステップＳ３０３でこの画像データにおける白画素についてラベル付けを行ない、更にモーメント演算を行なう。ステップＳ３０４では、許容差の５倍の値を変数MTMPに代入し、tmpmaxに−１をセットする。ステップＳ３０５では重心が重心エリア内にあり、かつその面積とhistmenseki との差の絶対値がMTMPよリ小さいものの中で最小の値をとるラベルを求め、そのラベル番号をtmpmaxに入れる。ステップＳ３０６では、tmpmaxの値を判別し、tmpmaxが０より小さければ、エラーを表示して終了する。０以上なら次のステップＳ３０７へ処理を移す。ステップＳ３０７では、tmpmax番目のラベルのみを抽出しその画像を作成し、注目ラベル抽出処理を終了する。
【００８８】
［重心・角度計算部］
図７は、本発明の一実施形態としての重心・角度計算部の処理を示すフローチャートである。
【００８９】
図中、ステップＳ４００において、ステップＳ３０７で作成した画像データに対し８近傍ＯＲフィルタを各画素について４回適用することにより膨張処理を行ない、欠損部の補正を行なう。取り込み画像Ｐについてここまでの処理を行った画像を図１２に示す。
【００９０】
図１２は、本発明の一実施形態としての中間処理画像例である。
【００９１】
次のステップＳ４０１では、ステップＳ４００で得られた二値化画像の白、黒両画素にラベル付けし、モーメント演算を行ない、更にステップＳ４０２において背景以外のラベルの面積と１次モーメントを加算する。ステップＳ４０３では、ステップＳ４０２で求めた値に基づいて重心計算を行なうことにより重心座標を求める。この座標が求めるワーク３の位置を表す。ステップＳ４０４では、改めて白画素のみにラベル付けとモーメント演算を行ない、各ラベルの面積及び２次モーメント量を求める。ステップＳ４０５では、ステップＳ４０４でラベル付けしたラベルの中で最大の面積を持つラベルについて、外接四角形を求める。更にその外接四角形の頂点座標から中心を求める。そして、ステップＳ４０４で求めた２次モーメント量から慣性主軸とそれに直交する副軸の比を求め、変数zikuhiに代入する。この中心座標とzikuhiは検出結果のＮＧ判定に用いる。中心座標と先に求めた重心位置とは、この場合、抽出領域は長方形なので、抽出が正確になされていれば、二つの座標は一致するはずである。zikuhiの方は、予め汚れのないきれいな蓋２２を用いて算出した場合の値を記録しておき、その値と比較することでＮＧ判定を行なう。なお、この時求めた慣性主軸の傾きをワーク３の角度としても良いが、より正確な値を求めるため、次の処理を行なう。すなわちステップＳ４０６では、未だ蓋２２の形を完全には再現していない図１２のような画像データに８近傍エッジ抽出フィルタをかけて輪郭を求める。更に得られた輪郭線の水平部分を求めるために、水平２近傍ＡＮＤフィルタを２回、その上で８近傍ＯＲフィルタを２回かける。こうしてできた画像に対し、ステップＳ４０７で再び、白画素についてラベル付けし、モーメント演算を行なう。そして次のステップＳ４０８において水平方向で長さの様々な各ラベルにおいて、一番長い物を基準に角度を求めるため、慣性主軸まわりの２次モーメントを副軸まわりの２次モーメントで割った値を求め、ステップＳ４０９においてステップＳ４０８で求めた値が最大である（水平方向で一番長い）ラベルの２次モーメントからその角度を求める。これがワーク３の角度を表す。
【００９２】
更にワーク３の角度を安定、かつ確実に算出するため、以下の線強調処理を説明する。従って上述の処理だけでワーク３の角度が実用的に求まるならば線強調処理は行なわなくてもよい。
【００９３】
［線強調処理］
図８は、本発明の一実施形態としての線強調処理部の全体の処理を示すフローチャートである。
【００９４】
図中、ステップＳ５００において、lloopの値を判定し、２ならばステップＳ５０１へ、２より小さければステップＳ５０８へ処理を移す。ステップＳ５０１でmlimitを１００に、counter を０に、glvl にbestlvl ＋１０の値をそれぞれ設定する。ステップＳ５０２で画像メモリの多値画像データを別のメモリ領域にコピーする。元の多値画像データの存在する領域をメモリ領域０、コピーした先の領域をメモリ領域１と呼ぶことにする。ステップＳ５０３〜ステップＳ５０６が、線抽出・書込みルーチンであり、ステップＳ５０３でcounter を＋１し、ステップＳ５０４で線抽出・書込み処理を行なう。ステップＳ５０５でglvl の値を−２する。そして次のステップＳ５０６でcounter が２０以下か否かを判定し、２０以下の場合には、再びＳ５０３に処理を戻す。counter が２０より大きければ、ステップＳ５０７に処理を進める。ステップＳ５０７では、slvlにbestlvlの値をセットする。ステップＳ５０８でlloop の値を−１する。そしてステップＳ５０９においてlloop の値が０より大きいか否かを判定し、大きければ、再び最適二値化設定処理へ移行し、ステップＳ２〜Ｓ４の処理を行ない、位置と角度を再計算する。11oop の値が０以下であれば処理を終了し、先の重心・角度計算処理で求めた位置と角度を物体の位置と角度とする。この時の画像の例を図１６に示す。
【００９５】
図１６は、本発明の一実施形態としての線強調処理後の画像例である。
【００９６】
前述のステップＳ２〜Ｓ４の処理結果である図１２の場合と比較すると、汚れや明るさのムラによる欠損部がなくなり、目的とする蓋２２の内部領域の輪郭にほぼ等しい画像が得られていることがわかる。
【００９７】
次にステップＳ５０４の線抽出・書込み処理の詳細を説明する。
【００９８】
図９は、本発明の一実施形態としての線抽出・書込み処理を示すフローチャートである。
【００９９】
図中、ステップＳ６００では、ステップＳ５０２においてメモリ領域１に保存しておいた多値画像データを、しきい値glvlで反転二値化し、これを８近傍エッジ抽出フィルタと反転フィルタを通し、更に水平ＯＲフィルタを２回通す。こうして加工された二値化画像に対し、更にステップＳ６０１において水平ＡＮＤフィルタを４回通し、その結果を格納する。この時の画像の例を図１３に示す。
【０１００】
図１３は、本発明の一実施形態としての水平方向の線抽出後の画像例である。
【０１０１】
図中、K番目の二値化レベルにより作られた画像をＭKとする。ステップＳ６０２では、この二値化画像の黒画素についてラベル付け及びモーメント演算を行なう。ここで得られた水平方向の画像を、ステップＳ６０３においてメモリ領域０の多値画像に書き込む。次に、ステップＳ６０４において、ステップＳ５０２でメモリ領域１に保存しておいた多値画像データを再びしきい値glvlで反転二値化し、これをに８近傍エッジ抽出フィルタと反転フィルタを通し、更に垂直ＯＲフィルタを２回通す。こうして加工された二値化画像に対し、ステップＳ６０５において垂直ＡＮＤフィルタを４回通し、その結果を格納する。この時の画像の例を図１４に示す。
【０１０２】
図１４は、本発明の一実施形態としての垂直方向の線抽出後の画像例である。
【０１０３】
図中、K番目の二値化レベルにより作られた画像をＮKとする。ステップＳ６０６において、この２値画像の黒画素についてラベル付け及びモーメント演算を行なう。ここで得られた垂直方向の画像を、ステップＳ６０７においてメモリ領域０の水平方向の線書き込み済みの多値画像に書き込み、線抽出・書込み処理は終了する。
【０１０４】
ここで前述の線書込み処理の詳細を図１０を参照して説明する。
【０１０５】
図１０は、本発明の一実施形態としての線書込み処理を示すフローチャートであり、ステップＳ６０３の水平方向の線書込み処理とＳ６０７の垂直方向の線書込み処理である。
【０１０６】
図中、ステップＳ７００において変数ｉに０を設定し初期化する。次のステップＳ７０１ではｉの値を判別し、ラベルの総数以上であれば処理を終了し、ラベルの総数より少なければ次のステップＳ７０２へ処理を移す。ステップＳ７０２では、ｉ番目のラベルの面積が定数mlimitより大きいか否かを判定し、小さいか等しければ、ステップＳ７０６に進み、ｉの値を＋１し、再びステップＳ７０１へ処理を進める。もし、大きければ、ステップＳ７０３へ進む。ステップＳ７０３では、先に求めたモーメント量からラベルの慣性主軸と副軸の長さの比を求める。次のステップＳ７０４でこの比が定数lvalueより小さいか否かを判別する。小さくなければステップＳ７０６に進み、ｉの値を＋１して、再びステップＳ７０１へ処理を進める。小さければ、ステップＳ７０５に処理を進める。ステップＳ７０５では、ｉ番目のラベルの画像をメモリ領域０の多値画像に書込み、ステップＳ７０６に進む。
【０１０７】
次に、線抽出・書込み処理終了後の画像データの一例を図１５に示す。
【０１０８】
図１５は、本発明の一実施形態としての線抽出・書込み処理後の画像例である。
【０１０９】
最初の取込み時の画像をＰ、K番目の二値化レベルにより作られた水平・垂直方向の抽出線画像をそれぞれＭK、ＮKとし、線書込み処理後の画像データをＱとすると、Ｑは数１で表される。
【０１１０】
【数１】
0003715683.tif 000002
【０１１１】
尚、本実施形態では、後述する強調処理の対象として線パターンを使っているが、ワーク３の形状により、他のパターンを使用しても良い。
【０１１２】
尚、１段に配置されたワークの数に応じて撮像装置を配置すれば、本発明を適用できることは言うまでもない。
【０１１３】
更に本発明は、複数の機器から構成されるシステムに適用しても、１つの機器から成る装置に適用しても良い。また、本発明はシステム或は装置にプログラムを供給することによって達成される場合にも適用できることは言うまでもない。この場合、本発明に係るプログラムを格納した記憶媒体が、本発明を構成する事になる。そして、該記憶媒体からそのプログラムをシステムあるいは装置に読み出すことによって、そのシステムあるいは装置が、予め定められたし方で動作する。
＜実施形態の効果＞
（１）撮像装置２の数を、パレットに載せたワーク３の１段の数（４つ）にし、撮像装置２の撮像エリアを１つのワーク３とその近傍にしたため、画像処理のソフトウェアをシンプルに構築できた。
（２）最適二値化設定部において、まず８近傍ＡＮＤフィルタ（２回）により二値化画像を収縮したことにより、目的とするワーク３の蓋２２と隣接するワーク３の蓋２２の境界を明確にすることができた。
（３）最適二値化設定部において、有効ラベルの中から注目ラベルを選択できない（ステップＳ２０７）場合、すなわち目的とするワーク３の蓋２２の明るさのムラや汚れが激しく、二値化画像の中から目的とするワーク３の蓋２２にあたる有効ラベルを見つけられない場でも、そのラベルの中で一番大きい物を目的とするワーク３の蓋２２と判断したことにより、二値化画像の状態がかなり悪い場合でも後段の補正処理を継続することができた。
（４）最適二値化設定部において、所定の理想面積と注目ラベル、または有効ラベルの中で一番大きいラベルの面積を比較し、その差を基に多値画像データの二値化しきい値を大きく、又は小さく変化させ、最小に絞り込むことにより、迅速に最適な二値化しきい値を求めることができた。
（５）重心・角度計算部において、８近傍ＯＲフィルタ（４回）により膨張処理を行ったため、目的とするワーク３の蓋２２にあたる二値化画像の小さな欠損部の補正をこの時点で完了することができた。
（６）重心・角度計算部において、８近傍エッジ抽出フィルタで輪郭を求め、水平２近傍ＡＮＤフィルタ（２回）、８近傍ＯＲフィルタ（２回）を行なうことにより、得られた輪郭線の水平部分だけを求め、モーメント演算を行なうことにより抽出領域（長方形）の形状を有効に利用して、目的とするワーク３の蓋２２角度を安定して算出することができた。
（７）線強調処理を行ない、多値画像に輪郭線を書き込むことにより、目的とするワーク３の蓋２２の明るさのムラや汚れが激しく、二値化画像の状態がかなり悪い場合でも重心・角度計算を更に安定して行なうことができた。
（８）線強調処理部において、多値画像データを、しきい値glvlで反転二値化し、８近傍エッジ抽出フィルタ、反転フィルタ、水平（または垂直）ＯＲフィルタ（２回）、更に水平（または垂直）ＡＮＤフィルタ（４回）、モーメント演算を行い最大の物を求めることにより、目的とするワーク３の蓋２２の輪郭を確実に捉えることができた。
【０１１４】
【発明の効果】
以上説明したように、本発明によれば、物体の表面の一部が汚れていたり、光の反射の仕方にむらがあるような物体でも、その画像データから位置及び角度を安定して検出することができる装置およびその検出方法を提供することができる。また線強調処理を併せて行なうことにより更に安定して位置及び角度を検出することができる。
【０１１５】
【図面の簡単な説明】
【図１】本発明を適用したパレタイズロボットのシステム概略図である。
【図２】本発明の一実施形態としての撮像範囲の理想的な撮像例である。
【図３】本発明の一実施形態としての処理手順の概要を示すフローチャートである。
【図４】本発明の一実施形態としての初期設定部の処理を示すフローチャートである。
【図５Ａ】本発明の一実施形態としての最適二値化設定部の処理を示すフローチャートである。
【図５Ｂ】本発明の一実施形態としての最適二値化設定部の処理を示すフローチャートである。
【図６】本発明の一実施形態としての注目ラベル抽出部の処理を示すフローチャートである。
【図７】本発明の一実施形態としての重心・角度計算部の処理を示すフローチャートである。
【図８】本発明の一実施形態としての線強調処理部の全体の処理を示すフローチャートである。
【図９】本発明の一実施形態としての線抽出・書込み処理を示すフローチャートである。
【図１０】本発明の一実施形態としての線書込み処理を示すフローチャートである。
【図１１】本発明の一実施形態としての撮像範囲の取り込み画像例である。
【図１２】本発明の一実施形態としての中間処理画像例である。
【図１３】本発明の一実施形態としての水平方向の線抽出後の画像例である。
【図１４】本発明の一実施形態としての垂直方向の線抽出後の画像例である。
【図１５】本発明の一実施形態としての線抽出・書込み処理後の画像例である。
【図１６】本発明の一実施形態としての線強調処理後の画像例である。
【符号の説明】
１  拡散板つき照明
２  ワーク
３  撮像装置
４  画像処理装置
５  ロボット制御装置
６  ロボット
７  ロボットアーム
８  ロボットハンド
９  パレット
２０  撮像エリア
２１  パレットの画像
２２  ワーク３の蓋の画像
【図１】
0003715683.tif 000003
【図２】
0003715683.tif 000004
【図３】
0003715683.tif 000005
【図４】
0003715683.tif 000006
【図５Ａ】
0003715683.tif 000007
【図５Ｂ】
0003715683.tif 000008
【図６】
0003715683.tif 000009
【図７】
0003715683.tif 000010
【図８】
0003715683.tif 000011
【図９】
0003715683.tif 000012
【図１０】
0003715683.tif 000013
【図１１】
0003715683.tif 000014
【図１２】
0003715683.tif 000015
【図１３】
0003715683.tif 000016
【図１４】
0003715683.tif 000017
【図１５】
0003715683.tif 000018
【図１６】
0003715683.tif 000019