Login  Register

Re: Reusing Make Binary and Skeletonize methods

Posted by Wayne Rasband on Dec 12, 2008; 4:11pm
URL: http://imagej.273.s1.nabble.com/Reusing-Make-Binary-and-Skeletonize-methods-tp3694262p3694263.html

On Dec 12, 2008, at 9:11 AM, Hector Longarte wrote:

> Hello Imagers,
> I need help with this: I need to use the plugins of imageJ in my
> application  with the command for Make binary:
>
> *IJ.runPlugin(imp,"ij.plugin.Thresholder", "Make Binary");*
>
> And skeletize it...
> *IJ.runPlugIn(imp,"ij.plugin.filter.Binary", "Skeletonize");    *
>
> But the image I get appears noised all times,may be I am missing some
> parameter?

The only parameter used by the "Make Binary" and "Skeletonize" commands
is the "Black Background" flag that is set in the
Process>Binary>Options dialog box. Run this code

    Prefs.blackBackground = true;
    IJ.run(imp, "Make Binary", "");
    IJ.run(imp, "Skeletonize", "");

and the image ('imp') and will be converted to an 8-bit image with a
white skeleton on a black background. Run this code

    Prefs.blackBackground = false;
    IJ.run(imp, "Make Binary", "");
    IJ.run(imp, "Skeletonize", "");

and you will get a black skeleton on a white background. In both cases
the background will be zero, but the image with a white background will
have in inverting lookup table.

-wayne

>
> I am copying here the classes I am writting ..
> If someone can help me I will send the image of the check to personal
> mail
> because this list does not accept attached files ...
>
> Thank you very much if someone may help me..
>
> *Class for the preprocessing:*
>
> package com;
> import ij.IJ;
> import ij.ImagePlus;
> import java.awt.image.BufferedImage;
>
> public class Preprocessing {
>
>     //  Binarizacion...
>    public BufferedImage umbralizarFirma(BufferedImage firma) {
>         ImagePlus imp;
>         imp = new ImagePlus("firmaOriginal", firma);
>         IJ.runPlugIn(imp,"ij.plugin.filter.Binary", "Make Binary");
>         BufferedImage bf = (BufferedImage) imp.getImage();
>         return bf;
>     }
>     //  Skeletonize...
>     public BufferedImage skeletonFirma(BufferedImage firma) {
>         ImagePlus imp;
>         imp = new ImagePlus("firmaOriginal", firma);
>         IJ.runPlugIn(imp,"ij.plugin.filter.Binary", "Skeletonize");
>         BufferedImage bf = (BufferedImage) imp.getImage();
>         return bf;
>     }
> }
> ------------------------------
> ----------------------------------------------------------
> *Main class:*
> package com;
> import java.awt.image.BufferedImage;
> import java.io.File;
> import javax.imageio.ImageIO;
> import com.Preprocessing;
>
> public class Director {
>     private BufferedImage imagen;
>
>     //Constructors...
>     public Director(String imagen) throws Exception {
>         this.imagen = ImageIO.read(new File(imagen));
>     }
>     public Director() { }
>
>
>     // Write image to disk...
>     public void guardarImagen(String nombreResultado) {
>         try {
>             ImageIO.write(imagen, "jpg", new File(nombreResultado));
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>     }
>
>     public static void main(String[] args) throws Exception {
>
>         // Load the check and cut the signature...
>         Director imagenCheque = new Director("c:/chequeAnverso.bmp");
>
>         Director imagenFirma = new Director();
>         System.out.println("*** Recortando desde el pixel 370,138
> ...");
>
>         imagenFirma.imagen = imagenCheque.imagen.getSubimage(370,
> 138,322,
> 135);
>         imagenFirma.guardarImagen("c:/firma5.bmp");
>
>         // Binarize the signature...
>         Preprocessing binarize = new Preprocessing();
>         imagenFirma.imagen =
> binarize.umbralizarFirma(imagenFirma.imagen);
>         imagenFirma.guardarImagen("c:/firmaBinarizada5.bmp");
>         System.out.println("*** Firma binarizada...");
>
>         // Skeletonize the signature...
>         imagenFirma.imagen =
> binarize.skeletonFirma(imagenFirma.imagen);
>         imagenFirma.guardarImagen("c:/firmaSkeleton5.bmp");
>         System.out.println("*** Firma skeletionized...");
>     }
> }
>