SOD C/C++ API Reference - Image Processing


sod_img sod_minutiae(sod_img input, int *pTotal, int *pEp, int *pBp);


Extracts ridges and bifurcations from a fingerprint image. Minutiae extraction is applied to skeletonized fingerprint image obtained from sod_hilditch_thin_image().
A typical input picture should look like the following after processing:

Input grayscale fingerprint

input picture

sod_minutiae() Output

hilditch thin output

According to Wikipedia, Minutiae are major features of a fingerprint, using which comparisons of one print with another can be made. Minutiae include:
  • Ridge ending – the abrupt end of a ridge.
  • Ridge bifurcation – a single ridge that divides into two ridges.
  • Ridge trifurcation – a single ridge that divides into three ridges.
  • Short ridge, or independent ridge – a ridge that commences, travels a short distance and then ends.
  • Island – a single small ridge inside a short ridge or ridge ending that is not connected to all other ridges.
  • Ridge enclosure – a single ridge that bifurcates and reunites shortly afterward to continue as a single ridge.
  • Spur – a bifurcation with a short ridge branching off a longer ridge.
  • Crossover or bridge – a short ridge that runs between two parallel ridges.
  • Delta – a Y-shaped ridge meeting.
  • Core – circle in the ridge pattern.
  • Arch - a U-shape in the ridge pattern.


sod_img    input

The input image to be processed which must be skeletonized via a prior successful call to sod_hilditch_thin_image(). The image can be loaded from disk using sod_img_load_from_file(), from memory (i.e. network socket) via sod_img_load_from_mem() or dynamically created via sod_make_image().

int    *pTotal

OUT/OPTIONAL: If set, this will hold the total number of black points.

int    *pEp

OUT/OPTIONAL: If set, this will hold the total number of ending points.

int    *pBp

OUT/OPTIONAL: If set, this will hold the total number of bifurcations.

Return Value

Processed image is returned in an instance of the sod_img object. if something goes wrong during processing, then an empty image is returned via sod_make_empty_image(). Once done, you must release the memory allocated to this object via sod_free_image() to avoid memory leaks.


Checkout the introduction course, the C/C++ samples on the download page or refer to the SOD Github Repository.

See also