以下に、本願の開示する画像処理装置、画像処理方法、および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[画像処理装置の構成]
図1は、実施例1における画像処理装置10の機能構成の一例を示すブロック図である。本実施例における画像処理装置10は、参照画像から得られる画素の分布を登録する処理(以下、登録処理と呼ぶ)と、参照画像の画素の分布を参照して、探索画像内で所定の物体を探索する処理(以下、物体探索処理と呼ぶ)とを実行する。参照画像とは、所定の物体の探索に用いられる画像である。探索画像とは、参照画像に含まれる所定の物体が探索される画像である。
ここで、本実施例における画像処理装置10は、例えば、所定の物体の画像を参照画像として登録しておき、取得された探索画像内で、当該所定の物体を探すような場面で使用される。本実施例における画像処理装置10は、例えば、工場の生産現場、屋内で移動するロボット、拡張現実等において用いられる。
例えば、工場の生産現場では、加工や組み立て等を行う対象となる所定の部品の画像が参照画像として予め画像処理装置10内に登録される。そして、画像処理装置10は、工場の生産ライン上を流れる部品を撮影しているカメラから、生産ライン上が撮影された画像を探索画像として取得する。そして、画像処理装置10は、参照画像を参照して、取得した探索画像内に所定の部品が存在するか否かを判定し、探索画像内に所定の部品が存在すれば、その旨をディプレイ等に出力したり、他の装置(例えばロボットアーム等)に通知する。通知を受けた他の装置は、探索画像内に写っている部品を生産ラインから取り出して、加工や組み立て等を行う。
また、屋内で移動するロボットの場合、当該ロボットは、例えば、画像処理装置10、ロボットの周囲を撮影するカメラ、ロボットを移動させる移動装置、ロボットの位置を同定する処理装置等を有する。画像処理装置10には、所定の物体の画像が参照画像として登録される。そして、画像処理装置10は、ロボットに設けられたカメラから、ロボットの周囲の画像を探索画像として取得する。そして、画像処理装置10は、参照画像を参照して、取得した探索画像内に所定の物体が存在するか否かを判定する。探索画像内に所定の物体が存在すれば、画像処理装置10は、その旨を、ロボットの位置を同定する処理装置へ出力する。処理装置は、所定の物体の位置情報を含む地図情報を予め有しており、画像処理装置10から出力された情報に基づいて、ロボットの位置を同定する。
また、カメラで撮影された画像に、当該画像内に含まれている建物に関する補足的な情報を付加する拡張現実の場合、画像処理装置10の機能は、例えばスマートフォン等の携帯情報端末内で実現される。画像処理装置10には、所定の建物の画像が参照画像として登録される。そして、画像処理装置10は、携帯情報端末に設けられたカメラから、周囲の画像を探索画像として取得する。そして、画像処理装置10は、参照画像を参照して、取得した探索画像内に所定の建物が存在するか否かを判定する。探索画像内に所定の建物が存在すれば、画像処理装置10は、その旨を、携帯情報端末内の画像作成部へ送る。画像作成部は、所定の建物に関する情報(例えば、住所、その建物に入っているお店の名前、そのお店の広告など)を、通信回線を介してサーバ等から取得する。そして、画像作成部は、取得した情報を、カメラによって撮影された画像に重ねた画像を作成し、作成した画像を携帯情報端末の画面に表示させる。
図1に戻って説明を続ける。本実施例における画像処理装置10は、取得部11、特徴量算出部12、位置情報算出部13、記憶部14、判定部15、および類似度算出部16を有する。
取得部11は、登録処理において、カメラ等の画像を生成する画像生成装置から、参照画像を取得し、取得した参照画像を特徴量算出部12へ送る。また、取得部11は、物体探索処理において、画像生成装置から探索画像を取得し、取得した探索画像を特徴量算出部12へ送る。なお、取得部11は、画像生成装置以外に、情報処理装置やデータベースサーバ等から通信回線を介して参照画像および探索画像を取得してもよく、画像処理装置10に接続された可搬性記憶媒体等から参照画像および探索画像を取得してもよい。
特徴量算出部12は、登録処理において、取得部11から参照画像を受け取った場合に、受け取った参照画像に含まれる画素毎に、それぞれの画素の特徴量を算出する。そして、特徴量算出部12は、算出した画素毎の特徴量を、参照画像を示す画像種別の情報と共に、位置情報算出部13へ送る。
また、特徴量算出部12は、物体探索処理において、取得部11から探索画像を受け取った場合に、受け取った探索画像に含まれる画素毎に、それぞれの画素の特徴量を算出する。そして、特徴量算出部12は、算出した画素毎の特徴量を、探索画像を示す画像種別の情報と共に、位置情報算出部13へ送る。
特徴量算出部12は、例えばコーナー検出器やラプラシアンフィルタ等で実現することができる。本実施例において、特徴量算出部12によって算出される特徴量は、例えば、画素値の変化量が大きい領域内の画素では大きな値となり、画素値の変化の少ない領域内の画素では小さな値となる。
位置情報算出部13は、登録処理において、特徴量算出部12から参照画像について画素毎の特徴量を受け取った場合に、予め定められた閾値未満の特徴量が算出された画素を特定する。そして、位置情報算出部13は、特定した画素の分布を示す情報を算出する。
本実施例において、予め定められた閾値とは、例えば、画像内のコーナーやエッジの画素の特徴量が閾値より大きくなり、凹凸や模様の少ない領域に含まれる画素の特徴量が閾値より小さくなるように設定された値である。
例えば、予め定められた閾値は、画像領域の特徴量のヒストグラムが作成され、その度数の分布において谷が存在する場合に、その谷の底に対応する特徴量の値が閾値として設定されてもよい。谷が複数存在する場合には、谷の深さが最も大きい谷に対応する特徴量の値が閾値として設定されてもよい。あるいは、複数の谷のうち、特徴量が最も小さい方の谷に対応する特徴量の値が閾値として設定されてもよい。
また、前述の閾値の設定方法とは別に、特徴量のヒストグラムに対して、判別分析(「大津の二値化」とも呼ばれる)により求められた値が閾値として設定されてもよい。また、これとは別に、画像領域の特徴量のヒストグラムにおいて、特徴量が小さい方から度数を累積して行き、累積された度数が指定した割合に達した時点で、そのときの特徴量の値が閾値として設定されてもよい。なお、この場合、指定した割合は、凹凸や模様の多いものは低く、少ないものは高くするなど、検出の対象としている物体の種類に合わせて個別に設定されてもよい。
本実施例において、位置情報算出部13は、例えば、閾値未満の特徴量が算出された画素をいくつかの領域にグループ化する。位置情報算出部13は、例えば、特徴量が閾値未満であり、かつ、特徴量の差が所定の範囲内の画素をグループ化する。また、他の例として、位置情報算出部13は、画素の色情報(色相、彩度、または明度を含む)やテクスチャ情報(空間周波数など)を利用して、同じような色やテクスチャの画素をグループ化してもよい。そして、位置情報算出部13は、それぞれの領域の位置関係を示す情報を、閾値未満の特徴量が算出された画素の分布を示す情報として算出する。
ここで、本実施例において、閾値未満の特徴量が算出された画素を含む領域を、「無特徴領域」と名付ける。「無特徴領域」は、特徴量が低い画素の集合(画素値の変化が少ない領域)であるが、特徴量が無い(例えば特徴量が0)である画素のみを含む領域とは限らない。
また、位置情報算出部13は、例えば、各無特徴領域について、参照画像内の所定の基準点から当該無特徴領域への方向、当該基準点から当該無特徴領域までの距離、および当該無特徴領域の面積を、各無特徴領域の位置関係を示す情報として算出する。各無特徴領域の方向、距離、および面積の算出手順については、図2〜図6を用いて説明する。
図2〜図6は、実施例1において、参照画像20における無特徴領域の特定方法の一例を説明するための概念図である。例えば図2に示す参照画像20を取得部11から受け取ると、特徴量算出部12は、参照画像20に含まれるそれぞれの画素について特徴量を算出する。
位置情報算出部13は、例えば図3に示すように、特徴量算出部12によって算出された画素毎の特徴量に基づいて、閾値未満の特徴量が算出された画素21を特定する。そして、位置情報算出部13は、例えば図4に示すように、特徴量が閾値未満であるそれぞれ画素21を、いくつかの無特徴領域にグループ化する。本実施例において、位置情報算出部13は、無特徴領域を楕円形状の領域に近似してグループ化するが、他の例として、位置情報算出部13は、無特徴領域を、円、矩形、または多角形などの形状の領域に近似してグループ化してもよい。
なお、位置情報算出部13は、所定の規則に従って、それぞれの無特徴領域に番号を割り当てる。本実施例では、位置情報算出部13は、例えば、面積の大きな順に、それぞれの無特徴領域に番号を割り当てる。図4の例では、面積が最も大きな無特徴領域に、「領域番号1」が割り当てられ、面積が最も小さな無特徴領域に、「領域番号7」が割り当てられる。
次に、位置情報算出部13は、所定の規則に従って、基準点と、それぞれの無特徴領域内の点とを特定する。本実施例では、位置情報算出部13は、例えば図5に示すように、それぞれの無特徴領域内の点として、楕円形状の無特徴領域の重心P1〜P7をそれぞれ特定する。また、本実施例では、位置情報算出部13は、それぞれの無特徴領域の重心の座標を平均した座標の点P0を基準点として特定する。
また、なお、上記の所定の規則は、参照画像に対する処理と探索画像に対する処理とで同一の規則であれば、上記の規則に限られない。例えば、基準点は、それぞれの無特徴領域内の点からの最短距離の点などであってもよく、無特徴領域内の点は、無特徴領域の重心以外の点であってもよい。
次に、位置情報算出部13は、それぞれの無特徴領域について、方向、距離、および面積をそれぞれ算出する。位置情報算出部13は、例えば図6に示すように、参照画像において予め定められた方向を基準方向d0として、当該基準方向d0に対して、基準点P0からi番目の無特徴領域内の点Piへの方向θiを、当該無特徴領域の方向として算出する。
また、位置情報算出部13は、例えば図6に示すように、基準点P0からi番目の無特徴領域内の点Piまでの距離riを、当該無特徴領域の距離として算出する。また、位置情報算出部13は、i番目の無特徴領域の面積Siを算出する。そして、位置情報算出部13は、それぞれの無特徴領域毎に、当該無特徴領域について求めた方向θi、距離ri、および面積Siの情報を記憶部14に記憶させる。なお、楕円形状の場合には、さらに長軸の方向あるいは扁平率を位置情報に加えても構わない。
図7は、実施例1において記憶部14に記憶されるデータの構造の一例を示す。記憶部14は、例えば図7に示すように、参照画像におけるそれぞれの無特徴領域を識別する領域番号140に対応付けて、当該無特徴領域について算出された方向141、距離142、および面積143を記憶する。
図7には、「1」の領域番号140に対応付けて、「θ1」の方向141と、「r1」の距離142と、「S1」の面積143とを記憶する記憶部14が例示されている。
また、位置情報算出部13は、物体探索処理において、特徴量算出部12から探索画像について画素毎の特徴量を受け取った場合に、予め定められた閾値未満の特徴量が算出された画素を特定する。なお、ここで用いられる閾値は、登録処理において用いられる閾値と同一である。そして、位置情報算出部13は、特定した画素の分布を示す情報を算出する。
例えば図8に示すような探索画像25を取得部11から受け取ると、特徴量算出部12は、探索画像25に含まれるそれぞれの画素について特徴量を算出する。図8および図9は、実施例1において、探索画像における無特徴領域の特定方法の一例を説明するための概念図である。そして、位置情報算出部13は、特徴量算出部12によって算出された画素毎の特徴量に基づいて、例えば図9に示すように、閾値未満の特徴量が算出された画素21をいくつかの無特徴領域にグループ化する。この場合も、位置情報算出部13は、例えば、特徴量が閾値未満であり、かつ、特徴量の差が所定の範囲内の画素をグループ化する。
そして、位置情報算出部13は、それぞれの無特徴領域の位置関係を示す情報を、閾値未満の特徴量が算出された画素の分布を示す情報として算出する。具体的には、位置情報算出部13は、それぞれの無特徴領域について、方向、距離、および面積をそれぞれ算出する。ここで、探索画像において予め定められた方向を基準方向d0’、探索画像上の基準点をP0’、i番目の無特徴領域の方向をθi’、i番目の無特徴領域の距離をri’、i番目の無特徴領域の面積をSi’とする。位置情報算出部13は、それぞれの無特徴領域毎に、当該無特徴領域について算出した方向θ’、距離r’、および面積S’を含む探索画像情報30を類似度算出部16へ送る。
図10は、探索画像情報30のデータ構造の一例を示す。探索画像情報30には、例えば図10に示すように、探索画像におけるそれぞれの無特徴領域を識別する領域番号31に対応付けて、当該無特徴領域について算出された方向32、距離33、および面積34が格納される。図10には、「1’」の領域番号31に対応付けて、「θ1’」の方向32と、「r1’」の距離33と、「S1’」の面積34とが格納された探索画像情報30が例示されている。
なお、位置情報算出部13は、探索画像の無特徴領域についても、参照画像の無特徴領域の場合と同様に、所定の規則で(例えば面積の大きい順に)番号を割り当てる。また、本実施例では、探索画像において特定される無特徴領域の数と、参照画像において特定される無特徴領域の数とが、同数であることを前提としている。
類似度算出部16は、物体探索処理において、記憶部14を参照して、参照画像において特徴量が閾値未満である画素の分布と、探索画像において特徴量が閾値未満の画素の分布との類似度を算出する。本実施例では、類似度算出部16は、参照画像における無特徴領域の位置関係と、探索画像における無特徴領域の位置関係とに基づいて、両画像の類似度を算出する。
例えば、類似度算出部16は、参照画像内の無特徴領域および探索画像内の無特徴領域について相関値を算出する。具体的には、類似度算出部16は、参照画像内の無特徴領域および探索画像内の無特徴領域のそれぞれについて、対応付けられている方向の相関値を算出する。
例えば、類似度算出部16は、図11に示すように、参照画像における基準点P0および基準方向d0と、探索画像における基準点P0’および基準方向d0’とをそれぞれ一致させる。そして、類似度算出部16は、参照画像におけるi番目の無特徴領域の方向と、探索画像におけるi’番目の無特徴領域の方向との差分Δθiに応じた値を相関値として算出する。方向について算出される相関値は、参照画像内の無特徴領域と探索画像内の無特徴領域とで方向の差が小さいほど高い値となる。そして、類似度算出部16は、無特徴領域毎に算出した方向の相関値を、全ての無特徴領域について合計する。
ここで、参照画像に対して、探索画像内の物体の画像の向きが異なっていても、それぞれの無特徴領域間の相対的な方向はほぼ一定となる。そのため、無特徴領域についての方向の相関値の合計は、参照画像の向きと、探索画像内の物体の画像の向きとの差が小さくなるほど、高い値を示すことになる。
また、類似度算出部16は、参照画像内の無特徴領域および探索画像内の無特徴領域のそれぞれについて、対応付けられている距離と面積の比率の相関値を算出する。例えば、類似度算出部16は、図11に示すように、参照画像におけるi番目の無特徴領域の距離riと面積Siの比率と、探索画像におけるi’番目の無特徴領域の距離ri’と面積Si’の比率との差分に応じた値を相関値として算出する。比率について算出される相関値は、参照画像内の無特徴領域と探索画像内の無特徴領域とで距離と面積の比率の差が小さいほど高い値となる。そして、類似度算出部16は、無特徴領域毎に算出した比率の相関値を、全ての無特徴領域について合計する。
ここで、参照画像に対して、探索画像内の物体の画像の大きさが異なっていても、それぞれの無特徴領域の距離と面積の比率はほぼ一定となる。そのため、無特徴領域についての距離と面積の比率の相関値の合計は、参照画像内の無特徴領域の配置と、探索画像内の物体の無特徴領域の配置との差が小さくなるほど、高い値を示すことになる。
そして、類似度算出部16は、方向についての相関値の合計と、比率についての相関値の合計とに基づいて類似度を算出する。そして、類似度算出部16は、算出した類似度を判定部15へ送る。
また、判定部15から類似度の再算出を指示された場合、類似度算出部16は、記憶部14に記憶された、参照画像内のそれぞれの無特徴領域の方向に所定角度を加える。これにより、類似度算出部16は、参照画像の向きを所定角度分変更して、再び、類似度の算出を行う。
判定部15は、物体探索処理において、類似度算出部16から類似度を受け取った場合に、受け取った類似度が、予め保持した類似度の閾値以上か否かを判定する。類似度算出部16から受け取った類似度が閾値未満の場合、判定部15は、類似度の再算出を類似度算出部16に指示する。類似度算出部16から受け取った類似度が閾値以上の場合、判定部15は、検出対象の物体が検出された旨を、ディプレイ等の出力装置や、通信回線を介して他の装置へ出力する。
一方、参照画像の向きを少しずつ変えながら類似度の再算出が繰り返され、参照画像の向きが元に戻っても、閾値以上の類似度が算出されなかった場合、判定部15は、物体の検出に失敗した旨を出力装置へ出力する。なお、判定部15は、物体の検出が成功または失敗した旨を、通信回線を介して他のコンピュータに通知したり、通信回線を介してデータベースに記録してもよい。
なお、位置情報算出部13は、物体探索処理において、判定部15によって類似度が閾値以上と判定された場合に、探索画像内の無特徴領域毎に求めた方向θi、距離ri、および面積Siの情報(図10参照)を、参照画像内の無特徴領域毎に求められた方向θi、距離ri、および面積Siの情報(図7参照)として記憶部14に記憶させてもよい。
[参照画像に関する情報の登録処理]
図12は、実施例1における参照画像に関する情報の登録処理の一例を示すフローチャートである。例えば、マウス等の入力装置を介して、ユーザから参照画像の登録を指示された場合に、画像処理装置10は、本フローチャートに示す動作を開始する。
まず、取得部11は、検出対象の物体が写った参照画像を外部から取得し(S100)、取得した参照画像を特徴量算出部12へ送る。特徴量算出部12は、取得部11から受け取った参照画像に含まれる画素毎に、それぞれの画素の特徴量を算出する(S102)。そして、特徴量算出部12は、算出した画素毎の特徴量を、参照画像を示す画像種別の情報と共に、位置情報算出部13へ送る。
位置情報算出部13は、特徴量算出部12から受け取った参照画像についての画素毎の特徴量に基づいて、予め定められた閾値未満の特徴量が算出された画素を特定する。そして、位置情報算出部13は、特定した画素をいくつかの無特徴領域にグループ化する(S104)。
次に、位置情報算出部13は、参照画像におけるそれぞれの無特徴領域内の点(例えば重心)の座標に基づいて基準点P0を算出する。そして、位置情報算出部13は、基準点P0から無特徴領域への方向θ、基準点P0から無特徴領域内の点までの距離r、および無特徴領域の面積Sを、それぞれの無特徴領域について算出する(S106)。
次に、位置情報算出部13は、例えば、面積が大きい順にそれぞれの無特徴領域に領域番号を割り当てる。そして、位置情報算出部13は、領域番号に対応付けて、無特徴領域について算出された方向θ、距離r、および面積Sを記憶部14に記憶させる(S108)。そして、画像処理装置10は、本フローチャートに示す動作を終了する。
[物体探索処理]
図13は、実施例1における物体探索処理の一例を示すフローチャートである。例えば、マウス等の入力装置を介して、ユーザから物体の探索を指示された場合に、画像処理装置10は、本フローチャートに示す動作を開始する。
まず、取得部11は、物体が写っているか否かの判定対象となる探索画像を取得し(S200)、取得した参照画像を特徴量算出部12へ送る。特徴量算出部12は、取得部11から受け取った探索画像に含まれる画素毎に、それぞれの画素の特徴量を算出する(S202)。そして、特徴量算出部12は、算出した画素毎の特徴量を、探索画像を示す画像種別の情報と共に、位置情報算出部13へ送る。
次に、位置情報算出部13は、特徴量算出部12から受け取った探索画像についての画素毎の特徴量に基づいて、予め定められた閾値未満の特徴量が算出された画素を特定する。そして、位置情報算出部13は、特定した画素をいくつかの無特徴領域にグループ化する(S204)。
次に、位置情報算出部13は、探索画像におけるそれぞれの無特徴領域内の点(例えば重心)の座標に基づいて基準点P0’を算出する。そして、位置情報算出部13は、基準点P0’から無特徴領域への方向θ’、基準点P0’から無特徴領域内の点までの距離r’、および無特徴領域の面積S’を、探索画像におけるそれぞれの無特徴領域について算出する(S206)。
次に、位置情報算出部13は、例えば、面積が大きい順にそれぞれの無特徴領域に領域番号を割り当てる。そして、位置情報算出部13は、領域番号に対応付けて、当該無特徴領域について算出された方向θ’、距離r’、および面積S’の情報を含む探索画像情報30を類似度算出部16へ送る。
次に、類似度算出部16は、領域番号順に、未選択の領域番号を1つ選択し(S208)、選択した領域番号に対応付けられた方向θ、距離r、および面積Sを記憶部14から抽出する(S210)。そして、類似度算出部16は、対応する順番の領域番号に対応付けられた方向θ’、距離r’、および面積S’を位置情報算出部13から受け取った探索画像情報30から抽出する(S212)。
次に、類似度算出部16は、記憶部14から抽出した方向θと、探索画像情報30から抽出した方向θ’との相関値を算出する。また、類似度算出部16は、記憶部14から抽出した距離rおよび面積Sの比率と、探索画像情報30から抽出した距離r’および面積S’の比率との相関値を算出する(S214)。そして、類似度算出部16は、参照画像において領域番号を全て選択したか否かを判定する(S216)。未選択の領域番号がある場合(S216:No)、類似度算出部16は、再びステップS208に示した処理を実行する。
一方、参照画像において領域番号を全て選択した場合(S216:Yes)、類似度算出部16は、それぞれの領域番号について算出した方向の相関値を合計する。また、類似度算出部16は、それぞれの領域番号について算出した距離と面積の比率の相関値を合計する。そして、類似度算出部16は、方向についての相関値の合計と、比率についての相関値の合計とに基づいて類似度を算出する(S218)。そして、類似度算出部16は、算出した類似度を判定部15へ送る。
判定部15は、類似度算出部16から受け取った類似度が予め設定された類似度の閾値以上か否かを判定する(S220)。類似度が閾値以上である場合(S220:Yes)、判定部15は、対象物体が検出された旨を、ディプレイ等へ出力し(S228)、画像処理装置10は、本フローチャートに示した処理を終了する。
一方、類似度が閾値未満である場合(S220:No)、判定部15は、類似度の再算出を類似度算出部16へ指示する。類似度算出部16は、記憶部14に格納された、参照画像の向きを所定角度分変更する(S222)。そして、類似度算出部16は、参照画像の向きが1回転して元に戻ったか否かを判定する(S224)。参照画像の向きが元に戻っていない場合(S224:No)、類似度算出部16は、再びステップS208に示した処理を実行する。
一方、参照画像の向きが元に戻った場合(S224:Yes)、類似度算出部16は、その旨を判定部15に通知する。判定部15は、物体の検出に失敗した旨を出力装置へ出力し(S226)、画像処理装置10は、本フローチャートに示した処理を終了する。
[実施例1の効果]
以上、実施例1について説明した。本実施例の画像処理装置10によれば、特徴量の少ない画素の分布を参照画像と探索画像とで比較する。凹凸や模様の少ない物体の画像中には、特徴量の少ない画素が多く存在する。そのため、画像処理装置10は、そのような物体であっても、精度よく画像中から物体を検出することが可能となる。また、特徴量の少ない画素の分布は、画像上で物体の向きやサイズが変わっても変化が少ない。そのため、特徴量の少ない画素の分布を参照画像と探索画像とで比較することで、画像処理装置10は、ロバストな物体検出が可能となる。
また、物体が検出されたときの参照画像の向きが、探索画像に写った物体の向きとなるので、画像処理装置10は、探索画像内の物体の向きを検出することもできる。また、参照画像と探索画像とで、対応する無特徴領域の距離の比や面積比を求めることにより、画像処理装置10は、参照画像を基準として、探索画像に写った物体のスケール変化量を検出することもできる。
[画像処理装置の構成]
図14は、実施例2における画像処理装置10の機能構成の一例を示すブロック図である。本実施例における画像処理装置10は、取得部11、特徴量算出部12、記憶部14、判定部15、類似度算出部16、および領域分割部17を有する。なお、以下に説明する点を除き、図14において、図1と同じ符号を付した構成は、図1における構成と同一または同様の機能を有するため説明を省略する。
領域分割部17は、登録処理において、特徴量算出部12から参照画像について画素毎の特徴量を受け取った場合に、予め定められた閾値未満の特徴量が算出された画素を特定する。そして、領域分割部17は、例えば図15に示すように、予め定められた配列および分割数の分割枠22を用いて、参照画像20を所定の大きさの複数の部分領域23に分割する。図15は、実施例2において、部分領域毎の割合の算出方法の一例を説明するための概念図である。そして、領域分割部17は、それぞれの部分領域23について、特徴量が閾値未満の画素の数を算出する。
そして、領域分割部17は、例えば図16に示すように、分割したそれぞれの部分領域23毎に、当該部分領域23に含まれる画素の数に対する、閾値未満の特徴量の画素の数の割合を算出する。図16は、実施例2において、参照画像における部分領域毎の割合の一例を説明するための概念図である。そして、領域分割部17は、それぞれの部分領域23に領域番号を割り当て、領域番号に対応付けて、対応する部分領域23の割合を示す情報を記憶部14に記憶させる。図16に示されている部分領域23毎の割合は、閾値未満の特徴量が算出された画素の分布を示している。
図17は、実施例2において、記憶部14に格納されるデータの構造の一例を示す。本実施例における記憶部14は、例えば図17に示すように、参照画像におけるそれぞれの部分領域23を識別する領域番号145に対応付けて、当該部分領域23に含まれる画素の数に対する、閾値未満の特徴量の画素の数の割合146を記憶する。図17には、「1」等の領域番号145に対応付けて、「0.00」等の割合146を記憶する記憶部14が例示されている。
また、領域分割部17は、物体探索処理において、特徴量算出部12から探索画像について画素毎の特徴量を受け取った場合、参照画像を分割した場合に用いた分割枠22と同じ配列および分割数の分割枠26の大きさ、探索画像上での位置、および探索画像上での向きを選択する。本実施例において、分割枠26の大きさ、位置、および向きのパターンは、それぞれ、予め所定数(例えば数十〜数百)のパターンに特定されている。
そして、領域分割部17は、例えば図18に示すように、選択した大きさ、位置、および向きの分割枠26を探索画像上に重畳させる。そして、領域分割部17は、当該分割枠26に含まれるそれぞれの部分領域27について、当該部分領域27に含まれる画素の数に対する、閾値未満の特徴量の画素の数の割合を算出する。図18および図19は、実施例2において、探索画像内の物体を探索する過程の一例を説明するための概念図である。
そして、領域分割部17は、部分領域27毎に、算出した割合を類似度算出部16へ送る。また、判定部15から割合の再算出を指示された場合、領域分割部17は、分割枠26の大きさ、位置、または向きの少なくともいずれかを変更して、探索画像における部分領域27毎の割合を再度算出する。
なお、分割枠26の大きさ、位置、および向きにおいて予め特定された全てのパターンを用いて、探索画像における部分領域27毎の割合を算出した場合、領域分割部17は、その旨を判定部15に通知する。
類似度算出部16は、物体探索処理において、領域分割部17から探索画像における部分領域27毎の割合の情報を受け取った場合に、参照画像における部分領域23毎の割合を記憶部14から抽出する。そして、類似度算出部16は、探索画像における部分領域27毎の割合の分布と、参照画像における部分領域23毎の割合の分布との類似度を算出し、算出した類似度を判定部15へ送る。類似度算出部16は、例えば、対応する部分領域どうしの割合の差の絶対値を求め、求めた値を全ての部分領域について合計し、合計値の例えば逆数を類似度として算出する。
判定部15は、物体探索処理において、類似度算出部16から類似度を受け取った場合に、受け取った類似度が、予め保持した類似度の閾値以上か否かを判定する。類似度算出部16から受け取った類似度が閾値未満の場合、判定部15は、割合の再算出を領域分割部17に指示する。類似度算出部16から受け取った類似度が閾値以上の場合、判定部15は、検出対象の物体が検出された旨を、ディプレイ等の出力装置や、通信回線を介して他の装置へ出力する。
例えば、図19に示すような大きさ、位置、および向きの分割枠26が探索画像25に重畳された場合、各部分領域27における、特徴量が閾値未満である画素の割合は、参照画像の各部分領域における、特徴量が閾値未満である画素の割合に近い値となる。そのため、部分領域毎の差分の絶対値が小さい値となり、その合計に応じた類似度は大きい値となる。
一方、割合の再算出の指示に対して、全ての分割枠26の大きさ、位置、および向きのパターンについて割合の算出を行った旨を領域分割部17から通知された場合、判定部15は、物体の検出に失敗した旨を出力装置へ出力する。
[参照画像に関する情報の登録処理]
図20は、実施例2における参照画像の登録処理の一例を示すフローチャートである。例えば、マウス等の入力装置を介して、ユーザから参照画像の登録を指示された場合に、画像処理装置10は、本フローチャートに示す動作を開始する。
まず、取得部11は、検出対象の物体が写った参照画像を外部から取得し(S300)、取得した参照画像を特徴量算出部12へ送る。特徴量算出部12は、取得部11から受け取った参照画像に含まれる画素毎に、それぞれの画素の特徴量を算出する(S302)。そして、特徴量算出部12は、算出した画素毎の特徴量を、参照画像を示す画像種別の情報と共に、領域分割部17へ送る。
領域分割部17は、予め定められた閾値未満の特徴量が算出された画素を特定する。そして、領域分割部17は、例えば図15で説明したように、予め定められた配列および分割数の分割枠22を用いて、参照画像20を所定の大きさの複数の部分領域23に分割する(S304)。
次に、領域分割部17は、それぞれの部分領域23について、特徴量が閾値未満の画素の数を算出する。そして、領域分割部17は、例えば図16で説明したように、分割したそれぞれの部分領域23毎に、当該部分領域23に含まれる画素の数に対する、閾値未満の特徴量の画素の数の割合を算出する(S306)。
次に、領域分割部17は、それぞれの部分領域23に領域番号を割り当てる。そして、領域分割部17は、領域番号に対応付けて、対応する部分領域23の割合を示す情報を記憶部14に記憶させ(S308)、画像処理装置10は、本フローチャートに示した処理を終了する。
[物体探索処理]
図21は、実施例2における物体探索処理の一例を示すフローチャートである。例えば、マウス等の入力装置を介して、ユーザから物体の探索を指示された場合に、画像処理装置10は、本フローチャートに示す動作を開始する。
まず、取得部11は、物体が写っているか否かの判定対象となる探索画像を外部から取得し(S400)、取得した参照画像を特徴量算出部12へ送る。特徴量算出部12は、取得部11から受け取った探索画像に含まれる画素毎に、それぞれの画素の特徴量を算出する(S402)。そして、特徴量算出部12は、算出した画素毎の特徴量を、探索画像を示す画像種別の情報と共に、領域分割部17へ送る。
次に、領域分割部17は、参照画像を分割した場合に用いた分割枠22と同じ配列および分割数の分割枠26について、予め定められた分割枠26の大きさのパターンの中から、未選択の大きさを1つ選択する(S404)。そして、領域分割部17は、予め定められた分割枠26の向きのパターンの中から、未選択の向きを1つ選択する(S406)。そして、領域分割部17は、予め定められた分割枠26の位置のパターンの中から、未選択の位置を1つ選択する(S408)。
次に、領域分割部17は、例えば図18で説明したように、選択した大きさ、位置、および向きの分割枠26を探索画像上に重畳させる。そして、領域分割部17は、当該分割枠26に含まれるそれぞれの部分領域27について、当該部分領域27に含まれる画素の数に対する、閾値未満の特徴量の画素の数の割合を算出する(S410)。そして、領域分割部17は、部分領域27毎に算出した割合を類似度算出部16へ送る。
次に、類似度算出部16は、参照画像における部分領域23毎の割合を記憶部14から抽出する。そして、類似度算出部16は、探索画像における部分領域27毎の割合の分布と、参照画像における部分領域23毎の割合の分布との類似度を算出する(S412)。そして、分割枠26は、算出した類似度を判定部15へ送る。
次に、判定部15は、受け取った類似度が、予め保持した類似度の閾値以上か否かを判定する(S414)。類似度が閾値以上である場合(S414:Yes)、判定部15は、検出対象の物体が検出された旨を、ディプレイ等へ出力し(S424)、画像処理装置10は、本フローチャートに示した処理を終了する。
一方、類似度が閾値未満である場合(S414:No)、判定部15は、割合の再算出を領域分割部17に指示する。領域分割部17は、分割枠26の全ての位置のパターンを選択したか否かを判定する(S416)。未選択の位置のパターンが存在する場合(S416:No)、領域分割部17は、再びステップS408に示した処理を実行する。
分割枠26の全ての位置のパターンを選択した場合(S416:Yes)、領域分割部17は、分割枠26の全ての向きのパターンを選択したか否かを判定する(S418)。未選択の向きのパターンが存在する場合(S418:No)、領域分割部17は、再びステップS406に示した処理を実行する。
分割枠26の全ての向きのパターンを選択した場合(S418:Yes)、領域分割部17は、分割枠26の全ての大きさのパターンを選択したか否かを判定する(S420)。未選択の大きさのパターンが存在する場合(S420:No)、領域分割部17は、再びステップS404に示した処理を実行する。
分割枠26の全ての大きさのパターンを選択した場合(S420:Yes)、領域分割部17は、分割枠26の全ての大きさ、位置、および向きのパターンを選択した旨を判定部15に通知する。判定部15は、物体の検出に失敗した旨を出力装置へ出力し(S422)、画像処理装置10は、本フローチャートに示した処理を終了する。
[実施例2の効果]
以上、実施例2について説明した。本実施例の画像処理装置10によれば、凹凸の少ない物体であっても、精度よく画像中から物体を検出することが可能となる。また、画像処理装置10は、画像上での物体の向きやサイズの変化にロバストな物体検出が可能となる。
[画像処理プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図22を用いて、上記の実施例と同様の機能を有する画像処理プログラムを実行するコンピュータの一例について説明する。
図22は、実施例1または実施例2に係る画像処理プログラムを実行するコンピュータの一例について説明するための図である。図22に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180とを有する。これら110〜180の各部はバス140を介して接続される。
HDD170には、図22に示すように、画像処理プログラム170aが予め記憶される。上記実施例1では、画像処理プログラム170aがコンピュータ100に読み込まれることにより、取得部11、特徴量算出部12、位置情報算出部13、記憶部14、判定部15、および類似度算出部16と同様の機能を発揮する。また、上記実施例2では、画像処理プログラム170aがコンピュータ100に読み込まれることにより、取得部11、特徴量算出部12、記憶部14、判定部15、類似度算出部16、および領域分割部17と同様の機能を発揮する。
この画像処理プログラム170aについては、図1または図14に示した各々の構成要素と同様、適宜統合又は分離しても良い。また、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
そして、CPU150が、画像処理プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図22に示すように、画像処理プログラム170aは、画像処理プロセス180aとして機能する。この画像処理プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。
なお、上記実施例1における画像処理プロセス180aは、図1に示した取得部11、特徴量算出部12、位置情報算出部13、記憶部14、判定部15、および類似度算出部16にて実行される処理、例えば図12〜図13に示す処理を含む。また、上記実施例2における画像処理プロセス180aは、図14に示した取得部11、特徴量算出部12、記憶部14、判定部15、類似度算出部16、および領域分割部17にて実行される処理、例えば図20〜図21に示す処理を含む。CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
なお、上記の画像処理プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。
[他の実施例]
上記した実施例では、特徴量が所定の閾値未満である画素の分布に基づいて、参照画像と探索画像の類似度を算出し、算出した類似度に基づいて検出対象の物体が探索画像に写っているか否かを判定したが、開示の技術はこれに限られない。例えば、特徴量が閾値以上の画素に基づいて、参照画像と探索画像との類似度を算出し、算出した類似度と、上記した実施例により算出された類似度とを用いて、検出対象の物体が探索画像に写っているか否かを判定するようにしてもよい。
この場合、記憶部14には、参照画像から抽出された特定の画素の位置の情報が記憶される。また、画像処理装置10には、取得部11によって取得された画像に含まれる画素の中から、特徴量が閾値以上の画素を抽出し、抽出した画素の位置と、記憶部14に記憶された特定の画素の位置とに基づいて、類似度を算出する処理部が設けられる。なお、閾値以上の特徴量の画素を抽出するために用いられる閾値は、上記した各実施例において無特徴領域を特定するために用いられた閾値よりも大きい値である。
このように、2つの異なる方法で算出された類似度を組み合わせて判定を行うことにより、画像処理装置10は、細かいパターンの多い物体、あるいは、模様の無い面で構成された物体のどちらに対しても、物体の検出精度を向上させることができる。
なお、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)所定の物体の探索に用いられる参照画像から抽出された特定の画素の分布を記憶する記憶部と、
前記参照画像に含まれる所定の物体が探索される探索画像を取得する取得部と、
前記探索画像に含まれる画素毎に特徴量を算出する第1の算出部と、
前記第1の算出部によって算出された特徴量が閾値未満である画素のグループの分布を算出する第2の算出部と、
前記第2の算出部によって算出された画素のグループの分布と、前記記憶部に記憶された画素のグループの分布とに基づいて類似度を算出する第3の算出部と、
前記第3の算出部によって算出された類似度に基づいて、前記探索画像に前記所定の物体が存在するか否かを判定する判定部と、
を有することを特徴とする画像処理装置。
(付記2)前記第2の算出部は、
前記判定部によって、前記所定の物体が存在すると判定された前記探索画像を前記参照画像として、当該参照画像について算出した画素の分布を前記記憶部に記憶させることを特徴とする付記1に記載の画像処理装置。
(付記3)前記第3の算出部は、
前記第2の算出部によって算出された領域間の位置関係と、前記記憶部に記憶された領域間の位置関係とに基づいて前記類似度を算出することを特徴とする付記1または2に記載の画像処理装置。
(付記4)前記記憶部は、
前記特定の画素を含むそれぞれの領域について、所定の基準点から当該領域への方向、当該基準点から当該領域までの距離、および当該領域の面積を、前記特定の画素を含む領域間の位置関係として記憶し、
前記第2の算出部は、
前記特定したそれぞれの領域について、所定の基準点から当該領域への方向、当該基準点から当該領域までの距離、および当該領域の面積を、特定した領域間の位置関係として算出し、
前記第3の算出部は、
それぞれの領域について、前記第2の算出部によって算出された方向、距離、および面積と、前記記憶部に記憶された方向、距離、および面積とに基づいて前記類似度を算出することを特徴とする付記3に記載の画像処理装置。
(付記5)前記第2の算出部は、
前記特徴量が閾値未満であり、かつ、隣接する画素間の前記特徴量の差が所定範囲内の画素をグループ化することを特徴とする付記1または2に記載の画像処理装置。
(付記6)前記第2の算出部は、
各画素の色情報またはテクスチャ情報の少なくともいずれかを用いて、前記特徴量が閾値未満である画素をグループ化することを特徴とする付記1または2に記載の画像処理装置。
(付記7)前記記憶部は、
前記参照画像が複数の部分領域に分割され、前記部分領域毎に当該部分領域に含まれる特定の画素の割合を、前記特定の画素のグループの分布として記憶し、
前記第2の算出部は、
前記探索画像を複数の部分領域に分割し、分割した部分領域毎の割合であって、当該部分領域に含まれる、前記特徴量が閾値未満である画素の割合を、前記特徴量が閾値未満である画素の分布として算出し、
前記第3の算出部は、
それぞれの前記部分領域における、前記記憶部に記憶された割合と、前記第2の算出部によって算出された割合とに基づいて、前記類似度を算出することを特徴とする付記1または2に記載の画像処理装置。
(付記8)前記記憶部は、
前記物体が写った画像から抽出された別な特定の画素の位置をさらに記憶し、
当該画像処理装置は、
前記取得部によって取得された画像に含まれる画素の中から、前記特徴量が前記閾値よりも大きい別な閾値以上の画素を抽出し、抽出した画素の位置と、前記記憶部に記憶された前記別な特定の画素の位置とに基づいて、前記類似度を算出する第4の算出部をさらに有し、
前記判定部は、
前記第4の算出部によって算出された前記類似度をさらに用いて、前記取得部によって取得された画像に検出対象の物体が存在するか否かを判定することを特徴とする付記1から7のいずれか1つに記載の画像処理装置。
(付記9)コンピュータが、
所定の物体が探索される探索画像を取得し、
取得した前記探索画像に含まれる画素毎に特徴量を算出し、
算出した特徴量が閾値未満である画素のグループの分布を算出し、
前記所定の物体の探索に用いられる参照画像から抽出された特定の画素の分布を記憶する記憶部を参照して、当該記憶部に記憶された画素のグループの分布と、算出した画素のグループの分布とに基づいて類似度を算出し、
算出した類似度に基づいて、前記探索画像に前記所定の物体が存在するか否かを判定する
処理を実行することを特徴とする画像処理方法。
(付記10)コンピュータに、
所定の物体が探索される探索画像を取得し、
取得した前記探索画像に含まれる画素毎に特徴量を算出し、
算出した特徴量が閾値未満である画素のグループの分布を算出し、
前記所定の物体の探索に用いられる参照画像から抽出された特定の画素の分布を記憶する記憶部を参照して、当該記憶部に記憶された画素のグループの分布と、算出した画素のグループの分布とに基づいて類似度を算出し、
算出した類似度に基づいて、前記探索画像に前記所定の物体が存在するか否かを判定する
処理を実行させることを特徴とする画像処理プログラム。