List of usage examples for java.awt.image.renderable ParameterBlock add
public ParameterBlock add(double d)
From source file:imageLines.ImageHelpers.java
/**Binarize a planar image. Only used internally.*/ private static BufferedImage binarize(int threshold, PlanarImage image) { // Binarizes the original image. if (threshold > 5) threshold -= 3;//from w ww. j a v a 2s . co m ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(1.0 * threshold); // Creates a new, thresholded image and uses it on the DisplayJAI component PlanarImage thresholdedImage = JAI.create("binarize", pb); return thresholdedImage.getAsBufferedImage(); }
From source file:fr.gael.dhus.datastore.processing.impl.ProcessingUtils.java
public static RenderedImage ResizeImage(RenderedImage image, int width, int height, float max_ratio, boolean can_cut) { RenderedImage resizedImage = image; /*/* w w w. j a v a 2s.co m*/ // Select the displayable bands if (resizedImage.getNumBands () <= 2) { logger.debug("Grayscale image case"); resizedImage = JAI.create("bandselect", resizedImage, new int[] { 0 }); } else { logger.debug("RGB image case: [1 2 3]"); resizedImage = JAI.create("bandselect", resizedImage, new int[] {0, 1, 2}); } */ // Cut image if necessary if (can_cut == true) { resizedImage = ProcessingUtils.cutQuickLook(resizedImage, 2.0, 2); logger.debug("Image resized and cutted in band : " + resizedImage.getWidth() + "x" + resizedImage.getHeight()); } // Computes ratio and scale float scale = 1; if (resizedImage.getWidth() >= resizedImage.getHeight()) { scale = (float) ((double) width / (double) resizedImage.getWidth()); } else { scale = (float) ((double) height / (double) resizedImage.getHeight()); } // Processing resize process ParameterBlock pb = new ParameterBlock(); // The source image pb.addSource(resizedImage); // The xScale pb.add(scale); // The yScale pb.add(scale); // The x translation pb.add(0.0F); // The y translation pb.add(0.0F); // The interpolation pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC)); resizedImage = JAI.create("scale", pb, null); logger.debug("Image resized to : " + resizedImage.getWidth() + "x" + resizedImage.getHeight()); if ((width != resizedImage.getWidth()) && (height != resizedImage.getHeight())) { logger.debug("Final resize to complete expected image output"); resizedImage = ResizeImage(resizedImage, width, height, 0, false); } else { pb = new ParameterBlock().addSource(resizedImage); pb.add(new float[] { 0.002f }); // normalize factor 0.02% pb.add(null); // visible region pb.add(4); // x period pb.add(4); // y period resizedImage = JAI.create("normalize", pb); /* Does not work because of color model issue resizedImage = ColorQuantizerDescriptor.create( resizedImage, ColorQuantizerDescriptor.OCTTREE, new Integer(255), new Integer(300), null, new Integer(4), new Integer(4), null); */ } return resizedImage; }
From source file:imageLines.ImageHelpers.java
/**Perform a binary thresholding on the image using 1 of 5 methods 0-IterativeThreshold//from w w w. j a v a 2s . co m 1-MaxEntropyThreshold 2-Maximum Variance 3-Minimum Error 4-Minimum Fuzziness */ public static BufferedImage binaryThreshold(BufferedImage img, int method) { PlanarImage j = PlanarImage.wrapRenderedImage(img); //JAI.create("fileload", imageFile.getPath()); //double[][] matrix = {{ 0.114, 0.587, 0.299, 0 }}; double[][] matrix = { { 0.114, 0.587, 0.299, 0 } }; ParameterBlock pb = new ParameterBlock(); pb.addSource(j); pb.add(matrix); try { j = JAI.create("bandcombine", pb); } catch (IllegalArgumentException e) { } pb = new ParameterBlock(); pb.addSource(j); pb.add(null); // The ROI pb.add(1); pb.add(1); pb.add(new int[] { 256 }); pb.add(new double[] { 0 }); pb.add(new double[] { 256 }); // Calculate the histogram of the image. PlanarImage dummyImage = JAI.create("histogram", pb); Histogram h = (Histogram) dummyImage.getProperty("histogram"); // Calculate the thresholds based on the selected method. double[] thresholds = null; switch (method) { case 0: // Iterative Bisection thresholds = h.getIterativeThreshold(); break; case 1: // Maximum Entropy thresholds = h.getMaxEntropyThreshold(); break; case 2: // Maximum Variance thresholds = h.getMaxVarianceThreshold(); break; case 3: // Minimum Error thresholds = h.getMinErrorThreshold(); break; case 4: // Minimum Fuzziness thresholds = h.getMinFuzzinessThreshold(); break; } int threshold = (int) thresholds[0]; BufferedImage bin = (binarize(threshold, j)); return bin; }
From source file:fr.gael.dhus.datastore.processing.ProcessingUtils.java
public static RenderedImage resizeImage(RenderedImage image, int width, int height, float max_ratio, boolean can_cut) { RenderedImage resizedImage = image; /*/*from w w w . j a va2 s. com*/ // Select the displayable bands if (resizedImage.getNumBands () <= 2) { logger.debug("Grayscale image case"); resizedImage = JAI.create("bandselect", resizedImage, new int[] { 0 }); } else { logger.debug("RGB image case: [1 2 3]"); resizedImage = JAI.create("bandselect", resizedImage, new int[] {0, 1, 2}); } */ // Cut image if necessary if (can_cut == true) { resizedImage = ProcessingUtils.cutQuickLook(resizedImage, 2.0, 2); logger.debug("Image resized and cutted in band : " + resizedImage.getWidth() + "x" + resizedImage.getHeight()); } // Computes ratio and scale float scale = 1; if (resizedImage.getWidth() >= resizedImage.getHeight()) { scale = (float) ((double) width / (double) resizedImage.getWidth()); } else { scale = (float) ((double) height / (double) resizedImage.getHeight()); } // Processing resize process ParameterBlock pb = new ParameterBlock(); // The source image pb.addSource(resizedImage); // The xScale pb.add(scale); // The yScale pb.add(scale); // The x translation pb.add(0.0F); // The y translation pb.add(0.0F); // The interpolation pb.add(Interpolation.getInstance(Interpolation.INTERP_BICUBIC)); resizedImage = JAI.create("scale", pb, null); logger.debug("Image resized to : " + resizedImage.getWidth() + "x" + resizedImage.getHeight()); if ((width != resizedImage.getWidth()) && (height != resizedImage.getHeight())) { logger.debug("Final resize to complete expected image output"); resizedImage = resizeImage(resizedImage, width, height, 0, false); } else { pb = new ParameterBlock().addSource(resizedImage); pb.add(new float[] { 0.002f }); // normalize factor 0.02% pb.add(null); // visible region pb.add(4); // x period pb.add(4); // y period resizedImage = JAI.create("normalize", pb); /* Does not work because of color model issue resizedImage = ColorQuantizerDescriptor.create( resizedImage, ColorQuantizerDescriptor.OCTTREE, new Integer(255), new Integer(300), null, new Integer(4), new Integer(4), null); */ } return resizedImage; }
From source file:net.daimonin.client3d.editor.main.Editor3D.java
/** * Builds a single PNG out of all ImageSetImages, considering their calculated * coordinates.// www .j a v a 2 s. co m * * @param fileNameImageSet Name of resulting PNG. * @param dimension [width, height] of the resulting PNG. where 0 is maximum * compression, 1 is no compression at all. * @throws IOException IOException. */ private static void writeImageSet(final String fileNameImageSet, final int[] dimension) throws IOException { BufferedImage bigImg = new BufferedImage(dimension[0], dimension[1], BufferedImage.TYPE_INT_ARGB); Graphics2D big = bigImg.createGraphics(); for (int i = 0; i < images.size(); i++) { if (images.get(i).getBorderSize() > 0) { ParameterBlock params = new ParameterBlock(); params.addSource(images.get(i).getImage()); params.add(images.get(i).getBorderSize()); // left pad params.add(images.get(i).getBorderSize()); // right pad params.add(images.get(i).getBorderSize()); // top pad params.add(images.get(i).getBorderSize()); // bottom pad params.add(new BorderExtenderConstant(new double[] { images.get(i).getBorderColor().getRed(), images.get(i).getBorderColor().getGreen(), images.get(i).getBorderColor().getBlue(), BORDERCOLORMAX })); big.drawImage(JAI.create("border", params).getAsBufferedImage(), images.get(i).getPosX(), images.get(i).getPosY(), null); } else { big.drawImage(images.get(i).getImage(), images.get(i).getPosX(), images.get(i).getPosY(), null); } } big.dispose(); ImageIO.write(bigImg, "png", new File(fileNameImageSet)); printInfo(System.getProperty("user.dir") + "/" + imageset + " created"); }
From source file:net.filterlogic.util.imaging.ToTIFF.java
/** * convert rgb image to grayscale//w w w.j ava2s . c o m * * typical weights for converting RGB to Grayscale * gray = 0.3*red + 0.59*green + 0.11*blue */ public static synchronized RenderedOp convertRGBToGrayscaleImage(RenderedImage ri) { double[][] matrix = { { 0.3D, 0.59D, 0.11D, 0D } }; ParameterBlock pb = new ParameterBlock(); pb.addSource(ri); pb.add(matrix); return JAI.create("BandCombine", pb, null); }
From source file:adams.data.imagemagick.PPMOutputConsumer.java
/** * Reads the ppm input stream into a {@link BufferedImage}. * /*from w w w.j a v a2 s . co m*/ * @param stream the stream to read from * @throws IOException if reading from stream fails */ @Override public void consumeOutput(InputStream stream) throws IOException { byte[] bytes; ByteArraySeekableStream bstream; ParameterBlock pb; RenderedOp op; m_Image = null; bytes = IOUtils.toByteArray(stream); bstream = new ByteArraySeekableStream(bytes); pb = new ParameterBlock(); pb.add(bstream); op = JAI.create("PNM", pb); m_Image = op.getAsBufferedImage(); }
From source file:com.alibaba.simpleimage.ScaleTest.java
public PlanarImage doSubsampleAverage(PlanarImage op) throws Exception { double zoom = dScale; ParameterBlock pb = new ParameterBlock(); pb.addSource(op);/*from w w w . j av a2s.c om*/ pb.add(zoom); pb.add(zoom); RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); RenderedOp zoomOp = JAI.create("SubsampleAverage", pb, qualityHints); return zoomOp; }
From source file:com.alibaba.simpleimage.ScaleTest.java
public PlanarImage doScaleNearest(PlanarImage op) throws Exception { ParameterBlock pb = new ParameterBlock(); pb.addSource(op);//from w w w . j a v a 2 s . c o m pb.add(scale); pb.add(scale); pb.add(0.0F); pb.add(0.0F); pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST)); RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); op = JAI.create("scale", pb, qualityHints); return op; }
From source file:com.alibaba.simpleimage.ScaleTest.java
public PlanarImage doScaleBilinear(PlanarImage op) throws Exception { ParameterBlock pb = new ParameterBlock(); pb.addSource(op);/*from www . j a v a 2 s . c o m*/ pb.add(scale); pb.add(scale); pb.add(0.0F); pb.add(0.0F); pb.add(Interpolation.getInstance(Interpolation.INTERP_BILINEAR)); RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); op = JAI.create("scale", pb, qualityHints); return op; }