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 http://code.google.com/p/shapelogic/
. 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.
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
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
ShapeLogic 1.2 contains the first version of 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.3 there will be custom rules to categorize specific cells
and it will be tested further.
ShapeLogic 1.2 also contains the second version of a color particle counter. It also prints a smaller report of the particle's properties.
For running as a library for functional and declarative programming there are no requirements.
For running as a ImageJ plugin ShapeLogic uses the following libraries:
ShapeLogic can either run as a plugin in popular ImageJ framework or stand alone in pure Java2D
- Commons math
: Math library for geometry
: For parsing build in filter language
You can run all current image processing algorithms outside ImageJ
, using just a BufferedImage. If you want to embed ShapeLogic in your application.
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 30,000 lines of Java code including 460 unit tests.
2008/07/12 ShapeLogic v 1.2.1 released build for JDK 1.5 / Java 5
A user filed a bug report that ShapeLogic was not running on his Mac. This version of ShapeLogic is built for JDK 1.5.
2008/07/01 ShapeLogic v 1.2 released
- Particle analyzer
working directly on color and gray scale images without manual user intervention
- Particle analyzer traces the edge of each particle and turns it into a polygon. The same rules that were used in the letter matcher can be used on particles to classify them
- Particle analyzer is suitable for processing cells
- Both particle counter and particle analyzer now take input parameters and reports a to a result table on each particle's
- Standard deviation of color
- Center of gravity
- Additional reports fields for particle analyzer
- Length of perimeter
- Gray value brightness
- Bounding box
- Number of hard corners
- Number of inflection points
- Number of curve arches
- Color replace, replaces one color within a tolerance with another color. Parameter input dialog with preview check box
- Organize plugins and macros under ShapeLogic and ShapeLogicOld menus, until 1.1 they where all placed under shapelogic menu
Documentation will soon be updated to reflect ShapeLogic 1.2.
Future plans for ShapeLogic
For more up to date information on ongoing development work look at these
ShapeLogic v 1.3 with specific cell recognition particle analyzer soon to be released
- Make custom rules to recognize specific cells
. In v 1.2 the user has to make rules themselves.
- Fix bugs in edge trace. In v 1.2 the wrong perimeter lengths are sometimes found.
- Make it easier to select what particle properties to print out, now a random selection of somewhat useful properties have been selected.
- Possibly change the edge tracer to find 8-directions chain codes instead of 4-directions chain codes, in order to improve precision of perimeter length.
The test images are taken from the sample images from ImageJ
- Automatic color and gray scale particle counter and analyzer
, first medical image processing example.
- Letter matching example
. Very rudimentary OCR.
- 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.