ColorScience.CAMethod caMethod) {
return whiteBalance(image, source, REF_T, tint, lightness, 1, null, caMethod);
}
static public float[][] whiteBalanceMatrix(float source, float REF_T, float mult, float cameraRGB[][], ColorScience.CAMethod caMethod) {
Matrix B = new Matrix(ColorScience.chromaticAdaptation(REF_T, source, caMethod));
Matrix combo = XYZtoRGB.times(B.times(RGBtoZYX));
Matrix m = combo.times(new Matrix(new double[][]{{1},{1},{1}}));
double max = m.get(1, 0); // Math.max(m.get(1, 0), Math.max(m.get(1, 0), m.get(2, 0)));
if (max != 1)
combo = combo.times(new Matrix(new double[][]{{1/max, 0, 0},{0, 1/max, 0},{0, 0, 1/max}}));
if (cameraRGB != null)
combo = combo.times(new Matrix(cameraRGB));
if (mult != 1)
combo = combo.times(mult);
return combo.getArrayFloat();