2007 Google Summer of Code
Introduction
Project ideas for the Google Summer of Code.
Two main types of projects are proposed for this event
- Collaboration projects that run parallel to the programmers week at MIT (See information about the 2006 Programming Week and the 2005 Programming Week)
- Extra projects that are related to other long term activities
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.
Purpose
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.
Task
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.
Requirements
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.
Purpose
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.
Task
In this project, the students will exercise ITK methods in very large datasets (> 4Gb).
Requirements
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.
Purpose
Identify the issues causing the image corruption and implement solution.
Task
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
Requirements
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.
Purpose
The purpose of this project will be write a CMake configuration generator for Eclipse.
Tasks
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.
Requirements
Students should be proficient with C++ and very familiar with the Eclipse development enviroment.