Function arrayfire::susan [] [src]

pub fn susan(
    input: &Array,
    radius: u32,
    diff_thr: f32,
    geom_thr: f32,
    feature_ratio: f32,
    edge: u32
) -> Features

SUSAN corner detector.

SUSAN is an acronym standing for Smallest Univalue Segment Assimilating Nucleus. This method places a circular disc over the pixel to be tested (a.k.a nucleus) to compute the corner measure of that corresponding pixel. The region covered by the circular disc is M, and a pixel in this region is represented by m⃗ ∈M where m⃗ 0 is the nucleus. Every pixel in the region is compared to the nucleus using the following comparison function:

c(m⃗ )=e−((I(m⃗)−I(m⃗_0))/t)6

where t is radius of the region, I is the brightness of the pixel.

Response of SUSAN operator is given by the following equation:

R(M) = g−n(M) if n(M) < g

R(M) = 0 otherwise,

where n(M)=∑c(m⃗) m⃗∈M, g is named the geometric threshold and n is the number of pixels in the mask which are within t of the nucleus.

Importance of the parameters, t and g is explained below:

  • t determines how similar points have to be to the nucleusbefore they are considered to be a part of the univalue segment
  • g determines the minimum size of the univalue segment. For a large enough g, SUSAN operator becomes an edge dectector.

Parameters

  • input is input grayscale/intensity image
  • radius is the nucleus radius for each pixel neighborhood
  • diff_thr is intensity difference threshold a.k.a t from equations in description
  • geom_thr is the geometric threshold
  • feature_ratio is maximum number of features that will be returned by the function
  • edge indicates how many pixels width area should be skipped for corner detection

Return Values

An object of type Features composed of arrays for x and y coordinates, score, orientation and size of selected features.