void findRepresentativeColors(int K, ColorHistogram colorHist) { imageColors = new ColorNode[K]; for (int i = 0; i < K; i++) { int rgb = colorHist.getColor(i); int cnt = colorHist.getCount(i); imageColors[i] = new ColorNode(rgb, cnt); } //if (K <= qnum_list[0]) // image has fewer colors than Kmax // rCols = imageColors; //else { ColorBox initialBox = new ColorBox(0, K - 1, 0, imageColors); List<ColorBox> colorSet = new List<ColorBox>(); colorSet.Add(initialBox); int k = 1; for (int i = 0; i < qnum_list.Count; i++) { int Kmax = qnum_list[i]; bool done = false; while (k < Kmax && !done) { ColorBox nextBox = findBoxToSplit(colorSet); if (nextBox != null) { ColorBox newBox = nextBox.splitBox(); colorSet.Add(newBox); k = k + 1; } else { done = true; } } quantColors_list.Add(averageColors(colorSet,i)); } } colorHist = null; GC.Collect(); }