de.unihalle.informatik.MiToBo.filters.linear
Class GaussFilter

java.lang.Object
  extended by de.unihalle.informatik.Alida.operator.ALDOperator
      extended by de.unihalle.informatik.MiToBo.core.operator.MTBOperator
          extended by de.unihalle.informatik.MiToBo.filters.linear.GaussFilter
All Implemented Interfaces:
de.unihalle.informatik.Alida.datatypes.ALDConfigurationValidator, loci.common.StatusReporter

@ALDAOperator(genericExecutionMode=ALL)
public class GaussFilter
extends MTBOperator
implements loci.common.StatusReporter

Multidimensional Gauss filter class. The Gauss filter is implemented as separable filter, i.e. only Gaussians with a diagonal covariance matrix can be represented. The standard deviations (sigma) for each dimension x,y,z,t,c are specified individually. If any sigma is set to 0, no filtering in the corresponding dimension is applied. It can be specified, in which way the given sigmas are interpreted: The sigmas are whether interpreted to be specified in pixels or in physical pixel size (stepsize). The latter is simplifies the specification of (e.g. isotropic) kernels in the case, that pixel size differs in the different dimensions. Filtering in the c-dimension always assumes interpretation in pixels, because it is assumed that no spatial or temporal order exists between channels. By default, sigmas are interpreted to be specified in physical pixel size.

Author:
gress

Nested Class Summary
static class GaussFilter.SigmaInterpretation
          Indicator how to interpret the specified standard deviations: - PIXEL: Sigma is given in pixels - PHYSICALSIZE: Sigma is given in terms of the physical pixel size (see MTBImage.getStepsizeX/Y/Z/T, in c-dimension always pixel interpretation is used)
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode
 
Field Summary
private  MTBImageWindow.BoundaryPadding boundaryPadding
           
private  MTBImage inputImg
           
private  double kernelTrunctation
           
private  MTBImage resultImg
           
private  double sigmaC
           
private  GaussFilter.SigmaInterpretation sigmaInterpretation
           
private  double sigmaT
           
private  double sigmaX
           
private  double sigmaY
           
private  double sigmaZ
           
private  java.util.Vector<loci.common.StatusListener> statusListeners
          vector of installed StatusListeners
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, portHashAccess, verbose, versionProvider
 
Constructor Summary
GaussFilter()
          Constructor with default parameters sigmaX=1, sigmaY=1, sigmaZ=0, sigmaT=0, sigmaC=0, kernelTruncation=3, sigmaInterpretation=PHYSICALSIZE.
GaussFilter(MTBImage img, double sigmaX, double sigmaY)
          Constructor for Gaussian filtering in x- and y-dimension.
GaussFilter(MTBImage img, double sigmaX, double sigmaY, double sigmaZ)
          Constructor for Gaussian filtering in x-, y- and z-dimension.
GaussFilter(MTBImage img, double sigmaX, double sigmaY, double sigmaZ, double sigmaT, double sigmaC, MTBImageWindow.BoundaryPadding boundaryPadding, double kernelTruncation, GaussFilter.SigmaInterpretation sigmaInterpretation)
          Constructor for Gaussian filtering.
 
Method Summary
 void addStatusListener(loci.common.StatusListener statuslistener)
           
protected  MTBImage gaussFilter()
          compute the Gaussian filter
 MTBImageWindow.BoundaryPadding getBoundaryPadding()
          Get value of Parameter argument boundaryPadding.
 MTBImage getGaussKernelC()
          Get Gaussian kernel image (non-normalized) in c-dimension for given parameters, null if sigma is zero in c-dimension
 MTBImage getGaussKernelT()
          Get Gaussian kernel image (non-normalized) in t-dimension for given parameters, null if sigma is zero in t-dimension
 MTBImage getGaussKernelX()
          Get Gaussian kernel image (non-normalized) in x-dimension for given parameters, null if sigma is zero in x-dimension
 MTBImage getGaussKernelY()
          Get Gaussian kernel image (non-normalized) in y-dimension for given parameters, null if sigma is zero in y-dimension
 MTBImage getGaussKernelZ()
          Get Gaussian kernel image (non-normalized) in z-dimension for given parameters, null if sigma is zero in z-dimension
 MTBImage getInputImg()
          Get input image.
 double getKernelTruncation()
          Get kernel truncation factor.
 MTBImage getResultImg()
          Get resulting image.
 double getSigmaC()
          Get standard deviation (sigma) in c-dimension.
 GaussFilter.SigmaInterpretation getSigmaInterpretation()
          Get the mode of how sigmas are interpreted.
 double getSigmaT()
          Get standard deviation (sigma) in t-dimension.
 double getSigmaX()
          Get standard deviation (sigma) in x-dimension.
 double getSigmaY()
          Get standard deviation (sigma) in y-dimension.
 double getSigmaZ()
          Get standard deviation (sigma) in z-dimension.
 void notifyListeners(loci.common.StatusEvent e)
           
protected  void operate()
          This function calls the actual Gauss filtering method.
protected  java.lang.Object readResolve()
          Init function for deserialized objects.
 void removeStatusListener(loci.common.StatusListener statuslistener)
           
 void setBoundaryPadding(MTBImageWindow.BoundaryPadding boundaryPadding)
          Set value of Parameter argument boundaryPadding.
 void setInputImg(MTBImage img)
          Set input image.
 void setKernelTruncation(double kernelTruncation)
          Set kernel truncation factor.
protected  void setResultImg(MTBImage resultImg)
          Set resulting image.
 void setSigmaC(double sigmaC)
          Set standard deviation (sigma) in c-dimension.
 void setSigmaInterpretation(GaussFilter.SigmaInterpretation sigmaInterpretation)
          Set the mode of how sigmas are interpreted.
 void setSigmaT(double sigmaT)
          Set standard deviation (sigma) in t-dimension.
 void setSigmaX(double sigmaX)
          Set standard deviation (sigma) in x-dimension.
 void setSigmaY(double sigmaY)
          Set standard deviation (sigma) in y-dimension.
 void setSigmaZ(double sigmaZ)
          Set standard deviation (sigma) in z-dimension.
 void validateCustom()
          The validation of parameters and inputs.
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
deserializeFromXmlFile, fieldContained, getALDPortHashAccessKey, getConstructionMode, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterNames, getSupplementalNames, getVerbose, getVersion, isConfigured, parametersToXmlObject, print, print, print, printInterface, printInterface, readHistory, reinitializeParameterDescriptors, runOp, runOp, runOp, serializeToXmlFile, setConstructionMode, setName, setParameter, setParametersFromXml, setParametersFromXml, setVerbose, toStringVerbose, unconfiguredItems, validate, validateGeneric, writeHistory, writeHistory, writeHistory, writeParametersToXml
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

boundaryPadding

@Parameter(label="Boundary padding",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Image is padded by the specified method",
           dataIOOrder=9)
private MTBImageWindow.BoundaryPadding boundaryPadding

inputImg

@Parameter(label="Input Image",
           required=true,
           direction=IN,
           mode=STANDARD,
           description="Input image",
           dataIOOrder=1)
private transient MTBImage inputImg

kernelTrunctation

@Parameter(label="Kernel truncation",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Factor to determine where the kernel is truncated: sigma*kernelTruncation",
           dataIOOrder=8)
private double kernelTrunctation

resultImg

@Parameter(label="Result Image",
           required=true,
           direction=OUT,
           description="Result image",
           dataIOOrder=1)
private transient MTBImage resultImg

sigmaC

@Parameter(label="sigmaC",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Standard deviation of the Gaussian in c-dimension (Default: 0)",
           dataIOOrder=7)
private double sigmaC

sigmaInterpretation

@Parameter(label="sigma interpretation",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Interpretation of sigmas, whether in pixels or physical pixel size (stepsize)",
           dataIOOrder=2)
private GaussFilter.SigmaInterpretation sigmaInterpretation

sigmaT

@Parameter(label="sigmaT",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Standard deviation of the Gaussian in t-dimension (Default: 0)",
           dataIOOrder=6)
private double sigmaT

sigmaX

@Parameter(label="sigmaX",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Standard deviation of the Gaussian in x-dimension (Default: 1 micron)",
           dataIOOrder=3)
private double sigmaX

sigmaY

@Parameter(label="sigmaY",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Standard deviation of the Gaussian in y-dimension (Default: 1 micron)",
           dataIOOrder=4)
private double sigmaY

sigmaZ

@Parameter(label="sigmaZ",
           required=true,
           direction=IN,
           mode=ADVANCED,
           description="Standard deviation of the Gaussian in z-dimension (Default: 0)",
           dataIOOrder=5)
private double sigmaZ

statusListeners

private transient java.util.Vector<loci.common.StatusListener> statusListeners
vector of installed StatusListeners

Constructor Detail

GaussFilter

public GaussFilter()
            throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Constructor with default parameters sigmaX=1, sigmaY=1, sigmaZ=0, sigmaT=0, sigmaC=0, kernelTruncation=3, sigmaInterpretation=PHYSICALSIZE. An input image must be specified before running this operator.

Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

GaussFilter

public GaussFilter(MTBImage img,
                   double sigmaX,
                   double sigmaY)
            throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Constructor for Gaussian filtering in x- and y-dimension. Default for other parameters: sigmaZ=0, sigmaT=0, sigmaC=0, kernelTruncation=3, sigmaInterpretation=PHYSICALSIZE, boundaryPadding=PADDING_BORDER

Parameters:
img - input image
sigmaX - standard deviation in x-dimension
sigmaY - standard deviation in y-dimension
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

GaussFilter

public GaussFilter(MTBImage img,
                   double sigmaX,
                   double sigmaY,
                   double sigmaZ)
            throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Constructor for Gaussian filtering in x-, y- and z-dimension. Default for other parameters: sigmaT=0, sigmaC=0, kernelTruncation=3, sigmaInterpretation=PHYSICALSIZE boundaryPadding=PADDING_BORDER

Parameters:
img - input image
sigmaX - standard deviation in x-dimension
sigmaY - standard deviation in y-dimension
sigmaZ - standard deviation in z-dimension
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

GaussFilter

public GaussFilter(MTBImage img,
                   double sigmaX,
                   double sigmaY,
                   double sigmaZ,
                   double sigmaT,
                   double sigmaC,
                   MTBImageWindow.BoundaryPadding boundaryPadding,
                   double kernelTruncation,
                   GaussFilter.SigmaInterpretation sigmaInterpretation)
            throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Constructor for Gaussian filtering. Set any sigma to 0 to prevent filtering in the corresponding dimension

Parameters:
img - input image
sigmaX - standard deviation in x-dimension
sigmaY - standard deviation in y-dimension
sigmaZ - standard deviation in z-dimension
sigmaT - standard deviation in t-dimension
sigmaC - standard deviation in c-dimension
boundaryPadding - determines how pixel values outside the image domain are treated (see LinearFilter)
kernelTruncation - the Gaussian kernel is truncated at sigma*kernelTruncation
sigmaInterpretation - how the specified standard deviations are interpreted
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Method Detail

addStatusListener

public void addStatusListener(loci.common.StatusListener statuslistener)
Specified by:
addStatusListener in interface loci.common.StatusReporter

gaussFilter

protected MTBImage gaussFilter()
                        throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException,
                               de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
compute the Gaussian filter

Returns:
resulting image
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException

getBoundaryPadding

public MTBImageWindow.BoundaryPadding getBoundaryPadding()
Get value of Parameter argument boundaryPadding.

Returns:
value of boundaryPadding

getGaussKernelC

public MTBImage getGaussKernelC()
Get Gaussian kernel image (non-normalized) in c-dimension for given parameters, null if sigma is zero in c-dimension


getGaussKernelT

public MTBImage getGaussKernelT()
Get Gaussian kernel image (non-normalized) in t-dimension for given parameters, null if sigma is zero in t-dimension


getGaussKernelX

public MTBImage getGaussKernelX()
Get Gaussian kernel image (non-normalized) in x-dimension for given parameters, null if sigma is zero in x-dimension


getGaussKernelY

public MTBImage getGaussKernelY()
Get Gaussian kernel image (non-normalized) in y-dimension for given parameters, null if sigma is zero in y-dimension


getGaussKernelZ

public MTBImage getGaussKernelZ()
Get Gaussian kernel image (non-normalized) in z-dimension for given parameters, null if sigma is zero in z-dimension


getInputImg

public MTBImage getInputImg()
Get input image.


getKernelTruncation

public double getKernelTruncation()
Get kernel truncation factor. The Gaussian kernel is truncated at sigma*kernelTruncation.


getResultImg

public MTBImage getResultImg()
Get resulting image.


getSigmaC

public double getSigmaC()
Get standard deviation (sigma) in c-dimension.


getSigmaInterpretation

public GaussFilter.SigmaInterpretation getSigmaInterpretation()
Get the mode of how sigmas are interpreted.


getSigmaT

public double getSigmaT()
Get standard deviation (sigma) in t-dimension.


getSigmaX

public double getSigmaX()
Get standard deviation (sigma) in x-dimension.


getSigmaY

public double getSigmaY()
Get standard deviation (sigma) in y-dimension.


getSigmaZ

public double getSigmaZ()
Get standard deviation (sigma) in z-dimension.


notifyListeners

public void notifyListeners(loci.common.StatusEvent e)
Specified by:
notifyListeners in interface loci.common.StatusReporter

operate

protected void operate()
                throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException,
                       de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
This function calls the actual Gauss filtering method.

Specified by:
operate in class de.unihalle.informatik.Alida.operator.ALDOperator
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException

readResolve

protected java.lang.Object readResolve()
Description copied from class: MTBOperator
Init function for deserialized objects.

This function is called on an instance of this class being deserialized from file, prior to handing the instance over to the user. It takes care of a proper initialization of transient member variables as they are not initialized to the default values during deserialization.

Overrides:
readResolve in class MTBOperator

removeStatusListener

public void removeStatusListener(loci.common.StatusListener statuslistener)
Specified by:
removeStatusListener in interface loci.common.StatusReporter

setBoundaryPadding

public void setBoundaryPadding(MTBImageWindow.BoundaryPadding boundaryPadding)
Set value of Parameter argument boundaryPadding.

Parameters:
value - of boundaryPadding

setInputImg

public void setInputImg(MTBImage img)
Set input image.


setKernelTruncation

public void setKernelTruncation(double kernelTruncation)
Set kernel truncation factor. The Gaussian kernel is truncated at sigma*kernelTruncation.


setResultImg

protected void setResultImg(MTBImage resultImg)
Set resulting image.


setSigmaC

public void setSigmaC(double sigmaC)
Set standard deviation (sigma) in c-dimension.


setSigmaInterpretation

public void setSigmaInterpretation(GaussFilter.SigmaInterpretation sigmaInterpretation)
Set the mode of how sigmas are interpreted.


setSigmaT

public void setSigmaT(double sigmaT)
Set standard deviation (sigma) in t-dimension.


setSigmaX

public void setSigmaX(double sigmaX)
Set standard deviation (sigma) in x-dimension.


setSigmaY

public void setSigmaY(double sigmaY)
Set standard deviation (sigma) in y-dimension.


setSigmaZ

public void setSigmaZ(double sigmaZ)
Set standard deviation (sigma) in z-dimension.


validateCustom

public void validateCustom()
                    throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
The validation of parameters and inputs.

Overrides:
validateCustom in class de.unihalle.informatik.Alida.operator.ALDOperator
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException