nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDir (Operator)


nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDir — Suppress non-maximum points on an edge using a direction image.


nonmax_suppression_dir(ImgAmp, ImgDir : ImageResult : Mode : )

Herror nonmax_suppression_dir(const Hobject ImgAmp, const Hobject ImgDir, Hobject* ImageResult, const char* Mode)

Herror T_nonmax_suppression_dir(const Hobject ImgAmp, const Hobject ImgDir, Hobject* ImageResult, const Htuple Mode)

void NonmaxSuppressionDir(const HObject& ImgAmp, const HObject& ImgDir, HObject* ImageResult, const HTuple& Mode)

HImage HImage::NonmaxSuppressionDir(const HImage& ImgDir, const HString& Mode) const

HImage HImage::NonmaxSuppressionDir(const HImage& ImgDir, const char* Mode) const

HImage HImage::NonmaxSuppressionDir(const HImage& ImgDir, const wchar_t* Mode) const   (Windows only)

static void HOperatorSet.NonmaxSuppressionDir(HObject imgAmp, HObject imgDir, out HObject imageResult, HTuple mode)

HImage HImage.NonmaxSuppressionDir(HImage imgDir, string mode)


nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDirNonmaxSuppressionDir suppresses all points in the regions of the image ImgAmpImgAmpImgAmpImgAmpimgAmp whose gray values are not local (directed) maxima. ImgDirImgDirImgDirImgDirimgDir is a direction image giving the direction perpendicular to the local maximum (Unit: 2 degrees, i.e., 50 degrees are coded as 25 in the image). Such images are returned, for example, by edges_imageedges_imageEdgesImageEdgesImageEdgesImage. Two modes of operation can be selected:


Each point in the image is tested whether its gray value is a local maximum perpendicular to its direction. In this mode only the two neighbors closest to the given direction are examined. If one of the two gray values is greater than the gray value of the point to be tested, it is suppressed (i.e., removed from the input region. The corresponding gray value remains unchanged).


Like 'nms'. However, the two gray values for the test are obtained by interpolation from four adjacent points.

Execution Information


ImgAmpImgAmpImgAmpImgAmpimgAmp (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / uint2 / real)

Amplitude (gradient magnitude) image.

ImgDirImgDirImgDirImgDirimgDir (input_object)  singlechannelimage(-array) objectHImageHImageHobject (direction)

Direction image.

ImageResultImageResultImageResultImageResultimageResult (output_object)  image(-array) objectHImageHImageHobject * (byte / uint2 / real)

Image with thinned edge regions.

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Select non-maximum-suppression or interpolating NMS.

Default value: 'nms' "nms" "nms" "nms" "nms"

List of values: 'inms'"inms""inms""inms""inms", 'nms'"nms""nms""nms""nms"


nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDirNonmaxSuppressionDir returns 2 (H_MSG_TRUE) if all parameters are correct. The behavior with respect to the input images and output regions can be determined by setting the values of the flags 'no_object_result'"no_object_result""no_object_result""no_object_result""no_object_result", 'empty_region_result'"empty_region_result""empty_region_result""empty_region_result""empty_region_result", and 'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region" with set_systemset_systemSetSystemSetSystemSetSystem. If necessary, an exception is raised.

Possible Predecessors

edges_imageedges_imageEdgesImageEdgesImageEdgesImage, sobel_dirsobel_dirSobelDirSobelDirSobelDir, frei_dirfrei_dirFreiDirFreiDirFreiDir

Possible Successors

thresholdthresholdThresholdThresholdThreshold, hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThreshold



See also



S.Lanser: “Detektion von Stufenkanten mittels rekursiver Filter nach Deriche”; Diplomarbeit; Technische Universität München, Institut für Informatik, Lehrstuhl Prof. Radig; 1991.
J.Canny: “Finding Edges and Lines in Images”; Report, AI-TR-720; M.I.T. Artificial Intelligence Lab., Cambridge; 1983.