Menu

Home

Roberto Mattia Samory

What is HeuriStitch

HeuriStitch is meant to be an application to provide image stitching functionalities through use of heuristic, population-based algorithms.
It is intended to be used with no algorithm in particular, as long as interfaces (IPopAlgorithm) are respected. Said interfaces are designed to be generic enough to suit anyone's needs in the application of choice. Data used by the interfaces should be also sufficiently general.
An utility abstract implementation for almost all common tasks of population-based heuristic stitching algorithms, which can be found in the class AbstractPopAlgorithm.
Multiple algorithm can be run at the same time, the program has as primary objective benchmarking and visual monitoring of comparative performance and behaviors of different search strategies.
The original version in fact comes with the implementation of two popular meta-heuristic algorithms, Genetic and Particle Swarm Optimization.

The program runs by default showing a GUI, but can be executed headless and controlled via command line. For more informations about the available commands please read the instruciton in the class CLIController.

Copyright for icons used goes to deviantart user neurovit. http://neurovit.deviantart.com/art/simplicio-92311415

The project has first been developed as an assignment for the Artificial Intelligence course under the Department of Information Engineering of the University of Padua, academic year 2011-2012.

The home page for the project is:

http://sourceforge.net/p/heuristitch/wiki/Home/

Authors:
edamame - Mattia Samory
robypiwa - Roberto Piva
radisc - Nicola Ristè
marchezz - Paolo Marchezzolo

Package contents

Package contains:
- heuristitch.jar - the runnable jar file for the application
- source.zip - the source code for the project
- doc - a folder containing the documentation (javadoc) for the project. To read it just open the file index.html with a web browser
- img - a folder containing icons used by the application
- americaBottomLeft.png, americaBottomRight.png - two sample images for testing purposes
- lib - a folder containing the libraries used in the project
- README.txt - this information file

What you need to run HeuriStitch

In order to run HeuriStitch you need the .jar file, and if you want to run it in graphical mode, you must place the icon set provided with the package in a folder named "img/icons" in the context root. Let's say you have the .jar file in a folder called "myFolder", the icons (the .png files) must be moved or copied to "myFolder/img/icons".

Moreover, the OpenCV environment must be properly installed in the system. It is wholeheartedly recommended to recompile OpenCV to best suit your needs and match your hardware to obtain best performance. For more information about OpenCV, please visit:

http://opencv.willowgarage.com/wiki/

Running HeuriStitch using the Graphical Interface

In order to run Heuristitch in graphical mode, which is enabled by default, you just need to make sure that all of the preconditions mentioned above are satisfied, and to run the command:

java -jar heuristitch.jar

Running HeuriStitch via Command Line / Scripts

HeuriStitch can be run headless, launching it setting the "--headless" option. A practical example would be:

java -jar heuristitch.jar --headless [additional commands ...]

Further commands can be provided as launch arguments, in the form"--commandName[=value[+argument=argumentValue]...]", or at runtime, feeding a new line to standard input using the form "commandName [value[ argument argumentValue]...]"

  • population: Number of individual in the population based algorithm (integer value)
  • iterations: Maximum number of iterations allowed (integer value)
  • seconds: Maximum elapse time to let the algorithm run (integer value)
  • concurrency: Number of active threads globally active at most (integer value)
  • sterility: Maximum interval of iterations after which continuing the algorithm can be considered unfruitful according to the threshold value (integer value)
  • threshold: Maximum decrease in "sterility" iterations to be considered unfruitful (double value)
  • algorithm: Sets the parameters for the given algorithm, must be followed by the algorithm name, and eventually the parameters to be updated as additional arguments. E.g. algorithm algorithmName[ firstParameterName firstParameterValue]
  • firstImage: Sets the first image to the given path
  • secondImage: Sets the second image to the given path
  • stop: Stops all algorithms. Warning: has no effect as a launch argument
  • play: Runs all algorithms. Can be used for autoplay if set as the last launch argument - if this is the case, the application will terminate as soon as algorithms complete. Warning: if more arguments are passed to the command line after the "--play" command they will lead to inconsistent behaviors!
  • pause: Pauses all algorithms. Warning: has no effect as a launch argument
  • validate: Validates input parameters
  • exit: Exits the application
  • help: Prints this help message

Project Admins: