ITK Google Summer of Code/2013: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
 
(10 intermediate revisions by 5 users not shown)
Line 23: Line 23:


[http://www.itk.org/ Project page], [http://www.itk.org/ITK/help/mailing.html mailing lists], [http://www.cdash.org/CDash/index.php?project=Insight dashboard].
[http://www.itk.org/ Project page], [http://www.itk.org/ITK/help/mailing.html mailing lists], [http://www.cdash.org/CDash/index.php?project=Insight dashboard].
 
=== Project: Examples for Coders ===


=== Project: X ===
'''Brief explanation:''' The [http://itk.org/ITKExamples/ 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.


'''Brief explanation:''' This is a placeholder for a project description.
'''Expected results:''' While the local development capabilities have many advantages, a browser-based contribution system is also desired.  This has begun with the [https://github.com/thewtex/vcwebedit 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 [https://github.com/xtk/X Xtk] is also desirable.  Finally, more examples are needed.


'''Expected results:''' Good stuff.
'''Prerequisites:''' Experience in Javascript, Python, Sphinx, and C++ desired.


'''Prerequisites:''' Experience in C++, some experience with lolcats.
'''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:''' [https://github.com/saschazelzer/CppMicroServices 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.
 
'''Prerequisites:''' Experience in C++ and cross-platform development.
 
'''Mentor:''' Matt McCormick (matt dot mccormick at kitware dot com), Sascha Zelzer (s dot zelzer at dkfz dot de).
 
=== Project: A Clang/LLVM based replacement for GCCXML ===
 
'''Brief explanation:''' The [http://www.gccxml.org/HTML/Index.html GCCXML] project parses C++ source code to create an XML description that can be worked with by other projects.  This backend is used by WrapITK to generate SWIG wrappers for ITK.  However, there is a high maintenance burden when migrating to a newer GCC backend and making adjustments for newer versions of Visual Studio.  The Clang/LLVM project provides a library that to parse source code.  A GCCXML replacement based off [http://clang.llvm.org/doxygen/group__CINDEX.html libclang] would be more maintainable.
 
'''Expected results:''' A new project to replace GCCXML based on libclang is created to build WrapITK.  A Visual Studio 2010 build of WrapITK.
 
'''Prerequisites:''' Experience in C++.  Experience in SWIG would be helpful.
 
'''Mentor:''' Matt McCormick (matt dot mccormick at kitware dot com).
 
=== Project: Cloud Enabled Remote ITK Process ===
 
'''Brief explanation:''' ITK has an extensive set of image image capabilities that are commonly used in desktop and laptop computers. This project will enable web and cloud processing directly in ITK using the python wrapped SimpleITK engine. The resulting application will need to interact with [http://ipython.org/notebook.html IPython Notebooks] to accept user commands and will need to interact with data sources such as JSON, XML and web hosted files/databases for input and output. The benefits of this application are three-fold. First, this will encourage reproducible research by enabling the sharing of the specific algorithms and data. Second, this will enable transparent migration of ITK code from a local installation to the cloud as problem sizes increase. And third, this becomes a powerful teaching tool for algorithms in medical imaging analysis.
 
'''Expected results:''' A ITK/python based application suitable for cloud processing of distributed data resources.
 
'''Prerequisites:''' Experience in web development, C++, ITK, and Python.


'''Mentor:''' Matt McCormick (matt dot mccormick at kitware dot com).
'''Mentor:''' Matt McCormick (matt dot mccormick at kitware dot com).
=== Project: ImageJ2 SimpleITK Plugin ===
'''Brief explanation:''' [http://developer.imagej.net/ ImageJ] is another tool that is popular for multi-dimensional image analysis in the life science and medical imaging spheres.  ImageJ has a powerful plugin framework, and ITK algorithms could be made available to the ImageJ community through this plugin mechanism.  However, additional work is needed to SimpleITK java wrapping along with translation of SimpleITK-ImageJ data structures.
'''Expected results:''' An example ImageJ2 plugin using SimpleITK to perform deconvolution.
'''Prerequisites:''' Experience in C++ and Java.
'''Mentor:''' Matt McCormick (matt dot mccormick at kitware dot com), Bradley Lowekamp (blowekamp at mail dot nih dot gov).

Latest revision as of 12:28, 3 April 2013

Project ideas for the Google Summer of Code 2013

Guidelines

Students

These ideas were contributed by developers and users 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: Examples for Coders

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.

Prerequisites: Experience in C++ and cross-platform development.

Mentor: Matt McCormick (matt dot mccormick at kitware dot com), Sascha Zelzer (s dot zelzer at dkfz dot de).

Project: A Clang/LLVM based replacement for GCCXML

Brief explanation: The GCCXML project parses C++ source code to create an XML description that can be worked with by other projects. This backend is used by WrapITK to generate SWIG wrappers for ITK. However, there is a high maintenance burden when migrating to a newer GCC backend and making adjustments for newer versions of Visual Studio. The Clang/LLVM project provides a library that to parse source code. A GCCXML replacement based off libclang would be more maintainable.

Expected results: A new project to replace GCCXML based on libclang is created to build WrapITK. A Visual Studio 2010 build of WrapITK.

Prerequisites: Experience in C++. Experience in SWIG would be helpful.

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

Project: Cloud Enabled Remote ITK Process

Brief explanation: ITK has an extensive set of image image capabilities that are commonly used in desktop and laptop computers. This project will enable web and cloud processing directly in ITK using the python wrapped SimpleITK engine. The resulting application will need to interact with IPython Notebooks to accept user commands and will need to interact with data sources such as JSON, XML and web hosted files/databases for input and output. The benefits of this application are three-fold. First, this will encourage reproducible research by enabling the sharing of the specific algorithms and data. Second, this will enable transparent migration of ITK code from a local installation to the cloud as problem sizes increase. And third, this becomes a powerful teaching tool for algorithms in medical imaging analysis.

Expected results: A ITK/python based application suitable for cloud processing of distributed data resources.

Prerequisites: Experience in web development, C++, ITK, and Python.

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

Project: ImageJ2 SimpleITK Plugin

Brief explanation: ImageJ is another tool that is popular for multi-dimensional image analysis in the life science and medical imaging spheres. ImageJ has a powerful plugin framework, and ITK algorithms could be made available to the ImageJ community through this plugin mechanism. However, additional work is needed to SimpleITK java wrapping along with translation of SimpleITK-ImageJ data structures.

Expected results: An example ImageJ2 plugin using SimpleITK to perform deconvolution.

Prerequisites: Experience in C++ and Java.

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