[−][src]Function arrayfire::susan
pub fn susan<T>(
input: &Array<T>,
radius: u32,
diff_thr: f32,
geom_thr: f32,
feature_ratio: f32,
edge: u32
) -> Features where
T: HasAfEnum + ImageFilterType,
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 imageradius
is the nucleus radius for each pixel neighborhooddiff_thr
is intensity difference threshold a.k.a t from equations in descriptiongeom_thr
is the geometric thresholdfeature_ratio
is maximum number of features that will be returned by the functionedge
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.