Dual ISO - massive dynamic range improvement (dual_iso.mo)

Started by a1ex, July 16, 2013, 06:33:50 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.




Ah, my apologies.  I'll slap myself, can you upload the original CR2.


I believe I may have already formatted my camera - I will check and see a bit later on.

Still had it; https://www.dropbox.com/s/kf0076boqzecpk5/_CPB0798.CR2?dl=0


Hi, i read dual-iso.doc, and found this passage:

QuoteUnfortunately, most other Canon cameras follow a different pattern for the CMOS #0 register,
without any obviously duplicate fields. As we know from Canon specs, most cameras have
a 4-channel sensor readout, except for 5D Mark III and 7D which have a 8-channel readout.

So this dual-iso trick, which originally worked only on 5dmk3 and 7d because of 8bit, is now working on all cameras, how you did achieve this?

p.s. in usual, not magic lantern, camera usage is there any advantage of 8bit readout?


Where did you get "8bit" from? That statement is talking about having 4 or 8 channels for readout. Which it turns out has nothing to do with how this works anyway (it was just suspected at the time this PDF was written).

Initially the 5D3 and 7D were the only ones with obviously duplicated register values in hex for CMOS ISO. For example:
0x00 => ISO 100
0x11 => ISO 200
0x22 => ISO 400
0x33 => ISO 800
0x44 => ISO 1600
and so forth.
We get dual ISO by setting those registers to something like this:
0x03 => ISO 100/800
0x14 => ISO 200/1600
0x42 => ISO 1600/400

The other cameras didn't have obviously duplicated values in hex like this, but if you look at them in binary, the patterns become apparent (the registers didn't repeat in groups of 4 bits, so it wasn't apparent from just looking at the values in hex, they might have instead repeated in groups of 3 or 5 or whatever, or there might have been extra bits as padding or other flags).

For example, here's what the 60D looks like:
0x00 => ISO 100
0x24 => ISO 200
0x48 => ISO 400
0x6c => ISO 800
0x90 => ISO 1600

I'll leave it as an exercise for you to figure out the repeating pattern (hint: write it out in binary).


Quote from: dmilligan on January 13, 2015, 02:02:23 PM
Initially the 5D3 and 7D were the only ones with obviously duplicated register values in hex for CMOS ISO. 
Was just looking at 7D exif, is this why it has listed-
AutoISO: 100
BaseISO: 1600

:edit: Erm nevermind, 600D has that too. What makes the 7d and 5m3 similar? Or is this a moot point? Just trying to understand code a little better.
7D. 600D. Rokinon 35 cine. Sigma 30 1.4
Audio and video recording/production, Random Photography
Want to help with the latest development but don't know how to compile?


@dmilligan: OK your hint was good!  :)

0x00 => 0000 0000 => 000  000  00 (ISO 100)
0x24 => 0010 0100 => 001  001  00 (ISO 200)
0x48 => 0100 1000 => 010  010  00 (ISO 400)
0x6c => 0110 1100 => 011  011  00 (ISO 800)
0x90 => 1001 0000 => 100  100  00 (ISO 1600)



I'm looking magic lantern with dual iso function for my 5D MarkII.But i can't find the link.
Anyone knows?

Walter Schulz


Have some dual ISO files with horizontal stripe artifacts as result of processing with cr2hdr-20bit on default settings. Enabling --no-stripe-fix option ... eliminates artifacts. Can't find info on --no-stripe-fix option - is it worth to enable it by default?
Here is original CR2 with this problem:


Very good catch.

If you don't have issues with this option enabled, just keep it on. It's supposed to fix exactly this type of artifacts, but this case is clearly a bug.


After inspecting a lot more images from that shot I find that this issue is bound to ISO and underexposure of image: higher ISO and darker image - stronger artifacts. Auto ISO mode was enabled - so I even not sure, what ISO saved in EXIF- upper or lower. I assume lower. On ISO up to 10000 it can be fixed via --no-stripe-fix. Higher than 10000 - stripes persist despite the option. But... hey, there is no or very little headroom to boost +3EV over ISO 10000. So, actually it's not a bug - probably, just sensor limits reached.


If you can select a few more samples with this issue, that would be helpful.


Gracias. Please keep them for a while, since I won't be able to download all of them right now.


Quote from: mothaibaphoto on February 07, 2015, 02:47:24 PM
Collection of most representative files to illustrate the stripes issue:

i think ur using some extreme value for recovery ISO in ur method

correct me if im wrong
ru setting ur base ISO as 10000 n recovery ISO at what value?
in ML at the moment (Jan 29 NBuild) recovery ISO is maximum upto 6400
so if u set ur base ISO higher than or equal to recovery ISO (6400 in ur case) i am sure u will get such bands. So make sure ur base ISO (which u select from camera menu) is not more than (or equal to) ur recovery ISO
ie 100-6400, 1600-6400, but never 6400-6400 or 10000-6400


QuoteI get the following exiftool error when using this build of cr2hdr:
Hexadecimal number > 0xffffffff non-portable at /usr/bin/lib/Image/ExifTool/Writer.pl line 2878.
Hexadecimal number > 0xffffffff non-portable at /usr/bin/lib/Image/ExifTool/Writer.pl line 2878.

They open fine in ACR/LR but have no preview, so if I use the --compress option, which enables the .dng to be displayed in preview, it comes out like this-
I fixed the exiftool error by placing cr2hdr into my usr/bin folder. Still getting the pink pictures in Preview when processing 7d pictures with --compress, but interestingly my 600D dual iso's have a normal preview.
7D. 600D. Rokinon 35 cine. Sigma 30 1.4
Audio and video recording/production, Random Photography
Want to help with the latest development but don't know how to compile?


Recovery ISO was +3EV, base iSO - auto. I know, how to avoid this issue, I just want to share some strange things i discovered.


@mothaibaphoto thanks for ur reply. Im still learning this dual iso thingy. Have u observed any drop in sharpness?


Drop in sharpness due to what?
Dual ISO vs ordinal image - no, I don't see any lost details or moire on properly exposed low - ISO images. When I shoot on low ISO with Dual - I get wider dynamic range at no expense virtually. When I shoot on high ISO with Dual - I get artifacts complementary to noise at some point.


@mothaibaphoto thanks for ur response. Usually people talk here in highly complex "Developers" language so i thank u for talking is a simple manner. As i said i just explored these added features of ML despite using it on my 60D for last 2 years for just intervalometer, but on 6D im trying to understand these new features. Thats why u will see me in almost every thread on this forum trying to understand basics. This crop mode silent pictures i have still not understood.


As extraordinary as it gets... has anyone experience more DR if you were to do it by the eye with reading the meters (via viewvinder shows 3 stops UE) -- basically a "manual ETTR" type of mode because often times whenever I have ETTR (any types) enabled, it doesn't come out consistently IMO.

Dual-ISO would change to whatever the camera thinks its better and half of the time it goes to (ISO800/ISO800 or whatever the same ISO it may be) even so with the Dual-ISO 'UNLINKED' within Dual-ISO menu. Not sure if it's because I'm inaccurately doing something?

It's literally like I prefer to drive a stick shift than automatic in vehicles.

Hopefully this is a Human Error on my part.

I can be reprehensible at times... ha!

If not, doing it manually can be fun!

I should also note that Non Dual-ISO shooting works well with ETTR, as usual.
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109


If you have Link to Dual ISO set to off, make sure you also turn dual ISO off.
If it is choosing ISO 800/800, you don't have enough light.  Either insufficient scene lighting, or shutter set incorrectly.
If you can expose more accurately then the ETTR module, you don't have it setup correctly. 

Since this is more ETTR, then dual ISO, please continue discussion in the thread I linked above.