//
// COLOR SPACE CONVERTER public class ColorSpace { public static void rgb2hsv(double[] rgb, double[] hsv) { double r = rgb[0]; double g = rgb[1]; double b = rgb[2]; double max = Math.max(r,Math.max(g,b)); double min = Math.min(r,Math.min(g,b)); double range = max - min; double v = max; double s = range==0 ? 0 : range / max; double h = r==max ? (g-b)/range : // yellow thru magenta g==max ? (b-r)/range + 2 : // cyan thru yellow (r-g)/range + 4 ; // magenta thru cyan hsv[0] = (h < 0 ? h+6 : h) / 6; hsv[1] = s; hsv[2] = v; } public static void hsv2rgb(double[] hsv, double[] rgb) { double h = 6 * hsv[0]; double s = hsv[1]; double v = hsv[2]; int i = (int)(h%6); double x = v * (1 - s); double y = v * (1 - s * (h%1)); double z = v * (1 - s * (1 - h%1)); double r=0, g=0, b=0; switch (i) { case 0: r = v; g = z; b = x; break; case 1: r = y; g = v; b = x; break; case 2: r = x; g = v; b = z; break; case 3: r = x; g = y; b = v; break; case 4: r = z; g = x; b = v; break; case 5: r = v; g = x; b = y; break; } rgb[0] = r; rgb[1] = g; rgb[2] = b; } }