Git Product home page Git Product logo

mahotas's Introduction

Mahotas

Python Computer Vision Library

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

Notable algorithms:
  • watershed.
  • convex points calculations.
  • hit & miss. thinning.
  • Zernike & Haralick, LBP, and TAS features.
  • freeimage based numpy image loading (requires freeimage libraries to be installed).
  • Speeded-Up Robust Features (SURF), a form of local features.
  • thresholding.
  • convolution.
  • Sobel edge detection.
  • spline interpolation

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 of loading a file (called test.jpeg) and 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

You will need python (naturally), numpy, and a C++ compiler. Then you should be able to either

Download the source and then run:

python setup.py install

or use one of:

pip install mahotas
easy_install mahotas

You can test your instalation by running:

python -c "import mahotas; mahotas.test()"

If you compiled from source, you need to do this in another directory (or compile locally, which can be accomplished with python setup.py build --build-lib=.).

If something fails, you can obtain more detail by running it again in verbose mode:

python -c "import mahotas; mahotas.test(verbose=True)"

Visual Studio

For compiling from source in Visual Studio, use:

python setup.py build_ext -c msvc
python setup.py install

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 compile. 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. The debug modes are pretty slow as they add 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.

Travis Build Status

https://travis-ci.org/luispedro/mahotas.png

Links & Contacts

Documentation: http://mahotas.readthedocs.org/

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

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

1.0.4 (2013-12-15)

  • Add mahotas.demos.load()
  • Add stretch_rgb() function
  • Add demos to mahotas namespace
  • Fix SLIC superpixels

1.0.3 (2013-10-06)

  • Add border & as_slice arguments to bbox()
  • Better error message in gaussian_filter
  • Allow as_rgb() to take integer arguments
  • Extend distance() to n-dimensions
  • Update to newer Numpy APIs (remove direct access to PyArray members)

1.0.2 (July 10 2013)

  • Fix requirements filename

1.0.1 (July 9 2013)

  • Add lbp_transform() function
  • Add rgb2sepia function
  • Add mahotas.demos.nuclear_image() function
  • Work around matplotlib.imsave's implementation of greyscale
  • Fix Haralick bug (report & patch by Tony S Yu)
  • Add count_binary1s() function

1.0 (May 21 2013)

  • Make matplotlib a soft dependency
  • Add demos.image_path() function
  • Add citation() function
  • Fix a few corner cases in texture analysis
  • Integrate with travis
  • Update citation (include DOI)

See the ChangeLog for older version.

mahotas's People

Contributors

cgohlke avatar hapemask avatar langner avatar luispedro avatar meawoppl avatar michaelaye avatar mindw avatar sdsk avatar stefanv avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.