まるもの雑記

なにか作ったりとかゲームとか。

2次元FFTとエッジ検出

どうもエッジを検出するには

フーリエ変換して周波数軸で低周波を削除したあとに

逆変換して隣のピクセルと正負が反転しているところが

エッジにみなせるように思えてきた。

理論を調べるのはつまらないのであとでやるとして

といあえず実験してみます。

 

元画像

いつもどおりこれ。

f:id:marumorix:20140209215942j:plain

 

周波数軸での操作

FFTしてこうなったものを

f:id:marumorix:20140209220053j:plain

 

以下のように四隅の値を0にします。

四隅は電気屋さんっぽく言うと直流成分

低周波数を削除してあります。

中心から四隅の距離を100としたとき95以上を削除しています。

f:id:marumorix:20140209220133j:plain

 

結果

逆変換したあと正負がわかるように各画素で+128します

f:id:marumorix:20140209220427j:plain

そして隣の画素と正負が反転しているところは

その差を値とした画像にすると

f:id:marumorix:20140209220618j:plain

こうなります。

かなり精度よく出来ている感じ。

グレーでこれならRGB別々にやったらかなりきれいに出来そう。

 

周波数カットの仕方

いろいろ試したり他の方の文献を読むと

周波数軸の操作は中心からの距離で丸く操作していることが多いのですが

同じ事を四角くやってみます

f:id:marumorix:20140209221007j:plain

f:id:marumorix:20140209221020j:plain

同じ方法でエッジをとると

f:id:marumorix:20140209221040j:plain

ちょっとノイジー。

なんですかねこれは。

謎。

 

今後の課題にしましょう。