Pink (magenta) highlights on Canon EOS 550D

  • Ricardo

    Hi, I'm new on this forum. I have this pink problem processing raw's from EOS 550D  with ufraw 0.18. All higlight are pink. reading and searching I've found this site

    it gave me a clue so I've proceeded as follow to ¿fix? the pink problem.

    1.- First, I downloaded last sunday (13) a snapshot from ufraw cvs repository. It had the latest version of dcraw (cross checked with dcraw site).

    2.- I dowloaded the dcraw.c from dcraw site and compiled it.

    3.- With dcraw (compiled for me), I executed the follow command to extract the saturation level of my raw's

    dcraw -v -D -T -4 photo.cr2

    I got something like this

    the maximum of all samples is 13584

    13584 is the saturation level

    I had to put this value on To do this, the 13584 has to be converted to hexadecimal value (3510).

    4.- With the exadecimal value (3510), I looked into for something like this:
    NOTE: This example is for 400D. You _must_ look for 550D. You has been advised.

    { "Canon EOS 400D", 0, 0xe8e, { 7054,-1501,-990,-8156,15544,2812,-1278,1414,7796 } },

    5.- Change the third field with the exadecimal number found (0x3510)

    6.- Save and compile ufraw as usual

    7.- That's all

    I'm not an expert so be careful.

    Just some more research. I took a collection of raw's from my 550D and I extracted the saturation level of every file just to "make sure" the value found was "correct" so, in a collection of 563 cr2 files, 407 had 13584 as saturation level.

    Can anybody tell me why not all files has the same saturation level?


  • Anonymous

    That's really interesting, can't wait to try this out (I have a similar problem with the highlights from my Canon 40D)

  • Alberto

    Niels, I guess that the saturation value for the 550D should be changed in the original code: for the 7D (that shares the same sensor with the 550D, 600D, and 60D) the value is correctly set to 13584 (I checked with my raw files and this value seems to be the correct one for the 7D). I don't know if this should be changed in ufraw or in the original dcraw code, though…
    The value for the 40D seems already correct… At least it is with my raw files.


  • The saturation value is very model dependent. Some even suggest that it varies from camera to camera of the same model.

    The value should be changed in DCRaw first. It will then trickle down to UFRaw. The code is easier to maintain that way.

    Niels Kristian

  • Ricardo

    Hi, I'm not an expert but, what if ufraw do a initial dcraw -v -D -T -4 photo.cr2 and then use this value as saturation level? dcraw can use it with -S switch

  • Ricardo

    Niels, I can give you values from two 550D's and one 600D if you want

  • Ricardo

    I have to apologize myself. The method I've wrote is totaly wrong. This one is the correct method to extract the sensor saturation level from the CR2.

    I have to say that the CR2 _must_ be shooted with ISO 100 to get the saturation value. I don't know what happen with other ISO values. I'll try later and I'll let you know.

    1.- Download de latest version of dcraw.c from the David's web page
    2.- Compile it
    3.- Make sure you have netpbm package installed (linux, sorry, that is my sandbox). You must have the binary pamsumm.
    4.-With dcraw compiled from the source (make sure please), and having a CR2 shooted using ISO 100, run the following command:
          ./dcraw -D -4 -j -c <CR2 file> | pamsumm -max

          This command should show you a message like this:
           "the maximum of all samples is 13584"

    5.- Now you can use this value (13584)  to indicate the saturation to dcraw (-S) or to put it on (the hexadecimal equivalent) to eliminate the "magenta problem".

    6.- Replace the line
    { "Canon EOS 550D", 0, 0x3dd7,
            { 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } },


    { "Canon EOS 550D", 0, 0x3510,
            { 6941,-1164,-857,-3825,11597,2534,-416,1540,6039 } },

    0x3510 is the exadecimal value of 13584.

    Sorry for the inconveniences, my apologies again.

  • Mervin Beng
    Mervin Beng

    I had some posts about pink highlights on my EOS 40D and 450D, and it led to the same conclusion - changing the saturation points in is presently the best option.

    The challenge is that I need to recompile on each computer I use, each time there's a source update.

    IMHO, what will be extremely useful for users is an option to override dcraw saturation in ufraw, ie. the equivalent of defining "-S my_saturation_point" in the processing. I don't have the ability to add the required code to ufraw, otherwise I would have tried it some time ago.