skimage例子學習(七)filters模塊介紹之邊緣檢測的實現
呼呼呼呼呼~~小師弟喘著粗氣在旁邊休息。
(看來是假期出去玩的太嗨了,這才練一會就累了)
在旁邊休息的工夫,小師弟就在想,skimage雖然很符合python語言,但是它是用python寫的,處理速度還是有些慢的。畢竟老話說得好,天下武功,唯快不破。
那skimage到底有多慢呢?來自一隻幸福的蠍分享的圖片:
如果對速度有要求的話,還是要考慮opencv的,畢竟它是用c++實現的。
話雖如此,還是要把skimage這套劍法練習紮實點……
歇也歇夠了,小師弟繼續練習filters模塊及邊緣檢測劍法了。
對圖像進行濾波,可以用兩種效果:
- 平滑濾波,用來抑制雜訊;
- 微分運算元,用來邊緣檢測和特徵提取。
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