(57)【要約】【課題】高い精度でマーカーを検出することができる画像処理装置を提供すること。【解決手段】マーカーを検出する画像処理装置であって、１以上の前記マーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、前記画像又は前記画像とは異なる画像から検出されたマーカーの数に基づいて決定する、画像処理装置。【選択図】図１４
2017076308.tif 000002
【特許請求の範囲】
【請求項１】
マーカーを検出する画像処理装置であって、
１以上の前記マーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、前記画像又は前記画像とは異なる画像から検出されたマーカーの数に基づいて決定する、
画像処理装置。
【請求項２】
前記第１閾値を決定するために用いられる仮の閾値である第２閾値の変化に応じて前記画像から検出された前記マーカーの数に基づいて前記第１閾値を決定する、
請求項１に記載の画像処理装置。
【請求項３】
前記第１閾値を前記マーカーの数と、前記第２閾値を用いて前記画像を多値化した際に検出される領域の数とに基づいて決定する、
請求項２に記載の画像処理装置。
【請求項４】
前記多値化は、二値化である、
請求項１から３のうちいずれか一項に記載の画像処理装置。
【請求項５】
前記マーカーは、図心マーカーである、
請求項１から４のうちいずれか一項に記載の画像処理装置。
【請求項６】
前記第１閾値を用いて画像から対象物を検出する、
請求項１から５のうちいずれか一項に記載の画像処理装置。
【請求項７】
請求項１から６のうちいずれか一項に記載の画像処理装置を備える、
ロボット。
【請求項８】
前記１以上の前記マーカーを含む範囲の前記画像を撮像する撮像部と、
請求項７に記載のロボットと、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理装置、ロボット、及びロボットシステムに関する。
【背景技術】
【０００２】
画像からマーカーや対象物を検出し、検出したマーカーや対象物に応じて作業を行うロボットの研究や開発が行われている。
【０００３】
これに関し、マーカーを判別可能にするための閾値を用いて撮像画像を二値化し、二値化した撮像画像からマーカー候補を検出し、検出したマーカー候補から誤認識で検出したマーカー候補を除外する画像検出方法が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３０４７３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、この画像検出方法では、撮像画像に含まれるマーカーを全て検出可能なように当該撮像画像を二値化する閾値を、マーカーの検出に適した閾値として選択することが出来ない場合があり、当該撮像画像に含まれるマーカーを全て検出することが出来ない場合があった。その結果、当該画像検出方法では、当該撮像画像からマーカーを検出する精度を向上させることが困難な場合があった。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、マーカーを検出する画像処理装置であって、１以上の前記マーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、前記画像又は前記画像とは異なる画像から検出されたマーカーの数に基づいて決定する、画像処理装置である。
この構成により、画像処理装置は、１以上のマーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、画像処理装置は、高い精度でマーカーを検出することができる。
【０００７】
また、本発明の他の態様は、画像処理装置において、前記第１閾値を決定するために用いられる仮の閾値である第２閾値の変化に応じて前記画像から検出された前記マーカーの数に基づいて前記第１閾値を決定する、構成が用いられてもよい。
この構成により、画像処理装置は、第１閾値を決定するために用いられる仮の閾値である第２閾値の変化に応じて画像から検出されたマーカーの数に基づいて第１閾値を決定する。これにより、画像処理装置は、第２閾値の変化に応じて画像から検出されたマーカーの数に基づいて決定された第１閾値に基づいて、高い精度でマーカーを検出することができる。
【０００８】
また、本発明の他の態様は、画像処理装置において、前記第１閾値を前記マーカーの数と、前記第２閾値を用いて前記画像を多値化した際に検出される領域の数とに基づいて決定する、構成が用いられてもよい。
この構成により、画像処理装置は、第１閾値をマーカーの数と、第２閾値を用いて当該画像を多値化した際に検出される領域の数とに基づいて決定する。これにより、画像処理装置は、マーカーの数と、第２閾値を用いて当該画像を多値化した際に検出される領域の数とに基づいて決定された第１閾値に基づいて、高い精度でマーカーを検出することができる。
【０００９】
また、本発明の他の態様は、画像処理装置において、前記多値化は、二値化である、構成が用いられてもよい。
この構成により、画像処理装置は、１以上のマーカーが含まれる画像の少なくとも一部を二値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、画像処理装置は、第１閾値を用いて二値化された画像からマーカーを検出することができる。
【００１０】
また、本発明の他の態様は、画像処理装置において、前記マーカーは、図心マーカーである、構成が用いられてもよい。
この構成により、画像処理装置は、１以上の図心マーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、画像処理装置は、高い精度で図心マーカーを検出することができる。
【００１１】
また、本発明の他の態様は、画像処理装置において、前記第１閾値を用いて画像から対象物を検出する、構成が用いられてもよい。
この構成により、画像処理装置は、第１閾値を用いて画像から対象物を検出する。これにより、画像処理装置は、高い精度で対象物を検出することができる。
【００１２】
また、本発明の他の態様は、上記のいずれかに記載の画像処理装置を備える、ロボットである。
この構成により、ロボットは、１以上のマーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、ロボットは、高い精度でマーカーを検出することができる。
【００１３】
また、本発明の他の態様は、前記１以上の前記マーカーを含む範囲の前記画像を撮像する撮像部と、上記に記載のロボットと、を備えるロボットシステムである。
この構成により、ロボットシステムは、１以上のマーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、ロボットシステムは、高い精度でマーカーを検出することができる。
【００１４】
以上により、画像処理装置、ロボット、及びロボットシステムは、１以上のマーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、画像処理装置、ロボット、及びロボットシステムは、高い精度でマーカーを検出することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係るロボット２０の一例を示す構成図である。
【図２】図心を説明するための図である。
【図３】図心マーカーの一例を示す図である。
【図４】図心マーカーの他の例を示す図である。
【図５】同心円を構成していない３つの図形によって構成される図心マーカーの一例を示す図である。
【図６】同心円を構成していない４つの図形によって構成される図心マーカーの一例を示す図である。
【図７】同心円を構成していない４つの図形によって構成される図心マーカーの他の例を示す図である。
【図８】６４個の図心マーカーを含む撮像画像の一例を示す図である。
【図９】マーカーを検出するために適していない輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した場合の二値化画像の一例を示す図である。
【図１０】図９に示した二値化画像Ｇ２からロボット制御装置３０により検出された図心マーカーを構成する３以上の図形のそれぞれを例示する図である。
【図１１】マーカーを検出するために適した輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した場合の二値化画像の一例を示す図である。
【図１２】図１１に示した二値化画像Ｇ２からロボット制御装置３０により検出された図心マーカーを構成する３以上の図形のそれぞれを例示する図である。
【図１３】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図１４】ロボット制御装置３０の機能構成の一例を示す図である。
【図１５】制御部３６が第１閾値を決定するために行う処理の流れの一例を示すフローチャートである。
【図１６】ステップＳ１７０において領域検出部５３が検出した部分領域の数を、第２閾値毎にプロットしたグラフの一例を示す図である。
【図１７】ステップＳ１８０においてマーカー検出部５５が検出した図心マーカーの数を、第２閾値毎にプロットしたグラフの一例を示す図である。
【図１８】ステップＳ１８０において評価値算出部５６が算出した評価値を、第２閾値毎にプロットしたグラフの一例を示す図である。
【図１９】制御部３６がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。
【図２０】外周を複数の図心マーカーによって囲まれた３つのトレーを含む撮像範囲が撮像された撮像画像の一例を示す図である。
【発明を実施するための形態】
【００１６】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態に係るロボット２０の一例を示す構成図である。
【００１７】
＜ロボット２０の構成＞
まず、ロボット２０の構成について説明する。
ロボット２０は、第１アームと、第２アームと、第１アーム及び第２アームを支持する支持台と、ロボット制御装置３０を備える双腕ロボットである。双腕ロボットは、この一例における第１アームと第２アームのような２本のアーム（腕）を備えるロボットである。なお、ロボット２０は、双腕ロボットに代えて、単腕ロボットであってもよい。単腕ロボットは、１本のアームを備えるロボットである。例えば、単腕ロボットは、第１アームと第２アームのいずれか一方を備える。また、ロボット２０は、双腕ロボットに代えて、３本以上のアームを備える複腕ロボットであってもよい。
【００１８】
第１アームは、第１エンドエフェクターＥ１と第１マニピュレーターＭ１を備える。
【００１９】
第１エンドエフェクターＥ１は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第１エンドエフェクターＥ１は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
【００２０】
第１エンドエフェクターＥ１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第１エンドエフェクターＥ１は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。また、第１エンドエフェクターＥ１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２１】
第１マニピュレーターＭ１は、７つの関節と、第１撮像部２１を備える。また、７つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第１マニピュレーターＭ１を備える第１アームは、７軸垂直多関節型のアームである。第１アームは、支持台と、第１エンドエフェクターＥ１と、第１マニピュレーターＭ１と、第１マニピュレーターＭ１が備える７つの関節それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第１アームは、６軸以下の自由度で動作する構成であってもよく、８軸以上の自由度で動作する構成であってもよい。
【００２２】
第１アームが７軸の自由度で動作する場合、第１アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第１アームは、例えば、動作が滑らかになり、更に第１アームの周辺に存在する物体との干渉を容易に回避することができる。また、第１アームが７軸の自由度で動作する場合、第１アームの制御は、第１アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００２３】
第１マニピュレーターＭ１が備える７つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第１マニピュレーターＭ１を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第１マニピュレーターＭ１が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２４】
第１撮像部２１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えたカメラである。この一例において、第１撮像部２１は、第１マニピュレーターＭ１の一部に備えられる。そのため、第１撮像部２１は、第１アームの動きに応じて移動する。また、第１撮像部２１が撮像可能な範囲は、第１アームの動きに応じて変化する。第１撮像部２１は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００２５】
また、第１撮像部２１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第１撮像部２１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２６】
第２アームは、第２エンドエフェクターＥ２と第２マニピュレーターＭ２を備える。
【００２７】
第２エンドエフェクターＥ２は、この一例において、物体を把持可能な爪部を備えるエンドエフェクターである。なお、第２エンドエフェクターＥ２は、当該爪部を備えるエンドエフェクターに代えて、電動ドライバーを備えるエンドエフェクター等の他のエンドエフェクターであってもよい。
【００２８】
第２エンドエフェクターＥ２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第２エンドエフェクターＥ２は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２エンドエフェクターＥ２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２９】
第２マニピュレーターＭ２は、７つの関節と、第２撮像部２２を備える。また、７つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、第２マニピュレーターＭ２を備える第２アームは、７軸垂直多関節型のアームである。第２アームは、支持台と、第２エンドエフェクターＥ２と、第２マニピュレーターＭ２と、第２マニピュレーターＭ２が備える７つの関節それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第２アームは、６軸以下の自由度で動作する構成であってもよく、８軸以上の自由度で動作する構成であってもよい。
【００３０】
第２アームが７軸の自由度で動作する場合、第２アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第２アームは、例えば、動作が滑らかになり、更に第２アームの周辺に存在する物体との干渉を容易に回避することができる。また、第２アームが７軸の自由度で動作する場合、第２アームの制御は、第２アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００３１】
第２マニピュレーターＭ２が備える７つの（関節に備えられた）アクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第２マニピュレーターＭ２を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２マニピュレーターＭ２が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３２】
第２撮像部２２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。この一例において、第２撮像部２２は、第２マニピュレーターＭ２の一部に備えられる。そのため、第２撮像部２２は、第２アームの動きに応じて移動する。また、第２撮像部２２が撮像可能な範囲は、第２アームの動きに応じて変化する。第２撮像部２２は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００３３】
また、第２撮像部２２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２撮像部２２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３４】
また、ロボット２０は、第３撮像部２３と、第４撮像部２４を備える。
第３撮像部２３は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第３撮像部２３は、第４撮像部２４が撮像可能な範囲を第４撮像部２４とともにステレオ撮像可能な部位に備えられる。第３撮像部２３は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第３撮像部２３は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３５】
第４撮像部２４は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第４撮像部２４は、第３撮像部２３が撮像可能な範囲を第３撮像部２３とともにステレオ撮像可能な部位に備えられる。第４撮像部２４は、ケーブルによって通信可能にロボット制御装置３０と接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第４撮像部２４は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３６】
上記で説明したロボット２０が備えるこれらの各機能部は、この一例において、ロボット２０に内蔵されたロボット制御装置３０から制御信号を取得する。そして、当該各機能部は、取得した制御信号に基づいた動作を行う。なお、ロボット２０は、ロボット制御装置３０を内蔵する構成に代えて、外部に設置されたロボット制御装置３０により制御される構成であってもよい。この場合、ロボット２０と、ロボット制御装置３０とは、ロボットシステムを構成する。また、ロボット２０は、第１撮像部２１と、第２撮像部２２と、第３撮像部２３と、第４撮像部２４のうちの一部を備えない構成であってもよい。
【００３７】
ロボット制御装置３０は、ロボット２０に制御信号を送信することにより、ロボット２０を動作させる。これにより、ロボット制御装置３０は、ロボット２０に所定の作業を行わせる。
【００３８】
＜ロボット２０が行う所定の作業の概要＞
以下、ロボット２０が行う所定の作業の概要について説明する。
この一例において、ロボット２０は、第１アームと第２アームの両方により作業することが可能な領域である作業領域に配置された物体を把持し、把持した物体を図示しない給材領域に給材（配置）する作業を所定の作業として行う。なお、ロボット２０は、これに代えて、他の作業を所定の作業として行う構成であってもよい。また、作業領域は、第１アームと第２アームのうちいずれか一方により作業することが可能な領域であってもよい。
【００３９】
図１に示した例では、作業領域は、作業台ＴＢの上面を含む領域である。作業台ＴＢは、例えば、テーブルである。なお、作業台ＴＢは、テーブルに代えて、床面や棚等の他の物体であってもよい。作業台ＴＢの上面には、ロボット２０が把持する物体として、Ｎ個の対象物Ｏ１〜対象物ＯＮが配置されている。Ｎは、１以上の整数である。
【００４０】
対象物Ｏ１〜対象物ＯＮのそれぞれは、例えば、製品に組み付けるプレート、ネジ、ボルト等の産業用の部品や部材である。図１では、図の簡略化のため、対象物Ｏ１〜対象物ＯＮのそれぞれを直方体形状の物体として表している。なお、対象物Ｏ１〜対象物ＯＮのそれぞれは、産業用の部品や部材に代えて、日用品や生体等の他の物体であってもよい。また、対象物Ｏ１〜対象物ＯＮのそれぞれの形状は、直方体形状に代えて、他の形状であってもよい。また、対象物Ｏ１〜対象物ＯＮの一部又は全部の形状は、互いに同じ形状であってもよく、互いに異なる形状であってもよい。
【００４１】
＜ロボット制御装置３０が行う処理の概要＞
以下、ロボット２０に所定の作業を行わせるためにロボット制御装置３０が行う処理の概要について説明する。
ロボット制御装置３０は、作業領域を含む範囲を撮像範囲としてロボット２０に撮像させる。そして、ロボット制御装置３０は、ロボット２０が撮像した撮像画像を取得する。ロボット制御装置３０は、取得した撮像画像に基づいて、作業領域内に貼付されたマーカーを検出する。ロボット制御装置３０は、検出したマーカーに応じて所定の作業をロボット２０に行わせる。
【００４２】
この一例において、作業領域内に貼付されたマーカーは、作業領域内の作業台ＴＢの上面に配置された対象物Ｏ１〜対象物ＯＮのそれぞれに貼付されている。なお、作業領域内に貼付されたマーカーの一部又は全部は、これに代えて、作業領域内の対象物Ｏ１〜対象物ＯＮのそれぞれとは異なる他の物体や、作業台ＴＢの上面等に貼付される構成であってもよい。
【００４３】
対象物Ｏ１〜対象物ＯＮのそれぞれには、互いに異なるマーカーが貼付されている。これらのマーカーのそれぞれは、対象物Ｏ１〜対象物ＯＮそれぞれのロボット座標系における位置を示している。例えば、対象物Ｏ１に貼付されたマーカーＭｋ１は、対象物Ｏ１のロボット座標系における位置を示している。また、対象物ＯＮに貼付されたマーカーＭｋＮは、対象物ＯＮのロボット座標系における位置を示している。なお、対象物Ｏ１〜対象物ＯＮのそれぞれに貼付されたマーカーの一部又は全部は、同じマーカーであってもよい。また、これらのマーカーのそれぞれは、対象物Ｏ１〜対象物ＯＮそれぞれのロボット座標系における位置を示す構成に代えて、ロボット２０の動作を示す構成等の他の情報を示す構成であってもよい。
【００４４】
この一例におけるロボット制御装置３０は、第３撮像部２３と第４撮像部２４に前述の撮像範囲をステレオ撮像させる。そして、ロボット制御装置３０は、第３撮像部２３と第４撮像部２４にステレオ撮像させた撮像画像を取得する。ロボット制御装置３０は、取得した撮像画像に基づいて、対象物Ｏ１〜対象物ＯＮのそれぞれに貼付されたＮ個のマーカーＭｋ１〜マーカーＭｋＮのそれぞれを検出する。
【００４５】
ロボット制御装置３０は、検出したマーカーＭｋ１〜マーカーＭｋＮのそれぞれが示すロボット座標系における位置を算出する。ロボット制御装置３０は、算出した位置に基づいて、対象物Ｏ１〜対象物ＯＮのそれぞれを１つずつロボット２０に把持させ、図示しない給材領域に給材させる。この一例において、ロボット制御装置３０は、対象物Ｏ１〜対象物ＯＮのそれぞれを１つずつ第１アームに把持させ、図示しない給材領域に給材させる。なお、ロボット制御装置３０は、これに代えて、対象物Ｏ１〜対象物ＯＮのそれぞれを１つずつ第２アームに把持させる構成であってもよく、対象物Ｏ１〜対象物ＯＮのそれぞれを１つずつ第１アームと第２アームの両方に把持させる構成等の他の構成であってもよい。
【００４６】
ロボット制御装置３０は、撮像画像からマーカーを検出する際、撮像画像をグレースケール画像に変換する（グレースケール化処理）。この一例において、ロボット制御装置３０は、撮像画像のグレースケール化処理において、撮像画像を２５６階調のグレースケール画像に変換する。そして、ロボット制御装置３０は、グレースケール化処理により変換したグレースケール画像を、二値化画像（白黒画像）に変換する（二値化処理）。二値化処理は、グレースケール画像上における所定の閾値以上の輝度値の画素の色を白色に変換し、当該閾値未満の輝度値の画素を黒色に変換することによりグレースケール画像を二値化画像に変換する処理である。この一例において、当該閾値は、ロボット制御装置３０が検出するマーカー毎に決定（選択）される輝度値であり、０から２５５までの範囲において決定（選択）されるいずれか１つの整数が示す輝度値である。なお、ロボット制御装置３０は、撮像画像を２５６階調のグレースケール画像に変換する構成に代えて、他の階調のグレースケール画像に変換する構成であってもよい。
【００４７】
ロボット制御装置３０が撮像画像からマーカーを検出する精度は、この二値化処理を行う際の所定の閾値として選択された輝度値に応じて変化する。より具体的には、所定の閾値として、マーカーを検出するために適した輝度値が選択されておらず、マーカーを検出するために適していない輝度値が選択されている場合、ロボット制御装置３０は、Ｎ個のマーカーのうちの一部又は全部を検出できない場合がある。この一例において、所定の閾値としてマーカーを検出するために適した輝度値とは、Ｎ個のマーカーを含む撮像画像からＮ個のマーカーを全て検出することが可能な二値化画像へ撮像画像を変換する二値化処理を実現する値である。なお、所定の閾値としてマーカーを検出するために適した輝度値とは、これに代えて、Ｎ個のマーカーを含む撮像画像からＮ個のマーカーを所定数以上検出することが可能な二値化画像へ撮像画像を変換する二値化処理を実現する値や、Ｎ個のマーカーを含む撮像画像から最も多くのマーカーを検出することが可能な二値化画像へ撮像画像を変換する二値化処理を実現する値等の他の値であってもよい。
【００４８】
ロボット制御装置３０は、ロボット２０に所定の作業を行わせる際、事前に撮像画像を二値化画像に変換するための閾値を決定する処理を行う。本実施形態では、ロボット制御装置３０が当該閾値を決定する処理について詳しく説明する。ここで、当該処理の概要を説明する。ロボット制御装置３０は、１以上のマーカーが含まれる画像（例えば、前述の撮像画像）の少なくとも一部を二値化する閾値である第１閾値を、当該画像から検出されたマーカーの数に基づいて決定する。これにより、ロボット制御装置３０は、高い精度でマーカーを検出することができ、その結果、画像に含まれる全部のマーカーを検出することができる。
【００４９】
＜マーカーの詳細＞
以下、ロボット制御装置３０が撮像画像から検出するマーカーの詳細について説明する。この一例におけるマーカーは、図心マーカーである。ここで、図２〜図７を参照し、図心マーカーについて説明する。
【００５０】
まず、図心マーカーの図心について説明する。図２は、図心を説明するための図である。図２には、輪郭が曲線によって形成された図形Ｆ０と、図形Ｆ０を構成する各点の位置を表すための二次元座標系と、当該各点の位置を示すベクトルｒ＿ｉとが示されている。ここで、図２では、ベクトルｒを、ｒの上に矢印を付帯させることによって表している。また、ベクトルｒ＿ｉの「＿」の後に付された「ｉ」は、図２に示したベクトルｒの下付き添え字ｉを示している。また、添え字ｉは、図形Ｆ０を構成する各点（例えば、画素）を区別するためのラベルである。また、図２において、二次元座標系の原点から図形Ｆ０へ伸びる矢印は、ベクトルｒ＿ｉの大きさ及び方向を表す矢印である。
【００５１】
図心は、云わば図形の中心である。図心は、１つの図形に対して１つのみ一意に決まる。図２に示した図形Ｆ０の図心の位置は、ベクトルｒ＿ｉを用いて、以下に示した式（１）によって定義されるベクトルｃによって表される。
【００５２】
【数１】
2017076308.tif 000003
【００５３】
式（１）において、ベクトルｃは、ｃの上に矢印を付帯させることによって表している。また、Ｎは、図形Ｆ０を構成する各点の数であり、１以上の整数である。すなわち、図２に示した図形Ｆ０の図心の位置は、図形Ｆ０を構成する各点の位置を表すベクトルの総和を、当該各点の数によって除したベクトル（Ｎ個のベクトルの平均）によって表される。なお、図２では、二次元の図形Ｆ０と、二次元の座標系と、二次元のベクトルとを用いて図心について説明したが、図心の位置は、三次元以上の図形に対しても上記の式（１）によって定義されるベクトルｃによって表される。
【００５４】
図心マーカーは、３以上の図形の組み合わせによって構成されるマーカーである。また、図心マーカーを構成する当該３以上の図形それぞれの図心は、所定の範囲内に収まる（含まれる）。例えば、図形Ａ０と、図形Ｂ０と、図形Ｃ０との組み合わせによって構成される図心マーカーは、図形Ａ０の図心Ａ１と、図形Ｂ０の図心Ｂ１と、図形Ｃ０の図心Ｃ１とが所定の範囲内に収まる（含まれる）。所定の範囲は、例えば、半径が数画素程度の円形の範囲であるが、半径が１画素未満の円形の範囲であってもよく、半径が数画素以上の円形の範囲であってもよく、矩形等の円形とは異なる他の形状の範囲であってもよい。
【００５５】
図３は、図心マーカーの一例を示す図である。図３に示したマーカーＭｋ１は、図１に示した対象物Ｏ１に貼付されている図心マーカーである。図３に示したように、図心マーカーを構成する３以上の図形は、二値化画像において白色又は黒色のみの部分領域として検出される。マーカーＭｋ１は、輪郭が円形状の黒色の部分領域によって表される図形Ｍ１１と、輪郭がリング形状の白色の部分領域によって表される図形Ｍ１２と、輪郭がリング形状の黒色の部分領域によって表される図形Ｍ１３との３つの図形によって構成されている。また、マーカーＭｋ１は、図形Ｍ１１と、図形Ｍ１２と、図形Ｍ１３とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形Ｍ１１と、図形Ｍ１２と、図形Ｍ１３との組み合わせによって構成されるマーカーＭｋ１は、図心マーカーである。なお、マーカーＭｋ１における図形Ｍ１１〜図形Ｍ１３は、同心円であり、図心が当該同心円の中心に位置する。
【００５６】
図４は、図心マーカーの他の例を示す図である。図４に示したマーカーＭｋＮは、図１に示した対象物ＯＮに貼付されている図心マーカーである。マーカーＭｋＮは、輪郭が円形状の白色の部分領域によって表される図形ＭＮ１と、輪郭がリング形状の黒色の部分領域によって表される図形ＭＮ２と、輪郭がリング形状の白色の部分領域によって表される図形ＭＮ３と、輪郭がリング形状の黒色の部分領域によって表される図形ＭＮ４との４つの図形によって構成されている。また、マーカーＭｋＮは、図形ＭＮ１と、図形ＭＮ２と、図形ＭＮ３と、図形ＭＮ４とのそれぞれの図心が、所定の範囲内に収まるように作られている。このため、図形ＭＮ１と、図形ＭＮ２と、図形ＭＮ３と、図形ＭＮ４との組み合わせによって構成されるマーカーＭｋＮは、図心マーカーである。なお、マーカーＭｋＮにおける図形ＭＮ１〜図形ＭＮ３は、同心円であり、図心が当該同心円の中心に位置する。
【００５７】
図３及び図４に示したマーカーＭｋ１及びマーカーＭｋＮは、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成していた。しかし、図心マーカーは、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成するもののみに限られない。図５〜図７に示した図心マーカーは、図心マーカーを構成する３以上の図形の組み合わせが同心円を構成していない場合の例である。図５は、同心円を構成していない３つの図形によって構成される図心マーカーの一例を示す図である。図６は、同心円を構成していない４つの図形によって構成される図心マーカーの一例を示す図である。図７は、同心円を構成していない４つの図形によって構成される図心マーカーの他の例を示す図である。
【００５８】
この一例において、これらの図心マーカーが貼付された物体（例えば、図１に示した対象物Ｏ１〜対象物ＯＮのそれぞれ）の位置は、当該図心マーカーの図心の位置によって表される。当該図心マーカーの図心の位置は、所定の範囲内に含まれる３以上の図心の位置を示すベクトルの総和を図心の数で除したベクトル（３以上のベクトルの平均）によって表される。なお、当該図心マーカーが貼付された物体の位置は、これに代えて、当該図心マーカーの図心の位置に対応付けられた他の位置によって表される構成であってもよい。本実施形態に係るロボット制御装置３０は、図３〜図７に示したような図心マーカーであるマーカーＭｋ１〜マーカーＭｋＮのそれぞれを撮像画像から検出し、検出したマーカーＭｋ１〜マーカーＭｋＮのそれぞれの図心の位置を、対象物Ｏ１〜対象物ＯＮのそれぞれの位置として算出する。
【００５９】
なお、ロボット制御装置３０が検出するマーカーは、これらの図心マーカーに代えて、カラーマーカーやバーコード、ＱＲコード（登録商標）等の他のマーカーであってもよい。
【００６０】
＜二値化の閾値とロボット制御装置３０がマーカーを検出する精度の関係＞
以下、図８〜図１２を参照し、二値化の閾値とロボット制御装置３０がマーカーを検出する精度の関係について説明する。
【００６１】
図８は、６４個の図心マーカーを含む撮像画像の一例を示す図である。図８に示した撮像画像Ｇ１には、マーカーＭｋｓ１からマーカーＭｋｓ６４までの６４個の図心マーカーＭｋｓが含まれている。マーカーを検出するために適していない輝度値をロボット制御装置３０が撮像画像Ｇ１の二値化の閾値として選択している場合、ロボット制御装置３０が撮像画像Ｇ１を二値化した二値化画像は、図９に示した二値化画像Ｇ２のようになる。
【００６２】
図９は、マーカーを検出するために適していない輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した場合の二値化画像の一例を示す図である。図９に示したように、マーカーを検出するために適していない輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した二値化画像Ｇ２では、撮像画像Ｇ１に含まれていた６４個の図心マーカーのうちの少なくとも一部が黒く塗り潰されてしまう。
【００６３】
図１０は、図９に示した二値化画像Ｇ２からロボット制御装置３０により検出された図心マーカーを構成する３以上の図形のそれぞれを例示する図である。図１０では、当該図形のそれぞれを、ハッチングの違いによって区別している。図１０に示したように、二値化画像Ｇ２からロボット制御装置３０が検出した図心マーカーを構成する３以上の図形は、一部が黒く塗り潰されており、他の一部が元の形と異なる形の図形として検出されており、更に他の一部において図心マーカーを構成する３以上の図形の一部が１つの図形として検出されており、残りの一部が正常に検出されている。すなわち、ロボット制御装置３０は、マーカーを検出するために適していない輝度値に基づいて撮像画像Ｇ１を二値化した二値化画像Ｇ２からは、マーカーＭｋｓ１からマーカーＭｋｓ６４までの全ての図心マーカーを検出することができていない。
【００６４】
一方、図１１は、マーカーを検出するために適した輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した場合の二値化画像の一例を示す図である。図１１に示したように、マーカーを検出するために適した輝度値に基づいてロボット制御装置３０が図８に示した撮像画像Ｇ１を二値化した二値化画像Ｇ３では、撮像画像Ｇ１に含まれていた６４個の図心マーカーは全て、黒く塗り潰されていない。
【００６５】
図１２は、図１１に示した二値化画像Ｇ２からロボット制御装置３０により検出された図心マーカーを構成する３以上の図形のそれぞれを例示する図である。図１２では、当該図形のそれぞれを、ハッチングの違いによって区別している。図１２に示したように、二値化画像Ｇ３からロボット制御装置３０が検出した図心マーカーを構成する３以上の図形は、全てが正常に検出されている。すなわち、ロボット制御装置３０は、マーカーを検出するために適した輝度値に基づいて撮像画像Ｇ１を二値化した二値化画像Ｇ３からは、マーカーＭｋｓ１からマーカーＭｋｓ６４までの全ての図心マーカーを検出することができている。
【００６６】
このように、二値化の閾値として選択した輝度値が対象マーカーを検出するために適していない輝度値である場合、ロボット制御装置３０は、対象マーカーを検出することができない場合があるが、二値化の閾値として選択した輝度値が対象マーカーを検出するために適した輝度値である場合、ロボット制御装置３０は、対象マーカーを検出することができる。このため、ロボット制御装置３０が対象マーカーを検出するために適している輝度値を二値化の閾値として選択することは、ロボット制御装置３０がロボット２０に高い精度で作業を行わせる上で重要である。
【００６７】
＜ロボット制御装置３０のハードウェア構成＞
以下、図１３を参照し、ロボット制御装置３０のハードウェア構成について説明する。図１３は、ロボット制御装置３０のハードウェア構成の一例を示す図である。ロボット制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。また、ロボット制御装置３０は、通信部３４を介してロボット２０と通信を行う。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。
【００６８】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報や画像、プログラム、図示しない給材領域の位置を示す情報等を格納する。
【００６９】
入力受付部３３は、例えば、キーボードやマウス、タッチパッド等を備えたティーチングペンダントや、その他の入力装置である。なお、入力受付部３３は、タッチパネルとして表示部３５と一体に構成されてもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００７０】
＜ロボット制御装置３０の機能構成＞
以下、図１４を参照し、ロボット制御装置３０の機能構成について説明する。図１４は、ロボット制御装置３０の機能構成の一例を示す図である。ロボット制御装置３０は、記憶部３２と、制御部３６を備える。
【００７１】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、撮像制御部４０と、画像取得部４２と、画像処理部４４と、ロボット制御部４６を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、これらの機能部のうち一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００７２】
撮像制御部４０は、作業領域を含む撮像範囲を第３撮像部２３と第４撮像部２４にステレオ撮像させる。
画像取得部４２は、第３撮像部２３と第４撮像部２４がステレオ撮像した撮像画像を、第３撮像部２３と第４撮像部２４から取得する。
【００７３】
画像処理部４４は、画像取得部４２が取得した撮像画像に対して各種の画像処理を行う。画像処理部４４は、グレースケール化処理部５０と、第２閾値設定部５１と、二値化処理部５２と、領域検出部５３と、ラベリング部５４と、マーカー検出部５５と、評価値算出部５６と、第１閾値決定部５７を備える。
【００７４】
グレースケール化処理部５０は、画像取得部４２が取得した撮像画像をグレースケール画像に変換する。
第２閾値設定部５１は、グレースケール画像を二値化するための仮の閾値である第２閾値を二値化処理部５２に設定する。
二値化処理部５２は、第２閾値設定部５１に設定された第２閾値に基づいて、グレースケール画像を二値化画像に変換する。また、二値化処理部５２は、第１閾値決定部５７が決定した第１閾値に基づいてグレースケール画像を二値化画像に変換する。
【００７５】
領域検出部５３は、二値化画像から１以上の部分領域を検出する。領域検出部５３が検出する部分領域は、当該撮像画像内における１以上の白色の画素のみから構成される領域である白色部分領域と、当該撮像画像内における１以上の黒色の画素のみから構成される黒色部分領域である。なお、領域検出部５３は、当該撮像画像内から選択した画素を中心とした８画素近傍に当該画素の色と同じ色の画素が存在する場合、これらの画素を繋がった１つの部分領域に含まれる画素と見做す。
【００７６】
ラベリング部５４は、領域検出部５３が検出した部分領域を区別するためのラベリングを行う。例えば、ラベリング部５４は、当該部分領域毎に領域ＩＤを対応付けることによりラベリングを行う。
マーカー検出部５５は、二値化画像から図心マーカーを検出する。
【００７７】
評価値算出部５６は、ラベリング部５４がラベリングした部分領域の数と、マーカー検出部５５が検出した図心マーカーの数とを算出する。そして、評価値算出部５６は、算出した当該部分領域の数と、当該図心マーカーの数とに基づいて、第２閾値設定部５１が二値化処理部５２に設定した第２閾値がマーカーを検出するために適しているか否かを評価する評価値を算出する。
【００７８】
第１閾値決定部５７は、第２閾値設定部５１が二値化処理部５２に設定した複数の第２閾値毎に評価値算出部５６が算出した評価値に基づいて、複数の第２閾値から最も高い評価値の第２閾値を、マーカーを検出するために適した閾値である第１閾値として決定する。なお、第１閾値決定部５７は、これに代えて、当該評価値に基づく他の第２閾値を第１閾値として決定する構成であってもよい。この場合、例えば、第１閾値決定部５７は、所定値以上の第２閾値の中から所定の規則に基づいて選択された第２閾値を第１閾値として決定する。所定の規則は、例えば、所定値以上の第２閾値の中からランダムに第１閾値とする第２閾値を選択する規則であってもよく、所定値以上の第２閾値の中から最大の第２閾値を第１閾値として選択する規則であってもよく、所定値以上の第２閾値の中から最小の第２閾値を第１閾値として選択する規則であってもよい。
ロボット制御部４６は、マーカー検出部５５が検出した図心マーカーに基づいて所定の作業をロボット２０に行わせる。
【００７９】
＜制御部３６が第１閾値を決定するために行う処理の流れについて＞
以下、図１５を参照し、制御部３６が第１閾値を決定するために行う処理について説明する。図１５は、制御部３６が第１閾値を決定するために行う処理の流れの一例を示すフローチャートである。なお、以下では、画像取得部４２がすでに第３撮像部２３及び第４撮像部２４から撮像画像を取得した後の制御部３６の処理の流れについて説明する。
【００８０】
評価値算出部５６は、ステップＳ１３０からステップＳ２３０までの処理において利用する最大評価値をゼロに初期化する（ステップＳ１００）。なお、評価値算出部５６は、これに代えて、最大評価値を他の値に初期化する構成であってもよい。次に、評価値算出部５６は、ステップＳ１３０からステップＳ２３０までの処理において利用する最大閾値をゼロに初期化する（ステップＳ１１０）。なお、評価値算出部５６は、これに代えて、最大閾値を他の値に初期化する構成であってもよい。次に、評価値算出部５６は、二値化処理部５２に設定されている第２閾値をゼロに初期化する（ステップＳ１２０）。なお、評価値算出部５６は、これに代えて、二値化処理部５２に設定されている第２閾値を他の値に初期化する構成であってもよい。
【００８１】
ステップＳ１００からステップＳ１２０までの処理は、評価値算出部５６が行う構成に代えて、制御部３６が備える他の機能部が行う構成であってもよい。また、ステップＳ１００からステップＳ１２０までの処理は、図１５に示した順序と異なる順序で行われる構成であってもよく、並列に行われる構成であってもよい。
【００８２】
次に、制御部３６は、画像取得部４２が取得した撮像画像に対して１以上の探索範囲を設定し、設定した探索範囲毎にステップＳ１４０からステップＳ２２０までの処理を繰り返し実行する（ステップＳ１３０）。この一例において、探索範囲は、１つのみの場合（すなわち、探索範囲が撮像画像の全体である場合）について説明する。
【００８３】
ステップＳ１３０において探索範囲が選択された後、第２閾値設定部５１は、０から２５５までの輝度値を１つずつ第２閾値として選択し、選択した第２閾値毎にステップＳ１４５からステップＳ２２０までの処理を繰り返し行う（ステップＳ１４０）。例えば、第２閾値設定部５１は、０から２５５までの輝度値（０を含む２５６個の整数値）を０から順に１つずつ第２閾値として選択する。なお、第２閾値設定部５１は、これに代えて、０から２５５までの輝度値をランダムに１つずつ第２閾値として選択する構成等の他の構成であってもよい。
【００８４】
ステップＳ１４０において第２閾値設定部５１が第２閾値を選択した後、第２閾値設定部５１は、当該第２閾値を二値化処理部５２に設定する（ステップＳ１４５）。次に、グレースケール化処理部５０は、画像取得部４２が取得した撮像画像をグレースケール画像に変換する（ステップＳ１５０）。次に、二値化処理部５２は、ステップＳ１４５において第２閾値設定部５１により設定された第２閾値に基づいて、ステップＳ１５０においてグレースケール化処理部５０が変換したグレースケール画像を二値化画像に変換する（ステップＳ１６０）。
【００８５】
次に、領域検出部５３は、ステップＳ１６０において二値化処理部５２が変換した二値化画像から白色部分領域と、黒色部分領域とを部分領域として検出する。そして、ラベリング部５４は、領域検出部５３が検出した部分領域のそれぞれを区別するためのラベリングを行う（ステップＳ１７０）。
【００８６】
ここで、ステップＳ１７０の処理について説明する。領域検出部５３が検出する部分領域には、二値化画像に含まれるノイズにより検出される部分領域と、図心マーカーを構成する３以上の図形のそれぞれにより検出される部分領域とが含まれる。二値化画像に含まれるノイズには、撮像画像における図心マーカー以外の背景や、撮像画像中の光の反射や干渉縞、グレースケール化や二値化に伴う輝度値の揺らぎ等が含まれる。領域検出部５３は、これらのノイズにより二値化画像上に発生している白色部分領域のそれぞれと、黒色部分領域のそれぞれと、図心マーカーを構成する３以上の図形のそれぞれにより検出される白色部分領域のそれぞれと、図心マーカーを構成する３以上の図形のそれぞれにより検出される黒色部分領域のそれぞれとを部分領域として検出する。そして、ラベリング部５４は、領域検出部５３が検出したこれらの部分領域のそれぞれを区別するためのラベリングを行う。
【００８７】
次に、マーカー検出部５５は、ステップＳ１６０において二値化処理部５２が変換した二値化画像から図心マーカーを検出する（ステップＳ１８０）。ここで、ステップＳ１８０の処理について説明する。マーカー検出部５５は、ステップＳ１７０においてラベリング部５４がラベリングした部分領域のそれぞれを図形とした場合の各図形の図心の位置を算出する。そして、マーカー検出部５５は、算出した図心の位置に基づいて、３以上の図心が所定の範囲内に収まっている図形（すなわち、部分領域）の組み合わせを図心マーカーとして検出する。二値化画像に含まれるノイズにより検出される部分領域のうち、３以上の図心が所定の範囲内に収まる部分領域が検出される確率は、２つの図心が所定の範囲内に収まる部分領域が検出される確率に比べて数桁小さくなる。これに伴い、マーカー検出部５５が二値化画像に含まれるノイズにより検出される部分領域を、図心マーカーを構成する図形として検出してしまう確率は小さくなる。このため、本実施形態では、二値化画像からノイズを除去する処理を行っていないが、画像処理部４４は、二値化画像からノイズを除去する処理を行う構成であってもよい。
【００８８】
次に、評価値算出部５６は、ステップＳ１７０においてラベリング部５４がラベリングした部分領域の数を算出する。また、評価値算出部５６は、ステップＳ１８０においてマーカー検出部５５が検出した図心マーカーの数を算出する。評価値算出部５６は、算出した図心マーカーの数と、算出した部分領域の数とに基づいて評価値を算出する。（ステップＳ１９０）。例えば、評価値算出部５６は、図心マーカーの数を部分領域の数で除算した値を評価値として算出する。なお、評価値算出部５６は、図心マーカーの数を部分領域の数で除算した値に重みを乗算した値等、図心マーカーの数と部分領域の数とに基づく他の値を評価値として算出する構成であってもよい。
【００８９】
評価値算出部５６は、ステップＳ１９０において算出した評価値が現在の最大評価値より大きいか否かを判定する（ステップＳ２００）。ステップＳ１９０において算出した評価値が現在の最大評価値より大きいと判定した場合（ステップＳ２００−Ｙｅｓ）、評価値算出部５６は、ステップＳ１９０において算出した評価値を最大評価値に設定する（ステップＳ２１０）。次に、評価値算出部５６は、現在の第２閾値を最大閾値に設定する（ステップＳ２２０）。そして、第２閾値設定部５１は、ステップＳ１４０に遷移し、次の輝度値を第２閾値として選択する。
【００９０】
一方、ステップＳ１９０において算出した評価値が現在の最大評価値より大きくないと評価値算出部５６が判定した場合（ステップＳ２００−Ｎｏ）、第２閾値設定部５１は、ステップＳ１４０に遷移し、次の輝度値を第２閾値として選択する。そして、ステップＳ１４０において選択可能な全ての輝度値についてステップＳ１４５からステップＳ２２０までの処理を行った後、制御部３６は、ステップＳ１３０に遷移し、次の探索領域を選択し、再びステップＳ１４０からステップＳ２２０までの処理を行う。なお、この一例において、探索領域は、１つのみであるため、制御部３６は、ステップＳ１４０からステップＳ２２０までの処理を１回のみ実行する。
【００９１】
このようにして、制御部３６は、全ての探索領域、すなわち撮像画像の全体についてステップＳ１４０において選択された第２閾値毎に評価値を算出する。ここで、図１６〜図１８を参照し、第２閾値毎に算出された評価値について説明する。図１６は、ステップＳ１７０において領域検出部５３が検出した部分領域の数を、第２閾値毎にプロットしたグラフの一例を示す図である。図１６において、横軸が第２閾値（すなわち、ステップＳ１４０において選択される輝度値）を表し、縦軸が当該部分領域の数を表している。
【００９２】
図１６に示したように、第２閾値として選択可能な輝度値が０から２５５までの２５６階調であるため、第２閾値が０から２５５までの中間である１２７及び１２８付近において、部分領域の数は最大となる。また、第２閾値が１２７及び１２８付近から離れるほど、部分領域の数は減少していく。この理由は、二値化画像に含まれるノイズにより検出される部分領域が白色部分領域と黒色部分領域のいずれか一方に偏って当該二値化画像上に現れる確率が低く、１２７及び１２８付近において白色部分領域と黒色部分領域とが同程度の数となっているのに対し、１２７及び１２８付近から第２閾値が０側に離れるほど黒色部分領域の数が減少し、１２７及び１２８付近から第２閾値が２５５側に離れるほど白色部分領域の数が減少するためである。また、図１６に示したグラフが複数のピークを有する理由は、人為的に配置された図心マーカーを構成する図形により検出される部分領域の数が、二値化画像に含まれるノイズにより検出される部分領域の数に上乗せされているためである。
【００９３】
図１６に示したグラフに対し、図１７は、ステップＳ１８０においてマーカー検出部５５が検出した図心マーカーの数を、第２閾値毎にプロットしたグラフの一例を示す図である。図１７において、横軸が第２閾値（すなわち、ステップＳ１４０において選択される輝度値）を表し、縦軸が当該図心マーカーの数を表している。
【００９４】
図１７に示したように、このグラフは、２つのピークを有している。１つ目のピークは、第２閾値が０から２５５までの中間である１２７及び１２８付近のピークである。当該ピークは、二値化画像に含まれるノイズにより検出される部分領域を図形とした場合の図心が、偶然３以上所定の範囲内に収まっていることによる図心マーカーの誤検出によって現れたピークである。このような図心マーカーの誤検出は、二値化画像に含まれるノイズにより検出される部分領域の数が多いほど多くなり、二値化画像に含まれるノイズにより検出される部分領域の数が少ないほど少なくなる。すなわち、図心マーカーの誤検出の数は、二値化画像に含まれるノイズにより検出される部分領域の数に比例する。このため、当該ピークは、第２閾値が０から２５５までの中間である１２７及び１２８付近にのみ現れる。一方、２つ目のピークは、人為的に配置された図心マーカーが検出されることにより現れるピークである。
【００９５】
図１６及び図１７に示した部分領域の数と図心マーカーの数とに基づいて、評価値算出部５６は、図１８に示したような評価値を算出する。図１８は、ステップＳ１８０において評価値算出部５６が算出した評価値を、第２閾値毎にプロットしたグラフの一例を示す図である。図１８において、横軸が第２閾値（すなわち、ステップＳ１４０において選択される輝度値）を表し、縦軸が当該評価値を表している。なお、図１８に示したグラフの縦軸については、グラフの変化を明確に示すため、評価値の値を１００倍にスケール変換している。
【００９６】
図１８からは、二値化画像に含まれるノイズによって現れていたピークが、第２閾値が０から２５５までの中間である１２７及び１２８付近から消えており、人為的に配置された図心マーカーが検出されることにより現れるピークＰｋのみが現れていることが分かる。これは、図心マーカーの誤検出の数が、二値化画像に含まれるノイズにより検出される部分領域の数に比例しているため、当該誤検出の数を二値化画像に含まれるノイズにより検出される部分領域の数で除算した値が、第２閾値の値に依らず略一定になる傾向があるためである。このことから、制御部３６は、ピークＰｋにおける評価値が算出される第２閾値を用いてグレースケール画像を二値化することにより、全ての図心マーカーを二値化画像から検出することができる。
【００９７】
これを利用し、全ての探索領域、すなわち撮像画像の全体についてステップＳ１４０において選択された第２閾値毎に評価値を算出した後（ステップＳ１３０からステップＳ２２０までの処理が終了した後）、第１閾値決定部５７は、現在の最大閾値を第１閾値に決定し（ステップＳ２３０）、処理を終了する。当該最大閾値は、例えば、図１８に示したピークＰｋにおける評価値が算出される第２閾値である。
【００９８】
なお、図１５に示したフローチャートでは、ロボット制御装置３０が、第３撮像部２３及び第４撮像部２４がステレオ撮像した撮像画像、すなわち所定の作業において位置を検出したいマーカー（この一例において、マーカーＭｋ１〜マーカーＭｋＮのそれぞれ）を含む撮像画像に基づいて第１閾値を決定する処理について説明した。しかし、ロボット制御装置３０により第１閾値を決定する処理は、これに限られず、当該撮像画像と異なる他の画像であって当該マーカーを含む画像に基づいて第１閾値を決定する処理であってもよい。この場合、当該画像の撮像条件は、当該撮像画像の撮像条件と似ていることが望ましい。撮像条件は、例えば、撮像画像が撮像された際の当該撮像画像に含まれる１以上のマーカーの一部又は全部に対する照明の明るさの違いや、当該撮像画像に含まれる１以上のマーカーの一部又は全部の配置位置の違い、当該撮像画像が撮像された日時や季節の違い、当該撮像画像が撮像された場所の違い等によって定まる条件である。
【００９９】
＜制御部３６がロボット２０に所定の作業を行わせる処理の流れについて＞
以下、図１９を参照し、図１５に示したフローチャートにおける処理によって決定された第１閾値に基づいて制御部３６がロボット２０に所定の作業を行わせる処理について説明する。図１９は、制御部３６がロボット２０に所定の作業を行わせる処理の流れの一例を示すフローチャートである。なお、以下では、図１５に示したフローチャートにおける処理によってすでに第１閾値が決定された後の制御部３６の処理の流れについて説明する。
【０１００】
撮像制御部４０は、図１に示した作業領域を含む撮像範囲を第３撮像部２３及び第４撮像部２４にステレオ撮像させる（ステップＳ３００）。次に、画像取得部４２は、ステップＳ３００において第３撮像部２３及び第４撮像部２４にステレオ撮像させた撮像画像を第３撮像部２３及び第４撮像部２４から取得する（ステップＳ３１０）。なお、ステップＳ３１０において画像取得部４２が取得する撮像画像は、図１５に示したフローチャートにおける処理において扱われている撮像画像とは異なる被写体が撮像されている撮像画像（例えば、マーカーの位置が異なっている画像や、背景が異なっている画像等）であってもよく、同じ被写体が撮像されている撮像画像であってもよい。この一例では、ステップＳ３１０において画像取得部４２が取得する撮像画像は、図１５に示したフローチャートにおける処理において扱われている撮像画像と同じ被写体が撮像された撮像画像である場合について説明する。
【０１０１】
次に、グレースケール化処理部５０は、ステップＳ３１０において画像取得部４２が取得した撮像画像をグレースケール画像に変換する。そして、二値化処理部５２は、事前に第１閾値決定部５７が決定した第１閾値に基づいて、グレースケール化処理部５０が変換したグレースケール画像を二値化画像に変換する。マーカー検出部５５は、二値化処理部５２が第１閾値に基づいて変換した二値化画像から、図１に示した図心マーカーであるマーカーＭｋ１〜マーカーＭｋＮのそれぞれを検出する（ステップＳ３２０）。
【０１０２】
次に、ロボット制御部４６は、ステップＳ３２０においてマーカー検出部５５が検出したマーカーＭｋ１〜マーカーＭｋＮの図心それぞれの位置を、図１に示した対象物Ｏ１〜対象物ＯＮそれぞれの位置として算出する（ステップＳ３３０）。次に、ロボット制御部４６は、ステップＳ３３０において算出した対象物Ｏ１〜対象物ＯＮそれぞれの位置に基づいて、対象物Ｏ１〜対象物ＯＮを１つずつ第１アームに把持させて図示しない給材領域に給材させる（ステップＳ３４０）。なお、ロボット制御部４６は、予め記憶部３２から給材領域の位置を示す情報を読み出している。ロボット制御部４６は、第１アームに対象物Ｏ１〜対象物ＯＮを全て給材領域に給材させた後、処理を終了する。
【０１０３】
このようにして、制御部３６は、図１５に示したフローチャートにおける処理によって決定された第１閾値に基づいて制御部３６がロボット２０に所定の作業を行わせる。なお、図１９に示したフローチャートでは、ロボット制御装置３０が、第３撮像部２３及び第４撮像部２４により撮像範囲が撮像された撮像画像に基づいて決定された第１閾値を用いて、当該撮像画像を二値化してマーカー（この一例において、マーカーＭｋ１〜マーカーＭｋＮのそれぞれ）を検出し、検出した当該マーカーに基づいて所定の作業を行う処理について説明した。しかし、ロボット制御装置３０により当該マーカーを検出する処理は、これに限られず、当該撮像画像とは異なる他の画像に基づいて決定された第１閾値を用いて当該撮像画像を二値化して当該マーカーを検出する処理であってもよい。
【０１０４】
＜第１閾値の決定の応用＞
以下、図２０を参照し、第１閾値の決定の応用について説明する。図２０は、外周を複数の図心マーカーによって囲まれた３つのトレーを含む撮像範囲が撮像された撮像画像の一例を示す図である。図２０において、撮像画像Ｇ４には、複数の対象物ＯＢ１が配置されたトレーＴＲ１と、複数の対象物ＯＢ２が配置されたトレーＴＲ２と、複数の対象物ＯＢ３が配置されたトレーＴＲ３とが含まれる。トレーＴＲ１〜トレーＴＲ３のそれぞれは、外周を複数の図心マーカーによって囲まれている。
【０１０５】
制御部３６は、撮像画像Ｇ４を取得した後、図１５に示したフローチャートにおける処理によって、トレーＴＲ１〜トレーＴＲ３のそれぞれの外周を取り囲んでいる図心マーカーを検出するために適した輝度値を第１閾値として決定する。この際、図１５に示したステップＳ１３０において選択される探索領域が複数であり、トレーＴＲ１〜トレーＴＲ３のそれぞれが異なる探索領域に含まれている場合、制御部３６は、トレーＴＲ１〜トレーＴＲ３のそれぞれ毎に第１閾値を決定することができる。
【０１０６】
また、トレーＴＲ１〜トレーＴＲ３のそれぞれの外周を取り囲んでいる図心マーカーを検出するために適した輝度値は、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出するために適した輝度値である可能性が高い。そこで、制御部３６は、トレーＴＲ１〜トレーＴＲ３のそれぞれの外周を取り囲んでいる図心マーカーを検出するために適した輝度値を、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出するために適した輝度値として決定する。この場合、当該第１閾値は、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出するために適した輝度値のことである。
【０１０７】
この一例において、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体は、図２０に示した複数の対象物ＯＢ１と、複数の対象物ＯＢ２と、複数の対象物ＯＢ３のそれぞれである。制御部３６は、図１５に示したフローチャートにおける処理によって、第１閾値として、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出するために適した輝度値を決定する。そして、制御部３６は、決定した第１閾値に基づいて、トレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出する。これにより、ロボット制御装置３０は、高い精度でトレーＴＲ１〜トレーＴＲ３のそれぞれに配置された物体を検出することができる。制御部３６は、検出した物体それぞれの位置を算出し、算出した位置に基づいて、当該物体をロボット２０に１つずつ把持させて給材領域に給材させる。
【０１０８】
なお、上記の実施形態において説明したロボット制御装置３０は、１以上の図心マーカーが含まれる撮像画像の少なくとも一部を二値化する閾値である第１閾値を、当該撮像画像から検出された図心マーカーの数に基づいて決定する構成であったが、これに代えて、当該撮像画像の少なくとも一部を多値化する閾値を、当該撮像画像から検出された図心マーカーの数に基づいて決定する構成であってもよい。多値化は、三値化や四値化等の三色以上の画像へとグレースケール画像を変換することを示す。例えば、多値化の一例である三値化は、グレースケール画像上における所定の閾値Ｘ１１以上であり所定の閾値Ｘ１２未満である輝度値の画素の色を第１色（例えば、白色）に変換し、当該グレースケール画像上における所定の閾値Ｘ１２以上であり所定の閾値Ｘ１３未満である輝度値の画素の色を第２色（例えば、赤色）に変換し、当該グレースケール画像上における所定の閾値Ｘ１３以上であり所定の閾値Ｘ１４未満である輝度値の画素の色を第３色（例えば、黒色）に変換することである。この場合、ロボット制御装置３０は、これらの閾値Ｘ１１〜閾値Ｘ１４のそれぞれを、１以上の図心マーカーが含まれる撮像画像から検出された図心マーカーの数に基づいて決定する。
【０１０９】
また、上記の実施形態において説明したロボット制御装置３０は、図１５に示したフローチャートにおけるステップＳ１００の処理の前に、二値化処理を行わなくても図心マーカーが検出可能であるか否かを判定し、その判定結果に応じて撮像画像から図心マーカーを検出する構成であってもよい。この場合、ロボット制御装置３０は、ステップＳ１００の処理の前に、画像取得部４２が第３撮像部２３及び第４撮像部２４から取得した撮像画像から図心マーカーの検出を行う。そして、ロボット制御装置３０は、当該検出による図心マーカーの検出に成功したか否かを判定する。ロボット制御装置３０は、図心マーカーの検出に成功したと判定した場合、第１閾値を決定せず（二値化を行わず）、検出した図心マーカーに基づいて、図１９に示したフローチャートにおけるステップＳ３３０〜ステップＳ３４０の処理を実行する。一方、図心マーカーの検出に失敗したと判定した場合、図１５に示したフローチャートにおけるステップＳ１００〜ステップＳ２３０の処理を実行し、第１閾値を決定する。そして、ロボット制御装置３０は、決定した第１閾値に基づいて、図１９に示したステップＳ３００〜ステップＳ３４０の処理を実行する。
【０１１０】
以上説明したように、実施形態におけるロボット２０のロボット制御装置３０（又はロボット制御装置３０と別体の画像処理装置）は、１以上のマーカー（この一例において、図心マーカー）が含まれる画像（この一例において、前述の撮像画像）の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像（この一例において、１以上のマーカーが含まれる画像とは異なる被写体が撮像された撮像画像）から検出されたマーカーの数に基づいて決定する。これにより、ロボット制御装置３０は、高い精度でマーカーを検出することができる。
【０１１１】
また、ロボット制御装置３０は、第１閾値を決定するために用いられる仮の閾値である第２閾値の変化に応じて画像から検出されたマーカーの数に基づいて第１閾値を決定する。これにより、ロボット制御装置３０は、第２閾値の変化に応じて画像から検出されたマーカーの数に基づいて決定された第１閾値に基づいて、高い精度でマーカーを検出することができる。
【０１１２】
また、ロボット制御装置３０は、第１閾値をマーカーの数と、第２閾値を用いて当該画像を多値化した際に検出される領域の数とに基づいて決定する。これにより、ロボット制御装置３０は、マーカーの数と、第２閾値を用いて当該画像を多値化した際に検出される領域の数とに基づいて決定された第１閾値に基づいて、高い精度でマーカーを検出することができる。
【０１１３】
また、ロボット制御装置３０は、１以上のマーカーが含まれる画像の少なくとも一部を二値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、ロボット制御装置３０は、第１閾値を用いて二値化された画像からマーカーを検出することができる。
【０１１４】
また、ロボット制御装置３０は、１以上の図心マーカーが含まれる画像の少なくとも一部を多値化する閾値である第１閾値を、当該画像又は当該画像とは異なる画像から検出されたマーカーの数に基づいて決定する。これにより、ロボット制御装置３０は、高い精度で図心マーカーを検出することができる。
【０１１５】
また、ロボット制御装置３０は、第１閾値を用いて画像から対象物を検出する。これにより、ロボット制御装置３０は、高い精度で対象物を検出することができる。
【０１１６】
なお、制御部３６のうちの画像処理部４４は、画像処理装置としてロボット制御装置３０と別体であってもよい。この場合、ロボット２０と、ロボット制御装置３０と、当該画像処理装置とは、ロボットシステムを構成する。また、この場合、画像処理装置は、検出したマーカーに基づく情報をロボット制御装置３０とは異なる他の装置へと出力し、例えば、ＡＲ（Augmented  Reality）等のように、当該他の装置へ当該情報を表示させる構成であってもよい。検出したマーカーに基づく情報は、例えば、当該マーカーに対応付けられた情報である。
また、第１撮像部２１と、第２撮像部２２と、第３撮像部２３と、第４撮像部２４とのうちの一部又は全部は、ロボット２０と別体の撮像部であってもよい。この場合、ロボット２０と、ロボット２０と別体の撮像部と、ロボット制御装置３０と、画像処理装置とは、ロボットシステムを構成する。
【０１１７】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１１８】
また、以上に説明した装置（例えば、ロボット２０のロボット制御装置３０、又はロボット制御装置３０と別体の画像処理装置）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１１９】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１２０】
２０…ロボット、２１…第１撮像部、２２…第２撮像部、２３…第３撮像部、２４…第４撮像部、３０…ロボット制御装置、３１…ＣＰＵ、３２…記憶部、３３…入力受付部、３４…通信部、３５…表示部、３６…制御部、４０…撮像制御部、４２…画像取得部、４４…画像処理部、４６…ロボット制御部、５０…グレースケール化処理部、５１…第２閾値設定部、５２…二値化処理部、５３…領域検出部、５４…ラベリング部、５５…マーカー検出部、５６…評価値算出部、５７…第１閾値決定部
【図１】
2017076308.tif 000004
【図２】
2017076308.tif 000005
【図３】
2017076308.tif 000006
【図４】
2017076308.tif 000007
【図５】
2017076308.tif 000008
【図６】
2017076308.tif 000009
【図７】
2017076308.tif 000010
【図１０】
2017076308.tif 000011
【図１２】
2017076308.tif 000012
【図１３】
2017076308.tif 000013
【図１４】
2017076308.tif 000014
【図１５】
2017076308.tif 000015
【図１６】
2017076308.tif 000016
【図１７】
2017076308.tif 000017
【図１８】
2017076308.tif 000018
【図１９】
2017076308.tif 000019
【図８】
2017076308.tif 000020
【図９】
2017076308.tif 000021
【図１１】
2017076308.tif 000022
【図２０】
2017076308.tif 000023