Using ACES for SDR to HDR Conversion: Color shift to blue and banding artifacts are big challenges


Hi All,
With an C++ implementation of custom configurable ACES HDR RRT+ODT, I am attempting to do this conversion:
Input SDR 10 bit Rec. 709 HEVC compressed-> Inverse ACES HDR RRT+ODT YMAX=100 → ACES HDR RRT+ODT YMAX=400 nits Rec 2020 PQ using my customizable HDR ODT operation.

This has been working reasonably well requiring some post processing to reduce banding, noise and color grading. However, a color shift has been noted that is complicating the grading process.

The ACES pipeline seems to be adding a bluish-magenta kind of hue to the overall image, it also changes the reds to orange a tiny bit. How this will be affected depends a lot on the content, the content that had the most issues had a lot of scenes that are very warm-ish, when ACES added its blue tint, it turned a lot of these scenes to green.

Is there any science behind this? Is this because ACES does not attempt to keep R,G,B balance the same by using separate channel curves? Could it be Bezold–Brücke shift or luminance-on-hue effect. A bug? Sweeteners even with default settings on both forward and inverse ODTs which should cancel out?

Also probably the greatest challenges, this conversion results in lots of banding issues in the sky as can be expected. Reducing the target YMAX nits can reduce the problem as can post processing using debanding algorithms, but at a cost of unwanted softening. Then you have to use masks.

Are there any other ways to address these issues you can recommend?