説明

エッジ検出装置およびそのプログラム

【課題】照明等の撮影条件が変化した場合であっても、映像を構成するフレーム画像のそれぞれからエッジを正確に検出することができるエッジ検出装置およびそのプログラムを提供する。
【解決手段】エッジ検出装置1は、第1閾値および第2閾値を用いて映像を構成するフレーム画像ごとのエッジ点を検出するエッジ検出手段20と、現フレーム画像のエッジ点から当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡するエッジ追跡手段40と、エッジ検出手段20によって検出されたエッジ点を分布化してガウス混合モデルを生成するとともに、エッジ追跡手段40によって追跡が成功したエッジ点を追加してガウス混合モデルを更新するモデル生成・更新手段50と、生成または更新されたガウス混合モデルの平均値および標準偏差から第1閾値および第2閾値を算出する閾値算出手段60と、を備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は入力された映像からエッジを検出するエッジ検出装置およびそのプログラムに関するものである。
【背景技術】
【0002】
従来、エッジ検出処理における代表的な手法としてCannyオペレータが挙げられる。Cannyオペレータは、入力されたフレーム画像に対して、(1)ガウシアンフィルタによるノイズ除去、(2)ソーベルフィルタによる微分処理、(3)勾配の最大位置検出、(4)ヒステリシス特性を持った閾値処理によるエッジ検出とエッジの補間、という4つの処理を行う(非特許文献1参照)。特に(4)の閾値処理では、まず第1閾値hthによってエッジの始点を求め、当該エッジの始点に結合し、第2閾値lth以上のものをエッジと決定することで、不要なエッジを除いた必要なエッジのみを検出している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】J.Canny, “A Computational Approach to Edge Detection”, IEEE Trans. Pattern Analysis and Machine Intelligence, .8, 6, .679-698, 1986.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、コンピュータビジョンを始めとする各種画像処理で用いられる映像のエッジ検出処理は、映像を構成するフレーム画像のそれぞれからエッジを正確に検出するために、照明等の撮影条件や被写体に依存したチューニングを施す必要がある。また、調整した設定条件を変更しない場合であっても常にエッジを正確に検出できるように、撮影条件や被写体の条件も一定に保つ必要がある。しかしながら、撮影条件に合わせてチューニングを逐次調整していくことは、人手による場合は試行錯誤が必要で、煩雑な作業であるとともに、エッジ検出の状態を一定に保つことも困難である。
【0005】
例えば、前記した非特許文献1で提案されたCannyオペレータを用いた映像のエッジ検出処理では、照明等の撮影条件が変化した場合であっても、2つの閾値hth,lthが固定された状態で閾値処理が行われていた。従って、従来は、照明等の撮影条件が変化すると、本来エッジではない影がエッジとして検出されたりするため、撮影条件によって検出できるエッジ状態が変化してしまうという問題があった。
【0006】
本発明はかかる点に鑑みてなされたものであって、照明等の撮影条件が変化した場合であっても、映像を構成するフレーム画像のそれぞれからエッジを正確に検出することができるエッジ検出装置およびそのプログラムを提供することを課題とする。
【課題を解決するための手段】
【0007】
前記課題を解決するために請求項1に係るエッジ検出装置は、入力された映像からエッジを構成するエッジ点を検出するエッジ検出装置であって、エッジ検出手段と、エッジ追跡手段と、モデル生成・更新手段と、閾値算出手段と、を備える構成とした。
【0008】
これにより、エッジ検出装置は、エッジ検出手段によって、映像を構成するフレーム画像ごとに、第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、第1閾値以下かつ第1閾値より低い第2閾値以上のエッジ勾配強度を有する画素と、を前記エッジ点として検出する。また、エッジ検出装置は、エッジ追跡手段によって、現フレーム画像のエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡する。また、エッジ検出装置は、モデル生成・更新手段によって、エッジ検出手段によって検出されたエッジ点を分布化してガウス混合モデルを生成するとともに、エッジ追跡手段によって追跡が成功した前記現フレーム画像のエッジ点をガウス混合モデルに追加することでガウス混合モデルをフレーム画像ごとに順次更新する。なお、ガウス混合モデルは、フレーム画像ごとに生成または更新してもよく、フレーム画像を所定サイズのブロックで分割した所定ブロックごとに生成または更新してもよい。
【0009】
また、エッジ検出装置は、閾値算出手段によって、モデル生成・更新手段によって生成および更新されたガウス混合モデルを構成する個々のガウスモデルから、予め定められた値以上の重みを有するとともに、最も大きい重みを有するガウスモデルを選択し、当該ガウスモデルの平均値から当該ガウスモデルの標準偏差を所定数倍したものを減じた値である第1算出値が、平均値を所定値で除した値である第2算出値を超える場合は、第1算出値を前記第1閾値とするとともに第2算出値を第2閾値とし、第1算出値が第2算出値以下である場合は、第2算出値を第1閾値とするとともに第1算出値を第2閾値とする。このように、エッジ検出装置は、Cannyオペレータを用いたエッジ検出処理において、従来は固定されていた第1閾値および第2閾値を、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて自動的に決定することができる。
【0010】
また、請求項2に係るエッジ検出装置は、請求項1に係るエッジ検出装置において、閾値算出手段が、平均値に標準偏差を所定数倍したものを加えることで、第1閾値よりも高い第3閾値を算出し、エッジ検出手段が、映像を構成するフレーム画像ごとに、第3閾値以下かつ第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、第1閾値以下かつ第2閾値以上のエッジ勾配強度を有する画素と、をエッジ点として検出する構成とした。このように、エッジ検出装置は、第1閾値よりも大きい値を有する第3閾値を、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて自動的に決定することができる。
【0011】
また、請求項3に係るエッジ検出装置は、請求項1または請求項2に係るエッジ検出装置において、エッジ検出手段が、閾値算出手段によって第1閾値および第2閾値が算出された場合は、当該算出された第1閾値および第2閾値を用いてエッジ点を検出し、閾値算出手段によって第1閾値および第2閾値が算出されない場合は、予め定められた固定値を第1閾値および第2閾値として用いてエッジ点を検出する構成とした。このように、エッジ検出装置は、閾値算出手段によって閾値が算出されない場合であっても、予め定められた固定の閾値を用いてフレーム画像からエッジ点を検出することができる。
【0012】
また、請求項4に係るエッジ検出装置は、請求項1から請求項3のいずれか一項に係るエッジ検出装置において、モデル生成・更新手段が、エッジ検出手段によってエッジ点が検出できなかった場合、または、エッジ追跡手段によって追跡が成功したエッジ点が存在しない場合、ガウス混合モデルを破棄し、エッジ検出手段が、ガウス混合モデルが破棄された場合、予め定められた固定値を第1閾値および第2閾値として用いてエッジ点を検出する構成とした。このように、エッジ検出装置は、入力されたフレーム画像からエッジ点が検出できなかった場合や、検出したエッジ点に類似する前フレーム画像のエッジ点を追跡できなかった場合は、それまでに学習させたガウス混合モデルを破棄し、次の処理で再度ガウス混合モデルを生成する。
【0013】
また、請求項5に係るエッジ検出装置は、請求項1から請求項4のいずれか一項に係るエッジ検出装置において、エッジ追跡手段が、現フレーム画像のエッジ点における予め指定されたエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡する構成とした。このように、エッジ検出装置は、現フレーム画像から検出された全てのエッジ点を追跡するのではなく、追跡を行いたい特定のエッジ点のみを追跡することができる。
【0014】
前記課題を解決するために請求項6に係るエッジ検出プログラムは、入力された映像からエッジを構成するエッジ点を検出するために、コンピュータを、エッジ検出手段、エッジ追跡手段、モデル生成・更新手段、閾値算出手段、として機能させる構成とした。
【0015】
これにより、エッジ検出プログラムは、エッジ検出手段によって、映像を構成するフレーム画像ごとに、第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、第1閾値以下かつ第1閾値より低い第2閾値以上のエッジ勾配強度を有する画素と、を前記エッジ点として検出する。また、エッジ検出プログラムは、エッジ追跡手段によって、現フレーム画像のエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡する。また、エッジ検出プログラムは、モデル生成・更新手段によって、エッジ検出手段によって検出されたエッジ点を分布化してガウス混合モデルを生成するとともに、エッジ追跡手段によって追跡が成功した前記現フレーム画像のエッジ点をガウス混合モデルに追加することでガウス混合モデルをフレーム画像ごとに順次更新する。なお、ガウス混合モデルは、フレーム画像ごとに生成および更新してもよく、フレーム画像を所定領域に分割した所定領域ごとに生成および更新してもよい。
【0016】
また、エッジ検出プログラムは、閾値算出手段によって、モデル生成・更新手段によって生成および更新されたガウス混合モデルを構成する個々のガウスモデルから、予め定められた値以上の重みを有するとともに、最も大きい重みを有するガウスモデルを選択し、当該ガウスモデルの平均値から当該ガウスモデルの標準偏差を所定数倍したものを減じた値である第1算出値が、平均値を所定値で除した値である第2算出値を超える場合は、第1算出値を前記第1閾値とするとともに第2算出値を第2閾値とし、第1算出値が第2算出値以下である場合は、第2算出値を第1閾値とするとともに第1算出値を第2閾値とする。このように、エッジ検出プログラムは、Cannyオペレータを用いたエッジ検出処理において、従来は固定されていた第1閾値および第2閾値を、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて自動的に決定することができる。
【発明の効果】
【0017】
請求項1および請求項6に係る発明によれば、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて決定された第1閾値および第2閾値を用いて、前フレーム以前のエッジ検出結果を加味してエッジ検出を行うため、仮に照明等の撮影条件が変化した場合であっても、映像を構成するフレーム画像のそれぞれからエッジ点を正確に検出することができる。
【0018】
請求項2に係る発明によれば、第3閾値をエッジ検出の際の上限値として用いることで、第1閾値を超える高いエッジ勾配強度を有する部分(例えば影等)がエッジ点として検出されてしまうことを抑制することができ、エッジ検出の精度をより向上させることができる。
【0019】
請求項3に係る発明によれば、例えば前フレーム画像からエッジ点が検出されなかった場合等、エッジ検出で用いられる閾値を算出できない状況になった場合であっても、映像を構成するフレーム画像から順次エッジ点を検出することができる。
【0020】
請求項4に係る発明によれば、入力されたフレーム画像からエッジ点が検出でき、かつ、エッジ点を追跡できた場合のみガウス混合モデルを生成または更新するため、前フレーム画像以前のエッジ点を正確に反映させたガウス混合モデルに基づいて閾値を算出することができる。
【0021】
請求項5に係る発明によれば、特定のエッジ点のみを追跡するため、全体の処理速度を向上させることができる。
【図面の簡単な説明】
【0022】
【図1】本発明に係るエッジ検出装置の全体構成を示すブロック図である。
【図2】本発明に係るエッジ検出装置で用いられるガウス混合モデルの一例を示す概略図であり、(a)は、予め定められた値以上の重みを有するガウスモデルで構成されたガウス混合モデルを示す図、(b)は、予め定められた値未満の重みを有するガウスモデルで構成されたガウス混合モデルを示す図、である。
【図3】本発明に係るエッジ検出装置で用いられるガウス混合モデルの一例を示す概略図であり、(a)は、第1算出値が第2算出値よりも大きい場合のガウス混合モデルを示す図、(b)は、第1算出値が第2算出値よりも小さい場合のガウス混合モデルを示す図、である。
【図4】本発明に係るエッジ検出装置の全体動作を示すフローチャートである。
【図5】本発明に係るエッジ検出装置の実施例を示す概略図であり、(a)は、従来のエッジ検出装置をモデルベースカメラトラッキングに適用してエッジ検出を行った場合の図、(b)は、本発明に係るエッジ検出装置をモデルベースカメラトラッキングに適用してエッジ検出を行った場合の図、である。
【図6】本発明に係るエッジ検出装置の実施例を示す概略図であり、(a)は、図5(a)の番号1−3の拡大図、(b)は、図5(b)の番号1−3の拡大図、である。
【発明を実施するための形態】
【0023】
本発明の実施形態に係るエッジ検出装置について、図面を参照しながら説明する。なお、以下の説明において、同一の構成については同一の名称及び符号を付し、詳細説明を省略する。
【0024】
エッジ検出装置1は、入力された映像からエッジを構成するエッジ点を検出するものである。エッジ検出装置1は、例えばモデルベースカメラトラッキングのエッジ検出の際に用いられる。エッジ検出装置1は、ここでは図1に示すように、映像入力手段10と、エッジ検出手段20と、検出結果出力手段30と、エッジ追跡手段40と、モデル生成・更新手段50と、閾値算出手段60と、を備えている。以下、エッジ検出装置1の各要素について、詳細に説明する。
【0025】
映像入力手段10は、図1に示すように、外部から映像が入力されるものである。映像入力手段10は、例えば映像インターフェイスであり、入力された映像を、当該映像を構成するフレーム画像ごとにエッジ検出手段20に出力する。
【0026】
エッジ検出手段20は、映像を構成するフレーム画像ごとにエッジ点を検出(抽出)するものである。ここで、エッジ検出手段20の基本的な構成は、前記したCannyオペレータと同様である。すなわち、エッジ検出手段20は、入力されたフレーム画像に対してガウシアンフィルタを用いてノイズを除去して画像を平滑化する。次に、エッジ検出手段20は、平滑後の画像に対してソーベルフィルタによって微分処理を行い、各画素のエッジ勾配強度とエッジ方向を算出する。次に、エッジ検出手段20は、エッジ勾配強度が極大となる画素を特定し、その画素をエッジ点の候補とする。そして、エッジ検出手段20は、閾値処理によってエッジ点の候補を絞り込み、エッジ点を検出する。
【0027】
エッジ検出手段20は、前記した閾値処理において、第1閾値hthと、第1閾値hthよりも低い第2閾値lthと、の2つの閾値を用いてエッジ点を検出する。この第1閾値hthは、フレーム画像中における濃いエッジ点、すなわちエッジ勾配強度の高いエッジ点を検出するための閾値である。また、第2閾値lthは、フレーム画像中における薄いエッジ点、すなわちエッジ勾配強度の低いエッジ点を検出するための閾値である。
【0028】
エッジ検出手段20は、まず第1閾値hthを超えるエッジ勾配強度を有する画素をエッジ点として検出する。そして、エッジ検出手段20は、第1閾値hth以下かつ第2閾値lth以上のエッジ勾配強度を有する画素であって、第1閾値hthによってエッジ点として検出された画素に隣接する(接続する)画素をエッジ点として検出する。なお、エッジ検出手段20において用いられる第1閾値hthおよび第2閾値lthの詳細については後記する。
【0029】
ここで、エッジ検出手段20は、前記した閾値処理において、後記する閾値算出手段60によって算出される第1閾値hthおよび第2閾値lthか、予め定められた固定の第1閾値hthおよび第2閾値lth(以下、初期閾値という)か、のいずれかを用いてエッジ点を検出する。例えば、エッジ検出手段20は、後記する閾値算出手段60において第1閾値hthおよび第2閾値lthが算出された場合は、当該算出された閾値を用いてエッジ検出処理を行う。
【0030】
一方、エッジ検出手段20が初期閾値を用いてエッジ検出処理を行うのは、例えば後記する閾値算出手段60によって第1閾値hthおよび第2閾値lthが算出されなかった場合である。そして、このように閾値算出手段60によって第1閾値hthおよび第2閾値lthが算出されない場合としては、例えば、映像入力手段10から入力されたフレーム画像が映像の1枚目(最初)のフレームでありガウス混合モデルがまだ生成されていない場合、2枚目以降のフレーム画像が入力されたものの、前回のエッジ検出処理でエッジ点を検出することができずガウス混合モデルが破棄された場合、2枚目以降のフレーム画像が入力されたものの、エッジ追跡手段40において追跡が成功したエッジ点が存在せずガウス混合モデルが破棄された場合、等が挙げられる。このように、エッジ検出装置1は、後記する閾値算出手段60によって閾値が算出されない場合であっても、予め定められた固定の閾値(初期閾値)を用いてフレーム画像からエッジ点を検出することができる。従って、エッジ検出装置1は、前記したように、エッジ検出で用いられる閾値を算出できない状況になった場合であっても、映像を構成するフレーム画像から順次エッジ点を検出することができる。なお、ガウス混合モデルの生成や破棄の詳細については後記する。
【0031】
ここで、エッジ検出手段20は、後記する閾値算出手段60によって、第1閾値hthおよび第2閾値lthに加えて第3閾値gthが算出された場合は、当該第3閾値gthをエッジ勾配強度の上限値として用いて閾値処理を行うことが好ましい。この第3閾値gthは、前記した第1閾値hthによって、例えば影等の実際にはエッジ点ではない部分がエッジ点として検出されてしまうことを抑制するための閾値である。
【0032】
この場合、エッジ検出手段20は、まず第3閾値gth以下かつ第1閾値hthを超えるエッジ勾配強度を有する画素をエッジ点として検出する。そして、エッジ検出手段20は、第1閾値hth以下かつ第2閾値lth以上のエッジ勾配強度を有する画素であって、第1閾値hthによってエッジ点として検出した画素に隣接する(接続する)画素をエッジ点として検出する。このように、エッジ検出装置1は、第3閾値をエッジ検出の際の上限値として用いることで、より限定された条件の下でエッジ検出を行うことができるため、エッジ検出の精度をより向上させることができる。なお、エッジ検出手段20において用いられる第3閾値gthの詳細については後記する。
【0033】
エッジ検出手段20には、図1に示すように、映像入力手段10から映像を構成するフレーム画像が順次入力される。そして、エッジ検出手段20は、前記した手法によってフレーム画像からエッジ点を検出し、図1に示すように、その検出結果を検出結果出力手段30と、エッジ追跡手段40と、モデル生成・更新手段50と、に出力する。
【0034】
検出結果出力手段30は、エッジ検出手段20によるエッジ検出の結果を出力するものである。エッジ検出手段20は、図1に示すように、エッジ検出手段20から入力された検出結果を、例えば図示しない外部のパーソナルコンピュータや記憶手段等に出力する。
【0035】
エッジ追跡手段40は、現在のフレーム画像(以下、現フレーム画像という)のエッジ点から、これに対応する前回のフレーム画像(以下、前フレーム画像という)のエッジ点を追跡するものである。エッジ追跡手段40は、具体的には現フレーム画像のエッジ点と前フレーム画像のエッジ点とを比較し、現フレーム画像のエッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡する。また、エッジ追跡手段40は、例えば現フレーム画像のエッジ点を基準として、当該エッジ点によって構成されるエッジの法線方向の所定範囲(所定長さ)に探索を行うことで、前フレーム画像のエッジ点を追跡する。なお、エッジ追跡手段40によって、エッジの法線方向に探索する範囲は特に限定されないが、例えば30ピクセルとすることが好ましい。そして、エッジ追跡手段40は、前フレーム画像のエッジ点と類似する現フレームのエッジ点、すなわち追跡に成功した現フレーム画像のエッジ点をエッジ追跡結果として出力する
【0036】
エッジ追跡手段40は、映像入力手段10から入力されたフレーム画像が2枚目以降のフレームであって、前回のエッジ検出処理でエッジ点が検出されている場合は、エッジ追跡を行う。一方、エッジ追跡手段40は、映像入力手段10から入力されたフレーム画像が映像の1枚目(最初)のフレームである場合や、映像入力手段10から入力されたフレーム画像が2枚目以降のフレームであって、前回のエッジ検出処理でエッジ点が検出されていない場合は、追跡対象となるエッジ点(以下、追跡対象エッジという)が存在しないため、エッジ追跡を行わない。
【0037】
ここで、エッジ追跡手段40は、現フレーム画像から検出された全てのエッジ点について、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡してもよいが、例えば現フレーム画像の特定のエッジ点からのみ追跡を行っても構わない。この場合、エッジ追跡手段40には、例えば図1の破線矢印で示すように、現フレーム画像から検出されたエッジ点のうちの特定のエッジ点を示す追跡対象エッジが入力される。この追跡対象エッジは、例えばユーザが現フレーム画像から検出されたエッジ点のうちの特定のエッジ点を直接指定する等により入力することができる。そして、エッジ追跡手段40は、当該追跡対象エッジが示すエッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡する。このように、エッジ検出装置1は、現フレーム画像から検出された全てのエッジ点を追跡するのではなく、追跡を行いたい特定のエッジ点のみを追跡することができ、全体の処理速度を向上させることができる。
【0038】
エッジ追跡手段40には、図1に示すように、エッジ検出手段20から現フレーム画像のエッジ点が入力される。そして、エッジ追跡手段40は、前記した手法によってエッジ点を追跡し、追跡が成功した現フレーム画像のエッジ点をモデル生成・更新手段50に出力する。
【0039】
モデル生成・更新手段50は、ガウス混合モデルを生成および更新するものである。ここで、ガウス混合モデルとは、入力された映像におけるエッジ点の特徴、すなわちエッジ勾配強度をモデル化したものである。ガウス混合モデルは、より詳細には、映像を構成するフレーム画像から検出されたエッジ点のエッジ勾配強度を分布化したものである。
【0040】
ここで、エッジ検出手段20によってフレーム画像から検出されたエッジ点は、映像においては照明等の撮影条件によってエッジ勾配強度が大きく変化する。従って、フレーム画像のエッジ強度を分布化したものを図示すると、例えば図2(a)に示すように、単純なガウスモデルではなく、複数のガウスモデル(ここではガウスモデルG,G,G)が混合したガウス混合モデルとなる。なお、図2(a)、(b)に示すガウス混合モデルは、映像を構成するフレーム画像(または後記するようにその所定ブロック)に対してソーベルフィルタをかけた結果と考えることもできる。
【0041】
なお、図2(a)、(b)において、横軸の|g|はエッジ点のエッジ勾配強度であり、縦軸のwは重みである。この重みwは、同じエッジ勾配強度を有するエッジ点の数が増える程大きくなるパラメータである。例えば図2(a)では、勾配強度|g|が100の地点における重みwが最も大きくなっているため、前フレーム画像以前のエッジ検出処理の結果として、勾配強度|g|が100のエッジ点が最も多く検出されていることを示している。
【0042】
モデル生成・更新手段50は、エッジ検出手段20によって検出されたエッジ点を分布化することでガウス混合モデルを生成する。モデル生成・更新手段50は、より具体的には、エッジ検出手段20によって現フレーム画像のエッジ点が検出されると、当該エッジ点のエッジ勾配強度ごとに分類およびカウントし、例えばヒストグラムのように同じエッジ勾配強度を有するエッジ点を積み上げたものをモデル化することで、ガウス混合モデルを生成する。
【0043】
そして、モデル生成・更新手段50は、エッジ検出手段20によって現フレーム画像の次のフレーム画像のエッジ点が検出され、かつ、エッジ追跡手段40によってエッジ点の追跡が行われた場合、当該追跡が成功した現フレーム画像のエッジ点を既に生成されているガウス混合モデルに追加することで、ガウス混合モデルを更新する。従って、ガウス混合モデルは、エッジ点が入力されるごとに更新され、図2(a)、(b)で図示した山の形がその都度変化することになる。なお、モデル生成・更新手段50は、その内部または外部に、ガウス混合モデルを記憶させる図示しない記憶手段を備えている。
【0044】
ここで、モデル生成・更新手段50は、エッジ検出手段20によって現フレーム画像からエッジ点を検出することができなかった場合や、エッジ追跡手段40によって追跡が成功したエッジ点が存在しなかった場合は、既に生成または更新したガウス混合モデルを破棄する。このように、エッジ検出装置1は、入力されたフレーム画像からエッジ点が検出でき、かつ、エッジ点を追跡できた場合のみモデル生成・更新手段50によってガウス混合モデルを生成または更新するため、前フレーム画像以前のエッジ点を正確に反映させたガウス混合モデルに基づいて閾値を算出することができる。
【0045】
また、モデル生成・更新手段50は、エッジ点が検出されたフレーム画像単位でガウス混合モデルを生成し、当該フレーム画像ごとにガウス混合モデルを順次更新してもよいが、例えばフレーム画像を所定幅×所定高さのブロックに分割し、分割されたブロックごとにガウス混合モデルを生成・更新しても構わない。分割するブロックの数は特に限定されないが、例えばフレーム画像を縦10個×横10個のブロック(例えば、画像サイズが640×480ピクセルの場合、1ブロックが64×48ピクセル)に分割して処理を行うことができる。エッジ検出装置1は、このようにフレーム画像のブロックごとにガウス混合モデルを生成・更新することで、エッジ検出の処理速度を向上させることができる。
【0046】
モデル生成・更新手段50には、図1に示すように、エッジ検出手段20から現フレーム画像のエッジ点が入力されるか、エッジ追跡手段40から追跡が成功したエッジ点が入力される。そして、モデル生成・更新手段50は、前記手法によってガウス混合モデルを生成または更新し、当該生成または更新したガウス混合モデルを閾値算出手段60に出力する。
【0047】
閾値算出手段60は、エッジ検出手段20における閾値処理で用いられる第1閾値hthおよび第2閾値lthを算出するものである。閾値算出手段60は、具体的には以下の手順により第1閾値hthおよび第2閾値lthを算出する。
【0048】
まず、閾値算出手段60は、モデル生成・更新手段50によって、例えば図2(a)に示すようなガウス混合モデルが生成または更新されている場合、当該ガウス混合モデルを構成するガウスモデルG,G,Gの中から、予め定められたwmin以上の重みwを有するガウスモデルG,Gを選択する。ここで、予め定められたwminは、0〜1の範囲で設定され、ここでは例えば0.7に設定される。
【0049】
次に、閾値算出手段60は、図2(a)に示すように、予め定められたwmin以上の重みwを有するガウスモデルが複数存在する場合は、より高い重みwを有するガウスモデルGを選択する。これらの処理は、ガウス混合モデルを構成するガウスモデルの中で、最も学習したエッジ点の数が多く、最も信頼性の高いガウスモデルを選択することに相当する。
【0050】
そして、閾値算出手段60は、選択したガウスモデルGの平均値と標準偏差とを用いて第1算出値および第2算出値を算出する。第1算出値は、下記式(1)に示すように、ガウスモデルの平均値μからガウスモデルの標準偏差σをk倍したものを減じることで算出することができる。また、第2算出値は、下記式(2)に示すように、ガウスモデルの平均値μを2で除することで算出することができる。
【0051】
第1算出値=μ-kσ ・・・式(1)
第2算出値=μ/2 ・・・式(2)
【0052】
そして、閾値算出手段60は、第1算出値が第2算出値を超える場合は、第1算出値を第1閾値hthとし、第2算出値を第2閾値lthとする。一方、閾値算出手段60は、第1算出値が第2算出値以下である場合は、第2算出値を第1閾値hthとし、第1算出値を第2閾値lthとする。これらの処理は、例えば以下の式(3)のように表わすことができる。
【0053】
If(μ-kσ)>μ/2
th=μ-kσ,lth=μ/2
else,
th=μ/2,lth=μ-kσ ・・・式(3)
【0054】
ここで、式(1)〜(3)におけるkは、例えば1.0〜2.5の範囲とすることが好ましく、1.5とすることがより好ましい。式(3)におけるkが1.0未満である場合、エッジ検出の条件が厳しすぎるためエッジ点を検出できない場合があり、式(3)におけるkが2.5を超える場合、エッジ検出の条件が緩すぎるためエッジ点ではない画素をエッジ点として検出してしまう可能性がある。
【0055】
一方、閾値算出手段60は、モデル生成・更新手段50によって、例えば図2(b)に示すようなガウス混合モデルが生成または更新されている場合、当該ガウス混合モデルを構成するガウスモデルG,G,Gの中に予め定められたwmin以上の重みwを有するガウスモデルが存在しないため、当該ガウスモデルを選択せず、第1閾値hthおよび第2閾値lthも算出しない。従って、この場合は、エッジ検出手段20は予め定められた初期閾値を用いてフレーム画像からエッジ点を検出することになる。
【0056】
ここで、閾値算出手段60は、第1閾値hthおよび第2閾値lthに加えて、第3閾値gthを算出することが好ましい。この第3閾値gthは、第1閾値hthよりも大きい値を有しており、エッジ検出の際の上限の閾値として機能するものである。このように、エッジ検出装置1は、第3閾値gthをエッジ検出の際の上限値として用いることで、第1閾値hthを超える高いエッジ勾配強度を有する部分(例えば影等)がエッジ点として検出されてしまうことを抑制することができ、エッジ検出の精度をより向上させることができる。
【0057】
閾値算出手段60は、前記した図3(a)に示すように、モデル生成・更新手段50によって生成または更新されたガウス混合モデルから、予め定められたwmin以上の重みwを有し、かつ最も高い大きい重みwを有するガウスモデルGを選択した後、下記式(4)に示すように、ガウスモデルGの平均値μにガウスモデルの標準偏差σをk倍したものを加えることで、第3閾値gthを算出する。なお、下記式(4)におけるkは、前記した式(1)、(3)と同様に、例えば1.0〜2.5の範囲とすることが好ましく、1.5とすることがより好ましい。
【0058】
th=μ+kσ ・・・式(4)
【0059】
閾値算出手段60によって算出される第1閾値hth、第2閾値lthおよび第3閾値gthは、例えば前記した第1算出値が第2算出値を超える場合であって、kを1.5に設定した場合、図3(a)のように図示することができる。一方、閾値算出手段60によって算出される第1閾値hth、第2閾値lthおよび第3閾値gthは、前記した第1算出値が第2算出値以下である場合であって、kを1.5に設定した場合、例えば図3(b)のように図示することができる。このように、第1算出値が第2算出値以下である場合とは、例えば図3(b)に示すように、ガウスモデルの山が横に広く、「μ-kσ」が「μ/2」以下となってしまう場合のことを意味している。
【0060】
閾値算出手段60には、図1に示すように、モデル生成・更新手段50からガウス混合モデルが入力される。そして、閾値算出手段60は、前記した手法によって第1閾値hth、第2閾値lthおよび第3閾値gthを算出し、これらをエッジ検出手段20に出力する。
【0061】
以上のような構成を備えるエッジ検出装置1は、Cannyオペレータを用いたエッジ検出処理において、従来は固定されていた第1閾値hthおよび第2閾値lthを、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて自動的に決定することができる。従って、エッジ検出装置1によれば、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルに基づいて決定された第1閾値hthおよび第2閾値lthを用いて、前フレーム以前のエッジ検出結果を加味してエッジ検出を行うため、仮に照明等の撮影条件が変化した場合であっても、映像を構成するフレーム画像のそれぞれからエッジ点を正確に検出することができる。
【0062】
また、エッジ検出装置1は、映像のエッジを利用した自動処理等に関するアルゴリズムに組み込むことで、精度が高く頑健なシステムを構築することができる。例えば、エッジ検出装置1は、生産ラインにおいて製品のエッジを検出するために利用される場合においても、照明環境等を厳密に拘束することなく、エッジを正確に検出することができる。
【0063】
以下、エッジ検出装置1の動作について、図4を参照しながら簡単に説明する。なお、以下では、説明の便宜上、エッジ検出装置1はフレーム画像から必ずエッジ点を検出できるということを前提として説明を行う。
【0064】
まず、エッジ検出装置1は、映像入力手段10に対して例えば外部の図示しない映像記憶手段から映像が入力された場合(ステップS1においてYes)、エッジ検出手段20によって、映像を構成する現フレーム画像からエッジ点を検出する(ステップS2)。その際、エッジ検出手段20は、予め定められた初期閾値を第1閾値hthおよび第2閾値lthとして用いてエッジ点を検出する。
【0065】
次に、エッジ検出装置1は、エッジ追跡手段40によって、現フレーム画像から検出されたエッジ点が追跡すべき追跡対象エッジがあるかどうかを判定する(ステップS3)。そして、エッジ検出装置1は、追跡対象エッジがない場合(ステップS3においてNo)、モデル生成・更新手段50によって、ガウス混合モデルを生成する(ステップS4)。なお、追跡対象エッジがない場合とは、前記したように、例えば現フレーム画像が映像の1枚目(最初)のフレームである場合等が挙げられる。
【0066】
次に、エッジ検出装置1は、閾値算出手段60によって、モデル生成・更新手段50によって生成されたガウス混合モデルを構成する個々のガウスモデルの中に、予め定められたwmin以上の重みwを有するガウスモデルが存在するか否かを判定する(ステップS5)。そして、エッジ検出装置1は、当該予め定められたwmin以上の重みwを有するガウスモデルが存在する場合(ステップS5においてYes)、閾値(第1閾値hth、第2閾値lthおよび第3閾値gth)を算出し(ステップS6)、ステップS1に戻る。
【0067】
一方、エッジ検出装置1は、ステップS3において、追跡対象エッジがある場合(ステップS3においてYes)、エッジ追跡手段40によって、現フレーム画像のエッジ点から前フレーム画像のエッジ点を追跡し、当該前フレーム画像のエッジ点とエッジ勾配強度およびエッジ方向が類似する現フレームのエッジ点を検出する(ステップS7)。次に、エッジ検出装置1は、モデル生成・更新手段50によって、追跡に成功したエッジ点があるか否かを判定する(ステップS8)。そして、エッジ検出装置1は、追跡に成功したエッジ点がある場合(ステップS8においてYes)、モデル生成・更新手段50によって、既に生成されたガウス混合モデルを更新し(ステップS9)、ステップS5に進む。
【0068】
一方、エッジ検出装置1は、追跡に成功したエッジ点がない合(ステップS8においてNo)、モデル生成・更新手段50によって、既に生成されたガウス混合モデルを破棄し(ステップS10)、ステップS1に戻る。
【0069】
以上のような動作を行うエッジ検出装置1は、前フレーム画像以前のエッジ検出結果を学習させたガウス混合モデルを生成または順次更新し、当該ガウス混合モデルに基づいて、前フレーム以前のエッジ検出結果を加味してエッジ検出を行うため、仮に照明等の撮影条件が変化した場合であっても、映像を構成するフレーム画像のそれぞれからエッジ点を正確に検出することができる。
【0070】
[エッジ検出プログラム]
ここで、前記したエッジ検出装置1は、一般的なコンピュータを、前記した各手段として機能させるプログラムにより動作させることで実現することができる。このプログラムは、通信回線を介して配布することも可能であるし、CD−ROM等の記録媒体に書き込んで配布することも可能である。
【実施例】
【0071】
以下、本発明の効果を確認する実施例について説明する。本実施例では、本発明に係るエッジ検出装置(以下、本手法という)と、従来技術に係るエッジ検出装置(以下、従来手法という)と、をモデルベースカメラトラッキングのエッジ検出にそれぞれ適用して比較を行った。ここで、モデルベースカメラトラッキングとは、実空間の3次元形状のエッジ点をカメラ撮影映像で追跡し、予め用意した3次元モデルと比較することで、カメラ姿勢を推定するものである。すなわち、モデルベーストラッキングでは、カメラ撮影映像におけるエッジ点を検出し、当該検出したエッジ点と予め用意した3次元モデルのエッジ点とをマッチングすることで、撮影時におけるカメラ姿勢を推定する。
【0072】
ここで、本実施例では、従来手法を再現するために、モデルベースカメラトラッキングのエッジ検出処理において、固定の第1閾値hth(=200)および第2閾値lth(=100)によってエッジ検出を行った。また、本手法を再現するために、モデルベースカメラトラッキングのエッジ検出処理において、予め生成しておいたガウス混合モデルから算出した第1閾値hthおよび第2閾値lthによってエッジ検出を行った。
【0073】
次に、従来手法および本手法で得られたエッジ点と、予め用意した3次元モデルの対応するエッジ点と、をマッチングすることでカメラの姿勢情報(3つの並進パラメータt〜tと、3つの回転パラメータr〜r)を算出した。そして、予めC言語ライブラリ「ARToolKit」を用いて推定しておいた基準となるカメラの姿勢情報(3つの並進パラメータt〜tと、3つの回転パラメータr〜r)と、前記算出したカメラの姿勢情報との差を求めることで、カメラの姿勢誤差を求めた。また、同時に、カメラの姿勢誤差の時間的変化(標準偏差)についても算出した。その結果を表1に示す。なお、表1における「エラー」は、前記したカメラの姿勢誤差を示しており、「ジッター」は、前記したカメラの姿勢誤差の時間的変化を示している。
【0074】
【表1】

【0075】
表1に示すように、従来手法では、並進パラメータと回転パラメータのエラーの平均は、それぞれ4.265mm、0.474度であり、並進パラメータと回転パラメータのジッターの平均は、それぞれ1.403mm/frame、0.183°/frameであった。一方、本手法では、並進パラメータと回転パラメータのエラーの平均は、それぞれ3.919mm、0.409度であり、並進パラメータと回転パラメータのジッターの平均は、それぞれ1.289mm/frame、0.166°/frameであった。
【0076】
このように、モデルベースカメラトラッキングにおいて、本手法を用いてエッジ検出を行うと、カメラ撮影映像からエッジ点を正確に検出することができるため、従来手法よりも、エラーとジッターが低下することがわかる。また、従来手法では、カメラ撮影映像から検出したエッジ点と、予め用意した3次元モデルのエッジ点と、をマッチングする際に、平均で1.8998個の対応する(類似する)エッジ点の候補があったが、本手法では、平均で1.793個であった。従って、本手法を用いてエッジ検出を行うと、従来手法よりも誤ったエッジ点を追跡する可能性が減少することがわかる。
【0077】
次に、本手法および従来手法によってエッジ検出を行った実際の画像を図5および図6に示す。ここで、図5(a)における右上の図は、本手法および従来手法によってエッジ検出を行った元の画像を示している。また、図6(a)、(b)は、それぞれ図5(a)、(b)の番号1〜3を拡大したものを示している。また、図5(b)および図6(b)におけるエッジに沿って描画された空の円と塗りつぶしの円は、それぞれ、予め用意した3次元モデルのエッジ点と本手法によって検出したエッジ点とを示しており、当該2つの円を通る短い線分は、本手法によって検出したエッジ点の追跡範囲を示している。
【0078】
従来手法によるエッジ検出結果を参照すると、図6(a)における符号eおよび符号eに示すように、影の部分が誤ってエッジとして検出されていることがわかる。また、図6(a)の符号eに示すように、エッジではない部分が誤ってエッジとして検出されていることがわかる。
【0079】
一方、本手法によるエッジ検出結果を参照すると、図6(b)に示すように、影の部分やエッジではない部分はエッジとして検出されていないことがわかる。図6(a)、(b)における箱の縁の部分のエッジB,Bを比較すると、図6(a)ではエッジB周辺に他のエッジが多数検出されているのに対し、図6(b)ではエッジB周辺に他のエッジが検出されていない。従って、モデルベースカメラトラッキングにおいて、例えばこの箱の3次元モデルを予め用意してトラッキングを行うと、周辺に他の無駄なエッジが検出されている従来手法(図6(a)参照)と比較して、周辺に他の無駄なエッジが検出されていない本手法(図6(b)参照)のほうがトラッキングの精度により優れていることがわかる。
【0080】
以上、本発明に係るエッジ検出装置について、発明を実施するための形態により具体的に説明したが、本発明の趣旨はこれらの記載に限定されるものではなく、特許請求の範囲の記載に基づいて広く解釈されなければならない。また、これらの記載に基づいて種々変更、改変等したものも本発明の趣旨に含まれることはいうまでもない。
【符号の説明】
【0081】
1 エッジ検出装置
10 映像入力手段
20 エッジ検出手段
30 検出結果出力手段
40 エッジ追跡手段
50 モデル生成・更新手段
60 閾値算出手段

【特許請求の範囲】
【請求項1】
入力された映像からエッジを構成するエッジ点を検出するエッジ検出装置であって、
前記映像を構成するフレーム画像ごとに、第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、前記第1閾値以下かつ前記第1閾値より低い第2閾値以上のエッジ勾配強度を有する画素と、を前記エッジ点として検出するエッジ検出手段と、
現フレーム画像のエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡するエッジ追跡手段と、
前記エッジ検出手段によって検出されたエッジ点を分布化してガウス混合モデルを生成するとともに、前記エッジ追跡手段によって追跡が成功した前記現フレーム画像のエッジ点を前記ガウス混合モデルに追加することで前記ガウス混合モデルをフレーム画像ごとに順次更新するモデル生成・更新手段と、
前記モデル生成・更新手段によって生成および更新された前記ガウス混合モデルを構成する個々のガウスモデルから、予め定められた値以上の重みを有するとともに、最も大きい重みを有するガウスモデルを選択し、当該ガウスモデルの平均値から当該ガウスモデルの標準偏差を所定数倍したものを減じた値である第1算出値が、前記平均値を所定値で除した値である第2算出値を超える場合は、前記第1算出値を前記第1閾値とするとともに前記第2算出値を前記第2閾値とし、前記第1算出値が前記第2算出値以下である場合は、前記第2算出値を前記第1閾値とするとともに前記第1算出値を前記第2閾値とする閾値算出手段と、
を備えることを特徴とするエッジ検出装置。
【請求項2】
前記閾値算出手段は、前記平均値に前記標準偏差を所定数倍したものを加えることで、前記第1閾値よりも高い第3閾値を算出し、
前記エッジ検出手段は、前記映像を構成するフレーム画像ごとに、前記第3閾値以下かつ前記第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、前記第1閾値以下かつ前記第2閾値以上のエッジ勾配強度を有する画素と、を前記エッジ点として検出することを特徴とする請求項1に記載のエッジ検出装置。
【請求項3】
前記エッジ検出手段は、前記閾値算出手段によって前記第1閾値および前記第2閾値が算出された場合は、当該算出された前記第1閾値および前記第2閾値を用いて前記エッジ点を検出し、前記閾値算出手段によって前記第1閾値および前記第2閾値が算出されない場合は、予め定められた固定値を前記第1閾値および前記第2閾値として用いて前記エッジ点を検出することを特徴とする請求項1または請求項2に記載のエッジ検出装置。
【請求項4】
前記モデル生成・更新手段は、前記エッジ検出手段によって前記エッジ点が検出できなかった場合、または、前記エッジ追跡手段によって追跡が成功したエッジ点が存在しない場合、前記ガウス混合モデルを破棄し、
前記エッジ検出手段は、前記ガウス混合モデルが破棄された場合、予め定められた固定値を前記第1閾値および前記第2閾値として用いて前記エッジ点を検出することを特徴とする請求項1から請求項3のいずれか一項に記載のエッジ検出装置。
【請求項5】
前記エッジ追跡手段は、現フレーム画像のエッジ点における予め指定されたエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡することを特徴とする請求項1から請求項4のいずれか一項に記載のエッジ検出装置。
【請求項6】
入力された映像からエッジを構成するエッジ点を検出するために、コンピュータを、
前記映像を構成するフレーム画像ごとに、第1閾値を超えるエッジ勾配強度を有する画素と、当該画素に隣接する画素であって、前記第1閾値以下かつ前記第1閾値より低い第2閾値以上のエッジ勾配強度を有する画素と、を前記エッジ点として検出するエッジ検出手段、
現フレーム画像のエッジ点から、当該エッジ点とエッジ勾配強度およびエッジ方向が類似する前フレーム画像のエッジ点を追跡するエッジ追跡手段、
前記エッジ検出手段によって検出されたエッジ点を分布化してガウス混合モデルを生成するとともに、前記エッジ追跡手段によって追跡が成功した前記現フレーム画像のエッジ点を前記ガウス混合モデルに追加することで前記ガウス混合モデルをフレーム画像ごとに順次更新するモデル生成・更新手段、
前記モデル生成・更新手段によって生成および更新された前記ガウス混合モデルを構成する個々のガウスモデルから、予め定められた値以上の重みを有するとともに、最も大きい重みを有するガウスモデルを選択し、当該ガウスモデルの平均値から当該ガウスモデルの標準偏差を所定数倍したものを減じた値である第1算出値が、前記平均値を所定値で除した値である第2算出値を超える場合は、前記第1算出値を前記第1閾値とするとともに前記第2算出値を前記第2閾値とし、前記第1算出値が前記第2算出値以下である場合は、前記第2算出値を前記第1閾値とするとともに前記第1算出値を前記第2閾値とする閾値算出手段、
として機能させることを特徴とするエッジ検出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate