Herror ::trimmed_mean (
    Hobject Image,
    Hobject Mask,
    Hobject *ImageTMean,
    const HTuple &Number,
    const HTuple &Margin
)
HImage HImage::TrimmedMean (
    const HRegion &Mask,
    const HTuple &Number,
    const HTuple &Margin
) const
HImageArray HImageArray::TrimmedMean (
    const HRegion &Mask,
    const HTuple &Number,
    const HTuple &Margin
) const

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.


Parameters

Image (input_object)
multichannel-image(-array) -> Hobject: HImage(Array) ( byte )
Image to be filtered.

Mask (input_object)
region -> Hobject: HRegion
Image whose region serves as filter mask.

ImageTMean (output_object)
multichannel-image(-array) -> Hobject * : HImage(Array) ( byte )
Filtered output image.

Number (input_control)
integer -> HTuple.long
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
Typical range of values: 1 <= Number <= 401
Minimum increment: 1
Recommended increment: 2

Margin (input_control)
integer -> HTuple.long
Margin control: 0...255 (constant), -1 (edge pixels continued), -2 (cyclic continuation), -3 (reflection).
Default value: -3
Typical range of values: -3 <= Margin <= 255


Example
read_image(&Image,"fabrik");
draw_region(&Region,WindowHandle);
trimmed_mean(Image,Region,&TrimmedMean,5,-3,);
disp_image(TrimmedMean,WindowHandle);

Complexity

For each pixel: O(sqrt(F) * 5) with F = area of the mask.


Result

If the parameter values are correct the operator ::trimmed_mean returns the value H_MSG_TRUE. 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.


Possible Predecessors

::read_image, ::draw_region, ::gen_circle, ::gen_rectangle1


Possible Successors

::threshold, ::dyn_threshold, ::regiongrowing


Alternatives

::sigma_image, ::median_weighted, ::median_image


See also

::gen_circle, ::gen_rectangle1, ::gray_erosion_rect, ::gray_dilation_rect


References

R. Haralick, L. Shapiro; ``Computer and Robot Vision''; Addison-Wesley, 1992, Seite 320


Module

Image filters



Copyright © 1996-2002 MVTec Software GmbH