Electronic image processing - the nuts and bolts
This is based on a forum post at cinematography.com where someone had asked just exactly how modern electronics achieve things like look-up tables. This sort of level of knowledge isn't really necessary, but there's never anything wrong with knowing your tools.Almost all modern digital imaging devices - whether that's a digital stills camera, a cinematography device, or something you take on holiday with you - have a lot of ability to process and alter the data received from their image sensors. Most such sensors don't create images that look good without manipulation, and some of these pictures require advanced mathematical analysis to be even vaguely viewable. To the user, this stuff is done in a sealed black-box unit that simply works when switched on, but I've been asked how exactly this sort of thing is created.
Well, image processing electronics looks, at the lowest level the designer deals with, like this:
U55: EN port map(A => mul_80_PROD_not_0, B=>n174, K=>n122);...but usually in a higher level language! Most frequently, it's developed on an FPGA, a field-programmable gate array, which is a semiconductor device (a microchip) consisting of many thousands of logic gates which can be programatically interconnected to create arbitrary logic devices (microchips that do specific things). It's possible to write entire CPUs on FPGAs (although it would generally be faster and more efficient to use a discrete CPU device in that instance). The programming languages used for this sort of work are VHDL and Verilog, and you usually write the code in some sort of development software on a PC then flash it onto the FPGA. FPGAs with enough gates and clocked fast enough to do realtime 3D colour transforms and other work on HD video are not particularly difficult to come by. Writing FPGA software is a wierd experience for someone used to general-purpose programming on PCs because you can write blocks of code which all get executed at once, from the same clock source, and then define the way they are interconnected. Various parts of the device can be in various clock domains. Many FPGAs have other hardware built into them, such as Xilinx's RocketIO series, which have fast serial transcivers which are capable of synthesising and decoding HD-SDI. Ordinarily, someone like Sony or JVC would develop their image processing devices on an FPGA, then send the formal description for it to a semiconductor foundry and have ASICs - application-specific integrated circuits - made. These aren't reprogrammable like an FPGA, but they're much cheaper to reproduce. However, the costs of doing this are such that an outfit like Red, who aren't expecting to ship as many cameras as say Canon, would probably just build all their cameras using FPGAs. There are downsides to doing this - it's generally possible to make things smaller and less power-hungry using ASICs, particularly floating-point mathematical operations such as those involved in the sort of image compression Red claim to be doing. It's also likely that there is some DSP hardware involved, very possibly something like Analog Devices' Blackfin, which could be loosely described as a programmable logic device with mathematical capabilities bent towards domain analysis and things like fourier transforms. Often, a DSP will be controlled by an FPGA. Prominent users of FPGAs include things like the Da Vinci colour corrector and many HD-SDI input cards.