Module ij
Package ij.plugin.filter

# Class Convolver

java.lang.Object
ij.plugin.filter.Convolver

All Implemented Interfaces:
  `DialogListener`, `ExtendedPlugInFilter`, `PlugInFilter`, `ActionListener`, `EventListener`

public class Convolver extends Object implements ExtendedPlugInFilter, DialogListener, ActionListener
This plugin convolves images using user user defined kernels.

## Field Summary

### Fields inherited from interface ij.plugin.filter.ExtendedPlugInFilter

`KEEP_PREVIEW`

### 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, KEEP_THRESHOLD, NO_CHANGES, NO_IMAGE_REQUIRED, NO_UNDO, NO_UNDO_RESET, PARALLELIZE_IMAGES, PARALLELIZE_STACKS, ROI_REQUIRED, SNAPSHOT, STACK_REQUIRED, SUPPORTS_MASKING`

## Constructor Summary

Constructors
Constructor
Description
`Convolver()`

## Method Summary

Modifier and Type
Method
Description
`void`
`actionPerformed(ActionEvent e)`
`boolean`
`convolve(ImageProcessor ip, float[] kernel, int kw, int kh)`
Convolves `ip` with a kernel of width `kw` and height `kh`.
`boolean`
`convolveFloat(ImageProcessor ip, float[] kernel, int kw, int kh)`
Convolves the float image `ip` with a kernel of width `kw` and height `kh`.
`void`
`convolveFloat1D(FloatProcessor ip, float[] kernel, int kw, int kh)`
Convolves the image `ip` with a kernel of width `kw` and height `kh`.
`void`
`convolveFloat1D(FloatProcessor ip, float[] kernel, int kw, int kh, double scale)`
Convolves the image `ip` with a kernel of width `kw` and height `kh`.
`boolean`
`dialogItemChanged(GenericDialog gd, AWTEvent e)`
This method is invoked by a Generic Dialog if any of the inputs have changed (CANCEL does not trigger it; OK and running the dialog from a macro only trigger the first DialogListener added to a GenericDialog).
`static double`
`getScale(float[] kernel)`
`void`
`run(ImageProcessor ip)`
Filters use this method to process the image.
`void`
`setNormalize(boolean normalizeKernel)`
If 'normalize' is true (the default), the convolve(), convolveFloat() and convolveFloat1D() (4 argument version) methods divide each kernel coefficient by the sum of the coefficients, preserving image brightness.
`void`
`setNPasses(int nPasses)`
This method is called by ImageJ to inform the plugin-filter about the passes to its run method.
`int`
`setup(String arg, ImagePlus imp)`
This method is called once when the filter is loaded.
`int`
`showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr)`
This method is called after `setup(arg, imp)` unless the `DONE` flag has been set.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Convolver

public Convolver()

## Method Details

### setup

public int setup(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 `PlugInFilter.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 `PlugInFilter.DOES_STACKS` flag was set, it is called for each slice in a stack. With `PlugInFilter.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 `PlugInFilter.NO_IMAGE_REQUIRED` flag and not the `PlugInFilter.DONE` flag, run(ip) is called once with the argument `null`. Use ip.getSliceNumber() to get the stack position (1-n).

Specified by:
  `run` in interface `PlugInFilter`

### showDialog

public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr)
Description copied from interface: `ExtendedPlugInFilter`
This method is called after `setup(arg, imp)` unless the `DONE` flag has been set.

Specified by:
  `showDialog` in interface `ExtendedPlugInFilter`
Parameters:
  `imp` - The active image already passed in the `setup(arg, imp)` call. It will be null, however, if the `NO_IMAGE_REQUIRED` flag has been set.
  `command` - The command that has led to the invocation of the plugin-filter. Useful as a title for the dialog.
  `pfr` - The PlugInFilterRunner calling this plugin-filter. It can be passed to a GenericDialog by `addPreviewCheckbox` to enable preview by calling the `run(ip)` method of this plugin-filter. `pfr` can be also used later for calling back the PlugInFilterRunner, e.g., to obtain the slice number currently processed by `run(ip)`.
Returns:
  The method should return a combination (bitwise OR) of the flags specified in interfaces `PlugInFilter` and `ExtendedPlugInFilter`.

### dialogItemChanged

public boolean dialogItemChanged(GenericDialog gd, AWTEvent e)
Description copied from interface: `DialogListener`
This method is invoked by a Generic Dialog if any of the inputs have changed (CANCEL does not trigger it; OK and running the dialog from a macro only trigger the first DialogListener added to a GenericDialog).

Specified by:
  `dialogItemChanged` in interface `DialogListener`
Parameters:
  `gd` - A reference to the GenericDialog.
  `e` - The event that has been generated by the user action in the dialog. Note that `e` is `null` if the dialogItemChanged method is called after the user has pressed the OK button or if the GenericDialog has read its parameters from a macro.
Returns:
  Should be true if the dialog input is valid. False disables the OK button and preview (if any).

### convolve

public boolean convolve(ImageProcessor ip, float[] kernel, int kw, int kh)
Convolves `ip` with a kernel of width `kw` and height `kh`. Returns false if the user cancels the operation.

### setNormalize

public void setNormalize(boolean normalizeKernel)
If 'normalize' is true (the default), the convolve(), convolveFloat() and convolveFloat1D() (4 argument version) methods divide each kernel coefficient by the sum of the coefficients, preserving image brightness.

### convolveFloat

public boolean convolveFloat(ImageProcessor ip, float[] kernel, int kw, int kh)
Convolves the float image `ip` with a kernel of width `kw` and height `kh`. Returns false if the user cancels the operation by pressing 'Esc'.

### convolveFloat1D

public void convolveFloat1D(FloatProcessor ip, float[] kernel, int kw, int kh)
Convolves the image `ip` with a kernel of width `kw` and height `kh`.

### convolveFloat1D

public void convolveFloat1D(FloatProcessor ip, float[] kernel, int kw, int kh, double scale)
Convolves the image `ip` with a kernel of width `kw` and height `kh`.

### getScale

public static double getScale(float[] kernel)

### setNPasses

public void setNPasses(int nPasses)
Description copied from interface: `ExtendedPlugInFilter`
This method is called by ImageJ to inform the plugin-filter about the passes to its run method. During preview, the number of passes is one (or 3 for RGB images, if `CONVERT_TO_FLOAT` has been specified). When processing a stack, it is the number of slices to be processed (minus one, if one slice has been processed for preview before), and again, 3 times that number for RGB images processed with `CONVERT_TO_FLOAT`.

Specified by:
  `setNPasses` in interface `ExtendedPlugInFilter`

### actionPerformed

public void actionPerformed(ActionEvent e)

Specified by:
  `actionPerformed` in interface `ActionListener`