CMOS/ADTG/Digic register investigation on ISO

Started by a1ex, January 10, 2014, 12:11:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

a1ex

You need the stub addresses for ADTG/CMOS functions for 1100D (in adtg_gui_init). If you trust my automatic tools, they should be:

    MakeName(0xFF2DBB28, "reg_Start_ADTG");
    MakeName(0xFF2DBD1C, "reg_Start_CMOS");

For the dropbox version (which requires some more RAM, but also catches more registers), you may also want the engio functions (from stubs).

gravitatemediagroup

don't anybody kill me but is the latest nightly build the 15bit build or is that still a work in progress? 

Audionut


a1ex

Added 50D graph, thanks to @ayshih for measurements. Looks kinda tricky, the only real improvement seems to be at ISO 100.



From 5D2, I've combined the DFE gain with the previous tweak (SaturateOffset) and squeezed a tiny bit more DR (0.31 vs 0.29). Graph updated.

ayshih

Here's the table of all the data I've collected for the 50D.  The highlights:

  • Most of the x160 ISOs are digital pulls from the next-higher ISO, so have the same dynamic range as that full ISO.
  • Normal ISOs greater than 1600 are analog pushes using only DFE gains, and there is no reduction in read noise as measured in electrons (the read noise in ADUs scales directly with ISO).  Thus, using ISOs greater than 1600 throws away highlights without any improvement in the shadows.
  • The two expanded ISOs are digital pushes that multiply the ISO 3200 data by 2 and 4.  The discreteness can be seen in the CR2 files.
Link to Google Docs
Canon EOS 50D | 17–40mm f/4L & 70–300mm f/4.5–5.6 DO IS | Lexar 1066x

budafilms

Great work!
Can we look two images taking with Canon Iso and ML Iso?


Marsu42

Is it possible to make the camera use the actual iso values of mini_iso like ISO 77, or is Canon hardwired to the usual 1/3 ev stops?

The reason for the request is that in plain Av/Tv (and probably P) mode, flash users cannot easily benefit from the dr gain as a permanent +ec also modifies the ettl exposure - you also have to juggle with the flash ec, it's the same as with dual_iso but in the other direction.

Edit: In case you non-flash shooters don't know, the ettl flash ec isn't linear, at least on 60d/6d the effect from 0->1/3 is much stronger than the change from 1/3->2/3->... so to gain a "neutral" fill flash you really want to use 0 flash ec.

a1ex

I can't imagine a clean solution, but I also don't understand why a +EC wouldn't do the trick.

Marsu42

Quote from: a1ex on January 26, 2014, 05:55:17 PM
I can't imagine a clean solution, but I also don't understand why a +EC wouldn't do the trick.

I suspect so as you don't do the flash thing. In Av/Tv with flash on, ec doesn't change the exposure but the *ratio* between flash and ambient illumination - the general exposure stays always "neutral" and the same as metered by the camera unless you change *both* camera and flash ec.

Catch as written above is that flash ec for some reason isn't (always) linear, +-1/3 often has a very large effect while further flash ec changes are more or less like you'd expect them to be. That's why changing flash and camera ec to 1/3 to compensate for the gained dynamic range isn't as easy as it sounds.

romainmenke

This is really amazing.
I work mostly on ads and editorial portraits. So I always use strobe light and I almost always end up setting up a strobe as a fill to take down the contrast a bit.
Really curious how these new iso's will compare to the fill light with the canon iso's

I know it isn't really the same, but instead of flattening my light and adding contrast in post I might be able to shoot more stuff the way I actually like it.
Reminds me of shooting on film. Slightly overexposing and under developing to get nice shadow detail.

I was also wondering about something.
The ISO 50 you can choose. Is it iso 100 on the sensor and then adjusted in the conversion to digital?
If so you probably also lose DR with ISO 50.

I didn't see any mention of it on the charts and they go down towards the higher ISO's put probably also lower towards lower Canon Iso's because the only good one is 100?

Curious because I often use 50 to get a wider aperture.
Thanks




a1ex


a1ex

Quote from: Marsu42 on January 26, 2014, 06:28:49 PM
I suspect so as you don't do the flash thing. In Av/Tv with flash on, ec doesn't change the exposure but the *ratio* between flash and ambient illumination - the general exposure stays always "neutral" and the same as metered by the camera unless you change *both* camera and flash ec.

Catch as written above is that flash ec for some reason isn't (always) linear, +-1/3 often has a very large effect while further flash ec changes are more or less like you'd expect them to be. That's why changing flash and camera ec to 1/3 to compensate for the gained dynamic range isn't as easy as it sounds.

I still don't get it, can you show this with some images? (include the raw files too)

dmilligan

Quote from: a1ex on January 25, 2014, 06:43:47 PM
    MakeName(0xFF2DBB28, "reg_Start_ADTG");
    MakeName(0xFF2DBD1C, "reg_Start_CMOS");
These appear to be correct.


ISO 100 200 400 800 1600 3200 6400
CMOS[0] 0x0 0x120 0x240 0x360 0x480 0x5a0 0x5a0

ADTG2[8882] 0x417 0x41c 0x421 0x430 0x427 0x428 0x850
ADTG2[8884] 0x424 0x428 0x426 0x437 0x429 0x42a 0x854
ADTG2[8886] 0x425 0x429 0x428 0x438 0x42b 0x42d 0x85a
ADTG2[8888] 0x419 0x41b 0x421 0x430 0x426 0x428 0x850

ADTG2[8839] 0x1 0x1 0x2 0x2 0x3 0x3 0x3

ADTG2[88bc] 0x0 0x0 0x0 0x0 0x0 0x0 0xff
ADTG2[88be] 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x708
ADTG2[88c0] 0x8 0x8 0x8 0x8 0x8 0x8 0x180
ADTG2[88eb] 0x850 0x850 0x850 0x850 0x850 0x850 0x900

Interestingly enough, ISO3200 appears to be analog on the 1100D. There are no intermediate ISOs. This was done at f/1.8, I'll compare that to a manual lens shortly...

edit: well thats dumb, the forum seems to be unaligning my columns, they're all lined up in preview mode

a1ex

Quote
There are no intermediate ISOs.
Not even from ML menu?

About the dump, you need to lookup 0x88820417 in the RAM dump (or just send it to me).

dmilligan

Yes ML can, I meant for Canon, I was just testing the actual Canon ISOs.

a1ex

On 550D they were simply hidden from menu.

For 1100D I'm very curious about DR measurements, mostly because of your astro pics. I guess you use the 1100D for a reason.

dmilligan

Quote from: a1ex on January 26, 2014, 10:14:03 PM
For 1100D I'm very curious about DR measurements, mostly because of your astro pics. I guess you use the 1100D for a reason.
Yeah, I'm working on that, I have to do it basically manually, 1100D doesn't have raw stuff working so raw_diag won't load.

It does have larger pixel pitch due to the smaller pixel count. That's also probably why ISO3200 is analog.

a1ex

Photo raw should have no trouble in running on 1100D (though somebody needs to find the hooks; most likely similar to 600D). LiveView is troublesome, I know, but it's not needed for these tests.

Audionut

Quote from: Audionut on January 24, 2014, 03:58:34 PM
B/W offset.  Gain, this one shifts the entire signal.  Tied to Saturate offset.

Saturate offset is black level control.  Does not effect white.  Tied to B/W offset.

Digital gain, B/W offset and Saturate offset seem to be digital level controls.  Probably only subject to quantisation errors.  They also clearly have defined points where they work well together (produce bell curve), and Digital Gain seems to only have 1 sweet spot (subject to contrast).

Saturate offset is not adjusting the black level per se, it's only adjusting the offset*.
B/W offset isn't any form of gain, it's digitally shifting the analog signal into the recorded bit depth.

When they produce a negative effect on histogram, simply they have not been optimised for the incoming analog signal, and the round off errors have become large.

Digital gain would seem to be the gain of the digital stage.  Judging by the effect on the histogram, this would appear to be gaining the digital signal.  ie:  1 in, 1.5 out.  Rather then using gain to boost the digital signal, it's preferable IMO to use B/W offset to map the bit depth of the recorded signal.

I can gain an extra hundredth or two of DR, by not adjusting the black level offset lower (as I was in my earlier tests), and leaving more room for ADTG gain reduction.  Such a shame that CMOS gain cannot be reduced further, Canon is probably (over)saturating that gain also.

Quote from: a1ex on January 10, 2014, 12:11:01 PM
Does this mean Canon did not fully optimize their sensor for low noise?


I'd say they simply left a safety margin in their code to make sure the ADC is always saturated (that is, to make sure white is always recorded as white).

*The offset is so far down into the noise floor that it does not effect black in the recorded image.  The offset can be adjusted higher then the default value, but there doesn't appear to be any gain to DR.

http://www.cool.id.au/astronomy/Neb_tut/Scientifically%20determining%20CCD%20Gain%20and%20Offset.pdf

a1ex

Quote from: Audionut on January 27, 2014, 04:43:47 AM
Such a shame that CMOS gain cannot be reduced further, Canon is probably (over)saturating that gain also.

Quote from: dmilligan on January 26, 2014, 10:05:21 PM


ADTG2[8839] 0x1 0x1 0x2 0x2 0x3 0x3 0x3

ADTG2[88bc] 0x0 0x0 0x0 0x0 0x0 0x0 0xff
ADTG2[88be] 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x708
ADTG2[88c0] 0x8 0x8 0x8 0x8 0x8 0x8 0x180
ADTG2[88eb] 0x850 0x850 0x850 0x850 0x850 0x850 0x900


I smell something here, though I can't tell yet exactly what. I did get an extremely low ISO (something like ISO 1) on 5D2, but very noisy.

Levas

Quote from: a1ex on January 27, 2014, 09:02:59 AM
I smell something here, though I can't tell yet exactly what. I did get an extremely low ISO (something like ISO 1) on 5D2, but very noisy.

Really low iso, like 1, how was the dynamic range, normal like 11 stops ?
This way there's less need for ND filters...

a1ex


Levas

Quote from: a1ex on January 27, 2014, 11:30:38 AM
More like 1-2 stops.

1 -2 stops  :'(  , can't see something useful for me in that, maybe for people creating modern art...

dmilligan

Based on my calculations for the 1100D at ISO100, -1 EV of the ADTG gains resulted in DR increase from 10.7 -> 10.9, std dev went from 8.1 to 4.4

I'll do more analysis after work...