[[太田研 公開用Wiki]]

*エッジ画像を用いた照明変化に堅牢なテンプレートマッチング [#t06b08e5]

#contents
*はじめに [#w34369dd]
**研究背景 [#t41d53a6]
ロボットの種類の一つに自律走行ロボットというものがある.自律走行ロボットが正しく走行するためには,ロボットが自分の位置を正しく認識する必要がある.~
ロボットが走行する場所は屋外を想定し,自己位置の特定にテンプレートマッチングを用いることとする.

**問題点 [#r8ab4145]
屋外環境下でテンプレートマッチングを行う場合,1つの大きな問題がある.それは屋外環境下における対象物の検出は,非常に困難なものになるということだ.~
なぜなら,屋外では画像の照明条件が大きく変化するためである.天候や時間によって日差しの向きが変わることはもちろん,同じ時間でも雲の動きによって影ができる等,画像の明るさは多様に変化してしまう.~
次の画像はとある場所の固定カメラから,別の日に撮影した東京スカイツリーの画像である.
#ref(tree.jpg,center,593x276)
CENTER:図1 固定カメラから撮影した東京スカイツリーの画像

**研究目的 [#d205c9a5]
自動走行ロボットが正しく走行するためには,上記のような照明条件の変化した画像に対しても,正しく対象物を検出する必要がある.~
そのために本研究ではテンプレートマッチングにエッジ画像を使うことを考える.~
基本的にテンプレートマッチングにはグレー画像を用いるが,エッジ画像を用いることで照明変化に堅牢なマッチングができると考えられる.~
グレー画像,エッジ画像,2値エッジ画像の3種類の画像を用いて,風景画像に対してテンプレートマッチングを行い,エッジ画像および2値エッジ画像が,グレー画像に比べ,どの程度照明変化に対応することができるかを比較,検証する.

*照合アルゴリズム [#ef3664b1]
**テンプレートマッチング [#f8434fa7]
テンプレートマッチングとは,探索の対象となる画像の中から,テンプレートと呼ばれる特定の画像を探し出す方法である.~
下の画像の赤枠のように目の部分を探し出すことができる.
#ref(lenamewiki.jpg,center,350x270)

テンプレートマッチングでは,画像とテンプレートがどの程度にているかを示す値として,類似度という値を計算している.テンプレートの濃度分布を記憶し,対象となる画像と画素単位で類似度を計算する.
***類似度の計算方法 [#uf92b2e2]
類似度の方法法にはいくつか種類がある.実験で使用する3つの方法を以下で紹介する.~
-''SSD(Sum of Squared Difference)''~
SSDは入力画像とテンプレート画像の画素値の差の二乗を足し合わせたものを類似度とするものである.値が小さいほど似ていると判断する.
-''NCC(Normalized Cross-Correlation)''~
NCCは画像の正規化相互相関を類似度とするものである。値の最大値が1で,1に近いほど画像が似ていると判断する
-''ZNCC(Zero-mean Normalized Cross-Correlation)''~
ZNCCは入力画像とテンプレート画像からそれぞれの画素値の平均を引いてから、正規化相互相関を類似度とするものである.~

**エッジ画像 [#hf87b4a5]
エッジ画像とはエッジ検出処理を施した画像のことである.エッジ検出をすることで,画像の明るさが急激に変化している場所を検出することができる.~
また,2値エッジ画像とはエッジ画像にさらに2値化処理を施したものである.2値化とは,画像の輝度値で閾値以上のものを255に,閾値以下のものを0にしたものである.閾値の決定には大津のアルゴリズムを使用した.
エッジ画像と2値エッジ画像の例を以下に示す.
#ref(lena3.jpg,center)


*実験方法 [#p864a9c3]
**実験1 マッチしたものを数える実験 [#o00955f3]
定点カメラを用いて同じ場所から撮影した画像を100枚用意する.この画像は異なる日付,時間に撮影したもので明るさの変化大きいものである.~
その100枚の画像の中から1枚の画像を選び,その画像から窓枠やアンテナ,木などの5種類のテンプレートを作成する.~
100枚の画像および作成したテンプレートをグレー画像,エッジ画像,2値エッジ画像の3種類の画像にする処理を施した後,グレー画像ならばグレーのテンプレート,エッジ画像ならエッジのテンプレートのように,それぞれ対応する画像とテンプレートでテンプレートマッチングを行う.~
そのときの類似度の計算方法にはSSD,NCC,ZNCCの3種類を使う.それぞれ正しくマッチングした数を数え,比較する.実験に使用した画像の例を以下に示す.
#ref(gazo4shu.jpg,center)

***作成したテンプレート [#w7ea833c]
撮影した画像から以下の画像の赤枠のように5つのテンプレートを作成した.
#ref(kak.jpg,center,480x360)
#ref(temps.png,center)
-''テンプレート1''~
テンプレート1は窓枠である.この窓枠は時間帯により,窓が光ることがある.
-''テンプレート2''~
テンプレート2はアンテナである.背景に雲が写りこむことがある.
-''テンプレート3''~
テンプレート3も窓枠である.こと窓枠はテンプレート1と違い光ることはないが,日差しの関係で影ができ足りできなかったりする.
-''テンプレート4''~
テンプレート4は木である.撮影を行ったのが季節の移り目であったことから,葉が落ちるなどの変化が見られる.
-''テンプレート5''~
テンプレート5は草むらである.テンプレート4と同様,若干の変化がある.
**実験2 類似度の比較を行う実験 [#l1481b37]
実験1で正しくマッチングした時の画像の類似度の平均を計算する.~
100枚の固定カメラから撮影した画像とはまったく関係のない風景画像50枚を用意し,その50枚の画像に対して実験1で作成したテンプレートを使い,実験1と同様にテンプレートマッチングを行う.~
その時,最大マッチングとされた点の類似度の平均を計算する.2つの類似度の平均値の差を計算し,比較する.~
実験1では対象物(テンプレート)が写っている画像のみを対象に実験を行った.しかし,自律走行ロボットが実際に屋外を走行し,テンプレートマッチングを行う際,対象物が写ってない場合も当然考えられる.そのような場合,ロボットは対象物は写っていないと判断しなければならない.そのため計算した類似度に対し,対象物かどうかを判断するための閾値を決める必要がある.テンプレートマッチングでは,非対称画像とテンプレートが最も似ている場所を求めることができるため,対象物が写っていない場合でも,最も似ている点を取得できる.その値は対象物が写っていて,正しくマッチングされたものよりも低くなるはずである.対象物がある画像で正しくマッチングしたときの類似度と,対象物が写っていないときの最大マッチングとされた場所の類似度の差が,大きければ大きいほど閾値の決定が容易になり,誤検出も少なくできると考えられる.そのため,2つの差が大きいものを良いマッチング方法とする.

*実験結果と考察 [#vc5aaf2b]
**実験1 [#qfff8dd2]
***各テンプレートごとの考察 [#y90586d8]
-''テンプレート1''
CENTER:表1 テンプレート1の結果
|CENTER: |CENTER:グレー画像|CENTER:エッジ画像|CENTER:2値エッジ画像|
|CENTER:SSD|CENTER:35|CENTER:99|CENTER:97|
|CENTER:NCC|CENTER:58|CENTER:94|CENTER:86|
|CENTER:ZNCC|CENTER:86|CENTER:96|CENTER:89|

テンプレート1ではエッジ画像でSSDを使った場合の正解数が99と最も多くなった.エッジ画像で他の計算方法を使った場合も成功率が9割以上である.グレー画像の場合,ZNCCを以外の計算方法だと成功率が低い.ZNCCでは正解数86と悪くはない結果となったが,窓枠が光っているときは失敗することが多かった.エッジ画像でZNCCを用いた時の失敗も窓枠が光っている画像であったが,グレー画像で失敗するときは窓枠とは全く関係のない場所を最大マッチングとしていたのに対し,エッジ画像では他の窓枠を最大マッチングとしていた.窓枠のような他に似た形の物が画像内になければ,正しくマッチングできていたのではないかと考えられる.

-''テンプレート2''
CENTER:表2 テンプレート2の結果
|CENTER: |CENTER:グレー画像|CENTER:エッジ画像|CENTER:2値エッジ画像|
|CENTER:SSD|CENTER:33|CENTER:100|CENTER:89|
|CENTER:NCC|CENTER:44|CENTER:100|CENTER:100|
|CENTER:ZNCC|CENTER:72|CENTER:100|CENTER:100|

テンプレート2ではエッジ画像を用いた時,どの類似度の計算方法を使用しても成功率が100%だった.画像では失敗が多くZNCCを使った場合でも7割程度の成功率であった.雲程度の背景変化ならば,エッジ画像を用いることにより,少しの背景変化には対応することができると考えられる.背景に人や車など雲よりも形のはっきりした物が写る場合の検証は今回の実験ではできていなく,どこまでの背景変化に強いかは定かではないが,雲の動きと明るさに対応できることから,天候の変化にはある程度対応できるものと考えられる.

また,2値エッジ画像を用いた場合も,どの計算方法でも非常に良い成功率だった.2値エッジ画像の性質から,エッジ画像よりも背景変化に強いと推測することもできるが今回の実験では検証できていない.

-''テンプレート3''
CENTER:表3 テンプレート3の結果
|CENTER: |CENTER:グレー画像|CENTER:エッジ画像|CENTER:2値エッジ画像|
|CENTER:SSD|CENTER:10|CENTER:97|CENTER:97|
|CENTER:NCC|CENTER:51|CENTER:100|CENTER:99|
|CENTER:ZNCC|CENTER:100|CENTER:99|CENTER:99|

グレー画像でZNCCを使用したときと,エッジ画像でNCCを使用したときの成功率が100%だった.太陽の動きによる日差し程度ならZNCCで対応可能ということが考えられる.グレー画像でZNCC以外の方法では悪い結果となっている.エッジ画像と2値エッジ画像はどの方法でも安定して良い結果である.

-''テンプレート4''
CENTER:表4 テンプレート4の結果
|CENTER: |CENTER:グレー画像|CENTER:エッジ画像|CENTER:2値エッジ画像|
|CENTER:SSD|CENTER:39|CENTER:79|CENTER:44|
|CENTER:NCC|CENTER:34|CENTER:73|CENTER:68|
|CENTER:ZNCC|CENTER:94|CENTER:88|CENTER:84|

グレー画像でZNCCを用いた時に正解数94と良い結果.エッジ画像のZNCCも悪い結果ではない.固定カメラで撮影した画像100枚はすべてを同じ日に撮影したものではなく,別の日に撮影した画像に対してエッジ画像を使用したときに失敗が多かった.撮影した時期が季節の移り変わりであったことから,葉が落ちている等の変化が関係している可能性がある.また,同じ自然物でもテンプレート5と比べ成功率が高いのは,木の幹の部分は形が変わらないためだと考えられる.

-''テンプレート5''
CENTER:表5 テンプレート5の結果
|CENTER: |CENTER:グレー画像|CENTER:エッジ画像|CENTER:2値エッジ画像|
|CENTER:SSD|CENTER:10|CENTER:18|CENTER:18|
|CENTER:NCC|CENTER:27|CENTER:45|CENTER:8|
|CENTER:ZNCC|CENTER:68|CENTER:65|CENTER:19|

どの方法を使ってもよい結果は得られなかった.どの方法でもテンプレートの場所と少しずれた草むらを最大マッチングとしてしまった失敗が多く,草むらでは差が出にくいと考えられる.

***実験1全体の考察 [#zb758edb]
テンプレート1,2,3と4,5を比べると分かるように,テンプレートに自然物を用いるより人工物を用いたほうが良い結果となっている.自然物では照明条件の変化だけでなく,季節の移り変わりによる形状の変化,風の影響などが大きくなってしまうためだと考えられる.照明条件の変化に加え,テンプレートの形状も変化してしまうとマッチング精度は大きく低下する.形状変化の少ないものをテンプレートとして選ぶべきである.

人工物をテンプレートとして選んだ場合,グレー画像に比べエッジ画像を用いた時のほうが,基本的に成功率が高くなることがわかる.唯一グレー画像の成功率がグレー画像を上回ったテンプレート3の結果から,多少の照明変化ならば類似度の計算方法にZNCCを使用することで対応できる.

エッジ画像を使用したマッチングでは,テンプレート1の結果から,光るものや形が同じで色の違うもの,テンプレート3の結果から,どうしても背景が写りこんでしまう画像のマッチングに強いと考えられる.

**実験2 [#x1f9f8c6]
実験1の結果から,ここではアルゴリズムにZNCCを用いたものをのせる.~
-''グレー画像の場合''
CENTER:表6 グレー画像を使った場合
|CENTER:|CENTER:あり|CENTER:無し|CENTER:差|
|CENTER:テンプレート1|CENTER:0.879|CENTER:0.468|CENTER:0.411|
|CENTER:テンプレート2|CENTER:0.740|CENTER:0.585|CENTER:0.155|
|CENTER:テンプレート3|CENTER:0.777|CENTER:0.497|CENTER:0.280|
|CENTER:テンプレート4|CENTER:0.584|CENTER:0.354|CENTER:0.230|
|CENTER:テンプレート5|CENTER:0.553|CENTER:0.390|CENTER:0.163|

-''エッジ画像の場合''
CENTER:表7 エッジ画像を使った場合
|CENTER:|CENTER:あり|CENTER:無し|CENTER:差|
|CENTER:テンプレート1|CENTER:0.785|CENTER:0.388|CENTER:0.397|
|CENTER:テンプレート2|CENTER:0.713|CENTER:0.300|CENTER:0.413|
|CENTER:テンプレート3|CENTER:0.654|CENTER:0.335|CENTER:0.319|
|CENTER:テンプレート4|CENTER:0.408|CENTER:0.142|CENTER:0.266|
|CENTER:テンプレート5|CENTER:0.202|CENTER:0.105|CENTER:0.097|

-''2値エッジ画像の場合''
CENTER:表8 2値エッジ画像を使った場合
|CENTER:|CENTER:あり|CENTER:無し|CENTER:差|
|CENTER:テンプレート1|CENTER:0.665|CENTER:0.317|CENTER:0.349|
|CENTER:テンプレート2|CENTER:0.598|CENTER:0.252|CENTER:0.347|
|CENTER:テンプレート3|CENTER:0.502|CENTER:0.309|CENTER:0.193|
|CENTER:テンプレート4|CENTER:0.265|CENTER:0.111|CENTER:0.154|
|CENTER:テンプレート5|CENTER:0.226|CENTER:0.079|CENTER:0.147|

どのテンプレートを使った場合でも対象物あり,なしともにグレー,エッジ,2値エッジの順に類似度が高い.基本的に差が大きいのはエッジ画像である.特にテンプレート2の背景が写ってしまう画像では,グレー画像に比べ大きな差となっている.2値エッジ画像は今回の実験では強みを見つけられなかった.


*まとめ [#aeed90ba]
本論文では,照明変化に対応するためにエッジ画像を用いたテンプレートマッチングの検証を行った.マッチしたものを数える実験と類似度の比較をする実験の2つの実験を行い,エッジ画像を用いる,テンプレートに人工物を選ぶ,類似度の計算方法にZNCCを使うという3つことをすることで,照明変化に堅牢なテンプレートマッチングができるという結論に至った.

今回の実験に使用した固定カメラで撮影した画像は,1つの場所で撮影したものだけであり,枚数も100枚と少なかった.結果をより確かなものにするため,他の場所で撮影した画像での検証,より多くの枚数での検証が必要である.また,今回の実験では固定カメラの画像を使用したが,自律走行ロボットが実際に走行し,カメラで撮影するものは固定カメラのものではない.自律走行ロボットが撮影する連続的な画像に対しても検証する必要がある.連続的な画像では対象物の大きさの変化,ズレ,ゆがみ等,様々な変化が考えられる.そういった手法にどこまで対応できるのか,対応するためにはどのようにすれば良いのかが今後の課題となる.

*参考文献 [#g6286a8a]
[1]國光 智,淺間 一,川端 邦明,三島 健稔 2値エッジ画像のテンプレートによる屋外環境下にある対象物の検出, IEEJ Tranz. EIS,Vol.124, No.2, 2004.~
[1]國光 智,淺間 一,川端 邦明,三島 健稔 "2値エッジ画像のテンプレートによる屋外環境下にある対象物の検出", IEEJ Tranz. EIS,Vol.124, No.2, 2004.~
[2]"パターンマッチング(正規化相関など)",http://imagingsolution.blog107.fc2.com/blog-entry-186.html,(access jul 21,2014).~
[3]橋本研究室(秋月秀一,櫻本泰憲)(2013),"基本的なテンプレートマッチング",http://isl.sist.chukyo-u.ac.jp/Archives/tm.html,(access jul 21,2014).~
[4]田村 秀行 "コンピュータ画像処理", オーム社, 2002~
[5]WillowGarage,"OpenCV",http://opencv.org/,(access Apr 7,2014).

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS