Stacks deinterleave plus z project

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

Stacks deinterleave plus z project

heiserhorn
Hi
I'm trying to modify an imagej plugin to speed up my image analisis.
I work with 2 channels .tif images.

here is the plugin i've modifyied:

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.*;

/** This plugin removes slices from a stack. */
public class Deinterleave_Mike implements PlugIn {
        private static int slices= 1;
        private static int nCh = 2;
        private static int last;
        private static int nStacks = 2;
        String title;
       
       
        public void run(String arg) {
                ImagePlus imp = WindowManager.getCurrentImage();
                if (imp==null)
                        {IJ.noImage(); return;}
                ImageStack stack = imp.getStack();
                if (stack.getSize()==1)
                        {IJ.error("Stack Required"); return;}
               
                title=imp.getTitle();
                keepSlices(stack, nStacks);
               
       
                IJ.register(Deinterleave_Mike.class);
        }


        public void keepSlices(ImageStack stack, int nStacks)
        {
               
                int first =0;
                last = stack.getSize();
                int slices = last/nStacks;
  int count = 0;
                int sliceCount=0;
                ImageStack newstack;
                ImageProcessor ip;
                int s2;

                for (int i=0; i<nStacks; i++)
                        {
                        newstack = new ImageStack(stack.getWidth(), stack.getHeight()) ;
                        for(int s=0; s<slices; s++)
                                {
                                s2=i+(nStacks*s)+1;
                                if(s2<=last){
                                ip = stack.getProcessor(s2);
                                newstack.addSlice("slice:" + stack.getSliceLabel(s2) +"  "+ s2, ip);}
                        }
                                       
                        IJ.run("Smooth", "stack");
                        new ImagePlus(title+" #"+i, newstack).show();
                        if (i==0)
                                {
                                IJ.run("Z Project...", "projection=[Max Intensity]");
                                IJ.run("Brightness/Contrast...", "setMinAndMax(30, 80)");
       

                                }

                        if (i==1)
                                {

                                IJ.run("Z Project...", "projection=[Max Intensity]");
                                IJ.run("Brightness/Contrast...", "setMinAndMax(30, 50)");


                                }
                                       
                        }
               
               
        }

}

I start from a 2 channels stack, i create 2 stack (channel 0 and channel 1) then I do the max projection of these last two stack. A the end I want to set a min and max of brihtness at the max projection that is different for the two.
with this plugin the min and max are applyed to the stacks and not to the max projection.

Any Idea how to make it working?

Cheers

Mike