How to set proper endpoints

Picture Postcard Workflow: How to set proper endpoints


The Modern Color Workflow book by Dan Margulis contains two recapitulations of the PPW workflow.

One, listed on page 338, at the beginning of chapter 13, is just a very concise overview: a bulleted list where each step is identified by a few words only, completed with a corresponding chapter number.

The other has the form of an appendix called "Workflow Summary". Every step in this summary is explained in about half a page.

Surprisingly, the lists are different. The bulleted list contains 16 steps, the summary only 12. I don't intend to investigate the differences, but I pick one of them for this article.


Step 2 in the list is called "Identify Highlight", explained in chapter 3-4, but is not a separate step in the summary. Instead, it is part of the first step "Correct Initial Color Problems", covered by one paragraph only. As an introduction I repeat it here:

"Use a threshold adjustment layer, if needed, to identify the lightest and darkest significant areas - as opposed to the areas that are literally lightest and darkest. Place a color sampler in each for later use."

The "later use" is another step in the short list: step 12, called "Finalize Contrast, including endpoints". Strangely, the step is listed under the heading "Color again".

In the summary, one and a half paragraph, separate from each other and mixed with another instruction, are spent on this step. Again, let me quote:

"...the Endpoint Adjustment layer is there in case you want to make some adjustment to the L channel, such as establishing a highlight or altering overall weight."

"Using the top (Endpoint Adjustment) layer is optional. Make sure, though, that you have proper highlight and shadow values - having gone to all this trouble to add drama, why settle for flatness? Also, make a final decision as to whether you like the overall weight of the image and if not, correct it."

All in all, I find the instructions somewhat vague. The book itself is not much different.

How and where in the PPW workflow do we make sure that proper highlight and shadow are set? Margulis emphasizes the importance of this (and who wouldn't agree?) but I don't find a clear description how to do it.

The purpose of proper endpoints

First, let me explain what this "lightest and darkest point" setting is all about.

One of the goals, in traditional workflows as well as the PPW, is to maximize contrast. Any deviation from the maximum causes the picture to look flatter than could be. This goal implies that at least one pixel must be white, and at least one must be black, or full range is missed. (For now, I ignore the addition "significant" which Margulis adds to this requirement. It's not relevant yet.)

"White" may mean RGB values of 255 each, but usually they are targetet a little lower, say 250 each, to cope for limited contrast range in print. Similarly, the optimal black point would measure something like 5,5,5.


At the same time, one has to take care that no image areas become "blown out" or "plugged" which is short for saying that white and black must be there but not in too many places or important detail is lost. 

My first experiments with the PPW were a failure in this respect. I often ended with a non-white highlight, non-black darkest point, or blown out areas in at least one of the channels.

In the current article, I explain the pitfall, and then fill the gap and propose a more disciplined way of working.  

The pitfall

So let me explain what may go wrong.

Step 1 of the workflow, Kill Incorrect Color, essentially asks to remove a color cast, if we can find it. The step is supposed to change color only (in fact, may I add, Hue only, as Saturation comes in only later). Contrast is definitely not our concern yet.

So we do that, set a few color samplers on image areas where we know valid color ranges (sky, grass, skin, or better, neutrals). If they don't fall within the range, we correct that by RGB curves on a separate layer. Then, we set the layer blend mode to Color and we're done.

In my experience, if you follow this instruction strictly, the "lightest significant point" in the image may turn out any color. Idem for the darkest significant point.

As an example, let's look at an image I took in Norway. See figure 1.

It was taken in RAW, and exported from Lightroom with just a few basic adjustments.

Figure 1. Original image

Figure 2. Identifying endpoints

A check for color correctness (Step 1 of the workflow) reveals that the leaves in the bottom part are too yellow, i.e. some Red has to be removed. I did that in a simple curve adjustment layer for which I set the blend mode to Color. This fixed the problem, and I didn't find any incorrect color after that.

So next, I am supposed to "identify" the lightest and darkest points.

The book (chapter 3) properly explains how to find the lightest and darkest points, and what the addition "significant" means. Following that instruction, I decided that detail in the stamina is not relevant and the lightest significant point is somewhere on one of the petals. I put color sampler #1 there, and note that it measures 254,222,250. A very light pink, not surprising for a pink flower.

Similarly, the black point is easily found, not far away from the lightest one, and it's 49,13,56, let's say dark purple: sampler #2. See figure 2.

In his book, Margulis tells us that we don't have to act yet on that information. Why do we set these samples in this phase then? Because "we're already checking various points for color fidelity and placing samplers in the Info palette" (book, page 49).

Now let's focus on the two sampled points and see what happens with them in the following steps.

First, we are supposed to enhance contrast. In most situations, that means increase contrast by blending and curving. I did that, trying to optimally divide weight over the three channels. The resulting RGB values of the lightest point became 249,250,249 and of the darkest point 10,10,10. Not bad at all.

However, color has weakened considerably (as expected!) and to recover that, the workflow prescribes to set layer blend mode to Luminosity. That means that Photoshop is trying to keep the color of the underlying layers while preserving the contrast of the highest layer. The result is a lightest point 255,247,254 and a darkest point 23,2,27.

I skip a few steps (no hammers, no H/K) and apply MMM and CB which are supposed to boost color. Although many variations are possible, I expect not much change in the lightest and darkest points. In my case, they became 255,248,252 and 19,0,25. Obviously not optimal, although the image looks pretty good. See figure 3.

Figure 3. Final version without proper endpoints

The better way

How can we fix the procedure so we end with a proper range?

The book as well as the workflow summary suggest to use a layer called Endpoint Adjustment, a curves adjustment layer that is automatically added with the Color Boost action in the panel.

Using this layer for correcting lightness range is fine, but the lightness range is already fine. The lightest point has L value 98, darkest 2. Nothing wrong with that. But, they are colored. The darkest gives AB values 9,-10 and the lightest 4,-1. Can we correct that with a simple curve? I don't think so, and if we could, I don't think this is what we are supposed to do.

Remember Margulis' statement in the summary:

"The Endpoint Adjustment layer is there in case you want to make some adjustment to the L channel."

If we touched the A or B channels here, we were changing hue globally, which is... the purpose of step 1, not of step 10 or so. We shouldn't correct hues after having boosted color.

After having experimented with a number of images, I arrived at a simple solution to the above problem.

Let me rephrase steps 1 and 2 as follows:

  1. Correct initial color problems
  2. Identify highlight and shadow, and make sure they are neutral

The last part "and make sure they are neutral" is crucial. Start step 3 with neutral endpoints, and they will remain neutral through the process.

  • The contrast steps won't break neutrality because they go on a Luminosity layer.
  • The shadows/highlights and hammers impact contrast, not color.
  • The MMM doesn't harm because neutrals are protected in the mask.
  • The Color Boost idem because of the curve layout (passing through the midpoint).

So, we end the process with a neutral highlight and shadow. The image highlight may have L value 100, 98, 95, 90 or any other high value. The black point may be 0, 5, 10 or whatever. But both will be neutral or almost neutral. We can now correct range using the L channel only, i.e. without touching color, and end our process with full range in each of the color channels.

I think this is a valuable refinement of the workflow. So I reprocessed the flower picture while taking the extra instruction into account. The result is a slightly snappier image (better contrast!). Also, the color of the flower turns out different, more towards magenta, less pink. The background doesn't seem to change much color-wise.

See figure 4 for the two final results. Note slightly better contrast in the right version.

Figure 4. Final versions without (left, same as fig. 3) and with proper endpoints

Final remarks

  1. One may argue that Dan Margulis' book does contain an instruction to make the highlight neutral: in the discussion of the ice hockey scene, pages 49-52. However, in this photograph the lightest point is a sports shirt which is clearly white. In the nature photograph, the lightest petals were definitely not.
    I may have misunderstood what is written on those pages. But I prefer to have a clear explicit instruction, and not one that we have to derive from the processing of one photograph.

  2. I assumed that no step after the Color Correction would touch neutrals. Surprisingly, this is not completely true. The H-K Color step may, contrary to what it's supposed to do, change the hue of a neutral, especially the dark point. I am not sure why, maybe I will further investigate this in a future article. An obvious workaround for this problem is to change blend mode to Saturation for the H-K Color layer, but this doesn't seem to help much.

  3. Obviously, after having finished the Color Boost steps, range can be finalized in RGB, just like we would do it in step 1. But with such strong colors, it is not advisable. Plus, the MMM step protects neutrals. Running MMM with hues that need corrections later, no matter how little, interferes with this schema.

Gerald Bakker, 13 Feb. 2015

Picture Postcard Workflow