A New Sampling Algorithm Could Eliminate Sensor Saturation (scitechdaily.com)
Baron_Yam shared an article from Science Daily:
Researchers from MIT and the Technical University of Munich have developed a new technique that could lead to cameras that can handle light of any intensity, and audio that doesn't skip or pop. Virtually any modern information-capture device -- such as a camera, audio recorder, or telephone -- has an analog-to-digital converter in it, a circuit that converts the fluctuating voltages of analog signals into strings of ones and zeroes. Almost all commercial analog-to-digital converters (ADCs), however, have voltage limits. If an incoming signal exceeds that limit, the ADC either cuts it off or flatlines at the maximum voltage. This phenomenon is familiar as the pops and skips of a "clipped" audio signal or as "saturation" in digital images -- when, for instance, a sky that looks blue to the naked eye shows up on-camera as a sheet of white.
Last week, at the International Conference on Sampling Theory and Applications, researchers from MIT and the Technical University of Munich presented a technique that they call unlimited sampling, which can accurately digitize signals whose voltage peaks are far beyond an ADC's voltage limit. The consequence could be cameras that capture all the gradations of color visible to the human eye, audio that doesn't skip, and medical and environmental sensors that can handle both long periods of low activity and the sudden signal spikes that are often the events of interest.
One of the paper's author's explains that "The idea is very simple. If you have a number that is too big to store in your computer memory, you can take the modulo of the number."
Last week, at the International Conference on Sampling Theory and Applications, researchers from MIT and the Technical University of Munich presented a technique that they call unlimited sampling, which can accurately digitize signals whose voltage peaks are far beyond an ADC's voltage limit. The consequence could be cameras that capture all the gradations of color visible to the human eye, audio that doesn't skip, and medical and environmental sensors that can handle both long periods of low activity and the sudden signal spikes that are often the events of interest.
One of the paper's author's explains that "The idea is very simple. If you have a number that is too big to store in your computer memory, you can take the modulo of the number."
pure analong systems have been doing this for decades, let's bring back the vacuum tube
When your ADC reaches saturation, you increment a counter, which drives a DAC, whose output you subtract from the analog input signal. But not quite: you actually want a logarithmic conversion of the input signal, so you use the DAC output to divide the input signal, and then subtract a constant from the result. It's very simple. There's only a little jitter at the transitions.
You mean, you take a value that is outside the range of the sensor and convert it into a lower value (normalization anyone?) that can be worked with!! My God man, it will be a revolution!!!!
This is what phase unwrapping algorithms do. THey have their own flaws too.
Some drink at the fountain of knowledge. Others just gargle.
1. Audio clipping is present in purely analog recording systems (an playback) so not an ADC problem.
2. The sensor, any sensor, has physical limits, that will cause saturation (i.e. clipping) regardless of the cleverness of the ADC downstream.
3. In most cases it is easier to devise an ADC with enough bits (i.e. precision and dyanmic range) large than the sensorr it is connected to
Summary: a solution in search of a problem.
On first glance this seems to be equivalent to Delta Encoding.
If your delta is guaranteed to be less than 2^X, you can encode data of any range using X+1 bits (one for the sign).
It's a different type of ADC, one that resets when it reaches saturation. So you can forget about using this 'new algorithm' in your existing equipment.
How is this supposed to work? An input past the range of any ADC I've ever dealt with will give a flat line at max or min There is nothing to work with, you cannot do anything to recover signal from a flat line.
Their paper seems to ignore that this technique isomorphic to the well known phase unwrapping problem. The hard part has always been implementing it at the pixel level. This requires extra transistors, calibrations (because every pixel needs to be the same) and perfect uniformity in manufacturing, as well as a new source of noise. Finally the mathematical problem produces nasty noise unless you can also implement hystersis at the point of the amplitude wrap. If you don't it's going to suck, and if you do then you have even more transistors to implement for each pixel since it's now having to be stateful (know it's earlier state to implement the hysteresis)
https://en.wikipedia.org/wiki/...
https://ccrma.stanford.edu/~jo...
https://www.dsprelated.com/fre...
Some drink at the fountain of knowledge. Others just gargle.
For the last couple of decades 24 bit A/D converters have been used to digitize the output of seismometers so we don't do this anymore. Previously 16 bits was pretty much all you could get so if the input signal got too high there would be circuitry to reduce the voltage into the A/D to keep it from saturating.
I built a sampler once that simply filled a big capacitor, used it to repeatedly fill and discharge a much smaller one while incrementing a counter each time until it can't. Rinse and repeat. The counts are then representative of the voltage. The only difference I see is that they measured the remainder when the big cap drops below the capacity of the small one. Right?
If so, you get an odd effect where sampling frequency is indirectly related to the amplitude of the sample.
Why not just drop the saturation point down to a single bit and count pulses?
For example, I wonder if you could design a video sensor where each pixel is a sensor that fills, fires a pulse, and resets ad infinitum with no shutter and you just record the location and point in time of every pulse. Ideal playback would involve firing a fixed voltage pulse to the desired address of a screen with the pulse density determining the eventual brightness of that location. Realistic playback on existing equipment would involve integrating the field to convert it to a frame by frame type of signal. Isn't this very similar to how our eyes work?
Surely this has been done? Is this at all new?
This is an interesting approach, and it would work pretty well for things like audio. It might help with the dynamic range of cameras when used at higher ISO settings, but it will not solve the problem by any means. The problem, though, is that in modern cameras, the sensor's pixels also have a maximum capacity, called the full well capacity. The sensor can't physically accumulate more of a charge than its full well capacity, and the DAC is designed so that its clipping point matches the full well capacity of the sensor at its base ISO. So you would still get clipping when the brightness exceeds what would otherwise by the sensor's clipping point at its base ISO, and if it is already at its base ISO, this wouldn't make any difference at all.
IMO, a better approach (which I proposed several years ago) is to sample the sensor and physically cancel out (subtract) the measured charge in the sensor itself, doing this multiple times per exposure to ensure that you don't hit the full well capacity. That approach also has the advantage of letting you do really cool time-based manipulation of the resulting photo. For example, you could do vector-based motion compensation of the individual subframes to dramatically reduce motion blur, compensate for some amount of camera shake, etc.
Even better, if you represent subsequent subframes relative to the previous subframe (e.g. -12 here, +2 there), you'll also usually get a high percentage of zeroes, which means you should be able to losslessly compress the additional subframes to be pretty small on average, potentially giving you the ability to adjust the image motion compensation after the fact to get an image in which motion is blurred more or less, according to taste.
In theory, you could even do bizarre, per-region motion compensation, such as making a baseball appear to be motionless while the bat is swinging at a high speed or vice versa. :-D But I digress.
Check out my sci-fi/humor trilogy at PatriotsBooks.
First, pre-scalers have been around forever. You just drop one sample, adjust scale and interpolate the missing sample. Easy and effective. And second, no, you _cannot_ take the modulo of an analog signal. All your analog parts still need to be able to cope with the full signal amplitude or _they_ will clip. And guess what? A pre-scaler is an analog part.
This is one more instance of no-understanding bad tech reporting, nothing else.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
The authors do not describe how to actually construct a circuit using this sampling technique. It would not be possible for DC coupled ADCs. I don't know how you would solve the problem of going beyond the power rails where transistors cease to operate normally
Good audio converters are 24 bit these days.
That means you can have 20bits worth of dynamic range (~120dB) with 4 bits worth of clipping headroom (24dB).
That will exceed whatever is plugged into the A/D.
High end cameras are using 14bit converters (uber high end has hit 16), so the problem is pretty much solved there too.
Why not take a cue from GPUs, and digitize things as a half-precision float instead? Then you can represent the entire 8-bit range perfectly while allowing for far brighter values as well.
I've skip read the Paper and /. comments, and this reads like mathematical wank by guys that have never touched an oscilloscope.
First, they are waving their hands in the are about a magic 'resetting ADC'... seriously...
Do they even know what reset means? It has to be performed at the hardware level, It has to performed with DC offsetting (from a D/A converter), it has to be performed to 1 least significant bit of accuracy, and the input signal has to be rate limited. No way this will happen for any practical systems without adding artefacts when the offsetting circuitry tries to slew the input within one sample period.
The only real world way I can think of, that still retains DC accuracy, is servoing the input.
This is where a 'counteracting' force is used to subtract from the input... but servoing has hairs all over it, as it has to be super accurate in terms of amplitude and frequency response.
They should have talked to an electrical engineer before spouting off this rubbish.
46137
Everying old become new again when rediscovered. Here's an old patent from a former co-worker on an ADC that performs this analog adjustment bit-by-bit to create a flash ADC. https://www.google.us/patents/... The precision of such ADC's depend upon having deadly accurate 2^N analog values. If you can create a deadly accurate 2x amplification, you can cascade an series of identical stages to build an ADC.
pure analong systems have been doing this for decades
The article is about an algorithm for analogue to digital converters. So what you are claiming is that you had pure analogue, analogue to digital converters? Replacing silicon transistors with valves does not change the fact that the circuit is still digital. Valve computers were still digital computers, they just used a different switching technology.
How logarithmic ADC? MIT scared of a little math?
Oh, it just got bright...why is my screen black?
With a tube iPhine XLR sockets is probably better
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
The idea of folding ADC's is to reduce the complexity of an ADC. The result however is potential data loss, and this article proves what conditions are necessary to recreate the original waveform from the samples. (See this for example for an explanation of ADC complexity and ways to simplify it.)
Solder together a lexicon super prime time or stfu!
Truth is you fucks don't understand it, you can't wire the shit to DRAM if your turds were pooping out the jean pockets. Rat wire something you fucking pussies. Where's your tech data book library, why not flip through the pages of your ANALOG DEVICES tech data books. You dummies have pulse width modulaters stuck in the nostrils, they suck, they sound like a CB radio tweety bird with a SPRING!!!
Sorry Children , Android and fucking $100 SDR kits ain't electronics. Do somethin real, do something IMPRESSIVE.
"The idea is very simple. If you have a number that is too big to store in your computer memory, you can take the modulo of the number."
So if there is no available memory to describe the entire information space, just throw away 99.99999% of the data
Great idea!
Sounds a bit like the stick of Jan Sloot: http://www.spronck.net/sloot.h...
All circuits are analog. Period. That's the physics of it.
If you are going to get that pedantic then no you are wrong in two ways. First go look up quantum mechanics and then know that this governs how semi-conductors work. These devices transition between two, binary states in a non-analogue way smeared out a little by thermal effects. However, the end result of this is that they allow a certain amount of charge to pass which is either above some threshold or not and so we treat it as a one or zero.
Hence the circuit is digital because we define our own, artificial thresholds to quantize how we treat the result. This is what makes it digital. If you also happen to be using semiconductors then it is also quantized at a more fundamental level by the physics in the semiconductor...and these quantum effects get increasingly important as we shrink the size of circuits.
Oh you mean they turned the dial to 11 ?
Hi, wont usage of floating point ADCs give much higher dynamic range and sort of alleviate the problem?
There are several problems. A counter is required for each pixel, and each counter will be incremented anywhere from hundreds to tens of thousands of times per exposure. That's a lot of activity on the sensor chip, which means heat and noise. For a 4000x3000 image sensor, there'd be 12 million wires running from pixels to counters. That's a chip construction problem, serious enough that it might make such a chip impossible. Conventional image sensors use analog shifting or multiplexing, resulting in wire counts in the thousands, not millions. (By wires I mean the aluminum traces on the chip.)
There are ways around the wiring problem. One is to build each counter right next to its pixel, but this means valuable image sensing area is instead used by counter logic. Another is to have a chip with multiple active layers, pixel sensors on the surface and digital logic below. I'm not familiar with whether this is currently practical IC technology, but the complexity suggests high cost. Also, at about 200 transistors per counter, this would be a 2.4 billion transistor IC, comparable to many current production CPUs. Not cheap.
Maybe for a smaller video sensor it would be feasible, perhaps at 640x480 the complexity isn't excessive. But we already have 1024x768 shutterless desk cams for under $20, so it looks like there's nothing to be gained for the consumer market. Perhaps your suggestion would make possible a higher video sample rate or more bits of precision per pixel, but that's beyond my current ability to estimate.
Contribute to civilization: ari.aynrand.org/donate
I was thinking a lot more out of the box. Basically, throw away the idea of frames at the chip level. Also, throw away the idea of knowing the intensity of light at a point. The intensity is represented by the number of times the pixel cycles in a given time. And set the threshold for firing as low as you can (it will be limited in how low it can be set by the speed of whatever output scheme is chosen).
For example, in vision applications, an approach that might work is to feed each pixel into an input of a multilayer neural net right above it.
Or, for a more traditional recording system, perhaps every pixel that fires would cause a row and column type coordinate to be transmitted through a high-speed serial stream, combine that with a highly accurate time when it comes out and you would have all of the information necessary for playback.
We know such a system can work because this is basically the way the rod and cone sensors in our retinas work.
I suspect such a system could be highly energy efficient. With work, you might even get it to be powered by the light itself. Each pixel would fire when it built enough charge to actually perform the necessary work to get through some of the post processing.