(57)【特許請求の範囲】
【請求項１】
カメラにより画像を撮像し、収容手段に収容されている対象物を前記画像から検出するための範囲としての検索ウィンドウを前記画像中に設定して対象物を検出する画像処理装置であって、
収容手段の基準となる位置姿勢を設定するための収容手段基準位置姿勢を設定する手段と、
対象物の基準となる高さを設定するための対象物基準高さを設定する手段と、
前記収容手段が前記収容手段基準位置姿勢にあり前記対象物が前記対象物基準高さにあるときに前記対象物が検出できるように設定した検索ウィンドウを基準検索ウィンドウとして設定する手段と、
前記対象物を撮像した際の前記収容手段の位置姿勢を収容手段位置姿勢として取得する手段と、
前記対象物を撮像した際の前記対象物の高さを対象物高さとして推定する手段と、
前記収容手段基準位置姿勢と前記対象物基準高さと前記収容手段位置姿勢と前記対象物高さとから検索ウィンドウの調整量を計算する手段と、
前記基準検索ウィンドウと前記検索ウィンドウの調整量とから検索ウィンドウを計算する手段と、
計算した前記検索ウィンドウを用いて画像から前記対象物を検出する手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記カメラで前記収容手段を撮像して得られた画像に基づいて前記収容手段基準位置姿勢或いは前記収容手段位置姿勢を計算する、請求項１に記載の画像処理装置。
【請求項３】
前記カメラで前記対象物を撮像して得られた画像の中の前記対象物のサイズに基づいて前記対象物基準高さ或いは前記対象物高さを計算する、請求項１に記載の画像処理装置。
【請求項４】
ロボットに搭載されてロボットの動作により移動するカメラにより画像を撮像し、対象物を前記画像から検出するための範囲としての検索ウィンドウを前記画像中に設定して対象物を検出する画像処理装置であって、
前記ロボットの基準となる位置姿勢を設定するための基準ロボット位置姿勢を設定する手段と、
前記ロボットが前記基準ロボット位置姿勢にあるときに対象物が検出できるように設定した検索ウィンドウを基準検索ウィンドウとして設定する手段と、
前記対象物を撮像した際の前記ロボットの位置姿勢をロボット位置姿勢として取得する手段と、
前記基準ロボット位置姿勢と前記ロボット位置姿勢とから検索ウィンドウの調整量を計算する手段と、
前記基準検索ウィンドウと前記検索ウィンドウの調整量とから検索ウィンドウを計算する手段と、
計算した前記検索ウィンドウを用いて画像から前記対象物を検出する手段と、
を備えることを特徴とする画像処理装置。
【請求項５】
前記ロボットが対象物を収容する収容手段と干渉する場合には、前記ロボット位置姿勢を前記ロボットと収容手段とが干渉しない位置姿勢に設定する、請求項４に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナ内にバラ積みされているワークをカメラで撮像し画像処理装置で検出するアプリケーション及びロボット先端に搭載されたハンドカメラでワークを撮像して画像処理装置で検出するアプリケーションに関し、特に、画像処理装置でワークを検出する際に用いる検索ウィンドウを適切に調整することでワークの誤検出や未検出を防ぎワーク検出に掛かる処理時間を短縮することを目的にした画像処理装置に関する。
【背景技術】
【０００２】
検出する対象物であるワークが収容手段であるコンテナ内に位置決めされておらず、乱雑に置かれている状態から、そのワークの取出しを行う、いわゆる「バラ積み取出し」のアプリケーションでは、取り出すべきワークの位置情報を取得するために、広範囲を撮像するカメラでワークの検出を行う。このとき、ワークの検出に用いる検索ウィンドウをワークが収容されたコンテナの内側に固定して設定する。しかし、コンテナの入替え作業などでコンテナの位置が移動してしまったり、ワークの数の増減で検出可能なワークの高さが変わったりすると、検索ウィンドウの位置やサイズが不適切になる。すると、検索ウィンドウ内にワークが見つからなくなったり、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする、等の問題が発生する。
【０００３】
また、「バラ積み取出し」のアプリケーションでは、広範囲を撮像する固定カメラでワークの大まかな位置を取得したあと、ロボットに搭載したハンドカメラで正確なワーク位置情報を取得して、ワークを取り出すことがある。このとき、ロボットは、固定カメラで撮像した画像から得られた大まかなワーク位置に基づいて、ハンドカメラでワークを撮像する位置を計算し、計算で求めた位置へ移動しようとする。しかし、ロボットがハンドカメラでワークを撮像する位置へ移動すると、ロボットに搭載されたハンドカメラやハンドと、ワークが収容されているコンテナを含むシステム周辺機器とが干渉するため、干渉を避けた位置でワークを撮像することがある。すると、設定とは異なるロボット位置姿勢でハンドカメラでのワークの撮像を行うため、検索ウィンドウ内にワークが見つからなくなったり、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする、等の問題が発生する。
【０００４】
そこで、画像中からワークの特徴を検出するウィンドウを複数個教示しておき、外部装置からの入力で、どのウィンドウを使うかを決める方式が知られている（例えば、特許文献１）。また、基板上に実装された部品のエッジを検出する方法において、第１のエッジ検出段階と第２のエッジ検出段階により部品のエッジを検出する際に、第２のエッジ検出段階において第１のエッジ検出段階で検出されたエッジ位置を使って、第２のエッジ検出段階で使用するサーチウィンドウの位置やサイズを調整する特徴を持つ部品のエッジ検出方法及び装置が知られている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１−１４７６７６号公報
【特許文献２】特開２００６−４９３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１で示されている検索ウィンドウの制御方式では、コンテナやロボットの移動量が予め決まっているのであれば、それに対応した検索ウィンドウを設定しておけばよいので有効である。しかし、この移動量が予め決まっていない場合に、あらゆる状況に対応するためには設定すべき検索ウィンドウの数が膨大になり、現実的ではない。また、特許文献２で示されている部品エッジ検出方法及び装置では、同一部品中の第１エッジの検出位置を基に第２エッジの検出に使用する検索ウィンドウの位置やサイズを調整している。しかし、コンテナ内にバラ積みされた多数のワークを検出対象とする場合を考えると、ワーク１つ１つに対して検索ウィンドウが必要となる訳ではなく、コンテナの移動量に応じてコンテナ内部の必要充分な領域を覆う１つの検索ウィンドウが必要なのであって、特許文献２の方法では、このような所望の検索ウィンドウを作ることができない。またコンテナ内の積載物の高さに応じて検索ウィンドウのサイズを適切に変更することを可能にするものではない。また、ハンドカメラが干渉を回避するために教示位置からずれた場合を考えると、このずれ量を反映した検索ウィンドウが必要となるが、特許文献２の方法では、このような検索ウィンドウを作ることができない。
【課題を解決するための手段】
【０００７】
本発明の一実施例に係る画像処理装置は、カメラにより画像を撮像し、収容手段に収容されている対象物を画像から検出するための範囲としての検索ウィンドウを画像中に設定して対象物を検出する画像処理装置であって、収容手段の基準となる位置姿勢を設定するための収容手段基準位置姿勢を設定する手段と、対象物の基準となる高さを設定するための対象物基準高さを設定する手段と、収容手段が収容手段基準位置姿勢にあり対象物が対象物基準高さにあるときに対象物が検出できるように設定した検索ウィンドウを基準検索ウィンドウとして設定する手段と、対象物を撮像した際の収容手段の位置姿勢を収容手段位置姿勢として取得する手段と、対象物を撮像した際の対象物の高さを対象物高さとして推定する手段と、収容手段基準位置姿勢と対象物基準高さと収容手段位置姿勢と対象物高さとから検索ウィンドウの調整量を計算する手段と、基準検索ウィンドウと検索ウィンドウの調整量とから検索ウィンドウを計算する手段と、計算した検索ウィンドウを用いて画像から対象物を検出する手段と、を備えることを特徴とする。
【０００８】
本発明の一実施例に係る画像処理装置において、対象物基準高さは検出した対象物のサイズに基づいて計算することが好ましい。
【０００９】
本発明の他の実施例に係る画像処理装置は、カメラにより画像を撮像し、対象物を画像から検出するための範囲としての検索ウィンドウを画像中に設定して対象物を検出する画像処理装置であって、ロボットの基準となる位置姿勢を設定するための基準ロボット位置姿勢を設定する手段と、ロボットが基準ロボット位置姿勢にあるときに対象物が検出できるように設定した検索ウィンドウを基準検索ウィンドウとして設定する手段と、対象物を撮像した際のロボットの位置姿勢をロボット位置姿勢として取得する手段と、基準ロボット位置姿勢とロボット位置姿勢とから検索ウィンドウの調整量を計算する手段と、基準検索ウィンドウと検索ウィンドウの調整量とから検索ウィンドウを計算する手段と、計算した検索ウィンドウを用いて画像から対象物を検出する手段と、を備えることを特徴とする。
【００１０】
本発明の他の実施例に係る画像処理装置において、ロボットが対象物を収容する収容手段及びシステム周辺機器と干渉する場合には、ロボット位置姿勢をロボットと収容手段及びシステム周辺機器とが干渉しない位置姿勢に設定することが好ましい。
【発明の効果】
【００１１】
本発明によれば、収容手段の移動量または対象物の高さに合わせて調整された検索ウィンドウを用いて対象物を検出することができるので、検索ウィンドウ内に対象物が見つからなくなったり、検索ウィンドウ内に異物が含まれるようになって誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする問題が発生しなくなる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１に係るコンテナ位置姿勢及びワーク高さの変化量を使って検索ウィンドウを自動調整する機能を備えた画像処理装置の概略構成を示す図である。
【図２】本発明の実施例１に係る画像処理装置において、基準検索ウィンドウを設定する手順を示すフローチャートである。
【図３】コンテナを縁上部からカメラで撮影した場合に得られる画像を示す図である。
【図４】ワーク高さを計算する方法を説明する図である。
【図５】本発明の実施例１に係る画像処理装置において、基準検索ウィンドウの設定方法を示す図である。
【図６】本発明の実施例１に係るコンテナ位置姿勢及びワーク高さの変化量を使って検索ウィンドウを自動調整してワークを検出する処理の好適例を示すフローチャートである。
【図７】本発明の実施例１に係る画像処理装置において、検索ウィンドウの設定方法を示す図である。
【図８】本発明の実施例１に係るコンテナ位置姿勢及びワーク高さの変化量を使って自動調整された検索ウィンドウの一例を示す図である。
【図９】ワークの最上部がコンテナの底面近傍に存在する場合に設定された検索ウィンドウを示す図である。
【図１０】ワークの最上部がコンテナの縁上面近傍に存在する場合に得られる画像を示す図である。
【図１１】ワークの最上部がコンテナの縁上面近傍に存在する場合に設定された検索ウィンドウを示す図である。
【図１２】本発明の実施例２に係るロボット位置姿勢及びワーク概略位置姿勢の変化量を使って検索ウィンドウを自動調整する機能を備えた画像処理装置の概略構成を示す図である。
【図１３】本発明の実施例２に係るロボット位置姿勢及びワーク概略位置姿勢の変化量を使って検索ウィンドウを自動調整してワークを検出する処理の好適例を示すフローチャートである。
【図１４】本発明の実施例２に係るロボット位置姿勢及びワーク概略位置姿勢の変化量を使って検索ウィンドウを自動調整してワークを検出する処理の好適例を示すフローチャートである。
【図１５】本発明の実施例２に係るロボット位置姿勢及びワーク概略位置姿勢の変化量を使って自動調整された検索ウィンドウの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら本発明について説明する。ただし、本発明の技術的範囲はそれらの実施の形態には限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【実施例１】
【００１４】
まず、本発明の実施例１に係る画像処理装置について説明する。図１は、実施例１に係る画像処理装置１の全体構成を示す図である。収容手段であるコンテナ３には検出の対象物であるワーク４が収容されている。コンテナ３の上方に固定設置され、固定の位置姿勢から撮像する固定カメラ２は、画像処理装置１内のカメラ制御部１ｋに接続され、固定カメラ２の視野内に設置されたコンテナ３に収容されているワーク４を撮像する。画像処理装置１は、後述するように、撮像で得られた画像の中にワーク４を検出する範囲として検索ウィンドウを設定し、画像の検索ウィンドウ内にあるワーク４を検出する。画像処理装置１は、コンテナの位置姿勢をコンテナ位置姿勢として取得するコンテナ位置姿勢取得部１ｃと、ワークの高さをワーク高さとして計算するワーク高さ計算部１ｅと、コンテナ３の基準となる位置姿勢を設定するためのコンテナ基準位置姿勢を設定するコンテナ基準位置姿勢設定部１ｄと、ワーク４の基準となる高さを設定するためのワーク基準高さを設定するワーク基準高さ設定部１ｆと、コンテナ３が基準位置姿勢にありワーク４がワーク基準高さにあるときにコンテナ３に収容されたワーク４が検出可能な検索ウィンドウを基準検索ウィンドウとして設定する基準検索ウィンドウ設定部１ａと、画像上の見え方変換（詳細後述）を求める見え方変換計算部１ｇと、基準となる画像上の見え方変換を画像上の基準見え方変換として記憶する基準見え方変換記憶部１ｈと、コンテナ基準位置姿勢とワーク基準高さとコンテナ位置姿勢とワーク高さとから検索ウィンドウの調整量を計算し、基準検索ウィンドウと検索ウィンドウの調整量とから検索ウィンドウを計算する検索ウィンドウ計算部１ｉと、を有する。基準検索ウィンドウ、コンテナ基準位置姿勢及びワーク基準高さの記憶は、予め、基準データ教示時に行なわれる。検索ウィンドウの計算は、基準データ教示時に記憶しておいたコンテナ基準位置姿勢及びワーク基準高さと、ワーク検出実行時に得られたコンテナ位置姿勢及びワーク高さとを用いて、基準検索ウィンドウを調整する形で行なわれる。
【００１５】
図２および図６は、図１の画像処理装置１による処理の流れを示すフローチャートである。
【００１６】
まず、基準データ教示時の処理ステップＳＡｔ１〜９の流れについて図２のフローチャートに沿って説明する。ステップＳＡｔ１においてコンテナ位置姿勢を取得する。図３は、コンテナを縁上部からカメラで撮影した場合に得られる画像を示す図である。図３に示すように、コンテナ位置姿勢の取得方法としては、固定カメラ２で撮像した画像中からパターンマッチングなどの方法を用いてコンテナ３の縁上面を構成する４辺cu1〜cu4の位置姿勢を検出して、固定カメラ２のキャリブレーションデータを用いて実空間上のコンテナ位置姿勢を計算する方法を用いる。なお、コンテナ３の下面を構成する４辺cd1〜cd4は画面２５０上では、縁上面の４辺cu1〜cu4の内側に表示される。画像上でのコンテナ３の縁上面の位置姿勢から実空間でのコンテナ位置姿勢を求めるには、コンテナ３の縁上面の高さＺｃが必要であり、高さＺｃは予め測っておくものとする。画像中からコンテナ３をパターンマッチングによって検出する方法及び、画像中で検出したコンテナ位置姿勢から実空間上でのコンテナ位置姿勢へ変換する方法については、既知の技術であり、本発明の主要な点ではないので詳細な説明は省略する。検出したコンテナ位置姿勢Ｃｒは、コンテナ３の位置姿勢の情報を含んだ次の式（同次変換行列による表現）で表すことができる。
【００１７】
【数１】
0005383836.tif 000002
【００１８】
Ｃｒ.ｘ、Ｃｒ.ｙはコンテナ３の位置、Ｃｒ.ｒ11〜Ｃｒ.ｒ22はコンテナ３の姿勢を表す。次のステップＳＡｔ２で、この取得したコンテナ位置姿勢Ｃｒをコンテナ基準位置姿勢として記憶する。
【００１９】
次にステップＳＡｔ３で、コンテナ３にワーク４を置いて、ワーク４を固定カメラ２で撮像して得られた画像からワーク４のサイズである基準ワークサイズを取得する。ワーク４のサイズを取得するには、ワーク４をパターンマッチングによって検出して、ワーク４の教示パターンの画像上での大きさを１００としたときの検出したワーク４の画像上での大きさとして取得する。なお、基準ワークサイズは予め入力しておいてもよい。
【００２０】
次にステップＳＡｔ４で、ステップＳＡｔ３で取得した基準ワークサイズを基にして、ワーク４の高さであるワーク基準高さを計算する。ワーク基準高さの計算方法を、図４を参照して説明する。図４は、ワーク高さを計算する方法を説明する図であり、固定カメラ２とワーク４との間の位置関係をｘ軸方向から見たものである。座標の基準となる座標系としては、鉛直上向きのＺ軸を持つものを想定する。ワーク高さを計算するには、２箇所での基準データを必要とする。ここでは、基準データとして、ワーク４がＺ１の高さにあるときに固定カメラ２で撮像した画像に写るワークのサイズをＳＺ１とし、Ｚ２の高さにあるときに画像に写るサイズをＳＺ２とする。このとき、画像に写るサイズはワーク４と固定カメラ２との間の距離に反比例するため、次の式が成り立つ。
【００２１】
【数２】
0005383836.tif 000003
【００２２】
ここで、Ｚ０は、固定カメラ２の高さであり、以下の式で計算できる。
【００２３】
【数３】
0005383836.tif 000004
【００２４】
これに対して、コンテナ３に置いたワーク４のサイズがＳＺrと検出されたとすると、そのときのワーク高さＺrは次の式で計算できる。
【００２５】
【数４】
0005383836.tif 000005
【００２６】
次のステップＳＡｔ５で、ステップＳＡｔ４で計算したワーク高さＺrをワーク基準高さＺＡｒとして記憶する。
【００２７】
ここで、コンテナの縁上面の高さに存在しているワークが、そのまま鉛直下方（Ｚ軸の負の方向）に所定の高さまで下降すると仮定したときに、画像上での見かけの位置と姿勢がどのように変化するかを表現する変換を「画像上の見え方変換」と呼ぶことにする。特に、下降先をワーク基準高さとした場合のそれを「画像上の基準見え方変換」と呼ぶことにする。
【００２８】
次にステップＳＡｔ６で、画像上の基準見え方変換を計算する。画像上の基準見え方変換の計算方法を、図５を参照して説明する。図５は、基準検索ウィンドウの設定方法を示す図である。図５において、固定カメラ２でワーク４を撮像した画像２５０内にコンテナ３が表示されている。まず、次の式で表される画像２５０上の任意の３点Ｖi（ｉ＝１，２，３）を取得する。ｖｔは画像上の垂直方向の画像位置、ｈｚは画像上の水平方向の位置を表している。
【００２９】
【数５】
0005383836.tif 000006
【００３０】
次に、Ｖi（ｉ＝１，２，３）を、固定カメラ２のキャリブレーションデータを用いて、実空間において平面高さが高さＺｃである平面上の点ＷＡi（ｉ＝１，２，３）に変換する。
【００３１】
【数６】
0005383836.tif 000007
【００３２】
次に、点ＷＡi（ｉ＝１，２，３）のＺ座標値にワーク基準高さＺＡｒを設定した点ＷＡi’（ｉ＝１，２，３）を作成する。
【００３３】
【数７】
0005383836.tif 000008
【００３４】
次に、点ＷＡi’（ｉ＝１，２，３）を、固定カメラ２のキャリブレーションデータを用いて、画像上の点ＶＡi’（ｉ＝１，２，３）に変換する。
【００３５】
【数８】
0005383836.tif 000009
【００３６】
次に、点Ｖi（ｉ＝１，２，３）が点ＶＡi’（ｉ＝１，２，３）となるような同次変換行列ＴＡrを求める。
【００３７】
【数９】
0005383836.tif 000010
【００３８】
上式は、次のように表現することができる。
【００３９】
【数１０】
0005383836.tif 000011
【００４０】
次の式でＴＡr.ａ〜ＴＡr.ｆを計算することができる。なお以下では演算子 × は行列同士の乗算を表すものとする。
【００４１】
【数１１】
0005383836.tif 000012
【００４２】
求めた変換行列ＴＡrを画像上の基準見え方変換行列ＴＡrとして次のステップＳＡｔ７で記憶する。以上のようにして、基準見え方変換行列ＴＡrは、ワーク基準高さＺＡｒを用いて求められる。
【００４３】
次のステップＳＡｔ８で、基準検索ウィンドウＳＡｒを基準検索ウィンドウ設定部１ａにて設定し、続くステップＳＡｔ９において、基準検索ウィンドウ記憶部１ｂで記憶する。ここで設定する基準検索ウィンドウＳＡｒとしては、図５に示すようにワーク基準高さＺＡｒに存在するワーク４を検出するのに適した検索ウィンドウを設定することが望ましい。コンテナ３がコンテナ基準位置姿勢Ｃｒにありワーク４がワーク基準高さＺＡｒにあるときにワーク４が検出できるように設定した検索ウィンドウを基準検索ウィンドウＳＡｒとして設定する。基準検索ウィンドウＳＡｒは、以下の４点ＡＡ〜ＡＤを頂点とする矩形として表すことができるものである。
【００４４】
【数１２】
0005383836.tif 000013
【００４５】
ＡＰｏは画像の原点から検索ウィンドウのコーナーへのベクトル、ＡＰｘは該コーナーから矩形の長辺に沿った方向ベクトル、ＡＰｙは矩形の短辺に沿った方向ベクトルを表す。
【００４６】
次に、ワーク検出時の処理の流れ（ステップＳＡｅ１〜９）について図６のフローチャートに沿って図７を参照しながら説明する。
【００４７】
まず、ステップＳＡｅ１で、基準検索ウィンドウを用いてワークを検出し、ワークサイズの初期値を取得する。式（１）を変形させて、ワークサイズの初期値ＳＺiniを次式で計算する。このとき、ワークサイズＳＺiniとワーク高さＺiniとの関係は次式で表される。
【００４８】
【数１３】
0005383836.tif 000014
【００４９】
次にステップＳＡｅ２で、コンテナ位置姿勢Ｃaを取得する。コンテナ位置姿勢の取得方法としては、ステップＳＡｔ１（図２参照）と同じ方法を用いる。検出したコンテナ位置姿勢Ｃaは次の式で表すものとする。
【００５０】
【数１４】
0005383836.tif 000015
【００５１】
Ｃa.ｘ、Ｃa.ｙはコンテナ３の位置を表し、Ｃa.ｒ11〜Ｃa.ｒ22はコンテナ３の姿勢を表す。
【００５２】
次にステップＳＡｅ３で、ワーク高さＺＡaを計算する。ワーク高さＺＡaは、ステップＳＡｔ４（図２参照）と同じ方法で計算する。ワーク高さＺＡaの計算に使用するワークサイズは、初めてワークの検出を行う場合はステップＳＡｅ１で取得したワークサイズの初期値を使用し、それ以降は、ステップＳＡｅ９で取得した前回のワーク４の検出を行ったときのワークサイズを使用する。
【００５３】
次のステップＳＡｅ４で、画像上の実行時見え方変換行列ＴＡaを計算する。具体的な計算方法は、以下の通りである。
まず、ステップＳＡｔ６で使用した画像上の３点Ｖi（ｉ＝１，２，３）を、固定カメラ２のキャリブレーションデータを用いて、実空間において平面高さが高さＺｃである平面上の３点ＷＡi（ｉ＝１，２，３）に再度変換する。
【００５４】
【数１５】
0005383836.tif 000016
【００５５】
次に、点ＷＡi（ｉ＝１，２，３）にコンテナ３の移動量Ｃoを乗じた点ＷＡi’’（ｉ＝１，２，３）を計算する。ここで、コンテナ３の移動量Ｃoは、コンテナ位置姿勢Ｃaと、コンテナ基準位置姿勢Ｃｒとを用いて以下の式で求められる。
【００５６】
【数１６】
0005383836.tif 000017
【００５７】
次に、点ＷＡi’’（ｉ＝１，２，３）のＺ座標値にワーク高さＺＡaを設定した点ＷＡi’’’（ｉ＝１，２，３）を作成する。
【００５８】
【数１７】
0005383836.tif 000018
【００５９】
次に、点ＷＡi’’’（ｉ＝１，２，３）を、固定カメラ２のキャリブレーションデータを用いて、画像上の点ＶＡi’’’（ｉ＝１，２，３）に変換する。
【００６０】
【数１８】
0005383836.tif 000019
【００６１】
次に、点Ｖi（ｉ＝１，２，３）がＶＡi’’’（ｉ＝１，２，３）となるような同次変換行列ＴＡaを求める。ステップＳＡｔ６（図２参照）と同じ方法で計算する。ここで、求めた同次変換行列ＴＡaを実行時見え方変換行列ＴＡaとする。
【００６２】
【数１９】
0005383836.tif 000020
【００６３】
以上のようにして、実行時見え方変換行列ＴＡaは、コンテナ位置姿勢Ｃaと、コンテナ基準位置姿勢Ｃｒと、ワーク高さＺＡaとを用いて求められる。
次のステップＳＡｅ５で、検索ウィンドウの調整量ＴＡoを計算する。検索ウィンドウの調整量ＴＡoは、ステップＳＡｔ６で計算した基準見え方変換行列ＴＡrとステップＳＡｅ４で計算した実行時見え方変換行列ＴＡaを用いて次の式で計算される。
【００６４】
【数２０】
0005383836.tif 000021
【００６５】
ここで、基準見え方変換行列ＴＡrは、ワーク基準高さＺＡｒを用いて求められ、実行時見え方変換行列ＴＡaは、コンテナ位置姿勢Ｃaと、コンテナ基準位置姿勢Ｃｒと、ワーク高さＺＡaとを用いて求められることから、検索ウィンドウの調整量ＴＡoは、コンテナ基準位置姿勢Ｃｒとワーク基準高さＺＡｒとコンテナ位置姿勢Ｃaとワーク高さＺＡaとから計算できることとなる。
次のステップＳＡｅ６で、次のワーク検出で使用する検索ウィンドウＳＡaを設定する。検索ウィンドウＳＡaを求めるには、基準検索ウィンドウＳＡｒと検索ウィンドウの調整量ＴＡoとから、ステップＳＡｔ８で設定したＡＡ〜ＡＤに対応する頂点ＡＡ’〜 ＡＤ’を求める。ステップＳＡｅ５、ＳＡｅ６の処理は検索ウィンドウ計算部１ｉで行われる。
【００６６】
【数２１】
0005383836.tif 000022
【００６７】
次のステップＳＡｅ７で、ステップＳＡｅ６で設定した検索ウィンドウＳＡaを用いてワーク４の検出を実行する。ワーク４の検出には、パターンマッチングなどの方法を用いる。パターンマッチングの方法については、本発明の主要な点ではないので説明を省略する。
【００６８】
次のステップＳＡｅ８で、ワーク４の検出に成功したかどうかを判定する。ワークの検出に成功した場合（Ｔ：Ｔｒｕｅ）、ステップＳＡｅ９に進み、検出したワーク４のサイズを取得する。一方、ワーク４の検出に失敗した場合（Ｆ：Ｆａｕｌｔ）、ワーク検出の処理を終了する。ここで、ワーク検出に失敗した場合に画像を撮像するためのパラメータを検出できるようにステップＳＡｅ２に戻るようにしても良い。
【００６９】
次に、図８を参照して、コンテナの上方に固定設置された固定カメラ２でワーク４を検出する際に使用する検索ウィンドウを適切に調整する機能が、コンテナの移動によって検索ウィンドウ内にワークが見つからなくなったり、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする問題に対して、効果があることを説明する。図８（ａ）、（ｂ）は、コンテナ位置姿勢及びワーク高さの変化量を使って自動調整された検索ウィンドウの一例を示す図である。図８（ａ）において、コンテナの移動量にあわせて検索ウィンドウを調整することによる効果について説明する。コンテナがコンテナ基準位置姿勢１１にあるときに、基準検索ウィンドウ１３を設定する。その後、コンテナの入替え等によりコンテナ位置姿勢が実行時コンテナ位置姿勢１２に移動した場合、基準検索ウィンドウ１３ではコンテナ１１の内側の範囲の全てをカバーすることができなくなり、ワーク４が見つからなくなる問題が発生する。そこで、検索ウィンドウのサイズを大きくすると、検索ウィンドウ内にコンテナの外側にある異物が含まれるようになり誤検出を招いたり、検索ウィンドウのサイズが大き過ぎて検出時間が余計に掛かったりする問題が発生する。本発明によれば、コンテナの移動量にあわせて調整された検索ウィンドウ１４を用いてワーク４を検出することができるので、検索ウィンドウ内にワークが見つからなくなったり、検索ウィンドウ内に異物が含まれるようになって誤検出を招いたり、検索ウィンドウのサイズが大き過ぎて検出時間が余計にかかったりする問題の発生を抑制することができる。
【００７０】
次に、図８（ｂ）において、ワーク高さにあわせて検索ウィンドウが調整されることによる効果を説明する。ワーク高さがワーク基準高さ１７にあるときに、基準検索ウィンドウ１５を設定する。その後、ワークの検出時にワーク高さが実行時ワーク高さ１８にあるワークを検出すると、基準検索ウィンドウ１５ではワーク４が見つからなくなる問題が発生する。そこで、検索ウィンドウを不用意に大きくすると、誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする問題が発生する。本発明によれば、ワーク高さにあわせて調整された検索ウィンドウ１６を用いてワークを検出することができるので、検索ウィンドウ内にワークが見つからなくなったり、誤検出したり、検索ウィンドウが大き過ぎて検出時間が余計に掛かったりする問題の発生を抑制することができる。
【００７１】
ここで、ワークの高さと検索ウィンドウの位置との関係について図９〜１１を用いて説明する。図９は、ワーク４の最上部がコンテナ３の底面近傍に存在する場合の検索ウィンドウＷ０を示す。コンテナ３の底面部を構成する４辺cd1〜4は、固定カメラ２により撮像された画像２５０上では内側に表示され、検索ウィンドウＷ０はコンテナ３の底面部を構成する４辺cd1〜4の近傍に設定することができる。
【００７２】
次に、図１０に示すようにワーク４の高さがコンテナの縁上面部を構成する４辺cu1〜4の近傍まで達する場合を考える。この場合、画像２５０上でワーク４の上面部４ａは検索ウィンドウＷ０の外側に存在し、検索ウィンドウＷ０を用いた場合にはワーク４を検出することができなくなる。
【００７３】
そこで、本発明においては、ワーク４の高さに応じて検索ウィンドウのサイズを変更している。図１１は、検索ウィンドウのサイズを変更した場合の画像を示す。検索ウィンドウＷ０のサイズをコンテナ３の縁上面部を構成する４辺cu1〜4を含む検索ウィンドウＷ１に設定することにより、ワーク４の上面部４ａを検索ウィンドウＷ１内に収めることができ、ワーク４を検出することができる。
【実施例２】
【００７４】
次に、本発明の実施例２に係る画像処理装置について説明する。図１２は、実施例２に係る画像処理装置５の全体構成を示す図である。コンテナ７にはワーク８が収容されている。
コンテナ７の上方に固定設置された固定カメラ１０及びロボット９の先端に設置されたハンドカメラ６は、画像処理装置５内のカメラ制御部５ｉに接続されている。画像処理装置５は、ロボット９に搭載したハンドカメラ６でワーク８を撮像し、撮像で得られた画像の中にワーク８を検出する範囲として検索ウィンドウを設定し、画像の検索ウィンドウ内にあるワーク８を検出する。画像処理装置５は、ワーク８を撮像した際のロボット９の位置姿勢をロボット位置姿勢として取得するロボット位置姿勢取得部５ｃと、ワークを撮像するロボット位置姿勢を求めるワークを撮像するロボット位置姿勢計算部５ｅと、ロボット９の基準となる位置姿勢を設定するための基準ロボット位置姿勢を設定する基準ロボット位置姿勢設定部５ｄと、固定カメラ１０で撮像した画像からワークの概略位置姿勢を取得するワーク概略位置姿勢取得部５ｆと、基準となるワークの概略位置姿勢を基準ワーク概略位置姿勢として記憶する基準ワーク概略位置姿勢記憶部５ｇと、ロボット９が基準ロボット位置姿勢にありワーク８が基準ワーク概略位置姿勢に置かれているときに検出可能な検索ウィンドウを基準検索ウィンドウとして設定する基準検索ウィンドウ設定部５ａと、固定カメラ１０でワーク８の概略位置姿勢を検出してロボット９に搭載されたハンドカメラ６でワーク８を撮像した際に基準ロボット位置姿勢、撮像時のロボット位置姿勢、基準ワーク概略位置姿勢、ワーク８の概略位置姿勢から検索ウィンドウの調整量を計算して、基準検索ウィンドウと検索ウィンドウの調整量とからハンドカメラ６でワーク８を検出する際に使用する検索ウィンドウを計算する検索ウィンドウ計算部５ｈと、を有する。基準検索ウィンドウ、基準ロボット位置姿勢及び基準ワーク概略位置姿勢の記憶は、予め、各基準データ教示時に行われる。検索ウィンドウの計算は、基準データ教示時に記憶しておいた基準ロボット位置姿勢及び基準ワーク概略位置姿勢と、ワーク検出時に得られたロボット位置姿勢及びワーク概略位置姿勢とを用いて、基準検索ウィンドウを調整する形で行われる。
【００７５】
図１３及び図１４は、図１２の画像処理装置５による処理の流れを示すフローチャートである。
【００７６】
まず、基準データ教示時の処理の流れ（ステップＳＢｔ１〜６）について図１３のフローチャートに沿って説明する。ステップＳＢｔ１でコンテナ７にワーク８を置いて、ワーク概略位置姿勢を取得する。ワーク概略位置姿勢の取得方法としては、固定カメラ１０で撮像した画像中からパターンマッチングなどの方法を用いて画像上でのワーク位置姿勢を検出して、固定カメラ１０のキャリブレーションデータを用いて画像上でのワーク位置姿勢を実空間上のワーク概略位置姿勢に変換する方法を用いる。画像上でのワーク位置姿勢を実空間でのワーク概略位置姿勢に変換するには、実空間上のどの高さの平面にワークが存在するかを示す情報が必要となるが、これにはワーク高さＺＢrの平面を用いる。ワーク高さＺＢrは、ステップＳＡｔ４（図２参照）と同じ方法で計算する。画像中からワークをパターンマッチングで検出する方法及び、画像上でのワーク位置姿勢を実空間上でのワーク概略位置姿勢へ変換する方法については、既知の方法であり、本発明の主要な点ではないので省略する。次のステップＳＢｔ２において、ステップＳＢｔ１で取得したワーク概略位置姿勢を基準ワーク概略位置姿勢ＷＲＫrとして記憶する。基準ワーク概略位置姿勢ＷＲＫrは、ワークの位置と姿勢の情報を含んだ次の式（同次変換行列による表現）で表すことができる。
【００７７】
【数２２】
0005383836.tif 000023
【００７８】
ＷＲＫr.ｘ、ＷＲＫr.ｙはワーク８の位置、ＷＲＫr.ｒ11〜ＷＲＫr.ｒ22はワーク８の姿勢を表す。
【００７９】
次に、ステップＳＢｔ３でワーク８を撮像するロボット位置姿勢を取得する。ロボット位置姿勢としては、ハンドカメラ６でワーク８を撮像したときにワーク８が画像中心に写るようなものを設定する。次のステップＳＢｔ４において、ステップＳＢｔ３で取得したロボット位置姿勢を基準ロボット位置姿勢Ｒrとして記憶する。基準ロボット位置姿勢Ｒrは次の式（同次変換行列による表現）で表すことができる。
【００８０】
【数２３】
0005383836.tif 000024
【００８１】
Ｒr.ｘ、Ｒr.ｙ、Ｒr.ｚはロボット９の位置、Ｒr.ｒ11〜Ｒr.ｒ33はロボット９の姿勢を表す。
【００８２】
次のステップＳＢｔ５で、基準検索ウィンドウＳＢｒを基準検索ウィンドウ設定部５ａにて設定し、続くステップＳＢｔ６において、基準検索ウィンドウ記憶部５ｂで記憶する。ここで設定する基準検索ウィンドウＳＢｒとしては、オペレータが固定カメラ１０で撮像した画像の任意の領域を指定すればよいが、ロボット９が基準ロボット位置姿勢Ｒrにあるときにワーク８が検出できるようにワーク８を囲むような検索ウィンドウを設定することが望ましい。基準検索ウィンドウＳＢｒは、以下の４点ＢＡ〜ＢＤを頂点とする矩形として表すことができるものである。
【００８３】
【数２４】
0005383836.tif 000025
【００８４】
ＢＰｏは画像の原点から検索ウィンドウのコーナーへのベクトル、ＢＰｘは該コーナーから矩形の長辺に沿った方向ベクトル、ＢＰｙは矩形の短辺に沿った方向ベクトルを表す。
【００８５】
次に、ワーク検出時の処理ステップＳＢｅ１〜６の流れについて図１４のフローチャートにそって説明する。まず、ステップＳＢｅ１において、コンテナ７内に置かれたワーク８のワーク概略位置姿勢を固定カメラ１０で撮像した画像から取得する。固定カメラ１０で撮像した画像からワーク概略位置姿勢を取得する方法は、ステップＳＢｔ１（図１３参照）と同じ方法を用いる。ワーク高さをＺＢaとすると、検出したワーク概略位置姿勢ＷＲＫaは、ワークの位置と姿勢の情報を含んだ次の式で表すことができるものである。
【００８６】
【数２５】
0005383836.tif 000026
【００８７】
ＷＲＫa.ｘ、ＷＲＫa.ｙはワーク８の位置、ＷＲＫa.ｒ11〜ＷＲＫa.ｒ22はワーク８の姿勢を表す。
【００８８】
次に、ステップＳＢｅ２においてハンドカメラ６でワーク８を撮像した際のロボット９の位置姿勢をロボット位置姿勢Ｒaとして計算する。ハンドカメラ６でワーク８を撮像するロボット位置姿勢Ｒaは、ステップＳＢｔ２で記憶した基準ワーク概略位置姿勢ＷＲＫr、ステップＳＢｔ４で記憶した基準ワークを撮像する基準ロボット位置姿勢Ｒr、ステップＳＢｅ１で取得したワーク概略位置姿勢ＷＲＫaを用いて次の式で得られる。ここで、ワーク概略位置姿勢の移動量ＷＲＫoは、ワーク概略位置姿勢ＷＲＫaと、準ワーク概略位置姿勢ＷＲＫrとを用いて以下の式で求められる。
【００８９】
【数２６】
0005383836.tif 000027
【００９０】
この計算はワークを撮像するロボット位置姿勢計算部５ｅで行う。
【００９１】
次に、ステップＳＢｅ３において実際にハンドカメラ６でワーク８を撮像したときのロボット位置姿勢Ｒa’を取得する。この取得はロボット位置姿勢取得部５ｃで行う。ロボット位置姿勢は次の式で表すことのできるものである。
【００９２】
【数２７】
0005383836.tif 000028
【００９３】
Ｒa’.ｘ、Ｒa’.ｙ、Ｒa’.ｚはロボット９の位置、Ｒa’.ｒ11〜Ｒa’.ｒ33はロボット９の姿勢を表す。Ｒa’は通常はＲaと同じだが、Ｒaの位置姿勢へ移動するとロボット９のハンドとコンテナ７が干渉してしまうため、干渉回避するためにロボット９がハンドカメラ６でワーク８を撮像する位置姿勢を変更することが必要な場合があり、その時異なる値をとる。即ち、ロボット９がワーク８を収容するコンテナ７と干渉する場合には、ロボット位置姿勢Ｒaをロボット９とコンテナ７とが干渉しない位置姿勢Ｒa’に設定する。
【００９４】
次のステップＳＢｅ４で、基準ロボット位置姿勢Ｒrとロボット位置姿勢Ｒa’とから検索ウィンドウの調整量ＴＢoを計算する。まず、ステップＳＡｔ６（図２参照）及びステップＳＡｅ４（図６参照）と同様にハンドカメラ６の画像上の任意の３点Ｖi（ｉ＝１，２，３）を用意する。次に、画像上の３点Ｖi（ｉ＝１，２，３）を、ハンドカメラ６のキャリブレーションデータを用いて、実空間において平面高さがステップＳＢｅ１で取得したワーク高さＺＢaである３点ＷＢi（ｉ＝１，２，３）に変換する。
【００９５】
【数２８】
0005383836.tif 000029
【００９６】
次に、点ＷＢi（ｉ＝１，２，３）にロボット９の移動量Ｒoを乗じた点ＷＢi’（ｉ＝１，２，３）を計算する。ロボット移動量は次式に示すＲoで求められる。
【００９７】
【数２９】
0005383836.tif 000030
【００９８】
次に、点ＷＢi’（ｉ＝１，２，３）を、ハンドカメラ６のキャリブレーションデータを用いて、画像上の点ＶＢi’（ｉ＝１，２，３）に変換する。
【００９９】
【数３０】
0005383836.tif 000031
【０１００】
次に、点Ｖi（ｉ＝１，２，３）が点ＶＢi’（ｉ＝１，２，３）となるような検索ウィンドウ調整量ＴＢoを計算する。ステップＳＡｔ６（図２参照）及びステップＳＡｅ４（図６参照）と同じ方法で計算する。
【０１０１】
【数３１】
0005383836.tif 000032
【０１０２】
以上のようにして、基準ロボット位置姿勢Ｒrとロボット位置姿勢Ｒa’とから検索ウィンドウの調整量ＴＢoが求められる。
【０１０３】
次のステップＳＢｅ５で、次のワーク検出で使用する検索ウィンドウＳＢaを設定する。具体的には、ステップＳＢｔ３（図１３参照）で設定したＢＡ〜ＢＤに対応する頂点ＢＡ’〜 ＢＤ’を求めればよい。ステップＳＢｅ４、ＳＢｅ５の処理は検索ウィンドウ計算部５ｈで行われる。
【０１０４】
【数３２】
0005383836.tif 000033
【０１０５】
次のステップＳＢｅ６で、ステップＳＢｅ５で設定した検索ウィンドウＳＢaを用いてワークの検出を行う。ワークの検出には、パターンマッチングなどの方法を用いる。パターンマッチングの方法については、本発明の主要な点ではないので説明を省略する。
【０１０６】
上記実施例では、コンテナ内にバラ積みされたワーク８をロボット９に搭載したハンドカメラ６で検出するようにしたため、固定カメラ１０を設置して、固定カメラ１０で撮像した画像からワーク概略位置姿勢を取得して、ワーク概略位置姿勢及び基準ロボット位置姿勢をもとに、ロボット９がハンドカメラ６でワーク８を撮像するためのロボット位置姿勢を求めている。しかし、ワーク８を撮像するロボット位置姿勢が予め決まっている場合には、固定カメラ１０や固定カメラ１０で撮像した画像でのワーク８の検出がなくても、本発明が適用できることは明らかである。
【０１０７】
ロボット先端に搭載したハンドカメラ６でワーク８を検出する際に、ロボットが干渉回避動作をすることで検索ウィンドウ内にワークが見つからなくなったり、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする問題があるが、本発明がそれらの解消に効果があることを、図１５を用いて説明する。図１５（ａ）には、ハンドカメラ２１を搭載したロボット９がワーク２２を撮像するロボット位置姿勢１９に移動してハンドカメラ２１でワーク２２を撮像した画像２５及び検索ウィンドウ２３が示されている。このように、予め設定されたロボット位置姿勢でワーク２２を撮像することができれば、検索ウィンドウ２３内にワーク２２が収まるので、ワーク２２が見つからない、誤検出を招く、という問題は発生しない。しかし、図１５（ｂ）に示すように、ハンドカメラ２１を搭載したロボット９がワーク２２を撮像するロボット位置姿勢１９に移動してしまうと、ロボット９のハンドとコンテナ１２が干渉してしまうケースでは、ハンドカメラ２１を搭載したロボットは、干渉を回避したロボット位置姿勢２０でワークを撮像する。すると、検索ウィンドウ２３内にワークが収まらなくなり、ワーク２２が見つからないという問題が発生する。ワーク２２が見つからない問題を解決するために検索ウィンドウ２３を予め大きくしておく対策をとると、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウが大き過ぎて検出時間が余計にかかったりする問題が新たに発生する。そこで、本発明では、予め設定しておいたワーク２２を撮像するロボット位置姿勢２３と実際にワーク２２を撮像したロボット位置姿勢との間の相違に応じて調整した検索ウィンドウ２４を使用してワーク検出を行う。これにより、検索ウィンドウ内にワーク２２を収めることができるようになるので、ワークが見つからないという問題の発生を抑制することができる。さらに、不必要に大きな検索ウィンドウを予め設定しておく必要がなくなるので、検索ウィンドウ内に異物が写り込んで誤検出を招いたり、検索ウィンドウのサイズが大き過ぎて検出時間が余計に掛かったりするという問題の発生も抑制することができる。
【０１０８】
以上の説明において、対象物としてワークを用いた場合を例に挙げて本発明の画像処理装置について説明したが、対象物はワークには限定されない。さらに、収容手段としてコンテナを用いた場合を例に挙げて本発明の画像処理装置について説明したが、収容手段はコンテナには限定されない。
【符号の説明】
【０１０９】
１、５    画像処理装置
２、１０    固定カメラ
３、７    コンテナ
４、８、２２    ワーク
６、２１    ハンドカメラ
１ａ、５ａ    基準検索ウィンドウ設定部
１ｂ、５ｂ    基準検索ウィンドウ記憶部
１ｃ    コンテナ位置姿勢取得部
１ｄ    コンテナ基準位置姿勢設定部
１ｅ    ワーク高さ計算部
１ｆ    ワーク基準高さ設定部
１ｇ、５ｋ    見え方変換計算部
１ｈ、５ｇ    基準見え方変換記憶部
１ｉ、５ｈ    検索ウィンドウ計算部
１ｊ、５ｊ    ワーク検出部
１ｋ、５ｉ    カメラ制御部
１ｌ、５ｌ    揮発性メモリ
１ｍ、５ｍ    不揮発性メモリ
５ｃ    ロボット位置姿勢取得部
５ｄ    基準ロボット位置姿勢設定部
５ｅ    ワークを撮像するロボット位置姿勢計算部
５ｆ    ワーク概略位置姿勢取得部
５ｇ    基準ワーク概略位置姿勢記憶部
９    ロボット
１１    コンテナ基準位置姿勢
１２    実行時コンテナ位置姿勢
１３    基準検索ウィンドウ
１４    コンテナの移動量にあわせて調整された検索ウィンドウ
１５    基準検索ウィンドウ
１６    ワーク高さにあわせて調整された検索ウィンドウ
１７    ワーク基準高さ
１８    ワーク高さ
１９    ロボット先端に取り付けたハンドカメラでワークを撮像するロボット位置姿勢
２０    ハンドとコンテナとの干渉を回避したロボット位置姿勢
２３    予め設定されたロボット位置姿勢での検索ウィンドウ
２４    ロボット位置姿勢の移動量にあわせて調整された検索ウィンドウ
２５    ハンドカメラでワークを撮像した画像
【図１】
0005383836.tif 000034
【図２】
0005383836.tif 000035
【図３】
0005383836.tif 000036
【図４】
0005383836.tif 000037
【図５】
0005383836.tif 000038
【図６】
0005383836.tif 000039
【図７】
0005383836.tif 000040
【図８】
0005383836.tif 000041
【図９】
0005383836.tif 000042
【図１０】
0005383836.tif 000043
【図１１】
0005383836.tif 000044
【図１２】
0005383836.tif 000045
【図１３】
0005383836.tif 000046
【図１４】
0005383836.tif 000047
【図１５】
0005383836.tif 000048