f.r.e.e. - Flexible Registration and Evaluation Engine
F.r.e.e. is an open-source software toolkit that allows the composition, evaluation and optimization of (registration) algorithms. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both. Registration is, together with segmentation, a fundamental processing step in many clinical image processing applications. F.r.e.e. should help to accelerate the development of clinical solutions. Also it should help to improve the quality of the solutions by allowing the evaluation and comparison of registration approaches with arbitrarily test case sets.
F.r.e.e. is implemented in C++. F.r.e.e. is designed to be cross-platform, using the CMake build environment to manage the compilation process. F.r.e.e.'s C++ implementation style is referred to as generic programming (i.e. using templated code).
Because f.r.e.e. is an open-source project, developers from around the world can use, debug, maintain, and extend the software. They are explicitly invited to incorporate their experience into this project.
F.r.e.e. extensively uses the Insight Toolkit (itk) for basic image processing/registration tasks, IO and several useful implementations (e.g. smart pointer, threading class).
What are f.r.e.e.'s origins?
The idea of f.r.e.e. originates from a master thesis by Ralf Floca done at the University of Heidelberg (Germany) in 2003. The project in its current design was started in the scope of the PhD thesis of Ralf Floca in 2004. The topic of the PhD thesis is ?Development and evaluation of registration approaches for clinical applications?. F.r.e.e. is developed at the department of Medical Informatics of the University of Heidelberg (Germany). The original motivations for this work were, amongst others, the sound separation of approaches and data, thereby the establishment of an evaluation framework that helps to find the most suitable registration algorithm for specific problems. An additional motivation was to establish a system that is implemented in C++ but remains dynamic at runtime and allows the composition of registration approaches like Lego bricks. The system should also have the potential to define the ontology of components and therefore should be able to offer assistance in compiling sensible approaches, unlike a pure scripting language. More information about design considerations and main concepts can be found in the documentation.
Who are the developers?
The design was done and the development of the framework is done by Ralf Floca. However, hopefully many developers beyond the mentioned one will participate in the future development of f.r.e.e. as the code grows and becomes publicly accessible.
How do I participate?
As f.r.e.e. is an open-source system, you can participate. It is planned to establish a communication platform (mailinglist, wiki, bugtracker) for everyone interested. Meanwhile you can contact the developers, if you have questions, proposals or additions for f.r.e.e.
Further it would be very nice and would support the doctoral thesis (within its scope f.r.e.e. was developed), if you could just email a short note to Ralf Floca or participate in a small survey that can soon be found on the project homepage. It would be of great interest with regard to the finalization of the thesis to know whether and how often f.r.e.e. is used.
F.r.e.e. carries a copyright by Ralf Floca (Department of Medical Informatics, Institute for Medical Biometry and Informatics, University of Heidelberg, Germany). It is published under the GNU public license.
The following sections summarize the technical features of f.r.e.e..
For the main concepts of f.r.e.e.?s architecture please visit the according sections in the documentation or see publications[LINKS].
The following are key features of the project implementation philosophy.
In large parts f.r.e.e. adopts the implementation and coding philosophy of itk. Therefore and for the fact that f.r.e.e. heavily incorporates itk, it is recommended to get to know the itk design philosophy.
F.r.e.e. uses the CMake (cross-platform make) build environment. CMake is an operating system and compiler independent build process that produces native build files appropriate to the OS and compiler that it is run with. On Unix, CMake produces makefiles and on Windows, CMake generates projects and workspaces.
C++ Patterns and Generics
F.r.e.e. uses many advanced design patterns and generic programming. You may find these references useful in understanding the design and syntax.
Thanks go to:
:: last update 07/14/2008 :: (c) 2007 by Ralf o Floca