以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。
本実施の形態による画像認識装置1は、図1に示すように、機能的に、明視野照明撮像部10(第1の画像取得部)、クラック点列生成部11(第1のクラック点列生成部)、暗視野照明撮像部12(第2の画像取得部)、クラック点列生成部13(第2のクラック点列生成部)、クラック連結部14、及びクラック評価部15を備えて構成される。これらの機能は、パーソナルコンピュータなどの処理装置、記憶装置、及び入出力装置などを有するコンピュータにおいて、記憶装置に記憶されるプログラムを処理装置に実行させることによって実現されるものである。画像認識装置1は、工業用の計測,検査アプリケーションの一部を構成しており、電子部品に生じたクラックを検出するために用いられる。
図2は、画像認識装置1による外観検査の対象となるセラミック基板20の画像のレプリカであり、(a)は、セラミック基板20の直上から照らした照明(明視野照明)の下で撮影した画像(明視野画像)、(b)は、セラミック基板20の表面に対して浅い角度から照らした照明(暗視野照明)の下で撮影した画像(暗視野画像)、(c)は(a)に示した領域Bの拡大図、(d)は(b)に示した領域Cの拡大図をそれぞれ示している。なお、図2に示したセラミック基板20は画像認識装置1による外観検査の対象となる電子部品の一例であり、以下では、このセラミック基板20に生じたクラックの検出を前提として画像認識装置1の説明を行うが、画像認識装置1による外観検査の対象は、図2に示したセラミック基板20に限られるものではない。
セラミック基板20の表面には、図2(a)に示すように、セラミック基板20の本体である磁器部21が露出した部分と、電極パターンが印刷されたパターン部22とが存在している。このうち磁器部21は、図2(a)に示す明視野画像では白っぽく写るのに対し、図2(b)に示す暗視野画像では真っ黒となっている。一方、パターン部22は、図2(a)に示す明視野画像では黒く写るのに対し、図2(b)に示す暗視野画像では白っぽく写っている。なお、図2(b)のパターン部22内に生じているモアレ状の模様は、パターン部22を形成する際に用いるメッキ処理の影響で、パターン部22の表面が顕著に荒れていることに起因するものである。磁器部21についても、セラミック特有の表面荒れの影響で、明視野画像中の各所に濃淡差が発生している。
セラミック基板20は、図2(a)に符号A−Aで示したように、磁器部21とパターン部22に跨るクラックを有している。本実施の形態による画像認識装置1によって解決される課題の一つは、このように磁器部21とパターン部22に跨るクラックを正しく検出することにある。
図1に戻る。明視野照明撮像部10は、検査対象物(例えば、図2のセラミック基板20)を明視野照明(第1の光学条件)の下で撮像してなる明視野画像(第1の画像。例えば図2(a)の画像)を取得する機能部である。具体的には、明視野照明を実現する照明手段と、検査対象物の表面を撮像可能に構成された撮像手段とを有しており、照明手段によって明視野照明が点灯している間に撮像手段によって検査対象物の表面を撮像することにより、明視野画像を取得するよう構成される。明視野照明撮像部10によって取得された明視野画像は、クラック点列生成部11に供給される。
一方、暗視野照明撮像部12は、同じ検査対象物を暗視野照明(第1の光学条件とは異なる第2の光学条件)の下で撮像してなる暗視野画像(第2の画像。例えば図2(b)の画像)を取得する機能部である。具体的には、暗視野照明を実現する照明手段と、検査対象物の表面を撮像可能に構成された撮像手段とを有しており、照明手段によって暗視野照明が点灯している間に撮像手段によって検査対象物の表面を撮像することにより、暗視野画像を取得するよう構成される。暗視野照明撮像部12によって取得された暗視野画像は、クラック点列生成部13に供給される。
クラック点列生成部11は、明視野照明撮像部10から供給された明視野画像に基づいて、クラック点列(第1のクラック点列)及びクラックスコアを生成する機能部である。同様に、クラック点列生成部13は、暗視野照明撮像部12から供給された暗視野画像に基づいて、クラック点列(第2のクラック点列)及びクラックスコアを生成する機能部である。クラック点列生成部11,13の機能は、供給される画像(以下、「検査対象画像」と総称する)が異なるだけで基本的には同じものなので、以下、図3を参照しながら、クラック点列生成部11,13の機能についてまとめて説明する。
図3に示すように、クラック点列生成部11,13はそれぞれ、マッチング処理部30、候補点取得部31、最適化部32、クラック点スコア算出部33、クラックスコア算出部34、及び選択部35を有して構成される。
マッチング処理部30は、検査対象画像と、線分を示すテンプレートとに基づく幾何学マッチングにより、線分を示すクラック点列を取得する機能部である。この幾何学マッチングは、決まった形のないクラックであっても、線分の連結によって近似することができることを利用するものである。クラック点列は、クラックに沿う(ものとして検出された)一連の座標(クラック点)からなる座標の集合であり、検査対象画像内におけるクラックの形状及び分布の態様によっては、1枚の検査対象画像から複数のクラック点列が取得される場合がある。
マッチング処理部30が行うマッチング処理の詳細は、特許文献11に開示した画像認識装置1が行うマッチング処理と同様である。ただし、本実施の形態では、マッチング処理部30内に設けられる基準画像入力受付部60(特許文献11における基準画像入力受付部2。後述する図11参照)によって受け付けられる基準画像として線分を示す画像を用い、同じくマッチング処理部30内に設けられる探索対象画像入力受付部62(特許文献11における探索対象画像入力受付部4。後述する図11参照)によって受け付けられる探索対象画像として、上述した検査対象画像を用いることになる。マッチング処理の詳細については、後ほどまとめて説明する。
図4(a)は、マッチング処理部30が図2(b)に示した領域C内に現れているクラックに関して取得するクラック点列Dを示す図である。なお、図4(a)では幅のある領域を示しているが、クラック点列Dを構成する各クラック点は、この領域の幅方向の中央に整列する。同図に示すように、マッチング処理部30によって取得されるクラック点列Dは、実際のクラックの形状にかかわらず、線分を示すものとなる。これは、テンプレートとして線分を示す画像を用いているからである。テンプレートとして、例えば曲線を示す画像も用いることも可能であるが、クラックの形状は無限に存在するため、そのすべてをテンプレートとして用意することはできない。その結果、図4(a)に例示するように、マッチング処理部30によって取得されるクラック点列は、通常、実際のクラックの形状と完全に一致するものにはならない。本実施の形態では、よりよい一致を得るため、候補点取得部31及び最適化部32を用いて、クラック点列の最適化を行う。以下、詳しく説明する。
候補点取得部31は、検査対象画像に対してエッジ抽出を実行することにより、マッチング処理部30によって取得されたクラック点列を構成する複数のクラック点のそれぞれについて、該クラック点の取り得る範囲を示す複数の候補点を取得する機能部である。エッジ抽出の具体的な方法としては、例えば微分処理を用いることが好適である。また、1つのクラック点について取得する候補点は、そのクラック点そのものの他、そのクラック点に対してクラック点列と直交する方向に位置するエッジ点(最大2つ)、及び、クラック点列内においてそのクラック点の両隣に隣接する2つのクラック点の中点とすることが好適である。
候補点取得部31が取得する候補点について、具体的な例を挙げて説明する。図5には、マッチング処理部30によって取得されたクラック点列40と、候補点取得部31によって抽出されたエッジ41a,41bとを示している。クラック点列40上の黒点はクラック点の位置を示している(後掲する各図でも同様)。候補点取得部31は、クラック点列40上のクラック点Piについての候補点を取得する際、まず、クラック点Piに対してクラック点列40と直行する方向に位置するエッジ点を探索する。その結果、図5の例では2つのエッジ点Eai,Ebiが発見されるので、候補点取得部31は、これらを候補点として取得する。また、候補点取得部31は、クラック点列40内においてクラック点Piの両隣に隣接するクラック点Pi−1,Pi+1の中点Miを、候補点として取得する。そして、クラック点Pi自身も候補点に加え、最終的に4つの候補点を取得する。
最適化部32は、候補点取得部31によって取得された複数の候補点の組み合わせにより示される複数の仮クラック点列の中から、検査対象画像内に現れているクラックとの一致度が最大となるものを最適化クラック点列として選択する機能を有する。最適化部32は、この処理をいわゆる動的計画法による動的輪郭モデルによって行う。
具体的に説明すると、最適化部32は、まず次の式(12)〜式(14)により、複数の仮クラック点列のそれぞれを構成するすべてのクラック点に関して、3種類のエネルギーElen(i),Ecurve(i),Eimg(i)を算出する。ただし、式中に現れる座標(xi,yi)はi番目のクラック点Piの座標である(すなわち、座標(xi−1,yi−1)はi−1番目のクラック点Pi−1の座標であり、座標(xi+1,yi+1)はi+1番目のクラック点Pi+1の座標である)。また、式(14)右辺のdef(i)は、式(15)及び式(16)によって算出される。ただし、式(15)中のD(xi,yi)はi番目のクラック点の座標(xi,yi)に対応する検査対象画像内の画素の濃度であり、dは、予め与えられる自然数である数値であってi番目のクラック点Piの周囲に設定される領域の肩幅を示し、signは、クラックの色に応じて−1又は+1のいずれかの値を取る数値(より具体的には、クラックの色が黒である場合に−1、白である場合に+1となる数値)であり、max(A,B)は、A,Bのうちの最大値を返す関数である。なお、signの値は、例えば図2(a)のような明視野画像が検索対象である場合(クラックが白色である場合)には+1(白)となり、図2(b)のような暗視野画像が検索対象である場合(クラックが黒色である場合)には−1(黒)となる。
式(16)のdef(i)は、i番目のクラック点Piと、その周辺領域(肩幅dによって示される範囲の領域)との濃度差を示している。図6には、クラック点Piの周辺領域PAiを示している。同図に示すように、周辺領域PAiは、クラック点Piの周辺に配置された、一辺の長さ2dの正方形の領域となる。また、式(12)のエネルギーElen(i)は曲線の長さに依存したエネルギーを表し、式(13)のエネルギーEcurve(i)は曲率に関するエネルギーを表し、式(14)のエネルギーEimg(i)は輪郭点が存在する画素から得られるエネルギーを表している。
次に、最適化部32は、次の式(17)により、仮クラック点列ごとのエネルギーを算出する。ただし、α,β,γは予め与えられる重み係数であり、Nは仮クラック点列内のクラック点の総数N+1から1を減じた数である。
ここで、上述したように、候補点取得部31は、マッチング処理部30によって取得されたクラック点列内のクラック点ごとに4つの候補点を取得している。また、式(12)及び式(13)から理解されるように、エネルギーElen(i),Ecurve(i)はそれぞれ、両隣に隣接する2つのクラック点の座標を含んでいる。したがって、マッチング処理部30によって取得されたクラック点列内の1つのクラック点につき、算出されるエネルギーElen(i),Ecurve(i),Eimg(i)の組は43通り存在することになる。また、これにより、式(17)によって算出されるエネルギーEは、43(N+1)通りとなる。
最適化部32は、こうして算出される43(N+1)通りのエネルギーEの中から、最も小さいものを取得する。そして、その最小エネルギーEの算出に用いたクラック点をつなぎ合わせることにより得られる仮クラック点列を、最適化クラック点列として選択する。こうして選択された最適化クラック点列と、検査対象画像内に現れているクラックとの一致度は、候補点取得部31によって取得された複数の候補点の組み合わせにより示される複数の仮クラック点列の中で最大となる。
図4(b)には、図4(a)に示したクラック点列Dを最適化部32が最適化することによって得られる最適化クラック点列Eを示している。同図に示すように、クラック点列Eは、検査対象画像内に現れているクラックとよく一致している。
なお、マッチング処理部30によって複数のクラック点列が取得された場合、候補点取得部31及び最適化部32は、これら複数のクラック点列のそれぞれについて上記処理を行う。したがってこの場合、最適化部32は複数の最適化クラック点列を出力することになる。
図3に戻る。最適化部32によって取得された最適化クラック点列は、クラック点スコア算出部33及び選択部35に供給される。このうちクラック点スコア算出部33は、最適化クラック点列を構成する複数のクラック点のそれぞれについて、該クラック点の周辺領域との濃度差に基づき、クラックらしさを示すクラック点スコアを算出する機能部である。
具体的に説明すると、クラック点スコア算出部33は、次の式(18)により、最適化クラック点を構成するすべてのクラック点に関して、クラック点スコアS(i)を算出するよう構成される。ただし、def(i)は式(16)により算出される濃度差であり、thは予め与えられるしきい値である。
図7は、クラック点スコア算出部33により算出されるクラック点スコアS(i)の例を示す図である。同図の曲線L1は式(18)により算出されるクラック点スコアS(i)を示し、曲線L2は、式(18)の第一式によって算出されるクラック点スコアS(i)を示している。図7の記載からも理解されるように、式(18)の第一式によって算出されるクラック点スコアS(i)は、濃度差def(i)を変数とし、しきい値thを平均値とする正規分布であり、式(18)は、しきい値thより大きい濃度差def(i)について、この正規分布を1.0で置き換えるものとなっている。クラック点スコアS(i)は、0である場合にクラックらしさが最小であることを示し、1である場合にクラックらしさが最大であることを示すスコアであることから、式(18)を用いることにより、濃度差def(i)がしきい値thより大きい場合、クラックらしさが強制的に最大値とされることになる。
図3に戻り、クラック点スコア算出部33により算出されたクラック点スコアS(i)は、クラックスコア算出部34に供給される。クラックスコア算出部34は、最適化クラック点を複数のクラック点それぞれのクラック点スコアS(i)に基づき、最適化クラック点列内におけるクラックらしさの連続性を示すクラックスコアを算出する機能部である。
具体的に説明すると、クラックスコア算出部34は、次の式(19)〜式(21)により、最適化クラック点列のクラックスコアCSを算出するよう構成される。ただし、式(19)及び式(20)のNは最適化クラック点列内のクラック点の総数N+1から1を減じた数であり、式(20)のkは予め与えられる自然数であってクラック点連続肩幅を示し、wは2k+1に等しい数値であってクラック点連続幅を示している。また、cs(k)は数値kに対応する評価値であり、α(k)は評価値cs(k)の重み係数である。
図8は、式(20)による評価値cs(k)の算出の説明図である。同図には、k=2である場合の例を示している。式(20)では、クラック点Piと、クラック点Piからw(=2×2+1=5)分だけ離れたところにある2つのクラック点Pi−5,Pi+5とのそれぞれについて、各クラック点の両側にkの範囲にあるクラック点のクラック点スコアS(i)の平均値が算出され、さらに、クラック点Pi−5,Pi,Pi+5のそれぞれについて算出された平均値が掛け合わされる。こうして得られる値は、図8において一点鎖線で囲んだクラック点群についてのクラックらしさの連続性を示す値となる。式(20)では、最適化クラック点列内のすべてのクラック点について同様の値が算出され、算出された各値を加算することにより、評価値cs(k)が算出される。
評価値cs(k)が以上のように算出されることから、式(21)により算出されるクラックスコアCSは、最適化クラック点列内におけるクラックらしさの連続性を示すスコアとなる。算出されたクラックスコアCSは、図3に示した選択部35に供給される。
なお、マッチング処理部30によって複数のクラック点列が取得され、最適化部32が複数の最適化クラック点列を出力した場合、クラック点スコア算出部33及びクラックスコア算出部34は、複数の最適化クラック点列のそれぞれについてクラックスコアCSを算出することになる。
図3に戻る。選択部35は、最適化部32から供給される1又は複数の最適化クラック点列の中から、クラックスコア算出部34によって算出されるクラックスコアCSが所定値以上であるもののみを選択する機能部である。選択部35は、選択した最適化クラック点列と、そのクラックスコアCSとを、図1に示したクラック連結部14に供給するよう構成される。これにより、クラックスコアCSの低い、すなわちクラック以外のパターンを検出したものである可能性が高い最適化クラック点列が、後段の処理(クラック連結部14が行うクラック点列の連結処理)の対象から排除される。
以上が、クラック点列生成部11,13の機能である。次に、図1に戻って、クラック連結部14の機能について説明する。
クラック連結部14は、クラック点列生成部11,13のそれぞれから1以上のクラック点列(最適化クラック点列)の供給を受け、その中から互いに連結すべき1又は複数の組み合わせを選択し、選択した組み合わせにかかる2つのクラック点列を連結することによって、連結クラック点列を生成する機能部である。以下、図9を参照しながら、クラック連結部14の機能について詳しく説明する。
図9に示すように、クラック連結部14は、連結スコア算出部50及び連結処理部51を有して構成される。
連結スコア算出部50は、クラック点列生成部11,13のそれぞれから供給される複数のクラック点列のそれぞれについて、当該クラック点列の始点と、他のクラック点列の終点とを連結することの妥当性を示す連結スコアを算出する機能部である。
図10は、連結スコア算出部50による連結スコア算出の説明図である。以下、同図も参照しながら、連結スコア算出部50による連結スコア算出について詳しく説明する。
連結スコア算出部50は、次の式(22)を用いることにより、複数のクラック点列の中から選択される2つのクラック点列のすべての組み合わせについて、連結スコアLSs1e2を算出するよう構成される。ただし、式(22)中のCS1は、対応する始点s1を有する一方のクラック点列に関して算出されたクラックスコアCSであり、CS2は、対応する終点e2を有する他方のクラック点列に関して算出されたクラックスコアCSであり、N1は、一方のクラック点列を構成するクラック点の数であり、N2は、他方のクラック点列を構成するクラック点の数であり、θは、一方のクラック点列の中点から他方のクラック点列の中点に至る中点ベクトルVMと一方のクラック点列の終点e1から他方のクラック点列の始点s2に至る連結ベクトルVCとのなす角であり、Ls1e2は、一方のクラック点列の始点s1と他方のクラック点列の終点e2の間の距離であり、mは予め与えられる定数である。mの具体的な値としては、例えば0.3とすることが好適である。なお、各クラック点列の始点と終点は、例えば、各クラック点列の両端のうちy座標が小さい方を始点とし、y座標が同じ場合にはx座標が小さい方を始点とする、などの方法により予め決定される。
連結処理部51は、連結スコア算出部50によって算出された連結スコアLSs1e2の大きいものから順に、クラック点列生成部11,13のそれぞれから供給された複数のクラック点列それぞれの始点を他のクラック点列の終点と一対一に連結することにより、1又は複数の連結クラック点列を生成する機能部である。このように連結スコアLSs1e2の大きいものから順に連結していくようにすることで、クラック間の誤連結を抑える効果が得られる。なお、連結処理部51は、連結スコアLSs1e2が所定値以下であるクラック点列の組み合わせについては、たとえ連結する順番が回ってきたとしても、連結しないようにすることが好適である。生成された1又は複数の連結クラック点列(連結されなかったクラック点列を含む)は、図1に示したクラック評価部15に供給される。
図1に戻る。クラック評価部15は、クラック連結部14から供給される1又は複数の連結クラック点列(連結されなかったクラック点列を含む)のそれぞれに対し、所定の特徴量(長さ、平均濃度など)を算出し、算出した特徴量についてユーザが指定する判定基準に基づき、さらに評価を行う機能部である。クラック評価部15は、こうして得た評価とともに、各連結クラック点列を例えばディスプレイ(図示せず)に表示する。これにより、画像認識装置1のユーザは、クラック評価部15による評価結果とともに、各連結クラック点列を確認することが可能になる。
以上説明したように、本実施の形態による画像認識装置1によれば、明視野照明の下で撮像してなる明視野画像からクラック点列を生成するとともに、暗視野照明の下で撮像してなる暗視野画像からもクラック点列を生成し、さらに、これらのクラック点列を連結してなる連結クラック点列を生成しているので、図2(a)に示した磁器部21とパターン部22のように、互いに光学特性の異なる複数の領域が1つの検査対象面内に混在している検査対象物についても、クラックを正しく検出することが実現される。
また、本実施の形態による画像認識装置1によれば、線分をモデルデータとして幾何学マッチングを行い、その結果得られる複数のクラック点列のそれぞれを動的計画法によって最適化し、最適化クラック列の少なくとも一部を連結してなる連結クラック点列を生成しているので、クラックの検出に幾何学マッチングを利用することが可能になる。その結果、幾何学マッチングを利用しない場合に比べて、画面全体から高速にクラックを検出することが可能になる。
さらに、本実施の形態による画像認識装置1によれば、検査対象画像に基づいて生成された複数のクラック点列のそれぞれについて、クラックらしさの連続性を示すクラックスコアCSを算出しているので、各クラック点列がクラックに対応するのか、それともクラック以外のパターンに対応するのかを高い精度で区別することが可能になる。
以下、図3に示したマッチング処理部30が行うマッチング処理について、図11〜図20を参照しながら、詳しく説明する。
マッチング処理部30は、図11に示すように、基準画像入力受付部60、設定値入力受付部61、探索対象画像入力受付部62、8方向エッジ検出部70、テンプレート生成部80、及びポーズ情報取得部90を備えて構成される。
基準画像入力受付部60は、上述したテンプレート(線分を示すテンプレート)のもととなる基準画像の入力を受け付ける機能を有して構成される。具体的な例では、ユーザ操作により、対象となる線分の写った写真から該線分を含む長方形の領域を切り出し、基準画像入力受付部60に入力する。なお、基準画像としては、影や対象物以外のものなどが写り込んでいない画像を使用することが好適である。基準画像入力受付部60が受け付けた基準画像は、テンプレート生成部80に供給される。
設定値入力受付部61は、後述するガウシアンフィルターの設定値である標準偏差値σ(以下、「σ値」という)、後述するガウシアンピラミッドの生成の際に方向別微分画像(後述)に基づく画像の生成を開始する階層n、及びエッジ点の変形許容量Vのそれぞれについて、ユーザによる設定値の入力を受け付ける機能を有して構成される。設定値入力受付部61は、σ値及び階層nをテンプレート生成部80及びポーズ情報取得部90のそれぞれに供給し、変形許容量Vを8方向エッジ検出部70に供給するよう構成される。
探索対象画像入力受付部62は、上述した検査対象画像(明視野画像又は暗視野画像)の入力を受け付ける機能を有して構成される。探索対象画像入力受付部62が受け付けた検査対象画像は、ポーズ情報取得部90に供給される。
ここで、明視野照明撮像部10及び暗視野照明撮像部12に設けられる撮像手段の視野内には、普通、認識の対象物だけでなく、計測器、搬送機などの種々の装置やこれらの影などが写り込む。したがって、検査対象画像内のテンプレートの自動認識を行うにあたってはこれらの影響をできるだけ除去する必要があるが、マッチング処理部30によれば、背景や対象物に外観上の変化(エッジの変形を伴うような変化を含む)が発生した場合にも、高い精度での認識が実現される。
8方向エッジ検出部70は、テンプレート生成部80又はポーズ情報取得部90から供給される画像(入力画像)に基づいてそれぞれ8枚の微分画像及び非極大抑制画像を生成し、さらに生成した8枚の非極大抑制画像と設定値入力受付部61から供給される変形許容量Vとに基づいて8枚のエッジ距離画像を生成する機能を有して構成される。なお、本実施の形態では各画像の枚数を8枚としているが、この枚数は、後述する微分方向の数によって決定される。
図12を参照して、8方向エッジ検出部70の機能についてより詳しく説明する。8方向エッジ検出部70は、図12に示すように、方向別微分画像生成部70a、非極大抑制処理部70b、サブピクセル変位量算出部70c、及びエッジ距離画像生成部70dを有して構成される。
方向別微分画像生成部70aは、入力画像を所定数の微分方向のそれぞれで微分することにより、所定数の微分画像を生成するよう構成される。所定数の微分方向は360°を所定数かつ等間隔に分割してなる方向であり、本実施の形態ではこの所定数が8であることを前提として説明する。この場合、所定数の微分方向は、0°、45°、90°、135°、180°、215°、270°、315°の8つである。ただし、微分方向の数は必ずしも8でなくてもよく、好ましくは4の倍数であればよい。微分方向の数が多いほど認識精度が向上するが、一方で処理コストが大きくなるため、具体的な数は、要求される認識精度と許容される処理コストとを考慮して決定することが好適である。
方向別微分画像生成部70aが行う微分は一次微分(差分)であり、微分画像中の各画素の明度(微分値)は次の式(23)によって決定される。ただし、方向別微分画像生成部70aは、f(x+1)がf(x−1)より小さい場合(式(23)の右辺がマイナスとなる場合)には、式(23)によらず関数g(x)の値を0に固定するよう構成される。ここで、式(23)中のxは対応する微分方向における座標を示し、座標x−1,x+1はそれぞれ、対応する微分方向のマイナス側及びプラス側で、座標xにより示される画素と隣接する画素の座標である。また、関数f(x)は入力画像中の各画素の明度を示し、関数g(x)は微分画像中の各画素の明度(微分値)を示している。
以上のようにして生成される8枚の微分画像<7:0>はそれぞれ、対応する微分方向に沿って暗から明に変化するエッジのみが強調された画像となる。なお、本明細書において、画像<a:b>と記述した場合、画像<b>から画像<a>までのa−b+1枚の画像を表す。生成された微分画像<7:0>は、図12に示すように、8方向エッジ検出部70の出力のひとつを構成する。
なお、方向別微分画像生成部70aが上記のようにして微分画像<7:0>の生成を行うのは、図12にも示すように、入力画像が濃淡画像である場合のみである。入力画像自体が8枚の微分画像<7:0>となっている場合があり、その場合には、入力画像がそのまま方向別微分画像生成部70aの出力画像となる。
非極大抑制処理部70bは、上記8枚の微分画像<7:0>のそれぞれについて対応する微分方向での非極大抑制処理を行うことにより、8枚の仮非極大抑制画像<7:0>を生成するよう構成される。仮非極大抑制画像<7:0>はそれぞれ、対応する微分画像内において対応する微分方向に並ぶ画素の間で明度が極大となる画素(両側に既定数ずつの隣接画素と自分自身との間で最も明度が大きくなる画素)に対応する画素(以下、「エッジ点」と称する)のみに255が設定され、エッジ点以外のすべての画素の値に0が設定された画像となる。
サブピクセル変位量算出部70cは、非極大抑制処理部70bによって生成された8枚の仮非極大抑制画像<7:0>それぞれに含まれるエッジ点ごとに、方向別微分画像生成部70aによって生成された8枚の微分画像<7:0>のうちの対応するものに基づき、対応する微分方向における該エッジ点の中心線と、該エッジ点に対応するエッジ(該エッジ点である画素内を通過するエッジ)との間の距離を示すサブピクセル変位量Δxを算出する機能部である。以下、図19も参照しながら、サブピクセル変位量Δxについて詳しく説明する。
図19には、微分方向であるx方向に並ぶ9つの画素P1〜P9を示している。同図に示すy軸の値は、各画素の明度(微分値)を示している。同図の例では画素P5がエッジ点であり、同図に示すように画素P5の中をエッジが通過している。また、同図では、画素P5のx座標(画素P5のx方向の中心線のx座標)をx0とし、画素間距離(x方向の中心線間の距離)を1としている。さらに、同図では、画素P5の明度をd(0)とし、画素P5にx方向の両側で隣接する画素P4,P6の明度をそれぞれd(−1),d(+1)としている。画素P5がエッジ点であることから、d(0)≧d(−1)かつd(0)≧d(+1)となる。
図19に示すように、画素P4〜P6の明度は放物線によって近似することができる。すると、この放物線の頂点のx座標は必ずしもx0になるとは限らず、むしろ通常、座標x0から少し離れたところに位置する。これは、各画素のx座標が離散的であるためであり、放物線の頂点のx座標が実際のエッジの位置を示している。
サブピクセル変位量Δxは、図19に示すように、上記放物線の頂点のx座標(実際のエッジ位置に相当するx座標)と、エッジ点のx座標x0との距離である。具体的には、明度d(−1),d(0),d(+1)を用いて、次の式(24)により求められる。こうして算出されるサブピクセル変位量Δxは、−0.5以上0.5以下の範囲の値を取る。
サブピクセル変位量算出部70cは、式(24)を用いて各エッジ点のサブピクセル変位量Δxを算出し、算出したサブピクセル変位量Δxを仮非極大抑制画像<7:0>の各エッジ点に格納することにより、非極大抑制画像<7:0>を生成するよう構成される。なお、サブピクセル変位量算出部70cは、エッジ点以外の画素(背景を構成する画素)には、0x7000などの非常に大きな値を設定する。こうして生成された非極大抑制画像<7:0>も、図12に示すように、8方向エッジ検出部70の出力のひとつを構成する。
エッジ距離画像生成部70dは、非極大抑制画像<7:0>のそれぞれに含まれる1又は複数のエッジ点それぞれの近傍に位置する複数の画素ごとに、対応するエッジ点に設定されたサブピクセル変位量Δxに基づいて、該画素と対応するエッジとの間の距離を示すエッジ距離EDを算出し、非極大抑制画像<7:0>のうちの対応するものに設定することにより、8枚のエッジ距離画像<7:0>を生成するよう構成される。
エッジ距離EDは、具体的には次の式(25)により算出される。ただし、PDは、エッジ点の座標(図19では座標x0)からのピクセル変位量(画素間距離に方向性を付与したもの。例えば、図19の画素P4ではPD=−1、画素P6ではPD=+1となる)である。なお、図19には、画素P1〜P9のそれぞれについて、式(25)により算出されるエッジ距離EDも図示している。
エッジ距離画像生成部70dは、式(25)により各エッジ点と対応する微分方向で隣接する各画素のエッジ距離EDを算出し、サブピクセル変位量算出部70cから供給される非極大抑制画像<7:0>に設定することにより、8枚のエッジ距離画像<7:0>を生成する。ただし、この場合において、エッジ距離画像生成部70dは、設定値入力受付部61から供給される変形許容量Vを参照し、各エッジ点から±Vの範囲内に位置する画素にのみエッジ距離EDを設定する。なお、図19にはV=3の場合の例を示している。また、1つの画素について複数のエッジ距離EDが算出される場合があり得るが、その場合には、小さい方の値を設定する。こうしてエッジ距離EDが設定された画素は、後に説明するポーズ情報取得部90での探索処理において、エッジの一部を構成し得る画素とみなされることになる。エッジ距離画像生成部70dにより生成されたエッジ距離画像<7:0>も、図12に示すように、8方向エッジ検出部70の出力のひとつを構成する。
図11に戻り、テンプレート生成部80は、基準画像入力受付部60から供給される基準画像を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から出力される非極大抑制画像<7:0>に基づき、テンプレートを生成する機能を有して構成される。詳しくは後述するが、テンプレートは、図11に示すエッジ特徴点群<1><m1:0>〜<N><mN:0>により表される。テンプレート生成部80は、ピラミッドアルゴリズムによる粗密探索及び回転テンプレートに対応しており、したがって、テンプレート生成部80によって実際に生成されるテンプレートは、解像度ごとかつ角度ごとのテンプレートを含んで構成される。
図13〜図15を参照して、テンプレート生成部80の機能についてより詳しく説明する。テンプレート生成部80は、図13に示すように、階層数算出部81、高解像度ピラミッド生成部82、高解像度テンプレート生成部83、低解像度ピラミッド生成部84、及び低解像度テンプレート生成部85を有して構成される。
階層数算出部81は、基準画像入力受付部60から供給される基準画像に基づいて、ピラミッドアルゴリズムの階層数Nを算出するよう構成される。この算出について具体的に説明すると、まず階層数算出部81は、長方形である基準画像の長辺と短辺それぞれの長さのうち小さい方を基準サイズとして取得する。基準画像が正方形である場合には、その一辺の長さを基準サイズとすればよい。また、階層数算出部81には、予めパタン最小サイズが設定される。このパタン最小サイズの設定値はピラミッドアルゴリズムで生成される最小画像のサイズを示しており、あまり小さくし過ぎると対象物の自動認識が困難になる。したがって、実際にパタン最小サイズを設定する際には、いくつかのパタン最小サイズを用いてマッチング処理部30による認識処理を試行し、最適な結果が得られる値を選択することが好適である。
基準サイズを取得した階層数算出部81は、階層数Nに1を設定し、基準サイズを2Nで除算する。その結果得られた値が上記パタン最小サイズより小さかった場合、階層数算出部81は、階層数N=1を出力する。一方、得られた値が上記パタン最小サイズより大きかった場合、Nを1増加させてN=2とし、再度基準サイズを2Nで除算する。その結果得られた値が上記パタン最小サイズより小さかった場合、階層数算出部81は、階層数N=2を出力する。一方、得られた値が上記パタン最小サイズより大きかった場合、再度Nを増加させて、基準サイズを2Nで除算する。階層数算出部81は、このような処理を、除算の結果として得られる値が上記パタン最小サイズを下回るまで繰り返す。その結果、階層数算出部81からは、何らかの正整数の値が階層数Nとして出力されることになる。階層数算出部81から出力された階層数Nは、低解像度ピラミッド生成部84及びポーズ情報取得部90(図11)に供給される。
高解像度ピラミッド生成部82(第1の高解像度ピラミッド生成部)は、基準画像入力受付部60から供給される基準画像について、n−2段階(nは設定値入力受付部61から供給される値)にわたり、ガウシアンフィルターを適用しつつダウンサンプリング(低解像度化)を行い、さらに、各段階で得られるダウンサンプリング後の画像に差分フィルターを適用するように構成される。1段分のダウンサンプリングによる解像度の低下量は、画像の一辺のサイズが半分になる量に予め調節される。このダウンサンプリング及びフィルタリングにより、最終的に、基準画像そのものである濃淡画像<1>を含むn−1枚の濃淡画像<n−1:1>(複数の第1の濃淡画像)が生成される。ここで、2段階目以降のダウンサンプリングは、前段のダウンサンプリングの結果として得られた濃淡画像を入力画像として行われる。したがって、生成されるn−1枚の濃淡画像<n−1:1>の解像度は、濃淡画像<1>から順に低くなることになる。高解像度ピラミッド生成部82が生成した濃淡画像<n−1:1>は、高解像度テンプレート生成部83に供給される。
ここで、ダウンサンプリング前の画像にガウシアンフィルターを適用する目的について説明する。高解像度ピラミッド生成部82の出力である濃淡画像<n−1:1>は、後述する高解像度テンプレート生成部83において微分画像化されるが、マッチング処理部30が好適な認識を行うためには、こうして得られる微分画像に、マッチングに適したエッジ特徴が現れている必要がある。なお、マッチングに適したエッジ特徴とは、対象物の輪郭を安定的に含みながら、背景領域に含まれるエッジを極力含まない、というものである。
従来の粗密検索では、画像のダウンサンプリングは、単に画像の解像度を落とすことによって行われていた。もしくは、エイリアシングの発生を防ぐ程度の小さなσ値を持つガウシアンフィルターを、原画像(基準画像入力受付部60から供給された基準画像)のみに適用していた。この状態では、解像度は低下するものの対象物以外のノイズによる高周波情報が十分に残っているため、画面がエッジで埋め尽くされた状態となり、エッジ特徴マッチングに適した画像とは言えない。
これに対し、マッチング処理部30では、各段階でダウンサンプリング前の画像にガウシアンフィルターを適用するので、ノイズに代表される局所的なエッジを排除しつつ、対象物のエッジのような大局的なエッジを残すことが可能となっている。したがって、マッチング処理部30では、マッチングに適したエッジ特徴が現れる微分画像を得ることが可能になる。
なお、ガウシアンフィルターがこのような効果を有するためには、ある程度大きなσ値を設定する必要がある。しかし一方で、ガウシアンフィルターにはσ値が大きいほど処理コストが大きくなるという特徴があるため、あまり大きなσ値を設定することは好ましくない。これに対し、マッチング処理部30では、複数段階にわたって画像のダウンサンプリングを行い、その都度ガウシアンフィルターを適用していくことから、ダウンサンプリングの段階が進むにつれてσ値が累乗されることになる。このことは、最終的に得られる濃淡画像に関して、段階数分累乗されたσ値を有するガウシアンフィルターが適用された場合と同じフィルタリング効果が得られることを意味する。したがって、設定値としてのσ値はそれほど大きな値でなくとも、実質的に、大きなσ値を設定した場合と同様の効果が得られることになるので、マッチング処理部30では、大きなσ値を設定することによるガウシアンフィルターの処理コストの問題はほぼ生じない。具体的なσ値の設定値は、生成されるテンプレートを目視で確認しながら、マッチングに適したエッジ特徴が現れるよう、適宜調節することが好適である。
高解像度テンプレート生成部83は、高解像度ピラミッド生成部82から供給される濃淡画像<k>(kは1からn−1の整数)を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から出力される非極大抑制画像<k><7:0>に基づき、濃淡画像<k>の解像度に対応するテンプレートを生成するよう構成される。高解像度テンプレート生成部83は、1からn−1のn−1個のkそれぞれについて、このテンプレートの生成を行うよう構成される。
高解像度テンプレート生成部83は、具体的には、図14に示すように、画像取得部83a、勾配値取得部83b、エッジ特徴点群生成部83c、単位回転角算出部83d、回転処理部83eを有して構成される。以下、これらの機能部の動作について説明しつつ、高解像度テンプレート生成部83によるテンプレート生成の具体的な手順について詳しく説明する。
以下、高解像度ピラミッド生成部82から濃淡画像<k>が供給された場合の動作を例に取って説明する。高解像度ピラミッド生成部82から濃淡画像<k>が供給されると、まず画像取得部83aにより、供給された濃淡画像<k>が8方向エッジ検出部70に供給され、その結果として8方向エッジ検出部70から出力される微分画像<k><7:0>及び非極大抑制画像<k><7:0>が取得される。画像取得部83aは、こうして取得した非極大抑制画像<k><7:0>のすべてをエッジ特徴点群生成部83cに供給するとともに、微分画像<k><7:0>のうちそれぞれ微分方向0°、90°、180°、270°に対応する微分画像<k><0>、微分画像<k><2>、微分画像<k><4>、微分画像<k><6>のみを勾配値取得部83bに供給する。以下では、この4つの微分画像をまとめて、図14にも示すように微分画像<k><0,2,4,6>と表記する。また、画像取得部83aは、k=n−1の場合に限り、微分画像<n−1><7:0>を図13に示す低解像度ピラミッド生成部84に供給する。
勾配値取得部83bは、微分画像<k><0,2,4,6>から画素ごとの勾配方向を取得し、この勾配方向が各画素に設定された勾配画像<k>を生成するとともに、取得した各画素の勾配方向を量子化することにより、量子化された勾配方向が各画素に設定された微分方向画像<k>を生成する機能を有している。具体的に説明すると、勾配値取得部83bはまず、それぞれ微分方向0°,180°に対応する微分画像<k><0,4>から、X方向微分画像を生成する。より具体的には、微分画像<k><0>から微分画像<k><4>を減算することにより、X方向微分画像を生成する。上述したように、微分画像<7:0>はそれぞれ、対応する微分方向に沿って暗から明に変化するエッジのみが強調された画像である。したがって、微分画像<k><0>は微分方向0°に沿って暗から明に変化するエッジのみが強調された画像であり、微分画像<k><4>は微分方向180°に沿って暗から明に変化するエッジのみが強調された画像である。これに対し、X方向微分画像は上記のように微分画像<k><0>から微分画像<k><4>を減算したものであるから、微分方向0°に沿って暗から明に変化するエッジと、微分方向180°に沿って暗から明に変化するエッジ(すなわち、微分方向0°に沿って明から暗に変化するエッジ)との両方が強調された画像となる。
次に、勾配値取得部83bは、それぞれ微分方向90°,270°に対応する微分画像<k><2,6>から、Y方向微分画像を生成する。より具体的には、微分画像<k><2>から微分画像<k><6>を減算することにより、Y方向微分画像を生成する。こうして生成されるY方向微分画像は、X方向微分画像と同様の理由により、微分方向90°に沿って暗から明に変化するエッジと、微分方向270°に沿って暗から明に変化するエッジ(すなわち、微分方向90°に沿って明から暗に変化するエッジ)との両方が強調された画像となる。
続いて、勾配値取得部83bは、以上のように生成したX方向微分画像及びY方向微分画像により、勾配画像<k>を生成する。具体的に説明すると、まず逆正接を用いる次の式(26)により、各画素の勾配方向G(i)(iは画素の通番)を算出する。ただし、式(26)中のX(i)はi番目の画素のX方向微分画像における明度(微分値)を示し、Y(i)はi番目の画素のY方向微分画像における明度(微分値)を示している。勾配値取得部83bは、こうして算出した勾配方向G(i)を各画素に設定することにより、勾配画像<k>を生成する。
次に、勾配値取得部83bは、勾配画像<k>から微分方向画像<k>を生成する。具体的には、式(26)により算出した勾配方向G(i)を、上記所定数((図12に示した方向別微分画像生成部70aに設定される所定数。本実施の形態では「8」)の微分方向のうち最も近い方向に量子化してなる量子化勾配方向QG(i)を取得する。一例を挙げて説明すると、i番目の画素に対応する勾配方向G(i)が例えば40°であった場合、上述した微分方向0°、45°、90°、135°、180°、215°、270°、315°のうち、微分方向45°が最も近い方向となるので、量子化勾配方向QG(i)は45°となる。以上のような量子化勾配方向QG(i)をすべての画素について取得した後、勾配値取得部83bは、量子化勾配方向QG(i)を微分方向画像<k>の各画素に設定する。これにより、勾配値取得部83bによる微分方向画像<k>の生成が完了する。勾配値取得部83bが生成した微分方向画像<k>は、エッジ特徴点群生成部83cに供給される。
エッジ特徴点群生成部83cは、非極大抑制画像<k><7:0>に含まれる複数のエッジ点それぞれについて微分方向画像<k>から量子化勾配方向を取得し、該複数のエッジ点それぞれの座標及び量子化勾配方向を示すエッジ特徴点群<k>を生成するよう構成される。より具体的に言えば、エッジ特徴点群生成部83cは、微分方向画像<k>内の各画素がエッジ点であるか否かを判定する機能と、エッジ点であると判定した各画素について、微分方向画像<k>内における座標(ピクセル座標)、微分方向画像<k>内に設定された量子化勾配方向QG(i)、この量子化勾配方向QG(i)に対応する非極大抑制画像内の対応する画素に設定された値(サブピクセル変位量Δx)、及び、勾配画像<k>内に設定された勾配方向G(i)を含むエッジ特徴点群<k>を生成する機能とを有して構成される。
以下、微分方向画像<k>内のi番目の画素にかかる処理に注目し、エッジ特徴点群生成部83cの動作について、より具体的に説明する。エッジ特徴点群生成部83cはまず、i番目の画素に関して微分方向画像<k>内に設定された量子化勾配方向QG(i)を取得する。そして、8枚の非極大抑制画像<k><7:0>の中から、この量子化勾配方向QG(i)に対応するものを選択する。続いて、エッジ特徴点群生成部83cは、上記i番目の画素に対応する選択した非極大抑制画像<k>内の画素を参照し、そこに設定された値を取り出す。そして、取り出した値が−0.5以上0.5以下の範囲に含まれるか否かを判定し、含まれると判定した場合に、i番目の画素がエッジ点であると判定する。含まれないと判定した場合には、i番目の画素はエッジ点ではないと判定する。この判定では、要するに、非極大抑制画像<k>内の対応する画素にサブピクセル変位量Δxが設定されている場合にエッジ点であると判定し、そうでない場合にエッジ点ではないと判定していることになる。
i番目の画素がエッジ点であると判定した場合、エッジ特徴点群生成部83cは、微分方向画像<k>からi番目の画素の座標(ピクセル座標)及び量子化勾配方向QG(i)を取得するとともに、選択した非極大抑制画像<k>から対応する画素の設定値(サブピクセル変位量Δx)を取得し、さらに勾配画像<k>内から対応する画素の勾配方向G(i)を取得し、こうして取得した各情報を含む一群の情報を、エッジ特徴点群<k>内に1レコードとして格納する。
最終的に生成されるエッジ特徴点群<k>は、微分方向画像<k>内のすべての画素のうち、上記判定によりエッジ点であると判定された画素のそれぞれについて、同様のレコードを含む情報となる。こうして生成されるエッジ特徴点群<k>は、マッチング処理部30において使用される複数のテンプレートのうちのひとつを構成するもので、単位回転角算出部83d及び回転処理部83eのそれぞれに供給される。
単位回転角算出部83dは、エッジ特徴点群<k>に基づいて単位回転角θ0<k>を算出する機能部である。単位回転角θ0<k>とは、回転テンプレートを生成するためにテンプレートを回転させる際の回転角の基準値である。単位回転角算出部83dによる単位回転角θ0<k>の算出は、次の式(27)から式(31)に示す一連の計算を行うことによって行われる。ただし、式(27)中のDjは、エッジ特徴点群<k>に含まれるj番目のエッジ点と、エッジ特徴点群<k>に含まれる全エッジ点の重心位置との間の距離である。また、NEは、エッジ特徴点群<k>に含まれるエッジ点の個数である。
式(27)から式(31)について、計算の順を追いつつ詳しく説明する。まず単位回転角算出部83dは、式(27)により距離Djの平均値μを算出し、次いで式(28)により距離Djの標準偏差値uを算出する。次に単位回転角算出部83dは、式(29)に示すように、平均値μと標準偏差値uを加算することによってエッジ基準距離値Dを算出する。そして、このエッジ基準距離値Dを用いて、式(30)により角度変化量θcを算出する。角度変化量θcは、重心位置からエッジ基準距離値Dだけ離れた位置にあるエッジ点が重心位置を中心とした円軌道上を1画素分移動した場合の、該エッジ点の回転角を示している。最後に単位回転角算出部83dは、式(31)に示すように、角度変化量θcに変形許容量V(設定値入力受付部61から供給されるもの)を乗算した結果を、単位回転角θ0<k>として出力する。
回転処理部83eは、単位回転角算出部83dによって算出された単位回転角θ0<k>に基づいてエッジ特徴点群<k>を回転させることにより、このエッジ特徴点群<k>であるエッジ特徴点群<k><0>を含むmk+1個のエッジ特徴点群<k><mk:0>を取得する。ただし、mkは次の式(32)で表わされる。
以上のようにして生成されるエッジ特徴点群<k><mk:0>はそれぞれ、マッチング処理部30において使用される複数のテンプレートのうちのひとつを構成する。
ここまで、高解像度ピラミッド生成部82から濃淡画像<k>が供給された場合の動作を例に取って高解像度テンプレート生成部83内の各部の動作を説明してきたが、実際の高解像度テンプレート生成部83は、1からn−1のn−1個のkそれぞれについて同様の動作を行うよう構成される。したがって、高解像度テンプレート生成部83は最終的に、図13に示すように、それぞれテンプレートである複数のエッジ特徴点群<1><m1:0>〜<n−1><mn−1:0>を生成することとなる。
図13に戻る。低解像度ピラミッド生成部84(第1の低解像度ピラミッド生成部)は、高解像度テンプレート生成部83から供給される微分画像<n−1><7:0>(濃淡画像<n−1:1>のうちの最も解像度が低いものである濃淡画像<n−1>が入力画像である場合に8方向エッジ検出部70により生成される8枚の微分画像)それぞれの解像度をN−n+1段階にわたって落とすことにより、解像度ごとの8枚の微分画像<7:0>を含む8×(N−n+1)枚の微分画像<N:n><7:0>(第1の微分画像)を生成するよう構成される。
低解像度ピラミッド生成部84の基本的な動作原理については、高解像度ピラミッド生成部82と同様であるので、詳しい説明は省略する。ただし、低解像度ピラミッド生成部84は、8枚の微分画像<n−1><7:0>のそれぞれをダウンサンプリング及びフィルタリングの対象とし、N−n+1段階にわたって処理を繰り返すよう構成される。1段分のダウンサンプリングによる解像度の低下量は、高解像度ピラミッド生成部82と同様、画像の一辺のサイズが半分になる量に予め調節される。
低解像度テンプレート生成部85は、低解像度ピラミッド生成部84から供給される微分画像<k><7:0>(kはnからNの整数)を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から出力される非極大抑制画像<k><7:0>に基づき、微分画像<k><7:0>の解像度に対応するテンプレートを生成する機能部である。低解像度テンプレート生成部85は、nからNのN−n+1個のkそれぞれについて、このテンプレートの生成を行うよう構成される。
低解像度テンプレート生成部85は、図15に示すように、画像取得部85a、勾配値取得部85b、エッジ特徴点群生成部85c、単位回転角算出部85d、回転処理部85eを有して構成される。これらの機能部の動作は、基本的に、図14に示した高解像度ピラミッド生成部82内の各機能部の動作と同様である。以下、異なる点のみを説明する。
画像取得部85aには、濃淡画像ではなく微分画像<k><7:0>が供給される。画像取得部85aは、これを8方向エッジ検出部70に供給する。その結果として8方向エッジ検出部70から低解像度テンプレート生成部85に供給される画像は、図14に示した高解像度ピラミッド生成部82の例と同様、微分画像<k><7:0>及び非極大抑制画像<k><7:0>となる。なお、高解像度ピラミッド生成部82の画像取得部83aは、こうして供給された画像のうち微分画像<n−1><7:0>を低解像度ピラミッド生成部84に出力していたが、画像取得部85aはそのような出力は行わない。
8方向エッジ検出部70から供給された微分画像<k><7:0>及び非極大抑制画像<k><7:0>を受け、勾配値取得部85b、エッジ特徴点群生成部85c、単位回転角算出部85d、回転処理部85eは、図14に示した勾配値取得部83b、エッジ特徴点群生成部83c、単位回転角算出部83d、回転処理部83eと同様の処理を行う。これにより、図13に示すように、それぞれテンプレートである複数のエッジ特徴点群<n><mn:0>〜<N><mN:0>が生成される。
図11に戻り、ポーズ情報取得部90は、探索対象画像入力受付部62から供給される探索対象画像を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から供給されるエッジ距離画像<7:0>(8枚の非極大抑制画像<7:0>に基づいて生成される8枚の画像)と、テンプレート生成部80により生成されたテンプレート(エッジ特徴点群)とに基づいて、探索対象画像内における基準画像のポーズを示すポーズ情報を取得する機能を有して構成される。
図16〜図18を参照して、ポーズ情報取得部90の機能について詳しく説明する。ポーズ情報取得部90は、図16に示すように、高解像度ピラミッド生成部91、画像取得部92、低解像度ピラミッド生成部93、全探索処理部94、及び周辺探索処理部95を有して構成される。
高解像度ピラミッド生成部91(第2の高解像度ピラミッド生成部)は、探索対象画像入力受付部62から供給される探索対象画像について、n−2段階(nは設定値入力受付部61から供給される値)にわたり、ガウシアンフィルターを適用しつつダウンサンプリング(低解像度化)を行い、さらに、各段階で得られるダウンサンプリング後の画像に差分フィルターを適用するように構成される。1段分のダウンサンプリングによる解像度の低下量は、画像の一辺のサイズが半分になる量に予め調節される。高解像度ピラミッド生成部91の具体的な機能はテンプレート生成部80内の高解像度ピラミッド生成部82と同様であるので、詳しい説明は省略する。最終的に、高解像度ピラミッド生成部91は、探索対象画像そのものである濃淡画像<1>を含むn−1枚の濃淡画像<n−1:1>(複数の第2の濃淡画像)を生成し、周辺探索処理部95に供給する。また、濃淡画像<n−1:1>のうち最も解像度が低い濃淡画像<n−1>に限り、画像取得部92にも供給する。
画像取得部92は、高解像度ピラミッド生成部91から供給された濃淡画像<n−1>を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から供給される微分画像<n−1><7:0>を低解像度ピラミッド生成部93に供給するよう構成される。
低解像度ピラミッド生成部93(第2の低解像度ピラミッド生成部)は、画像取得部92から供給される微分画像<n−1><7:0>それぞれの解像度をN−n+1段階にわたって落とすことにより、解像度ごとの8枚の微分画像<7:0>を含む複数の微分画像(第2の微分画像)を生成するように構成される。1段分のダウンサンプリングによる解像度の低下量は、画像の一辺のサイズが半分になる量に予め調節される。低解像度ピラミッド生成部93の具体的な機能はテンプレート生成部80内の低解像度ピラミッド生成部84と同様であるので、詳しい説明は省略する。最終的に、低解像度ピラミッド生成部93は、N−n+1組の8枚の微分画像<N:n><7:0>(複数の第2の微分画像)を生成し、そのうち微分画像<N><7:0>を全探索処理部94に、残りの微分画像<N−1:n><7:0>を周辺探索処理部95にそれぞれ供給する。
全探索処理部94は、低解像度ピラミッド生成部93から供給される微分画像<N><7:0>と、テンプレート生成部80から供給されるエッジ特徴点群<N><mN:0>とに基づいて、探索対象画像内における基準画像のポーズの候補であるA+1個のポーズ情報候補<N><A:0>を取得する機能部である。なお、Aは探索の結果として得られる数値であり、予め決められているものではない。
全探索処理部94は、図17に示すように、画像取得部94a及び一致度空間取得部94bを有して構成される。
画像取得部94aは、低解像度ピラミッド生成部93から供給される微分画像<N><7:0>を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から供給されるエッジ距離画像<N><7:0>を一致度空間取得部94bに供給するよう構成される。
一致度空間取得部94bは、テンプレート生成部80から供給されるmN+1個のエッジ特徴点群<N><mN:0>ごとに、エッジ距離画像<N><7:0>の各画素を原点位置(左上位置)として、エッジ特徴点群内の各エッジ点とエッジ距離画像<N><7:0>内の各画素との一致度を算出する機能を有して構成される。以下、図20も参照しながら詳しく説明する。
一致度空間取得部94bは、まずエッジ特徴点群<N><0>に着目し、さらに、左上から順にエッジ距離画像<N><0>の座標に順次着目する。図20には、ある瞬間に一致度空間取得部94bが着目した座標(XOFF,YOFF)を図示している。一致度空間取得部94bによる一致度の算出処理では、エッジ距離画像<N><0>のうち、着目した座標(XOFF,YOFF)を左上として、X方向の幅XtempかつY方向の幅Ytempの領域が処理対象となる。ここで、X方向の幅Xtempは、エッジ特徴点群<N><0>に含まれる各画素のX座標のうち最大のものから最小のものを減じた値、つまりエッジ特徴点群<N><0>のX方向の幅であり、Y方向の幅Ytempは、エッジ特徴点群<N><0>に含まれる各画素のY座標のうち最大のものから最小のものを減じた値、つまりエッジ特徴点群<N><0>のY方向の幅である。エッジ特徴点群<N><0>内の各エッジ点は、処理対象領域内のいずれかの画素と対応することになる。
座標(XOFF,YOFF)に着目した一致度空間取得部94bは、エッジ特徴点群<N><0>内の各エッジ点について、次の式(33)及び式(34)により、エッジ距離画像<N><0>内の対応する画素との一致度を算出する。ただし、関数D(x,y,dir)は、対応する微分方向がdirであるエッジ距離画像上の座標(x,y)に設定されているエッジ距離ED(式(25)参照)である。また、Tx(i)、Ty(i)、Tdir(i)、Td(i)はそれぞれ、エッジ特徴点群に含まれるi番目のエッジ点のx座標、y座標、量子化勾配方向QG(i)、及びサブピクセル変位量Δxである。Vは、設定値入力受付部61から供給される変形許容量であり、S(i)は、エッジ特徴点群に含まれるi番目のエッジ点について算出された一致度である。
以上のようにしてエッジ特徴点群<N><0>内の各エッジ点について一致度S(i)を算出した一致度空間取得部94bは、次の式(35)により、その平均値Scoreを算出する。ただし、NEは、エッジ特徴点群<N><0>に含まれるエッジ点の個数である。
一致度空間取得部94bは、X軸、Y軸、θ軸で特定される投票空間内の各座標に、上記のようにして算出した平均値Scoreを対応付ける。ただし、θ座標は、エッジ特徴点群に対応する回転角に対応させる。上記の場合では、一致度空間取得部94bは、X座標XOFF、Y座標YOFF、θ座標0°(エッジ特徴点群<N><0>に対応する回転角)の点に、平均値Scoreを対応付けることになる。
一致度空間取得部94bは、互いに回転角の異なるmN+1個のエッジ特徴点群<N><mN:0>と、互いに微分方向の異なる8枚のエッジ距離画像<N><7:0>とのすべての組み合わせについて、エッジ距離画像内のすべての画素に順次着目しながら(座標(XOFF,YOFF)を切り替えながら)、以上の処理を実行する。ただし、微分方向が45°、135°、225°、315°に対応するエッジ距離画像<N><1,3,5,7>に関しては、式(34)に代えて式(36)を用いる。これは、これらの画像の画素間距離が、エッジ距離画像<N><0,2,4,6>に比べて2の平方根倍になることに対応するものである。
一致度空間取得部94bの上記処理により、最終的に、X軸、Y軸、θ軸で特定される投票空間内の各座標に、平均値Scoreが対応づけられる。一致度空間取得部94bはさらに、その中で極大値を構成している座標を取得する。そして、取得した1つ以上の座標(X,Y,θ)を、A+1個のポーズ情報候補<N><A:0>として出力する。A+1は、一致度空間取得部94bが取得した座標の数である。
全探索処理部94は、以上のようにして取得したポーズ情報候補<N><A:0>を、周辺探索処理部95に供給するよう構成される。
周辺探索処理部95は、ポーズ情報候補<N><A:0>のそれぞれに基づいて微分画像<N−1:n><7:0>及び濃淡画像<n−1:1>のそれぞれから画像を抽出し、さらに、抽出した画像(抽出画像)とテンプレート生成部80から供給されるエッジ特徴点群<1><m1:0>〜<N−1><mN−1:0>とに基づいてポーズ情報を取得する機能部である。より具体的には、解像度ごとに、該解像度に対応する抽出画像が入力画像である場合に8方向エッジ検出部70により生成される8枚のエッジ距離画像と、該解像度に対応するエッジ特徴点群(テンプレート)とに基づいて、探索対象画像内における基準画像のポーズの候補である少なくとも1つのポーズ情報候補を取得するよう構成される。マッチング処理部30の最終的な出力であるポーズ情報は、最も高い解像度に対応して周辺探索処理部95が取得する少なくとも1つのポーズ情報候補の中から、周辺探索処理部95により選択される。
周辺探索処理部95は、図18(a)(b)に示すように、座標変換処理部95a、テンプレート選択部95b、処理領域抽出部95c、画像取得部95d、一致度空間取得部95e、及び最終回答選択部95fを有して構成される。周辺探索処理部95は、これらの機能部を用いて、低い解像度から順に処理対象の解像度を上げながら、N−1段階の処理を行うよう構成される。このN−1段階の処理のそれぞれにおいて、周辺探索処理部95は、A+1個のポーズ情報候補<N><A:0>のそれぞれに対応するポーズ情報候補を取得する。図18(a)には、このうちk段階目(kは1からN−1の整数)の処理かつa番目(aは0からAの整数)のポーズ情報候補<k><a>に関する部分を図示している。
なお、本実施の形態による周辺探索処理部95は、上記各段階のそれぞれでA+1個のポーズ情報候補を取得するよう構成される。つまり、全探索処理部94が取得したポーズ情報候補の数は周辺探索処理部95の処理の間維持されるが、ある段階で算出した平均値Scoreが例えば予め決められた所定値を下回るようなポーズ情報候補については、その段階以降、処理の対象としないこととしてもよい。こうすることで、正しい回答である可能性の低いポーズ情報候補を処理対象から除去し、処理コストを低減することが可能になる。
以下、図18(a)に示したk段階目の処理かつa番目のポーズ情報候補<k><a>に関する周辺探索処理部95の動作を例に取って説明する。なお、kは、N−1から1まで1ずつデクリメントされる。
座標変換処理部95aは、k=N−1の場合には全探索処理部94(図16)からポーズ情報候補<N><a>を取得し、k<N−1の場合には一致度空間取得部95eからひとつ前の段階で生成されたポーズ情報候補<k+1><a>を取得する。そして、取得したポーズ情報候補に座標変換処理を施す。この処理は、相対的に前段の処理で使用される各画像と、相対的に後段の処理で使用される各画像とで、解像度が異なるために必要となるものである。本実施の形態では、上述したように、1段階の処理で画像の一辺のサイズが半分になるように、画像のダウンサンプリングを行っている。したがって、座標変換処理部95aは、ポーズ情報候補<k+1><a>により示される座標(X,Y,θ)のX座標及びY座標をそれぞれ2倍することにより、座標変換を行うことになる。座標変換処理部95aは、座標変換後のポーズ情報候補<k+1><a>のうち、X座標及びY座標を処理領域抽出部95cに、θ座標をテンプレート選択部95bにそれぞれ供給する。
テンプレート選択部95bは、テンプレート生成部80(図11)から供給されるmk+1個のエッジ特徴点群<k><mk:0>の中から、座標変換処理部95aから供給されるθ座標に基づいて、7個を選択する機能を有している。具体的な例では、対応する回転角がθ座標に等しいものと、対応する回転角がθ座標にプラス側で近いものから順に3つと、対応する回転角がθ座標にマイナス側で近いものから順に3つとを選択する。以下、こうして選択されるものをエッジ特徴点群<k><s+3:s−3>と表わし、それぞれに対応する回転角をθs−3〜θs+3と表わす。テンプレート選択部95bは、選択したエッジ特徴点群<k><s+3:s−3>を一致度空間取得部95eに供給するとともに、対応する回転角θs−3〜θs+3を処理領域抽出部95cに供給する。また、テンプレート選択部95bは、回転角0°に対応するエッジ特徴点群<k><0>に関して上述したX方向の幅Xtemp及びY方向の幅Ytemp(図20参照)を取得し、それぞれX方向の幅Xtemp0及びY方向の幅Ytemp0として処理領域抽出部95cに供給する。
処理領域抽出部95cは、k≧nの場合には低解像度ピラミッド生成部93(図16)から8枚の微分画像<k><7:0>を取得し、k<nの場合には高解像度ピラミッド生成部91(図16)から濃淡画像<k>を取得する。そして、座標変換処理部95aから供給されるX座標及びY座標と、テンプレート選択部95bから供給される回転角θs−3〜θs+3及び幅Xtemp0,Ytemp0とに基づき、取得した画像から処理領域を抽出する。より具体的に説明すると、処理領域抽出部95cは、テンプレート選択部95bから供給される回転角θs−3〜θs+3及び幅Xtemp0,Ytemp0に基づき、まず回転角θs−3〜θs+3のそれぞれに対応する処理領域の幅Xtemp,Ytempを算出する。そして、座標変換処理部95aから供給されるX座標及びY座標を左上としてX方向の幅XtempかつY方向の幅Ytempの領域をまず取得し、さらにそこからX,Y方向に±V(Vは、設定値入力受付部61から供給される変形許容量)だけ拡大した領域を処理領域として抽出する。処理領域抽出部95cは、こうして抽出した抽出画像<k><7:0><s+3:s−3><a>(k≧nの場合)及び抽出画像<k><s+3:s−3><a>(k<nの場合)を、画像取得部95dに供給する。
画像取得部95dは、処理領域抽出部95cから供給される上記画像を8方向エッジ検出部70に供給し、その結果として8方向エッジ検出部70から供給されるエッジ距離画像<k><7:0><s+3:s−3><a>を一致度空間取得部95eに供給するよう構成される。
一致度空間取得部95eは、テンプレート選択部95bから供給されるエッジ特徴点群<k><s+3:s−3>ごとに、エッジ特徴点群内の各エッジ点とエッジ距離画像<k><7:0><s+3:s−3><a>内の各画素との一致度を算出する機能を有して構成される。この一致度の具体的な算出方法は上述した一致度空間取得部94bによるものと同様であるので、詳しい説明は省略する。最終的に、一致度空間取得部95eは、ポーズ情報候補<k><a>を取得し、k>1である場合には、取得したポーズ情報候補<k><a>を座標変換処理部95aに供給する。こうして取得されたポーズ情報候補<k><a>は通常、抽出画像内に対象物が含まれている場合、ポーズ情報候補<k+1><a>より高い精度で、抽出画像内の基準画像の位置を示すものとなる。
k=1である場合の一致度空間取得部95eは、図18(b)に示すように、A+1個のポーズ情報候補<1><A:0>と、それぞれについて算出した平均値Score<A:0>とを最終回答選択部95fに供給する。これを受けた最終回答選択部95fは、A+1個のポーズ情報候補<1><A:0>の中から平均値Scoreが最も大きいものを選択し、ポーズ情報として出力する。マッチング処理部30は、こうして出力したポーズ情報と、上述したテンプレートとに基づき、線分を示すクラック点列を取得する。
以上説明したように、本実施の形態によるマッチング処理部30によれば、8方向エッジ検出部70によるエッジ点の決定(微分処理及び非極大抑制処理)を、勾配方向ではなく所定数(8)の微分方向のそれぞれに基づいて行っているので、探索対象画像内において背景や対象物に外観上の変化が発生しても、高い精度で認識を行うことが可能になる。
また、マッチング処理部30では、探索対象画像を、単なるエッジ画像(非極大抑制画像)ではなく、変形許容量Vだけエッジに幅を持たせたエッジ距離画像としている。つまり、エッジポテンシャル表現によりエッジの冗長性を制御しているので、エッジの変形を伴うような対象物の外観上の変化(誤差による変化を含む)が発生しても、高い精度で認識を行うことが可能になる。
さらに、マッチング処理部30ではピラミッドアルゴリズムによる粗密探索を行っているが、解像度の低い画像を、濃淡画像ではなく、方向別微分画像生成部70aにより生成した微分画像により構成しているので、マッチング処理部30では、低い解像度で細い線状の対象物が消えてしまうことが防止されている。したがって、ピラミッドアルゴリズムにおけるピラミッドの階層を従来に比べて深くすることができるので、対象物の認識に要する処理コストを従来に比べて低くすることが可能になるとともに、使用メモリ量の低減も可能となっている。
なお、上の説明ではピラミッドアルゴリズムによる粗密探索を行う場合を前提として説明したが、ピラミッドアルゴリズムによる粗密探索を行わないようにマッチング処理部30を構成してもよい。
また、上の説明では変形許容量Vだけエッジに幅を持たせたエッジ距離画像を使用することを前提として説明したが、エッジ距離画像を使用しない(エッジ距離画像に代えて非極大抑制画像を用いる)ようにマッチング処理部30を構成することも可能である。
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。