Use FPGAs for stunning surveillance camera images is a cool article on image processing performed inside modern surveillance cameras. The “stunning images” are made possible by utilizing the latest in high definition high dynamic range CMOS image sensor technology. The “valuable information” is provided by adding intelligence in the camera that can look for the image and process it to show the interesting details well.
A typical image sensor can only reproduce about 72dB of dynamic range (around 12 bits). Today’s latest image sensors use adaptive non-linear exposure techniques that can exceed 115dB of dynamic range (19-20 bits).
Even if you increase the dynamic range of the camera, the the displayed output is going to be limited to only 8-10 bits of brightness (luminance) information per pixel. A dynamic range compression algorithm needs to be used to convert the high dynamic range to something that displays well on limited dynamic range display. The process is somewhat similar to processing used in High dynamic range imaging or digital image artist do to their photographs.
With more dynamic range in the image sensor and right processing, the details in the darkest of areas along with the brightest of areas can be reproduced without compromising either extreme. Your your eye based visual system is actually doing something very similar to this, but you’re not actually aware of it (in that way eye is covering up to 160dB of dynamic range).
Real time image dynamic range processing requires massive, flexible parallel processing in a small, power-efficient footprint. FPGAs are excellent devices to enable cameras with these new features. The FPGA is mentioned on the article very often because the guy who wrote the article seems to be FPGA guy (Marketing Manager of Altera, a company that makes FPGA ICs).
Image processing could be also done using ASICs or CPU. At the moment a lot of ASICs inside digital camera do similar or even more complicated computations, but they are not reconfigurable. Modern PC CPUs and GPUs are very powerful computing engines, so a lot of image processing can be done with them if you can wait for short time for the processing to happens. Amazing amount of image processing can also be done using a GPU in CUDA or OpenCL. GPUs are nowdays used to build supercomputers so lots of computing is available on that way as long as the device does not need to be very small and can consume lots of electrical power.