1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
Subject: L* channel duplicated across a* and b* for finer color control, &c.
Date: 9/2/08 2:32 AM
From: Jacob Rus
To: "Applied Color Theory" <colortheory@yahoogroups.com>

Hi List,

This has possibly been discussed before (I haven't run any
exhaustive searches of the list archives, and haven't more than
skimmed Dan's book in the bookstore, so let me know if I'm saying
something well known) but I haven't ever seen it mentioned in
other books or in the various color-correction internet material
I've seen, so here goes.

For problematic images--i.e. those with differing color casts in
highlights, midtones, and shadows, or possibly casts appearing in
only particular hues--or for artistic effect, the blend if
sliders (or alternately various sorts of masks) are useful for
limiting the range of various curves corrections, etc.  But I
have stopped going to them first for complex corrections in these
cases, in favor of the following, which is sort of my way of
hacking Photoshop into a color correction GUI I find more
intuitive than using the Curves tool "straight":

  * Convert the image to CIELAB (obviously)

  * Copy the L* channel (I

  * Create a new layer, and paste the L* channel into all three
    channels (L*, a*, and b*).

  * Set the blend mode of this new layer to "Linear Light,"[†]
    and bear with me here, because at this point the image will
    look like a posterized splotch.  I usually name this layer
    something like "L*-based corrections".

  * Add a new curves adjustment layer, and set it as a clipping
    mask.

  * Make all three curves--L*, a*, and b*--completely flat, i.e.
    Input 0 -> Output 50, In 100 -> Out 50 in the L* channel,
    and In -128 -> Out 0, In 127 -> Out 0 in a* and b*.  At this
    point you should have an image that looks exactly like the
    original, because Linear Light blend mode makes no change to
    the bottom layer where the blend layer is middle gray.

  * Now here's the fun part: make some points along those curves
    and slide them up and down.  You can thus adjust (linearly
    shift) L*, a*, and b* values for various background levels of
    L*, with much finer control than using the blend if sliders,
    or any other tool I know.

      - Want more shadow contrast? Leave the point at i0->o0, and
        add another couple at, e.g., i6->o53 and i25->o54.
      - Shadows a bit too green? Make an upward bump in the left
        end of the a* curve.
      - Sky not blue enough?  Make a downward bump in the right
        end of the b* curve.

    &c.

That's it.  If you want to make corrections based on the a* or b*
values, instead of based on L*, the procedure is identical, except
copy the a* channel (or whatever) into each one of the new layer's
channels.

The main down-side to this approach for me is that Photoshop's
Curves controls here have a very big range, and the corrections
to be made with this tool tend to be *very* close to that center
line: I sometimes wish I could zoom the curve's vertical axis to
only show its middle third (or in the case of adjusting based on
underlying a* and b*, zoom both axis like that).

Anyway, I realize this email was a bit long, but hopefully others
find this tool as useful as I have.  It becomes especially nice
after setting up an action to create these layers, but making
them manually isn't *too* arduous.

Cheers,
Jacob Rus

[†]: A few other blending modes also work, but have nearly the
    same possibilities here, and linear light is easier to use
    in my experience.  But feel free to experiment :-)

P.S. This is my first posting to this list, so I should probably introduce myself.  I'm a Harvard undergraduate government
concentrator--formerly in the math department, but I got tired
of problem sets, took a year and a half off to work on various programming stuff, and am now back for the last year.5 of school.
I have been a huge Photoshop fan for about half my life now, and
I try to get out to take pictures as often as I can with my D50
(never often enough).  I continually tell myself I need to put
some up online, but I somehow manage to never get around to
registering a domain and coding up the simple site I want.
Sometime soon though, I promise!

P.P.S. Can anyone recommend the best introductory/intermediate
book  about image processing?  I just this week started trying
to learn how to use NumPy (array math for Python) so I can try
to build some of my own types of tools, mostly for own
edification, but also because I sometimes find Photoshop's color
correction tools limiting in ways that seem easy enough to
improve on, but I want to "put my code where my mouth is" so to
speak. :-) 


* * * * *


Subject: L* channel duplicated across a* and b* for finer color control, &c.
Date: 9/2/08 4:18 AM
From: Jacob Rus
To: "Applied Color Theory" <colortheory@yahoogroups.com>

Okay, a few follow-ups (which are left here because I forgot to
mention a couple of them, a couple are more detailed than needed
for the initial message and would possibly impede comprehension,
and I just figured one out right now).

 1. This approach (copying one channel into all of the channels,
    setting blend mode to Linear Light, and then adjusting a
    flat curve) can also be used in RGB and CMYK to good effect.
    In those color modes, I basically use it as a more powerful
    channel mixer + blend if combined.  If you've been
    unsatisfied with the power available in channel mixer, I
    recommend you play with this, for example for adding back
    detail to very colorful objects.

 2. This is a way to mix L*/C/M/Y/K channels into RGB images,
    and vice-versa.  Just duplicate the image, convert to the
    new space, copy the desired channel, paste it back into all
    channels of a new layer set to Linear Light, add the
    clipping  adjustment layer, and adjust to heart's content.

 3. For something even potentially cooler, try:

      - Duplicate the image
      - Convert the duplicate to CIELAB
      - Use the Hue/Saturation tool to rotate the hue 30°[†]
      - Convert the image back to RGB or CMYK
      - Copy one of the resulting channels
      - Go back to original image
      - Paste into all three channels of a Linear Light layer
      - &c.

    This lets you mix channels which are half-way between RGB
    and CMY (roughly: modulo the differing luminosity
    contributions of different wavelengths), which means you
    can alter colors along sometimes more convenient axes than
    RGBCMY.

 4. Various channel mixing uses of this technique can be very
    effective for converting a color image to grayscale.
    Indeed, the combination of this technique, the
    Shadow/Highlight tool, and various sharpening/blurring
    of various channels on large/small scale, is enough to
    handle pretty much all my B&W conversion needs. :)

 5. Once you have a B&W image, the technique can also be an
    effective tool for tinting it with extreme control.  Just
    (in CIELAB mode) set up a layer with L* copied to all
    three channels (no need to set this to Linear Light this
    time), and then create a curves adjustment layer, with
    the L* curve left as a normal ramp from i0->o0 to
    i100->o100, and then set the initial curves of the a* and
    b* channels to be flat 0 all the way across.  Then move
    a* and b* curves up and down to tint various L* levels
    of the image different tints, without affecting the L*
    component of the resulting colors.

 6. I said before:

      > The main down-side to this approach for me is that
      > Photoshop's Curves controls here have a very big range,
      > and the corrections to be made with this tool tend to
      > be *very* close to that center line: I sometimes wish
      > I could zoom the curve's vertical axis to only show its
      > middle third (or in the case of adjusting based on
      > underlying a* and b*, zoom both axis like that).

    I just figured out how this can be solved.  Woohoo!  We can
    make a Levels adjustment layer between the 3-alike-channels
    layer, and the nearly-flat-curves-meat-of-the-technique
    layer, and use it to "zoom" the horizontal axis, by bringing
    in the input left/right sliders by the desired factor (if
    we're trying to edit based on a* and b* values, they are
    often very low, so we can bring compress the levels here to
    1/5 or even 1/10 of their original extent.  This lets us use
    more of the curve in our main curves layer.

    Likewise, to "zoom" on the vertical axis, we can add a Levels
    adjustment layer *above* our main curves layer (note all of
    these layers should be set as clipping masks), and bring its
    *output* sliders (on both ends of every channel) in to 1/5 or
    whatever their original extent, which will effectively dampen
    whatever adjustments we make in our main curves layer, which
    means we can see the adjustments we're making better, because
    they won't all be so close to the axis.

    I'm excited about this.  It makes using this technique much
    faster because less precise mousing is needed.

Okay, enough for now.  I'll give others a chance to weigh in (e.g.
to tell me they think I'm completely nuts). :-)

Cheers,
Jacob Rus

[†]: You experts all probably already know this, but the
    Hue/Saturation tool is *way* more useful in CIELAB mode
    than in RGB mode. (It modifies the image in CIELAB LCh,
    rather than the brain-dead HSL)