skimage例子學習(七)filters模塊介紹之邊緣檢測的實現

呼呼呼呼呼~~小師弟喘著粗氣在旁邊休息。

(看來是假期出去玩的太嗨了,這才練一會就累了)

在旁邊休息的工夫,小師弟就在想,skimage雖然很符合python語言,但是它是用python寫的,處理速度還是有些慢的。畢竟老話說得好,天下武功,唯快不破。

那skimage到底有多慢呢?來自一隻幸福的蠍分享的圖片:

如果對速度有要求的話,還是要考慮opencv的,畢竟它是用c++實現的。

話雖如此,還是要把skimage這套劍法練習紮實點……

歇也歇夠了,小師弟繼續練習filters模塊及邊緣檢測劍法了。

對圖像進行濾波,可以用兩種效果:

  1. 平滑濾波,用來抑制雜訊;
  2. 微分運算元,用來邊緣檢測和特徵提取。

skimage庫中的filters模塊對圖像進行濾波操作,有一些比較常見的濾波方式:

這裡我們主要看下roberts,sobel,scharr,prewitt這四種運算元的邊緣檢測效果。

import numpy as npimport matplotlib.pyplot as pltfrom skimage.data import camerafrom skimage.filters import roberts, sobel, scharr, prewittimage = camera()edge_roberts = roberts(image)edge_sobel = sobel(image)edge_scharr = scharr(image)edge_prewitt = prewitt(image)fig,ax = plt.subplots(nrows =2,ncols=2, sharex=True, sharey=True, figsize=(8, 4))ax[0,0].imshow(edge_roberts, cmap=plt.cm.gray)ax[0,0].set_title(Roberts Edge Detection)ax[0,0].axis(off)ax[0,1].imshow(edge_sobel, cmap=plt.cm.gray)ax[0,1].set_title(Sobel Edge Detection)ax[0,1].axis(off)ax[1,0].imshow(edge_scharr, cmap=plt.cm.gray)ax[1,0].set_title(Scharr Edge Detection)ax[1,0].axis(off)ax[1,1].imshow(edge_prewitt, cmap=plt.cm.gray)ax[1,1].set_title(Prewitt Edge Detection)ax[1,1].axis(off)plt.tight_layout()plt.show()

結果如下:

推薦閱讀:

【CVPR2018正式公布】行人重識別論文
[計算機論文速遞] 2018-03-23
用深度學習給黑白照片著色
《Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering》論文筆記
【論文筆記】Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in

TAG:Python庫 | 圖像處理 | 計算機視覺 |