Computer Vision in Python
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:
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.
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.
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
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.
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 = {https://dx.doi.org/10.5334/jors.ac},
month = {July},
volume = {1}
}
You can access this information using the mahotas.citation()
function.
Development happens on github
(https://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.
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.
cwatershed()
,majority_filter()
, and color conversionsREADME.md
file)resize\_to
return exactly the requested sizedistance
argument to haralick features (pull request #76, byfilter\_labeled
functionmahotas-features.py
scriptas_slice
and border
arguments)lbp_names
cwatershed()
find()
functionmean_filter()
functioncwatershed()
overflow possibilityclose_holes()
with nD images (for n > 2)overlay()
functionSee the
ChangeLog
for older version.