欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數字圖像處理之圖像簡單濾波實現(xiàn)

 更新時間:2022年06月28日 16:58:34   作者:denny402  
這篇文章主要為大家介紹了python數字圖像處理之圖像簡單濾波實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

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

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

1、sobel算子

sobel算子可用來檢測邊緣

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

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
edges = filters.sobel(img)
plt.imshow(edges,plt.cm.gray)

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的值來調整效果

from skimage import data,filters,feature
import matplotlib.pyplot as plt
img = data.camera()
edges1 = feature.canny(img)   #sigma=1
edges2 = feature.canny(img,sigma=3)   #sigma=3
plt.figure('canny',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  
plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)
plt.show()

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

6、gabor濾波

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

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

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

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
filt_real, filt_imag = filters.gabor_filter(img,frequency=0.6)   
plt.figure('gabor',figsize=(8,8))
plt.subplot(121)
plt.title('filt_real')
plt.imshow(filt_real,plt.cm.gray)  
plt.subplot(122)
plt.title('filt-imag')
plt.imshow(filt_imag,plt.cm.gray)
plt.show()

以上為frequency=0.6的結果圖。

以上為frequency=0.1的結果圖

7、gaussian濾波

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

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

通過調節(jié)sigma的值來調整濾波效果

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.astronaut()
edges1 = filters.gaussian_filter(img,sigma=0.4)   #sigma=0.4
edges2 = filters.gaussian_filter(img,sigma=5)   #sigma=5
plt.figure('gaussian',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  
plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)
plt.show()

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

8、median

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

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

from skimage import data,filters
import matplotlib.pyplot as plt
from skimage.morphology import disk
img = data.camera()
edges1 = filters.median(img,disk(5))
edges2= filters.median(img,disk(9))
plt.figure('median',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  
plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)
plt.show()

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

9、水平、垂直邊緣檢測

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

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

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

from skimage import data,filters
import matplotlib.pyplot as plt
img = data.camera()
edges1 = filters.sobel_h(img)  
edges2 = filters.sobel_v(img) 
plt.figure('sobel_v_h',figsize=(8,8))
plt.subplot(121)
plt.imshow(edges1,plt.cm.gray)  
plt.subplot(122)
plt.imshow(edges2,plt.cm.gray)
plt.show()

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

10、交叉邊緣檢測

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

其中一個核:

0   1
-1   0

對應的函數:

roberts_neg_diag(image)

 例:

from skimage import data,filters
import matplotlib.pyplot as plt
img =data.camera()
dst =filters.roberts_neg_diag(img) 
plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

另外一個核:

1   0
0  -1

對應函數為:

roberts_pos_diag(image)

from skimage import data,filters
import matplotlib.pyplot as plt
img =data.camera()
dst =filters.roberts_pos_diag(img) 
plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

以上就是python數字圖像處理之圖像簡單濾波實現(xiàn)的詳細內容,更多關于python數字圖像處理簡單濾波的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Python中httptools模塊的使用

    詳解Python中httptools模塊的使用

    httptools?是一個?HTTP?解析器,它首先提供了一個?parse_url?函數,用來解析?URL。這篇文章就來和大家聊聊它的用法吧,感興趣的可以了解一下
    2023-03-03
  • Numpy的簡單用法小結

    Numpy的簡單用法小結

    這篇文章主要介紹了Numpy的簡單用法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • python mac下安裝虛擬環(huán)境的圖文教程

    python mac下安裝虛擬環(huán)境的圖文教程

    這篇文章主要介紹了python mac下安裝虛擬環(huán)境 的相關資料,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決

    Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決

    這篇文章主要介紹了Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python魔術方法專題

    Python魔術方法專題

    這篇文章主要介紹了Python魔術方法的的相關資料,文章講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • Python制作動態(tài)詞頻條形圖的全過程

    Python制作動態(tài)詞頻條形圖的全過程

    說起動態(tài)圖表,最火的莫過于動態(tài)條形圖了,下面這篇文章主要給大家介紹了關于Python制作動態(tài)詞頻條形圖的全過程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • Python快速生成隨機密碼超簡單實現(xiàn)

    Python快速生成隨機密碼超簡單實現(xiàn)

    這篇文章主要介紹了Python快速生成隨機密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python3刪除排序數組中重復項的方法分析

    Python3刪除排序數組中重復項的方法分析

    這篇文章主要介紹了Python3刪除排序數組中重復項的方法,結合實例形式分析了Python3刪除排序數組重復項的原理、相關遍歷及刪除操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python和Anaconda和Pycharm安裝教程圖文詳解

    Python和Anaconda和Pycharm安裝教程圖文詳解

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下
    2020-02-02
  • python中struct模塊之字節(jié)型數據的處理方法

    python中struct模塊之字節(jié)型數據的處理方法

    今天小編就為大家分享一篇python中struct模塊之字節(jié)型數據的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論