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

Trying to combine the results from 5D3 and 6D (data from Audionut and Levas, no ISO tweaks applied).

Notice the 6D captures quite a bit more electrons than 5D3. You may say it's normal, because the 6D has lower resolution, so it captures more photons per pixel. However, the pixel count ratio is (5796*3870)/(5496*3670) = 1.1121, while the electron count ratio is about 1.1988. There are 0.11 EV not explained by the resolution difference. Let's find out what's going on.

Possible causes:
- systematic errors in my measurement method
- 6D uses lower ISOs than 5D3 (even if they both print the same value)
- 6D's sensor has a higher quantum efficiency
- a combination of the above

Theory:
- photon to electron ratio = quantum efficiency (assumming it's a sensor constant)
- equal ISOs = equal number of photons per area (light required to saturate the sensor)
- ISO doubles => half as many photons (or electrons) captured
- N pixels binned => number of photons (or electrons) per pixel increase N times

Assumming Canon full-stop ISOs in photo mode match the ones measured by some other method (let's say DxO), we can find a scaling factor for converting our electron counts into ISO, while matching the reference values in the least squares sense. I'll minimize the ISO difference, in EV, for ISO 100..6400:

function err = crit_electrons(ref_electrons, measured_electrons, reference_isos)
    isos_estimated  = 100 ./ (measured_electrons / ref_electrons);
    err = norm(log2(isos_estimated) - log2(reference_isos));
end

function ref_electrons = fit_electrons(measured_electrons, isos_dxo)
    ref_electrons = fminsearch(@(e) crit_electrons(e, measured_electrons, isos_dxo), 50000);
    ref_electrons = round(ref_electrons);
end


Assuming Canon's full-stop ISOs are correct, the scaling factors are:

isos                = [ 100   200    400    800    1600   3200   6400  ];
electrons_photo_5d3 = [ 67684 34146  16835  8735   4288   2197   1085  ];
electrons_photo_6d  = [ 79546 42220  20643  10482  5215   2568   1271  ];
ref_electrons_5d3   = fit_electrons(electrons_photo_5d3, isos);
ref_electrons_6d    = fit_electrons(electrons_photo_6d, isos);


=>

ref_electrons_5d3 =  68787
ref_electrons_6d =  82465
ref_electrons_6d / ref_electrons_5d3 =  1.1988


Now I'm going to assume Canon's full-stop ISOs are pretty much correct, but I'll keep the relative differences measured by DxO between the two cameras. That difference is...

octave:1> isos_dxo_5d3        = [ 80    160    323    641    1280   2518   5179  ];
octave:2> isos_dxo_6d         = [ 80    153    311    616    1210   2400   4991  ];
octave:3> isos_dxo_5d3 ./ isos_dxo_6d
ans =
   1.0000   1.0458   1.0386   1.0406   1.0579   1.0492   1.0377
octave:4> log2(mean(isos_dxo_5d3 ./ isos_dxo_6d))
ans =  0.054522


=> 6D ISOs are 0.055 EV lower than 5D3's.

Let's distribute the ISO difference equally between the two cameras, and redo the fit:

iso_difference      = log2(mean(isos_dxo_5d3 ./ isos_dxo_6d));
ref_electrons_5d3   = fit_electrons(electrons_photo_5d3, isos * 2.^(iso_difference/2));
ref_electrons_6d    = fit_electrons(electrons_photo_6d, isos * 2.^(-iso_difference/2));


=>

ref_electrons_5d3 =  70099
ref_electrons_6d =  80927
ref_electrons_6d / ref_electrons_5d3 =  1.1545


Getting closer. The ratio is still a bit higher than what I expect from the resolution difference, and since I don't have any other hypothesis to explain it, I'll say the 6D's quantum efficiency is a little higher:


qe_ratio = log2(ref_electrons_6d / ref_electrons_5d3 * (5496*3670) / (5796*3870))
0.053998


So, 6D's quantum efficiency seems to be 0.054 EV better than 5D3's, and its ISOs seem to be calibrated at 0.055 EV lower.

With these numbers, the ISOs estimated from electron counts become:

5D3:

isos_720    = [ 100   163    326    644   1266   2519   5211   10277 ]
isos_1080   = [ 82    160    316    622   1243   2429   5059   10049 ]
isos_crop   = [ 80    157    318    630   1241   2495   5094   9777  ]
isos_photo  = [ 104   205    416    803   1635   3191   6461         ]


And 6D:

isos_720    = [ 100   220     363   668   1297   2491   4981   10201 ]
isos_1080   = [ 89    170     320   619   1222   2406   4924   10082 ]
isos_crop   = [ 83    167     322   625   1244   2413   4866   9739  ]
isos_photo  = [ 102   192     392   772   1552   3151   6367   14555 ]


Graphs:



To compare the two graphs, I think it's better to normalize the results to some reference output size. I'll normalize movie 1080p results to 1920x1080 and photo mode results to 8 megapixels.



Normaling the 6D results from 1792x1008 to 1920x1080 gives the 5D3 0.1 EV advantage.

Normalizing to 8 megapixels gives the 5D3 a 0.075 EV advantage (compare with DxO results):

norm_5d3 = log2(sqrt((5796*3870))) - log2(sqrt(8e6))
norm_6d  = log2(sqrt(5496*3670)) - log2(sqrt(8e6))
norm_5d3 =  0.74370
norm_6d  =  0.66708
5D3 normalized DR:   11.6637   11.5737   11.4337   11.2037   10.7637   10.1437    9.2337
6D normalized DR:    12.1471   12.1571   11.9471   11.6671   11.2171   10.5371    9.7771    8.7071


Complete octave script: dr.m

Please double-check my math, as I might be a little beyond Ballmer peak :)

g3gg0

Quote from: a1ex on July 24, 2014, 11:08:18 PM
Possible causes:
- systematic errors in my measurement method
- 6D uses lower ISOs than 5D3 (even if they both print the same value)
- 6D's sensor has a higher quantum efficiency
- a combination of the above

add:
- 6D's CFA lets more light pass (e.g. wider spectrum for the sensel filters)
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

a1ex

I think we can include this one in the quantum efficiency.

Updated the graphs to include the shot noise limit (maximum dynamic range, if the read noise would be zero). At high ISO, you can see that, while in photo mode, the maximum improvement that can be obtained by reducing the read noise is around 1.2 stops for 6D and 1.6 stops for 5D3, in movie mode, with 3x3 pixel binning, the maximum theoretical improvement would be over 4 stops.

So... who said we are limited by shot noise at high ISOs? :P

dubzeebass

How far are we from implementation, even as a pre-alpha?

a1ex

I'll tell you after receiving the DR test results from at least 3 more cameras, and LV binning results from at least 2 cameras, one of them being 5D3.

None of the tests require you to compile anything; you only need to take some test pictures in controlled environments.

dubzeebass

I can help, have a 5Dmk3. What do I need to do?

Stedda

I can help for 5D III and have a High Resolution chart and color checkers if that helps. I'll pop them out today.

Are you looking for detail cause I can use a nice macro lens and get close or does it not matter?
5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

a1ex

Doesn't matter; as long as you get the resolution chart details above the Nyquist frequency, it's fine.

Stedda

Quote from: a1ex on July 25, 2014, 02:02:45 PM
...Nyquist frequency...

Even after looking it up I'm still lost, so yeah ummm... I'll take some pics/video. I'll assume for 720/1080 I should use Canon .mov or RAW?
5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

a1ex

Silent pictures, with "Silent zoom bracket" from raw_diag. That way, there will be no camera movement at all.

Stedda

5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

Stedda

5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

Levas

Quote from: a1ex on July 24, 2014, 11:08:18 PM

Possible causes:
- systematic errors in my measurement method
- 6D uses lower ISOs than 5D3 (even if they both print the same value)
- 6D's sensor has a higher quantum efficiency
- a combination of the above


Hi Alex,

Some of my data, shot on the 6d, is done with aperture f2.0
Later on I remembered reading somewhere on the forum here that canon automatic adds some gain by apertures below f2.8
Can this explain some of the differences measured between 6d and 5dIII

Levas

Also...

The 6d is known to have less banding noise then 5d3.
Is banding noise caused by "wiring" on the cmos ?
So does less banding noise mean, less "wiring" on the cmos chip, which results in more room to capture electrons...  ???

a1ex

I don't expect that gain to influence the results, unless it's clipping useful data (and that happens beyond f1.4 IIRC). And in that case, the reported DR would be a little lower.

If in doubt, you can double-check a few of the numbers.

I don't know the cause of the FPN, but I'm making progress in understanding how Canon corrects it.

Audionut

5D3:  Pixel pitch= 6.25 microns.
6D:    Pixel pitch= 6.58 microns.

Bigger pixels are like bigger buckets, take longer to fill, but hold more water.  Data from Rodger Clark.

I wasn't ware of resolution playing a role, per se.  Since resolution is a count of the number of pixels, not how much data each pixel captures.  What am I missing?

a1ex

Yes, but still, the 6D holds even more water than you would expect from different bucket sizes.

Audionut

Well if we assume that the reported pixel sizes are correct, and that Canon hasn't developed a way to squeeze photons, then it must be electrical efficiencies.
The only other possible causes I can think of. 

Shielding/copper efficiency: less electrons lost during transfer.
A/D improvements.  They both have the same 14bits of accuracy, but for all we know, Canon may be simply clipping some data in the 5D3.

Need to loan DxO' ISO rig. :D

Quote from: g3gg0 on July 24, 2014, 11:32:44 PM
add:
- 6D's CFA lets more light pass (e.g. wider spectrum for the sensel filters)

I'm not sure how this one can play a role, since this doesn't effect what happens after the photons are in the wells.

a1ex

In the wells you get electrons, not photons.

Audionut

Where do the photons become electrons?

I always thought the wells captured photons, like buckets capture water, and then in simple terms, those photons are counted and converted into electrons.

a1ex

Somewhere before the electronic amplifiers. These amplifiers gets saturated, from too many electrons.

(it might be different at the lowest ISO, not 100% sure, but at higher ISOs, the highlights are clipped in by the amplifiers)

There is a ratio between the number of captured photons, and the number of electrons that reach the amplifiers; that one is called quantum efficiency, is usually less than 1:1, and I don't have a way to measure it. My method only counts the number of captured electrons.

http://www.clarkvision.com/articles/digital.sensor.performance.summary/

Audionut

You can determine accurate exposure time with the FPS registers now?
So you need a way to accurately measure the photons emitted per time period for your light?

a1ex

In photo mode, I can determine the time when shutter is "open" electronically, which is usually longer than the actual exposure time (limited by mechanical shutter). So, I can determine the exposure time with better accuracy by recording the sound of the shutter :P

Measuring photons... is way beyond my knowledge.

Audionut

Counting photons may be something SpcCb can share advice on.

Levas

5d3 has a CMOS chip which is capable of vertical pixelbinning, so it doesn't need vertical lineskipping like the 6d does in video mode.
I assume, that vertical pixelbinning is only possible by more copper-wiring/infrastructure within/on the cmos chip, which results in a lower full well capacity  ???

Quote from: Audionut on July 28, 2014, 10:17:04 AM
I wasn't ware of resolution playing a role, per se.  Since resolution is a count of the number of pixels, not how much data each pixel captures.  What am I missing?

Bigger pixels on the same area (full-frame), means bigger wells, higher full well capacity.
I think it's the same like the 3x3 pixelbinning that the 5d3 does, full well capacity raises in videomode by a factor 9.
So if you had a 2 megapixel full-frame chip from this generation, you're full well capacity would be enormous, like 900000.