プログラム及び画像処理装置
【課題】プログラム及び画像処理装置において、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことを目的とする。
【解決手段】入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えるように構成する。
【解決手段】入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えるように構成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム及び画像処理装置に関する。
【背景技術】
【0002】
或る環境中に存在するランドマークの画像は、例えばこの環境中で移動するロボット等の装置の自己位置推定、環境認識等に利用することができる。このような場合、ランドマークのデータベースを事前に作成しておき、自己位置推定を行う際に装置のカメラが新たに撮影した画像中にデータベースに登録されているランドマークが存在するか否かを判定する。データベースを作成するには、例えば或る環境下での多数の画像を撮影し、各画像から角(又は、コーナ)、色等といった特徴点を検出する。そして、検出された特徴点がデータベースに登録されていない新たな特徴点であれば新たに登録する。一方、検出された特徴点がデータベースに既に登録されていれば、例えば検出された特徴点が属するカテゴリの代表的な特徴ベクトル(以下、代表特徴ベクトルと言う)を更新する。撮影された多数の画像から得た特徴ベクトルをクラスタリングすることで複数のクラスを生成し、各クラスに属するサンプル画像の特徴ベクトルを平均した特徴ベクトルを当該クラスの代表特徴ベクトルとすることができる。
【0003】
撮影した画像を多数のサンプル画像の全てと照合するのには膨大な時間がかかる。これに対し、撮影した画像の特徴ベクトルをデータベースに登録された各代表特徴ベクトルと照合する場合、照合に要する時間を短縮できる。
【0004】
しかし、特徴ベクトルは、画像撮影の際のカメラの位置姿勢、照明等の変化にできるだけロバストであるように作成しても、これらの変化に完全に対応することはできない。例えば、データベースの作成時に用いた画像サンプルとは異なる時間帯で撮影した画像、或いは、データベースの作成時に用いた画像サンプルとは異なる視点から撮影した画像等からランドマークを検出しようとすると、ランドマークの誤検出が発生してしまう。つまり、データベースの作成時に用いた画像サンプルに対して、照明変化、視点の違い等により撮影された画像とデータベースに登録された画像サンプルとの照合結果に誤りが生じ、登録されているランドマークではない画像をランドマークであると誤って検出したり、登録されているランドマークの画像をランドマークであると正しく検出できない場合が発生してしまう。これは、同一物体を撮影した場合でも、照明変化、視点の違い、影の違い等の影響により、撮影された画像は若干異なり、同一物体に対する特徴ベクトルが異なることによる。
【0005】
同一物体を撮影した画像から検出した特徴ベクトルが照明変化、視点の違い、影の違い等の影響により異なると、代表特徴ベクトルがぼけてしまう。このため、画像サンプルの数が多くなると、代表特徴ベクトルが本来同じカテゴリに属する特徴ベクトルを代表できなる可能性がある。
【0006】
尚、照明変化、視点の違い、影の違い等により画像の照合時に発生する画像の誤検出の問題は、ランドマークの検出時に限らず、入力画像を登録済みの画像と照合する各種画像処理装置においても同様に発生する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−285141号公報
【特許文献2】特開2009−53842号公報
【特許文献3】特開平9−294277号公報
【特許文献4】特開2009−245304号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来の画像処理装置では、登録されている画像の撮影条件と照合する入力画像の撮影条件が異なると、画像の誤検出が発生してしまい、正確な画像照合を行うことは難しいという問題があった。
【0009】
そこで、本発明は、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことができるプログラム及び画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一観点によれば、コンピュータに、画像データから検出対象を検出させるプログラムであって、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順を前記コンピュータに実行させることを特徴とするプログラムが提供される。
【0011】
本発明の一観点によれば、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする画像処理装置が提供される。
【発明の効果】
【0012】
開示のプログラム及び画像処理装置によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施例における自律走行型のロボットの構成の一例を示す図である。
【図2】ロボットの遠隔操作を説明する図である。
【図3】データベースの作成方法を説明する機能ブロック図である。
【図4】ランドマークDBの作成方法を説明するフローチャートである。
【図5】特徴点の検出を説明する図である。
【図6】特徴ベクトルと検出した特徴点との対応付けを説明する図である。
【図7】対応点リストの作成を説明する図である。
【図8】ランドマークDB25に格納される木構造の一例を説明する図である。
【図9】ランドマーク検出方法を説明する機能ブロック図である。
【図10】比較例における特徴ベクトルのサンプルの収集を説明する図である。
【図11】比較例における収集した特徴ベクトルのクラスタリングを説明する図である。
【図12】比較例における平均ベクトルの計算を説明する図である。
【図13】比較例におけるKD木の生成を説明する図である。
【図14】比較例における照明の変化と撮影地点による検出性能への影響を説明する図である。
【図15】実施例における照明の変化と撮影地点による検出性能への影響を説明する図である。
【図16】比較例における各フレームでのランドマークの検出数を説明する図である。
【図17】実施例における各フレームでのランドマークの検出数を説明する図である。
【図18】図16の比較例のランドマーク検出結果を示すヒストグラムである。
【図19】図17の実施例のランドマーク検出結果を示すヒストグラムである。
【図20】図18及び図19のヒストグラムを表形式で示す図である。
【発明を実施するための形態】
【0014】
開示のプログラム及び画像処理装置では、前処理で、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する。記憶部には、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録されている。認識処理の第1段階では入力特徴ベクトルと記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する。
【0015】
第1の段階及び第2の段階の2段階で検出対象を検出することで、検出対象の検出時の誤りと見逃しを軽減することができる。
【0016】
以下に、開示のプログラム及び画像処理装置の各実施例を図面と共に説明する。
【実施例】
【0017】
(ロボットシステムの構成)
図1は、本発明の一実施例における自律走行型のロボットの構成の一例を示す図である。ロボット1は、ナビゲーションCPU(Central Processing Unit)11、走行制御CPU12、台車13、センサ部14、入出力部15、及び記憶部16を有する。入出力部15は、利用者がロボット1に情報やコマンドを入力する入力部(図示せず)と、ロボット1から利用者へ情報を出力する出力部(図示せず)を含む。入力部は、例えばキーボード等の操作部、マイクロホン等を含む。一方、出力部は、表示部、スピーカ等を含む。CPU11,12は、単一の計算機(又は、コンピュータ)を形成しても、別々の計算機(又は、コンピュータ)を形成しても良い。尚、ロボット1には、周知の構成を有し周知の動作を行うロボットアーム(図示せず)や、外部のサーバ(図示せず)等と通信するためのアンテナや送受信部を含む通信部(図示せず)を更に有しても良い。
【0018】
記憶部16は、CPU11,12が実行するプログラムを含む各種プログラム、及びCPU11,12が実行する演算の中間データ、静的地図及び非静的地図のデータ等を含む各種データを格納する。記憶部16は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、RAM(Random Access Memory)、ROM(Read Only Memory)等を含む半導体記憶装置等を含む。ディスクを記録媒体として用いるディスク装置には、例えばHDD(Hard Disk Drive)が使用可能である。又、記憶部16は、複数の記憶装置で形成されていても良く、この場合、アクセス速度の異なる記憶装置を含んでも良い。
【0019】
台車13は、ジャイロセンサ131、センサ・エンコーダ132、モータ133、及び車輪134を有する。ジャイロセンサ131は、車輪134の回転量を計測して走行制御CPU12に出力し、センサ・エンコーダ132は、車輪134の回転数を検出して走行制御CPU12に出力する。ジャイロセンサ131及びセンサ・エンコーダ132は、内的センサを形成する。モータ133は、走行制御CPU12からのコマンドに基づいて車輪134を直接、或いは、ギア機構(図示せず)を介して回転する。モータ133は、複数設けられていても良く、台車13の移動方向を決めるステアリング部(図示せず)を駆動しても良い。モータ133、ギア機構、及びステアリング部等は、ロボット1の走行を制御する走行制御系を形成する。
【0020】
走行制御CPU12は、台車13の移動を制御して例えばナビゲーションCPU11により指示された目標経路を追従させたり、台車13内のジャイロセンサ131の出力情報及びセンサ・エンコーダ132の出力情報に基づいて台車13、即ち、ロボット1の姿勢と現在位置を推定する。
【0021】
センサ部14は、カメラ141及び距離センサ142を有する。カメラ141は、例えば撮影画像から周知の方法で視覚的ランドマークを抽出してロボット1の3次元位置を計測するステレオカメラで形成可能である。距離センサ142は、周囲環境への距離を周知の方法で計測する例えばLRF等の計測装置で形成可能である。カメラ141及び距離センサ142は、外的センサを形成する。
【0022】
ナビゲーションCPU11は、内的センサ(ジャイロセンサ131、センサ・エンコーダ132)及び外的センサ(カメラ141及び距離センサ142)の出力情報に基づいて、ロボット1の現在位置を推定する。又、ナビゲーションCPU11は、推定したロボット1の現在位置に基づいて、ロボット1の移動を計画する。
【0023】
位置推定装置は、図1に示す如きハードウェア構成を有するロボット1のナビゲーションCPU11、即ち、ナビゲーション部の一部として搭載されていても良く、ロボット1が自律移動を行う際に自己位置推定を行う。
【0024】
図2は、ロボットの遠隔操作を説明する図である。ロボット1は、図2に示すように、サーバ(又はセンタ)901と通信可能な構成を有し、サーバ901からサービスの提供タイミング等を遠隔操作により制御されるものであっても良い。サーバ901は、メモリ902、通信部903、及びCPU904を有する。サーバ901は、オペレータがサーバ901に情報やコマンドを入力する入力部(図示せず)と、サーバ901からオペレータへ情報を出力する出力部(図示せず)を含んでも良い。この場合、入力部は、例えばキーボード等の操作部で形成可能であり、出力部は、表示部等で形成可能である。図2では、説明の便宜上、ロボット1内の通信部801以外の部分の図示は省略するが、通信部801は例えば図1に示すナビゲーションCPU11及び走行制御CPU12の少なくとも一方に接続されている。
【0025】
上記の例では、ロボット1が自己位置推定に用いる各種データがロボット1内の記憶部16に格納されているものとしたが、少なくともデータの一部をロボット1の制御及び管理を司るサーバ901内の記憶部902に格納しても良い。この場合、ロボット1の通信部801は、例えば無線ネットワーク911を介してサーバ901の通信部903と通信することで、自己位置推定に用いる各種データを取得すれば良い。サーバ901内の記憶部902に格納可能なデータには、ランドマークのデータベース(以下、ランドマークDB(Data-Base)に登録されるデータの他、ロボット1の記憶部16に格納されるデータを含んでも良い。又、図1に示すナビゲーションCPU11の機能の少なくとも一部、或いは、走行制御CPU12の機能の少なくとも一部をサーバ901側で実現するようにしても良い。自己位置推定に用いる各種データの少なくとも一部をサーバ901側に格納することで、ロボット1内で必要となる記憶容量を減らし、ロボット1内で必要となるデータ管理の負荷を低減可能となる。
【0026】
サーバ901は、画像処理装置の一例である。しかし、ロボット1内で上記サーバ901の処理を実行する場合には、ロボット1が画像処理装置を形成する。この場合、ロボット1は自律走行型に限定されず、固定型であっても良い。これは、ロボットが固定型であっても、例えば屋外に設置されていれば撮影条件が時間と共に変化するからである。
【0027】
(データベースの作成)
先ず、本発明の一実施例における画像処理装置で用いるデータベースの作成方法について、図3と共に説明する。図3は、データベースの作成方法、即ち、データベースへのデータ登録時の動作を説明する機能ブロック図である。図3に示す機能ブロックの処理は、CPU等のプロセッサと記憶部を含む汎用のコンピュータにより実行可能である。この例では、説明の便宜上、図3に示す機能ブロックの処理は、図2に示すサーバ901のCPU904により実行されるものとする。
【0028】
図3において、入力部21は、例えばロボット1のカメラ141で撮影された画像データ(又は、画像系列)を通信部903を介して入力する。画像データは、例えば動画像データである。前処理部22は、画像データの各フレームに対して、特徴点を周知の手法で抽出する特徴点抽出部221と、抽出した特徴点に基づいて周知の手法で特徴ベクトルを算出する算出部222を有する。
【0029】
SIFT(Scale-Invariant Feature Transform)は、検出した特徴点に対して、画像の回転、スケール変化、照明変化等に対してロバストな特徴量を記述する、特徴点の検出と特徴量の記述を行う周知のアルゴリズムである。以下の説明では、説明の便宜上、検出される特徴点はSIFTに従って検出されたSIFT特徴点であるものとするが、特徴点はSIFT特徴点に限定されないことは言うまでもない。特徴ベクトルにSIFTを使用した場合、特徴ベクトルの長さは例えば128次元に設定しても良い。この場合、特徴ベクトルの各値を0〜255の区間に正規化すると、例えば特徴ベクトルV1は [0,12,53,2,3,12,54,…]、特徴ベクトルV2は[76,4,2,6,22,12,67,34,123,…]の如き表現が可能となる。
【0030】
特徴ベクトル処理部23は、特徴ベクトルバッファ部231、フレーム間特徴点のマッチング(又は、照合)部232、及びID取得部233を有する。特徴ベクトルバッファ部231は、前処理部22で算出された特徴ベクトルをバッファリングし、例えば時刻t−2,t−1,tにおけるフレームの特徴ベクトルがバッファリングされて例えば記憶部902に格納される。尚、バッファリングされる特徴ベクトルは、少なくとも時刻t−1,tにおけるフレームの特徴ベクトルであれば良い。マッチング部232は、時刻tにおける最新(即ち、現在の)フレームの特徴点が時刻t−1における直前フレームの特徴点とマッチ(即ち、一致)するか否かを判定し、マッチした特徴点とマッチしなかった特徴点に分類する。ID取得部233は、マッチした特徴点については時刻t−1における直前フレームの特徴点のID番号(即ち、ランドマークを識別するIDの値)を継承させ、マッチしなかった特徴点についてはランドマークDB25に登録されている特徴点とマッチする特徴点とランドマークDB25に登録されている特徴点とマッチしなかった特徴点に更に分類する。ランドマークDB25は、例えばサーバ901の記憶部902に格納しても良い。
【0031】
DB処理部(又は、DB更新部)24は、時刻t−1における直前フレームの特徴点とマッチした特徴点、或いは、ランドマークDB25に登録されている特徴点とマッチした特徴点の特徴ベクトルをサンプルとしてランドマークの木構造(以下、ランドマークツリーとも言う)のサブツリーに登録する。ランドマークツリーは、複数のクラスを階層的に管理するものであり、サブツリーは、クラス内のメンバー(即ち、クラスを形成するメンバー)を階層的に管理するものである。木構造は、メンバーの検索又はメンバーに対する処理を効率良く行って処理時間を短縮するのに好適である。一方、DB処理部24は、ランドマークDB25に登録されている特徴点とマッチしなかった特徴点の特徴ベクトルを新しいクラスの代表としてクラスを生成すると共に、これと同時に特徴ベクトルをサンプルとしてランドマークツリーのサブツリーを作成する。更に、DB処理部24では、サンプルが登録されたサブツリー、或いは、作成されたサブツリーに基づいて、ランドマークツリーの木構造の更新又は最適化を行い、更新又は最適化された木構造のランドマークツリーはランドマークDB25に格納される。
【0032】
図4は、ランドマークDBの作成方法を説明するフローチャートである。図4において、ステップS1では、ステレオカメラ141からの画像系列の全ての画像の処理が完了したか否かを判定し、判定結果がNOであると処理はステップS2へ進み、判定結果がYESであると処理はステップS6へ進む。ステップS2では、ステレオカメラ141からの画像系列を入力部21に入力する。ステップS3では、前処理部22の特徴点抽出部221が入力部21を介して入力されるステレオカメラ141からの画像系列のうち、例えば右カメラ画像(又は、左カメラ画像)に対して特徴点抽出を行い、特徴ベクトル算出部222が抽出した特徴点の周囲領域の輝度分布特徴から特徴ベクトルを計算する。ステップS4では、特徴ベクトル処理部23の特徴ベクトルバッファ部231が特徴ベクトル算出部222から供給される特徴ベクトルをバッファリングし、マッチング部232がバッファリングされた特徴ベクトルに基づいてフレーム間の特徴点を追跡、即ち、マッチングを行う。ステップS5では、マッチング部232が未処理の特徴点数を、処理中のフレームの特徴点数に設定する。ステップS7では、マッチング232が未処理特徴点数が0であるか否かを判定し、判定結果がYESであると処理は後述するステップS16へ進み、判定結果がNOであると処理はステップS8へ進む。
【0033】
ステップS8では、マッチング部232が未処理の特徴点を選択する。ステップS9では、特徴ベクトル処理部23のID取得部233が追跡長さ(又は、距離)が一定の閾値以上であるか否かを判定し、判定結果がYESであると処理はステップS10へ進み、判定結果がNOであると処理は後述するステップS16へ進む。ステップS10では、ID取得部233が直前フレームでの対応特徴点がID番号を有するか否かを判定し、判定結果がYESであると処理はステップS13へ進み、判定結果がNOであると処理はステップS11へ進む。ステップS11では、ID取得部233がステップS10において直前フレームでの対応特徴点が有すると判定されたID番号と一致するID番号をランドマークDB25内で検索する。ステップS12では、ID取得部233が一致するID番号が検索されたか否かを判定する。一致するID番号が検索されてステップS12の判定結果がYESであると処理はステップS14へ進み、一致するID番号が検索されず(NULL)ステップS12の判定結果がNOであると処理はステップS13へ進む。
【0034】
ステップS13では、DB処理部24が一致するID番号がランドマークDB25に登録されていない特徴点の特徴ベクトルをランドマークDB25内の該当するクラスのランドマークツリー中の該当するカテゴリのサブツリーに追加し、処理はステップS15へ進む。例えば、クラスは検出対象となるランドマークに対応し、各カテゴリは当該カテゴリが属するクラス、即ち、ランドマークを形成する特徴部分に相当する。ランドマークを形成する特徴部分には、例えば右角、左角、色等の情報が含まれる。ステップS14では、DB処理部24が一致するID番号を有する特徴点の特徴ベクトルをランドマークDB25内の該当するクラスのランドマークツリー中の該当するカテゴリのサブツリーに追加登録する。ステップS15では、特徴ベクトル処理部23のマッチング部232が未処理の特徴点数を1だけデクリメントし、処理はステップS7へ戻る。
【0035】
ステップS16では、DB処理部24がサンプルが登録されたサブツリー、或いは、作成されたサブツリーに基づいて、ランドマークツリーの木構造の更新又は最適化を行い、処理はステップS1へ戻る。ステップS7の判定結果がYESになると、ステップS6では、DB処理部24が更新又は最適化された木構造のランドマークツリーを保存するためにランドマークDB25に格納し、処理は終了する。
【0036】
本実施例におけるランドマークDB25への登録手順をより詳細に説明すると、次のようになる。ステップS31では、図5に示すようにフレーム0のフレーム画像I0において特徴点pを検出し、特徴ベクトルを作成する。ステップS32では、図6に示すようにフレームm(m>0)において特徴pmを検出して特徴ベクトルを作成し、フレームm−1で検出した特徴点pm−1との対応付けを行って図7に示す如き対応点リストを作成すると共に、対応点リストの長さcを記憶する。ステップS33では、フレームM(M>m>0)まで、ステップS32の処理を続ける。ステップS34では、フレームMの全ての特徴点pMをスキャンする。
【0037】
【数1】
【0038】
ステップS35では、フレームMの全ての特徴点pMのスキャンが完了した後、ランドマークDB25を最適化する。ステップS36では、フレームn(n=M+j,j>0)において、ステップS32と同様の処理を、mをnに変更して行う。ステップS37では、フレームnの全ての特徴点リストをスキャンして、以下に説明する処理P1と処理P2を行う。
【0039】
【数2】
【0040】
ステップS38では、フレームnの全ての特徴点pnのスキャンが完了した後、ランドマークDB25を最適化する。ステップS39では、最終フレームNまでステップS36,S37,S38を行う。ステップS40では、ランドマークDB25の内容を記憶部902に保存して、処理は終了する。
【0041】
ステップS38におけるランドマークDB25の最適化は、例えば次のように行うことができる。先ず、ランドマークDB25に格納されているランドマークツリーの各ノードiに対して、ステップS38−1〜S38−4を実行する。ステップS38−1は、ノードiの特徴ベクトルwiを次式から計算する。ここで、Kiはサブツリー(SD)iのノード数を表す。
【0042】
【数3】
ステップS38−2は、サブツリー(SD)i中で特徴ベクトルwiとの距離L2が所定値以上のメンバーを削除する。ステップS38−3は、ステップS38−1を再度実行し、ステップS38−4は、サブツリー(SD)iの構造を最適化、即ち、サブツリー(SD)iの木構造の再構成を行う。次に、ランドマークDB25に格納されているランドマークツリーの木構造を最適化、即ち、ランドマークツリーの木構造の再構成を行う。
【0043】
尚、ステップS12におけるID番号の検索(search)は、例えば次のように行うことができる。
【0044】
【数4】
【0045】
【数5】
【0046】
図8は、ランドマークDB25に格納されるランドマークツリーの木構造の一例を説明する図である。図8において、右側にランドマークDB25全体のランドマークツリーの木構造を示し、左側にこの木構造の一部分を拡大して示す。図8の左側に示す木構造の部分は、ランドマークの1番目のカテゴリC1に関するサブツリーLMC1、ランドマークの2番目のカテゴリC2に関するサブツリーLMC2、ランドマークの3番目のカテゴリC3に関するサブツリーLMC3を有する。STは、サブツリーLMC1を形成する特徴ベクトルのサンプルを示し、FRは、サブツリーLMC1中の代表特徴ベクトルを太線で囲んで示す。サブツリーLMC2,LMC3中の代表特徴ベクトルも同様に、太線で囲んで示す。
【0047】
(ランドマークの検出)
次に、本発明の一実施例における画像処理装置で行うランドマーク検出方法について、図9と共に説明する。図9は、ランドマーク検出方法を説明する機能ブロック図である。図9中、図3と同一部分には同一符号を付し、その説明は省略する。図9に示す機能ブロックの処理は、サーバ901又はロボット1により実行可能である。この例では、説明の便宜上、図9に示す入力部21、前処理部22、ランドマークID認識部27、及び空間3次元位置測定部28の処理は、図2に示すサーバ901のCPU904により実行されるものとする。
【0048】
図9に示すように、前処理部22Aは、特徴点抽出部221及び特徴ベクトル算出部222に加え、特徴点座標記憶部223を有する。ランドマークID認識部27は、特徴ベクトルバッファ部231、フレーム間特徴点のマッチング部232、ID取得部233、及びIDリスト出力部234を有する。この例では、ランドマークDB25がランドマークID認識部27内に設けられているが、ランドマークDB25の配置は図3からもわかるように特に限定されず、サーバ901のCPU904からアクセス可能に設けられていれば良い。
【0049】
特徴点座標記憶部223は、カメラ141からの画像上の特徴点の座標を記憶部902に記憶し、空間3次元位置測定部28に供給する。空間3次元位置測定部28は、カメラ141の座標系における特徴点の空間3次元位置を測定する。
【0050】
一方、ロボット1のナビゲーションCPU11は、空間位置検索部111、計測値予測部112、仮説評価部113、仮説群生成部114、選択部115、ロボット位置姿勢推定部116、及び移動経路計画部117を有する。記憶部16には、ランドマークの空間位置のデータベース、即ち、ランドマーク地図が格納されている。
【0051】
空間位置検索部111は、ID番号でランドマークのワールド座標系(Word Coordinate System)又はグローバル座標系(Global Coordinate System)における空間位置を検索する。計測値予測部112は、空間位置をカメラ141の座標系、即ち、ローカル座標系(Local Coordinate System)或いはボディ座標系(Body Coordinate System)へ変換してID番号のランドマークをカメラ141で計測した場合の計測値を予測する。仮説評価部113は、各仮説の長さを評価し、ランドマークに対する実測値と予測値との差から尤度を計算する。仮説群生成部114は、ロボット位置(又は、カメラ位置姿勢)の仮説群を生成する。選択部115は、評価するべき任意の仮説(例えば、カメラ位置姿勢)を選択する。ロボット位置姿勢推定部116は、最良仮説、即ち、推定したロボット1の真の位置姿勢を求める。移動経路計画部117は、ロボット1が移動するべき移動経路を計画する。
【0052】
ランドマークの検出処理は、例えば次のようなステップS901〜S921により実行可能である。先ず、ステップS901では、ステレオカメラ141からの画像系列を入力部21に入力する。ステップS902では、特徴点抽出部221が入力部21を介して入力されるステレオカメラ141からの画像系列のうち、例えば右カメラ画像(又は、左カメラ画像)に対して特徴点抽出を行う。右カメラ画像を使用するか、或いは、左カメラ画像を使用するかは、ランドマークDB25に登録されているランドマークを撮影したカメラが右カメラであるか、或いは、左カメラであるかに応じて選択しても良い。ステップS903では、特徴ベクトル算出部222が抽出した特徴点の周囲領域の輝度分布特徴から特徴ベクトルを計算する。ステップS904では、特徴点座標記憶部223が特徴点のカメラ画像上の位置を示す座標を記憶部902に記憶する。
【0053】
ステップS905では、特徴ベクトルバッファ部231が特徴ベクトル算出部222から供給される特徴ベクトルを記憶部902にバッファリングする。ステップS906では、特徴ベクトルバッファ部231が記憶部902にバッファリングされた特徴ベクトルに基づいて、例えば時刻tの最新フレームでの特徴点リストと時刻t−1の直前フレームでの特徴点リストを抽出してマッチング部232に供給する。ステップS907では、マッチング部232が時刻t,t−1の連続する2フレームの特徴点リスト同士を総当りでマッチングする。ステップS908では、マッチングの得点が閾値以上であるとID取得部233が連続マッチング長さをインクリメントし、これと同時に、直前フレームでの対応する特徴点がID番号を持っていればそのID番号を継承させる。直前フレームでの対応する特徴点がID番号を持っていない場合、ステップS909では、ID取得部233が連続マッチング長さが一定以上であればランドマークDB25と照合する。ステップS910では、ID取得部233がランドマークDB25とのマッチングに外れた特徴点を廃棄する。ステップS911では、IDリスト出力部234がマッチングすると認識されたランドマークとそのID番号、即ち、マッチングすると認識されたランドマークのデータを出力する。
【0054】
この例では、ランドマークの空間位置データベース(DB)が事前に取得されて記憶部16に格納されているものとする。ステップS912では、空間位置検索部111がID番号でワールド座標系におけるランドマークの空間位置を検索して出力する。ステップS912では、全てのIDに対して同様な検索を行う。
【0055】
ステップS913では、ロボット1の位置姿勢を推定するために、仮説群生成部114がロボット1の位置姿勢に関する仮説群を後述する評価部113から供給される尤度に基づいて生成する。ステップS914では、選択部115が仮説群から任意の仮説を選択し、選択された任意の仮説に対して評価を行う。この例では、評価は前の仮説に対する繰り返し処理である。ステップS915では、計測値予測部113が空間位置をカメラ141のローカル座標系へ変換してID番号のランドマークをカメラ141で計測した場合の計測値を予測する。これにより、空間位置検索部111で検索されたランドマークのワールド座標がカメラ141のローカル座標系へ変換される。
【0056】
ステップS916では、空間3次元位置測定部28がカメラ141でランドマークを計測した際の実測値を評価部113に供給する。ステップS917では、評価部113が空間3次元位置測定部28から供給される実測値と計測値予測部112で変換されたローカル座標とを比較し、比較された2つの値の一致度を表す点数を付ける。この例では、各仮説の良さを評価し、ランドマークに対する実測値と予測値の差から尤度を計算する。ステップS918では、評価部113で計算された尤度(即ち、点数)をロボット位置の仮説群生成部114へフィードバックする。ステップS919では、位置姿勢推定部116が最良評価の仮説を推定したロボット1の真の位置姿勢に決定する。ステップS920では、位置姿勢推定部116が推定したロボット1の真の位置姿勢を移動計画部117に供給する。ステップS921では、移動計画部117が計画した移動指示に従ってロボット1を移動させるように走行制御CPU12を制御する。これにより、図1に示すモータ133は、走行制御CPU12からのコマンドに基づいて車輪134を直接、或いは、ギア機構を介して回転し、ロボット1が計画に従って移動する。
【0057】
尚、図3に示す如きDB処理部24をランドマークID認識部27に接続して、ランドマークDB25を更新又は最適化可能な構成としても良いことは、言うまでもない。
【0058】
(比較例と実施例の比較)
次に、従来のデータ処理装置の一例である比較例におけるランドマークDBへの登録手順を説明する。ステップS501では、図10に示すように各フレーム画像I0〜I3において特徴点wを検出し、特徴ベクトルのサンプルを収集する。ステップS502では、収集した特徴ベクトルを図11に示すようにクラスタリングする。この場合、例えばカテゴリ数が既知であり「3」であるものとする。従って、ステップS502では収集した特徴ベクトルが3つのカテゴリC1,C2,C3にクラスタリングされる。ステップS503では、図12に太線で囲んで示すように各カテゴリC1,C2,C3の平均ベクトルw1,w2,w3を計算する。ステップS504では、図13に示すように各カテゴリC1,C2,C3の平均ベクトルw1,w2,w3、即ち、太線で囲んで示す代表特徴ベクトルをノードとしてKD木(K-Dimensional Tree)を生成し、ランドマークDBが作成される。
【0059】
しかし、同一物体を撮影した画像から検出した特徴ベクトルが照明変化、視点の違い、影の違い等の影響により異なると、代表特徴ベクトルがぼけてしまう。このため、画像サンプルの数が多くなると、代表特徴ベクトルが本来同じカテゴリに属する特徴ベクトルを代表できなる可能性がある。
【0060】
一方、上記実施例では、第1及び第2の2段階でランドマークを検出することで、ランドマーク検出時の誤りと見逃しを軽減することができる。
【0061】
第1段階では、クラスとのマッチングを行うことで大まかな(又は、粗い)マッチングを行う。先ず、入力特徴ベクトルとランドマークDB内のランドマークツリーのノードとのマッチングを行い、入力特徴ベクトルとノード間の距離L2を算出する。次に、算出した距離L2でランドマークツリーのノードを絞込み、入力特徴ベクトルとランドマークツリーのノードとの相関値から類似度を算出する。これにより、動画像追跡を用いて、一定時間以上に連続に追跡されている比較的安定な特徴点のみが生き残り、生き残った特徴点が各クラスの代表的ベクトルと比較的甘くマッチングされる。従って、閾値を過敏に設定したことによるランドマークの検出見逃しを減らすことができる。
【0062】
第2段階では、第1段階でマッチングされたクラス内の各メンバーとのマッチングを行うことで精密なマッチングを行う。先ず、第1段階で絞り込んだランドマークツリーのノードから該当するカテゴリのサブツリーを抽出する。次に、入力特徴ベクトルと抽出したサブツリーの各ノードとの距離L2を算出して最大距離と最小距離のノードのID番号を抽出し、入力特徴ベクトルとこれらの抽出されたノードとの相関値から総合的に類似度を算出する。これにより、各クラスの代表特徴ベクトルとのマッチングで生き残った特徴点に対して、サブツリーで管理しているサンプルの特徴点とのマッチングを行う。これらのサンプルは、異なる地点や照明等の異なる環境下で取得したデータであり、多様性を保っているので、マッチングの得点を比較的高くすることができる。この段階で最大得点と最少得点の両方に対して比較的高い閾値を設定することで、ランドマークの検出時の誤りを減らすことができる。
【0063】
次に、比較例と実施例についての実験データを図14乃至図20と共に説明する。実験例では、或る建物のエントランスで、所定位置に設置されたカメラを例えば垂直軸を中心に所定角度範囲で3周回させて、毎秒5フレームで画像列を取得し、ランドマークDBを作成した。更に、ランドマークDBを作成した数時間後に同じエントランスで、前記所定位置に設置されたカメラを同様に2周回させて、画像列(3000枚超)を取得し、ランドマークDB25を用いて画像列からランドマーク検知を行った。
【0064】
図14は、比較例における照明の変化と撮影地点による検出性能への影響を説明する図であり、図15は、実施例における照明の変化と撮影地点による検出性能への影響を説明する図である。図14及び図15において、(a)はランドマークDB作成後に取得した例えば4フレーム目の画像を示し、(b)はランドマークDB作成後に取得した例えば21フレーム目の画像を示す。4フレーム目の画像と21フレーム目の画像とでは、撮影時間の違いから照明が変化している。又、図14及び図15において、○印はランドマークDBに登録されたランドマークとのマッチングが取れた箇所を示す。図14と図15の比較からもわかるように、本実施例によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず、比較例に比べてより多くのランドマークを検出可能であることが確認された。
【0065】
図16は、比較例における各フレームでのランドマークの検出数を説明する図であり、図17は、実施例における各フレームでのランドマークの検出数を説明する図である。図16及び図17において、縦軸はランドマーク検出数(個)を示し、横軸は画像フレーム番号(時間軸相当)を示す。
【0066】
図18は、図16の比較例のランドマーク検出結果を示すヒストグラムであり、図19は、図17の実施例のランドマーク検出結果を示すヒストグラムである。図18及び図19において、最も細かいハッチングがランドマーク検出回数が0回の場合、2番目に細かいハッチングがランドマーク検出階数が1回の場合、3番目に細かいハッチングがランドマーク検出階数が2回の場合、4番目に細かいハッチングがランドマーク検出階数が3回の場合、5番目に細かい(即ち、最も粗い)ハッチングがランドマーク検出階数が4回以上の場合を示す。更に、図20は、図18及び図19のヒストグラムを表形式で示す図である。
【0067】
図14、図16及び図18と、図15、図17及び図19との比較、又、図20からもわかるように、本実施例によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことが可能であるため、比較例に比べてより多くのランドマークを検出可能であることが確認された。
【0068】
尚、上記実施例では、検出対象がランドマークであるが、検出対象はランドマークに限定されるものではなく、例えば人物、人物の顔等であっても良い。検出対象が例えば特定人物の顔であれば、クラスは検出対象となる特定人物の顔に対応し、各カテゴリは当該カテゴリが属するクラス、即ち、顔を形成する特徴部分に相当する。顔を形成する特徴部分には、例えば右目、左目、鼻、口等の情報が含まれる。
【0069】
開示の画像処理装置及びプログラムの適用は、上記実施例の如き自律移動型のロボットに限定されるものではなく、各種自律移動型の装置、各種固定型の装置、携帯型の電子装置、例えば携帯電話、携帯端末、携帯型パーソナルコンピュータ等にも適用可能であることは言うまでもない。
【0070】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、画像データから検出対象を検出させるプログラムであって、
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順
を前記コンピュータに実行させることを特徴とする、プログラム。
(付記2)
前記認識手順は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、付記1記載のプログラム。
(付記3)
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新手順
を前記コンピュータに更に実行させ、
前記更新手順は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、付記1又は2記載のプログラム。
(付記4)
前記前処理手順は、前記画像データをカメラの出力から入力し、
前記認識手順により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定手順
を前記コンピュータに更に実行させることを特徴とする、付記1乃至3のいずれか1項記載のプログラム。
(付記5)
付記1乃至4のいずれか1項記載のプログラムが格納されたことを特徴とする、コンピュータ読み取り可能な記憶媒体。
(付記6)
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、
第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする、画像処理装置。
(付記7)
前記認識部は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、付記6記載の画像処理装置。
(付記8)
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新部を更に備え、
前記更新部は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、付記6又は7記載の画像処理装置。
(付記9)
前記画像データを出力するカメラと、
前記認識部により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定部を更に備えたことを特徴とする、付記6乃至8のいずれか1項記載の画像処理装置。
【0071】
以上、開示のプログラム及び画像処理装置を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0072】
1 ロボット
11 ナビゲーションCPU
12 走行制御CPU
13 台車
14 センサ部
15 入出力部
16,902 記憶部
141 カメラ
801,903 通信部
901 サーバ
904 CPU
【技術分野】
【0001】
本発明は、プログラム及び画像処理装置に関する。
【背景技術】
【0002】
或る環境中に存在するランドマークの画像は、例えばこの環境中で移動するロボット等の装置の自己位置推定、環境認識等に利用することができる。このような場合、ランドマークのデータベースを事前に作成しておき、自己位置推定を行う際に装置のカメラが新たに撮影した画像中にデータベースに登録されているランドマークが存在するか否かを判定する。データベースを作成するには、例えば或る環境下での多数の画像を撮影し、各画像から角(又は、コーナ)、色等といった特徴点を検出する。そして、検出された特徴点がデータベースに登録されていない新たな特徴点であれば新たに登録する。一方、検出された特徴点がデータベースに既に登録されていれば、例えば検出された特徴点が属するカテゴリの代表的な特徴ベクトル(以下、代表特徴ベクトルと言う)を更新する。撮影された多数の画像から得た特徴ベクトルをクラスタリングすることで複数のクラスを生成し、各クラスに属するサンプル画像の特徴ベクトルを平均した特徴ベクトルを当該クラスの代表特徴ベクトルとすることができる。
【0003】
撮影した画像を多数のサンプル画像の全てと照合するのには膨大な時間がかかる。これに対し、撮影した画像の特徴ベクトルをデータベースに登録された各代表特徴ベクトルと照合する場合、照合に要する時間を短縮できる。
【0004】
しかし、特徴ベクトルは、画像撮影の際のカメラの位置姿勢、照明等の変化にできるだけロバストであるように作成しても、これらの変化に完全に対応することはできない。例えば、データベースの作成時に用いた画像サンプルとは異なる時間帯で撮影した画像、或いは、データベースの作成時に用いた画像サンプルとは異なる視点から撮影した画像等からランドマークを検出しようとすると、ランドマークの誤検出が発生してしまう。つまり、データベースの作成時に用いた画像サンプルに対して、照明変化、視点の違い等により撮影された画像とデータベースに登録された画像サンプルとの照合結果に誤りが生じ、登録されているランドマークではない画像をランドマークであると誤って検出したり、登録されているランドマークの画像をランドマークであると正しく検出できない場合が発生してしまう。これは、同一物体を撮影した場合でも、照明変化、視点の違い、影の違い等の影響により、撮影された画像は若干異なり、同一物体に対する特徴ベクトルが異なることによる。
【0005】
同一物体を撮影した画像から検出した特徴ベクトルが照明変化、視点の違い、影の違い等の影響により異なると、代表特徴ベクトルがぼけてしまう。このため、画像サンプルの数が多くなると、代表特徴ベクトルが本来同じカテゴリに属する特徴ベクトルを代表できなる可能性がある。
【0006】
尚、照明変化、視点の違い、影の違い等により画像の照合時に発生する画像の誤検出の問題は、ランドマークの検出時に限らず、入力画像を登録済みの画像と照合する各種画像処理装置においても同様に発生する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−285141号公報
【特許文献2】特開2009−53842号公報
【特許文献3】特開平9−294277号公報
【特許文献4】特開2009−245304号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来の画像処理装置では、登録されている画像の撮影条件と照合する入力画像の撮影条件が異なると、画像の誤検出が発生してしまい、正確な画像照合を行うことは難しいという問題があった。
【0009】
そこで、本発明は、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことができるプログラム及び画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一観点によれば、コンピュータに、画像データから検出対象を検出させるプログラムであって、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順を前記コンピュータに実行させることを特徴とするプログラムが提供される。
【0011】
本発明の一観点によれば、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする画像処理装置が提供される。
【発明の効果】
【0012】
開示のプログラム及び画像処理装置によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施例における自律走行型のロボットの構成の一例を示す図である。
【図2】ロボットの遠隔操作を説明する図である。
【図3】データベースの作成方法を説明する機能ブロック図である。
【図4】ランドマークDBの作成方法を説明するフローチャートである。
【図5】特徴点の検出を説明する図である。
【図6】特徴ベクトルと検出した特徴点との対応付けを説明する図である。
【図7】対応点リストの作成を説明する図である。
【図8】ランドマークDB25に格納される木構造の一例を説明する図である。
【図9】ランドマーク検出方法を説明する機能ブロック図である。
【図10】比較例における特徴ベクトルのサンプルの収集を説明する図である。
【図11】比較例における収集した特徴ベクトルのクラスタリングを説明する図である。
【図12】比較例における平均ベクトルの計算を説明する図である。
【図13】比較例におけるKD木の生成を説明する図である。
【図14】比較例における照明の変化と撮影地点による検出性能への影響を説明する図である。
【図15】実施例における照明の変化と撮影地点による検出性能への影響を説明する図である。
【図16】比較例における各フレームでのランドマークの検出数を説明する図である。
【図17】実施例における各フレームでのランドマークの検出数を説明する図である。
【図18】図16の比較例のランドマーク検出結果を示すヒストグラムである。
【図19】図17の実施例のランドマーク検出結果を示すヒストグラムである。
【図20】図18及び図19のヒストグラムを表形式で示す図である。
【発明を実施するための形態】
【0014】
開示のプログラム及び画像処理装置では、前処理で、入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する。記憶部には、検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録されている。認識処理の第1段階では入力特徴ベクトルと記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する。
【0015】
第1の段階及び第2の段階の2段階で検出対象を検出することで、検出対象の検出時の誤りと見逃しを軽減することができる。
【0016】
以下に、開示のプログラム及び画像処理装置の各実施例を図面と共に説明する。
【実施例】
【0017】
(ロボットシステムの構成)
図1は、本発明の一実施例における自律走行型のロボットの構成の一例を示す図である。ロボット1は、ナビゲーションCPU(Central Processing Unit)11、走行制御CPU12、台車13、センサ部14、入出力部15、及び記憶部16を有する。入出力部15は、利用者がロボット1に情報やコマンドを入力する入力部(図示せず)と、ロボット1から利用者へ情報を出力する出力部(図示せず)を含む。入力部は、例えばキーボード等の操作部、マイクロホン等を含む。一方、出力部は、表示部、スピーカ等を含む。CPU11,12は、単一の計算機(又は、コンピュータ)を形成しても、別々の計算機(又は、コンピュータ)を形成しても良い。尚、ロボット1には、周知の構成を有し周知の動作を行うロボットアーム(図示せず)や、外部のサーバ(図示せず)等と通信するためのアンテナや送受信部を含む通信部(図示せず)を更に有しても良い。
【0018】
記憶部16は、CPU11,12が実行するプログラムを含む各種プログラム、及びCPU11,12が実行する演算の中間データ、静的地図及び非静的地図のデータ等を含む各種データを格納する。記憶部16は、コンピュータ読み取り可能な記憶媒体により形成可能である。コンピュータ読み取り可能な記憶媒体は、一例として、磁気記録媒体、光記録媒体、光磁気記録媒体、ディスクを記録媒体として用いるディスク装置、RAM(Random Access Memory)、ROM(Read Only Memory)等を含む半導体記憶装置等を含む。ディスクを記録媒体として用いるディスク装置には、例えばHDD(Hard Disk Drive)が使用可能である。又、記憶部16は、複数の記憶装置で形成されていても良く、この場合、アクセス速度の異なる記憶装置を含んでも良い。
【0019】
台車13は、ジャイロセンサ131、センサ・エンコーダ132、モータ133、及び車輪134を有する。ジャイロセンサ131は、車輪134の回転量を計測して走行制御CPU12に出力し、センサ・エンコーダ132は、車輪134の回転数を検出して走行制御CPU12に出力する。ジャイロセンサ131及びセンサ・エンコーダ132は、内的センサを形成する。モータ133は、走行制御CPU12からのコマンドに基づいて車輪134を直接、或いは、ギア機構(図示せず)を介して回転する。モータ133は、複数設けられていても良く、台車13の移動方向を決めるステアリング部(図示せず)を駆動しても良い。モータ133、ギア機構、及びステアリング部等は、ロボット1の走行を制御する走行制御系を形成する。
【0020】
走行制御CPU12は、台車13の移動を制御して例えばナビゲーションCPU11により指示された目標経路を追従させたり、台車13内のジャイロセンサ131の出力情報及びセンサ・エンコーダ132の出力情報に基づいて台車13、即ち、ロボット1の姿勢と現在位置を推定する。
【0021】
センサ部14は、カメラ141及び距離センサ142を有する。カメラ141は、例えば撮影画像から周知の方法で視覚的ランドマークを抽出してロボット1の3次元位置を計測するステレオカメラで形成可能である。距離センサ142は、周囲環境への距離を周知の方法で計測する例えばLRF等の計測装置で形成可能である。カメラ141及び距離センサ142は、外的センサを形成する。
【0022】
ナビゲーションCPU11は、内的センサ(ジャイロセンサ131、センサ・エンコーダ132)及び外的センサ(カメラ141及び距離センサ142)の出力情報に基づいて、ロボット1の現在位置を推定する。又、ナビゲーションCPU11は、推定したロボット1の現在位置に基づいて、ロボット1の移動を計画する。
【0023】
位置推定装置は、図1に示す如きハードウェア構成を有するロボット1のナビゲーションCPU11、即ち、ナビゲーション部の一部として搭載されていても良く、ロボット1が自律移動を行う際に自己位置推定を行う。
【0024】
図2は、ロボットの遠隔操作を説明する図である。ロボット1は、図2に示すように、サーバ(又はセンタ)901と通信可能な構成を有し、サーバ901からサービスの提供タイミング等を遠隔操作により制御されるものであっても良い。サーバ901は、メモリ902、通信部903、及びCPU904を有する。サーバ901は、オペレータがサーバ901に情報やコマンドを入力する入力部(図示せず)と、サーバ901からオペレータへ情報を出力する出力部(図示せず)を含んでも良い。この場合、入力部は、例えばキーボード等の操作部で形成可能であり、出力部は、表示部等で形成可能である。図2では、説明の便宜上、ロボット1内の通信部801以外の部分の図示は省略するが、通信部801は例えば図1に示すナビゲーションCPU11及び走行制御CPU12の少なくとも一方に接続されている。
【0025】
上記の例では、ロボット1が自己位置推定に用いる各種データがロボット1内の記憶部16に格納されているものとしたが、少なくともデータの一部をロボット1の制御及び管理を司るサーバ901内の記憶部902に格納しても良い。この場合、ロボット1の通信部801は、例えば無線ネットワーク911を介してサーバ901の通信部903と通信することで、自己位置推定に用いる各種データを取得すれば良い。サーバ901内の記憶部902に格納可能なデータには、ランドマークのデータベース(以下、ランドマークDB(Data-Base)に登録されるデータの他、ロボット1の記憶部16に格納されるデータを含んでも良い。又、図1に示すナビゲーションCPU11の機能の少なくとも一部、或いは、走行制御CPU12の機能の少なくとも一部をサーバ901側で実現するようにしても良い。自己位置推定に用いる各種データの少なくとも一部をサーバ901側に格納することで、ロボット1内で必要となる記憶容量を減らし、ロボット1内で必要となるデータ管理の負荷を低減可能となる。
【0026】
サーバ901は、画像処理装置の一例である。しかし、ロボット1内で上記サーバ901の処理を実行する場合には、ロボット1が画像処理装置を形成する。この場合、ロボット1は自律走行型に限定されず、固定型であっても良い。これは、ロボットが固定型であっても、例えば屋外に設置されていれば撮影条件が時間と共に変化するからである。
【0027】
(データベースの作成)
先ず、本発明の一実施例における画像処理装置で用いるデータベースの作成方法について、図3と共に説明する。図3は、データベースの作成方法、即ち、データベースへのデータ登録時の動作を説明する機能ブロック図である。図3に示す機能ブロックの処理は、CPU等のプロセッサと記憶部を含む汎用のコンピュータにより実行可能である。この例では、説明の便宜上、図3に示す機能ブロックの処理は、図2に示すサーバ901のCPU904により実行されるものとする。
【0028】
図3において、入力部21は、例えばロボット1のカメラ141で撮影された画像データ(又は、画像系列)を通信部903を介して入力する。画像データは、例えば動画像データである。前処理部22は、画像データの各フレームに対して、特徴点を周知の手法で抽出する特徴点抽出部221と、抽出した特徴点に基づいて周知の手法で特徴ベクトルを算出する算出部222を有する。
【0029】
SIFT(Scale-Invariant Feature Transform)は、検出した特徴点に対して、画像の回転、スケール変化、照明変化等に対してロバストな特徴量を記述する、特徴点の検出と特徴量の記述を行う周知のアルゴリズムである。以下の説明では、説明の便宜上、検出される特徴点はSIFTに従って検出されたSIFT特徴点であるものとするが、特徴点はSIFT特徴点に限定されないことは言うまでもない。特徴ベクトルにSIFTを使用した場合、特徴ベクトルの長さは例えば128次元に設定しても良い。この場合、特徴ベクトルの各値を0〜255の区間に正規化すると、例えば特徴ベクトルV1は [0,12,53,2,3,12,54,…]、特徴ベクトルV2は[76,4,2,6,22,12,67,34,123,…]の如き表現が可能となる。
【0030】
特徴ベクトル処理部23は、特徴ベクトルバッファ部231、フレーム間特徴点のマッチング(又は、照合)部232、及びID取得部233を有する。特徴ベクトルバッファ部231は、前処理部22で算出された特徴ベクトルをバッファリングし、例えば時刻t−2,t−1,tにおけるフレームの特徴ベクトルがバッファリングされて例えば記憶部902に格納される。尚、バッファリングされる特徴ベクトルは、少なくとも時刻t−1,tにおけるフレームの特徴ベクトルであれば良い。マッチング部232は、時刻tにおける最新(即ち、現在の)フレームの特徴点が時刻t−1における直前フレームの特徴点とマッチ(即ち、一致)するか否かを判定し、マッチした特徴点とマッチしなかった特徴点に分類する。ID取得部233は、マッチした特徴点については時刻t−1における直前フレームの特徴点のID番号(即ち、ランドマークを識別するIDの値)を継承させ、マッチしなかった特徴点についてはランドマークDB25に登録されている特徴点とマッチする特徴点とランドマークDB25に登録されている特徴点とマッチしなかった特徴点に更に分類する。ランドマークDB25は、例えばサーバ901の記憶部902に格納しても良い。
【0031】
DB処理部(又は、DB更新部)24は、時刻t−1における直前フレームの特徴点とマッチした特徴点、或いは、ランドマークDB25に登録されている特徴点とマッチした特徴点の特徴ベクトルをサンプルとしてランドマークの木構造(以下、ランドマークツリーとも言う)のサブツリーに登録する。ランドマークツリーは、複数のクラスを階層的に管理するものであり、サブツリーは、クラス内のメンバー(即ち、クラスを形成するメンバー)を階層的に管理するものである。木構造は、メンバーの検索又はメンバーに対する処理を効率良く行って処理時間を短縮するのに好適である。一方、DB処理部24は、ランドマークDB25に登録されている特徴点とマッチしなかった特徴点の特徴ベクトルを新しいクラスの代表としてクラスを生成すると共に、これと同時に特徴ベクトルをサンプルとしてランドマークツリーのサブツリーを作成する。更に、DB処理部24では、サンプルが登録されたサブツリー、或いは、作成されたサブツリーに基づいて、ランドマークツリーの木構造の更新又は最適化を行い、更新又は最適化された木構造のランドマークツリーはランドマークDB25に格納される。
【0032】
図4は、ランドマークDBの作成方法を説明するフローチャートである。図4において、ステップS1では、ステレオカメラ141からの画像系列の全ての画像の処理が完了したか否かを判定し、判定結果がNOであると処理はステップS2へ進み、判定結果がYESであると処理はステップS6へ進む。ステップS2では、ステレオカメラ141からの画像系列を入力部21に入力する。ステップS3では、前処理部22の特徴点抽出部221が入力部21を介して入力されるステレオカメラ141からの画像系列のうち、例えば右カメラ画像(又は、左カメラ画像)に対して特徴点抽出を行い、特徴ベクトル算出部222が抽出した特徴点の周囲領域の輝度分布特徴から特徴ベクトルを計算する。ステップS4では、特徴ベクトル処理部23の特徴ベクトルバッファ部231が特徴ベクトル算出部222から供給される特徴ベクトルをバッファリングし、マッチング部232がバッファリングされた特徴ベクトルに基づいてフレーム間の特徴点を追跡、即ち、マッチングを行う。ステップS5では、マッチング部232が未処理の特徴点数を、処理中のフレームの特徴点数に設定する。ステップS7では、マッチング232が未処理特徴点数が0であるか否かを判定し、判定結果がYESであると処理は後述するステップS16へ進み、判定結果がNOであると処理はステップS8へ進む。
【0033】
ステップS8では、マッチング部232が未処理の特徴点を選択する。ステップS9では、特徴ベクトル処理部23のID取得部233が追跡長さ(又は、距離)が一定の閾値以上であるか否かを判定し、判定結果がYESであると処理はステップS10へ進み、判定結果がNOであると処理は後述するステップS16へ進む。ステップS10では、ID取得部233が直前フレームでの対応特徴点がID番号を有するか否かを判定し、判定結果がYESであると処理はステップS13へ進み、判定結果がNOであると処理はステップS11へ進む。ステップS11では、ID取得部233がステップS10において直前フレームでの対応特徴点が有すると判定されたID番号と一致するID番号をランドマークDB25内で検索する。ステップS12では、ID取得部233が一致するID番号が検索されたか否かを判定する。一致するID番号が検索されてステップS12の判定結果がYESであると処理はステップS14へ進み、一致するID番号が検索されず(NULL)ステップS12の判定結果がNOであると処理はステップS13へ進む。
【0034】
ステップS13では、DB処理部24が一致するID番号がランドマークDB25に登録されていない特徴点の特徴ベクトルをランドマークDB25内の該当するクラスのランドマークツリー中の該当するカテゴリのサブツリーに追加し、処理はステップS15へ進む。例えば、クラスは検出対象となるランドマークに対応し、各カテゴリは当該カテゴリが属するクラス、即ち、ランドマークを形成する特徴部分に相当する。ランドマークを形成する特徴部分には、例えば右角、左角、色等の情報が含まれる。ステップS14では、DB処理部24が一致するID番号を有する特徴点の特徴ベクトルをランドマークDB25内の該当するクラスのランドマークツリー中の該当するカテゴリのサブツリーに追加登録する。ステップS15では、特徴ベクトル処理部23のマッチング部232が未処理の特徴点数を1だけデクリメントし、処理はステップS7へ戻る。
【0035】
ステップS16では、DB処理部24がサンプルが登録されたサブツリー、或いは、作成されたサブツリーに基づいて、ランドマークツリーの木構造の更新又は最適化を行い、処理はステップS1へ戻る。ステップS7の判定結果がYESになると、ステップS6では、DB処理部24が更新又は最適化された木構造のランドマークツリーを保存するためにランドマークDB25に格納し、処理は終了する。
【0036】
本実施例におけるランドマークDB25への登録手順をより詳細に説明すると、次のようになる。ステップS31では、図5に示すようにフレーム0のフレーム画像I0において特徴点pを検出し、特徴ベクトルを作成する。ステップS32では、図6に示すようにフレームm(m>0)において特徴pmを検出して特徴ベクトルを作成し、フレームm−1で検出した特徴点pm−1との対応付けを行って図7に示す如き対応点リストを作成すると共に、対応点リストの長さcを記憶する。ステップS33では、フレームM(M>m>0)まで、ステップS32の処理を続ける。ステップS34では、フレームMの全ての特徴点pMをスキャンする。
【0037】
【数1】
【0038】
ステップS35では、フレームMの全ての特徴点pMのスキャンが完了した後、ランドマークDB25を最適化する。ステップS36では、フレームn(n=M+j,j>0)において、ステップS32と同様の処理を、mをnに変更して行う。ステップS37では、フレームnの全ての特徴点リストをスキャンして、以下に説明する処理P1と処理P2を行う。
【0039】
【数2】
【0040】
ステップS38では、フレームnの全ての特徴点pnのスキャンが完了した後、ランドマークDB25を最適化する。ステップS39では、最終フレームNまでステップS36,S37,S38を行う。ステップS40では、ランドマークDB25の内容を記憶部902に保存して、処理は終了する。
【0041】
ステップS38におけるランドマークDB25の最適化は、例えば次のように行うことができる。先ず、ランドマークDB25に格納されているランドマークツリーの各ノードiに対して、ステップS38−1〜S38−4を実行する。ステップS38−1は、ノードiの特徴ベクトルwiを次式から計算する。ここで、Kiはサブツリー(SD)iのノード数を表す。
【0042】
【数3】
ステップS38−2は、サブツリー(SD)i中で特徴ベクトルwiとの距離L2が所定値以上のメンバーを削除する。ステップS38−3は、ステップS38−1を再度実行し、ステップS38−4は、サブツリー(SD)iの構造を最適化、即ち、サブツリー(SD)iの木構造の再構成を行う。次に、ランドマークDB25に格納されているランドマークツリーの木構造を最適化、即ち、ランドマークツリーの木構造の再構成を行う。
【0043】
尚、ステップS12におけるID番号の検索(search)は、例えば次のように行うことができる。
【0044】
【数4】
【0045】
【数5】
【0046】
図8は、ランドマークDB25に格納されるランドマークツリーの木構造の一例を説明する図である。図8において、右側にランドマークDB25全体のランドマークツリーの木構造を示し、左側にこの木構造の一部分を拡大して示す。図8の左側に示す木構造の部分は、ランドマークの1番目のカテゴリC1に関するサブツリーLMC1、ランドマークの2番目のカテゴリC2に関するサブツリーLMC2、ランドマークの3番目のカテゴリC3に関するサブツリーLMC3を有する。STは、サブツリーLMC1を形成する特徴ベクトルのサンプルを示し、FRは、サブツリーLMC1中の代表特徴ベクトルを太線で囲んで示す。サブツリーLMC2,LMC3中の代表特徴ベクトルも同様に、太線で囲んで示す。
【0047】
(ランドマークの検出)
次に、本発明の一実施例における画像処理装置で行うランドマーク検出方法について、図9と共に説明する。図9は、ランドマーク検出方法を説明する機能ブロック図である。図9中、図3と同一部分には同一符号を付し、その説明は省略する。図9に示す機能ブロックの処理は、サーバ901又はロボット1により実行可能である。この例では、説明の便宜上、図9に示す入力部21、前処理部22、ランドマークID認識部27、及び空間3次元位置測定部28の処理は、図2に示すサーバ901のCPU904により実行されるものとする。
【0048】
図9に示すように、前処理部22Aは、特徴点抽出部221及び特徴ベクトル算出部222に加え、特徴点座標記憶部223を有する。ランドマークID認識部27は、特徴ベクトルバッファ部231、フレーム間特徴点のマッチング部232、ID取得部233、及びIDリスト出力部234を有する。この例では、ランドマークDB25がランドマークID認識部27内に設けられているが、ランドマークDB25の配置は図3からもわかるように特に限定されず、サーバ901のCPU904からアクセス可能に設けられていれば良い。
【0049】
特徴点座標記憶部223は、カメラ141からの画像上の特徴点の座標を記憶部902に記憶し、空間3次元位置測定部28に供給する。空間3次元位置測定部28は、カメラ141の座標系における特徴点の空間3次元位置を測定する。
【0050】
一方、ロボット1のナビゲーションCPU11は、空間位置検索部111、計測値予測部112、仮説評価部113、仮説群生成部114、選択部115、ロボット位置姿勢推定部116、及び移動経路計画部117を有する。記憶部16には、ランドマークの空間位置のデータベース、即ち、ランドマーク地図が格納されている。
【0051】
空間位置検索部111は、ID番号でランドマークのワールド座標系(Word Coordinate System)又はグローバル座標系(Global Coordinate System)における空間位置を検索する。計測値予測部112は、空間位置をカメラ141の座標系、即ち、ローカル座標系(Local Coordinate System)或いはボディ座標系(Body Coordinate System)へ変換してID番号のランドマークをカメラ141で計測した場合の計測値を予測する。仮説評価部113は、各仮説の長さを評価し、ランドマークに対する実測値と予測値との差から尤度を計算する。仮説群生成部114は、ロボット位置(又は、カメラ位置姿勢)の仮説群を生成する。選択部115は、評価するべき任意の仮説(例えば、カメラ位置姿勢)を選択する。ロボット位置姿勢推定部116は、最良仮説、即ち、推定したロボット1の真の位置姿勢を求める。移動経路計画部117は、ロボット1が移動するべき移動経路を計画する。
【0052】
ランドマークの検出処理は、例えば次のようなステップS901〜S921により実行可能である。先ず、ステップS901では、ステレオカメラ141からの画像系列を入力部21に入力する。ステップS902では、特徴点抽出部221が入力部21を介して入力されるステレオカメラ141からの画像系列のうち、例えば右カメラ画像(又は、左カメラ画像)に対して特徴点抽出を行う。右カメラ画像を使用するか、或いは、左カメラ画像を使用するかは、ランドマークDB25に登録されているランドマークを撮影したカメラが右カメラであるか、或いは、左カメラであるかに応じて選択しても良い。ステップS903では、特徴ベクトル算出部222が抽出した特徴点の周囲領域の輝度分布特徴から特徴ベクトルを計算する。ステップS904では、特徴点座標記憶部223が特徴点のカメラ画像上の位置を示す座標を記憶部902に記憶する。
【0053】
ステップS905では、特徴ベクトルバッファ部231が特徴ベクトル算出部222から供給される特徴ベクトルを記憶部902にバッファリングする。ステップS906では、特徴ベクトルバッファ部231が記憶部902にバッファリングされた特徴ベクトルに基づいて、例えば時刻tの最新フレームでの特徴点リストと時刻t−1の直前フレームでの特徴点リストを抽出してマッチング部232に供給する。ステップS907では、マッチング部232が時刻t,t−1の連続する2フレームの特徴点リスト同士を総当りでマッチングする。ステップS908では、マッチングの得点が閾値以上であるとID取得部233が連続マッチング長さをインクリメントし、これと同時に、直前フレームでの対応する特徴点がID番号を持っていればそのID番号を継承させる。直前フレームでの対応する特徴点がID番号を持っていない場合、ステップS909では、ID取得部233が連続マッチング長さが一定以上であればランドマークDB25と照合する。ステップS910では、ID取得部233がランドマークDB25とのマッチングに外れた特徴点を廃棄する。ステップS911では、IDリスト出力部234がマッチングすると認識されたランドマークとそのID番号、即ち、マッチングすると認識されたランドマークのデータを出力する。
【0054】
この例では、ランドマークの空間位置データベース(DB)が事前に取得されて記憶部16に格納されているものとする。ステップS912では、空間位置検索部111がID番号でワールド座標系におけるランドマークの空間位置を検索して出力する。ステップS912では、全てのIDに対して同様な検索を行う。
【0055】
ステップS913では、ロボット1の位置姿勢を推定するために、仮説群生成部114がロボット1の位置姿勢に関する仮説群を後述する評価部113から供給される尤度に基づいて生成する。ステップS914では、選択部115が仮説群から任意の仮説を選択し、選択された任意の仮説に対して評価を行う。この例では、評価は前の仮説に対する繰り返し処理である。ステップS915では、計測値予測部113が空間位置をカメラ141のローカル座標系へ変換してID番号のランドマークをカメラ141で計測した場合の計測値を予測する。これにより、空間位置検索部111で検索されたランドマークのワールド座標がカメラ141のローカル座標系へ変換される。
【0056】
ステップS916では、空間3次元位置測定部28がカメラ141でランドマークを計測した際の実測値を評価部113に供給する。ステップS917では、評価部113が空間3次元位置測定部28から供給される実測値と計測値予測部112で変換されたローカル座標とを比較し、比較された2つの値の一致度を表す点数を付ける。この例では、各仮説の良さを評価し、ランドマークに対する実測値と予測値の差から尤度を計算する。ステップS918では、評価部113で計算された尤度(即ち、点数)をロボット位置の仮説群生成部114へフィードバックする。ステップS919では、位置姿勢推定部116が最良評価の仮説を推定したロボット1の真の位置姿勢に決定する。ステップS920では、位置姿勢推定部116が推定したロボット1の真の位置姿勢を移動計画部117に供給する。ステップS921では、移動計画部117が計画した移動指示に従ってロボット1を移動させるように走行制御CPU12を制御する。これにより、図1に示すモータ133は、走行制御CPU12からのコマンドに基づいて車輪134を直接、或いは、ギア機構を介して回転し、ロボット1が計画に従って移動する。
【0057】
尚、図3に示す如きDB処理部24をランドマークID認識部27に接続して、ランドマークDB25を更新又は最適化可能な構成としても良いことは、言うまでもない。
【0058】
(比較例と実施例の比較)
次に、従来のデータ処理装置の一例である比較例におけるランドマークDBへの登録手順を説明する。ステップS501では、図10に示すように各フレーム画像I0〜I3において特徴点wを検出し、特徴ベクトルのサンプルを収集する。ステップS502では、収集した特徴ベクトルを図11に示すようにクラスタリングする。この場合、例えばカテゴリ数が既知であり「3」であるものとする。従って、ステップS502では収集した特徴ベクトルが3つのカテゴリC1,C2,C3にクラスタリングされる。ステップS503では、図12に太線で囲んで示すように各カテゴリC1,C2,C3の平均ベクトルw1,w2,w3を計算する。ステップS504では、図13に示すように各カテゴリC1,C2,C3の平均ベクトルw1,w2,w3、即ち、太線で囲んで示す代表特徴ベクトルをノードとしてKD木(K-Dimensional Tree)を生成し、ランドマークDBが作成される。
【0059】
しかし、同一物体を撮影した画像から検出した特徴ベクトルが照明変化、視点の違い、影の違い等の影響により異なると、代表特徴ベクトルがぼけてしまう。このため、画像サンプルの数が多くなると、代表特徴ベクトルが本来同じカテゴリに属する特徴ベクトルを代表できなる可能性がある。
【0060】
一方、上記実施例では、第1及び第2の2段階でランドマークを検出することで、ランドマーク検出時の誤りと見逃しを軽減することができる。
【0061】
第1段階では、クラスとのマッチングを行うことで大まかな(又は、粗い)マッチングを行う。先ず、入力特徴ベクトルとランドマークDB内のランドマークツリーのノードとのマッチングを行い、入力特徴ベクトルとノード間の距離L2を算出する。次に、算出した距離L2でランドマークツリーのノードを絞込み、入力特徴ベクトルとランドマークツリーのノードとの相関値から類似度を算出する。これにより、動画像追跡を用いて、一定時間以上に連続に追跡されている比較的安定な特徴点のみが生き残り、生き残った特徴点が各クラスの代表的ベクトルと比較的甘くマッチングされる。従って、閾値を過敏に設定したことによるランドマークの検出見逃しを減らすことができる。
【0062】
第2段階では、第1段階でマッチングされたクラス内の各メンバーとのマッチングを行うことで精密なマッチングを行う。先ず、第1段階で絞り込んだランドマークツリーのノードから該当するカテゴリのサブツリーを抽出する。次に、入力特徴ベクトルと抽出したサブツリーの各ノードとの距離L2を算出して最大距離と最小距離のノードのID番号を抽出し、入力特徴ベクトルとこれらの抽出されたノードとの相関値から総合的に類似度を算出する。これにより、各クラスの代表特徴ベクトルとのマッチングで生き残った特徴点に対して、サブツリーで管理しているサンプルの特徴点とのマッチングを行う。これらのサンプルは、異なる地点や照明等の異なる環境下で取得したデータであり、多様性を保っているので、マッチングの得点を比較的高くすることができる。この段階で最大得点と最少得点の両方に対して比較的高い閾値を設定することで、ランドマークの検出時の誤りを減らすことができる。
【0063】
次に、比較例と実施例についての実験データを図14乃至図20と共に説明する。実験例では、或る建物のエントランスで、所定位置に設置されたカメラを例えば垂直軸を中心に所定角度範囲で3周回させて、毎秒5フレームで画像列を取得し、ランドマークDBを作成した。更に、ランドマークDBを作成した数時間後に同じエントランスで、前記所定位置に設置されたカメラを同様に2周回させて、画像列(3000枚超)を取得し、ランドマークDB25を用いて画像列からランドマーク検知を行った。
【0064】
図14は、比較例における照明の変化と撮影地点による検出性能への影響を説明する図であり、図15は、実施例における照明の変化と撮影地点による検出性能への影響を説明する図である。図14及び図15において、(a)はランドマークDB作成後に取得した例えば4フレーム目の画像を示し、(b)はランドマークDB作成後に取得した例えば21フレーム目の画像を示す。4フレーム目の画像と21フレーム目の画像とでは、撮影時間の違いから照明が変化している。又、図14及び図15において、○印はランドマークDBに登録されたランドマークとのマッチングが取れた箇所を示す。図14と図15の比較からもわかるように、本実施例によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず、比較例に比べてより多くのランドマークを検出可能であることが確認された。
【0065】
図16は、比較例における各フレームでのランドマークの検出数を説明する図であり、図17は、実施例における各フレームでのランドマークの検出数を説明する図である。図16及び図17において、縦軸はランドマーク検出数(個)を示し、横軸は画像フレーム番号(時間軸相当)を示す。
【0066】
図18は、図16の比較例のランドマーク検出結果を示すヒストグラムであり、図19は、図17の実施例のランドマーク検出結果を示すヒストグラムである。図18及び図19において、最も細かいハッチングがランドマーク検出回数が0回の場合、2番目に細かいハッチングがランドマーク検出階数が1回の場合、3番目に細かいハッチングがランドマーク検出階数が2回の場合、4番目に細かいハッチングがランドマーク検出階数が3回の場合、5番目に細かい(即ち、最も粗い)ハッチングがランドマーク検出階数が4回以上の場合を示す。更に、図20は、図18及び図19のヒストグラムを表形式で示す図である。
【0067】
図14、図16及び図18と、図15、図17及び図19との比較、又、図20からもわかるように、本実施例によれば、登録されている画像の撮影条件と照合する入力画像の撮影条件の違いにかかわらず正確な画像照合を行うことが可能であるため、比較例に比べてより多くのランドマークを検出可能であることが確認された。
【0068】
尚、上記実施例では、検出対象がランドマークであるが、検出対象はランドマークに限定されるものではなく、例えば人物、人物の顔等であっても良い。検出対象が例えば特定人物の顔であれば、クラスは検出対象となる特定人物の顔に対応し、各カテゴリは当該カテゴリが属するクラス、即ち、顔を形成する特徴部分に相当する。顔を形成する特徴部分には、例えば右目、左目、鼻、口等の情報が含まれる。
【0069】
開示の画像処理装置及びプログラムの適用は、上記実施例の如き自律移動型のロボットに限定されるものではなく、各種自律移動型の装置、各種固定型の装置、携帯型の電子装置、例えば携帯電話、携帯端末、携帯型パーソナルコンピュータ等にも適用可能であることは言うまでもない。
【0070】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、画像データから検出対象を検出させるプログラムであって、
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順
を前記コンピュータに実行させることを特徴とする、プログラム。
(付記2)
前記認識手順は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、付記1記載のプログラム。
(付記3)
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新手順
を前記コンピュータに更に実行させ、
前記更新手順は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、付記1又は2記載のプログラム。
(付記4)
前記前処理手順は、前記画像データをカメラの出力から入力し、
前記認識手順により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定手順
を前記コンピュータに更に実行させることを特徴とする、付記1乃至3のいずれか1項記載のプログラム。
(付記5)
付記1乃至4のいずれか1項記載のプログラムが格納されたことを特徴とする、コンピュータ読み取り可能な記憶媒体。
(付記6)
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、
第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする、画像処理装置。
(付記7)
前記認識部は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、付記6記載の画像処理装置。
(付記8)
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新部を更に備え、
前記更新部は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、付記6又は7記載の画像処理装置。
(付記9)
前記画像データを出力するカメラと、
前記認識部により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定部を更に備えたことを特徴とする、付記6乃至8のいずれか1項記載の画像処理装置。
【0071】
以上、開示のプログラム及び画像処理装置を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0072】
1 ロボット
11 ナビゲーションCPU
12 走行制御CPU
13 台車
14 センサ部
15 入出力部
16,902 記憶部
141 カメラ
801,903 通信部
901 サーバ
904 CPU
【特許請求の範囲】
【請求項1】
コンピュータに、画像データから検出対象を検出させるプログラムであって、
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順
を前記コンピュータに実行させることを特徴とする、プログラム。
【請求項2】
前記認識手順は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、請求項1記載のプログラム。
【請求項3】
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新手順
を前記コンピュータに更に実行させ、
前記更新手順は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、請求項1又は2記載のプログラム。
【請求項4】
前記前処理手順は、前記画像データをカメラの出力から入力し、
前記認識手順により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定手順
を前記コンピュータに更に実行させることを特徴とする、請求項1乃至3のいずれか1項記載のプログラム。
【請求項5】
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、
第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする、画像処理装置。
【請求項1】
コンピュータに、画像データから検出対象を検出させるプログラムであって、
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて特徴ベクトルを算出する前処理手順と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部にアクセスし、第1段階では前記前処理手順で算出した特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識手順
を前記コンピュータに実行させることを特徴とする、プログラム。
【請求項2】
前記認識手順は、
前記第1段階では前記入力特徴ベクトルと前記木構造のノードとの間の距離を算出し、前記距離で前記木構造のノードを絞込み、前記入力特徴ベクトルと前記木構造のノードとの相関値から類似度を算出し、
前記第2段階では前記第1段階で絞り込んだ前記木構造のノードから該当するカテゴリのサブツリーを抽出し、前記入力特徴ベクトルと抽出したサブツリーの各ノードとの距離を算出して最大距離と最小距離のノードを抽出し、前記入力特徴ベクトルと抽出されたノードとの相関値から総合的に類似度を算出することを特徴とする、請求項1記載のプログラム。
【請求項3】
前記サンプルが登録されたサブツリー、或いは、新たに作成されたサブツリーに基づいて木構造を更新して前記記憶部に格納する更新手順
を前記コンピュータに更に実行させ、
前記更新手順は、直前フレームの特徴点とマッチした最新フレームの特徴点、或いは、前記記憶部に登録されている特徴点とマッチした特徴点の入力特徴ベクトルをサンプルとして前記検出対象の木構造のサブツリーに登録すると共に、前記記憶部に登録されている特徴点とマッチしなかった特徴点の入力特徴ベクトルを新しいクラスの代表としてクラスを生成すると同時に当該入力特徴ベクトルをサンプルとして前記木構造のサブツリーを作成することを特徴とする、請求項1又は2記載のプログラム。
【請求項4】
前記前処理手順は、前記画像データをカメラの出力から入力し、
前記認識手順により認識された検出対象のデータに基づいて前記カメラの位置を推定する推定手順
を前記コンピュータに更に実行させることを特徴とする、請求項1乃至3のいずれか1項記載のプログラム。
【請求項5】
入力された画像データの各フレームに対して特徴点を抽出し、抽出した特徴点に基づいて入力特徴ベクトルを算出する前処理部と、
検出対象画像の特徴点の特徴ベクトルをノードとし、カテゴリ毎に当該カテゴリを代表する代表特徴ベクトルと特徴ベクトルのサンプルがメンバーであるサブツリーで接続されると共に検出対象毎のクラスにクラスタ化された木構造が登録された記憶部と、
第1段階では前記入力特徴ベクトルと前記記憶部内のクラスとのマッチングを行い、第2段階ではマッチングされたクラス内の各メンバーとのマッチングを行いマッチングすると認識された検出対象のデータを出力する認識部を備えたことを特徴とする、画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図18】
【図19】
【図20】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図18】
【図19】
【図20】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2012−178048(P2012−178048A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−40712(P2011−40712)
【出願日】平成23年2月25日(2011.2.25)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人新エネルギー・産業技術総合開発機構、「次世代ロボット知能化技術開発プロジェクト 移動知能(サービス産業分野)の開発 動的視覚認識に基づく移動知能モジュール群の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願日】平成23年2月25日(2011.2.25)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人新エネルギー・産業技術総合開発機構、「次世代ロボット知能化技術開発プロジェクト 移動知能(サービス産業分野)の開発 動的視覚認識に基づく移動知能モジュール群の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]