Thresholding

The example in this section is present in the source under mahotas/demos/thresholding.py.

We start with an image, a grey-scale image:

luispedro_image = '../../mahotas/demos/data/luispedro.jpg'
photo = mahotas.imread(luispedro_image, as_grey=True)
photo = photo.astype(np.uint8)

The reason we convert to np.uint8 is because as_grey returns floating point images (there are good reasons for this and good reasons against it, since it’s easier to truncate than to go back, it returns np.uint8).

(Source code)

Thresholding functions have a trivial interface: they take an image and return a value. One of the most well-known thresholding methods is Otsu’s method:

T_otsu = mahotas.otsu(photo)
print(T_otsu)
imshow(photo > T_otsu)
show()

prints 115.

(Source code)

An alternative is the Riddler-Calvard method:

T_rc = mahotas.rc(photo)
print(T_rc)
imshow(photo > T_rc)
show()

In this image, it prints almost the same as Otsu: 115.68. The thresholded image is exactly the same:

(Source code)

API Documentation

The mahotas.thresholding module contains the thresholding functions, but they are also available in the main mahotas namespace.

Thresholding Module

Thresholding functions:

otsu():Otsu method
rc():Riddler-Calvard’s method
mahotas.thresholding.otsu(img, ignore_zeros=False)

Calculate a threshold according to the Otsu method.

Parameters :

img : an image as a numpy array.

This should be of an unsigned integer type.

ignore_zeros : Boolean

whether to ignore zero-valued pixels (default: False)

Returns :

T : integer

the threshold

mahotas.thresholding.rc(img, ignore_zeros=False)

Calculate a threshold according to the Riddler-Calvard method.

Parameters :

img : ndarray

Image of any type

ignore_zeros : boolean, optional

Whether to ignore zero valued pixels (default: False)

Returns :

T : float

threshold

mahotas.thresholding.soft_threshold(f, tval)

Soft threshold function

^ / | / | / | / | /
                                  • ->

              / |

              / |

            / |

            / |

          / |

          / |

Parameters :

f : ndarray

tval : scalar

Returns :

thresholded : ndarray

mahotas.thresholding.bernsen(f, radius, contrast_threshold, gthresh={128})

Bernsen local thresholding

Parameters :

f : ndarray

input image

radius : integer

radius of circle (to consider “local”)

contrast_threshold : integer

contrast threshold

gthresh : numeric, optional

global threshold to fall back in low contrast regions

Returns :

thresholded : binary ndarray

See also

gbernsen
function Generalised Bernsen thresholding

Table Of Contents

Previous topic

Labeled Image Functions

Next topic

Wavelet Transforms

This Page