Difference between revisions of "SoC 2010 Ideas"

(Project ideas: add the uManager idea)
(Applying machine learning to the image segmentation problem)
Line 52: Line 52:
  
 
Recently, a new class of segmentation algorithms has been emerging: segmentation by example.  These algorithms require a set of examples from which a model is calculated which can be applied to other -- similar-looking -- images.
 
Recently, a new class of segmentation algorithms has been emerging: segmentation by example.  These algorithms require a set of examples from which a model is calculated which can be applied to other -- similar-looking -- images.
 +
 +
We will consider applications for implementations that are either as generic as possible (i.e. they apply to any images), or that try to solve a very specific problem (such as segmenting neurons in serial sections imaged with electron microscopy, or with confocal imaging.)
 +
 +
We have several data sets of images and their corresponding manual segmentations (for training the algorithm). See for example:
 +
 +
* <i>Drosophila</i> larva brain imaged with ssTEM: [http://t2.ini.uzh.ch/data.html http://t2.ini.uzh.ch/data.html]
 +
* <i>Drosophila</i> embryonic nuclei imaged with confocal microscopy.
 +
 +
You are welcome to use any scientifically-relevant dataset of your choice, but we will give priority to biologically-oriented data sets.
 +
  
 
'''Goal:''' Implement a number of segmentation algorithms based on machine learning.<br />
 
'''Goal:''' Implement a number of segmentation algorithms based on machine learning.<br />
 
'''Language:''' Java.<br />
 
'''Language:''' Java.<br />
'''Mentor:''' Johannes Schindelin (johannes.schindelin AT gmx.de)<br />
+
'''Mentor:''' Johannes Schindelin (johannes.schindelin AT gmx.de) and Albert Cardona (acardona AT ini phys ethz ch)<br />
  
 
== Add JMathLib (Matlab clone) support ==
 
== Add JMathLib (Matlab clone) support ==

Revision as of 05:57, 5 March 2010

Welcome!

Fiji is planning on applying to the Google Summer of Code 2010 program. As mentoring organizations have not yet been accepted, there is no guarantee that Fiji will be asked to participate. This page is to help plan proposed student projects.

This page contains project ideas culled from the Fiji user and developer community. You can get started by reading some project descriptions, and the mailing list thread(s) that spawned them. Also consider joining the developer mailing list, or finding us on IRC. Details can be found in Help:Contents.

If none of the listed projects suit you, but you have your own project idea instead, just throw your ideas at us, on the developer mailing list! (Of course, it should be related to Fiji...)

General Requirements

All projects have the following basic requirements:

  • Unless otherwise stated, projects will require programming in Java.
  • All materials must be released under the GNU General Public License (GPL), version 2.
  • Individual students shall retain copyright on their works.
  • Projects must be tracked and managed in Git (we will help you with setting up a repository).
  • Weekly project status reports should be sent to the project's mentors. Each status report should outline what was accomplished that week, any issues that prevented that week's goals from being completed, and your goals for the next week. This will help you to break your project down into manageable chunks, and will also help the project's mentors to better support your efforts.

Interested students are encouraged to read the Advice for GSoC Students Page, as it has excellent suggestions that might help you to pick a project and shape your proposal.

If your proposal is accepted by the Fiji Development Community you will be expected to work on it full time during the summer. It is cool if you want to take a week off for vacation, but remember that Google is hiring you for the summer to help us improve Fiji. That should be your focus. Don't expect that you will be able to work on your project for just 10 hours a week and then collect at the end.

If your original proposal doesn't pan out or becomes too much of a challenge, you should work with your mentor to help redefine it. We really want to see every project succeed this summer, as there is a great deal of interest in these projects from within the user community.

Students can apply for the program at the Google Summer of Code website. Please consider reviewing our SoC 2010 Template and answering its questions as part of your application.


Project ideas

Applying machine learning to the image segmentation problem

The term image segmentation describes the task where objects in an image are to be outlined, so that every pixel is connected to either a named object, or background.

Segmentation is traditionally a very difficult problem, especially in the presence of variable lighting, noise, or low contrast.

Many segmentation algorithms have been implemented in Fiji to perform image segmentation, such as Auto Threshold and Auto Local Threshold, but in practice, none of them might work, as they were designed with specific images in mind, and these expectations might not be met by your images.

Recently, a new class of segmentation algorithms has been emerging: segmentation by example. These algorithms require a set of examples from which a model is calculated which can be applied to other -- similar-looking -- images.

We will consider applications for implementations that are either as generic as possible (i.e. they apply to any images), or that try to solve a very specific problem (such as segmenting neurons in serial sections imaged with electron microscopy, or with confocal imaging.)

We have several data sets of images and their corresponding manual segmentations (for training the algorithm). See for example:

You are welcome to use any scientifically-relevant dataset of your choice, but we will give priority to biologically-oriented data sets.


Goal: Implement a number of segmentation algorithms based on machine learning.
Language: Java.
Mentor: Johannes Schindelin (johannes.schindelin AT gmx.de) and Albert Cardona (acardona AT ini phys ethz ch)

Add JMathLib (Matlab clone) support

Quite a few algorithms are available as proof-of-concept Matlab scripts. While it is wrong to think of pixels as little squares, and literally all Matlab scripts to perform image processing are suffering from that shortcoming, it would be very nice nevertheless to be able to run the scripts without having to buy Matlab licenses just for that purpose.

Happily, there is a Matlab clone written in Java: JMathLib. While it is apparently not a speed demon, it should be useful to add JMathLib as a new scripting language to ImageJ, and integrate it into Fiji so that Matlab scripts can be executed just like all other ImageJ scripts, too.

The project would consist of

  • getting as many .m scripts for image processing as possible,
  • integrating JMathLib as a script language into Fiji (using the infrastructure shared by Jython, JRuby, Clojure, Javascript and BeanShell) -- I suggest having a look at the JRuby Interpreter for an example,
  • adapting (or overriding) JMathLib's image toolbox so that it integrates seamlessly with ImageJ,
  • test (and fix what does not work) as many .m scripts as possible.

Goal: Integrate JMathLib as a new scripting language.
Language: Java.
Mentor: Johannes Schindelin (johannes.schindelin AT gmx.de)

Implementing algorithms for imglib

The new imglib supports dimension-, storage- and data type independent image processing. This library has some algorithms built-in already but there is a strong need to generically implement more general image processing algorithms, storage strategies and data types such as:

  • Interpolation (Cubic, Sinc, Spline, ...)
  • Histograms
  • Entropy Filter, Average Filter, Percentile(Min, Median, Max) Filter, ...
  • Memory Management for partial image loading
  • Color Spaces and Color Space Conversions
  • Generic Import/Export

Goal: Implement as many image processing algorithms using the imglib as possible
Language: Java.
Mentor: Stephan Preibisch (preibisch AT mpi-cbg.de) or Johannes Schindelin (johannes.schindelin AT gmx.de)

Integrate Micro-Manager into Fiji

This project requires a bit of knowledge in compiling C++ code on Linux, MacOSX and Windows. The idea is to make a recipe that other people can use to compile new releases of Micro-Manager, as well as integrate it into the Fiji project for a smooth user experience. To ensure that support for Micro-Manager is not broken inadvertently, you shall add regression tests, too.

Goal: Provide an easy way to compile and ship Micro-Manager with Fiji.
Language: Java, C++, shell
Mentor: Johannes Schindelin (johannes.schindelin@gmx.de)

Other Resources

Other links