Unless something comes up, I’m done with the color space conversion accuracy work. I’ll use this post to summarize what I’ve found over the last couple of weeks and link to the posts with the details.
The first conclusion is that, using 16-bit precision, for all colors within the gamut of both the source and destination color space (two restrictions that apply throughout this post), conversion among model-based RGB color spaces can be performed with accuracy much greater than the quantization errors involved in converting to 16-bit or 16-bit unsigned integer representation after the conversion. This is also true between RGB color spaces and CIElab and CIELuv.
The second finding is that the ACE color engine that ships with Photoshop and other Adobe image editing programs, while not as exact as doing the color conversion calculations in double precision floating point, is sufficiently accurate to make conversions among RGB color spaces and from those spaces to and from Lab color (CIELuv is not supported by Photoshop) safe for photographers wishing to take advantage of some quality of any of these color spaces.
The round trip from say Adobe RGB or ProPhoto RGB is occasionally attractive to gain advantage of moves that are difficult to impossible in RGB, but convenient in Lab. If you’ve been scared to do this because of vague fears about damaging your image, set those fears aside.
The third discovery is that the Microsoft ICM color engine is not as accurate for these conversions as ACE, and should be avoided.
One caveat that applies to the situation where not all colors in the image are within the gamut of the target space is that the ACE engine as accessed from Photoshop doesn’t allow perceptual rendering intent, just relative colorimetric, which maps out of gamut colors to the gamut envelope. Photoshop does allow you to select absolute colorimetric, but when ACE is doing the work, it silently substitutes relative colorimetric for that choice.