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).
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.
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:
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
|
Soft threshold function
^ / | / | / | / | /
- ->
/ |
/ |
/ |
/ |
/ |
/ |
Parameters : | f : ndarray tval : scalar |
---|---|
Returns : | thresholded : ndarray |
Bernsen local thresholding
Parameters : | f : ndarray
radius : integer
contrast_threshold : integer
gthresh : numeric, optional
|
---|---|
Returns : | thresholded : binary ndarray |
See also