@a1ex
I've played around with your original cut and have arrived at this:
raw.hist.update() -- updates raw-data/statistics etc from current LV without taking an image. Statistics are also updated after every photo capture
raw.hist.median.ev / median.dn -- get overall brightness (in EV or DN) for all channels together
raw.hist.percentile(x).ev / .dn -- exposure level (EV or DN) for which x% of pixels are below and 100-x% are above. X range limited to z%
raw.hist.above{ev=-x} -- percentage of pixels above some threshold EV, eg -2EV
raw.hist.below{ev=-x} -- percentage of pixels below some threshold EV, eg -2EV
raw.hist.above{dn=x} -- same, but with threshold in DNs, eg 15000
raw.hist.below{dn=x}
raw.hist.black.median -- optical black analysis
raw.hist.red.median... -- per-channel analysis (red, green1, green2, green [average], blue)
raw.hist.max.median... -- median computed on max(r,g1,g2,b)
raw.hist.rect(left, top, width, height).median(...)-- similar to raw.spot, but operates over a wider area. Functionality could be combined with raw.spot
raw.spot.pos(x,y) -- position spotmeter in LV space
raw.spot.raw/RGB/Perc -- value of ML (raw) spotmeter
raw.spot.pos.x -- x position of ML spotmeter in LV units
raw.spot.pos.y -- y position of ML spotmeter in LV units
raw.spot.size{x, y} -- user defined spotmeter. Use case to make a spotmeter that is FL aware, eg always x-degrees. X and y limited in size maybe
raw.average(x,y,w,h) -- related to spotmeter idea
raw.white_level
raw.black_level
raw.preview() -- optional arguments: preview rectangle (what to draw) and maybe also where to draw it on the screen
Personally I can’t comment on the following
raw.noise_model.read_noise -- in DN
raw.noise_model.full_well -- in electrons
raw.noise_model.snr{dn=10000} -- SNR at some given DN (raw) value
raw.noise_model.snr{ev=-3} -- or at some given EV below clipping point
raw.noise_model.dynamic_range -- expected at current settings
raw.noise_model.iso(200).read_noise -- what to expect at some different settings
raw.noise_model.iso(200).full_well
raw.noise_model.vidmode("MV-1080").iso(200).full_well -- strings as returned by lv.vidmode
Obviously my 'interests' are very much a sub-set of a full feature set that could emerge or be stated by others, such as yourself.
The only real addition over your cut, is the ability to position a variable size spotmeter.
Hope this is of some value.