Hi Marti!
Marti Maria schrieb:
Right.Ok, so then let's assume a RGB profile has the white point located at, say (200, 200, 200). In such case, the fixup would add an extra white-to-white at (255, 255, 255) but the previous (200, 200, 200) would remain untouched, so still mapping to white.Then comes the question... what about the zone between (200, 200, 200) and (255, 255, 255)?
For the projector example I had given, with the WP at RGB=[200,200,200], my intention was basically that the zone 200..255 would map to "highlight" PCS values _beyond_ media white, assume for instance that RGB=[255,255,255] would map to D50 chromaticity with luminance Y=180% in the PCS.
I do not believe that such a profile violates the ICC spec. Actually I feel encouraged to establish a projector profile in this way, when I take into account that that a XYZ PCS actually _can_ encode highlights up to nearly 200% of the WP luminance and when I read in chapter D.2.7.5 of the V4.1 spec:
"[...] On the other hand, slides or movies projected in a darkened room do not suffer from the same limitation. In the absence of dominant external references, the observer's state of adaptation is controlled by the bright image on the screen. Thus, these media are designed to reproduce diffuse white at a lower luminance than the maximum attainable, which leaves some headroom for the reproduction of specular highlights and other very bright tones. To the adapted observer, these tones actually have the appearance of being brighter than 100% diffuse white; they sparkle and shine with a more realistic intensity than is possible for a print viewed under normal conditions. Thus, their representation in the PCS would require an apparent luminance greater than that of the white reference (Y > 1, or L* > 100). [...]"Any objections? After reading the ICC spec carefully, I could not find a definite statement which would prohibit such a profile. Do I still have missed something in the spec?
IMO the ICC spec also does not explicitly require a strictly non-monotonic device -> PCS mapping at all, it seems to treat devices as rather abstract objects, whose characteristics are described by a more or less arbitrary device space -> PCS mapping. I've the impression that the ICC spec carefully attempts to avoid mostly to make assumptions on the meaning of particular device values.A well behaved profile would have all that zone mapped to white. Else, since the (200, 200, 200) is mapped to white, we end with a non-monotonic profile, that is, increasing device contone value would results in decreasing L* Ouch!
Of course I do agree, that for devices which are physically based on an additive model (with physically realizable primaries), negative values in the Jacobian matrix dXYZ/dRGB would be actually weird, and in my projector example, the RGB vs. PCS Y relation _is_ indeed assumed to be monotonic, it just extends beyond the WP luminance.
However for e.g. CMYK devices, IMO a monotonic mapping isn't granted in general. For instance on my color laser printer, adding some yellow ink (toner) to white results in a darker color than white, but the opposite is true near black, i.e. adding yellow to 100% K makes the "black" a couple of L* units lighter, the same applies to M, only adding C to 100% K seems to yield an even darker black than 100% K.
Assume a transform from sRGB to the above sample projector RGB space:[...] My point is, forcing this mapping is not destructive in any situation
Since sRGB cannot encode highlights (because the sRGB WP is at [255,255,255]) I would expect that sRGB=[255,255,255] should map to "diffuse white" (PCS Y=100) at projector RGB=[200,200,200] and highlights which could be reproduced in the projector color space are not used in this transform. However, with the fixup, sRGB=[255,255,255] would map to "specular white" at projector RGB=[255,255,255] or Y=180, while sRGB<255 maps to projector RGB<200 or Y<100, resulting in a large (Y=100 -> Y=180) undesired "step" at white (which is somewhat smoothed by the LUT interpolation).
That's the reason why I would like to have an opportunity to turn the fixup off for such special profiles (which, you said, is possible anyway, expect for icclink, and expecept if I want to use a precalculated transform for speedup).
I have the impression that you tend a little bit to call unusual profiles a priori "broken", while I rather tend to make the liberal assumption, that nearly any arbitrary behaviour of a profile is allowed, unless it is explicitly prohibited or explicitly defined differently by the ICC spec. (This does not imply, that I would not agree that most usual profiles do fulfil some additional properties which e.g. make optimizations like this "device white fixup" possible).but the weirdest, non-monotonic, already faulty profiles. Please note that on "correct" profiles it has no effect at all.
Actually I think the key to the whole discussion is to find an agreement whether (and why) the given sample projector profile violates the ICC spec, or not. Is it really "broken" or just unusual, but still ICC spec compliant?
After evaluating the results of the fixup in couple of situations, I'm also no longer convinced either, but probably for a different reason than you. In order to keep the colorimetric error low for special profiles, where the WP intentionally deviates from CMYK=[0,0,0,0] or RGB=[255,255,255] (and thus the fixup would be undesired) a small threshold (e.g. 1dE) would be required. On the other hand, it looks like the fixup gives also perceptually pleasing results even for larger deviations (e.g. 5 dE) :-), which would justify a larger threshold, if the intention is only a pleasing reproduction. Thus we would still had the conflict that the size of the threshold would need to be chosen according to the intended use, so that I finally also think that the decision whether or not to apply the fixup should be better made manually by the user.Also, I'm a bit concerned about adding extra code to check whatever the profile is broken.
Regards,
Gerhard
