Subtract two images.
The operator sub_image subtracts two images. The gray values (g1,g2)
g' := (g1 - g2) * Mult + Add
If an overflow or an underflow occurs the 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 varies with different control parameters. For frequently used combinations special optimizations are used. Additionally, for byte, int2, and uint2 images special optimizations are implemented that use SIMD technology. The actual application of these special optimizations is controlled by the system parameter 'mmx_available' (see set_system). If 'mmx_available' is set to 'true' (and the SIMD instruction set is available), the internal calculations are performed using SIMD technology.
Note that the acceleration gained by SIMD technology is highest on large, compact input regions. However, in rare cases, the execution of sub_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':).
|
ImageMinuend (input_object) |
(multichannel-)image(-array) -> object : byte / int1 / int2 / uint2 / int4 / real / direction / cyclic / complex |
| Minuend(s). | |
|
ImageSubtrahend (input_object) |
(multichannel-)image(-array) -> object : byte / int1 / int2 / uint2 / int4 / real / direction / cyclic / complex |
| Subtrahend(s). | |
|
ImageSub (output_object) |
(multichannel-)image(-array) -> object : byte / int1 / int2 / uint2 / int4 / real / direction / cyclic / complex |
| Result image(s) by the subtraction. | |
|
Mult (input_control) |
number -> real / integer |
| Correction factor. | |
| Default value: 1.0 | |
| Suggested values: 0.0, 1.0, 2.0, 3.0, 4.0 | |
| Typical range of values: -255.0 <= Mult <= 255.0 | |
| Minimum increment: 0.001 | |
|
Recommended increment: 0.1 | |
|
Add (input_control) |
number -> real / integer |
| Correction value. | |
| Default value: 128.0 | |
| Suggested values: 0.0, 128.0, 256.0 | |
| Typical range of values: -512.0 <= Add <= 512.0 | |
| Minimum increment: 0.01 | |
|
Recommended increment: 1.0 | |
read_image(Image0,"fabrik") disp_image(Image0,WindowHandle) read_image(Image1,"Affe") disp_image(Image1,WindowHandle) sub_image(Image0,Image1,Result,2.0,10.0) disp_image(Result,WindowHandle)
The operator sub_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 handling is raised.
sub_image is reentrant and automatically parallelized (on tuple level, channel level, domain level).
add_image, mult_image, dyn_threshold, check_difference
Foundation