{"course":{"slug":"image-editing","title":"Editing an Image","url":"https://addaly.com/learn/image-editing","level":"beginner","track":"create"},"lesson":{"slug":"luminosity-masks","title":"Masks with no edge anywhere","url":"https://addaly.com/learn/image-editing/luminosity-masks","position":25,"of":78,"minutes":9,"answer":"A luminosity mask makes each pixel's participation equal to its own brightness, so an adjustment fades continuously and has no boundary to halo along; and intersecting the mask with itself narrows it to the highlights.","keyIdea":"A luminosity mask makes each pixel's participation equal to its own brightness, so an adjustment fades continuously and has no boundary to halo along; and intersecting the mask with itself narrows it to the highlights, the shadows or a midtone band."},"body":{"format":"markdown","text":"## Selecting brightness instead of regions\n\nEvery selection made so far has drawn a boundary somewhere. A luminosity mask does not. It selects by tone: each pixel's participation equals its own brightness, so the mask varies continuously across the whole frame and there is no line for a halo to form along.\n\nThe basic one is two clicks. Open the Channels panel and **Ctrl/Cmd-click the RGB composite thumbnail**. You now have a selection at 100 per cent in the white areas, 50 per cent in mid-grey, zero in black. Add any adjustment layer and it arrives with that as its mask.\n\nThat single move is the correct way to recover a bright sky without the halo that a hard selection produces along a roofline. It is also the correct way to add contrast to the shadows without touching the highlights, by inverting it first.\n\n## Building the levels\n\nOne luminosity mask is blunt. The standard toolkit has several, each narrower than the last, and they are built by intersecting a mask with itself.\n\nThe arithmetic from the channels lesson: **multiplying two masks intersects them.** Intersect the basic brightness mask with itself and the result is brightness squared: a mask that is near-zero through the midtones and only opens up in the bright areas. Do it again and it is narrower still.\n\nThe traditional naming, from the photographer Tony Kuyper who formalised this:\n\n- **Lights 1**: the plain luminosity mask.\n- **Lights 2**: Lights 1 intersected with itself. Only the brighter half of the highlights.\n- **Lights 3**: narrower again.\n- **Darks 1, 2, 3**: the same, built from the inverted mask.\n- **Midtones**: the full mask minus both the lights and the darks, giving a band that peaks in the middle and falls away at both ends.\n\nIn practice: load the luminosity selection, then hold **Ctrl/Cmd + Alt/Option + Shift** and click the RGB thumbnail again. That modifier combination intersects the new selection with the existing one. Repeat for a narrower band. Save each one into an alpha channel as you go, because you will want them again in the same document.\n\n**Calculations** (*Image > Calculations*) does the same thing in one dialogue: two sources, Multiply, result to a new channel. It is faster once you know what you are asking for.\n\n## What this is actually for\n\n**Recovering a sky.** A Darks mask on a Curves layer lets you lift the shadows in a landscape without the sky going grey: the adjustment does not reach the bright pixels, and there is no boundary between treated and untreated regions.\n\n**Contrast that does not clip.** An S-curve applied through a Midtones mask steepens the middle and leaves the ends alone, which is the thing the tone lesson said contrast normally borrows from.\n\n**Colour in one tonal band.** A warm colour layer masked to Lights and a cool one masked to Darks is split toning, done properly, with control over exactly how far each reaches.\n\n**Dodging and burning that respects the subject.** Burning through a Lights mask darkens only what is already bright, so a highlight is brought down without muddying the shadow beside it.\n\n**Sharpening the right part.** A High Pass layer masked to Midtones sharpens texture without exaggerating noise in the shadows or halos in the highlights.\n\n## The free routes\n\n**GIMP** builds these natively. Add a layer mask with the *Grayscale copy of layer* option and you have Lights 1 immediately. For narrower bands, duplicate the mask into a channel and use *Colours > Curves* on it, or use the layer mode arithmetic. GIMP's channel arithmetic through *Filters > Generic > ...* and the GEGL operations covers the rest.\n\n**Photopea** has the Channels panel with Ctrl-click loading and the same intersect modifiers, so the whole technique transfers directly.\n\n**Krita** has *Filter Masks* and can copy a layer into a mask, which achieves the same thing with a different route.\n\nPaid panels exist that automate all of this: they generate sixteen masks and give you buttons. They save clicks and teach you nothing. Build them by hand five times and you will know which one you need before you make it, which is faster than scrolling a panel of sixteen.\n\n## Where they fall down\n\n**They ignore what the picture contains.** A luminosity mask selects a white shirt and a white cloud identically, because it only knows brightness. If you want the sky and not the shirt, you need to combine the luminosity mask with a region mask: load the luminosity selection, then paint black over the shirt on the resulting mask. Most real uses are this combination rather than the luminosity mask alone.\n\n**They are tone-dependent, so they move when the tone moves.** Build a Lights mask, then change the exposure underneath it, and the mask no longer corresponds to the highlights. Masks are snapshots. Rebuild them after any large tonal change, or apply tonal changes above them.\n\n**Noise gets selected too.** In shadows, the luminance variation that is noise becomes variation in the mask, and an adjustment applied through it can amplify the noise pattern. Blurring the mask by one or two pixels fixes this at negligible cost to the effect.\n\n**Banding, in 8-bit.** A continuously varying mask in an 8-bit file has 256 steps like everything else, and a strong adjustment applied through it can show them as terracing in a smooth sky. This is the clearest everyday reason to work in 16-bit."},"check":{"question":"A landscape photographer uses a Lights mask to bring down a bright sky, and it works well. In the same frame, a white building in the foreground also darkens, which they did not want. What is the correct reading?","options":[{"text":"The mask needs narrowing to Lights 3, which would exclude the building while keeping the sky.","correct":false,"tempting":"Assumes the sky is brighter than the building when both are near-white: narrowing the band affects them together, since the mask ranks by value alone."},{"text":"A luminosity mask ranks pixels only by brightness, so it cannot distinguish two bright objects, and the fix is to paint the building out of the resulting mask.","correct":true},{"text":"The mask was built from the RGB composite rather than the blue channel, which would have separated sky from building.","correct":false,"tempting":"Offers a channel trick that does separate blue sky from a neutral building, but describes a different technique rather than explaining why the luminosity mask behaved as it did."},{"text":"The adjustment layer is above the building in the stack, so it is reaching content it should not; moving it lower would exclude the foreground.","correct":false,"tempting":"Misapplies stack order to a single-layer photograph, where there is no separate building layer for an adjustment to sit above or below."}]},"prev":{"slug":"select-by-colour-properly","title":"Tolerance is a wall, fuzziness is a slope","url":"https://addaly.com/learn/image-editing/select-by-colour-properly"},"next":{"slug":"segmentation-models-and-one-click-cutouts","title":"What the one-click button is actually doing","url":"https://addaly.com/learn/image-editing/segmentation-models-and-one-click-cutouts"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Masks with no edge anywhere', in Editing an Image. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/image-editing/luminosity-masks (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Masks with no edge anywhere","courseTitle":"Editing an Image","module":{"index":3,"slug":"selections-cutouts-and-edges","title":"Selections, cut-outs and edges"},"answer":null,"keyIdea":"A luminosity mask makes each pixel’s participation equal to its own brightness, so an adjustment fades continuously and has no boundary to halo along; and intersecting the mask with itself narrows it to the highlights, the shadows or a midtone band.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"selecting-brightness-instead-of-regions","runs":[{"text":"Selecting brightness instead of regions"}]},{"t":"p","runs":[{"text":"Every selection made so far has drawn a boundary somewhere. A luminosity mask does not. It selects by tone: each pixel’s participation equals its own brightness, so the mask varies continuously across the whole frame and there is no line for a halo to form along."}]},{"t":"p","runs":[{"text":"The basic one is two clicks. Open the Channels panel and "},{"text":"Ctrl/Cmd-click the RGB composite thumbnail","b":true},{"text":". You now have a selection at 100 per cent in the white areas, 50 per cent in mid-grey, zero in black. Add any adjustment layer and it arrives with that as its mask."}]},{"t":"p","runs":[{"text":"That single move is the correct way to recover a bright sky without the halo that a hard selection produces along a roofline. It is also the correct way to add contrast to the shadows without touching the highlights, by inverting it first."}]},{"t":"h2","id":"building-the-levels","runs":[{"text":"Building the levels"}]},{"t":"p","runs":[{"text":"One luminosity mask is blunt. The standard toolkit has several, each narrower than the last, and they are built by intersecting a mask with itself."}]},{"t":"p","runs":[{"text":"The arithmetic from the channels lesson: "},{"text":"multiplying two masks intersects them.","b":true},{"text":" Intersect the basic brightness mask with itself and the result is brightness squared: a mask that is near-zero through the midtones and only opens up in the bright areas. Do it again and it is narrower still."}]},{"t":"p","runs":[{"text":"The traditional naming, from the photographer Tony Kuyper who formalised this:"}]},{"t":"ul","items":[[{"text":"Lights 1","b":true},{"text":": the plain luminosity mask."}],[{"text":"Lights 2","b":true},{"text":": Lights 1 intersected with itself. Only the brighter half of the highlights."}],[{"text":"Lights 3","b":true},{"text":": narrower again."}],[{"text":"Darks 1, 2, 3","b":true},{"text":": the same, built from the inverted mask."}],[{"text":"Midtones","b":true},{"text":": the full mask minus both the lights and the darks, giving a band that peaks in the middle and falls away at both ends."}]]},{"t":"p","runs":[{"text":"In practice: load the luminosity selection, then hold "},{"text":"Ctrl/Cmd + Alt/Option + Shift","b":true},{"text":" and click the RGB thumbnail again. That modifier combination intersects the new selection with the existing one. Repeat for a narrower band. Save each one into an alpha channel as you go, because you will want them again in the same document."}]},{"t":"p","runs":[{"text":"Calculations","b":true},{"text":" ("},{"text":"Image > Calculations","i":true},{"text":") does the same thing in one dialogue: two sources, Multiply, result to a new channel. It is faster once you know what you are asking for."}]},{"t":"h2","id":"what-this-is-actually-for","runs":[{"text":"What this is actually for"}]},{"t":"p","runs":[{"text":"Recovering a sky.","b":true},{"text":" A Darks mask on a Curves layer lets you lift the shadows in a landscape without the sky going grey: the adjustment does not reach the bright pixels, and there is no boundary between treated and untreated regions."}]},{"t":"p","runs":[{"text":"Contrast that does not clip.","b":true},{"text":" An S-curve applied through a Midtones mask steepens the middle and leaves the ends alone, which is the thing the tone lesson said contrast normally borrows from."}]},{"t":"p","runs":[{"text":"Colour in one tonal band.","b":true},{"text":" A warm colour layer masked to Lights and a cool one masked to Darks is split toning, done properly, with control over exactly how far each reaches."}]},{"t":"p","runs":[{"text":"Dodging and burning that respects the subject.","b":true},{"text":" Burning through a Lights mask darkens only what is already bright, so a highlight is brought down without muddying the shadow beside it."}]},{"t":"p","runs":[{"text":"Sharpening the right part.","b":true},{"text":" A High Pass layer masked to Midtones sharpens texture without exaggerating noise in the shadows or halos in the highlights."}]},{"t":"h2","id":"the-free-routes","runs":[{"text":"The free routes"}]},{"t":"p","runs":[{"text":"GIMP","b":true},{"text":" builds these natively. Add a layer mask with the "},{"text":"Grayscale copy of layer","i":true},{"text":" option and you have Lights 1 immediately. For narrower bands, duplicate the mask into a channel and use "},{"text":"Colours > Curves","i":true},{"text":" on it, or use the layer mode arithmetic. GIMP’s channel arithmetic through "},{"text":"Filters > Generic > ...","i":true},{"text":" and the GEGL operations covers the rest."}]},{"t":"p","runs":[{"text":"Photopea","b":true},{"text":" has the Channels panel with Ctrl-click loading and the same intersect modifiers, so the whole technique transfers directly."}]},{"t":"p","runs":[{"text":"Krita","b":true},{"text":" has "},{"text":"Filter Masks","i":true},{"text":" and can copy a layer into a mask, which achieves the same thing with a different route."}]},{"t":"p","runs":[{"text":"Paid panels exist that automate all of this: they generate sixteen masks and give you buttons. They save clicks and teach you nothing. Build them by hand five times and you will know which one you need before you make it, which is faster than scrolling a panel of sixteen."}]},{"t":"h2","id":"where-they-fall-down","runs":[{"text":"Where they fall down"}]},{"t":"p","runs":[{"text":"They ignore what the picture contains.","b":true},{"text":" A luminosity mask selects a white shirt and a white cloud identically, because it only knows brightness. If you want the sky and not the shirt, you need to combine the luminosity mask with a region mask: load the luminosity selection, then paint black over the shirt on the resulting mask. Most real uses are this combination rather than the luminosity mask alone."}]},{"t":"p","runs":[{"text":"They are tone-dependent, so they move when the tone moves.","b":true},{"text":" Build a Lights mask, then change the exposure underneath it, and the mask no longer corresponds to the highlights. Masks are snapshots. Rebuild them after any large tonal change, or apply tonal changes above them."}]},{"t":"p","runs":[{"text":"Noise gets selected too.","b":true},{"text":" In shadows, the luminance variation that is noise becomes variation in the mask, and an adjustment applied through it can amplify the noise pattern. Blurring the mask by one or two pixels fixes this at negligible cost to the effect."}]},{"t":"p","runs":[{"text":"Banding, in 8-bit.","b":true},{"text":" A continuously varying mask in an 8-bit file has 256 steps like everything else, and a strong adjustment applied through it can show them as terracing in a smooth sky. This is the clearest everyday reason to work in 16-bit."}]}],"check":{"question":[{"text":"A landscape photographer uses a Lights mask to bring down a bright sky, and it works well. In the same frame, a white building in the foreground also darkens, which they did not want. What is the correct reading?"}],"options":[{"text":[{"text":"The mask needs narrowing to Lights 3, which would exclude the building while keeping the sky."}],"correct":false,"tempting":[{"text":"Assumes the sky is brighter than the building when both are near-white: narrowing the band affects them together, since the mask ranks by value alone."}]},{"text":[{"text":"A luminosity mask ranks pixels only by brightness, so it cannot distinguish two bright objects, and the fix is to paint the building out of the resulting mask."}],"correct":true,"tempting":null},{"text":[{"text":"The mask was built from the RGB composite rather than the blue channel, which would have separated sky from building."}],"correct":false,"tempting":[{"text":"Offers a channel trick that does separate blue sky from a neutral building, but describes a different technique rather than explaining why the luminosity mask behaved as it did."}]},{"text":[{"text":"The adjustment layer is above the building in the stack, so it is reaching content it should not; moving it lower would exclude the foreground."}],"correct":false,"tempting":[{"text":"Misapplies stack order to a single-layer photograph, where there is no separate building layer for an adjustment to sit above or below."}]}],"order":[2,1,0,3],"why":null},"prev":{"slug":"select-by-colour-properly","title":"Tolerance is a wall, fuzziness is a slope","minutes":8},"next":{"slug":"segmentation-models-and-one-click-cutouts","title":"What the one-click button is actually doing","minutes":9}}}