(57)【特許請求の範囲】
【請求項１】
対象物の位置及び／又は姿勢を対象物状態とし、該対象物が取り得る対象物状態に対する、該対象物が該対象物状態となる確率の分布を取得する第１の取得手段と、
撮像装置の位置姿勢に対して予め定められた相対的な対象物状態に対する、該撮像装置が該対象物状態を有する前記対象物を撮像することで得られる撮像画像から前記対象物の識別に成功する成功率の分布を取得する第２の取得手段と、
前記撮像装置が取り得る複数の位置姿勢のそれぞれについての、予め定められた相対的な対象物状態に対する成功率の分布と、前記確率の分布と、に基づいて、該撮像装置の取るべき位置姿勢を決定する決定手段と
を備えることを特徴とする情報処理装置。
【請求項２】
更に、
前記撮像装置の位置姿勢を前記決定手段が決定した位置姿勢に変更する変更手段と、
前記変更手段により位置姿勢が変更された前記撮像装置が撮像した画像中に写っている前記対象物の対象物状態を識別する手段と、を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
更に、
前記対象物の対象物状態の識別の後、前記確率の分布において該対象物状態に対する確率の値を０に更新する手段を備えることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１の取得手段は、予め作成された前記確率の分布を取得し、
前記第２の取得手段は、予め作成された前記成功率の分布を取得する
ことを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記決定手段は、前記撮像装置が取り得る複数の位置姿勢のそれぞれについて、予め定められた相対的な対象物状態に対する成功率の分布と、前記確率の分布と、の内積を求め、求めた内積の値が最大となる位置姿勢を、該撮像装置の取るべき位置姿勢として決定する
ことを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の第１の取得手段が、対象物の位置及び／又は姿勢を対象物状態とし、該対象物が取り得る対象物状態に対する、該対象物が該対象物状態となる確率の分布を取得する第１の取得工程と、
前記情報処理装置の第２の取得手段が、撮像装置の位置姿勢に対して予め定められた相対的な対象物状態に対する、該撮像装置が該対象物状態を有する前記対象物を撮像することで得られる撮像画像から前記対象物の識別に成功する成功率の分布を取得する第２の取得工程と、
前記情報処理装置の決定手段が、前記撮像装置が取り得る複数の位置姿勢のそれぞれについての、予め定められた相対的な対象物状態に対する成功率の分布と、前記確率の分布と、に基づいて、該撮像装置の取るべき位置姿勢を決定する決定工程と
を備えることを特徴とする情報処理方法。
【請求項７】
コンピュータを、請求項１乃至５の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象物を高精度に識別するための技術に関するものである。
【背景技術】
【０００２】
識別手法のひとつとして、撮像装置から得られる対象物の画像から抽出される特徴量をコンピュータに学習させ、入力された画像中に写っている被写体の種別を識別する研究も活発になされてきた。また、被写体のモデル情報などを用いて、その種別だけではなく、位置や姿勢を同時に推定するような研究もなされてきた。その技術の応用先として、高度な組立等の作業をロボットに行わせるための、部品の位置・姿勢識別（認識）などがあげられる．
非特許文献１では、学習画像からコードブック化した特徴と検出された特徴とを対応付け、確率的投票で物体の中心位置を推定する手法が提案されている（ｉｍｐｌｉｃｉｔ−ｓｈａｐｅ−ｍｏｄｅｌ）。これにより、種別だけではなく、物体の位置も推定することができる。
【０００３】
また、特許文献１では、入力画像から特徴点を抽出してその特徴量を算出し、学習画像における特徴量と類似する特徴点同士を、対応点として設定する。そして、入力画像における対応点ごとに学習画像の特徴点の特徴量（位置情報を含む）に基づいて基準点に投票することで、対象物の識別や、位置の推定を行う。
【０００４】
また、山積みされた部品等の対象物の状態についてカメラ等のセンサを用いて情報を取得し、取得した画像等の情報から各対象物の位置や姿勢を推定し、ロボットに把持させて順次対象物を取りだす場合の処理を高速化・高精度にする技術が研究されている。
【０００５】
特許文献２では、仮想的な山積みを生成し、その山積みの仮想的な撮像画像に基づいて、ロボット動作をシミュレートする方法を提案している。対象物のＣＡＤデータなどのモデルデータを用いて複数の対象物の姿勢をランダムに発生させて山積み状態を想定し、ロボットが対象物をハンドリングする動作をシミュレートする。
【０００６】
特許文献３では、対象物の位置や姿勢を規定するパラメータの取りうる値を確率的に予測し、その予測結果によって、画面上で対象物を規定する特徴が存在する領域（ＲＯＩ）を制限するか、あるいはパラメータ空間内のその特徴が存在する領域を制限する。
【０００７】
特許文献４では、ワークの姿勢を推定する際に、複数の安定姿勢に限定した中から選択することにより、処理時間の短縮を図っている。特許文献５では、ワークの姿勢毎に安定度を算出しておき、安定度の低い姿勢を表現するテンプレートは使用しないことで、処理時間の短縮を図っている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２５７６４９号公報
【特許文献２】特許第４２３８２５６号
【特許文献３】特許第３３０００９２号
【特許文献４】特開２００７−２４５２８３号公報
【特許文献５】特開２０１０−１８６２１９号公報
【非特許文献】
【０００９】
【非特許文献１】B.Leibe, “Robust Object Detection with Interleaved Categorization and Segmentation”, IJCV Special Issue on Learning for Vision for learning, Aug. 2007.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
山積みされた部品等の各対象物の位置や姿勢を推定する場合、対象物の位置や姿勢はさまざまなバリエーションがあるため、対象物をさまざまな視点から見た画像から得られる特徴量を学習しなければならない。しかし、ある視点において得られた対象物の画像は識別困難である場合もあり、全ての視点において得られた対象物の画像の識別精度を上げることは困難である。
【００１１】
対象物によっては、各位置や各姿勢の識別精度が異なるのは、対象物の識別に有用な特徴的な部分が、どの視点から撮像した場合でも画像上で得られるとは限らないためである。そのため、例えば、工場などで山積みされた部品等の対象物の位置や姿勢を推定する場合、識別精度が向上するようなカメラの位置や姿勢を決定することが求められている。
【００１２】
特許文献２では、ロボット動作の教示のシミュレーションのために対象物のＣＧモデルを仮想的に山積みさせている。しかし、特許文献２には、識別精度を向上させるような記述はなされていない。
【００１３】
特許文献３では、対象物の位置や姿勢を確率的に予測している。しかし、特許文献３には、識別精度を向上させるためにカメラの位置や姿勢を決定するような記述はなされていない。
【００１４】
特許文献４では、推定する対象物の姿勢を安定姿勢の周辺に限定する。しかし、特許文献４には、識別精度を向上させるためにカメラの位置や姿勢を決定するような記述はなされていない。
【００１５】
特許文献５では、テンプレート作成のときには姿勢の安定度を利用しているが、姿勢の正確な推定結果を得るために安定度を利用しているわけではない。すなわち、特許文献５では、姿勢の推定に安定度を用いて、姿勢の誤推定を低減するということは考慮されていない。
【００１６】
本発明は、このような問題に鑑みてなされたものであり、撮像装置を用いて撮像した画像中の対象物の識別精度が高くなるような該撮像装置の位置や姿勢を決定するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の目的を達成するために、例えば、本発明の情報処理装置は、対象物の位置及び／又は姿勢を対象物状態とし、該対象物が取り得る対象物状態に対する、該対象物が該対象物状態となる確率の分布を取得する第１の取得手段と、撮像装置の位置姿勢に対して予め定められた相対的な対象物状態に対する、該撮像装置が該対象物状態を有する前記対象物を撮像することで得られる撮像画像から前記対象物の識別に成功する成功率の分布を取得する第２の取得手段と、前記撮像装置が取り得る複数の位置姿勢のそれぞれについての、予め定められた相対的な対象物状態に対する成功率の分布と、前記確率の分布と、に基づいて、該撮像装置の取るべき位置姿勢を決定する決定手段とを備えることを特徴とする。
【発明の効果】
【００１８】
本発明の構成によれば、撮像装置を用いて撮像した画像中の対象物の識別精度が高くなるような該撮像装置の位置や姿勢を決定することができる。
【図面の簡単な説明】
【００１９】
【図１】情報処理装置の機能構成例とその周辺機器について示すブロック図。
【図２】情報処理装置２００が行う処理のフローチャート。
【図３】情報処理装置２００を含むシステムの外観図。
【図４】代表姿勢について説明する図。
【図５】５種類の代表姿勢における対象物３１の様子を示す図。
【図６】トレイ６０上における対象物を説明する図。
【図７】シミュレーションによる山積みされた対象物の作成方法を説明する図。
【図８】世界座標系とカメラ座標系との関係を説明する図。
【図９】学習時の処理のフローチャート。
【図１０】ステップＳ９１０における処理のフローチャート。
【図１１】識別処理のフローチャート。
【図１２】投票空間の例を示す図。
【図１３】情報処理装置の機能構成例とその周辺機器について示すブロック図。
【図１４】情報処理装置２００が行う処理のフローチャート。
【図１５】対象物の一例を示す図。
【図１６】対象物の一例を示す図。
【発明を実施するための形態】
【００２０】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００２１】
［第１の実施形態］
工場などで山積みされた部品等の対象物の位置や姿勢を推定する場合、あらかじめ対象物のモデル（３次元仮想物体）や対象物が置かれる状況がわかっている場合がある。その場合に、対象物のモデル情報や対象物が置かれている状況をシミュレートすれば、対象物の位置や姿勢の事前分布を学習することができる。また、対象物を撮像する撮像装置の位置や姿勢を規定すれば、仮想的な対象物の画像をシミュレートすることができ、対象物の位置や姿勢ごとの識別精度を予測することができる。
【００２２】
先ず、本実施形態に係る情報処理装置の機能構成例及びその周辺機器について、図１のブロック図を用いて説明する。
【００２３】
撮像部１００は、静止画や動画像を撮像するものであり、本実施形態では対象物を撮像するために用いられる。撮像部１００の位置や姿勢は情報処理装置２００によって制御され、撮像部１００により撮像された画像は情報処理装置２００に入力される。
【００２４】
情報処理装置２００は、撮像部制御部２３０、出現確率記憶部２１０、対象物状態識別部２４０、識別信頼度記憶部２２０を有する。各部の機能については、情報処理装置２００が行う処理のフローチャートを示す図２を用いて説明する。なお、以下の説明において、情報の記憶については、特に説明がない限り、情報処理装置２００内の適当なメモリに記憶するものとする。
【００２５】
ステップＳ１１０では撮像部制御部２３０は、対象物の位置及び／又は姿勢を対象物状態とした場合に、該対象物が世界座標系において取り得る対象物状態に対する、該対象物が該対象物状態となる確率（出現確率）の分布を取得する（第１の取得）。
【００２６】
この分布は、例えば、出現確率記憶部２１０に予め格納しておき、撮像部制御部２３０がこれを読み出すようにしても良い。また、撮像部制御部２３０が改めて求めるようにしても良い。本実施形態では、撮像部制御部２３０がこの分布を改めて求めるものとする。
【００２７】
ステップＳ１２０では撮像部制御部２３０は、次のように動作する。すなわち、撮像部１００の位置姿勢に対して予め定められた相対的な対象物状態に対する「撮像部１００が該対象物状態の対象物を撮像して得られる撮像画像から該対象物の識別に成功する成功率（識別成功率、識別信頼度）」の分布を取得する（第２の取得）。
【００２８】
この分布は、例えば、識別信頼度記憶部２２０に予め格納しておき、撮像部制御部２３０がこれを読み出すようにしても良い。また、撮像部制御部２３０が改めて求めるようにしても良い。また、オンライン時に識別結果を反映させて算出してもよい。本実施形態では、撮像部制御部２３０がこの分布を改めて求めるものとする。
【００２９】
ステップＳ１３０では、撮像部制御部２３０は、ステップＳ１１０で取得した分布と、ステップＳ１２０で取得した分布と、を用いて、撮像部１００が取り得る複数の位置姿勢のうち１つを好適な（識別精度が向上するような）位置姿勢として決定する。そして撮像部制御部２３０は、撮像部１００の位置姿勢を、この決定した位置姿勢に変更する。
【００３０】
なお、ステップＳ１３０では、識別精度が向上するように、対象物の出現確率が定義されている座標空間（世界座標系）と、識別成功率が定義されている座標空間（カメラ座標系）との相対位置・姿勢を変化させればよい。そのため、あらかじめ撮像部１００の位置が決まっている場合、対象物の位置（配置条件）を変更するようにしても良い。たとえば、対象物全体がトレイなどに載っている場合、トレイの位置や高さを変更して撮像部１００との相対位置を変更するようにしてもよい。
【００３１】
ステップＳ１４０では、対象物状態識別部２４０は、位置姿勢が変更された撮像部１００により撮像された画像を該撮像部１００から取得し、該取得した画像中に写っている対象物の対象物状態を識別する。なお、識別するものについては特定の対象に限るものではない。
【００３２】
本実施形態に係る情報処理装置を含むシステムの具体的な構成例について、図３の外観図を用いて説明する。図３において、図１に示した構成要件と同じものについては同じ参照番号を付しており、その説明は省略する。
【００３３】
撮像部１００は、山積みされている対象物３０を撮像している。ロボット２０は、山積みされている対象物３０をピッキングする為のものである。例えば、情報処理装置２００が識別した位置姿勢をこのロボット２０に送出することで、このロボット２０は、情報処理装置２００から受けた位置姿勢に応じてアームを制御し、この対象物をピッキングする。
【００３４】
次に、図２に示した各ステップにおける処理の詳細について説明する。先ず、ステップＳ１１０における処理の詳細について説明する。ここでは姿勢については３６０°で定義するが、本実施形態では離散的にサンプリングされる姿勢である代表姿勢を扱う。また、関節物体や変形物体の場合は、関節角や変形度も対象物状態を決定する変数として扱うことができるが、それについては以降の実施形態において説明する。
【００３５】
山積みされた対象物の場合、山に対する位置や高さによって対象物のとりうる姿勢分布の偏りがでてくるため、その偏りを考慮して識別精度が向上するように撮像部１００の位置や姿勢を制御する。
【００３６】
上記代表姿勢について、図４を用いて説明する。本実施形態では、代表姿勢を測地ドームにより算出する。ここで測地ドームとは、正多面体の三角形面素を再帰的に同一面積の三角形に分割していくことで球面を均一に離散化表現するものであり、公知の手法である。測地ドームの中心を対象物３１と見なせば、測地ドームで得られた正多面体の頂点５０は、それぞれ対象物３１をさまざまな位置から見下ろすときの視点と考えることができ、該視点には各正二十面体の頂点および各面中心点を用いることができる。
【００３７】
本実施形態では、正二十面体の頂点の数を１６、面の数を２０とし、計３６視点から対象物３１を見た姿勢を代表姿勢として定義する。さらに、それぞれの代表姿勢に対して、その方向から見た時の面内回転も考慮する必要がある。例えば、角度１８度刻みの粒度で面内回転を区別する場合には、２０通りの面内回転姿勢が存在する。従って、この場合には、３６×２０＝７２０通りの代表姿勢があることになる。図４で定めた代表姿勢のうち、５種類の代表姿勢における対象物３１の様子をそれぞれ、図５（ａ）〜（ｅ）に示す。
【００３８】
山積みされた対象物３１は、撮像部１００に対してあらゆる方向を向く可能性があり、さらにその方向で面内回転する可能性がある。そのため、検出姿勢は、７２０通りの姿勢となる。したがって、本実施形態では、７２０通りの姿勢に対応する出現確率を取得する。ただし、面内回転については考慮せず、３６姿勢に対応する出現確率を取得するようにしてもよい。この場合は、識別時に画像を面内回転させて検出することになる。
【００３９】
次に、各対象物状態に対する出現確率を求める方法の一例について説明する。先ず、出現確率記憶部２１０等のメモリに予め対象物の３次元仮想物体のデータ（ＣＡＤデータなど）を格納しておき、撮像部制御部２３０はこのデータを用いて３次元仮想物体を構築する。そして撮像部制御部２３０は、そのモデル座標系の３軸に対する回転角をランダムに発生させ、上記の複数の代表姿勢のうち、この発生させた回転角に最も近い代表姿勢を選択する。更に、複数の代表姿勢のうち選択された代表姿勢に対するカウント値をカウントアップさせる。これにより、複数の代表姿勢のそれぞれについて選択回数を求めることができるので、この選択回数を回転角の発生回数で割ったものを、出現確率として求めることができる。なお、ベルトコンベアなどで対象物が運ばれてくる状況などでは、対象物は床などに対して安定姿勢となるため、安定姿勢になるように回転角を発生させる。このように、状況によっては、回転角を全くランダムに発生させるのではなく、ある範囲内でランダムに若しくはある規則に基づいて回転角を発生させる。また、位置については、全て０でも良いし、全くランダムに発生させても良いし、ある範囲内でランダムに若しくはある規則に基づいて発生させても良い。
【００４０】
また、本実施形態では、対象物が山積みされた状況を考えているため、対象物が図６のように作業エリア（トレイ）６０に山積みされている場合における出現確率の求め方について説明する。このとき、世界座標系のＺ方向を、山積みされた対象物集合６１の高さ方向に設定している。
【００４１】
図６（ａ）は山積みされた対象物集合６１を上（Ｚ方向）から見たときの様子を示しており、図６（ｂ）は横（Ｙ方向）から見たときの様子を示している。対象物の３次元仮想物体を用いて山積みされた対象物集合６１をシミュレーションにより作成し、それぞれの対象物の姿勢に対応する代表姿勢を記憶することで、山積みされた対象物の姿勢の出現確率を記憶することができる。具体的な方法については背景技術で触れた特許文献２に開示されている。
【００４２】
シミュレーションによる山積みされた対象物の作成方法では、図７に示す如く、モデル座標系の３軸に対する回転角をランダムに発生させて姿勢を定義したあと、作業エリア（トレイ）内のランダムな位置から降下させて仮想的に山積みを行う。具体的には世界座標系におけるＸ、Ｙの値を、作業エリアを定義する定義域の中からランダムに決定して、Ｚ値は十分に大きな値に設定する。あらかじめ定義された所定数の対象物３１を降下させて仮想的な山積み対象物３０を作成する。その際に順々に対象物を降下させて、それぞれの対象物が安定するようにする。仮想的な山積みを複数回生成して世界座標系における姿勢分布ＰＰ（Ｘ、Ｙ、Ｚ、θｘ、θｙ、θｚ）を、出現確率記憶部２１０に格納する。この分布ＰＰ（Ｘ、Ｙ、Ｚ、θｘ、θｙ、θｚ）は、任意の位置（Ｘ、Ｙ、Ｚ）において姿勢（θｘ、θｙ、θｚ）をとる確率の分布である。θｘ、θｙ、θｚはそれぞれ、世界座標系におけるＸ軸、Ｙ軸、Ｚ軸に対する回転角である。姿勢の定義には、回転軸とその回転軸に関する回転角で表される単回転表現やその他の表現を用いてもかまわない。
【００４３】
このように、各対象物状態に対する出現確率を取得する方法や、対象物状態の表現方法などは、特定の方法（表現方法）に限るものではなく、様々なものを用いることができる。即ち、対象物が取り得る対象物状態に対する、該対象物が該対象物状態となる確率の分布を取得することができるのであれば、如何なる手法を用いても良い。
【００４４】
なお、出現確率記憶部２１０にこのような分布を予め格納しておく場合、上記のような処理は予め行い、これにより得られる分布を出現確率記憶部２１０に格納することになる。
【００４５】
次に、ステップＳ１２０における処理の詳細について説明する。ステップＳ１２０における処理は、大きく分けて画像作成工程と信頼度算出工程の２つの工程に大別される。先ず、画像作成工程について説明する。
【００４６】
本実施形態では上記の通り、撮像部１００の位置姿勢に対して予め定められた相対的な対象物状態に対する成功率の分布を求める。即ち、確率の分布は、世界座標系における各対象物状態の確率から求めるのに対し、成功率の分布は、撮像部１００の位置姿勢を基準とするカメラ座標系における各対象物状態に対する成功率から求めるものである。もしくは画像座標系において定義してもよい。
【００４７】
世界座標系とカメラ座標系との関係について、図８を用いて説明する。世界座標系とは、現実空間中の１点を原点とし、この原点で互いに直交する３軸をそれぞれＸ軸、Ｙ軸、Ｚ軸とする座標系であり、図８に示した世界座標系８１０では、ロボット２０のアームの付け根を原点としている。また、カメラ座標系とは、撮像部１００上の１点を原点とし、この原点で互いに直交する３軸をそれぞれＸ軸、Ｙ軸、Ｚ軸とする座標系であり、図８に示したカメラ座標系８００では、撮像部１００の光学中心を原点としている。
【００４８】
なお、以下では、対象物としてのトレイの世界座標系における位置姿勢、世界座標系におけるカメラ座標系の位置姿勢は既知である（キャリブレーションされている）ものとする。
【００４９】
カメラ座標系８００において定義される成功率の分布をＰＲ（ＸＣ、ＹＣ、ＺＣ、θｃｘ、θｃｙ、θｃｚ）と表し、画像座標系において定義される成功率の分布をＰＲ（ｘ、ｙ、θｃｘ、θｃｙ、θｃｚ）と表す。姿勢は先と同様にカメラ座標系のＸ軸、Ｙ軸、Ｚ軸に対する回転角を示す。
【００５０】
カメラ座標系もしくは画像座標系において対象物が配置される範囲は、その配置環境によって決定される。例えば、セルなどでロボットによって山積み対象部品をピッキングするようなタスクの場合、撮像部１００が置かれる位置もしくは対象部品が置かれる位置は制限されるため、対象物が配置される範囲は決定される。
【００５１】
画像作成工程では、決定されたカメラ座標系における位置および先の測地ドーム状の視点によって定義される３６姿勢もしくは面内回転を考慮した７２０姿勢の画像を生成する。例えば、カメラ座標系における位置の範囲が５０センチ×５０センチ×５０センチの範囲に限定され、５センチおきに離散的に識別成功率を定義する場合、ＸＣ＝０，５，…，５０、ＹＣ＝０，５，…，５０、ＺＣ＝０，５，…，５０と定義される。よって、１０×１０×１０×７２０＝７２００００点で識別成功率を算出すればよく、７２００００枚の画像を生成することになる。画像数が多い場合には位置範囲および姿勢範囲内でランダムにサンプリングすればよい。または対象物を実際に作業エリア（トレイ）に置いて数回撮像部１００で撮影してもよい。その場合には、撮影された対象物のカメラ座標系における位置や姿勢を別途入力する必要がある。撮影した対象物の画像は入力した姿勢に対して最も近い代表姿勢の画像として登録される。登録先については特定の登録先に限るものではなく、情報処理装置２００内の適当なメモリであっても良い。
【００５２】
次に、信頼度算出工程について説明する。信頼度算出工程では、先の画像作成工程で登録された画像に対する識別成功率を算出する。識別成功率は、予め学習しておいた識別器を用いて計算する。識別器が入力に対して各状態に関するスコアを算出する識別器の場合は、該当する状態のスコアを評価する。また、識別成功率として、実際に識別処理を行わずに登録画像間の類似度を算出して類似度が大きいものほど識別成功率を低く設定することもできる。
【００５３】
識別器にはさまざまなものがあるが、本実施形態では弱識別器の識別結果を投票による統合処理によって最終的な識別結果を推定する方法について説明する。弱識別器にはさまざまなものがあるが、本実施形態では一例として特徴点ベースの手法と分類木を用いる手法について説明する。
【００５４】
まず、特徴点ベースの投票による識別処理のための学習方法について説明する。あらかじめ対象物の画像（学習画像）を撮影しておき、この学習画像から特徴を抽出する。抽出する特徴の例としては、学習画像から特徴点およびその特徴点まわりを記述する特徴量を抽出する。たとえば、ＳＵＲＦ（H.Bay, “Speeded-Up Robust Features (SURF)”, Computing Vision and Image Understanding, Vol.110 (3) June 2008, pp.346-359.）のような抽出された特徴点まわりの輝度勾配の情報を記述するものでよい。その他のいわゆるＫｅｙｐｏｉｎｔｓ（E.Tola, “A Fast Local Descriptor for Dense Matching”, CVPR 2008.、K.Mikolajczyk, “A Performance Evaluation of Local Descriptors”, PAMI, 27(10) 2004, pp.1615-1630.）などの特徴点でもよい。または、画像パッチやｅｄｇｅｌｅｔなどでもよい。
【００５５】
ここでは各特徴点をｘ、ｙを画像座標として、ｆｉ＝（ｘｉ，ｙｉ）（ｉ＝１，２，・・・，Ｎ）と表し、特徴量を表す特徴量ベクトルをＦｉ（ｉ＝１，２，・・・，Ｎ）と表す。Ｎは学習画像から得られる特徴点の総数、ｉは各特徴点に対するインデックスである。
【００５６】
学習画像は先の図４のように、対象物３１を囲う測地ドームの各視点（頂点５０）から捉えた画像を利用する。学習画像の例は先の図５に示した通りである。取得された各学習画像から特徴点を取得してその特徴点まわりを記述する特徴量を取得する。
【００５７】
次に識別器の学習を行う。ここでは、特許文献１のように学習画像の特徴点に対応する対象物の基準点へのベクトルを記憶しておき、特徴量対応付けに従って対象物に設定されている基準点へ投票を行うことで対象物のクラスおよび位置を検出する場合の学習方法と識別方法について述べる。その際の投票空間は特に限定しない。たとえば、画像座標のｘ軸、ｙ軸およびＩＤ軸（登録されている対象物を表すクラスインデックス）空間、画像座標のｘ軸、ｙ軸およびスケールｓ軸空間、カメラ座標軸のＸＣＹＣＺＣ空間などが考えられる。
【００５８】
また、基準点に投票するのではなく、背景技術で示したｉｍｐｌｉｃｉｔ−ｓｈａｐｅ−ｍｏｄｅｌ（非特許文献１）のように各局所特徴から対象物中心への確率投票を行う方法でも識別することができる。
【００５９】
また、多クラス問題の際は、全クラスに対してそれぞれ投票を行ったあと最も投票されたクラスおよび位置を識別結果とするか、あらかじめ設定された閾値以上の投票がなされた検出点すべてを識別結果としてもよい。
【００６０】
ここでは、画像から特徴点を抽出し、対象物に設定されている基準点に投票をして、対象物の種別および位置を推定する例を示す。学習時の具体的な処理について、同処理のフローチャートを示す図９を用いて説明する。
【００６１】
ステップＳ９００では、学習画像の各特徴点ｆｉの特徴量Ｆｉ（ｉ＝１，２，…，Ｎ）、その対象物のクラス（対象物の姿勢や種別、本実施形態においては１つの代表姿勢を示す）を保存する。ここで、対象物のクラスを示すインデックスはＩＤｉとする（ｉ＝１，２，…、Ｎ）。ＩＤｉは１〜Ｐまでの値をとる（Ｐはクラス総数）。
【００６２】
次にステップＳ９１０では、学習画像の各特徴点ｆｉから対象物上の基準点Oｊ（ｊ＝１，２，…）へのベクトルMｉｊ（ｉ＝１，２，…，Ｎ、ｊ＝１，２，…）を求める。ステップＳ９１０における処理について、図１０を用いて説明する。
【００６３】
先ず、対象物３１の特徴点３２ｆｎ＝（ｘｎ，ｙｎ）から対象物に設定されている基準点３４（ここでは物体中心とする）O＝（ｘｏ，ｙｏ）へのベクトル３３Mｎ＝（ｘｏ−ｘｎ，ｙｏ−ｙｎ）を算出する．
ステップＳ９００，Ｓ９１０の処理を全ての学習画像に対して行ったのち、ステップＳ９２０では、得られたすべての特徴点ｆｉ（ｉ＝１，２，…，Ｎａｌｌ）を特徴量Ｆｉ（ｉ＝１，２，…，Ｎａｌｌ）に従ってクラスタリングする。
【００６４】
ここで、Ｎａｌｌは全学習画像から得られた特徴点数を示している。クラスタリング手法はｋ−ｍｅａｎｓや、自己組織化マップアルゴリズムなど、任意のクラスタリング手法を用いることができる。例えば、ｋ−ｍｅａｎｓを用いる場合、クラスタ数Ｋを規定して特徴量Ｆｉ間のユークリッド距離を用いてクラスタリングすることができる。
【００６５】
そして、最後にステップＳ９３０では、それぞれのクラスタの代表ベクトルＦｋ‘（ｋ＝１，２，…，Ｋ）（Ｋはクラスタ数、ｋはそのインデックス）およびそのクラスタに含まれる特徴点を保存し、識別処理の際に得られた特徴量との対応付けに使用する。
【００６６】
識別器の学習には、アンサンブル学習手法の一つであるランダムフォレスト方式（Tin Kam Ho, USP6,009,199）を用いてもよい。ランダムフォレストは複数の決定木を用いてパターン識別を行う手法である。ランダムフォレストでは各ノードでランダムに情報の問い合わせを行い、問い合わせの結果に応じて学習パターンを次々と分割して決定木を分岐させていく。葉ノードに達した時に残っている学習パターンをその葉ノードの分類結果として記憶する。本実施形態においては学習パターンを各学習画像の各特徴点として分類を行う。先の学習と同様に各特徴点ｆｉから対象物上の基準点Oｊ（ｊ＝１，２，…）へのベクトルMｉｊ（ｉ＝１，２，…，Ｎ、ｊ＝１，２，…）およびその特徴量Ｆｉ（ｉ＝１，２，…，Ｎ）、その対象物のクラス（対象物の姿勢や種別）を保存している。
【００６７】
判別時には、入力パターンを与えて学習時と同じ問い合わせを行い、ルートノードから葉ノードへとたどる。葉ノードに達したら記憶されているパターンをその決定木の判別結果とする。全ての決定木の判別結果を投票等により統合して最終的な判別結果とする。
【００６８】
識別処理では、学習された識別器を用いて、対象物の位置および姿勢に対応するクラスを出力する。その具体的な処理について、同処理のフローチャートを示す図１１を用いて説明する。
【００６９】
ステップＳ１１０１では、学習時と同様に画像から特徴抽出を行う。そして、ステップＳ１１０２では、抽出された特徴点の特徴量と各クラスタの代表ベクトルとの距離計算を行い、もっとも類似度の高いクラスタを決定する。ランダムフォレストを用いる場合には、画像から抽出された特徴点を分類して葉ノードを決定する。他の分類木や識別器を用いる場合も同様である。
【００７０】
次に、ステップＳ１１０３では、対応づけによって求められた代表ベクトルが所属するクラスタ内の各特徴点に付随している基準点へのベクトル、対象物のクラスに基づいて投票を行う。本実施形態における投票空間は画像座標のｘ、ｙ軸およびクラスＩＤを表す軸の３軸によって張られる投票空間としている。画像座標のｘ、ｙ軸およびクラスＩＤを表す軸の３軸によって張られる投票空間の例を図１２に示す。図１２には、画像座標のｘ、ｙ軸およびクラスＩＤを表す軸の３軸によって張られる投票空間７０を示している。あらかじめ各セルの大きさは設定されているものとする。
【００７１】
具体的な投票方法は、まず撮像画像から抽出された各特徴点ｇｍ＝（ｘｍ，ｙｍ）（ｍ＝１，…，Ｍ）の特徴量Ｇｍと、予め学習されている各クラスタの代表ベクトルＦｋ‘（ｋ＝１，…，Ｋ）との対応付けによって最も類似度が高いクラスタｋ“が判定される。ここで、Ｍは画像から抽出された特徴点総数、ｍはそのインデックスである。
【００７２】
例えば、クラスタｋ“を、特徴点ｇｍの特徴量Ｇｍと、各クラスタの代表ベクトルＦｋ‘（ｋ＝１，…，Ｋ）と、のユークリッド距離を用いて算出する場合、以下の数式１に従って算出する。
【００７３】
【数１】
0005806606.tif 000002
【００７４】
判定されたクラスタに従って、そのクラスタに含まれている特徴点ｆｉに付随している基準点へのベクトルMｉｊ（ｉ＝１，２，…，Ｎ、ｊ＝１，２，…）およびクラスＩＤｉ（ｉ＝１，２，…，Ｎ）に従って、投票処理を行う。具体的には、投票空間の投票点を（ｘ、ｙ、ＩＤ）とすれば、以下の数式２のようになる。
【００７５】
【数２】
0005806606.tif 000003
【００７６】
実際には、求められた（ｘ、ｙ、ＩＤ）に対応するセルに投票されることになる。この処理を判定されたクラスタ内の全特徴点に対して行う。この場合、全投票数は最大でＮ×Ｍとなる。
【００７７】
次にステップＳ１１０４では、ステップＳ１１０３で投票された投票空間において最大投票数のセルを抽出する。若しくは予め定められている閾値以上の投票数のセル、若しくは所定数分（候補数）だけ投票数の多い順にセルを抽出してもよい。ここでは候補数をＰ（Ｐ≧１）とし、各候補を（ｘＰ、ｙＰ、ＩＤＰ）（ｐ＝１，２，…，Ｐ）とする。
【００７８】
以上の方法では対象物の画像座標系における位置を算出することができるので、あらかじめカメラ座標系と画面座標系に関するキャリブレーションを行っておけば、算出された画面座標系における位置からカメラ座標系における位置を算出することができる。ここでは各候補をキャリブレーション結果を用いて（ＸＣＰ、ＹＣＰ、ＺＣＰ、ＩＤＰ）（ｐ＝１，２，・・・、Ｐ）と変換しておく。
【００７９】
登録された全ての画像に対してあらかじめ定められた候補数Ｐ個の識別結果を求める。次に、各画像に対して対応するカメラ座標系における位置姿勢に対応する識別成功率を求める。これにより、識別成功率の分布であるＰＲ（ＸＣ、ＹＣ、ＺＣ、θｘ、θｙ、θｚ）を算出する。この分布ＰＲ（ＸＣ、ＹＣ、ＺＣ、θｘ、θｙ、θｚ）は、カメラ座標系における任意の位置（ＸＣ、ＹＣ、ＺＣ）において姿勢（θｘ、θｙ、θｚ）をとる対象物の識別成功率の分布である。実際には各姿勢ＩＤに対応するθｘ、θｙ、θｚの位置の識別成功率を算出することになる。
【００８０】
識別成功率は、各画像に対する識別結果とあらかじめ記憶しておいた正解から算出される。先の識別方法では、投票数が識別スコアとして利用することができる。そのため、識別成功率を、対応する登録画像に対して識別を行った際に識別候補Ｐ＝１の識別スコアＳＣＯＲＥ１、予め設定された正解となる識別結果を出す識別候補ＰＴＲＵＥの識別スコアＳＣＯＲＥＴＲＵＥ、から以下の数式３により算出する。
【００８１】
【数３】
0005806606.tif 000004
【００８２】
登録画像に対して候補Ｐ＝１の識別結果がＴＲＵＥの場合、識別成功率ＰＲは最大値１をとる。全候補の中にＴＲＵＥとなる識別結果がない場合はＳＣＯＲＥＴＲＵＥを０とし、識別成功率ＰＲも０となる。または候補Ｐ＝１がＴＲＵＥの場合は識別スコアを識別成功率にし、ＦＡＬＳＥの場合は識別成功率を０とする方法や、候補Ｐ＝１の識別結果がＴＲＵＥの場合は識別成功率を１、ＦＡＬＳＥの場合は０にするなどの方法がある。全登録画像に対して識別成功率を算出し、ＰＲ（ＸＣ、ＹＣ、ＺＣ、θｃｘ、θｃｙ、θｃｚ）を次の処理で用いる。
【００８３】
ステップＳ１３０では、撮像部制御部２３０は、撮像部１００が取り得る複数の位置姿勢のそれぞれについて、該位置姿勢に対して予め定められた相対的な対象物状態に対する成功率の分布と、確率の分布と、の内積を求める。そして撮像部制御部２３０は、この求めた内積の値が最大となる位置姿勢を決定する。
【００８４】
ここで、世界座標系における撮像部１００の姿勢成分から成る回転行列をＲ、世界座標系における撮像部１００の位置成分から成る並進行列をＴとすると、複数種のＴ，Ｒについて以下の数式４を計算する。
【００８５】
【数４】
0005806606.tif 000005
【００８６】
ｆ（ＰＲ（ＸＣ、ＹＣ、ＺＣ、θｃｘ、θｃｙ、θｃｚ）、Ｒ，Ｔ）は、カメラ座標系において定義されている成功率の分布をＲ，Ｔを用いて世界座標系における成功率の分布に変換する関数である。
【００８７】
ここで、φ＝｛Ｒ、Ｔ｝、Ｘ＝｛Ｘ、Ｙ、Ｚ、θｘ、θｙ、θｚ｝とおく。ｆ（ＰＲ（ＸＣ、ＹＣ、ＺＣ、θｃｘ、θｃｙ、θｃｚ）、Ｒ，Ｔ）はＰＲ（Ｘ、Ｙ、Ｚ、θｘ、θｙ、θｚ｜Ｒ、Ｔ）と書き直すことができる．よって数式４は以下の数式に書き直すことができる。
【００８８】
【数５】
0005806606.tif 000006
【００８９】
数式５においてＬ（φ）＝ＰＰ（Ｘ）・ＰＲ（Ｘ｜φ）とおけば、ｌｏｇＬ（φ）を最大化すればよい。これは以下の数式６に示す更新式を繰り返すことにより解くことができる。
【００９０】
【数６】
0005806606.tif 000007
【００９１】
εは小さな正のスカラー値を示す。この処理により、世界座標系における成功率の分布と確率の分布との内積が大きくなるようにＲ、Ｔを求めればよい。この内積処理では、上記の式の通り、変換後の成功率の分布と、確率の分布とで、同じ対象物状態に対する値（それぞれ成功率と確率値）を掛け合わせたものを、全ての対象物状態（実際にはそれぞれの分布が重なっている部分）について総和した結果を求める。
【００９２】
なお、ここでは出現確率分布と識別成功率分布との内積が最大となる撮像部１００の位置や姿勢を算出しているが、数式６の更新式を少なくとも１回更新して、撮像部１００の位置や姿勢を決定してもよい。また、撮像部１００の位置や姿勢の初期値はランダムに与えてもいいし、ユーザが与えてもよい。
【００９３】
次にステップＳ１４０では、対象物状態識別部２４０は、撮像部１００の位置姿勢をステップＳ１３０で決定した位置姿勢に変更させ、その後、この撮像部１００により撮像された撮像画像を取得する。そして対象物状態識別部２４０は、この取得した撮像画像中に写っている対象物の対象物状態を識別（推定）する。この識別では、先のステップＳ１２０で用いた識別器を再度利用してもよいし、別途識別器を用意してもよい。
【００９４】
以上の説明のように、本実施形態によれば、対象物の状態毎の出現確率と状態毎の識別成功率とから撮像装置の位置や姿勢を決定することで、この撮像装置による撮像画像からの対象物の識別精度を向上させることができる。
【００９５】
［第２の実施形態］
本実施形態に係る情報処理装置の機能構成例について、図１３のブロック図を用いて説明する。図１３に示した構成において図１に示した構成要件と同じものについては同じ参照番号を付しており、その説明は省略する。図１３に示した構成は、図１に示した構成に撮像部変更部２５０を加えた構成となっている。
【００９６】
本実施形態に係る情報処理装置が行う処理について、同処理のフローチャートを示す図１４を用いて説明する。図１４のフローチャートは、図２のフローチャートに、ステップＳ２５０〜Ｓ２７０を追加した構成となっている。
【００９７】
ステップＳ２５０では、対象物状態識別部２４０は、対象物の状態の識別処理を続けるか否かを判定する。続けると判定した場合は、処理はステップＳ２６０に進む。ステップＳ２６０では、撮像部制御部２３０は、撮像部１００の位置姿勢を変更する必要があるか否かを判断する。この判断の結果、変更する必要があれば、処理はステップＳ２７０に進み、変更する必要がない場合は、処理はステップＳ２４０に戻る。ステップＳ２７０では、撮像部制御部２３０は、撮像部１００の位置姿勢を変更する。
【００９８】
本実施形態では、山積みされた対象物の状態が変わるような状況を仮定している。たとえば、ロボット２０などにより次々に対象物がピッキングされていくような状況を考えている。
【００９９】
ステップＳ２１０では、撮像部制御部２３０は、上記のステップＳ１１０における処理に加え、変数として、対象物の個数や山積み対象物の高さを示す変数を、情報処理装置内の適当なメモリに格納する処理を行う。これにより、対象物の個数や高さに従って変化する分布を記憶することができる。具体的には、対象物の個数ごと、高さごとの出現確率分布を学習し、識別時にロードする出現確率分布を変更する。識別時に個数が減ったり、高さが下がってきたりする場合に、ロードされる分布が変更され、その分布に基づいて識別精度を向上させるように撮像部１００の位置姿勢を変更する。
【０１００】
ステップＳ２２０〜Ｓ２４０ではそれぞれ、上記のステップＳ１２０〜Ｓ１４０と同様の処理を行う。なお、ステップＳ２４０ではこれに加え、対象物状態が識別された対象物を示す情報を情報処理装置内の適当なメモリに格納するか、この対象物をロボット２０などによりピッキングして、以降の識別処理の識別対象から除外する。
【０１０１】
ステップＳ２５０では、対象物状態識別部２４０は、識別処理を続けるか否かを判断する。識別処理を続けるか否かの判断基準については特定の判断基準に限るものではなく、例えば、現在の対象物の個数が規定数以下になれば続けないと判断しても良い。現在の対象物の個数は、撮像部１００による撮像画像に写っている対象物を認識してその個数をカウントすればよい。
【０１０２】
ステップＳ２６０では、撮像部変更部２５０は、撮像部１００の位置姿勢を変更するか否かを判断する。先ず、上記の出現確率分布において、ステップＳ２４０で対象物状態が識別された対象物に対応する位置と姿勢の出現確率を削除する（０にする）、もしくは対象物の個数や高さに対応する出現確率分布を更新する。対象物の個数は設計時に入力しておくなどしておけばよい。対象物の高さはＴＯＦなどの測距センサで測定すればよい。次に、更新された出現確率分布と識別成功率分布との内積を第１の実施形態と同様にして計算し、内積の結果がある所定値よりも小さくなるような場合は撮像部１００の位置や姿勢を変更すると判断する。もしくは、ある所定数より対象物の個数が小さくなるような場合に撮像部１００の位置や姿勢を変更すると判断する。
【０１０３】
撮像部１００の位置姿勢を変更すると判断した場合は、処理はステップＳ２７０に進み、変更しないと判断した場合は、処理はステップＳ２４０に戻る。
【０１０４】
ステップＳ２７０では、撮像部制御部２３０は、上記の数式６を用いて、撮像部１００の位置姿勢を変更する。もしくは、あらかじめ対象物の数に対応する出現確率分布から撮像部１００の移動先の位置や姿勢をシミュレートしておいても良い。
【０１０５】
以上の説明のように、本実施形態によれば、第１の実施形態に係る効果に加え、識別中に撮像部１００の少なくとも位置もしくは姿勢を変更することで、撮像部１００による撮像画像からの対象物の識別精度を向上させることができる。
【０１０６】
［第３の実施形態］
本実施形態では、図１５，図１６に示すような対象物の対象物状態を識別する。この場合、情報処理装置２００は、第１，２の実施形態に加え、対象物の変形度も記憶することになる。なお、本実施形態には、第１，２の実施形態で説明した情報処理装置を適用することができる。
【０１０７】
図１５に示した対象物（関節物体）は、基準物体３００とその他の物体３０１とで構成されており、図１５では、物体３０１は、基準物体３００に対して適当な角度３０２だけ傾いている。この場合、上記の変形度は、この角度３０２に相当する。また、図１５に示したような関節物体の位置姿勢は、基準物体３００の位置姿勢とする。然るに、図１５に示したような関節物体の対象物状態の識別とは、基準物体３００の位置姿勢と変形度の識別となる。
【０１０８】
図１６に示した対象物（変形物体）３０３は、軸３０５に対して３０４で示す曲率だけ変形している。然るに、図１６に示したような変形物体３０３の対象物状態の識別とは、変形物体３０３の位置、軸３０５の方向、曲率３０４の識別となる。
【０１０９】
本実施形態の場合、基本的には、図２のフローチャートに従った処理を行う。しかし、ステップＳ１１０では、第１の実施形態に加え、変数として世界座標系における位置・姿勢以外に図１５のような関節物体の場合は角度３０２、図１６のような変形物体の場合は軸３０５の方向及び曲率３０４を記憶する。また、第２の実施形態と同様に対象物の個数を記憶してもよい。
【０１１０】
以降については、第１の実施形態や第２の実施形態と同様に処理を行うのであるが、本実施形態ではこれに加えて、関節物体、変形物体の識別を行うためのその識別方法のみが異なる。
【０１１１】
図１５のような関節物体の場合、基準物体３００の位置および姿勢を推定する。推定方法は第１の実施形態における対象物の識別方法と同様でよい。基準物体３００の位置、姿勢を推定したあと、その基準物体３００に対する物体３０１の存在可能領域を算出する。次に、物体３０１の存在可能領域から物体３０１の位置および姿勢を識別する。識別方法は第１の実施形態における対象物の識別方法と同様である。これにより、基準物体３００と物体３０１との間の角度３０２を求めることができる。
【０１１２】
また、図１６のような変形物体の場合、変形物体３０３の端部の位置を画像中から識別して端部から変形物体３０３の他方の端部に向かってエッジなどを探索することで軸３０５の方向およびその軸３０５に対する曲率３０４を推定することができる。
【０１１３】
以上の説明のように、本実施形態によれば、対象物の変形度や曲率を含む状態毎の出現確率と状態毎の識別成功率から撮像部１００の位置や姿勢を決定することで、この撮像装置による撮像画像からの対象物の識別精度を向上させることができる。また、出現確率および識別成功率から対象物の存在する位置や領域を決定することで、撮像装置による撮像画像からの対象物の識別精度を向上させることができる。
【０１１４】
［第４の実施形態］
図１，１３に示した情報処理装置２００を構成する各部はハードウェアで構成しても良いが、出現確率記憶部２１０、識別信頼度記憶部２２０をＲＡＭやハードディスクなどのメモリで構成し、その他の各部をコンピュータプログラムで構成しても良い。この場合、このコンピュータプログラムはこのメモリに格納され、更にこのコンピュータプログラムはＣＰＵ等のプロセッサにより実行される。
【０１１５】
然るに、少なくともこのメモリとプロセッサとを有するコンピュータは、上記の情報処理装置２００に適用することができる。また、上記の撮像部１００はこのコンピュータに接続させ、撮像部１００による撮像画像をこのコンピュータに入力するようにしても良いし、上記のハードディスクに予め撮像画像を格納しておいても良い。
【０１１６】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005806606.tif 000008
【図２】
0005806606.tif 000009
【図８】
0005806606.tif 000010
【図９】
0005806606.tif 000011
【図１０】
0005806606.tif 000012
【図１１】
0005806606.tif 000013
【図１２】
0005806606.tif 000014
【図１３】
0005806606.tif 000015
【図１４】
0005806606.tif 000016
【図１５】
0005806606.tif 000017
【図１６】
0005806606.tif 000018
【図３】
0005806606.tif 000019
【図４】
0005806606.tif 000020
【図５】
0005806606.tif 000021
【図６】
0005806606.tif 000022
【図７】
0005806606.tif 000023