/** Converts a Lab stack into an RGB image. */ public ImagePlus LabToRGB(ImagePlus img) { int w = img.getWidth(); int h = img.getHeight(); ImageStack stack = img.getStack(); FloatProcessor L = (FloatProcessor)stack.getProcessor(1); FloatProcessor a = (FloatProcessor)stack.getProcessor(2); FloatProcessor b = (FloatProcessor)stack.getProcessor(3); ColorProcessor cp = new ColorProcessor(w, h); ColorSpaceConverter converter = new ColorSpaceConverter(); int[] values = new int[3]; double[] dvalues = new double[3]; for (int y=0; y<h; y++) { for (int x=0; x<w; x++) { dvalues[0] = L.getf(x,y); dvalues[1] = a.getf(x,y); dvalues[2] = b.getf(x,y); values = converter.LABtoRGB(dvalues); cp.putPixel(x,y,values); } } ImagePlus img2 = new ImagePlus(img.getTitle(), cp); return img2; }
/** Converts a Lab stack into an RGB image. */ public ImagePlus LabToRGB(ImagePlus img) { int w = img.getWidth(); int h = img.getHeight(); ImageStack stack = img.getStack(); FloatProcessor L = (FloatProcessor)stack.getProcessor(1); FloatProcessor a = (FloatProcessor)stack.getProcessor(2); FloatProcessor b = (FloatProcessor)stack.getProcessor(3); ColorProcessor cp = new ColorProcessor(w, h); ColorSpaceConverter converter = new ColorSpaceConverter(); int[] values = new int[3]; double[] dvalues = new double[3]; for (int y=0; y<h; y++) { for (int x=0; x<w; x++) { dvalues[0] = L.getf(x,y); dvalues[1] = a.getf(x,y); dvalues[2] = b.getf(x,y); values = converter.LABtoRGB(dvalues); cp.putPixel(x,y,values); } } ImagePlus img2 = new ImagePlus(img.getTitle(), cp); return img2; }