Open Source Camera For Computational Photography
David Orenstein writes "Stanford Computer Science researchers are developing Frankencamera, an open source, fully programmable and finely tunable camera that will allow computational photography researchers and enthusiasts to develop and test new ideas and applications — no longer limited by the features a camera manufacturer sees fit to supply. Disclosure: The submitter is a science writer for Stanford and wrote the linked article."
Please make a camera with:
1. A built in clock that actually keeps time.
2. Built in GPS.
3. Some sensible connectors to upload videos in real time using appropriate external devices, or,
4. Built in Wifi/3G.
5. And all the good camera stuff.
In one device. Oh, and if you can actually make a scanning range finder at a sensible price and embed that too, that'd be great.
How we know is more important than what we know.
http://sdk.nikonimaging.com/apply/
D5000, D3x, D90, D700, D40, D60, D3, D300, D200, D80
And NEF (RAW) files
i wish i could stop
The Canon lens-to-camera communication protocol has been reverse-engineered for a while. Manufacturers like Sigma and Tamron are making (very good) lenses compatible with Canon (and everyone else's) bodies.
The existence of prior art doesn't mean we shouldn't try and do it better. There's plenty of related work and similar projects.
We're aware of chdk (and have used it for a bunch of stuff), and it's close in some respects, but it's not the same thing. Chdk doesn't turn your camera into a fully functioning linux box, which is part of what we're trying to do, though this has also been done before sans viewfinder (www.elphel.com). You can plug random stuff in over USB, you can control the sensor with extremely low latency (by hacking the kernel if all else fails), you can ssh in, you could even run a web-server off your camera if you wanted to like the elphel cameras. Last week I plugged an SSD drive in over USB (alas no sata interface yet) to save off raw data faster. It's a fairly standard linux so it just worked.
You also have a lot more compute than you might get in something like chdk. You have access to a unified shader architecture GPU, a DSP, a CPU with an SSE-like vector coprocessor, and a fixed-function set of image processing tools (like histogram generation).
The other half of what we're trying to do is make a really good API for a programmable camera, including stuff for synchronization of multiple external devices (eg flashes), optimized image processing routines, frame-level control of the sensor at high frame rates, and camera user interface stuff, including physical widgets like buttons and dials (we use a phidgets board for this).
- Andrew (One of the grad students working on the frankencamera)
It's not a Nokia imaging chip, it's just the one that happens to be used in Nokia N95s. Aptina makes it and sells it to anyone who wants one. They do make you sign an NDA to get the full data sheet, but that's pretty much impossible to avoid.
As the poster above mentioned, Canon lenses have been thoroughly reverse-engineered.
The lenses would be fairly easy to swap out for a different optical system - we communicate with the lens controller over a simple serial link. The sensor is more involved - for one you'd need a linux kernel driver for your new sensor. Also, it's a pain to properly mount a sensor and get the all support circuitry working. None of it is secret or proprietary though, beyond the NDA you usually need to sign to get the register map for the sensor you want to use.
- Andrew (one of the grad students working on the project)
This kit is FREE open source for the Cannon Powershot, with many of the features mentioned in the article, including HDR. Download it onto a cf flash, and it replaces the Cannon OS. Many amazing images 1/50,000 milkdrop captures, night scenes etc can be found at http://chdk.wikia.com/wiki/CHDK
Computational photography is the accepted term for this subfield of computer graphics and computer vision: http://lmgtfy.com/?q=computational+photography
Secondly, we're not making an open source camera OS for existing hardware, we're making camera hardware that runs an existing open source OS - linux - with particular drivers and APIs to help you program the camera.
We're very well aware of CHDK and have used it for many projects. This is not like that (I have an earlier post that elaborates above).