public static int deconvolve8bit(int rgb, double[][] invMat, double[] od_lut_red, double[] od_lut_green, double[] od_lut_blue, int stain) { // Apply deconvolution & store the results return ColorTools.do8BitRangeCheck(Math.exp(-deconvolve(rgb, invMat, od_lut_red, od_lut_green, od_lut_blue, stain)) * 255); }
inverse = stains.getMatrixInverse(); for (int i = 0; i < buf.length; i++) { pixels[i] = ColorTransformer.deconvolve(buf[i], inverse, od_lut_red, od_lut_green, od_lut_blue, 1); inverse = stains.getMatrixInverse(); for (int i = 0; i < buf.length; i++) { pixels[i] = ColorTransformer.deconvolve(buf[i], inverse, od_lut_red, od_lut_green, od_lut_blue, 2); inverse = stains.getMatrixInverse(); for (int i = 0; i < buf.length; i++) { pixels[i] = ColorTransformer.deconvolve(buf[i], inverse, od_lut_red, od_lut_green, od_lut_blue, 3); inverse = stains.getMatrixInverse(); for (int i = 0; i < buf.length; i++) { pixels[i] = ColorTransformer.deconvolve(buf[i], inverse, od_lut_red, od_lut_green, od_lut_blue, 1); inverse = stains.getMatrixInverse(); for (int i = 0; i < buf.length; i++) { pixels[i] = ColorTransformer.deconvolve(buf[i], inverse, od_lut_red, od_lut_green, od_lut_blue, 2);
public static int deconvolve8bit(int rgb, double[][] invMat, double[] od_lut, int stain) { // Apply deconvolution & store the results return ColorTools.do8BitRangeCheck(Math.exp(-deconvolve(rgb, invMat, od_lut, stain)) * 255); }
return brown(rgb); case Hematoxylin_H_E: return deconvolve(rgb, ColorTransformer.inv_H_E, od_lut, 1); case Eosin_H_E: return deconvolve(rgb, ColorTransformer.inv_H_E, od_lut, 2); case Hematoxylin_H_DAB: return deconvolve(rgb, ColorTransformer.inv_H_DAB, od_lut, 1); case DAB_H_DAB: return deconvolve(rgb, ColorTransformer.inv_H_DAB, od_lut, 2); case White: return Float.NaN;
case Hematoxylin_H_E: for (int i = 0; i < buf.length; i++) { bufOutput[i] = makeScaledRGBwithRangeCheck(ColorTransformer.deconvolve(buf[i], ColorTransformer.inv_H_E, ColorTransformer.od_lut, 1), offset, scale, cm) & ~ColorTools.MASK_ALPHA | (buf[i] & ColorTools.MASK_ALPHA); bufOutput[i] = makeScaledRGBwithRangeCheck(ColorTransformer.deconvolve(buf[i], ColorTransformer.inv_H_E, ColorTransformer.od_lut, 2), offset, scale, cm) & ~ColorTools.MASK_ALPHA | (buf[i] & ColorTools.MASK_ALPHA); bufOutput[i] = makeScaledRGBwithRangeCheck(ColorTransformer.deconvolve(buf[i], ColorTransformer.inv_H_DAB, ColorTransformer.od_lut, 1), offset, scale, cm) & ~ColorTools.MASK_ALPHA | (buf[i] & ColorTools.MASK_ALPHA); bufOutput[i] = makeScaledRGBwithRangeCheck(ColorTransformer.deconvolve(buf[i], ColorTransformer.inv_H_DAB, ColorTransformer.od_lut, 2), offset, scale, cm) & ~ColorTools.MASK_ALPHA | (buf[i] & ColorTools.MASK_ALPHA);