That's not been my experience when using RelCol+BP compensation, and doesn't match the description in the PDF you cited earlier very well. If you look "Step 3: Attempt To Set DestinationBlackPoint" in the PDF, you'll see that the destination profile is examined to see how even the tone curve is, and if the test is passed, NearlyStraightMidRange is set to true, and the tone curve present in the original image is not materially altered during profile conversion, it is simply scaled between the destination white and black points.
[a href=\"index.php?act=findpost&pid=99463\"][{POST_SNAPBACK}][/a]
The
NearlyStraightMidRange boolean set to true does not mean that the tone curve is even or without lumps but that the L* source and destination values in the midrange of the curve (as one iterates through l values from 0 to 100 in steps of 1) are approximately equal. Using Gamutvision, I noted that a L* of 50 in the source mapped to L* of 50 in the destination, satisfying this condition. Step 3 is used only to set the destination black point. After the black point is set, the higher tone values are determined by the black point scaling included in the lookup tables of the profile. This is clarified by examination of the Gamutvision plots with black point compensation off and then on.
With BPC off, the D-Max of 1.79 is reached at log (pixel level/255) of about -0.8 or a pixel level of 40 in gamma 2.2 space. Equal changes in the log pixel value cause equal and proportional changes in output density. Below this level, clipping occurs.
[attachment=1775:attachment]
With BPC turned on, the D-max of 1.78 is reached at input log pixel value of -1.3 or a 2.2 gamma pixel value of 13. A density of 1.8 corresponds to L* of 13.15. The
DestinationBlackPoint is therefore L* 13, which coincidently is also the 2.2 gamma pixel value. Input L* of 0 is mapped to output L* of 13.15. On checking in Gamutvision, the lowest L* I found in the OP's image was L*= 0.99 with output L* of 13.90, which correlates well with the graphically derived value. Equal changes in log pixel value of the source image yield smaller changes in output density as the pixel values go towards black. This is not the even spacing you predicted, but rather represents compression of the shadows.
[attachment=1776:attachment]
The same thing is observed in the Gamutvision 3D plot. Source L* of 1 are raised to L* of 13 in the output, and higher values of L* are compressed to a lesser degree, but not proportionally as you claim.
[attachment=1777:attachment]
For those who do not wish to perform the calculations for Log(Pixel level/255) to pixel value, this table does the work and also gives the L* values as calculated by Bruce Lindbloom's companding calculator:
[attachment=1779:attachment]
This table displays output density with the corresponding Percent Reflection, L*, and 2.2 gamma pixel values:
[attachment=1780:attachment]
This is generally what happens when you have a good quality profile on a reasonably well-linearized printer. It is the case with all of the custom profiles I've made for my Epson 7600, Epson R1800, and Canon S9000 printers with My Eye-One Pro spectrophotometer & Eye-One Match. The tonal relationships are evenly scaled to the printer's available DR...
[a href=\"index.php?act=findpost&pid=99463\"][{POST_SNAPBACK}][/a]
False, as shown above. The shadows are compressed.
If the profile has a lot of lumps in its TRC, then NearlyStraightMidRange is set to false, and then (and only then) the uneven tonal tweaking you're talking about comes in to play, as illustrated in figures 5 and 6. If you need to custom-adjust the tone curve of your image for a specific output device, that's a pretty good clue that the profile is poor quality, or the printer it was made for is poorly linearized. Which goes back to my original point that doing such tweaks is generally a kludge to compensate for a bad profile. If the profile is good quality and made from a well-linearized printer, the only shadow tweaking necessary is to deal with limited shadow gamut.
[a href=\"index.php?act=findpost&pid=99463\"][{POST_SNAPBACK}][/a]
False as explained above. Figures 5 and 6 are for determining the destination black point when
NearlyStraightMidRange is false. After the destination black point is calculated, the same mapping is used as when the flag is true.
Bill