Herror ::diff_of_gauss (
    Hobject Image,
    Hobject *DiffOfGauss,
    const HTuple &Sigma,
    const HTuple &SigFactor
)
HImage HImage::DiffOfGauss (
    const HTuple &Sigma,
    const HTuple &SigFactor
) const
HImageArray HImageArray::DiffOfGauss (
    const HTuple &Sigma,
    const HTuple &SigFactor
) const

Approximate the LoG operator (Laplace of Gaussian).

::diff_of_gauss approximates the Laplace-of-Gauss operator by a difference of Gaussians. The standard deviations of these Gaussians can be calculated, according to Marr, from the Parameter Sigma of the LoG and the ratio of the two standard deviations (SigFactor) as: sigma1 = Sigma / sqrt(-2.0 * LoG {1.0/SigFactor} / (SigFactor^2 - 1.0)) sigma2 = sigma1 / SigFactor Result = { Object * gauss(sigma1) } - { Object * gauss(sigma2) } For a SigFactor = 1.6, according to Marr, an approximation to the Mexican-Hat-Operator results. The resulting image is stored in DiffOfGauss.


Parameters

Image (input_object)
(multichannel-)image(-array) -> Hobject: HImage(Array) ( byte )
Input image

DiffOfGauss (output_object)
(multichannel-)image(-array) -> Hobject * : HImage(Array) ( int2 )
LoG image.

Sigma (input_control)
real -> HTuple.double
Smoothing parameter of the Laplace operator to approximate.
Default value: 3.0
Suggested values: 2.0, 3.0, 4.0, 5.0
Typical range of values: 0.2 <= Sigma <= 50.0
Minimum increment: 0.01
Recommended increment: 0.1
Restriction: Sigma > 0.0

SigFactor (input_control)
real -> HTuple.double
Ratio of the standard deviations used (Marr recommends 1.6).
Default value: 1.6
Typical range of values: 0.1 <= SigFactor <= 10.0
Minimum increment: 0.01
Recommended increment: 0.1
Restriction: SigFactor > 0.0


Example
read_image(&Image,"mreut");
diff_of_gauss(Image,&Laplace,2.0,1.6);
zero_crossing(Laplace,&ZeroCrossings);

Complexity

The execution time depends linearly on the number of pixels and the size of sigma.


Result

::diff_of_gauss returns H_MSG_TRUE if all parameters are correct. If the input is empty the behaviour can be set via ::set_system('no_object_result',<Result>). If necessary, an exception handling is raised.


Possible Successors

::zero_crossing, ::dual_threshold


Alternatives

::laplace, ::derivate_gauss


References

D. Marr: ``Vision (A computational investigation into human representation and processing of visual information)''; New York, W.H. Freeman and Company; 1982.


Module

Image filters



Copyright © 1996-2002 MVTec Software GmbH