ij.plugin.filter
Class Projector

java.lang.Object
  extended by ij.plugin.filter.Projector
All Implemented Interfaces:
PlugInFilter

public class Projector
extends java.lang.Object
implements PlugInFilter

This plugin creates a sequence of projections of a rotating volume (stack of slices) onto a plane using nearest-point (surface), brightest-point, or mean-value projection or a weighted combination of nearest- point projection with either of the other two methods (partial opacity). The user may choose to rotate the volume about any of the three orthogonal axes (x, y, or z), make portions of the volume transparent (using thresholding), or add a greater degree of visual realism by employing depth cues. Based on Pascal code contributed by Michael Castle of the University of Michigan Mental Health Research Institute.


Field Summary
(package private)  java.lang.String[] axisList
           
(package private)  boolean batchMode
           
(package private) static int BIGPOWEROF2
           
(package private)  int bottom
           
(package private)  byte[] brightCueArray
           
(package private) static int brightestPoint
           
(package private)  short[] countBuffer
           
(package private)  short[] cueZBuffer
           
(package private)  boolean done
           
(package private)  int height
           
(package private)  int imageWidth
           
(package private)  ImagePlus imp
           
(package private)  boolean isRGB
           
(package private)  java.lang.String label
           
(package private)  int left
           
(package private) static int meanValue
           
(package private)  java.lang.String[] methodList
           
(package private) static int nearestPoint
           
(package private)  byte[] opaArray
           
(package private)  byte[] projArray
           
(package private)  int right
           
(package private)  ImageStack stack
           
(package private)  ImageStack stack2
           
(package private)  int[] sumBuffer
           
(package private)  int top
           
(package private)  int width
           
(package private) static int xAxis
           
(package private) static int yAxis
           
(package private) static int zAxis
           
(package private)  short[] zBuffer
           
 
Fields inherited from interface ij.plugin.filter.PlugInFilter
CONVERT_TO_FLOAT, DOES_16, DOES_32, DOES_8C, DOES_8G, DOES_ALL, DOES_RGB, DOES_STACKS, DONE, FINAL_PROCESSING, NO_CHANGES, NO_IMAGE_REQUIRED, NO_UNDO, PARALLELIZE_STACKS, ROI_REQUIRED, SNAPSHOT, STACK_REQUIRED, SUPPORTS_MASKING
 
Constructor Summary
Projector()
           
 
Method Summary
(package private)  void allocateArrays(int nProjections, int projwidth, int projheight)
           
(package private)  void doOneProjectionX(int nSlices, int ycenter, int zcenter, int projwidth, int projheight, int costheta, int sintheta)
          This method projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the x-axis.
(package private)  void doOneProjectionY(int nSlices, int xcenter, int zcenter, int projwidth, int projheight, int costheta, int sintheta)
          Projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the y-axis.
(package private)  void doOneProjectionZ(int nSlices, int xcenter, int ycenter, int zcenter, int projwidth, int projheight, int costheta, int sintheta)
          Projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the z-axis.
 ImagePlus doProjections(ImagePlus imp)
           
 void doRGBProjections(ImagePlus imp)
           
 void getByteRow(ImageStack stack, int x, int y, int z, int width1, int width2, int[] line)
           
 void getRGBRow(ImageStack stack, int x, int y, int z, int width1, int width2, int[] line)
           
 void putByteRow(ImageStack stack, int y, int z, int width, int[] line)
           
 void putRGBRow(ImageStack stack, int y, int z, int width, int[] line)
           
 void run(ImageProcessor ip)
          Filters use this method to process the image.
 int setup(java.lang.String arg, ImagePlus imp)
          This method is called once when the filter is loaded.
 boolean showDialog()
           
(package private)  ImagePlus zScale(ImagePlus imp)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

xAxis

static final int xAxis
See Also:
Constant Field Values

yAxis

static final int yAxis
See Also:
Constant Field Values

zAxis

static final int zAxis
See Also:
Constant Field Values

nearestPoint

static final int nearestPoint
See Also:
Constant Field Values

brightestPoint

static final int brightestPoint
See Also:
Constant Field Values

meanValue

static final int meanValue
See Also:
Constant Field Values

BIGPOWEROF2

static final int BIGPOWEROF2
See Also:
Constant Field Values

axisList

java.lang.String[] axisList

methodList

java.lang.String[] methodList

imp

ImagePlus imp

stack

ImageStack stack

stack2

ImageStack stack2

width

int width

height

int height

imageWidth

int imageWidth

left

int left

right

int right

top

int top

bottom

int bottom

projArray

byte[] projArray

opaArray

byte[] opaArray

brightCueArray

byte[] brightCueArray

zBuffer

short[] zBuffer

cueZBuffer

short[] cueZBuffer

countBuffer

short[] countBuffer

sumBuffer

int[] sumBuffer

isRGB

boolean isRGB

label

java.lang.String label

done

boolean done

batchMode

boolean batchMode
Constructor Detail

Projector

public Projector()
Method Detail

setup

public int setup(java.lang.String arg,
                 ImagePlus imp)
Description copied from interface: PlugInFilter
This method is called once when the filter is loaded. 'arg', which may be blank, is the argument specified for this plugin in IJ_Props.txt or in the plugins.config file of a jar archive containing the plugin. 'imp' is the currently active image. This method should return a flag word that specifies the filters capabilities.

For Plugin-filters specifying the FINAL_PROCESSING flag, the setup method will be called again, this time with arg = "final" after all other processing is done.

Specified by:
setup in interface PlugInFilter

run

public void run(ImageProcessor ip)
Description copied from interface: PlugInFilter
Filters use this method to process the image. If the SUPPORTS_STACKS flag was set, it is called for each slice in a stack. With CONVERT_TO_FLOAT, the filter is called with the image data converted to a FloatProcessor (3 times per image for RGB images). ImageJ will lock the image before calling this method and unlock it when the filter is finished. For PlugInFilters specifying the NO_IMAGE_REQUIRED flag and not the DONE flag, run(ip) is called once with the argument null.

Specified by:
run in interface PlugInFilter

showDialog

public boolean showDialog()

doRGBProjections

public void doRGBProjections(ImagePlus imp)

doProjections

public ImagePlus doProjections(ImagePlus imp)

allocateArrays

void allocateArrays(int nProjections,
                    int projwidth,
                    int projheight)

doOneProjectionX

void doOneProjectionX(int nSlices,
                      int ycenter,
                      int zcenter,
                      int projwidth,
                      int projheight,
                      int costheta,
                      int sintheta)
This method projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the x-axis. Integer arithmetic, precomputation of values, and iterative addition rather than multiplication inside a loop are used extensively to make the code run efficiently. Projection parameters stored in global variables determine how the projection will be performed. This procedure returns various buffers which are actually used by DoProjections() to find the final projected image for the volume of slices at the current angle.


doOneProjectionY

void doOneProjectionY(int nSlices,
                      int xcenter,
                      int zcenter,
                      int projwidth,
                      int projheight,
                      int costheta,
                      int sintheta)
Projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the y-axis.


doOneProjectionZ

void doOneProjectionZ(int nSlices,
                      int xcenter,
                      int ycenter,
                      int zcenter,
                      int projwidth,
                      int projheight,
                      int costheta,
                      int sintheta)
Projects each pixel of a volume (stack of slices) onto a plane as the volume rotates about the z-axis.


zScale

ImagePlus zScale(ImagePlus imp)

getByteRow

public void getByteRow(ImageStack stack,
                       int x,
                       int y,
                       int z,
                       int width1,
                       int width2,
                       int[] line)

putByteRow

public void putByteRow(ImageStack stack,
                       int y,
                       int z,
                       int width,
                       int[] line)

getRGBRow

public void getRGBRow(ImageStack stack,
                      int x,
                      int y,
                      int z,
                      int width1,
                      int width2,
                      int[] line)

putRGBRow

public void putRGBRow(ImageStack stack,
                      int y,
                      int z,
                      int width,
                      int[] line)