HALCON Reference Manual 10.0.2
Table of Contents / Regions / Features ClassesClassesClasses | | | Operators

roundnessroundnessroundnessRoundnessRoundness (Operator)

Name

roundnessroundnessroundnessRoundnessRoundness — Shape factors from contour.

Signature

roundness(Regions : : : Distance, Sigma, Roundness, Sides)

Herror roundness(const Hobject Regions, double* Distance, double* Sigma, double* Roundness, double* Sides)

Herror T_roundness(const Hobject Regions, Htuple* Distance, Htuple* Sigma, Htuple* Roundness, Htuple* Sides)

Herror roundness(Hobject Regions, double* Distance, double* Sigma, double* Roundness, double* Sides)

Herror roundness(Hobject Regions, HTuple* Distance, HTuple* Sigma, HTuple* Roundness, HTuple* Sides)

double HRegion::Roundness(double* Sigma, double* Roundness, double* Sides) const

HTuple HRegionArray::Roundness(HTuple* Sigma, HTuple* Roundness, HTuple* Sides) const

void HOperatorSetX.Roundness(
[in] IHUntypedObjectX* Regions, [out] VARIANT* Distance, [out] VARIANT* Sigma, [out] VARIANT* Roundness, [out] VARIANT* Sides)

VARIANT HRegionX.Roundness(
[out] VARIANT* Sigma, [out] VARIANT* Roundness, [out] VARIANT* Sides)

static void HOperatorSet.Roundness(HObject regions, out HTuple distance, out HTuple sigma, out HTuple roundness, out HTuple sides)

HTuple HRegion.Roundness(out HTuple sigma, out HTuple roundness, out HTuple sides)

double HRegion.Roundness(out double sigma, out double roundness, out double sides)

Description

The operator roundnessroundnessroundnessRoundnessRoundness examines the distance between the contour and the center of the area. In particular the mean distance (DistanceDistanceDistanceDistancedistance), the deviation from the mean distance (SigmaSigmaSigmaSigmasigma) and two shape features derived therefrom are determined. RoundnessRoundnessRoundnessRoundnessroundness is the relation between mean value and standard deviation, and SidesSidesSidesSidessides indicates the number of polygon pieces if a regular polygon is concerned.

The contour for calculating the features is determined depending on the global neighborhood (see set_systemset_systemset_systemSetSystemSetSystem).

Calculation:

If p is the center of the area, pi the pixels
and F the area of the contour.
 DistanceDistanceDistanceDistancedistance  = sum(||p - pi||) / F
 SigmaSigmaSigmaSigmasigma^2   = sum(||p - pi|| - DistanceDistanceDistanceDistancedistance)^2 / F
 RoundnessRoundnessRoundnessRoundnessroundness = 1 - SigmaSigmaSigmaSigmasigma / DistanceDistanceDistanceDistancedistance
 SidesSidesSidesSidessides     = 1.4111 *
(DistanceDistanceDistanceDistancedistance/SigmaSigmaSigmaSigmasigma)^0.4724

If more than one region is passed the results are stored in tuples, the index of a value in the tuple corresponding to the index of a region in the input.

In case of empty region all parameters have the value 0.0 if no other behavior was set (see set_systemset_systemset_systemSetSystemSetSystem).

Parallelization

Parameters

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHRegionXHobject

Region(s) to be examined.

DistanceDistanceDistanceDistancedistance (output_control)  real(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Mean distance from the center.

Assertion: Distance >= 0.0

SigmaSigmaSigmaSigmasigma (output_control)  real(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Standard deviation of DistanceDistanceDistanceDistancedistance.

Assertion: Sigma >= 0.0

RoundnessRoundnessRoundnessRoundnessroundness (output_control)  real(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Shape factor for roundness.

Assertion: Roundness <= 1.0

SidesSidesSidesSidessides (output_control)  real(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Number of polygon sides.

Assertion: Sides >= 0

Complexity

If F is the area of a region the mean runtime complexity is O(sqrt(F)).

Result

The operator roundnessroundnessroundnessRoundnessRoundness returns the value 2 (H_MSG_TRUE) if the input is not empty. The behavior in case of empty input (no input regions 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>), the behavior in case of empty region is set via set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>). If necessary an exception is raised.

Possible Predecessors

thresholdthresholdthresholdThresholdThreshold, regiongrowingregiongrowingregiongrowingRegiongrowingRegiongrowing, connectionconnectionconnectionConnectionConnection

Alternatives

compactnesscompactnesscompactnessCompactnessCompactness

See also

contlengthcontlengthcontlengthContlengthContlength

References

R. Haralick, L. Shapiro “Computer and Robot Vision” Addison-Wesley, 1992, pp. 61

Module

Foundation


Table of Contents / Regions / Features ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH