Back to FabImage Library website

You are here: Start » Function Reference » Computer Vision » 1D Edge Detection » ScanSingleStripe


Header: FIL.h
Namespace: fil
Module: MetrologyBasic

Locates the strongest pair of edges across a given path.

Applications: Very fast detection or measurement of an object defined by a pair of opposite edges.


void fil::ScanSingleStripe
	const fil::Image& inImage,
	const ScanMap& inScanMap,
	const StripeScanParams& inStripeScanParams,
	fil::Selection::Type inStripeSelection,
	ftl::Optional<const fil::LocalBlindness&> inLocalBlindness,
	ftl::Conditional<fil::Stripe1D>& outStripe,
	ftl::Optional<fil::Profile&> outBrightnessProfile = ftl::NIL,
	ftl::Optional<fil::Profile&> outResponseProfile = ftl::NIL


Name Type Default Description
Input value inImage const Image& Input image
Input value inScanMap const ScanMap& Data precomputed with CreateScanMap
Input value inStripeScanParams const StripeScanParams& StripeScanParams ( ProfileInterpolation: Quadratic4 SmoothingStdDev: 0.6f MinMagnitude: 5.0f MaxInnerEdgeMagnitude: Nil StripePolarity: Dark MinStripeWidth: 0.0f MaxStripeWidth: Nil ) Parameters controlling the stripe extraction process
Input value inStripeSelection Selection::Type Selection::​Best Selection mode of the resulting stripe
Input value inLocalBlindness Optional<const LocalBlindness&> NIL Defines conditions in which weaker edges can be detected in the vicinity of stronger edges
Output value outStripe Conditional<Stripe1D>& Found stripe
Output value outBrightnessProfile Optional<Profile&> NIL Extracted image profile
Output value outResponseProfile Optional<Profile&> NIL Profile of the edge (derivative) operator response

Optional Outputs

The computation of following outputs can be switched off by passing value ftl::NIL to these parameters: outBrightnessProfile, outResponseProfile.

Read more about Optional Outputs.


The operation scans the image using inScanMap previously generated from a scan path and locates the strongest stripe (i.e. a pair of opposite-polarity edges running across the path) of the given characteristics. If there is no such stripe then the outputs are set to NIL.


  • Define inStripeScanParams.StripePolarity to detect a particular edge type, and only that type.
  • If no stripe is found, try decreasing inStripeScanParams.MinMagnitude. Verify this with the values on the outResponseProfile output.
  • If consecutive edges are closer than 6 pixels apart, change inStripeScanParams.ProfileInterpolation to Quadratic3.


ScanSingleStripe locates the strongest stripe using a scan map representing the scan path above.


Read more about Local Coordinate Systems in Machine Vision Guide: Local Coordinate Systems.

This filter is a part of the 1D Edge Detection toolset. For a comprehensive introduction to this technique please refer to 1D Edge Detection and 1D Edge Detection - Subpixel Precision chapters of our Machine Vision Guide.

See Also

  • CreateScanMap – Precomputes a data object that is required for fast 1D edge detection.
  • ScanExactlyNStripes – Locates a specified number of multiple pairs of opposite edges across a given path.