idea for some easy improvements to auto exposure

Problem Description:
When photographing Birds in flight lighting can vary very quickly (e.g. flying from shade to sun and from sky-background to foliage background). Therefore I need to expose my photos very conservatively to avoid blowing highlights, which means that my photos tend to be strongly underexposed. Therefore I love using the auto-exposure function of FastRawViewer.
However, (especially when the subject is small in the image (very common in this use case)), it often doenst work very well because if i set it to ETTR then the smallest pixel % that can be set (0.1%) is still so large that it overexposes a significant fraction of the subject. But if i set it to 0 % it often heavily underexposes the image e.g. because of specular highlights and also because my camera has a few hotpixels.
Suggested Solution:
1. It would be great if the UI would allow entering smaller numbers into the % field. E. g. 0.001%.
2. Additionally I think it would be quite useful to be able to use "ETTR" and "fixed exposure shift" simultaneously. So it could be set up to e.g. expose it 0.25 stops darker then what the ETTR exposure alone would do. This would help make sure that nothing at all is clipped in cases where there aren't any small local highlights, and in cases where such highlights exist they would be recognizable as such because they would be a bit brighter then everything else.

Dear Raoul:



1) 0.1% pixel threshold for (say) 40Mpix image means that exposure is set based on ~40000 pixels. Reducing this value by 100 times (to 0.001%) will result that exposure is tuned based on random pixels/noise, esp. for high-ISO/low exposure shots. We believe that such a reduction will lead to large variations in automatic exposure correction on very similar images.

2) At the same time, adding a manual brightness correction to a fixed value relative to the one set via ETTR looks interesting.

We'll consider adding this feature in one of the upcoming updates.

--

Alex Tutubalin/FastRawViewer team

Regarding point 1:
In that case it would still be useful with low-noise photos. Some random deviation in exposure would probably be preferrable to consistent overexposure. With 0.1% setting I didnt notice noise being a problem, so it's probably worthwile to push this further until problems with noise become obvious. I just wonder if one would even conciously notice such noise problems. Maybe they are already there and i'm just not noticing it?
I have some experience using this algorithm (ETTR + some fixed shift) for data visualisation. In that application I sometimes do exposure compensation for every pixel column individually, making the influence of noise an important factor because random column-wise exposure variations make the image have strong banding. I did indeed notice noise to be a problem in that setting. I found the noise problems could be alleviated by doing the following: instead of computing the exposure compensation value for a single pixel % value, compute it for a (narrow) range of % values, then take the average of them.
 
Regarding point 2:
Oh, great!

I thought more about your point regarding noise: As you said it such noise would be noticeable when switching between similar images. I don't recall having issues with this, so at least in my case I think the optimal pixel % would be below the current minimal allowed value.

What I meant was something else: the amount of automatic brightness correction will depend on literally just a few hundred of the brightest pixels (400 pixels for a 40-megapixel image and a 0.001% threshold). As a result, the correction amount will vary greatly from image to image, even if they are very similar.



The #2 method looks much more stable.

--

Alex Tutubalin/FastRawViewer team

I understood that.
I assume that you have either come to this conclusion because you tested this in the past or are going to test it, since i assume it requires changing only a single number. I just wanted to point out that my impression from practical use was that it would probable be helpful to allow setting lower values. Currently the minimum is 0.1%. If you think 0.001%  is too low, maybe 0.01 is fine? or maybe 0.03? It would probably depending on how noisy the images are and what kinds of subjects are being photographed. So even if testing sais that a certain number is the sensible limit, there are probably use cases that were not tested where lower numbers make sense.
 
I didn't mean Method 1 and 2 to be alternaties to each other. My intention is to use them together.
 
I don't know if what I wrote above about stabilising the result by averaging over a range of % values helps in this use case (photos). I dont know if you want to try that. I could try to code a simulation, but I dont have much time for such things right now.

Dear Raoul:

In fact this change requires changing of decimal digits count (N.xxx instead N.x), because lowest value is already 0.0

We implemented this in 2.0.11-2070 beta available via: https://www.fastrawviewer.com/blog/FastRawViewer-2-0-11-Beta



Please note:

1) mouse/arrows step is still 0.1% so you need to type-in your preferred value (0.010 or 0.003 or even 0.001)

2) accuracy is limited by internal FastRawViewer histogram bin size (~1/16 EV)

--

Alex Tutubalin/FastRawViewer team

Oh great! I'll make sure to check it out soon and report back.
 
Also, it just came to my mind that the app has already supported numbers below 0.1% since a long time. Namely, it allows setting it to 0%. It's just values between 0% and 0.1% that were not possible. By the logic that 0.001% is computing exposure based on 400 pixels (and thus subject to noise and other small image variations), 0% bases it on just a single pixel and is thus even more strongly affected by these issues.
 
In practice I traditionally kept bouncing between 0% and 0.1% depending on what types of images im culling, and almost never using anything higher. So my past usage pattern suggests that the problems that come with basing exposure on just a few pixels were a worthwile tradeoff for me in the past, even in the extreme case of just a single pixel, and that the optimal setting for me is somewhere in between.

Tested it, It's great! Many thanks!
I didnt run into any problems with it.
I decided to stick with 0.003 % for the time being.
The number of pixels shown as overexposed varied slightly (sometimes none at all) despite it exposing for a fixed proportion of overexposed pixels. But these variations were small, so they didnt cause me any problems in practice. I guess they could have been caused by limitations of the internal histogram accurracy mentioned above, or maybe the overexposure display uses a different definition of "clipped" then the exposure algorithm does. ("use camera limearity limit" for clipping definition was unchecked).

(proposed) Manual adjustment for ETTR auto-exposure is also implemented in 2.0.11-2071

Available via the same page: https://www.fastrawviewer.com/blog/FastRawViewer-2-0-11-Beta

--

Alex Tutubalin/FastRawViewer team

Is this a good place to report bugs of that feature?

1)
When I select "fixed exposure shift" then the "Manual adjust" field isnt greyed out


2)
When I set that manual adjust field to -2 and then look at an image that normally is computed to +1ev compensation then the autoexposure when triggered results in a program state where the exposure correction field reads "-1" but the image brightness corresponds to +1. If I manually set exposure correction to -1 then it works correctly. If I set manual adjust to -.5 then the autoexposure resulty in a correctly applied +.05 exposure correction. On another image that normally results in +0.03, using manual adjust of -.3 results in the field reading -.27 but the image brightness very close like a value of zero, but not exactly, probably like +.03.
So it seems like when the "manual adjust" field results in an overall negative exposure compensation value then it doesn't get applied to the image (image shows as if manual adjust was at zero) but it does get correctly shown in the exposure compensation field.
 
I think there would be two different sensible behaviours in such a case: either apply the manual adjustment fully, resulting in negative exposure compensation, or clip the compensation at zero (assuming there is no highlight reconstruction or other way to get data beyond the normal clipping point (e.g. a mode that uses per-channel clipping points).
I'm not sure which would provide better exposure consistency when there is a series of images where some would result in negative compensation and some wouldn't. Probably depends on whether there are images where sensor clipping point has clipped more then the % of pixels used to compute the auto-exposure compensation.
 

Thank you for the #1

#2 - 'manual auto exposure' and 'automated auto-exposure' (on image opening if no XMP data present) works different,  Manual Shift was implemented only for the 2nd case, this is not right. 



To be fixed asap.



 

--

Alex Tutubalin/FastRawViewer team

Correction about #2:

 - (in current code) only positive ETTR correction is performed (if data already hits the right histogram side -> no correction needed), so manual adjusted negative ETTR correction is skipped.  

 - there is no such a limit in correction display



Note: displayed exposure correction value is adjusted by  'Adobe hidden exposure correction' (or BLE), so displayed Auto-ETTR correction value may be negative if 'Adobe hidden' is positive.



We'll consider what to do:



- either automatic correction plus negative adjustment can result in negative correction

- or should we leave 0 as the minimum limit even with adjustment



The first option is easier to explain to users. The second option is more reasonable (why do we need negative correction if the original data is already at the edge of the histogram? It won't add detail to the highlights).



 

--

Alex Tutubalin/FastRawViewer team

Followup:

#1: fixed

#2: exposure correction display fixed; Total correction (auto-exposure/ETTT shift + adjustment) is always positive in absolute correction value related to actual histogram/pixel values.  Adobe correction (BLE) is applied on exposure correction display after AutoEttr+adjustment calculation/limit.



Available in build 2072 via the same page: https://www.fastrawviewer.com/blog/FastRawViewer-2-0-11-Beta

--

Alex Tutubalin/FastRawViewer team

Nice!
I didn't encounter any additional bugs.

Add new comment