Luminosity mask tutorial has incorrect midtone method (wrong for 11+ years)

The tutorial on luminosity masks was very helpful, but when it talked about midtones it was wrong. It states that midtones are the intersection of the light tones and the dark tones. These regions never intersect. The result of intersecting any light tone with a dark tone is an empty map, which means the map will include all tones.

The midtones are what are left when you subtract the dark tones and the light tones from the total luminosity map. Also, using the masks named in this tutorial as L and D together will result in and empty map since together L and D encompass all tones. You have to start with LL and DD.

I am surprised this has remained uncorrected for so long. Tutorial videos have been produced based on this tutorial or the one from which it was derived.

Hi. Feel free to propose a wording fix. There is a “Improve this tutorial” hyperlink right below the tutorial name :slightly_smiling_face:

The light and dark tones do intersect. The tutorial explains that the dark tone is the inverse of the lights. If we were in a boolean world, I would agree that it would mean that these would not intersect. But we are not in boolean. Alpha channels are also a continuous value, just like pixels.

I think that the intersection here would basically use the smaller intersected value (seems confirmed by a very quick test, though I haven’t actually checked the code). Since the values are inverse of each other, say the Light value of a pixel is 0.7, therefore the Dark value is 0.3. It means the intersected value (hence Mid-tone) will be 0.3.

In any case, I just tested our Luminosity Mask tutorial following the suggested steps and the mid-tone it gave me was not empty at all. It was completely looking like the image shown in the tutorial.

Note that following your comment, I also decided to double-check the very original tutorial (@patdavid was indeed saying in his pixls.us tutorial that his own tutorial was inspired by this other one). In this original tutorial, they indeed say:

The mid-tones are a little trickier to get at, but lead to some very useful masks. You have to first select the entire image (Ctrl+A) and then subtract off one light and one dark mask.

… which matches with what you say. Except when I try this in GIMP, this is where I get a completely empty mask. And actually that makes sense. Since the dark and light masks are inverse of each other, they make 1.0 together (e.g. in my example of a Light at 0.7, then Dark is 0.3). Which means subtracting them both from the full selection (all selection masks start at 1.0), you obtain 0.0 everywhere.

So now I am wondering what they are calling “subtraction” in Photoshop! It may not be the same as in GIMP (which uses the mathematical meaning of subtraction).

I am also wondering what their intersection does, because they say the various levels are made by intersecting a mask with itself. So for instance, they start by intersecting Lights with Lights. Except in GIMP, this wouldn’t work (intersecting the channel with itself results in the exact same channel; I even double-checked by testing in GIMP to be sure). So clearly what Photoshop calls “intersection” is not what GIMP calls “intersection”. And while here it may be less trivial than the meaning of “subtraction” since we are not in boolean logic where “intersection” is most usually used, it is quite common to have a logic where intersecting some object with itself returns the same object. So it’s quite weird and I am really left wondering what logic Photoshop names “intersection”. :person_shrugging:

In any case, so far I could not see the tutorial bug, you are referring to, @greg1martin. Did you really try and you ended up with an empty midtone mask by following the tutorial? Because I tried too, and didn’t.

If so, I’d be interested if you could tell us the exact steps you did. Maybe the explanations in the tutorial are simply not clear and you didn’t do the right steps. Or maybe I’m the one misunderstanding something, but so far I don’t see it. :sweat_smile: