Pull to refresh

Do smartphone cameras need 12-bit ADCs, or my failed experiment

Level of difficulty Medium
Reading time 3 min
Views 509
Original author: gfx_pro

Among photographers, it is known that on "big" cameras the use of 14-bit readout compared to 12-bit can have a positive impact on shadow detail. How does this apply to small sensors in smartphone cameras?


Last time, we delved into the accurate measurement of a camera sensor's dynamic range. Today, I would like to present a similar experiment, but one that explores a different scenario - whether it is worth it to use a 12-bit ADC in a smartphone camera module.

The overwhelming majority of smartphones employ 10-bit ADCs (often within a 16-bit container). Exceptions include, for instance, all(?) new iPhones, HTC 10, and the OnePlus 9 Pro (although it uses a Quad Bayer sensor, achieving 12 bits in the 12MP mode by combining four 10-bit signals). The latter will be used for the experiment in this post.

Methodology and Results

Similar to the previous experiment, I will use a square patch of noise and capture series of frames at different ISO and shutter speed settings. To maintain the experiment's integrity, the 10-bit readout series will be captured separately, rather than derived from the 12-bit files. I will use the MotionCam app to switch between readout modes, where RAW10 represents the 10-bit mode, and RAW_SENSOR represents the 12-bit mode. For simplicity, we will rely on standard Signal-to-Noise Ratio (SNR) calculations instead of more complex measurements. Just like in FreeDCam, used in the previous experiment, MotionCam lacks very short shutter speed values, causing slight skew in the graphs. Nevertheless, there is sufficient data for noise level assessment. Measurement graphs start 4 stops below saturation since our primary focus is on shadow detail.

Now, here are the 10-bit results:

It appears to be a quite expected graph, and I can't discern any evident presence of noise reduction. I'm not sure what happened at ISO 100 in this measurement, but it's highly likely to be my mistake - upon reevaluation, everything was ok (here I'm attaching the graph from the first test due to its closer resemblance in lighting conditions and values to the 12-bit graph below).

And now, the most interesting part, the 12-bit results:

To my surprise, a fourfold increase in readout precision did not lead to an increase in SNR - one can pay attention to the lines at high ISO values, where in some cases, even a deterioration in SNR can be observed - pay attention, for instance, at the 4th stop at ISO 1600.

We can also attempt to use a 12-bit reference frame for the 10-bit series:

The situation has not changed much (though it's interesting to note that the ISO 100 line is now ok).


The results of the experiment turned out to be unexpected for me - initially, I wanted to show how the use of 12-bit ADCs would improve the signal in shadows, but, as we can see, this did not happen. That's why (and due to the disastrous ISO 100 graph 💀) I consider my experiment a failure.

Based on the obtained results, one could conclude that even smartphones with relatively large sensor sizes do not currently benefit from 12-bit ADCs because the noise level is simply too high. This can be confirmed by looking at measurements on Photons To Photos, where all tested smartphones fall short of 9 stops of dynamic range even with noise reduction. Therefore, the accuracy of a 10-bit ADC is sufficient. However, I would like to note that modern smartphones use computational photography methods, where multiple frames can be merged - in such cases, additional precision may not be superfluous, as the final dynamic range after merging can potentially exceed 10 stops. Moreover, the fact that the investigated sensor does not have native 12-bit readout might have influenced the result. I can only recommend smartphone manufacturers to conduct in-depth research for specific models and processing algorithms to determine whether enabling a 12-bit readout in the camera module is worth it or if paying extra for a module with such a characteristic is justified.

What are Your thoughts on the results? Is everything really as it is, or did I make a mistake somewhere? Please share Your opinions in the comments."

Rating 0
Comments 0
Comments Leave a comment