Mahotas: Computer Vision Library
Project description
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.md
file)
Version 1.4.2 (Oct 2 2016)
- Fix
resize\_to
return exactly the requested size - Fix hard crash when computing texture on arrays with negative values (issue #72)
- Added
distance
argument to haralick features (pull request #76, by Guillaume Lemaitre)
Version 1.4.1 (Dec 20 2015)
- Add
filter\_labeled
function - Fix tests on 32 bit platforms and older versions of numpy
Version 1.4.0 (July 8 2015)
- Added
mahotas-features.py
script - 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_slice
andborder
arguments) - 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file mahotas_nh-1.4.10-cp38-cp38-win_amd64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd9fbf4f09487a98a7766bdee2e40399d664f3c6ca0441e346469df33a2f22e6 |
|
MD5 | a084d8e2a37c111aefc2c43a98455bf8 |
|
BLAKE2b-256 | b5a24a9429ca34ecfb83cb09e9dfa53327f75c840d8ef852c778e7bc4d5d0326 |
File details
Details for the file mahotas_nh-1.4.10-cp38-cp38-win32.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp38-cp38-win32.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, Windows x86
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e0877c1a41319ff21fb97ba700d279b9b0692a179914fc41e8a75a7d0158f5d |
|
MD5 | 597b053ce60f0b916507369acccdf9d3 |
|
BLAKE2b-256 | 3999c8ae3238545d9af53ade10fe76b4b42763a07c201a4bc76f3268fc88668c |
File details
Details for the file mahotas_nh-1.4.10-cp38-cp38-manylinux2010_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp38-cp38-manylinux2010_x86_64.whl
- Upload date:
- Size: 5.5 MB
- Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1d718c9ba6603b4d0bf5f97f4793d950225cf09416157346c4496179e578fc6 |
|
MD5 | a8ddc61cd43843fe07d02648c9b13dd9 |
|
BLAKE2b-256 | 3716e179f9ea62b19d40bad8d14420b7439d70a799d8bb7b6d356d31e0b65379 |
File details
Details for the file mahotas_nh-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, macOS 10.14+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5cbd49d7130779d52bcf994bf443c5a6cbac3a822079f782a682451f4236c01 |
|
MD5 | 3e75a69cd6d231a2bc5d13dc78d54153 |
|
BLAKE2b-256 | f787861c8d17e57c2d50eb389cc556ce75ccd2273b15dfc24865571e8da86d4c |
File details
Details for the file mahotas_nh-1.4.10-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e890ff0bf0ed8c78bcc9c70938a71fae2a539969c682675042f2cb23888c791f |
|
MD5 | f751cb7b5c3f3d84c63f88eefa69df9d |
|
BLAKE2b-256 | c8f76c629a03aee7bab2b8dfc145351191ce9e81eeaab526c012c03c964a66f7 |
File details
Details for the file mahotas_nh-1.4.10-cp37-cp37m-win32.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp37-cp37m-win32.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.7m, Windows x86
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7001d9639c4210d7be962a521460775d491c222d806b825762dbef3be56afc41 |
|
MD5 | 6ac931ab02b461a00b6efaf37d169f78 |
|
BLAKE2b-256 | 15fbb2850b0994d8b1a8a1488b0f5ac8b7880ca1e03abd7054af1710b3fed7c9 |
File details
Details for the file mahotas_nh-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b3029eda1aaf24576061e3bbce2dee65cb396e38b54336690493e570234e3a8 |
|
MD5 | fd9eaf564d08f96640b0e76a8661a3c8 |
|
BLAKE2b-256 | e11ab07c2a82a31e7342440632c28c620263a0920bcac7815707012c706fb7ee |
File details
Details for the file mahotas_nh-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.7m, macOS 10.14+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6128790b8d325660946674f50df3e785ef262d3865eef869d2e882a279b6c9e |
|
MD5 | 3810bf57b10e5941592e7de54d8e1dfd |
|
BLAKE2b-256 | a5dc47b78ad8641c5c83b46456b17f8c82d837ebda9f829428bf123701f3fd25 |
File details
Details for the file mahotas_nh-1.4.10-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00c990f2aea36a7eaf3bf61ee3f6fb2076b912998c82792261e3c27296170fa9 |
|
MD5 | f213a84e833e3006e047d734cf6a75ba |
|
BLAKE2b-256 | 3a2aba30342ec53b973170ad5bc4b8c385c01b04192878c9e82f0e697d53f4a3 |
File details
Details for the file mahotas_nh-1.4.10-cp36-cp36m-win32.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp36-cp36m-win32.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.6m, Windows x86
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c19c7b2fc05e170aaab449475099c976da572a1e20dae327dd857171800aec04 |
|
MD5 | dbe49c8ab23a4cec02113799a1fc92c1 |
|
BLAKE2b-256 | bc507c4d0733252534d99d0e65fd00c138ecf7bf752492cefe6da9bfeaefcd21 |
File details
Details for the file mahotas_nh-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27523cd5901610f41f2756f3f73ece7e37e706fb330cae5e9bf88dda5b42825c |
|
MD5 | 026ed9792dbf4d5790c61a356bcd8ae0 |
|
BLAKE2b-256 | 4ebe9f8d36a1681b1a06e0fb0d8ebed26eba873352a17b1db27786cc571b0160 |
File details
Details for the file mahotas_nh-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl
.
File metadata
- Download URL: mahotas_nh-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.6m, macOS 10.14+ x86-64
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08dd39f206f3f0ad9dab3e0fcef50641be3bec84d63fe16e6436c8b731dc5b28 |
|
MD5 | 036d26f155d5dcbe2e1d76178a3d095a |
|
BLAKE2b-256 | a44023100ee0114add362dba65f8fe254b59334301d2648447350c1c4f4fd297 |