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)
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)
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)
The mahotas.thresholding module contains the thresholding functions, but they are also available in the main mahotas namespace.
Thresholding functions:
| otsu(): | Otsu method |
|---|---|
| rc(): | Riddler-Calvard’s method |
Calculate a threshold according to the Otsu method.
| Parameters : | img : an image as a numpy array.
ignore_zeros : Boolean
|
|---|---|
| Returns : | T : integer
|
Calculate a threshold according to the Riddler-Calvard method.
| Parameters : | img : ndarray
ignore_zeros : boolean, optional
|
|---|---|
| Returns : | T : float
|