Canon CR2 stills in ACES


very soon Filmlight will deploy its OnSet Look Development Tool “Prelight”.
There will be a free version too, to create Looks which can later be use in Postproductions.
Prelight as Baselight now debayers Still Raw Frames into scene referred Linear XYZ, from there Truelight Colour Space converts the data into any user specific working colour space like ACEScct.
This should allow you to create a Look based on a Still Camera and apply the Look to any other cinema camera’s output.

hope this helps

1 Like

Just a little bit of a tease … we are working on a tool here that will be able to convert most digital still RAW formats to ACES. It’ll probably be a command line tool at first but it’ll provide multiple mechanisms to get from RAW to ACES depending on how much information you (or your raw file) has about your camera.


That is neat! I assume it will be based of dcraw / libraw? What about whitebalancing?



We are leveraging libraw and aces_container. There will also be custom code in it to create good IDTs from spectral sensitivity data if you have it. White balance in that case is also calculated from spec sense for a given light source but always user overrideable.


Ohhh! I like the sound of this!

1 Like

Right now we are using Affinity Photo.
It is working really good with 32bit, converts your RAW photos directly to ACES (or ACEScg) and has OCIO support. Especially the OCIO viewer process is very helpful.
The only thing that is missing is a batch convert function…

1 Like

Could you provide some more details about your workflow with Affinity Photo? I’ve done some testing after reading your post, and by

  1. Using the Develop Assistant to change Raw Output Format to “RGB (32bit HDR)” and Tone Curve to “Take No Action”
  2. Pushing the Exposure slider 2 stops up on an already bright image, then switching from Develop Persona to Photo Persona
  3. In the program preferences, setting the “32bit RGB Color Profile” to “ACES CG Linear”
  4. Exporting as “OpenEXR 32-bit linear”

I was able to import the resulting .exr file into After Effects and recover all of the highlights from this intentionally overexposed image. Hard for me to know whether the file really is in ACEScg color space, but it is cool to get around Adobe Camera Raw’s display referred process. I couldn’t find an option for ACES AP0, though, just ACEScg AP1.

There is also (at least as of v1.5.2) a “New Batch Job” option that let me convert a folder of cr2’s into exrs, but it is completely unclear as to what options are being applied to the process - the resulting exr has a different exposure and a loss of detail from the single exrs I made using 16-bit or 32-bit, tone curve or no curve. I wouldn’t trust it without knowing more about what it’s doing.

1 Like

Canon also present CR2 Converter for Windows. Below are overview of this tool. For its usage instruction refer to Canon 5d Manual.
Compatible OS:
Windows XP
Windows 2000
When you use EOS D2000, RAW images should be converted in advance using CR2 Converter for Windows.
CR2 Converter for Windows converts RAW images taken by EOS D2000 into RAW images with CR2 extensions so that they can be displayed/edited in Digital Photo Professional.
CR2 Converter for Windows is only available in English. You can download and install CR2 Converter for Windows in the same way as Digital Photo Professional Updater for Windows.
To start the CR2 Converter for Windows, open the [Canon] folder under the [Program Files] in the startup drive. Then double-click [omce.exe] in the [CR2 Converter] folder.

This is the workflow we are using as well. Sadly I have no clue what Affinity is doing under the hood to get those ACEScg pictures.

For AP0 output you could use the OCIO adjustment layer in Affinity.

The batch export is really a pain. As you said it is completly unclear what Affinity is doing there and why it is different from what is happening when exporting a single picture “by hand”.
I asked already in the Affinity forum, but did not receive any answer yet:

So, we are still searching for the perfect workflow.
@Alexander_Forsythe do you have any updates for us?

Hey all … just posted a new topic on converting RAW camera data to ACES that you may be interested in over here

Hello again!
I"d like to revive this thread. We did some tests with the rawtoaces tool and it works really nice. Finally something where we can batch convert a bunch of files.
One thing we discovered early is the highlight recovery function, which does not work as good as in Affinity Photo. As an example we took a .cr2 file from a Canon 5DMk2, overexposed by about 1 stop. After converting we leveled the resulting .exr files in Nuke to match the 50% greypatch and exported with the Rec709 ODT.

Converted to ACEScg with Affinity Photo without any changes:

Converted with rawtoaces with default settings:

Converted with rawtoaces default settings, but -H 3. (we tried different steps of highlight recovery, but -H3 gave us the best result)

Obviously rawtoaces is clipping the highlights with the default settings. With -H 3 the highlights are getting recovered somehow but there is a pink tint in the 2nd brightest patch and there are some artifacts on the yellow patch. Affinity is handling those parts really nice.

Is there anything one could do to improve those issues with rawtoaces?
I read about libraw about a “false” saturation level that could cause those pink highlights.


I don’t know if there are any current settings to get around the issue, as this is listed as a bug on the github project:

Here is an interesting discussion about sensor saturation levels and the production of magenta highlights, albeit for dcraw and not libraw:


@soenke.heuer: Would it be possible to share the RAW file used in your tests please?



@kirkthibault Thanks for the link. I read through it a few weeks ago and its pretty interesting, but I cant translate it to the rawtoaces tool to be honest. I tried some saturation levels without any success.

@Thomas_Mansencal here you go:


@soenke.heuer - Have you taken a look at your raw files using a tool like Raw Digger to check the value(s) of the raw data at which saturation occurs?

Maybe this might help make your experiments more quantitatively targeted to specific per-channel clipping values?

I apologize in advance if this suggestion is a little too naive.



@soenke.heuer : I have taken a quick look this morning and the Affinity output is not entirely neutral in the recovered highlights, i.e. yellowish. I’m wondering at which step they are performing the recovery and if there are any colour tweaks post recovery because their gray patches are properly neutral while the recovered ones are not.

Any clipped highlights is technically garbage and cannot/should not be used. Usually cameras being most sensitive to green as per Luther-Ives condition/Luther criterion, the green channel will be the first to saturate/peak hence the magenta cast you get when highlights are not recovered.

My process when recovering highlights is roughly to assess which channel peak first, then anything above is desaturated. There are fancy papers/algorithms using colour restoration in image gradient domain, e.g. [1] but because clipped data is garbage anyway, I never bothered implementing anything like that: it does not make any sense from an accuracy standpoint and can potentially have side effects when generating HDRs.

I have processed your image with my tools, white balancing on the Neutral 5 (.70 D) patch using CCT=6600, Duv=0.0017:

The lack of punch from my output is because there are no fancy curves, e.g. Adobe Camera Raw Tone Curve applied in my process.

I’ll get in touch with @mzhu and @Alexander_Forsythe to see how things can be improved on rawtoaces end.


  1. Lau, C., Rouf, M., & Heidrich, W. (n.d.). Gradient Domain Color Restoration of Clipped Highlights. Retrieved from
1 Like

@Thomas_Mansencal: When you’re talking about clipped highlights and recovery here, are you referring to values that are beyond the sensor’s saturation point, or values that get clipped on display when converting from a linear value to an 8-bit display referred value?

@agentirons : I’m talking about the former, i.e. values above sensor saturation point.

@kirkthibault: I tried the process described in the link you posted before without success. But I will try it again with rawdigger. Thanks for the link!

@Thomas_Mansencal: Thanks for your detailed input.

I guess this is the main point.

What do you mean by “my tools”? How did you create your image?
And could you share the resulting EXR?