1. 程式人生 > >【python影象處理】影象的濾波(ImageFilter類詳解)

【python影象處理】影象的濾波(ImageFilter類詳解)

在影象處理中,經常需要對影象進行平滑、銳化、邊界增強等濾波處理。在使用PIL影象處理庫時,我們通過Image類中的成員函式filter()來呼叫濾波函式對影象進行濾波,而濾波函式則通過ImageFilter類來定義的。

下面先直接看一個樣例:

#-*- coding: UTF-8 -*-     
  
from PIL import Image
from PIL import ImageFilter

def image_filters_test():

    im = Image.open("lenna.jpg")

    #預定義的影象增強濾波器
    im_blur = im.filter(ImageFilter.BLUR)
    im_contour = im.filter(ImageFilter.CONTOUR)

    im_min = im.filter(ImageFilter.MinFilter(3))

    im.show()
    im_blur.show()
    im_contour.show()
    im_min.show()

    return


ImageFilter類中預定義瞭如下濾波方法:

• BLUR:模糊濾波

• CONTOUR:輪廓濾波

• DETAIL:細節濾波

• EDGE_ENHANCE:邊界增強濾波

• EDGE_ENHANCE_MORE邊界增強濾波(程度更深)

• EMBOSS:浮雕濾波

• FIND_EDGES:尋找邊界濾波

• SMOOTH:平滑濾波

• SMOOTH_MORE:平滑濾波(程度更深)

• SHARPEN:銳化濾波

• GaussianBlur(radius=2):高斯模糊

>radius指定平滑半徑。

• UnsharpMask(radius=2, percent=150, threshold=3)

:反銳化掩碼濾波

>radius指定模糊半徑;

>percent指定反銳化強度(百分比);

>threshold控制被銳化的最小亮度變化。

• Kernel(size, kernel, scale=None, offset=0):核濾波

當前版本只支援核大小為3x3和5x5的核大小,且影象格式為“L”和“RGB”的影象。

>size指定核大小(width, height);

>kernel指定核權值的序列;

>scale指定縮放因子;

>offset指定偏移量,如果使用,則將該值加到縮放後的結果上。

• RankFilter(size, rank):排序濾波


>size指定濾波核的大小

>rank指定選取排在第rank位的畫素,若大小為0,則為最小值濾波;若大小為size * size / 2則為中值濾波;若大小為size * size - 1則為最大值濾波。

• MedianFilter(size=3):中值濾波

>size指定核的大小

• MinFilter(size=3):最小值濾波器

>size指定核的大小

• MaxFilter(size=3):最大值濾波器

>size指定核的大小

• ModeFilter(size=3):波形濾波器

選取核內出現頻次最高的畫素值作為該點畫素值,僅出現一次或兩次的畫素將被忽略,若沒有畫素出現兩次以上,則保留原畫素值。

>size指定核的大小

上例的濾波處理結果如下


2017.05.08