1. 程式人生 > >Python影象處理庫PIL的ImageFilter模組介紹

Python影象處理庫PIL的ImageFilter模組介紹

Python影象處理庫PILImageFilter模組介紹

ImageFilter模組提供了濾波器相關定義;這些濾波器主要用於Image類的filter()方法。

一、ImageFilter模組所支援的濾波器

當前的PIL版本中ImageFilter模組支援十種濾波器:

1、  BLUR

ImageFilter.BLUR為模糊濾波,處理之後的影象會整體變得模糊。

例子:

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im = im02.filter(ImageFilter.BLUR)

影象im02為原始影象,如下:

                             

影象im為模糊濾波之後的影象,明顯比原始影象模糊了一些,見下圖:

 

2、  CONTOUR

ImageFilter.CONTOUR為輪廓濾波,將影象中的輪廓資訊全部提取出來。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.CONTOUR)

影象im為輪廓影象,如下圖:

 

3、  DETAIL

ImageFilter.DETAIL為細節增強濾波,會使得影象中細節更加明顯。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.DETAIL)

影象im為細節增強後的影象,如下圖:

 

ImageFilter.EDGE_ENHANCE為邊緣增強濾波,突出、加強和改善影象中不同灰度區域之間的邊界和輪廓的影象增強方法。經處理使得邊界和邊緣在影象上表現為影象灰度的突變,

用以提高人眼識別能力。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.EDGE_ENHANCE)

影象im為邊緣增強後的影象,如下圖:

 

ImageFilter.EDGE_ENHANCE_MORE為深度邊緣增強濾波,會使得影象中邊緣部分更加明顯。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.EDGE_ENHANCE_MORE)

影象im為深度邊緣增強後的影象,如下圖:

 

6、  EMBOSS

ImageFilter.EMBOSS為浮雕濾波,會使影象呈現出浮雕效果。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.EMBOSS)

影象im為浮雕效果的影象,如下圖:

         

ImageFilter.FIND_EDGES為尋找邊緣資訊的濾波,會找出影象中的邊緣資訊。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.FIND_EDGES)

影象im為邊緣資訊的影象,如下圖:

 

8、  SMOOTH

ImageFilter.SMOOTH為平滑濾波,突出影象的寬大區域、低頻成分、主幹部分或抑制影象噪聲和干擾高頻成分,使影象亮度平緩漸變,減小突變梯度,改善影象質量

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.SMOOTH)

影象im為平滑濾波的影象,如下圖:

 

9、  SMOOTH_MORE

例子:

>>> from PIL importImageFilter

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im =im02.filter(ImageFilter.SMOOTH_MORE)

影象im為深度平滑濾波的影象,如下圖:

 

10、             SHARPEN

ImageFilter.SHARPEN為銳化濾波,補償影象的輪廓,增強影象的邊緣及灰度跳變的部分,使影象變得清晰

例子:

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im =im02.filter(ImageFilter.SHARPEN)

影象im為銳化濾波的影象,如下圖:

 

二、ImageFilter模組的函式

1、  Kernel

定義:Kernel(size,kernel, scale=None, offset=0)

含義:(New in 1.1.5)生成一個給定尺寸的卷積核。在當前的版本中,變數size必須為(33)或者(55)。變數kernel與變數size對應地必須為包含9個或者25個整數或者浮點數的序列。

如果設定了變數scale,那將卷積核作用於每個畫素值之後的資料,都需要除以這個變數。預設值為卷積核的權重之和。

如果設定變數offset,這個值將加到卷積核作用的結果上,然後再除以變數scale

例子:

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.Kernel((3,3),(1,1,1,0,0,0,2,0,2)))

影象im為經過卷積核處理過的影象,如下圖:

2、  RankFilter

定義:RankFilter(size,rank)

含義:(New in 1.1.5)生成給定尺寸的等級濾波器。對於輸入影象的每個畫素點,等級濾波器根據畫素值,在(sizesize)的區域中對所有畫素點進行排序,然後拷貝對應等級的值儲存到輸出影象中。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.RankFilter(5,24))

影象im為等級濾波後的影象,在每個畫素點為中心的5x5區域25個畫素點中選擇排序第24位的畫素作為新的值。如下圖:

 

3、  MinFilter

定義:MinFilter(size=3)

含義:(New in 1.1.5)生成給定尺寸的最小濾波器。對於輸入影象的每個畫素點,該濾波器從(sizesize)的區域中拷貝最小的畫素值儲存到輸出影象中。

例子:

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.MinFilter(5))

影象im為最小濾波後的影象,在每個畫素點為中心的5x5區域25個畫素點中選擇最小的畫素作為新的值。如下圖:

 

4、  MedianFilter

定義:MedianFilter(size=3)

含義:(New in 1.1.5)生成給定尺寸的中值濾波器。對於輸入影象的每個畫素點,該濾波器從(sizesize)的區域中拷貝中值對應的畫素值儲存到輸出影象中。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.MedianFilter(5))

影象im為中值濾波後的影象,在每個畫素點為中心的5x5區域25個畫素點中選擇中值作為新的值。如下圖:

 

5、  MaxFilter

定義:MaxFilter(size=3)

含義:(New in 1.1.5)生成給定尺寸的最大濾波器。對於輸入影象的每個畫素點,該濾波器從(sizesize)的區域中拷貝最大的畫素值儲存到輸出影象中。

例子:

>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.MaxFilter(5))

影象im為最大濾波後的影象,在每個畫素點為中心的5x5區域25個畫素點中選擇最大的畫素作為新的值。如下圖:

 

6、  ModeFilter

定義:ModeFilter(size=3)

含義:(New in 1.1.5)生成給定尺寸的模式濾波器。對於輸入影象的每個畫素點,該濾波器從(sizesize)的區域中拷貝出現次數最多的畫素值儲存到輸出影象中。如果沒有一個畫素值出現過兩次極其以上,則使用原始畫素值。

例子:

>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im=im02.filter(ImageFilter.ModeFilter(5))

影象im為模式濾波後的影象,在每個畫素點為中心的5x5區域25個畫素點中選擇出現次數最多的畫素作為新的值。如下圖: