前のページでソーベルフィルタの理屈がある程度理解できたので,scikit-image のソーベルフィルタを使ってみよう.
まず,「表示関数の定義」ページを参照し,ライブラリのインポートと関数の定義を実行したあと,画像ファイルをグレースケールに変換して表示します.
ink_img = plt.imread('ink.png')
img = color.rgba2rgb(ink_img)
gray_img = color.rgb2gray(img)
show(gray_img)
オリジナル
scikit-image では filters.sobel
関数が提供されています.詳細やソースコードはここを参照してください.それでは,ソーベルフィルタを適用してその結果を表示します.
sobel_result = filters.sobel(gray_img)
show(sobel_result)
しきい値を 0.02 としてエッジの検出を行います.
show(sobel_result < 0.02)
0.02
以降,しきい値を徐々に大きくします.
show(sobel_result < 0.04)
0.04
0.06
0.08
0.10
0.12
0.14