• Members 3 posts
    May 12, 2023, 10:33 a.m.

    Could we not delete the whole 625 comment/argument/grandstanding thread about Exposure Triangles and replace it with just this post?

  • Members 3687 posts
    May 12, 2023, 10:56 a.m.
  • Members 158 posts
    May 12, 2023, 11:15 a.m.

    That weird slope between 800 and 1600 is there because Canon uses digital amplification between power-of-two ISO values, e.g. 1000 and 1250 will be 'digital', and 800 and 1600 - 'analog' - the reason I use full stop steps for ISO. The R5 isn't 100% ISO-invariant but good enough.

  • Members 509 posts
    May 12, 2023, 11:55 a.m.

    Perfectly good sense, thank you.

    Apologies for accidentally slipping the word exposure in there, it's so difficult to avoid using a natural and convenient word and disrespecting its technical usage. I find that when I type out something, it takes me typically 5 revisions to correct all the typos, get the sentences in the right order, add in the words I accidentally missed out or duplicated or fix where I simply chose the wrong word. In professional communications we tend to try much harder, but for forums it's often rushed or casual. This forum has a preview function which is good, but I still find myself doing my DPReview habit of posting then reviewing, editing and correcting repeatedly. My bad, will try to do better!

    ps

    When you submit posts like this, I consider them a public service and thank you. It's the unending arm wrestling with certain posters that gets tedious.

    pps

    On the subject of good communication... I attended the Fully Charged Live EV trade show at Farnborough airport a couple of weeks ago. During the visit, I sat in the Vauxhall Astra EV and admired their wrap around dash design. A rep got me to sign up for info. Today I had 3 phone calls and two emails from two local Vauxhall car dealerships. I didn't take the calls because I didn't recognise the number, but one email thanked me for signing up and booking a sales call with the dealership (I did not), the other thanked me for my interest in the Astra but declared that sadly, there was no EV model. I emailed back and told them I'd sat in the car two weeks ago. They emailed back and said they had checked and there was no EV. Then 3 minutes later, they sent another, chastened email, apologising, After double checking there was indeed a new Astra EV, but they knew nothing about it.

    Communications matter, and mood and emotion normally matter a great deal more than correct grammar and word choice. I wonder how WJ King of Dartford feel my emotions about Vauxhall, the car company, were affected by this little piece of farce?

  • Foundation 165 posts
    May 12, 2023, 12:12 p.m.

    100% agreed

  • May 12, 2023, 12:43 p.m.

    Here is the problem. You say 'It's the same thing'. I think that they are two different things. I seem to have differentiated two different concepts. You have grouped them together as 'the same thing'. To my mind, a means to achieve something is different from the something itself. ETTR is a means to an end, not the end.

  • Members 509 posts
    May 12, 2023, 1:12 p.m.

    Difficult to say this without sounding rude, so I apologise in advance, but that sounds like ridiculous pedantry to me. ETTR is a technique for acquiring a good exposure. We both agree (I think), that if our goal is to achieve the lowest noise and widest DR when shooting raw at base ISO, we have to get as much light on the sensor as we can without clipping key highlights. ETTR is a convenient term to use when discussing this.

    The practical way I do that is by twiddling the exp comp dial until the preview histogram indicates it has reached the clipping point. Then I take the picture. Then I check the post capture 4 channel histogram just to confirm none of the channels is shown as clipped. That's it for me.

    That action is what I think of in my head as "acquiring the best exposure I can". I never discuss this process with anyone outside forums, so I don't need a name for it in real life, it's only on forums I call it by the convenient term ETTR (because that term was popularised by Michael Reichmann and has been adopted with enthusiasm by lots of others). It's just a name! It may be a process rather than a thing but in a discussion, the end goal is implicit. It doesn't need to be spelled out in full. When someone asked me "what do you call a good exposure" and I answer "ETTR", it is surely perfectly obvious to anyone that I'm using "ETTR" as a convenient shorthand for "I use ETTR techniques to maximise the exposure to just before the clipping point for highlights". What other single word term is there? By all means differentiate the concepts in your head if that helps, but be reasonable when it comes to chatting on a forum. It seems we have been arguing about nothing practical at all, all along, just the neat categories you like to maintain in your mind. I can only think you read too much Wittgenstein....

    ps

    I accept it's only a jpeg histogram and I'm probably leaving half a stop of noise reduction on the table, but they don't provide the right tools in cameras.

    pps

    "Hoover" - a brand name of a manufacturer of vacuum cleaners. "To hoover" the act of using a vacuum cleaner. It's how language evolves and works...

  • Members 976 posts
    May 12, 2023, 1:20 p.m.

    116K green pixels clipped?

  • Members 83 posts
    May 12, 2023, 1:37 p.m.

    Floating point.

    I cannot guess how one might apply a gamma curve without floating point or at least fixed point arithmetic or scaled integers. For modern CPU hardware use of floating point arithmetic and standard library functions is much faster. Quantization error will also occur at the analog to digital step if it is anything like the A2D converters that I worked with many decades ago. Quantization error will always occur when converting floating point to integer, but as you wrote it may be insignificant and I might no longer be able to do the analysis. The greatest quantization error would most likely occur in the portions of the curve where there is the most stretching of the linear data.

    It appears to me that libraw outputs a 16 bit integer TIFF. (GMIC will output a floating point TIFF by default and must be told to use a unit16, so far as I can remember).

    The source code below from libraw does an implicit type conversion on assignment from double precision floating point to an integer that can be represented as 16 bit unsigned. (an unsigned short is at least 16 bits so far as I can remember). It appears to me that a lookup table is created which is later used by:
    if (use_gamma)
    {
    unsigned short curve[0x10000];
    gamma_curve(curve);
    for (int j = 0; j < S.raw_height * S.raw_width; j++)
    RawProcessor.imgdata.rawdata.raw_image[j] =
    curve[RawProcessor.imgdata.rawdata.raw_image[j]];
    if (verbose)
    printf("Gamma-corrected....\n");
    }

    /home/jrm/src/libraw2021dec18/LibRaw-master/src/utils/curves.cpp lines 81-151/151
    void LibRaw::gamma_curve(double pwr, double ts, int mode, int imax)
    {
    int i;
    double g[6], bnd[2] = {0, 0}, r;

    g[0] = pwr;
    g[1] = ts;
    g[2] = g[3] = g[4] = 0;
    bnd[g[1] >= 1] = 1;
    if (g[1] && (g[1] - 1) * (g[0] - 1) <= 0)
    {
    for (i = 0; i < 48; i++)
    {
    g[2] = (bnd[0] + bnd[1]) / 2;
    if (g[0])
    bnd[(pow(g[2] / g[1], -g[0]) - 1) / g[0] - 1 / g[2] > -1] = g[2];
    else
    bnd[g[2] / exp(1 - 1 / g[2]) < g[1]] = g[2];
    }
    g[3] = g[2] / g[1];
    if (g[0])
    g[4] = g[2] * (1 / g[0] - 1);
    }
    if (g[0])
    g[5] = 1 / (g[1] * SQR(g[3]) / 2 - g[4] * (1 - g[3]) +
    (1 - pow(g[3], 1 + g[0])) * (1 + g[4]) / (1 + g[0])) -
    1;
    else
    g[5] = 1 / (g[1] * SQR(g[3]) / 2 + 1 - g[2] - g[3] -
    g[2] * g[3] * (log(g[3]) - 1)) -
    1;
    if (!mode--)
    {
    memcpy(gamm, g, sizeof gamm);
    return;
    }
    for (i = 0; i < 0x10000; i++)
    {
    curve[i] = 0xffff;
    if ((r = (double)i / imax) < 1)
    curve[i] =
    0x10000 * (mode ? (r < g[3] ? r * g[1]
    : (g[0] ? pow(r, g[0]) * (1 + g[4]) - g[4]
    : log(r) * g[2] + 1))
    : (r < g[2] ? r / g[1]
    : (g[0] ? pow((r + g[4]) / (1 + g[4]), 1 / g[0])
    : exp((r - 1) / g[2]))));
    }
    }

  • Members 976 posts
    May 12, 2023, 1:51 p.m.

    If the input to libraw is integers, the unpacked data is integers too. If the input is floating point DNG, so is unpacked data (when automatic conversion/scaling is turned off). Processed data is another story.

    libraw isn't a raw converter. dcraw_emu is there for quick tests and for those who want any easy transition from dcraw to access cameras that are not supported in dcraw, and to fix some of the dcraw bugs.

    Already RML used floating point for all operations after unpacking.

  • Members 83 posts
    May 12, 2023, 2:20 p.m.

    Thanks

  • Members 1737 posts
    May 12, 2023, 3:03 p.m.

    Look up table.

  • Members 1737 posts
    May 12, 2023, 3:06 p.m.

    Are you saying that this is faster than using a LUT?

    image = single(image);
    image = image ./ fullscale;
    image = image .^ (1/gamma);
    image = image .* fullscale;
    image = uint16(image);

  • Members 1737 posts
    May 12, 2023, 3:07 p.m.

    But there's enough read and photon noise to adequately dither modern 14-bit ADCs in all circumstances.

  • May 12, 2023, 4:53 p.m.

    It's quite typical for people that lack understanding to dismiss anything that exposes that lack as 'pedantry'. The point is simple. There was a miscommunication because the two of us understand the term 'ETTR' differently. You seem to think of it as any technique that gives a 'good exposure' (it would be nice to see a definition for that). I think it defines a technique, originally developed to maximise data levels, which actually ends up being one of several techniques that might increase exposure above ISO nominal. There are several others, some more effective IMO.
    What you're making is a simple category error. Consider this example. "I want to go to the USA;" "I'm flying to New York;" "I'm taking a ship to New Jersey;" "I'm flying to Mexico and seeing if I can cross to El Paso." These are not synonyms. The first is a goal. The next two are actions that will result in the achievement of this goal. The last is an action which may or may not achieve the goal, though it is intended to. If you'd said to me "I'm going to fly to Mexico and see if I can cross the border at El Paso" I could be excused for thinking that this would not necessarily mean that you would end up in the USA.
    A great deal of this thread has been about whether or not you'd end up in the USA.

  • Members 240 posts
    May 12, 2023, 5:34 p.m.
    1. This thread, like a few others, is about maximising IQ by putting the maximum light on the sensor at base ISO by using ETTR as far as you can without blowing highlights.

    2. Every photographer would be wise to understand this, it's simply a given fact.

    3. There's difference between a maximum IQ file and a winning photograph though. (Ok ideally you'd have both).

    4. Once a photographer has understood this, they can choose to make an informed decision to embrace IQ best practice strategies or choose settings that "get out of their way" that are "good enough" to nail the shot.

    5. Getting the decisive moment often trumps faffing about and missing the shot.

    6. This will resonate with folk who prioritise nailing the moment over a "nothing" shot that is technically superior, but useless.

    7. Using this travel to USA analogy, some will choose to fly first class to their exact intended destination. Others will choose to take economy to somewhere close, maybe enjoying 10 trips or more for the price of one first class one.

    8. Both approaches are valid. However, where possible, I think best practice theory should always be linked to real world strategies for execution in the field.

  • Members 1737 posts
    May 12, 2023, 5:38 p.m.

    This is a false dichotomy. Once you understand the principles involved, including the relative effects of read and photon noise, you are free to apply them in whatever way is best for your photography.

  • Members 240 posts
    May 12, 2023, 5:45 p.m.

    It's not a false dichotomy. Let me explain it another way:

    1. Learn and understand best practice for IQ of your file regardless.

    2. Work out a way of working that best works for you.

    3. If point 1 and 2 merge to be the same thing FOR YOU then that's great.

    4. If point 2 turns out to override point 1 for the way you work and what you need to achieve then crack on.

    5. Don't feel that you have to adopt point 1 all the time.