//----------------------------------------------------------------------------// // // // J a i D e w a r p e r // // // //----------------------------------------------------------------------------// // <editor-fold defaultstate="collapsed" desc="hdr"> // // Copyright (C) Brenton Partridge 2007-2008. // // This software is released under the GNU General Public License. // // Goto http://kenai.com/projects/audiveris to report bugs or suggestions. // //----------------------------------------------------------------------------// // </editor-fold> package omr.sheet.picture.jai; import omr.sheet.Sheet; import omr.sheet.picture.Picture; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import javax.media.jai.InterpolationBilinear; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; import javax.media.jai.Warp; import javax.media.jai.WarpGrid; /** * Class {@code JaiDewarper} is meant to keep JAI-based dewarping * features separate from the rest of Audiveris application, and thus * saving on jar download. * * @author Hervé Bitteur */ public class JaiDewarper { //~ Instance fields -------------------------------------------------------- /** The related sheet. */ private final Sheet sheet; /** The dewarp grid */ private Warp dewarpGrid; //~ Constructors ----------------------------------------------------------- /** * Creates a new JaiDewarper object. * * @param sheet the related sheet */ public JaiDewarper (Sheet sheet) { this.sheet = sheet; } //~ Methods ---------------------------------------------------------------- // //----------------// // createWarpGrid // //----------------// public void createWarpGrid (int xStart, int xStep, int xNumCells, int yStart, int yStep, int yNumCells, float[] warpPositions) { dewarpGrid = new WarpGrid( xStart, xStep, xNumCells, yStart, yStep, yNumCells, warpPositions); } //-------------// // dewarpImage // //-------------// public RenderedImage dewarpImage () { ParameterBlock pb = new ParameterBlock(); pb.addSource(Picture.invert(sheet.getPicture().getImage())); pb.add(dewarpGrid); pb.add(new InterpolationBilinear()); RenderedImage dewarpedImage = Picture.invert(JAI.create("warp", pb)); ((PlanarImage) dewarpedImage).getTiles(); return dewarpedImage; } }