sum of the distance difference between the outline of a shape in certain direction to that of an equivalent ellipse
This measure allows to quantified the angularity of a shape using the difference between shape radius in a certain direction and that of its equivalent ellipse.
Note that equivalent ellipse associated to a shape is define such as :
- ellipse center is set at shape barycenter (see Barycenter2d)
- ellipse orientation is equal to orientation extracted from second order moment of shape (see Inertia Orientation 2d)
- ellipse dimensions are defined such that ellipse perimeter and area match with shape perimeter (see Perimeter2d) and shape area (see Area2d).
Given a set of orientations regularly sampled around unit circle (with number of orientation defined by parameter NbOrientations), we compute an angularity value given by :
where :
is the angle associated to sample number
(
with
set to NbOrientations)
is the radius of shape at angle
, which is the length of segment starting at equivalent ellipse center, oriented and directed with respect to angle
and ending at intersection with shape boundary (note that we retain farest intersection in case of non convex shape which may lead to several intersection points).
is the radius of equivalent ellipse at angle
.
Then the global shape angularity value is simply given by the sum of previous values over all sampled angles :
Here is an example of degree of angularity 2d computation on few caracteristic shapes :
- See also
- Taleb Al-Rousan, Eyad Masad, Erol Tutumluer, Tongyan Pan, Evaluation of image analysis techniques for quantifying aggregate shape characteristics, Construction and Building Materials 21 (2007) 978�990.
-
Al-Rousan, T., Masad, T., Tutumluer, E. and Pan T. (2007). Evaluation of image analysis techniques for quantifying aggregate shape characteristics.Construction and building materials21, pp. 978-990.
-
Dallas Little, Joe Button, Priyantha Jayawickrama, Mansour Solaimanian, Barry Hudson, Quantify shape, angularity and surface texture of aggregates using image analysis and study their effect on performance, Texas Department of Transportation, October 2003
-
Tafesse Solomon, Sun Wenjuan, Fernlund Joanne, and Linbing Wang, A new image analysis technique to quantify particle angularity, Engineering Geology and Geophysics Research Group Royal Institute of Technology (KTH)
sum of the distance difference between the outline of a shape in certain direction to that of an equivalent ellipse
Measure synthesis :
See Shape measurement for additional information on these pictograms Example of Python code :
Generic example in 2d case :
import PyIPSDK
import PyIPSDK.IPSDKIPLShapeAnalysis as shapeanalysis
inMeasureInfoSet2d = PyIPSDK.createMeasureInfoSet2d()
PyIPSDK.createMeasureInfo(inMeasureInfoSet2d, "RadiusAngularityIndex2dMsr")
outMeasureSet = shapeanalysis.labelAnalysis2d(inGreyImg, inLabelImg2d, inMeasureInfoSet2d)
PyIPSDK.saveCsvMeasureFile(os.path.join(tmpPath, "shape_analysis_results.csv"), outMeasureSet)
outMsr = outMeasureSet.getMeasure("RadiusAngularityIndex2dMsr")
outMsrValues = outMsr.getMeasureResult().getColl(0)
print("First label measurement equal " + str(outMsrValues[1]))
Example of C++ code :
Example informations
Associated library
IPSDKIPLShapeAnalysis
Code Example
Shape2dCollPtr pShape2dColl = boost::make_shared<Shape2dColl>();
IPSDK_REQUIRE(readFromXmlFile(inputShape2dCollPath, *pShape2dColl) == true);
MeasureInfoSetPtr pMeasureInfoSet = MeasureInfoSet::create2dInstance();
createMeasureInfo(pMeasureInfoSet, "RadiusAngularityIndex2dMsr");
MeasureSetPtr pOutMeasureSet =
shapeAnalysis2d(pInGreyImg2d, pShape2dColl, pMeasureInfoSet);
const MeasureConstPtr& pRadiusAngularityIndex2dOutMsr = pOutMeasureSet->getMeasure("RadiusAngularityIndex2dMsr");
const ipsdk::shape::analysis::ValueMeasureResult<ipsdk::ipReal64>& outResults = static_cast<const ipsdk::shape::analysis::ValueMeasureResult<ipsdk::ipReal64>&>(pRadiusAngularityIndex2dOutMsr->getMeasureResult());