public void getRGBData(ColorHistogram colorHist, double[][] data) { int size = colorHist.getNumberOfColors(); for (int x = 0; x < size; x++) { data[x] = new double[3]; int rgb = colorHist.getColor(x); data[x][0] = ((rgb & 0xFF0000) >> 16); data[x][1] = ((rgb & 0xFF00) >> 8); data[x][2] = (rgb & 0xFF); } }
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(); }
public void YIQData(ColorHistogram colorHist, double[][] data) { int size = colorHist.getNumberOfColors(); for (int x = 0; x < size; x++) { data[x] = new double[3]; int rgb = colorHist.getColor(x); double[] yiq = RGB2YIQ(rgb); for (int y = 0; y < 3; y++) { data[x][y] = yiq[y]; } } }