Herror ::derivate_gauss (
    Hobject Image,
    Hobject *DerivGauss,
    const HTuple &Sigma,
    const HTuple &Component
)
HImage HImage::DerivateGauss (
    const HTuple &Sigma,
    const HTuple &Component
) const
HImageArray HImageArray::DerivateGauss (
    const HTuple &Sigma,
    const HTuple &Component
) const

Convolve an image with derivatives of the Gaussian.

::derivate_gauss convolves an image with the derivatives of a Gaussian and calculates various features derived thereof. Possible values for Component are:

'none'
Smoothing only.

'x'
First derivative along x.

'y'
First derivative along y.

'gradient'
Absolute value of the gradient.

'xx'
Second derivative along x.

'yy'
Second derivative along y.

'xy'
Second derivative along x and y.

'xxx'
Third derivative along x.

'yyy'
Third derivative along y.

'xxy'
Third derivative along x, x and y.

'xyy'
Third derivative along x, y and y.

'det'
Determinant of the Hessian matrix:
DET = g_xx * g_yy - g_xy**2

'laplace'
Laplace operator (trace of the Hessian matrix):
Laplace = g_xx + g_yy

'mean_curvatue'
Mean curvature H
a = (1 + g_x * g_x) * g_yy
b = 2 * g_x * g_y * g_xy
c = (1 + g_y * g_y) * g_xx
d = (1 + g_x * g_x + g_y * g_y) ** (3/2)
H = (a - b + c) / d

'gauss_curvatue'
Gaussian curvature K
K = DET / (1 + g_x * g_x + g_y * g_y) ** 2

'eigenvalue1'
First eigenvalue
a = (g_xx * g_yy) / 2
lambda1 = a + sqrt(a*a - (g_xx * g_yy - g_xy * g_xy))

'eigenvalue2'
Second eigenvalue
a = (g_xx * g_yy) / 2
lambda1 = a - sqrt(a*a - (g_xx * g_yy - g_xy * g_xy))

'main1_curvature'
First principal curvature
kappa1 = H + sqrt(H**2 - K)

'main2_curvature'
Second principal curvature
kappa2 = H - sqrt(H**2 - K)

'kitchen_rosenfeld'
Second derivative perpendicular to the gradient
k = (g_xx * g_y**2 + g_yy * g_x**2 - 2 * g_xy * g_x * g_y) /
     (g_x**2 + g_y**2)

'2nd_ddg'
Second derivative along the gradient
k = (g_xx * g_x**2 + 2 * g_y * g_y * g_xy + g_xy * g_y**2) /
     (g_x**2 + g_y**2)

'de_saint_venant'
Second derivative along and perpendicular to the gradient
k = (g_x * g_y * (g_xx - g_yy) - (g_x**2 - g_y**2) * g_xy) /
     (g_x**2 + g_y**2)


Parameters

Image (input_object)
(multichannel-)image(-array) -> Hobject: HImage(Array) ( byte / int1 / int2 / int4 / real )
Input image.

DerivGauss (output_object)
(multichannel-)image(-array) -> Hobject * : HImage(Array) ( real )
Filtered result image.

Sigma (input_control)
real -> HTuple.double
Sigma of the Gaussian.
Default value: 1.0
Suggested values: 0.7, 1.0, 1.5, 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

Component (input_control)
string -> HTuple.char *
Derivative or feature to be calculated.
Default value: 'x'
List of values: 'none', 'x', 'y', 'gradient', 'xx', 'yy', 'xy', 'xxx', 'yyy', 'xxy', 'xyy', 'det', 'mean_curvature', 'gauss_curvature', 'eigenvalue1', 'eigenvalue2', 'main1_curvature', 'main2_curvature', 'kitchen_rosenfeld', 'zuniga_haralick', ''2nd_ddg'', 'de_saint_venant', 'area', 'laplace', 'gradient_dir', 'eigenvec_dir'


Example
read_image(&Image,"mreut");
derivate_gauss(Image,&Gauss,3.0,"x");
zero_crossing(Gauss,&ZeroCrossings);

Possible Successors

::zero_crossing, ::dual_threshold


Alternatives

::laplace, ::laplace_of_gauss, ::gauss_image, ::smooth_image


See also

::zero_crossing, ::dual_threshold


References

K. Voss H. Suse; ``Praktische Bildverarbeitung'' Hanser Verlag; Munchen, Wien; 1991; Seite 88.


Module

Image filters



Copyright © 1996-2002 MVTec Software GmbH