abs_diff_imageš
Short descriptionš
abs_diff_image ā Calculate the absolute difference of two images.
Signatureš
abs_diff_image( image Image1, image Image2, out image ImageAbsDiff, number Mult )
Descriptionš
abs_diff_image calculates the absolute difference between
two images. The gray values \(g'\) of the output image
ImageAbsDiff are calculated from the gray values \((g1,g2)\)
of the input images (Image1 and Image2) as
follows:
gā = |(g1 - g2)| * Mult
If an overflow or an underflow occurs the resulting values are
clipped.
Several images can be processed in one call. In this case, both input parameters contain the same number of images which are then processed in pairs. An output image is generated for every pair.
Please note that the runtime of the operator depends on the value of
Mult. For \(\textrm{Mult} = 1\), a special optimization is
used. Since values of Mult different from 1 cannot yield
additional information, \(\textrm{Mult} = 1\) should be used in
applications. All other values of Mult should only be used
for visualization purposes. Additionally, for byte, int1, int2, and
uint2 images special optimizations are implemented for
\(\textrm{Mult} = 1\) that use SIMD technology. The actual
application of these special optimizations is controlled by the
system parameter 'mmx_enable' (see set_system).
If 'mmx_enable' is set to 'true' (and the SIMD
instruction set is available), the internal calculations are
performed using SIMD technology.
abs_diff_image can be executed on an OpenCL device for byte, int1,
int2, uint2, int4, and real images. However, since for OpenCL 1.0 only
single precision floating point is supported for all devices, and not all
rounding modes are supported, the OpenCL implementation can produce slightly
different results from the scalar or SIMD implementations.
Attentionš
Note that the acceleration gained by SIMD technology is highest on large,
compact input regions. However, in rare cases, the execution of
abs_diff_image might take significantly longer with SIMD technology
than without, depending on the input region and the capabilities of
the hardware. In these cases, the use of SIMD
technology can be avoided by set_system(::'mmx_enable','false':).
Execution informationš
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).
-
Automatically parallelized on domain level.
Parametersš
Image1 (input_object) (multichannel-)image(-array) ā object (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *allowed for compute devices
Input image 1.
Image2 (input_object) (multichannel-)image(-array) ā object (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *allowed for compute devices
Input image 2.
ImageAbsDiff (output_object) (multichannel-)image(-array) ā object (byte / int1 / int2 / uint2 / int4 / int8 / real)
Absolute value of the difference of the input images.
Mult (input_control) number ā (real / integer)
Scale factor.
Default: 1.0
Suggested values: 1.0, 2.0, 3.0, 4.0
Restriction: Mult > 0
Resultš
The operator abs_diff_image returns the value 2 (H_MSG_TRUE) if the
parameters are correct. The behavior in case of empty input (no
input images available) is set via the operator
set_system(::'no_object_result',<Result>:). If necessary an
exception is raised.
Combinations with other operatorsš
Combinations
Possible successors
Alternatives
See also
Moduleš
Foundation