derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss convolves an image with the derivatives of a
Gaussian and calculates various features derived therefrom.
SigmaSigmaSigmasigmasigma is the parameter of the Gaussian (i.e., the amount of
smoothing). If one value is passed in SigmaSigmaSigmasigmasigma the amount of
smoothing in the column and row direction is identical. If two
values are passed in SigmaSigmaSigmasigmasigma the first value specifies the
amount of smoothing in the column direction, while the second value
specifies the amount of smoothing in the row direction. The
possible values for ComponentComponentComponentcomponentcomponent are:
Second derivative along and perpendicular to the gradient
Attention
Besides the pure C version there are specific implementations of
derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss for speed up.
Such an optimization is applied in case it is supported by the system and
the respective system parameter *_enable is set to
'true'"true""true""true""true", see set_systemset_systemSetSystemSetSystemset_system.
The following optimizations are supported (listed according to their
priority):
using AVX512f instructions ('avx512f_enable'"avx512f_enable""avx512f_enable""avx512f_enable""avx512f_enable")
using AVX instructions ('avx_enable'"avx_enable""avx_enable""avx_enable""avx_enable")
using SSE2 instructions ('sse2_enable'"sse2_enable""sse2_enable""sse2_enable""sse2_enable")
These implementations are slightly inaccurate compared to the pure C
version due to numerical issues.
For example, using SSE2 instructions the inaccuracy is in order of magnitude
of 1.0e-5 for 'byte' images and ComponentComponentComponentcomponentcomponent set to 'none'"none""none""none""none",
'x'"x""x""x""x", or 'y'"y""y""y""y".
In case accuracy is preferred over performance, set all corresponding system
parameter to 'false'"false""false""false""false" (using set_systemset_systemSetSystemSetSystemset_system) before calling
derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss.
This way derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss does not use the accelerations.
Do not forget to set the parameter back to 'true'"true""true""true""true" afterwards.
derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss is only executed on an OpenCL
device if SigmaSigmaSigmasigmasigma induces a filter width respectively height of
up to 129 pixels. This corresponds to a SigmaSigmaSigmasigmasigma of less than 20.7
for ComponentComponentComponentcomponentcomponent = 'none'"none""none""none""none".
The OpenCL implementation is slightly inaccurate compared to the pure C
version due to numerical issues.
Note that filter operators may return unexpected results if
an image with a reduced domain is used as input. Please refer to the
chapter Filters.
Execution Information
Supports OpenCL compute devices.
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).