CamiTK architecture

A short description of the fundamentals about the CamiTK software architecture

Computer Assisted Medical Intervention (CAMI hereafter) is a complex multi-disciplinary field. CAMI research requires the collaboration of experts in several fields as diverse as medicine, computer science, mathematics, instrumentation, signal processing, mechanics, modeling, automatics, optics, etc. CamiTK is a modular framework that helps researchers and clinicians to collaborate together in order to prototype CAMI applications by regrouping the knowledge and expertise from each discipline. It is an open-source, cross-platform generic and modular tool written in C++ which can handle medical images, surgical navigation, biomedicals simulations and robot control.

This page presents what is the software architecture of CamiTK (Computer Assisted Medical Intervention Tool Kit), and focus more specifically on the CamiTK SDK, its content and how it can be used to develop new extensions.

The goal of the CamiTK project is to gather not only the knowledge of the specialists from each area of the CAMI field, but also to gather their know-how by facilitating data exchange, software prototyping of applications and thus leading faster and more efficiently toward clinical validation and benefit to the patient. CamiTK’s general design is inspired by the Component-Based Software Engineering (CBSE) concept and therefore encourages reusing rather than reinventing the wheel. Rapid prototyping of CAMI applications is made easy by assembling pre-built CamiTK components (called CamiTK extensions) instead of continuously patching onto existing code.

CamiTK for knowledge and know-how management

When we say “do not reinvent the wheel”, we really mean it! It is so true, that in fact, CamiTK provides the wheel (and some useful extensions to this wheel):

CamiTKWheel

Don’t worry if this figure is not clear, this page tries to explain all of the things that are on this figure:

  1. The central wheel (CamiTK Core and Service Layer),
  2. The puzzle pieces attached to the wheel (in CamiTK they are called “extensions”, their objectives, and the signification of their different colours,
  3. and last, but not least, the glue and expert code (all yours!).

The three sides of CamiTK

CamiTK can be seen three different ways (hence the logo):

CamiTKThreeSides

CamiTK is an Open Project

CamiTK Community Edition is an Open Source project. You probably now that well if you read this page. Not only the essential source code is available under the LGPL-v3 license, but there are also a lot of collaborative tool, the software forge being the first of them, where anyone can help (you don’t need to be a programmer for that, there are lots of area where improvements are needed, not only in the source code!)

CamiTK provides end-user application

CamiTK directly provides CAMI applications, that can be useful to do something immediately. The installation is easy (there are packages for linux, and windows for example).

CamiTK is a framework for developers

CamiTK is a C++ framework, and developers can create their own pieces of puzzle thanks to the Community Edition Sofware Development Kit (SDK).

CamiTK Architecture

CamiTK is extensively using Component-Based Software Engineering (CBSE). It organizes the development of new features in three different levels (hence the logo):

CamiTKThreeSides

CamiTK Core library

This is where all the concepts are defined and implemented. Only the CamiTK experts are supposed to understand it well.

CamiTK Service Layer

This is the definition of how to glue the source code developed in/for a specific field and CamiTK. All developers need a basic knowledge of the service layer. Note that camitk-wizard facilitates the work of the developer and that CamiTK SDK itself is developed with simplicity in mind. You will acquire this knowledge little by little. Most of the usage are covered by default behaviours already implemented in CamiTK SDK helper classes (this will be transparent for you).

CamiTK Extensions

This is the domain specific code. This is where most of the work has to be done in order to provide a new feature in CamiTK for a specific field. This is where you should focus your attention as a developer. You will see that you will mostly be using your own expertise.

What compose the CamiTK SDK?

CamiTK SDK (for Software Development Kit) provides the CamiTK Core, the service layer as well as some basic extensions.

Developers (you) are in charge of providing all the extensions needed in a specific research field or Computer Assisted Medical Intervention project.

CamiTK SDK provides:

  • the CamiTK core library, main applications and minimal set of actions and components.
  • a Service Layer (an extensible mechanism with 4 possible types of extensions).
  • an application builder: you just have to assemble some of provided application elements (e.g. viewers, interactors…) to build your own application.

Where should I go next?

Ready to go? These are probably the next steps: