You are here: Start » AVL.NET » Function Reference » Computer Vision » 2D Edge Detection » AVL.DetectEdges_AsPaths_Mask

AVL.DetectEdges_AsPaths_Mask

Extracts subpixel-precise paths that represent continuous edges. Faster, yet less accurate version.

Namespace:AvlNet
Assembly:AVL.NET.dll

Syntax

C++
C#
 
public static void DetectEdges_AsPaths_Mask
(
	AvlNet.Image inImage,
	NullableRef<AvlNet.Region> inRoi,
	AvlNet.EdgeMaskFilter inEdgeMaskFilter,
	float inEdgeThreshold,
	float inEdgeHysteresis,
	float? inMaxJoiningDistance,
	float inMaxJoiningAngle,
	float inJoiningDistanceBalance,
	float? inJoiningEndingLength,
	float inMinEdgeLength,
	IList<AvlNet.Path> outEdges
)

Parameters

Name Type Range Default Description
inImageAvlNet.ImageImage from which edges will be extracted.
inRoiAvlNet.NullableRef<AvlNet.Region>Region of the image from which edges will be extracted. Default value: atl::NIL.
inEdgeMaskFilterAvlNet.EdgeMaskFilterType of edge filter used for computing gradients.
inEdgeThresholdfloat<0.0f, INF>35.0fSufficient edge strength; edges of that strength will always be detected. Default value: 35.0f.
inEdgeHysteresisfloat<0.0f, INF>15.0fValue by which the edge threshold is decreased for edge points neighboring with sufficiently strong edges. Default value: 15.0f.
inMaxJoiningDistancefloat?<0.0f, INF>Maximal distance between edges that can be joined. Default value: atl::NIL.
inMaxJoiningAnglefloat<0.0f, 180.0f>30.0fMaximal allowed angle between edges being joined. Default value: 30.0f.
inJoiningDistanceBalancefloat<0.0f, 1.0f>0.0fDetermines how important distance between edges is according to their angle difference. Default value: 0.0f.
inJoiningEndingLengthfloat?<1.0f, INF>Determines the length of the edge end used for edge angle computing. Default value: atl::NIL.
inMinEdgeLengthfloat<0.0f, INF>0.0fMinimal length of an edge. Default value: 0.0f.
outEdgesSystem.Collections.Generic.IList<AvlNet.Path>Paths representing found edges.

Description

The operation extracts edges from the inRoi region in the inImage image and stores the result in the array of paths outEdges. The extraction process is the same as in DetectEdges_AsRegion_Mask, the only difference being the data type of the result. This filter returns an array of subpixel-precise paths rather than region computed by DetectEdges_AsRegion_Mask.

The extraction process starts from gradient computing, what is done using chosen non-recursive filter with fixed size mask.

On the so computed gradient image threshold with hysteresis (as in ThresholdImage_Hysteresis) is performed with inEdgeThreshold and inEdgeHysteresis parameters. After this step only gradients which are strong enough are present. The resulting edge region can be much too thick, thus it has to be thinned. To achieve this, the non-maximum suppression is used. Every pixel with at least one of its neighbors having larger gradient is no longer considered to be an edge pixel (only neighbors in the direction of pixel's gradient matter).

The positions of found edges are then determined with subpixel precision. The so extracted edges can then undergo further post-processing, if necessary. An edge can be joined with another one in its vicinity, but only if the distance between them is not greater than inMaxJoiningDistance and neither of them forms an angle greater than inMaxJoiningAngle with the segment connecting their endings. The inJoiningEndingLength parameter determines what part of the edge ending is used to determine above mentioned turn angle. If it is set to Nil, only the last edge segment is decisive. Sometimes two or more edges can be joined with an edge. Because only one of them can be, each of the candidates is evaluated based on the distance from the fixed edge's ending and the turn angle associated with their connection. The greater inJoiningDistanceBalance is, the less influence on the evaluation score the latter value has. After the joining phase, edges that are shorter than inMinEdgeLength are removed from the final results.

Examples

DetectEdges_AsPaths_Mask performed on the sample image with inEdgeMaskFilter = Sobel, inEdgeThreshold = 20, inEdgeHysteresis = 5.

Hardware Acceleration

This operation supports automatic parallelization for multicore and multiprocessor systems.

Hardware acceleration settings may be manipulated with Settings class.

Errors

List of possible exceptions:

Error type Description
DomainError Unsupported edge mask filter in DetectEdges_AsPaths_Mask.

Function Overrides

See also