derivate_gauss ( Image : DerivGauss : Sigma, Component : )

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.

'gradient_dir'
Gradient direction in radians

'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

'area'
Differential area A
A = E*G - F**2
E = 1 + g_x**2
F = g_x * g_y
G = 1 + 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))

'eigenvec_dir'
Direction of the eigenvector corresponding to the first eigenvalue
in radians

'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)

'zuniga_haralick'
Normalized 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)**1.5

'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) -> object : byte / direction / cyclic / int1 / int2 / uint2 / int4 / real
Input image.

DerivGauss (output_object)
(multichannel-)image(-array) -> object : real
Filtered result image.

Sigma (input_control)
real -> real
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 -> string
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 (Syntax: C)
read_image(&Image,"mreut");
derivate_gauss(Image,&Gauss,3.0,"x");
zero_crossing(Gauss,&ZeroCrossings);

Parallelization Information

derivate_gauss is reentrant and automatically parallelized (on tuple level, channel level, domain level).


Possible Successors

zero_crossing, dual_threshold


Alternatives

laplace, laplace_of_gauss, gauss_image, smooth_image, isotropic_diffusion


See also

zero_crossing, dual_threshold


Module

Foundation



Copyright © 1996-2008 MVTec Software GmbH