Mosaic processing

Creating mosaics is an interesting way of getting wider fields while not spending money changing your equipment. But processing is not straightforward, as illumination problems usually appear when trying to combine the individual frames.

Illumination differences between frames are created by a number of reasons. Some of these are differences in exposures, in sky glow (specially when imaging during different nights), etc.

Pixinsight is my favorite program for processing images. It also has some very useful features to help with mosaics.

There is an excellent source of information for this kind of processing, created by the Pixinsight team. You can find it at:

Let’s see an applied example.

For this example, I’ll use two frames from the Western Veil Nebula, taken by myself. Each one of them is a RGB composite, containing 3 subs for each channel.


As you see, both frames overlap in a small portion, enough to assure a good alignment.

First, we use Pixinsight register routines:


We select Image1 as the reference frame. In the “working mode” field we select “Register/Union Mosaic”, and activate the “Generate mask” option. After dragging this process over the Image2 frame, we obtain the 2-frame mosaic, and the generated mask:


We quickly notice the differences in illumination between the two frames! The joints are clearly visible. On the left, we see the generated mask, which we’ll use in a moment.

Normally, the illumination differences affect both the background (the dark parts of the images) and the signal.

We’ll try to match the illumination of both frames working with the PixelMath routine, in which we program the following formula:


The first term of the formula deals with the illumination differences in signal strength, while the second term deals with differences in the background. The k1 and k2 parameters control the degree of the correction which we’ll apply (1.00 being no effect applied).

It’s important to notice that this formula doesn’t change the linearity of the images. In other words, it preserves the information and doesn’t change it.

To better control the process, we create a view of the mosaic in which we focus on the joint. We’ll begin trying to match the background:


Now, we modify k2. As the image2 part appears much brighter, we lower k2. With k2=0.85 we obtain this:


We’ve improved, but not enough. So we try again, playing with k2. It’s not very difficult to come to a good k2 value in just three or four iterations:


With 0.79 in k2, we cannot notice the joint in the background areas.

Although we’ve matched the background, the signal part is not yet in balance. We can see this zooming into the joint, but this time moving towards the part occupied by the nebula (the signal):


Looking carefully, we can see a tinny joint in the nebula, just a bit down from the center. If we try to follow this joint, it disappears at the right, when we reach the dark background (this is the good effect done with our previous step).

We do the same as before, with PixelMath, but this time using k1 and playing with it.


With k1=1.5 the joint inside the nebula has dimmed a lot. We can keep trying and fine tunning k1, until we get to satisfying result.


We could keep adding images to our mosaic, following the same procedure. Each time, we’d use the previous partial mosaic as the reference image.


Leave a Reply

Your email address will not be published. Required fields are marked *