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)
|
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' | |
read_image(&Image,"mreut"); derivate_gauss(Image,&Gauss,3.0,"x"); zero_crossing(Gauss,&ZeroCrossings);
derivate_gauss is reentrant and automatically parallelized (on tuple level, channel level, domain level).
laplace, laplace_of_gauss, gauss_image, smooth_image, isotropic_diffusion
Foundation