Smooth an image with an arbitrary rank mask.
The operator trimmed_mean carries out a non-linear smoothing of the gray values of all input images (Image). The shift mask (Mask) is transmitted in the form of a region. The average of Number gray values located near the median is calculated. Several margin controls can be chosen for filtering (Margin):
0...255 pixels outside of the image edges
are assumed constant (with the indicated
gray value).
-1 Continuation of edge pixels.
-2 Cyclic continuation of image edges.
-3 Reflection of pixels at the image edges.
The indicated mask (= region of the mask image) is put over the
image to be filtered in such a way that the center of the mask
touches all pixels once. For each of these pixels all neighboring
pixels covered by the mask are sorted in an ascending sequence
according to their gray values. Thus, each of these sorted gray
value sequences contains exactly as many gray values as the mask has
pixels. If F is the surface of the mask the average of these
sequences is calculated as follows: The first (F - Number)/2 gray
values are ignored. Then the following Number gray
values are summed up and divided by Number. Again the
remaining (F - Number)/2 gray values are ignored.
|
Image (input_object) |
image(-array) -> object : byte |
| Image to be filtered. | |
|
Mask (input_object) |
region -> object |
| Image whose region serves as filter mask. | |
|
ImageTMean (output_object) |
image(-array) -> object : byte |
| Filtered output image. | |
|
Number (input_control) |
integer -> integer |
| Number of averaged pixels. Typical value: Surface(Mask) / 2. | |
| Default value: 5 | |
| Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 | |
| Range of values: 1 <= Number <= 401 | |
| Minimum increment: 1 | |
|
Recommended increment: 2 | |
|
Margin (input_control) |
integer -> integer |
| Margin control: 0...255 (constant), -1 (edge pixels continued), -2 (cyclic continuation), -3 (reflection). | |
| Default value: -3 | |
| Range of values: -3 <= Margin <= 255 | |
read_image(:Image:'fabrik':) > draw_region(:Region::) > trimmed_mean(Image,Region:TrimmedMean:5,-3:) > disp_image(TrimmedMean:::).
For each pixel: O(sqrt(F) * 5) with F = area of the mask.
If the parameter values are correct the operator trimmed_mean returns the value TRUE. The behavior in case of empty input (no input images available) is set via the operator set_system(::'no_object_result',<Resultat>:). If necessary an exception is raised.
read_image, draw_region, circle, rectangle1
threshold__, dyn_threshold__, regiongrowing__
sigma__, median_weighted, median
circle, rectangle1, min1__, max1__
R. Haralick, L. Shapiro; "Computer and Robot Vision"; Addison-Wesley, 1992, Seite 320