3 def edge_detection(image):
5 new_image = Image.new('L', image.size)
6 new_image_l = new_image.load()
8 for x in xrange(2, image.size[0] - 2):
9 for y in xrange(2, image.size[1] - 2):
12 for b in range(y - 2, y + 3)])
13 for a in range(x - 2, x + 3)])
14 - (25 * image_l[x, y]))
19 new_image_l[x, y] = pix
23 image_l = image.load()
24 new_image = Image.new('L', image.size)
25 new_image_l = new_image.load()
27 for x in range(2, image.size[0] - 2):
28 for y in range(2, image.size[1] - 2):
31 for b in range(y - 2, y + 3)])
32 for a in range(x - 2, x + 3)])
33 + (16 * image_l[x, y]))
38 new_image_l[x, y] = pix
41 def high_pass(image, height):
42 image_l = image.load()
43 new_image = Image.new('L', image.size)
44 new_image_l = new_image.load()
46 for x in xrange(image.size[0]):
47 for y in xrange(image.size[1]):
48 if image_l[x, y] < height:
51 new_image_l[x, y] = image_l[x, y]
55 def components(image):
56 image_l = image.load()
57 new_image = Image.new('L', image.size)
58 new_image_l = new_image.load()
63 for y in xrange(1, image.size[1] - 1):
64 for x in xrange(1, image.size[0] - 1):
67 s.add(new_image_l[x - 1, y - 1])
68 s.add(new_image_l[x, y - 1])
69 s.add(new_image_l[x + 1, y - 1])
70 s.add(new_image_l[x - 1, y])
72 components.append(set())
73 new_image_l[x, y] = comp_counter
74 components[comp_counter].add((x, y))
80 components[c].add((x,y))
83 c1, c2 = s.pop(), s.pop()
84 components[c2].add((x, y))
85 for (x1, y1) in components[c2]:
86 new_image_l[x1, y1] = c1
87 components[c1] = components[c1] | components[c2]
90 new_image = Image.new('L', image.size)
91 new_image_l = new_image.load()
93 for component in components:
98 for (x, y) in component:
102 new_image_l[int(round(float(x_c)/c)), int(round(float(y_c)/c))] = 255