private static ImageProcessor RGBtoLab(ImageProcessor ip) { int n = ip.getPixelCount(); byte[] L = new byte[n]; byte[] a = new byte[n]; byte[] b = new byte[n]; ColorThresholder.getLab(ip, L, a, b); ColorProcessor cp = new ColorProcessor(ip.getWidth(),ip.getHeight()); cp.setRGB(L,a,b); return cp; }
private static ImageProcessor RGBtoLab(ImageProcessor ip) { int n = ip.getPixelCount(); byte[] L = new byte[n]; byte[] a = new byte[n]; byte[] b = new byte[n]; ColorThresholder.getLab(ip, L, a, b); ColorProcessor cp = new ColorProcessor(ip.getWidth(),ip.getHeight()); cp.setRGB(L,a,b); return cp; }
result.setRGB(redArray, greenArray, blueArray);
colorprocessor.setRGB(R_pixels, G_pixels, B_pixels); ImagePlus imp = new ImagePlus(title, colorprocessor); if (showImage) {
cp.setRGB(channels[0], channels[1], channels[2]); return cp;
/** Converts a 2 or 3 slice 8-bit stack to RGB. */ public void convertRGBStackToRGB() { int stackSize = imp.getStackSize(); if (stackSize<2 || stackSize>3 || type!=ImagePlus.GRAY8) throw new IllegalArgumentException("2 or 3 slice 8-bit stack required"); int width = imp.getWidth(); int height = imp.getHeight(); ImageStack stack = imp.getStack(); byte[] R = (byte[])stack.getPixels(1); byte[] G = (byte[])stack.getPixels(2); byte[] B; if (stackSize>2) B = (byte[])stack.getPixels(3); else B = new byte[width*height]; imp.trimProcessor(); ColorProcessor cp = new ColorProcessor(width, height); cp.setRGB(R, G, B); if (imp.isInvertedLut()) cp.invert(); imp.setImage(cp.createImage()); imp.killStack(); if (IJ.isLinux()) imp.setTitle(imp.getTitle()); }
/** Converts a 2 or 3 slice 8-bit stack to RGB. */ public void convertRGBStackToRGB() { int stackSize = imp.getStackSize(); if (stackSize<2 || stackSize>3 || type!=ImagePlus.GRAY8) throw new IllegalArgumentException("2 or 3 slice 8-bit stack required"); int width = imp.getWidth(); int height = imp.getHeight(); ImageStack stack = imp.getStack(); byte[] R = (byte[])stack.getPixels(1); byte[] G = (byte[])stack.getPixels(2); byte[] B; if (stackSize>2) B = (byte[])stack.getPixels(3); else B = new byte[width*height]; imp.trimProcessor(); ColorProcessor cp = new ColorProcessor(width, height); cp.setRGB(R, G, B); if (imp.isInvertedLut()) cp.invert(); imp.setImage(cp.createImage()); imp.killStack(); if (IJ.isLinux()) imp.setTitle(imp.getTitle()); }
void filterRGB(ImageProcessor ip) { ColorProcessor cp = (ColorProcessor)ip; int width = cp.getWidth(); int height = cp.getHeight(); int size = width*height; byte[] R = new byte[size]; byte[] G = new byte[size]; byte[] B = new byte[size]; IJ.showStatus("Kuwahara_Filter: red"); cp.getRGB(R, G, B); ImageProcessor red = new ByteProcessor(width, height, R, null); filter(red); IJ.showStatus("Kuwahara_Filter: green"); ImageProcessor green = new ByteProcessor(width, height, G, null); filter(green); IJ.showStatus("Kuwahara_Filter: blue"); ImageProcessor blue = new ByteProcessor(width, height, B, null); filter(blue); cp.setRGB((byte[])red.getPixels(), (byte[])green.getPixels(), (byte[])blue.getPixels()); }
/** * Merge three image stack into a color stack (no scaling) * * @param redChannel image stack representing the red channel * @param greenChannel image stack representing the green channel * @param blueChannel image stack representing the blue channel * @return RGB merged stack */ ImageStack mergeStacks(ImageStack redChannel, ImageStack greenChannel, ImageStack blueChannel) { final ImageStack colorStack = new ImageStack( redChannel.getWidth(), redChannel.getHeight()); for(int n=1; n<=redChannel.getSize(); n++) { final ByteProcessor red = (ByteProcessor) redChannel.getProcessor(n).convertToByte(false); final ByteProcessor green = (ByteProcessor) greenChannel.getProcessor(n).convertToByte(false); final ByteProcessor blue = (ByteProcessor) blueChannel.getProcessor(n).convertToByte(false); final ColorProcessor cp = new ColorProcessor(redChannel.getWidth(), redChannel.getHeight()); cp.setRGB((byte[]) red.getPixels(), (byte[]) green.getPixels(), (byte[]) blue.getPixels() ); colorStack.addSlice(redChannel.getSliceLabel(n), cp); } return colorStack; }
/** * Merge three image stack into a color stack (no scaling) * * @param redChannel image stack representing the red channel * @param greenChannel image stack representing the green channel * @param blueChannel image stack representing the blue channel * @return RGB merged stack */ ImageStack mergeStacks(ImageStack redChannel, ImageStack greenChannel, ImageStack blueChannel) { final ImageStack colorStack = new ImageStack( redChannel.getWidth(), redChannel.getHeight()); for(int n=1; n<=redChannel.getSize(); n++) { final ByteProcessor red = (ByteProcessor) redChannel.getProcessor(n).convertToByte(false); final ByteProcessor green = (ByteProcessor) greenChannel.getProcessor(n).convertToByte(false); final ByteProcessor blue = (ByteProcessor) blueChannel.getProcessor(n).convertToByte(false); final ColorProcessor cp = new ColorProcessor(redChannel.getWidth(), redChannel.getHeight()); cp.setRGB((byte[]) red.getPixels(), (byte[]) green.getPixels(), (byte[]) blue.getPixels() ); colorStack.addSlice(redChannel.getSliceLabel(n), cp); } return colorStack; }
/** * Merge three image stack into a color stack (no scaling) * * @param redChannel image stack representing the red channel * @param greenChannel image stack representing the green channel * @param blueChannel image stack representing the blue channel * @return RGB merged stack */ ImageStack mergeStacks(ImageStack redChannel, ImageStack greenChannel, ImageStack blueChannel) { final ImageStack colorStack = new ImageStack( redChannel.getWidth(), redChannel.getHeight()); for(int n=1; n<=redChannel.getSize(); n++) { final ByteProcessor red = (ByteProcessor) redChannel.getProcessor(n).convertToByte(false); final ByteProcessor green = (ByteProcessor) greenChannel.getProcessor(n).convertToByte(false); final ByteProcessor blue = (ByteProcessor) blueChannel.getProcessor(n).convertToByte(false); final ColorProcessor cp = new ColorProcessor(redChannel.getWidth(), redChannel.getHeight()); cp.setRGB((byte[]) red.getPixels(), (byte[]) green.getPixels(), (byte[]) blue.getPixels() ); colorStack.addSlice(redChannel.getSliceLabel(n), cp); } return colorStack; }
/** * Merge three image stack into a color stack (no scaling) * * @param redChannel image stack representing the red channel * @param greenChannel image stack representing the green channel * @param blueChannel image stack representing the blue channel * @return RGB merged stack */ ImageStack mergeStacks(ImageStack redChannel, ImageStack greenChannel, ImageStack blueChannel) { final ImageStack colorStack = new ImageStack( redChannel.getWidth(), redChannel.getHeight()); for(int n=1; n<=redChannel.getSize(); n++) { final ByteProcessor red = (ByteProcessor) redChannel.getProcessor(n).convertToByte(false); final ByteProcessor green = (ByteProcessor) greenChannel.getProcessor(n).convertToByte(false); final ByteProcessor blue = (ByteProcessor) blueChannel.getProcessor(n).convertToByte(false); final ColorProcessor cp = new ColorProcessor(redChannel.getWidth(), redChannel.getHeight()); cp.setRGB((byte[]) red.getPixels(), (byte[]) green.getPixels(), (byte[]) blue.getPixels() ); colorStack.addSlice(redChannel.getSliceLabel(n), cp); } return colorStack; }
/** Performs a convolution operation using the specified kernel. */ public void convolve(float[] kernel, int kernelWidth, int kernelHeight) { int size = width*height; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; getRGB(r,g,b); ImageProcessor rip = new ByteProcessor(width, height, r, null); ImageProcessor gip = new ByteProcessor(width, height, g, null); ImageProcessor bip = new ByteProcessor(width, height, b, null); ImageProcessor ip2 = rip.convertToFloat(); Rectangle roi = getRoi(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor r2 = ip2.convertToByte(false); ip2 = gip.convertToFloat(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor g2 = ip2.convertToByte(false); ip2 = bip.convertToFloat(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor b2 = ip2.convertToByte(false); setRGB((byte[])r2.getPixels(), (byte[])g2.getPixels(), (byte[])b2.getPixels()); }
/** Performs a convolution operation using the specified kernel. */ public void convolve(float[] kernel, int kernelWidth, int kernelHeight) { int size = width*height; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; getRGB(r,g,b); ImageProcessor rip = new ByteProcessor(width, height, r, null); ImageProcessor gip = new ByteProcessor(width, height, g, null); ImageProcessor bip = new ByteProcessor(width, height, b, null); ImageProcessor ip2 = rip.convertToFloat(); Rectangle roi = getRoi(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor r2 = ip2.convertToByte(false); ip2 = gip.convertToFloat(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor g2 = ip2.convertToByte(false); ip2 = bip.convertToFloat(); ip2.setRoi(roi); ip2.convolve(kernel, kernelWidth, kernelHeight); ImageProcessor b2 = ip2.convertToByte(false); setRGB((byte[])r2.getPixels(), (byte[])g2.getPixels(), (byte[])b2.getPixels()); }
if (invertedGreen) greenPixels = invert(greenPixels); if (invertedBlue) bluePixels = invert(bluePixels); cp.setRGB(redPixels, greenPixels, bluePixels); if (keep) slice++;
if (invertedGreen) greenPixels = invert(greenPixels); if (invertedBlue) bluePixels = invert(bluePixels); cp.setRGB(redPixels, greenPixels, bluePixels); if (keep) slice++;
ImageProcessor straightenRGB(ImagePlus imp, int width) { int w=imp.getWidth(), h=imp.getHeight(); int size = w*h; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; ColorProcessor cp = (ColorProcessor)imp.getProcessor(); cp.getRGB(r, g, b); ImagePlus imp2 = new ImagePlus("red", new ByteProcessor(w, h, r, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor red = straightenLine(imp2, width); if (red==null) return null; imp2 = new ImagePlus("green", new ByteProcessor(w, h, g, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor green = straightenLine(imp2, width); if (green==null) return null; imp2 = new ImagePlus("blue", new ByteProcessor(w, h, b, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor blue = straightenLine(imp2, width); if (blue==null) return null; ColorProcessor cp2 = new ColorProcessor(red.getWidth(), red.getHeight()); red = red.convertToByte(false); green = green.convertToByte(false); blue = blue.convertToByte(false); cp2.setRGB((byte[])red.getPixels(), (byte[])green.getPixels(), (byte[])blue.getPixels()); imp.setRoi(imp2.getRoi()); return cp2; }
ImageProcessor straightenRGB(ImagePlus imp, int width) { int w=imp.getWidth(), h=imp.getHeight(); int size = w*h; byte[] r = new byte[size]; byte[] g = new byte[size]; byte[] b = new byte[size]; ColorProcessor cp = (ColorProcessor)imp.getProcessor(); cp.getRGB(r, g, b); ImagePlus imp2 = new ImagePlus("red", new ByteProcessor(w, h, r, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor red = straightenLine(imp2, width); if (red==null) return null; imp2 = new ImagePlus("green", new ByteProcessor(w, h, g, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor green = straightenLine(imp2, width); if (green==null) return null; imp2 = new ImagePlus("blue", new ByteProcessor(w, h, b, null)); imp2.setRoi((Roi)imp.getRoi().clone()); ImageProcessor blue = straightenLine(imp2, width); if (blue==null) return null; ColorProcessor cp2 = new ColorProcessor(red.getWidth(), red.getHeight()); red = red.convertToByte(false); green = green.convertToByte(false); blue = blue.convertToByte(false); cp2.setRGB((byte[])red.getPixels(), (byte[])green.getPixels(), (byte[])blue.getPixels()); imp.setRoi(imp2.getRoi()); return cp2; }