ITK Google Summer of Code/2015

From KitwarePublic
< ITK Google Summer of Code
Revision as of 20:41, 20 February 2015 by Matt.mccormick (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Project ideas for the Google Summer of Code 2015



These ideas were contributed by community members of ITK. If you wish to submit a proposal based on these ideas you should contact the community members identified below to find out more about the idea, get to know the community member that will review your proposal, and receive feedback on your ideas.

The Google Summer of Code program is competitive, and accepted students will usually have thoroughly researched the technologies of their proposed project, been in frequent contact with potential mentors, and ideally have submitted a patch or two to fix bugs in their project (through Gerrit). Kitware makes extensive use of mailing lists, and this would be your best point of initial contact to apply for any of the proposed projects. The mailing lists can be found on the project pages linked in the preceding paragraph. Please see GSoC proposal guidelines for further guidelines on writing your proposal.

Adding Ideas

When adding a new idea to this page, please try to include the following information:

  • A brief explanation of the idea
  • Expected results/feature additions
  • Any prerequisites for working on the project
  • Links to any further information, discussions, bug reports etc
  • Any special mailing lists if not the standard mailing list for ITK
  • Your name and email address for contact (if willing to mentor, or nominated mentor)

Project Ideas

Project page, mailing lists, dashboard.

Project: Browser-based Code Contribution Tool

Brief explanation: The ITKExamples project is an attempt to bring an improved, collaboratively develop code example documentation system to ITK and the broader open source community. The project brings features such as Git version controlled development, easy regression testing, self-contained, downloadable examples, support for multiple language, HTML, PDF, and EPub archives, acknowledgements through nightly-generated web-based rendering of git-stats, an index, and visualization.

Expected results: While the local development capabilities have many advantages, a browser-based contribution system is also desired. This has begun with the vcwebedit Sphinx Javascript extension project, but a Git-patch server that acts as a broker is still needed. 3D web-visualization of the 3D medical images via OpenGL with a project like Xtk is also desirable. Finally, more examples are needed.

Prerequisites: Experience in Javascript, Python, Sphinx, and C++ desired.

Mentor: Matt McCormick (matt dot mccormick at kitware dot com). David Doria (daviddoria at gmail dot com). Arnaud Gelas (arnaudgelas at gmail dot com).

Project: Improved ObjectFactory backend with CPPMicroServices

Brief explanation: ITK implements the object factory design pattern to allow the dynamic registration of specialized class implementations. It is currently used to provide the variety of ImageIO classes, but the toolkit could also benefit from broader adoption. There are also limitations in adding new ImageIO classes that live outside the main repository, which is possible with the new modular infrastructure in ITKv4.

Expected results: CPPMicroServices is a "library provides a dynamic service registry based on the service layer as specified in the OSGi R4.2 specifications. It enables users to realize a service oriented approach within their software stack." This small, cross platform library could be used to greatly improve the capabilities of the ITK ObjectFactory system by extending the situations where objects can be registered into the factory and object priority can be assigned.

Mentor: Matt McCormick (matt dot mccormick at kitware dot com)

Project: Advanced Image Filtering Algorithm GPGPU Implementations

Brief explanation: ITK has hundreds of powerful, advanced image processing filters implemented for SMP CPUs for 2D and 3D images. Recently, an OpenCL framework was added to ITK, but GPU implementations of many of these advanced algorithms have not yet been implemented. Potential filters include the bilateral image filter, deconvolution filters, Hessian-based feature filters, image intensity transformations, fast marching filters, or morphological rank filters. See the Filtering Group for a list of potential filters.

Expected results: This project was generate fast, GPGPU implementations of these algorithms. It gives the student an opportunity to enhance learning of advanced image analysis algorithms, ITK pipeline architecture, and GPGPU programming.

Mentor: Bradley Lowekamp (blowekamp at mail dot nih dot gov), Matt McCormick (matt dot mccormick at kitware dot com)

Project: SimpleITK Javascript Binding

Brief explanation: SimpleITK is a wrapping layer on top of ITK to provide an interface for rapid prototyping, interactive scripting and education. It utilizes [http::// SWIG] to provide language bindings for a variety of languages including Python, Java, C#, Ruby, Lua, and Tcl. This project is to extend the wrapping of SimpleITK with Javascript bindings for the environments that SWIG supports which includes node.js, and JavaScriptCore. More information about the SWIG support for Javascript can be found here

Expected results: The SimpleITK examples will have Javascript versions runnable on node.js. Appropriate wrapping code will be integrated into the SimpleITK repository along with unit tests.

Mentor: Bradley Lowekamp (blowekamp at mail dot nih dot gov)

Project: Mesh Bridge with VTK

Brief explanation: ITK currently has a bridge to pass image data to/from a VTK pipeline for visualization in the ITKVtkGlue module. This transforms the data from the ITK Image data structure to the VTK vtkImageData structure and connects processing pipelines. Mesh data structures are not currently supported.

Expected results: Mesh data structures will be supported in the ITK-VTK bridge. Both the data and the pipelines can be connected. Mesh information that will passed includes point locations, mesh topology (triangle and quad-edge mesh cells), and point scalar and vector data. The pipeline connection will be modernized to better utilize the new VTK pipeline architecture.

Mentor: Matt McCormick (matt dot mccormick at kitware dot com)