Release notes

We’re happy to announce the release of scikit-image v0.12!

scikit-image is an image processing toolbox for SciPy that includes algorithms for segmentation, geometric transformations, color space manipulation, analysis, filtering, morphology, feature detection, and more.

For more information, examples, and documentation, please visit our website:

and our gallery of examples

Highlights and new features

For this release, we merged over 200 pull requests with bug fixes, cleanups, improved documentation and new features. Highlights include:

  • 3D skeletonization (#1923)
  • Parallelization framework using dask:skimage.util.apply_parallel (#1493)
  • Laplacian operator filters.laplace (#1763)
  • Synthetic 2-D and 3-D binary data with rounded blobs (#1485)
  • Plugin for imageio library (#1575)
  • Inpainting algorithm (#1804)
  • New handling of background pixels for measure.label: 0-valued pixels are considered as background by default, and the label of background pixels is 0.
  • Partial support of 3-D images for skimage.measure.regionprops (#1505)
  • Multi-block local binary patterns (MB-LBP) for texture classification (#1536)
  • Seam Carving (resizing without distortion) (#1459)
  • Simple image comparison metrics (PSNR, NRMSE) (#1897)
  • Region boundary based region adjacency graphs (RAG) (#1495)
  • Construction of RAG from label images (#1826)
  • morphology.remove_small_holes now complements morphology.remove_small_objects (#1689)
  • Faster cython implementation of morphology.skeletonize
  • More appropriate default weights in restoration.denoise_tv_chambolle and feature.peak_local_max
  • Correction of bug in the computation of the Euler characteristic in measure.regionprops.
  • Replace jet by viridis as default colormap
  • Alpha layer support for color.gray2rgb
  • The measure of structural similarity (measure.compare_ssim) is now n-dimensional and supports color channels as well.
  • We fixed an issue related to incorrect propagation in plateaus in segmentation.watershed


  • New organization of gallery of examples in sections
  • More frequent (automated) updates of online documentation

API Changes

  • equalize_adapthist now takes a kernel_size keyword argument, replacing the ntiles_* arguments.
  • The functions blob_dog, blob_log and blob_doh now return float arrays instead of integer arrays.
  • transform.integrate now takes lists of tuples instead of integers to define the window over which to integrate.
  • reverse_map parameter in skimage.transform.warp has been removed.
  • enforce_connectivity in skimage.segmentation.slic defaults to True.
  •, skimage.transform.ProjectiveTransform._matrix, skimage.transform.PolynomialTransform._params, skimage.transform.PiecewiseAffineTransform.affines_* attributes have been removed.
  • skimage.filters.denoise_* have moved to skimage.restoration.denoise_*.


  • filters.gaussian_filter has been renamed filters.gaussian
  • filters.gabor_filter has been renamed filters.gabor
  • restoration.nl_means_denoising has been renamed restoration.denoise_nl_means
  • measure.LineModel was deprecated in favor of measure.LineModelND
  • measure.structural_similarity has been renamed measure.compare_ssim
  • data.lena has been deprecated, and gallery examples use instead the data.astronaut() picture.

Contributors to this release

(Listed alphabetically by last name)

  • K.-Michael Aye
  • Connelly Barnes
  • Sumit Binnani
  • Vighnesh Birodkar
  • François Boulogne
  • Matthew Brett
  • Steven Brown
  • Arnaud De Bruecker
  • Olivier Debeir
  • Charles Deledalle
  • endolith
  • Eric Lubeck
  • Victor Escorcia
  • Ivo Flipse
  • Joel Frederico
  • Cédric Gilon
  • Christoph Gohlke
  • Korijn van Golen
  • Emmanuelle Gouillart
    1. Goutin
  • Blake Griffith
    1. Hawker
  • Jonathan Helmus
  • Dhruv Jawali
  • Lee Kamentsky
  • Kevin Keraudren
  • Julius Bier Kirkegaard
  • David Koeller
  • Gustav Larsson
  • Gregory R. Lee
  • Guillaume Lemaitre
  • Benny Lichtner
  • Himanshu Mishra
  • Juan Nunez-Iglesias
  • Ömer Özak
  • Leena P.
  • Michael Pacer
  • Daniil Pakhomov
  • David Perez-Suarez
  • Egor Panfilov
  • David PS
  • Sergio Pascual
  • Ariel Rokem
  • Nicolas Rougier
  • Christian Sachs
  • Kshitij Saraogi
  • Martin Savc
  • Johannes Schönberger
  • Arve Seljebu
  • Tim Sheerman-Chase
  • Scott Sievert
  • Steven Silvester
  • Alexandre Fioravante de Siqueira
  • Daichi Suzuo
  • Noah Trebesch
  • Pratap Vardhan
  • Gael Varoquaux
  • Stefan van der Walt
  • Joshua Warner
  • Josh Warner
  • Warren Weckesser
  • Daniel Wennberg
  • John Wiggins
  • Robin Wilson
  • Olivia Wilson

Installing scikit-image

Standard Python installation

From the shell, execute:

pip install scikit-image

Conda-based distributions (Anaconda, Miniconda)

From the shell/command prompt, execute:

conda install scikit-image


scikit-image comes pre-installed with several Python distributions, including Anaconda, Enthought Canopy, Python(x,y) and WinPython.

If you are using the distribution from, you’ll need to manually download a few packages: numpy, scipy and scikit-image from Christoph Gohlke’s website. Python wheels are installed using:

pip install SomePackage-1.0-py2.py3-none-any.whl

Debian and Ubuntu

On Debian and Ubuntu install scikit-image with:

sudo apt-get install python-skimage

Building from source

Execute the following command from the shell:

pip install scikit-image


If you experience the error Error:unable to find vcvarsall.bat it means that distutils is not correctly configured to use the C compiler. Modify (or create, if not existing) the configuration file distutils.cfg (located for example at C:\Python26\Lib\distutils\distutils.cfg) to contain:


For more details on compiling in Windows, there is a lot of knowledge iterated into the setup of appveyor (a continuous integration service).

Debian and Ubuntu

If your distribution ships an outdated version, you may recompile from source. First install the dependencies:

sudo apt-get install python-matplotlib python-numpy python-pil python-scipy

Get compilers:

sudo apt-get install build-essential cython

Then run the pip installation command.

Running the development version

Obtain the source from the git repository at by running:

git clone

After unpacking, change into the source directory and execute:

pip install -e .

To update:

git pull  # Grab latest source
python build_ext -i  # Compile any modified extensions

Building with bento

Alternatively, scikit-image can also be built using bento. Bento depends on WAF for compilation.

Follow the Bento installation instructions and download the WAF source.

Tell Bento where to find WAF by setting the WAFDIR environment variable:

export WAFDIR=<path/to/waf>

From the scikit-image source directory:

bentomaker configure
bentomaker build -j     # (add -i for in-place build)
bentomaker install      # (when not building in-place)

Depending on file permissions, the install commands may need to be run as sudo.

Runtime requirements

You can use pip to automatically install the runtime dependencies as follows:

$ pip install -r requirements.txt

Optional Requirements

You can use this scikit with the basic requirements listed above, but some functionality is only available with the following installed:

  • PyQt4

    The qt plugin that provides imshow(x, fancy=True) and skivi.

  • FreeImage

    The freeimage plugin provides support for reading various types of image file formats, including multi-page TIFFs.

  • PyAMG

    The pyamg module is used for the fast cg_mg mode of random walker segmentation.

  • Astropy provides FITS io capability.

  • SimpleITK Optional io plugin providing a wide variety of formats. including specialized formats using in medical imaging.

  • imread Optional io plugin providing most standard formats.

Testing requirements

  • Nose

    A Python Unit Testing Framework


    A tool that generates a unit test code coverage report

Documentation requirements

sphinx >= 1.3 is required to build the documentation.