From: Tomas Musil Date: Sat, 19 Jul 2014 20:00:34 +0000 (+0200) Subject: cut-out experiment X-Git-Url: http://git.tomasm.cz/imago.git/commitdiff_plain/refs/heads/intrsc cut-out experiment --- diff --git a/src/intrsc.py b/src/intrsc.py index 62f1498..a2e0cd7 100644 --- a/src/intrsc.py +++ b/src/intrsc.py @@ -56,6 +56,47 @@ def board(image, intersections, show_all, do_something, logger): # if show_all: # do_something(image_c, "white balance") image_c = image + + image_l = image_c.load() + import Image, sys + new_image = Image.new('RGB', (19 * 7, 19 * 7)) + image_nl = new_image.load() + new_image2 = Image.new('L', (19 * 7, 19 * 7)) + image_nll = new_image2.load() + y = 3 + for line in intersections: + x = 3 + for (xi, yi) in line: + for xx in [-3,-2,-1,0,1,2,3]: + for yy in [-3,-2,-1,0,1,2,3]: + try: + image_nl[x + xx, y + yy] = image_l[xi + xx, yi + yy] + except IndexError: + pass + for xx in [-2,-1,0,1,2]: + for yy in [-2,-1,0,1,2]: + try: + z = xi + xx + w = yi + yy + luma = lambda ((r,g,b)): colorsys.rgb_to_hls(r / 255., g / + 255. ,b / + 255.)[1] + image_nll[x + xx, y + yy] = (luma(image_l[z, w]) * (-8) + + luma(image_l[z - 1, w - 1]) + + luma(image_l[z - 1, w]) + + luma(image_l[z - 1, w + 1]) + + luma(image_l[z, w - 1]) + + luma(image_l[z, w + 1]) + + luma(image_l[z + 1, w - 1]) + + luma(image_l[z + 1, w]) + + luma(image_l[z + 1, w + 1])) * 255 + except IndexError: + pass + x += 7 + y += 7 + do_something(new_image, "intersections") + do_something(new_image2, "intersections") + board_raw = [] @@ -92,10 +133,10 @@ def board(image, intersections, show_all, do_something, logger): #min_s1 = min(s[1] for s in board_raw) #norm_s1 = lambda x: (x - min_s1) / (max_s1 - min_s1) #color_data = [(norm_s0(s[0]), norm_s1(s[1])) for s in board_raw] - color_data = [(s[0], s[1]) for s in board_raw] + color_data = [(s[0], s[1],s[4]) for s in board_raw] - clusters, score = k_means.cluster(3, 2,zip(color_data, range(len(color_data))), - [[0., 0.5], [0.5, 0.5], [1., 0.5]]) + clusters, score = k_means.cluster(3, 3,zip(color_data, range(len(color_data))), + [[0., 0.5,0.0], [0.5, 0.5, 0.], [1., 0.5, 0.]]) # clusters1, score1 = k_means.cluster(1, 2,zip(color_data, range(len(color_data))), # [[0.5, 0.5]]) # clusters2, score2 = k_means.cluster(2, 2,zip(color_data, range(len(color_data))), @@ -207,4 +248,28 @@ def stone_color_raw(image, (x, y)): sum(p[2] for p in points) / norm) hue, luma, saturation = colorsys.rgb_to_hls(*color) color = colorsys.hls_to_rgb(hue, 0.5, 1.) - return luma, saturation, color, hue + + der = 0 + image_l = image.load() + for xx in [-2,-1,0,1,2]: + for yy in [-2,-1,0,1,2]: + try: + z = x + xx + w = y + yy + lumal = lambda ((r,g,b)): colorsys.rgb_to_hls(r / 255., g / + 255. ,b / + 255.)[1] + der += (lumal(image_l[z, w]) * (-8) + + lumal(image_l[z - 1, w - 1]) + + lumal(image_l[z - 1, w]) + + lumal(image_l[z - 1, w + 1]) + + lumal(image_l[z, w - 1]) + + lumal(image_l[z, w + 1]) + + lumal(image_l[z + 1, w - 1]) + + lumal(image_l[z + 1, w]) + + lumal(image_l[z + 1, w + 1])) + except IndexError: + pass + + der = max(der / 36., 0) + return luma, saturation, color, hue, der