Skip to content
Stefan van der Walt edited this page Nov 18, 2013 · 12 revisions

Implement Algorithms

  • Face detection
  • Graph cut segmentation (gsoc project).
  • Image colorization.
  • Fast 2D convex hull (consider using CellProfiler version). Algorithm overview. One free implementation. (Compare against current implementation.)
  • Convex hulls of objects in a labels matrix (simply adapt current convex hull image code--this one's low hanging fruit). Generalise this solution to also skeletonize objects in a labels matrix.
  • Binary features (BRIEF, BRISK, FREAK) (gsoc project).
  • STAR features (gsoc project).
  • Blurring kernel estimation; also see this paper
  • Blob Detection
    • Laplacian of Gaussian(LoG)
    • Difference of Gaussians(DoG)
    • Determinant of Hessian
    • Hessian Laplace
    • Maximally stable extremum regions(MSER)

Drawing (directly on an ndarray)

  • Wu's algorithm for circles (PR submitted)
  • Text rendering
  • Add anti-aliasing

Adapt existing code for use

These snippets and packages have already been written. Some need to be modified to work as part of the scikit, others may be lacking in documentation or tests.

  • 2D image warping via thin-plate splines [ask Zach Pincus]

Rework linear filters

  • Should take kernel or function for parameter (currently only takes function)
  • Kernel shape should be specifiable (currently defaults to image shape)
  • Fast, SSE2 convolution (see prototype in pull requests) [let's see where LLVM + GPU frameworks go]

io

  • Add imread_collection to all imread backends
  • Better video loading (gst framework is currently broken)
  • Update qt_plugin.py and other plugins to view collections.
  • Rewrite GTK backend using GObject Introspection for Py3K compatibility.
  • Add DICOM plugin for GDCM.

viewer

  • Using the visualization tools, add an FFT-domain image editor
  • Add fuzzy selectors

docs

  • Add examples to the gallery
  • Write topics for the user guide.
  • Integrate BiBTeX plugin into Sphinx build
  • Export examples as IPython notebooks

Build and testing

  • Update Travis CI to also test examples in docs

Merge code provided by CellProfiler team

  • Roberts filter - convolution with diagonal and anti-diagonal kernels to detect edges
  • Minimum enclosing circles of objects in a labels matrix -- can be done using regionprops
  • spur removal, thinning, thickening, and other morphological operations on binary images, framework for creating arbitrary morphological operations using a 3x3 grid.

Their SVN repository is read-accessible at

The files for the above algorithms are

There are test suites for the files at

Quoting a message from Lee Kamentsky to Stefan van der Walt sent on 5 August 2009::

We're part of the Broad Institute which is non-profit. We would be happy to include our algorithm code in SciPy under the BSD license since that is more appropriate for a library that might be integrated into a commercial product whereas CellProfiler needs the more stringent protection of GPL as an application.

In 2010, Vebjorn Ljosa officially released parts of the code under a BSD license (BSD license announcement | original message).

Thanks to Lee Kamentsky, Thouis Jones and Anne Carpenter and their colleagues who contributed.