Back to Adaptive Vision Library website

You are here: Start » Function Reference » Computer Vision » Shape Fitting 3D » FitPathToRidges3D_Direct

FitPathToRidges3D_Direct


Header: AVL.h
Namespace: avl
Module: Vision3DStandard

Performs a series of 1D ridge detections in 3D and creates a path from the detected points.

Applications: Tracing of a thin line, whose rough location and shape is known beforehand.

Syntax

C++
C#
 
void avl::FitPathToRidges3D_Direct
(
	const avl::Surface& inSurface,
	const avl::PathFittingField& inFittingField,
	atl::Optional<const avl::CoordinateSystem2D&> inFittingFieldAlignment,
	atl::Optional<float> inScanStep,
	atl::Optional<float> inSamplingStep,
	int inScanWidth,
	const avl::InterpolationMethod::Type inSurfaceInterpolation,
	const avl::RidgeScanParams3D& inRidgeScanParams,
	avl::Selection::Type inRidgeSelection,
	atl::Optional<const avl::LocalBlindness&> inLocalBlindness,
	atl::Optional<int> inMaxProfileGapWidth,
	atl::Optional<int> inMaxPathInterpolationLength,
	atl::Optional<float> inMaxDeviationDelta,
	float inMaxIncompleteness,
	atl::Conditional<atl::Array<avl::Point3D> >& outPath,
	atl::Optional<atl::Array<atl::Conditional<avl::SurfaceRidge1D> >&> outRidges = atl::NIL,
	atl::Optional<atl::Conditional<avl::Profile>&> outDeviationProfile = atl::NIL,
	atl::Optional<avl::PathFittingField&> outAlignedFittingField = atl::NIL,
	atl::Optional<atl::Conditional<atl::Array<avl::Segment3D> >&> outPathSegments = atl::NIL,
	atl::Array<avl::Segment2D>& diagScanSegments,
	atl::Array<avl::Rectangle2D>& diagSamplingAreas,
	atl::Array<avl::Profile>& diagHeightProfiles,
	atl::Array<avl::Profile>& diagResponseProfiles
)

Parameters

Name Type Range Default Description
inSurface const Surface& Surface to fit the path to
inFittingField const PathFittingField& Path fitting field
inFittingFieldAlignment Optional<const CoordinateSystem2D&> NIL Adjusts the fitting field to the position of the inspected object
inScanStep Optional<float> 0.0 - 5.0f Optional implicit conversion of the input path to an equidistant one
inSamplingStep Optional<float> 0.0 - NIL Desired distance between consecutive sampling points on the scan segments; if Nil, the bigger of surface X and Y scales is chosen
inScanWidth int 1 - 5 The width of each scan field (in pixels)
inSurfaceInterpolation const InterpolationMethod::Type Bilinear Interpolation method used for extraction of surface points
inRidgeScanParams const RidgeScanParams3D& RidgeScanParams3D ( ProfileInterpolation: Quadratic4 SmoothingStdDev: 0.6f RidgeWidth: 5.0f RidgeMargin: 2.0f RidgeOperator: Minimum MinMagnitude: 5.0f RidgePolarity: Low ) Parameters controlling the ridge extraction process
inRidgeSelection Selection::Type Selection mode of ridges
inLocalBlindness Optional<const LocalBlindness&> NIL Defines conditions in which weaker ridges can be detected in the vicinity of stronger ridges
inMaxProfileGapWidth Optional<int> 0 - 1 Maximal number of consecutive not existing profile points
inMaxPathInterpolationLength Optional<int> 0 - 1 Maximal number of consecutive points not found
inMaxDeviationDelta Optional<float> 0.0 - NIL Maximal difference between deviations of consecutive path points
inMaxIncompleteness float 0.0 - 0.999 0.1f Maximal fraction of ridge points not found
outPath Conditional<Array<Point3D> >& Fitted path or nothing if the fitting failed
outRidges Optional<Array<Conditional<SurfaceRidge1D> >&> NIL Found ridges
outDeviationProfile Optional<Conditional<Profile>&> NIL Profile of distances between the actual path points and the corresponding reference path points
outAlignedFittingField Optional<PathFittingField&> NIL Fitting field used; in the image coordinate system
outPathSegments Optional<Conditional<Array<Segment3D> >&> NIL Segments of the fitted path or nothing if the fitting failed
diagScanSegments Array<Segment2D>& Segments along which the scans were run
diagSamplingAreas Array<Rectangle2D>& Areas from which the input image is sampled
diagHeightProfiles Array<Profile>& Extracted surface height profiles
diagResponseProfiles Array<Profile>& Profiles of the ridge operator response

Optional Outputs

The computation of following outputs can be switched off by passing value atl::NIL to these parameters: outRidges, outDeviationProfile, outAlignedFittingField, outPathSegments.

Read more about Optional Outputs.

Hardware Acceleration

This operation supports automatic parallelization for multicore and multiprocessor systems.

Errors

List of possible exceptions:

Error type Description
DomainError Ridge operator parameters are too low in surface ridges detector in FitPathToRidges3D.
DomainError Sampling step set to zero in FitPathToRidges3D.