ShapeLogic is an open source toolkit for declarative programming, image processing and computer vision. Started August 2007.

The first real application for ShapeLogic is a particle analyzer . It will find and categorize particles on a relatively uniform background then make a report of geometric properties for each of the particles. The main application is for recognizing cells in medical image processing.

Code hosted on . From there you can download both source files and binary distributions.

Join the ShapeLogic mailing list for announcements, questions, bug reports, suggestions and feature requests. You can help improving the stability of ShapeLogic by filing a bug report.

Main ideas and motivation

ShapeLogic is a library for

While ShapeLogic's declarative programming system was initially developed for image processing and computer vision, it is widely applicable. It is currently difficult to combine declarative programming and image processing. ShapeLogic is intended as basic plumbing software that turns a logic engine into a simple plugin component to ease entry into vision and image analysis. ShapeLogic also fills gaps missing from current Java image processing libraries, and uses a commercially friendly license.

ShapeLogic has an automatic color particle analyzer and a letter matching example .


  • Declarative lazy stream driven logic engine with lazy computations
  • Specialized for the domain of image processing and computer vision
  • The user can store rules in either a flat file or database, decreasing user reliance on Java programming
  • User rules are written with Java or the Java 6 Scripting interface JSR 223. Groovy , JRuby , JavaScript have been tested
  • Implementation of 2D geometry primitives, vectorization and segmentation
  • It is free (as in free speech and free beer)
  • Commercially friendly MIT open source software license, also called the X11 License
  • Annotations of point as different type of junctions, end points, hard or soft points
  • Annotations of lines as straight, curved, concave or inflection points
  • Programmed in Java
  • Can be used as a plugin for ImageJ, the leading Java open source project used in medical image processing

Particle analyzer

ShapeLogic 1.3 contains a color particle analyzer .

Here is an example particle image embryos.jpg

Here is the result of running the non-customized particle analyzer on it.

The categories for the particles are only examples, it is easy to setup different rules for categorizing particles.

In ShapeLogic 1.4 there will be custom rules to categorize specific cells and it will be tested further.

ShapeLogic 1.3 also contains the second version of a color particle counter. It also prints a smaller report of the particle's properties.


To run as a library for functional and declarative programming there are no requirements.

To run as an ImageJ plugin ShapeLogic uses the following libraries:

  • ImageJ ShapeLogic can either run as a plugin in popular ImageJ framework or stand alone in pure Java2D
  • Commons math : Math library for geometry
  • Antlr : For parsing build in filter language

You can run all current image processing algorithms outside ImageJ , using just a BufferedImage should you want to embed ShapeLogic in your application.

Optional requirements

These are used in unit tests, builds or old versions of image processing functionalities:

Development Status: Beta

  • ShapeLogic is in Beta, as of version 1.0.
  • Particle counter and particle analyzer working directly on color images without manual user intervention.
  • Working example where ShapeLogic is used for matching capital letters.
  • Image processing algorithms now work both in ImageJ and on Java's BufferedImage .
  • The API is still under development.
  • Contains a framework for declarative and functional programming.
  • ShapeLogic currently consists of 32,000 lines of Java code including 480 unit tests.


2008/08/02 ShapeLogic v 1.3 released

  • Particle analyzer now has a manual color mode , where you can set either the foreground or background color, in addition to the automatic mode introduced in v 1.2
  • New edge tracer for particle analyzer, in v 1.2 the wrong perimeter lengths are sometimes found
  • Built for JDK 1.5 / Java 5 so it should work on the Mac without updates

Documentation will soon be updated to reflect ShapeLogic 1.3.

Future plans for ShapeLogic

For more up to date information on ongoing development work look at these

ShapeLogic v 1.4 with specific cell recognition particle analyzer soon to be released

  • Make custom rules to recognize specific cells . In v 1.3 the user has to make rules themselves.
  • Make it easier to select which particle properties to print out, currently a random selection of somewhat useful properties has been selected.
  • HSV mode for the particle analyzer
  • Possibly Perceptron styled 1 layered neural network for rules for particle analyzer
  • Improve the color replacer plugin, to take separate RGB values as input

The test images are taken from the sample images from ImageJ




Examples applications

  1. Automatic color and gray scale particle counter and analyzer , first medical image processing example.
  2. Letter matching example . Very rudimentary OCR.
  3. Mathematical problems from Project Euler . This is a list of 193 mathematical problems that can be solved by computers. They vary in complexity from simple to hard. The goal is to test ShapeLogic's new declarative and functional constructs on real problems and make sure they are terse and intuitive.