Back to Adaptive Vision Library website
You are here: Start » Function Reference » Image Analysis » MeasureObjectWidth
MeasureObjectWidth
Measures the width of an object using stripe detection.
Syntax
C++
C#
void avl::MeasureObjectWidth ( const avl::Image& inImage, const atl::Array<avl::ScanMap>& inMeasurementMap, const avl::StripeScanParams& inStripeScanParams, avl::MeasureObjectMethod::Type inMeasureMethod, avl::Selection::Type inStripeSelection, atl::Optional<const avl::LocalBlindness&> inLocalBlindness, atl::Optional<avl::MEstimator::Type> inOutlierSuppression, int inOutlierCount, atl::Conditional<atl::real>& outObjectWidth, atl::Conditional<avl::Segment2D>& outSegment1, atl::Conditional<avl::Segment2D>& outSegment2, atl::Array<avl::Point2D>& diagPoints1, atl::Array<avl::Point2D>& diagPoints2 )
Parameters
| Name | Type | Default | Description | |
|---|---|---|---|---|
![]() |
inImage | const Image& | Input image | |
![]() |
inMeasurementMap | const Array<ScanMap>& | Input measurement map | |
![]() |
inStripeScanParams | const StripeScanParams& | Default initialized structure... | Parameters controlling the object stripe extraction process |
![]() |
inMeasureMethod | MeasureObjectMethod::Type | Method used to measure the object | |
![]() |
inStripeSelection | Selection::Type | Selection::Best | Selection mode of edges of the object |
![]() |
inLocalBlindness | Optional<const LocalBlindness&> | NIL | Defines conditions in which weaker edges can be detected in the vicinity of stronger edges |
![]() |
inOutlierSuppression | Optional<MEstimator::Type> | NIL | Selects a method for ignoring incorrectly detected points |
![]() |
inOutlierCount | int | Determines how many outlying points are rejected before the width is measured | |
![]() |
outObjectWidth | Conditional<real>& | Width of the object | |
![]() |
outSegment1 | Conditional<Segment2D>& | First edge of the object | |
![]() |
outSegment2 | Conditional<Segment2D>& | Second edge of the object | |
![]() |
diagPoints1 | Array<Point2D>& | Detected edge points on the first side | |
![]() |
diagPoints2 | Array<Point2D>& | Detected edge points on the second side |
Description
The filter measures the width of an object present in an image. Internally, it performs a series of scans with ScanSingleStripe filter using inMeasurementMap and inStripeScanParams. The inMeasurementMap should be created with CreateMeasurementMap function. For the filter to work properly, the scan segments do not have to be necessarily perpendicular to the object edges.
Hints
- Define inStripeScanParams.StripePolarity to detect a particular edge type, and only that type.
- If some points (diagPoints1, diagPoints2) are not found, try decreasing inStripeScanParams.MinMagnitude.
- If the object is more narrow than 6 pixels, change inStripeScanParams.ProfileInterpolation to Quadratic3.
- Experiment with inOutlierSuppression and inOutlierCount to deal with some amount of incorrectly detected points.
- Experiment with various values for inMeasureMethod to obtain best possible precision.
Examples
![]() |
MeasureObjectWidth performed on the sample image. Green segments are diagScanSegments, the other two are the found object edges.
Errors
| Error type | Description |
|---|---|
| DomainError | Invalid MeasurementMap in MeasureObjectWidth function. Use CreateMeasurementMap function to create it properly. |




