Image Locked

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Image Locked

Michael Doube
Hi All

I've written a simple plugin to normalise pixel values, making a new
8-bit normalised copy of the original 16-bit DICOM image.

When I try to run the plugin, IJ complains, saying that the image is
locked.  If I try to unlock it (Plugins->Utilities->Reset...), ImageJ
tells me that the image is not locked.  What can I change to make this
plugin work?

Cheers

Mike

import ij.IJ;
import ij.ImagePlus;
import ij.gui.GenericDialog;
import ij.process.ImageProcessor;
import ij.process.ByteProcessor;
import ij.plugin.filter.PlugInFilter;

public class Normalise_Topo implements PlugInFilter {
        public int setup(String arg, ImagePlus img) {
                return DOES_16 + DOES_8G;
        }

        public void run(ImageProcessor ip){
                IJ.run("Invert");
                int min = 4000; int max = 15000;
                GenericDialog gd = new GenericDialog("Set Standards");
         gd.addNumericField("Al:",min,0);
         gd.addNumericField("Nylon:",max,0);
         gd.showDialog();
         if (gd.wasCanceled()) {
             IJ.error("PlugIn canceled!");
             return;
         }
         min = (int)gd.getNextNumber();
         max = (int)gd.getNextNumber();
                int w = ip.getWidth();
                int h = ip.getHeight();
                int[] p = new int[w*h];
                for (int y = 0; y<h; y++){
                        for (int x = 0; x<w; x++){
                                p[y*w+x] = (ip.getPixel(x,y)-min)*255/(max-min);
                        }
                }
                IJ.run("close");
               
                ImageProcessor norm = new ByteProcessor(w,h);
                for (int y = 0; y<h; y++){
                        for (int x = 0; x<w; x++){
                                norm.putPixel(x,y, p[y*w+x]);
                        }
                }
                String title = "Normalised Image";
                ImagePlus normIm = new ImagePlus(title, norm);
                normIm.show();
        }
}
Reply | Threaded
Open this post in threaded view
|

Re: Image Locked

Gabriel Landini
On Thursday 31 July 2008 15:39:45 Michael Doube wrote:
> I've written a simple plugin to normalise pixel values, making a new
> 8-bit normalised copy of the original 16-bit DICOM image.
>
> When I try to run the plugin, IJ complains, saying that the image is
> locked.  If I try to unlock it (Plugins->Utilities->Reset...), ImageJ
> tells me that the image is not locked.  What can I change to make this
> plugin work?

> public class Normalise_Topo implements PlugInFilter {

Not sure if relevant here, but PlugInFilter plugins lock the image while
processing. Have you tried rewriting it as a "PlugIn" ?

Cheers

G.