You can use ShapeLogic in different ways:
Testing ShapeLogic as a user is very simple and only takes a few minutes after ImageJ is installed.
ShapeLogic contains functional and declarative constructs that can be used independently of the image processing code.
To use this just download the shapelogic_-1.4.jar and add it to your class path. If running from command line: -cp .;shapelogic_-1.4.jar
For examples of how to use this to solve mathematical problems see Project Euler solution .
For more information see Particle Counter and Analyzer page .
Dialog with results of match
Vectorized M with skeletonized letter in black and polygon in gray
For more information see Letter Match page .
If you need a different version of shapelogic_-1.4.jar, e.g. one compiled for JDK 1.7.
These jar file can be found on any Maven 2 repository:
E.g. commons-math-1.1.jar can be found here: http://repo1.maven.org/maven2/commons-math/commons-math/1.1/
Or they can be taken out of the shapelogicplugin1.4.zip
When you open ImageJ there will be a ShapeLogic menu containing commands.
You can get the binary distribution from the download page or compile it yourself.
Starting in ShapeLogic 1.0 it is simpler to make user define rules for matching for use in letter matcher or the particle analyzer .
DigitStreamVectorizer is an example showing what is needed to define a match of the numbers.
To run this from ImageJ in the shapelogic menu select
public class DigitStreamVectorizer_ extends StreamVectorizer_ { @Override public void matchSetup(ImageProcessor ip) { loadDigitStream(); } public static void loadDigitStream() { LoadPolygonStreams.loadStreamsRequiredForLetterMatch(); makeDigitStream(); String[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; LoadLetterStreams.makeLetterXOrStream(digits); } public static void makeDigitStream() { rule("0", HOLE_COUNT, "==", 1.); rule("0", T_JUNCTION_POINT_COUNT, "==", 0.); rule("0", END_POINT_COUNT, "==", 0.); rule("0", MULTI_LINE_COUNT, "==", 1.); rule("0", CURVE_ARCH_COUNT, ">", 0.); rule("0", HARD_CORNER_COUNT, "==", 0.); rule("0", SOFT_POINT_COUNT, ">", 0.); rule("1", HOLE_COUNT, "==", 0.); rule("1", T_JUNCTION_LEFT_POINT_COUNT, "==", 0.); rule("1", T_JUNCTION_RIGHT_POINT_COUNT, "==", 0.); rule("1", END_POINT_BOTTOM_POINT_COUNT, "==", 1.); rule("1", HORIZONTAL_LINE_COUNT, "==", 0.); rule("1", VERTICAL_LINE_COUNT, "==", 1.); rule("1", END_POINT_COUNT, "==", 2.); rule("1", MULTI_LINE_COUNT, "==", 0.); rule("1", SOFT_POINT_COUNT, "==", 0.); rule("1", ASPECT_RATIO, "<", 0.4); } }
This file is not defined inside the shapelogic package system.
Users do not need to download the source file for ShapeLogic to use it, they only need shapelogic and other dependent jar files.
Defining rules in a stand alone Java file is very simple, but you still have to compile the Java file. ShapeLogic's goal is to make rule definition as effortless as possible.
With an extended rules set it should be easier to define rules in a database, ShapeLogic will add a menu item in ImageJ for doing this.
ShapeLogic is built using Maven 2 .
This makes several build tasks very easy, and is recommended, but the code should run fine without Maven.
Currently the project is set up to work directly with Eclipse 3.3, NetBeans 6.0 - 6.1, Java 1.5, but you can use: IntelliJ, JBuilder, emacs or vi.
Check ShapeLogic out into a local directory.
Do a cd into that directory.
Run:
You will have to change the JDK target in pom.xml:
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build>