python卡通滤镜_纯Python综合图像处理小工具(3)10种滤镜算法
濾鏡處理是圖像處理中一種非常常見的方法。比如photoshop中的濾鏡效果,除了自帶的濾鏡,還擴展了很多第三方的濾鏡效果插件,可以對圖像做豐富多樣的變換;很多手機app實現了實時濾鏡功能,最有名的當屬Instagram。
濾鏡的原理,常見的是針對數字圖像的像素矩陣,使用一個nxn的方形矩陣做濾波器(即kernel,常見的如3x3,5x5等),對該像素矩陣進行遍歷,遍歷后的圖像就是輸出圖像,如果算法經過優化,遍歷的速度足夠快,那就是實時濾鏡(live filter),可以實時預覽圖像過濾后的效果。
ImageFilter是Python PIL的濾鏡模塊,當前版本支持10種加強濾鏡,通過這些預定義的濾鏡,可以方便的對圖片進行一些過濾操作,從而去掉圖片中的噪音(部分的消除),這樣可以降低圖像處理算法的復雜度(如模式識別等),更方便的實現和預覽一些算法的效果。
本文腳本包含以下全部濾鏡, 實現了10種圖像處理濾鏡的效果預覽和JPEG文件保存。
ImageFilter.BLUR
模糊濾鏡
ImageFilter.CONTOUR
輪廓
ImageFilter.DETAIL
細節濾鏡
ImageFilter.EDGE_ENHANCE
邊界加強
ImageFilter.EDGE_ENHANCE_MORE
邊界加強(閥值更 大)
ImageFilter.EMBOSS
浮雕濾鏡
ImageFilter.FIND_EDGES
邊界濾鏡
ImageFilter.SMOOTH
平滑濾鏡
ImageFilter.SMOOTH_MORE
平滑濾鏡(閥值更大)
ImageFilter.SHARPEN
銳化濾鏡
原圖:
模糊濾鏡:
銳度增強濾鏡:
細節濾鏡:
輪廓濾鏡:
邊界提取濾鏡:
邊界增強濾鏡:
邊界增強濾鏡-加強版:
平滑濾鏡:
平滑濾鏡-加強版:
浮雕濾鏡:
PIL庫的濾鏡算法可以在Python\Lib\site-packages\PIL路徑下找到,如下所示:
在PIL路徑下,我們看到了三個同名但后綴不同的文件:ImageFilter.py?ImageFilter.pyc?ImageFilter.pyo 。
.pyc文件:是同名的.py編譯后的字節碼文件,用來供解釋器解釋執行;
.pyo文件:是同名的.pyc文件經過優化后的字節碼文件,通常體積更小,運行更快。
濾鏡算法在ImageFilter.py文件中。
如前文所述,每一個濾鏡通常對應著一個濾波器(即kernel),PIL中的kernel均為常見的3x3和5x5方形矩陣,下面是PIL中9種濾鏡對應的矩陣:
模糊濾鏡:
class?BLUR(BuiltinFilter):
name?=?"Blur"
filterargs?=?(5,?5),?16,?0,?(
1,??1,??1,??1,??1,
1,??0,??0,??0,??1,
1,??0,??0,??0,??1,
1,??0,??0,??0,??1,
1,??1,??1,??1,??1
)
輪廓濾鏡:
class?CONTOUR(BuiltinFilter):
name?=?"Contour"
filterargs?=?(3,?3),?1,?255,?(
-1,?-1,?-1,
-1,??8,?-1,
-1,?-1,?-1
)
細節濾鏡:
class?DETAIL(BuiltinFilter):
name?=?"Detail"
filterargs?=?(3,?3),?6,?0,?(
0,?-1,??0,
-1,?10,?-1,
0,?-1,??0
)
邊緣增強濾鏡:
class?EDGE_ENHANCE(BuiltinFilter):
name?=?"Edge-enhance"
filterargs?=?(3,?3),?2,?0,?(
-1,?-1,?-1,
-1,?10,?-1,
-1,?-1,?-1
)
邊緣增強濾鏡-增強版:
該增強版和原濾鏡僅僅是矩陣2行2列的一個參數大小不同,實際是修改了中心像素的權重。這個數值可以任意修改以自定義邊緣增強的幅度。
class?EDGE_ENHANCE_MORE(BuiltinFilter):
name?=?"Edge-enhance?More"
filterargs?=?(3,?3),?1,?0,?(
-1,?-1,?-1,
-1,??9,?-1,
-1,?-1,?-1
)
浮雕濾鏡
class?EMBOSS(BuiltinFilter):
name?=?"Emboss"
filterargs?=?(3,?3),?1,?128,?(
-1,??0,??0,
0,??1,??0,
0,??0,??0
)
邊緣提取濾鏡
class?FIND_EDGES(BuiltinFilter):
name?=?"Find?Edges"
filterargs?=?(3,?3),?1,?0,?(
-1,?-1,?-1,
-1,??8,?-1,
-1,?-1,?-1
)
平滑濾鏡:
class?SMOOTH(BuiltinFilter):
name?=?"Smooth"
filterargs?=?(3,?3),?13,?0,?(
1,??1,??1,
1,??5,??1,
1,??1,??1
)
平滑濾鏡-加強版:
平滑濾鏡的加強是增加了濾鏡窗口的尺寸,有3x3擴展到5x5, 這樣每一個新像素的產生會包含25個周圍原始像素的加權貢獻(離得越近,貢獻越大),這樣的結果會更加平滑自然,代價是處理速度會明顯的變慢。
class?SMOOTH_MORE(BuiltinFilter):
name?=?"Smooth?More"
filterargs?=?(5,?5),?100,?0,?(
1,??1,??1,??1,??1,
1,??5,??5,??5,??1,
1,??5,?44,??5,??1,
1,??5,??5,??5,??1,
1,??1,??1,??1,??1
)
銳化濾鏡:
class?SHARPEN(BuiltinFilter):
name?=?"Sharpen"
filterargs?=?(3,?3),?16,?0,?(
-2,?-2,?-2,
-2,?32,?-2,
-2,?-2,?-2
)
#start#-*-?coding:?cp936?-*-import?Image,ImageDraw
import?ImageFilter,random,sys
img?=?Image.open("1.jpg")
##圖像處理##
#轉換為RGB圖像img?=?img.convert("RGB")
#經過PIL自帶filter處理imgfilted_b?=?img.filter(ImageFilter.BLUR)
imgfilted_c?=?img.filter(ImageFilter.CONTOUR)
imgfilted_ee?=?img.filter(ImageFilter.EDGE_ENHANCE)
imgfilted_ee_m?=?img.filter(ImageFilter.EDGE_ENHANCE_MORE)
imgfilted_em?=?img.filter(ImageFilter.EMBOSS)
imgfilted_fe?=?img.filter(ImageFilter.FIND_EDGES)
imgfilted_sm?=?img.filter(ImageFilter.SMOOTH)
imgfilted_sm_m?=?img.filter(ImageFilter.SMOOTH_MORE)
imgfilted_sh?=?img.filter(ImageFilter.SHARPEN)
imgfilted_d?=?img.filter(ImageFilter.Detail)
##圖像保存##
imgfilted_b.save("1b.jpg")
imgfilted_c.save("1c.jpg")
imgfilted_ee.save("1ee.jpg")
imgfilted_ee_m.save("1eem.jpg")
imgfilted_em.save("1em.jpg")
imgfilted_fe.save("1fe.jpg")
imgfilted_sm.save("1sm.jpg")
imgfilted_sm_m.save("1smm.jpg")
imgfilted_sh.save("1sh.jpg")
imgfilted_d.save("1d.jpg")
##圖像顯示##
imgfilted_b.show()
imgfilted_c.show()
imgfilted_ee.show()
imgfilted_ee_m.show()
imgfilted_em.show()
imgfilted_fe.show()
imgfilted_sm.show()
imgfilted_sm_m.show()
imgfilted_sh.show()
imgfilted_d.show()
#end
原文:http://www.cnblogs.com/sopic/p/4538052.html
總結
以上是生活随笔為你收集整理的python卡通滤镜_纯Python综合图像处理小工具(3)10种滤镜算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络算法有哪几种,神经网络有哪几种算
- 下一篇: http服务(nginx、apache)