GithubHelp home page GithubHelp logo

imclab / mahotas Goto Github PK

View Code? Open in Web Editor NEW

This project forked from luispedro/mahotas

0.0 1.0 0.0 3.89 MB

Computer Vision in Python

Home Page: http://luispedro.org/software/mahotas

License: Other

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 numpy as np
import mahotas
import pylab

img = mahotas.imread('test.jpeg')
T_otsu = mahotas.thresholding.otsu(img)
seeds,_ = mahotas.label(img > T_otsu)
labeled = mahotas.cwatershed(img.max() - img, 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

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 = mahotas.distance(f)
p.imshow(dmap)
p.show()

(This is under mahotas/demos/distance.py).

How to invoke thresholding functions:

import mahotas
import numpy as np
from pylab import imshow, gray, show, subplot
from os import path

photo = mahotas.imread('luispedro.org', as_grey=True)
photo = photo.astype(np.uint8)

T_otsu = mahotas.otsu(photo)
thresholded_otsu = (photo > T_otsu)

T_rc = mahotas.rc(photo)
thresholded_rc = (photo > T_rc)

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

Contacts

For bug reports and fixes use the github issue tracker.

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.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)

0.99 (May 4 2013)

  • Make matplotlib a soft dependency
  • Add demos.image_path() function
  • Add citation() function

This version is 1.0 beta.

See the ChangeLog for older version.

Links

Website: http://luispedro.org/software/mahotas

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)

Author: Luis Pedro Coelho (with code by Zachary Pincus [from scikits.image], Peter J. Verveer [from scipy.ndimage], and Davis King [from dlib])

Presentation about mahotas for bioimage informatics

mahotas's People

Contributors

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

Watchers

 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.