Name
moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd — Calculate the geometric moments of regions.
Herror moments_region_2nd(const Hobject Regions, double* M11, double* M20, double* M02, double* Ia, double* Ib)
Herror T_moments_region_2nd(const Hobject Regions, Htuple* M11, Htuple* M20, Htuple* M02, Htuple* Ia, Htuple* Ib)
Herror moments_region_2nd(Hobject Regions, double* M11, double* M20, double* M02, double* Ia, double* Ib)
Herror moments_region_2nd(Hobject Regions, HTuple* M11, HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib)
double HRegion::MomentsRegion2nd(double* M20, double* M02, double* Ia, double* Ib) const
HTuple HRegionArray::MomentsRegion2nd(HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib) const
void MomentsRegion2nd(const HObject& Regions, HTuple* M11, HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib)
HTuple HRegion::MomentsRegion2nd(HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib) const
double HRegion::MomentsRegion2nd(double* M20, double* M02, double* Ia, double* Ib) const
static void HOperatorSet.MomentsRegion2nd(HObject regions, out HTuple m11, out HTuple m20, out HTuple m02, out HTuple ia, out HTuple ib)
HTuple HRegion.MomentsRegion2nd(out HTuple m20, out HTuple m02, out HTuple ia, out HTuple ib)
double HRegion.MomentsRegion2nd(out double m20, out double m02, out double ia, out double ib)
moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd calculates the geometric
moments M11M11M11M11M11m11, M20M20M20M20M20m20 and M02M02M02M02M02m02 of the input
regions in RegionsRegionsRegionsRegionsRegionsregions. Furthermore the major and minor axis
of the input regions are calculated and returned in IaIaIaIaIaia
and IbIbIbIbIbib.
The covariance matrix is given by:
/ M_20 M_11 \
\ M_11 M_02 /
The row-dependent moment of 2nd order is returned in M20M20M20M20M20m20
and the column-dependent moment of 2nd order is returned in M02M02M02M02M02m02.
The moment M11M11M11M11M11m11 represents the covariance between
the row and column coordinates of the region points.
- Calculation:
-
r0 and c0 are the coordinates
of the center of gravity of a region R.
Then the moments Mij are defined by:
Mij = SUM ( (r0 - r)^i (c0 - c)^j )
wherein r and c run over all pixels of the region R.
Furthermore the length of the major and minor axes are defined by:
Ia = h + sqrt ( h^2 - M20 x M02 + M11^2)
Ib = h - sqrt ( h^2 - M20 x M02 + M11^2)
wherein h is defined by:
h = (M20 + M02) / 2
The equation for the major and minor axes can be derived from the definition
of the moments by diagonalizing the covariance matrix and reforming the resulting
formula.
If more than one region is passed, the results are returned in tuples.
The index a tuple element corresponds to the index of the respective
input region.
If an empty region is passed, 0.0 is returned for all parameters, if no other
behavior was set (see set_systemset_systemSetSystemset_systemSetSystemSetSystem).
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on tuple level.
Product of inertia of the axes through the center
parallel to the coordinate axes.
Moment of 2nd order (row-dependent).
Moment of 2nd order (column-dependent).
IaIaIaIaIaia (output_control) real(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Length of the major axis of the input region.
IbIbIbIbIbib (output_control) real(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Length of the minor axis of the input region.
If F is the area of the region the mean runtime
complexity is O(sqrt(F)).
The operator moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd 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>)SetSystem("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 (region is the empty set) is set via
set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("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.
thresholdthresholdThresholdthresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionconnectionConnectionConnection
moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvar
elliptic_axiselliptic_axisEllipticAxiselliptic_axisEllipticAxisEllipticAxis
R. Haralick, L. Shapiro
“Computer and Robot Vision”
Addison-Wesley, 1992, pp. 73-75
Foundation