Package: mahotas-nh
MahotasPython Computer Vision LibraryMahotas 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:watershedconvex 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 interpolationSLIC 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 citethe mahotas paper(see
details below underCitation) if you use it in a publication.ExamplesThis 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 usingmahotas.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 undermahotas/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.InstallIf you are usingconda, you can install mahotas fromconda-forgeusing the following commands:conda config --add channels conda-forge
conda install mahotasCompilation from sourceYou will need python (naturally), numpy, and a C++ compiler. Then you
should be able to use:pip install mahotasYou can test your installation by running:python -c "import mahotas as mh; mh.test()"If you run into issues, the manual has moreextensive documentation on
mahotas
installation,
including how to find pre-built for several platforms.CitationIf you use mahotas on a published publication, please cite:Luis Pedro CoelhoMahotas: 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 themahotas.citation()function.DevelopmentDevelopment happens on github
(http://github.com/luispedro/mahotas).You can set theDEBUGenvironment variable before compilation to get a
debug version:export DEBUG=1
python setup.py testYou can set it to the value2to get extra checks:export DEBUG=2
python setup.py testBe 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.TheMakefilethat is shipped with the source of mahotas can be useful
too.make debugwill create a debug build.make fastwill create a
non-debug build (you need tomake cleanin between).make testwill
run the test suite.Links & ContactsDocumentation:https://mahotas.readthedocs.io/Issue Tracker:github mahotas
issuesMailing List: Use thepythonvision mailing
listfor questions,
bug submissions, etc. Or ask onstackoverflow (tag
mahotas)Main Author & Maintainer:Luis Pedro Coelho(follow ontwitterorgithub).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 asothers.Presentation about mahotas for bioimage
informaticsFor more general discussion of computer vision in Python, thepythonvision mailing
listis 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 ChangesVersion 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 WindowsVersion 1.4.6 (Jul 10 2019)Make watershed work for >2³¹ voxels (issue #102)Remove milk from demosImprove performance by avoid unnecessary array copies incwatershed(),majority_filter(), and color conversionsFix bug in interpolationVersion 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 missingREADME.mdfile)Version 1.4.2 (Oct 2 2016)Fixresize\_toreturn exactly the requested sizeFix hard crash when computing texture on arrays with negative values (issue #72)Addeddistanceargument to haralick features (pull request #76, by
Guillaume Lemaitre)Version 1.4.1 (Dec 20 2015)Addfilter\_labeledfunctionFix tests on 32 bit platforms and older versions of numpyVersion 1.4.0 (July 8 2015)Addedmahotas-features.pyscriptAdd short argument to citation() functionAdd max_iter argument to thin() functionFixed labeled.bbox when there is no background (issue #61, reported
by Daniel Haehn)bbox now allows dimensions greater than 2 (including when using theas_sliceandborderarguments)Extended croptobbox for dimensions greater than 2Added use_x_minus_y_variance option to haralick featuresAdd functionlbp_namesVersion 1.3.0 (April 28 2015)Improve memory handling in freeimage.write_multipageFix moments parameter swapAdd labeled.bbox functionAdd return_mean and return_mean_ptp arguments to haralick
functionAdd difference of Gaussians filter (by Jianyu Wang)Add Laplacian filter (by Jianyu Wang)Fix crash in median_filter when mismatched arguments are passedFix gaussian_filter1d for ndim > 2Version 1.2.4 (December 23 2014)Add PIL based IOVersion 1.2.3 (November 8 2014)Export mean_filter at top levelFix 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_sumGeneralize regmax/regmin to work with floating point imagesAllow floating point inputs tocwatershed()Correctly check for float16 & float128 inputsMake sobel into a pure function (i.e., do not normalize its input)Fix sobel filteringVersion 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 levelBreak away ellipse_axes from eccentricity code as it can be useful
on its ownAddfind()functionAddmean_filter()functionFixcwatershed()overflow possibilityMake labeled functions more flexible in accepting more typesFix crash inclose_holes()with nD images (for n > 2)Remove matplotlibwrapUse standard setuptools for building (instead of numpy.distutils)Addoverlay()functionVersion 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 checkingFix interpolation of integer images using order 1Add resize_to & resize_rgb_toAdd coveralls coverageFix SLIC superpixels connectivityAdd remove_regions_where functionFix hard crash in convolutionFix axis handling in convolve1dAdd normalization to moments calculationSee theChangeLogfor older version.License