5DIII ML ADTG gain mod : difference in gain between column amplifier bank

Hello

I am using a Canon 5D mark III with magic lantern firmware and the iso_regs module. I have spent a long time experimenting with the inner workings of the ADTG and CMOS amplifiers, as well as the general amplification pipeline.
Those who are interested may read this thread as well as my own findings, which are on the last page.

Anyway, I’ve been using a specific register configuration (using iso_regs) for my everyday pictures, as it gives me an important increase in dynamic range over the default registers configuration.
It is important to understand that the amplification pipeline is made up of many different amplifiers, as show here. What I have done is decrease the gain of these amplifiers in order to reduce noise/increase dynamic range (basically, turn down noisy amps and turn up cleaner amps).
Another important thing to note is that the canon 5DIII uses 8 different amplifiers for column gain in the ADTG2/4[888x] stage, grouped in 2 banks of 4 amplifiers each.
Each of these individual amplifier has a different amplification curve. This specific behavior is accounted for by canon thanks to two reasons, the first is that their factory calibration slightly alter the per-amp gain registers in order to produce similar gain, the second is that the specific gain values are chosen in order to run the amps “hot” (meaning that they will always saturate the ADC before getting non-linear or clipping).

As the ADTG2/4[888x] amps are quite noisy compared to other amps earlier in the pipeline, it is desirable to lower their amplification, often below the white level (I tried to stay above 14000) in order to exploit the non linear portion of their amplification range and preserve as much dynamic range as possible.
However, this removes both of the safeguards meant to hide the amplification disparity between the amplifiers, creating visible artifacts, both in non and “clipped” highlight (which is important in the context of HL recovery using inpaint).


Linear before demosaicing


Neutral profile, -0.50 exp compensation

In most cases I have managed to avoid this issue by using HL inpaint opposed, with a sufficient gain threshold (1.15) to have a clipped white level. This prevent artifacts in the clipped highlights but not in the highlight.


Neutral profile, -0.50 exp compensation, HL Inpaint 1.15 gain threshold


Neutral profile, -0.50 exp compensation, HL Inpaint 1.15 gain threshold, -50 lightness

However, it does lose some DR due to the fact that the HL recovery gain threshold is set high enough so that all of the amplifiers clip, meaning that some highlight is lost on the amps that are “colder” (less gain) than what the gain threshold is set at.

Does anyone know of a way to correct the amplification behavior of each column (modulo 8) in order to eliminate those artifacts ?

(Further images, as I am a new user I cannot upload more than 4 images per post)

As an example, using another image with “clipped” highlights (number is the gain threshold):

You’d need to perform a very wide exposure bracket to calibrate the nonlinearity of each channel, and then program in a column corrector LUT for your editing software of choice that preprocesses the raw data immediately before demosaic.

I am not sure that RT support such kind of correction AFAIK, as LUT do not have the pixel position as input.

You would have to program new functionality.

1 Like