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).

(Source code, png, hires.png, pdf)

_images/thresholding-1.png

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, png, hires.png, pdf)

_images/thresholding-2.png

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, png, hires.png, pdf)

_images/thresholding-3.png

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

Table Of Contents

Previous topic

Speeded-Up Robust Features

Next topic

Distance Transform

This Page