HALCON Reference Manual 10.0.2
Table of Contents / Morphology / Gray Values ClassesClassesClasses | | | Operators

dual_rankdual_rankdual_rankDualRankDualRank (Operator)

Name

dual_rankdual_rankdual_rankDualRankDualRank — Opening, Median and Closing with circle or rectangle mask.

Signature

dual_rank(Image : ImageRank : MaskType, Radius, ModePercent, Margin : )

Herror dual_rank(const Hobject Image, Hobject* ImageRank, const char* MaskType, const Hlong Radius, const Hlong ModePercent, const char* Margin)

Herror T_dual_rank(const Hobject Image, Hobject* ImageRank, const Htuple MaskType, const Htuple Radius, const Htuple ModePercent, const Htuple Margin)

Herror dual_rank(Hobject Image, Hobject* ImageRank, const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin)

HImage HImage::DualRank(const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin) const

HImageArray HImageArray::DualRank(const HTuple& MaskType, const HTuple& Radius, const HTuple& ModePercent, const HTuple& Margin) const

void HOperatorSetX.DualRank(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageRank, [in] VARIANT MaskType, [in] VARIANT Radius, [in] VARIANT ModePercent, [in] VARIANT Margin)

IHImageX* HImageX.DualRank(
[in] BSTR MaskType, [in] Hlong Radius, [in] Hlong ModePercent, [in] VARIANT Margin)

static void HOperatorSet.DualRank(HObject image, out HObject imageRank, HTuple maskType, HTuple radius, HTuple modePercent, HTuple margin)

HImage HImage.DualRank(string maskType, int radius, int modePercent, HTuple margin)

HImage HImage.DualRank(string maskType, int radius, int modePercent, string margin)

Description

The operator dual_rankdual_rankdual_rankDualRankDualRank carries out a non-linear transformation of the gray values of all input images (ImageImageImageImageimage). Circles or squares can be used as structuring elements. The operator dual_rankdual_rankdual_rankDualRankDualRank effects two consecutive calls of rank_imagerank_imagerank_imageRankImageRankImage. At the first call the range gray value is calculated with the indicated range (ModePercentModePercentModePercentModePercentmodePercent). The result of this calculation is the input of a further call of rank_imagerank_imagerank_imageRankImageRankImage, this time using the range value 100-ModePercentModePercentModePercentModePercentmodePercent.

When filtering different parameters for border treatment (MarginMarginMarginMarginmargin) can be chosen:

    gray value   Pixels outside of the image edges
                 are assumed to be constant (with the
                 indicated gray value).
    'continued'  Continuation of edge pixels.
    'cyclic'     Cyclic continuation of image edges.
    'mirrored'   Reflection of pixels at the image edges.

A range filtering is calculated according to the following scheme: The indicated mask 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 corresponding to their gray values. Each sorted sequence of gray values contains the same number of gray values like the mask has image points. The n-th highest element, (= ModePercentModePercentModePercentModePercentmodePercent, rank values between 0...100 in percent) is selected and set as result gray value in the corresponding result image.

If ModePercentModePercentModePercentModePercentmodePercent is 0, then the operator equals to the gray value opening (gray_openinggray_openinggray_openingGrayOpeningGrayOpening). If ModePercentModePercentModePercentModePercentmodePercent is 50, the operator results in the median filter, which is applied twice (median_imagemedian_imagemedian_imageMedianImageMedianImage). The ModePercentModePercentModePercentModePercentmodePercent 100 in dual_rankdual_rankdual_rankDualRankDualRank means that it calculates the gray value closing (gray_closinggray_closinggray_closingGrayClosingGrayClosing). Choosing parameter values inside this range results in a smooth transformation of these operators.

Parallelization

Parameters

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageXHobject (byte / int2 / uint2 / int4 / real)

Image to be filtered.

ImageRankImageRankImageRankImageRankimageRank (output_object)  multichannel-image(-array) objectHImageHImageHImageXHobject * (byte / int2 / uint2 / int4 / real)

Filtered Image.

MaskTypeMaskTypeMaskTypeMaskTypemaskType (input_control)  string HTupleHTupleVARIANTHtuple (string) (string) (char*) (BSTR) (char*)

Shape of the mask.

Default value: 'circle' "circle" "circle" "circle" "circle"

List of values: 'circle'"circle""circle""circle""circle", 'square'"square""square""square""square"

RadiusRadiusRadiusRadiusradius (input_control)  integer HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Radius of the filter mask.

Default value: 1

Suggested values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 15, 19, 25, 31, 39, 47, 59

Typical range of values: 1 ≤ Radius Radius Radius Radius radius ≤ 101

Minimum increment: 1

Recommended increment: 2

ModePercentModePercentModePercentModePercentmodePercent (input_control)  integer HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Filter Mode: 0 corresponds to a gray value opening , 50 corresponds to a median and 100 to a gray values closing.

Default value: 10

Suggested values: 0, 2, 5, 10, 15, 20, 40, 50, 60, 80, 85, 90, 95, 98, 100

Typical range of values: 0 ≤ ModePercent ModePercent ModePercent ModePercent modePercent ≤ 100

Minimum increment: 1

Recommended increment: 2

MarginMarginMarginMarginmargin (input_control)  string HTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Border treatment.

Default value: 'mirrored' "mirrored" "mirrored" "mirrored" "mirrored"

Suggested values: 'mirrored'"mirrored""mirrored""mirrored""mirrored", 'cyclic'"cyclic""cyclic""cyclic""cyclic", 'continued'"continued""continued""continued""continued", 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

Example (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)

Example (C)

read_image(&Image,"fabrik");
dual_rank(Image,&ImageOpening,"circle",10,10,"mirrored");
disp_image(ImageOpening,WindowHandle);

Example (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)

Example (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)

Example (HDevelop)

read_image(Image,'fabrik')
dual_rank(Image,ImageOpening,'circle',10,10,'mirrored')
disp_image(ImageOpening,WindowHandle)

Complexity

For each pixel: O(sqrt(F) * 10) with F = area of the structuring element.

Result

If the parameter values are correct the operator dual_rankdual_rankdual_rankDualRankDualRank returns the value 2 (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>)set_system("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>). If necessary an exception is raised.

Possible Predecessors

read_imageread_imageread_imageReadImageReadImage

Possible Successors

thresholdthresholdthresholdThresholdThreshold, dyn_thresholddyn_thresholddyn_thresholdDynThresholdDynThreshold, sub_imagesub_imagesub_imageSubImageSubImage, regiongrowingregiongrowingregiongrowingRegiongrowingRegiongrowing

Alternatives

rank_imagerank_imagerank_imageRankImageRankImage, gray_closinggray_closinggray_closingGrayClosingGrayClosing, gray_openinggray_openinggray_openingGrayOpeningGrayOpening, median_imagemedian_imagemedian_imageMedianImageMedianImage

See also

gen_circlegen_circlegen_circleGenCircleGenCircle, gen_rectangle1gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1, gray_erosion_rectgray_erosion_rectgray_erosion_rectGrayErosionRectGrayErosionRect, gray_dilation_rectgray_dilation_rectgray_dilation_rectGrayDilationRectGrayDilationRect, sigma_imagesigma_imagesigma_imageSigmaImageSigmaImage

References

W. Eckstein, O. Munkelt “Extracting Objects from Digital Terrain Model” Remote Sensing and Reconstruction for Threedimensional Objects and Scenes, SPIE Symposium on Optical Science, Engeneering, and Instrumentation, July 1995, San Diego

Module

Foundation


Table of Contents / Morphology / Gray Values ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH