I have a set of images (48-bit TIFF) that are encoded in ProPhoto RGB.

I have a set of alternative input color profiles (related to ProPhoto RGB, but slightly different) that I can assign to the images in order to obtain various color transformations.

This is not the correct way of using color profiles though. If you need a color transformation you either want a 3DLUT (working color-space dependent, more like a device-link profile), or an abstract profile (Lab->Lab mapping, color-space independent).

Photoshop supports both 3DLUTs and abstract profiles.

I want to create either a 3DLUT, or an abstract profile that encodes the same transformation as the one achieved by changing the input profile. I don't know how to proceed further. I am a programmer and can write code, if that's helpful.

In more math notation, we have these functions:

ProPhotoRGBModified: RGB->XYZ
XYZ2Lab: XYZ->Lab
Lab2XYZ: Lab->XYZ

And we want to find this function:

UnknownAbstract: Lab->Lab

Such that this equality holds:

ProPhotoRGBModified(input) == Lab2XYZ(UnknownAbstract(XYZ2Lab(ProPhotoRGB(input))))
  • 1
    \$\begingroup\$ What is the photographic application for what you are trying to do here? \$\endgroup\$
    – mattdm
    Nov 12, 2017 at 16:09
  • \$\begingroup\$ Changing the saturation using James Holmes' color profiles. \$\endgroup\$ Nov 12, 2017 at 16:21
  • \$\begingroup\$ I do not have an answer but you'll get it done with ArgyllCMS. More specifically, you should probably look into A->B and B->A LUT tables because it is the only way of getting that effect with just converting to profile which you want to construct. \$\endgroup\$ Nov 12, 2017 at 17:57
  • \$\begingroup\$ This seems like it might be an x→y question. Why not just ask how to change saturation using James Holmes' color profiles? \$\endgroup\$
    – Michael C
    Nov 12, 2017 at 22:36
  • \$\begingroup\$ I know how to change saturation using these profiles, that is not the issue, the question is about creating abstract color profiles (in general) to be used in Photoshop and other applications. The fact that in this particular scenario I am altering saturation is incidental, you could create profiles to simulate the effect of cross processing or profiles that emulate the look of a particular film stock. There are many possible applications of these type of profiles. \$\endgroup\$ Nov 12, 2017 at 23:10

1 Answer 1


You can do this by creating an RGB Color Cube as a .tif (or whatever lossless format you prefer), taking it into Photoshop, applying the transform to the image, then saving it back out. I have one that is 64x64x64:

Color Cube

So open that in Photoshop and tell it that it's in the source color space you want to transform from. (You may need to tell it to ignore the profile that's attached if there is any. Not sure what uploading it here does to the image.) Then do whatever you were doing to convert to the new color space. Save it back out in a loss-less, easy-to-read-with-code format. Then remove the color profile info if there is any, as that will cause it to render differently in the future. You can now use it as a 3D LUT.

  • \$\begingroup\$ Intriguing. I created the .png I need, but Photoshop can only use .3dl, .cube, and .look 3D LUTs. It can't use .png directly. It seems it's easy to go from .cube to .png, but I'm not sure how to do the reverse. Or are you suggesting I parse the .png myself and create the .cube file from it? \$\endgroup\$ Nov 12, 2017 at 19:22
  • \$\begingroup\$ Ok, I played some more with these, it appears the 3D LUT formats are really trivial. It seems to work, but I need to do some more thorough testing to make sure I get the exact same result I am expecting. I am still keeping the question open for now, as I am still looking for a way to encode these transformations as abstract ICC profiles rather than 3D LUTs, but this method described is a great workaround if you can live with a particular working color space dependency. If nobody answers in a reasonable amount of time I will accept your answer. \$\endgroup\$ Nov 12, 2017 at 23:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.