(57)【特許請求の範囲】
【請求項１】
物体ごとに予め物体に記録されている情報であって画像処理によって物体を検出するためのプログラム処理を決定するための情報を複数の物体から読み取る読取手段と、
前記情報ごとに対応するプログラム処理を前記物体ごとに選択し、これら複数のプログラム処理の処理順序を決定する決定手段と、
撮像装置によって撮像された前記複数の物体を含む初期画像を取得する取得手段と、
前記初期画像を用いて前記処理順序で前記複数のプログラム処理を順に実行して前記複数の物体を順に検出する検出手段と、
直前に実行したプログラム処理に用いた前記初期画像から、検出された物体の領域の画像データを取り除いた除去後画像を生成する生成手段と、を具備し、
前記検出手段は、それぞれの除去後画像を用いて次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出し、
前記生成手段は、それぞれの除去後画像から、直前に検出された物体の領域の画像データを取り除き前記除去後画像を更新することを特徴とする画像処理装置。
【請求項２】
前記決定手段は、計算量の少ない順に、前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段は、プログラム処理で使用するアルゴリズム自体の検出成功率の高い順に、前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記決定手段は、前記検出手段が検出した直前の検出結果から得られる複数の物体の位置情報から、奥行き方向の距離のより近い物体を先に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記決定手段は、前記検出手段が検出した直前の検出結果から得られる複数の物体の他の物体による遮蔽率から、遮蔽率のより小さい物体を先に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
ある物体と、この物体を検出するために使用されたプログラム処理と、このプログラム処理を実行した時の検出成功率とを関連付けて記憶している記憶手段をさらに具備し、
前記決定手段は、前記記憶手段を参照して、検出成功率の高い物体とプログラム処理との組み合わせを先に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項７】
前記読み取り手段は、物体ごとに組み込まれている無線ＩＣタグに書き込まれた前記情報と、検出成功率とを受信する受信手段を具備し、
前記検出成功率は、前記情報と関連付けて前記無線ＩＣタグに書き込まれ、前記情報に基づいて選択されるプログラム処理を実行した際、物体検出の成功確率に関する情報であって、
前記決定手段は、前記各無線ＩＣタグからの検出成功率を参照して、検出成功率の高い物体とプログラム処理との組み合わせを先に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項８】
前記決定手段は、ある物体と、この物体を検出するために使用されたプログラム処理と、このプログラム処理を実行した時の検出成功率とを関連付けて記憶している、画像処理装置の外部のデータベースを参照して、検出成功率の高い物体とプログラム処理との組み合わせを先に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項９】
前記読み取り手段は、物体ごとに組み込まれている無線ＩＣタグに書き込まれた前記情報を受信する受信手段を具備し、
前記決定手段は、各無線ＩＣタグからの電波強度の高い物体から順に検出するように前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項１０】
前記決定手段は、計算量が少ないほど第１優先度が高く、プログラム処理で使用するアルゴリズム自体の検出成功率が高いほど第２優先度が高く、奥行き方向の距離がより近いほど第３優先度が高く、複数の物体の他の物体による遮蔽率がより小さいほど第４優先度が高く、プログラム処理を実行した時の検出成功率が高いほど第５優先度が高く、物体ごとに組み込まれている無線ＩＣタグからの電波強度が高いほど第６優先度が高いとし、前記第１優先度から前記第６優先度の少なくとも２つ以上の優先度に重み付け和を取った値の大きい順に前記複数のプログラム処理の処理順序を並び替えることを特徴とする請求項１に記載の画像処理装置。
【請求項１１】
前記検出手段は、直前に実行したプログラム処理を取り除いた上で、それぞれの除去後画像に対して次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項１２】
前記検出手段は、直前に実行したプログラム処理を取り除き、直前に実行したプログラム処理が対応する物体の検出に成功した場合に、既に検出された物体を見つけるためのプログラム処理をすべて取り除いた上で、それぞれの除去後画像に対して次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項１３】
前記検出手段は、直前に実行したプログラム処理が対応する物体の検出に成功せず、かつ、直前に実行したプログラム処理以外にプログラム処理が残っている場合に、直前に実行したプログラム処理を処理順位が最下位に追加して、それぞれの除去後画像に対して次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項１４】
コンピュータを、
物体ごとに予め物体に記録されている情報であって画像処理によって物体を検出するためのプログラム処理を決定するための情報を複数の物体から読み取る読取手段と、
前記情報ごとに対応するプログラム処理を前記物体ごとに選択し、これら複数のプログラム処理の処理順序を決定する決定手段と、
撮像装置によって撮像された前記複数の物体を含む初期画像を取得する取得手段と、
前記初期画像を用いて前記処理順序で前記複数のプログラム処理を順に実行して前記複数の物体を順に検出する検出手段と、
直前に実行したプログラム処理に用いた前記初期画像から、検出された物体の領域の画像データを取り除いた除去後画像を生成する生成手段として機能させるためのものであり、
前記検出手段は、それぞれの除去後画像を用いて次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出し、
前記生成手段は、それぞれの除去後画像から、直前に検出された物体の領域の画像データを取り除き前記除去後画像を更新することを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の多様な物体が含まれた画像から、それぞれの物体を検出する性能を向上させる枠組みを提供するものであり、具体的には画像処理以外の方法で取得した対象物体についての情報を利用する画像処理装置およびプログラムに関する。
【背景技術】
【０００２】
画像情報によって、複数の多様な物体を検出、認識するというのは、画像処理の主な用途の１つである。この問題の解決手法は、あらかじめ物体から一定の手法で特徴を抽出し、種類ごとに記憶しておき、検出するときも同じ方法で画像から特徴を抽出し、記憶しておいた特徴と照合するというのが一般的である（例えば、非特許文献１参照）。さらには、無線ＩＣタグを用いて近くにある物体の種類（例えば、特許文献１では人物情報）についての情報を取得、物体の種類をあらかじめ絞り込んだ上で照合を行うことで検出性能を高めるというアプローチも存在する（例えば、特許文献１参照）。
【特許文献１】特開２００６−１９２５６３公報
【非特許文献１】David G. Lowe, “Distinctive image features from scale-invariant keypoints,” International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のアプローチは単一の方法により画像から物体の特徴を抽出している。これは物体の種類が限定されていたり、人の顔だけを対象としたりというように適用範囲が限られている間は高い性能を期待できる。しかし、単一の特徴抽出手法だけでは物体の種類が増加していくとうまく特徴を抽出できないものが出てきてしまう。
【０００４】
そこで本発明は、上述した事情を考慮してなされたものであり、高い成功率で多数の種類の物体を検出することができる画像処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述の課題を解決するため、本発明の画像処理装置は、物体ごとに予め物体に記録されている情報であって画像処理によって物体を検出するためのプログラム処理を決定するための情報を複数の物体から読み取る読取手段と、前記情報ごとに対応するプログラム処理を前記物体ごとに選択し、これら複数のプログラム処理の処理順序を決定する決定手段と、撮像装置によって撮像された前記複数の物体を含む初期画像を取得する取得手段と、前記初期画像を用いて前記処理順序で前記複数のプログラム処理を順に実行して前記複数の物体を順に検出する検出手段と、直前に実行したプログラム処理に用いた前記初期画像から、検出された物体の領域の画像データを取り除いた除去後画像を生成する生成手段と、を具備し、前記検出手段は、それぞれの除去後画像を用いて次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出し、前記生成手段は、それぞれの除去後画像から、直前に検出された物体の領域の画像データを取り除き前記除去後画像を更新することを特徴とする。
【発明の効果】
【０００６】
本発明の画像処理装置およびプログラムによれば、高い成功率で多数の種類の物体を検出することができる。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照しながら本発明の実施形態に係る画像処理装置およびプログラムについて詳細に説明する。なお、以下の実施形態中では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。  
まず、本発明の画像処理装置の概略を説明する。  
本実施形態では、高い成功率で多数の種類の物体を検出可能にするため、あらかじめ複数の画像検出・認識アルゴリズムを実装したプログラム処理を準備する。ここでいうアルゴリズムとは、上記非特許文献１のように、あらかじめ物体から一定の手法で特徴を抽出し、種類ごとに記憶しておき、検出するときも同じ方法で画像から特徴を抽出し、記憶しておいた特徴と照合する一連の手続きのことである。すなわち、広範にわたる物体に対処するため、複数の特徴抽出・照合手法を用意しておく。さらに、検出したい物体側に、バーコード等の画像処理の方法によって、または無線ＩＣタグなど画像処理以外の方法によって、近くにある物体の情報を取得できる仕組み（タグ）を準備する。タグにはその物体を検出するのに使用する画像処理アルゴリズムのＩＤおよびアルゴリズムに与えるパラメータを格納しておく。画像処理装置側にはタグからの情報を読み取る手段、例えば無線ＩＣタグによる場合には電波を受信する受信装置を装備する。なお、タグには電波を用いる方法によって情報を取得できるものを用いることが好ましい。物体の向きや遮蔽物による影響が少ないためである。
【０００８】
画像処理装置は最初にこのタグから格納された情報を読み取る。画像処理装置は、物体に応じた検出処理アルゴリズムを実行し、それぞれの物体を検出する。実際には一つのタグには複数のアルゴリズムを指定でき、また、タグの読取装置は複数のタグの情報を読み取ることができるため、複数の画像処理アルゴリズムを実行する必要がある。そのため、画像処理装置は、処理順序決定部を有しており、処理アルゴリズム自体の計算量、検出成功率、以前の処理結果から得られる物体同士の位置関係などの情報を利用してアルゴリズムの実行順序を決定する。さらに実行順序が後のアルゴリズムは入力画像から前のアルゴリズムの検出結果を取り除くことで、検出の困難なアルゴリズムを、探索領域を絞り込んだ状態で実行する。
【０００９】
本実施形態の画像処理装置は、広範な種類の物体に対しその物体を検出するための専用のアルゴリズムを準備することができるため、個々の物体の検出・認識アルゴリズムの成功率を高く保つことができる。さらに、複数の物体があったり、複数のアルゴリズム候補があったりする場合に備えて、それらをアルゴリズムの計算量、成功率などの“難易度”（または優先度）によって実行順序を決定する仕組み、および、先に実行したアルゴリズムの検出結果を利用して後に実行するアルゴリズムの入力画像を生成する仕組みを設けている。これにより、検出の困難な物体の検出を、探索領域を絞り込んだ状態で実行することが可能になり、検出成功率の向上や全体の計算量の削減を実現できる。さらに、ある画像処理装置で実行したときの検出成功率などのデータをタグに記憶させておき、別の画像処理装置で難易度を決定するときの参考値として利用することによって、最初の装置の“経験”を別の装置に生かすことが可能になる。先に実行したプログラム処理が物体を検出した場合、検出された領域を無効領域として後のプログラム処理を実行することにより、比較的検出が困難なプログラム処理の成功率を向上させることによって、画像処理全体の信頼性を上げる。
【００１０】
（一実施形態）  
実施形態の画像処理装置が利用される一例について図１を参照して説明する。  
本実施形態の画像処理装置は、例えば、図１のロボット１００に搭載されている。ロボット１００は、物体を検出しステレオ視するためのカメラ１０１、１０２、移動のための移動機構（例えば、車輪）１０３、見つけた物体をハンドリングするためのアーム１０４、物体に貼付された無線ＩＣタグを読み出すための無線ＩＣタグリーダ１０５を含んでいる。  
ロボット１００が、テーブル１０６の上に置かれた食器１０７，１０８，１０９をアーム１０４で把持して運搬するために、カメラ画像から検出、識別、位置計測処理を行う場面で本実施形態の画像処理装置は利用される。
【００１１】
本実施形態の画像処理装置について図２を参照して説明する。  
本実施形態の画像処理装置は、画像処理情報読取装置２０１、処理順序決定部２０２、撮像装置２０３、入力画像生成部２０４、画像処理部２０５を含んでいる。  
画像処理情報読取装置２０１は、複数の物体から、物体ごとに記録されていて画像処理によって物体を検出するための情報を読み取る。画像処理情報読取装置２０１は、例えば、把持対象物体に貼り付けられた無線ＩＣタグに格納された情報を読み取る。画像処理情報読取装置２０１は、無線ＩＣタグリーダ１０５を含む。前提としてロボット１００がハンドリング対象とする物体、例えば図１の１０７，１０８，１０９の食器にはそれぞれ無線ＩＣタグが貼り付けられている。無線ＩＣタグからはその物体を画像処理で見つけるために有効なアルゴリズムの情報とアルゴリズムに渡すパラメータ情報とが得られるようになっている。アルゴリズムの情報は例えば楕円検出法（有効なアルゴリズムが「楕円検出法」であることを示す）であり、パラメータ情報は例えば直径１１ｃｍ（食器の直径が「１１ｃｍ」であることを示す）である。これらの情報は無線ＩＣタグの記憶領域に直接書き込んでおいても良いし、無線ＩＣタグからはタグのＩＤを読み出して、別に用意されているデータベースに対しこのＩＤをキーとして画像処理に関する情報を引き出す、という形の実装であっても構わない。
【００１２】
処理順序決定部２０２は、画像処理情報読取装置２０１が取得した情報ごとに対応する、物体を検出するためのプログラム処理を選択し、これら複数のプログラム処理の処理順序を決定する。処理順序決定部２０２は、読み取ったタグ情報から物体を検出するのに必要なプログラム処理を列挙し、各種情報を統合して実行順序を決定する。処理順序決定部２０２は、タグを使って得られる画像処理情報に書かれた画像処理アルゴリズムを実装したプログラム処理を一通り準備しておく。本実施形態では、処理順序決定部２０２が、画像処理アルゴリズムの例として、（１）画素のＲＧＢ値に対する閾値を使った領域検出処理法（閾値処理法ともいう）、（２）物体のテクスチャ情報をテンプレートとして画像中から類似の物体を検出するテンプレートマッチング法、（３）画像中のエッジ成分から楕円形をした部分を検出する楕円検出法の３つをあらかじめ持っているとする。これらの検出法については画像処理装置の画像処理部２０５について説明した後に説明する。
【００１３】
撮像装置２０３は、複数の物体を含む初期画像を取得する。撮像装置２０３は、例えば、ロボットの作業空間の画像を取得する。撮像装置２０３は通常のＣＣＤやＣＭＯＳカメラが用いられる。撮像装置２０３は、カメラ１０１、１０２を含む。ここで取り込まれた画像はデジタル化された各画素のＲＧＢなど色を表す値の集合として取得される。
【００１４】
入力画像生成部２０４は、直前に実行したプログラム処理によって検出された物体の領域を、このプログラム処理を実行した画像から取り除いた除去後画像を生成する。入力画像生成部２０４は、カメラから画像データを受け取り、プログラム処理の入力データを生成する。入力画像の生成方法については後に図４のステップＳＴ４０７を参照して説明する。
【００１５】
画像処理部２０５は、初期画像に対して処理順序で前記複数のプログラム処理を順に実行して複数の物体を順に検出する。さらに画像処理部２０５は、それぞれの除去後画像に対して次の処理順位のプログラム処理を実行してこのプログラム処理に対応する物体を検出する。画像処理部２０５は、生成された画像データを入力として、処理順序決定部２０２で決められた順にプログラム処理を実行する。複数の物体があったり、１つの物体に複数の画像処理アルゴリズムが割り当てられていたりする場合、１枚のカメラ画像に対し、複数のプログラム処理を実行することになる。画像処理部２０５の出力は実行した各プログラム処理の出力（検出の成否、物体の細かな分類、物体の３次元位置情報など）となる。なお、検出が成功したか否かの情報は処理順序決定部２０２に出力される。
【００１６】
ここで、例として用いる各アルゴリズムについて簡単に説明しておく。まず、（１）の閾値処理法は、パラメータとして、画素のＲ、Ｇ、Ｂそれぞれに対する閾値の条件を受け取る。この条件は例えば「Ｒ＞１５０，Ｇ＜２３０，Ｂは条件なし」といったものである。このようなパラメータ情報は数値列もしくは文字列によって無線ＩＣタグもしくはデータベースに記録することが可能である。処理手順としては最初に入力画像中の各画素に対しパラメータとして与えられる閾値条件に合致するか否かを判定し、その成否で画像を二値化する。なお、このとき後述する画像の無効領域に対しては処理を行わない。無効領域を処理しないことについてはどのアルゴリズムも共通である。続いて二値化された画像に対し条件に合致する画素が連続する領域ごとに分割していく。得られた複数の領域のうち、面積があらかじめ決めた閾値以上である領域が存在すればそれを検出領域として検出成功と判定する。複数のカメラを用いて作業対象領域を撮影し、そのうち１つの画像で以上のような処理を行う。そして検出された領域をテンプレートとして別の画像に対しテンプレートマッチング法を行ってステレオ視の原理を用いることにより、検出した物体の３次元位置情報を取得することも可能である。
【００１７】
次に、（２）のテンプレートマッチング法について説明する。テンプレートとして用いるのは検出したい物体を撮影した画像である。このテンプレートを図３に示すようにテンプレート画像３０２と同じサイズの画像を入力画像３０１から切り出すことを繰り返し行って最も類似度の高い位置を探索する。類似度が最も高く、かつそのときの類似度があらかじめ決めておいた閾値よりも高ければ画像中のその領域が検出したい物体であると判定する。類似度は、テンプレートと入力画像の画素値の差分の絶対値の総計や差分の二乗の総計などを用いることができる。前述した閾値処理法と同様に、複数のカメラ画像間でステレオ視を行うことによって検出物体の３次元位置を算出可能である。また、画像中の無効領域については探索しない。テンプレートマッチング法の場合、物体ごとにテンプレートが異なるため、画像処理情報に含まれるパラメータはマッチングにより見つけるべき物体のテンプレートを表すＩＤである。これは整数値で記述することができる。
【００１８】
最後の（３）の楕円検出法は、お椀や皿のように円形部分を持つ物体を検出するのに用いる。その処理手順は、まず、入力画像に対しＣａｎｎｙオペレータなどを用いてエッジ情報を抽出する。次にエッジ情報を連結したエッジごとに分割する。分割されたエッジに対し、楕円の方程式  
Ａｘ２＋Ｂｙ２＋Ｃｘｙ＋Ｄｘ＋Ｅｙ＋Ｆ＝０
に当てはめたときのパラメータＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを最小二乗法により求める。そして求められた楕円とエッジがどのくらい離れているかを求めて楕円の良さを評価する。この評価値が一定値以上のものを楕円形の物体であると判断する。このアルゴリズムの場合、ステレオ視を使うことにより、物体の３次元位置だけでなく、検出した楕円の実際のサイズを求めることができる。このサイズ情報を用いて物体の絞り込みを行う。したがって、画像処理情報に含まれるアルゴリズムのパラメータ情報は、その物体の実際のサイズであり、“この皿は半径６０ｍｍである”といったように実数値で記述することができる。
【００１９】
タグから得られる画像処理情報のうち、アルゴリズムのパラメータは前述したような数値列、もしくは文字列で表現可能である。ここで挙げた３つのアルゴリズムはあくまで例であり、実際に処理順序決定部２０２に実装されるべきアルゴリズムを限定するものではない。しかし、アルゴリズムに与える情報は、例のアルゴリズムと同様にして無線ＩＣタグやデータベースに記録することが可能である。一方、アルゴリズムのＩＤは通し番号もしくはアルゴリズムの名前を表す文字列を使って表現できる。
【００２０】
次に、図２の画像処理装置の動作の一例について図４を参照して説明する。なお、このフローチャートの手順を行う前に、図１のロボット１００は、作業対象物である食器の置かれたテーブル１０６の前まで移動機構１０３を用いて移動してきているとする。これはテーブルの位置をロボットに何らかの形式で与えておき、そこへ向かってロボットを移動させるか、ロボットに室内を巡回移動させながら無線ＩＣタグリーダ１０５を使ってタグの反応がある場所を探索させるなどすることで実現可能である。
【００２１】
まず、画像処理情報読取装置２０１が、ロボットの周囲にあるハンドリング対象物体に貼り付けられた無線ＩＣタグを検出する（ステップＳＴ４０１）。これにより図１の食器１０７、１０８、１０９に貼付されたタグが検出される。さらに、画像処理情報読取装置２０１は、それぞれのタグに書き込まれた、検出に使う画像処理アルゴリズムのＩＤとそのパラメータを読み取る（ステップＳＴ４０１）。無線ＩＣタグの読み取りは、ロボット周辺にある物体のタグを全て読み取るため、必ずしも視界内に全てのタグに対応する物体が存在するとは限らないが、この処理により、見つけるべき物体を絞り込むことができる。
【００２２】
次に、撮像装置２０３が画像を取得する（ステップＳＴ４０２）。例えば、ロボット１００に搭載されたカメラ１０１、１０２を用いてロボット前方の画像を撮影する。ここでは、複数カメラを用いているので、ステレオ視を用いて検出した物体の３次元位置情報を求めることができる。このとき、一方のカメラで撮影された画像が図５であったとして以降の説明を行う。
【００２３】
次に、処理順序決定部２０２が、ステップＳＴ４０１でタグを検出した物体であるハンドリング対象物体を検出するために必要なプログラム処理をリストアップする（ステップＳＴ４０３）。ここでは図１の１０７（＝図５の５０２），１０８（＝５０３），１０９（＝５０４）の食器に対して、以下のプログラム処理（画像処理アルゴリズムとそのパラメータ）がある。  
（１）食器１０７（５０２）・・・楕円検出法：半径５０ｍｍと、テンプレートマッチング法：テンプレートは側面のラベルとの２つのアルゴリズム
（２）食器１０８（５０３）・・・楕円検出法：半径１００ｍｍと、閾値処理法：閾値条件  Ｒ＞２１０、Ｇ＞２１０、Ｂ＞２１０との２つのアルゴリズム
（３）食器１０９（５０４）・・・閾値処理法：閾値条件  Ｒ＞２１０、Ｇ＜１００、Ｂ＜１００の１つのアルゴリズム
この例では楕円検出法と閾値処理法が２つの物体の検出に用いられているが、このうち楕円検出法は一度のプログラム処理の実行で複数の物体を検出できるのに対し、閾値処理法は一度に１つの条件にマッチする物体しか検出できないとすると、実際に実行するプログラム処理の数は全部で、（イ）食器１０７，１０８の楕円検出、（ロ）食器１０７のテンプレートマッチング、（ハ）食器１０８の閾値処理、（ニ）食器１０９の閾値処理の４つとなる。
【００２４】
この説明では例として３つのアルゴリズムを用いているが、もっと多くの画像処理アルゴリズムが実装されている場合、１つの入力画像データに対して全てのプログラム処理を実行したのでは計算のためのコストが大きくなってしまう。本実施形態では、ロボット周囲に存在する物体に対応するプログラム処理を選択することで計算コストを削減できる他、ロボット周辺にない物体を検出しようとして誤検出してしまう可能性を減らせる。  
なお、ステップＳＴ４０２およびＳＴ４０３の処理順序は逆でも構わない。
【００２５】
次に、処理順序決定部２０２が、リストアップされたプログラム処理の実行順序を決定する（ステップＳＴ４０４）。処理順序決定部２０２は、処理の優先度を求め優先度の高いプログラム処理から順に処理を開始していく。優先度は、順序決定の基準であり、（ａ）アルゴリズムの計算量の大小（計算量の少ない順に、複数のプログラム処理の処理順序を並び替える）、（ｂ）アルゴリズム自体の信頼性（プログラム処理で使用するアルゴリズム自体の検出成功率の高い順に、複数のプログラム処理の処理順序を並び替える）、（ｃ）ハンドリング対象物体の３次元位置から求められる奥行き距離（画像処理部２０５が検出した直前の検出結果から得られる複数の物体の位置情報から、奥行き方向の距離のより近い物体を先に検出するように複数のプログラム処理の処理順序を並び替える）、（ｄ）画像中で物体が他の物体に隠されている遮蔽率（画像処理部２０５が検出した直前の検出結果から得られる複数の物体の他の物体による遮蔽率から、遮蔽率のより小さい物体を先に検出するように複数のプログラム処理の処理順序を並び替える）、（ｅ）物体と検出アルゴリズムの組み合わせに対する成功率（検出成功率の高い物体とプログラム処理との組み合わせを先に検出するように複数のプログラム処理の処理順序を並び替える）、（ｆ）無線ＩＣタグの電波強度（各無線ＩＣタグからの電波強度の高い物体から順に検出するように複数のプログラム処理の処理順序を並び替える）、を実行するプログラム処理ごとに数値化し、重み付けした和をとったものである。それぞれの基準は、例えば０〜１００の範囲で数値化するように規格化し、（ａ）は計算量の少ないものほど大きく、（ｂ）はアルゴリズム自体に本質的に起因する信頼性（例えば、検出成功率）の高いものほど大きく、（ｃ）はカメラに近いものほど大きく、（ｄ）は他の物体に隠されていないものほど大きく、（ｅ）は成功率の高いものほど大きく、（ｆ）は電波強度の強い、すなわち、より近くにあって遮蔽されていないと予想されるものほど大きくなるように数値化する。これらの基準に対するスコアの重み付け和である優先度をプログラム処理それぞれに対して求め、この優先度の大きな順にプログラム処理を並べる。
【００２６】
各基準について補足すると、基準（ｃ）〜（ｆ）については複数の物体を検出するプログラム処理については物体ごとの数値の平均をとる。基準（ａ）、（ｂ）は処理の実行前に評価できるため、画像処理アルゴリズムごとにあらかじめ決めておくことができる。（ｃ）、（ｄ）については少なくとも一度処理を行わないと分からないので、最初のフレームでは評価値を０とする。２フレーム目以降も、前のフレームで見つからなかった物体については評価値を０にする。（ｃ）では、検出手段が検出した直前の検出結果から得られる物体の位置情報から、奥行き方向の距離のより近い物体に対応するプログラム処理に大きい数値を付与する。（ｆ）についても実行時にしか求まらないが、ステップＳＴ４０１で電波強度が得られるのでこれを評価値にする。（ｅ）についても少なくとも一度処理を行わないと成功率が求められないが、ロボット自身、あるいは別のロボットや別形態で実装された画像処理装置が以前にプログラム処理を実行したときの成功率を、物体に貼付されたタグの記憶領域もしくはデータベース（図示せず）に記録しておくことにより、以前の成功率を利用して評価を行うことができる。例えば、処理順序決定部２０２が画像処理部２０５から受け取った検出が成功したか否かの情報によってプログラム処理ごとの成功率を計算しておく。内部データベースの場合には、記憶部（図示せず）に、ある物体と、この物体を検出するために使用されたプログラム処理と、このプログラム処理を実行した時の検出成功率とを関連付けて記憶させておく。タグの場合には、物体ごとに、この物体を検出するために使用されたプログラム処理と、このプログラム処理を実行した時の検出成功率とを関連付けて記憶している無線ＩＣタグが組み込まれていて、画像処理情報読取装置２０１が、各無線ＩＣタグから対応する、前記プログラム処理と前記検出成功率とを受信する。 
こうして決められるプログラム処理順序は、より計算コストが低く、高速に実行できるプログラム処理、より容易に物体を見つけられるプログラム処理ほど先に来るようになっている。
【００２７】
次に、画像処理部２０５が、ステップＳＴ４０４で決定された順序に従い、１つプログラム処理を実行する（ステップＳＴ４０５）。プログラム処理の内容は実装するアルゴリズムの種類によって決まる。処理結果は、検出の成功／失敗、検出に成功した場合は３次元位置、他の物体による遮蔽率などをプログラム処理に関係なく共通に返すようにする。この結果は画像処理装置の出力になる他、ＳＴ４０４の順序決定基準の更新にも使われる。
【００２８】
次に、画像処理部２０５が、ステップＳＴ４０５で実行したプログラム処理が物体の検出に成功したかどうかを判定する（ステップＳＴ４０６）。物体の検出に成功した場合には、入力画像生成部２０４が次に実行するプログラム処理の入力画像データを直前に実行したプログラム処理の入力画像データから生成する（ステップＳＴ４０７）。生成の方法は、直前のプログラム処理の入力画像に対し、このプログラム処理を実行した結果、検出された物体に対応する領域を無効領域とする。  
ここで、入力データの生成の一例について図５、図６を参照して説明する。ステップＳＴ４０４の順序決定の結果、最初に実行するプログラム処理が食器５０４を検出するための閾値処理、次が食器５０２を検出するテンプレートマッチングであったとすると、最初の閾値処理のプログラム処理の入力画像はカメラ画像そのものになる。プログラム処理実行の結果、食器５０４が検出できたとすると、食器５０４の領域を図６のように無効領域６０１にする。この画像をテンプレートマッチングの入力とするので、テンプレートマッチングでは無効領域に当たる食器５０４が写った領域は探索しない。これを繰り返すため、後に実行するプログラム処理になるほど無効領域が増大し、探索範囲は狭くなり、計算量を削減することができ、プログラム処理の成功率を向上し、画像処理全体の信頼性を上げることができる。  
一方、ステップＳＴ４０５で物体の検出に成功しなかった場合には、入力画像生成部２０４は、直前に実行したプログラム処理をそのまま次のプログラム処理の入力画像にする（ステップＳＴ４０８）。
【００２９】
次に、画像処理部２０５がプログラム処理集合の整理を行う（ステップＳＴ４０９）。プログラム処理集合を整理する戦略は複数考えられるため、後に図７、図８、図９を参照して説明する。
【００３０】
最後に、画像処理部２０５が全ての物体を検出したかどうかを判定する（ステップＳＴ４１０）。まだ検出していない物体があり、実行していないプログラム処理が残っている場合はステップＳＴ４０５に戻る。全ての物体を検出した場合は、実行した全てのプログラム処理の検出結果をまとめて画像処理装置の出力とする。ロボット１００は、この結果に基づいて物体に近付くために移動したり、アーム１０４を用いて物体をハンドリングしたりして目的の作業を遂行する。画像処理装置はステップＳＴ４０１に戻ってタグ検出からやり直す。
【００３１】
次に、図４のステップＳＴ４０９でのプログラム処理集合の整理について図７、図８、図９を参照して説明する。以下の処理は全て画像処理部２０５で行われる。  
図７は最も簡単な整理手法を示し、画像処理部２０５が、直前に実行したプログラム処理を取り除くだけ（ステップＳＴ７０１）である。  
図８は図７の次に簡単な整理手法を示す。この例では、直前に実行したプログラム処理を取り除く（ステップＳＴ７０１）とともに、既に検出された物体を検出しようとするプログラム処理も取り除く。具体的には、ステップＳＴ７０１を行った後、画像処理部２０５が、直前に実行したプログラム処理が対応する物体の検出に成功したかどうかを判定する（ステップＳＴ８０１）。ステップＳＴ８０１で検出に成功した場合には、既に検出された物体を見つけるためにステップＳＴ４０３でリストアップされたプログラム処理をすべて取り除く（ステップＳＴ８０２）。一方、ステップＳＴ８０１で検出に成功しなかった場合にはプログラム処理集合の整理を終了する（ステップＳＴ８０２）。図８の例では、既に検出された物体を検出するためのプログラム処理を実行しても無意味であるため、実行を省略し、計算コストを削減できる。  
図９は最も手の込んだ整理手法を示す。この例でのプログラム処理整理戦略は、一度検出に失敗したプログラム処理を再度実行すること（ステップＳＴ９０３）で検出成功率の向上を狙うものである。具体的には、ステップＳＴ８０１で対応する物体の検出に成功した場合には、ステップＳＴ７０１、ＳＴ８０２を順に行い、優先度に応じてプログラム処理集合をソートしプログラム処理集合の整理を終了する（ステップＳＴ９０１）。一方、ステップＳＴ８０１で検出に成功しなかった場合には、直前のプログラム処理以外にプログラム処理が残っているか否か判定する（ステップＳＴ９０２）。直前のプログラム以外に処理が残っていると判定された場合には、直前に実行したプログラム処理をプログラム処理集合の最後に追加しプログラム処理集合の整理を終了する（ステップＳ９０３）。一方、直前のプログラム以外に処理が残っていないと判定された場合には、ステップＳＴ７０１を行いプログラム処理集合の整理を終了する。本実施形態の画像処理装置では、後に実行されるプログラム処理ほど探索範囲が狭まるため、検出に失敗しても後でもう一度実行すれば検出に成功する可能性がある。
【００３２】
図８、図９に示した例のように実行順序を動的に変更していくことによって、計算コストを削減したり、全体の検出成功率を向上させたりすることができる。
【００３３】
以上に示した実施形態によれば、このようにタグから得られる情報を利用して実行すべきプログラム処理を選択し、比較的計算コストが低く、検出が容易なプログラム処理を先に実行する。そうすることで検出が困難であったり、実行時間がかかったりするプログラム処理になるほど無効領域が増大し、実際に処理する領域は絞られる。したがって、限定によって検出が容易になったり、実行時間が短縮されたりといった利点に全体の検出効率の向上が期待できる。
【００３４】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態の画像処理装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態の画像処理装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。  
また、記憶媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００３５】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本願発明の実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【００３６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００３７】
【図１】本実施形態の画像処理装置の利用の一例を示す図。
【図２】本実施形態の画像処理装置のブロック図。
【図３】テンプレートマッチング法を説明するための図。
【図４】図２の画像処理装置の動作の一例を示すフローチャート。
【図５】図２の撮像装置が撮影した画像の一例を示す図。
【図６】画像に無効領域を設定して生成した入力画像の一例を示す図。
【図７】図４のプログラム処理集合の整理のステップの動作の一例を示すフローチャート。
【図８】図４のプログラム処理集合の整理のステップの動作の一例を示すフローチャート。
【図９】図４のプログラム処理集合の整理のステップの動作の一例を示すフローチャート。
【符号の説明】
【００３８】
１００・・・ロボット、１０１・・・カメラ、１０３・・・移動機構、１０４・・・アーム、１０５・・・タグリーダ、１０６・・・テーブル、１０７，１０８，１０９・・・食器、２０１・・・画像処理情報読取装置、２０２・・・処理順序決定部、２０３・・・撮像装置、２０４・・・入力画像生成部、２０５・・・画像処理部、３０１・・・入力画像、３０２・・・テンプレート画像、５０２、５０４・・・食器、６０１・・・無効領域。
【図１】
0004364266.tif 000002
【図２】
0004364266.tif 000003
【図３】
0004364266.tif 000004
【図４】
0004364266.tif 000005
【図５】
0004364266.tif 000006
【図６】
0004364266.tif 000007
【図７】
0004364266.tif 000008
【図８】
0004364266.tif 000009
【図９】
0004364266.tif 000010