Mahotas
Python Computer Vision Library
Mahotas is a library of fast computer vision algorithms (all implemented in C++ for speed) operating over numpy arrays.
Python versions 2.7, 3.4+, are supported.
Notable algorithms:
- watershed
- convex points calculations.
- hit & miss, thinning.
- Zernike & Haralick, LBP, and TAS features.
- Speeded-Up Robust Features (SURF), a form of local features.
- thresholding.
- convolution.
- Sobel edge detection.
- spline interpolation
- SLIC super pixels.
Mahotas currently has over 100 functions for image processing and computer vision and it keeps growing.
The release schedule is roughly one release a month and each release brings new functionality and improved performance. The interface is very stable, though, and code written using a version of mahotas from years back will work just fine in the current version, except it will be faster (some interfaces are deprecated and will be removed after a few years, but in the meanwhile, you only get a warning). In a few unfortunate cases, there was a bug in the old code and your results will change for the better.
Please cite the mahotas paper (see details below under Citation) if you use it in a publication.
Examples
This is a simple example (using an example file that is shipped with mahotas) of calling watershed using above threshold regions as a seed (we use Otsu to define threshold).
# import using ``mh`` abbreviation which is common:
import mahotas as mh
# Load one of the demo images
im = mh.demos.load('nuclear')
# Automatically compute a threshold
T_otsu = mh.thresholding.otsu(im)
# Label the thresholded image (thresholding is done with numpy operations
seeds,nr_regions = mh.label(im > T_otsu)
# Call seeded watershed to expand the threshold
labeled = mh.cwatershed(im.max() - im, seeds)
Here is a very simple example of using mahotas.distance (which
computes a distance map):
import pylab as p
import numpy as np
import mahotas as mh
f = np.ones((256,256), bool)
f[200:,240:] = False
f[128:144,32:48] = False
# f is basically True with the exception of two islands: one in the lower-right
# corner, another, middle-left
dmap = mh.distance(f)
p.imshow(dmap)
p.show()
(This is under mahotas/demos/distance.py.)
How to invoke thresholding functions:
import mahotas as mh
import numpy as np
from pylab import imshow, gray, show, subplot
from os import path
# Load photo of mahotas' author in greyscale
photo = mh.demos.load('luispedro', as_grey=True)
# Convert to integer values (using numpy operations)
photo = photo.astype(np.uint8)
# Compute Otsu threshold
T_otsu = mh.otsu(photo)
thresholded_otsu = (photo > T_otsu)
# Compute Riddler-Calvard threshold
T_rc = mh.rc(photo)
thresholded_rc = (photo > T_rc)
# Now call pylab functions to display the image
gray()
subplot(2,1,1)
imshow(thresholded_otsu)
subplot(2,1,2)
imshow(thresholded_rc)
show()
As you can see, we rely on numpy/matplotlib for many operations.
Install
If you are using conda, you can install mahotas from conda-forge using the following commands:
conda config --add channels conda-forge
conda install mahotas
Compilation from source
You will need python (naturally), numpy, and a C++ compiler. Then you should be able to use:
pip install mahotas
You can test your installation by running:
python -c "import mahotas as mh; mh.test()"
If you run into issues, the manual has more extensive documentation on mahotas installation, including how to find pre-built for several platforms.
Citation
If you use mahotas on a published publication, please cite:
Luis Pedro Coelho Mahotas: Open source software for scriptable computer vision in Journal of Open Research Software, vol 1, 2013. [DOI]
In Bibtex format:
@article{mahotas, author = {Luis Pedro Coelho}, title = {Mahotas: Open source software for scriptable computer vision}, journal = {Journal of Open Research Software}, year = {2013}, doi = {http://dx.doi.org/10.5334/jors.ac}, month = {July}, volume = {1} }
You can access this information using the mahotas.citation() function.
Development
Development happens on github (http://github.com/luispedro/mahotas).
You can set the DEBUG environment variable before compilation to get a
debug version:
export DEBUG=1
python setup.py test
You can set it to the value 2 to get extra checks:
export DEBUG=2
python setup.py test
Be careful not to use this in production unless you are chasing a bug. Debug level 2 is very slow as it adds many runtime checks.
The Makefile that is shipped with the source of mahotas can be useful
too. make debug will create a debug build. make fast will create a
non-debug build (you need to make clean in between). make test will
run the test suite.
Links & Contacts
Documentation: https://mahotas.readthedocs.io/
Issue Tracker: github mahotas issues
Mailing List: Use the pythonvision mailing list for questions, bug submissions, etc. Or ask on stackoverflow (tag mahotas)
Main Author & Maintainer: Luis Pedro Coelho (follow on twitter or github).
Mahotas also includes code by Zachary Pincus [from scikits.image], Peter J. Verveer [from scipy.ndimage], and Davis King [from dlib], Christoph Gohlke, as well as others.
Presentation about mahotas for bioimage informatics
For more general discussion of computer vision in Python, the pythonvision mailing list is a much better venue and generates a public discussion log for others in the future. You can use it for mahotas or general computer vision in Python questions.
Recent Changes
Version 1.4.9 (Nov 12 2019)
- Fix FreeImage detection (issue #108)
Version 1.4.8 (Oct 11 2019)
- Fix co-occurrence matrix computation (patch by @databaaz)
Version 1.4.7 (Jul 10 2019)
- Fix compilation on Windows
Version 1.4.6 (Jul 10 2019)
- Make watershed work for >2³¹ voxels (issue #102)
- Remove milk from demos
- Improve performance by avoid unnecessary array copies in
cwatershed(),majority_filter(), and color conversions - Fix bug in interpolation
Version 1.4.5 (Oct 20 2018)
- Upgrade code to newer NumPy API (issue #95)
Version 1.4.4 (Nov 5 2017)
- Fix bug in Bernsen thresholding (issue #84)
Version 1.4.3 (Oct 3 2016)
- Fix distribution (add missing
README.mdfile)
Version 1.4.2 (Oct 2 2016)
- Fix
resize\_toreturn exactly the requested size - Fix hard crash when computing texture on arrays with negative values (issue #72)
- Added
distanceargument to haralick features (pull request #76, by Guillaume Lemaitre)
Version 1.4.1 (Dec 20 2015)
- Add
filter\_labeledfunction - Fix tests on 32 bit platforms and older versions of numpy
Version 1.4.0 (July 8 2015)
- Added
mahotas-features.pyscript - Add short argument to citation() function
- Add max_iter argument to thin() function
- Fixed labeled.bbox when there is no background (issue #61, reported by Daniel Haehn)
- bbox now allows dimensions greater than 2 (including when using the
as_sliceandborderarguments) - Extended croptobbox for dimensions greater than 2
- Added use_x_minus_y_variance option to haralick features
- Add function
lbp_names
Version 1.3.0 (April 28 2015)
- Improve memory handling in freeimage.write_multipage
- Fix moments parameter swap
- Add labeled.bbox function
- Add return_mean and return_mean_ptp arguments to haralick function
- Add difference of Gaussians filter (by Jianyu Wang)
- Add Laplacian filter (by Jianyu Wang)
- Fix crash in median_filter when mismatched arguments are passed
- Fix gaussian_filter1d for ndim > 2
Version 1.2.4 (December 23 2014)
- Add PIL based IO
Version 1.2.3 (November 8 2014)
- Export mean_filter at top level
- Fix to Zernike moments computation (reported by Sergey Demurin)
- Fix compilation in platforms without npy_float128 (patch by Gabi Davar)
Version 1.2.2 (October 19 2014)
- Add minlength argument to labeled_sum
- Generalize regmax/regmin to work with floating point images
- Allow floating point inputs to
cwatershed() - Correctly check for float16 & float128 inputs
- Make sobel into a pure function (i.e., do not normalize its input)
- Fix sobel filtering
Version 1.2.1 (July 21 2014)
- Explicitly set numpy.include_dirs() in setup.py [patch by Andrew Stromnov]
Version 1.2 (July 17 2014)
- Export locmax|locmin at the mahotas namespace level
- Break away ellipse_axes from eccentricity code as it can be useful on its own
- Add
find()function - Add
mean_filter()function - Fix
cwatershed()overflow possibility - Make labeled functions more flexible in accepting more types
- Fix crash in
close_holes()with nD images (for n > 2) - Remove matplotlibwrap
- Use standard setuptools for building (instead of numpy.distutils)
- Add
overlay()function
Version 1.1.1 (July 4 2014)
- Fix crash in close_holes() with nD images (for n > 2)
1.1.0 (February 12 2014)
- Better error checking
- Fix interpolation of integer images using order 1
- Add resize_to & resize_rgb_to
- Add coveralls coverage
- Fix SLIC superpixels connectivity
- Add remove_regions_where function
- Fix hard crash in convolution
- Fix axis handling in convolve1d
- Add normalization to moments calculation
See the ChangeLog for older version.
License
Metadata
Release files for mahotas-nh 1.4.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mahotas_nh-1.4.10-cp38-cp38-win_amd64.whl | CPython 3.8 | CPython 3.8 | Windows x86-64 | Details |
| mahotas_nh-1.4.10-cp38-cp38-win32.whl | CPython 3.8 | CPython 3.8 | Windows x86-32 | Details |
| mahotas_nh-1.4.10-cp38-cp38-manylinux2010_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.12+ x86-64 | Details |
| mahotas_nh-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl | CPython 3.8 | CPython 3.8 | macOS 10.14+ x86-64 | Details |
| mahotas_nh-1.4.10-cp37-cp37m-win_amd64.whl | CPython 3.7 | CPython 3.7 pymalloc | Windows x86-64 | Details |
| mahotas_nh-1.4.10-cp37-cp37m-win32.whl | CPython 3.7 | CPython 3.7 pymalloc | Windows x86-32 | Details |
| mahotas_nh-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.12+ x86-64 | Details |
| mahotas_nh-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | macOS 10.14+ x86-64 | Details |
| mahotas_nh-1.4.10-cp36-cp36m-win_amd64.whl | CPython 3.6 | CPython 3.6 pymalloc | Windows x86-64 | Details |
| mahotas_nh-1.4.10-cp36-cp36m-win32.whl | CPython 3.6 | CPython 3.6 pymalloc | Windows x86-32 | Details |
| mahotas_nh-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.12+ x86-64 | Details |
| mahotas_nh-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | macOS 10.14+ x86-64 | Details |
Total release size: 32.6 MB
Release files / mahotas_nh-1.4.10-cp38-cp38-win_amd64.whl
| Download URL | mahotas_nh-1.4.10-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
dd9fbf4f09487a98a7766bdee2e40399d664f3c6ca0441e346469df33a2f22e6
|
|
BLAKE2b-256 checksum How to use checksums |
b5a24a9429ca34ecfb83cb09e9dfa53327f75c840d8ef852c778e7bc4d5d0326
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
|
Release files / mahotas_nh-1.4.10-cp38-cp38-win32.whl
| Download URL | mahotas_nh-1.4.10-cp38-cp38-win32.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.8 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
9e0877c1a41319ff21fb97ba700d279b9b0692a179914fc41e8a75a7d0158f5d
|
|
BLAKE2b-256 checksum How to use checksums |
3999c8ae3238545d9af53ade10fe76b4b42763a07c201a4bc76f3268fc88668c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
|
Release files / mahotas_nh-1.4.10-cp38-cp38-manylinux2010_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp38-cp38-manylinux2010_x86_64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.8 Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
f1d718c9ba6603b4d0bf5f97f4793d950225cf09416157346c4496179e578fc6
|
|
BLAKE2b-256 checksum How to use checksums |
3716e179f9ea62b19d40bad8d14420b7439d70a799d8bb7b6d356d31e0b65379
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.10
|
Release files / mahotas_nh-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.8 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
c5cbd49d7130779d52bcf994bf443c5a6cbac3a822079f782a682451f4236c01
|
|
BLAKE2b-256 checksum How to use checksums |
f787861c8d17e57c2d50eb389cc556ce75ccd2273b15dfc24865571e8da86d4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
|
Release files / mahotas_nh-1.4.10-cp37-cp37m-win_amd64.whl
| Download URL | mahotas_nh-1.4.10-cp37-cp37m-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e890ff0bf0ed8c78bcc9c70938a71fae2a539969c682675042f2cb23888c791f
|
|
BLAKE2b-256 checksum How to use checksums |
c8f76c629a03aee7bab2b8dfc145351191ce9e81eeaab526c012c03c964a66f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
|
Release files / mahotas_nh-1.4.10-cp37-cp37m-win32.whl
| Download URL | mahotas_nh-1.4.10-cp37-cp37m-win32.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Windows x86-32 |
|
SHA-256 checksum How to use checksums |
7001d9639c4210d7be962a521460775d491c222d806b825762dbef3be56afc41
|
|
BLAKE2b-256 checksum How to use checksums |
15fbb2850b0994d8b1a8a1488b0f5ac8b7880ca1e03abd7054af1710b3fed7c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
|
Release files / mahotas_nh-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl |
|---|---|
| Size | 5.7 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1b3029eda1aaf24576061e3bbce2dee65cb396e38b54336690493e570234e3a8
|
|
BLAKE2b-256 checksum How to use checksums |
e11ab07c2a82a31e7342440632c28c620263a0920bcac7815707012c706fb7ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.10
|
Release files / mahotas_nh-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
e6128790b8d325660946674f50df3e785ef262d3865eef869d2e882a279b6c9e
|
|
BLAKE2b-256 checksum How to use checksums |
a5dc47b78ad8641c5c83b46456b17f8c82d837ebda9f829428bf123701f3fd25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
|
Release files / mahotas_nh-1.4.10-cp36-cp36m-win_amd64.whl
| Download URL | mahotas_nh-1.4.10-cp36-cp36m-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Windows x86-64 |
|
SHA-256 checksum How to use checksums |
00c990f2aea36a7eaf3bf61ee3f6fb2076b912998c82792261e3c27296170fa9
|
|
BLAKE2b-256 checksum How to use checksums |
3a2aba30342ec53b973170ad5bc4b8c385c01b04192878c9e82f0e697d53f4a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.8
|
Release files / mahotas_nh-1.4.10-cp36-cp36m-win32.whl
| Download URL | mahotas_nh-1.4.10-cp36-cp36m-win32.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Windows x86-32 |
|
SHA-256 checksum How to use checksums |
c19c7b2fc05e170aaab449475099c976da572a1e20dae327dd857171800aec04
|
|
BLAKE2b-256 checksum How to use checksums |
bc507c4d0733252534d99d0e65fd00c138ecf7bf752492cefe6da9bfeaefcd21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.8
|
Release files / mahotas_nh-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl |
|---|---|
| Size | 5.7 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
27523cd5901610f41f2756f3f73ece7e37e706fb330cae5e9bf88dda5b42825c
|
|
BLAKE2b-256 checksum How to use checksums |
4ebe9f8d36a1681b1a06e0fb0d8ebed26eba873352a17b1db27786cc571b0160
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.10
|
Release files / mahotas_nh-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl
| Download URL | mahotas_nh-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
08dd39f206f3f0ad9dab3e0fcef50641be3bec84d63fe16e6436c8b731dc5b28
|
|
BLAKE2b-256 checksum How to use checksums |
a44023100ee0114add362dba65f8fe254b59334301d2648447350c1c4f4fd297
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.10
|