Combine painted masks with control points

Control points are great–I use them a lot. Essentially, a control point is used to create a mask. The mask extends from the control point to the edge of the bounding circle, with some sort of fixed drop-off. The mask is further refined by the similarity of a pixel to the control point (perhaps, the distance measured in some HLS space?). Again, the “similarity” formula is fixed–we have no control over it.

Here’s my idea: let’s extend the functionality of the painted mask. Today’s painted mask allows a mask to be painted with a brush whose size, feathering, opacity and flow can be controlled. All this does is select to what degree an adjustment is applied to the pixels in an image.

Let’s add the ability to further limit the effect by controlling the lightness values that are affected; for example, pixels with luminosity from 45% to 55% would be fully affected, with some user-defined fall-off.

For more power, this could be combined with hue closeness; e.g. only pixels with hues fro 0 to 60 (on a 360 degree wheel) would be fully affected, again with a user-defined taper. Least important, in my opinion, would be selecting pixels by saturation, although that would be the most generic solution. If control points already include an HLS-distance calculation, then perhaps that code could be re-used, but with some user control over the ranges.

The painted mask and the HLS-range mask would be combined (as happens with current control points) to create the final mask. Existing masks would be a special case in which all HLS-distances are 100% included.

Sample uses: Increase contrast or micro-contrast only in the midtones. Shift the white balance of the highlights. Blur the green areas. Darken the blues. Saturate only unsaturated pixels. Etc. And do all this only in selected areas (e.g. only affect the sky).

I think Capture One allows you to create masks from luminance ranges, which I think you can then modify, but as I don’t have C1 right now, don’t quote me. What I’m proposing could be more powerful.

Sadly, the user-interface for selecting the affected ranges would probably be the sticking point, particularly the hue selection UI (which needs to be a circle). The UI could be simplified by allowing less control of the range.

The simplest solution would be to create a control point for the painted area and use the current pixel-similarity formula, but you lose a lot of flexibility. On the other hand, if it makes it more likely that the feature gets implemented, I’d go for it. A control point solution could, later on, be enhanced to allow for greater control while easily maintaining backwards compatibility, so this could be an intermediate step.

As there is already code for a painted mask as well as code for control points, this powerful feature might be added without a major programming investment. PL3 invested in creating “subtractive” control point areas. A control-point painted area might have solved the same problem in a better way and added more functionality without being any harder to implement.