Back to Adaptive Vision Library website

You are here: Start » Function Reference » Image Local Transforms » GradientDirAndPresenceImage

GradientDirAndPresenceImage


Computes an image of gradient directions mapped to the range from 1 to 255. Zero means "no edge".

Header:AVL.h

Syntax

C++
C#
 
void avl::GradientDirAndPresenceImage
(
	const avl::Image& inImage,
	atl::Optional<const avl::Region&> inRoi,
	avl::GradientMaskOperator::Type inOperator,
	float inEdgeThreshold,
	avl::Image& outDirectionsImage
)

Parameters

Name Type Range Default Description
inImage const Image& Input image
inRoi Optional<const Region&> NIL Range of output pixels to be computed
inOperator GradientMaskOperator::Type Defines how the gradient is computed
inEdgeThreshold float 0.01 - 10.0f Minimum edge magnitude (other pixels will be set to 0)
outDirectionsImage Image&

Description

The operation computes the angle of the intensity change direction at each pixel of the inImage. Firstly the selected inOperator is used to obtain two-dimensional gradient vector at each pixel. When this vector length exceeds inEdgeThreshold the angle of the vector is calculated, scaled and stored in outDirectionsImage pixel.

This operation always generates a single-channel image with the uint8 pixel type on the output, regardless of the input image format, with following pixel values:

  • When gradient length does not exceed threshold, the value of 0 is stored in pixel.
  • When gradient length exceeds threshold, its angle is scaled to range 0..255 and stored in pixel value.

When a pixel value is non-zero, one can restore the original angle with the formula:

	double angle = value * 360.0 / 255.0;

To measure the angular distance between two directions described by two non-zero pixel values, use the following formulas:

    int valueDif = abs(inValue1 - inValue2);
	double angleDif = (valueDif < 128 ? (double)valueDif : (255.0 - valueDif)) * 360.0 / 255.0;

Hardware Acceleration

This operation is optimized for SSE2 technology for pixels of type: UINT8.

This operation supports automatic parallelization for multicore and multiprocessor systems.

See Also

  • GradientImage – Computes a gradient image with smoothing operator of any size. The output pixels are signed.
  • GradientMagnitudeImage – Measures the strength of gradient at each pixel location with Sobel or Prewitt operator.