(57)【特許請求の範囲】
【請求項１】
複数の物体から一物体を検出する処理装置と、
検出された前記一物体を操作するロボットと、を含み、
前記処理装置は、
撮像装置により撮像された前記複数の物体の画像を含む画像データを表示する表示部と、
前記画像データから第１画像と第２画像とを選択する選択部と、
前記第１画像と前記第２画像とに基づいてモデルを生成し、生成した前記モデルを用いて前記一物体を検出する処理部と、
を含み、
前記処理部は、
前記第１画像、前記第２画像、及び前記画像データのそれぞれについて細分化した領域毎の特徴を抽出する特徴抽出部と、
前記第１画像の特徴と前記第２画像の特徴のいずれかである画像特徴と、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域とを含むモデルを生成するモデル統合部と、
前記画像特徴から前記マスク領域を除外した領域と、前記画像データの特徴とをマッチングするマッチング部と、
を含む、
ロボットシステム。
【請求項２】
前記特徴抽出部は、前記第１画像、前記第２画像、及び前記画像データのそれぞれについてエッジを抽出する請求項１に記載のロボットシステム。
【請求項３】
前記モデル統合部は、前記第１画像の特徴と前記第２画像の特徴との位置ならびに姿勢の関係を対応付け、前記マスク領域を定める請求項１又は請求項２に記載のロボットシステム。
【請求項４】
前記モデル統合部は、前記第１画像の特徴と前記第２画像の特徴の少なくともいずれかについて膨張処理を行い、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域を定める請求項１から請求項３のいずれか一項に記載のロボットシステム。
【請求項５】
前記マッチング部は、前記画像特徴から前記マスク領域を除外した領域について位置ならびに向きを変化させた領域と、前記画像データの特徴との一致の度合いを示すスコアを前記位置ならびに向きの変化量毎に算出し、前記スコアに基づいて前記一物体の位置ならびに向きを検出する請求項１から請求項４のいずれか一項に記載のロボットシステム。
【請求項６】
前記処理装置は、
前記マッチング部が算出したスコアに基づいて前記一物体を検出したか否かを判定する検出部、
を備える請求項５に記載のロボットシステム。
【請求項７】
ロボットにより操作する一物体を複数の物体から検出する処理装置であって、
撮像装置により撮像された前記複数の物体の画像を含む画像データを表示する表示部と、
前記画像データから第１画像と第２画像とを選択する選択部と、
前記第１画像と前記第２画像とに基づいてモデルを生成し、生成した前記モデルを用いて前記一物体を検出する処理部と、
を含み、
前記処理部は、
前記第１画像、前記第２画像、及び前記画像データのそれぞれについて細分化した領域毎の特徴を抽出する特徴抽出部と、
前記第１画像の特徴と前記第２画像の特徴のいずれかである画像特徴と、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域とを含むモデルを生成するモデル統合部と、
前記画像特徴から前記マスク領域を除外した領域と、前記画像データの特徴とをマッチングするマッチング部と、
を含む、
処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステム及び処理装置に関する。
【背景技術】
【０００２】
従来から、ロボットがピックアップしたワーク（対象物）を所定の位置・姿勢に整列させるロボットシステムが開発されてきた。このロボットシステムでは、対象物をピックアップする際、対象物の形状と予め登録したモデルが示す目標物の形状との間でパターンマッチング処理を行うことにより、対象物を検出する。
例えば、特許文献１に記載の画像処理装置は、予め登録された登録画像に対応するパターンモデルを用いて、サーチ対象画像中から該登録画像に類似するサーチ対象物をサーチして位置決めを行う。また、モデルの生成において、予め複数の対象物を撮像して撮像画像を取得しておき、複数のうちの任意の１つの対象物の画像を選択していた。選択した１つの対象物の画像がモデルとして、パターンマッチング処理に用いられることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−９７４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、次の原因（１）〜（４）により、生成したモデルに係る目標物の形状と作業対象の対象物の形状とのパターンマッチング処理が成功しないことがあった。
（１）影の映り方の変化：  立体形状を有する物体に光が当たると、物体によって光が遮蔽される部分である影が、その物体の周辺に生じる。そのため、影の映り方は、光源（例えば、照明、環境光、等）の変化、光源と物体との位置・姿勢関係の変化に応じて変化する。光源が変化しない場合であっても、撮影装置の視野内に置かれた物体の位置・姿勢の変化に応じて影の映り方が変化する。
（２）立体形状を有する物体の姿勢の変化：  撮影装置の視野内に置かれた物体は、立体形状を有するため、その姿勢に応じて平面的形状が異なる。また、物体の姿勢が同一であっても、視野内の位置の違いにより、見かけの輪郭の形状が異なる。特に、広角レンズを備える撮影装置では、光軸上に置かれた物体と、視野の周辺部に置かれた同一の立体形状を有する物体との間で、その形状の差異が明確に表れる。
（３）物体のテクスチャの変化、物体表面の反射によるテクスチャの変化：  物体の表面に表されたテクスチャ（模様）は、その部位に応じて撮像装置の視野内の位置が異なるため見かけ上変化する。また、光沢を有する物体では、到来した光が反射するために、光量や到来方向によっても模様が見かけ上変化する。また、例えば、食品の包装に付された賞味期限の印字のように、同一の形状や大きさを有する物体であっても、その見かけが個々に異なる部分を有する場合もある。
（４）周辺の物体の存在：  パターンマッチング処理では、モデルとして目標物を表す画像を登録する。その際、登録した領域（ウィンドウ）に目標物以外の別個の物体の画像が含まれることがある。
【０００５】
そこで、本発明は、上記の問題に鑑みてなされたものであり、対象物を確実に検出することができるロボットシステム及び処理装置を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様は、複数の物体から一物体を検出する処理装置と、検出された前記一物体を操作するロボットとを含み、前記処理装置は、撮像装置により撮像された前記複数の物体の画像を含む画像データを表示する表示部と、前記画像データから第１画像と第２画像とを選択する選択部と、前記第１画像と前記第２画像とに基づいてモデルを生成し、生成した前記モデルを用いて前記一物体を検出する処理部とを含む、ロボットシステムである。
この構成によれば、第１画像と撮像条件が異なる第２画像とに基づいて生成されたモデルを用いて物体が検出される。そのため、撮像条件の差異による見かけの変化が生じる状況でも、確実に検出対象の物体を検出することができる。
【０００７】
本発明の他の態様は、上述したロボットシステムであって、前記処理部は、前記第１画像、前記第２画像、及び画像データのそれぞれについて細分化した領域毎の特徴を抽出する特徴抽出部と、前記第１画像の特徴と前記第２画像の特徴のいずれかである画像特徴と、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域とを含むモデルを生成するモデル統合部と、前記画像特徴から前記マスク領域を除外した領域と、前記画像データの特徴とをマッチングするマッチング部とを含んでもよい。
この構成によれば、第１画像と第２画像との間で特徴が異なる領域が除外されることで、撮像条件の差異により特徴が変化しない領域間でマッチングがなされる。そのため、確実に検出対象の物体を検出することができる。
【０００８】
本発明の他の態様は、上述したロボットシステムであって、前記特徴抽出部は、前記第１画像、前記第２画像、及び前記画像データのそれぞれについてエッジを抽出してもよい。
この構成によれば、画像の特徴として物体の輪郭や模様を表すエッジに基づいてマッチングがなされるので、検出対象の物体の位置や方向を効率よく検出することができる。
【０００９】
本発明の他の態様は、上述したロボットシステムであって、前記モデル統合部は、前記第１画像の特徴と前記第２画像の特徴との位置ならびに姿勢の関係を対応付け、前記マスク領域を定めてもよい。
この構成によれば、第１画像と第２画像との間で位置もしくは姿勢の関係が一致しない場合でも、第１画像と第２画像との間で対応する領域間で特徴が異なるマスク領域を定めることができる。
【００１０】
本発明の他の態様は、上述したロボットシステムであって、前記モデル統合部は、前記第１画像の特徴と前記第２画像の特徴の少なくともいずれかについて膨張処理を行い、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域を定めてもよい。
この構成によれば、第１画像と第２画像との撮像条件の差異により位置関係がわずかに異なる場合でも、対応する領域間での特徴を比較することができるため、確実に検出対象の物体を検出することができる。
【００１１】
本発明の他の態様は、上述したロボットシステムであって、前記マッチング部は、前記画像特徴から前記マスク領域を除外した領域について位置ならびに向きを変化させた領域と、前記画像データの特徴との一致の度合いを示すスコアを前記位置ならびに向きの変化量毎に算出し、前記スコアに基づいて前記一物体の位置ならびに向きを検出してもよい。
この構成によれば、画像データにおいて、画像特徴からマスク領域を除外した領域に対応する領域を定量的に特定することにより、画像特徴が表す物体と、その位置ならびに向きを検出することができる。
【００１２】
本発明の他の態様は、上述したロボットシステムであって、前記処理装置は、前記マッチング部が算出したスコアに基づいて前記一物体を検出したか否かを判定する検出部、を備えてもよい。
この構成によれば、画像データの特徴と、画像特徴からマスク領域を除外した領域の一致の度合いに基づいて、画像特徴に係る物体の検出の成否を定量的に判定することができる。
本発明の他の態様は、ロボットにより操作する一物体を複数の物体から検出する処理装置であって、撮像装置により撮像された前記複数の物体の画像を含む画像データを表示する表示部と、前記画像データから第１画像と第２画像とを選択する選択部と、前記第１画像と前記第２画像とに基づいてモデルを生成し、生成した前記モデルを用いて前記一物体を検出する処理部と、を含み、前記処理部は、前記第１画像、前記第２画像、及び前記画像データのそれぞれについて細分化した領域毎の特徴を抽出する特徴抽出部と、前記第１画像の特徴と前記第２画像の特徴のいずれかである画像特徴と、前記第１画像の特徴と前記第２画像の特徴とが異なるマスク領域とを含むモデルを生成するモデル統合部と、前記画像特徴から前記マスク領域を除外した領域と、前記画像データの特徴とをマッチングするマッチング部と、を含む、処理装置である。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るロボットシステムの概略斜視図である。
【図２】本実施形態に係る画像処理装置の構成を示す概略ブロック図である。
【図３】本実施形態に係る表示部に表示される操作画面の例を示す図である。
【図４】本実施形態に係るモデル統合部の機能を示す概念図である。
【図５】モデルデータの構成例を示す図である。
【図６】本実施形態に係るモデル統合処理を示す概念図である。
【図７】本実施形態に係るマスク生成処理を示す概念図である。
【図８】モデルデータの例を示す図である。
【図９】本実施形態に係るモデル生成処理を示すフローチャートである。
【図１０】本実施形態に係る物体検出処理を示すフローチャートである。
【図１１】マッチングスコアの例を示す表である。
【発明を実施するための形態】
【００１４】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して詳細に説明する。
図１は、本実施形態に係るロボットシステム１の概略斜視図である。
図１に示すように、ロボットシステム１は、撮像装置１０、画像処理装置２１、ロボット制御装置２３、及びロボット３０を含んで構成される。なお、図１における部品や構造等の縮尺は、図を明瞭なものとするために実際のものとは異なっていることがある。
【００１５】
撮像装置１０と画像処理装置２１、画像処理装置２１とロボット制御装置２３、ロボット制御装置２３とロボット３０は、それぞれ通信可能に有線又は無線で接続されている。有線での通信では、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．３等の通信規格が用いられてもよい。無線での通信では、例えば、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ、ＩＥＥＥ８０２．１５．１等に規定された通信規格が用いられてもよい。
【００１６】
撮像装置１０は、その視野内に配置された物体の画像を撮像し、撮像した画像を示す画像データを生成する。撮像装置１０は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）等を備えたカメラである。また、撮像装置１０は、生成した画像データを画像処理装置２１に実時間で転送するためのインターフェイスを有するネットワークカメラであってもよい。
【００１７】
図１に示す例では、撮像装置１０の撮像方向は鉛直方向（Ｚ方向）に向けられ、作業台Ｔｂ上に載置された３個の物体Ｗｋ１〜Ｗｋ３を被写体とした画像が撮像される。作業台Ｔｂの表面は、水平面に対して平行である。物体Ｗｋ１〜Ｗｋ３は、互いに重ならないように異なる位置に配置されるため、撮像装置１０との相対的な位置関係が異なる。物体Ｗｋ１〜３は、マッチングの目標となる目標物にも、作業対象となる対象物にもなりうる。
Ｘ方向、Ｙ方向、Ｚ方向は、三次元直交座標系を形成する互いに直交する三次元の方向である。図１では、Ｘ方向、Ｙ方向、Ｚ方向は、それぞれ左方、奥行方向、下方に示されている。
【００１８】
画像処理装置２１は、撮像装置１０から入力された画像データが示す複数の物体の画像を表示し、ユーザーの操作入力に応じて複数の物体の画像のうち第１画像と第２画像を選択する。図１に示す例では、画像処理装置２１には、作業台Ｔｂ上に載置された３つの物体Ｗｋ１〜Ｗｋ３を視野内に含む画像を示す画像データが撮像装置１０から入力され、入力された画像データに基づいて３つの物体Ｗｋ１〜Ｗｋ３を示す画像を表示する。画像処理装置２１は、操作入力に基づいて物体Ｗｋ１〜Ｗｋ３のうち、２つを表す領域を、それぞれ第１画像、第２画像として選択する。物体Ｗｋ１〜Ｗｋ３は、互いに形状、大きさ及び種類が共通であるが、撮像条件として撮像装置１０との位置関係が異なる。物体Ｗｋ１〜Ｗｋ３は、例えば、各種の組立て部品、ネジ、釘、ボルト、ナット、等、ロボット３０により操作可能な物体である。
【００１９】
画像処理装置２１は、選択した第１画像と前記第２画像とに基づいてモデルを生成し、生成したモデルを用いて一物体を検出する。モデルとは、検出目標である目標物に関する情報である。以下の説明では、モデルを示すデータをモデルデータと呼ぶことがある。モデルデータは、目標物を表す画像の画像データと、マスクデータとを含む。マスクデータは、目標物を表す画像のうち、マッチング処理において考慮しない領域（マスク）を示すデータである。モデルを生成する際に行われるモデル生成処理については後述する。
【００２０】
また、画像処理装置２１が一物体を検出する際には、取得した画像データについてモデルデータとマッチング処理を行う。画像処理装置２１は、検出した一物体に関する検出情報をロボット制御装置２３に出力する。検出情報には、例えば、検出された物体の位置、姿勢を示す情報が含まれる。一物体を検出する際に行われる物体検出処理については後述する。なお、一物体の検出においては、モデルの生成に用いた画像データとは別個の画像データが用いられてもよい。
【００２１】
ロボット制御装置２３には、画像処理装置２１から検出情報が入力され、ロボット３０で検出された力やモーメントの大きさを示す負荷信号が入力される。ロボット制御装置２３は、検出情報と負荷信号の一方又は両方に基づいてロボット３０の動作を制御する制御信号を生成する。ロボット制御装置２３は、生成した制御信号をロボット３０に出力する。ロボット制御装置２３は、例えば、作業台Ｔｂに載置された３つの物体Ｗｋ１〜Ｗｋ３のうち、画像処理装置２１で検出された物体をロボット３０に操作させる。
【００２２】
ロボット３０は、６軸の垂直多関節ロボットであり、支持台３０ａ、アーム部３０ｂ、及びハンド部３０ｃを含んで構成される。ロボット３０は、支持台３０ａとアーム部３０ｂとハンド部３０ｃとの連係した動作によって６軸の自由度を有し、ハンド部３０ｃが把持する物体Ｗｋの位置および姿勢を自在に変更することができる。また、ロボット３０は、ロボット制御装置２３から入力された制御信号に基づいて、アーム部３０ｂとハンド部３０ｃのいずれか又はそれらの組み合わせを動作させる。ハンド部３０ｃは、２個の先端部を備え、２個の先端部は各々の長手方向が互いに向かい合うように配置される。これにより、ロボット３０は、画像処理装置２１で検出された物体を把持して、その位置や姿勢を操作することができる。
【００２３】
ロボット３０は、ハンド部３０ｃに加わる力とモーメントを、予め定めた時間間隔（例えば、１ｍｓ）で検出する力センサー（図示せず）を備え、検出した力及びモーメントを示す負荷信号をロボット制御装置２３に出力する。ロボット３０は、エンコーダー（図示せず）を備える。エンコーダーは、ロボット３０の各関節の角度を検出し、検出した各関節の角度をロボット制御装置２３に出力する。
なお、ロボット３０の自由度は６軸に限られず、７軸以上、又は５軸以下であってもよい。また、支持台３０ａは、壁や天井等、床面に対して固定された場所に設置されてもよい。
また、図１では、撮像装置１０が、支持台３０ａが取り付けられている空間に固定されている場合を例にしたが、撮像装置１０は、ロボット３０のアーム部３０ｂ、その他の可動部に取り付けられていてもよい。
【００２４】
次に、画像処理装置２１の構成について説明する。
図２は、本実施形態に係る画像処理装置２１の構成を示す概略ブロック図である。
画像処理装置２１は、画像データ取得部２１１、操作入力部２１２、表示部２１３、データ入出力部２１４、データ記憶部２１５、及び制御部２２を含んで構成される。画像データ取得部２１１、操作入力部２１２、表示部２１３、データ入出力部２１４、データ記憶部２１５、及び制御部２２は、互いにデータを入出力できるようにバス（基線）Ｂにより接続されている。
【００２５】
画像データ取得部２１１は、撮像装置１０から入力された画像データを取得し、取得した画像データをデータ記憶部２１５に記憶する。画像データ取得部２１１は、例えば、データ入出力インターフェイスを含んで構成される。
【００２６】
操作入力部２１２は、ユーザーによる操作入力を受け付け、受け付けた操作入力に応じた指示を示す指示信号を生成する。操作入力部２１２は、生成した指示信号を制御部２２に出力する。指示信号には、例えば、表示部２１３に表示された画像の一部の領域を指示する領域信号、各種のパラメータやデータの設定を指示する設定信号、モデル画像データ（後述）の生成を指示するモデル画像生成指示信号、物体検出処理（後述）の開始を指示する物体検出処理開始信号がある。
操作入力部２１２は、例えば、キーボード、マウス、タッチセンサ、その他の入力デバイスを含んで構成されてもよい。但し、これらの入力デバイスは、画像処理装置２１に内蔵されるものに代えて、データ入出力インターフェイス等によって接続された外付け型のものでもよい。
【００２７】
表示部２１３は、制御部２２によりデータ記憶部２１５から読み出された操作画面データに基づく操作画面を表示する。操作画面は、ユーザーが画像処理装置２１やロボット制御装置２３を操作するために用いられる画面である。操作画面には、選択部２２１（後述）から入力された画像データが示す画像をはじめとする各種の画像や、ユーザーが各種の指示を行うための画面部品（ボタン、アイコン、テキストボックス、等）が含まれる。後述するように、表示部２１３は、データ記憶部２１５から読み出された画像データが示す複数の物体の画像を表示する。これにより、ユーザーは、複数の物体の画像のうち少なくとも２つの物体を示す領域を、操作入力部２１２を介して指示することができる。操作画面の例については後述する。
なお、表示部２１３は、例えば、液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）を含んで構成される。表示部２１３は、操作入力部２１２のタッチセンサと一体化したタッチパネルであってもよい。
【００２８】
データ入出力部２１４は、制御部２２から入力された物体検出データをロボット制御装置２３に出力する。物体検出データは、物体検出処理（後述）により生成されるデータである。データ入出力部２１４は、例えば、データ入出力インターフェイスを含んで構成される。
【００２９】
データ記憶部２１５は、画像処理装置２１の処理に係る各種データ、プログラム等を記憶する。データ記憶部２１５は、例えば、ＨＤＤ（Ｈａｒｄ−Ｄｉｓｋ  Ｄｒｉｖｅ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶媒体を含んで構成される。なお、データ記憶部２１５は、画像処理装置２１に内蔵されるものに代えて、データ入出力インターフェイス等によって接続された外付け型の記憶装置でもよい。
【００３０】
制御部２２は、所定のプログラムを動作させることにより画像処理装置２１の機能を発揮させる。制御部２２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の制御装置を含んで構成される。制御部２２は、予め記憶されたプログラムをデータ記憶部２１５から読み出し、読み出したプログラムを動作させることにより、処理部２２０及び選択部２２１として機能する。また、処理部２２０は、特徴抽出部２２２、モデル統合部２２３、マッチング部２２４、及び検出情報取得部２２５を含む。
なお、制御部２２は、プログラムの動作開始時に操作画面データをデータ記憶部２１５から読み出し、読み出した操作画面データを表示部２１３に出力する。
【００３１】
選択部２２１は、操作入力部２１２から入力された領域信号が示す領域を、表示部２１３に表示させている画像上で特定する。選択部２２１は、操作入力部２１２からのモデル画像生成指示信号の入力に応じて、表示部２１３に表示されている画像に係る画像データから、特定した領域内の画像を表す画像データを抽出する。これにより、表示されている複数の物体のいずれか１つの物体が表されている領域が選択される。
なお、以下の説明では、抽出された画像データをモデル画像データ、モデル画像データが表す画像をモデル画像と呼ぶ。
【００３２】
選択部２２１は、再度の画像生成指示信号の入力に応じて、モデル画像データを抽出する処理を繰り返し、少なくとも２つのモデル画像データを生成する。これにより、少なくとも２つの互いに異なる物体の画像が選択される。選択部２２１は、生成したモデル画像データをデータ記憶部２１５に記憶する。
なお、以下の説明では、生成されたモデル画像データのうち１つをベースモデル画像データと呼び、その他のモデル画像データを追加モデル画像データと呼ぶ。ベースモデル画像データは、モデル統合処理（後述）において基礎となるモデル画像データである。追加モデル画像データは、モデル統合処理（後述）において、統合の対象となるモデル画像データである。ベースモデル画像データを抽出した元の画像データと、追加モデル画像データを抽出した元の画像データとは同一であってもよいし、異なっていてもよい。ベースモデル画像データを抽出した元の画像データと、追加モデル画像データを抽出した元の画像データとが異なる場合であっても、ベースモデル画像データが表す物体と、追加モデル画像データが表す物体とは、少なくとも位置と姿勢のいずれかが異なり、同一の形状及び大きさを有していればよい。
【００３３】
特徴抽出部２２２は、モデル生成処理（後述）において新たに記憶されたモデル画像データをデータ記憶部２１５から読み出す。特徴抽出部２２２は、読み出したモデル画像データが表す画像を細分化した小領域毎の特徴、例えば、エッジを抽出する。エッジとは、輝度や色彩が空間的に急激に変化する部分であり、物体の輪郭や物体表面の模様を形成する図形の境界を表す。言い換えれば、エッジは、物体の形状や表面の状態の特徴を表す情報であり、物体の位置や姿勢、光線の照射状況等の撮像条件の差異によって異なる。
【００３４】
エッジ抽出処理において、特徴抽出部２２２は、例えば、水平方向、垂直方向のそれぞれについてゾーベルフィルター（Ｓｏｂｅｌ  ｆｉｌｔｅｒ）を用いて、画素毎に方向別エッジ強度を算出する。エッジ強度は、輝度値の空間的な変化の度合いを示す値である。特徴抽出部２２２は、水平方向、垂直方向それぞれの方向別エッジ強度について画素毎に平方和の平方根を算出し、算出した値を方向間で統合したエッジ強度と定める。特徴抽出部２２２は、定めたエッジ強度が予め定めたエッジ強度の閾値よりも大きい画素をエッジ画素と定め、エッジ画素から形成されるエッジを示すエッジマップを生成する。
【００３５】
特徴抽出部２２２は、生成したエッジマップを、そのエッジマップの生成に用いられたモデル画像データと対応付けて、モデルデータとしてデータ記憶部２１５に記憶する。なお、モデル画像データとしてベースモデル画像データを含むモデルデータをベースモデルデータと呼び、モデル画像データとして追加モデル画像データを含むモデルデータを追加モデルデータと呼ぶ。
【００３６】
特徴抽出部２２２は、ランタイムにおいて、撮像装置１０から画像データ取得部２１１を介して入力され、データ記憶部２１５に逐次に記憶される画像データを読み取る。ランタイムは、制御部２２に操作入力部２１２から物体検出処理開始信号が入力されたことに応じて開始される。以下の説明では、読み取った画像データを対象画像データと呼んで、モデル画像データと区別する。対象画像データは、モデル画像データを抽出した元の画像データと別個であってもよいし、同一であってもよい。
特徴抽出部２２２は、対象画像データについても上述したエッジ抽出処理を行い、エッジマップを生成する。特徴抽出部２２２は、生成したエッジマップをデータ記憶部２１５に記憶する。
【００３７】
モデル統合部２２３は、データ記憶部２１５からベースモデルデータと追加モデルデータとを読み取り、読み取ったベースモデルデータと追加モデルデータについてモデル統合処理を行って統合モデルデータを生成する。モデル統合処理において、モデル統合部２２３は、ベースモデルデータに含まれるエッジマップが示すエッジと、追加モデルデータに含まれるエッジマップが示すエッジとが異なる領域をマスクとして抽出する。モデル統合
部２２３は、抽出したマスクを示すマスクデータを生成し、生成したマスクデータをベースモデルデータに追加して統合モデルデータを生成する。
【００３８】
また、追加モデルデータが複数個ある場合には、モデル統合部２２３は、１つの追加モデルデータについて生成した統合モデルデータをベースモデルデータとして、他の１つの追加モデルデータとの間で統合モデルデータを生成する。この場合、モデル統合部２２３は、新たに抽出したマスクを、既存のマスクデータが示すマスクに追加し、追加されたマスクを示すマスクデータを生成する。モデル統合部２２３は、既存のマスクデータを新たに生成したマスクデータに更新することにより統合モデルデータを形成する。
モデル統合部２２３は、生成した統合モデルデータをデータ記憶部２１５に記憶する。
【００３９】
マッチング部２２４は、ランタイムにおいて、データ記憶部２１５に新たに記憶された対象画像データに係るエッジマップと、予め記憶された統合モデルデータとを読み取る。以下の説明では、新たに記憶されたエッジマップを対象エッジマップと呼ぶことにより、統合モデルデータに含まれるエッジマップと区別する。マッチング部２２４は、統合モデルデータからエッジマップとマスクデータとを抽出し、抽出したエッジマップが示すエッジからマスクデータが示すマスクの部分を除外し、除外されずに残ったエッジを特定する。残ったエッジを、参照エッジと呼ぶ。マッチング部２２４は、対象エッジマップが示すエッジと、参照エッジとの間でマッチング処理を行う。
【００４０】
マッチング処理において、マッチング部２２４は、参照エッジと、対象エッジマップが示すエッジとが対応するサーチ条件を探索（サーチ）する。サーチ条件は、対象エッジマップ上の参照エッジの位置、参照エッジの向き、及び参照エッジの倍率を含むセットである。参照エッジの倍率とは、元の参照エッジの大きさに対する拡大または縮小した参照エッジの大きさの比である。マッチング部２２４は、異なるサーチ条件のそれぞれについて、対象エッジマップが示すエッジとの間でマッチングスコアを算出し、マッチングスコアがサーチ条件の変化に応じて極大となるサーチ条件を求める。マッチング部２２４は、求めたサーチ条件（位置、向き、倍率）と、そのサーチ条件で算出されたマッチングスコアを示すマッチング情報を検出情報取得部２２５に出力する。
【００４１】
マッチングスコアは、２つのエッジが一致する度合いを示す指標である。マッチング部２２４は、特許文献１に記載のスコアをマッチングスコアとして用いてもよい。例えば、マッチング部２２４は、対象エッジマップが示すエッジ画素におけるエッジ角度ビットと、参照エッジに含まれるエッジ画素におけるエッジ角度ビットとの一致度を画素間で積算して得られた総和を、基点数で除算して得られる値をマッチングスコアとして用いてもよい。エッジ角度ビットとは、エッジ方向を所定の量子化幅（例えば、１８°）で量子化した値である。一致度は、比較対象の２つの値が近似するほど大きい実数であり、２つの値が等しい場合に最大値１をとる。基点数とは、参照エッジを形成するエッジ画素の数である。
また、マッチング部２２４は、対象エッジマップが示すエッジ画素と、参照エッジに含まれるエッジ画素とが対応する画素数を、基点数で除算して得られる値をマッチングスコアとして用いてもよい。
【００４２】
検出情報取得部２２５は、マッチング部２２４から入力されたマッチング情報に基づいて、画像データから目標物と同じ種類の対象物の検出に成功したか否かを判定する。検出情報取得部２２５は、マッチング情報が示すマッチングスコアが予め定めたマッチングスコアの閾値（スコア許容値、アクセプト値とも呼ばれる）以上である場合、画像データから目標物と同じ種類の対象物の検出に成功したと判定する。検出に成功したと判定した場合には、検出情報取得部２２５は、マッチング情報が示す位置、向きを、カメラ座標系からロボット座標系に座標変換する。カメラ座標系は、撮像装置１０の光学系を基準とする座標系であり、ロボット座標系は、ロボット３０を基準とする座標系である。従って、変換した位置、向きは、それぞれ撮影された画像が示す対象物の位置、向きを示す。検出情報取得部２２５は、変換した位置、向きと、検出の成功とを示す検出情報を生成する。
【００４３】
検出情報取得部２２５は、マッチング情報が示すマッチングスコアが予め定めたスコア許容値よりも小さい場合、検出に失敗したと判定する。検出情報取得部２２５は、検出の失敗を示す検出情報を生成する。
検出情報取得部２２５は、生成した検出情報を、データ入出力部２１４を介してロボット制御装置２３に出力する。
【００４４】
次に、操作画面の例について説明する。
図３は、本実施形態に係る表示部２１３に表示される操作画面の例を示す図である。
図３に示す操作画面には、アイコンｉｃ１、ｉｃ２、テキストボックスｔｂ１、ｔｂ２、ボタンｂｔ１、ｂｔ２、及び表示画像ｉｍ１が含まれている。
【００４５】
アイコンｉｃ１は、カメラを図案化した図形であり、操作画面の左上のメニューバーの左端に表示されている。アイコンｉｃ１の表示領域がユーザーの操作入力により指定（以下、押下と呼ぶ）されると、制御部２２は、撮像装置１０から入力された画像データをデータ記憶部２１５から読み出し、読み出した画像データに基づく画像をこの操作画面内に表示させる。表示画像ｉｍ１は、制御部２２が表示させた画像の例である。
【００４６】
アイコンｉｃ２は、右下端が太く表された四角形であり、メニューバーの直下の左端に表示されている。アイコンｉｃ２が押下されると、制御部２２は、表示画像の所定の位置にウィンドウを表示させる。表示画像ｉｍ１のほぼ中央に表示されたウィンドウＷｄは、制御部２２が表示させたウィンドウの例である。ウィンドウＷｄは、長方形の枠とその中心の＋印とで形成される。＋印の位置により、表示画像ｉｍ１上のウィンドウＷｄの代表位置が指定され、枠の大きさにより、その範囲が指定される。また、表示画像ｉｍ１上のウィンドウＷｄの位置、水平方向ならびに垂直方向の大きさは、ユーザーの操作入力に応じて可変である。ユーザーは、表示画像ｉｍ１上の領域を指定することにより、表示画像ｉｍ１上に表された物体Ｗｋ１〜Ｗｋ３のいずれかの表示領域を指定することができる。図３に示す例では、物体Ｗｋ２の表示領域が指定されている。
【００４７】
テキストボックスｔｂ１は、プロパティと設定値の欄を含む。プロパティとは、設定値の種類を示す。設定値の欄には、それぞれ対応するプロパティの設定値がユーザーの操作入力に応じて入力可能である。プロパティには、例えば、サーチ条件の範囲、スコア許容値、サーチ個数、等がある。サーチ条件として姿勢の範囲、倍率、等が指定可能であってもよい。サーチ個数とは、１個の画像データに係るエッジマップからサーチすべき対象物のエッジの最大数である。姿勢の範囲の設定値は、例えば、−１０°〜＋１０°である。倍率の設定値は、例えば、０．７〜１．５倍である。サーチ個数の設定値は、例えば、１である。入力された設定値は、マッチング部２２４に設定され、設定された設定値が処理に用いられる。なお、マッチング部２２４は、予め設定しておいた設定値を処理に用いてもよい。
【００４８】
テキストボックスｔｂ２は、検出結果と検出値の欄を含む。テキストボックスｔｂ２には、マッチング部２２４で行われるマッチングによる物体の検出結果の項目毎の検出値が表示される。検出結果の項目には、例えば、マッチングスコア、サーチ条件（位置、姿勢、倍率）、所要時間、等がある。
【００４９】
ボタンｂｔ１は、文字列「ティーチ」が表されているボタンである。ボタンｂｔ１が押下されると、選択部２２１は、指定された領域内に表された物体の画像データを抽出して最初のモデル画像データ（ベースモデル画像データ）を生成する。
その後、制御部２２は、新たな領域の指定（新規モデルのティーチ）の指示ボタン１（図示せず）、指定された領域に係るモデル画像データについてのモデル統合処理（サンプルの追加）の指示ボタン２（図示せず）を、操作画面内に表示させる。
【００５０】
指示ボタン１の押下に応じて、選択部２２１は、指定された領域内に表された物体の画像データを抽出して追加モデル画像データを生成する。
指示ボタン２の押下に応じて、特徴抽出部２２２は、ベースモデル画像データに基づいてベースモデルデータを生成し、追加モデル画像データに基づいて追加モデルデータを生成する。そして、モデル統合部２２３は、ベースモデルデータと追加モデルデータについてモデル統合処理を行う。
【００５１】
ボタンｂｔ２は、文字列「オブジェクト実行」が表されているボタンである。ボタンｂｔ２が押下されることに応じて、制御部２２は、物体検出処理（後述）を開始する。
【００５２】
次に、本実施形態に係るモデル統合部２２３について説明する。
図４は、本実施形態に係るモデル統合部２２３の機能を示す概念図である。
モデル統合部２２３は、ベースモデルデータＢＭと追加モデルデータＡＭを取得し、取得したベースモデルデータＢＭと追加モデルデータＡＭについてモデル統合処理を行って統合モデルデータＩＭを生成する。生成した統合モデルデータＩＭは、物体検出処理（後述）で用いられる。
【００５３】
次に、モデルデータＭＤの構成例について説明する。
図５は、モデルデータＭＤの構成例を示す図である。
モデルデータＭＤは、モデル画像データ、エッジマップ、及びマスクデータを含んで構成される。この構成は、ベースモデルデータＢＭと追加モデルデータＡＭとの間で共通である。
モデル画像データは、選択部２２１で指示された領域内の画素毎の輝度値を示すデータである。エッジマップは、特徴抽出部２２２がモデル画像データから抽出したエッジの領域を示すデータである。エッジマップは、画素毎にその画素がエッジ画素であるか否かを示す信号値を有するデータである。例えば、エッジ画素については、信号値は１であり、非エッジ画素については、信号値は０である。
【００５４】
マスクデータは、モデル統合部２２３が抽出したマスクの領域を示すデータである。マスクデータは、画素毎にその画素がマスクに属するか否かを示す信号値を有するデータである。例えば、マスクに属する画素については、信号値は１であり、マスクに属しない画素については、信号値は０である。なお、マスクデータは、内部マスクとユーザーマスクを含んで構成される。内部マスクとは、モデル統合部２２３が抽出したマスクを示すデータである。ユーザーマスクとは、ユーザーが定義したマスクを示すデータである。内部マスク、ユーザーマスクは、画素毎に各１ビットでマスクに属するか否かを示す。
なお、本明細書では、特に断らない限りマスクとは、内部マスクを意味する。  
【００５５】
次に、本実施形態に係るモデル統合処理について説明する。
図６は、本実施形態に係るモデル統合処理を示す概念図である。
モデル統合処理は、マスク生成処理（ステップＳ１１）、マッピング処理（ステップＳ１２）、及び論理和（ＯＲ）処理（ステップＳ１３）を含む。
【００５６】
（ステップＳ１１）モデル統合部２２３は、ベースモデルデータＢＭに含まれるエッジマップが示すエッジの領域と、追加モデルデータＡＭに含まれるエッジマップが示すエッジの領域を照合し、両者が対応していない部分を抽出する。モデル統合部２２３は、抽出した部分を示す内部マスクを生成する。
なお、ベースモデルデータＢＭに係る画像データが示す物体と、追加モデルデータＡＭに係る画像データが示す物体との位置、姿勢関係が未知である場合には、モデル統合部２２３は、ベースモデルデータＢＭに係るエッジの領域、追加モデルデータＡＭに係るエッジの領域についてマッチング処理を行う。これにより、ベースモデルデータＢＭに係るエッジの領域、追加モデルデータＡＭに係るエッジの領域との位置及び姿勢を対応付け、両者間の位置、姿勢関係を示す座標変換係数を求める。このマッチング処理は、マッチング部２２４が行うマッチング処理と同様であってもよい。その後、ステップＳ１２に進む。
【００５７】
（ステップＳ１２）モデル統合部２２３は、追加モデルデータＡＭから内部マスクを抽出し、抽出した内部マスクをベースモデルデータＢＭの内部マスク上の対応する領域に座標変換（マッピング）する。モデル統合部２２３は、座標変換において、ステップ１１におけるマッチング処理により得られた座標変換係数を用いてもよい。その後、ステップＳ１３に進む。
【００５８】
（ステップＳ１３）モデル統合部２２３は、ベースモデルデータＢＭに含まれる内部マスクの領域、ステップＳ１１で生成した内部マスク、及びステップＳ１２で座標変換された内部マスクの少なくともいずれかに属する領域を新たな内部マスクと定める。これにより、ベースモデルデータＢＭに含まれる内部マスクの領域に、ステップＳ１１で生成した内部マスク及びステップＳ１２で座標変換された内部マスクに属する領域が加えられる。モデル統合部２２３は、ベースモデルデータＢＭの内部マスクを新たに定めた内部マスクに更新する。その後、図６に示す処理を終了する。
【００５９】
なお、追加モデルデータＡＭにおいて内部マスクが定義されているか否かに関わらず、ステップＳ１２の処理は省略されてもよい。さらに、ベースモデルデータＢＭにおいて内部マスクが定義されていない場合には、ステップＳ１３において、モデル統合部２２３は、ステップＳ１１で生成された内部マスクをベースモデルデータＢＭに含めるようにしてもよい。
【００６０】
次に、ステップＳ１１（図６）のマスク生成処理の詳細について説明する。
図７は、本実施形態に係るマスク生成処理を示す概念図である。
マスク生成処理は、レジストレーション処理（ステップＳ１１１）、マッピング処理（ステップＳ１１２）、エッジ画素塗りつぶし処理（ステップＳ１１３）、膨張処理（ステップＳ１１４）、反転（ＮＯＴ）処理（ステップＳ１１５）、エッジ画素塗りつぶし処理（ステップＳ１１６）及び論理積（ＡＮＤ）処理（ステップＳ１１７）を含む。
【００６１】
（ステップＳ１１１）モデル統合部２２３は、ベースモデルデータＢＭに係る画像データが示す物体と、追加モデルデータＡＭに係る画像データが示す物体との位置、姿勢関係を示す座標変換係数を取得する。これらの物体間の位置、姿勢関係が未知である場合には、モデル統合部２２３は、ベースモデルデータＢＭに係るエッジと、追加モデルデータＡＭに係るエッジとの間でマッチング処理を行うことにより座標変換係数を取得する。その後、ステップＳ１１２に進む。
【００６２】
（ステップＳ１１２）モデル統合部２２３は、追加モデルデータＡＭからエッジマップを抽出する。モデル統合部２２３は、抽出したエッジマップが示すエッジを取得した座標変換係数を用いて座標変換（マッピング）する。これにより、抽出したエッジマップが示すエッジと、ベースモデルデータＢＭのエッジマップが示すエッジとの間で位置、姿勢関係が対応付けられる。その後、ステップＳ１１３に進む。
【００６３】
（ステップＳ１１３）モデル統合部２２３は、座標変換したエッジに属するエッジ画素の信号値を１と定め、エッジに属さない非エッジ画素の信号値を０と定める（エッジ画素塗りつぶし）。ここで、モデル統合部２２３は、１つの画素が占める変換後の領域が、所定の面積（例えば、０．５画素）以上である場合には、その画素をエッジ画素として特定し、それ以外の画素は非エッジ画素として特定する。その後、ステップＳ１１４に進む。
【００６４】
（ステップＳ１１４）モデル統合部２２３は、特定したエッジ画素で形成されるエッジについて膨張処理を行う。膨張処理において、モデル統合部２２３は、エッジ領域に含まれるエッジ画素のうち、水平方向又は垂直方向に隣接する画素が非エッジ画素であるエッジ画素について、その非エッジ画素をエッジ画素に変換する。これにより、ベースモデルデータＢＭに係るエッジと、追加モデルデータＡＭに係るエッジとわずかな位置の差異により互いに重複する領域が見いだせずに両者の対応付けに失敗するリスクを低減することができる。その後、ステップＳ１１５に進む。
【００６５】
（ステップＳ１１５）モデル統合部２２３は、追加モデルデータＡＭのエッジマップを形成するエッジ画素の信号値１と非エッジ画素の信号値０とを互いに反転し、それぞれエッジ画素の信号値を０、非エッジ画素の信号値を１に変換する。その後、ステップＳ１１６に進む。
【００６６】
（ステップＳ１１６）モデル統合部２２３は、ベースモデルデータＢＭに係るエッジマップが示すエッジに属するエッジ画素の信号値を１と定め、エッジに属さない非エッジ画素の信号値を０と定める（信号エッジ画素塗りつぶし）。その後、ステップＳ１１７に進む。
【００６７】
（ステップＳ１１７）モデル統合部２２３は、ベースモデルデータＢＭに係るエッジマップが示すエッジの領域（信号値１）と、追加モデルデータＡＭに係るエッジマップにおけるエッジ以外の領域（信号値１）のいずれにも属する領域をマスクと定める。モデル統合部２２３は、定めたマスクを示すマスクデータ（内部マスク）を生成する。その後、図７に示す処理を終了する。
【００６８】
なお、図７において膨張処理（ステップＳ１１４）は省略されてもよい。また、モデル統合部２２３は、所定の回数（例えば、２回）膨張処理を繰り返すことにより膨張の度合いを高くしてもよい。
【００６９】
図７において、Ｅｇ３〜Ｅｇ６は、それぞれステップＳ１１３〜Ｓ１１６で生成されたデータの例を示す。Ｅｇ７は、ステップＳ１１７で生成されるマスクデータの例を示す。いずれも信号値１である画素が塗りつぶされ、それ以外の領域が塗りつぶされていない。
Ｅｇ３が示すエッジは、マッピング処理（ステップＳ１１２）によりＥｇ６が示すエッジとの間で位置、姿勢関係が対応付けられ、いずれも左下から右上に分布している。但し、Ｅｇ３が示すエッジは、２つの部分に分断されているのに対し、Ｅｇ６が示すエッジは、１個の連続した領域である。ここで、Ｅｇ３には右端から第４列と左端から第３列に垂直方向に延在するエッジが示されているが、Ｅｇ６には左下端から第３列より上端から第３行の第７列にかけて分布する別の形状のエッジが示されている。
【００７０】
Ｅｇ４が示すエッジは、膨張処理（ステップＳ１１４）によりＥｇ３が示すエッジから水平方向、垂直方向のそれぞれについて、その順方向ならびに逆方向に１画素ずつ拡大されている。Ｅｇ３が示すエッジは、垂直方向に隣接している区間が主であるため、膨張処理による拡大は、垂直方向よりも水平方向が主である。
【００７１】
Ｅｇ５が示す塗りつぶし部分は、Ｅｇ４のエッジに対する反転処理（ステップＳ１１５）により信号値が反転された非エッジ領域を示す。
Ｅｇ７が示すマスクは、Ｅｇ６が示すエッジの領域と、Ｅｇ５が示す非エッジ領域とが重なった領域である。この領域は、Ｅｇ３において、Ｅｇ６との間のエッジの分断の有無やエッジの位置・形状の差異といった、モデルデータ間における物体の見かけ上の差異が生じている領域である。
【００７２】
次に、モデルデータの例について説明する。
図８は、モデルデータの例を示す図である。
図８（ａ）は、ベースモデルデータＢＭの例を示す図である。図８（ａ）は、ベースモデルデータＢＭに含まれている画像データが示す物体Ｗｋ１の画像に、エッジマップが示すエッジＥｇ１を重ね合わせて表示されている。この例では、物体Ｗｋ１の外側の輪郭の大部分と、左下の突起部の輪郭のほぼ全体にエッジＥｇ１が検出されている。
【００７３】
図８（ｂ）は、追加モデルデータＡＭの例を示す図である。図８（ｂ）は、追加モデルデータＡＭに含まれている画像データが示す物体Ｗｋ２の画像に、エッジマップが示すエッジＥｇ２を重ね合わせて表示されている。物体Ｗｋ２は、物体Ｗｋ１と同じ種類の物体であり、撮像装置１０との位置関係が異なるが、座標変換により両者間で極力多くのエッジが一致するようにエッジが対応付けられている。図８（ｂ）には、エッジと物体Ｗｋとの位置関係を明確するために、物体Ｗｋ２画像も、エッジと同様の座標変換が施されている。この例では、撮像装置１０と物体Ｗｋ２との位置関係が、ベースモデルに係る撮像装置１０と物体Ｗｋ１との位置関係と異なるため、物体Ｗｋ２の外側の輪郭に対して左下の突起部が、物体Ｗｋ１の突起物よりも左方に変位している。そのため、突起部の輪郭の左右両端においてはエッジＥｇ１とエッジＥｇ２の位置が左右にずれている。
【００７４】
図８（ｃ）は、統合モデルデータＩＭの例を示す図である。図８（ｃ）は、統合モデルデータＩＭに含まれている画像データが示す物体Ｗｋ１の画像に、エッジマップが示すエッジＥｇ’を重ね合わせて表示されている。但し、エッジＥｇ’のうち、外部マスクδの領域が一点破線の楕円で囲まれて表示されている。外部マスクδの領域は、エッジＥｇ２とエッジＥｇ’との異なる部分に相当する。この部分は、位置、姿勢関係や光線の照射状況により見かけ上の差異が生じるため、物体検出処理におけるマッチング処理において無視することで、物体検出処理（後述）で算出されるマッチングスコアの低下を防止又は軽減することができる。
【００７５】
次に、本実施形態に係るモデル生成処理について説明する。
図９は、本実施形態に係るモデル生成処理を示すフローチャートである。
（ステップＳ２０１）選択部２２１は、操作入力部２１２からのモデル画像生成指示信号の入力に応じて、表示部２１３に表示されている画像に係る画像データから、操作入力により特定された領域内の画像を表すベースモデル画像データを取得する。その後、ステップＳ２０２に進む。
（ステップＳ２０２）特徴抽出部２２２は、選択部２２１が取得したベースモデル画像データについてエッジ抽出処理を行い、抽出したエッジを示すエッジマップを生成する。その後、ステップＳ２０３に進む。
【００７６】
（ステップＳ２０３）選択部２２１は、操作入力部２１２からのモデル画像生成指示信号の再度の入力に応じて、表示部２１３に表示されている画像に係る画像データから、操作入力により特定された領域内の画像を表す追加モデル画像データを取得する。その後、ステップＳ２０４に進む。
（ステップＳ２０４）特徴抽出部２２２は、選択部２２１が取得した追加モデル画像データについてエッジ抽出処理を行い、抽出したエッジを示すエッジマップを生成する。その後、ステップＳ２０５に進む。
【００７７】
（ステップＳ２０５）モデル統合部２２３は、ベースモデル画像データに係るエッジマップが示すエッジと追加モデル画像データに係るエッジマップが示すエッジとが対応していない部分をマスクとして抽出する。モデル統合部２２３は、抽出したマスクを示すマスクデータを、ベースモデル画像データとエッジマップを含むベースモデルデータに統合して統合モデルデータを生成する（モデル統合処理）。その後、ステップＳ２０６に進む。
【００７８】
（ステップＳ２０６）選択部２２１は、操作入力部２１２からモデル画像生成指示信号がさらに入力された場合、処理を継続すると判定し（ステップＳ２０６  ＹＥＳ）、ステップＳ２０３に進む。選択部２２１は、操作入力部２１２から入力された指示信号が処理の終了を示す場合、処理を終了すると判定し（ステップＳ２０６  ＮＯ）、図９に示す処理を終了する。
【００７９】
次に、本実施形態に係る物体検出処理について説明する。
図１０は、本実施形態に係る物体検出処理を示すフローチャートである。
（ステップＳ３０１）データ記憶部２１５には、撮像装置１０から入力された対象画像データが逐次に記憶される。特徴抽出部２２２は、データ記憶部２１５から対象画像データを読み取ることにより取得する。その後、ステップＳ３０２に進む。
（ステップＳ３０２）特徴抽出部２２２は、取得した対象画像データについてエッジ抽出処理を行い、抽出したエッジを示す対象エッジマップを生成する。その後、ステップＳ３０３に進む。
【００８０】
（ステップＳ３０３）マッチング部２２４は、データ記憶部２１５から統合モデルデータを読み出し、読み出した統合モデルデータからエッジマップとマスクデータを抽出する。マッチング部２２４は、抽出したエッジマップが示すエッジからマスクデータが示すマスクの部分を除外して、参照エッジを特定する。マッチング部２２４は、対象エッジマップが示すエッジと、参照エッジとの間でマッチング処理を行い、参照エッジと、対象エッジマップが示すエッジとの間で一致の度合いが極大となる（例えば、最も高い）参照エッジの位置、向き、倍率をサーチする。サーチにおいて、マッチング部２２４は、参照エッジの位置、向き、倍率の組毎にマッチングスコアを算出し、算出したマッチングスコアが最大になる位置、向き、倍率を特定する。その後、ステップＳ３０４に進む。
【００８１】
（ステップＳ３０４）検出情報取得部２２５は、マッチングスコアの最大値が予め定めたスコア許容値以上である場合には、対象物の検出に成功したと判定する。検出情報取得部２２５は、マッチング部２２４が特定した位置、向きに基づいて得られた対象物の位置、向きと対象物の検出の成功とを示す検出情報を生成（取得）する。検出情報取得部２２５は、マッチングスコアの最大値が予め定めたスコア許容値よりも小さい場合には、対象物の検出に失敗したと判定する。検出情報取得部２２５は、対象物の検出の失敗を示す検出情報を生成（取得）する。その後、ステップＳ３０５に進む。
（ステップＳ３０５）検出情報取得部２２５は、取得した検出情報を、データ入出力部２１４を介してロボット制御装置２３に出力する。その後、図１０に示す処理を終了する。
【００８２】
次に、マッチングスコアの例について説明する。
図１１は、マッチングスコアの例を示す表である。
図１１は、ロボット３０による操作対象の物体毎のモデル追加前後のマッチングスコアを示す。図１１に示すマッチングスコアは、物体検出処理（図１０）において特許文献１に記載のスコア値の算出方法を用いて算出されたスコア値（最大値は、１０００）である。モデル追加前とは、従来技術と同様に、ベース画像データのエッジマップが示すエッジをそのままマッチングに用いた場合を意味する。図１１に示す例では、物体Ｗｋ２を表すモデル画像データから抽出されたエッジが用いられている。モデル追加後とは、本実施形態により生成された統合モデルデータに含まれるエッジマップが示すエッジからマスクを除いて得られた参照エッジをマッチングに用いた場合を意味する。図１１に示す例では、物体Ｗｋ１を表すベース画像データと物体Ｗｋ２を表す追加画像データに基づいて生成された統合モデルデータが用いられている。
【００８３】
図１１によれば、物体Ｗｋ１、Ｗｋ３については、モデル追加後のマッチングスコアがそれぞれ９５０、９４２であり、モデル追加前のマッチングスコアの８９２、８７９から有意に増加している。本実施形態により生成されたマスクを用いることで物体の見かけが異なる部分を無視することによって、マッチングスコアの低下が抑制される。そのため、マッチング処理におけるスコア許容値を低下させずに対象物を検出することができるので、検出精度を向上することができる。
なお、物体Ｗｋ２については、モデル追加後のマッチングスコアが９９６となり、モデル追加前のマッチングスコアの９９４からの増加量が少ない。これは、検出対象の物体Ｗｋ２と同一の条件で撮像された物体Ｗｋ２を表す画像データに基づくベースモデルデータが、マッチング処理で用いられていることによる。
【００８４】
なお、上述したように予めマスク生成処理を行って撮影した画像が表す目標物とランタイム（物体検出処理の実行中）で撮影した画像が表す対象物との間で、撮影条件が異なると、目標物と対象物が例え同一の物体であったとしても見かけ上の形状が異なる。従来のマッチング処理では、算出されるマッチングスコアが低下してしまう。他方、対象物を検出するためにスコアの許容値を低くすると、形状が近似した他の物体や背景が、目標物に対応した対象物であるものとして誤検出されるリスクが高くなる。
そこで、マッチングスコアの低下を防ぐために、対象物の見かけ上の形状の変動部分をユーザーが特定し、その部分を手作業でマスクし、目標物の形状とのマッチングは、マスクした部分を除いて行うことも考えられる。
【００８５】
しかしながら、形状の変動部分を特定する際、ユーザーには目視により複数のモデルの輪郭同士を詳細に比較し、正確に変動部分の位置や領域を手作業で特定することが要求される。そのため、マスクすべき部分として変動部分の位置や領域を特定する作業は、一般に困難であり煩雑になりがちである。また、本来マスクする必要がない部分をマスクしまうと、マッチングに用いる領域が少なくなるためマッチングの精度が低下し、形状が近似した他の物体や背景部分を誤検出する要因となる。
【００８６】
以上、説明したように、本実施形態に係るロボットシステム１は、複数の物体（例えば、物体Ｗｋ１〜Ｗｋ３）から一物体を検出する画像処理装置２１と、検出された一物体を操作するロボット３０とを含む。画像処理装置２１は、撮像装置１０により撮像された複数の物体の画像を含む画像データを表示する表示部２１３と、画像データから第１画像（例えば、ベースモデル画像）と第２画像（例えば、追加モデル画像）とを選択する選択部２２１を含む。また、画像処理装置２１は、第１画像と第２画像とに基づいてモデル（例えば、統合モデルデータ）を生成し、生成したモデルを用いて一物体を検出する処理部２２０と、を含む。
この構成によれば、第１画像と撮像条件が異なる第２画像とに基づいて生成されたモデルを用いて物体が検出される。そのため、撮像条件の差異による見かけの変化が生じる状況でも、確実に検出対象の物体を検出することができる。
【００８７】
また、ロボットシステム１において、処理部２２０は、第１画像、第２画像、及び画像データのそれぞれについて細分化した領域毎の特徴を抽出する特徴抽出部２２２を含む。また、処理部２２０は、第１画像の特徴と第２画像の特徴のいずれかである画像特徴（例えば、エッジマップ）と、第１画像の特徴と第２画像の特徴とが異なるマスク領域（例えば、内部マスク）とを含むモデルを生成するモデル統合部２２３を含む。また、処理部２２０は、画像特徴からマスク領域を除外した領域（例えば、参照エッジ）と、画像データの特徴（例えば、対象エッジマップ）とをマッチングするマッチング部２２４を含む。
この構成によれば、第１画像と第２画像との間で特徴が異なる領域が除外されることで、撮像条件の差異により特徴が変化しない領域間でマッチングがなされる。そのため、確実に検出対象の物体を検出することができる。
【００８８】
また、ロボットシステム１において、特徴抽出部２２２は、第１画像、第２画像、及び画像データのそれぞれについてエッジを抽出する。
この構成によれば、画像の特徴として物体の輪郭や模様を表すエッジに基づいてマッチングがなされるので、検出対象の物体の位置や方向を効率よく検出することができる。
【００８９】
また、ロボットシステム１において、モデル統合部２２３は、例えば、座標変換を行うことにより、第１画像の特徴と第２画像の特徴との位置ならびに姿勢の関係を対応付けてマスク領域を定める。
この構成によれば、第１画像と第２画像との間で位置もしくは姿勢の関係が一致しない場合でも、第１画像と第２画像との間で対応する領域間で特徴が異なるマスク領域を定めることができる。
【００９０】
また、ロボットシステム１において、モデル統合部２２３は、第１画像の特徴と第２画像の特徴の少なくともいずれかについて膨張処理を行い、第１画像の特徴と第２画像の特徴とが異なるマスク領域を定める。
この構成によれば、第１画像と第２画像との撮像条件の差異により位置関係がわずかに異なる場合でも、対応する領域間での特徴を比較することができるため、確実に検出対象の物体を検出することができる。
【００９１】
また、ロボットシステム１において、マッチング部２２４は、画像特徴からマスク領域を除外した領域について位置ならびに向きを変化させた領域（例えば、参照エッジ）と、対象画像データの特徴との一致の度合いを示すマッチングスコアを位置ならびに向きの変化量毎に算出し、マッチングスコアに基づいて一物体の位置ならびに向きを検出する。
この構成によれば、対象画像データにおいて、画像特徴からマスク領域を除外した領域に対応する領域を定量的に特定することにより、画像特徴が表す物体と、その位置ならびに向きを検出することができる。
【００９２】
また、ロボットシステム１において、画像処理装置２１は、マッチング部２２４が算出したスコアに基づいて一物体を検出したか否かを判定する検出情報取得部２２５を備える。
この構成によれば、画像データの特徴と、画像特徴からマスク領域を除外した領域の一致の度合いに基づいて、画像特徴に係る物体の検出の成否を定量的に判定することができる。
【００９３】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【００９４】
例えば、上述した実施形態では、ロボット３０が１本のアーム部３０ｂを有する単腕ロボットである場合を例にしたが、これには限られない。ロボット３０は、２本のアーム部を有する双腕ロボットであってもよいし、水平多関節ロボット（いわゆる、スカラーロボット）であってもよい。
画像処理装置２１は、上述したようにロボット制御装置２３と別体であってよいし、一体に構成されていてもよい。
ロボット制御装置２３は、上述したようにロボット３０と別体であってよいし、一体に構成されていてもよい。
また、撮像装置１０、画像処理装置２１、ロボット制御装置２３、及びロボット３０の全てが一体に構成されていてもよい。
【００９５】
ロボットシステム１は、物体検出システムとして用いられてもよい。例えば、画像処理装置２１は、ベルトコンベア上に載置された１個の物体を検出し、ロボット３０は、画像処理装置２１が検出した物体を操作してもよい。画像処理装置２１は、ベルトコンベア上の複数の位置のそれぞれについて物体を表すモデル画像を取得し、取得したモデル画像に基づいて統合モデルデータを生成してもよい。ベルトコンベア上の複数の位置の間で、それぞれの見かけが異なるが、本実施形態によれば、モデル画像のうち見かけの異なる部分を除外してマッチング処理が行われるので物体の検出精度を向上させることができる。
【００９６】
また、ロボットシステム１は、ビンピッキングに用いられてもよい。例えば、画像処理装置２１は、作業台上に乱雑に積み重ねられた多数の物体から１個の物体を検出し、ロボット３０は、画像処理装置２１が検出した物体を操作してもよい。画像処理装置２１は、予め作業台上に乱雑に積み重ねられた多数の物体から少なくとも２個の物体のそれぞれを表すモデル画像を取得し、取得したモデル画像に基づいて統合モデルデータを生成してもよい。積み重ねられた物体のそれぞれの間で、位置、向き、光線の照射状況が異なるため、それぞれの見かけが異なる。例えば、物体がネジである場合には、軸部に付されたネジ山や金属光沢の見かけの差異が複数の物体間で著しい。本実施形態によれば、モデル画像のうち見かけの異なる部分を除外してマッチング処理が行われるので物体の検出精度を向上させることができる。
【００９７】
また、画像処理装置２１は、ロボット制御装置２３と連係してビジュアルサーボを実行してもよい。ビジュアルサーボにおいて、画像処理装置２１が予め生成した統合モデルデータに含まれるエッジデータが、制御目標であるゴール画像として用いられてもよい。ビジュアルサーボにおいて、撮像画像から生成したエッジデータとゴール画像についてマッチング処理を行う際、画像処理装置２１は、統合モデルデータに含まれるマスクデータが示すマスクの領域を除外する。
【００９８】
また、上述した実施形態では、ユーザーマスクを考慮しない場合を例にしたが、これには限られない。モデル統合部２２３は、ベースモデルデータＢＭに含まれるユーザーマスクと、追加モデルデータＡＭに含まれるユーザーマスクとの、少なくともいずれかに属する領域を、新たなユーザーマスクと定めてもよい。その場合、モデル統合部２２３は、統合モデルデータＩＭを生成する際、ベースモデルデータＢＭに含まれるユーザーマスクを、新たなユーザーマスクに更新する。
また、マッチング部２２４は、統合モデルデータから抽出したエッジマップが示すエッジから、少なくとも内部マスクの部分とユーザーマスクの部分のいずれかに属する部分を除外して参照エッジを特定し、対象エッジマップが示すエッジと参照エッジとの間でマッチング処理を行ってもよい。
【００９９】
また、以上に説明した装置（例えば、ロボットシステム１の画像処理装置２１）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）（登録商標）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（例えば、ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１００】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１０１】
１…ロボットシステム、１０…撮像装置、２１…画像処理装置、２１１…画像データ取得部、２１２…操作入力部、２１３…表示部、２１４…データ入出力部、２１５…データ記憶部、２２…制御部、２２０…処理部、２２１…選択部、２２２…特徴抽出部、２２３…モデル統合部、２２４…マッチング部、２２５…検出情報取得部、２３…ロボット制御装置、３０…ロボット
【図１】
0006372198.tif 000002
【図２】
0006372198.tif 000003
【図３】
0006372198.tif 000004
【図４】
0006372198.tif 000005
【図５】
0006372198.tif 000006
【図６】
0006372198.tif 000007
【図７】
0006372198.tif 000008
【図８】
0006372198.tif 000009
【図９】
0006372198.tif 000010
【図１０】
0006372198.tif 000011
【図１１】
0006372198.tif 000012