Commit 254e3bc8fcb7eba1708594772763cdc7d5bfc095
1 parent
59f31ea4
added a full classification function for envi files and updated color selection
Showing
1 changed file
with
19 additions
and
6 deletions
Show diff stats
python/classify.py
... | ... | @@ -17,6 +17,20 @@ import random |
17 | 17 | import progressbar |
18 | 18 | import matplotlib.pyplot as plt |
19 | 19 | |
20 | +#generate N qualitative colors and return the value for color c | |
21 | +def qualcolor(c, N): | |
22 | + dN = numpy.ceil(numpy.sqrt(N)).astype(numpy.int32) | |
23 | + h = c/N | |
24 | + | |
25 | + sp = c/N * 2 * numpy.pi * dN + numpy.pi/2 | |
26 | + s = numpy.sin(sp) * 0.25 + 0.75 | |
27 | + | |
28 | + vp = c/N * 2 * numpy.pi * dN | |
29 | + v = numpy.sin(vp) * 0.25 + 0.75 | |
30 | + | |
31 | + rgb = numpy.array(colorsys.hsv_to_rgb(h, s, v)) | |
32 | + return rgb * 255 | |
33 | + | |
20 | 34 | #generate a 2D color class map using a stack of binary class images |
21 | 35 | #input: C is a C x Y x X binary image |
22 | 36 | #output: an RGB color image with a unique color for each class |
... | ... | @@ -33,8 +47,7 @@ def class2color(C): |
33 | 47 | |
34 | 48 | #for each class |
35 | 49 | for c in range(0, nc): |
36 | - hsv = (c * 1.0 / nc, 1, 1) | |
37 | - color = numpy.asarray(colorsys.hsv_to_rgb(hsv[0], hsv[1], hsv[2])) * 255 | |
50 | + color = qualcolor(c, nc) | |
38 | 51 | RGB[C[c, ...], :] = color |
39 | 52 | |
40 | 53 | return RGB |
... | ... | @@ -148,22 +161,22 @@ def random_mask(M, n): |
148 | 161 | |
149 | 162 | def envi_batch_predict(E, C, batch=10000): |
150 | 163 | |
151 | - Fv = E.loadbatch(batch).transpose() | |
164 | + Fv = E.loadbatch(batch) | |
152 | 165 | i = 0 |
153 | 166 | Tv = [] |
154 | 167 | plt.ion() |
155 | 168 | bar = progressbar.ProgressBar(max_value=numpy.count_nonzero(E.mask)) |
156 | 169 | while not Fv == []: |
157 | 170 | if i == 0: |
158 | - Tv = C.predict(Fv) | |
171 | + Tv = C.predict(Fv.transpose()) | |
159 | 172 | else: |
160 | - Tv = numpy.concatenate((Tv, C.predict(Fv).transpose()), 0) | |
173 | + Tv = numpy.concatenate((Tv, C.predict(Fv.transpose()).transpose()), 0) | |
161 | 174 | tempmask = E.batchmask() |
162 | 175 | Lv = spectral.unsift2(Tv, tempmask) |
163 | 176 | Cv = label2class(Lv.squeeze(), background=0) |
164 | 177 | RGB = class2color(Cv) |
165 | 178 | plt.imshow(RGB) |
166 | 179 | plt.pause(0.05) |
167 | - Fv = E.loadbatch(batch).transpose() | |
180 | + Fv = E.loadbatch(batch) | |
168 | 181 | i = i + 1 |
169 | 182 | bar.update(len(Tv)) |
170 | 183 | \ No newline at end of file | ... | ... |