- From: Cullen Jennings (fluffy) <fluffy@cisco.com>
- Date: Thu, 3 Jan 2013 01:32:34 +0000
- To: "public-media-capture@w3.org" <public-media-capture@w3.org>
So lets start with a simple situation - lets say I controlled all the software in the browser, operating systems, device drivers, and firmware in the camera. The API sets the ISO at 400. What am I supposed to do? I have no clue and I have designed cameras. ISO in the context of digital sensors, is this weird measurement that has something to do with light sensitivity, something to do with noise, and a lot to do with "bigger" numbers for the the marketing department. So lets look at what is going on here and see what can be done. Ignore color, lets pretend it's an black and white sensor for now as the color does not change much to do with this. Fundamental some photons are hitting a sensor and getting converted to electrons which get accumulated in a "pixel". At some point in time the accumulated electrons get counted by seining them to an amplifier then feed them into an analog to digital converter. Thought the pixel will eventual often be an 8 bit value, the ADC is typically more than that - 14 bits is not uncommon on high end equipment. In CMOS the ADC is in the image sensor while in CCD it is not but that does not make much difference. The camera can control how long photons are accumulated before they are counted (shutter speed) and can then control the gain on the amplifier before the ADC. Once the ADC is complete, it can can scale the values in some digital way with a linear gain and offset as well as non linear gamma transformation. So lets say the API has set the aperture (which I view as a physical setting of the lens) and the shutter speed to some fixed value. The actual cameras are a bit more complicated than that - they may smooth and sharpen across pixels, compensate for known bad pixels, and provide correction factors for lens geometry and vignetting but none of that changes the problem we are talking about here of how to set the gain and gain offset. Clearly we need to a way to set the combined gain of the analog amplifier and the digital scaling of the values from the ADC to control the brightness of the pixel value. You could view ISO as one way to set that gain. But before leaping off that cliff lets take another view of ISO. ISO has to do with the sensitivity before we get an un acceptable amount of noise in the image. So lets look at things impacting the noise in the pixel measurement. First of all the photons are an discreet event and have a poison distribution which introduces a bunch of noise. Next the quantum efficiency of the sensor varies - and it changes with light wavelength which will change the characteristic of the noise. Next we have thermal noise. Then we have various forms of electronic noise. And finally the it gets digitized. Furthermore when we move to color sensors with a bayer pattern, there are twice as many green pixels as blue so the noise on green tends to be much less than noise on other channels. We could try and characterize the noise, what is acceptable, and come up with some way of setting the brightness such that the noise matched that sort ISO. This with be the "noise based" view of ISO. But wait, there is more. Some vendors used the "saturation based" view of ISO. To understand this go back to the idea that the sensor accumulate electrons. Their is a limit to how many each pixel can accumulate (the electron buckets get full) before they counted. This corresponds to the concept around ISO and when film saturates white. Some vendors that use this approach. Some of them use ISO = 15.4 f^2 / L t where f is aperture of lens, L is luminance of an 18% grey card in in cd/m^2, and t is length of exposure. You might ask where the 15.4 comes from and it includes a bunch of assumptions, approximations, and WAGs for various other factors that impact the ISO. So the more one tries to figure out what ISO means in a digital sensor the harder it is to figure out how we would consistently use this to set any sort of gain. I'll note that the ISO 12232:2006 specification defined a saturation based view of ISO, plus two different noise based views of ISO. Oh and a 4th thing called ISO speed latitude that is more useful than there the others. Note that these are more measurements about the sensor than a specific setting of the sensor. So what should we do. First of all lets separate two different things. Thing one is setting a parameter that controls how bright our images our. The other is a measurement to do with how well the camera performs in low light. I think the thing we need to worry about is thing one, setting up the camera. One possibility is just to define a gain setting with the possibility of reading min and max ranges for it. I think that could be clearly defined and avoid the confusion about what ISO means.
Received on Thursday, 3 January 2013 01:33:17 UTC