public static IndexColorModel getIndexColorModel(final StainVector stain, boolean whiteBackground) { if (!whiteBackground) return createIndexColorModel(new Color(stain.getColor())); double r = stain.getRed(); double g = stain.getGreen(); double b = stain.getBlue(); byte[] r2 = new byte[256]; byte[] g2 = new byte[256]; byte[] b2 = new byte[256]; for (int i = 0; i < 256; i++) { r2[i] = (byte)StainVector.clip255(255.0 - r * i); g2[i] = (byte)StainVector.clip255(255.0 - g * i); b2[i] = (byte)StainVector.clip255(255.0 - b * i); // r2[i] = (byte)clip255(Math.exp(-r) * (255 - i)); // g2[i] = (byte)clip255(Math.exp(-g) * (255 - i)); // b2[i] = (byte)clip255(Math.exp(-b) * (255 - i)); } return new IndexColorModel(8, 256, r2, g2, b2); }
stainBase1 = new StainVector("Basis 1", (stainBase1.getRed() + stainBase2.getRed())/2, (stainBase1.getGreen() + stainBase2.getGreen())/2, (stainBase1.getBlue() + stainBase2.getBlue())/2); StainVector stainNorm = StainVector.makeResidualStainVector(stainBase1, stainBase2); stainBase2 = StainVector.makeOrthogonalStainVector("Basis 2", stainBase1, stainNorm, false);
double d00 = stainsOutput.getStain(1).getRed(); double d01 = stainsOutput.getStain(1).getGreen(); double d02 = stainsOutput.getStain(1).getBlue(); double d10 = stainsOutput.getStain(2).getRed(); double d11 = stainsOutput.getStain(2).getGreen(); double d12 = stainsOutput.getStain(2).getBlue(); double d20 = stainsOutput.getStain(3).getRed(); double d21 = stainsOutput.getStain(3).getGreen(); double d22 = stainsOutput.getStain(3).getBlue();
throw new IllegalArgumentException("No valid stains supplied!"); double rStain = stains.getStain(1).getRed(); double gStain = stains.getStain(1).getGreen(); double bStain = stains.getStain(1).getBlue(); throw new IllegalArgumentException("No valid stains supplied!"); rStain = stains.getStain(2).getRed(); gStain = stains.getStain(2).getGreen(); bStain = stains.getStain(2).getBlue(); rStain = stains.getStain(3).getRed(); gStain = stains.getStain(3).getGreen(); bStain = stains.getStain(3).getBlue(); rStain = stains.getStain(1).getRed(); gStain = stains.getStain(1).getGreen(); bStain = stains.getStain(1).getBlue(); rStain = stains.getStain(2).getRed(); gStain = stains.getStain(2).getGreen(); bStain = stains.getStain(2).getBlue(); rStain = stains.getStain(3).getRed(); gStain = stains.getStain(3).getGreen(); bStain = stains.getStain(3).getBlue();