Content aware spot removal
As many of you know at this point I'm coming from Lightroom. One thing that was better in Lr is the heal spot removal mode. Currently dt implements the clone spot removal mode. The heal spot removal mode is kind of content aware. Not sure how it works but the heal is really what it means. It does the job and stay really invisible whereas the clone mode is often visible and works well in part of image without much pattern.
The heal mode seems to "analyze" the area and change only the part that is very different from the surrounding.
I'm not an expert in photo processing... Maybe an expert in this area can step in with a good idea?
#1 Updated by Ralf Brown over 4 years ago
Coming from Bibble/ASP, I would also like a "heal" spot-removal tool. Presumably it's more or less the same in Lightroom as in ASP -- the circumference of the spot gets copied in toward the center.
It's both easier to set up than cloning a spot and often less visible than the result of the cloning.
#3 Updated by Iain Wood over 3 years ago
I also miss this feature. Most of my pictures are underwater diver portraits, and removing backscatter (light reflected off particles in the water) is a frequent task. In Aperture I use the retouch tool which has 2 variants. Clone is similar to the dt spot removal, but without the sophisticated masks. Far more useful though is the Aperture retouch tool in repair mode. It uses the texture of a selected area combined with the colours on the border surrounding the area to be repaired. This means I can remove x particles of backscatter in x+1 mouse clicks. The spot removal method takes x clicks + x click-and-drags. The click-and-drags are often slow, taking several seconds. This is actually a show stopper when I have 100 pics to process and only an afternoon to do it or I miss the next days diving...
I don't know the exact algorithm aperture uses but I suspect its just luminance info from the selected area mapped onto rgb info from the area to be healed. This may work like a simplified version of the colour mapping module.
If anyone is listening and has any ideas on:
a) how to pinpoint the algorithm used in Aperture (or other sw with heal tools).
b) how the colour mapping module does its magic and is this an appropriate method to convert to a heal tool.
please chime in...
#4 Updated by Christoph Birkenhauer about 3 years ago
There now is a neat spot removal for G'MIC available which seems pretty close to the performance of PS/LR;
It would be absolutely great to see a feature like this in Darktable.
#5 Updated by EL ROD almost 3 years ago
I just tried the G'MIC inpainting plugin and it's amazing. Absolutely great results.
Can G'MIC be incorporated in darktable?
The G'MIC folks say they provide "A thread-safe C++ library 'libgmic', to be linked to third-party applications".
Incorporating G'MIC filters in darktable... Gaaaah... (Drools...)
#7 Updated by Rob W over 1 year ago
Christer van der Meeren wrote:
This would be absolutely awesome! The current clone spot removal doesn't work too well for many purposes, I've found.
Yep, I find this spot removal tool to be very clumsy, doesn't blend it well and its terrible when used against edges. A healing tool is completely different to a clone tool that the existing "spot removal" is.
#8 Updated by Kevin Ertel 11 months ago
Just want to add my voice to this, I would love to see this implemented. Perhaps a clean way to do it would be adding a "Method" dropdown to the existing Spot-Removal module that would allow the user to select either "Clone" or "Content Aware". Based on this selection the defined areas for that module instance would be healed either by cloning, as is done now, or filled with a content aware heal.
I know that gimp allows this feature via the "resynthesizer" plugin, but I am unsure how much work it would take to incorporate that into darktable. However, since the base code is already out there hopefully that helps make this a less monumental task.
#9 Updated by Pascal Obry 11 months ago
- Affected Version set to 2.4.1
- System set to all
- bitness set to 64-bit
This is implemented in a branch that is currently being worked. See branch retouch here: https://github.com/darktable-org/darktable/pull/1548