ODT Tonescale

Tags: #<Tag:0x00007f96488c2ae0> #<Tag:0x00007f96488c28d8>

(Rémi Achard) #1

Hello everyone,

I have a small technical question regarding the tone scaling done in ODT transformations (segmented_spline_c9_fwd functions).

I see that it uses two B-Splines to map luminance, lower / higher than neutral gray from RRT, plus linear segments at both extremity. How were the B-Splines coefficients chosen ? Are these arbitrary values ?



(Scott Dyer) #2

The RRT and ODT splines and thus the ACES system tone scale (RRT+ODT) were derived through visual testing on a large test set of images. During development, the splines allowed flexibility in tweaking the tonescale based on feedback from expert viewers. So no, the values are not arbitrary.

A segmented, multi-knot spline greatly simplified modification of the tone scale and allowed for rapid prototyping of tonescale variations. Contrasts throughout any portion of the curve could be very finely tuned based on feedback from the expert viewers.

As you mention, the break-point at the middle of the two splines is defined at the mid-gray map point and allowed for flexibility mapping a specific slope (contrast) through a particular mid-point luminance (in our case, 4.8 nits for the 48-nit system tonescale). The highest and lowest knots represented the maximum and minimum luminances, respectively.

The B-spline was segmented and made into a “joined pair” so that the curves above and below mid-gray were linked, but still independent. Thus, adjustment of the parameters for the lowest or highest knots would not affect the other portion of the curve. For example, if the shadow contrast had been finely tuned, it was not desirable that those coefficients would then need to be re-tuned if it was decided to try moving the (x,y) position of the highest knot. Had the spline not been segmented, changing the domain or range of the knots would have redistributed all of the knots and forced retuning the coefficients below mid-gray.

During development, it was always intended that a functional tonescale would be fit to the final resulting curve. However, it turned out that in order to get a close enough fit, the resulting equation was almost more complicated than just keeping the B-spline math as is. Furthermore, it is anticipated that the provided B-spline architecture will be useful in the future for crafting ODTs to additional/custom dynamic ranges.

(Rémi Achard) #3

Hello Scott,

Thanks a lot for your very detailed answer !
It make perfect sense and I see the benefits in terms of added flexibility and fast prototyping.

One last thing I don’t really understand is why there is two linear segment at both extremity, should’n’t the values be clipped outside the tonescale range ?


(Thomas Mansencal) #4

@sdyer: Hi

As I was talking about this with Alex (and you) privately a few weeks ago, I think that those experiment informations should be officially documented right next to the code along the surround adjustment factor and all the constants that “might appear magic” if one is not aware of their derivation.