import pcf
+def color_enhance(image):
+ image_l = image.load()
+ min_r, min_g, min_b = 999, 999, 999
+ max_r, max_g, max_b = -1, -1, -1
+
+ for x in xrange(image.size[0]):
+ for y in xrange(image.size[1]):
+ min_r = min(min_r, image_l[x, y][0])
+ max_r = max(max_r, image_l[x, y][0])
+ min_g = min(min_g, image_l[x, y][1])
+ max_g = max(max_g, image_l[x, y][1])
+ min_b = min(min_b, image_l[x, y][2])
+ max_b = max(max_b, image_l[x, y][2])
+
+ new_image = Image.new('RGB', image.size)
+ new_image_l = new_image.load()
+ for x in xrange(image.size[0]):
+ for y in xrange(image.size[1]):
+ r, g, b = image_l[x, y]
+ r = (r - min_r) * 255 / (max_r - min_r)
+ g = (g - min_g) * 255 / (max_g - min_g)
+ b = (b - min_b) * 255 / (max_b - min_b)
+ new_image_l[x, y] = (r, g, b)
+ # print min_r, max_r, r, g, b
+
+ return new_image
+
def edge_detection(image):
- image = image.filter(ImageFilter.GaussianBlur())
+ new_image = image.filter(ImageFilter.GaussianBlur())
# GaussianBlur is undocumented class, it might not work in future versions
# of PIL
- image = Image.fromstring('L', image.size,
+ new_image = Image.fromstring('L', image.size,
pcf.edge(image.size, image.tostring()))
- return image
+ return new_image
def peaks(image):
image_l = image.load()
import ImageDraw
+import filters
import k_means
import output
draw.point((x , y), fill=(120, 255, 120))
do_something(image_g, "intersections")
+ image_c = filters.color_enhance(image)
+ if show_all:
+ do_something(image_c, "white balance")
+
board_raw = []
for line in intersections:
- board_raw.append([stone_color_raw(image, intersection) for intersection in
+ board_raw.append([stone_color_raw(image_c, intersection) for intersection in
line])
board_raw = sum(board_raw, [])