Color Masks with ColourMask and Selective CurvesTransformation Adjustments
Select a color range, check the mask, and make a restrained color adjustment without changing the whole image. Learn a repeatable workflow for masked saturation and individual-channel curves.
Sources reviewed October 25, 2026
Select where, then decide what to change
A color mask is a grayscale image describing where an adjustment is allowed. ColourMask, published by Cosmic Photons, selects pixels by their color characteristics. CurvesTransformation then defines the adjustment applied through that selection.
White areas of an active, non-inverted mask allow the full adjustment, black areas protect the original pixels, and gray areas allow a partial effect. A mask selects pixels, not physical objects: blue stars, blue nebulosity, and blue noise can all be selected together.
This lesson makes small finishing adjustments to a permanently stretched RGB image. It is not a substitute for color calibration and does not imply that every strong color needs correction.
1. Prepare a stretched working copy
Save a checkpoint such as Target_color_before_curves.xisf and make a working duplicate. Turn STF off so you judge the actual stretched pixels. If the image becomes almost black, confirm whether it is still linear; follow the stretching lesson before this finishing exercise.
A starless color image can make nebular adjustments easier without changing star colors. If using one, keep the aligned stars branch for later restoration. Otherwise, inspect stars and halos as carefully as the object when checking the mask.
Install the ColourMask process using the Cosmic Photons setup guide if needed. On PixInsight 1.9.4 and later, the publisher directs users to this process rather than the older ColorMask script. CurvesTransformation is included with PixInsight.
2. Choose a color range in ColourMask
Start with one visible region and one clear aim, such as a slight saturation lift in blue emission. Avoid adjusting several colors at once while learning.
- Activate the working color image. Open Process → MaskGeneration → ColourMask, or find it under All Processes. Reset a reused instance and open its Real-Time Preview.
- Choose a hue preset close to the intended region, then inspect the selection. For example, a blue range around 210–270 degrees is a useful practice range if the image contains that color; it is not a required selection for every blue-looking feature.
- Adjust the start/end hue or preset range gradually until the intended pixels are selected. Hue wraps around the color wheel: a red range can cross from 330 degrees through 0 to 30 degrees.
- Begin with a chrominance-based mask if offered, leaving strength and lightness/chrominance limits at their reset values initially. Use the installed help to understand these controls before narrowing the selection further.
- If transitions are harsh, try a small amount of mask blur and recheck the edges. Blur softens the selection boundary; it does not blur the target image directly. Too much can spread the adjustment into neighboring regions.
3. Generate and inspect the grayscale mask
Generate the mask with ColourMask’s output/apply action and identify the resulting grayscale image. Rename it clearly, such as Target_blue_mask. Seeing a selection preview does not establish that a mask is already attached to the target.
Inspect the mask itself with STF off, at fit-to-window and 1:1. The desired areas should be lighter, protected areas darker, with reasonable transitions. A gray selection is valid; it means a weaker adjustment, not a failed mask.
Check for selected stars, colored background patches, and bright halos. Tightening chrominance or lightness limits may help exclude unwanted pixels, but can also exclude faint real emission. Judge the actual coverage rather than assuming a preset isolates the object perfectly.
Do not force every selected feature to white by clipping the mask. A stronger mask is not automatically a better one. If it selects the wrong areas, change the selection before trying to compensate with a larger curve.
4. Attach the mask and verify its direction
Activate the color target, choose Mask → Select Mask, and select the generated grayscale mask. Confirm that the mask is enabled and not unintentionally inverted. The mask must match the target’s dimensions, crop, orientation, and pixel alignment.
Show the mask overlay. With the usual red overlay preference, protected regions appear red; the color and display strength can be customized. Check the grayscale mask and enabled/inverted state if the overlay is confusing.
If you want to edit the lighter areas of the generated mask, do not invert it by habit. Inversion swaps selected and protected areas. Hiding the overlay only changes visibility; disabling or removing the mask changes whether it protects the target.
Hide the overlay to see the true image colors while leaving the mask enabled. Reactivate the color image before opening CurvesTransformation so that you do not accidentally edit the grayscale mask instead.
5. Make a small masked saturation adjustment
ColourMask defines where the change happens. The Saturation curve defines how saturation changes within those pixels. The curve’s S selector means Saturation; it does not mean that you should draw an S-shaped contrast curve.
- Open Process → IntensityTransformations → CurvesTransformation, or use All Processes. Reset the entire instance so hidden edits on other channels do not carry over.
- Choose S (Saturation), leaving the other channel curves at their straight identity lines. Open Real-Time Preview for the masked color target.
- Place one point near the middle of the diagonal and move it slightly upward. If entering normalized values, input 0.50 → output 0.55 is an example trial, not a default recommendation. Keep the endpoints unchanged for this exercise.
- Compare the preview with the source. Check the intended region, background color noise, star halos, and selection boundaries. If the change is too strong, move the point closer to the diagonal. Moving it slightly below the diagonal gives a desaturation trial instead.
- Apply once to the working copy. Close the preview and compare the applied result with the saved checkpoint before deciding to keep it.
6. Understand what the curve’s axes mean
In the S curve, the horizontal axis represents input saturation and the vertical axis output saturation. A point near the middle is not specifically selecting middle-brightness pixels. Location and color selection still come from the mask.
In an individual Red, Green, or Blue curve, the axes instead represent the selected channel’s values. Adjusting one channel can change hue and brightness as well as the perceived strength of a color; it is not interchangeable with increasing saturation.
For a first individual-channel experiment, return to a fresh duplicate and reattach the same checked mask. Reset CurvesTransformation, select only one channel, and move one interior point a small distance. Compare the resulting color rather than stacking it immediately onto the saturation trial.
Do not treat a colored mask as a rule to edit the same named channel. A blue-region mask can restrict any chosen curve. Decide whether the goal is more color intensity, a different color balance, or a tonal change, then use the appropriate control.
7. Check edges, noise, and the rest of the image
Toggle between before and after at matched zoom with STF off. Inspect the selected region at 1:1 and the full composition at fit-to-window. Check whether the adjustment still looks useful when you stop concentrating on the edited patch.
Look for noisy colored speckles, hard transition lines, neon-like edges, lost color variation, and shifts in stars or halos. These can indicate too broad a selection, too strong a curve, or insufficient signal for the desired change.
A mask regenerated after a color change may select different pixels. For a controlled comparison, keep the original mask and start each trial from the same pre-adjustment checkpoint. If you deliberately rebuild it, record that as a new selection.
Keep the milder trial if the stronger one mainly amplifies background noise or makes the color less believable. A finishing adjustment is a choice, not a requirement to make every color equally prominent.
Quick fixes when the result is unexpected
The whole image changes: verify that the correct mask is attached and enabled. Inspect the mask for a broadly light background, and check for stale curves on other channels.
The opposite region changes: check mask inversion and inspect the grayscale mask. Do not use the overlay’s red color as a hue-selection guide.
Nothing seems to happen: confirm that the color target is active, the mask permits changes there, and the curve differs from identity. Check the preview target before increasing the adjustment.
Visible seams or halos: try a gentler curve, revisit the hue range, and inspect mask transitions. Additional blur may help an edge but can also leak the adjustment into protected areas.
Colors jump much more than expected: reset all curves, not just the currently visible one. Confirm that the example saturation point was entered on S rather than RGB/K or a single color channel.
The next process seems oddly weak: check whether the previous mask is still enabled. Remove it when the selective adjustment is complete unless you deliberately want to reuse it.
Save the adjustment and continue
Save the accepted image separately, for example Target_color_curves_v1.xisf. Preserve the pre-adjustment image, mask, ColourMask instance, and CurvesTransformation instance so you can reproduce the selection and curve.
Record the hue range, mask type and limits, blur, inversion state, edited curve channel, and retained control points. These settings describe this image; future projects need their own mask checks.
The publisher provides full ColourMask documentation through the process interface. The linked forum discussions explain mask behavior and selective curves techniques; some refer to older ColorMask tools. Follow the current ColourMask process help for version-specific controls. This is an original practice sequence, and its example range and curve point are not universal presets.
See the technique in practice
This lesson is public. Detailed project workflows and dataset downloads require an active membership. Dataset selections follow your membership allowance; reading a workflow does not use a selection.
Finding the detail in the dust
See this technique in the recorded Iris Nebula NGC 7023 workflow. Use that project’s documented order, retained settings, and limitations.
Public overview · Member-only detailed workflow
Explore story and member workflow →View member dataset →Member-only download · selection allowance applies
Finding the Lion in gold, cyan and blue
See this technique in the recorded Lion Nebula Sh2-132 workflow. Use that project’s documented order, retained settings, and limitations.
Public overview · Member-only detailed workflow
Explore story and member workflow →View member dataset →Member-only download · selection allowance applies
Let the shell stand alone
See this technique in the recorded Crescent Nebula - NGC6888 workflow. Use that project’s documented order, retained settings, and limitations.
Public overview · Member-only detailed workflow
Explore story and member workflow →Finding the Pelican in blue and gold
See this technique in the recorded Pelican Nebula - IC5070 workflow. Use that project’s documented order, retained settings, and limitations.
Public overview · Member-only detailed workflow
Explore story and member workflow →