moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld (Operator)
Name
moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld
— Arbitrary geometric moments of contours or polygons.
Signature
Herror moments_any_xld (const Hobject XLD , const char* Mode , const char* PointOrder , double Area , double CenterRow , double CenterCol , const Hlong P , const Hlong Q , double* M )
Herror T_moments_any_xld (const Hobject XLD , const Htuple Mode , const Htuple PointOrder , const Htuple Area , const Htuple CenterRow , const Htuple CenterCol , const Htuple P , const Htuple Q , Htuple* M )
void MomentsAnyXld (const HObject& XLD , const HTuple& Mode , const HTuple& PointOrder , const HTuple& Area , const HTuple& CenterRow , const HTuple& CenterCol , const HTuple& P , const HTuple& Q , HTuple* M )
HTuple HXLD ::MomentsAnyXld (const HString& Mode , const HTuple& PointOrder , const HTuple& Area , const HTuple& CenterRow , const HTuple& CenterCol , const HTuple& P , const HTuple& Q ) const
double HXLD ::MomentsAnyXld (const HString& Mode , const HString& PointOrder , double Area , double CenterRow , double CenterCol , Hlong P , Hlong Q ) const
double HXLD ::MomentsAnyXld (const char* Mode , const char* PointOrder , double Area , double CenterRow , double CenterCol , Hlong P , Hlong Q ) const
double HXLD ::MomentsAnyXld (const wchar_t* Mode , const wchar_t* PointOrder , double Area , double CenterRow , double CenterCol , Hlong P , Hlong Q ) const
(Windows only)
static void HOperatorSet .MomentsAnyXld (HObject XLD , HTuple mode , HTuple pointOrder , HTuple area , HTuple centerRow , HTuple centerCol , HTuple p , HTuple q , out HTuple m )
HTuple HXLD .MomentsAnyXld (string mode , HTuple pointOrder , HTuple area , HTuple centerRow , HTuple centerCol , HTuple p , HTuple q )
double HXLD .MomentsAnyXld (string mode , string pointOrder , double area , double centerRow , double centerCol , int p , int q )
Description
moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld MomentsAnyXld
calculates arbitrary moments M M M M m
of
the regions enclosed by the contours or polygons XLD XLD XLD XLD XLD
. The
moments are computed by applying Green's theorem using only the
points on the contour or polygon, i.e., no region is generated
explicitly for the purpose of calculating the features. It is
assumed that the contours or polygons are closed. If this is not
the case moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld MomentsAnyXld
will artificially close the
contours or polygons.
It should be noted that moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld MomentsAnyXld
only returns useful
results if the contour or polygon encloses a region in the plane. In
particular, the contour or polygon must not intersect itself. This
is particularly important if open contours or polygons are passed
because they are closed automatically, which can produce a
self-intersection. To test whether the contours or polygons
intersect themselves, test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld TestSelfIntersectionXld
can be
used. If the contour or polygon intersects itself, useful values
for the moments can be calculated with
moments_any_points_xld moments_any_points_xld MomentsAnyPointsXld MomentsAnyPointsXld MomentsAnyPointsXld
.
The computed moments are normalized depending on the desired mode
Mode Mode Mode Mode mode
:
'unnormalized':
No normalization.
'unnormalized_central':
Shift the region by its centroid
'normalized':
Normalization by the area A = Area Area Area Area area
of the enclosed image region
'central':
Normalization by the area A = Area Area Area Area area
of the enclosed image region and a shift of the region by it's centroid
For the normalization of the moments three specific moments are
used: The area Area Area Area Area area
of the enclosed image region and the
coordinates CenterRow CenterRow CenterRow CenterRow centerRow
,CenterCol CenterCol CenterCol CenterCol centerCol
of it's centroid (this
values can be calculated with area_center_xld area_center_xld AreaCenterXld AreaCenterXld AreaCenterXld
). In addition to that
moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld MomentsAnyXld
expects information about the point order of
the input contours/polygons in PointOrder PointOrder PointOrder PointOrder pointOrder
, see
area_center_xld area_center_xld AreaCenterXld AreaCenterXld AreaCenterXld
again.
If more than one contour or polygon is passed, M M M M m
contains
all desired moments of the first contour/polygon followed by all the
moments of the second contour/polygon and so forth.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
XLD XLD XLD XLD XLD
(input_object) xld(-array) →
object HXLD HXLD Hobject
Contours or polygons to be examined.
Mode Mode Mode Mode mode
(input_control) string →
HTuple HTuple Htuple (string) (string ) (HString ) (char* )
Computation mode.
Default value:
'unnormalized'
"unnormalized"
"unnormalized"
"unnormalized"
"unnormalized"
Suggested values: 'unnormalized' "unnormalized" "unnormalized" "unnormalized" "unnormalized" , 'unnormalized_central' "unnormalized_central" "unnormalized_central" "unnormalized_central" "unnormalized_central" , 'normalized' "normalized" "normalized" "normalized" "normalized" , 'central' "central" "central" "central" "central"
PointOrder PointOrder PointOrder PointOrder pointOrder
(input_control) string(-array) →
HTuple HTuple Htuple (string) (string ) (HString ) (char* )
Point order along the boundary.
Default value:
'positive'
"positive"
"positive"
"positive"
"positive"
Suggested values: 'positive' "positive" "positive" "positive" "positive" , 'negative' "negative" "negative" "negative" "negative"
Area Area Area Area area
(input_control) real(-array) →
HTuple HTuple Htuple (real) (double ) (double ) (double )
Area enclosed by the contour or polygon.
CenterRow CenterRow CenterRow CenterRow centerRow
(input_control) point.y(-array) →
HTuple HTuple Htuple (real) (double ) (double ) (double )
Row coordinate of the centroid.
CenterCol CenterCol CenterCol CenterCol centerCol
(input_control) point.x(-array) →
HTuple HTuple Htuple (real) (double ) (double ) (double )
Column coordinate of the centroid.
P P P P p
(input_control) point.x(-array) →
HTuple HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
First index of the desired moments
.
Default value: 1
Suggested values: 0, 1, 2, 3, 4
Q Q Q Q q
(input_control) point.x(-array) →
HTuple HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Second index of the desired moments
.
Default value: 1
Suggested values: 0, 1, 2, 3, 4
M M M M m
(output_control) real(-array) →
HTuple HTuple Htuple (real) (double ) (double ) (double )
The computed moments.
Complexity
Let n be the number of points of the contour or polygon.
Then the run time is O(n).
Result
moments_any_xld moments_any_xld MomentsAnyXld MomentsAnyXld MomentsAnyXld
returns 2 (H_MSG_TRUE) if the input is not empty. If
the input is empty the behavior can be set via
set_system(::'no_object_result',<Result>:) set_system("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>)
. If
necessary, an exception is raised.
Possible Predecessors
area_center_xld area_center_xld AreaCenterXld AreaCenterXld AreaCenterXld
,
gen_contours_skeleton_xld gen_contours_skeleton_xld GenContoursSkeletonXld GenContoursSkeletonXld GenContoursSkeletonXld
,
smooth_contours_xld smooth_contours_xld SmoothContoursXld SmoothContoursXld SmoothContoursXld
,
gen_polygons_xld gen_polygons_xld GenPolygonsXld GenPolygonsXld GenPolygonsXld
Alternatives
moments_xld moments_xld MomentsXld MomentsXld MomentsXld
,
moments_any_points_xld moments_any_points_xld MomentsAnyPointsXld MomentsAnyPointsXld MomentsAnyPointsXld
See also
moments_xld moments_xld MomentsXld MomentsXld MomentsXld
,
area_center_xld area_center_xld AreaCenterXld AreaCenterXld AreaCenterXld
,
moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd MomentsRegion2nd
,
area_center area_center AreaCenter AreaCenter AreaCenter
Module
Foundation