mahotas

Computer Vision in Python

https://github.com/luispedro/mahotas

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    7 of 34 committers (20.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary

Keywords

c-plus-plus computer-vision numpy python python-2 python-3

Keywords from Contributors

closember gtk qt tk wx
Last synced: 6 months ago · JSON representation ·

Repository

Computer Vision in Python

Basic Info
  • Host: GitHub
  • Owner: luispedro
  • License: other
  • Language: Python
  • Default Branch: main
  • Homepage: https://mahotas.rtfd.io
  • Size: 3.83 MB
Statistics
  • Stars: 866
  • Watchers: 48
  • Forks: 149
  • Open Issues: 24
  • Releases: 6
Topics
c-plus-plus computer-vision numpy python python-2 python-3
Created about 16 years ago · Last pushed 12 months ago
Metadata Files
Readme Changelog License Citation Authors

README.md

Mahotas

Python Computer Vision Library

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

Test mahotas Coverage Status License Downloads Conda Downloads Install with conda

Python versions 3.7+, 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).

```python

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,nrregions = mh.label(im > Totsu)

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

```python 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:

```python 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

Totsu = mh.otsu(photo) thresholdedotsu = (photo > T_otsu)

Compute Riddler-Calvard threshold

Trc = mh.rc(photo) thresholdedrc = (photo > T_rc)

Now call pylab functions to display the image

gray() subplot(2,1,1) imshow(thresholdedotsu) subplot(2,1,2) imshow(thresholdedrc) 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:

bash 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:

bash pip install mahotas

You can test your installation by running:

bash 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:

bash export DEBUG=1 python setup.py test

You can set it to the value 2 to get extra checks:

bash 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.18 (Jul 18 2024)

  • Fix bug in Haralick features and NumPy 2 (thanks to @Czaki, see #150)

Version 1.4.17 (Jul 13 2024)

  • Fix bug that stopped mahotas from working on Windows

Version 1.4.16 (Jul 3 2024)

  • update for NumPy 2
  • Add deprecated warning for freeimage

Version 1.4.15 (Mar 24 2024)

  • Update build system (thanks to @Czaki, see #147)

Version 1.4.14 (Mar 24 2024)

  • Fix code for C++17 (issue #146)

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

Owner

  • Name: Luis Pedro Coelho
  • Login: luispedro
  • Kind: user
  • Location: Luxembourg & Shanghai
  • Company: Fudan University

Citation (CITATION)

If you use mahotas on a scientific publication, please cite:

    **Luis Pedro Coelho** Mahotas: Open source software for scriptable computer
    vision in Journal of Open Research Software, vol 1, 2013. [`DOI
    <https://dx.doi.org/10.5334/jors.ac>`__]


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.

GitHub Events

Total
  • Issues event: 4
  • Watch event: 38
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 3
  • Pull request event: 1
  • Fork event: 6
  • Create event: 1
Last Year
  • Issues event: 4
  • Watch event: 38
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 3
  • Pull request event: 1
  • Fork event: 6
  • Create event: 1

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 1,296
  • Total Committers: 34
  • Avg Commits per committer: 38.118
  • Development Distribution Score (DDS): 0.419
Past Year
  • Commits: 13
  • Committers: 2
  • Avg Commits per committer: 6.5
  • Development Distribution Score (DDS): 0.154
Top Committers
Name Email Commits
Luis Pedro Coelho l****s@l****g 753
Luis Pedro Coelho l****c@c****u 442
luispedro l****o@a****5 34
cgohlke c****e@u****u 13
Gabi Davar g****o@g****m 8
MattyG m****l@g****m 5
Jianyu Wang j****u@g****m 4
Grzegorz Bokota b****b@g****m 3
Łukasz Stolcman v****s@g****m 3
Lukas m****s@g****m 2
John Kirkham k****j@j****g 2
Karol M. Langner k****r@g****m 2
Klaus-Michael Aye k****e@g****m 2
Stefan van der Walt s****n@s****a 2
hsiao yi h****4@g****m 2
Andrew Stromnov s****v@g****m 1
Fazlul Shahriar f****r@g****m 1
Gabe Schwartz h****k@g****m 1
Alexander Tolkachev a****v@a****m 1
andreyrcdias a****a@g****m 1
Sandro Knauss s****s@p****e 1
Guilherme Pires g****s@a****g 1
Eben Olson e****n@e****t 1
David McInnis d****m@e****u 1
Guillaume Lemaitre g****8@g****m 1
James Boyden g****b@j****u 1
Nathan Hillyer n****r@g****m 1
Shahbaz Khan s****5@g****m 1
The Gitter Badger b****r@g****m 1
Tim Gates t****s@i****m 1
and 4 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 72
  • Total pull requests: 43
  • Average time to close issues: 4 months
  • Average time to close pull requests: 25 days
  • Total issue authors: 63
  • Total pull request authors: 32
  • Average comments per issue: 2.74
  • Average comments per pull request: 2.35
  • Merged pull requests: 32
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 2
  • Average time to close issues: about 17 hours
  • Average time to close pull requests: N/A
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 0.5
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • hackermd (4)
  • anntzer (4)
  • Czaki (3)
  • jakirkham (2)
  • ErichZimmer (1)
  • hccheng (1)
  • bethac07 (1)
  • sanctusin (1)
  • skupr-anaconda (1)
  • ediarellano41-ai (1)
  • paulmueller (1)
  • glemaitre (1)
  • Al92130 (1)
  • duytrung (1)
  • baloe (1)
Pull Request Authors
  • Czaki (5)
  • mindw (5)
  • jasonzutty (2)
  • databaaz (2)
  • hsiaoyi0504 (2)
  • luispedro (2)
  • SujoyKG (2)
  • jakirkham (2)
  • abdullahelen (2)
  • daavve (1)
  • jboy (1)
  • ebenolson (1)
  • odidev (1)
  • stromnov (1)
  • rahu974 (1)
Top Labels
Issue Labels
enhancement (6) documentation (1) bug (1)
Pull Request Labels

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 28,913 last-month
  • Total docker downloads: 143
  • Total dependent packages: 30
    (may contain duplicates)
  • Total dependent repositories: 272
    (may contain duplicates)
  • Total versions: 90
  • Total maintainers: 1
pypi.org: mahotas

Mahotas: Computer Vision Library

  • Versions: 63
  • Dependent Packages: 26
  • Dependent Repositories: 267
  • Downloads: 28,913 Last month
  • Docker Downloads: 143
Rankings
Dependent packages count: 0.6%
Dependent repos count: 0.9%
Average: 1.7%
Docker downloads count: 2.7%
Downloads: 2.7%
Maintainers (1)
Last synced: 6 months ago
proxy.golang.org: github.com/luispedro/mahotas
  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
conda-forge.org: mahotas

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

  • Versions: 10
  • Dependent Packages: 4
  • Dependent Repositories: 5
Rankings
Dependent packages count: 12.5%
Average: 14.0%
Stargazers count: 14.1%
Forks count: 14.7%
Dependent repos count: 14.8%
Last synced: 6 months ago