FlatCam - Who Needs A Lens?
Written by David Conrad   
Wednesday, 02 September 2015

Computational photography has more or less killed off the classic approach to photography. But a camera without a lens - surely some sort of joke?

Imaging system can work without a lens - think of a pin hole camera but for practical imaging you need a lens and this makes the camera bulkier than might be desirable. It is true that the move to digital cameras with their tiny sensors has reduced the distance that the lens needs to be from the sensor. You might well need a lens that sticks a few inches from a DLSR body but smartphone cameras get by with much smaller and flatter lens systems.

But what if you could do away with the lens altogether?

This is what FlatCam, a project at Rice and Carnegie Mellon, aims to achieve. The problem with a pinhole camera is that all of the light that forms the image has to pass through a single small hole with the result that it isn't very sensitive. A lens increases the light gathering power, but it is bulky and generally has to be mounted a good distance from the sensor. The solution is to effectively use a set of tiny holes positioned over different portions of the sensor. This increases the light gathering power but it doesn't naturally form an image. 


The way to make it work is to place a coded mask over the sensor. The input to each sensor element is then a known combination of light coming from different parts of the scene. As the mask is known, the outputs of the sensors can be unscrambled using linear algebra to produce an image. 

To quote from the paper:

Light from the scene gets diffracted by the mask features such that light from each scene location casts a unique mask shadow on the sensor, and this mapping can be represented using a linear operator. A computational algorithm then inverts this linear operator to recover the original light distribution of the scene from the sensor measurements.

The key problems are working out the best mask to use and working out how to place it as close as possible to the sensor array. Coded aperture approaches have been used in special situations where lenses aren't as effective, such as x-ray and gamma-ray imaging. This ability to work with a range of frequencies is also a characteristic of Flatcam and the team has used the same technique to build a visible light and an infrared camera. 

For the light camera the mask was placed on top of the protective glass plate making the spacing 0.5mm. This produces a camera element that isn't much thicker than the basic sensor. Although the sensor was 1086x1086 the mask was only printed to an accuracy that gives a 512x512 resolution. The IR camera was a little thicker at 5mm, again because of the protective casing. 




You can see that the system works within the resolution of the mask, but it still needs some work to replace, say, a phone camera. The researchers suggest that Flatcam could be used in clothes or more importantly wallpaper. 

Consider this spy scenario - you look around a room for hidden cameras but do you notice the colored spot on the wallpaper. It's not a lens. However now no lens doesn't mean no camera.  

There are some disadvantages for example a real time feed isn't possible because you have to do some processing of the data on the way. 




More Information

FlatCam: Thin, Bare-Sensor Cameras using Coded Aperture and Computation (pdf) M. Salman Asif, Ali Ayremlou, Aswin Sankaranarayanan, Ashok Veeraraghavan, Richard Baraniuk

Related Articles

Separating Reflection And Image 

Time-Lapse Videos From Internet Photos

Automatic High Dynamic Range (HDR) Photography

The Display That Does Away With Glasses

Plenoptic Sensors For Computational Photography


To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, FacebookGoogle+ or Linkedin,  or sign up for our weekly newsletter.



NumPy 2 Released

NumPy 2.0 has been released, the first major new version since 2006. NumPy is the fundamental mathematical library for Python, and this release adds new features and performance improvements, but also [ ... ]

.NET 9 Preview 6 Improves ARM64 Code Generation

.NET 9 Preview 6 is now available with a wide range of improvements to the runtime, SDK and ASP.NET Core.

More News


kotlin book



or email your comment to: comments@i-programmer.info



Last Updated ( Wednesday, 02 September 2015 )