検出対象物について頭部分の位置および軸部分の方向を算出する方法、装置およびプログラム
【課題】第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向をより高速に算出する方法、装置およびプログラムを提供する。
【解決手段】本方法は、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを含む。
【解決手段】本方法は、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する方法、装置およびプログラムに関するものである。
【背景技術】
【0002】
たとえば、FA(Factory Automation)分野などにおいては、省力化や自動化の観点から、製造現場で扱われる検出対象物(以下、「ワーク」とも称す。)を撮像して得られる画像に基づいて、各種の処理を自動化するような画像計測技術が開発・実用化されている。
【0003】
このような画像計測技術の一例として、ネジや釘などの突起物を有する円筒状のワークを把持したりするために、当該ワークの頭部分の位置がどちらの方向にあるかを判定するような手法が提案されている。たとえば、非特許文献1には、空間コード化法による3次元ビジョンセンサを用いてバラ積みされたネジを認識し、ロボットで一つずつピックアップする実験システムについて開示されている。
【0004】
より具体的には、非特許文献1のシステムでは、まず、ネジの位置姿勢の認識処理が実行され、続いて、ロボットでネジを掴んで平面に平置きした後、高さを計測し、高い方がネジの頭方向として認識される。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】川戸他、「3次元センサを用いたネジのビンピッキングシステム」、動的画像処理実利用化ワークショップDIA2008、3D計測(オーラルセッション6)、2008年3月7日
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述の非特許文献1に開示されたネジの頭方向の算出方法によれば、ロボットでのネジの把持動作、および、その後の3次元計測処理が必要であり、処理時間が比較的長くなるという課題があった。
【0007】
そこで、本発明の目的は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向をより高速に算出する方法、装置およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
本発明のある局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する方法を提供する。本方法は、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを含む。
【0009】
好ましくは、入力画像は、少なくとも1つの検出対象物に対して予め定められた距離だけ離れた位置に配置された撮像装置を用いて撮像することで取得され、頭部分に相当する位置を候補位置から抽出するステップは、軸領域に比較して撮像装置の側に位置する候補位置を頭部分に相当する位置として抽出するステップを含む。
【0010】
さらに好ましくは、候補位置を抽出するステップでは、入力画像内において隣接する領域に比較して、相対的に明るい位置が頭部分の候補位置として抽出される。
【0011】
あるいはさらに好ましくは、候補位置を抽出するステップでは、さらに、相対的に明るい位置のうち、軸領域の両端から予め定められた範囲内に存在するものが頭部分の候補位置として抽出される。
【0012】
あるいはさらに好ましくは、候補位置を抽出するステップでは、入力画像についてのヘッシアンの値から候補位置を抽出する。
【0013】
あるいはさらに好ましくは、本方法は、軸領域の高さ情報から対応する検出対象物の軸部分の方向を決定するステップをさらに含む。
【0014】
あるいはさらに好ましくは、本方法は、軸領域と対応して抽出された少なくとも1つ候補位置との組の各々について、頭部分の位置および軸部分を関連付けて出力するステップをさらに含む。
【0015】
あるいはさらに好ましくは、入力画像を取得するステップは、少なくとも1つの検出対象物に対して照明光を照射しない状態で撮像装置により取得された第1の画像と、少なくとも1つの検出対象物に対して照明光を照射した状態で撮像装置により取得された第2の画像との差分から入力画像を生成するステップを含む。
【0016】
あるいはさらに好ましくは、高さ情報を取得するステップは、少なくとも1つの検出対象物に対して、複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置によりそれぞれ撮像された複数の画像を用いて、高さ情報を取得する。
【0017】
本発明の別の局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する装置を提供する。本装置は、撮像装置と接続され、少なくとも1つの検出対象物を撮像した入力画像を取得するインターフェイスと、入力画像から、軸部分に相当する領域を軸領域として抽出する手段と、入力画像内の明るさの変化から頭部分の候補位置を抽出する手段と、軸領域および候補位置についての高さ情報を取得する手段と、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出する手段とを含む。
【0018】
本発明のさらに別の局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出するためのプログラムを提供する。当該プログラムは、コンピュータに、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを実行させる。
【発明の効果】
【0019】
本発明によれば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向をより高速に算出できる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施の形態に係る画像処理装置を含む把持システムの全体構成を示す概略図である。
【図2】本発明の実施の形態に係る画像処理装置の概略構成図である。
【図3】本実施の形態に係る画像処理装置において実行される全体処理手順を示すフローチャートである。
【図4】本発明の実施の形態に係る前処理の処理例を示す図である。
【図5】本発明の実施の形態に係る軸領域抽出処理の処理例を示す図である。
【図6】本発明の実施の形態に係る頭候補抽出処理の第一段階の処理結果の一例を示す図である。
【図7】本発明の実施の形態に係る頭候補抽出処理の第二段階の処理内容を説明するための図である。
【図8】本実施の形態に係る画像処理装置において実行される頭候補抽出処理のより詳細な手順を示すフローチャートである。
【図9】本発明の実施の形態に係る三次元座標計測処理に用いられるパターンの一例を示す図である。
【図10】本発明の実施の形態に係る三次元座標計測処理の処理例を示す図である。
【図11】本発明の実施の形態に係る頭候補判別処理においてOKと判別される条件を模式的に示す図である。
【図12】本発明の実施の形態に係る頭候補判別処理においてNGと判別される条件を模式的に示す図である。
【図13】本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。
【発明を実施するための形態】
【0021】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0022】
《A.概要》
本実施の形態に係る画像処理方法は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物(ワークW)について、頭部分の位置および軸部分の方向を算出する方法に向けられている。本実施の形態に係る画像処理方法においては、一種の面光源であるプロジェクタからワークWに対して照明光(白色光)を投影し、撮像装置を用いて、当該照明光の投影によって生じる反射光を撮像する。この撮像によって得られた入力画像に対して、軸部分に相当する領域(軸領域)および頭部分の候補位置(典型的には、入力画像内において単独で相対的に明るさが強い部分)が抽出される。以下では、抽出された(複数の)頭部分の可能性が高い部分(位置)を単に「頭候補」とも称す。さらに、軸領域および候補位置についての高さ情報(すなわち、三次元座標系における座標値)が取得される。最終的に、軸領域との間の相対的な位置関係から、軸領域に対応するワークWの頭部分に相当する位置が候補位置から抽出される。そして、抽出された頭部分に相当する位置および対応する軸領域(軸部分)の方向が算出される。
【0023】
このように、本実施の形態に係る画像処理方法は、ワークWについての二次元画像によって得られる画像処理の結果と、同一のワークWを三次元計測することで得られる高さ情報とを用いて、より少ない処理量でワークWの頭部分の位置および軸部分の方向を算出する。
【0024】
《B.全体装置構成》
図1は、本発明の実施の形態に係る画像処理装置100を含む把持システムSYSの全体構成を示す概略図である。図1に例示される把持システムSYSは、生産ラインなどに組み込まれ、トレーなどにバラ積みされた検出対象物(ワークW)を1個ずつ把持するような処理を行う。なお、図1には、理解を容易にするため、トレー内に2つのワークWのみが存在する場合を図示するが、多数のワークWが重なった状態で配置されていてもよい。
【0025】
ワークWは、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とからなる形状を有している。このようなワークWの典型例としては、ネジ、ボルト、釘などが挙げられる。作業ラインにおいて、このようなワークWは、図示しない上流側の製造装置などから搬送される場合が多いため、そのトレー内での向きはランダムになっているものとする。
【0026】
たとえば、このネジを用いて製品の固定などを行う作業工程を考えると、ロボットでネジを把持した上で、当該ネジの頭部分(ネジ穴が形成されている部分)に対して、別の機構を用いてドライバなどを挿入して回転させる必要がある。そのため、ワークWがいずれの方向(位置)に存在するのか、および、いずれの向きに頭部分が存在するのかを認識する必要がある。そこで、本実施の形態に係る画像処理装置100は、このようなニーズに対応するため、ワークWについて頭部分の位置および軸部分の方向を算出する。もちろん、画像処理装置100の用途はこれに限られない。
【0027】
なお、以下の説明では、主として、軸部分として円筒形状を有するワークWを想定して説明を行うが、多角形柱の軸部分を有するワークWであっても同様に適用できる。また、頭部分については、後述するように、撮像して得られた画像内において反射によって局所的に明るくなるような形状であればどのようなものであっても適用できる。そのため、その断面は任意の形状のものを採用することができ、その大きさなども特に制限されるものではない。
【0028】
図1に示すように、本実施の形態に係る把持システムSYSは、画像処理装置100と、ロボットコントローラ200と、ロボット300とを含む。画像処理装置100には、プロジェクタ(照明装置)7および撮像装置8が接続されている。
【0029】
後述するように、プロジェクタ7は、一種の面光源として機能するとともに、画像処理装置100からの指示に従って任意の濃淡パターンの照明光を所定位置(ワークWを含むトレーが配置される位置)に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。
【0030】
撮像装置8は、プロジェクタ7によって照射された照明光がワークWの表面で反射した光を撮像する。そして、撮像装置8は、このワークWからの反射光(ワークWの像)を示す画像(以下、「入力画像」とも称す。)を出力する。
【0031】
本実施の形態においては、プロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は既知であるとする。すなわち、プロジェクタ7が照明光を照射する方向およびその配置位置と、撮像装置8の視線方向およびその配置位置とは、予め取得されているものとする。なお、このようなプロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は、キャリブレーション処理によって得られるキャリブレーションデータに反映される。このキャリブレーションデータの具体的な内容としては、プロジェクタ7と撮像装置8との三次元的な位置姿勢(三次元座標上の座標値(x,y,z)および角度(α,β,γ))やそれらの視野角など情報を含む。
【0032】
プロジェクタ7は、主要なコンポーネントとして、LED(Light Emitting Diode)やハロゲンランプなどの光源と、プロジェクタ7の照射面の側に配置されたフィルタとを含む。プロジェクタ7に用いられる光源は、波長範囲が比較的広いものが好ましい。また、フィルタは、後述するような三次元計測に必要な濃淡パターンを発生させるものであり、画像処理装置100などからの指令に従って、面内の透光率を任意に変化させることができる。
【0033】
撮像装置8は、主要なコンポーネントとして、レンズなどの光学系と、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった撮像素子とを含む。
【0034】
画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム(命令コード)を実行することで、本実施の形態に係る画像処理機能を提供する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置100にインストールされる。
【0035】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0036】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0037】
図2は、本発明の実施の形態に係る画像処理装置100の概略構成図である。図2を参照して、画像処理装置100は、演算処理部であるCPU(Central Processing Unit)110と、記憶部としてのメインメモリ112およびハードディスク114と、カメラインターフェイス116と、入力インターフェイス118と、表示コントローラ120と、プロジェクタインターフェイス122と、通信インターフェイス124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続される。
【0038】
CPU110は、ハードディスク114にインストールされたプログラム(コード)をメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、撮像装置8によって取得された入力画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク114には、各種設定値などが格納されてもよい。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【0039】
カメラインターフェイス116は、CPU110と撮像装置8との間のデータ伝送を仲介する。すなわち、カメラインターフェイス116は、ワークWを撮像して入力画像を生成するための撮像装置8と接続される。より具体的には、カメラインターフェイス116は、1つ以上の撮像装置8と接続が可能であり、撮像装置8からの入力画像を一時的に蓄積するための画像バッファ116aを含む。そして、カメラインターフェイス116は、画像バッファ116aに所定コマ数の入力画像が蓄積されると、その蓄積された入力画像をメインメモリ112へ転送する。また、カメラインターフェイス116は、CPU110が発生した内部コマンドに従って、撮像装置8に対して撮像コマンドを与える。
【0040】
入力インターフェイス118は、CPU110とマウス104、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス118は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【0041】
表示コントローラ120は、表示装置の典型例であるディスプレイ102と接続され、CPU110における処理結果などをユーザに通知する。すなわち、表示コントローラ120は、ディスプレイ102に接続され、当該ディスプレイ102での表示を制御する。
【0042】
プロジェクタインターフェイス122は、CPU110とプロジェクタ7との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェイス122は、CPU110が発生した内部コマンドに従って、プロジェクタ7に対して照明コマンドを与える。
【0043】
通信インターフェイス124は、CPU110とコンソール(あるいは、パーソナルコンピュータやサーバ装置)などとの間のデータ伝送を仲介する。通信インターフェイス124は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
【0044】
データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、撮像装置8によって取得された入力画像および/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、CF(Compact Flash)、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体等からなる。
【0045】
また、画像処理装置100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【0046】
再度図1を参照して、ロボット300は、ワークWを把持するためのハンド機構と、当該ハンド機構を任意の位置および方向に位置決めするための関節機構とを含む。ロボット300は、ロボットコントローラ200によってその動作が制御される。
【0047】
ロボットコントローラ200は、画像処理装置100によって算出されたワークWの中心位置(中心軸)を示す情報に基づいて、ワークWの位置や姿勢を認識するとともに、当該認識された各ワークWの位置や姿勢に基づいて、ロボット300のハンド機構を適切な位置および方向に位置決めするための指令を生成し、ロボット300へ出力する。この指令に応答して、ロボット300は、ワークWの把持動作を開始する。
【0048】
《C.全体処理》
図3は、本実施の形態に係る画像処理装置100において実行される全体処理手順を示すフローチャートである。図3に示す各ステップは、基本的には、画像処理装置100のCPU110によって実行される。
【0049】
図3を参照して、画像処理装置100のCPU110は、前処理を実行する(ステップS1)。この前処理は、バラ積み状態の少なくとも1つのワークWを撮像した入力画像を取得する処理を含む。この入力画像の取得方法の典型例としては、図1に示すような撮像装置8を用いて撮像された画像を画像処理装置100に入力する方法が挙げられる。但し、撮像装置8を用いて撮像して得られた入力画像を蓄積しておき、事後的に画像処理装置100に入力するような形態であってもよい。このような処理方法は、ワークWに対する把持動作に異常があった場合などの原因究明に利用されるときなどに好適である。
【0050】
さらに、本実施の形態においては、ワークWの周囲からの外乱光の影響を排除するために、シェーディング画像が生成される。このシェーディング画像は、プロジェクタ7から照明光を照射した状態(環境光+照明光)で撮像して得られる画像と、プロジェクタ7から照明光を照射していない状態(環境光のみ)で撮像して得られる画像との差分によって生成される。言い換えれば、ステップS1に示す前処理は、少なくとも1つのワークWに対して照明光を照射しない状態で撮像装置8により取得された画像と、当該少なくとも1つのワークWに対して照明光を照射した状態で撮像装置8により取得された画像との差分から入力画像を生成する処理を含む。このシェーディング画像生成処理の詳細については、後述する。
【0051】
前処理の実行後、画像処理装置100のCPU110は、入力画像内の軸領域抽出処理を実行する(ステップS2)。この軸領域抽出処理は、入力画像に含まれるワークWの軸部分を特定するための処理である。すなわち、軸領域抽出処理は、入力画像から、軸部分に相当する領域を軸領域として抽出する処理を含む。このワークWの軸部分に対応する領域を「軸領域」とも称す。この軸領域抽出処理の詳細については、後述する。
【0052】
軸領域抽出処理の実行後、画像処理装置100のCPU110は、入力画像内の頭候補抽出処理を実行する(ステップS3)。この頭候補抽出処理は、入力画像に含まれるワークWの頭部分を特定するための処理である。後述するように、この頭部分は、入力画像内の明るさ(輝度)に基づいて抽出される。頭部分の表面では法線が色々な方向となっているので、頭部分に対応する領域の輝度変化が相対的に大きくなる。そのため、このような現象を入力画像内で捉えて、頭部分を特定する。このように、頭候補抽出処理は、入力画像内の明るさの変化からワークWの頭部分の候補位置を抽出する処理を含む。上述したように、頭候補抽出処理では、入力画像内の明るさに基づいて頭部分(の候補位置)を抽出するので、誤って検出された位置(ノイズ成分)も含まれ得る。このようなノイズ成分を含む候補位置から、後述するような処理によって、ワークWの確からしい頭部分が抽出される。
【0053】
上述したステップS1〜S3までの処理が二次元処理(二次元画像処理)に係る。
続いて、画像処理装置100のCPU110は、三次元座標計測処理を実行する(ステップS4)。この三次元座標計測処理は、ステップS2およびS3において抽出された、ワークWの軸領域および頭候補についての三次元座標値を計測する処理である。二次元画像処理において抽出された軸領域および頭候補の二次元座標値については取得されているので、本質的には、これらについての高さ情報が取得される。すなわち、三次元座標計測処理は、ワークWの軸領域および候補位置についての高さ情報を取得する処理を含む。
【0054】
このような三次元座標計測処理の一例として、本実施の形態においては位相シフト法を採用する。位相シフト法を採用することで、上述のステップS1の前処理に必要なプロジェクタ(照明装置)7および撮像装置8を利用して、三次元座標値を取得できるので、装置が簡素化できるという利点がある。
【0055】
もちろん、ワークWの軸領域および頭候補についての三次元座標値(高さ情報)を取得できれば、どのような三次元座標計測処理を採用してもよい。たとえば、位相シフト法に代えて、空間コード化法などを採用することもできる。さらに、画像処理装置100とは別の計測装置を用いて、ワークWの軸領域および頭候補についての三次元座標値を取得し、この取得された三次元座標値を画像処理装置100に入力するようにしてもよい。この三次元座標計測処理(位相シフト法)の詳細については、後述する。
【0056】
三次元座標計測処理の実行後、画像処理装置100のCPU110は、三次元座標系での頭候補判別処理を実行する(ステップS5)。この頭候補判別処理は、ステップS2において抽出された軸領域の三次元座標値と、ステップS3において抽出された頭候補の三次元座標値との相対的な位置関係を考慮して、各軸領域について、頭候補のうち頭部分に相当するものを判別する処理である。より具体的には、頭候補判別処理では、ワークWの形状を考慮して、ある軸領域のいずれかの端から所定範囲内に存在する頭候補のみを確からしいものとして抽出する。このように、頭候補判別処理は、軸領域との間の相対的な位置関係から、軸領域に対応するワークWの頭部分に相当する位置を候補位置から抽出する処理を含む。
【0057】
頭候補判別処理の実行後、画像処理装置100のCPU110は、出力処理を実行する(ステップS6)。この出力処理は、ワークWについて頭部分の位置および軸部分の方向の情報をロボットコントローラ200(図2)などへ出力する処理である。この出力される頭部分の位置情報は、三次元座標値を示す値を含み、軸部分の方向の情報は、三次元空間上のベクトルを示す値を含む。より具体的には、出力処理は、ワークWの軸領域の高さ情報(三次元座標値)から対応するワークWの軸部分の方向を決定する処理を含む。
【0058】
なお、画像処理装置100が三次元計測によって取得する座標系と、ロボット300の処理において利用される座標系とは一致していない場合も多いので、ロボット300が扱う三次元空間上の座標値に変換して出力することが好ましい。
【0059】
また、複数のワークWがバラ積みされているような状況では、複数のワークWについて中心位置の情報が取得された場合には、それぞれのワークWを識別するための情報とともに、対応する中心位置の情報を出力するようにしてもよい。この場合、ロボットコントローラ200(図2)などへの出力を考慮すると、複数のワークWが存在した場合には、各ワークWについて個別に出力されることが好ましい。そのため、ステップS6の出力処理においては、軸領域と対応して抽出された少なくとも1つ候補位置との組の各々について、頭部分の位置および軸部分を関連付けて出力する処理を含めることが好ましい。
【0060】
あるいは、最上部に位置する、すなわち算出された中心位置が最も確からしいワークWについての情報のみを出力してもよい。図1に示すような把持システムSYSでは、このワークWの中心位置の情報が出力されることに伴って、ロボット300が最上部のワークWを把持するので、当該ワークWが取り除かれた状態で再度計測処理を実行するようにしてもよい。
【0061】
なお、図3に示すフローチャートにおいて、ステップS2およびS3(軸領域抽出処理および頭候補抽出処理)と、ステップS4(三次元座標計測処理)とを並列的に実行するようにしてもよい。
【0062】
《D.前処理》
まず、図3に示す前処理(ステップS1)の詳細について説明する。上述したように、前処理は、環境光から撮像装置8に入射する光の影響を取り除き、プロジェクタ7からの照明光がワークWで反射して生じる光(反射光)のみを観測するための処理である。このような環境光の影響を取り除くため、プロジェクタ7から照明光を照射していない状態で取得される画像と、プロジェクタ7から照明光を照射している状態で取得される画像との差分から差分画像(シェーディング画像)が生成される。
【0063】
図4は、本発明の実施の形態に係る前処理の処理例を示す図である。図4を参照して、本実施の形態に係る画像処理方法においては、ワークWの周囲からの外乱光(環境光)の影響を排除するために、(c)シェーディング画像が生成される。より具体的には、プロジェクタ7から白色パターンを照明光として照射した状態で撮像される画像(図4に示す(a)白色パターン投影+環境光画像)が取得される。白色パターンとは、照射面内における濃淡が均一とみなせるようなパターンを意味し、その照射面内におけるスペクトルの範囲や長さについて特に限定されるものではない。したがって、その照射面内が赤色や青色の光で均一化されているようなパターンを用いてもよい。
【0064】
また、プロジェクタ7から照明光も照射していない状態で撮像される画像(図4に示す(b)環境光画像)が取得される。
【0065】
そして、これらの画像間の差分が計算されることで、(c)シェーディング画像が生成される。この画像間の差分の計算とは、両画像の間で対応する画素についての色情報(たとえば、R,G,Bの各濃淡値)を減算するような処理を含む。
【0066】
このような前処理については、特に、太陽光などの時間的に変化する環境光が撮像装置8の視野に入射しているような状況で有効である。言い換えれば、環境光が安定しており、プロジェクタ7が照射する照明光に対して相対的に小さいものであれば、このような前処理を省略してもよい。この場合には、図4に示す(a)白色パターン投影+環境光画像のみで以降の処理を行ってもよい。
【0067】
《E.軸領域抽出処理》
次に、図3に示す軸領域抽出処理(ステップS2)の詳細について説明する。上述したように、軸領域抽出処理は、入力画像に含まれるワークWの軸部分を特定するための処理である。なお、入力画像としては、上述したような処理によって得られるシェーディング画像が用いられる。
【0068】
このような軸領域抽出処理の実装形態としては種々の方法、たとえばパターンマッチングなどの方法を採用することができるが、本実施の形態においては、セグメンテーション処理を利用する。このようなセグメンテーション処理は、入力されたシェーディング画像(入力画像)を所定の規則で分割することで、軸領域を抽出する。セグメンテーション処理のより具体的に実装形態としては、公知の各種の方法を採用することができる。シンプルな方法としては、入力画像内で明るさ(輝度または明度)がほぼ同様の値をもつ領域を特定する方法などが挙げられる。
【0069】
本実施の形態においては、このようなセグメンテーション処理の一例として、"Normalized Cuts"法を採用する。この"Normalized Cuts"法の詳細については、「Jianbo Shi and Jitendra Malik, "Normalized Cuts and Image Segmentation", IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 22, No. 8, August 2000」などを参照されたい。
【0070】
図5は、本発明の実施の形態に係る軸領域抽出処理の処理例を示す図である。図5に示す(a)入力画像に対して、上述のセグメンテーション処理の一例である"Normalized Cuts"法を適用することで、(b)セグメンテーション結果のような結果画像が生成される。このようなセグメンテーション結果に対して、ワークWの形状に応じた条件を適用して、領域を抽出すると、(c)軸領域抽出結果のような結果画像が生成される。基本的には、この抽出された軸領域について、以下に説明するような処理が実行される。この抽出された軸領域は、入力画像上の二次元座標系における座標値を用いて、その範囲が特定される。
【0071】
《F.頭候補抽出処理》
次に、図3に示す頭候補抽出処理(ステップS3)の詳細について説明する。この頭候補抽出処理は入力画像に含まれるワークWの頭部分を特定するための処理である。本実施の形態においては、二段階の処理を経ることで、頭候補が抽出される。
【0072】
より具体的には、第一段階の処理として、入力画像内の輝度変化に基づいて、頭候補が抽出される。この第一段階の処理では、入力画像内において隣接する領域に比較して、相対的に明るい位置が頭部分の候補位置として抽出される。
【0073】
続く第二段階の処理として、図3のステップS2において先に抽出される軸領域との相対位置関係を利用して、頭部分の候補位置がさらに絞り込まれる。この第二段階の処理では、入力画像内において相対的に明るい位置のうち、先に抽出されたいずれかの軸領域の両端から予め定められた範囲内に存在するものが頭部分の候補位置として絞り込まれる。
【0074】
以下、これらの処理の詳細について説明する。
(f1:入力画像内の輝度変化に基づく抽出処理)
上述したように、まず、入力画像内の輝度変化に基づいて頭候補が抽出される。ワークWの頭部分の形状は、半球状のものなど、その表面の法線が色々な方向となっているものが多い。そのため、この半球状の表面で反射する光によって、入力画像内では頭部分に対応する領域の輝度変化が相対的に大きくなり、かつ入力画像全体として見れば、点状に観測されることになる。
【0075】
この第一段階の処理では、このような現象を入力画像内で捉えて、頭部分を特定する。すなわち、入力画像内において、周辺の領域から独立して単独で存在し、かつ、明るさ(輝度)の強い点が抽出される。入力画像からこのような輝度変化が相対的に大きく、点状に分布する部分を、入力画像についてのヘッシアンHの値から抽出する。
【0076】
入力画像(二次元画像)の縦方向および横方向をそれぞれx方向およびy方向とし、各画素の輝度をfで表すと、ヘッシアンHの行列式は、x方向および/またはy方向の二階偏微分を用いて、以下のように表すことができる。
【0077】
【数1】
【0078】
さらに、この各画素位置について算出されるヘッシアン値に対して、所定のしきい値処理をすることで、すなわち、算出されたヘッシアン値が所定のしきい値を超える位置のみを抽出することで、頭候補を抽出することができる。
【0079】
図6は、本発明の実施の形態に係る頭候補抽出処理の第一段階の処理結果の一例を示す図である。図6(a)には、入力画像について算出されたヘッシアン値の大きさを画像化して示す。図6(b)は、頭候補の抽出結果を示す図である。すなわち、図6(b)には、図6(a)に示されるヘッシアン値のうち、所定のしきい値を超えた位置を入力画像に重ね合わせて示す。
【0080】
このようにして、第一段階として、ワークWの頭部分の位置となる候補が抽出される。
(f2:軸領域の両端との相対位置に基づく抽出処理)
続いて、軸領域の両端との相対位置に基づいて、第一段階で抽出された頭候補が絞られる。すなわち、第一段階において説明した入力画像内の輝度変化に基づいて抽出される頭候補は、その数が多くなりすぎる場合があり、かつ、誤って抽出されたものも含まれ得る。そこで、第二段階として頭候補を選別する。
【0081】
より具体的には、先に抽出された軸領域から、ワークWの軸部分の終端位置と各頭候補の位置とを比較し、両者の間が所定距離内にあれば、有効な頭候補として選別する。
【0082】
図7は、本発明の実施の形態に係る頭候補抽出処理の第二段階の処理内容を説明するための図である。図7を参照して、ワークWの軸領域として抽出された範囲の両端から所定範囲(典型的には、端からの距離がd以内で、かつ、軸領域を基準に設定される角度θ内の範囲)に存在する頭候補が採用される。すなわち、図7においては、軸領域の両端からハッチングで示される範囲内に存在する頭候補のみが有効なものとして採用される。
【0083】
(f3:処理手順)
図8は、本実施の形態に係る画像処理装置100において実行される頭候補抽出処理のより詳細な手順を示すフローチャートである。図8に示す処理手順は、図3に示すステップS3の処理内容をより詳細に示すものである。
【0084】
図8を参照して、画像処理装置100のCPU110は、入力画像についてのヘッシアン値を算出する(ステップS31)。続いて、CPU110は、ステップS31において算出された各画素についてのヘッシアン値のうち所定のしきい値を超えているものを抽出し、抽出された画素を頭候補として設定する(ステップS32)。
【0085】
続いて、CPU110は、ステップS2において抽出された軸領域のうち対象となる軸領域を選択する(ステップS33)。続いて、CPU110は、対象の軸領域について有効な頭候補が存在すべき範囲(図7に示すハッチングの範囲)を設定する(ステップS34)。さらに、CPU110は、ステップS32において頭候補として設定した画素のうち、ステップS34において設定した範囲内に存在するものを選別する(ステップS35)。そして、選別した画素に対応する座標値(すなわち、頭候補の位置)を現在対象として選択している軸領域に対応付けて記憶する(ステップS36)。なお、対象として選択している軸領域の範囲内に頭候補が全く存在しない場合には、当該軸領域は有効なものとはみなせないので、破棄するようにしてもよい。実質的には、ステップS36において、そのような軸領域に対応する頭候補が記憶されないので、以降の処理においても利用されなくなる。
【0086】
その後、CPU110は、ステップS2において抽出された軸領域のすべてを対象として選択したか否かを判断する(ステップS37)。ステップS2において抽出された軸領域のうち対象として選択されていないものがあれば(ステップS37においてNO)、CPU110は、次の軸領域を対象として選択し(ステップS38)、ステップS34以下の処理を繰返す。
【0087】
一方、ステップS2において抽出された軸領域のうちすべてを対象として選択していれば(ステップS37においてYES)、図3に示すステップS4以下の処理が引き続いて実行される。
【0088】
《G.三次元座標計測処理》
次に、図3に示す三次元座標計測処理(ステップS4)の詳細について説明する。上述したように、三次元座標計測処理は、ワークWについて抽出された軸領域および頭候補についての三次元座標値を取得するための処理である。本実施の形態においては、このような三次元座標値を取得する処理の具体例として、位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像(正弦波投影画像)を用いる方法である。
【0089】
より具体的には、照射面内の濃淡の変化周期や位相を異ならせたパターンを複数用意し、それぞれのパターンを照射したときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、これらの正弦波投影画像間における対応する部分の明るさ(輝度や明度)の変化に基づいて、各部分の高さ情報(三次元座標値)が算出される。
【0090】
図9は、本発明の実施の形態に係る三次元座標計測処理に用いられるパターンの一例を示す図である。図10は、本発明の実施の形態に係る三次元座標計測処理の処理例を示す図である。
【0091】
図9(a)〜(d)に示すように、位相シフト法では、照射面内における濃淡パターンをその変化周期や位相を異ならせた複数のパターンが用いられる。このように異なる複数の濃淡パターンを用いることで、計測レンジを広げつつ計測対象物の三次元計測を行うことができる。
【0092】
このような位相シフト法によって、図10の(a)正弦波投影画像群から(b)高さ画像を生成することができる。なお、図10には、理解を容易化するために、高さ情報を色情報(濃淡変化)で示した高さ画像を例示するが、位相シフト法においては、各部の高さ情報を含む三次元座標値が取得されることになる。
【0093】
このように、本実施の形態に係る三次元座標計測処理においては、ワークWに対して、プロジェクタ7が所定方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置8によりそれぞれ撮像された複数の画像を用いて高さ情報が取得される。
【0094】
《H.頭候補判別処理》
次に、図3に示す頭候補判別処理(ステップS5)の詳細について説明する。上述したように、頭候補判別処理は、軸領域の各々に対応付けられている頭候補のうち、頭部分であるとされる確率の高いものを判別する処理である。この頭候補判別処理については、軸領域および頭候補の三次元情報(三次元座標値)を利用して、ワークWの確からしい頭部分が判別される。なお、1つの軸領域について、複数の頭候補が判別されてもよい。
【0095】
上述の頭候補抽出処理の手順を示すフローチャート(図8)のステップS36において説明したように、軸領域(ワークWの軸部分)の各々と対応する頭候補とは、先に関連付けて記憶される。本実施の形態に係る頭候補判別処理においては、これらを1セット(一組)として、それぞれに三次元座標値を付与した上で、三次元座標系における相対的な位置関係から、頭候補のうち有効なものが判定される。より具体的には、軸領域の表面における三次元座標値、頭候補の三次元座標値、および撮像装置8が配置される三次元座標値を用いて、これらの間の相対的な位置関係を考慮して判別する。
【0096】
特に、本実施の形態に係る頭候補判別処理においては、「頭部分(頭候補)は軸部分の表面(軸領域)よりも撮像装置8の側に存在する」という基本的な判定基準を採用する。これは、ネジ、ボルト、釘などのワークWについてみれば、頭部分の径が軸部分に対してより大きいので、バラ積みされた状態でその上部などから撮像装置8を用いて撮像した場合には、頭部分の表面の方が軸部分の表面より撮像装置8側に位置するためである。
【0097】
すなわち、本実施の形態においては、入力画像は、少なくとも1つのワークWに対して予め定められた距離だけ離れた位置に配置された撮像装置8を用いて撮像することで取得され、頭部分に相当する位置を頭候補(の位置)から抽出する処理(頭候補判別処理)においては、軸領域に比較して撮像装置8の側に位置する頭候補(候補位置)を頭部分に相当する位置として抽出する処理を含む。
【0098】
図11は、本発明の実施の形態に係る頭候補判別処理においてOKと判別される条件を模式的に示す図である。図12は、本発明の実施の形態に係る頭候補判別処理においてNGと判別される条件を模式的に示す図である。
【0099】
図11(a)を参照して、軸領域端の片方にのみに判定基準を満たす頭候補が存在する場合に、対象の軸領域と対応する頭候補との組について、判定基準を満たすと判断される。なお、図11(b)に示すように、軸領域端の片方にのみ存在するのであれば、判定基準を満たす頭候補が2つ以上存在してもよい。この場合には、これらの判定基準を満たす複数の頭候補から、共通の頭部分を特定することができる。
【0100】
これに対して、図12(a)に示すように、軸領域端の両方に判定基準を満たす頭候補が存在する場合には、本来のワークWの形状に合致しないので、判定基準を満たさないと判断される。判定基準を満たさないと判断された場合には、対象の軸領域については頭候補(頭部分)が存在しないと出力される。
【0101】
また、図12(a)に示すように、軸領域端のいずれにも判定基準を満たす頭候補が存在しない場合にも、本来のワークWの形状に合致しないので、判定基準を満たさないと判断される。判定基準を満たさないと判断された場合には、対象の軸領域については頭候補(頭部分)が存在しないと出力される。
【0102】
軸領域と頭候補とからなる組の各々に対して、図11および図12に示す判定基準を用いて、頭候補判別処理が繰返し実行される。そして、判定基準を満たす頭候補が存在する軸領域についてのみ、軸領域に対応する軸部分と頭候補に対応する頭部分との組をあるワークWから得られた情報として出力する。
【0103】
《I.出力処理》
次に、図3に示す出力処理(ステップS6)の詳細について説明する。上述したように、出力処理は、ワークWについて頭部分の位置および軸部分の方向の情報をロボットコントローラ200(図2)などへ出力する処理である。
【0104】
より具体的には、上述の頭候補判別処理によって得られた、頭部分と軸部分との各組について、頭部分の三次元座標値と軸部分の方向とが算出および出力される。
【0105】
なお、あらかじめワークWの設計情報をCADデータなどから取得しておき、算出された頭部分の三次元座標値と軸部分の方向とを、当該CADデータを基準とした偏差の情報として出力してもよい。たとえば、CADデータに記載のワークWの配置位置および配置方向を基準として、検出されたワークWの位置変位量および回転変位量とを出力するようにしてもよい。このような変位出力のデータ形式としては、位置変位量を示す(x,y,z)が出力されるとともに、回転変位量を示す(α,β,γ)が出力される。
【0106】
もちろん、上述したようなデータ出力の形態に限定されることなく、出力先の使用用途に応じた形式でデータを出力すればよい。
【0107】
《J.計測例》
図13は、本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。図13に示す認識結果は、複数のワークW(図4に示すような多数のボルト)がバラ積みされている状態を撮像した入力画像から得られたものである。なお、図13に示す線は、上述した処理によって算出されたワークWの軸部分の位置および方向を示し、その周辺に描かれている円は、検出された頭部分の位置や方向などを示す。
【0108】
このように、本実施の形態に係る画像処理方法によれば、比較的短時間で、任意の方向に配置されているワークWの位置およびその中心軸を決定することができる。ワークWの頭部分の位置および軸部分の方向をより短時間で算出できる。
【0109】
《K.変形例》
上述の説明では、各ワークWについて、算出された頭部分の位置および頭部分の方向などをそのまま出力するような形態について説明したが、いずれの一方の情報のみを出力するようにしてもよい。あるいは、これらの情報にさらに別の情報を付加した出力してもよい。
【0110】
《L.利点》
本実施の形態に係る画像処理装置によれば、二次元画像に対する画像処理と、同一のワークWに対する三次元座標計測処理とを組合せることで、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含むワークWについて、その頭部分の位置およびその軸部分の方向をより高速に算出することができる。
【0111】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0112】
7 プロジェクタ
8 撮像装置
100 画像処理装置
102 ディスプレイ
104 マウス
106 メモリカード
110 CPU
112 メインメモリ
114 ハードディスク
116 カメラインターフェイス
116a 画像バッファ
118 入力インターフェイス
120 表示コントローラ
122 プロジェクタインターフェイス
124 通信インターフェイス
126 データリーダ/ライタ
128 バス
200 ロボットコントローラ
300 ロボット
SYS 把持システム
W ワーク
【技術分野】
【0001】
本発明は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する方法、装置およびプログラムに関するものである。
【背景技術】
【0002】
たとえば、FA(Factory Automation)分野などにおいては、省力化や自動化の観点から、製造現場で扱われる検出対象物(以下、「ワーク」とも称す。)を撮像して得られる画像に基づいて、各種の処理を自動化するような画像計測技術が開発・実用化されている。
【0003】
このような画像計測技術の一例として、ネジや釘などの突起物を有する円筒状のワークを把持したりするために、当該ワークの頭部分の位置がどちらの方向にあるかを判定するような手法が提案されている。たとえば、非特許文献1には、空間コード化法による3次元ビジョンセンサを用いてバラ積みされたネジを認識し、ロボットで一つずつピックアップする実験システムについて開示されている。
【0004】
より具体的には、非特許文献1のシステムでは、まず、ネジの位置姿勢の認識処理が実行され、続いて、ロボットでネジを掴んで平面に平置きした後、高さを計測し、高い方がネジの頭方向として認識される。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】川戸他、「3次元センサを用いたネジのビンピッキングシステム」、動的画像処理実利用化ワークショップDIA2008、3D計測(オーラルセッション6)、2008年3月7日
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述の非特許文献1に開示されたネジの頭方向の算出方法によれば、ロボットでのネジの把持動作、および、その後の3次元計測処理が必要であり、処理時間が比較的長くなるという課題があった。
【0007】
そこで、本発明の目的は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向をより高速に算出する方法、装置およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
本発明のある局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する方法を提供する。本方法は、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを含む。
【0009】
好ましくは、入力画像は、少なくとも1つの検出対象物に対して予め定められた距離だけ離れた位置に配置された撮像装置を用いて撮像することで取得され、頭部分に相当する位置を候補位置から抽出するステップは、軸領域に比較して撮像装置の側に位置する候補位置を頭部分に相当する位置として抽出するステップを含む。
【0010】
さらに好ましくは、候補位置を抽出するステップでは、入力画像内において隣接する領域に比較して、相対的に明るい位置が頭部分の候補位置として抽出される。
【0011】
あるいはさらに好ましくは、候補位置を抽出するステップでは、さらに、相対的に明るい位置のうち、軸領域の両端から予め定められた範囲内に存在するものが頭部分の候補位置として抽出される。
【0012】
あるいはさらに好ましくは、候補位置を抽出するステップでは、入力画像についてのヘッシアンの値から候補位置を抽出する。
【0013】
あるいはさらに好ましくは、本方法は、軸領域の高さ情報から対応する検出対象物の軸部分の方向を決定するステップをさらに含む。
【0014】
あるいはさらに好ましくは、本方法は、軸領域と対応して抽出された少なくとも1つ候補位置との組の各々について、頭部分の位置および軸部分を関連付けて出力するステップをさらに含む。
【0015】
あるいはさらに好ましくは、入力画像を取得するステップは、少なくとも1つの検出対象物に対して照明光を照射しない状態で撮像装置により取得された第1の画像と、少なくとも1つの検出対象物に対して照明光を照射した状態で撮像装置により取得された第2の画像との差分から入力画像を生成するステップを含む。
【0016】
あるいはさらに好ましくは、高さ情報を取得するステップは、少なくとも1つの検出対象物に対して、複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置によりそれぞれ撮像された複数の画像を用いて、高さ情報を取得する。
【0017】
本発明の別の局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出する装置を提供する。本装置は、撮像装置と接続され、少なくとも1つの検出対象物を撮像した入力画像を取得するインターフェイスと、入力画像から、軸部分に相当する領域を軸領域として抽出する手段と、入力画像内の明るさの変化から頭部分の候補位置を抽出する手段と、軸領域および候補位置についての高さ情報を取得する手段と、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出する手段とを含む。
【0018】
本発明のさらに別の局面に従えば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向を算出するためのプログラムを提供する。当該プログラムは、コンピュータに、少なくとも1つの検出対象物を撮像した入力画像を取得するステップと、入力画像から、軸部分に相当する領域を軸領域として抽出するステップと、入力画像内の明るさの変化から頭部分の候補位置を抽出するステップと、軸領域および候補位置についての高さ情報を取得するステップと、軸領域との間の相対的な位置関係から、軸領域に対応する検出対象物の頭部分に相当する位置を候補位置から抽出するステップとを実行させる。
【発明の効果】
【0019】
本発明によれば、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、頭部分の位置および軸部分の方向をより高速に算出できる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施の形態に係る画像処理装置を含む把持システムの全体構成を示す概略図である。
【図2】本発明の実施の形態に係る画像処理装置の概略構成図である。
【図3】本実施の形態に係る画像処理装置において実行される全体処理手順を示すフローチャートである。
【図4】本発明の実施の形態に係る前処理の処理例を示す図である。
【図5】本発明の実施の形態に係る軸領域抽出処理の処理例を示す図である。
【図6】本発明の実施の形態に係る頭候補抽出処理の第一段階の処理結果の一例を示す図である。
【図7】本発明の実施の形態に係る頭候補抽出処理の第二段階の処理内容を説明するための図である。
【図8】本実施の形態に係る画像処理装置において実行される頭候補抽出処理のより詳細な手順を示すフローチャートである。
【図9】本発明の実施の形態に係る三次元座標計測処理に用いられるパターンの一例を示す図である。
【図10】本発明の実施の形態に係る三次元座標計測処理の処理例を示す図である。
【図11】本発明の実施の形態に係る頭候補判別処理においてOKと判別される条件を模式的に示す図である。
【図12】本発明の実施の形態に係る頭候補判別処理においてNGと判別される条件を模式的に示す図である。
【図13】本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。
【発明を実施するための形態】
【0021】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0022】
《A.概要》
本実施の形態に係る画像処理方法は、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含む検出対象物(ワークW)について、頭部分の位置および軸部分の方向を算出する方法に向けられている。本実施の形態に係る画像処理方法においては、一種の面光源であるプロジェクタからワークWに対して照明光(白色光)を投影し、撮像装置を用いて、当該照明光の投影によって生じる反射光を撮像する。この撮像によって得られた入力画像に対して、軸部分に相当する領域(軸領域)および頭部分の候補位置(典型的には、入力画像内において単独で相対的に明るさが強い部分)が抽出される。以下では、抽出された(複数の)頭部分の可能性が高い部分(位置)を単に「頭候補」とも称す。さらに、軸領域および候補位置についての高さ情報(すなわち、三次元座標系における座標値)が取得される。最終的に、軸領域との間の相対的な位置関係から、軸領域に対応するワークWの頭部分に相当する位置が候補位置から抽出される。そして、抽出された頭部分に相当する位置および対応する軸領域(軸部分)の方向が算出される。
【0023】
このように、本実施の形態に係る画像処理方法は、ワークWについての二次元画像によって得られる画像処理の結果と、同一のワークWを三次元計測することで得られる高さ情報とを用いて、より少ない処理量でワークWの頭部分の位置および軸部分の方向を算出する。
【0024】
《B.全体装置構成》
図1は、本発明の実施の形態に係る画像処理装置100を含む把持システムSYSの全体構成を示す概略図である。図1に例示される把持システムSYSは、生産ラインなどに組み込まれ、トレーなどにバラ積みされた検出対象物(ワークW)を1個ずつ把持するような処理を行う。なお、図1には、理解を容易にするため、トレー内に2つのワークWのみが存在する場合を図示するが、多数のワークWが重なった状態で配置されていてもよい。
【0025】
ワークWは、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とからなる形状を有している。このようなワークWの典型例としては、ネジ、ボルト、釘などが挙げられる。作業ラインにおいて、このようなワークWは、図示しない上流側の製造装置などから搬送される場合が多いため、そのトレー内での向きはランダムになっているものとする。
【0026】
たとえば、このネジを用いて製品の固定などを行う作業工程を考えると、ロボットでネジを把持した上で、当該ネジの頭部分(ネジ穴が形成されている部分)に対して、別の機構を用いてドライバなどを挿入して回転させる必要がある。そのため、ワークWがいずれの方向(位置)に存在するのか、および、いずれの向きに頭部分が存在するのかを認識する必要がある。そこで、本実施の形態に係る画像処理装置100は、このようなニーズに対応するため、ワークWについて頭部分の位置および軸部分の方向を算出する。もちろん、画像処理装置100の用途はこれに限られない。
【0027】
なお、以下の説明では、主として、軸部分として円筒形状を有するワークWを想定して説明を行うが、多角形柱の軸部分を有するワークWであっても同様に適用できる。また、頭部分については、後述するように、撮像して得られた画像内において反射によって局所的に明るくなるような形状であればどのようなものであっても適用できる。そのため、その断面は任意の形状のものを採用することができ、その大きさなども特に制限されるものではない。
【0028】
図1に示すように、本実施の形態に係る把持システムSYSは、画像処理装置100と、ロボットコントローラ200と、ロボット300とを含む。画像処理装置100には、プロジェクタ(照明装置)7および撮像装置8が接続されている。
【0029】
後述するように、プロジェクタ7は、一種の面光源として機能するとともに、画像処理装置100からの指示に従って任意の濃淡パターンの照明光を所定位置(ワークWを含むトレーが配置される位置)に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。
【0030】
撮像装置8は、プロジェクタ7によって照射された照明光がワークWの表面で反射した光を撮像する。そして、撮像装置8は、このワークWからの反射光(ワークWの像)を示す画像(以下、「入力画像」とも称す。)を出力する。
【0031】
本実施の形態においては、プロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は既知であるとする。すなわち、プロジェクタ7が照明光を照射する方向およびその配置位置と、撮像装置8の視線方向およびその配置位置とは、予め取得されているものとする。なお、このようなプロジェクタ7と撮像装置8との間の相対的な位置姿勢関係は、キャリブレーション処理によって得られるキャリブレーションデータに反映される。このキャリブレーションデータの具体的な内容としては、プロジェクタ7と撮像装置8との三次元的な位置姿勢(三次元座標上の座標値(x,y,z)および角度(α,β,γ))やそれらの視野角など情報を含む。
【0032】
プロジェクタ7は、主要なコンポーネントとして、LED(Light Emitting Diode)やハロゲンランプなどの光源と、プロジェクタ7の照射面の側に配置されたフィルタとを含む。プロジェクタ7に用いられる光源は、波長範囲が比較的広いものが好ましい。また、フィルタは、後述するような三次元計測に必要な濃淡パターンを発生させるものであり、画像処理装置100などからの指令に従って、面内の透光率を任意に変化させることができる。
【0033】
撮像装置8は、主要なコンポーネントとして、レンズなどの光学系と、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった撮像素子とを含む。
【0034】
画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム(命令コード)を実行することで、本実施の形態に係る画像処理機能を提供する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置100にインストールされる。
【0035】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0036】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0037】
図2は、本発明の実施の形態に係る画像処理装置100の概略構成図である。図2を参照して、画像処理装置100は、演算処理部であるCPU(Central Processing Unit)110と、記憶部としてのメインメモリ112およびハードディスク114と、カメラインターフェイス116と、入力インターフェイス118と、表示コントローラ120と、プロジェクタインターフェイス122と、通信インターフェイス124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続される。
【0038】
CPU110は、ハードディスク114にインストールされたプログラム(コード)をメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、撮像装置8によって取得された入力画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク114には、各種設定値などが格納されてもよい。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【0039】
カメラインターフェイス116は、CPU110と撮像装置8との間のデータ伝送を仲介する。すなわち、カメラインターフェイス116は、ワークWを撮像して入力画像を生成するための撮像装置8と接続される。より具体的には、カメラインターフェイス116は、1つ以上の撮像装置8と接続が可能であり、撮像装置8からの入力画像を一時的に蓄積するための画像バッファ116aを含む。そして、カメラインターフェイス116は、画像バッファ116aに所定コマ数の入力画像が蓄積されると、その蓄積された入力画像をメインメモリ112へ転送する。また、カメラインターフェイス116は、CPU110が発生した内部コマンドに従って、撮像装置8に対して撮像コマンドを与える。
【0040】
入力インターフェイス118は、CPU110とマウス104、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス118は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【0041】
表示コントローラ120は、表示装置の典型例であるディスプレイ102と接続され、CPU110における処理結果などをユーザに通知する。すなわち、表示コントローラ120は、ディスプレイ102に接続され、当該ディスプレイ102での表示を制御する。
【0042】
プロジェクタインターフェイス122は、CPU110とプロジェクタ7との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェイス122は、CPU110が発生した内部コマンドに従って、プロジェクタ7に対して照明コマンドを与える。
【0043】
通信インターフェイス124は、CPU110とコンソール(あるいは、パーソナルコンピュータやサーバ装置)などとの間のデータ伝送を仲介する。通信インターフェイス124は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
【0044】
データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、撮像装置8によって取得された入力画像および/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、CF(Compact Flash)、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体等からなる。
【0045】
また、画像処理装置100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【0046】
再度図1を参照して、ロボット300は、ワークWを把持するためのハンド機構と、当該ハンド機構を任意の位置および方向に位置決めするための関節機構とを含む。ロボット300は、ロボットコントローラ200によってその動作が制御される。
【0047】
ロボットコントローラ200は、画像処理装置100によって算出されたワークWの中心位置(中心軸)を示す情報に基づいて、ワークWの位置や姿勢を認識するとともに、当該認識された各ワークWの位置や姿勢に基づいて、ロボット300のハンド機構を適切な位置および方向に位置決めするための指令を生成し、ロボット300へ出力する。この指令に応答して、ロボット300は、ワークWの把持動作を開始する。
【0048】
《C.全体処理》
図3は、本実施の形態に係る画像処理装置100において実行される全体処理手順を示すフローチャートである。図3に示す各ステップは、基本的には、画像処理装置100のCPU110によって実行される。
【0049】
図3を参照して、画像処理装置100のCPU110は、前処理を実行する(ステップS1)。この前処理は、バラ積み状態の少なくとも1つのワークWを撮像した入力画像を取得する処理を含む。この入力画像の取得方法の典型例としては、図1に示すような撮像装置8を用いて撮像された画像を画像処理装置100に入力する方法が挙げられる。但し、撮像装置8を用いて撮像して得られた入力画像を蓄積しておき、事後的に画像処理装置100に入力するような形態であってもよい。このような処理方法は、ワークWに対する把持動作に異常があった場合などの原因究明に利用されるときなどに好適である。
【0050】
さらに、本実施の形態においては、ワークWの周囲からの外乱光の影響を排除するために、シェーディング画像が生成される。このシェーディング画像は、プロジェクタ7から照明光を照射した状態(環境光+照明光)で撮像して得られる画像と、プロジェクタ7から照明光を照射していない状態(環境光のみ)で撮像して得られる画像との差分によって生成される。言い換えれば、ステップS1に示す前処理は、少なくとも1つのワークWに対して照明光を照射しない状態で撮像装置8により取得された画像と、当該少なくとも1つのワークWに対して照明光を照射した状態で撮像装置8により取得された画像との差分から入力画像を生成する処理を含む。このシェーディング画像生成処理の詳細については、後述する。
【0051】
前処理の実行後、画像処理装置100のCPU110は、入力画像内の軸領域抽出処理を実行する(ステップS2)。この軸領域抽出処理は、入力画像に含まれるワークWの軸部分を特定するための処理である。すなわち、軸領域抽出処理は、入力画像から、軸部分に相当する領域を軸領域として抽出する処理を含む。このワークWの軸部分に対応する領域を「軸領域」とも称す。この軸領域抽出処理の詳細については、後述する。
【0052】
軸領域抽出処理の実行後、画像処理装置100のCPU110は、入力画像内の頭候補抽出処理を実行する(ステップS3)。この頭候補抽出処理は、入力画像に含まれるワークWの頭部分を特定するための処理である。後述するように、この頭部分は、入力画像内の明るさ(輝度)に基づいて抽出される。頭部分の表面では法線が色々な方向となっているので、頭部分に対応する領域の輝度変化が相対的に大きくなる。そのため、このような現象を入力画像内で捉えて、頭部分を特定する。このように、頭候補抽出処理は、入力画像内の明るさの変化からワークWの頭部分の候補位置を抽出する処理を含む。上述したように、頭候補抽出処理では、入力画像内の明るさに基づいて頭部分(の候補位置)を抽出するので、誤って検出された位置(ノイズ成分)も含まれ得る。このようなノイズ成分を含む候補位置から、後述するような処理によって、ワークWの確からしい頭部分が抽出される。
【0053】
上述したステップS1〜S3までの処理が二次元処理(二次元画像処理)に係る。
続いて、画像処理装置100のCPU110は、三次元座標計測処理を実行する(ステップS4)。この三次元座標計測処理は、ステップS2およびS3において抽出された、ワークWの軸領域および頭候補についての三次元座標値を計測する処理である。二次元画像処理において抽出された軸領域および頭候補の二次元座標値については取得されているので、本質的には、これらについての高さ情報が取得される。すなわち、三次元座標計測処理は、ワークWの軸領域および候補位置についての高さ情報を取得する処理を含む。
【0054】
このような三次元座標計測処理の一例として、本実施の形態においては位相シフト法を採用する。位相シフト法を採用することで、上述のステップS1の前処理に必要なプロジェクタ(照明装置)7および撮像装置8を利用して、三次元座標値を取得できるので、装置が簡素化できるという利点がある。
【0055】
もちろん、ワークWの軸領域および頭候補についての三次元座標値(高さ情報)を取得できれば、どのような三次元座標計測処理を採用してもよい。たとえば、位相シフト法に代えて、空間コード化法などを採用することもできる。さらに、画像処理装置100とは別の計測装置を用いて、ワークWの軸領域および頭候補についての三次元座標値を取得し、この取得された三次元座標値を画像処理装置100に入力するようにしてもよい。この三次元座標計測処理(位相シフト法)の詳細については、後述する。
【0056】
三次元座標計測処理の実行後、画像処理装置100のCPU110は、三次元座標系での頭候補判別処理を実行する(ステップS5)。この頭候補判別処理は、ステップS2において抽出された軸領域の三次元座標値と、ステップS3において抽出された頭候補の三次元座標値との相対的な位置関係を考慮して、各軸領域について、頭候補のうち頭部分に相当するものを判別する処理である。より具体的には、頭候補判別処理では、ワークWの形状を考慮して、ある軸領域のいずれかの端から所定範囲内に存在する頭候補のみを確からしいものとして抽出する。このように、頭候補判別処理は、軸領域との間の相対的な位置関係から、軸領域に対応するワークWの頭部分に相当する位置を候補位置から抽出する処理を含む。
【0057】
頭候補判別処理の実行後、画像処理装置100のCPU110は、出力処理を実行する(ステップS6)。この出力処理は、ワークWについて頭部分の位置および軸部分の方向の情報をロボットコントローラ200(図2)などへ出力する処理である。この出力される頭部分の位置情報は、三次元座標値を示す値を含み、軸部分の方向の情報は、三次元空間上のベクトルを示す値を含む。より具体的には、出力処理は、ワークWの軸領域の高さ情報(三次元座標値)から対応するワークWの軸部分の方向を決定する処理を含む。
【0058】
なお、画像処理装置100が三次元計測によって取得する座標系と、ロボット300の処理において利用される座標系とは一致していない場合も多いので、ロボット300が扱う三次元空間上の座標値に変換して出力することが好ましい。
【0059】
また、複数のワークWがバラ積みされているような状況では、複数のワークWについて中心位置の情報が取得された場合には、それぞれのワークWを識別するための情報とともに、対応する中心位置の情報を出力するようにしてもよい。この場合、ロボットコントローラ200(図2)などへの出力を考慮すると、複数のワークWが存在した場合には、各ワークWについて個別に出力されることが好ましい。そのため、ステップS6の出力処理においては、軸領域と対応して抽出された少なくとも1つ候補位置との組の各々について、頭部分の位置および軸部分を関連付けて出力する処理を含めることが好ましい。
【0060】
あるいは、最上部に位置する、すなわち算出された中心位置が最も確からしいワークWについての情報のみを出力してもよい。図1に示すような把持システムSYSでは、このワークWの中心位置の情報が出力されることに伴って、ロボット300が最上部のワークWを把持するので、当該ワークWが取り除かれた状態で再度計測処理を実行するようにしてもよい。
【0061】
なお、図3に示すフローチャートにおいて、ステップS2およびS3(軸領域抽出処理および頭候補抽出処理)と、ステップS4(三次元座標計測処理)とを並列的に実行するようにしてもよい。
【0062】
《D.前処理》
まず、図3に示す前処理(ステップS1)の詳細について説明する。上述したように、前処理は、環境光から撮像装置8に入射する光の影響を取り除き、プロジェクタ7からの照明光がワークWで反射して生じる光(反射光)のみを観測するための処理である。このような環境光の影響を取り除くため、プロジェクタ7から照明光を照射していない状態で取得される画像と、プロジェクタ7から照明光を照射している状態で取得される画像との差分から差分画像(シェーディング画像)が生成される。
【0063】
図4は、本発明の実施の形態に係る前処理の処理例を示す図である。図4を参照して、本実施の形態に係る画像処理方法においては、ワークWの周囲からの外乱光(環境光)の影響を排除するために、(c)シェーディング画像が生成される。より具体的には、プロジェクタ7から白色パターンを照明光として照射した状態で撮像される画像(図4に示す(a)白色パターン投影+環境光画像)が取得される。白色パターンとは、照射面内における濃淡が均一とみなせるようなパターンを意味し、その照射面内におけるスペクトルの範囲や長さについて特に限定されるものではない。したがって、その照射面内が赤色や青色の光で均一化されているようなパターンを用いてもよい。
【0064】
また、プロジェクタ7から照明光も照射していない状態で撮像される画像(図4に示す(b)環境光画像)が取得される。
【0065】
そして、これらの画像間の差分が計算されることで、(c)シェーディング画像が生成される。この画像間の差分の計算とは、両画像の間で対応する画素についての色情報(たとえば、R,G,Bの各濃淡値)を減算するような処理を含む。
【0066】
このような前処理については、特に、太陽光などの時間的に変化する環境光が撮像装置8の視野に入射しているような状況で有効である。言い換えれば、環境光が安定しており、プロジェクタ7が照射する照明光に対して相対的に小さいものであれば、このような前処理を省略してもよい。この場合には、図4に示す(a)白色パターン投影+環境光画像のみで以降の処理を行ってもよい。
【0067】
《E.軸領域抽出処理》
次に、図3に示す軸領域抽出処理(ステップS2)の詳細について説明する。上述したように、軸領域抽出処理は、入力画像に含まれるワークWの軸部分を特定するための処理である。なお、入力画像としては、上述したような処理によって得られるシェーディング画像が用いられる。
【0068】
このような軸領域抽出処理の実装形態としては種々の方法、たとえばパターンマッチングなどの方法を採用することができるが、本実施の形態においては、セグメンテーション処理を利用する。このようなセグメンテーション処理は、入力されたシェーディング画像(入力画像)を所定の規則で分割することで、軸領域を抽出する。セグメンテーション処理のより具体的に実装形態としては、公知の各種の方法を採用することができる。シンプルな方法としては、入力画像内で明るさ(輝度または明度)がほぼ同様の値をもつ領域を特定する方法などが挙げられる。
【0069】
本実施の形態においては、このようなセグメンテーション処理の一例として、"Normalized Cuts"法を採用する。この"Normalized Cuts"法の詳細については、「Jianbo Shi and Jitendra Malik, "Normalized Cuts and Image Segmentation", IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 22, No. 8, August 2000」などを参照されたい。
【0070】
図5は、本発明の実施の形態に係る軸領域抽出処理の処理例を示す図である。図5に示す(a)入力画像に対して、上述のセグメンテーション処理の一例である"Normalized Cuts"法を適用することで、(b)セグメンテーション結果のような結果画像が生成される。このようなセグメンテーション結果に対して、ワークWの形状に応じた条件を適用して、領域を抽出すると、(c)軸領域抽出結果のような結果画像が生成される。基本的には、この抽出された軸領域について、以下に説明するような処理が実行される。この抽出された軸領域は、入力画像上の二次元座標系における座標値を用いて、その範囲が特定される。
【0071】
《F.頭候補抽出処理》
次に、図3に示す頭候補抽出処理(ステップS3)の詳細について説明する。この頭候補抽出処理は入力画像に含まれるワークWの頭部分を特定するための処理である。本実施の形態においては、二段階の処理を経ることで、頭候補が抽出される。
【0072】
より具体的には、第一段階の処理として、入力画像内の輝度変化に基づいて、頭候補が抽出される。この第一段階の処理では、入力画像内において隣接する領域に比較して、相対的に明るい位置が頭部分の候補位置として抽出される。
【0073】
続く第二段階の処理として、図3のステップS2において先に抽出される軸領域との相対位置関係を利用して、頭部分の候補位置がさらに絞り込まれる。この第二段階の処理では、入力画像内において相対的に明るい位置のうち、先に抽出されたいずれかの軸領域の両端から予め定められた範囲内に存在するものが頭部分の候補位置として絞り込まれる。
【0074】
以下、これらの処理の詳細について説明する。
(f1:入力画像内の輝度変化に基づく抽出処理)
上述したように、まず、入力画像内の輝度変化に基づいて頭候補が抽出される。ワークWの頭部分の形状は、半球状のものなど、その表面の法線が色々な方向となっているものが多い。そのため、この半球状の表面で反射する光によって、入力画像内では頭部分に対応する領域の輝度変化が相対的に大きくなり、かつ入力画像全体として見れば、点状に観測されることになる。
【0075】
この第一段階の処理では、このような現象を入力画像内で捉えて、頭部分を特定する。すなわち、入力画像内において、周辺の領域から独立して単独で存在し、かつ、明るさ(輝度)の強い点が抽出される。入力画像からこのような輝度変化が相対的に大きく、点状に分布する部分を、入力画像についてのヘッシアンHの値から抽出する。
【0076】
入力画像(二次元画像)の縦方向および横方向をそれぞれx方向およびy方向とし、各画素の輝度をfで表すと、ヘッシアンHの行列式は、x方向および/またはy方向の二階偏微分を用いて、以下のように表すことができる。
【0077】
【数1】
【0078】
さらに、この各画素位置について算出されるヘッシアン値に対して、所定のしきい値処理をすることで、すなわち、算出されたヘッシアン値が所定のしきい値を超える位置のみを抽出することで、頭候補を抽出することができる。
【0079】
図6は、本発明の実施の形態に係る頭候補抽出処理の第一段階の処理結果の一例を示す図である。図6(a)には、入力画像について算出されたヘッシアン値の大きさを画像化して示す。図6(b)は、頭候補の抽出結果を示す図である。すなわち、図6(b)には、図6(a)に示されるヘッシアン値のうち、所定のしきい値を超えた位置を入力画像に重ね合わせて示す。
【0080】
このようにして、第一段階として、ワークWの頭部分の位置となる候補が抽出される。
(f2:軸領域の両端との相対位置に基づく抽出処理)
続いて、軸領域の両端との相対位置に基づいて、第一段階で抽出された頭候補が絞られる。すなわち、第一段階において説明した入力画像内の輝度変化に基づいて抽出される頭候補は、その数が多くなりすぎる場合があり、かつ、誤って抽出されたものも含まれ得る。そこで、第二段階として頭候補を選別する。
【0081】
より具体的には、先に抽出された軸領域から、ワークWの軸部分の終端位置と各頭候補の位置とを比較し、両者の間が所定距離内にあれば、有効な頭候補として選別する。
【0082】
図7は、本発明の実施の形態に係る頭候補抽出処理の第二段階の処理内容を説明するための図である。図7を参照して、ワークWの軸領域として抽出された範囲の両端から所定範囲(典型的には、端からの距離がd以内で、かつ、軸領域を基準に設定される角度θ内の範囲)に存在する頭候補が採用される。すなわち、図7においては、軸領域の両端からハッチングで示される範囲内に存在する頭候補のみが有効なものとして採用される。
【0083】
(f3:処理手順)
図8は、本実施の形態に係る画像処理装置100において実行される頭候補抽出処理のより詳細な手順を示すフローチャートである。図8に示す処理手順は、図3に示すステップS3の処理内容をより詳細に示すものである。
【0084】
図8を参照して、画像処理装置100のCPU110は、入力画像についてのヘッシアン値を算出する(ステップS31)。続いて、CPU110は、ステップS31において算出された各画素についてのヘッシアン値のうち所定のしきい値を超えているものを抽出し、抽出された画素を頭候補として設定する(ステップS32)。
【0085】
続いて、CPU110は、ステップS2において抽出された軸領域のうち対象となる軸領域を選択する(ステップS33)。続いて、CPU110は、対象の軸領域について有効な頭候補が存在すべき範囲(図7に示すハッチングの範囲)を設定する(ステップS34)。さらに、CPU110は、ステップS32において頭候補として設定した画素のうち、ステップS34において設定した範囲内に存在するものを選別する(ステップS35)。そして、選別した画素に対応する座標値(すなわち、頭候補の位置)を現在対象として選択している軸領域に対応付けて記憶する(ステップS36)。なお、対象として選択している軸領域の範囲内に頭候補が全く存在しない場合には、当該軸領域は有効なものとはみなせないので、破棄するようにしてもよい。実質的には、ステップS36において、そのような軸領域に対応する頭候補が記憶されないので、以降の処理においても利用されなくなる。
【0086】
その後、CPU110は、ステップS2において抽出された軸領域のすべてを対象として選択したか否かを判断する(ステップS37)。ステップS2において抽出された軸領域のうち対象として選択されていないものがあれば(ステップS37においてNO)、CPU110は、次の軸領域を対象として選択し(ステップS38)、ステップS34以下の処理を繰返す。
【0087】
一方、ステップS2において抽出された軸領域のうちすべてを対象として選択していれば(ステップS37においてYES)、図3に示すステップS4以下の処理が引き続いて実行される。
【0088】
《G.三次元座標計測処理》
次に、図3に示す三次元座標計測処理(ステップS4)の詳細について説明する。上述したように、三次元座標計測処理は、ワークWについて抽出された軸領域および頭候補についての三次元座標値を取得するための処理である。本実施の形態においては、このような三次元座標値を取得する処理の具体例として、位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像(正弦波投影画像)を用いる方法である。
【0089】
より具体的には、照射面内の濃淡の変化周期や位相を異ならせたパターンを複数用意し、それぞれのパターンを照射したときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、これらの正弦波投影画像間における対応する部分の明るさ(輝度や明度)の変化に基づいて、各部分の高さ情報(三次元座標値)が算出される。
【0090】
図9は、本発明の実施の形態に係る三次元座標計測処理に用いられるパターンの一例を示す図である。図10は、本発明の実施の形態に係る三次元座標計測処理の処理例を示す図である。
【0091】
図9(a)〜(d)に示すように、位相シフト法では、照射面内における濃淡パターンをその変化周期や位相を異ならせた複数のパターンが用いられる。このように異なる複数の濃淡パターンを用いることで、計測レンジを広げつつ計測対象物の三次元計測を行うことができる。
【0092】
このような位相シフト法によって、図10の(a)正弦波投影画像群から(b)高さ画像を生成することができる。なお、図10には、理解を容易化するために、高さ情報を色情報(濃淡変化)で示した高さ画像を例示するが、位相シフト法においては、各部の高さ情報を含む三次元座標値が取得されることになる。
【0093】
このように、本実施の形態に係る三次元座標計測処理においては、ワークWに対して、プロジェクタ7が所定方向から複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に撮像装置8によりそれぞれ撮像された複数の画像を用いて高さ情報が取得される。
【0094】
《H.頭候補判別処理》
次に、図3に示す頭候補判別処理(ステップS5)の詳細について説明する。上述したように、頭候補判別処理は、軸領域の各々に対応付けられている頭候補のうち、頭部分であるとされる確率の高いものを判別する処理である。この頭候補判別処理については、軸領域および頭候補の三次元情報(三次元座標値)を利用して、ワークWの確からしい頭部分が判別される。なお、1つの軸領域について、複数の頭候補が判別されてもよい。
【0095】
上述の頭候補抽出処理の手順を示すフローチャート(図8)のステップS36において説明したように、軸領域(ワークWの軸部分)の各々と対応する頭候補とは、先に関連付けて記憶される。本実施の形態に係る頭候補判別処理においては、これらを1セット(一組)として、それぞれに三次元座標値を付与した上で、三次元座標系における相対的な位置関係から、頭候補のうち有効なものが判定される。より具体的には、軸領域の表面における三次元座標値、頭候補の三次元座標値、および撮像装置8が配置される三次元座標値を用いて、これらの間の相対的な位置関係を考慮して判別する。
【0096】
特に、本実施の形態に係る頭候補判別処理においては、「頭部分(頭候補)は軸部分の表面(軸領域)よりも撮像装置8の側に存在する」という基本的な判定基準を採用する。これは、ネジ、ボルト、釘などのワークWについてみれば、頭部分の径が軸部分に対してより大きいので、バラ積みされた状態でその上部などから撮像装置8を用いて撮像した場合には、頭部分の表面の方が軸部分の表面より撮像装置8側に位置するためである。
【0097】
すなわち、本実施の形態においては、入力画像は、少なくとも1つのワークWに対して予め定められた距離だけ離れた位置に配置された撮像装置8を用いて撮像することで取得され、頭部分に相当する位置を頭候補(の位置)から抽出する処理(頭候補判別処理)においては、軸領域に比較して撮像装置8の側に位置する頭候補(候補位置)を頭部分に相当する位置として抽出する処理を含む。
【0098】
図11は、本発明の実施の形態に係る頭候補判別処理においてOKと判別される条件を模式的に示す図である。図12は、本発明の実施の形態に係る頭候補判別処理においてNGと判別される条件を模式的に示す図である。
【0099】
図11(a)を参照して、軸領域端の片方にのみに判定基準を満たす頭候補が存在する場合に、対象の軸領域と対応する頭候補との組について、判定基準を満たすと判断される。なお、図11(b)に示すように、軸領域端の片方にのみ存在するのであれば、判定基準を満たす頭候補が2つ以上存在してもよい。この場合には、これらの判定基準を満たす複数の頭候補から、共通の頭部分を特定することができる。
【0100】
これに対して、図12(a)に示すように、軸領域端の両方に判定基準を満たす頭候補が存在する場合には、本来のワークWの形状に合致しないので、判定基準を満たさないと判断される。判定基準を満たさないと判断された場合には、対象の軸領域については頭候補(頭部分)が存在しないと出力される。
【0101】
また、図12(a)に示すように、軸領域端のいずれにも判定基準を満たす頭候補が存在しない場合にも、本来のワークWの形状に合致しないので、判定基準を満たさないと判断される。判定基準を満たさないと判断された場合には、対象の軸領域については頭候補(頭部分)が存在しないと出力される。
【0102】
軸領域と頭候補とからなる組の各々に対して、図11および図12に示す判定基準を用いて、頭候補判別処理が繰返し実行される。そして、判定基準を満たす頭候補が存在する軸領域についてのみ、軸領域に対応する軸部分と頭候補に対応する頭部分との組をあるワークWから得られた情報として出力する。
【0103】
《I.出力処理》
次に、図3に示す出力処理(ステップS6)の詳細について説明する。上述したように、出力処理は、ワークWについて頭部分の位置および軸部分の方向の情報をロボットコントローラ200(図2)などへ出力する処理である。
【0104】
より具体的には、上述の頭候補判別処理によって得られた、頭部分と軸部分との各組について、頭部分の三次元座標値と軸部分の方向とが算出および出力される。
【0105】
なお、あらかじめワークWの設計情報をCADデータなどから取得しておき、算出された頭部分の三次元座標値と軸部分の方向とを、当該CADデータを基準とした偏差の情報として出力してもよい。たとえば、CADデータに記載のワークWの配置位置および配置方向を基準として、検出されたワークWの位置変位量および回転変位量とを出力するようにしてもよい。このような変位出力のデータ形式としては、位置変位量を示す(x,y,z)が出力されるとともに、回転変位量を示す(α,β,γ)が出力される。
【0106】
もちろん、上述したようなデータ出力の形態に限定されることなく、出力先の使用用途に応じた形式でデータを出力すればよい。
【0107】
《J.計測例》
図13は、本発明の実施の形態に係る画像処理によって生成された認識結果の一例を示す図である。図13に示す認識結果は、複数のワークW(図4に示すような多数のボルト)がバラ積みされている状態を撮像した入力画像から得られたものである。なお、図13に示す線は、上述した処理によって算出されたワークWの軸部分の位置および方向を示し、その周辺に描かれている円は、検出された頭部分の位置や方向などを示す。
【0108】
このように、本実施の形態に係る画像処理方法によれば、比較的短時間で、任意の方向に配置されているワークWの位置およびその中心軸を決定することができる。ワークWの頭部分の位置および軸部分の方向をより短時間で算出できる。
【0109】
《K.変形例》
上述の説明では、各ワークWについて、算出された頭部分の位置および頭部分の方向などをそのまま出力するような形態について説明したが、いずれの一方の情報のみを出力するようにしてもよい。あるいは、これらの情報にさらに別の情報を付加した出力してもよい。
【0110】
《L.利点》
本実施の形態に係る画像処理装置によれば、二次元画像に対する画像処理と、同一のワークWに対する三次元座標計測処理とを組合せることで、第1の径を有する軸部分と、軸部分の一端に設けられた第1の径より大きな第2の径を有する頭部分とを含むワークWについて、その頭部分の位置およびその軸部分の方向をより高速に算出することができる。
【0111】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0112】
7 プロジェクタ
8 撮像装置
100 画像処理装置
102 ディスプレイ
104 マウス
106 メモリカード
110 CPU
112 メインメモリ
114 ハードディスク
116 カメラインターフェイス
116a 画像バッファ
118 入力インターフェイス
120 表示コントローラ
122 プロジェクタインターフェイス
124 通信インターフェイス
126 データリーダ/ライタ
128 バス
200 ロボットコントローラ
300 ロボット
SYS 把持システム
W ワーク
【特許請求の範囲】
【請求項1】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出する方法であって、
少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出するステップと、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出するステップと、
前記軸領域および前記候補位置についての高さ情報を取得するステップと、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出するステップとを備える、方法。
【請求項2】
前記入力画像は、前記少なくとも1つの前記検出対象物に対して予め定められた距離だけ離れた位置に配置された撮像装置を用いて撮像することで取得され、
前記頭部分に相当する位置を前記候補位置から抽出するステップは、前記軸領域に比較して前記撮像装置の側に位置する前記候補位置を前記頭部分に相当する位置として抽出するステップを含む、請求項1に記載の方法。
【請求項3】
前記候補位置を抽出するステップでは、前記入力画像内において隣接する領域に比較して、相対的に明るい位置が前記頭部分の候補位置として抽出される、請求項2に記載の方法。
【請求項4】
前記候補位置を抽出するステップでは、さらに、前記相対的に明るい位置のうち、前記軸領域の両端から予め定められた範囲内に存在するものが前記頭部分の候補位置として抽出される、請求項3に記載の方法。
【請求項5】
前記候補位置を抽出するステップでは、前記入力画像についてのヘッシアンの値から前記候補位置を抽出する、請求項3に記載の方法。
【請求項6】
前記軸領域の高さ情報から対応する検出対象物の軸部分の方向を決定するステップをさらに備える、請求項3に記載の方法。
【請求項7】
前記軸領域と対応して抽出された少なくとも1つ前記候補位置との組の各々について、前記頭部分の位置および前記軸部分を関連付けて出力するステップをさらに備える、請求項3に記載の方法。
【請求項8】
前記入力画像を取得するステップは、前記少なくとも1つの検出対象物に対して照明光を照射しない状態で前記撮像装置により取得された第1の画像と、前記少なくとも1つの検出対象物に対して照明光を照射した状態で前記撮像装置により取得された第2の画像との差分から前記入力画像を生成するステップを含む、請求項3に記載の方法。
【請求項9】
前記高さ情報を取得するステップは、前記少なくとも1つの検出対象物に対して、複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記高さ情報を取得する、請求項3に記載の方法。
【請求項10】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出する装置であって、
撮像装置と接続され、少なくとも1つの前記検出対象物を撮像した入力画像を取得するインターフェイスと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出する手段と、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出する手段と、
前記軸領域および前記候補位置についての高さ情報を取得する手段と、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出する手段とを備える、方法。
【請求項11】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出するためのプログラムであって、当該プログラムは、コンピュータに、
少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出するステップと、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出するステップと、
前記軸領域および前記候補位置についての高さ情報を取得するステップと、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出するステップとを実行させる、プログラム。
【請求項1】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出する方法であって、
少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出するステップと、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出するステップと、
前記軸領域および前記候補位置についての高さ情報を取得するステップと、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出するステップとを備える、方法。
【請求項2】
前記入力画像は、前記少なくとも1つの前記検出対象物に対して予め定められた距離だけ離れた位置に配置された撮像装置を用いて撮像することで取得され、
前記頭部分に相当する位置を前記候補位置から抽出するステップは、前記軸領域に比較して前記撮像装置の側に位置する前記候補位置を前記頭部分に相当する位置として抽出するステップを含む、請求項1に記載の方法。
【請求項3】
前記候補位置を抽出するステップでは、前記入力画像内において隣接する領域に比較して、相対的に明るい位置が前記頭部分の候補位置として抽出される、請求項2に記載の方法。
【請求項4】
前記候補位置を抽出するステップでは、さらに、前記相対的に明るい位置のうち、前記軸領域の両端から予め定められた範囲内に存在するものが前記頭部分の候補位置として抽出される、請求項3に記載の方法。
【請求項5】
前記候補位置を抽出するステップでは、前記入力画像についてのヘッシアンの値から前記候補位置を抽出する、請求項3に記載の方法。
【請求項6】
前記軸領域の高さ情報から対応する検出対象物の軸部分の方向を決定するステップをさらに備える、請求項3に記載の方法。
【請求項7】
前記軸領域と対応して抽出された少なくとも1つ前記候補位置との組の各々について、前記頭部分の位置および前記軸部分を関連付けて出力するステップをさらに備える、請求項3に記載の方法。
【請求項8】
前記入力画像を取得するステップは、前記少なくとも1つの検出対象物に対して照明光を照射しない状態で前記撮像装置により取得された第1の画像と、前記少なくとも1つの検出対象物に対して照明光を照射した状態で前記撮像装置により取得された第2の画像との差分から前記入力画像を生成するステップを含む、請求項3に記載の方法。
【請求項9】
前記高さ情報を取得するステップは、前記少なくとも1つの検出対象物に対して、複数の異なる濃淡パターンを照射するとともに、それぞれの照射時に前記撮像装置によりそれぞれ撮像された複数の画像を用いて、前記高さ情報を取得する、請求項3に記載の方法。
【請求項10】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出する装置であって、
撮像装置と接続され、少なくとも1つの前記検出対象物を撮像した入力画像を取得するインターフェイスと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出する手段と、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出する手段と、
前記軸領域および前記候補位置についての高さ情報を取得する手段と、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出する手段とを備える、方法。
【請求項11】
第1の径を有する軸部分と、前記軸部分の一端に設けられた前記第1の径より大きな第2の径を有する頭部分とを含む検出対象物について、前記頭部分の位置および前記軸部分の方向を算出するためのプログラムであって、当該プログラムは、コンピュータに、
少なくとも1つの前記検出対象物を撮像した入力画像を取得するステップと、
前記入力画像から、前記軸部分に相当する領域を軸領域として抽出するステップと、
前記入力画像内の明るさの変化から前記頭部分の候補位置を抽出するステップと、
前記軸領域および前記候補位置についての高さ情報を取得するステップと、
前記軸領域との間の相対的な位置関係から、前記軸領域に対応する検出対象物の前記頭部分に相当する位置を前記候補位置から抽出するステップとを実行させる、プログラム。
【図1】
【図2】
【図3】
【図8】
【図11】
【図12】
【図13】
【図4】
【図5】
【図6】
【図7】
【図9】
【図10】
【図2】
【図3】
【図8】
【図11】
【図12】
【図13】
【図4】
【図5】
【図6】
【図7】
【図9】
【図10】
【公開番号】特開2012−242282(P2012−242282A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−113616(P2011−113616)
【出願日】平成23年5月20日(2011.5.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FLASH
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願日】平成23年5月20日(2011.5.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FLASH
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】
[ Back to top ]