PIL ImageFilter 增强滤镜是如何工作的?
我在哪里可以找到关于PIL的ImageFilter函数使用了哪些算法的信息?比如,边缘增强(edge_enhance)是怎么工作的?我想实现一个高斯差分滤镜,但如果PIL已经有一个类似的滤镜,我就会使用那个。
1 个回答
2
ImageFilter的方法都是通过一种叫做“卷积”的技术,把一个叫做“核”的东西和图像结合起来,来产生不同的滤镜效果。想了解什么是卷积,可以看看这里的介绍。如果你加载了ImageFilter模块,就可以通过查看
>>> help(ImageFilter)
来找出每种操作所用的核。
举个例子,对于EDGE_ENHANCE_MORE这个滤镜,帮助文档里给出的信息是:
filterargs = ((3, 3), 1, 0, (-1, -1, -1, -1, 9, -1, -1, -1, -1))
这段话的意思是,EDGE_ENHANCE_MORE的核是3x3的大小,缩放因子是1,偏移量是0,除了中间的值是9,其他的值都是-1。根据我了解到的,似乎你可以通过给Kernel对象提供合适的参数,来创建一个自定义的滤镜(包括高斯差分核):
Kernel(size, kernel, scale=None, offset=0)