上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--年--月--日 | | | スポンサー広告 | Top↑ |
「Canny Edge Detection」
(キャニーエッジ検出器)

エッジ抽出で有名な手法で、
使いたいと思ったのだけれど、
何故かGIMPとかIrfanViewとか
フリーの画像処理ソフトにあまり入っていない。

OpenCVで関数を使えるらしいのだけれど、
OpenCV自体の使い方が良くわからなかったし、
なんだか探すのが面倒になったので
自分で書くことにしました。

Canny Edge Detectionのアルゴリズムは次の手順。
STEP1:ガウシアンフィルタで平滑化
STEP2:エッジ強度と勾配方向(4方向に量子化)を計算
STEP3:細線化処理(Non-maximum Suppression)
STEP4:ヒステリシス閾処理(Hysteresis Threshold)

それぞれについてちょっと説明。

STEP1:ガウシアンフィルタで平滑化
ぼかすことでノイズの影響を減らします。

1./(sqrt(2*PAI)*s)*exp(-(x*x+y*y)/(2*s*s))
でn×nのwindow、標準偏差sで中心を原点として
フィルタの係数を計算

計算が面倒なら
5x5, s=1.4
2/1594/1595/1594/1592/159
4/1599/15912/1599/1594/159
5/15912/15915/15912/1595/159
4/1599/15912/1599/1594/159
2/1594/1595/1594/1592/159
を使えばいいかもしれない。

STEP2:エッジ強度と勾配方向(4方向に量子化)を計算
Sobelフィルタでエッジ強度の計算
水平方向:fx
-101
-202
-101
垂直方向:fy
-1-2
-1
0
0
0
-1
2
1

強度:
sqrt(fx*fx+fy*fy)

勾配方向の量子化:
tan=fy/fx
0度方向:-0.4142<tan<=0.4142
45度方向:0.4142<tan<2.4142
90度方向: |tan|>=2.4142
135度方向:-2.4142<tan<=-0.4142

STEP3:エッジの細線化処理(Non-maximum Suppression)
ぼかして太くなったエッジを細くするための細線化処理。
エッジと鉛直方向の隣接画素2つと比較し
最大でなければ0とする(非最大値抑制)

位置(x,y)のエッジ強度をs(x,y)とすると
①0度方向
if s(x,y)>s(x-1,y)&&s(x,y)>s(x+1,y)
  s(x,y)=s(x,y);
else
  s(x,y)=0;
②45度方向
if s(x,y)>s(x-1,y+1)&&s(x,y)>s(x+1,y-1)
   s(x,y)=s(x,y);
else
   s(x,y)=0;
③90度方向
if s(x,y)>s(x,y-1)&&s(x,y)>s(x,y+1)
   s(x,y)=s(x,y);
else
   s(x,y)=0;
④135度方向
if s(x,y)>s(x-1,y-1)&&s(x,y)>s(x+1,y+1)
   s(x,y)=s(x,y);
else
   s(x,y)=0;

STEP4:ヒステリシス閾処理(Hysteresis Threshold)
しきい値1つでエッジかどうか判定するのは難しいので、
しきい値2つでグレーゾーンをつくり適応的に判定する。

High Threshold(HT)とLow Threshold(LH)
の二つしきい値を与えて以下の条件でエッジどうか判定
①HTより大きいエッジ強度の画素はエッジ
②LHより小さいエッジ強度の画素は非エッジ
③LH以上HT以下のエッジ強度の画素のうちエッジに結合してる画素はエッジ

という感じ。
間違いがあったらすみません。

で、実際に処理をした画像。
元画像
girl.jpg
STEP1(5x5, s=1.4)
cStep1_gaussian.jpg
STEP2:エッジ強度
cStep2_edge.jpg
STEP2:エッジ勾配(4色塗り分け)
cStep2_direction.jpg
STEP3
cStep3.jpg
STEP4(HT=50, LT=10)
cStep4.jpg

2009年09月20日 | Comment:1 | TrackBack:0 | | ツール | Top↑ |
Secret

TrackBackURL
→http://d8yd.blog105.fc2.com/tb.php/84-f615192d
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。