--- In DigitalBlackandWhiteThePrint@yahoogroups.com, Steve Kale <stevekale@b...> wrote: > > For what it's worth, here are the areas I would like to understand a bit > more on this stuff. Some of these things hark back to core subjects like to > what should we linearise etc. I feel like I am quite close to getting to a > level of understanding I would be happy with but I haven't closed the last > few loops. Any help appreciated. > > 1. I'd like to understand better the relationship between L* and XYZ_Y. I > have trouble thinking in cubed roots! I thought for a minute that XYZ_Y > followed the shape of the human perceived luminance curve but a couple of > sample observations show that's not the case. I'm sure that with a little > thought I'll get there. > > 2. I'd like to better understand the actual implementation of the BPC and > white point scaling, ie understand specifically rather than generically how > it is implemented. We start with, at least with a RIP, printer greyscale > that is linear with respect to L* - how does the scaling actually affect the > shape of this? Both in terms of L* and XYZ_Y. I hope I can take this up with > Roy. > > 3. I'd like to understand why linearisation is best done with respect to L* > and not XYZ_Y which is where the scaling is done. This obviously requires > the first item to be understood. I would guess it has something to do with > the linearity of L* as a concept and ease of interpolation but then on that > I am just guessing. > Linearization and scaling are pretty different issues. I think there are good reasons for thinking in different units for each. An example may help to see the issues. ---------------- Scaling with respect to Y (and X and Z too) is probably one of the most basic operations. If you consider how we see the scaling wrt Y happens all the time. Y is a measure of how much light or how many photons are reflected from a surface. Y=1 means every photon is reflected, Y=0 means no photons are reflected and Y=0.5 half the photons are reflected. Imagine a piece of white paper (idealized Y=1) with a gray patch (Y=0.5). That's a one-stop density -- half the light is absorbed. You look at the paper under a light, your eye is recording the photons being reflected from the two areas of the paper. We perceive half the photons from the patch and call it gray. Now move the paper closer to the light. More photons hit the paper and more are reflected. In fact if 20% more hit the paper, 20% more are reflected from all the areas. But the relationship of the white to the gray is still the same -- half the protons hitting the gray are absorbed. What's really happening here? Our eyes are seeing more photons but are automatically scaling everything wrt to the illumination or the brightest white. Put on some sunglasses, this reduces the number of photons again by some percentage. Have the iris of the eye or the aperture of a lens vary. Again we are linearly scaling the absolute number of photons but the relative relationships are remain the same. Linear scaling of photons is exactly the same math as linear scaling of Y. A piece of paper with Y=0.8 and Y=0.4 with more illumination will reflect exactly the same number of photons as the paper with Y=1 and Y=0.5. Of course you'd need to make sure the eyes and brain had no other points of reference about the more illumination. This is all more of a plausibility argument than proof but I think it shows a way to think about this that is easier to grasp. ------------------ Linearization on the other hand is a more arbitrary issue and more of a implementation detail. With just 256 possible gray values in a 8 bit file it makes sense to be careful to use them is the most efficient way. Since we specifically care about "seeing" images making the 256 values separated according to human perception makes sense. The L* function was designed for linear perception. Exponential functions such as gamma do a pretty good job too and historically have been used a lot since they are mathematically simpler, but with computers that's a non-issue. There's also one other side effect of using L* that is a potential benefit. When we measure a stepwedge and get series of Lab values, what about the values between patches? Say we have measurements for 50 and 55, what would 51,52,53,54 be? Linear interpolation is the easiest and most straigthtforward method and is also the best method if L* linearization is used. ------------------- Black Point Compensation (BPC) is a bit more vague in my mind. It is not a feature of ICC profiles per se -- not mentioned at all. The only document is the Adobe bpc paper. It clearly uses the Y = DECODE(L) function for scaling but it is a little vague on the details. I've used this to mimic (sort of) the approach taken at the white end but this doesn't jive with the Y scaling arguments above. This falls into the perceptual rendering of ICC which is specially stated as implementation dependent. But the good news seems to be that we're all doing it the same way. Roy
Message
Re: ICC v. Transfer Function in Epson driver
2005-10-20 by Roy Harrington
Attachments
- No local attachments were found for this message.