• Stars
    star
    811
  • Rank 55,685 (Top 2 %)
  • Language
    Python
  • License
    Other
  • Created over 14 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Computer Vision in Python

Mahotas

Python Computer Vision Library

Mahotas is a library of fast computer vision algorithms (all implemented in C++ for speed) operating over numpy arrays.

GH Actions Status Coverage Status License Downloads Install with Conda Install with Anaconda

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.

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 = {https://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 (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.

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.13 (Jun 28 2022)

  • Fix freeimage testing (and make freeimage loading more robust, see #129)
  • Add GIL fixed (which triggered crashes in newer NumPy versions)

Version 1.4.12 (Oct 14 2021)

  • Update to newer NumPy
  • Build wheels for Python 3.9 & 3.10

Version 1.4.11 (Aug 16 2020)

  • Convert tests to pytest
  • Fix testing for PyPy

Version 1.4.10 (Jun 11 2020)

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 and border 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

FOSSA Status

More Repositories

1

BuildingMachineLearningSystemsWithPython

Source Code for the book Building Machine Learning Systems with Python
Python
2,109
star
2

milk

MILK: Machine Learning Toolkit
Python
610
star
3

jug

Parallel programming with Python
Python
397
star
4

diskhash

Diskbased (persistent) hashtable
C
143
star
5

django-gitcms

A git based cms for django
Python
71
star
6

imread

Read images to numpy arrays
C++
69
star
7

nixml

NIX + YAML for easy to use reproducible environments
Python
60
star
8

pymorph

Python Morphology Toolbox
Python
47
star
9

talk-python-intro

Introduction to Python (Jupyter based)
Jupyter Notebook
30
star
10

hex

Reimplementation of TeX in Haskell: pre-alpha
Haskell
30
star
11

python-image-tutorial

Python image tutorial (based on ipython notebooks)
Jupyter Notebook
29
star
12

milksets

Machine Learning Toolkit Datasets: A collection of UCI datasets with a Python interface
Python
26
star
13

Programming-for-Scientists

Source Material for a course on Programming targeted at scientists
TeX
25
star
14

pythonvision_org

django-gitcms files for http://pythonvision.org
CSS
17
star
15

mergedirs

Merge two directories without losing files
Python
16
star
16

luispedro_org

jekyll files for luispedro.org
JavaScript
12
star
17

Coelho2009_ISBI_NuclearSegmentation

Reproducible research archive for "Nuclear segmentation in microscope cell images"
TeX
9
star
18

Coelho2021_GMGCv1

Python
9
star
19

libertarian-welfare

Libertarian Welfare State: A Book I'm Writing
Python
7
star
20

dot-link

Dotted Suffix Trees
C++
7
star
21

HBC

My Version of Hal Daumé's Hierarchical Bayesian Compiler
Haskell
7
star
22

pyslic

PySLIC
Python
5
star
23

android-fuse

Mount an android device using FUSE
Python
5
star
24

irstlm

Fork of IRSTLM
C++
5
star
25

safeio

Haskell Library for safe (atomic) IO
Haskell
3
star
26

PenalizedRegression

Shell
3
star
27

vita

My Vita
TeX
3
star
28

gitpointer

Github suggest
Python
3
star
29

elgreco

Graphical Models
C++
3
star
30

mahotas-paper

Paper about mahotas
Python
3
star
31

base-user

dot files and the like so that I can set up a new computer with a couple of command line calls
TeX
3
star
32

readmagick

Read images in Python using ImageMagick++ : SUPERCEDED BY IMREAD
C++
3
star
33

Coelho2015_NetsDetermination

Reproducible code archive for "Automatic Determination of NET (Neutrophil Extracellular Traps) Coverage in Fluorescent Microscopy Images" by Coelho et al.
Python
3
star
34

website.content

Content for My Website
2
star
35

talk-scientific-communication

Talk on Scientific Oral Communication
HTML
2
star
36

safeout

Simple atomic writing for Python
Python
2
star
37

conduit-algorithms

Conduit based algorithms
Haskell
2
star
38

unpack

Unpack zip/7z/tar.* archives with a consistent interface
Python
2
star
39

imcol

Image Collection Management
Python
2
star
40

programming

Programming: An Introduction. A introductory book on computer programming.
2
star
41

waldo

Waldo Project
Python
2
star
42

gitwc

Plot number of chars, words, and lines across time in a repository
Python
2
star
43

beiraproject

Beira Project Stuff
Shell
2
star
44

jug-presentations

presentations about jug
TeX
2
star
45

Hanu

Utilities for numerics in Haskell
Haskell
2
star
46

jug-paper

A future paper about jug (written in the open)
TeX
1
star
47

fna2faa.rs

Rust
1
star
48

outsort

Generic sorting of large datasets (using temporary files as temporary space)
Haskell
1
star
49

imm-mirna

Shell
1
star
50

particles

Python
1
star
51

StructureFunctionOceanTutorial

Jupyter Notebook
1
star
52

ML-for-microbial-communities

Jupyter Notebook
1
star
53

refsweb

Web interface to refs
Python
1
star
54

rbit

rabbit mail
Python
1
star
55

tutorial-unit-testing

HTML
1
star
56

whim

What Have I Missed
CoffeeScript
1
star
57

alist

Append List in Haskell
Haskell
1
star
58

refs

Bibtex Reference Management Software
Python
1
star
59

vision

Vision and Image Processing Library for Python [superceded by mahotas—use that]
Python
1
star
60

tutorial-cluster-usage

JavaScript
1
star
61

cq

Code Quarterly
Haskell
1
star
62

mlsegment

C++
1
star
63

rabbit_blog

1
star
64

beiraproject_org

django-gitcms repo for beiraproject.org
Python
1
star
65

TestingNGLESS

Haskell
1
star
66

NGH

Next Generation Sequence Handling in Haskell
Haskell
1
star
67

redundant100

Haskell
1
star
68

image-difftool

Image diff for git on the command line
Python
1
star
69

binary-instances

Haskell instances of Data.Binary
Haskell
1
star
70

anscombe

Python
1
star
71

fautils

Haskell
1
star
72

fragile

Lightweight command line unit testing tool for nodejs (with coffescript support)
JavaScript
1
star
73

metarabbit

Posts for metarabbit.wordpress.com
Python
1
star
74

blog_luispedro_org

CSS
1
star