diff --git a/python/classify.py b/python/classify.py index 32e39fc..85e4e8e 100644 --- a/python/classify.py +++ b/python/classify.py @@ -17,6 +17,20 @@ import random import progressbar import matplotlib.pyplot as plt +#generate N qualitative colors and return the value for color c +def qualcolor(c, N): + dN = numpy.ceil(numpy.sqrt(N)).astype(numpy.int32) + h = c/N + + sp = c/N * 2 * numpy.pi * dN + numpy.pi/2 + s = numpy.sin(sp) * 0.25 + 0.75 + + vp = c/N * 2 * numpy.pi * dN + v = numpy.sin(vp) * 0.25 + 0.75 + + rgb = numpy.array(colorsys.hsv_to_rgb(h, s, v)) + return rgb * 255 + #generate a 2D color class map using a stack of binary class images #input: C is a C x Y x X binary image #output: an RGB color image with a unique color for each class @@ -33,8 +47,7 @@ def class2color(C): #for each class for c in range(0, nc): - hsv = (c * 1.0 / nc, 1, 1) - color = numpy.asarray(colorsys.hsv_to_rgb(hsv[0], hsv[1], hsv[2])) * 255 + color = qualcolor(c, nc) RGB[C[c, ...], :] = color return RGB @@ -148,22 +161,22 @@ def random_mask(M, n): def envi_batch_predict(E, C, batch=10000): - Fv = E.loadbatch(batch).transpose() + Fv = E.loadbatch(batch) i = 0 Tv = [] plt.ion() bar = progressbar.ProgressBar(max_value=numpy.count_nonzero(E.mask)) while not Fv == []: if i == 0: - Tv = C.predict(Fv) + Tv = C.predict(Fv.transpose()) else: - Tv = numpy.concatenate((Tv, C.predict(Fv).transpose()), 0) + Tv = numpy.concatenate((Tv, C.predict(Fv.transpose()).transpose()), 0) tempmask = E.batchmask() Lv = spectral.unsift2(Tv, tempmask) Cv = label2class(Lv.squeeze(), background=0) RGB = class2color(Cv) plt.imshow(RGB) plt.pause(0.05) - Fv = E.loadbatch(batch).transpose() + Fv = E.loadbatch(batch) i = i + 1 bar.update(len(Tv)) \ No newline at end of file -- libgit2 0.21.4