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
107 def components2(image):
108 image_l = image.load()
109 new_image = Image.new('L', image.size)
110 new_image_l = new_image.load()
115 for y in xrange(2, image.size[1] - 2):
116 for x in xrange(2, image.size[0] - 2):
120 for (a, b) in [(a,b) for a in range(x - 2, x + 3)
121 for b in range(y - 2, y + 1)]:
122 if not (b == y and a >= x):
123 s.add(new_image_l[a, b])
126 components.append(set())
127 new_image_l[x, y] = comp_counter
128 components[comp_counter].add((x, y))
133 new_image_l[x, y] = c
134 components[c].add((x,y))
138 components[c1].add((x, y))
139 new_image_l[x, y] = c1
141 for (x1, y1) in components[c2]:
142 new_image_l[x1, y1] = c1
143 components[c1] = components[c1] | components[c2]
144 components[c2] = None
146 new_image = Image.new('L', image.size)
147 new_image_l = new_image.load()
149 for component in components:
154 for (x, y) in component:
158 new_image_l[int(round(float(x_c)/c)), int(round(float(y_c)/c))] = 255