4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Edge Tangent Flowを使用してベクトル場の流れを整えてから、画像のエッジを検出する。

Last updated at Posted at 2019-04-22

tl;dr

画像にはノイズが多く含まれており、単純なエッジ検出で特徴を抽出しようとしても、特徴が抽出しきれない場合があります。
そこで、「特徴的なエッジを維持し、ノイズが含まれている弱いエッジは近くの強いエッジに影響されて方向を滑らかにする」ことで、より画像の特徴をしっかりと抽出することが可能になります。その手法がEdge Tangent Flow(ETF)です。

こちらの論文で提唱されています。
http://umsl.edu/mathcs/about/People/Faculty/HenryKang/coon.pdf

私はETFを何に使用したか。

綺麗な絵をロボットに描かせるためにETFを使用しました。産業用ロボットアームに筆を持たせて書きました。
綺麗な絵を描くには、筆の軌跡が重要です。つまり画像からストローク情報を生成する必要があります。画像の特徴をきちんと捉えたストローク情報を生成するために、ETFを使用しました。

作った作品はこちらです。(チームメンバーと作成しました。)
http://aroboto.strikingly.com/

ETFを使うと画像がどうなるか。

lady1のコピー.gif
上のgifは、ETFを何周か適用した時のベクトルの動きをgifにしたのです。画像をクリックしてよく見てみると、矢印が動いていると思います。
女性の右目のまつ毛あたりを見ると、最初別の方向を向いていた矢印が、周りのベクトルの向きに引っ張られて揃っていくのがわかると思います。

ETFのロジック

ETFのロジックは非常に簡単です。以下の式が全てです。
image.png

左辺は、注目画素のベクトル値です。
右辺について、下記1~4で簡単に説明します。

1.フィルター内かどうか判定。

image.png

2.注目画素のベクトルに与える影響度を算出。

image.png

3.ベクトルの積を算出。

image.png

4.ベクトルの向きを反転させるか判定。

image.png

これだけです。

コード

githubで公開しています。
https://github.com/naotokimura/EdgeTangentFlow

まとめ

ETFの概要と、仕組みを説明しました。
Deep Learningで画像処理やるのも楽しいですが、今回のようにゴリゴリの画像処理も楽しいものでした。
ETFが物体認識の精度に貢献するのか気になります。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?