222d8fe4aa320607acf1e9acafc9d721fa7548c6
[imago.git] / filters.py
1 from PIL import Image
2
3 from commons import clear
4
5 def edge_detection(image):
6     image_l = image.load()
7     new_image = Image.new('L', image.size)
8     new_image_l = new_image.load()
9     clear()
10     print "edge detection"
11     for x in range(2, image.size[0] - 2):
12         for y in range(2, image.size[1] - 2):
13             pix = (sum([sum([
14                 image_l[a, b] 
15                     for b in range(y - 2, y + 3)]) 
16                     for a in range(x - 2, x + 3)])
17                 - (25 * image_l[x, y]))
18             if pix > 255:
19                 pix = 255
20             if pix < 0:
21                 pix = 0 
22             new_image_l[x, y] = pix
23     return new_image
24         
25 def peaks(image):
26     image_l = image.load()
27     new_image = Image.new('L', image.size)
28     new_image_l = new_image.load()
29     clear()
30     print "peak extraction"
31     for x in range(2, image.size[0] - 2):
32         for y in range(2, image.size[1] - 2):
33             pix = (sum([sum([
34                 - image_l[a, b] 
35                     for b in range(y - 2, y + 3)]) 
36                     for a in range(x - 2, x + 3)])
37                 + (16 * image_l[x, y]))
38             if pix > 255:
39                 pix = 255
40             if pix < 0:
41                 pix = 0 
42             new_image_l[x, y] = pix
43     return new_image
44
45 def high_pass(image, height):
46     image_l = image.load()
47     new_image = Image.new('L', image.size)
48     new_image_l = new_image.load()
49     clear()
50     print "high pass filter"
51     for x in xrange(image.size[0]):
52         for y in xrange(image.size[1]):
53             if image_l[x, y] < height:
54                 new_image_l[x, y] = 0
55             else:
56                 new_image_l[x, y] = image_l[x, y]
57
58     return new_image