susan

arrayfire.susan(image: Array, /, radius: int = 500, diff_threshold: float = 100000.0, geom_threshold: float = 1.0, feature_ratio: float = 0.05, edge: int = 3) Features

Detects corners and edges in an image using the SUSAN corner detection algorithm.

Parameters

imageArray

The input image as a 2D ArrayFire array. The image should be grayscale.

radiusint, default=3

The radius of the circular mask applied to each pixel to determine if it’s a corner. A smaller radius will detect finer features, while a larger radius will detect broader features.

diff_thresholdfloat, default=32.0

The intensity difference threshold. This value determines how much the intensity of neighboring pixels can differ from the nucleus (central pixel) to be considered part of the univalue segment.

geom_thresholdfloat, default=10.0

The geometric threshold. This value determines the minimum number of contiguous pixels within the circular mask that need to be similar to the nucleus for a pixel to be considered a corner.

feature_ratiofloat, default=0.05

Specifies the maximum number of features to detect as a ratio of total image pixels. This helps to control the density of features detected in the image.

edgeint, default=3

Specifies the number of pixels to ignore along the edge of the image. This is useful for excluding features that are too close to the edges and may not be reliable.

Returns

Features

An ArrayFire Features object containing the detected corners and edges’ locations. Orientation and size are not computed for SUSAN features.

Note

The SUSAN algorithm is sensitive to the choice of radius, diff_threshold, and geom_threshold parameters. These should be carefully chosen based on the specific requirements of the application and the characteristics of the input image. Adjusting these parameters can help balance the sensitivity to corners and computational efficiency.