GSoC/GCI Archive
Google Summer of Code 2009

GNU Image Manipulation Program

Web Page:

Mailing List:

GIMP is an acronym for GNU Image Manipulation Program.

It is a freely distributed program for such tasks as photo retouching, image composition and image authoring. It has many capabilities. It can be used as a simple paint program, an expert quality photo retouching program, an online batch processing system, a mass production image renderer, an image format converter, etc.

GIMP is expandable and extensible. It is designed to be augmented with plug-ins and extensions to do just about anything. The advanced scripting interface allows everything from the simplest task to the most complex image manipulation procedures to be easily scripted.


  • Better nonlinear resampler with built-in antialiasing (GEGL) Port improvements to Nohalo Level 1 and port Snohalo Level 1 from VIPS to GEGL. Program Nohalo and Snohalo Levels 2 and 3 in demand-driven mode for GEGL with Dr. Robidoux. Test for bugs and optimize for speed. Merge the various methods so that levels are automatically chosen depending on requested quality level, and so Nohalo is selected instead of Snohalo when additional antialiasing is set to zero. Sample output images can be seen at
  • Fast Adaptive Resampler Tailored For Transformations Which Mostly Downsample (GEGL) I am proposing to implement better and faster downsampling and resampling in GEGL
  • Improve Foreground Selection Tool SIOX is the algorithm underlying GIMP's foreground selection. In current version, a pixel is either foreground or background. A Detail Refinement Brush will be offered to the user as a simple interactive drawing tool, with which the foreground selection could implement a soft segmentation. It would improve the performance of the tool for areas where background and foregound overlap, such as in fine-grained, highly-textured, or semi-transparent objects like hair, clouds, or iced objects.
  • OpenGL GPU-based Buffer & Operations in GEGL GEGL (Generic Graphics Library) is a new back-end to replace GIMP's old code for handling various image processing tasks. GPUs nowadays are capable of massively accelerating graphics tasks, there is an ongoing movement to harness this power in general computing. However, because of the nature of GPU parallelization, not all code can be executed in the GPU. GEGL's architecture of pixel operations yields itself to GPU parallelization, making it a good candidate for GPU acceleration.
  • Performance tools and study of GEGL This project is proposing to create a set of performance tools for use with GEGL. They will be designed to help developers find where the time is spent, and at these hotspots, what the processor is doing. The use of the performance tools has to be as simple and straight forward as possible. These tools will be designed to be used in a non-interactive batch manner and to produce html output meant to be used both in automatic performance-regression testing and perf tuning during development.
  • Proposal - Advanced GUI for brush dynamics (GIMP) This proposal presents the plan and goals to the project “Advanced GUI for brush dynamics”, and how my experience fits. With my graduate studies in image processing, and being Lead Developer of a local company (3-patent image manipulation R&D) I had outstanding skills and experiences. I am proficient in C, understand the tasks, and enjoy working virtually.