check_difference ( Image, Pattern : Selected : Mode, DiffLowerBound, DiffUpperBound, GreyOffset, AddRow, AddCol : )

Compare two image pixel by pixel.

check_difference selects from the input image Image those pixels (g_{o} = g_{Image}), for which the gray value difference to the corresponding pixels in Pattern is inside (outside) of the interval [DiffLowerBound,DiffLowerBound]. The pixels of Pattern are translated by (AddRow,AddCol) with respect to Image. Let g_{p} be the gray value from Pattern translated by (AddRow,AddCol) w.r.t. g_{o}.

If the selected mode Mode is 'diff_inside', a pixel g_{o} is selected if

       g_o - g_p - GreyOffset > DiffLowerBound   and
       g_o - g_p - GreyOffset < DiffUpperBound.
If the mode is set to 'diff_outside', a pixel g_{o} is selected if
       g_o - g_p - GreyOffset <= DiffLowerBound   or
       g_o - g_p - GreyOffset >= DiffUpperBound.
This test is performed for all points of the domain (region) of Image, intersected with the domain of the translated Pattern. All points fulfilling the above condition are aggregated in the output region. The two images may be of different size. Typically, Pattern is smaller than Image.


Parameters

Image (input_object)
image(-array) -> object : byte
Image to be examined.

Pattern (input_object)
image(-array) -> object : byte
Comparison image.

Selected (output_object)
region(-array) -> object
Points in which the two images are similar/different.

Mode (input_control)
string -> string
Mode: return similar or different pixels.
Default value: 'diff_outside'
Suggested values: 'diff_inside', 'diff_outside'

DiffLowerBound (input_control)
number -> integer
Lower bound of the tolerated gray value difference.
Default value: -5
Suggested values: 0, -1, -2, -3, -5, -7, -10, -12, -15, -17, -20, -25, -30
Range of values: -255 <= DiffLowerBound <= 255 (lin)
Minimum increment: 1
Recommended increment: 2
Restriction: (-255 <= DiffLowerBound) && (DiffLowerBound <= 255)

DiffUpperBound (input_control)
number -> integer
Upper bound of the tolerated gray value difference.
Default value: 5
Suggested values: 0, 1, 2, 3, 5, 7, 10, 12, 15, 17, 20, 25, 30
Range of values: -255 <= DiffUpperBound <= 255 (lin)
Minimum increment: 1
Recommended increment: 2
Restriction: (-255 <= DiffUpperBound) && (DiffUpperBound <= 255)

GreyOffset (input_control)
number -> integer
Offset gray value subtracted from Image.
Default value: 0
Suggested values: -30, -25, -20, -17, -15, -12, -10, -7, -5, -3, -2, -1, 0, 1, 2, 3, 5, 7, 10, 12, 15, 17, 20, 25, 30
Range of values: -255 <= GreyOffset <= 255 (lin)
Minimum increment: 1
Recommended increment: 2
Restriction: (-255 <= GreyOffset) && (GreyOffset <= 255)

AddRow (input_control)
point.y -> integer
Row coordinate, by which Pattern is translated.
Default value: 0
Suggested values: -200, -100, -20, -10, 0, 10, 20, 100, 200
Range of values: -32000 <= AddRow <= 32000 (lin)
Minimum increment: 1
Recommended increment: 1

AddCol (input_control)
point.x -> integer
Column coordinate, by which Pattern is translated.
Default value: 0
Suggested values: -200, -100, -20, -10, 0, 10, 20, 100, 200
Range of values: -32000 <= AddCol <= 32000 (lin)
Minimum increment: 1
Recommended increment: 1


Complexity

Let F be the number of valid pixels. Then the runtime complexity is O(F).


Result

check_difference returns TRUE if all parameters are correct. The behaviour with respect to the input images and output regions can be determined by setting the values of the flags 'no_object_result', 'empty_region_result', and 'store_empty_region' with set_system. If necessary, an exception is raised.


Possible Successors

connection, select_shape, reduce_domain, select_grey__, count, dilation1, opening


Alternatives

sub__, dyn_threshold__



Copyright © 1996-1997 MVTec Software GmbH