[[太田研 公開用Wiki]] * 色情報と大津の閾値判別法を用いたエッジ検出 [#p9f64c6b] #contents * はじめに [#rca67db7] エッジ検出とは、物体の輪郭を検出する画像処理のことである。グレースケールの画像から輝度が急激に変化している部分をエッジ(輪郭)として検出する。この処理は、主に画像の解析や物体認識のために行われている。 このエッジ検出を行う際は、カラー画像であってもグレースケール画像に変換して処理を行う。しかし、画像によっては色を見ると明らかに違っていてもグレースケール化すると輝度がほぼ同じになってしまい、見分けがつかなくなることがある。下の図1がその一例である。駐車禁止の部分に注目すると、カラーでは見分けがつくがグレースケール化すると明るさがほぼ同じになり、エッジ検出も上手くいってない。 そこで、色の情報を用いてエッジ検出を行うことで、このようなグレースケール化すると見分けのつきにくくなる部分も検出しやすくなり、より精度のよいエッジ検出が実現できるのではないかと考え、この研究を開始した。 #ref(edge.jpg,center,30%) CENTER:図1:一般的なエッジ検出の流れ * 既存研究 [#e5b8f827] 本研究は、和歌山大学の岡田大輝氏、和田俊和氏の「動的色境界と道路標識追跡・認識への応用」という既存研究を参考にしている。本研究では特に動的色境界の部分を参考にさせていただいた。 ** 和田氏達の手法 [#d900b7d4] カラー画像は赤(R)、緑(G)、青(B)の三つの色で表されており、和田らの手法はこれを利用している。以下に全体の大まかな流れと、その処理の際の画像を記載する Step1 カラー画像をRGB成分でそれぞれ分解する Step2 分解した画像をそれぞれ2値化する Step3 三つの画像を統合する。 Step4 色の変化している部分をエッジとして判定する ''Step1 カラー画像をRGB成分でそれぞれ分解する'' ''Step2 分解した画像をそれぞれ2値化する'' ''Step3 三つの画像を統合する。'' ''Step4 色の変化している部分をエッジとして判定する。'' #ref(step1.jpg,center,30%) CENTER:図2:Step1 #ref(step2.jpg,center,30%) CENTER:図3:Step2 #ref(step3.jpg,center,30%) CENTER:図4:Step3 #ref(step4.jpg,center,30%) CENTER:図5:Step4 まず、画像をRGBそれぞれの成分で分解する。分解された画像は図2のようになる。 次にこの三つの画像をそれぞれ2値化する。 2値化とは、濃淡のある画像を白と黒の2色に完全に分ける画像処理のことである。こちらで2値化の基準となる値である閾値を指定し、それと各画素の輝度を比べて白か黒か決定する。本研究では、白はRGBそれぞれ対応した色に置き換えられる。R画像では赤、G画像では緑、B画像では青になる。それぞれの成分に2値化を行った結果が図3である。 今回は、閾値を決定する際に大津の閾値判別法というものを利用している。大津の閾値判別法とは、画像内の明るさのヒストグラムから最適な閾値を見つける方法である。これを用いることで、照明条件の変化にも対応することができる。 2値化した三つの画像を重ね合わせて再び1枚の画像にする。重ね合わさった画像は赤、緑、青、黄、シアン、マゼンタ、白、黒の計8色、3bitで表現される。このことから、Step1からStep3までの処理のことを3bit化と呼び、その結果画像である図4を3bit画像と呼ぶ。 そして、3bit画像から色が変化している部分をエッジとして抽出する。結果は図5のようになり、先のグレースケールでは検出できなかった駐車禁止の標識を検出することに成功している。 また、この処理の際に、色の変化の記述を取ることで物体認識の際に活用することができる。これに関しては今後の展開の項目で解説をする。 ** この手法の欠点 [#efc9cba8] この手法の欠点は、明暗が強い画像に弱いことである。明暗が強い画像で3bit化を行うと、RGBすべての成分が1と0に分かれやすくなってしまうため、以下の図6のように、3bit化の際に真っ白な部分と真っ黒な部分の二つにはっきり分かれてしまい、エッジ検出では明るい部分と暗い部分の輪郭以外検出できていない。この手法を用いるならば、この問題を解決する必要がある。 #ref(ketten.jpg,center,30%) CENTER:図6:この手法の欠点 * 提案手法 [#o6eabc14] 本章では、先述の既存研究での手法の問題を解決するために、自分が行った手法の紹介と、その結果の比較を行う。 ** 手法1 画像の平滑化 [#x67d45e3] まず、画像全体を平滑化する。平滑化、つまりはぼかすことによって、画像に入っているノイズや細かい色の変化を省略することができる。今回用いる手法では、写真のノイズの影響を受けたり、非常に細かな色の変化に敏感に対応してしまう。この処理を行うことで、それらの影響によるノイズを減らし、結果画像をきれいに見せることができる。 ** 手法2 分割して適用 [#oed46e11] 次に、画像を細かく分割し、小領域ごとで3bit化、エッジ検出を行った。今回は画像を50×50に分割して適用した。これにより、従来手法のように明暗が強い画像に適用しても明るい部分と暗い部分で二分されることなくエッジを検出できる。 しかし、これをそのまま適用すると図7のように3bit化の際に大量のノイズが入ってきてしまう。これは、大津の閾値判別法によってどんなに色の変化が小さくても的確な2値化の閾値を決定し、適用してしまうためである。 このノイズを除去するためには、何かしらの処理を加えて細かい色の変化を除外する必要がある。 #ref(teian1.jpg,center,30%) CENTER:図7:分割して適応した結果 ** 手法3 ノイズの除去 [#x35d3511] そこで、各領域ごとの色の成分の分散を利用してノイズを除去する方法を試みた。 3bit化を行う際に、その領域でのRGBそれぞれの輝度を用いて分散の計算をすることで、各色が領域内でどの程度変化しているのかを観測することができる。 さらに閾値を定め、各成分の分散と閾値を比較して小さかった色、つまりは領域内で変化がほとんどない色に関しては、その色の変化を無視した。このとき、色の分散は領域内が明るければ大きく、暗ければ小さくなる傾向があるため、閾値は領域内の明るさに応じて調整させている。 図8がノイズ除去の処理を加えた結果である。3bit化画像でのノイズがほとんど消え、エッジ画像も良好な結果になった。 #ref(teian2.jpg,center,30%) CENTER:図8:ノイズを除去した結果 * 従来手法との比較 [#g4d1674e] 従来手法と今回提案した手法を比べると以下の図9のようになる。明るい部分と暗い部分の境界以外ほぼ検出できなかった従来手法に対し、提案手法では手前の陰になっている標識や道のエッジも検出することができている。この提案手法によって、明暗が強い画像に弱い問題を解決することができた。 #ref(compare1.jpg,center,30%) CENTER:図9:従来手法と提案手法の比較結果 * 結果の比較 [#ga829d74] 今回作成したエッジ検出を従来のグレースケール画像を用いて行うエッジ検出と様々な画像で比較し、考察する。今回の比較対象にはCanny法と呼ばれるエッジ検出方法を選択した。 Canny法とは、現在最もよく使われる、非常に性能が良いエッジ検出である。 今回は、よく用いられる普通の感度で検出したものと、より検出できるよう高感度で検出したものの二つのパターンで比較した。 ** 比較結果1 [#wf3bcb79] #ref(compare2.jpg,center,40%) CENTER:図10:Canny法との比較1 まず、影で暗くなっている画像での比較である。 駐車禁止の標識の部分を注目してもらえればわかるとおり、提案手法では標識を綺麗に検出できているが、普通の感度のCannyでは検出することができず、高感度のCannyでは検出自体はできているものの、標識や道路などに大量にノイズが入ってきてしまい、わかりにくくなってしまっている。 序盤に述べたように、駐車禁止の標識はグレースケール化すると違いが分かりにくくなるが、この画像の画像では影になり暗くなってしまっている影響でさらに見分けがつきにくくなってしまっているため、かなり感度を上げなければ検出することができず、検出できてもノイズが入ってきてしまう結果になっている。 しかし、提案手法であれば色を見ているため、このような照明条件の場合においてもノイズを抑えつつ綺麗に検出することができている。 ** 比較結果2 [#t72b2be4] #ref(compare3.jpg,center,40%) CENTER:図11:Canny法との比較2 次に、強い逆光になっている場合での比較である。 これも標識を注目してもらうと、普通の感度のCannyでは標識を全く検出することができず、高感度のCannyでも速度制限の標識は検出できているものの駐車禁止の標識に関しては検出できていない。 しかし、提案手法であれば完全にはではないが、どちらも検出することに成功している。 さらに、画像下部の道路の部分にも注目してもらいたい。高感度のCannyはノイズも多く検出しているが、提案手法ではノイズを抑えることに成功している。 これは、提案手法で提示した小領域ごとで処理していることが影響している。小領域での3bit化に大津の閾値判別法を用いることでその領域に合った閾値で2値化を行い、また、領域ごとの明るさに応じて色の変化を無視することでノイズを抑えた結果、明るい部分、暗い部分でそれぞれで柔軟に感度を変化させてエッジ検出を行ったためである。よって、このような画像で使用すると、エッジを検出しつつエッジを抑えることに成功している。 以上のことから、このエッジ検出は逆光などの明暗が激しい画像に強いということが分かった。 * 今後の課題 [#h31269f9] ** エッジ検出に関する課題点 [#ibeccce9] 本研究で駐車禁止などの標識や逆光に強いエッジ検出を作成できたが、精度などにまだまだ問題がある。その問題で明らかになっている部分として、色の分散を利用したノイズ除去に課題がある。画像によっては、このノイズ除去の際に、エッジであるため本来は残しておかなければならないのだが、閾値との比較の結果ノイズと判断されて無視されてしまうことがある。 このような事態を回避するために、閾値の判別式の見直す必要がある。 ** 標識検出プログラムの作成 [#pc6dcd40] 今後の展開として、この手法を用いた標識検出プログラムを作成していきたい。 この手法、もとい既存研究の特徴にエッジ検出の際に大まかな色の変化を観測することができるというものがある。3bit化後にエッジ検出をする際、エッジと判定した場所で色の変化に関する記述を取る。だが、道路標識は特徴的な2,3色を用いて表現されているため、色の変化の種類をより絞ることが可能となる。よってこの手法は道路標識の検出に非常に適している。 わかりやすい一例をあげる。図12の原画像から止まれの標識の検出を試みることとする。この標識は、赤と白の2色で構成されている。画像を3bit化してエッジを検出した際に色の変化を記述しておき、その情報を用いて赤から白、白から赤に移り変わったパターン以外のエッジを排除すると、止まれの標識のエッジ以外ほぼ消えていることがわかる。この手法を使うことで、標識を検出しやすく、かつ誤検出をしにくくなる画像にすることが可能となる。この手法を利用した標識検出を提案手法にも当てはめて作成していきたい。 #ref(kadai.jpg,center,40%) CENTER:図12:不要なエッジを消去した結果 * まとめ [#j3236641] 本研究では、色の情報を用いたエッジ検出を和田氏達の方法を参考に試みた。彼らの手法では、従来のグレースケール画像でエッジ検出を行う方法ではうまく抽出できないことがある駐車禁止などの標識を効果的に検出することができたが、明暗がはっきりしている画像ではうまくエッジを取ってくることができなかった。これを改善するため、画像を細かく分割し、小領域ごとで彼らの手法を使用し、それによって起こるノイズを除去する手法を提案した。 その結果、明暗がはっきりしている画像にも対応することができるようになった。また、逆光などの明暗が激しい画像に強いエッジ検出が実現できた。これは、小領域ごとで大津の閾値判別法を用いて3bit化、つまりは各領域ごとで柔軟に感度を調節してエッジ検出を行った結果である。 今後は、和田氏達の手法のように色の変化の記述を用いた標識検出プログラムを作成していきたい。