diff options
Diffstat (limited to 'PIL/ImageFilter.py')
-rw-r--r-- | PIL/ImageFilter.py | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/PIL/ImageFilter.py b/PIL/ImageFilter.py deleted file mode 100644 index 5857686..0000000 --- a/PIL/ImageFilter.py +++ /dev/null @@ -1,263 +0,0 @@ -# -# The Python Imaging Library. -# $Id: ImageFilter.py 2134 2004-10-06 08:55:20Z fredrik $ -# -# standard filters -# -# History: -# 1995-11-27 fl Created -# 2002-06-08 fl Added rank and mode filters -# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call -# -# Copyright (c) 1997-2003 by Secret Labs AB. -# Copyright (c) 1995-2002 by Fredrik Lundh. -# -# See the README file for information on usage and redistribution. -# - -class Filter: - pass - -## -# Convolution filter kernel. - -class Kernel(Filter): - - ## - # Create a convolution kernel. The current version only - # supports 3x3 and 5x5 integer and floating point kernels. - # <p> - # In the current version, kernels can only be applied to - # "L" and "RGB" images. - # - # @def __init__(size, kernel, **options) - # @param size Kernel size, given as (width, height). In - # the current version, this must be (3,3) or (5,5). - # @param kernel A sequence containing kernel weights. - # @param **options Optional keyword arguments. - # @keyparam scale Scale factor. If given, the result for each - # pixel is divided by this value. The default is the sum - # of the kernel weights. - # @keyparam offset Offset. If given, this value is added to the - # result, after it has been divided by the scale factor. - - def __init__(self, size, kernel, scale=None, offset=0): - if scale is None: - # default scale is sum of kernel - scale = reduce(lambda a,b: a+b, kernel) - if size[0] * size[1] != len(kernel): - raise ValueError("not enough coefficients in kernel") - self.filterargs = size, scale, offset, kernel - - def filter(self, image): - if image.mode == "P": - raise ValueError("cannot filter palette images") - return apply(image.filter, self.filterargs) - -class BuiltinFilter(Kernel): - def __init__(self): - pass - -## -# Rank filter. - -class RankFilter(Filter): - name = "Rank" - - ## - # Create a rank filter. The rank filter sorts all pixels in - # a window of the given size, and returns the rank'th value. - # - # @param size The kernel size, in pixels. - # @param rank What pixel value to pick. Use 0 for a min filter, - # size*size/2 for a median filter, size*size-1 for a max filter, - # etc. - - def __init__(self, size, rank): - self.size = size - self.rank = rank - - def filter(self, image): - image = image.expand(self.size/2, self.size/2) - return image.rankfilter(self.size, self.rank) - -## -# Median filter. Picks the median pixel value in a window with the -# given size. - -class MedianFilter(RankFilter): - name = "Median" - - ## - # Create a median filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = size*size/2 - -## -# Min filter. Picks the lowest pixel value in a window with the given -# size. - -class MinFilter(RankFilter): - name = "Min" - - ## - # Create a min filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = 0 - -## -# Max filter. Picks the largest pixel value in a window with the -# given size. - -class MaxFilter(RankFilter): - name = "Max" - - ## - # Create a max filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - self.rank = size*size-1 - -## -# Mode filter. Picks the most frequent pixel value in a box with the -# given size. Pixel values that occur only once or twice are ignored; -# if no pixel value occurs more than twice, the original pixel value -# is preserved. - -class ModeFilter(Filter): - name = "Mode" - - ## - # Create a mode filter. - # - # @param size The kernel size, in pixels. - - def __init__(self, size=3): - self.size = size - def filter(self, image): - return image.modefilter(self.size) - -## -# Blur filter. - -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 - ) - -## -# Contour filter. - -class CONTOUR(BuiltinFilter): - name = "Contour" - filterargs = (3, 3), 1, 255, ( - -1, -1, -1, - -1, 8, -1, - -1, -1, -1 - ) - -## -# Detail filter. - -class DETAIL(BuiltinFilter): - name = "Detail" - filterargs = (3, 3), 6, 0, ( - 0, -1, 0, - -1, 10, -1, - 0, -1, 0 - ) - -## -# Edge enhancement filter. - -class EDGE_ENHANCE(BuiltinFilter): - name = "Edge-enhance" - filterargs = (3, 3), 2, 0, ( - -1, -1, -1, - -1, 10, -1, - -1, -1, -1 - ) - -## -# Stronger edge enhancement filter. - -class EDGE_ENHANCE_MORE(BuiltinFilter): - name = "Edge-enhance More" - filterargs = (3, 3), 1, 0, ( - -1, -1, -1, - -1, 9, -1, - -1, -1, -1 - ) - -## -# Embossing filter. - -class EMBOSS(BuiltinFilter): - name = "Emboss" - filterargs = (3, 3), 1, 128, ( - -1, 0, 0, - 0, 1, 0, - 0, 0, 0 - ) - -## -# Edge-finding filter. - -class FIND_EDGES(BuiltinFilter): - name = "Find Edges" - filterargs = (3, 3), 1, 0, ( - -1, -1, -1, - -1, 8, -1, - -1, -1, -1 - ) - -## -# Smoothing filter. - -class SMOOTH(BuiltinFilter): - name = "Smooth" - filterargs = (3, 3), 13, 0, ( - 1, 1, 1, - 1, 5, 1, - 1, 1, 1 - ) - -## -# Stronger smoothing filter. - -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 - ) - -## -# Sharpening filter. - -class SHARPEN(BuiltinFilter): - name = "Sharpen" - filterargs = (3, 3), 16, 0, ( - -2, -2, -2, - -2, 32, -2, - -2, -2, -2 - ) |