Pythonで画像を扱いたい(エッジ抽出)

画像から枠を取り出します。
いくつか存在しますが、今回はcanny,robertesフィルター,sobelフィルターを試してみます。

画像の用意

from skimage.data import chelsea
import matplotlib.pyplot as plt

img = chelsea()

エッジを抽出する

canny

from skimage import feature

e1 = feature.canny(g,sigma=2)
plt.imshow(e1,cmap=plt.cm.gray)

f:id:esu-ko:20200816223259p:plain

roberts,sobel

from skimage import filters

edge_roberts = filters.roberts(g)
edge_sobel = filters.sobel(g)

plt.imshow(edge_roberts,cmap=plt.cm.gray)
plt.imshow(edge_sobel,cmap=plt.cm.gray)

f:id:esu-ko:20200816223404p:plain f:id:esu-ko:20200816223416p:plain

エッジという点ではcannyが一番良さそうです。