程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python3-scipy-ndimage平滑

編輯:Python

在python3的scipy ndimage模塊提供了一個名為percentile_filter()的函數,它是中值濾波器的一個通用版本。

脈沖噪聲圖

from skimage.io import imread
import matplotlib.pylab as pylab
import numpy as np
pylab.rcParams['font.sans-serif'] = ['KaiTi']
pylab.rcParams['axes.unicode_minus'] = False
def plot_image(image, title=''):
    pylab.title(title, size=15)
    pylab.imshow(image)
    pylab.axis('off')
lena = imread(r'D:\image_processing\image4\f.jpg')
noise = np.random.random(lena.shape)
lena[noise > 0.9] = 255
lena[noise < 0.1] = 0
plot_image(lena, '噪聲圖')
pylab.show()

中值濾波器

from skimage.io import imread
import matplotlib.pylab as pylab
import numpy as np
from scipy import signal, misc, ndimage
pylab.rcParams['font.sans-serif'] = ['KaiTi']
pylab.rcParams['axes.unicode_minus'] = False
def plot_image(image, title=''):
    pylab.title(title, size=15)
    pylab.imshow(image)
    pylab.axis('off')
lena = imread(r'D:\image_processing\image4\f.jpg')
noise = np.random.random(lena.shape)
lena[noise > 0.9] = 255
lena[noise < 0.1] = 0
plot_image(lena, '噪聲圖')
pylab.show()
fig = pylab.figure(figsize=(20, 15))
i = 1
for p in range(25, 100, 25):
    for k in range(5, 25, 5):
        pylab.subplot(3, 4, i)
        filtered = ndimage.percentile_filter(lena, percentile=p, size=(k, k, 1))
        plot_image(filtered, str(p) + ' 核尺寸為, ' + str(k) + 'x' + str(k))
        i += 1
pylab.show()

運行上面的代碼後,我們可以看到,在所有百分位濾波器中,核尺寸較小的中值濾波器(對應於第50百分位)在去除脈沖噪聲方面的效果最好,而同時丟失的圖像細節也極少。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved