expand_domain_gray ( InputImage : ExpandedImage : ExpansionRange : )

Expand the domain of an image and set the gray values in the expanded domain.

expand_domain_gray expands the border gray values of the domain outwards. The width of the expansion is set by the parameter ExpansionRange. All filters in HALCON use gray values of the pixels outside the domain depending on the filter width. This may lead to undesirable side effects especially in the border region of the domain. For example, if the foreground (domain) and the background of the image differ strongly in brightness, the result of a filter operation may lead to undesired darkening or brightening at the border of the domain. In order to avoid this drawback, the domain is expanded by expand_domain_gray in a preliminary stage, copying the gray values of the border pixels to the outside of the domain. In addition, the domain itself is also expanded to reflect the newly set pixels. Therefore, in many cases it is reasonable to reduce the domain again (reduce_domain or change_domain) after using expand_domain_gray and call the filter operation afterwards. ExpansionRange should be set to the half of the filter width.


Parameters

InputImage (input_object)
image(-array) -> object : byte / int1 / int2 / uint2 / int4 / real
Input image with domain to be expanded.

ExpandedImage (output_object)
image(-array) -> object : byte / int1 / int2 / uint2 / int4 / real
Output image with new gray values in the expanded domain.

ExpansionRange (input_control)
integer -> integer
Radius of the gray value expansion, measured in pixels.
Default value: 2
Suggested values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16
Restriction: ExpansionRange >= 1


Example
read_image(Fabrik, 'fabrik.tif');
gen_rectangle2(Rectangle_Label,243,320,-1.55,62,28);
reduce_domain(Fabrik, Rectangle_Label, Fabrik_Label);
/* Character extraction without gray value expansion: */
mean_image(Fabrik_Label,Label_Mean_normal,31,31);
dyn_threshold(Fabrik_Label,Label_Mean_normal,Characters_normal,10,'dark');
dev_display(Fabrik);
dev_display(Characters_normal);
/* The characters in the border region are not extracted ! */
stop();
/* Character extraction with gray value expansion: */
expand_domain_gray(Fabrik_Label, Label_expanded,15);
reduce_domain(Label_expanded,Rectangle_Label, Label_expanded_reduced);
mean_image(Label_expanded_reduced,Label_Mean_expanded,31,31);
dyn_threshold(Fabrik_Label,Label_Mean_expanded,Characters_expanded,10,'dark');
dev_display(Fabrik);
dev_display(Characters_expanded);
/* Now, even in the border region the characters are recognized */

Complexity

Let L the perimeter of the domain. Then the runtime complexity is approximately O(L)*ExpansionRange.


Result

expand_domain_gray returns 2 (H_MSG_TRUE) if all parameters are correct. If necessary, an exception handling is raised.


Parallelization Information

expand_domain_gray is reentrant and automatically parallelized (on tuple level).


Possible Predecessors

reduce_domain


Possible Successors

reduce_domain, mean_image, dyn_threshold


See also

reduce_domain, mean_image


Module

Foundation



Copyright © 1996-2008 MVTec Software GmbH