Package java.awt.image.renderable

Examples of java.awt.image.renderable.ParameterBlock


    private RenderedImage segment_bah(RenderedImage image) {
        image = Functions.fromByteToUShort(image, null);

        RenderingHints hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER,
                                                  BorderExtender.createInstance(BorderExtender.BORDER_COPY));
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(image);
        pb.add(4f);
        pb.add(20f);
        RenderedOp filtered = JAI.create("BilateralFilter", pb, hints);

        filtered = Functions.fromUShortToByte(filtered, null);

        RenderedImage result = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
View Full Code Here


            super(source);
        }

        public PlanarImage setFront() {
            double hslTransform[][] = computeTransform();
            ParameterBlock pb = new ParameterBlock();
            pb.addSource(back);
            pb.add(hslTransform);
            PlanarImage image = JAI.create("BandCombine", pb, JAIContext.noCacheHint);

            if (vibrance != 0.0)
                image = new IntVibranceOpImage(image, computeVibranceTransform(), null);
View Full Code Here

            if (lastBack.get() != back || mask.get() == null || depth != last_radius || fuzz != last_fuzz) {
                RenderedImage singleChannel;
                if (back.getColorModel().getNumComponents() == 3) {
                    double[][] yChannel = new double[][]{{ColorScience.Wr, ColorScience.Wg, ColorScience.Wb, 0}};

                    ParameterBlock pb = new ParameterBlock();
                    pb.addSource( back );
                    pb.add( yChannel );
                    singleChannel = JAI.create("BandCombine", pb, null);
                } else
                    singleChannel = back;

                BorderExtender copyExtender = BorderExtender.createInstance(BorderExtender.BORDER_COPY);
                RenderingHints extenderHints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, copyExtender);

                PlanarImage maskImage = new FastBilateralFilterOpImage(singleChannel,
                                                                       JAIContext.fileCacheHint,
                                                                       (float) (depth * scale), 0.1f);

//                ParameterBlock pb = new ParameterBlock();
//                pb.addSource(maskImage);
//                pb.add(new int[]{1});
//                maskImage = JAI.create("bandselect", pb, null);

                if (true) {
                    ParameterBlock pb = new ParameterBlock();
                    pb.addSource(maskImage);
                    pb.add(new int[]{0});
                    RenderedOp bfMask = JAI.create("bandselect", pb, null);

                    KernelJAI kernel = Functions.getGaussKernel(10 * fuzz * scale);
                    pb = new ParameterBlock();
                    pb.addSource(bfMask);
                    pb.add(kernel);
                    RenderedOp blurredMask = JAI.create("LCSeparableConvolve", pb, extenderHints);

                    pb = new ParameterBlock();
                    pb.addSource( maskImage );
                    pb.addSource( blurredMask );
                    maskImage = JAI.create("BandMerge", pb, null);
                } else {
                    ParameterBlock pb = new ParameterBlock();
                    pb.addSource(maskImage);
                    pb.add(new int[]{0});
                    maskImage = JAI.create("bandselect", pb, null);

                    KernelJAI kernel = Functions.getGaussKernel(10 * fuzz * scale);
                    pb = new ParameterBlock();
                    pb.addSource(maskImage);
                    pb.add(kernel);
                    maskImage = JAI.create("LCSeparableConvolve", pb, extenderHints);
                }

                last_radius = fuzz;
                last_fuzz = detail;
View Full Code Here

                for (int i = 0; i < 0x10000; i++)
                    table[2][i] = (short) (0xffff & (int) Math.min(Math.max(i + 0xff * interpolator.interpolate(i / (double) 0xffff, blueCurve), 0), 0xffff));

                LookupTableJAI lookupTable = new LookupTableJAI(table, true);

                ParameterBlock pb = new ParameterBlock();
                pb.addSource(back);
                pb.add(lookupTable);
                return JAI.create("lookup", pb, JAIContext.noCacheHint);
            } else {
                return back;
            }
        }
View Full Code Here

                                                              LCMSColorConvertDescriptor.RELATIVE_COLORIMETRIC, null);
                // PlanarImage labImage = Functions.toColorSpace(back, JAIContext.labColorSpace, null);

                RenderedImage redMask = new RedMaskOpImage(labImage, tolerance, null);

                ParameterBlock pb;

                KernelJAI morphKernel = new KernelJAI(3, 3, new float[] {1, 1, 1, 1, 0, 1, 1, 1, 1});
                pb = new ParameterBlock();
                pb.addSource(redMask);
                pb.add(morphKernel);
                redMask = JAI.create("dilate", pb, null);

                /* pb = new ParameterBlock();
                pb.addSource(redMask);
                pb.add(morphKernel);
                redMask = JAI.create("erode", pb, null); */

                KernelJAI blurKernel = Functions.getGaussKernel(4 * scale);
                pb = new ParameterBlock();
                pb.addSource(redMask);
                pb.add(blurKernel);
                redMask = JAI.create("LCSeparableConvolve", pb, null);

                return new RedMaskBlackener(back, redMask, null);

                // return Functions.fromByteToUShort(redMask, null);
View Full Code Here

            target = rendering.getInputTransform().transform(target, null);

            int dx = (int) (target.getX() - source.getX());
            int dy = (int) (target.getY() - source.getY());

            ParameterBlock pb = new ParameterBlock();
            pb.addSource(back);
            pb.add((float) dx);
            pb.add((float) dy);
            RenderedOp translated = JAI.create("Translate", pb, JAIContext.noCacheHint);

            pb = new ParameterBlock();
            pb.addSource(translated);
            pb.add((int) (dx > 0 ? dx : 0));
            pb.add((int) (dx < 0 ? -dx : 0));
            pb.add((int) (dy > 0 ? dy : 0));
            pb.add((int) (dy < 0 ? -dy : 0));
            pb.add(BorderExtender.createInstance(BorderExtender.BORDER_ZERO));
            RenderedOp border = JAI.create("Border", pb, JAIContext.noCacheHint);

            pb = new ParameterBlock();
            pb.addSource(border);
            pb.add((float) back.getMinX());
            pb.add((float) back.getMinY());
            pb.add((float) back.getWidth());
            pb.add((float) back.getHeight());
            RenderedOp crop = JAI.create("Crop", pb, JAIContext.noCacheHint);

            // Format retiles the image
            // TODO: this needs better understanding, can we just specify the layout for Crop?
            pb = new ParameterBlock();
            pb.addSource(crop);
            pb.add(back.getSampleModel().getDataType());
            RenderingHints formatHints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, new ImageLayout(back));
            formatHints.add(JAIContext.noCacheHint);
            RenderedOp formatted = JAI.create("Format", pb, formatHints);

            Region r = new Region() {
                public Collection getContours() {
                    return Collections.singleton(contour);
                }

                public Shape getOuterShape() {
                    return contour.getOuterShape();
                }

                public float getWidth() {
                    return contour.getWidth();
                }

                public Point2D getTranslation() {
                    return contour.getTranslation();
                }
            };

            LCROIShape mask = new LCROIShape(r, rendering.getInputTransform());

            pb = new ParameterBlock();
            pb.addSource(formatted);
            pb.addSource(image);
            pb.add("Normal");
            pb.add(new Double(1));
            pb.add(mask);

            // RenderingHints blendHints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, new ImageLayout(back));
            // NOTE: I guess that it is more efficient to cache the different cloned areas...
            // blendHints.add(JAIContext.noCacheHint);
            image = JAI.create("Blend", pb, null);
View Full Code Here

        return dst;
    }

    static private BufferedImage getGaussianBlur(int size, BufferedImage image) {
        KernelJAI kernel = Functions.getGaussKernel(size / 3.0);
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(image);
        pb.add(kernel);
        RenderingHints hints = new RenderingHints(JAI.KEY_BORDER_EXTENDER,
                                                  BorderExtender.createInstance(BorderExtender.BORDER_COPY));
        hints.add(JAIContext.noCacheHint);
        return JAI.create("LCSeparableConvolve", pb, hints).getAsBufferedImage();
    }
View Full Code Here

            super(source);
        }

        public PlanarImage setFront() {
            Wt = W(original, target);
            ParameterBlock pb = new ParameterBlock();
            pb.addSource(back);
            pb.add(Wt);
            return JAI.create("MultiplyConst", pb, JAIContext.noCacheHint);
        }
View Full Code Here

            ColorScience.LinearTransform transform = new ColorScience.YST();

            double[][] rgb2yst = transform.fromRGB(back.getSampleModel().getDataType());
            double[][] yst2rgb = transform.toRGB(back.getSampleModel().getDataType());

            ParameterBlock pb = new ParameterBlock();
            pb.addSource( back );
            pb.add( rgb2yst );
            RenderedOp ystImage = JAI.create("BandCombine", pb, null);

            RenderingHints mfHints = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(BorderExtender.BORDER_COPY));

            if (chroma_domain != 0 && chroma_range != 0) {
                pb = new ParameterBlock();
                pb.addSource(ystImage);
                pb.add(chroma_domain * scale);
                pb.add(0.02f + 0.001f * chroma_domain);
                // pb.add(0.1f);
                ystImage = JAI.create("BilateralFilter", pb, mfHints);
                ystImage.setProperty(JAIContext.PERSISTENT_CACHE_TAG, Boolean.TRUE);
            }

            if (luma_domain != 0 && luma_range != 0) {
                pb = new ParameterBlock();
                pb.addSource(ystImage);
                pb.add(new int[]{0});
                RenderedOp y = JAI.create("bandselect", pb, null);

                pb = new ParameterBlock();
                pb.addSource(ystImage);
                pb.add(new int[]{1, 2});
                RenderedOp cc = JAI.create("bandselect", pb, JAIContext.noCacheHint);

                pb = new ParameterBlock();
                pb.addSource( y );
                pb.add((2 + luma_domain / 10f)* scale);
                pb.add(0.005f * luma_domain);
                y = JAI.create("BilateralFilter", pb, mfHints);

                RenderingHints layoutHints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, Functions.getImageLayout(ystImage));
                pb = new ParameterBlock();
                pb.addSource(y);
                pb.addSource(cc);
                layoutHints.add(JAIContext.noCacheHint);
                ystImage = JAI.create("BandMerge", pb, layoutHints);
            }

            pb = new ParameterBlock();
            pb.addSource( ystImage );
            pb.add( yst2rgb );
            front = JAI.create("BandCombine", pb, null);
            front.setProperty(JAIContext.PERSISTENT_CACHE_TAG, Boolean.TRUE);

            return front;
        }
View Full Code Here

            // This block is just a JAI way to make a scaled rendering of the
            // given button image using JAI.

            RenderedImage adjustedIcon;
            if (!transform.isIdentity()) {
                ParameterBlock pb = new ParameterBlock();
                pb.addSource(icon);
                pb.add(transform);
                pb.add(interp);
                adjustedIcon = JAI.create("Affine", pb, extenderHint);
            } else
                adjustedIcon = icon;

            ParameterBlock pb = new ParameterBlock();
            pb.add((float) buttonTile.getWidth());
            pb.add((float) buttonTile.getHeight());
            pb.add(new Byte[]{new Byte((byte) 0),
                              new Byte((byte) 0),
                              new Byte((byte) 0),
                              new Byte((byte) 0)});
            final RenderedOp zero = JAI.create("Constant", pb, null);

            final RenderedOp extendedIcon = JAI.create("Overlay", zero, adjustedIcon);

            final BufferedImage allRGB = new BufferedImage(buttonTile.getWidth(), buttonTile.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
            allRGB.setData(buttonTile.getData().createChild(0, 0,
                buttonTile.getWidth(), buttonTile.getHeight(),
                0, 0, new int[]{0, 1, 2}));

            final BufferedImage allAlpha = new BufferedImage(buttonTile.getWidth(), buttonTile.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
            allAlpha.setData(buttonTile.getData().createChild(0, 0,
                buttonTile.getWidth(), buttonTile.getHeight(),
                0, 0, new int[]{3}));

            final BufferedImage iconRGB = new BufferedImage(extendedIcon.getWidth(), extendedIcon.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
            iconRGB.setData(extendedIcon.getData().createChild(0, 0,
                extendedIcon.getWidth(), extendedIcon.getHeight(),
                0, 0, new int[]{0, 1, 2}));

            final BufferedImage iconAlpha = new BufferedImage(extendedIcon.getWidth(), extendedIcon.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
            iconAlpha.setData(extendedIcon.getData().createChild(0, 0,
                extendedIcon.getWidth(), extendedIcon.getHeight(),
                0, 0, new int[]{3}));

            pb = new ParameterBlock();
            pb.addSource(iconRGB);
            pb.addSource(allRGB);
            pb.add(iconAlpha);
            pb.add(allAlpha);
            pb.add(new Boolean(false));
            pb.add(CompositeDescriptor.DESTINATION_ALPHA_LAST);
            return JAI.create("Composite", pb, null).getAsBufferedImage();
        }
    }
View Full Code Here

TOP

Related Classes of java.awt.image.renderable.ParameterBlock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.