The IMX071 is a CMOS sensor from Nikon D7000 and D5100. Here’s a sensor characteristic test using data obtained by service mode hack.
This hack is done by Simeon on Nikon Hacker Group. By writing specific register value in USB PTP connection, the camera enters service mode where RAW sensor image can be obtained. The infamous Nikon median filter (star eater) during long exposure would also turn off. This mode is for hot/bad pixel remapping at Nikon Service Facility.
Once turned on, the sensor will be overscanned and output optical black and dummy pixels. Area definition is as follows:
Total Area: 0, 0 – 5054, 3357
Dummy: 0, 0 – 5039, 3357
Optical Black: 0, 36 – 4959, 3357
Light Sensitive Pixel: 4, 70 – 4955, 3357
The column 5040..5054 are the horizontal blanking region and it outputs a constant value. The dummy pixels don’t seem to have a photodiode, hence not dark current but only read noise is contained. However, dummy pixels should not be used for read noise estimation. The optical black pixels are actual pixels with light shielding, and they can be used for read noise and dark current estimation.
First, a pair of images is taken with same exposure setting against a flat lighting source. A LCD panel display with 4 layer of parchment paper is used as uniform light source. Then the RAW image is split into 4 separate CFA channel and a center 256 x 256 uniform region is cropped.
The average pixel value and standard deviation are recorded.
Then the second image is subtracted from the first one, taking away the variance caused by PhotoResponse Non-Uniformity (PRNU). The rest of the variance will be the double of summation from photon shot noise, dark current shot noise and read noise. Since the shutter speed is relative fast – 1/6s, thus we ignore the dark current.
The read noise can be calculated from the optical black region with the same subtraction. Then the variance of read noise is subtracted from the rest. The following table summarize the characteristic at ISO 100.
||STD DEV 2
A digital multiplication is applied to Red and Blue channel, thus the sensor full well is roughly 42ke- at ISO 100. Read noise is really low, 2~3e-. Note that “DEV 2” are the summation of 2 deviation resulting from image subtraction.
Later, the dark current is also estimated from optical black region, yielding 15 ADU in total or ~0.14eps (electron per pixel per second) at 21°C. When cooled to outside temperature at -1°C, dark current falls to roughly 0.007eps. The doubling temperature is less than 6.5°C.
The preliminary testing suggest the Exmor CMOS is much better than previous generation interline SuperHAD CCD. More accurate testing can be done with complete Photon Transfer Curve once the black level correction is hacked in the future.
Black Level Hack – Update: 6/9/2014
Now we have found the register controlling the black level and the patch is available for both D5100 and D7000. As expected, the register is part of the Expeed Image Processor, not on sensor. With more tweaking on the Expeed preprocessing switch, we discovered the optical black region is also filtered to get rid of hot pixel and pattern noise. Digital gain above ISO1000 and color channel scaling could also be turned off.
Much work has been done to understand the sensor SPI protocol as well. So far, a register controlling the average black level after digitalization is discovered. There’s another set of 4 registers controlling the analog gain for each color channel. The camera faithfully issues the same gain setting for each ISO no matter the exposure lenght, thus linearity should be ideal.
The following table illustrates the more accurate sensor characteristics under ISO100 and ISO320. Note that with the patch, sensor is using the default analog gain setting instead of calibrated ones. Thus ISO100 is more like ISO 80 compared to factory setting.
The sensor pretty much behaves “ISO-less” with identical read noise. A little elevated read noise at base ISO is likely due to quantilization error from ADC at such a low gain. PRNU may not be accurate enough since I did not use a diffuser. Flatness is achieved by manually picking a 512×512 section from image with the most uniformity.
To further characterize read noise at ISO320, I used an in-house tool to take 64 bias frames without shutter actuation, much like the in camera Long Exposure Noise Reduction (LENR). The images are then converted to TIFF and imported into R Studio for analysis. For one channel CCD, all pixel went through a single output amplifier, thus read noise is identical. However this is not true for CMOS where each pixel has its own amplifier, and each column has its own CDS and ADC circuit. To address this, I calculated the standard deviation for each pixel and plot the distribution. Ideally, each pixel will have a different gain in a best mathmatical model. But measuring it with the current setting is difficult. Under the assumption that gain is the same for each channel, we have this:
2.5x is the median value for the read noise distribution, meaning that half of the pixels have read noise less than 2.55e- RMS in that channel. Albeit a bit higher than scientific CMOS, which has median read noise of around 1e-, this is a lot better than CCDs.
When we save the read noise as a FITs image, more interesting results are revealed!
Notice that the pixels having high read out noise always occur in vertical pairs, why? Well I guess the answer is due to the vertical 2 pixels read out sharing structure. Namely, 2.5T pixel. It’s possible the elevated noise in the common floating diffusion or the transistors cause elevated read noise appear in both photodiode.
To measure the dark current, I first checked the linearity of the dark count with exposure time. A bracketing set of exposures was taken after 40 minutes of thermo stabilization. And the average count in optical black and white point in effective pixels is checked. The test was done before the hack was available, but from the subtracted black level the linearity is nicely followed.
Now the actual dark current can be computed. A series of 5 minutes exposures were taken continuously. And the dark count can be illustrated using the following diagram. The dark current gradually increase from 0.13eps to 0.34eps at the end. It never reaches equilibrium even after 100 minutes as the battery continues to heat up.
As dark current accumulates with increased temperature, the distribution shifts right and becomes even dispersed due to dark current shot noise and hot pixels.
For more sensor related information, view this post.