preprocessing
Class CannyDericheFilter

java.lang.Object
  extended by preprocessing.CannyDericheFilter

public class CannyDericheFilter
extends java.lang.Object

Class containing some static methods for Edge Detection, using median filter, Canny-Deriche filtering, double tresholding, hysteresis tresholding. These are meant to be implemented in another plugin, hence the basic functionality. Methods based on the plugins deriche_ and hysteresis_

Version:
1.0
Author:
thomas.boudier@snv.jussieu.fr, Joris FA Meys

Constructor Summary
CannyDericheFilter()
           
 
Method Summary
static double angle(float dx, float dy)
          angle
static ij.process.ImageProcessor areaEdge(ij.process.ImageProcessor ip, double radius, float alpha, float upper, float lower)
          Edge detection by subsequent application of a median filter, a Canny-Deriche filter double tresholding and hysteresis.
static java.util.ArrayList<double[]> dericheCalc(ij.process.ImageProcessor ip, float alphaD)
          Static method returning an ArrayList of double[] containing the norm array(index 0) and the angle array(index 1).
static ij.process.ImageProcessor getDeriche(ij.process.ImageProcessor ip, float alpha)
          Canny-Deriche filtering without previous median filter.
static ij.process.ImageProcessor getDeriche(ij.process.ImageProcessor ip, float alpha, double radius)
          Canny-Deriche filtering with previous median filter.
static ij.process.FloatProcessor getDericheAngle(ij.process.ImageProcessor ip, float alpha)
          Canny-Deriche filtering without previous median filter.
static ij.process.FloatProcessor getDericheAngle(ij.process.ImageProcessor ip, float alpha, double radius)
          Canny-Deriche filtering with previous median filter.
static ij.process.FloatProcessor getDericheNorm(ij.process.ImageProcessor ip, float alpha)
          Canny-Deriche filtering without previous median filter.
static ij.process.FloatProcessor getDericheNorm(ij.process.ImageProcessor ip, float alpha, double radius)
          Canny-Deriche filtering with previous median filter.
static ij.process.ImageProcessor hyst(ij.process.ImageProcessor ima)
          Hysteresis thresholding
static double modul(float dx, float dy)
          modul
static ij.process.ImageProcessor nonMaximalSuppression(ij.process.ImageProcessor grad, ij.process.ImageProcessor ang)
          Suppression of non local-maxima
static ij.process.ImageProcessor trin(ij.process.ImageProcessor ima, float T1, float T2)
          Double thresholding
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CannyDericheFilter

public CannyDericheFilter()
Method Detail

areaEdge

public static ij.process.ImageProcessor areaEdge(ij.process.ImageProcessor ip,
                                                 double radius,
                                                 float alpha,
                                                 float upper,
                                                 float lower)
Edge detection by subsequent application of a median filter, a Canny-Deriche filter double tresholding and hysteresis. This method works especially well for detection of area edges in pictures with a high granularity, like confocal pics at high magnification. Good results were obtained with radius = 5, alpha = 0.5, upper = 100, lower = 50

Parameters:
ip - ImageProcessor
radius - radius for the median filter
alpha - alpha setting for Canny-Deriche filter
upper - Upper treshold for double tresholding
lower - lower treshold for double tresholding
Returns:
ImageProcessor with 16bit greyscale filtered image

getDeriche

public static ij.process.ImageProcessor getDeriche(ij.process.ImageProcessor ip,
                                                   float alpha)
Canny-Deriche filtering without previous median filter.

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
Returns:
ImageProcessor with 16bit greyscale filtered image.

getDeriche

public static ij.process.ImageProcessor getDeriche(ij.process.ImageProcessor ip,
                                                   float alpha,
                                                   double radius)
Canny-Deriche filtering with previous median filter.

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
radius - radius for the median filter
Returns:
ImageProcessor with 16bit greyscale filtered image.

getDericheAngle

public static ij.process.FloatProcessor getDericheAngle(ij.process.ImageProcessor ip,
                                                        float alpha)
Canny-Deriche filtering without previous median filter. Angle output

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
Returns:
FloatProcessor with angle image

getDericheAngle

public static ij.process.FloatProcessor getDericheAngle(ij.process.ImageProcessor ip,
                                                        float alpha,
                                                        double radius)
Canny-Deriche filtering with previous median filter.

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
radius - radius for the median filter
Returns:
FloatProcessor with angle image

getDericheNorm

public static ij.process.FloatProcessor getDericheNorm(ij.process.ImageProcessor ip,
                                                       float alpha)
Canny-Deriche filtering without previous median filter. Norm output

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
Returns:
FloatProcessor with Norm output

getDericheNorm

public static ij.process.FloatProcessor getDericheNorm(ij.process.ImageProcessor ip,
                                                       float alpha,
                                                       double radius)
Canny-Deriche filtering with previous median filter.

Parameters:
ip - ImageProcessor
alpha - alpha value for Deriche filter
radius - radius for the median filter
Returns:
FloatProcessor with Norm output

trin

public static ij.process.ImageProcessor trin(ij.process.ImageProcessor ima,
                                             float T1,
                                             float T2)
Double thresholding

Parameters:
ima - original image
T1 - high threshold
T2 - low threshold
Returns:
"trinarised" image

hyst

public static ij.process.ImageProcessor hyst(ij.process.ImageProcessor ima)
Hysteresis thresholding

Parameters:
ima - original image
Returns:
thresholded image

dericheCalc

public static java.util.ArrayList<double[]> dericheCalc(ij.process.ImageProcessor ip,
                                                        float alphaD)
Static method returning an ArrayList of double[] containing the norm array(index 0) and the angle array(index 1).


nonMaximalSuppression

public static ij.process.ImageProcessor nonMaximalSuppression(ij.process.ImageProcessor grad,
                                                              ij.process.ImageProcessor ang)
Suppression of non local-maxima

Parameters:
grad - the norm gradient image
ang - the angle gradient image
Returns:
the image with non local-maxima suppressed

modul

public static double modul(float dx,
                           float dy)
modul

Parameters:
dx - derivative in x
dy - derivative in y
Returns:
norm of gradient

angle

public static double angle(float dx,
                           float dy)
angle

Parameters:
dx - derivative in x
dy - derivative in y
Returns:
angle of gradient