What are you using for red eye removal?

I’ve been having some success removing red eye using a combination of masks (brush + parametric), but I’m not sure I’ve found the best way yet. I feel that the DeltaE mask should be the best tool because we can pick a colour with it then fine tune the range, but the picker is quite large and won’t isolate the colour well when the subject is small (far away from the camera). I’m wondering if there’s a way to manually enter colour values in a mask to isolate the red in eyes?

Aside from masking the eyes, which of the color correction modes do you find most useful: Standard, separate RGB channels or HSL factors? HSL would seem to have the best options for altering hue, but there’s no way to desaturate in that mode. Only the Standard mode offers negative saturation values.

Any other tips you have for red-eye removal or any fine-tuning of colour correction in general? I’m still learning from trial and error, and there’s probably lots I’m still missing.

I built a redeye tool for rawproc a couple of years ago, and the best algorithm I found was simply, for each pixel in a radius around the center point of the eye, calculate a new red value to be an average of the green and blue values. Gets rid of the red cast, but not at the expense of the overall tone needed for definition. There’s also a threshold of difference between red and the green+blue average, so not all pixels get the treatment. You can read about it in the code and comments, here:


This implementation requires the user to pick eye centers; there are ways to automatically find eyes, I think OpenCV has such algorithms.

The specifics of this approach would probably require either 1) persuading @agriggio to implement it; 2) use a tool like G’MIC, ImageMagick, or rawproc…

Really, the best way to get rid of redeye is to move the flash away from the lens centerline, and the only reason I even implemented it was because my primary camera, the Nikon D7000, has a built-in flash.

To answer the title question, the maybe 2 times I ever needed red-eye removal, I used GIMP quite successfully :slight_smile:

sure, you can drag the sliders in the \Delta E mask.

That can be accomodated. In fact, I’m going to make the saturation slider available in all modes – there’s no reason it can’t be there.

There are some channel mixer settings in DT manual that maybe could be used with ART…

Hello @europlatus,

Just in case you are interested (otherwise feel free to ignore it)…
There is a G’MIC filter which can also accomplish this task: Red-Eye Attenuation.
You only need to select the eye, with GIMP, and run the filter afterwards.

Here is a screenie (GIMP 2.10.18 - G’MIC 2.9 on Windows 10):

That would be great.

I had tried that and I seemed to get the right colour, but the mask selected a lot more than the colour I was trying to isolate. I think it’s my lack of understanding of the sliders and deltaE in general. I need to do more research on it. This is where I miss a manual for ART :slight_smile:

I have GIMP and G’MIC, but I’m really averse to using multiple tools unless absolutely necessary, so I’m trying to do everything in ART at the moment. I have a long-term project of “developing” hundreds of old photos, and I want to use RAW with final JPEG export only rather than do an intermediate TIFF conversion.
I realize this is my own issue and many people have no issues using multiple tools :slight_smile:

hi @europlatus, have you tried the stain removal module by cloning a color similar to the color of the eye?

Hello @europlatus, try to move the first two sliders of the deltaE tool, not the color one. That way you can control what is selected. Even better, use the brush mask in eraser mode to modify your deltaE mask to your needs.
And as already said by @ggbutcher, avoid red eyes in the first place by using an external flash!

1 Like

I haven’t tried that yet, might be a good method in some situations, thanks!

Yep, avoiding red eye is obviously the best approach, but I’m processing photos from 20 years ago at the moment, so I’m trying to get the best out of the garbage I have :slight_smile:

I’m going to play with the DeltaE sliders more to see if I can master them. I can dial in a colour, but then it sometimes doesn’t select anything, even though that colour exists in the image. I then start tweaking the sliders until I see the mask take effect, but I’m not sure whether I need to adjust luminance, chromaticity, range, etc. I’m not sure I fully understand the bottom sliders yet. The tooltip says “Weight in the deltaE computation”.
Thanks for the tips!

@paulmatthijsse made an article about deltaE mask. Perhaps it can help.

If it’s this one: https://yap.bozart.eu/articles/art/deltaE+brush/index.html, it’s a nice introduction, but it doesn’t really go into detail about what each of the sliders does. I have figured out what most of them do, but I’m still a bit confused by the bottom slider on the LCH sliders.

Hello, first: I messed up my site (images are not showing up), should be back to normal in 24 hours or so. Sorry for that.
Second. DeltaE is for me a question of trying the sliders, most of the time I manage to make a correct mask. If not, you can add the brush mask to erase some parts of the mask. I will write some more articles about masks, because it’s not always clear how they work or what they do exactly (including for me). Coming soon on a screen near you ! :upside_down_face:

Keep up the great work! It’s appreciated.
Yes, for me it’s just a matter of trial and error too and I usually get the result I want from a combination of masks. But I still like to have a basic understanding of what the slider does and ART is obviously lacking documentation. I wish I could help in that regard but my current workload is preventing it.

Would you say that you understand how the bottom slider works in combination with the top slider in the DeltaE mask? The top slider seems to be straightforward LCH values, corresponding to the values you see in the Navigator. But I’m not so sure about the bottom sliders. When you move them, it affects the value labelled in the tooltip as “Weight in the deltaE computation”…

deltaE is a metric, i.e. a way of determining how close two colours are. it is computed by putting together the values of hue, chromaticity and lightness, taking into account how humans perceive colours. the formula used by art (which is a standard one, deltaE 2000) has three parameters that control the weight (i.e. the importance) of each of the three components (h, c and l) in the deltaE computation. this is what the bottom slider controls: the higher the weight, the more the particular component will have an influence on the result. so for instance, if you want a mask that considers all colours that are close to the picked one in terms of hue and chromaticity, regardless of their lightness, just move the lightness weight all the way to the left. you will see, as a visual clue, that the lightness slider will fade away, which tries to suggest that its importance is being reduced.
I hope this clarifies somehow. if not, there’s Wikipedia :slight_smile:

1 Like

Yes, it does, it helps a lot. It’s essentially what I thought it must be doing, except that the application of it was giving me results that made me question if I was right. For example, on a test image, I picked the sky and all of it, plus any other similar shades of blue, were initially selected. I then reduced the bottom slider of the lightness slider to reduce its importance, expecting the mask range to increase and include darker and lighter blues (because Hue is set to max importance). However, I noticed on my test image that skin tones were selected after reducing the L weight to 0. This was surprising as pinkish skin is a very different hue to blue sky.

Perhaps the sky in this image didn’t have a strong enough hue to limit itself to just blues, and when I reduced the L slider, it started to incorporate more neutral tones.

Anyway, thanks very much for your help, that clears things up a lot. I just need to practice more…