本文提供許多的濾波方法,這些方法放在filters.rank子模塊內。
這些方法需要用戶自己設定濾波器的形狀和大小,因此需要導入morphology模塊來設定。
1、autolevel
這個詞在photoshop里面翻譯成自動色階,用局部直方圖來對圖片進行濾波分級。
該濾波器局部地拉伸灰度像素值的直方圖,以覆蓋整個像素值范圍。
格式:skimage.filters.rank.autolevel(image, selem)
selem表示結構化元素,用于設定濾波器。
from skimage import data,colorimport matplotlib.pyplot as pltfrom skimage.morphology import diskimport skimage.filters.rank as sfrimg =color.rgb2gray(data.lena())auto =sfr.autolevel(img, disk(5)) #半徑為5的圓形濾波器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(auto,plt.cm.gray)
2、bottomhat 與 tophat
bottomhat: 此濾波器先計算圖像的形態學閉運算,然后用原圖像減去運算的結果值,有點像黑帽操作。
bottomhat: 此濾波器先計算圖像的形態學開運算,然后用原圖像減去運算的結果值,有點像白帽操作。
格式:
skimage.filters.rank.bottomhat(image, selem)
skimage.filters.rank.tophat(image, selem)
selem表示結構化元素,用于設定濾波器。
下面是bottomhat濾波的例子:
from skimage import data,colorimport matplotlib.pyplot as pltfrom skimage.morphology import diskimport skimage.filters.rank as sfrimg =color.rgb2gray(data.lena())auto =sfr.bottomhat(img, disk(5)) #半徑為5的圓形濾波器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(auto,plt.cm.gray)
3、enhance_contrast
對比度增強。求出局部區域的最大值和最小值,然后看當前點像素值最接近最大值還是最小值,然后替換為最大值或最小值。
函數: enhance_contrast(image, selem)
selem表示結構化元素,用于設定濾波器。
from skimage import data,colorimport matplotlib.pyplot as pltfrom skimage.morphology import diskimport skimage.filters.rank as sfrimg =color.rgb2gray(data.lena())auto =sfr.enhance_contrast(img, disk(5)) #半徑為5的圓形濾波器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(auto,plt.cm.gray)
4、entropy
求局部熵,熵是使用基為2的對數運算出來的。該函數將局部區域的灰度值分布進行二進制編碼,返回編碼的最小值。
新聞熱點
疑難解答