Haze Removal and White Balance (Vancouver CA mountains)

University of British Columbia (Canada).

Early morning with some fog and air pollution.


My edit
The blue tint has me stumped. Objects at different distances are affected differently (water, “near” mountains", “far” mountains, and sky). The skies were quite blue after the fog burned off. I ended up with a picture that looks like it might have been taken nearer to sunrise, but it has too much red and not enough blue or green (in the right places)
DSC02784.ARW.xmp (22.6 KB)
DSC02784.ARW (23.7 MB)

This file is licensed Creative Commons, By-Attribution-Non Commercial, Share-Alike.


Ok, my first edit with the new darktable release.

DSC02784.ARW.xmp (8.9 KB)


Had a look at the .arw in RawDigger - here’s the raw histogram, FWIW:

RawDigger’s RGB view shows a blue cast which could almost be Rayleigh scattering at that time of day that far North. RawTherapee comes up blue too, as does FastStone Viewer. So, it’s not just darktable. RawTherapee’s histogram implies a degree of under-exposure and EXIF shows -1 EV in-camera compensation.

Perhaps adjusting the color balance with a three-channel color mixer to reduce but not entirely eliminate the blue cast (assuming it to have been in the original scene)?

RawTherapee’s Haze Reduction didn’t do that well … off to play …

DSC02784.ARW.xmp (11.9 KB)


For what it’s worth, Contrast-Limited Adaptive Histogram Equalization is quite good at Haze reduction:

DSC02784_01.ARW.xmp (23.6 KB)
First image is a relative render…seems okay on my screen…lots of contrast …but looks crushed here…

Perceptual version


DSC02784.ARW.xmp (46.5 KB)

Awesome capture — love the red of the lighthouse up against the green of the trees, as well as the triangle of birds that subframe it!

I tackled the haze with a lot of different contrast layers (tone curves filtered through filmic RGB and finally Sigmoid for slightly lifted blacks and whites). It looks like the camera’s light meter/white balance might’ve overcompensated for lots of orange/yellow tones and pushed everything blue.

Thanks for sharing!

EDIT: another take with only scene-referred modules active, and more of an early morning tonality.

DSC02784.ARW.xmp (45.1 KB)


I’m curious why you use the module order that you do…you have put many instances of LAB modules before filmic or sigmoid…and usually you would only compress the data with one or the other of those but in any case all those instances of the tone curve and color zones would default to the display referred portion of the pipeline and execute after filmic but you have put them in the scene referred part ie before the tone mapper??

I’m just wondering what the logic is…

My first question would be, why remove all the haze? It’s natural and without it, the image would have no depth. In fact that flatness is something I tried to address in my version. The image appears to be two parts – The foreground and then the far background. I tried to “move” the second ridge a little farther back visually to provide more sense of depth. I also tried to remove some of the distant haze, but not all.

Remains to be seen how effective I was. :slight_smile:

ART 1.22

DSC02784.ARW.arp (29.3 KB)


Good question! I’m of the understanding that LAB modules can be shoehorned into the scene-referred workflow as long as the pipeline ends in Filmic RGB or Sigmoid.

Neither Filmic nor Sigmoid alone are tweakable enough to give me the waveform shape I want without multiple tone curve modules thrown in to essentially give me more control over midtones while still compressing shadows and highlights at the end of the pipe.

With Color Zones, I use multiple iterations as saturation curves for a tad bit more control/nuance than what’s offered with the Color Balance RGB sliders.

That being said, often times I don’t need to use all the modules I’ve laid out, or I’ll mask them down to near zero; I just like to have them at the ready.

fast processing with rgb curves

Haze Removal and White Balance (Vancouver CA mountains)_DSC02784.ARW.xmp (12.7 KB)


You can do whatever works for you but it circumvents the designed pipeline to insert all those LAB modules that introduce a perceptual non-linear color space into a place where modules have been designed to work with more or less linear data and have the UI to access the full range of the data where as the LAB modules many times will not esp when DNR is higher… since they are unbounded they do pass data along but they have only been able to access a portion of it… Using them after filmic where the data are now mapped into that 0-1 range allows them work as intended… so you can get away with using them because they don’t clip data but it never the less contaminates the scene-referred pipeline



DSC02784.ARW.xmp (20,8 KB)


Purely out of curiosity, I thought I would try my colour-cast reduction plug-in and this is the result!


I’ve preserved the color cast :laughing: DSC02784.ARW.xmp (13.2 KB)


My fun with GIMP L-a-b


With a little bit of evening sun:

DSC02784.ARW.xmp (19,0 KB)


DSC02784.ARW.xmp (8.3 KB)


DSC02784.ARW.xmp (14.8 KB)

Excellent play raw. I’ve been working on color casts, so this was great timing for me. I spot adjusted the white balance in color calibration using the lighthouse as a target and then played with contrast and local contrast to bring out more depth and color. I liked the haze in the background, so I masked the foreground with the dehaze module.

I wasn’t quite sure what to do with the trees, but I decided to bring more green out with a second application of color calibration and using the channel mixer. There was a lot of tweaking to bring everything in line for me. Small adjustments made a big difference.

Thanks for sharing.

EDIT: I sensed a magenta cast, so I made an additional tweak under the 4 ways tab in color balance rgb:

DSC02784.ARW.xmp (13.9 KB)


I think this photo is more effective in black and white.

DSC02784-52.jpg.out.arp (11.3 KB)

ART 1.18 using a module I’ve been experimenting with for a year or so. A similar effect could probably be obtained with the Color Correction, Color Equalizer, and Black and White modules, although it would take a bit of trial-and-error.