Let me ask a stupid question. It might not be a well specified question, but since I'm a newbie in this field, I'd like to ask it.

The question is this. Why the pixel counts from CMOS image sensor is not linearly proportional to exposure time?

I took images under dim, uniform and stable illumination on object. My object was a clean white paper. In order to avoid making any shadow and non-uniformity on object. I removed everything near the paper and it looked really uniformly white paper. Now I captured lots of RGB565 format data with picamera (OV5647 sensor). Since I'm studying how CMOS image sensor works, I plotted the average sensor counts versus exposure time. The maximum exposure time for the picamera is 6s so I set the time from 0.01s to 6s. But the result was somewhat surprising. The average number that one pixel reads is not linearly proportional to exposure time, but was a log function. It increases rapidly between 0~3second, but then the slope comes down. at 6 second it's slope is so small that it's lower than 1/2. I confirmed that the counts are distributed uniformly and also the maximum value was less than 200. With the RGB565 format maximum brightness corresponds to 255. So there wasn't any saturated pixel among the 5 million pixels.

Could you please let me know how it occurred? I searched some papers describing non-linearity of photosensor. But non of them clearly stated something about this non-linearity between exposure time and sensor count(or electron or voltage)

I'm not dare asking full explanation. But it would be very helpful to me, if you let me know whether this non-linearity is an coincidence or if it means my sensor has been defected. And if it is genuine characteristic of image sensor. I would really appreciate to whom gave me some informations(article, webpage or just keyword) how I can learn the phenomena.

ps: I plotted it for various ISO, but for all ISO settings the sensor counts showed a graph of log function. Papers just mention that there would be some values higher or lower than the linear fit line. However my picamera showed just decreasing derivative. I mean, it goes up rapidly and then goes up slowly.

  • \$\begingroup\$ Hmmm interesting. \$\endgroup\$
    – Andy aka
    Jul 8, 2015 at 17:25
  • \$\begingroup\$ Could you possibly include a plot of your data? \$\endgroup\$ Jul 8, 2015 at 17:31
  • \$\begingroup\$ OV5647 has automatic exposure control, automatic white balance, and many other processing stages in the way before you get the pixels. Did you disable everything? \$\endgroup\$ Jul 8, 2015 at 17:35
  • \$\begingroup\$ this might help, it shows a somewhat realistic pixel circuit (page 10): repository.dl.itc.u-tokyo.ac.jp/dspace/bitstream/2261/50140/1/… \$\endgroup\$ Jul 8, 2015 at 17:46
  • 1
    \$\begingroup\$ To translate @VladimirCravero: see the picture on page 10 (document page 10, PDF page 18) for a confirmation that: yes the pixel voltage approaches an asymptote logarithmically and to see that this is because of the diode charging a gate capacitance over the exposure time until it reaches the "pixel value" limit. \$\endgroup\$
    – Asmyldof
    Jul 8, 2015 at 19:37

1 Answer 1


Are you sure that your data is supposed to be linear? Images delivered from a camera is NOT supposed to be linear ; rendered luminance is supposed to be a power law of color value, with an power of usually 1.9 to 2.3 that is called gamma. This is for various reasons owing to eye response not being linear at all, as well as older CRT technology. Typically, webcam images are encoded this way - and gamma value may often be adjusted. JPEG images from a DSLR are also encoded this way, but not RAW images.

I'm pretty sure that CCD sensors are usually linear (that's an important property used everywhere in research, in astronomy for example) ; I don't know exactly for CMOS but I suppose that's also the case.

  • \$\begingroup\$ CMOS sensors can actually also have a log-characteristic, see for example this device: link I have no idea if this is the case for the OV5647 but it might well be so. \$\endgroup\$
    – christoph
    Jul 10, 2015 at 7:52
  • \$\begingroup\$ The non linearity is observed in RAW image data and I think the rendering didn't affect to the RAW data. Then how could I explain this? \$\endgroup\$
    – SD11
    Jul 13, 2015 at 6:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.