Getting more nuanced with compositing

In this week's edits I look at some trickier blends while compositing with the watermark module. I use a 15 second and a 1/4 second exposure of the supermoon rising and create an HDR image with parametric blending. I discuss some considerations involved in this composite in an attempt to show more nuance associated with the process.

The Edit My RAW this week is a shot from Thailand that was previously processed with beautiful results. I attempt to compliment the photographer's work with a few of my own touches.

The RAW files used in this video are available here
Supermoon (15 second)
Supermoon (1/4 second)
Thank you for the contribution Norman 🙂

Here is my latest version of my compositing script:


ls -t .config/darktable/watermarks/tmp* |grep -v svg |head -n1 |read file
inkscape -f "$file" -l '.config/darktable/watermarks/tmp.svg'
ls -l '.config/darktable/watermarks/tmp.svg' |cut -d' ' -f5 |read size_n
ls -lh '.config/darktable/watermarks/tmp.svg' |cut -d' ' -f5 |read size_h
[ $size_n -gt 8000000 ] && echo "File too large. Size $size_h, but needs to be smaller than 8M." || echo "File size okay $size_h"

I set it up with a hotkey sequence and use it often now.

Complete Show Text

Download complete text here

Aloha everybody, and welcome to Weekly Edit.

This was the week of the Super Moon.

We were concerned we weren't going to be able to see it both nights because we had lots of clouds and rain, but right at the last minute, it cleared up.

This time-lapse is from the first night.

It was beautiful seeing the moon come up behind the clouds.

We didn't think we'd get as lucky the second night, but we got the same show with the moon rising from behind the clouds just over the horizon, over the ocean.

Here are our Super Moon shots.

We've got two of them.

The first one is 15 seconds to catch as much detail as I can in these dark areas.

I don't know how much we'll be able to pull out of the ocean.

The second one is a quarter of a second to try and keep the moon from blowing out.

Let's zoom in a little bit.

See this fringing we've got? This will be a challenge.

This is the light bending around the edge of the clouds.

I want to pull out more detail in here.

Let's see what we can do.

Maybe if I bring this down a little.

Does that help? Yes, a little.


Boy, there isn't much there.

Can I get something with the Highpass? Maybe.

If I use a Parametric Mask based on the L Channel and Soft Blend Mode, sometimes I can pick up some highlight details that I can't get otherwise.

Oh, yeah; that helped a little.

Okay, that's our moon part.

I'll crop this.

Because we just want the moon; we don't need all that other stuff.


I'll save this.

Now, I want to combine this with this one, so I'll save it as an image file, then convert it to a vector-based format, SVG, in the Darktable Watermarks directory.

Then I'll import it into this one under the Watermark Module so I can paste it over the existing moon.

When I'm saving an image that I'll be importing into another image like this one, I save this image as large as I can, so that when it's converted to a vector-based format, SVG, it stays under 8mb.

I set up a pre-set for Watermark.

This makes it easy for me.

I just call it tmp because it's my temporary watermark file.

I store it here: .config/darktable/watermarks Now, I can use a variety of extensions.

I can use JPG; I can use PNG...

This one has been cropped so heavily, I'll save it as a PNG at 16-bit.

I like to over-write my old files so that I don't have the time of these temp files in there, and I'll hit Export.

I've been working on my script.

Here it is.

I added a couple of things.

One: I put in an 'ls' with a time order to it so that when it looks for tmp files, it just picks the most recent one.

So, if I store it as a JPG or a PNG, it doesn't matter; it will just find the most recent one and use that name.

This script just calls Inkscape.

The '-f' is the name of the file.

That name comes from up here.

I'll post this script on my show notes.

The '-l' says: what should we save it as? So, all I'm doing is using Inkscape to convert either a PNG or a JPG to an SVG.

Here I have it save it to that folder I was telling you about: .config/darktable/watermarks/ and I call it tmp.svg so it just over-writes it each time.

If I want to save a file so I can do non-destructive editing and use it again, I'll have to save this file with the original RAW image files or TIF that I'm working on, and the additional sidecar XMP files.

Then, when I'm working on it, put it back in the watermark directory or put a copy there.

Anyway, you'd have to save more than one file if you're doing compositing.

Next, I check the size of that SVG file.

If it's over 8 mb, I just tell myself 'file too large' and needs to be smaller.

Then I can make an adjustment.

And, if it's okay, it says 'file size okay' So, I already saved it.

It tells me that even as a PNG, the SVG it formed was only 426K, so that is fine; that's well under 8mb.

I can just open it here now.

First, let's do some corrections.

We'll do Demosaic-ing and Chromatic Aberrations and Denoising, and all that stuff.

So, this is what PPG looks like, and here's Amaze, and VNG.

Speaking of Demosaic-ing, Alex wrote in and suggested doing Demosaic-ing before Denoising.

He is right.

I'll try to remember to Demosaic before I Denoise in future.

So, the VNG seems to help with the fringing a little.

Not too much, but it's better than the Amaze.

How about a little Color Smoothing? Does that help? That doesn't hurt either.

Okay, I'll go with the VNG.

It's a little soft, but I want to get rid of this fringing, so: wonderful.

I'll correct for Chromatic Aberrations, but I'll do that after Denoising because, if I zoom in and I have Chromatic Aberrations on, I'll get the wrong information about what fringing is actually there.

First: Denoising.

I'll just use the Equalizer on this.

It's all nice, fine grain.

800 ISO is not that high of gain, so it came out nice.

I'll work on the Chroma color first.

This bottom row denoises; this top row enhances contrast locally.

I'll bring up these two.

Okay, that color noise is gone.

Then I'll try to bring these sliders over to the right as far as I can before I introduce noise.

Oh, I can see a little color noise there.

And this one -- right about there.

Because I want to be as efficient as possible, I'll do the same thing with the L Channel.

I'll bring this one up.

That got rid of a lot of it.

There's still this larger-scale noise, though, so I'll bring this one up.

That will probably get rid of it.

It does, but it gets rid of it more than we need.

So, I'll bring this over.

And this one.

I'll try to get as efficient an area under this curve as I can to get rid of that noise.

I'll do a crop so I can see what I'm looking at, but I'm going to rotate this.

I don't want to do that until I rotate it after it's been composited, so I'll just give it a quickie crop here and leave some extra so I can rotate it later.

It makes it easier to work if I crop it, especially when I'm working with compositing.

If I import my image, I can scale that image, and I have more control over scaling it if I crop my original first.

I'll show you because this can be confusing.

So, there's that tmp.svg file that was created by the script I wrote.

And there's the moon.

We'll make the Opacity small so we can see both things at the same time.

This moon turned out really large because we used a cropped image.

I can control its size with Scale here, but we want a size around 20%, according to this.

So, if I didn't crop this and it was full size, then when I import this SVG, I have to bring it down to 12% in order to overlay it.

Now, that's fine; I don't have lower quality, but I don't think I can put in 11.5 here, see? So, I can only do 12 or 11.

See how much it changes? That's quite a bit.

So, if I want to have more fine-tuned control over the size, I'll crop my back image prior to compositing.

But, like I say, it's tilted, so I can't do a full crop.

I've got to leave enough extra so that when I de-rotate later, I have enough edges to lose some.

My goal is for this crop to be something like this, approximately, maybe a little taller.

About like that.

So, I'll give it just a little space on all sides and crop it there.

Let's see if we can gain a little with our Shadows and Highlights Module.

Turn that on.

Okay, that gave us halos around the sides, which we can get rid of with the Bilateral Filter.

Oh, that made a difference.

See that? Look at this edge, when I change it from Bilateral to Gaussian.

That's Gaussian, and there's a halo around the edge.

Now I'll change it to Bilateral.

Bingo! It's gone.

So, these default settings have gotten us this far.

Oh, good; we can see a lot more detail in these clouds and the tree looks good.

I won't get any detail out of this tree, and I don't even want to try.

For one, it was incredibly dark, and secondly, it was moving, so everything is blurred.

Now we'll composite that first image with this one using the Watermark Module.

This is the file I want: tmp.svg This is the one I created with that script, and you can see that makes it large.

We're going to want to make it smaller.

In order to place it properly, I'll just change the Opacity so we can see what's behind it.

There we go.

Move it over and down.

Make it smaller.

I'll use the Parametric Mask to get it placed right.

I want to get rid of the dark parts in the sky.

Let's see what that looks like.

There's the moon over this part that is blown out.

Now I want the moon to go out a little farther, so maybe I can feather this a little.

Now I'm getting these darker parts here, so maybe I can use this Output Control to eliminate output that's dark, like that.

Okay, and I can feather both this Output Control and this Input Control to get the moon so it fills just where I want it.

I'll move it to the right a little.

Oh, it doesn't go all the way.

I'll make it a little larger.

And, down here, it looks like the moon is coming over the top of the clouds.

I'll change the Input to eliminate that to some extent.

Oh, that will be tough to do, won't it? Oh, that's not SO bad.

There we go.

A little Mask Blur.

Let's see: a little over a pixel; I've got 1.4 pixels here.

I'll lower the Opacity just a tiny bit.

I just took it down to 96.

Now, the background is a little bright.

I'll use the Tone Curve to adjust the background.

Let's see what we've got.

We're like, right around there.

Let's bring that down to see if we can get a better match.

I don't want to bring down the darkness from this Tone Curve everywhere; I want to do it close to the moon, so I'll use a Drawn Mask.

That brightened everything right back up again.

How do the edges look? I don't like this dark part here.

Let's see if I can tweak these values a little more.

There we go.

That helped a little.

And so does that.

There we go.

We've got most of it gone.

Oh, I love that; that really turned out sweet.

I'll save this, but before I do, I'll do Chromatic Aberration Control and Hot Pixels.

Since it was a 15 second exposure, it will have hot pixels.

It says 65; I bet there's a few more than that.

I'll turn my Threshold down.

No, it's not going up very much; just some.

Okay, we already denoised with the Equalizer, so: Chromatic Aberrations, and let's save it.

Here we are.

First: de-rotate it.

I like the water down here, and I like to see the bottom part of the palm tree, so I'll leave as much of the bottom as possible.

I'd like for the moon to look large, so I'll do an aggressive crop.

And I want to still be able to tell that it's a palm tree, so let's try this.


I want to bring out some brightness in the water so I can discern it from the palm tree.

Let's just look at what tone this is and bring that up.


That seems to work pretty well.

I don't want it up here.

Maybe I can use a drawn mask? Reverse the direction.

Give it a little bit of a feather.

Make this just a little larger.

There we go.


Now I can tell the difference between the tree and the water.

I'd like a little deeper color here.

I can do that with a Multiply method.

First, I'll apply it with an L Channel.

I'll bring my Opacity all the way down to start because it comes on a little strong.

I'll give it a little bit of an S curve and bring up the Opacity slowly.

This is giving me a lot richer colors.

So I'm around 15%.

That's before, and that's after; that looks great.

It's a little coppery or green here.

Oh, look: I've got a line from that file.

One of the nice things when you're working between versions is that you don't have to lose your XMP file.

You can just make a change to one.

I'll come in here, and see: I've got this little line on my watermark.

I'll add a Drawn Mask to it so it's both a Drawn and a Parametric Mask.

There we go.


I'll save that and make sure that I over-write.

Remove this one, because it will use the cached version for the thumbnail.

When I re-open the directory, it will keep the old XMP file that we were working on, see? But now our square is gone from around the edges.

So, that makes it possible to bounce back and forth between versions.

I wonder what that dot is from.

Oh, those are stars! Right: because it was night.

What else? It looks a little green here, and I want it to look more copper.

Let's see: Color Zones.

We'll take some samples.


We're over here: right there with that black line.

And if I go up here, ah: we're over here.

I'll take this slider and move it right where the offending colors are, then bracket it with two other control points.

Using the mouse wheel, make the circle smaller so I have finer control.

Then, I want to go from this line over to here, so I'll go down a little.

There we go.


It was a little green or blue, and now it's the same color as the rest of it.

Okay, what else do we need? Let's get these clouds to pop a little bit from the sky.

I can do that with an Overlay method on a Lowpass Filter.

I'll turn my Saturation down to zero, then set my Radius so that the clouds and not the details show up.

Okay, I can see my individual clouds here.

That was at 16 pixels.

I'll change my Blend Mode to Overlay.

I'll probably have to take my Contrast down a little bit, but first I'll just take my Opacity down and see what I want to do.

That's not so bad.

So, around 24%.

It gives me a little separation on these clouds.

Let's see if I can do it a little more.

Okay, I'm up to 31%.

I want to bring out some of these highlight details.

My favorite method for doing that is with the Highpass Filter.

Try and find a ratio of my Sharpness and Contrast to bring out the details I want.

I'm looking for some of these details in these clouds.

Look at all of these stars: that's crazy 🙂 Alright; just like that.

I'll apply this with the L Channel, Parametric Mask and Softlight Blend Mode.

That's without it and that's with it.

It's giving me a little detail in here, but I'm getting this dark ring around the moon, so I'll exclude the moon from this.

Combine it with a Drawn Mask and draw a circle around the moon, and reverse the Polarity so it happens everywhere but there.

Alright, what have we got? Like that, and like that.

I think that's it.

It looks good to me.

While we're dealing with Super Moons...

I had this shot I did.

It's a panorama.

I shot the bottom third first when the wave was coming in, then panned up to catch these clouds, and panned up one more time to catch the moon.

But, it's such a wide angle that the moon looks tiny.

I'll crop this and get myself a version of this moon, then put it back in the same picture, but place it in a different location and make it a different size.

I'll save this to the directory that we've been saving them to.

Since it's being cropped, I'll change it to a PNG.

And I've got my Watermark Script.

It says my file is only 300K, so I don't have any problem with that.

Un-crop it.

Go to my Watermark Module.

Look for tmp.svg And there's our moon.


Let's put the moon behind this cloud and make it nice and big.

Why not? This is fun stuff, right? We'll move it up.

And over.

And use a Parametric Mask.

Not have it post in the darker clouds, but have it post in the lighter sky.

Let's see.

The lighter sky is around 190, so I'll put one mark there.

And I'll bring this one up.

There we go.

Now we can move the moon wherever we want.

There's a lot of extraneous stuff that came with it.

So, I can take a Drawn Mask and add it to the equation.

I've got a little color mis-match here.

I could do a tighter circle.

I need to work on my Parametric Mask numbers here a little bit too, so the clouds cover the moon better.

There we go.

There we are.

And we'll get rid of the old moon.

That looks good.


I've got a couple of things I want to show you on the Interwebs.

One of them is Alex here had asked on about saving for Facebook.

He did some research and tried a bunch of different methods.

He says the hot ticket is to go 2048 px for your longest length, regardless of if it's portrait or landscape.

You just make 2048 px your longest length and save it as a PNG.

Yay! Now we all know.

Thank you.

Also, I want to show you Daniel Kordon's site.

This guy is amazing.

He's got this style that's kind of like a soft focus or low contrast in areas.

It gives a dreamlike appearance.

If everything is sharp, then nothing appears sharp.

It's these contrasts.

He gets contrasts between areas that have some aspects, like a lot of contrast and a lot of sharpness, and other areas that have lower amounts.

It makes it really pop.

I love his choice of colors too.


Yes: Daniel Kordon.

Come here and look around.

The guy is great.

This week's Edit my RAW is from Norman.

He sent us a beautiful picture from Thailand that he took -- and processed.

Look at this! You did a great job, Norman; this is beautiful.

I showed my wife and she was impressed with how gorgeous it is.

So, I don't want to re-do it; I mean, look at these colors! This is fantastic.

I love what you did with the shading here on the sand and the relief that you get from the rock.

There are a couple things that might make it even better.

The blown-out sun here: it's hard to get a visual sense of where the sun is because it's all blown out.

We can use the Color Reconstruction Module to fill in the color.

See, like that? We can use the Threshold Adjustment and the Spatial Extent to try and get the best effect we can.

I'll apply this with a circular Drawn Mask to try and draw your eye to where the sun should be.

If I follow this line, I'm assuming the sun should be right here.

So, if I make a circle there and have this feathered edge like this...

Here, I'll turn on my Mask Indicator.

See where that circle is? I'll reverse it so now all of the picture gets the effect, but just not this one area.

I'll make it a little smaller and feather this a little more.

There we go.


So, now the Color Reconstruction happens over here and over here, but not right in the middle.

That helps draw your eye up here, to see where this is.

I love your saturated colors; those are gorgeous.

We can get a little bit more saturation by doing a Subtract.

One of the nice things about a Subtract is that it gives you some really nice solids too.

There are a couple ways we can do a Subtract.

One of them is to just take a straight Tone Curve and do a Subtract.

I like to use a Parametric Mask because I want to protect my shadows some, and the Subtract won't.

Multiply will protect your shadows, but the Multiply doesn't give quite the depth of colors that a Subtract does.

I'll take my Opacity and turn it all the way down, because when I turn this on, it's way overboard.

You can only apply like 4-5% of it.

Okay, so I'm changing my Blend Mode to Subtract, and I'll slowly bring up my Opacity.

Now, don't forget: I've used an L-mask here.

That's important.

Without that, our shadows get black real fast.

And I'll slowly bring up the Opacity.

You can see that the saturation really kicks in to gear.

Like that, and like that.

See what a nice effect that has on these rocks too? And these deep, deep colors.

So, this is what the Subtract looks like with the Tone Curve.

But, I wanted to also try it with something that protects our dynamic range a little more.

So I'll take a Snapshot and then look at the same idea, but with the Global Tone Map Module.

If I turn on the Global Tone Mapping, you can see that it pushes my information toward the middle.

So, now we've got all these beautiful mid-tones.

Once again, a Parametric Mask based on the L Channel.

Then I'll change my Blend Mode to Subtract, take my Opacity all the way down, and slowly bring it up.

Get my nice deep colors.

See those nice deep colors you're getting? And these nice darks, too? Let's compare it with what we got off the Tone Curve.

It looks pretty similar in a lot of it.

But, off the Tone Curve, we've got these really solid blacks, and the sand is a little bright relative to that.

With the Tone Mapping, our solids didn't get any more solid.

We've got the same amount of solids.

But our mid-tones are a little richer.

You get a little more discrimination up here too, in these clouds.

And I don't see any difference here in these clouds.

It looks like the tones are a little richer in the water too, with the Global Tone Mapping.

Yeah, this looks a little washed-out.

And this is nice and rich, too.

So, I think I get a little better effect using the Global Tone Map with the Subtract, and it gives me beautiful colors too.

There's only one other thing I was looking at.

I want to see more detail in these clouds.

When I like to get more highlight detail, I usually use a Highpass Filter.

I'll take my Sharpness and my Contrast and play with them to try and get those nice details in the clouds.

Let's see.

Like that; that looks good.

Oh, yeah; look at all of those details: nice.

I'll take a Parametric Mask based on the L Channel and apply this with the Softlight Blend Mode.

It had an effect on the water too.

I'll take a Snapshot here.

So, the idea of this module would be to give me more detail in my highlights.

On the water, we had low contrast.

Now we're getting some nice pop.

Getting some nice pop here along the shore with these rocks too.

And we're really getting more detail in these clouds.

But since we based that on the L Channel, we didn't lose any shadows; they didn't get too dark.

Those are pretty subtle changes.

I just brought out the clouds a little more, deepened the colors a little, and drew your eye to the middle of the sun.

Other than that, I don't have anything to say.

Thailand, eh? Okay; I want to go to Thailand now.

(laughter) Thank you so much, Norman, for your contribution.

I hope you enjoyed this week's edit.

I'd like to take this opportunity to show you around my website.

It's called Weekly Edit.

If you go here, you can find my most recent videos.

The videos are broken up by what occurs at what time.

You can jump ahead, which is really nice.

I've got it broken up by which topics I went over and by which modules I used.

There's also lots of show notes every week, and you can download the RAW files that I used to do the edit.

You can edit along at the same time if you'd like.

There's space here to upload your own RAW file.

See where it says 'Edit my RAW'? You can click on that and upload your files.

If I select yours to edit on the show, I'll send you a souvenir print, signed and matted, as a thank-you for your contribution.

I really appreciate that.

We have three Patrons now on It's exciting; every week we're getting positive support.

My wife and I really enjoy that.

Thank you so much, for everybody that participates, and thank you for watching along on the videos, and thank you for contributing your comments and suggestions.

And a big thank-you to our Patrons.

Alright everybody, have a good weekend, and I'll see you next week.


2 thoughts on “Supermoon

  1. Hi,

    I am struggling with implementing the scripts under linux. E.g. I copied the watermark script in my home folder as a file. Executing it with ./ gives me a “command not found”. Any ideas what I am doing wrong?

    Thanks a lot!

  2. Pingback: Chasing the Supermoon! Come to Hawaii and shoot with Harry Durgin

Leave a Reply

Your email address will not be published.