if show_all:
import matplotlib.pyplot as pyplot
pyplot.scatter(luma, saturation,
- color=[(s[2][0]/255., s[2][1]/255., s[2][2]/255., 1.)
- for s in board_raw])
+ color=[(s[2][0]/255.,
+ s[2][1]/255.,
+ s[2][2]/255., 1.)
+ for s in board_raw])
+ pyplot.xlim(0,1)
+ pyplot.ylim(0,1)
pyplot.show()
clusters = k_means.cluster(3, 2,zip(zip(luma, saturation), range(len(luma))),
- [[0., 0.], [0.5, 0.5], [1., 1.]])
+ [[0., 0.], [0.5, 0.5], [1., 0.]])
#clusters.sort(key=mean_luma)
if show_all:
color=(0,1,0,1))
pyplot.scatter([d[0][0] for d in clusters[2]], [d[0][1] for d in clusters[2]],
color=(0,0,1,1))
+ pyplot.xlim(0,1)
+ pyplot.ylim(0,1)
pyplot.show()
clusters[0] = [(p[1], 'B') for p in clusters[0]]
return intersections
def RGBtoSat(c):
+ """Using the HSI color model."""
max_diff = max(c) - min(c)
if max_diff == 0:
return 0
else:
- #TODO simplify this
- return max_diff / float(255. - abs(max(c) + min(c) - 255))
+ return 1. - ((3. * min(c)) / sum(c))
def stone_color_raw(image, (x, y)):
"""Given image and coordinates, return stone color."""
pass
luma = sum([0.30 * sum(s[0] for s in suma) / 25., 0.59 * sum(s[1] for s in suma) / 25.,
0.11 * sum(s[2] for s in suma) / 25.]) / 255.
- saturation = sum(RGBtoSat(s) for s in suma) / (25. * 255.)
+ saturation = sum(RGBtoSat(s) for s in suma) / 25.
color = [sum(s[0] for s in suma) / 25., sum(s[1] for s in suma) / 25.,
sum(s[2] for s in suma) / 25.]
return luma, saturation, color
-"""K-means module"""
+"""K-means module."""
import random
def cluster(k, d, data, i_centers=None):
+ """Find *k* clusters on *d* dimensional *data*."""
borders = [(min(p[0][i] for p in data), max(p[0][i] for p in data))
for i in range(d) ]
if i_centers:
return [sum(c[0][i] for c in cluster) / l for i in range(d)]
def delta(c1, c2):
- return sum( (sum(abs(cc1 - cc2) for (cc1, cc2) in zip (ccc1, ccc2)) if ccc2
+ return sum((sum(abs(cc1 - cc2) for (cc1, cc2) in zip (ccc1, ccc2)) if ccc2
else 0.) for (ccc1, ccc2) in zip(c1, c2))