My application for a Google Summer of Code project for GIMP was accepted! =D
After being around the development team for a year or so (and hanging around the IRC even more), and after I couldn’t apply last year for technical reasons, this year I will get my chance.
Here is the initial description of the project, taken from my project page:
The project I intend to implement is something called Adaptive Cloning (aka Seamless cloning). Basically, the idea is that cloning parts from one image to another usually does not end well. This is because of different exposure/white-balance settings, or simply because of different lighting conditions.
The idea is to implement an algorithm which would allow to copy a part from one image, and paste it seamlessly into the other; the pasted area will be blended to fit the destination image locally. There are several techniques to do that, and the most known one is called poisson image cloning. The problem with most of these algorithms is that they are expensive (computation-wise) and are not suitable for interactive editing and previewing, unless you use hardware acceleration.
The suggested technique for my project is based on an article from Siggraph 2009 (includes demos and videos), which shows realtime performance (both on the GPU and the CPU*). The user would paste a some area from the clipboard and will then be able to "blend it in" according to it's environment.
I'm open for any suggestions regarding usability, ui integration, or anything which relates to the project. Feedback will be more than welcome!
* Note that I'm not sure for which sizes on the CPU it preforms on realtime, but it's still much more cheap computation-wise than most other techniques and a small lag of few seconds is something which should be acceptable for this sort of workflow.
GIMP has 5 projects for this GSoC – if all these projects succeed, GIMP will gain a major boost in it’s capabilities. This year’s projects are:
- Adaptive Cloning (aka Seamless cloning)
- Student: Barak Itkin (IRC nick: LightningIsMyName)
- Mentor: Michael Natterer (IRC nick: mitch)
- Replace GimpSizeEntry widget
- Student: Enrico Schröder (IRC nick: enrico(?))
- Mentor: Martin Nordholts (IRC nick: Enselic)
- iWarp like tool for Gimp
- Student: Michael Muré (IRC nick: Bat`O) – the same guy who did the GSoC of the cage tool last year!
- Mentor: Alexia Death (IRC nick: Alexia_Death)
- Porting GIMP plugins to GEGL operations
- Student: Robert Sasu (IRC nick: robert)
- Mentor: Mukund Sivaraman (IRC nick: muks)
- OpenCL in GEGL
- Student: Victor Oliveira (IRC nick: victorm)
- Mentor: João S. O. Bueno (IRC nick: gwidion)
I would also like to congratulate Blender (formally, The Blender Foundation) for an astonishing amount of 17 GSoC projects! If there is any project who can do anything with 17 students, it’s Blender. Congrats also for Inkscape for 4 GSoC projects.
Good luck to my fellow GSoC students, especially the GIMP (and Blender) students. I hope I will finish my project – I already learned from Bat`O last year that it is feasible to code something like this ;)
The list of all accepted projects for all organizations for this year’s GSoC can be found here.
Small Help Wanted
I searched without success for a small GPL compatible library for generating quality triangular meshes (example) from a given outline (probably a quality constrained Delaunay triangulations / conforming Delaunay triangulation) - I need this for my project. I haven’t found any library that is both small and GPL compatible. If anyone knows any such library, please tell me - it will save me lots of work and guarantee less bugs in the final result.
Edit: It seems as if poly2tri may do the job of creating a CDT (Constrained Delaunay Triangulation), and on that I can apply Chew's second algorithm. This is not optimal, but it is feasible since creating the CDT was probably the hard pard. If anyone finds something better, I will still be glad to knkow!