Python圖像濾波處理操作示例【基於ImageFilter類】

這篇文章主要介紹了Python圖像濾波處理操作,結合實例形式分析了Python基於ImageFilter類實現的濾波處理相關操作技巧,需要的朋友可以參考下

本文實例講述了Python圖像濾波處理操作。分享給大家供大家參考,具體如下:

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

下面先直接看一個樣例:

#-*- coding: UTF-8 -*-
from PIL import Image
from PIL import ImageFilter
def image_filters_test():
  im = Image.open("lena.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
image_filters_test()

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指定核的大小

原圖lena.jpg如下:

上例的濾波處理結果如下:

更多關於Python相關內容可查看本站專題:《Python數學運算技巧總結》、《Python圖片操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧彙總》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章