2007 Google Summer of Code

From NAMIC Wiki
Jump to: navigation, search
Home < 2007 Google Summer of Code


Project ideas for the Google Summer of Code.

Two main types of projects are proposed for this event

Collaboration Projects

These projects run in parallel with the programmers week at MIT

Slicer Execution Model Examples

The new development version of Version 3 of 3D Slicer has defined an execution model under which it is possible to invoke command line applications from the Slicer GUI. In order to make this possible, the command line applications must respond to a certain set of command line options. The options can be easily introduced by using a set of existing macros. In this project, the student will revisit most of the 400 examples in ITK and introduce the macros that make them suitable for being used from Slicer. The modified examples will then be commited to the NAMIC Subversion Sandbox.

This project will provide a solid overview of most of the image segmentation and registration methods available in ITK.


The purpose of this project will be to convert most of the 400 examples available in ITK to the execution model defined by Slicer. The converted examples will then become available to be invoked from the Slicer GUI.


Modify the ITK Examples to make them suitable to be invoked from Slicer. The conversion requires to introduce minimal modifications on every example, and then test it with appropriate medical data.


This project is ideal for a student with medium background on image analysis and a begginer level in ITK, who wants to take the time of getting fully familiar with the large number of filters available in ITK.

ITK review on 64-bits

ITK is known to compile fine in 64-bits machines. However it has been reported that some classes misbehave when exposed to the large amounts of memory that are possible in 64-bits platforms. This is probably due to the use of explicit "int", "long" types in places where "size_t" or "size_type" should have been used.


The purpose is to identify methods that do not behave properly for large amounts of data, and to track the problems down the code until finding the offending type declarations.


In this project, the students will exercise ITK methods in very large datasets (> 4Gb).


The requirement is to have access to 64-bit machines with more than 4Gb of RAM (Linux or Windows)

ITK tiff reader

The ITK implementation of the reader for tiff files doesn't correctly handle multi-page images with embedded color maps. Fixing this bug would help make NA-MIC software more usable for advanced microscopy applications.


Identify the issues causing the image corruption and implement solution.


Implement solution and test it against images that are known to have this problem. Also review tiff imaging specs can usage to confirm that other tiff microscope images are usable.

See background information here: http://na-mic.org/Mantis/view.php?id=38


Just a computer, C/C++ experience, interest in microscopy and neuroscience.

Independent Projects

These projects are related to needed infrastucture and to extension of existing tools

CMake Support for Eclipse

CMake (www.cmake.org) is a multiplatform configuration system akin to autools/automake, that allows to prepare projects for being build in different development platforms.

CMake has been used for the configuration of large scale projects such as VTK, ITK, ParaView, and more recently it has been adopted by KDE.

CMake already generates Makefiles for Unix, projects for Visual Studio, Borland Makefiles, NMake Makefiles, and XCode projects, but it lacks a generator for Eclipse.

Eclipse (http://www.eclipse.org/) is an open source development environment similar to KDevelop, that has become popular in recent years/months.


The purpose of this project will be write a CMake configuration generator for Eclipse.


Students must get familiar with existing CMake generators, for example the Makefile generator, and the KDevelop generator, and then follow their model in order to implement a generator for Eclipse. This tasks requires the students to analyze the structure of the project files used by Eclipse.


Students should be proficient with C++ and very familiar with the Eclipse development enviroment.