教你如何用python數字圖像處理做圖像濾波效果!


本文主要介紹python數字圖像處理,圖像簡單濾波,圖文並茂介紹skimage庫中通過filters模塊進行濾波操作,希望對您的學習有所幫助。

對圖像進行濾波,可以有兩種效果:一種是平滑濾波,用來抑制噪聲;另一種是微分算子,可以用來檢測邊緣和特征提取。

skimage庫中通過filters模塊進行濾波操作。

1、sobel算子

sobel算子可用來檢測邊緣

函數格式為:skimage.filters.sobel(image, mask=None)


2、roberts算子

roberts算子和sobel算子一樣,用於檢測邊緣

調用格式也是一樣的:

edges = filters.roberts(img)

3、scharr算子

功能同sobel,調用格式:

edges = filters.scharr(img)

4、prewitt算子

功能同sobel,調用格式:

edges = filters.prewitt(img)

5、canny算子

canny算子也是用於提取邊緣特征,但它不是放在filters模塊,而是放在feature模塊

函數格式:skimage.feature.canny(image,sigma=1.0)

可以修改sigma的值來調整效果


從結果可以看出,sigma越小,邊緣線條越細小。

6、gabor濾波

gabor濾波可用來進行邊緣檢測和紋理特征提取。

函數調用格式:skimage.filters.gabor_filter(image, frequency)

通過修改frequency值來調整濾波效果,返回一對邊緣結果,一個是用真實濾波核的濾波結果,一個是想象的濾波核的濾波結果。


以上為frequency=0.6的結果圖。

以上為frequency=0.1的結果圖

7、gaussian濾波

多維的濾波器,是一種平滑濾波,可以消除高斯噪聲。

調用函數為:skimage.filters.gaussian_filter(image, sigma)

通過調節sigma的值來調整濾波效果


可見sigma越大,過濾后的圖像越模糊

8.median

中值濾波,一種平滑濾波,可以消除噪聲。

需要用skimage.morphology模塊來設置濾波器的形狀。


從結果可以看出,濾波器越大,圖像越模糊。

9、水平、垂直邊緣檢測

上邊所舉的例子都是進行全部邊緣檢測,有些時候我們只需要檢測水平邊緣,或垂直邊緣,就可用下面的方法。

水平邊緣檢測:sobel_h, prewitt_h, scharr_h

垂直邊緣檢測: sobel_v, prewitt_v, scharr_v


上邊左圖為檢測出的水平邊緣,右圖為檢測出的垂直邊緣。

10、交叉邊緣檢測

可使用Roberts的十字交叉核來進行過濾,以達到檢測交叉邊緣的目的。這些交叉邊緣實際上是梯度在某個方向上的一個分量。

其中一個核:

0 1

-1 0

對應的函數:

roberts_neg_diag(image)

例:


另外一個核:

1 0

0 -1

對應函數為:

roberts_pos_diag(image)



此文轉載文,著作權歸作者所有,如有侵權聯系小編刪除!

原文地址:https://www.tuicool.com/articles/FRZZ3qb

 

需要源代碼的或者想了解更多的(點擊這里下載)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM