I Built a Kilopixel Camera That Uses a Single Photoresistor for Portraits

I’m Niklas Roy, and I recently built a kilopixel camera called The Flying Pixel Portrait Camera. It’s a do-it-yourself project that uses a single photoresistor and a video projector in order to capture portraits.

The Flying Pixel Portrait Camera uses a video beamer, a single photoresistor, an Arduino and a PC for taking photos of people’s faces. The beamer ‘scans’ the image by projecting a small white square onto a person’s face inside an otherwise completely dark chamber.

While the projected square slowly moves over the entire face, the photoresistor captures the reflected luminosities. This generates a proportional analog electric signal which is digitized by an Arduino and transmitted to the PC. As the PC also controls the position of the projected square, it can now construct an image based on the different brightness values that it receives, one pixel at a time.

Here are photos taken with the ‘Flying Pixel Portrait Camera’:

The scanning speed for the pictures which are shown above was rather slow. The speed is limited by the framerate of the projector, as only one pixel can be projected and thus can be captured at a time. All the faces are scanned with 30 pixels / second and since each image is 50 * 50 pixels large, it took 83 seconds to take one photo.

The setup was built out of recycled cardboard boxes, which I found in the cellar of the art school.

Photo © HEAD – Raphaelle Mueller

Instead of projecting a white pixel, one can also project a red, a green and a blue pixel one after another. This way, it is possible to scan RGB color images. Of course, a color scan is three times slower than a monochromatic scan – and the resulting image is also a lot more noisy, as a colored pixel is less bright than a white pixel. In fact, the blue channel of the color images that I made is mainly noise and contains almost no usable signal, because the LDR is not very sensitive to blue light.

The image quality suffered a lot when I tried to take color photos with the same setup.

Technical Implementation

The diagram below shows the hardware setup of this installation. The program running on the computer is written in Processing and you can find it here. The Arduino is flashed with the Firmata firmware. This handy firmware gives direct access to the Arduino-pins via the Processing sketch. This way, the computer can read the analog Voltages from the photoresistor/voltage divider without writing an extra Arduino code.

Inspiration for the Project

I have to admit that I didn’t come up with this concept. Some clever minds had the idea for scanning images this way already roughly 100 years ago. The technique is called ‘flying-spot scanning’ and it was used in the early days of mechanical television. I just thought it would be interesting to recreate the setup with today’s technologies. Instead of illuminating faces with an arc light shining through a spinning Nipkow disk, I used a beamer. And instead of transmitting the images to a ‘televisor’ (this is how mechanical TV receivers were called back in the days), I recorded the results of the scans as still images on my computer.

A drawing from “Radio News”, April 1928, which I found on Wikipedia. On the top left you can see the image scanning with a spinning Nipkow disk, an arc light and photo cells.

Scanning images with an arc light, a motorized spinning disk with a few holes punched into it and a photocell is quite low-tech. However, nowadays it seems much simpler to quickly hook up a beamer to a computer and a photoresistor to an Arduino in order to achieve a similar result. Nevertheless, the results of early mechanical TV scanning were quite stunning and definitely outperformed my setup when it comes to speed: The mechanical image scanners of the 1920s were able to scan several images per second. They could actually transmit moving images – while my camera can only record still images of subjects which don’t move for 1½ minutes.


I made this experiment during a workshop that I gave at HEAD – the art and design school of Geneva as part of the Master of Arts in Media Design program. The theme of the workshop was “Advanced Selfie Machines” and you can find more results of this workshop here. Thanks to Alexia Mathieu and the whole team of HEAD for the nice time in Geneva and for inviting me to give this workshop! And thanks to Raphaelle Mueller for the additional photos!


About the author: Niklas Roy is an installation artist and educator based in Berlin. The opinions expressed in this article are solely those of the author. You can find more of Roy’s work on his website. This article was also published here.

Discussion