Bars facelift

Started by stevefal, September 28, 2013, 08:50:23 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

a1ex

I repeat. Screenshots please. I can't see these problems on my camera.

stevefal

QuoteI repeat. Screenshots please. I can't see these problems on my camera.

Who are you talking about? My focus distance issue is not a rendering problem - it's by design.

To be clear, I'm staying that the designed behavior of dropping items when there's too little room could be finessed with the maxWidth idea. It would prevent an item from being dropped just because it's value changed.

Tell me if you still want a screenshot of something from me.
Steve Falcon

a1ex

Try commenting out lines 222-233 from lvinfo.c => it will first try a smaller font and only after that drop low-priority items. If that's a better behavior, I'll commit it.

stevefal

QuoteTry commenting out lines 222-233

I tried it. My least favorite behavior is having a combination of large and small fonts in the same bar. It looks bad and there's still a breaking point. I think that being tricky with lots of automatic morphing gets dangerous. It creates mysteries and it can't know what the user actually wants. Things will appear/disappear and the user won't know why or how to govern it.

Here's what I'd propose, shooting the moon (bear with me):

- LVinfo implements a dynamic menu for each bar. Each menu has all the same items by name, alphabetcally:

       Top bar                                         ON                Q>
                Minimum size                       Small
                Aperture                              ON
                Dynamic range                     Auto
                Focus mode                         ON
                Focus distance                     OFF
                ...etc

- Modules register their items with LVinfo, but display of items is ultimately governed by the user setting ON, OFF, or AUTO for each item.
- All items are AUTO by default. Display of AUTO items is per the priority scheme. (I consider this a nice-to-have feature, with deterministic control a must-have)
- Modules register a maxWidth string with each item, used to calculate possibility of display and item position.
- The 'Minimum size' menu item determines the smallest font size the user is willing to tolerate in the bar. All items within a bar use the same font.
- Items set to OFF will never display
- Items set to ON will always display, but...
- When an item is set to ON, LVinfo calculates the possibility of display, according to the sum of maxWidths in the smallest font, per the current 'Minimum size' setting.
- If an ON item is impossible to display, a msgbox pops saying they need to turn something else OFF or choose a smaller Minimum size, if available.
- Display of items is per the following:

     All OFF items don't display.
     All ON items display as top priority, from the horizontal center of the bar.
     A bar drops to whatever size is necessary to display all ON items, and as many AUTO items as possible; but not smaller than 'Minimum size'.
     AUTO items are displayed on the horizontal outskirts of the bar, with lowest priority outermost.
     AUTO items are dropped from the outskirts if space is unavailable.
     An AUTO item displays in only one bar, per the current scheme.

Benefits:
1) User will always see the items they care about.
2) Bars will always be filled with interesting stuff, as long as enough items are AUTO or ON.
3) Size degrades consistently and not smaller than what the user will tolerate (Minimum size)
4) Items will not shift around when values change, because placement is based on maxWidth instead of current width.
5) Items will never disappear/appear just because a value changed.
6) Potentially less redrawing, since no shifting.

[EDIT] I think a user-driven solution like this is necessary when disparate modules are competing for the same screen real-estate. Arbitrary priority numbers from 3rd-party module developers cannot possibly represent what the user wants. Module developers would have to expose the LVinfo priority value through private UIs in order to give the user some kind of control. At that point the solution might as well be centralized like this.

[EDIT2] As a fail-safe, if an item value exceeds the width of its maxWidth, the layout will need to shift, and items could drop off, potentially even ON items. Robust module development could alleviate some, but not all cases. For example, max ISO could be known for a given camera, so that the maxWidth is absolutely correct. But lens characteristics are unknowable, so the lens.c needs to make some guesses and be wrong sometimes.

[EDIT3] If this solution is untenable due to wasted space from excessive maxWidth, then I propose replacing ON with "ON, important" and AUTO with "ON". In this scheme, "ON, important" sets the high bit of the item priority, making it super high. "ON" leaves the priority as is, and OFF is OFF. This model is not deterministic and items still shift/fall off when values change. For clarity I'll restate it completely here:

Alternate Plan:

- LVinfo implements a dynamic menu for each bar. Each menu has all the same items by name, alphabetcally:

       Top bar                                         ON                      Q>
                Minimum size                       Small
                Aperture                              ON, important
                Dynamic range                     ON
                Focus mode                         ON, important
                Focus distance                     OFF
                ...etc

- Modules register their items with LVinfo, but display of items is governed by the user setting ON, ON Important, or OFF for each item.
- All items are ON by default. Display of ON and 'ON, important' items is per the priority scheme, with 'ON, important' at a higher priority tier.
- The 'Minimum size' menu item determines the smallest font size the user is willing to tolerate in the bar. All items within a bar use the same font.
- Items set to OFF will never display
- Display of items is per the following:

     All OFF items don't display.
     'ON, important' and ON items display in priority order from the horizontal center of the bar.
     A bar drops to whatever size is necessary to display as many 'ON, important' and ON items as possible; but not smaller than 'Minimum size'.
     ON items are dropped from the outskirts when space is unavailable.
     'ON, important' items are dropped next when space is unavailable.
     An ON item displays in only one bar.

Benefits:
1) User is more likely to see the items they care about.
2) Bars will always be filled with interesting stuff, as long as enough items are 'ON, important' or ON.
3) Size degrades consistently and not smaller than what the user will tolerate (Minimum size)

Drawbacks:
1) Still possible for important items to disappear unexpectedly due to width.
2) Layout will shift regularly as values change

[EDIT4] Rather than to add items from the center out, it's probably better to go left to right. This way priority and order are the same. In this model items always drop off on the right:





items L -> Rbatt%lengthapertureshutterISOWBISfocus mode
module priority  10097969594939998
user priorityImportant   Important   Important   Important   Important   Important   ON    ON   


Sorry for waffling. This is a tough one. I'll keep going until I think it's the best compromise. Please poke holes.
Steve Falcon

Doyle4



Update: Beeping starts when the cm's reading appears in bottom right, it appears at 1/8th of shutter and below, when above 1/8th the cm's reading disappears and the beep stops.

1%

on 7D this screen shot is pretty accurate... including the CMcm (focus distance?)... also FPS display please?

Ok, CMCM is gone after a make clean...


Doyle4

Heres a vid of whats happening on the 600..


a1ex

Small updates:

- focusing back and forth should no longer disrupt the layout (it should settle quickly)

- more indicators ported: FPS, free space, MVI number

- audio meters integrated in the new layout (so if at some point you will have a menu and remove everything else from the top bar, the meters will expand to be full screen, otherwise they stay small).

- degradation algorithm: first shrink one item, then two, then all of them, and only after that start dropping items. Rationale: if I enable dual ISO and the ISO string gets long, I prefer to show only that one in small font, and keep the rest of the bar in large font (more readable). But at some point, items with mixed size start to look bad, and in this case it shrinks the entire bar.

- some more smaller changes.

Nightly builds are being recompiled right now.

Doyle4

Could it possible when Dual iso is enabled the ISO font is say green to allow the user to know Dual iso is enabled just incase they forgot it was on n snap away without realising, when disabled its back to white?

Doyle4

Beep has stopped, and cm no longer disappears, nice  :)

a1ex

For the histobar, I'd like a way to show the following things:

- midtone level (median)
- shadow level (5th percentile)

These things are used in ETTR, and you can see at a glance how much noise you are getting in the picture. When ETTR is enabled, and the SNR drops under limits (that is, these midtone and shadow levels are to the left of what you have selected in ETTR menu), I'd like a noise warning too (which will explain why ETTR choose to blow some highlights when it does).

A standard representation for these things is the box plot: http://en.wikipedia.org/wiki/Boxplot

I've tried half-filled bars and different colors, but couldn't get an intuitive indication. In particular, the midtone level (median) means half of the image is brighter than that, and the shadow level means that anything darker than it is likely insignifiant.

Right now I'm trying a yellow box for the median point and 1/3-filled boxes (to suggest insignifiant) for levels under the shadow one.

Ideas?

stevefal

I'll work on some ideas..
Steve Falcon

platu

Great work on the updated bars. 

A few things I noted...

-The shutter speed on the bottom bar doesn't match the one in the menu (shows as 1/51.3 in menu... and 1/63 on bottom bar).  This issue occurs in movie mode only... photo mode is fine.

-The temperature indicator on the top bar shows a caution condition relatively quickly so most of the time shooting, you will end up with a bright colored indicator always on.  Maybe the threshold for the caution indicator should be relaxed a bit.  My settings... movie mode, raw zebras, focus peaking, histobar all turned on.

The time indicator disappears quite often I assume to dynamically make space on the bar.   I have both Histobar and Ettr hint active.  It happens whenever the ETTR hint displays a negative value such as -0.1 but when the value is positive, the time indicator reappears.  So you end up with the time dissapearing and the histobar and everything else shifting to the left whenever the ETTR hint shows a negative value.  Again, this occurs only in movie mode.... photo mode is fine.


stevefal

@a1ex, I don't understand shadow level. With your current draft, half boxes can appear anywhere in the range. Are you saying that in the context of ETTR, the bottom 5th percentile of the image is considered "shadow"? I don't understand why you see it as insignificant. In a low DR image it could be clean and very significant.

Likewise, how does the user consume knowledge of the midpoint?

Between the advanced abstractions in your head and the concrete ignorance of an average user - that's the gap I want to bridge. Can you explain each concept you want visualize, and

- what it is mathematically
- how the user should interpret it concretely
- how the user should act on it
- scenarios/caveats that undermine anything

If we break this down precisely, I bet we can make something intuitive.
Steve Falcon

1%

Looks hot right now.


7D idle

a1ex

@stevefal:

Midtone level:
- mathematically: median (which is a statistically robust indicator for overall exposure)
- interpretation: if it's too much on the left side (SNR too low), your image is likely too noisy
- how you should act: if it's too much on the left, and you still have clipped highlights, you should consider clipping more highlights or using HDR / dual ISO / change lighting / using a Nikon camera...
- note that you can find it pretty much anywhere in the highlighted range (not in the middle)
- caveats: I believe only images half-bright and half-dark, with a clear straight line between the two regions, can trick it (just look at timelapses deflickered with post deflicker to see how robust this indicator really is in practice).

Shadow level:
- mathematically: the value below which you have 5% of pixels (see http://en.wikipedia.org/wiki/Percentile )
- interpretation: underexposure warning on these boxes can be ignored (e.g. if you have clipped highlights and don't know of what to get rid first)
- what you should do: if you see both half-underexposure and overexpoure warnings, you should probably just move the exposure to the left and ignore the shadows; but if you see full underexposure and overexposure warnings, you should think whether you are OK with crushing some blacks / clipping some highlights / trying dual ISO / etc.
- caveats: maybe a tiny black cat in snow could be indicated as insignifiant? I think it's hard to find tricky scenes in practice, since this one is also a statistically robust indicator (not as robust as median, but still very good).

- note that half boxes appear only on the leftmost side (so the only sequence possible is empty, half, full, empty). If not, post a screenshot.
- in a low DR image, the levels under the 5th percentile will be very close to the minimum point => nothing printed
- in a high DR image, trying to bring these levels to a relatively low SNR (even just 2-3 EV) is very likely to require severe highlight clippng => better accept underexposure in these levels

If ETTR is enabled:
- midtone SNR set to 6 EV and midtone level is on box 4 => you have 2 stops more noise than you have asked for in ETTR menu => boxes 4 and 5 may show a noise warning (not implemented)
- same for shadow level, just with different numbers
- with this, it should be straightforward to understand the meaning of the SNR limits from the ETTR menu (because you see them in real-time)

Here's an example of what exactly is 2 EV of SNR (12 dB = 2 EV):
http://photography-on-the.net/forum/showthread.php?t=1326078&page=2&highlight=snr

stevefal

Thanks, that's helpful. Please clarify re: Midtone: "note that you can find it pretty much anywhere in the highlighted range (not in the middle)"

Given that the number of involved pixels is intrinsic in these indications, I think it goes against the extreme dumbification that histobar represents. That's ok though! I will try to re-imagine a simple histogram that doesn't hide so much about distribution, and therefore makes such area-bound concepts visible. Then I think we can treat the areas visually to convey their qualities. Is this the right list of qualities?

- clipped low, aka black
- noisy
- well exposed
- clipped high, aka white
Steve Falcon

a1ex

Clarification: I simply pointed the camera all around the room, and the median point changed from both extremes:

- In a HDR scene with the camera pointed to the window (and most of the image being dark walls), the median was on the far left, but the overexposure warning was enabled.

- In a low DR scene (say a blank wall), the median was towards the right, and there were some "shadow" levels which I guess they come from vignetting. In this case, the apparent dynamic range indicated by the simplified histobar was misleading (since it was showing 4-5 stops, but most of the stuff was concentrated within 1 stop; but the other stops were below the "shadow" level, so in my version you could see the real distribution at a glance).

- In regular scenes, the median will probably stay close to the arithmetic mean, and be somewhere in the middle.

Qualities:
- Noisy blacks (hard to say "clipped" here, since it's just too much noise). Can be hidden by crushing blacks (curves).
- Noisy midtones. Can't be hidden easily, so these are very important to avoid IMO.
- Well exposed (as in "not noisy" and "not clipped")
- Properly exposed to the right (see the posts from audionut); one-stop resolution may not be good enough to show this, but half-stop is just perfect IMO.
- Small specular highlights clipped (a good threshold for them is 0.1% IMO; current boxes are displayed at 0.01%). Can be ignored most of the time, except for skintones.
- Clipped highlights.
- Optional: show what channels have clipped highlights (since with some subjects and good highlight recovery algorithms you can safely clip one of the channels, especially the green one).

Note: "noisy" is only well-defined if you look at SNR limits from ETTR (these indicate the noise threshold you are OK with).

swinxx

just for information:

when i use raw 1920x1288 the bars are white:


keep on doing great things. sw

1%

Here is the CMCM with lens not reporting FD.. FL is in its place... from 6D


Greg

Looks good ;)

500D (live view, screen layout 16:10) :

Marsu42

Quote from: g3gg0 on September 28, 2013, 10:20:00 PM
i will extend flexinfo to be usable for both photo and LV mode. additionally i will add dynamic content support. ;)

Does this mean we'll be able to reduce the two bars down to one?

The current layout looks excellent, no doubt about it, but duplicates a lot that I can already see on the top lcd or don't care about at all - but having a bar on top/bottom or two bars on bottom is bad for photo lv composition, while turning them off completely is no option either b/c I want a few items there.

stevefal

Here's a pass at a higher fidelity histobar per discussion with @a1ex:


Features:

- half-height "dark tail'
- midpoint indicator
- 1/2 stop resolution (11 stops shown)
- compressed quantitative "clip" indicators

This is more complicated to draw, but the benefit is dense information that still shows up within the color scheme. I have not formalized the math and I rely on a1ex et. al. to infer meaning and choose thresholds etc.

Unlike the previous histobar, the clip indicator are outside the DR, and are meant to grow as clipping pixel count increases. However they are compressed, in that they should grow at a decreasing rate in order to minimize width - probably logarithmic.

Note that the example may not be mathematically self-consistent. I'm mainly trying to establish a workable visual language.
Steve Falcon

RenatoPhoto

Quote from: stevefal on October 02, 2013, 06:17:38 PM
If we break this down precisely, I bet we can make something intuitive.
Maybe you can get some hints from ETTR module > Advance > Show metered areas
This will show where the shadows, mids, and highlights are located.
Now if you could take the pixels of this display and shrink it to a tiny image, sharpen it, brighten it,  you could use it as a quick display of the areas affected.  By changing the brightness of the pixels (of the three zones) you could represent the effects of different SNR combinations.
http://www.pululahuahostal.com  |  EF 300 f/4, EF 100-400 L, EF 180 L, EF-S 10-22, Samyang 14mm, Sigma 28mm EX DG, Sigma 8mm 1:3.5 EX DG, EF 50mm 1:1.8 II, EF 1.4X II, Kenko C-AF 2X

stevefal

If only dark-tail pixels are clipping, the clip indicator could be half-height as well, in order to help excuse sacrificing those first:


Then once those are gone, the clip indicator would go full-height to show you're clipping over the 5th percentile (or whatever).
Steve Falcon